<?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>137587</bug_id>
          
          <creation_ts>2014-10-09 17:53:56 -0700</creation_ts>
          <short_desc>Use is&lt;&gt;() / downcast&lt;&gt;() for RenderBoxModelObject</short_desc>
          <delta_ts>2014-10-10 08:49:39 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>137424</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>apinheiro</cc>
    
    <cc>benjamin</cc>
    
    <cc>cfleizach</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dbarton</cc>
    
    <cc>dino</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>dstockwell</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>fred.wang</cc>
    
    <cc>glenn</cc>
    
    <cc>jamesr</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kling</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>luiz</cc>
    
    <cc>mario</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>mrobinson</cc>
    
    <cc>rniwa</cc>
    
    <cc>samuel_white</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>WebkitBugTracker</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1040770</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-09 17:53:56 -0700</bug_when>
    <thetext>Use is&lt;&gt;() / downcast&lt;&gt;() for RenderBoxModelObject</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040785</commentid>
    <comment_count>1</comment_count>
      <attachid>239590</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-09 19:10:08 -0700</bug_when>
    <thetext>Created attachment 239590
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040802</commentid>
    <comment_count>2</comment_count>
      <attachid>239596</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-09 20:46:25 -0700</bug_when>
    <thetext>Created attachment 239596
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040825</commentid>
    <comment_count>3</comment_count>
      <attachid>239596</attachid>
    <who name="Mihnea Ovidenie">mihnea</who>
    <bug_when>2014-10-09 23:48:59 -0700</bug_when>
    <thetext>Comment on attachment 239596
Patch

r-me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040916</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-10 08:13:41 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 239596 [details])
&gt; r-me

Thanks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040921</commentid>
    <comment_count>5</comment_count>
      <attachid>239596</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-10 08:49:31 -0700</bug_when>
    <thetext>Comment on attachment 239596
Patch

Clearing flags on attachment: 239596

Committed r174587: &lt;http://trac.webkit.org/changeset/174587&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040922</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-10 08:49:39 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239590</attachid>
            <date>2014-10-09 19:10:08 -0700</date>
            <delta_ts>2014-10-09 20:46:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137587-20141009191011.patch</filename>
            <type>text/plain</type>
            <size>58101</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0NTUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDE4NTE0YjNkMmZlMzRj
NmIwZTMzZjc5MTgxMWQ0OTRkNjkwZDA3OS4uOWE4OTA4NWRjNzMyYmFlZmNlZjJhZTM0ZmVjYWNj
ZmQ0MjhmYzJlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkzIEBACisyMDE0LTEwLTA5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIGlzPD4oKSAvIGRvd25j
YXN0PD4oKSBmb3IgUmVuZGVyQm94TW9kZWxPYmplY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzU4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBpczw+KCkgLyBkb3duY2FzdDw+KCkgZm9yIFJl
bmRlckJveE1vZGVsT2JqZWN0IGFuZCBjbGVhbiB1cCB0aGUKKyAgICAgICAgc3Vycm91bmRpbmcg
Y29kZS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpjcmVhdGVGcm9tUmVuZGVyZXIpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0OjpyZW5kZXJCb3hNb2RlbE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjppc0lu
bGluZVdpdGhDb250aW51YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Zmlyc3RDaGlsZENvbnNp
ZGVyaW5nQ29udGludWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Omxhc3RDaGlsZEhhc0NvbnRp
bnVhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpu
ZXh0U2libGluZyk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
Ojp3aWRnZXQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6
cmVuZGVyT2JqZWN0SXNPYnNlcnZhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6Om9ic2VydmFibGVPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6bXNh
YVJvbGVGb3JSZW5kZXJlcik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0Lmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFi
bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjppc0RhdGFUYWJs
ZSk6CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cmVu
ZGVyQm94KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnJlbmRlckJveE1vZGVsT2JqZWN0KToK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpidWlsZE9iamVjdEZvckVsZW1lbnRJbmZvKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmll
dy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnNjcm9sbENvbnRlbnRzRmFzdFBh
dGgpOgorICAgICAgICAqIHBhZ2UvUHJpbnRDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmVuY2xvc2luZ0JveE1vZGVsT2JqZWN0KToKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9Bbmlt
YXRpb25CYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvbkJhc2U6OmZyZWV6ZUF0
VGltZSk6CisgICAgICAgICogcGFnZS9hbmltYXRpb24vSW1wbGljaXRBbmltYXRpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW1wbGljaXRBbmltYXRpb246OnN0YXJ0QW5pbWF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkltcGxpY2l0QW5pbWF0aW9uOjpwYXVzZUFuaW1hdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpJbXBsaWNpdEFuaW1hdGlvbjo6ZW5kQW5pbWF0aW9uKToKKyAgICAgICAg
KiBwYWdlL2FuaW1hdGlvbi9LZXlmcmFtZUFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpLZXlmcmFtZUFuaW1hdGlvbjo6c3RhcnRBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
S2V5ZnJhbWVBbmltYXRpb246OnBhdXNlQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Oktl
eWZyYW1lQW5pbWF0aW9uOjplbmRBbmltYXRpb24pOgorICAgICAgICAqIHBhZ2UvaW9zL0ZyYW1l
SU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6Om92ZXJmbG93U2Nyb2xsUG9zaXRpb25D
aGFuZ2VkRm9yTm9kZSk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRp
bmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6Omhhc1Zp
c2libGVTbG93UmVwYWludFZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvSW5saW5lQm94Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVCb3g6OmJveE1v
ZGVsT2JqZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lRWxlbWVudEJveC5oOgorICAg
ICAgICAoV2ViQ29yZTo6SW5saW5lRWxlbWVudEJveDo6cmVuZGVyZXIpOgorICAgICAgICAqIHJl
bmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dC
b3g6OnBsYWNlQm94ZXNJbkJsb2NrRGlyZWN0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvSW5s
aW5lRmxvd0JveC5oOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxvd0JveDo6cmVuZGVyZXIp
OgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklubGluZVRleHRCb3g6OmJhc2VsaW5lUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
SW5saW5lVGV4dEJveDo6bGluZUhlaWdodCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJs
b2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjphZGRDaGlsZFRvQ29udGlu
dWF0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZVJlcGxhY2VkTG9naWNhbFdpZHRoVXNpbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpjb21wdXRlUmVwbGFjZWRMb2dpY2FsSGVpZ2h0VXNp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2lj
YWxXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVk
TG9naWNhbEhlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVQb3Np
dGlvbmVkTG9naWNhbFdpZHRoUmVwbGFjZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94
Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxIZWlnaHRSZXBsYWNlZCk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckZsb3dUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxvd1RocmVhZDo6YWRq
dXN0ZWRQb3NpdGlvblJlbGF0aXZlVG9PZmZzZXRQYXJlbnQpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJJbmxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjpzcGxp
dElubGluZXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjphZGRDaGlsZFRvQ29u
dGludWF0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnVwZGF0ZUxheWVyUG9zaXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNhbGN1bGF0ZUNsaXBSZWN0cyk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllckJhY2tpbmc6OmFkanVzdEFuY2VzdG9yQ29tcG9zaXRpbmdCb3VuZHNGb3JGbG93VGhyZWFk
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21wb3NpdGluZ0Zv
ckluZGlyZWN0UmVhc29uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRv
cjo6Y29tcHV0ZVN0aWNreVZpZXdwb3J0Q29uc3RyYWludHMpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpkZXN0
cm95KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6b2Zmc2V0UGFyZW50KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MU2NyaXB0czo6YmFzZSk6CisKIDIwMTQtMTAtMDkgIERl
YW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgogCiAgICAgICAgIENvbXB1dGVkIHN0eWxlIGZv
ciBjbGlwIGlzIHdyb25nIHdpdGggcmVzcGVjdCB0byBhdXRvCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXgg
ODdlOWY2ZWEzNDE2Zjc1ZWU3NTgzMzQ5YmI2MTExZWM5NGRlYmVmNi4uMWE4NDkyZmE1YTBkNmRk
NTk4ZDZiYzdlNjQ3NmI0YzczMDU2NDIwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4
IEBACisyMDE0LTEwLTA5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAg
ICAgVXNlIGlzPD4oKSAvIGRvd25jYXN0PD4oKSBmb3IgUmVuZGVyQm94TW9kZWxPYmplY3QKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzU4NworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBpczw+KCkg
LyBkb3duY2FzdDw+KCkgZm9yIFJlbmRlckJveE1vZGVsT2JqZWN0IGFuZCBjbGVhbiB1cCB0aGUK
KyAgICAgICAgc3Vycm91bmRpbmcgY29kZS4KKworICAgICAgICAqIFBsdWdpbnMvV2ViQmFzZU5l
dHNjYXBlUGx1Z2luVmlldy5tbToKKyAgICAgICAgKC1bV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmll
dyBpbnZhbGlkYXRlUGx1Z2luQ29udGVudFJlY3Q6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJS
ZW5kZXJMYXllci5tbToKKyAgICAgICAgKC1bV2ViUmVuZGVyTGF5ZXIgaW5pdFdpdGhXZWJGcmFt
ZTpdKToKKwogMjAxNC0xMC0wOSAgRGVhbiBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+CiAKICAg
ICAgICAgUmVtb3ZlIEVOQUJMRV9DU1MzX0NPTkRJVElPTkFMX1JVTEVTCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXgg
YjQxYzBhNDZmZGZiNjdhNWVlZDViYTczMTU2OGRjNmM4ZDhmYWY3Ni4uN2Q0ZmY4MDNjMTZiZDM3
NDYyMzRkOTNlOGM4ZGRiNmZjYmZiN2YxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisy
MDE0LTEwLTA5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNl
IGlzPD4oKSAvIGRvd25jYXN0PD4oKSBmb3IgUmVuZGVyQm94TW9kZWxPYmplY3QKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzU4NworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBpczw+KCkgLyBkb3du
Y2FzdDw+KCkgZm9yIFJlbmRlckJveE1vZGVsT2JqZWN0IGFuZCBjbGVhbiB1cCB0aGUKKyAgICAg
ICAgc3Vycm91bmRpbmcgY29kZS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6cmVuZGVyZXIpOgorICAg
ICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjppbnZhbGlkYXRlUmVjdCk6CisKIDIwMTQtMTAtMDkg
IERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBFTkFCTEVf
Q1NTM19DT05ESVRJT05BTF9SVUxFUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QVhPYmplY3RDYWNoZS5jcHAKaW5kZXggOWYwNDg0M2RhNTM4MTdlMjBkM2Q4NTNlMzA3YzVlY2M1
OWUwNzUzNi4uMTYzMTJiMDM5OTlkZThhMzQxYmJiZjUwNWVjNjU1YWM0ODJlNzQyMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCkBAIC03Myw2
ICs3Myw3IEBACiAjaW5jbHVkZSAiUmVuZGVyTWVudUxpc3QuaCIKICNpbmNsdWRlICJSZW5kZXJN
ZXRlci5oIgogI2luY2x1ZGUgIlJlbmRlclByb2dyZXNzLmgiCisjaW5jbHVkZSAiUmVuZGVyU1ZH
Um9vdC5oIgogI2luY2x1ZGUgIlJlbmRlclNsaWRlci5oIgogI2luY2x1ZGUgIlJlbmRlclRhYmxl
LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGFibGVDZWxsLmgiCkBAIC0yOTAsNDAgKzI5MSw0MCBAQCBz
dGF0aWMgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiBjcmVhdGVGcm9tUmVuZGVyZXIo
UmVuZGVyT2JqZWN0KiByZW5kZXJlcgogICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU1lZGlh
Q29udHJvbDo6Y3JlYXRlKHJlbmRlcmVyKTsKICNlbmRpZgogCi0gICAgaWYgKHJlbmRlcmVyLT5p
c1NWR1Jvb3QoKSkKKyAgICBpZiAoaXM8UmVuZGVyU1ZHUm9vdD4oKnJlbmRlcmVyKSkKICAgICAg
ICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlTVkdSb290OjpjcmVhdGUocmVuZGVyZXIpOwogICAgIAog
ICAgIC8vIFNlYXJjaCBmaWVsZCBidXR0b25zCiAgICAgaWYgKGlzPEVsZW1lbnQ+KG5vZGUpICYm
IGRvd25jYXN0PEVsZW1lbnQ+KCpub2RlKS5pc1NlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uRWxlbWVu
dCgpKQogICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9u
OjpjcmVhdGUocmVuZGVyZXIpOwogICAgIAotICAgIGlmIChyZW5kZXJlci0+aXNCb3hNb2RlbE9i
amVjdCgpKSB7Ci0gICAgICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiBjc3NCb3ggPSB0b1JlbmRl
ckJveE1vZGVsT2JqZWN0KHJlbmRlcmVyKTsKLSAgICAgICAgaWYgKGNzc0JveC0+aXNMaXN0Qm94
KCkpCi0gICAgICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eUxpc3RCb3g6OmNyZWF0ZSh0b1Jl
bmRlckxpc3RCb3goY3NzQm94KSk7Ci0gICAgICAgIGlmIChjc3NCb3gtPmlzTWVudUxpc3QoKSkK
LSAgICAgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5TWVudUxpc3Q6OmNyZWF0ZSh0b1JlbmRl
ck1lbnVMaXN0KGNzc0JveCkpOworICAgIGlmIChpczxSZW5kZXJCb3hNb2RlbE9iamVjdD4oKnJl
bmRlcmVyKSkgeworICAgICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCYgY3NzQm94ID0gZG93bmNh
c3Q8UmVuZGVyQm94TW9kZWxPYmplY3Q+KCpyZW5kZXJlcik7CisgICAgICAgIGlmIChpczxSZW5k
ZXJMaXN0Qm94Pihjc3NCb3gpKQorICAgICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlMaXN0
Qm94OjpjcmVhdGUoJmRvd25jYXN0PFJlbmRlckxpc3RCb3g+KGNzc0JveCkpOworICAgICAgICBp
ZiAoaXM8UmVuZGVyTWVudUxpc3Q+KGNzc0JveCkpCisgICAgICAgICAgICByZXR1cm4gQWNjZXNz
aWJpbGl0eU1lbnVMaXN0OjpjcmVhdGUoJmRvd25jYXN0PFJlbmRlck1lbnVMaXN0Pihjc3NCb3gp
KTsKIAogICAgICAgICAvLyBzdGFuZGFyZCB0YWJsZXMKLSAgICAgICAgaWYgKGNzc0JveC0+aXNU
YWJsZSgpKQotICAgICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUYWJsZTo6Y3JlYXRlKHRv
UmVuZGVyVGFibGUoY3NzQm94KSk7Ci0gICAgICAgIGlmIChjc3NCb3gtPmlzVGFibGVSb3coKSkK
LSAgICAgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGFibGVSb3c6OmNyZWF0ZSh0b1JlbmRl
clRhYmxlUm93KGNzc0JveCkpOwotICAgICAgICBpZiAoY3NzQm94LT5pc1RhYmxlQ2VsbCgpKQot
ICAgICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OmNyZWF0ZSh0b1JlbmRl
clRhYmxlQ2VsbChjc3NCb3gpKTsKKyAgICAgICAgaWYgKGlzPFJlbmRlclRhYmxlPihjc3NCb3gp
KQorICAgICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUYWJsZTo6Y3JlYXRlKCZkb3duY2Fz
dDxSZW5kZXJUYWJsZT4oY3NzQm94KSk7CisgICAgICAgIGlmIChpczxSZW5kZXJUYWJsZVJvdz4o
Y3NzQm94KSkKKyAgICAgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGFibGVSb3c6OmNyZWF0
ZSgmZG93bmNhc3Q8UmVuZGVyVGFibGVSb3c+KGNzc0JveCkpOworICAgICAgICBpZiAoaXM8UmVu
ZGVyVGFibGVDZWxsPihjc3NCb3gpKQorICAgICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlU
YWJsZUNlbGw6OmNyZWF0ZSgmZG93bmNhc3Q8UmVuZGVyVGFibGVDZWxsPihjc3NCb3gpKTsKIAog
ICAgICAgICAvLyBwcm9ncmVzcyBiYXIKLSAgICAgICAgaWYgKGNzc0JveC0+aXNQcm9ncmVzcygp
KQotICAgICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlQcm9ncmVzc0luZGljYXRvcjo6Y3Jl
YXRlKHRvUmVuZGVyUHJvZ3Jlc3MoY3NzQm94KSk7CisgICAgICAgIGlmIChpczxSZW5kZXJQcm9n
cmVzcz4oY3NzQm94KSkKKyAgICAgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5UHJvZ3Jlc3NJ
bmRpY2F0b3I6OmNyZWF0ZSgmZG93bmNhc3Q8UmVuZGVyUHJvZ3Jlc3M+KGNzc0JveCkpOwogCiAj
aWYgRU5BQkxFKE1FVEVSX0VMRU1FTlQpCi0gICAgICAgIGlmIChjc3NCb3gtPmlzTWV0ZXIoKSkK
LSAgICAgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5UHJvZ3Jlc3NJbmRpY2F0b3I6OmNyZWF0
ZSh0b1JlbmRlck1ldGVyKGNzc0JveCkpOworICAgICAgICBpZiAoaXM8UmVuZGVyTWV0ZXI+KGNz
c0JveCkpCisgICAgICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVByb2dyZXNzSW5kaWNhdG9y
OjpjcmVhdGUoJmRvd25jYXN0PFJlbmRlck1ldGVyPihjc3NCb3gpKTsKICNlbmRpZgogCiAgICAg
ICAgIC8vIGlucHV0IHR5cGU9cmFuZ2UKLSAgICAgICAgaWYgKGNzc0JveC0+aXNTbGlkZXIoKSkK
LSAgICAgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5U2xpZGVyOjpjcmVhdGUodG9SZW5kZXJT
bGlkZXIoY3NzQm94KSk7CisgICAgICAgIGlmIChpczxSZW5kZXJTbGlkZXI+KGNzc0JveCkpCisg
ICAgICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVNsaWRlcjo6Y3JlYXRlKCZkb3duY2FzdDxS
ZW5kZXJTbGlkZXI+KGNzc0JveCkpOwogICAgIH0KIAogICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0OjpjcmVhdGUocmVuZGVyZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKaW5kZXgg
YzJhNTBkNWZhNDVhMjI1NDdmMDgxZWU0YjBiZTNiZDgyYzczZTcyYy4uYWVjMWI5NjRlZGVlMjEz
OThhNTdjNGNhMzYzN2FjMjQzZDc1YzA1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCkBAIC0xNDgs
OSArMTQ4LDkgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpkZXRhY2goQWNjZXNz
aWJpbGl0eURldGFjaG1lbnRUeXBlIGRldGFjaG1lbnRUeXAKIAogUmVuZGVyQm94TW9kZWxPYmpl
Y3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnJlbmRlckJveE1vZGVsT2JqZWN0KCkgY29u
c3QKIHsKLSAgICBpZiAoIW1fcmVuZGVyZXIgfHwgIW1fcmVuZGVyZXItPmlzQm94TW9kZWxPYmpl
Y3QoKSkKKyAgICBpZiAoIWlzPFJlbmRlckJveE1vZGVsT2JqZWN0PihtX3JlbmRlcmVyKSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIHRvUmVuZGVyQm94TW9kZWxPYmplY3Qo
bV9yZW5kZXJlcik7CisgICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlckJveE1vZGVsT2JqZWN0Piht
X3JlbmRlcmVyKTsKIH0KIAogdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpzZXRSZW5k
ZXJlcihSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQpAQCAtMTU5LDE2ICsxNTksOSBAQCB2b2lkIEFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnNldFJlbmRlcmVyKFJlbmRlck9iamVjdCogcmVuZGVy
ZXIpCiAgICAgc2V0Tm9kZShyZW5kZXJlci0+bm9kZSgpKTsKIH0KIAotc3RhdGljIGlubGluZSBi
b29sIGlzSW5saW5lV2l0aENvbnRpbnVhdGlvbihSZW5kZXJPYmplY3QqIG9iamVjdCkKK3N0YXRp
YyBpbmxpbmUgYm9vbCBpc0lubGluZVdpdGhDb250aW51YXRpb24oUmVuZGVyT2JqZWN0JiBvYmpl
Y3QpCiB7Ci0gICAgaWYgKCFvYmplY3QtPmlzQm94TW9kZWxPYmplY3QoKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlbmRlcmVyID0gdG9SZW5k
ZXJCb3hNb2RlbE9iamVjdChvYmplY3QpOwotICAgIGlmICghcmVuZGVyZXItPmlzUmVuZGVySW5s
aW5lKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiB0b1JlbmRlcklubGlu
ZShyZW5kZXJlciktPmNvbnRpbnVhdGlvbigpOworICAgIHJldHVybiBpczxSZW5kZXJJbmxpbmU+
KG9iamVjdCkgJiYgZG93bmNhc3Q8UmVuZGVySW5saW5lPihvYmplY3QpLmNvbnRpbnVhdGlvbigp
OwogfQogCiBzdGF0aWMgaW5saW5lIFJlbmRlck9iamVjdCogZmlyc3RDaGlsZEluQ29udGludWF0
aW9uKFJlbmRlcklubGluZSYgcmVuZGVyZXIpCkBAIC0xOTAsNyArMTgzLDcgQEAgc3RhdGljIGlu
bGluZSBSZW5kZXJPYmplY3QqIGZpcnN0Q2hpbGRDb25zaWRlcmluZ0NvbnRpbnVhdGlvbihSZW5k
ZXJPYmplY3QmIHJlbmQKIHsKICAgICBSZW5kZXJPYmplY3QqIGZpcnN0Q2hpbGQgPSByZW5kZXJl
ci5maXJzdENoaWxkU2xvdygpOwogCi0gICAgaWYgKCFmaXJzdENoaWxkICYmIGlzSW5saW5lV2l0
aENvbnRpbnVhdGlvbigmcmVuZGVyZXIpKQorICAgIGlmICghZmlyc3RDaGlsZCAmJiBpc0lubGlu
ZVdpdGhDb250aW51YXRpb24ocmVuZGVyZXIpKQogICAgICAgICBmaXJzdENoaWxkID0gZmlyc3RD
aGlsZEluQ29udGludWF0aW9uKGRvd25jYXN0PFJlbmRlcklubGluZT4ocmVuZGVyZXIpKTsKIAog
ICAgIHJldHVybiBmaXJzdENoaWxkOwpAQCAtMzU2LDcgKzM0OSw3IEBAIEFjY2Vzc2liaWxpdHlP
YmplY3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnByZXZpb3VzU2libGluZygpIGNvbnN0
CiBzdGF0aWMgaW5saW5lIGJvb2wgbGFzdENoaWxkSGFzQ29udGludWF0aW9uKFJlbmRlckVsZW1l
bnQmIHJlbmRlcmVyKQogewogICAgIFJlbmRlck9iamVjdCogY2hpbGQgPSByZW5kZXJlci5sYXN0
Q2hpbGQoKTsKLSAgICByZXR1cm4gY2hpbGQgJiYgaXNJbmxpbmVXaXRoQ29udGludWF0aW9uKGNo
aWxkKTsKKyAgICByZXR1cm4gY2hpbGQgJiYgaXNJbmxpbmVXaXRoQ29udGludWF0aW9uKCpjaGls
ZCk7CiB9CiAKIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
Om5leHRTaWJsaW5nKCkgY29uc3QKQEAgLTM4OCwxMSArMzgxLDExIEBAIEFjY2Vzc2liaWxpdHlP
YmplY3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6Om5leHRTaWJsaW5nKCkgY29uc3QKIAog
ICAgIC8vIENhc2UgNDogbm9kZSBpcyBhbiBpbmxpbmUgd2l0aCBhIGNvbnRpbnVhdGlvbi4gTmV4
dCBzaWJsaW5nIGlzIHRoZSBuZXh0IHNpYmxpbmcgb2YgdGhlIGVuZCAKICAgICAvLyBvZiB0aGUg
Y29udGludWF0aW9uIGNoYWluLgotICAgIGVsc2UgaWYgKGlzSW5saW5lV2l0aENvbnRpbnVhdGlv
bihtX3JlbmRlcmVyKSkKKyAgICBlbHNlIGlmIChpc0lubGluZVdpdGhDb250aW51YXRpb24oKm1f
cmVuZGVyZXIpKQogICAgICAgICBuZXh0U2libGluZyA9IGVuZE9mQ29udGludWF0aW9ucygqbV9y
ZW5kZXJlciktPm5leHRTaWJsaW5nKCk7CiAKICAgICAvLyBDYXNlIDU6IG5vZGUgaGFzIG5vIG5l
eHQgc2libGluZywgYW5kIGl0cyBwYXJlbnQgaXMgYW4gaW5saW5lIHdpdGggYSBjb250aW51YXRp
b24uCi0gICAgZWxzZSBpZiAoaXNJbmxpbmVXaXRoQ29udGludWF0aW9uKG1fcmVuZGVyZXItPnBh
cmVudCgpKSkgeworICAgIGVsc2UgaWYgKGlzSW5saW5lV2l0aENvbnRpbnVhdGlvbigqbV9yZW5k
ZXJlci0+cGFyZW50KCkpKSB7CiAgICAgICAgIGF1dG8mIGNvbnRpbnVhdGlvbiA9ICpkb3duY2Fz
dDxSZW5kZXJJbmxpbmU+KCptX3JlbmRlcmVyLT5wYXJlbnQoKSkuY29udGludWF0aW9uKCk7CiAg
ICAgICAgIAogICAgICAgICAvLyBDYXNlIDVhOiBjb250aW51YXRpb24gaXMgYSBibG9jayAtIGlu
IHRoaXMgY2FzZSB0aGUgYmxvY2sgaXRzZWxmIGlzIHRoZSBuZXh0IHNpYmxpbmcuCkBAIC0xNzEy
LDkgKzE3MDUsOSBAQCBEb2N1bWVudCogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6ZG9jdW1l
bnQoKSBjb25zdAogCiBXaWRnZXQqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OndpZGdldCgp
IGNvbnN0CiB7Ci0gICAgaWYgKCFtX3JlbmRlcmVyLT5pc0JveE1vZGVsT2JqZWN0KCkgfHwgIXRv
UmVuZGVyQm94TW9kZWxPYmplY3QobV9yZW5kZXJlciktPmlzV2lkZ2V0KCkpCisgICAgaWYgKCFp
czxSZW5kZXJXaWRnZXQ+KCptX3JlbmRlcmVyKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0g
ICAgcmV0dXJuIHRvUmVuZGVyV2lkZ2V0KG1fcmVuZGVyZXIpLT53aWRnZXQoKTsKKyAgICByZXR1
cm4gZG93bmNhc3Q8UmVuZGVyV2lkZ2V0PigqbV9yZW5kZXJlcikud2lkZ2V0KCk7CiB9CiAKIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFjY2Vzc2liaWxp
dHlQYXJlbnRGb3JJbWFnZU1hcChIVE1MTWFwRWxlbWVudCogbWFwKSBjb25zdApAQCAtMjM3Nywx
OCArMjM3MCwxOCBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0Ojpjb3JyZXNwb25kaW5nTGFiZWxGb3JDb250cm9sRWxlbQogICAgIHJldHVybiBudWxscHRy
OwogfQogCi1ib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnJlbmRlck9iamVjdElzT2Jz
ZXJ2YWJsZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyKSBjb25zdAorYm9vbCBBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0OjpyZW5kZXJPYmplY3RJc09ic2VydmFibGUoUmVuZGVyT2JqZWN0JiByZW5k
ZXJlcikgY29uc3QKIHsKICAgICAvLyBBWCBjbGllbnRzIHdpbGwgbGlzdGVuIGZvciBBWFZhbHVl
Q2hhbmdlIG9uIGEgdGV4dCBjb250cm9sLgotICAgIGlmIChyZW5kZXJlci0+aXNUZXh0Q29udHJv
bCgpKQorICAgIGlmIChpczxSZW5kZXJUZXh0Q29udHJvbD4ocmVuZGVyZXIpKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAKICAgICAvLyBBWCBjbGllbnRzIHdpbGwgbGlzdGVuIGZvciBBWFNl
bGVjdGVkQ2hpbGRyZW5DaGFuZ2VkIG9uIGxpc3Rib3hlcy4KLSAgICBOb2RlKiBub2RlID0gcmVu
ZGVyZXItPm5vZGUoKTsKKyAgICBOb2RlKiBub2RlID0gcmVuZGVyZXIubm9kZSgpOwogICAgIGlm
ICghbm9kZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIGlmIChub2RlSGFzUm9s
ZShub2RlLCAibGlzdGJveCIpIHx8IChyZW5kZXJlci0+aXNCb3hNb2RlbE9iamVjdCgpICYmIHRv
UmVuZGVyQm94TW9kZWxPYmplY3QocmVuZGVyZXIpLT5pc0xpc3RCb3goKSkpCisgICAgaWYgKG5v
ZGVIYXNSb2xlKG5vZGUsICJsaXN0Ym94IikgfHwgKGlzPFJlbmRlckJveE1vZGVsT2JqZWN0Pihy
ZW5kZXJlcikgJiYgZG93bmNhc3Q8UmVuZGVyQm94TW9kZWxPYmplY3Q+KHJlbmRlcmVyKS5pc0xp
c3RCb3goKSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gVGV4dGJveGVzIHNob3Vs
ZCBzZW5kIG91dCBub3RpZmljYXRpb25zLgpAQCAtMjQwMiw3ICsyMzk1LDcgQEAgQWNjZXNzaWJp
bGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6b2JzZXJ2YWJsZU9iamVjdCgp
IGNvbnN0CiB7CiAgICAgLy8gRmluZCB0aGUgb2JqZWN0IGdvaW5nIHVwIHRoZSBwYXJlbnQgY2hh
aW4gdGhhdCBpcyB1c2VkIGluIGFjY2Vzc2liaWxpdHkgdG8gbW9uaXRvciBjZXJ0YWluIG5vdGlm
aWNhdGlvbnMuCiAgICAgZm9yIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbV9yZW5kZXJlcjsg
cmVuZGVyZXIgJiYgcmVuZGVyZXItPm5vZGUoKTsgcmVuZGVyZXIgPSByZW5kZXJlci0+cGFyZW50
KCkpIHsKLSAgICAgICAgaWYgKHJlbmRlck9iamVjdElzT2JzZXJ2YWJsZShyZW5kZXJlcikpIHsK
KyAgICAgICAgaWYgKHJlbmRlck9iamVjdElzT2JzZXJ2YWJsZSgqcmVuZGVyZXIpKSB7CiAgICAg
ICAgICAgICBpZiAoQVhPYmplY3RDYWNoZSogY2FjaGUgPSBheE9iamVjdENhY2hlKCkpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGNhY2hlLT5nZXRPckNyZWF0ZShyZW5kZXJlcik7CiAgICAgICAg
IH0KQEAgLTM0MDcsMTAgKzM0MDAsMTAgQEAgc3RhdGljIEFjY2Vzc2liaWxpdHlSb2xlIG1zYWFS
b2xlRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKICAgICBpZiAoIXJl
bmRlcmVyKQogICAgICAgICByZXR1cm4gVW5rbm93blJvbGU7CiAKLSAgICBpZiAocmVuZGVyZXIt
PmlzVGV4dCgpKQorICAgIGlmIChpczxSZW5kZXJUZXh0PigqcmVuZGVyZXIpKQogICAgICAgICBy
ZXR1cm4gRWRpdGFibGVUZXh0Um9sZTsKIAotICAgIGlmIChyZW5kZXJlci0+aXNCb3hNb2RlbE9i
amVjdCgpICYmIHRvUmVuZGVyQm94TW9kZWxPYmplY3QocmVuZGVyZXIpLT5pc0xpc3RJdGVtKCkp
CisgICAgaWYgKGlzPFJlbmRlckxpc3RJdGVtPigqcmVuZGVyZXIpKQogICAgICAgICByZXR1cm4g
TGlzdEl0ZW1Sb2xlOwogCiAgICAgcmV0dXJuIFVua25vd25Sb2xlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmggYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaApp
bmRleCBiNGQyNDA1NGUzYzM2NzExZTM2NzkxMzBhNDliNWI4YmNiMTUyYTgzLi5mYTVkMzg1ZGE4
YzY2OGY0MWRlMTk3NTAxNzcwNzRjOThkZDgxNmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaApAQCAtMjQ3
LDcgKzI0Nyw3IEBAIHByaXZhdGU6CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogYWNjZXNzaWJp
bGl0eVBhcmVudEZvckltYWdlTWFwKEhUTUxNYXBFbGVtZW50KikgY29uc3Q7CiAgICAgdmlydHVh
bCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBlbGVtZW50QWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3Qg
SW50UG9pbnQmKSBjb25zdCBvdmVycmlkZTsKIAotICAgIGJvb2wgcmVuZGVyT2JqZWN0SXNPYnNl
cnZhYmxlKFJlbmRlck9iamVjdCopIGNvbnN0OworICAgIGJvb2wgcmVuZGVyT2JqZWN0SXNPYnNl
cnZhYmxlKFJlbmRlck9iamVjdCYpIGNvbnN0OwogICAgIFJlbmRlck9iamVjdCogcmVuZGVyUGFy
ZW50T2JqZWN0KCkgY29uc3Q7CiAgICAgYm9vbCBpc0Rlc2NlbmRhbnRPZkVsZW1lbnRUeXBlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUpIGNvbnN0OwogICAgIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwCmluZGV4IGQ1YjEz
ZTVmODNjNTVjMDIwNzhkY2E5MzRlNTc1NjdiOGQ3M2Q0ZWQuLjc2ZGYzYzY4MjdhODQ0OTVhYzlm
YWUyZGZjMGVhZWFlMDAwMDUxMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAKQEAgLTI1OSwxMyArMjU5LDEzIEBAIGJvb2wg
QWNjZXNzaWJpbGl0eVRhYmxlOjppc0RhdGFUYWJsZSgpIGNvbnN0CiAgICAgICAgICAgICAKICAg
ICAgICAgICAgIC8vIEZvciB0aGUgZmlyc3QgNSByb3dzLCBjYWNoZSB0aGUgYmFja2dyb3VuZCBj
b2xvciBzbyB3ZSBjYW4gY2hlY2sgaWYgdGhpcyB0YWJsZSBoYXMgemVicmEtc3RyaXBlZCByb3dz
LgogICAgICAgICAgICAgaWYgKHJvdyA8IDUgJiYgcm93ID09IGFsdGVybmF0aW5nUm93Q29sb3JD
b3VudCkgewotICAgICAgICAgICAgICAgIFJlbmRlck9iamVjdCogcmVuZGVyUm93ID0gY2VsbC0+
cGFyZW50KCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFyZW5kZXJSb3cgfHwgIXJlbmRlclJvdy0+
aXNCb3hNb2RlbE9iamVjdCgpIHx8ICF0b1JlbmRlckJveE1vZGVsT2JqZWN0KHJlbmRlclJvdykt
PmlzVGFibGVSb3coKSkKKyAgICAgICAgICAgICAgICBSZW5kZXJFbGVtZW50KiByZW5kZXJSb3cg
PSBjZWxsLT5wYXJlbnQoKTsKKyAgICAgICAgICAgICAgICBpZiAoIWlzPFJlbmRlclRhYmxlUm93
PihyZW5kZXJSb3cpKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAg
ICAgICBjb25zdCBSZW5kZXJTdHlsZSYgcm93UmVuZGVyU3R5bGUgPSByZW5kZXJSb3ctPnN0eWxl
KCk7CiAgICAgICAgICAgICAgICAgQ29sb3Igcm93Q29sb3IgPSByb3dSZW5kZXJTdHlsZS52aXNp
dGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpOwogICAgICAgICAg
ICAgICAgIGFsdGVybmF0aW5nUm93Q29sb3JzW2FsdGVybmF0aW5nUm93Q29sb3JDb3VudF0gPSBy
b3dDb2xvcjsKLSAgICAgICAgICAgICAgICBhbHRlcm5hdGluZ1Jvd0NvbG9yQ291bnQrKzsKKyAg
ICAgICAgICAgICAgICArK2FsdGVybmF0aW5nUm93Q29sb3JDb3VudDsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCBhZjQ3MTY0NWY1MGM3MzUy
M2RkYmRjNmI3OTg1NTcxOGJlYWIwODBhLi5jMDgzN2EyMmE2YWMwZDFiZGRjNDRjZWMxZDhmNGQ2
MTEzNGMyNTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC02MjksMTMgKzYyOSwxMyBAQCBib29sIE5v
ZGU6OmlzRWRpdGFibGVUb0FjY2Vzc2liaWxpdHkoRWRpdGFibGVMZXZlbCBlZGl0YWJsZUxldmVs
KSBjb25zdAogUmVuZGVyQm94KiBOb2RlOjpyZW5kZXJCb3goKSBjb25zdAogewogICAgIFJlbmRl
ck9iamVjdCogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpOwotICAgIHJldHVybiByZW5kZXJl
ciAmJiByZW5kZXJlci0+aXNCb3goKSA/IHRvUmVuZGVyQm94KHJlbmRlcmVyKSA6IDA7CisgICAg
cmV0dXJuIGlzPFJlbmRlckJveD4ocmVuZGVyZXIpID8gZG93bmNhc3Q8UmVuZGVyQm94PihyZW5k
ZXJlcikgOiBudWxscHRyOwogfQogCiBSZW5kZXJCb3hNb2RlbE9iamVjdCogTm9kZTo6cmVuZGVy
Qm94TW9kZWxPYmplY3QoKSBjb25zdAogewogICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSB0
aGlzLT5yZW5kZXJlcigpOwotICAgIHJldHVybiByZW5kZXJlciAmJiByZW5kZXJlci0+aXNCb3hN
b2RlbE9iamVjdCgpID8gdG9SZW5kZXJCb3hNb2RlbE9iamVjdChyZW5kZXJlcikgOiAwOworICAg
IHJldHVybiBpczxSZW5kZXJCb3hNb2RlbE9iamVjdD4ocmVuZGVyZXIpID8gZG93bmNhc3Q8UmVu
ZGVyQm94TW9kZWxPYmplY3Q+KHJlbmRlcmVyKSA6IG51bGxwdHI7CiB9CiAKIExheW91dFJlY3Qg
Tm9kZTo6Ym91bmRpbmdCb3goKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvck92ZXJsYXkuY3BwCmluZGV4IGNhY2E4ZTRhMTg4MWU0OTUzNjk0NWFkOWFmNWQ2Y2M3
MjkxOTRhZjguLjJkYjdmMWEzMWI2MWRiNjYxYjMxMTJiY2Y1YzcxNjAyMzc4MzM1MzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAKQEAgLTcwNiw3
ICs3MDYsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJ1aWxkT2JqZWN0
Rm9yRWxlbWVudEluZm8oTm9kZSogbm9kZSkKICAgICBGcmFtZSogY29udGFpbmluZ0ZyYW1lID0g
bm9kZS0+ZG9jdW1lbnQoKS5mcmFtZSgpOwogICAgIEZyYW1lVmlldyogY29udGFpbmluZ1ZpZXcg
PSBjb250YWluaW5nRnJhbWUtPnZpZXcoKTsKICAgICBJbnRSZWN0IGJvdW5kaW5nQm94ID0gc25h
cHBlZEludFJlY3QoY29udGFpbmluZ1ZpZXctPmNvbnRlbnRzVG9Sb290VmlldyhyZW5kZXJlci0+
YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKSkpOwotICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiBt
b2RlbE9iamVjdCA9IHJlbmRlcmVyLT5pc0JveE1vZGVsT2JqZWN0KCkgPyB0b1JlbmRlckJveE1v
ZGVsT2JqZWN0KHJlbmRlcmVyKSA6IG51bGxwdHI7CisgICAgUmVuZGVyQm94TW9kZWxPYmplY3Qq
IG1vZGVsT2JqZWN0ID0gaXM8UmVuZGVyQm94TW9kZWxPYmplY3Q+KCpyZW5kZXJlcikgPyBkb3du
Y2FzdDxSZW5kZXJCb3hNb2RlbE9iamVjdD4ocmVuZGVyZXIpIDogbnVsbHB0cjsKICAgICBlbGVt
ZW50SW5mby0+c2V0U3RyaW5nKCJub2RlV2lkdGgiLCBTdHJpbmc6Om51bWJlcihtb2RlbE9iamVj
dCA/IGFkanVzdEZvckFic29sdXRlWm9vbShtb2RlbE9iamVjdC0+cGl4ZWxTbmFwcGVkT2Zmc2V0
V2lkdGgoKSwgKm1vZGVsT2JqZWN0KSA6IGJvdW5kaW5nQm94LndpZHRoKCkpKTsKICAgICBlbGVt
ZW50SW5mby0+c2V0U3RyaW5nKCJub2RlSGVpZ2h0IiwgU3RyaW5nOjpudW1iZXIobW9kZWxPYmpl
Y3QgPyBhZGp1c3RGb3JBYnNvbHV0ZVpvb20obW9kZWxPYmplY3QtPnBpeGVsU25hcHBlZE9mZnNl
dEhlaWdodCgpLCAqbW9kZWxPYmplY3QpIDogYm91bmRpbmdCb3guaGVpZ2h0KCkpKTsKICAgICAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCA5Njc0OThkOTllN2Q2NmNhNDMzZjg1NTZm
ZjRhYjAzNTI1NWZiMjM0Li5lMjZlMmIwYjA2OTZjMGZmM2Q5NDdiNWRmMGYzZTBhYTk2ZDk2MWNh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC0xNzgyLDcgKzE3ODIsNyBAQCBib29s
IEZyYW1lVmlldzo6c2Nyb2xsQ29udGVudHNGYXN0UGF0aChjb25zdCBJbnRTaXplJiBzY3JvbGxE
ZWx0YSwgY29uc3QgSW50UmVjdAogCiAgICAgICAgIC8vIEZpeGVkIGl0ZW1zIHNob3VsZCBhbHdh
eXMgaGF2ZSBsYXllcnMuCiAgICAgICAgIEFTU0VSVChyZW5kZXJlci0+aGFzTGF5ZXIoKSk7Ci0g
ICAgICAgIFJlbmRlckxheWVyKiBsYXllciA9IHRvUmVuZGVyQm94TW9kZWxPYmplY3QocmVuZGVy
ZXIpLT5sYXllcigpOworICAgICAgICBSZW5kZXJMYXllciogbGF5ZXIgPSBkb3duY2FzdDxSZW5k
ZXJCb3hNb2RlbE9iamVjdD4oKnJlbmRlcmVyKS5sYXllcigpOwogCiAgICAgICAgIGlmIChsYXll
ci0+dmlld3BvcnRDb25zdHJhaW5lZE5vdENvbXBvc2l0ZWRSZWFzb24oKSA9PSBSZW5kZXJMYXll
cjo6Tm90Q29tcG9zaXRlZEZvckJvdW5kc091dE9mVmlldwogICAgICAgICAgICAgfHwgbGF5ZXIt
PnZpZXdwb3J0Q29uc3RyYWluZWROb3RDb21wb3NpdGVkUmVhc29uKCkgPT0gUmVuZGVyTGF5ZXI6
Ok5vdENvbXBvc2l0ZWRGb3JOb1Zpc2libGVDb250ZW50KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ByaW50
Q29udGV4dC5jcHAKaW5kZXggZTNmZGRiMGUzYzAzNjg3NDQ0M2I4MTM2NzNkMjg3MzVhYjI4YTdl
YS4uYjI0MWZlNTJiZDVhMThjZDllOGM3ZDhiMjE5MjNiNTAxNTY1M2FjNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUHJpbnRDb250ZXh0LmNwcApAQCAtMjI1LDExICsyMjUsMTEgQEAgdm9pZCBQcmludENv
bnRleHQ6OmVuZCgpCiBzdGF0aWMgUmVuZGVyQm94TW9kZWxPYmplY3QqIGVuY2xvc2luZ0JveE1v
ZGVsT2JqZWN0KFJlbmRlck9iamVjdCogb2JqZWN0KQogewogCi0gICAgd2hpbGUgKG9iamVjdCAm
JiAhb2JqZWN0LT5pc0JveE1vZGVsT2JqZWN0KCkpCisgICAgd2hpbGUgKG9iamVjdCAmJiAhaXM8
UmVuZGVyQm94TW9kZWxPYmplY3Q+KCpvYmplY3QpKQogICAgICAgICBvYmplY3QgPSBvYmplY3Qt
PnBhcmVudCgpOwogICAgIGlmICghb2JqZWN0KQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1
cm4gdG9SZW5kZXJCb3hNb2RlbE9iamVjdChvYmplY3QpOworICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICByZXR1cm4gZG93bmNhc3Q8UmVuZGVyQm94TW9kZWxPYmplY3Q+KG9iamVjdCk7CiB9
CiAKIGludCBQcmludENvbnRleHQ6OnBhZ2VOdW1iZXJGb3JFbGVtZW50KEVsZW1lbnQqIGVsZW1l
bnQsIGNvbnN0IEZsb2F0U2l6ZSYgcGFnZVNpemVJblBpeGVscykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHAKaW5kZXggZGE3NTJlMGIyNzMyNDI5
NTllYmM4M2RjN2M2NDVlMmI4NzAyOTY4YS4uMmUyZDcyZWI1NDA5MjJlN2JiNWM4YzZmM2YyMWNj
OTk0NjBiM2FlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5p
bWF0aW9uQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0
aW9uQmFzZS5jcHAKQEAgLTY1OCw3ICs2NTgsNyBAQCB2b2lkIEFuaW1hdGlvbkJhc2U6OmZyZWV6
ZUF0VGltZShkb3VibGUgdCkKICAgICAgICAgbV9wYXVzZVRpbWUgPSBtX3N0YXJ0VGltZSArIHQg
LSBtX2FuaW1hdGlvbi0+ZGVsYXkoKTsKIAogICAgIGlmIChtX29iamVjdCAmJiBtX29iamVjdC0+
aXNDb21wb3NpdGVkKCkpCi0gICAgICAgIHRvUmVuZGVyQm94TW9kZWxPYmplY3QobV9vYmplY3Qp
LT5zdXNwZW5kQW5pbWF0aW9ucyhtX3BhdXNlVGltZSk7CisgICAgICAgIGRvd25jYXN0PFJlbmRl
ckJveE1vZGVsT2JqZWN0PigqbV9vYmplY3QpLnN1c3BlbmRBbmltYXRpb25zKG1fcGF1c2VUaW1l
KTsKIH0KIAogZG91YmxlIEFuaW1hdGlvbkJhc2U6OmJlZ2luQW5pbWF0aW9uVXBkYXRlVGltZSgp
IGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9JbXBsaWNp
dEFuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9JbXBsaWNpdEFu
aW1hdGlvbi5jcHAKaW5kZXggZDYyNjk4NmM2MzgzZTQwNmJjM2UxYzNiYTFiNDNkY2MwZDk2YTVk
NS4uZGM4YTY3YTc5MDk2NDhjNzBlYjRhZmE1Mzc5NjRiMTNkYWQzOGU0MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vSW1wbGljaXRBbmltYXRpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0ltcGxpY2l0QW5pbWF0aW9uLmNwcApAQCAt
MTAyLDcgKzEwMiw3IEBAIHZvaWQgSW1wbGljaXRBbmltYXRpb246OmdldEFuaW1hdGVkU3R5bGUo
UmVmUHRyPFJlbmRlclN0eWxlPiYgYW5pbWF0ZWRTdHlsZSkKIGJvb2wgSW1wbGljaXRBbmltYXRp
b246OnN0YXJ0QW5pbWF0aW9uKGRvdWJsZSB0aW1lT2Zmc2V0KQogewogICAgIGlmIChtX29iamVj
dCAmJiBtX29iamVjdC0+aXNDb21wb3NpdGVkKCkpCi0gICAgICAgIHJldHVybiB0b1JlbmRlckJv
eE1vZGVsT2JqZWN0KG1fb2JqZWN0KS0+c3RhcnRUcmFuc2l0aW9uKHRpbWVPZmZzZXQsIG1fYW5p
bWF0aW5nUHJvcGVydHksIG1fZnJvbVN0eWxlLmdldCgpLCBtX3RvU3R5bGUuZ2V0KCkpOworICAg
ICAgICByZXR1cm4gZG93bmNhc3Q8UmVuZGVyQm94TW9kZWxPYmplY3Q+KCptX29iamVjdCkuc3Rh
cnRUcmFuc2l0aW9uKHRpbWVPZmZzZXQsIG1fYW5pbWF0aW5nUHJvcGVydHksIG1fZnJvbVN0eWxl
LmdldCgpLCBtX3RvU3R5bGUuZ2V0KCkpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtMTEy
LDcgKzExMiw3IEBAIHZvaWQgSW1wbGljaXRBbmltYXRpb246OnBhdXNlQW5pbWF0aW9uKGRvdWJs
ZSB0aW1lT2Zmc2V0KQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9vYmplY3QtPmlzQ29t
cG9zaXRlZCgpKQotICAgICAgICB0b1JlbmRlckJveE1vZGVsT2JqZWN0KG1fb2JqZWN0KS0+dHJh
bnNpdGlvblBhdXNlZCh0aW1lT2Zmc2V0LCBtX2FuaW1hdGluZ1Byb3BlcnR5KTsKKyAgICAgICAg
ZG93bmNhc3Q8UmVuZGVyQm94TW9kZWxPYmplY3Q+KCptX29iamVjdCkudHJhbnNpdGlvblBhdXNl
ZCh0aW1lT2Zmc2V0LCBtX2FuaW1hdGluZ1Byb3BlcnR5KTsKICAgICAvLyBSZXN0b3JlIHRoZSBv
cmlnaW5hbCAodW5hbmltYXRlZCkgc3R5bGUKICAgICBpZiAoIXBhdXNlZCgpKQogICAgICAgICBz
ZXROZWVkc1N0eWxlUmVjYWxjKG1fb2JqZWN0LT5lbGVtZW50KCkpOwpAQCAtMTIxLDcgKzEyMSw3
IEBAIHZvaWQgSW1wbGljaXRBbmltYXRpb246OnBhdXNlQW5pbWF0aW9uKGRvdWJsZSB0aW1lT2Zm
c2V0KQogdm9pZCBJbXBsaWNpdEFuaW1hdGlvbjo6ZW5kQW5pbWF0aW9uKCkKIHsKICAgICBpZiAo
bV9vYmplY3QgJiYgbV9vYmplY3QtPmlzQ29tcG9zaXRlZCgpKQotICAgICAgICB0b1JlbmRlckJv
eE1vZGVsT2JqZWN0KG1fb2JqZWN0KS0+dHJhbnNpdGlvbkZpbmlzaGVkKG1fYW5pbWF0aW5nUHJv
cGVydHkpOworICAgICAgICBkb3duY2FzdDxSZW5kZXJCb3hNb2RlbE9iamVjdD4oKm1fb2JqZWN0
KS50cmFuc2l0aW9uRmluaXNoZWQobV9hbmltYXRpbmdQcm9wZXJ0eSk7CiB9CiAKIHZvaWQgSW1w
bGljaXRBbmltYXRpb246Om9uQW5pbWF0aW9uRW5kKGRvdWJsZSBlbGFwc2VkVGltZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0tleWZyYW1lQW5pbWF0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0tleWZyYW1lQW5pbWF0aW9uLmNwcApp
bmRleCAwODlkZjg4OWE1N2Q4ODNlYmE2NjIwMzA3YzVkYzAyMjUyMmFkZGY2Li4zNjM5Nzk4Njg1
ODdiMmQwMzU5ZjQ2ODM1OGE1ZDVlNzhiOGNkYzM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2FuaW1hdGlvbi9LZXlmcmFtZUFuaW1hdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9hbmltYXRpb24vS2V5ZnJhbWVBbmltYXRpb24uY3BwCkBAIC0yMDUsOSArMjA1LDgg
QEAgYm9vbCBLZXlmcmFtZUFuaW1hdGlvbjo6aGFzQW5pbWF0aW9uRm9yUHJvcGVydHkoQ1NTUHJv
cGVydHlJRCBwcm9wZXJ0eSkgY29uc3QKIAogYm9vbCBLZXlmcmFtZUFuaW1hdGlvbjo6c3RhcnRB
bmltYXRpb24oZG91YmxlIHRpbWVPZmZzZXQpCiB7Ci0gICAgaWYgKG1fb2JqZWN0ICYmIG1fb2Jq
ZWN0LT5pc0NvbXBvc2l0ZWQoKSkgewotICAgICAgICByZXR1cm4gdG9SZW5kZXJCb3hNb2RlbE9i
amVjdChtX29iamVjdCktPnN0YXJ0QW5pbWF0aW9uKHRpbWVPZmZzZXQsIG1fYW5pbWF0aW9uLmdl
dCgpLCBtX2tleWZyYW1lcyk7Ci0gICAgfQorICAgIGlmIChtX29iamVjdCAmJiBtX29iamVjdC0+
aXNDb21wb3NpdGVkKCkpCisgICAgICAgIHJldHVybiBkb3duY2FzdDxSZW5kZXJCb3hNb2RlbE9i
amVjdD4oKm1fb2JqZWN0KS5zdGFydEFuaW1hdGlvbih0aW1lT2Zmc2V0LCBtX2FuaW1hdGlvbi5n
ZXQoKSwgbV9rZXlmcmFtZXMpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtMjE3LDcgKzIx
Niw3IEBAIHZvaWQgS2V5ZnJhbWVBbmltYXRpb246OnBhdXNlQW5pbWF0aW9uKGRvdWJsZSB0aW1l
T2Zmc2V0KQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9vYmplY3QtPmlzQ29tcG9zaXRl
ZCgpKQotICAgICAgICB0b1JlbmRlckJveE1vZGVsT2JqZWN0KG1fb2JqZWN0KS0+YW5pbWF0aW9u
UGF1c2VkKHRpbWVPZmZzZXQsIG1fa2V5ZnJhbWVzLmFuaW1hdGlvbk5hbWUoKSk7CisgICAgICAg
IGRvd25jYXN0PFJlbmRlckJveE1vZGVsT2JqZWN0PigqbV9vYmplY3QpLmFuaW1hdGlvblBhdXNl
ZCh0aW1lT2Zmc2V0LCBtX2tleWZyYW1lcy5hbmltYXRpb25OYW1lKCkpOwogCiAgICAgLy8gUmVz
dG9yZSB0aGUgb3JpZ2luYWwgKHVuYW5pbWF0ZWQpIHN0eWxlCiAgICAgaWYgKCFwYXVzZWQoKSkK
QEAgLTIzMCw3ICsyMjksNyBAQCB2b2lkIEtleWZyYW1lQW5pbWF0aW9uOjplbmRBbmltYXRpb24o
KQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9vYmplY3QtPmlzQ29tcG9zaXRlZCgpKQot
ICAgICAgICB0b1JlbmRlckJveE1vZGVsT2JqZWN0KG1fb2JqZWN0KS0+YW5pbWF0aW9uRmluaXNo
ZWQobV9rZXlmcmFtZXMuYW5pbWF0aW9uTmFtZSgpKTsKKyAgICAgICAgZG93bmNhc3Q8UmVuZGVy
Qm94TW9kZWxPYmplY3Q+KCptX29iamVjdCkuYW5pbWF0aW9uRmluaXNoZWQobV9rZXlmcmFtZXMu
YW5pbWF0aW9uTmFtZSgpKTsKIAogICAgIC8vIFJlc3RvcmUgdGhlIG9yaWdpbmFsICh1bmFuaW1h
dGVkKSBzdHlsZQogICAgIGlmICghcGF1c2VkKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2lvcy9GcmFtZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0ZyYW1lSU9T
Lm1tCmluZGV4IDJhYzRjZmRjMzM5MTg2ZDc4YzZhZDk0ZWM5MWIyZDBlNzllMzllZDkuLjY0YjZi
ZmMyYWFhZTE3NGM0MGJiYTljZGI4ZTg1Y2FjMWRmMGNjNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvaW9zL0ZyYW1lSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9z
L0ZyYW1lSU9TLm1tCkBAIC04NTMsMTIgKzg1MywxMiBAQCB2b2lkIEZyYW1lOjpvdmVyZmxvd1Nj
cm9sbFBvc2l0aW9uQ2hhbmdlZEZvck5vZGUoY29uc3QgSW50UG9pbnQmIHBvc2l0aW9uLCBOb2Rl
KgogICAgIGlmICghcmVuZGVyZXIgfHwgIXJlbmRlcmVyLT5oYXNMYXllcigpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBSZW5kZXJMYXllciogbGF5ZXIgPSB0b1JlbmRlckJveE1vZGVsT2JqZWN0
KHJlbmRlcmVyKS0+bGF5ZXIoKTsKKyAgICBSZW5kZXJMYXllciYgbGF5ZXIgPSAqZG93bmNhc3Q8
UmVuZGVyQm94TW9kZWxPYmplY3Q+KCpyZW5kZXJlcikubGF5ZXIoKTsKIAotICAgIGxheWVyLT5z
ZXRJc1VzZXJTY3JvbGwoaXNVc2VyU2Nyb2xsKTsKLSAgICBsYXllci0+c2Nyb2xsVG9PZmZzZXRX
aXRob3V0QW5pbWF0aW9uKHBvc2l0aW9uKTsKLSAgICBsYXllci0+c2V0SXNVc2VyU2Nyb2xsKGZh
bHNlKTsKLSAgICBsYXllci0+ZGlkRW5kU2Nyb2xsKCk7IC8vIEZJWE1FOiBTaG91bGQgd2UgYWx3
YXlzIGNhbGwgdGhpcz8KKyAgICBsYXllci5zZXRJc1VzZXJTY3JvbGwoaXNVc2VyU2Nyb2xsKTsK
KyAgICBsYXllci5zY3JvbGxUb09mZnNldFdpdGhvdXRBbmltYXRpb24ocG9zaXRpb24pOworICAg
IGxheWVyLnNldElzVXNlclNjcm9sbChmYWxzZSk7CisgICAgbGF5ZXIuZGlkRW5kU2Nyb2xsKCk7
IC8vIEZJWE1FOiBTaG91bGQgd2UgYWx3YXlzIGNhbGwgdGhpcz8KIH0KIAogdm9pZCBGcmFtZTo6
cmVzZXRBbGxHZW9sb2NhdGlvblBlcm1pc3Npb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCmluZGV4IGIyZGI3NDc4
YzA1MmY1Yzk4NzI1MjRhYjhhNDljZGRmZWMyNTRmZDMuLjVmYWQ3OWRjMGUwZWU0ZjRmYWQ3MmZi
YzlkZDJlMTA1YWE0YTFmNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHAKQEAgLTMxMCwxMiArMzEwLDEyIEBAIGJv
b2wgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6Omhhc1Zpc2libGVTbG93UmVwYWludFZpZXdwb3J0Q29u
c3RyYWluZWRPYmplY3RzKEZyYW1lCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGZvciAo
RnJhbWVWaWV3OjpWaWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0U2V0Ojpjb25zdF9pdGVyYXRvciBp
dCA9IHZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzLT5iZWdpbigpLCBlbmQgPSB2aWV3cG9ydENv
bnN0cmFpbmVkT2JqZWN0cy0+ZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBSZW5k
ZXJPYmplY3QqIHZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3QgPSAqaXQ7Ci0gICAgICAgIGlmICgh
dmlld3BvcnRDb25zdHJhaW5lZE9iamVjdC0+aXNCb3hNb2RlbE9iamVjdCgpIHx8ICF2aWV3cG9y
dENvbnN0cmFpbmVkT2JqZWN0LT5oYXNMYXllcigpKQorICAgICAgICBSZW5kZXJPYmplY3QmIHZp
ZXdwb3J0Q29uc3RyYWluZWRPYmplY3QgPSAqKml0OworICAgICAgICBpZiAoIWlzPFJlbmRlckJv
eE1vZGVsT2JqZWN0Pih2aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0KSB8fCAhdmlld3BvcnRDb25z
dHJhaW5lZE9iamVjdC5oYXNMYXllcigpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
ICAgIFJlbmRlckxheWVyKiBsYXllciA9IHRvUmVuZGVyQm94TW9kZWxPYmplY3Qodmlld3BvcnRD
b25zdHJhaW5lZE9iamVjdCktPmxheWVyKCk7CisgICAgICAgIFJlbmRlckxheWVyJiBsYXllciA9
ICpkb3duY2FzdDxSZW5kZXJCb3hNb2RlbE9iamVjdD4odmlld3BvcnRDb25zdHJhaW5lZE9iamVj
dCkubGF5ZXIoKTsKICAgICAgICAgLy8gQW55IGV4cGxpY2l0IHJlYXNvbiB0aGF0IGEgZml4ZWQg
cG9zaXRpb24gZWxlbWVudCBpcyBub3QgY29tcG9zaXRlZCBzaG91bGRuJ3QgY2F1c2Ugc2xvdyBz
Y3JvbGxpbmcuCi0gICAgICAgIGlmICghbGF5ZXItPmlzQ29tcG9zaXRlZCgpICYmIGxheWVyLT52
aWV3cG9ydENvbnN0cmFpbmVkTm90Q29tcG9zaXRlZFJlYXNvbigpID09IFJlbmRlckxheWVyOjpO
b05vdENvbXBvc2l0ZWRSZWFzb24pCisgICAgICAgIGlmICghbGF5ZXIuaXNDb21wb3NpdGVkKCkg
JiYgbGF5ZXIudmlld3BvcnRDb25zdHJhaW5lZE5vdENvbXBvc2l0ZWRSZWFzb24oKSA9PSBSZW5k
ZXJMYXllcjo6Tm9Ob3RDb21wb3NpdGVkUmVhc29uKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9JbmxpbmVCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVCb3gu
aAppbmRleCA4N2JjMDFiMDVjNzE5N2Q0ZTNmODI3ZTA1MjNmMTk2MmI4YzYyNzViLi41ODY2NGQ5
ZmNiZDUwOTQzNDViOTY2YmE3M2MyYmZiMDkwNzIwMGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvSW5saW5lQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0lubGluZUJveC5oCkBAIC0yMiw2ICsyMiw3IEBACiAjZGVmaW5lIElubGluZUJveF9oCiAKICNp
bmNsdWRlICJSZW5kZXJCb3hNb2RlbE9iamVjdC5oIgorI2luY2x1ZGUgIlJlbmRlclRleHQuaCIK
ICNpbmNsdWRlICJUZXh0RGlyZWN0aW9uLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTI1
Miw5ICsyNTMsOSBAQCBwdWJsaWM6CiAgICAgLy8gVXNlIHdpdGggY2F1dGlvbiEgVGhlIHR5cGUg
aXMgbm90IGNoZWNrZWQhCiAgICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIGJveE1vZGVsT2JqZWN0
KCkgY29uc3QKICAgICB7IAotICAgICAgICBpZiAoIW1fcmVuZGVyZXIuaXNUZXh0KCkpCi0gICAg
ICAgICAgICByZXR1cm4gJnRvUmVuZGVyQm94TW9kZWxPYmplY3QobV9yZW5kZXJlcik7Ci0gICAg
ICAgIHJldHVybiAwOworICAgICAgICBpZiAoIWlzPFJlbmRlclRleHQ+KG1fcmVuZGVyZXIpKQor
ICAgICAgICAgICAgcmV0dXJuICZkb3duY2FzdDxSZW5kZXJCb3hNb2RlbE9iamVjdD4obV9yZW5k
ZXJlcik7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAogICAgIEZsb2F0UG9pbnQg
bG9jYXRpb25JbmNsdWRpbmdGbGlwcGluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0lubGluZUVsZW1lbnRCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9J
bmxpbmVFbGVtZW50Qm94LmgKaW5kZXggNDJlMjEwMzU4YTM0ZDk2NzA2NzQzZjgxZjUwNDllMGE4
M2NmYmVkNC4uNDI0ZTU0Yjg4OGFhMGRhMmIzZTJmMmM1ZmRjN2NjMTJmNTgyMTM1OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUVsZW1lbnRCb3guaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRWxlbWVudEJveC5oCkBAIC00Miw3ICs0Miw3
IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgUmVuZGVyQm94TW9kZWxPYmplY3QmIHJl
bmRlcmVyKCkgY29uc3QgeyByZXR1cm4gdG9SZW5kZXJCb3hNb2RlbE9iamVjdChJbmxpbmVCb3g6
OnJlbmRlcmVyKCkpOyB9CisgICAgUmVuZGVyQm94TW9kZWxPYmplY3QmIHJlbmRlcmVyKCkgY29u
c3QgeyByZXR1cm4gZG93bmNhc3Q8UmVuZGVyQm94TW9kZWxPYmplY3Q+KElubGluZUJveDo6cmVu
ZGVyZXIoKSk7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVMaW5lKCkgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCB2b2lkIGV4dHJhY3RMaW5lKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAKaW5kZXggOTNlOWU3YTVjZjliMmYxN2FkZjMzNTg0
OWZkN2U0YTI3ZWY3NzQ4Zi4uYjkyYzQ1YWFmMjZhOGYyM2E3OWRkM2JlNjk2NTZhNDQ5MDZhYmVj
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcApAQCAtNjU1
LDcgKzY1NSw3IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6cGxhY2VCb3hlc0luQmxvY2tEaXJlY3Rp
b24oTGF5b3V0VW5pdCB0b3AsIExheW91dFVuaXQgbWF4SGVpCiAgICAgICAgICAgICBjb25zdCBG
b250TWV0cmljcyYgZm9udE1ldHJpY3MgPSBjaGlsZExpbmVTdHlsZS5mb250TWV0cmljcygpOwog
ICAgICAgICAgICAgbmV3TG9naWNhbFRvcCArPSBjdXJyLT5iYXNlbGluZVBvc2l0aW9uKGJhc2Vs
aW5lVHlwZSkgLSBmb250TWV0cmljcy5hc2NlbnQoYmFzZWxpbmVUeXBlKTsKICAgICAgICAgICAg
IGlmIChjdXJyLT5pc0lubGluZUZsb3dCb3goKSkgewotICAgICAgICAgICAgICAgIFJlbmRlckJv
eE1vZGVsT2JqZWN0JiBib3hPYmplY3QgPSB0b1JlbmRlckJveE1vZGVsT2JqZWN0KGN1cnItPnJl
bmRlcmVyKCkpOworICAgICAgICAgICAgICAgIFJlbmRlckJveE1vZGVsT2JqZWN0JiBib3hPYmpl
Y3QgPSBkb3duY2FzdDxSZW5kZXJCb3hNb2RlbE9iamVjdD4oY3Vyci0+cmVuZGVyZXIoKSk7CiAg
ICAgICAgICAgICAgICAgbmV3TG9naWNhbFRvcCAtPSBjaGlsZExpbmVTdHlsZS5pc0hvcml6b250
YWxXcml0aW5nTW9kZSgpCiAgICAgICAgICAgICAgICAgICAgID8gYm94T2JqZWN0LmJvcmRlclRv
cCgpICsgYm94T2JqZWN0LnBhZGRpbmdUb3AoKQogICAgICAgICAgICAgICAgICAgICA6IGJveE9i
amVjdC5ib3JkZXJSaWdodCgpICsgYm94T2JqZWN0LnBhZGRpbmdSaWdodCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmgKaW5kZXggYjlmYmQ4ZWI5MGE1ZTBhNTIyYTBm
MjRlZTc2N2Q0ZTY4MWRhNjhjNi4uOGM2NmQ1NjZiNzExYTQ5ZTVhZTRmNjJhMjZiYTBjMWIwY2I4
N2NmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3gu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5oCkBAIC03NSw3
ICs3NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIGJveE5hbWUoKSBjb25z
dCBvdmVycmlkZTsKICNlbmRpZgogCi0gICAgUmVuZGVyQm94TW9kZWxPYmplY3QmIHJlbmRlcmVy
KCkgY29uc3QgeyByZXR1cm4gdG9SZW5kZXJCb3hNb2RlbE9iamVjdChJbmxpbmVCb3g6OnJlbmRl
cmVyKCkpOyB9CisgICAgUmVuZGVyQm94TW9kZWxPYmplY3QmIHJlbmRlcmVyKCkgY29uc3QgeyBy
ZXR1cm4gZG93bmNhc3Q8UmVuZGVyQm94TW9kZWxPYmplY3Q+KElubGluZUJveDo6cmVuZGVyZXIo
KSk7IH0KICAgICBjb25zdCBSZW5kZXJTdHlsZSYgbGluZVN0eWxlKCkgY29uc3QgeyByZXR1cm4g
aXNGaXJzdExpbmUoKSA/IHJlbmRlcmVyKCkuZmlyc3RMaW5lU3R5bGUoKSA6IHJlbmRlcmVyKCku
c3R5bGUoKTsgfQogCiAgICAgSW5saW5lRmxvd0JveCogcHJldkxpbmVCb3goKSBjb25zdCB7IHJl
dHVybiBtX3ByZXZMaW5lQm94OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvSW5saW5lVGV4dEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4
dEJveC5jcHAKaW5kZXggYjJkYTU4YmI1NWNmOTBhNjFlZWI4ODA0ZDljMjBhYTFkY2E0OWZmNi4u
Y2E1MmZhMWU5MjFlMGJkZGYzNzQxOWZjYzViYTJjNTFjZjdhYTI0OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcApAQCAtMTY5LDcgKzE2OSw3IEBAIGludCBJ
bmxpbmVUZXh0Qm94OjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSBiYXNlbGluZVR5cGUp
IGNvbnN0CiAgICAgICAgIHJldHVybiAwOwogICAgIGlmICgmcGFyZW50KCktPnJlbmRlcmVyKCkg
PT0gcmVuZGVyZXIoKS5wYXJlbnQoKSkKICAgICAgICAgcmV0dXJuIHBhcmVudCgpLT5iYXNlbGlu
ZVBvc2l0aW9uKGJhc2VsaW5lVHlwZSk7Ci0gICAgcmV0dXJuIHRvUmVuZGVyQm94TW9kZWxPYmpl
Y3QocmVuZGVyZXIoKS5wYXJlbnQoKSktPmJhc2VsaW5lUG9zaXRpb24oYmFzZWxpbmVUeXBlLCBp
c0ZpcnN0TGluZSgpLCBpc0hvcml6b250YWwoKSA/IEhvcml6b250YWxMaW5lIDogVmVydGljYWxM
aW5lLCBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpOworICAgIHJldHVybiBkb3duY2FzdDxSZW5k
ZXJCb3hNb2RlbE9iamVjdD4oKnJlbmRlcmVyKCkucGFyZW50KCkpLmJhc2VsaW5lUG9zaXRpb24o
YmFzZWxpbmVUeXBlLCBpc0ZpcnN0TGluZSgpLCBpc0hvcml6b250YWwoKSA/IEhvcml6b250YWxM
aW5lIDogVmVydGljYWxMaW5lLCBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpOwogfQogCiBMYXlv
dXRVbml0IElubGluZVRleHRCb3g6OmxpbmVIZWlnaHQoKSBjb25zdApAQCAtMTc4LDcgKzE3OCw3
IEBAIExheW91dFVuaXQgSW5saW5lVGV4dEJveDo6bGluZUhlaWdodCgpIGNvbnN0CiAgICAgICAg
IHJldHVybiAwOwogICAgIGlmICgmcGFyZW50KCktPnJlbmRlcmVyKCkgPT0gcmVuZGVyZXIoKS5w
YXJlbnQoKSkKICAgICAgICAgcmV0dXJuIHBhcmVudCgpLT5saW5lSGVpZ2h0KCk7Ci0gICAgcmV0
dXJuIHRvUmVuZGVyQm94TW9kZWxPYmplY3QocmVuZGVyZXIoKS5wYXJlbnQoKSktPmxpbmVIZWln
aHQoaXNGaXJzdExpbmUoKSwgaXNIb3Jpem9udGFsKCkgPyBIb3Jpem9udGFsTGluZSA6IFZlcnRp
Y2FsTGluZSwgUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKTsKKyAgICByZXR1cm4gZG93bmNhc3Q8
UmVuZGVyQm94TW9kZWxPYmplY3Q+KCpyZW5kZXJlcigpLnBhcmVudCgpKS5saW5lSGVpZ2h0KGlz
Rmlyc3RMaW5lKCksIGlzSG9yaXpvbnRhbCgpID8gSG9yaXpvbnRhbExpbmUgOiBWZXJ0aWNhbExp
bmUsIFBvc2l0aW9uT25Db250YWluaW5nTGluZSk7CiB9CiAKIExheW91dFVuaXQgSW5saW5lVGV4
dEJveDo6c2VsZWN0aW9uVG9wKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2suY3BwCmluZGV4IGJjYmE1MWNmN2RiOGVlNmM3NjMwMmYyMzIwYjQ2ZTY3ODE0MGI1OGIu
LjlmNGYwYzY1ZjEzNzg4NWNiY2I2NTEwMmY0NWY1ZWVhOTIwOTEwMTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApAQCAtMzUzLDE0ICszNTMsMTQgQEAgUmVuZGVy
QmxvY2sqIFJlbmRlckJsb2NrOjpjb250aW51YXRpb25CZWZvcmUoUmVuZGVyT2JqZWN0KiBiZWZv
cmVDaGlsZCkKIHZvaWQgUmVuZGVyQmxvY2s6OmFkZENoaWxkVG9Db250aW51YXRpb24oUmVuZGVy
T2JqZWN0KiBuZXdDaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCkKIHsKICAgICBSZW5k
ZXJCbG9jayogZmxvdyA9IGNvbnRpbnVhdGlvbkJlZm9yZShiZWZvcmVDaGlsZCk7Ci0gICAgQVNT
RVJUKCFiZWZvcmVDaGlsZCB8fCBiZWZvcmVDaGlsZC0+cGFyZW50KCktPmlzUmVuZGVyQmxvY2so
KSk7Ci0gICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIGJlZm9yZUNoaWxkUGFyZW50ID0gMDsKKyAg
ICBBU1NFUlQoIWJlZm9yZUNoaWxkIHx8IGlzPFJlbmRlckJsb2NrPigqYmVmb3JlQ2hpbGQtPnBh
cmVudCgpKSk7CisgICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIGJlZm9yZUNoaWxkUGFyZW50ID0g
bnVsbHB0cjsKICAgICBpZiAoYmVmb3JlQ2hpbGQpCi0gICAgICAgIGJlZm9yZUNoaWxkUGFyZW50
ID0gdG9SZW5kZXJCb3hNb2RlbE9iamVjdChiZWZvcmVDaGlsZC0+cGFyZW50KCkpOworICAgICAg
ICBiZWZvcmVDaGlsZFBhcmVudCA9IGRvd25jYXN0PFJlbmRlckJveE1vZGVsT2JqZWN0PihiZWZv
cmVDaGlsZC0+cGFyZW50KCkpOwogICAgIGVsc2UgewotICAgICAgICBSZW5kZXJCb3hNb2RlbE9i
amVjdCogY29udCA9IGZsb3ctPmNvbnRpbnVhdGlvbigpOwotICAgICAgICBpZiAoY29udCkKLSAg
ICAgICAgICAgIGJlZm9yZUNoaWxkUGFyZW50ID0gY29udDsKKyAgICAgICAgUmVuZGVyQm94TW9k
ZWxPYmplY3QqIGNvbnRpbnVhdGlvbiA9IGZsb3ctPmNvbnRpbnVhdGlvbigpOworICAgICAgICBp
ZiAoY29udGludWF0aW9uKQorICAgICAgICAgICAgYmVmb3JlQ2hpbGRQYXJlbnQgPSBjb250aW51
YXRpb247CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGJlZm9yZUNoaWxkUGFyZW50ID0gZmxv
dzsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4IGE0ZTMy
MjI2OTE4YTAyOGU5NjczNjk4MjU1YjY5NDMyNmExYWI0N2QuLjVkYmMyZDFhZmMxYzZlOGJiNWVj
ZjM4NjE3YmNhN2JiOWMyZjM2ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3gu
Y3BwCkBAIC0yOTA0LDcgKzI5MDQsNyBAQCBMYXlvdXRVbml0IFJlbmRlckJveDo6Y29tcHV0ZVJl
cGxhY2VkTG9naWNhbFdpZHRoVXNpbmcoTGVuZ3RoIGxvZ2ljYWxXaWR0aCkgY29ucwogICAgICAg
ICAgICAgLy8gRklYTUU6IGNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxXaWR0aEZvckNvbnRlbnQoKSBp
cyB3cm9uZyBpZiB0aGUgcmVwbGFjZWQgZWxlbWVudCdzIGJsb2NrLWZsb3cgaXMgcGVycGVuZGlj
dWxhciB0byB0aGUKICAgICAgICAgICAgIC8vIGNvbnRhaW5pbmcgYmxvY2sncyBibG9jay1mbG93
LgogICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTQ2NDk2Ci0gICAgICAgICAgICBjb25zdCBMYXlvdXRVbml0IGN3ID0gaXNPdXRPZkZsb3dQb3Np
dGlvbmVkKCkgPyBjb250YWluaW5nQmxvY2tMb2dpY2FsV2lkdGhGb3JQb3NpdGlvbmVkKHRvUmVu
ZGVyQm94TW9kZWxPYmplY3QoY29udGFpbmVyKCkpKSA6IGNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxX
aWR0aEZvckNvbnRlbnQoKTsKKyAgICAgICAgICAgIGNvbnN0IExheW91dFVuaXQgY3cgPSBpc091
dE9mRmxvd1Bvc2l0aW9uZWQoKSA/IGNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxXaWR0aEZvclBvc2l0
aW9uZWQoZG93bmNhc3Q8UmVuZGVyQm94TW9kZWxPYmplY3Q+KGNvbnRhaW5lcigpKSkgOiBjb250
YWluaW5nQmxvY2tMb2dpY2FsV2lkdGhGb3JDb250ZW50KCk7CiAgICAgICAgICAgICBMZW5ndGgg
Y29udGFpbmVyTG9naWNhbFdpZHRoID0gY29udGFpbmluZ0Jsb2NrKCktPnN0eWxlKCkubG9naWNh
bFdpZHRoKCk7CiAgICAgICAgICAgICAvLyBGSVhNRTogSGFuZGxlIGNhc2VzIHdoZW4gY29udGFp
bmluZyBibG9jayB3aWR0aCBpcyBjYWxjdWxhdGVkIG9yIHZpZXdwb3J0IHBlcmNlbnQuCiAgICAg
ICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTEwNzEK
QEAgLTI5NjksNyArMjk2OSw3IEBAIExheW91dFVuaXQgUmVuZGVyQm94Ojpjb21wdXRlUmVwbGFj
ZWRMb2dpY2FsSGVpZ2h0VXNpbmcoTGVuZ3RoIGxvZ2ljYWxIZWlnaHQpIGNvCiAgICAgICAgICAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDY0OTYKICAgICAg
ICAgICAgIExheW91dFVuaXQgYXZhaWxhYmxlSGVpZ2h0OwogICAgICAgICAgICAgaWYgKGlzT3V0
T2ZGbG93UG9zaXRpb25lZCgpKQotICAgICAgICAgICAgICAgIGF2YWlsYWJsZUhlaWdodCA9IGNv
bnRhaW5pbmdCbG9ja0xvZ2ljYWxIZWlnaHRGb3JQb3NpdGlvbmVkKHRvUmVuZGVyQm94TW9kZWxP
YmplY3QoY2IpKTsKKyAgICAgICAgICAgICAgICBhdmFpbGFibGVIZWlnaHQgPSBjb250YWluaW5n
QmxvY2tMb2dpY2FsSGVpZ2h0Rm9yUG9zaXRpb25lZChkb3duY2FzdDxSZW5kZXJCb3hNb2RlbE9i
amVjdD4oY2IpKTsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIGF2YWlsYWJs
ZUhlaWdodCA9IGNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxIZWlnaHRGb3JDb250ZW50KEluY2x1ZGVN
YXJnaW5Cb3JkZXJQYWRkaW5nKTsKICAgICAgICAgICAgICAgICAvLyBJdCBpcyBuZWNlc3Nhcnkg
dG8gdXNlIHRoZSBib3JkZXItYm94IHRvIG1hdGNoIFdpbklFJ3MgYnJva2VuCkBAIC0zMjQ4LDcg
KzMyNDgsNyBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsV2lkdGgo
TG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzJiBjb21wdQogCiAgICAgLy8gV2UgZG9uJ3QgdXNl
IGNvbnRhaW5pbmdCbG9jaygpLCBzaW5jZSB3ZSBtYXkgYmUgcG9zaXRpb25lZCBieSBhbiBlbmNs
b3NpbmcKICAgICAvLyByZWxhdGl2ZSBwb3NpdGlvbmVkIGlubGluZS4KLSAgICBjb25zdCBSZW5k
ZXJCb3hNb2RlbE9iamVjdCogY29udGFpbmVyQmxvY2sgPSB0b1JlbmRlckJveE1vZGVsT2JqZWN0
KGNvbnRhaW5lcigpKTsKKyAgICBjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCogY29udGFpbmVy
QmxvY2sgPSBkb3duY2FzdDxSZW5kZXJCb3hNb2RlbE9iamVjdD4oY29udGFpbmVyKCkpOwogICAg
IAogICAgIGNvbnN0IExheW91dFVuaXQgY29udGFpbmVyTG9naWNhbFdpZHRoID0gY29udGFpbmlu
Z0Jsb2NrTG9naWNhbFdpZHRoRm9yUG9zaXRpb25lZChjb250YWluZXJCbG9jaywgcmVnaW9uKTsK
IApAQCAtMzU3Niw3ICszNTc2LDcgQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVk
TG9naWNhbEhlaWdodChMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMmIGNvbXAKIAogCiAgICAg
Ly8gV2UgZG9uJ3QgdXNlIGNvbnRhaW5pbmdCbG9jaygpLCBzaW5jZSB3ZSBtYXkgYmUgcG9zaXRp
b25lZCBieSBhbiBlbmNsb3NpbmcgcmVscG9zaXRpb25lZCBpbmxpbmUuCi0gICAgY29uc3QgUmVu
ZGVyQm94TW9kZWxPYmplY3QqIGNvbnRhaW5lckJsb2NrID0gdG9SZW5kZXJCb3hNb2RlbE9iamVj
dChjb250YWluZXIoKSk7CisgICAgY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QqIGNvbnRhaW5l
ckJsb2NrID0gZG93bmNhc3Q8UmVuZGVyQm94TW9kZWxPYmplY3Q+KGNvbnRhaW5lcigpKTsKIAog
ICAgIGNvbnN0IExheW91dFVuaXQgY29udGFpbmVyTG9naWNhbEhlaWdodCA9IGNvbnRhaW5pbmdC
bG9ja0xvZ2ljYWxIZWlnaHRGb3JQb3NpdGlvbmVkKGNvbnRhaW5lckJsb2NrKTsKIApAQCAtMzgy
OSwxMCArMzgyOSwxMCBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2Fs
V2lkdGhSZXBsYWNlZChMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZQogCiAgICAgLy8gV2UgZG9u
J3QgdXNlIGNvbnRhaW5pbmdCbG9jaygpLCBzaW5jZSB3ZSBtYXkgYmUgcG9zaXRpb25lZCBieSBh
biBlbmNsb3NpbmcKICAgICAvLyByZWxhdGl2ZSBwb3NpdGlvbmVkIGlubGluZS4KLSAgICBjb25z
dCBSZW5kZXJCb3hNb2RlbE9iamVjdCogY29udGFpbmVyQmxvY2sgPSB0b1JlbmRlckJveE1vZGVs
T2JqZWN0KGNvbnRhaW5lcigpKTsKKyAgICBjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCogY29u
dGFpbmVyQmxvY2sgPSBkb3duY2FzdDxSZW5kZXJCb3hNb2RlbE9iamVjdD4oY29udGFpbmVyKCkp
OwogCiAgICAgY29uc3QgTGF5b3V0VW5pdCBjb250YWluZXJMb2dpY2FsV2lkdGggPSBjb250YWlu
aW5nQmxvY2tMb2dpY2FsV2lkdGhGb3JQb3NpdGlvbmVkKGNvbnRhaW5lckJsb2NrKTsKLSAgICBj
b25zdCBMYXlvdXRVbml0IGNvbnRhaW5lclJlbGF0aXZlTG9naWNhbFdpZHRoID0gY29udGFpbmlu
Z0Jsb2NrTG9naWNhbFdpZHRoRm9yUG9zaXRpb25lZChjb250YWluZXJCbG9jaywgMCwgZmFsc2Up
OworICAgIGNvbnN0IExheW91dFVuaXQgY29udGFpbmVyUmVsYXRpdmVMb2dpY2FsV2lkdGggPSBj
b250YWluaW5nQmxvY2tMb2dpY2FsV2lkdGhGb3JQb3NpdGlvbmVkKGNvbnRhaW5lckJsb2NrLCBu
dWxscHRyLCBmYWxzZSk7CiAKICAgICAvLyBUbyBtYXRjaCBXaW5JRSwgaW4gcXVpcmtzIG1vZGUg
dXNlIHRoZSBwYXJlbnQncyAnZGlyZWN0aW9uJyBwcm9wZXJ0eQogICAgIC8vIGluc3RlYWQgb2Yg
dGhlIHRoZSBjb250YWluZXIgYmxvY2sncy4KQEAgLTM5OTcsMTAgKzM5OTcsMTAgQEAgdm9pZCBS
ZW5kZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbEhlaWdodFJlcGxhY2VkKExvZ2ljYWxF
eHRlbnRDb21wdXRlZFZhbHUKICAgICAvLyB0aGUgbnVtYmVycyBjb3JyZXNwb25kIHRvIG51bWJl
cnMgaW4gc3BlYykKIAogICAgIC8vIFdlIGRvbid0IHVzZSBjb250YWluaW5nQmxvY2soKSwgc2lu
Y2Ugd2UgbWF5IGJlIHBvc2l0aW9uZWQgYnkgYW4gZW5jbG9zaW5nIHJlbHBvc2l0aW9uZWQgaW5s
aW5lLgotICAgIGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiBjb250YWluZXJCbG9jayA9IHRv
UmVuZGVyQm94TW9kZWxPYmplY3QoY29udGFpbmVyKCkpOworICAgIGNvbnN0IFJlbmRlckJveE1v
ZGVsT2JqZWN0KiBjb250YWluZXJCbG9jayA9IGRvd25jYXN0PFJlbmRlckJveE1vZGVsT2JqZWN0
Pihjb250YWluZXIoKSk7CiAKICAgICBjb25zdCBMYXlvdXRVbml0IGNvbnRhaW5lckxvZ2ljYWxI
ZWlnaHQgPSBjb250YWluaW5nQmxvY2tMb2dpY2FsSGVpZ2h0Rm9yUG9zaXRpb25lZChjb250YWlu
ZXJCbG9jayk7Ci0gICAgY29uc3QgTGF5b3V0VW5pdCBjb250YWluZXJSZWxhdGl2ZUxvZ2ljYWxX
aWR0aCA9IGNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxXaWR0aEZvclBvc2l0aW9uZWQoY29udGFpbmVy
QmxvY2ssIDAsIGZhbHNlKTsKKyAgICBjb25zdCBMYXlvdXRVbml0IGNvbnRhaW5lclJlbGF0aXZl
TG9naWNhbFdpZHRoID0gY29udGFpbmluZ0Jsb2NrTG9naWNhbFdpZHRoRm9yUG9zaXRpb25lZChj
b250YWluZXJCbG9jaywgbnVsbHB0ciwgZmFsc2UpOwogCiAgICAgLy8gVmFyaWFibGVzIHRvIHNv
bHZlLgogICAgIExlbmd0aCBtYXJnaW5CZWZvcmUgPSBzdHlsZSgpLm1hcmdpbkJlZm9yZSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaAppbmRl
eCA3MWI5OTNlYmZiZmYwOGY4NjQwYTMwNWJmMzMwNzJhYWQxZjc0NTJkLi4wM2FmODYxOTVkYmVk
Yzc1NjhkMmE4MGE4OTc1NjQwNDhlOWM2OGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaApAQCAtMzM5LDggKzMzOSw2IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBwaXhlbFNuYXBCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeUZvclBhaW50aW5nKEJh
Y2tncm91bmRJbWFnZUdlb21ldHJ5JikgY29uc3Q7CiB9OwogCi1SRU5ERVJfT0JKRUNUX1RZUEVf
Q0FTVFMoUmVuZGVyQm94TW9kZWxPYmplY3QsIGlzQm94TW9kZWxPYmplY3QoKSkKLQogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1JFTkRFUl9PQkpFQ1Qo
UmVuZGVyQm94TW9kZWxPYmplY3QsIGlzQm94TW9kZWxPYmplY3QoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmNwcAppbmRleCA4ZDlhMjczMGI4NGE2Mzlh
ZGJlMWVjMmI2ZmMyYjJkNGMwNGM0OGU0Li5mYTRhZWZlNWZiZWM5ZmQzMDZjODdmYTdiMjA4Njcz
YTI1MGYzOWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxv
d1RocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJl
YWQuY3BwCkBAIC00MzUsNyArNDM1LDcgQEAgTGF5b3V0UG9pbnQgUmVuZGVyRmxvd1RocmVhZDo6
YWRqdXN0ZWRQb3NpdGlvblJlbGF0aXZlVG9PZmZzZXRQYXJlbnQoY29uc3QgUmVuZGUKICAgICBS
ZW5kZXJSZWdpb24qIHN0YXJ0UmVnaW9uID0gcmVnaW9uQXRCbG9ja09mZnNldChvYmpDb250YWlu
aW5nQmxvY2ssIHJlZmVyZW5jZVBvaW50LnkoKSk7CiAgICAgaWYgKHN0YXJ0UmVnaW9uKSB7CiAg
ICAgICAgIC8vIFRha2UgaW50byBhY2NvdW50IHRoZSBvZmZzZXQgY29vcmRpbmF0ZXMgb2YgdGhl
IHJlZ2lvbi4KLSAgICAgICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIHN0YXJ0UmVnaW9uQm94ID0g
c3RhcnRSZWdpb24tPmlzUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQoKSA/IHRvUmVuZGVyQm94TW9k
ZWxPYmplY3Qoc3RhcnRSZWdpb24tPnBhcmVudCgpKSA6IHN0YXJ0UmVnaW9uOworICAgICAgICBS
ZW5kZXJCb3hNb2RlbE9iamVjdCogc3RhcnRSZWdpb25Cb3ggPSBpczxSZW5kZXJOYW1lZEZsb3dG
cmFnbWVudD4oKnN0YXJ0UmVnaW9uKSA/IGRvd25jYXN0PFJlbmRlckJveE1vZGVsT2JqZWN0Pihz
dGFydFJlZ2lvbi0+cGFyZW50KCkpIDogc3RhcnRSZWdpb247CiAgICAgICAgIFJlbmRlckJveE1v
ZGVsT2JqZWN0KiBjdXJyT2JqZWN0ID0gc3RhcnRSZWdpb25Cb3g7CiAgICAgICAgIFJlbmRlckJv
eE1vZGVsT2JqZWN0KiBjdXJyT2Zmc2V0UGFyZW50OwogICAgICAgICB3aGlsZSAoKGN1cnJPZmZz
ZXRQYXJlbnQgPSBjdXJyT2JqZWN0LT5vZmZzZXRQYXJlbnQoKSkpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKaW5kZXggMWZkMzZhYWE5NGM1MmM3NTU3NjkwMjc3
ZTlmNzFhNmRjN2JiZmM5NC4uOWM3ZTQ1YmMwYjc4Y2Y3OTJmOTQxODE1NGY0NTY1ZGMwZmVlNmIz
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKQEAgLTM2OCwx
MCArMzY4LDEwIEBAIHZvaWQgUmVuZGVySW5saW5lOjpzcGxpdElubGluZXMoUmVuZGVyQmxvY2sq
IGZyb21CbG9jaywgUmVuZGVyQmxvY2sqIHRvQmxvY2ssCiAKICAgICAvLyBOb3cgdGFrZSBhbGwg
b2YgdGhlIGNoaWxkcmVuIGZyb20gYmVmb3JlQ2hpbGQgdG8gdGhlIGVuZCBhbmQgcmVtb3ZlCiAg
ICAgLy8gdGhlbSBmcm9tIHx0aGlzfCBhbmQgcGxhY2UgdGhlbSBpbiB0aGUgY2xvbmUuCi0gICAg
UmVuZGVyT2JqZWN0KiBvID0gYmVmb3JlQ2hpbGQ7Ci0gICAgd2hpbGUgKG8pIHsKLSAgICAgICAg
UmVuZGVyT2JqZWN0KiB0bXAgPSBvOwotICAgICAgICBvID0gdG1wLT5uZXh0U2libGluZygpOwor
ICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBiZWZvcmVDaGlsZDsKKyAgICB3aGlsZSAocmVu
ZGVyZXIpIHsKKyAgICAgICAgUmVuZGVyT2JqZWN0KiB0bXAgPSByZW5kZXJlcjsKKyAgICAgICAg
cmVuZGVyZXIgPSB0bXAtPm5leHRTaWJsaW5nKCk7CiAgICAgICAgIHJlbW92ZUNoaWxkSW50ZXJu
YWwoKnRtcCwgTm90aWZ5Q2hpbGRyZW4pOwogICAgICAgICBjbG9uZUlubGluZS0+YWRkQ2hpbGRJ
Z25vcmluZ0NvbnRpbnVhdGlvbih0bXApOwogICAgICAgICB0bXAtPnNldE5lZWRzTGF5b3V0QW5k
UHJlZldpZHRoc1JlY2FsYygpOwpAQCAtMzgzLDggKzM4Myw4IEBAIHZvaWQgUmVuZGVySW5saW5l
OjpzcGxpdElubGluZXMoUmVuZGVyQmxvY2sqIGZyb21CbG9jaywgUmVuZGVyQmxvY2sqIHRvQmxv
Y2ssCiAgICAgLy8gV2UgaGF2ZSBiZWVuIHJlcGFyZW50ZWQgYW5kIGFyZSBub3cgdW5kZXIgdGhl
IGZyb21CbG9jay4gIFdlIG5lZWQKICAgICAvLyB0byB3YWxrIHVwIG91ciBpbmxpbmUgcGFyZW50
IGNoYWluIHVudGlsIHdlIGhpdCB0aGUgY29udGFpbmluZyBibG9jay4KICAgICAvLyBPbmNlIHdl
IGhpdCB0aGUgY29udGFpbmluZyBibG9jayB3ZSdyZSBkb25lLgotICAgIFJlbmRlckJveE1vZGVs
T2JqZWN0KiBjdXJyID0gdG9SZW5kZXJCb3hNb2RlbE9iamVjdChwYXJlbnQoKSk7Ci0gICAgUmVu
ZGVyQm94TW9kZWxPYmplY3QqIGN1cnJDaGlsZCA9IHRoaXM7CisgICAgUmVuZGVyQm94TW9kZWxP
YmplY3QqIGN1cnJlbnQgPSBkb3duY2FzdDxSZW5kZXJCb3hNb2RlbE9iamVjdD4ocGFyZW50KCkp
OworICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiBjdXJyZW50Q2hpbGQgPSB0aGlzOwogICAgIAog
ICAgIC8vIEZJWE1FOiBCZWNhdXNlIHNwbGl0dGluZyBpcyBPKG5eMikgYXMgdGFncyBuZXN0IHBh
dGhvbG9naWNhbGx5LCB3ZSBjYXAgdGhlIGRlcHRoIGF0IHdoaWNoIHdlJ3JlIHdpbGxpbmcgdG8g
Y2xvbmUuCiAgICAgLy8gVGhlcmUgd2lsbCBldmVudHVhbGx5IGJlIGEgYmV0dGVyIGFwcHJvYWNo
IHRvIHRoaXMgcHJvYmxlbSB0aGF0IHdpbGwgbGV0IHVzIG5lc3QgdG8gYSBtdWNoCkBAIC0zOTIs
NDkgKzM5Miw0OCBAQCB2b2lkIFJlbmRlcklubGluZTo6c3BsaXRJbmxpbmVzKFJlbmRlckJsb2Nr
KiBmcm9tQmxvY2ssIFJlbmRlckJsb2NrKiB0b0Jsb2NrLAogICAgIC8vIGluY29ycmVjdCByZW5k
ZXJpbmcsIGJ1dCB0aGUgYWx0ZXJuYXRpdmUgaXMgdG8gaGFuZyBmb3JldmVyLgogICAgIHVuc2ln
bmVkIHNwbGl0RGVwdGggPSAxOwogICAgIGNvbnN0IHVuc2lnbmVkIGNNYXhTcGxpdERlcHRoID0g
MjAwOyAKLSAgICB3aGlsZSAoY3VyciAmJiBjdXJyICE9IGZyb21CbG9jaykgewotICAgICAgICBB
U1NFUlQoY3Vyci0+aXNSZW5kZXJJbmxpbmUoKSk7CisgICAgd2hpbGUgKGN1cnJlbnQgJiYgY3Vy
cmVudCAhPSBmcm9tQmxvY2spIHsKICAgICAgICAgaWYgKHNwbGl0RGVwdGggPCBjTWF4U3BsaXRE
ZXB0aCkgewogICAgICAgICAgICAgLy8gQ3JlYXRlIGEgbmV3IGNsb25lLgogICAgICAgICAgICAg
UmVuZGVyUHRyPFJlbmRlcklubGluZT4gY2xvbmVDaGlsZCA9IFdURjo6bW92ZShjbG9uZUlubGlu
ZSk7Ci0gICAgICAgICAgICBjbG9uZUlubGluZSA9IHRvUmVuZGVySW5saW5lKGN1cnIpLT5jbG9u
ZSgpOworICAgICAgICAgICAgY2xvbmVJbmxpbmUgPSBkb3duY2FzdDxSZW5kZXJJbmxpbmU+KCpj
dXJyZW50KS5jbG9uZSgpOwogCiAgICAgICAgICAgICAvLyBJbnNlcnQgb3VyIGNoaWxkIGNsb25l
IGFzIHRoZSBmaXJzdCBjaGlsZC4KICAgICAgICAgICAgIGNsb25lSW5saW5lLT5hZGRDaGlsZEln
bm9yaW5nQ29udGludWF0aW9uKGNsb25lQ2hpbGQubGVha1B0cigpKTsKIAogICAgICAgICAgICAg
Ly8gSG9vayB0aGUgY2xvbmUgdXAgYXMgYSBjb250aW51YXRpb24gb2YgfGN1cnJ8LgotICAgICAg
ICAgICAgUmVuZGVySW5saW5lKiBpbmxpbmVDdXJyID0gdG9SZW5kZXJJbmxpbmUoY3Vycik7Ci0g
ICAgICAgICAgICBvbGRDb250ID0gaW5saW5lQ3Vyci0+Y29udGludWF0aW9uKCk7Ci0gICAgICAg
ICAgICBpbmxpbmVDdXJyLT5zZXRDb250aW51YXRpb24oY2xvbmVJbmxpbmUuZ2V0KCkpOworICAg
ICAgICAgICAgUmVuZGVySW5saW5lJiBjdXJyZW50SW5saW5lID0gZG93bmNhc3Q8UmVuZGVySW5s
aW5lPigqY3VycmVudCk7CisgICAgICAgICAgICBvbGRDb250ID0gY3VycmVudElubGluZS5jb250
aW51YXRpb24oKTsKKyAgICAgICAgICAgIGN1cnJlbnRJbmxpbmUuc2V0Q29udGludWF0aW9uKGNs
b25lSW5saW5lLmdldCgpKTsKICAgICAgICAgICAgIGNsb25lSW5saW5lLT5zZXRDb250aW51YXRp
b24ob2xkQ29udCk7CiAKICAgICAgICAgICAgIC8vIE5vdyB3ZSBuZWVkIHRvIHRha2UgYWxsIG9m
IHRoZSBjaGlsZHJlbiBzdGFydGluZyBmcm9tIHRoZSBmaXJzdCBjaGlsZAotICAgICAgICAgICAg
Ly8gKmFmdGVyKiBjdXJyQ2hpbGQgYW5kIGFwcGVuZCB0aGVtIGFsbCB0byB0aGUgY2xvbmUuCi0g
ICAgICAgICAgICBvID0gY3VyckNoaWxkLT5uZXh0U2libGluZygpOwotICAgICAgICAgICAgd2hp
bGUgKG8pIHsKLSAgICAgICAgICAgICAgICBSZW5kZXJPYmplY3QqIHRtcCA9IG87Ci0gICAgICAg
ICAgICAgICAgbyA9IHRtcC0+bmV4dFNpYmxpbmcoKTsKLSAgICAgICAgICAgICAgICBpbmxpbmVD
dXJyLT5yZW1vdmVDaGlsZEludGVybmFsKCp0bXAsIE5vdGlmeUNoaWxkcmVuKTsKKyAgICAgICAg
ICAgIC8vICphZnRlciogY3VycmVudENoaWxkIGFuZCBhcHBlbmQgdGhlbSBhbGwgdG8gdGhlIGNs
b25lLgorICAgICAgICAgICAgcmVuZGVyZXIgPSBjdXJyZW50Q2hpbGQtPm5leHRTaWJsaW5nKCk7
CisgICAgICAgICAgICB3aGlsZSAocmVuZGVyZXIpIHsKKyAgICAgICAgICAgICAgICBSZW5kZXJP
YmplY3QqIHRtcCA9IHJlbmRlcmVyOworICAgICAgICAgICAgICAgIHJlbmRlcmVyID0gdG1wLT5u
ZXh0U2libGluZygpOworICAgICAgICAgICAgICAgIGN1cnJlbnRJbmxpbmUucmVtb3ZlQ2hpbGRJ
bnRlcm5hbCgqdG1wLCBOb3RpZnlDaGlsZHJlbik7CiAgICAgICAgICAgICAgICAgY2xvbmVJbmxp
bmUtPmFkZENoaWxkSWdub3JpbmdDb250aW51YXRpb24odG1wKTsKICAgICAgICAgICAgICAgICB0
bXAtPnNldE5lZWRzTGF5b3V0QW5kUHJlZldpZHRoc1JlY2FsYygpOwogICAgICAgICAgICAgfQog
ICAgICAgICB9CiAgICAgICAgIAogICAgICAgICAvLyBLZWVwIHdhbGtpbmcgdXAgdGhlIGNoYWlu
LgotICAgICAgICBjdXJyQ2hpbGQgPSBjdXJyOwotICAgICAgICBjdXJyID0gdG9SZW5kZXJCb3hN
b2RlbE9iamVjdChjdXJyLT5wYXJlbnQoKSk7Ci0gICAgICAgIHNwbGl0RGVwdGgrKzsKKyAgICAg
ICAgY3VycmVudENoaWxkID0gY3VycmVudDsKKyAgICAgICAgY3VycmVudCA9IGRvd25jYXN0PFJl
bmRlckJveE1vZGVsT2JqZWN0PihjdXJyZW50LT5wYXJlbnQoKSk7CisgICAgICAgICsrc3BsaXRE
ZXB0aDsKICAgICB9CiAKICAgICAvLyBOb3cgd2UgYXJlIGF0IHRoZSBibG9jayBsZXZlbC4gV2Ug
bmVlZCB0byBwdXQgdGhlIGNsb25lIGludG8gdGhlIHRvQmxvY2suCiAgICAgdG9CbG9jay0+aW5z
ZXJ0Q2hpbGRJbnRlcm5hbChjbG9uZUlubGluZS5sZWFrUHRyKCksIG51bGxwdHIsIE5vdGlmeUNo
aWxkcmVuKTsKIAotICAgIC8vIE5vdyB0YWtlIGFsbCB0aGUgY2hpbGRyZW4gYWZ0ZXIgY3VyckNo
aWxkIGFuZCByZW1vdmUgdGhlbSBmcm9tIHRoZSBmcm9tQmxvY2sKKyAgICAvLyBOb3cgdGFrZSBh
bGwgdGhlIGNoaWxkcmVuIGFmdGVyIGN1cnJlbnRDaGlsZCBhbmQgcmVtb3ZlIHRoZW0gZnJvbSB0
aGUgZnJvbUJsb2NrCiAgICAgLy8gYW5kIHB1dCB0aGVtIGluIHRoZSB0b0Jsb2NrLgotICAgIG8g
PSBjdXJyQ2hpbGQtPm5leHRTaWJsaW5nKCk7Ci0gICAgd2hpbGUgKG8pIHsKLSAgICAgICAgUmVu
ZGVyT2JqZWN0KiB0bXAgPSBvOwotICAgICAgICBvID0gdG1wLT5uZXh0U2libGluZygpOworICAg
IHJlbmRlcmVyID0gY3VycmVudENoaWxkLT5uZXh0U2libGluZygpOworICAgIHdoaWxlIChyZW5k
ZXJlcikgeworICAgICAgICBSZW5kZXJPYmplY3QqIHRtcCA9IHJlbmRlcmVyOworICAgICAgICBy
ZW5kZXJlciA9IHRtcC0+bmV4dFNpYmxpbmcoKTsKICAgICAgICAgZnJvbUJsb2NrLT5yZW1vdmVD
aGlsZEludGVybmFsKCp0bXAsIE5vdGlmeUNoaWxkcmVuKTsKICAgICAgICAgdG9CbG9jay0+aW5z
ZXJ0Q2hpbGRJbnRlcm5hbCh0bXAsIG51bGxwdHIsIE5vdGlmeUNoaWxkcmVuKTsKICAgICB9CkBA
IC01MDgsMTQgKzUwNywxMyBAQCB2b2lkIFJlbmRlcklubGluZTo6c3BsaXRGbG93KFJlbmRlck9i
amVjdCogYmVmb3JlQ2hpbGQsIFJlbmRlckJsb2NrKiBuZXdCbG9ja0JveAogdm9pZCBSZW5kZXJJ
bmxpbmU6OmFkZENoaWxkVG9Db250aW51YXRpb24oUmVuZGVyT2JqZWN0KiBuZXdDaGlsZCwgUmVu
ZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCkKIHsKICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogZmxv
dyA9IGNvbnRpbnVhdGlvbkJlZm9yZShiZWZvcmVDaGlsZCk7Ci0gICAgQVNTRVJUKCFiZWZvcmVD
aGlsZCB8fCBiZWZvcmVDaGlsZC0+cGFyZW50KCktPmlzUmVuZGVyQmxvY2soKSB8fCBiZWZvcmVD
aGlsZC0+cGFyZW50KCktPmlzUmVuZGVySW5saW5lKCkpOwotICAgIFJlbmRlckJveE1vZGVsT2Jq
ZWN0KiBiZWZvcmVDaGlsZFBhcmVudCA9IDA7CisgICAgQVNTRVJUKCFiZWZvcmVDaGlsZCB8fCBp
czxSZW5kZXJCbG9jaz4oKmJlZm9yZUNoaWxkLT5wYXJlbnQoKSkgfHwgaXM8UmVuZGVySW5saW5l
PigqYmVmb3JlQ2hpbGQtPnBhcmVudCgpKSk7CisgICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIGJl
Zm9yZUNoaWxkUGFyZW50ID0gbnVsbHB0cjsKICAgICBpZiAoYmVmb3JlQ2hpbGQpCi0gICAgICAg
IGJlZm9yZUNoaWxkUGFyZW50ID0gdG9SZW5kZXJCb3hNb2RlbE9iamVjdChiZWZvcmVDaGlsZC0+
cGFyZW50KCkpOworICAgICAgICBiZWZvcmVDaGlsZFBhcmVudCA9IGRvd25jYXN0PFJlbmRlckJv
eE1vZGVsT2JqZWN0PihiZWZvcmVDaGlsZC0+cGFyZW50KCkpOwogICAgIGVsc2UgewotICAgICAg
ICBSZW5kZXJCb3hNb2RlbE9iamVjdCogY29udCA9IG5leHRDb250aW51YXRpb24oZmxvdyk7Ci0g
ICAgICAgIGlmIChjb250KQotICAgICAgICAgICAgYmVmb3JlQ2hpbGRQYXJlbnQgPSBjb250Owor
ICAgICAgICBpZiAoUmVuZGVyQm94TW9kZWxPYmplY3QqIGNvbnRpbnVhdGlvbiA9IG5leHRDb250
aW51YXRpb24oZmxvdykpCisgICAgICAgICAgICBiZWZvcmVDaGlsZFBhcmVudCA9IGNvbnRpbnVh
dGlvbjsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgYmVmb3JlQ2hpbGRQYXJlbnQgPSBmbG93
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IGM3
YjBjNzU4ZTZkOGE4MWI4ZWYzYmY4NjA5MTRlYTNkYjYzMDIzYTAuLjc2OWMyOWVkYTdmZTJhNmJk
ZjMwMzNlMzZmODMyOTRjMjM5YzM3M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyLmNwcApAQCAtMTI1MSw3ICsxMjUxLDcgQEAgYm9vbCBSZW5kZXJMYXllcjo6dXBkYXRl
TGF5ZXJQb3NpdGlvbigpCiAgICAgCiAgICAgYm9vbCBwb3NpdGlvbk9yT2Zmc2V0Q2hhbmdlZCA9
IGZhbHNlOwogICAgIGlmIChyZW5kZXJlcigpLmlzSW5GbG93UG9zaXRpb25lZCgpKSB7Ci0gICAg
ICAgIExheW91dFNpemUgbmV3T2Zmc2V0ID0gdG9SZW5kZXJCb3hNb2RlbE9iamVjdChyZW5kZXJl
cigpKS5vZmZzZXRGb3JJbkZsb3dQb3NpdGlvbigpOworICAgICAgICBMYXlvdXRTaXplIG5ld09m
ZnNldCA9IGRvd25jYXN0PFJlbmRlckJveE1vZGVsT2JqZWN0PihyZW5kZXJlcigpKS5vZmZzZXRG
b3JJbkZsb3dQb3NpdGlvbigpOwogICAgICAgICBwb3NpdGlvbk9yT2Zmc2V0Q2hhbmdlZCA9IG5l
d09mZnNldCAhPSBtX29mZnNldEZvckluRmxvd1Bvc2l0aW9uOwogICAgICAgICBtX29mZnNldEZv
ckluRmxvd1Bvc2l0aW9uID0gbmV3T2Zmc2V0OwogICAgICAgICBsb2NhbFBvaW50Lm1vdmUobV9v
ZmZzZXRGb3JJbkZsb3dQb3NpdGlvbik7CkBAIC01NDA0LDEwICs1NDA0LDEwIEBAIHZvaWQgUmVu
ZGVyTGF5ZXI6OmNhbGN1bGF0ZVJlY3RzKGNvbnN0IENsaXBSZWN0c0NvbnRleHQmIGNsaXBSZWN0
c0NvbnRleHQsIGNvbnN0CiAgICAgZm9yZWdyb3VuZFJlY3QgPSBiYWNrZ3JvdW5kUmVjdDsKICAg
ICBvdXRsaW5lUmVjdCA9IGJhY2tncm91bmRSZWN0OwogCi0gICAgUmVuZGVyRmxvd1RocmVhZCog
Zmxvd1RocmVhZCA9IG5hbWVkRmxvd0ZyYWdtZW50ID8gbmFtZWRGbG93RnJhZ21lbnQtPmZsb3dU
aHJlYWQoKSA6IDA7CisgICAgUmVuZGVyRmxvd1RocmVhZCogZmxvd1RocmVhZCA9IG5hbWVkRmxv
d0ZyYWdtZW50ID8gbmFtZWRGbG93RnJhZ21lbnQtPmZsb3dUaHJlYWQoKSA6IG51bGxwdHI7CiAg
ICAgaWYgKGlzU2VsZlBhaW50aW5nTGF5ZXIoKSAmJiBmbG93VGhyZWFkICYmICFyZW5kZXJlcigp
LmlzSW5GbG93UmVuZGVyRmxvd1RocmVhZCgpKSB7CiAgICAgICAgIEFTU0VSVChuYW1lZEZsb3dG
cmFnbWVudC0+aXNWYWxpZCgpKTsKLSAgICAgICAgY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3Qm
IGJveE1vZGVsT2JqZWN0ID0gdG9SZW5kZXJCb3hNb2RlbE9iamVjdChyZW5kZXJlcigpKTsKKyAg
ICAgICAgY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QmIGJveE1vZGVsT2JqZWN0ID0gZG93bmNh
c3Q8UmVuZGVyQm94TW9kZWxPYmplY3Q+KHJlbmRlcmVyKCkpOwogICAgICAgICBMYXlvdXRSZWN0
IGxheWVyQm91bmRzV2l0aFZpc3VhbE92ZXJmbG93ID0gbmFtZWRGbG93RnJhZ21lbnQtPnZpc3Vh
bE92ZXJmbG93UmVjdEZvckJveCgmYm94TW9kZWxPYmplY3QpOwogCiAgICAgICAgIC8vIExheWVy
cyBhcmUgaW4gcGh5c2ljYWwgY29vcmRpbmF0ZXMgc28gdGhlIG9yaWdpbiBtdXN0IGJlIG1vdmVk
IHRvIHRoZSBwaHlzaWNhbCB0b3AtbGVmdCBvZiB0aGUgZmxvd3RocmVhZC4KQEAgLTU1OTMsNyAr
NTU5Myw3IEBAIGJvb2wgUmVuZGVyTGF5ZXI6OmludGVyc2VjdHNEYW1hZ2VSZWN0KGNvbnN0IExh
eW91dFJlY3QmIGxheWVyQm91bmRzLCBjb25zdCBMYXlvCiAgICAgLy8gdG8gdGhlIGZsb3cgdGhy
ZWFkLCBub3QgdGhlIGxhc3QgcmVnaW9uIChpbiB3aGljaCBpdCB3aWxsIGVuZCB1cCBiZWNhdXNl
IG9mIGJvdHRvbTowcHgpCiAgICAgaWYgKG5hbWVkRmxvd0ZyYWdtZW50ICYmIHJlbmRlcmVyKCku
Zmxvd1RocmVhZENvbnRhaW5pbmdCbG9jaygpKSB7CiAgICAgICAgIExheW91dFJlY3QgYiA9IGxh
eWVyQm91bmRzOwotICAgICAgICBiLm1vdmVCeShuYW1lZEZsb3dGcmFnbWVudC0+dmlzdWFsT3Zl
cmZsb3dSZWN0Rm9yQm94KHRvUmVuZGVyQm94TW9kZWxPYmplY3QoJnJlbmRlcmVyKCkpKS5sb2Nh
dGlvbigpKTsKKyAgICAgICAgYi5tb3ZlQnkobmFtZWRGbG93RnJhZ21lbnQtPnZpc3VhbE92ZXJm
bG93UmVjdEZvckJveChkb3duY2FzdDxSZW5kZXJCb3hNb2RlbE9iamVjdD4oJnJlbmRlcmVyKCkp
KS5sb2NhdGlvbigpKTsKICAgICAgICAgYi5pbmZsYXRlKHJlbmRlcmVyKCkudmlldygpLm1heGlt
YWxPdXRsaW5lU2l6ZSgpKTsKICAgICAgICAgaWYgKGIuaW50ZXJzZWN0cyhkYW1hZ2VSZWN0KSkK
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXJCYWNraW5nLmNwcAppbmRleCBhYzA0MDBhNDhmNWFjY2IzYmM1Mjc3NDg0NjA2
NDVkZTI2ZTgyNDM1Li5hYjlmZjAwMmQ2Y2E0OTE5ZThlNTNmMzkxYjQ4MzM1MzIxNjdlNjY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApA
QCAtOTg4LDcgKzk4OCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjphZGp1c3RBbmNlc3Rv
ckNvbXBvc2l0aW5nQm91bmRzRm9yRmxvd1RocmVhZChMYXlvdXRSZWN0CiAgICAgICAgIH0KIAog
ICAgICAgICAvLyBNb3ZlIHRoZSBhbmNlc3RvciBwb3NpdGlvbiBhdCB0aGUgdG9wIG9mIHRoZSBy
ZWdpb24gd2hlcmUgdGhlIGNvbXBvc2l0ZWQgbGF5ZXIgaXMgZ29pbmcgdG8gZGlzcGxheS4KLSAg
ICAgICAgUmVuZGVyRmxvd1RocmVhZCYgZmxvd1RocmVhZCA9IHRvUmVuZGVyRmxvd1RocmVhZChm
bG93VGhyZWFkTGF5ZXItPnJlbmRlcmVyKCkpOworICAgICAgICBSZW5kZXJGbG93VGhyZWFkJiBm
bG93VGhyZWFkID0gZG93bmNhc3Q8UmVuZGVyRmxvd1RocmVhZD4oZmxvd1RocmVhZExheWVyLT5y
ZW5kZXJlcigpKTsKICAgICAgICAgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQqIHBhcmVudFJlZ2lv
biA9IGZsb3dUaHJlYWQuY2FjaGVkUmVnaW9uRm9yQ29tcG9zaXRlZExheWVyKG1fb3duaW5nTGF5
ZXIpOwogICAgICAgICBpZiAoIXBhcmVudFJlZ2lvbikKICAgICAgICAgICAgIHJldHVybjsKQEAg
LTk5Niw3ICs5OTYsNyBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6YWRqdXN0QW5jZXN0b3JD
b21wb3NpdGluZ0JvdW5kc0ZvckZsb3dUaHJlYWQoTGF5b3V0UmVjdAogICAgICAgICBJbnRQb2lu
dCBmbG93RGVsdGE7CiAgICAgICAgIG1fb3duaW5nTGF5ZXIuY29udmVydFRvUGl4ZWxTbmFwcGVk
TGF5ZXJDb29yZHMoZmxvd1RocmVhZExheWVyLCBmbG93RGVsdGEpOwogICAgICAgICBwYXJlbnRS
ZWdpb24tPmFkanVzdFJlZ2lvbkJvdW5kc0Zyb21GbG93VGhyZWFkUG9ydGlvblJlY3QoYW5jZXN0
b3JDb21wb3NpdGluZ0JvdW5kcyk7Ci0gICAgICAgIFJlbmRlckJveE1vZGVsT2JqZWN0JiBsYXll
ck93bmVyID0gdG9SZW5kZXJCb3hNb2RlbE9iamVjdChwYXJlbnRSZWdpb24tPmxheWVyT3duZXIo
KSk7CisgICAgICAgIFJlbmRlckJveE1vZGVsT2JqZWN0JiBsYXllck93bmVyID0gZG93bmNhc3Q8
UmVuZGVyQm94TW9kZWxPYmplY3Q+KHBhcmVudFJlZ2lvbi0+bGF5ZXJPd25lcigpKTsKICAgICAg
ICAgUmVuZGVyTGF5ZXJCYWNraW5nKiBsYXllck93bmVyQmFja2luZyA9IGxheWVyT3duZXIubGF5
ZXIoKS0+YmFja2luZygpOwogICAgICAgICBpZiAoIWxheWVyT3duZXJCYWNraW5nKQogICAgICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJDb21wb3NpdG9yLmNwcAppbmRleCA4MjA0YmUzZTI5MWVkNWJlYjY2ZjZiNWQ0YWQ2M2ZkM2U1
ZmNlYWFlLi5mYTkwMjc2NmVjOTdjM2I1MTgyMjI0ZGE5ZDNjYjU2ZTBmZTUyMzgxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcApA
QCAtMjU1OCw3ICsyNTU4LDcgQEAgYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVz
Q29tcG9zaXRpbmdGb3JBbmltYXRpb24oUmVuZGVyTGF5ZXJNb2RlbE9iamUKIAogYm9vbCBSZW5k
ZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdGb3JJbmRpcmVjdFJlYXNvbihS
ZW5kZXJMYXllck1vZGVsT2JqZWN0JiByZW5kZXJlciwgYm9vbCBoYXNDb21wb3NpdGVkRGVzY2Vu
ZGFudHMsIGJvb2wgaGFzM0RUcmFuc2Zvcm1lZERlc2NlbmRhbnRzLCBSZW5kZXJMYXllcjo6SW5k
aXJlY3RDb21wb3NpdGluZ1JlYXNvbiYgcmVhc29uKSBjb25zdAogewotICAgIFJlbmRlckxheWVy
JiBsYXllciA9ICp0b1JlbmRlckJveE1vZGVsT2JqZWN0KHJlbmRlcmVyKS5sYXllcigpOworICAg
IFJlbmRlckxheWVyJiBsYXllciA9ICpkb3duY2FzdDxSZW5kZXJCb3hNb2RlbE9iamVjdD4ocmVu
ZGVyZXIpLmxheWVyKCk7CiAKICAgICAvLyBXaGVuIGEgbGF5ZXIgaGFzIGNvbXBvc2l0ZWQgZGVz
Y2VuZGFudHMsIHNvbWUgZWZmZWN0cywgbGlrZSAyZCB0cmFuc2Zvcm1zLCBmaWx0ZXJzLCBtYXNr
cyBldGMgbXVzdCBiZSBpbXBsZW1lbnRlZAogICAgIC8vIHZpYSBjb21wb3NpdGluZyBzbyB0aGF0
IHRoZXkgYWxzbyBhcHBseSB0byB0aG9zZSBjb21wb3NpdGVkIGRlc2NlbmRhbnRzLgpAQCAtMzY1
Myw3ICszNjUzLDcgQEAgU3RpY2t5UG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzIFJlbmRlckxh
eWVyQ29tcG9zaXRvcjo6Y29tcHV0ZVN0aWNreVZpZXdwb3J0Q28KICAgICBBU1NFUlQoIWxheWVy
LmVuY2xvc2luZ092ZXJmbG93Q2xpcExheWVyKEV4Y2x1ZGVTZWxmKSk7CiAjZW5kaWYKIAotICAg
IFJlbmRlckJveE1vZGVsT2JqZWN0JiByZW5kZXJlciA9IHRvUmVuZGVyQm94TW9kZWxPYmplY3Qo
bGF5ZXIucmVuZGVyZXIoKSk7CisgICAgUmVuZGVyQm94TW9kZWxPYmplY3QmIHJlbmRlcmVyID0g
ZG93bmNhc3Q8UmVuZGVyQm94TW9kZWxPYmplY3Q+KGxheWVyLnJlbmRlcmVyKCkpOwogCiAgICAg
U3RpY2t5UG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzIGNvbnN0cmFpbnRzOwogICAgIHJlbmRl
cmVyLmNvbXB1dGVTdGlja3lQb3NpdGlvbkNvbnN0cmFpbnRzKGNvbnN0cmFpbnRzLCByZW5kZXJl
ci5jb25zdHJhaW5pbmdSZWN0Rm9yU3RpY2t5UG9zaXRpb24oKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCmluZGV4IDZhZDY5ZjQ4NGQ5M2MyOGQzN2QxNGJmZGI5
NTA3YjM0MTRjODQ4NGQuLmVkODk1ZTQwN2VjMzU3OTIyZmRkOTI2OWMzZTMyNTE3MmE2NWI1Yzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCkBAIC0yMTI0LDcg
KzIxMjQsNyBAQCB2b2lkIFJlbmRlck9iamVjdDo6ZGVzdHJveSgpCiB7CiAjaWYgUExBVEZPUk0o
SU9TKQogICAgIGlmIChoYXNMYXllcigpKQotICAgICAgICB0b1JlbmRlckJveE1vZGVsT2JqZWN0
KHRoaXMpLT5sYXllcigpLT53aWxsQmVEZXN0cm95ZWQoKTsKKyAgICAgICAgZG93bmNhc3Q8UmVu
ZGVyQm94TW9kZWxPYmplY3Q+KCp0aGlzKS5sYXllcigpLT53aWxsQmVEZXN0cm95ZWQoKTsKICNl
bmRpZgogCiAgICAgd2lsbEJlRGVzdHJveWVkKCk7CkBAIC0yNDI0LDcgKzI0MjQsNyBAQCBSZW5k
ZXJCb3hNb2RlbE9iamVjdCogUmVuZGVyT2JqZWN0OjpvZmZzZXRQYXJlbnQoKSBjb25zdAogICAg
IC8vIEEgaXMgdGhlIEhUTUwgYm9keSBlbGVtZW50LgogICAgIC8vIFRoZSBjb21wdXRlZCB2YWx1
ZSBvZiB0aGUgcG9zaXRpb24gcHJvcGVydHkgZm9yIGVsZW1lbnQgQSBpcyBmaXhlZC4KICAgICBp
ZiAoaXNSb290KCkgfHwgaXNCb2R5KCkgfHwgKGlzT3V0T2ZGbG93UG9zaXRpb25lZCgpICYmIHN0
eWxlKCkucG9zaXRpb24oKSA9PSBGaXhlZFBvc2l0aW9uKSkKLSAgICAgICAgcmV0dXJuIDA7Cisg
ICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgLy8gSWYgQSBpcyBhbiBhcmVhIEhUTUwgZWxl
bWVudCB3aGljaCBoYXMgYSBtYXAgSFRNTCBlbGVtZW50IHNvbWV3aGVyZSBpbiB0aGUgYW5jZXN0
b3IKICAgICAvLyBjaGFpbiByZXR1cm4gdGhlIG5lYXJlc3QgYW5jZXN0b3IgbWFwIEhUTUwgZWxl
bWVudCBhbmQgc3RvcCB0aGlzIGFsZ29yaXRobS4KQEAgLTI0NDAsMjQgKzI0NDAsMjQgQEAgUmVu
ZGVyQm94TW9kZWxPYmplY3QqIFJlbmRlck9iamVjdDo6b2Zmc2V0UGFyZW50KCkgY29uc3QKIAog
ICAgIGJvb2wgc2tpcFRhYmxlcyA9IGlzUG9zaXRpb25lZCgpOwogICAgIGZsb2F0IGN1cnJab29t
ID0gc3R5bGUoKS5lZmZlY3RpdmVab29tKCk7Ci0gICAgYXV0byBjdXJyID0gcGFyZW50KCk7Ci0g
ICAgd2hpbGUgKGN1cnIgJiYgKCFjdXJyLT5lbGVtZW50KCkgfHwgKCFjdXJyLT5pc1Bvc2l0aW9u
ZWQoKSAmJiAhY3Vyci0+aXNCb2R5KCkpKSAmJiAhY3Vyci0+aXNSZW5kZXJOYW1lZEZsb3dUaHJl
YWQoKSkgewotICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gY3Vyci0+ZWxlbWVudCgpOworICAg
IGF1dG8gY3VycmVudCA9IHBhcmVudCgpOworICAgIHdoaWxlIChjdXJyZW50ICYmICghY3VycmVu
dC0+ZWxlbWVudCgpIHx8ICghY3VycmVudC0+aXNQb3NpdGlvbmVkKCkgJiYgIWN1cnJlbnQtPmlz
Qm9keSgpKSkgJiYgIWlzPFJlbmRlck5hbWVkRmxvd1RocmVhZD4oKmN1cnJlbnQpKSB7CisgICAg
ICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBjdXJyZW50LT5lbGVtZW50KCk7CiAgICAgICAgIGlmICgh
c2tpcFRhYmxlcyAmJiBlbGVtZW50ICYmIChpczxIVE1MVGFibGVFbGVtZW50PigqZWxlbWVudCkg
fHwgaXM8SFRNTFRhYmxlQ2VsbEVsZW1lbnQ+KCplbGVtZW50KSkpCiAgICAgICAgICAgICBicmVh
azsKICAKLSAgICAgICAgZmxvYXQgbmV3Wm9vbSA9IGN1cnItPnN0eWxlKCkuZWZmZWN0aXZlWm9v
bSgpOworICAgICAgICBmbG9hdCBuZXdab29tID0gY3VycmVudC0+c3R5bGUoKS5lZmZlY3RpdmVa
b29tKCk7CiAgICAgICAgIGlmIChjdXJyWm9vbSAhPSBuZXdab29tKQogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGN1cnJab29tID0gbmV3Wm9vbTsKLSAgICAgICAgY3VyciA9IGN1cnItPnBh
cmVudCgpOworICAgICAgICBjdXJyZW50ID0gY3VycmVudC0+cGFyZW50KCk7CiAgICAgfQogICAg
IAogICAgIC8vIENTUyByZWdpb25zIHNwZWNpZmljYXRpb24gc2F5cyB0aGF0IHJlZ2lvbiBmbG93
cyBzaG91bGQgcmV0dXJuIHRoZSBib2R5IGVsZW1lbnQgYXMgdGhlaXIgb2Zmc2V0UGFyZW50Lgot
ICAgIGlmIChjdXJyICYmIGN1cnItPmlzUmVuZGVyTmFtZWRGbG93VGhyZWFkKCkpCi0gICAgICAg
IGN1cnIgPSBkb2N1bWVudCgpLmJvZHkoKSA/IGRvY3VtZW50KCkuYm9keSgpLT5yZW5kZXJlcigp
IDogMDsKKyAgICBpZiAoaXM8UmVuZGVyTmFtZWRGbG93VGhyZWFkPihjdXJyZW50KSkKKyAgICAg
ICAgY3VycmVudCA9IGRvY3VtZW50KCkuYm9keSgpID8gZG9jdW1lbnQoKS5ib2R5KCktPnJlbmRl
cmVyKCkgOiBudWxscHRyOwogICAgIAotICAgIHJldHVybiBjdXJyICYmIGN1cnItPmlzQm94TW9k
ZWxPYmplY3QoKSA/IHRvUmVuZGVyQm94TW9kZWxPYmplY3QoY3VycikgOiAwOworICAgIHJldHVy
biBpczxSZW5kZXJCb3hNb2RlbE9iamVjdD4oY3VycmVudCkgPyBkb3duY2FzdDxSZW5kZXJCb3hN
b2RlbE9iamVjdD4oY3VycmVudCkgOiBudWxscHRyOwogfQogCiBWaXNpYmxlUG9zaXRpb24gUmVu
ZGVyT2JqZWN0OjpjcmVhdGVWaXNpYmxlUG9zaXRpb24oaW50IG9mZnNldCwgRUFmZmluaXR5IGFm
ZmluaXR5KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxTY3JpcHRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5jcHAKaW5kZXggMWM5YzRhYjdjNDM1YjkyYTQxYzE0MWM3
ZDVkMGMzYmRkZjgyNjdlNC4uNzRjOTllMTdkNTY4NjRhYzg3MjAxMjFlYzhhNTVlZDVhMjY5MjVl
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxTY3JpcHRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTFNjcmlwdHMuY3BwCkBAIC03NiwxMSArNzYsMTEgQEAgUmVuZGVyTWF0aE1MU2NyaXB0
czo6UmVuZGVyTWF0aE1MU2NyaXB0cyhFbGVtZW50JiBlbGVtZW50LCBQYXNzUmVmPFJlbmRlclN0
eWxlPgogUmVuZGVyQm94TW9kZWxPYmplY3QqIFJlbmRlck1hdGhNTFNjcmlwdHM6OmJhc2UoKSBj
b25zdAogewogICAgIGlmICghbV9iYXNlV3JhcHBlcikKLSAgICAgICAgcmV0dXJuIDA7CisgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIFJlbmRlck9iamVjdCogYmFzZSA9IG1fYmFzZVdyYXBw
ZXItPmZpcnN0Q2hpbGQoKTsKLSAgICBpZiAoIWJhc2UgfHwgIWJhc2UtPmlzQm94TW9kZWxPYmpl
Y3QoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIHRvUmVuZGVyQm94TW9kZWxPYmpl
Y3QoYmFzZSk7CisgICAgaWYgKCFpczxSZW5kZXJCb3hNb2RlbE9iamVjdD4oYmFzZSkpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBkb3duY2FzdDxSZW5kZXJCb3hNb2RlbE9i
amVjdD4oYmFzZSk7CiB9CiAKIHZvaWQgUmVuZGVyTWF0aE1MU2NyaXB0czo6Zml4QW5vbnltb3Vz
U3R5bGVGb3JTdWJTdXBQYWlyKFJlbmRlck9iamVjdCogc3ViU3VwUGFpciwgYm9vbCBpc1Bvc3RT
Y3JpcHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRz
Y2FwZVBsdWdpblZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRz
Y2FwZVBsdWdpblZpZXcubW0KaW5kZXggMDc2NGU0Y2JhMWY0MTRlODA2NDA4MjVhYjA4Nzc0OTkz
YzcyZTQ5NS4uOTk4NTk0ZmFkMjUzODY5ZDVhYzc3NmI0NzQ0ZTY3MjQxOGIzZDA3MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2lu
Vmlldy5tbQpAQCAtODY0LDcgKzg2NCw3IEBAIC0gKENTdHJpbmcpcmVzb2x2ZWRVUkxTdHJpbmdG
b3JVUkw6KGNvbnN0IGNoYXIqKXVybCB0YXJnZXQ6KGNvbnN0IGNoYXIqKXRhcmdldAogCiAtICh2
b2lkKWludmFsaWRhdGVQbHVnaW5Db250ZW50UmVjdDooTlNSZWN0KXJlY3QKIHsKLSAgICBpZiAo
UmVuZGVyQm94TW9kZWxPYmplY3QgKnJlbmRlcmVyID0gdG9SZW5kZXJCb3hNb2RlbE9iamVjdChf
ZWxlbWVudC0+cmVuZGVyZXIoKSkpIHsKKyAgICBpZiAoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJl
bmRlcmVyID0gZG93bmNhc3Q8UmVuZGVyQm94TW9kZWxPYmplY3Q+KF9lbGVtZW50LT5yZW5kZXJl
cigpKSkgewogICAgICAgICBJbnRSZWN0IGNvbnRlbnRSZWN0KHJlY3QpOwogICAgICAgICBjb250
ZW50UmVjdC5tb3ZlKHJlbmRlcmVyLT5ib3JkZXJMZWZ0KCkgKyByZW5kZXJlci0+cGFkZGluZ0xl
ZnQoKSwgcmVuZGVyZXItPmJvcmRlclRvcCgpICsgcmVuZGVyZXItPnBhZGRpbmdUb3AoKSk7CiAg
ICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJSZW5kZXJM
YXllci5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUmVuZGVyTGF5ZXIubW0KaW5k
ZXggODc4ZjM0OTE5YmRiNGY0YzA1Y2RkYWNjMGI0ZGY1OWRiZGVhZTg4MS4uMjg3OGFkM2JmYmVh
YTUwZGU1ZGUxZGFhNmUwYmM2ZDU2ZjU5ZjVkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJSZW5kZXJMYXllci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYlJlbmRlckxheWVyLm1tCkBAIC0xNDUsNyArMTQ1LDcgQEAgLSAoaWQpaW5pdFdpdGhX
ZWJGcmFtZTooV2ViRnJhbWUgKil3ZWJGcmFtZQogICAgIH0KIAogICAgIGlmIChyZW5kZXJlci0+
aGFzTGF5ZXIoKSkgewotICAgICAgICBSZW5kZXJMYXllciogbGF5ZXIgPSB0b1JlbmRlckJveE1v
ZGVsT2JqZWN0KHJlbmRlcmVyKS0+bGF5ZXIoKTsKKyAgICAgICAgUmVuZGVyTGF5ZXIqIGxheWVy
ID0gZG93bmNhc3Q8UmVuZGVyQm94TW9kZWxPYmplY3Q+KCpyZW5kZXJlcikubGF5ZXIoKTsKIAog
ICAgICAgICBuYW1lID0gW1tXZWJSZW5kZXJMYXllciBuYW1lRm9yTGF5ZXI6bGF5ZXJdIHJldGFp
bl07CiAgICAgICAgIGJvdW5kcyA9IGxheWVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXgg
MzY5NjhmMGQ5MWU3NDRjZTk0YjA2NDk2OGE1ZWM1YjJhZmI1OWJlMy4uNmU4MTJjZDQzMzg5MDM3
NmNhYTc3ZTM3NzkzODI1Y2FiNWYwNDJiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtNDY0LDcgKzQ2NCw3IEBAIHZvaWQgUGx1
Z2luVmlldzo6bWFudWFsTG9hZERpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiAK
IFJlbmRlckJveE1vZGVsT2JqZWN0KiBQbHVnaW5WaWV3OjpyZW5kZXJlcigpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIHRvUmVuZGVyQm94TW9kZWxPYmplY3QobV9wbHVnaW5FbGVtZW50LT5yZW5kZXJl
cigpKTsKKyAgICByZXR1cm4gZG93bmNhc3Q8UmVuZGVyQm94TW9kZWxPYmplY3Q+KG1fcGx1Z2lu
RWxlbWVudC0+cmVuZGVyZXIoKSk7CiB9CiAKIHZvaWQgUGx1Z2luVmlldzo6cGFnZVNjYWxlRmFj
dG9yRGlkQ2hhbmdlKCkKQEAgLTEyOTcsNyArMTI5Nyw3IEBAIHZvaWQgUGx1Z2luVmlldzo6aW52
YWxpZGF0ZVJlY3QoY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KQogICAgIGlmIChtX3BsdWdpbkVs
ZW1lbnQtPmRpc3BsYXlTdGF0ZSgpIDwgSFRNTFBsdWdJbkVsZW1lbnQ6OlJlc3RhcnRpbmcpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiByZW5kZXJlciA9IHRv
UmVuZGVyQm94TW9kZWxPYmplY3QobV9wbHVnaW5FbGVtZW50LT5yZW5kZXJlcigpKTsKKyAgICBS
ZW5kZXJCb3hNb2RlbE9iamVjdCogcmVuZGVyZXIgPSBkb3duY2FzdDxSZW5kZXJCb3hNb2RlbE9i
amVjdD4obV9wbHVnaW5FbGVtZW50LT5yZW5kZXJlcigpKTsKICAgICBpZiAoIXJlbmRlcmVyKQog
ICAgICAgICByZXR1cm47CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239596</attachid>
            <date>2014-10-09 20:46:25 -0700</date>
            <delta_ts>2014-10-10 08:49:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137587-20141009204629.patch</filename>
            <type>text/plain</type>
            <size>58330</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0NTUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDE4NTE0YjNkMmZlMzRj
NmIwZTMzZjc5MTgxMWQ0OTRkNjkwZDA3OS4uOWE4OTA4NWRjNzMyYmFlZmNlZjJhZTM0ZmVjYWNj
ZmQ0MjhmYzJlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkzIEBACisyMDE0LTEwLTA5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIGlzPD4oKSAvIGRvd25j
YXN0PD4oKSBmb3IgUmVuZGVyQm94TW9kZWxPYmplY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzU4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBpczw+KCkgLyBkb3duY2FzdDw+KCkgZm9yIFJl
bmRlckJveE1vZGVsT2JqZWN0IGFuZCBjbGVhbiB1cCB0aGUKKyAgICAgICAgc3Vycm91bmRpbmcg
Y29kZS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpjcmVhdGVGcm9tUmVuZGVyZXIpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0OjpyZW5kZXJCb3hNb2RlbE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjppc0lu
bGluZVdpdGhDb250aW51YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Zmlyc3RDaGlsZENvbnNp
ZGVyaW5nQ29udGludWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Omxhc3RDaGlsZEhhc0NvbnRp
bnVhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpu
ZXh0U2libGluZyk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
Ojp3aWRnZXQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6
cmVuZGVyT2JqZWN0SXNPYnNlcnZhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6Om9ic2VydmFibGVPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6bXNh
YVJvbGVGb3JSZW5kZXJlcik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0Lmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFi
bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjppc0RhdGFUYWJs
ZSk6CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cmVu
ZGVyQm94KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnJlbmRlckJveE1vZGVsT2JqZWN0KToK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpidWlsZE9iamVjdEZvckVsZW1lbnRJbmZvKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmll
dy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnNjcm9sbENvbnRlbnRzRmFzdFBh
dGgpOgorICAgICAgICAqIHBhZ2UvUHJpbnRDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmVuY2xvc2luZ0JveE1vZGVsT2JqZWN0KToKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9Bbmlt
YXRpb25CYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvbkJhc2U6OmZyZWV6ZUF0
VGltZSk6CisgICAgICAgICogcGFnZS9hbmltYXRpb24vSW1wbGljaXRBbmltYXRpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW1wbGljaXRBbmltYXRpb246OnN0YXJ0QW5pbWF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkltcGxpY2l0QW5pbWF0aW9uOjpwYXVzZUFuaW1hdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpJbXBsaWNpdEFuaW1hdGlvbjo6ZW5kQW5pbWF0aW9uKToKKyAgICAgICAg
KiBwYWdlL2FuaW1hdGlvbi9LZXlmcmFtZUFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpLZXlmcmFtZUFuaW1hdGlvbjo6c3RhcnRBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
S2V5ZnJhbWVBbmltYXRpb246OnBhdXNlQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Oktl
eWZyYW1lQW5pbWF0aW9uOjplbmRBbmltYXRpb24pOgorICAgICAgICAqIHBhZ2UvaW9zL0ZyYW1l
SU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6Om92ZXJmbG93U2Nyb2xsUG9zaXRpb25D
aGFuZ2VkRm9yTm9kZSk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRp
bmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6Omhhc1Zp
c2libGVTbG93UmVwYWludFZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvSW5saW5lQm94Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVCb3g6OmJveE1v
ZGVsT2JqZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lRWxlbWVudEJveC5oOgorICAg
ICAgICAoV2ViQ29yZTo6SW5saW5lRWxlbWVudEJveDo6cmVuZGVyZXIpOgorICAgICAgICAqIHJl
bmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dC
b3g6OnBsYWNlQm94ZXNJbkJsb2NrRGlyZWN0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvSW5s
aW5lRmxvd0JveC5oOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxvd0JveDo6cmVuZGVyZXIp
OgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklubGluZVRleHRCb3g6OmJhc2VsaW5lUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
SW5saW5lVGV4dEJveDo6bGluZUhlaWdodCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJs
b2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjphZGRDaGlsZFRvQ29udGlu
dWF0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZVJlcGxhY2VkTG9naWNhbFdpZHRoVXNpbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpjb21wdXRlUmVwbGFjZWRMb2dpY2FsSGVpZ2h0VXNp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2lj
YWxXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVk
TG9naWNhbEhlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVQb3Np
dGlvbmVkTG9naWNhbFdpZHRoUmVwbGFjZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94
Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxIZWlnaHRSZXBsYWNlZCk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckZsb3dUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxvd1RocmVhZDo6YWRq
dXN0ZWRQb3NpdGlvblJlbGF0aXZlVG9PZmZzZXRQYXJlbnQpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJJbmxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjpzcGxp
dElubGluZXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjphZGRDaGlsZFRvQ29u
dGludWF0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnVwZGF0ZUxheWVyUG9zaXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNhbGN1bGF0ZUNsaXBSZWN0cyk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllckJhY2tpbmc6OmFkanVzdEFuY2VzdG9yQ29tcG9zaXRpbmdCb3VuZHNGb3JGbG93VGhyZWFk
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21wb3NpdGluZ0Zv
ckluZGlyZWN0UmVhc29uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRv
cjo6Y29tcHV0ZVN0aWNreVZpZXdwb3J0Q29uc3RyYWludHMpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpkZXN0
cm95KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6b2Zmc2V0UGFyZW50KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MU2NyaXB0czo6YmFzZSk6CisKIDIwMTQtMTAtMDkgIERl
YW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgogCiAgICAgICAgIENvbXB1dGVkIHN0eWxlIGZv
ciBjbGlwIGlzIHdyb25nIHdpdGggcmVzcGVjdCB0byBhdXRvCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXgg
ODdlOWY2ZWEzNDE2Zjc1ZWU3NTgzMzQ5YmI2MTExZWM5NGRlYmVmNi4uMWE4NDkyZmE1YTBkNmRk
NTk4ZDZiYzdlNjQ3NmI0YzczMDU2NDIwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4
IEBACisyMDE0LTEwLTA5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAg
ICAgVXNlIGlzPD4oKSAvIGRvd25jYXN0PD4oKSBmb3IgUmVuZGVyQm94TW9kZWxPYmplY3QKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzU4NworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBpczw+KCkg
LyBkb3duY2FzdDw+KCkgZm9yIFJlbmRlckJveE1vZGVsT2JqZWN0IGFuZCBjbGVhbiB1cCB0aGUK
KyAgICAgICAgc3Vycm91bmRpbmcgY29kZS4KKworICAgICAgICAqIFBsdWdpbnMvV2ViQmFzZU5l
dHNjYXBlUGx1Z2luVmlldy5tbToKKyAgICAgICAgKC1bV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmll
dyBpbnZhbGlkYXRlUGx1Z2luQ29udGVudFJlY3Q6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJS
ZW5kZXJMYXllci5tbToKKyAgICAgICAgKC1bV2ViUmVuZGVyTGF5ZXIgaW5pdFdpdGhXZWJGcmFt
ZTpdKToKKwogMjAxNC0xMC0wOSAgRGVhbiBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+CiAKICAg
ICAgICAgUmVtb3ZlIEVOQUJMRV9DU1MzX0NPTkRJVElPTkFMX1JVTEVTCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXgg
YjQxYzBhNDZmZGZiNjdhNWVlZDViYTczMTU2OGRjNmM4ZDhmYWY3Ni4uN2Q0ZmY4MDNjMTZiZDM3
NDYyMzRkOTNlOGM4ZGRiNmZjYmZiN2YxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisy
MDE0LTEwLTA5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNl
IGlzPD4oKSAvIGRvd25jYXN0PD4oKSBmb3IgUmVuZGVyQm94TW9kZWxPYmplY3QKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzU4NworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBpczw+KCkgLyBkb3du
Y2FzdDw+KCkgZm9yIFJlbmRlckJveE1vZGVsT2JqZWN0IGFuZCBjbGVhbiB1cCB0aGUKKyAgICAg
ICAgc3Vycm91bmRpbmcgY29kZS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6cmVuZGVyZXIpOgorICAg
ICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjppbnZhbGlkYXRlUmVjdCk6CisKIDIwMTQtMTAtMDkg
IERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBFTkFCTEVf
Q1NTM19DT05ESVRJT05BTF9SVUxFUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QVhPYmplY3RDYWNoZS5jcHAKaW5kZXggOWYwNDg0M2RhNTM4MTdlMjBkM2Q4NTNlMzA3YzVlY2M1
OWUwNzUzNi4uMTYzMTJiMDM5OTlkZThhMzQxYmJiZjUwNWVjNjU1YWM0ODJlNzQyMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCkBAIC03Myw2
ICs3Myw3IEBACiAjaW5jbHVkZSAiUmVuZGVyTWVudUxpc3QuaCIKICNpbmNsdWRlICJSZW5kZXJN
ZXRlci5oIgogI2luY2x1ZGUgIlJlbmRlclByb2dyZXNzLmgiCisjaW5jbHVkZSAiUmVuZGVyU1ZH
Um9vdC5oIgogI2luY2x1ZGUgIlJlbmRlclNsaWRlci5oIgogI2luY2x1ZGUgIlJlbmRlclRhYmxl
LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGFibGVDZWxsLmgiCkBAIC0yOTAsNDAgKzI5MSw0MCBAQCBz
dGF0aWMgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiBjcmVhdGVGcm9tUmVuZGVyZXIo
UmVuZGVyT2JqZWN0KiByZW5kZXJlcgogICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU1lZGlh
Q29udHJvbDo6Y3JlYXRlKHJlbmRlcmVyKTsKICNlbmRpZgogCi0gICAgaWYgKHJlbmRlcmVyLT5p
c1NWR1Jvb3QoKSkKKyAgICBpZiAoaXM8UmVuZGVyU1ZHUm9vdD4oKnJlbmRlcmVyKSkKICAgICAg
ICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlTVkdSb290OjpjcmVhdGUocmVuZGVyZXIpOwogICAgIAog
ICAgIC8vIFNlYXJjaCBmaWVsZCBidXR0b25zCiAgICAgaWYgKGlzPEVsZW1lbnQ+KG5vZGUpICYm
IGRvd25jYXN0PEVsZW1lbnQ+KCpub2RlKS5pc1NlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uRWxlbWVu
dCgpKQogICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9u
OjpjcmVhdGUocmVuZGVyZXIpOwogICAgIAotICAgIGlmIChyZW5kZXJlci0+aXNCb3hNb2RlbE9i
amVjdCgpKSB7Ci0gICAgICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiBjc3NCb3ggPSB0b1JlbmRl
ckJveE1vZGVsT2JqZWN0KHJlbmRlcmVyKTsKLSAgICAgICAgaWYgKGNzc0JveC0+aXNMaXN0Qm94
KCkpCi0gICAgICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eUxpc3RCb3g6OmNyZWF0ZSh0b1Jl
bmRlckxpc3RCb3goY3NzQm94KSk7Ci0gICAgICAgIGlmIChjc3NCb3gtPmlzTWVudUxpc3QoKSkK
LSAgICAgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5TWVudUxpc3Q6OmNyZWF0ZSh0b1JlbmRl
ck1lbnVMaXN0KGNzc0JveCkpOworICAgIGlmIChpczxSZW5kZXJCb3hNb2RlbE9iamVjdD4oKnJl
bmRlcmVyKSkgeworICAgICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCYgY3NzQm94ID0gZG93bmNh
c3Q8UmVuZGVyQm94TW9kZWxPYmplY3Q+KCpyZW5kZXJlcik7CisgICAgICAgIGlmIChpczxSZW5k
ZXJMaXN0Qm94Pihjc3NCb3gpKQorICAgICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlMaXN0
Qm94OjpjcmVhdGUoJmRvd25jYXN0PFJlbmRlckxpc3RCb3g+KGNzc0JveCkpOworICAgICAgICBp
ZiAoaXM8UmVuZGVyTWVudUxpc3Q+KGNzc0JveCkpCisgICAgICAgICAgICByZXR1cm4gQWNjZXNz
aWJpbGl0eU1lbnVMaXN0OjpjcmVhdGUoJmRvd25jYXN0PFJlbmRlck1lbnVMaXN0Pihjc3NCb3gp
KTsKIAogICAgICAgICAvLyBzdGFuZGFyZCB0YWJsZXMKLSAgICAgICAgaWYgKGNzc0JveC0+aXNU
YWJsZSgpKQotICAgICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUYWJsZTo6Y3JlYXRlKHRv
UmVuZGVyVGFibGUoY3NzQm94KSk7Ci0gICAgICAgIGlmIChjc3NCb3gtPmlzVGFibGVSb3coKSkK
LSAgICAgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGFibGVSb3c6OmNyZWF0ZSh0b1JlbmRl
clRhYmxlUm93KGNzc0JveCkpOwotICAgICAgICBpZiAoY3NzQm94LT5pc1RhYmxlQ2VsbCgpKQot
ICAgICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OmNyZWF0ZSh0b1JlbmRl
clRhYmxlQ2VsbChjc3NCb3gpKTsKKyAgICAgICAgaWYgKGlzPFJlbmRlclRhYmxlPihjc3NCb3gp
KQorICAgICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUYWJsZTo6Y3JlYXRlKCZkb3duY2Fz
dDxSZW5kZXJUYWJsZT4oY3NzQm94KSk7CisgICAgICAgIGlmIChpczxSZW5kZXJUYWJsZVJvdz4o
Y3NzQm94KSkKKyAgICAgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGFibGVSb3c6OmNyZWF0
ZSgmZG93bmNhc3Q8UmVuZGVyVGFibGVSb3c+KGNzc0JveCkpOworICAgICAgICBpZiAoaXM8UmVu
ZGVyVGFibGVDZWxsPihjc3NCb3gpKQorICAgICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlU
YWJsZUNlbGw6OmNyZWF0ZSgmZG93bmNhc3Q8UmVuZGVyVGFibGVDZWxsPihjc3NCb3gpKTsKIAog
ICAgICAgICAvLyBwcm9ncmVzcyBiYXIKLSAgICAgICAgaWYgKGNzc0JveC0+aXNQcm9ncmVzcygp
KQotICAgICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlQcm9ncmVzc0luZGljYXRvcjo6Y3Jl
YXRlKHRvUmVuZGVyUHJvZ3Jlc3MoY3NzQm94KSk7CisgICAgICAgIGlmIChpczxSZW5kZXJQcm9n
cmVzcz4oY3NzQm94KSkKKyAgICAgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5UHJvZ3Jlc3NJ
bmRpY2F0b3I6OmNyZWF0ZSgmZG93bmNhc3Q8UmVuZGVyUHJvZ3Jlc3M+KGNzc0JveCkpOwogCiAj
aWYgRU5BQkxFKE1FVEVSX0VMRU1FTlQpCi0gICAgICAgIGlmIChjc3NCb3gtPmlzTWV0ZXIoKSkK
LSAgICAgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5UHJvZ3Jlc3NJbmRpY2F0b3I6OmNyZWF0
ZSh0b1JlbmRlck1ldGVyKGNzc0JveCkpOworICAgICAgICBpZiAoaXM8UmVuZGVyTWV0ZXI+KGNz
c0JveCkpCisgICAgICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVByb2dyZXNzSW5kaWNhdG9y
OjpjcmVhdGUoJmRvd25jYXN0PFJlbmRlck1ldGVyPihjc3NCb3gpKTsKICNlbmRpZgogCiAgICAg
ICAgIC8vIGlucHV0IHR5cGU9cmFuZ2UKLSAgICAgICAgaWYgKGNzc0JveC0+aXNTbGlkZXIoKSkK
LSAgICAgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5U2xpZGVyOjpjcmVhdGUodG9SZW5kZXJT
bGlkZXIoY3NzQm94KSk7CisgICAgICAgIGlmIChpczxSZW5kZXJTbGlkZXI+KGNzc0JveCkpCisg
ICAgICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVNsaWRlcjo6Y3JlYXRlKCZkb3duY2FzdDxS
ZW5kZXJTbGlkZXI+KGNzc0JveCkpOwogICAgIH0KIAogICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0OjpjcmVhdGUocmVuZGVyZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKaW5kZXgg
YzJhNTBkNWZhNDVhMjI1NDdmMDgxZWU0YjBiZTNiZDgyYzczZTcyYy4uODgxZWE0ODE1MmY5MzRi
ZDJhOTIyYWE3NWMwNTUxMjE1MDAxMGU1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCkBAIC03NSw2
ICs3NSw3IEBACiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKICNpbmNsdWRlICJSZW5kZXJMaW5l
QnJlYWsuaCIKICNpbmNsdWRlICJSZW5kZXJMaXN0Qm94LmgiCisjaW5jbHVkZSAiUmVuZGVyTGlz
dEl0ZW0uaCIKICNpbmNsdWRlICJSZW5kZXJMaXN0TWFya2VyLmgiCiAjaW5jbHVkZSAiUmVuZGVy
TWF0aE1MQmxvY2suaCIKICNpbmNsdWRlICJSZW5kZXJNYXRoTUxGcmFjdGlvbi5oIgpAQCAtMTQ4
LDkgKzE0OSw5IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6ZGV0YWNoKEFjY2Vz
c2liaWxpdHlEZXRhY2htZW50VHlwZSBkZXRhY2htZW50VHlwCiAKIFJlbmRlckJveE1vZGVsT2Jq
ZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpyZW5kZXJCb3hNb2RlbE9iamVjdCgpIGNv
bnN0CiB7Ci0gICAgaWYgKCFtX3JlbmRlcmVyIHx8ICFtX3JlbmRlcmVyLT5pc0JveE1vZGVsT2Jq
ZWN0KCkpCisgICAgaWYgKCFpczxSZW5kZXJCb3hNb2RlbE9iamVjdD4obV9yZW5kZXJlcikpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiB0b1JlbmRlckJveE1vZGVsT2JqZWN0
KG1fcmVuZGVyZXIpOworICAgIHJldHVybiBkb3duY2FzdDxSZW5kZXJCb3hNb2RlbE9iamVjdD4o
bV9yZW5kZXJlcik7CiB9CiAKIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c2V0UmVu
ZGVyZXIoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKQEAgLTE1OSwxNiArMTYwLDkgQEAgdm9pZCBB
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpzZXRSZW5kZXJlcihSZW5kZXJPYmplY3QqIHJlbmRl
cmVyKQogICAgIHNldE5vZGUocmVuZGVyZXItPm5vZGUoKSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUg
Ym9vbCBpc0lubGluZVdpdGhDb250aW51YXRpb24oUmVuZGVyT2JqZWN0KiBvYmplY3QpCitzdGF0
aWMgaW5saW5lIGJvb2wgaXNJbmxpbmVXaXRoQ29udGludWF0aW9uKFJlbmRlck9iamVjdCYgb2Jq
ZWN0KQogewotICAgIGlmICghb2JqZWN0LT5pc0JveE1vZGVsT2JqZWN0KCkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiByZW5kZXJlciA9IHRvUmVu
ZGVyQm94TW9kZWxPYmplY3Qob2JqZWN0KTsKLSAgICBpZiAoIXJlbmRlcmVyLT5pc1JlbmRlcklu
bGluZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gdG9SZW5kZXJJbmxp
bmUocmVuZGVyZXIpLT5jb250aW51YXRpb24oKTsKKyAgICByZXR1cm4gaXM8UmVuZGVySW5saW5l
PihvYmplY3QpICYmIGRvd25jYXN0PFJlbmRlcklubGluZT4ob2JqZWN0KS5jb250aW51YXRpb24o
KTsKIH0KIAogc3RhdGljIGlubGluZSBSZW5kZXJPYmplY3QqIGZpcnN0Q2hpbGRJbkNvbnRpbnVh
dGlvbihSZW5kZXJJbmxpbmUmIHJlbmRlcmVyKQpAQCAtMTkwLDcgKzE4NCw3IEBAIHN0YXRpYyBp
bmxpbmUgUmVuZGVyT2JqZWN0KiBmaXJzdENoaWxkQ29uc2lkZXJpbmdDb250aW51YXRpb24oUmVu
ZGVyT2JqZWN0JiByZW5kCiB7CiAgICAgUmVuZGVyT2JqZWN0KiBmaXJzdENoaWxkID0gcmVuZGVy
ZXIuZmlyc3RDaGlsZFNsb3coKTsKIAotICAgIGlmICghZmlyc3RDaGlsZCAmJiBpc0lubGluZVdp
dGhDb250aW51YXRpb24oJnJlbmRlcmVyKSkKKyAgICBpZiAoIWZpcnN0Q2hpbGQgJiYgaXNJbmxp
bmVXaXRoQ29udGludWF0aW9uKHJlbmRlcmVyKSkKICAgICAgICAgZmlyc3RDaGlsZCA9IGZpcnN0
Q2hpbGRJbkNvbnRpbnVhdGlvbihkb3duY2FzdDxSZW5kZXJJbmxpbmU+KHJlbmRlcmVyKSk7CiAK
ICAgICByZXR1cm4gZmlyc3RDaGlsZDsKQEAgLTM1Niw3ICszNTAsNyBAQCBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpwcmV2aW91c1NpYmxpbmcoKSBjb25z
dAogc3RhdGljIGlubGluZSBib29sIGxhc3RDaGlsZEhhc0NvbnRpbnVhdGlvbihSZW5kZXJFbGVt
ZW50JiByZW5kZXJlcikKIHsKICAgICBSZW5kZXJPYmplY3QqIGNoaWxkID0gcmVuZGVyZXIubGFz
dENoaWxkKCk7Ci0gICAgcmV0dXJuIGNoaWxkICYmIGlzSW5saW5lV2l0aENvbnRpbnVhdGlvbihj
aGlsZCk7CisgICAgcmV0dXJuIGNoaWxkICYmIGlzSW5saW5lV2l0aENvbnRpbnVhdGlvbigqY2hp
bGQpOwogfQogCiBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
OjpuZXh0U2libGluZygpIGNvbnN0CkBAIC0zODgsMTEgKzM4MiwxMSBAQCBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpuZXh0U2libGluZygpIGNvbnN0CiAK
ICAgICAvLyBDYXNlIDQ6IG5vZGUgaXMgYW4gaW5saW5lIHdpdGggYSBjb250aW51YXRpb24uIE5l
eHQgc2libGluZyBpcyB0aGUgbmV4dCBzaWJsaW5nIG9mIHRoZSBlbmQgCiAgICAgLy8gb2YgdGhl
IGNvbnRpbnVhdGlvbiBjaGFpbi4KLSAgICBlbHNlIGlmIChpc0lubGluZVdpdGhDb250aW51YXRp
b24obV9yZW5kZXJlcikpCisgICAgZWxzZSBpZiAoaXNJbmxpbmVXaXRoQ29udGludWF0aW9uKCpt
X3JlbmRlcmVyKSkKICAgICAgICAgbmV4dFNpYmxpbmcgPSBlbmRPZkNvbnRpbnVhdGlvbnMoKm1f
cmVuZGVyZXIpLT5uZXh0U2libGluZygpOwogCiAgICAgLy8gQ2FzZSA1OiBub2RlIGhhcyBubyBu
ZXh0IHNpYmxpbmcsIGFuZCBpdHMgcGFyZW50IGlzIGFuIGlubGluZSB3aXRoIGEgY29udGludWF0
aW9uLgotICAgIGVsc2UgaWYgKGlzSW5saW5lV2l0aENvbnRpbnVhdGlvbihtX3JlbmRlcmVyLT5w
YXJlbnQoKSkpIHsKKyAgICBlbHNlIGlmIChpc0lubGluZVdpdGhDb250aW51YXRpb24oKm1fcmVu
ZGVyZXItPnBhcmVudCgpKSkgewogICAgICAgICBhdXRvJiBjb250aW51YXRpb24gPSAqZG93bmNh
c3Q8UmVuZGVySW5saW5lPigqbV9yZW5kZXJlci0+cGFyZW50KCkpLmNvbnRpbnVhdGlvbigpOwog
ICAgICAgICAKICAgICAgICAgLy8gQ2FzZSA1YTogY29udGludWF0aW9uIGlzIGEgYmxvY2sgLSBp
biB0aGlzIGNhc2UgdGhlIGJsb2NrIGl0c2VsZiBpcyB0aGUgbmV4dCBzaWJsaW5nLgpAQCAtMTcx
Miw5ICsxNzA2LDkgQEAgRG9jdW1lbnQqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmRvY3Vt
ZW50KCkgY29uc3QKIAogV2lkZ2V0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp3aWRnZXQo
KSBjb25zdAogewotICAgIGlmICghbV9yZW5kZXJlci0+aXNCb3hNb2RlbE9iamVjdCgpIHx8ICF0
b1JlbmRlckJveE1vZGVsT2JqZWN0KG1fcmVuZGVyZXIpLT5pc1dpZGdldCgpKQorICAgIGlmICgh
aXM8UmVuZGVyV2lkZ2V0PigqbV9yZW5kZXJlcikpCiAgICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgIHJldHVybiB0b1JlbmRlcldpZGdldChtX3JlbmRlcmVyKS0+d2lkZ2V0KCk7CisgICAgcmV0
dXJuIGRvd25jYXN0PFJlbmRlcldpZGdldD4oKm1fcmVuZGVyZXIpLndpZGdldCgpOwogfQogCiBB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphY2Nlc3NpYmls
aXR5UGFyZW50Rm9ySW1hZ2VNYXAoSFRNTE1hcEVsZW1lbnQqIG1hcCkgY29uc3QKQEAgLTIzNzcs
MTggKzIzNzEsMTggQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdDo6Y29ycmVzcG9uZGluZ0xhYmVsRm9yQ29udHJvbEVsZW0KICAgICByZXR1cm4gbnVsbHB0
cjsKIH0KIAotYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpyZW5kZXJPYmplY3RJc09i
c2VydmFibGUoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikgY29uc3QKK2Jvb2wgQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdDo6cmVuZGVyT2JqZWN0SXNPYnNlcnZhYmxlKFJlbmRlck9iamVjdCYgcmVu
ZGVyZXIpIGNvbnN0CiB7CiAgICAgLy8gQVggY2xpZW50cyB3aWxsIGxpc3RlbiBmb3IgQVhWYWx1
ZUNoYW5nZSBvbiBhIHRleHQgY29udHJvbC4KLSAgICBpZiAocmVuZGVyZXItPmlzVGV4dENvbnRy
b2woKSkKKyAgICBpZiAoaXM8UmVuZGVyVGV4dENvbnRyb2w+KHJlbmRlcmVyKSkKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgCiAgICAgLy8gQVggY2xpZW50cyB3aWxsIGxpc3RlbiBmb3IgQVhT
ZWxlY3RlZENoaWxkcmVuQ2hhbmdlZCBvbiBsaXN0Ym94ZXMuCi0gICAgTm9kZSogbm9kZSA9IHJl
bmRlcmVyLT5ub2RlKCk7CisgICAgTm9kZSogbm9kZSA9IHJlbmRlcmVyLm5vZGUoKTsKICAgICBp
ZiAoIW5vZGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBpZiAobm9kZUhhc1Jv
bGUobm9kZSwgImxpc3Rib3giKSB8fCAocmVuZGVyZXItPmlzQm94TW9kZWxPYmplY3QoKSAmJiB0
b1JlbmRlckJveE1vZGVsT2JqZWN0KHJlbmRlcmVyKS0+aXNMaXN0Qm94KCkpKQorICAgIGlmIChu
b2RlSGFzUm9sZShub2RlLCAibGlzdGJveCIpIHx8IChpczxSZW5kZXJCb3hNb2RlbE9iamVjdD4o
cmVuZGVyZXIpICYmIGRvd25jYXN0PFJlbmRlckJveE1vZGVsT2JqZWN0PihyZW5kZXJlcikuaXNM
aXN0Qm94KCkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIFRleHRib3hlcyBzaG91
bGQgc2VuZCBvdXQgbm90aWZpY2F0aW9ucy4KQEAgLTI0MDIsNyArMjM5Niw3IEBAIEFjY2Vzc2li
aWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6Om9ic2VydmFibGVPYmplY3Qo
KSBjb25zdAogewogICAgIC8vIEZpbmQgdGhlIG9iamVjdCBnb2luZyB1cCB0aGUgcGFyZW50IGNo
YWluIHRoYXQgaXMgdXNlZCBpbiBhY2Nlc3NpYmlsaXR5IHRvIG1vbml0b3IgY2VydGFpbiBub3Rp
ZmljYXRpb25zLgogICAgIGZvciAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG1fcmVuZGVyZXI7
IHJlbmRlcmVyICYmIHJlbmRlcmVyLT5ub2RlKCk7IHJlbmRlcmVyID0gcmVuZGVyZXItPnBhcmVu
dCgpKSB7Ci0gICAgICAgIGlmIChyZW5kZXJPYmplY3RJc09ic2VydmFibGUocmVuZGVyZXIpKSB7
CisgICAgICAgIGlmIChyZW5kZXJPYmplY3RJc09ic2VydmFibGUoKnJlbmRlcmVyKSkgewogICAg
ICAgICAgICAgaWYgKEFYT2JqZWN0Q2FjaGUqIGNhY2hlID0gYXhPYmplY3RDYWNoZSgpKQogICAg
ICAgICAgICAgICAgIHJldHVybiBjYWNoZS0+Z2V0T3JDcmVhdGUocmVuZGVyZXIpOwogICAgICAg
ICB9CkBAIC0zNDA3LDEwICszNDAxLDEwIEBAIHN0YXRpYyBBY2Nlc3NpYmlsaXR5Um9sZSBtc2Fh
Um9sZUZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiAgICAgaWYgKCFy
ZW5kZXJlcikKICAgICAgICAgcmV0dXJuIFVua25vd25Sb2xlOwogCi0gICAgaWYgKHJlbmRlcmVy
LT5pc1RleHQoKSkKKyAgICBpZiAoaXM8UmVuZGVyVGV4dD4oKnJlbmRlcmVyKSkKICAgICAgICAg
cmV0dXJuIEVkaXRhYmxlVGV4dFJvbGU7CiAKLSAgICBpZiAocmVuZGVyZXItPmlzQm94TW9kZWxP
YmplY3QoKSAmJiB0b1JlbmRlckJveE1vZGVsT2JqZWN0KHJlbmRlcmVyKS0+aXNMaXN0SXRlbSgp
KQorICAgIGlmIChpczxSZW5kZXJMaXN0SXRlbT4oKnJlbmRlcmVyKSkKICAgICAgICAgcmV0dXJu
IExpc3RJdGVtUm9sZTsKIAogICAgIHJldHVybiBVbmtub3duUm9sZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgK
aW5kZXggYjRkMjQwNTRlM2MzNjcxMWUzNjc5MTMwYTQ5YjViOGJjYjE1MmE4My4uZmE1ZDM4NWRh
OGM2NjhmNDFkZTE5NzUwMTc3MDc0Yzk4ZGQ4MTZhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgKQEAgLTI0
Nyw3ICsyNDcsNyBAQCBwcml2YXRlOgogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGFjY2Vzc2li
aWxpdHlQYXJlbnRGb3JJbWFnZU1hcChIVE1MTWFwRWxlbWVudCopIGNvbnN0OwogICAgIHZpcnR1
YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0
IEludFBvaW50JikgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBib29sIHJlbmRlck9iamVjdElzT2Jz
ZXJ2YWJsZShSZW5kZXJPYmplY3QqKSBjb25zdDsKKyAgICBib29sIHJlbmRlck9iamVjdElzT2Jz
ZXJ2YWJsZShSZW5kZXJPYmplY3QmKSBjb25zdDsKICAgICBSZW5kZXJPYmplY3QqIHJlbmRlclBh
cmVudE9iamVjdCgpIGNvbnN0OwogICAgIGJvb2wgaXNEZXNjZW5kYW50T2ZFbGVtZW50VHlwZShj
b25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lKSBjb25zdDsKICAgICAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcAppbmRleCBkNWIx
M2U1ZjgzYzU1YzAyMDc4ZGNhOTM0ZTU3NTY3YjhkNzNkNGVkLi43NmRmM2M2ODI3YTg0NDk1YWM5
ZmFlMmRmYzBlYWVhZTAwMDA1MTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwCkBAIC0yNTksMTMgKzI1OSwxMyBAQCBib29s
IEFjY2Vzc2liaWxpdHlUYWJsZTo6aXNEYXRhVGFibGUoKSBjb25zdAogICAgICAgICAgICAgCiAg
ICAgICAgICAgICAvLyBGb3IgdGhlIGZpcnN0IDUgcm93cywgY2FjaGUgdGhlIGJhY2tncm91bmQg
Y29sb3Igc28gd2UgY2FuIGNoZWNrIGlmIHRoaXMgdGFibGUgaGFzIHplYnJhLXN0cmlwZWQgcm93
cy4KICAgICAgICAgICAgIGlmIChyb3cgPCA1ICYmIHJvdyA9PSBhbHRlcm5hdGluZ1Jvd0NvbG9y
Q291bnQpIHsKLSAgICAgICAgICAgICAgICBSZW5kZXJPYmplY3QqIHJlbmRlclJvdyA9IGNlbGwt
PnBhcmVudCgpOwotICAgICAgICAgICAgICAgIGlmICghcmVuZGVyUm93IHx8ICFyZW5kZXJSb3ct
PmlzQm94TW9kZWxPYmplY3QoKSB8fCAhdG9SZW5kZXJCb3hNb2RlbE9iamVjdChyZW5kZXJSb3cp
LT5pc1RhYmxlUm93KCkpCisgICAgICAgICAgICAgICAgUmVuZGVyRWxlbWVudCogcmVuZGVyUm93
ID0gY2VsbC0+cGFyZW50KCk7CisgICAgICAgICAgICAgICAgaWYgKCFpczxSZW5kZXJUYWJsZVJv
dz4ocmVuZGVyUm93KSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAg
ICAgICAgY29uc3QgUmVuZGVyU3R5bGUmIHJvd1JlbmRlclN0eWxlID0gcmVuZGVyUm93LT5zdHls
ZSgpOwogICAgICAgICAgICAgICAgIENvbG9yIHJvd0NvbG9yID0gcm93UmVuZGVyU3R5bGUudmlz
aXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKTsKICAgICAgICAg
ICAgICAgICBhbHRlcm5hdGluZ1Jvd0NvbG9yc1thbHRlcm5hdGluZ1Jvd0NvbG9yQ291bnRdID0g
cm93Q29sb3I7Ci0gICAgICAgICAgICAgICAgYWx0ZXJuYXRpbmdSb3dDb2xvckNvdW50Kys7Cisg
ICAgICAgICAgICAgICAgKythbHRlcm5hdGluZ1Jvd0NvbG9yQ291bnQ7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggYWY0NzE2NDVmNTBjNzM1
MjNkZGJkYzZiNzk4NTU3MThiZWFiMDgwYS4uYzA4MzdhMjJhNmFjMGQxYmRkYzQ0Y2VjMWQ4ZjRk
NjExMzRjMjUzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtNjI5LDEzICs2MjksMTMgQEAgYm9vbCBO
b2RlOjppc0VkaXRhYmxlVG9BY2Nlc3NpYmlsaXR5KEVkaXRhYmxlTGV2ZWwgZWRpdGFibGVMZXZl
bCkgY29uc3QKIFJlbmRlckJveCogTm9kZTo6cmVuZGVyQm94KCkgY29uc3QKIHsKICAgICBSZW5k
ZXJPYmplY3QqIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsKLSAgICByZXR1cm4gcmVuZGVy
ZXIgJiYgcmVuZGVyZXItPmlzQm94KCkgPyB0b1JlbmRlckJveChyZW5kZXJlcikgOiAwOworICAg
IHJldHVybiBpczxSZW5kZXJCb3g+KHJlbmRlcmVyKSA/IGRvd25jYXN0PFJlbmRlckJveD4ocmVu
ZGVyZXIpIDogbnVsbHB0cjsKIH0KIAogUmVuZGVyQm94TW9kZWxPYmplY3QqIE5vZGU6OnJlbmRl
ckJveE1vZGVsT2JqZWN0KCkgY29uc3QKIHsKICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0g
dGhpcy0+cmVuZGVyZXIoKTsKLSAgICByZXR1cm4gcmVuZGVyZXIgJiYgcmVuZGVyZXItPmlzQm94
TW9kZWxPYmplY3QoKSA/IHRvUmVuZGVyQm94TW9kZWxPYmplY3QocmVuZGVyZXIpIDogMDsKKyAg
ICByZXR1cm4gaXM8UmVuZGVyQm94TW9kZWxPYmplY3Q+KHJlbmRlcmVyKSA/IGRvd25jYXN0PFJl
bmRlckJveE1vZGVsT2JqZWN0PihyZW5kZXJlcikgOiBudWxscHRyOwogfQogCiBMYXlvdXRSZWN0
IE5vZGU6OmJvdW5kaW5nQm94KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JPdmVybGF5LmNwcAppbmRleCBjYWNhOGU0YTE4ODFlNDk1MzY5NDVhZDlhZjVkNmNj
NzI5MTk0YWY4Li4yZGI3ZjFhMzFiNjFkYjY2MWIzMTEyYmNmNWM3MTYwMjM3ODMzNTM5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCkBAIC03MDYs
NyArNzA2LDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBidWlsZE9iamVj
dEZvckVsZW1lbnRJbmZvKE5vZGUqIG5vZGUpCiAgICAgRnJhbWUqIGNvbnRhaW5pbmdGcmFtZSA9
IG5vZGUtPmRvY3VtZW50KCkuZnJhbWUoKTsKICAgICBGcmFtZVZpZXcqIGNvbnRhaW5pbmdWaWV3
ID0gY29udGFpbmluZ0ZyYW1lLT52aWV3KCk7CiAgICAgSW50UmVjdCBib3VuZGluZ0JveCA9IHNu
YXBwZWRJbnRSZWN0KGNvbnRhaW5pbmdWaWV3LT5jb250ZW50c1RvUm9vdFZpZXcocmVuZGVyZXIt
PmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCkpKTsKLSAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCog
bW9kZWxPYmplY3QgPSByZW5kZXJlci0+aXNCb3hNb2RlbE9iamVjdCgpID8gdG9SZW5kZXJCb3hN
b2RlbE9iamVjdChyZW5kZXJlcikgOiBudWxscHRyOworICAgIFJlbmRlckJveE1vZGVsT2JqZWN0
KiBtb2RlbE9iamVjdCA9IGlzPFJlbmRlckJveE1vZGVsT2JqZWN0PigqcmVuZGVyZXIpID8gZG93
bmNhc3Q8UmVuZGVyQm94TW9kZWxPYmplY3Q+KHJlbmRlcmVyKSA6IG51bGxwdHI7CiAgICAgZWxl
bWVudEluZm8tPnNldFN0cmluZygibm9kZVdpZHRoIiwgU3RyaW5nOjpudW1iZXIobW9kZWxPYmpl
Y3QgPyBhZGp1c3RGb3JBYnNvbHV0ZVpvb20obW9kZWxPYmplY3QtPnBpeGVsU25hcHBlZE9mZnNl
dFdpZHRoKCksICptb2RlbE9iamVjdCkgOiBib3VuZGluZ0JveC53aWR0aCgpKSk7CiAgICAgZWxl
bWVudEluZm8tPnNldFN0cmluZygibm9kZUhlaWdodCIsIFN0cmluZzo6bnVtYmVyKG1vZGVsT2Jq
ZWN0ID8gYWRqdXN0Rm9yQWJzb2x1dGVab29tKG1vZGVsT2JqZWN0LT5waXhlbFNuYXBwZWRPZmZz
ZXRIZWlnaHQoKSwgKm1vZGVsT2JqZWN0KSA6IGJvdW5kaW5nQm94LmhlaWdodCgpKSk7CiAgICAg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggOTY3NDk4ZDk5ZTdkNjZjYTQzM2Y4NTU2
ZmY0YWIwMzUyNTVmYjIzNC4uZTI2ZTJiMGIwNjk2YzBmZjNkOTQ3YjVkZjBmM2UwYWE5NmQ5NjFj
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtMTc4Miw3ICsxNzgyLDcgQEAgYm9v
bCBGcmFtZVZpZXc6OnNjcm9sbENvbnRlbnRzRmFzdFBhdGgoY29uc3QgSW50U2l6ZSYgc2Nyb2xs
RGVsdGEsIGNvbnN0IEludFJlY3QKIAogICAgICAgICAvLyBGaXhlZCBpdGVtcyBzaG91bGQgYWx3
YXlzIGhhdmUgbGF5ZXJzLgogICAgICAgICBBU1NFUlQocmVuZGVyZXItPmhhc0xheWVyKCkpOwot
ICAgICAgICBSZW5kZXJMYXllciogbGF5ZXIgPSB0b1JlbmRlckJveE1vZGVsT2JqZWN0KHJlbmRl
cmVyKS0+bGF5ZXIoKTsKKyAgICAgICAgUmVuZGVyTGF5ZXIqIGxheWVyID0gZG93bmNhc3Q8UmVu
ZGVyQm94TW9kZWxPYmplY3Q+KCpyZW5kZXJlcikubGF5ZXIoKTsKIAogICAgICAgICBpZiAobGF5
ZXItPnZpZXdwb3J0Q29uc3RyYWluZWROb3RDb21wb3NpdGVkUmVhc29uKCkgPT0gUmVuZGVyTGF5
ZXI6Ok5vdENvbXBvc2l0ZWRGb3JCb3VuZHNPdXRPZlZpZXcKICAgICAgICAgICAgIHx8IGxheWVy
LT52aWV3cG9ydENvbnN0cmFpbmVkTm90Q29tcG9zaXRlZFJlYXNvbigpID09IFJlbmRlckxheWVy
OjpOb3RDb21wb3NpdGVkRm9yTm9WaXNpYmxlQ29udGVudCkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Qcmlu
dENvbnRleHQuY3BwCmluZGV4IGUzZmRkYjBlM2MwMzY4NzQ0NDNiODEzNjczZDI4NzM1YWIyOGE3
ZWEuLmIyNDFmZTUyYmQ1YTE4Y2Q5ZThjN2Q4YjIxOTIzYjUwMTU2NTNhYzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1ByaW50Q29udGV4dC5jcHAKQEAgLTIyNSwxMSArMjI1LDExIEBAIHZvaWQgUHJpbnRD
b250ZXh0OjplbmQoKQogc3RhdGljIFJlbmRlckJveE1vZGVsT2JqZWN0KiBlbmNsb3NpbmdCb3hN
b2RlbE9iamVjdChSZW5kZXJPYmplY3QqIG9iamVjdCkKIHsKIAotICAgIHdoaWxlIChvYmplY3Qg
JiYgIW9iamVjdC0+aXNCb3hNb2RlbE9iamVjdCgpKQorICAgIHdoaWxlIChvYmplY3QgJiYgIWlz
PFJlbmRlckJveE1vZGVsT2JqZWN0Pigqb2JqZWN0KSkKICAgICAgICAgb2JqZWN0ID0gb2JqZWN0
LT5wYXJlbnQoKTsKICAgICBpZiAoIW9iamVjdCkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0
dXJuIHRvUmVuZGVyQm94TW9kZWxPYmplY3Qob2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlckJveE1vZGVsT2JqZWN0PihvYmplY3QpOwog
fQogCiBpbnQgUHJpbnRDb250ZXh0OjpwYWdlTnVtYmVyRm9yRWxlbWVudChFbGVtZW50KiBlbGVt
ZW50LCBjb25zdCBGbG9hdFNpemUmIHBhZ2VTaXplSW5QaXhlbHMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuY3BwCmluZGV4IGRhNzUyZTBiMjczMjQy
OTU5ZWJjODNkYzdjNjQ1ZTJiODcwMjk2OGEuLjJlMmQ3MmViNTQwOTIyZTdiYjVjOGM2ZjNmMjFj
Yzk5NDYwYjNhZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0Fu
aW1hdGlvbkJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1h
dGlvbkJhc2UuY3BwCkBAIC02NTgsNyArNjU4LDcgQEAgdm9pZCBBbmltYXRpb25CYXNlOjpmcmVl
emVBdFRpbWUoZG91YmxlIHQpCiAgICAgICAgIG1fcGF1c2VUaW1lID0gbV9zdGFydFRpbWUgKyB0
IC0gbV9hbmltYXRpb24tPmRlbGF5KCk7CiAKICAgICBpZiAobV9vYmplY3QgJiYgbV9vYmplY3Qt
PmlzQ29tcG9zaXRlZCgpKQotICAgICAgICB0b1JlbmRlckJveE1vZGVsT2JqZWN0KG1fb2JqZWN0
KS0+c3VzcGVuZEFuaW1hdGlvbnMobV9wYXVzZVRpbWUpOworICAgICAgICBkb3duY2FzdDxSZW5k
ZXJCb3hNb2RlbE9iamVjdD4oKm1fb2JqZWN0KS5zdXNwZW5kQW5pbWF0aW9ucyhtX3BhdXNlVGlt
ZSk7CiB9CiAKIGRvdWJsZSBBbmltYXRpb25CYXNlOjpiZWdpbkFuaW1hdGlvblVwZGF0ZVRpbWUo
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vSW1wbGlj
aXRBbmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vSW1wbGljaXRB
bmltYXRpb24uY3BwCmluZGV4IGQ2MjY5ODZjNjM4M2U0MDZiYzNlMWMzYmExYjQzZGNjMGQ5NmE1
ZDUuLmRjOGE2N2E3OTA5NjQ4YzcwZWI0YWZhNTM3OTY0YjEzZGFkMzhlNDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0ltcGxpY2l0QW5pbWF0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9JbXBsaWNpdEFuaW1hdGlvbi5jcHAKQEAg
LTEwMiw3ICsxMDIsNyBAQCB2b2lkIEltcGxpY2l0QW5pbWF0aW9uOjpnZXRBbmltYXRlZFN0eWxl
KFJlZlB0cjxSZW5kZXJTdHlsZT4mIGFuaW1hdGVkU3R5bGUpCiBib29sIEltcGxpY2l0QW5pbWF0
aW9uOjpzdGFydEFuaW1hdGlvbihkb3VibGUgdGltZU9mZnNldCkKIHsKICAgICBpZiAobV9vYmpl
Y3QgJiYgbV9vYmplY3QtPmlzQ29tcG9zaXRlZCgpKQotICAgICAgICByZXR1cm4gdG9SZW5kZXJC
b3hNb2RlbE9iamVjdChtX29iamVjdCktPnN0YXJ0VHJhbnNpdGlvbih0aW1lT2Zmc2V0LCBtX2Fu
aW1hdGluZ1Byb3BlcnR5LCBtX2Zyb21TdHlsZS5nZXQoKSwgbV90b1N0eWxlLmdldCgpKTsKKyAg
ICAgICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlckJveE1vZGVsT2JqZWN0PigqbV9vYmplY3QpLnN0
YXJ0VHJhbnNpdGlvbih0aW1lT2Zmc2V0LCBtX2FuaW1hdGluZ1Byb3BlcnR5LCBtX2Zyb21TdHls
ZS5nZXQoKSwgbV90b1N0eWxlLmdldCgpKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTEx
Miw3ICsxMTIsNyBAQCB2b2lkIEltcGxpY2l0QW5pbWF0aW9uOjpwYXVzZUFuaW1hdGlvbihkb3Vi
bGUgdGltZU9mZnNldCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fb2JqZWN0LT5pc0Nv
bXBvc2l0ZWQoKSkKLSAgICAgICAgdG9SZW5kZXJCb3hNb2RlbE9iamVjdChtX29iamVjdCktPnRy
YW5zaXRpb25QYXVzZWQodGltZU9mZnNldCwgbV9hbmltYXRpbmdQcm9wZXJ0eSk7CisgICAgICAg
IGRvd25jYXN0PFJlbmRlckJveE1vZGVsT2JqZWN0PigqbV9vYmplY3QpLnRyYW5zaXRpb25QYXVz
ZWQodGltZU9mZnNldCwgbV9hbmltYXRpbmdQcm9wZXJ0eSk7CiAgICAgLy8gUmVzdG9yZSB0aGUg
b3JpZ2luYWwgKHVuYW5pbWF0ZWQpIHN0eWxlCiAgICAgaWYgKCFwYXVzZWQoKSkKICAgICAgICAg
c2V0TmVlZHNTdHlsZVJlY2FsYyhtX29iamVjdC0+ZWxlbWVudCgpKTsKQEAgLTEyMSw3ICsxMjEs
NyBAQCB2b2lkIEltcGxpY2l0QW5pbWF0aW9uOjpwYXVzZUFuaW1hdGlvbihkb3VibGUgdGltZU9m
ZnNldCkKIHZvaWQgSW1wbGljaXRBbmltYXRpb246OmVuZEFuaW1hdGlvbigpCiB7CiAgICAgaWYg
KG1fb2JqZWN0ICYmIG1fb2JqZWN0LT5pc0NvbXBvc2l0ZWQoKSkKLSAgICAgICAgdG9SZW5kZXJC
b3hNb2RlbE9iamVjdChtX29iamVjdCktPnRyYW5zaXRpb25GaW5pc2hlZChtX2FuaW1hdGluZ1By
b3BlcnR5KTsKKyAgICAgICAgZG93bmNhc3Q8UmVuZGVyQm94TW9kZWxPYmplY3Q+KCptX29iamVj
dCkudHJhbnNpdGlvbkZpbmlzaGVkKG1fYW5pbWF0aW5nUHJvcGVydHkpOwogfQogCiB2b2lkIElt
cGxpY2l0QW5pbWF0aW9uOjpvbkFuaW1hdGlvbkVuZChkb3VibGUgZWxhcHNlZFRpbWUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9LZXlmcmFtZUFuaW1hdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9LZXlmcmFtZUFuaW1hdGlvbi5jcHAK
aW5kZXggMDg5ZGY4ODlhNTdkODgzZWJhNjYyMDMwN2M1ZGMwMjI1MjJhZGRmNi4uMzYzOTc5ODY4
NTg3YjJkMDM1OWY0NjgzNThhNWQ1ZTc4YjhjZGMzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9hbmltYXRpb24vS2V5ZnJhbWVBbmltYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvYW5pbWF0aW9uL0tleWZyYW1lQW5pbWF0aW9uLmNwcApAQCAtMjA1LDkgKzIwNSw4
IEBAIGJvb2wgS2V5ZnJhbWVBbmltYXRpb246Omhhc0FuaW1hdGlvbkZvclByb3BlcnR5KENTU1By
b3BlcnR5SUQgcHJvcGVydHkpIGNvbnN0CiAKIGJvb2wgS2V5ZnJhbWVBbmltYXRpb246OnN0YXJ0
QW5pbWF0aW9uKGRvdWJsZSB0aW1lT2Zmc2V0KQogewotICAgIGlmIChtX29iamVjdCAmJiBtX29i
amVjdC0+aXNDb21wb3NpdGVkKCkpIHsKLSAgICAgICAgcmV0dXJuIHRvUmVuZGVyQm94TW9kZWxP
YmplY3QobV9vYmplY3QpLT5zdGFydEFuaW1hdGlvbih0aW1lT2Zmc2V0LCBtX2FuaW1hdGlvbi5n
ZXQoKSwgbV9rZXlmcmFtZXMpOwotICAgIH0KKyAgICBpZiAobV9vYmplY3QgJiYgbV9vYmplY3Qt
PmlzQ29tcG9zaXRlZCgpKQorICAgICAgICByZXR1cm4gZG93bmNhc3Q8UmVuZGVyQm94TW9kZWxP
YmplY3Q+KCptX29iamVjdCkuc3RhcnRBbmltYXRpb24odGltZU9mZnNldCwgbV9hbmltYXRpb24u
Z2V0KCksIG1fa2V5ZnJhbWVzKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTIxNyw3ICsy
MTYsNyBAQCB2b2lkIEtleWZyYW1lQW5pbWF0aW9uOjpwYXVzZUFuaW1hdGlvbihkb3VibGUgdGlt
ZU9mZnNldCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fb2JqZWN0LT5pc0NvbXBvc2l0
ZWQoKSkKLSAgICAgICAgdG9SZW5kZXJCb3hNb2RlbE9iamVjdChtX29iamVjdCktPmFuaW1hdGlv
blBhdXNlZCh0aW1lT2Zmc2V0LCBtX2tleWZyYW1lcy5hbmltYXRpb25OYW1lKCkpOworICAgICAg
ICBkb3duY2FzdDxSZW5kZXJCb3hNb2RlbE9iamVjdD4oKm1fb2JqZWN0KS5hbmltYXRpb25QYXVz
ZWQodGltZU9mZnNldCwgbV9rZXlmcmFtZXMuYW5pbWF0aW9uTmFtZSgpKTsKIAogICAgIC8vIFJl
c3RvcmUgdGhlIG9yaWdpbmFsICh1bmFuaW1hdGVkKSBzdHlsZQogICAgIGlmICghcGF1c2VkKCkp
CkBAIC0yMzAsNyArMjI5LDcgQEAgdm9pZCBLZXlmcmFtZUFuaW1hdGlvbjo6ZW5kQW5pbWF0aW9u
KCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fb2JqZWN0LT5pc0NvbXBvc2l0ZWQoKSkK
LSAgICAgICAgdG9SZW5kZXJCb3hNb2RlbE9iamVjdChtX29iamVjdCktPmFuaW1hdGlvbkZpbmlz
aGVkKG1fa2V5ZnJhbWVzLmFuaW1hdGlvbk5hbWUoKSk7CisgICAgICAgIGRvd25jYXN0PFJlbmRl
ckJveE1vZGVsT2JqZWN0PigqbV9vYmplY3QpLmFuaW1hdGlvbkZpbmlzaGVkKG1fa2V5ZnJhbWVz
LmFuaW1hdGlvbk5hbWUoKSk7CiAKICAgICAvLyBSZXN0b3JlIHRoZSBvcmlnaW5hbCAodW5hbmlt
YXRlZCkgc3R5bGUKICAgICBpZiAoIXBhdXNlZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9pb3MvRnJhbWVJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlP
Uy5tbQppbmRleCAyYWM0Y2ZkYzMzOTE4NmQ3OGM2YWQ5NGVjOTFiMmQwZTc5ZTM5ZWQ5Li42NGI2
YmZjMmFhYWUxNzRjNDBiYmE5Y2RiOGU4NWNhYzFkZjBjYzQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lv
cy9GcmFtZUlPUy5tbQpAQCAtODUzLDEyICs4NTMsMTIgQEAgdm9pZCBGcmFtZTo6b3ZlcmZsb3dT
Y3JvbGxQb3NpdGlvbkNoYW5nZWRGb3JOb2RlKGNvbnN0IEludFBvaW50JiBwb3NpdGlvbiwgTm9k
ZSoKICAgICBpZiAoIXJlbmRlcmVyIHx8ICFyZW5kZXJlci0+aGFzTGF5ZXIoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgUmVuZGVyTGF5ZXIqIGxheWVyID0gdG9SZW5kZXJCb3hNb2RlbE9iamVj
dChyZW5kZXJlciktPmxheWVyKCk7CisgICAgUmVuZGVyTGF5ZXImIGxheWVyID0gKmRvd25jYXN0
PFJlbmRlckJveE1vZGVsT2JqZWN0PigqcmVuZGVyZXIpLmxheWVyKCk7CiAKLSAgICBsYXllci0+
c2V0SXNVc2VyU2Nyb2xsKGlzVXNlclNjcm9sbCk7Ci0gICAgbGF5ZXItPnNjcm9sbFRvT2Zmc2V0
V2l0aG91dEFuaW1hdGlvbihwb3NpdGlvbik7Ci0gICAgbGF5ZXItPnNldElzVXNlclNjcm9sbChm
YWxzZSk7Ci0gICAgbGF5ZXItPmRpZEVuZFNjcm9sbCgpOyAvLyBGSVhNRTogU2hvdWxkIHdlIGFs
d2F5cyBjYWxsIHRoaXM/CisgICAgbGF5ZXIuc2V0SXNVc2VyU2Nyb2xsKGlzVXNlclNjcm9sbCk7
CisgICAgbGF5ZXIuc2Nyb2xsVG9PZmZzZXRXaXRob3V0QW5pbWF0aW9uKHBvc2l0aW9uKTsKKyAg
ICBsYXllci5zZXRJc1VzZXJTY3JvbGwoZmFsc2UpOworICAgIGxheWVyLmRpZEVuZFNjcm9sbCgp
OyAvLyBGSVhNRTogU2hvdWxkIHdlIGFsd2F5cyBjYWxsIHRoaXM/CiB9CiAKIHZvaWQgRnJhbWU6
OnJlc2V0QWxsR2VvbG9jYXRpb25QZXJtaXNzaW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAppbmRleCBiMmRiNzQ3
OGMwNTJmNWM5ODcyNTI0YWI4YTQ5Y2RkZmVjMjU0ZmQzLi41ZmFkNzlkYzBlMGVlNGY0ZmFkNzJm
YmM5ZGQyZTEwNWFhNGExZjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCkBAIC0zMTAsMTIgKzMxMCwxMiBAQCBi
b29sIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpoYXNWaXNpYmxlU2xvd1JlcGFpbnRWaWV3cG9ydENv
bnN0cmFpbmVkT2JqZWN0cyhGcmFtZQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBmb3Ig
KEZyYW1lVmlldzo6Vmlld3BvcnRDb25zdHJhaW5lZE9iamVjdFNldDo6Y29uc3RfaXRlcmF0b3Ig
aXQgPSB2aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cy0+YmVnaW4oKSwgZW5kID0gdmlld3BvcnRD
b25zdHJhaW5lZE9iamVjdHMtPmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgUmVu
ZGVyT2JqZWN0KiB2aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0ID0gKml0OwotICAgICAgICBpZiAo
IXZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3QtPmlzQm94TW9kZWxPYmplY3QoKSB8fCAhdmlld3Bv
cnRDb25zdHJhaW5lZE9iamVjdC0+aGFzTGF5ZXIoKSkKKyAgICAgICAgUmVuZGVyT2JqZWN0JiB2
aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0ID0gKippdDsKKyAgICAgICAgaWYgKCFpczxSZW5kZXJC
b3hNb2RlbE9iamVjdD4odmlld3BvcnRDb25zdHJhaW5lZE9iamVjdCkgfHwgIXZpZXdwb3J0Q29u
c3RyYWluZWRPYmplY3QuaGFzTGF5ZXIoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAg
ICAgICBSZW5kZXJMYXllciogbGF5ZXIgPSB0b1JlbmRlckJveE1vZGVsT2JqZWN0KHZpZXdwb3J0
Q29uc3RyYWluZWRPYmplY3QpLT5sYXllcigpOworICAgICAgICBSZW5kZXJMYXllciYgbGF5ZXIg
PSAqZG93bmNhc3Q8UmVuZGVyQm94TW9kZWxPYmplY3Q+KHZpZXdwb3J0Q29uc3RyYWluZWRPYmpl
Y3QpLmxheWVyKCk7CiAgICAgICAgIC8vIEFueSBleHBsaWNpdCByZWFzb24gdGhhdCBhIGZpeGVk
IHBvc2l0aW9uIGVsZW1lbnQgaXMgbm90IGNvbXBvc2l0ZWQgc2hvdWxkbid0IGNhdXNlIHNsb3cg
c2Nyb2xsaW5nLgotICAgICAgICBpZiAoIWxheWVyLT5pc0NvbXBvc2l0ZWQoKSAmJiBsYXllci0+
dmlld3BvcnRDb25zdHJhaW5lZE5vdENvbXBvc2l0ZWRSZWFzb24oKSA9PSBSZW5kZXJMYXllcjo6
Tm9Ob3RDb21wb3NpdGVkUmVhc29uKQorICAgICAgICBpZiAoIWxheWVyLmlzQ29tcG9zaXRlZCgp
ICYmIGxheWVyLnZpZXdwb3J0Q29uc3RyYWluZWROb3RDb21wb3NpdGVkUmVhc29uKCkgPT0gUmVu
ZGVyTGF5ZXI6Ok5vTm90Q29tcG9zaXRlZFJlYXNvbikKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvSW5saW5lQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lQm94
LmgKaW5kZXggODdiYzAxYjA1YzcxOTdkNGUzZjgyN2UwNTIzZjE5NjJiOGM2Mjc1Yi4uNTg2NjRk
OWZjYmQ1MDk0MzQ1Yjk2NmJhNzNjMmJmYjA5MDcyMDBkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0lubGluZUJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9JbmxpbmVCb3guaApAQCAtMjIsNiArMjIsNyBAQAogI2RlZmluZSBJbmxpbmVCb3hfaAogCiAj
aW5jbHVkZSAiUmVuZGVyQm94TW9kZWxPYmplY3QuaCIKKyNpbmNsdWRlICJSZW5kZXJUZXh0Lmgi
CiAjaW5jbHVkZSAiVGV4dERpcmVjdGlvbi5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0y
NTIsOSArMjUzLDkgQEAgcHVibGljOgogICAgIC8vIFVzZSB3aXRoIGNhdXRpb24hIFRoZSB0eXBl
IGlzIG5vdCBjaGVja2VkIQogICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiBib3hNb2RlbE9iamVj
dCgpIGNvbnN0CiAgICAgeyAKLSAgICAgICAgaWYgKCFtX3JlbmRlcmVyLmlzVGV4dCgpKQotICAg
ICAgICAgICAgcmV0dXJuICZ0b1JlbmRlckJveE1vZGVsT2JqZWN0KG1fcmVuZGVyZXIpOwotICAg
ICAgICByZXR1cm4gMDsKKyAgICAgICAgaWYgKCFpczxSZW5kZXJUZXh0PihtX3JlbmRlcmVyKSkK
KyAgICAgICAgICAgIHJldHVybiAmZG93bmNhc3Q8UmVuZGVyQm94TW9kZWxPYmplY3Q+KG1fcmVu
ZGVyZXIpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICBGbG9hdFBvaW50
IGxvY2F0aW9uSW5jbHVkaW5nRmxpcHBpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9JbmxpbmVFbGVtZW50Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
SW5saW5lRWxlbWVudEJveC5oCmluZGV4IDQyZTIxMDM1OGEzNGQ5NjcwNjc0M2Y4MWY1MDQ5ZTBh
ODNjZmJlZDQuLjQyNGU1NGI4ODhhYTBkYTJiM2UyZjJjNWZkYzdjYzEyZjU4MjEzNTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVFbGVtZW50Qm94LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUVsZW1lbnRCb3guaApAQCAtNDIsNyArNDIs
NyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIFJlbmRlckJveE1vZGVsT2JqZWN0JiBy
ZW5kZXJlcigpIGNvbnN0IHsgcmV0dXJuIHRvUmVuZGVyQm94TW9kZWxPYmplY3QoSW5saW5lQm94
OjpyZW5kZXJlcigpKTsgfQorICAgIFJlbmRlckJveE1vZGVsT2JqZWN0JiByZW5kZXJlcigpIGNv
bnN0IHsgcmV0dXJuIGRvd25jYXN0PFJlbmRlckJveE1vZGVsT2JqZWN0PihJbmxpbmVCb3g6OnJl
bmRlcmVyKCkpOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlTGluZSgpIG92ZXJyaWRlOwog
ICAgIHZpcnR1YWwgdm9pZCBleHRyYWN0TGluZSgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwCmluZGV4IDkzZTllN2E1Y2Y5YjJmMTdhZGYzMzU4
NDlmZDdlNGEyN2VmNzc0OGYuLmI5MmM0NWFhZjI2YThmMjNhNzlkZDNiZTY5NjU2YTQ0OTA2YWJl
YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAKQEAgLTY1
NSw3ICs2NTUsNyBAQCB2b2lkIElubGluZUZsb3dCb3g6OnBsYWNlQm94ZXNJbkJsb2NrRGlyZWN0
aW9uKExheW91dFVuaXQgdG9wLCBMYXlvdXRVbml0IG1heEhlaQogICAgICAgICAgICAgY29uc3Qg
Rm9udE1ldHJpY3MmIGZvbnRNZXRyaWNzID0gY2hpbGRMaW5lU3R5bGUuZm9udE1ldHJpY3MoKTsK
ICAgICAgICAgICAgIG5ld0xvZ2ljYWxUb3AgKz0gY3Vyci0+YmFzZWxpbmVQb3NpdGlvbihiYXNl
bGluZVR5cGUpIC0gZm9udE1ldHJpY3MuYXNjZW50KGJhc2VsaW5lVHlwZSk7CiAgICAgICAgICAg
ICBpZiAoY3Vyci0+aXNJbmxpbmVGbG93Qm94KCkpIHsKLSAgICAgICAgICAgICAgICBSZW5kZXJC
b3hNb2RlbE9iamVjdCYgYm94T2JqZWN0ID0gdG9SZW5kZXJCb3hNb2RlbE9iamVjdChjdXJyLT5y
ZW5kZXJlcigpKTsKKyAgICAgICAgICAgICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCYgYm94T2Jq
ZWN0ID0gZG93bmNhc3Q8UmVuZGVyQm94TW9kZWxPYmplY3Q+KGN1cnItPnJlbmRlcmVyKCkpOwog
ICAgICAgICAgICAgICAgIG5ld0xvZ2ljYWxUb3AgLT0gY2hpbGRMaW5lU3R5bGUuaXNIb3Jpem9u
dGFsV3JpdGluZ01vZGUoKQogICAgICAgICAgICAgICAgICAgICA/IGJveE9iamVjdC5ib3JkZXJU
b3AoKSArIGJveE9iamVjdC5wYWRkaW5nVG9wKCkKICAgICAgICAgICAgICAgICAgICAgOiBib3hP
YmplY3QuYm9yZGVyUmlnaHQoKSArIGJveE9iamVjdC5wYWRkaW5nUmlnaHQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5oCmluZGV4IGI5ZmJkOGViOTBhNWUwYTUyMmEw
ZjI0ZWU3NjdkNGU2ODFkYTY4YzYuLjhjNjZkNTY2YjcxMWE0OWU1YWU0ZjYyYTI2YmEwYzFiMGNi
ODdjZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guaApAQCAtNzUs
NyArNzUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBjb25zdCBjaGFyKiBib3hOYW1lKCkgY29u
c3Qgb3ZlcnJpZGU7CiAjZW5kaWYKIAotICAgIFJlbmRlckJveE1vZGVsT2JqZWN0JiByZW5kZXJl
cigpIGNvbnN0IHsgcmV0dXJuIHRvUmVuZGVyQm94TW9kZWxPYmplY3QoSW5saW5lQm94OjpyZW5k
ZXJlcigpKTsgfQorICAgIFJlbmRlckJveE1vZGVsT2JqZWN0JiByZW5kZXJlcigpIGNvbnN0IHsg
cmV0dXJuIGRvd25jYXN0PFJlbmRlckJveE1vZGVsT2JqZWN0PihJbmxpbmVCb3g6OnJlbmRlcmVy
KCkpOyB9CiAgICAgY29uc3QgUmVuZGVyU3R5bGUmIGxpbmVTdHlsZSgpIGNvbnN0IHsgcmV0dXJu
IGlzRmlyc3RMaW5lKCkgPyByZW5kZXJlcigpLmZpcnN0TGluZVN0eWxlKCkgOiByZW5kZXJlcigp
LnN0eWxlKCk7IH0KIAogICAgIElubGluZUZsb3dCb3gqIHByZXZMaW5lQm94KCkgY29uc3QgeyBy
ZXR1cm4gbV9wcmV2TGluZUJveDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0lubGluZVRleHRCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRl
eHRCb3guY3BwCmluZGV4IGIyZGE1OGJiNTVjZjkwYTYxZWViODgwNGQ5YzIwYWExZGNhNDlmZjYu
LmNhNTJmYTFlOTIxZTBiZGRmMzc0MTlmY2M1YmEyYzUxY2Y3YWEyNDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKQEAgLTE2OSw3ICsxNjksNyBAQCBpbnQg
SW5saW5lVGV4dEJveDo6YmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUgYmFzZWxpbmVUeXBl
KSBjb25zdAogICAgICAgICByZXR1cm4gMDsKICAgICBpZiAoJnBhcmVudCgpLT5yZW5kZXJlcigp
ID09IHJlbmRlcmVyKCkucGFyZW50KCkpCiAgICAgICAgIHJldHVybiBwYXJlbnQoKS0+YmFzZWxp
bmVQb3NpdGlvbihiYXNlbGluZVR5cGUpOwotICAgIHJldHVybiB0b1JlbmRlckJveE1vZGVsT2Jq
ZWN0KHJlbmRlcmVyKCkucGFyZW50KCkpLT5iYXNlbGluZVBvc2l0aW9uKGJhc2VsaW5lVHlwZSwg
aXNGaXJzdExpbmUoKSwgaXNIb3Jpem9udGFsKCkgPyBIb3Jpem9udGFsTGluZSA6IFZlcnRpY2Fs
TGluZSwgUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKTsKKyAgICByZXR1cm4gZG93bmNhc3Q8UmVu
ZGVyQm94TW9kZWxPYmplY3Q+KCpyZW5kZXJlcigpLnBhcmVudCgpKS5iYXNlbGluZVBvc2l0aW9u
KGJhc2VsaW5lVHlwZSwgaXNGaXJzdExpbmUoKSwgaXNIb3Jpem9udGFsKCkgPyBIb3Jpem9udGFs
TGluZSA6IFZlcnRpY2FsTGluZSwgUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKTsKIH0KIAogTGF5
b3V0VW5pdCBJbmxpbmVUZXh0Qm94OjpsaW5lSGVpZ2h0KCkgY29uc3QKQEAgLTE3OCw3ICsxNzgs
NyBAQCBMYXlvdXRVbml0IElubGluZVRleHRCb3g6OmxpbmVIZWlnaHQoKSBjb25zdAogICAgICAg
ICByZXR1cm4gMDsKICAgICBpZiAoJnBhcmVudCgpLT5yZW5kZXJlcigpID09IHJlbmRlcmVyKCku
cGFyZW50KCkpCiAgICAgICAgIHJldHVybiBwYXJlbnQoKS0+bGluZUhlaWdodCgpOwotICAgIHJl
dHVybiB0b1JlbmRlckJveE1vZGVsT2JqZWN0KHJlbmRlcmVyKCkucGFyZW50KCkpLT5saW5lSGVp
Z2h0KGlzRmlyc3RMaW5lKCksIGlzSG9yaXpvbnRhbCgpID8gSG9yaXpvbnRhbExpbmUgOiBWZXJ0
aWNhbExpbmUsIFBvc2l0aW9uT25Db250YWluaW5nTGluZSk7CisgICAgcmV0dXJuIGRvd25jYXN0
PFJlbmRlckJveE1vZGVsT2JqZWN0PigqcmVuZGVyZXIoKS5wYXJlbnQoKSkubGluZUhlaWdodChp
c0ZpcnN0TGluZSgpLCBpc0hvcml6b250YWwoKSA/IEhvcml6b250YWxMaW5lIDogVmVydGljYWxM
aW5lLCBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpOwogfQogCiBMYXlvdXRVbml0IElubGluZVRl
eHRCb3g6OnNlbGVjdGlvblRvcCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJsb2NrLmNwcAppbmRleCBiY2JhNTFjZjdkYjhlZTZjNzYzMDJmMjMyMGI0NmU2NzgxNDBiNThi
Li45ZjRmMGM2NWYxMzc4ODVjYmNiNjUxMDJmNDVmNWVlYTkyMDkxMDE0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTM1MywxNCArMzUzLDE0IEBAIFJlbmRl
ckJsb2NrKiBSZW5kZXJCbG9jazo6Y29udGludWF0aW9uQmVmb3JlKFJlbmRlck9iamVjdCogYmVm
b3JlQ2hpbGQpCiB2b2lkIFJlbmRlckJsb2NrOjphZGRDaGlsZFRvQ29udGludWF0aW9uKFJlbmRl
ck9iamVjdCogbmV3Q2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQpCiB7CiAgICAgUmVu
ZGVyQmxvY2sqIGZsb3cgPSBjb250aW51YXRpb25CZWZvcmUoYmVmb3JlQ2hpbGQpOwotICAgIEFT
U0VSVCghYmVmb3JlQ2hpbGQgfHwgYmVmb3JlQ2hpbGQtPnBhcmVudCgpLT5pc1JlbmRlckJsb2Nr
KCkpOwotICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiBiZWZvcmVDaGlsZFBhcmVudCA9IDA7Cisg
ICAgQVNTRVJUKCFiZWZvcmVDaGlsZCB8fCBpczxSZW5kZXJCbG9jaz4oKmJlZm9yZUNoaWxkLT5w
YXJlbnQoKSkpOworICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiBiZWZvcmVDaGlsZFBhcmVudCA9
IG51bGxwdHI7CiAgICAgaWYgKGJlZm9yZUNoaWxkKQotICAgICAgICBiZWZvcmVDaGlsZFBhcmVu
dCA9IHRvUmVuZGVyQm94TW9kZWxPYmplY3QoYmVmb3JlQ2hpbGQtPnBhcmVudCgpKTsKKyAgICAg
ICAgYmVmb3JlQ2hpbGRQYXJlbnQgPSBkb3duY2FzdDxSZW5kZXJCb3hNb2RlbE9iamVjdD4oYmVm
b3JlQ2hpbGQtPnBhcmVudCgpKTsKICAgICBlbHNlIHsKLSAgICAgICAgUmVuZGVyQm94TW9kZWxP
YmplY3QqIGNvbnQgPSBmbG93LT5jb250aW51YXRpb24oKTsKLSAgICAgICAgaWYgKGNvbnQpCi0g
ICAgICAgICAgICBiZWZvcmVDaGlsZFBhcmVudCA9IGNvbnQ7CisgICAgICAgIFJlbmRlckJveE1v
ZGVsT2JqZWN0KiBjb250aW51YXRpb24gPSBmbG93LT5jb250aW51YXRpb24oKTsKKyAgICAgICAg
aWYgKGNvbnRpbnVhdGlvbikKKyAgICAgICAgICAgIGJlZm9yZUNoaWxkUGFyZW50ID0gY29udGlu
dWF0aW9uOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBiZWZvcmVDaGlsZFBhcmVudCA9IGZs
b3c7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAppbmRleCBhNGUz
MjIyNjkxOGEwMjhlOTY3MzY5ODI1NWI2OTQzMjZhMWFiNDdkLi41ZGJjMmQxYWZjMWM2ZThiYjVl
Y2YzODYxN2JjYTdiYjljMmYzNmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
LmNwcApAQCAtMjkwNCw3ICsyOTA0LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmNvbXB1dGVS
ZXBsYWNlZExvZ2ljYWxXaWR0aFVzaW5nKExlbmd0aCBsb2dpY2FsV2lkdGgpIGNvbnMKICAgICAg
ICAgICAgIC8vIEZJWE1FOiBjb250YWluaW5nQmxvY2tMb2dpY2FsV2lkdGhGb3JDb250ZW50KCkg
aXMgd3JvbmcgaWYgdGhlIHJlcGxhY2VkIGVsZW1lbnQncyBibG9jay1mbG93IGlzIHBlcnBlbmRp
Y3VsYXIgdG8gdGhlCiAgICAgICAgICAgICAvLyBjb250YWluaW5nIGJsb2NrJ3MgYmxvY2stZmxv
dy4KICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD00NjQ5NgotICAgICAgICAgICAgY29uc3QgTGF5b3V0VW5pdCBjdyA9IGlzT3V0T2ZGbG93UG9z
aXRpb25lZCgpID8gY29udGFpbmluZ0Jsb2NrTG9naWNhbFdpZHRoRm9yUG9zaXRpb25lZCh0b1Jl
bmRlckJveE1vZGVsT2JqZWN0KGNvbnRhaW5lcigpKSkgOiBjb250YWluaW5nQmxvY2tMb2dpY2Fs
V2lkdGhGb3JDb250ZW50KCk7CisgICAgICAgICAgICBjb25zdCBMYXlvdXRVbml0IGN3ID0gaXNP
dXRPZkZsb3dQb3NpdGlvbmVkKCkgPyBjb250YWluaW5nQmxvY2tMb2dpY2FsV2lkdGhGb3JQb3Np
dGlvbmVkKGRvd25jYXN0PFJlbmRlckJveE1vZGVsT2JqZWN0Pihjb250YWluZXIoKSkpIDogY29u
dGFpbmluZ0Jsb2NrTG9naWNhbFdpZHRoRm9yQ29udGVudCgpOwogICAgICAgICAgICAgTGVuZ3Ro
IGNvbnRhaW5lckxvZ2ljYWxXaWR0aCA9IGNvbnRhaW5pbmdCbG9jaygpLT5zdHlsZSgpLmxvZ2lj
YWxXaWR0aCgpOwogICAgICAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBjYXNlcyB3aGVuIGNvbnRh
aW5pbmcgYmxvY2sgd2lkdGggaXMgY2FsY3VsYXRlZCBvciB2aWV3cG9ydCBwZXJjZW50LgogICAg
ICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxMDcx
CkBAIC0yOTY5LDcgKzI5NjksNyBAQCBMYXlvdXRVbml0IFJlbmRlckJveDo6Y29tcHV0ZVJlcGxh
Y2VkTG9naWNhbEhlaWdodFVzaW5nKExlbmd0aCBsb2dpY2FsSGVpZ2h0KSBjbwogICAgICAgICAg
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2NDk2CiAgICAg
ICAgICAgICBMYXlvdXRVbml0IGF2YWlsYWJsZUhlaWdodDsKICAgICAgICAgICAgIGlmIChpc091
dE9mRmxvd1Bvc2l0aW9uZWQoKSkKLSAgICAgICAgICAgICAgICBhdmFpbGFibGVIZWlnaHQgPSBj
b250YWluaW5nQmxvY2tMb2dpY2FsSGVpZ2h0Rm9yUG9zaXRpb25lZCh0b1JlbmRlckJveE1vZGVs
T2JqZWN0KGNiKSk7CisgICAgICAgICAgICAgICAgYXZhaWxhYmxlSGVpZ2h0ID0gY29udGFpbmlu
Z0Jsb2NrTG9naWNhbEhlaWdodEZvclBvc2l0aW9uZWQoZG93bmNhc3Q8UmVuZGVyQm94TW9kZWxP
YmplY3Q+KGNiKSk7CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBhdmFpbGFi
bGVIZWlnaHQgPSBjb250YWluaW5nQmxvY2tMb2dpY2FsSGVpZ2h0Rm9yQ29udGVudChJbmNsdWRl
TWFyZ2luQm9yZGVyUGFkZGluZyk7CiAgICAgICAgICAgICAgICAgLy8gSXQgaXMgbmVjZXNzYXJ5
IHRvIHVzZSB0aGUgYm9yZGVyLWJveCB0byBtYXRjaCBXaW5JRSdzIGJyb2tlbgpAQCAtMzI0OCw3
ICszMjQ4LDcgQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbFdpZHRo
KExvZ2ljYWxFeHRlbnRDb21wdXRlZFZhbHVlcyYgY29tcHUKIAogICAgIC8vIFdlIGRvbid0IHVz
ZSBjb250YWluaW5nQmxvY2soKSwgc2luY2Ugd2UgbWF5IGJlIHBvc2l0aW9uZWQgYnkgYW4gZW5j
bG9zaW5nCiAgICAgLy8gcmVsYXRpdmUgcG9zaXRpb25lZCBpbmxpbmUuCi0gICAgY29uc3QgUmVu
ZGVyQm94TW9kZWxPYmplY3QqIGNvbnRhaW5lckJsb2NrID0gdG9SZW5kZXJCb3hNb2RlbE9iamVj
dChjb250YWluZXIoKSk7CisgICAgY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QqIGNvbnRhaW5l
ckJsb2NrID0gZG93bmNhc3Q8UmVuZGVyQm94TW9kZWxPYmplY3Q+KGNvbnRhaW5lcigpKTsKICAg
ICAKICAgICBjb25zdCBMYXlvdXRVbml0IGNvbnRhaW5lckxvZ2ljYWxXaWR0aCA9IGNvbnRhaW5p
bmdCbG9ja0xvZ2ljYWxXaWR0aEZvclBvc2l0aW9uZWQoY29udGFpbmVyQmxvY2ssIHJlZ2lvbik7
CiAKQEAgLTM1NzYsNyArMzU3Niw3IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25l
ZExvZ2ljYWxIZWlnaHQoTG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzJiBjb21wCiAKIAogICAg
IC8vIFdlIGRvbid0IHVzZSBjb250YWluaW5nQmxvY2soKSwgc2luY2Ugd2UgbWF5IGJlIHBvc2l0
aW9uZWQgYnkgYW4gZW5jbG9zaW5nIHJlbHBvc2l0aW9uZWQgaW5saW5lLgotICAgIGNvbnN0IFJl
bmRlckJveE1vZGVsT2JqZWN0KiBjb250YWluZXJCbG9jayA9IHRvUmVuZGVyQm94TW9kZWxPYmpl
Y3QoY29udGFpbmVyKCkpOworICAgIGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiBjb250YWlu
ZXJCbG9jayA9IGRvd25jYXN0PFJlbmRlckJveE1vZGVsT2JqZWN0Pihjb250YWluZXIoKSk7CiAK
ICAgICBjb25zdCBMYXlvdXRVbml0IGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQgPSBjb250YWluaW5n
QmxvY2tMb2dpY2FsSGVpZ2h0Rm9yUG9zaXRpb25lZChjb250YWluZXJCbG9jayk7CiAKQEAgLTM4
MjksMTAgKzM4MjksMTAgQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNh
bFdpZHRoUmVwbGFjZWQoTG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWUKIAogICAgIC8vIFdlIGRv
bid0IHVzZSBjb250YWluaW5nQmxvY2soKSwgc2luY2Ugd2UgbWF5IGJlIHBvc2l0aW9uZWQgYnkg
YW4gZW5jbG9zaW5nCiAgICAgLy8gcmVsYXRpdmUgcG9zaXRpb25lZCBpbmxpbmUuCi0gICAgY29u
c3QgUmVuZGVyQm94TW9kZWxPYmplY3QqIGNvbnRhaW5lckJsb2NrID0gdG9SZW5kZXJCb3hNb2Rl
bE9iamVjdChjb250YWluZXIoKSk7CisgICAgY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QqIGNv
bnRhaW5lckJsb2NrID0gZG93bmNhc3Q8UmVuZGVyQm94TW9kZWxPYmplY3Q+KGNvbnRhaW5lcigp
KTsKIAogICAgIGNvbnN0IExheW91dFVuaXQgY29udGFpbmVyTG9naWNhbFdpZHRoID0gY29udGFp
bmluZ0Jsb2NrTG9naWNhbFdpZHRoRm9yUG9zaXRpb25lZChjb250YWluZXJCbG9jayk7Ci0gICAg
Y29uc3QgTGF5b3V0VW5pdCBjb250YWluZXJSZWxhdGl2ZUxvZ2ljYWxXaWR0aCA9IGNvbnRhaW5p
bmdCbG9ja0xvZ2ljYWxXaWR0aEZvclBvc2l0aW9uZWQoY29udGFpbmVyQmxvY2ssIDAsIGZhbHNl
KTsKKyAgICBjb25zdCBMYXlvdXRVbml0IGNvbnRhaW5lclJlbGF0aXZlTG9naWNhbFdpZHRoID0g
Y29udGFpbmluZ0Jsb2NrTG9naWNhbFdpZHRoRm9yUG9zaXRpb25lZChjb250YWluZXJCbG9jaywg
bnVsbHB0ciwgZmFsc2UpOwogCiAgICAgLy8gVG8gbWF0Y2ggV2luSUUsIGluIHF1aXJrcyBtb2Rl
IHVzZSB0aGUgcGFyZW50J3MgJ2RpcmVjdGlvbicgcHJvcGVydHkKICAgICAvLyBpbnN0ZWFkIG9m
IHRoZSB0aGUgY29udGFpbmVyIGJsb2NrJ3MuCkBAIC0zOTk3LDEwICszOTk3LDEwIEBAIHZvaWQg
UmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxIZWlnaHRSZXBsYWNlZChMb2dpY2Fs
RXh0ZW50Q29tcHV0ZWRWYWx1CiAgICAgLy8gdGhlIG51bWJlcnMgY29ycmVzcG9uZCB0byBudW1i
ZXJzIGluIHNwZWMpCiAKICAgICAvLyBXZSBkb24ndCB1c2UgY29udGFpbmluZ0Jsb2NrKCksIHNp
bmNlIHdlIG1heSBiZSBwb3NpdGlvbmVkIGJ5IGFuIGVuY2xvc2luZyByZWxwb3NpdGlvbmVkIGlu
bGluZS4KLSAgICBjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCogY29udGFpbmVyQmxvY2sgPSB0
b1JlbmRlckJveE1vZGVsT2JqZWN0KGNvbnRhaW5lcigpKTsKKyAgICBjb25zdCBSZW5kZXJCb3hN
b2RlbE9iamVjdCogY29udGFpbmVyQmxvY2sgPSBkb3duY2FzdDxSZW5kZXJCb3hNb2RlbE9iamVj
dD4oY29udGFpbmVyKCkpOwogCiAgICAgY29uc3QgTGF5b3V0VW5pdCBjb250YWluZXJMb2dpY2Fs
SGVpZ2h0ID0gY29udGFpbmluZ0Jsb2NrTG9naWNhbEhlaWdodEZvclBvc2l0aW9uZWQoY29udGFp
bmVyQmxvY2spOwotICAgIGNvbnN0IExheW91dFVuaXQgY29udGFpbmVyUmVsYXRpdmVMb2dpY2Fs
V2lkdGggPSBjb250YWluaW5nQmxvY2tMb2dpY2FsV2lkdGhGb3JQb3NpdGlvbmVkKGNvbnRhaW5l
ckJsb2NrLCAwLCBmYWxzZSk7CisgICAgY29uc3QgTGF5b3V0VW5pdCBjb250YWluZXJSZWxhdGl2
ZUxvZ2ljYWxXaWR0aCA9IGNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxXaWR0aEZvclBvc2l0aW9uZWQo
Y29udGFpbmVyQmxvY2ssIG51bGxwdHIsIGZhbHNlKTsKIAogICAgIC8vIFZhcmlhYmxlcyB0byBz
b2x2ZS4KICAgICBMZW5ndGggbWFyZ2luQmVmb3JlID0gc3R5bGUoKS5tYXJnaW5CZWZvcmUoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVj
dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgKaW5k
ZXggNzFiOTkzZWJmYmZmMDhmODY0MGEzMDViZjMzMDcyYWFkMWY3NDUyZC4uMDNhZjg2MTk1ZGJl
ZGM3NTY4ZDJhODBhODk3NTY0MDQ4ZTljNjhiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgKQEAgLTMzOSw4ICszMzksNiBAQCBwcml2YXRl
OgogICAgIHZvaWQgcGl4ZWxTbmFwQmFja2dyb3VuZEltYWdlR2VvbWV0cnlGb3JQYWludGluZyhC
YWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeSYpIGNvbnN0OwogfTsKIAotUkVOREVSX09CSkVDVF9UWVBF
X0NBU1RTKFJlbmRlckJveE1vZGVsT2JqZWN0LCBpc0JveE1vZGVsT2JqZWN0KCkpCi0KIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIAogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19SRU5ERVJfT0JKRUNU
KFJlbmRlckJveE1vZGVsT2JqZWN0LCBpc0JveE1vZGVsT2JqZWN0KCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHAKaW5kZXggOGQ5YTI3MzBiODRhNjM5
YWRiZTFlYzJiNmZjMmIyZDRjMDRjNDhlNC4uZmE0YWVmZTVmYmVjOWZkMzA2Yzg3ZmE3YjIwODY3
M2EyNTBmMzlmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZs
b3dUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhy
ZWFkLmNwcApAQCAtNDM1LDcgKzQzNSw3IEBAIExheW91dFBvaW50IFJlbmRlckZsb3dUaHJlYWQ6
OmFkanVzdGVkUG9zaXRpb25SZWxhdGl2ZVRvT2Zmc2V0UGFyZW50KGNvbnN0IFJlbmRlCiAgICAg
UmVuZGVyUmVnaW9uKiBzdGFydFJlZ2lvbiA9IHJlZ2lvbkF0QmxvY2tPZmZzZXQob2JqQ29udGFp
bmluZ0Jsb2NrLCByZWZlcmVuY2VQb2ludC55KCkpOwogICAgIGlmIChzdGFydFJlZ2lvbikgewog
ICAgICAgICAvLyBUYWtlIGludG8gYWNjb3VudCB0aGUgb2Zmc2V0IGNvb3JkaW5hdGVzIG9mIHRo
ZSByZWdpb24uCi0gICAgICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiBzdGFydFJlZ2lvbkJveCA9
IHN0YXJ0UmVnaW9uLT5pc1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50KCkgPyB0b1JlbmRlckJveE1v
ZGVsT2JqZWN0KHN0YXJ0UmVnaW9uLT5wYXJlbnQoKSkgOiBzdGFydFJlZ2lvbjsKKyAgICAgICAg
UmVuZGVyQm94TW9kZWxPYmplY3QqIHN0YXJ0UmVnaW9uQm94ID0gaXM8UmVuZGVyTmFtZWRGbG93
RnJhZ21lbnQ+KCpzdGFydFJlZ2lvbikgPyBkb3duY2FzdDxSZW5kZXJCb3hNb2RlbE9iamVjdD4o
c3RhcnRSZWdpb24tPnBhcmVudCgpKSA6IHN0YXJ0UmVnaW9uOwogICAgICAgICBSZW5kZXJCb3hN
b2RlbE9iamVjdCogY3Vyck9iamVjdCA9IHN0YXJ0UmVnaW9uQm94OwogICAgICAgICBSZW5kZXJC
b3hNb2RlbE9iamVjdCogY3Vyck9mZnNldFBhcmVudDsKICAgICAgICAgd2hpbGUgKChjdXJyT2Zm
c2V0UGFyZW50ID0gY3Vyck9iamVjdC0+b2Zmc2V0UGFyZW50KCkpKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCmluZGV4IDFmZDM2YWFhOTRjNTJjNzU1NzY5MDI3
N2U5ZjcxYTZkYzdiYmZjOTQuLjljN2U0NWJjMGI3OGNmNzkyZjk0MTgxNTRmNDU2NWRjMGZlZTZi
M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCkBAIC0zNjgs
MTAgKzM2OCwxMCBAQCB2b2lkIFJlbmRlcklubGluZTo6c3BsaXRJbmxpbmVzKFJlbmRlckJsb2Nr
KiBmcm9tQmxvY2ssIFJlbmRlckJsb2NrKiB0b0Jsb2NrLAogCiAgICAgLy8gTm93IHRha2UgYWxs
IG9mIHRoZSBjaGlsZHJlbiBmcm9tIGJlZm9yZUNoaWxkIHRvIHRoZSBlbmQgYW5kIHJlbW92ZQog
ICAgIC8vIHRoZW0gZnJvbSB8dGhpc3wgYW5kIHBsYWNlIHRoZW0gaW4gdGhlIGNsb25lLgotICAg
IFJlbmRlck9iamVjdCogbyA9IGJlZm9yZUNoaWxkOwotICAgIHdoaWxlIChvKSB7Ci0gICAgICAg
IFJlbmRlck9iamVjdCogdG1wID0gbzsKLSAgICAgICAgbyA9IHRtcC0+bmV4dFNpYmxpbmcoKTsK
KyAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gYmVmb3JlQ2hpbGQ7CisgICAgd2hpbGUgKHJl
bmRlcmVyKSB7CisgICAgICAgIFJlbmRlck9iamVjdCogdG1wID0gcmVuZGVyZXI7CisgICAgICAg
IHJlbmRlcmVyID0gdG1wLT5uZXh0U2libGluZygpOwogICAgICAgICByZW1vdmVDaGlsZEludGVy
bmFsKCp0bXAsIE5vdGlmeUNoaWxkcmVuKTsKICAgICAgICAgY2xvbmVJbmxpbmUtPmFkZENoaWxk
SWdub3JpbmdDb250aW51YXRpb24odG1wKTsKICAgICAgICAgdG1wLT5zZXROZWVkc0xheW91dEFu
ZFByZWZXaWR0aHNSZWNhbGMoKTsKQEAgLTM4Myw4ICszODMsOCBAQCB2b2lkIFJlbmRlcklubGlu
ZTo6c3BsaXRJbmxpbmVzKFJlbmRlckJsb2NrKiBmcm9tQmxvY2ssIFJlbmRlckJsb2NrKiB0b0Js
b2NrLAogICAgIC8vIFdlIGhhdmUgYmVlbiByZXBhcmVudGVkIGFuZCBhcmUgbm93IHVuZGVyIHRo
ZSBmcm9tQmxvY2suICBXZSBuZWVkCiAgICAgLy8gdG8gd2FsayB1cCBvdXIgaW5saW5lIHBhcmVu
dCBjaGFpbiB1bnRpbCB3ZSBoaXQgdGhlIGNvbnRhaW5pbmcgYmxvY2suCiAgICAgLy8gT25jZSB3
ZSBoaXQgdGhlIGNvbnRhaW5pbmcgYmxvY2sgd2UncmUgZG9uZS4KLSAgICBSZW5kZXJCb3hNb2Rl
bE9iamVjdCogY3VyciA9IHRvUmVuZGVyQm94TW9kZWxPYmplY3QocGFyZW50KCkpOwotICAgIFJl
bmRlckJveE1vZGVsT2JqZWN0KiBjdXJyQ2hpbGQgPSB0aGlzOworICAgIFJlbmRlckJveE1vZGVs
T2JqZWN0KiBjdXJyZW50ID0gZG93bmNhc3Q8UmVuZGVyQm94TW9kZWxPYmplY3Q+KHBhcmVudCgp
KTsKKyAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogY3VycmVudENoaWxkID0gdGhpczsKICAgICAK
ICAgICAvLyBGSVhNRTogQmVjYXVzZSBzcGxpdHRpbmcgaXMgTyhuXjIpIGFzIHRhZ3MgbmVzdCBw
YXRob2xvZ2ljYWxseSwgd2UgY2FwIHRoZSBkZXB0aCBhdCB3aGljaCB3ZSdyZSB3aWxsaW5nIHRv
IGNsb25lLgogICAgIC8vIFRoZXJlIHdpbGwgZXZlbnR1YWxseSBiZSBhIGJldHRlciBhcHByb2Fj
aCB0byB0aGlzIHByb2JsZW0gdGhhdCB3aWxsIGxldCB1cyBuZXN0IHRvIGEgbXVjaApAQCAtMzky
LDQ5ICszOTIsNDggQEAgdm9pZCBSZW5kZXJJbmxpbmU6OnNwbGl0SW5saW5lcyhSZW5kZXJCbG9j
ayogZnJvbUJsb2NrLCBSZW5kZXJCbG9jayogdG9CbG9jaywKICAgICAvLyBpbmNvcnJlY3QgcmVu
ZGVyaW5nLCBidXQgdGhlIGFsdGVybmF0aXZlIGlzIHRvIGhhbmcgZm9yZXZlci4KICAgICB1bnNp
Z25lZCBzcGxpdERlcHRoID0gMTsKICAgICBjb25zdCB1bnNpZ25lZCBjTWF4U3BsaXREZXB0aCA9
IDIwMDsgCi0gICAgd2hpbGUgKGN1cnIgJiYgY3VyciAhPSBmcm9tQmxvY2spIHsKLSAgICAgICAg
QVNTRVJUKGN1cnItPmlzUmVuZGVySW5saW5lKCkpOworICAgIHdoaWxlIChjdXJyZW50ICYmIGN1
cnJlbnQgIT0gZnJvbUJsb2NrKSB7CiAgICAgICAgIGlmIChzcGxpdERlcHRoIDwgY01heFNwbGl0
RGVwdGgpIHsKICAgICAgICAgICAgIC8vIENyZWF0ZSBhIG5ldyBjbG9uZS4KICAgICAgICAgICAg
IFJlbmRlclB0cjxSZW5kZXJJbmxpbmU+IGNsb25lQ2hpbGQgPSBXVEY6Om1vdmUoY2xvbmVJbmxp
bmUpOwotICAgICAgICAgICAgY2xvbmVJbmxpbmUgPSB0b1JlbmRlcklubGluZShjdXJyKS0+Y2xv
bmUoKTsKKyAgICAgICAgICAgIGNsb25lSW5saW5lID0gZG93bmNhc3Q8UmVuZGVySW5saW5lPigq
Y3VycmVudCkuY2xvbmUoKTsKIAogICAgICAgICAgICAgLy8gSW5zZXJ0IG91ciBjaGlsZCBjbG9u
ZSBhcyB0aGUgZmlyc3QgY2hpbGQuCiAgICAgICAgICAgICBjbG9uZUlubGluZS0+YWRkQ2hpbGRJ
Z25vcmluZ0NvbnRpbnVhdGlvbihjbG9uZUNoaWxkLmxlYWtQdHIoKSk7CiAKICAgICAgICAgICAg
IC8vIEhvb2sgdGhlIGNsb25lIHVwIGFzIGEgY29udGludWF0aW9uIG9mIHxjdXJyfC4KLSAgICAg
ICAgICAgIFJlbmRlcklubGluZSogaW5saW5lQ3VyciA9IHRvUmVuZGVySW5saW5lKGN1cnIpOwot
ICAgICAgICAgICAgb2xkQ29udCA9IGlubGluZUN1cnItPmNvbnRpbnVhdGlvbigpOwotICAgICAg
ICAgICAgaW5saW5lQ3Vyci0+c2V0Q29udGludWF0aW9uKGNsb25lSW5saW5lLmdldCgpKTsKKyAg
ICAgICAgICAgIFJlbmRlcklubGluZSYgY3VycmVudElubGluZSA9IGRvd25jYXN0PFJlbmRlcklu
bGluZT4oKmN1cnJlbnQpOworICAgICAgICAgICAgb2xkQ29udCA9IGN1cnJlbnRJbmxpbmUuY29u
dGludWF0aW9uKCk7CisgICAgICAgICAgICBjdXJyZW50SW5saW5lLnNldENvbnRpbnVhdGlvbihj
bG9uZUlubGluZS5nZXQoKSk7CiAgICAgICAgICAgICBjbG9uZUlubGluZS0+c2V0Q29udGludWF0
aW9uKG9sZENvbnQpOwogCiAgICAgICAgICAgICAvLyBOb3cgd2UgbmVlZCB0byB0YWtlIGFsbCBv
ZiB0aGUgY2hpbGRyZW4gc3RhcnRpbmcgZnJvbSB0aGUgZmlyc3QgY2hpbGQKLSAgICAgICAgICAg
IC8vICphZnRlciogY3VyckNoaWxkIGFuZCBhcHBlbmQgdGhlbSBhbGwgdG8gdGhlIGNsb25lLgot
ICAgICAgICAgICAgbyA9IGN1cnJDaGlsZC0+bmV4dFNpYmxpbmcoKTsKLSAgICAgICAgICAgIHdo
aWxlIChvKSB7Ci0gICAgICAgICAgICAgICAgUmVuZGVyT2JqZWN0KiB0bXAgPSBvOwotICAgICAg
ICAgICAgICAgIG8gPSB0bXAtPm5leHRTaWJsaW5nKCk7Ci0gICAgICAgICAgICAgICAgaW5saW5l
Q3Vyci0+cmVtb3ZlQ2hpbGRJbnRlcm5hbCgqdG1wLCBOb3RpZnlDaGlsZHJlbik7CisgICAgICAg
ICAgICAvLyAqYWZ0ZXIqIGN1cnJlbnRDaGlsZCBhbmQgYXBwZW5kIHRoZW0gYWxsIHRvIHRoZSBj
bG9uZS4KKyAgICAgICAgICAgIHJlbmRlcmVyID0gY3VycmVudENoaWxkLT5uZXh0U2libGluZygp
OworICAgICAgICAgICAgd2hpbGUgKHJlbmRlcmVyKSB7CisgICAgICAgICAgICAgICAgUmVuZGVy
T2JqZWN0KiB0bXAgPSByZW5kZXJlcjsKKyAgICAgICAgICAgICAgICByZW5kZXJlciA9IHRtcC0+
bmV4dFNpYmxpbmcoKTsKKyAgICAgICAgICAgICAgICBjdXJyZW50SW5saW5lLnJlbW92ZUNoaWxk
SW50ZXJuYWwoKnRtcCwgTm90aWZ5Q2hpbGRyZW4pOwogICAgICAgICAgICAgICAgIGNsb25lSW5s
aW5lLT5hZGRDaGlsZElnbm9yaW5nQ29udGludWF0aW9uKHRtcCk7CiAgICAgICAgICAgICAgICAg
dG1wLT5zZXROZWVkc0xheW91dEFuZFByZWZXaWR0aHNSZWNhbGMoKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgLy8gS2VlcCB3YWxraW5nIHVwIHRoZSBjaGFp
bi4KLSAgICAgICAgY3VyckNoaWxkID0gY3VycjsKLSAgICAgICAgY3VyciA9IHRvUmVuZGVyQm94
TW9kZWxPYmplY3QoY3Vyci0+cGFyZW50KCkpOwotICAgICAgICBzcGxpdERlcHRoKys7CisgICAg
ICAgIGN1cnJlbnRDaGlsZCA9IGN1cnJlbnQ7CisgICAgICAgIGN1cnJlbnQgPSBkb3duY2FzdDxS
ZW5kZXJCb3hNb2RlbE9iamVjdD4oY3VycmVudC0+cGFyZW50KCkpOworICAgICAgICArK3NwbGl0
RGVwdGg7CiAgICAgfQogCiAgICAgLy8gTm93IHdlIGFyZSBhdCB0aGUgYmxvY2sgbGV2ZWwuIFdl
IG5lZWQgdG8gcHV0IHRoZSBjbG9uZSBpbnRvIHRoZSB0b0Jsb2NrLgogICAgIHRvQmxvY2stPmlu
c2VydENoaWxkSW50ZXJuYWwoY2xvbmVJbmxpbmUubGVha1B0cigpLCBudWxscHRyLCBOb3RpZnlD
aGlsZHJlbik7CiAKLSAgICAvLyBOb3cgdGFrZSBhbGwgdGhlIGNoaWxkcmVuIGFmdGVyIGN1cnJD
aGlsZCBhbmQgcmVtb3ZlIHRoZW0gZnJvbSB0aGUgZnJvbUJsb2NrCisgICAgLy8gTm93IHRha2Ug
YWxsIHRoZSBjaGlsZHJlbiBhZnRlciBjdXJyZW50Q2hpbGQgYW5kIHJlbW92ZSB0aGVtIGZyb20g
dGhlIGZyb21CbG9jawogICAgIC8vIGFuZCBwdXQgdGhlbSBpbiB0aGUgdG9CbG9jay4KLSAgICBv
ID0gY3VyckNoaWxkLT5uZXh0U2libGluZygpOwotICAgIHdoaWxlIChvKSB7Ci0gICAgICAgIFJl
bmRlck9iamVjdCogdG1wID0gbzsKLSAgICAgICAgbyA9IHRtcC0+bmV4dFNpYmxpbmcoKTsKKyAg
ICByZW5kZXJlciA9IGN1cnJlbnRDaGlsZC0+bmV4dFNpYmxpbmcoKTsKKyAgICB3aGlsZSAocmVu
ZGVyZXIpIHsKKyAgICAgICAgUmVuZGVyT2JqZWN0KiB0bXAgPSByZW5kZXJlcjsKKyAgICAgICAg
cmVuZGVyZXIgPSB0bXAtPm5leHRTaWJsaW5nKCk7CiAgICAgICAgIGZyb21CbG9jay0+cmVtb3Zl
Q2hpbGRJbnRlcm5hbCgqdG1wLCBOb3RpZnlDaGlsZHJlbik7CiAgICAgICAgIHRvQmxvY2stPmlu
c2VydENoaWxkSW50ZXJuYWwodG1wLCBudWxscHRyLCBOb3RpZnlDaGlsZHJlbik7CiAgICAgfQpA
QCAtNTA4LDE0ICs1MDcsMTMgQEAgdm9pZCBSZW5kZXJJbmxpbmU6OnNwbGl0RmxvdyhSZW5kZXJP
YmplY3QqIGJlZm9yZUNoaWxkLCBSZW5kZXJCbG9jayogbmV3QmxvY2tCb3gKIHZvaWQgUmVuZGVy
SW5saW5lOjphZGRDaGlsZFRvQ29udGludWF0aW9uKFJlbmRlck9iamVjdCogbmV3Q2hpbGQsIFJl
bmRlck9iamVjdCogYmVmb3JlQ2hpbGQpCiB7CiAgICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIGZs
b3cgPSBjb250aW51YXRpb25CZWZvcmUoYmVmb3JlQ2hpbGQpOwotICAgIEFTU0VSVCghYmVmb3Jl
Q2hpbGQgfHwgYmVmb3JlQ2hpbGQtPnBhcmVudCgpLT5pc1JlbmRlckJsb2NrKCkgfHwgYmVmb3Jl
Q2hpbGQtPnBhcmVudCgpLT5pc1JlbmRlcklubGluZSgpKTsKLSAgICBSZW5kZXJCb3hNb2RlbE9i
amVjdCogYmVmb3JlQ2hpbGRQYXJlbnQgPSAwOworICAgIEFTU0VSVCghYmVmb3JlQ2hpbGQgfHwg
aXM8UmVuZGVyQmxvY2s+KCpiZWZvcmVDaGlsZC0+cGFyZW50KCkpIHx8IGlzPFJlbmRlcklubGlu
ZT4oKmJlZm9yZUNoaWxkLT5wYXJlbnQoKSkpOworICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiBi
ZWZvcmVDaGlsZFBhcmVudCA9IG51bGxwdHI7CiAgICAgaWYgKGJlZm9yZUNoaWxkKQotICAgICAg
ICBiZWZvcmVDaGlsZFBhcmVudCA9IHRvUmVuZGVyQm94TW9kZWxPYmplY3QoYmVmb3JlQ2hpbGQt
PnBhcmVudCgpKTsKKyAgICAgICAgYmVmb3JlQ2hpbGRQYXJlbnQgPSBkb3duY2FzdDxSZW5kZXJC
b3hNb2RlbE9iamVjdD4oYmVmb3JlQ2hpbGQtPnBhcmVudCgpKTsKICAgICBlbHNlIHsKLSAgICAg
ICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIGNvbnQgPSBuZXh0Q29udGludWF0aW9uKGZsb3cpOwot
ICAgICAgICBpZiAoY29udCkKLSAgICAgICAgICAgIGJlZm9yZUNoaWxkUGFyZW50ID0gY29udDsK
KyAgICAgICAgaWYgKFJlbmRlckJveE1vZGVsT2JqZWN0KiBjb250aW51YXRpb24gPSBuZXh0Q29u
dGludWF0aW9uKGZsb3cpKQorICAgICAgICAgICAgYmVmb3JlQ2hpbGRQYXJlbnQgPSBjb250aW51
YXRpb247CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGJlZm9yZUNoaWxkUGFyZW50ID0gZmxv
dzsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCBj
N2IwYzc1OGU2ZDhhODFiOGVmM2JmODYwOTE0ZWEzZGI2MzAyM2EwLi43NjljMjllZGE3ZmUyYTZi
ZGYzMDMzZTM2ZjgzMjk0YzIzOWMzNzNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllci5jcHAKQEAgLTEyNTEsNyArMTI1MSw3IEBAIGJvb2wgUmVuZGVyTGF5ZXI6OnVwZGF0
ZUxheWVyUG9zaXRpb24oKQogICAgIAogICAgIGJvb2wgcG9zaXRpb25Pck9mZnNldENoYW5nZWQg
PSBmYWxzZTsKICAgICBpZiAocmVuZGVyZXIoKS5pc0luRmxvd1Bvc2l0aW9uZWQoKSkgewotICAg
ICAgICBMYXlvdXRTaXplIG5ld09mZnNldCA9IHRvUmVuZGVyQm94TW9kZWxPYmplY3QocmVuZGVy
ZXIoKSkub2Zmc2V0Rm9ySW5GbG93UG9zaXRpb24oKTsKKyAgICAgICAgTGF5b3V0U2l6ZSBuZXdP
ZmZzZXQgPSBkb3duY2FzdDxSZW5kZXJCb3hNb2RlbE9iamVjdD4ocmVuZGVyZXIoKSkub2Zmc2V0
Rm9ySW5GbG93UG9zaXRpb24oKTsKICAgICAgICAgcG9zaXRpb25Pck9mZnNldENoYW5nZWQgPSBu
ZXdPZmZzZXQgIT0gbV9vZmZzZXRGb3JJbkZsb3dQb3NpdGlvbjsKICAgICAgICAgbV9vZmZzZXRG
b3JJbkZsb3dQb3NpdGlvbiA9IG5ld09mZnNldDsKICAgICAgICAgbG9jYWxQb2ludC5tb3ZlKG1f
b2Zmc2V0Rm9ySW5GbG93UG9zaXRpb24pOwpAQCAtNTQwNCwxMCArNTQwNCwxMCBAQCB2b2lkIFJl
bmRlckxheWVyOjpjYWxjdWxhdGVSZWN0cyhjb25zdCBDbGlwUmVjdHNDb250ZXh0JiBjbGlwUmVj
dHNDb250ZXh0LCBjb25zdAogICAgIGZvcmVncm91bmRSZWN0ID0gYmFja2dyb3VuZFJlY3Q7CiAg
ICAgb3V0bGluZVJlY3QgPSBiYWNrZ3JvdW5kUmVjdDsKIAotICAgIFJlbmRlckZsb3dUaHJlYWQq
IGZsb3dUaHJlYWQgPSBuYW1lZEZsb3dGcmFnbWVudCA/IG5hbWVkRmxvd0ZyYWdtZW50LT5mbG93
VGhyZWFkKCkgOiAwOworICAgIFJlbmRlckZsb3dUaHJlYWQqIGZsb3dUaHJlYWQgPSBuYW1lZEZs
b3dGcmFnbWVudCA/IG5hbWVkRmxvd0ZyYWdtZW50LT5mbG93VGhyZWFkKCkgOiBudWxscHRyOwog
ICAgIGlmIChpc1NlbGZQYWludGluZ0xheWVyKCkgJiYgZmxvd1RocmVhZCAmJiAhcmVuZGVyZXIo
KS5pc0luRmxvd1JlbmRlckZsb3dUaHJlYWQoKSkgewogICAgICAgICBBU1NFUlQobmFtZWRGbG93
RnJhZ21lbnQtPmlzVmFsaWQoKSk7Ci0gICAgICAgIGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0
JiBib3hNb2RlbE9iamVjdCA9IHRvUmVuZGVyQm94TW9kZWxPYmplY3QocmVuZGVyZXIoKSk7Cisg
ICAgICAgIGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0JiBib3hNb2RlbE9iamVjdCA9IGRvd25j
YXN0PFJlbmRlckJveE1vZGVsT2JqZWN0PihyZW5kZXJlcigpKTsKICAgICAgICAgTGF5b3V0UmVj
dCBsYXllckJvdW5kc1dpdGhWaXN1YWxPdmVyZmxvdyA9IG5hbWVkRmxvd0ZyYWdtZW50LT52aXN1
YWxPdmVyZmxvd1JlY3RGb3JCb3goJmJveE1vZGVsT2JqZWN0KTsKIAogICAgICAgICAvLyBMYXll
cnMgYXJlIGluIHBoeXNpY2FsIGNvb3JkaW5hdGVzIHNvIHRoZSBvcmlnaW4gbXVzdCBiZSBtb3Zl
ZCB0byB0aGUgcGh5c2ljYWwgdG9wLWxlZnQgb2YgdGhlIGZsb3d0aHJlYWQuCkBAIC01NTkzLDcg
KzU1OTMsNyBAQCBib29sIFJlbmRlckxheWVyOjppbnRlcnNlY3RzRGFtYWdlUmVjdChjb25zdCBM
YXlvdXRSZWN0JiBsYXllckJvdW5kcywgY29uc3QgTGF5bwogICAgIC8vIHRvIHRoZSBmbG93IHRo
cmVhZCwgbm90IHRoZSBsYXN0IHJlZ2lvbiAoaW4gd2hpY2ggaXQgd2lsbCBlbmQgdXAgYmVjYXVz
ZSBvZiBib3R0b206MHB4KQogICAgIGlmIChuYW1lZEZsb3dGcmFnbWVudCAmJiByZW5kZXJlcigp
LmZsb3dUaHJlYWRDb250YWluaW5nQmxvY2soKSkgewogICAgICAgICBMYXlvdXRSZWN0IGIgPSBs
YXllckJvdW5kczsKLSAgICAgICAgYi5tb3ZlQnkobmFtZWRGbG93RnJhZ21lbnQtPnZpc3VhbE92
ZXJmbG93UmVjdEZvckJveCh0b1JlbmRlckJveE1vZGVsT2JqZWN0KCZyZW5kZXJlcigpKSkubG9j
YXRpb24oKSk7CisgICAgICAgIGIubW92ZUJ5KG5hbWVkRmxvd0ZyYWdtZW50LT52aXN1YWxPdmVy
Zmxvd1JlY3RGb3JCb3goZG93bmNhc3Q8UmVuZGVyQm94TW9kZWxPYmplY3Q+KCZyZW5kZXJlcigp
KSkubG9jYXRpb24oKSk7CiAgICAgICAgIGIuaW5mbGF0ZShyZW5kZXJlcigpLnZpZXcoKS5tYXhp
bWFsT3V0bGluZVNpemUoKSk7CiAgICAgICAgIGlmIChiLmludGVyc2VjdHMoZGFtYWdlUmVjdCkp
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyQmFja2luZy5jcHAKaW5kZXggYWMwNDAwYTQ4ZjVhY2NiM2JjNTI3NzQ4NDYw
NjQ1ZGUyNmU4MjQzNS4uYWI5ZmYwMDJkNmNhNDkxOWU4ZTUzZjM5MWI0ODMzNTMyMTY3ZTY2NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAK
QEAgLTk4OCw3ICs5ODgsNyBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6YWRqdXN0QW5jZXN0
b3JDb21wb3NpdGluZ0JvdW5kc0ZvckZsb3dUaHJlYWQoTGF5b3V0UmVjdAogICAgICAgICB9CiAK
ICAgICAgICAgLy8gTW92ZSB0aGUgYW5jZXN0b3IgcG9zaXRpb24gYXQgdGhlIHRvcCBvZiB0aGUg
cmVnaW9uIHdoZXJlIHRoZSBjb21wb3NpdGVkIGxheWVyIGlzIGdvaW5nIHRvIGRpc3BsYXkuCi0g
ICAgICAgIFJlbmRlckZsb3dUaHJlYWQmIGZsb3dUaHJlYWQgPSB0b1JlbmRlckZsb3dUaHJlYWQo
Zmxvd1RocmVhZExheWVyLT5yZW5kZXJlcigpKTsKKyAgICAgICAgUmVuZGVyRmxvd1RocmVhZCYg
Zmxvd1RocmVhZCA9IGRvd25jYXN0PFJlbmRlckZsb3dUaHJlYWQ+KGZsb3dUaHJlYWRMYXllci0+
cmVuZGVyZXIoKSk7CiAgICAgICAgIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KiBwYXJlbnRSZWdp
b24gPSBmbG93VGhyZWFkLmNhY2hlZFJlZ2lvbkZvckNvbXBvc2l0ZWRMYXllcihtX293bmluZ0xh
eWVyKTsKICAgICAgICAgaWYgKCFwYXJlbnRSZWdpb24pCiAgICAgICAgICAgICByZXR1cm47CkBA
IC05OTYsNyArOTk2LDcgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OmFkanVzdEFuY2VzdG9y
Q29tcG9zaXRpbmdCb3VuZHNGb3JGbG93VGhyZWFkKExheW91dFJlY3QKICAgICAgICAgSW50UG9p
bnQgZmxvd0RlbHRhOwogICAgICAgICBtX293bmluZ0xheWVyLmNvbnZlcnRUb1BpeGVsU25hcHBl
ZExheWVyQ29vcmRzKGZsb3dUaHJlYWRMYXllciwgZmxvd0RlbHRhKTsKICAgICAgICAgcGFyZW50
UmVnaW9uLT5hZGp1c3RSZWdpb25Cb3VuZHNGcm9tRmxvd1RocmVhZFBvcnRpb25SZWN0KGFuY2Vz
dG9yQ29tcG9zaXRpbmdCb3VuZHMpOwotICAgICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCYgbGF5
ZXJPd25lciA9IHRvUmVuZGVyQm94TW9kZWxPYmplY3QocGFyZW50UmVnaW9uLT5sYXllck93bmVy
KCkpOworICAgICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCYgbGF5ZXJPd25lciA9IGRvd25jYXN0
PFJlbmRlckJveE1vZGVsT2JqZWN0PihwYXJlbnRSZWdpb24tPmxheWVyT3duZXIoKSk7CiAgICAg
ICAgIFJlbmRlckxheWVyQmFja2luZyogbGF5ZXJPd25lckJhY2tpbmcgPSBsYXllck93bmVyLmxh
eWVyKCktPmJhY2tpbmcoKTsKICAgICAgICAgaWYgKCFsYXllck93bmVyQmFja2luZykKICAgICAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckNvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQ29tcG9zaXRvci5jcHAKaW5kZXggODIwNGJlM2UyOTFlZDViZWI2NmY2YjVkNGFkNjNmZDNl
NWZjZWFhZS4uZmE5MDI3NjZlYzk3YzNiNTE4MjIyNGRhOWQzY2I1NmUwZmU1MjM4MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAK
QEAgLTI1NTgsNyArMjU1OCw3IEBAIGJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJl
c0NvbXBvc2l0aW5nRm9yQW5pbWF0aW9uKFJlbmRlckxheWVyTW9kZWxPYmplCiAKIGJvb2wgUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nRm9ySW5kaXJlY3RSZWFzb24o
UmVuZGVyTGF5ZXJNb2RlbE9iamVjdCYgcmVuZGVyZXIsIGJvb2wgaGFzQ29tcG9zaXRlZERlc2Nl
bmRhbnRzLCBib29sIGhhczNEVHJhbnNmb3JtZWREZXNjZW5kYW50cywgUmVuZGVyTGF5ZXI6Oklu
ZGlyZWN0Q29tcG9zaXRpbmdSZWFzb24mIHJlYXNvbikgY29uc3QKIHsKLSAgICBSZW5kZXJMYXll
ciYgbGF5ZXIgPSAqdG9SZW5kZXJCb3hNb2RlbE9iamVjdChyZW5kZXJlcikubGF5ZXIoKTsKKyAg
ICBSZW5kZXJMYXllciYgbGF5ZXIgPSAqZG93bmNhc3Q8UmVuZGVyQm94TW9kZWxPYmplY3Q+KHJl
bmRlcmVyKS5sYXllcigpOwogCiAgICAgLy8gV2hlbiBhIGxheWVyIGhhcyBjb21wb3NpdGVkIGRl
c2NlbmRhbnRzLCBzb21lIGVmZmVjdHMsIGxpa2UgMmQgdHJhbnNmb3JtcywgZmlsdGVycywgbWFz
a3MgZXRjIG11c3QgYmUgaW1wbGVtZW50ZWQKICAgICAvLyB2aWEgY29tcG9zaXRpbmcgc28gdGhh
dCB0aGV5IGFsc28gYXBwbHkgdG8gdGhvc2UgY29tcG9zaXRlZCBkZXNjZW5kYW50cy4KQEAgLTM2
NTMsNyArMzY1Myw3IEBAIFN0aWNreVBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50cyBSZW5kZXJM
YXllckNvbXBvc2l0b3I6OmNvbXB1dGVTdGlja3lWaWV3cG9ydENvCiAgICAgQVNTRVJUKCFsYXll
ci5lbmNsb3NpbmdPdmVyZmxvd0NsaXBMYXllcihFeGNsdWRlU2VsZikpOwogI2VuZGlmCiAKLSAg
ICBSZW5kZXJCb3hNb2RlbE9iamVjdCYgcmVuZGVyZXIgPSB0b1JlbmRlckJveE1vZGVsT2JqZWN0
KGxheWVyLnJlbmRlcmVyKCkpOworICAgIFJlbmRlckJveE1vZGVsT2JqZWN0JiByZW5kZXJlciA9
IGRvd25jYXN0PFJlbmRlckJveE1vZGVsT2JqZWN0PihsYXllci5yZW5kZXJlcigpKTsKIAogICAg
IFN0aWNreVBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50cyBjb25zdHJhaW50czsKICAgICByZW5k
ZXJlci5jb21wdXRlU3RpY2t5UG9zaXRpb25Db25zdHJhaW50cyhjb25zdHJhaW50cywgcmVuZGVy
ZXIuY29uc3RyYWluaW5nUmVjdEZvclN0aWNreVBvc2l0aW9uKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRleCA2YWQ2OWY0ODRkOTNjMjhkMzdkMTRiZmRi
OTUwN2IzNDE0Yzg0ODRkLi5lZDg5NWU0MDdlYzM1NzkyMmZkZDkyNjljM2UzMjUxNzJhNjViNWM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtMjEyNCw3
ICsyMTI0LDcgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OmRlc3Ryb3koKQogewogI2lmIFBMQVRGT1JN
KElPUykKICAgICBpZiAoaGFzTGF5ZXIoKSkKLSAgICAgICAgdG9SZW5kZXJCb3hNb2RlbE9iamVj
dCh0aGlzKS0+bGF5ZXIoKS0+d2lsbEJlRGVzdHJveWVkKCk7CisgICAgICAgIGRvd25jYXN0PFJl
bmRlckJveE1vZGVsT2JqZWN0PigqdGhpcykubGF5ZXIoKS0+d2lsbEJlRGVzdHJveWVkKCk7CiAj
ZW5kaWYKIAogICAgIHdpbGxCZURlc3Ryb3llZCgpOwpAQCAtMjQyNCw3ICsyNDI0LDcgQEAgUmVu
ZGVyQm94TW9kZWxPYmplY3QqIFJlbmRlck9iamVjdDo6b2Zmc2V0UGFyZW50KCkgY29uc3QKICAg
ICAvLyBBIGlzIHRoZSBIVE1MIGJvZHkgZWxlbWVudC4KICAgICAvLyBUaGUgY29tcHV0ZWQgdmFs
dWUgb2YgdGhlIHBvc2l0aW9uIHByb3BlcnR5IGZvciBlbGVtZW50IEEgaXMgZml4ZWQuCiAgICAg
aWYgKGlzUm9vdCgpIHx8IGlzQm9keSgpIHx8IChpc091dE9mRmxvd1Bvc2l0aW9uZWQoKSAmJiBz
dHlsZSgpLnBvc2l0aW9uKCkgPT0gRml4ZWRQb3NpdGlvbikpCi0gICAgICAgIHJldHVybiAwOwor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIC8vIElmIEEgaXMgYW4gYXJlYSBIVE1MIGVs
ZW1lbnQgd2hpY2ggaGFzIGEgbWFwIEhUTUwgZWxlbWVudCBzb21ld2hlcmUgaW4gdGhlIGFuY2Vz
dG9yCiAgICAgLy8gY2hhaW4gcmV0dXJuIHRoZSBuZWFyZXN0IGFuY2VzdG9yIG1hcCBIVE1MIGVs
ZW1lbnQgYW5kIHN0b3AgdGhpcyBhbGdvcml0aG0uCkBAIC0yNDQwLDI0ICsyNDQwLDI0IEBAIFJl
bmRlckJveE1vZGVsT2JqZWN0KiBSZW5kZXJPYmplY3Q6Om9mZnNldFBhcmVudCgpIGNvbnN0CiAK
ICAgICBib29sIHNraXBUYWJsZXMgPSBpc1Bvc2l0aW9uZWQoKTsKICAgICBmbG9hdCBjdXJyWm9v
bSA9IHN0eWxlKCkuZWZmZWN0aXZlWm9vbSgpOwotICAgIGF1dG8gY3VyciA9IHBhcmVudCgpOwot
ICAgIHdoaWxlIChjdXJyICYmICghY3Vyci0+ZWxlbWVudCgpIHx8ICghY3Vyci0+aXNQb3NpdGlv
bmVkKCkgJiYgIWN1cnItPmlzQm9keSgpKSkgJiYgIWN1cnItPmlzUmVuZGVyTmFtZWRGbG93VGhy
ZWFkKCkpIHsKLSAgICAgICAgRWxlbWVudCogZWxlbWVudCA9IGN1cnItPmVsZW1lbnQoKTsKKyAg
ICBhdXRvIGN1cnJlbnQgPSBwYXJlbnQoKTsKKyAgICB3aGlsZSAoY3VycmVudCAmJiAoIWN1cnJl
bnQtPmVsZW1lbnQoKSB8fCAoIWN1cnJlbnQtPmlzUG9zaXRpb25lZCgpICYmICFjdXJyZW50LT5p
c0JvZHkoKSkpICYmICFpczxSZW5kZXJOYW1lZEZsb3dUaHJlYWQ+KCpjdXJyZW50KSkgeworICAg
ICAgICBFbGVtZW50KiBlbGVtZW50ID0gY3VycmVudC0+ZWxlbWVudCgpOwogICAgICAgICBpZiAo
IXNraXBUYWJsZXMgJiYgZWxlbWVudCAmJiAoaXM8SFRNTFRhYmxlRWxlbWVudD4oKmVsZW1lbnQp
IHx8IGlzPEhUTUxUYWJsZUNlbGxFbGVtZW50PigqZWxlbWVudCkpKQogICAgICAgICAgICAgYnJl
YWs7CiAgCi0gICAgICAgIGZsb2F0IG5ld1pvb20gPSBjdXJyLT5zdHlsZSgpLmVmZmVjdGl2ZVpv
b20oKTsKKyAgICAgICAgZmxvYXQgbmV3Wm9vbSA9IGN1cnJlbnQtPnN0eWxlKCkuZWZmZWN0aXZl
Wm9vbSgpOwogICAgICAgICBpZiAoY3Vyclpvb20gIT0gbmV3Wm9vbSkKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBjdXJyWm9vbSA9IG5ld1pvb207Ci0gICAgICAgIGN1cnIgPSBjdXJyLT5w
YXJlbnQoKTsKKyAgICAgICAgY3VycmVudCA9IGN1cnJlbnQtPnBhcmVudCgpOwogICAgIH0KICAg
ICAKICAgICAvLyBDU1MgcmVnaW9ucyBzcGVjaWZpY2F0aW9uIHNheXMgdGhhdCByZWdpb24gZmxv
d3Mgc2hvdWxkIHJldHVybiB0aGUgYm9keSBlbGVtZW50IGFzIHRoZWlyIG9mZnNldFBhcmVudC4K
LSAgICBpZiAoY3VyciAmJiBjdXJyLT5pc1JlbmRlck5hbWVkRmxvd1RocmVhZCgpKQotICAgICAg
ICBjdXJyID0gZG9jdW1lbnQoKS5ib2R5KCkgPyBkb2N1bWVudCgpLmJvZHkoKS0+cmVuZGVyZXIo
KSA6IDA7CisgICAgaWYgKGlzPFJlbmRlck5hbWVkRmxvd1RocmVhZD4oY3VycmVudCkpCisgICAg
ICAgIGN1cnJlbnQgPSBkb2N1bWVudCgpLmJvZHkoKSA/IGRvY3VtZW50KCkuYm9keSgpLT5yZW5k
ZXJlcigpIDogbnVsbHB0cjsKICAgICAKLSAgICByZXR1cm4gY3VyciAmJiBjdXJyLT5pc0JveE1v
ZGVsT2JqZWN0KCkgPyB0b1JlbmRlckJveE1vZGVsT2JqZWN0KGN1cnIpIDogMDsKKyAgICByZXR1
cm4gaXM8UmVuZGVyQm94TW9kZWxPYmplY3Q+KGN1cnJlbnQpID8gZG93bmNhc3Q8UmVuZGVyQm94
TW9kZWxPYmplY3Q+KGN1cnJlbnQpIDogbnVsbHB0cjsKIH0KIAogVmlzaWJsZVBvc2l0aW9uIFJl
bmRlck9iamVjdDo6Y3JlYXRlVmlzaWJsZVBvc2l0aW9uKGludCBvZmZzZXQsIEVBZmZpbml0eSBh
ZmZpbml0eSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuY3BwCmluZGV4IDFjOWM0YWI3YzQzNWI5MmE0MWMxNDFj
N2Q1ZDBjM2JkZGY4MjY3ZTQuLjc0Yzk5ZTE3ZDU2ODY0YWM4NzIwMTIxZWM4YTU1ZWQ1YTI2OTI1
ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MU2NyaXB0cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxTY3JpcHRzLmNwcApAQCAtNzYsMTEgKzc2LDExIEBAIFJlbmRlck1hdGhNTFNjcmlw
dHM6OlJlbmRlck1hdGhNTFNjcmlwdHMoRWxlbWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJT
dHlsZT4KIFJlbmRlckJveE1vZGVsT2JqZWN0KiBSZW5kZXJNYXRoTUxTY3JpcHRzOjpiYXNlKCkg
Y29uc3QKIHsKICAgICBpZiAoIW1fYmFzZVdyYXBwZXIpCi0gICAgICAgIHJldHVybiAwOworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBSZW5kZXJPYmplY3QqIGJhc2UgPSBtX2Jhc2VXcmFw
cGVyLT5maXJzdENoaWxkKCk7Ci0gICAgaWYgKCFiYXNlIHx8ICFiYXNlLT5pc0JveE1vZGVsT2Jq
ZWN0KCkpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiB0b1JlbmRlckJveE1vZGVsT2Jq
ZWN0KGJhc2UpOworICAgIGlmICghaXM8UmVuZGVyQm94TW9kZWxPYmplY3Q+KGJhc2UpKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gZG93bmNhc3Q8UmVuZGVyQm94TW9kZWxP
YmplY3Q+KGJhc2UpOwogfQogCiB2b2lkIFJlbmRlck1hdGhNTFNjcmlwdHM6OmZpeEFub255bW91
c1N0eWxlRm9yU3ViU3VwUGFpcihSZW5kZXJPYmplY3QqIHN1YlN1cFBhaXIsIGJvb2wgaXNQb3N0
U2NyaXB0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJCYXNlTmV0
c2NhcGVQbHVnaW5WaWV3Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJCYXNlTmV0
c2NhcGVQbHVnaW5WaWV3Lm1tCmluZGV4IDA3NjRlNGNiYTFmNDE0ZTgwNjQwODI1YWIwODc3NDk5
M2M3MmU0OTUuLjk5ODU5NGZhZDI1Mzg2OWQ1YWM3NzZiNDc0NGU2NzI0MThiM2QwNzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmll
dy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdp
blZpZXcubW0KQEAgLTg2NCw3ICs4NjQsNyBAQCAtIChDU3RyaW5nKXJlc29sdmVkVVJMU3RyaW5n
Rm9yVVJMOihjb25zdCBjaGFyKil1cmwgdGFyZ2V0Oihjb25zdCBjaGFyKil0YXJnZXQKIAogLSAo
dm9pZClpbnZhbGlkYXRlUGx1Z2luQ29udGVudFJlY3Q6KE5TUmVjdClyZWN0CiB7Ci0gICAgaWYg
KFJlbmRlckJveE1vZGVsT2JqZWN0ICpyZW5kZXJlciA9IHRvUmVuZGVyQm94TW9kZWxPYmplY3Qo
X2VsZW1lbnQtPnJlbmRlcmVyKCkpKSB7CisgICAgaWYgKFJlbmRlckJveE1vZGVsT2JqZWN0KiBy
ZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlckJveE1vZGVsT2JqZWN0PihfZWxlbWVudC0+cmVuZGVy
ZXIoKSkpIHsKICAgICAgICAgSW50UmVjdCBjb250ZW50UmVjdChyZWN0KTsKICAgICAgICAgY29u
dGVudFJlY3QubW92ZShyZW5kZXJlci0+Ym9yZGVyTGVmdCgpICsgcmVuZGVyZXItPnBhZGRpbmdM
ZWZ0KCksIHJlbmRlcmVyLT5ib3JkZXJUb3AoKSArIHJlbmRlcmVyLT5wYWRkaW5nVG9wKCkpOwog
ICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUmVuZGVy
TGF5ZXIubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlJlbmRlckxheWVyLm1tCmlu
ZGV4IDg3OGYzNDkxOWJkYjRmNGMwNWNkZGFjYzBiNGRmNTlkYmRlYWU4ODEuLjI4NzhhZDNiZmJl
YWE1MGRlNWRlMWRhYTZlMGJjNmQ1NmY1OWY1ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViUmVuZGVyTGF5ZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJSZW5kZXJMYXllci5tbQpAQCAtMTQ1LDcgKzE0NSw3IEBAIC0gKGlkKWluaXRXaXRo
V2ViRnJhbWU6KFdlYkZyYW1lICopd2ViRnJhbWUKICAgICB9CiAKICAgICBpZiAocmVuZGVyZXIt
Pmhhc0xheWVyKCkpIHsKLSAgICAgICAgUmVuZGVyTGF5ZXIqIGxheWVyID0gdG9SZW5kZXJCb3hN
b2RlbE9iamVjdChyZW5kZXJlciktPmxheWVyKCk7CisgICAgICAgIFJlbmRlckxheWVyKiBsYXll
ciA9IGRvd25jYXN0PFJlbmRlckJveE1vZGVsT2JqZWN0PigqcmVuZGVyZXIpLmxheWVyKCk7CiAK
ICAgICAgICAgbmFtZSA9IFtbV2ViUmVuZGVyTGF5ZXIgbmFtZUZvckxheWVyOmxheWVyXSByZXRh
aW5dOwogICAgICAgICBib3VuZHMgPSBsYXllci0+YWJzb2x1dGVCb3VuZGluZ0JveCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4
IDM2OTY4ZjBkOTFlNzQ0Y2U5NGIwNjQ5NjhhNWVjNWIyYWZiNTliZTMuLjZlODEyY2Q0MzM4OTAz
NzZjYWE3N2UzNzc5MzgyNWNhYjVmMDQyYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTQ2NCw3ICs0NjQsNyBAQCB2b2lkIFBs
dWdpblZpZXc6Om1hbnVhbExvYWREaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQog
CiBSZW5kZXJCb3hNb2RlbE9iamVjdCogUGx1Z2luVmlldzo6cmVuZGVyZXIoKSBjb25zdAogewot
ICAgIHJldHVybiB0b1JlbmRlckJveE1vZGVsT2JqZWN0KG1fcGx1Z2luRWxlbWVudC0+cmVuZGVy
ZXIoKSk7CisgICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlckJveE1vZGVsT2JqZWN0PihtX3BsdWdp
bkVsZW1lbnQtPnJlbmRlcmVyKCkpOwogfQogCiB2b2lkIFBsdWdpblZpZXc6OnBhZ2VTY2FsZUZh
Y3RvckRpZENoYW5nZSgpCkBAIC0xMjk3LDcgKzEyOTcsNyBAQCB2b2lkIFBsdWdpblZpZXc6Omlu
dmFsaWRhdGVSZWN0KGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkKICAgICBpZiAobV9wbHVnaW5F
bGVtZW50LT5kaXNwbGF5U3RhdGUoKSA8IEhUTUxQbHVnSW5FbGVtZW50OjpSZXN0YXJ0aW5nKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVuZGVyZXIgPSB0
b1JlbmRlckJveE1vZGVsT2JqZWN0KG1fcGx1Z2luRWxlbWVudC0+cmVuZGVyZXIoKSk7CisgICAg
UmVuZGVyQm94TW9kZWxPYmplY3QqIHJlbmRlcmVyID0gZG93bmNhc3Q8UmVuZGVyQm94TW9kZWxP
YmplY3Q+KG1fcGx1Z2luRWxlbWVudC0+cmVuZGVyZXIoKSk7CiAgICAgaWYgKCFyZW5kZXJlcikK
ICAgICAgICAgcmV0dXJuOwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>