<?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>146102</bug_id>
          
          <creation_ts>2015-06-18 01:25:02 -0700</creation_ts>
          <short_desc>Do not store configuration parameters twice in WebProcessPool</short_desc>
          <delta_ts>2015-06-18 23:00:32 -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>WebKit2</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>andersca</cc>
    
    <cc>darin</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1102849</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-06-18 01:25:02 -0700</bug_when>
    <thetext>Since we are copying the given WebProcessPoolConfiguration and keeping it as a member, we don&apos;t need to keep an additional copy of its contents as extra members.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1102850</commentid>
    <comment_count>1</comment_count>
      <attachid>255100</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-06-18 01:29:07 -0700</bug_when>
    <thetext>Created attachment 255100
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1103137</commentid>
    <comment_count>2</comment_count>
      <attachid>255100</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2015-06-18 19:48:37 -0700</bug_when>
    <thetext>Comment on attachment 255100
Patch

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

&gt; Source/WebKit2/UIProcess/WebProcessPool.cpp:357
&gt;  void WebProcessPool::setUsesNetworkProcess(bool usesNetworkProcess)
&gt;  {
&gt;  #if ENABLE(NETWORK_PROCESS)
&gt; -    m_usesNetworkProcess = usesNetworkProcess;
&gt; +    m_configuration-&gt;setUseNetworkProcess(usesNetworkProcess);

This is a subtle change in behavior.  Before, the configuration was unchanged if someone called WebProcessPool::setUsesNetworkProcess() (via WKContextSetUsesNetworkProcess(...)), but now it will be mutated.  I&apos;m not sure if this is a big deal in practice.  The same is true with WebProcessPool::setMaximumNumberOfProcesses() and WebProcessPool::setProcessModel().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1103180</commentid>
    <comment_count>3</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-06-18 22:57:37 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 255100 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=255100&amp;action=review

Thanks for the review.

&gt; &gt; Source/WebKit2/UIProcess/WebProcessPool.cpp:357
&gt; &gt;  void WebProcessPool::setUsesNetworkProcess(bool usesNetworkProcess)
&gt; &gt;  {
&gt; &gt;  #if ENABLE(NETWORK_PROCESS)
&gt; &gt; -    m_usesNetworkProcess = usesNetworkProcess;
&gt; &gt; +    m_configuration-&gt;setUseNetworkProcess(usesNetworkProcess);
&gt; 
&gt; This is a subtle change in behavior.  Before, the configuration was
&gt; unchanged if someone called WebProcessPool::setUsesNetworkProcess() (via
&gt; WKContextSetUsesNetworkProcess(...)), but now it will be mutated.  I&apos;m not
&gt; sure if this is a big deal in practice.  The same is true with
&gt; WebProcessPool::setMaximumNumberOfProcesses() and
&gt; WebProcessPool::setProcessModel().

That&apos;s a good point, but there&apos;s no change in behaviour actually, because we were not using the copied configuration for those, but the members. So, you could create a WebProcessPool with usesNetworkProcess = true, a network process is ensured later, and then call WKContextSetUsesNetworkProcess(false) which set the m_usesNetworkProcess to false. WebProcessPool checked the value of m_usesNetworkProcess, so something is going to fail/crash at some point. Same would happen now with the configuration member only. We could try to prevent that in both cases, by ignoring any change in configuration after the first web process and the network process is launched.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1103183</commentid>
    <comment_count>4</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-06-18 23:00:32 -0700</bug_when>
    <thetext>Committed r185736: &lt;http://trac.webkit.org/changeset/185736&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>255100</attachid>
            <date>2015-06-18 01:29:07 -0700</date>
            <delta_ts>2015-06-18 19:49:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-web-process-pool-config.diff</filename>
            <type>text/plain</type>
            <size>28259</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA4ZTJjZTBmLi43YmE3OWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAg
QEAKKzIwMTUtMDYtMTggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIERvIG5vdCBzdG9yZSBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgdHdpY2Ug
aW4gV2ViUHJvY2Vzc1Bvb2wKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE0NjEwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFNpbmNlIHdlIGFyZSBjb3B5aW5nIHRoZSBnaXZlbiBXZWJQcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24gYW5kCisgICAgICAgIGtlZXBpbmcgaXQgYXMgYSBtZW1iZXIsIHdlIGRvbid0
IG5lZWQgdG8ga2VlcCBhbiBhZGRpdGlvbmFsIGNvcHkKKyAgICAgICAgb2YgaXRzIGNvbnRlbnRz
IGFzIGV4dHJhIG1lbWJlcnMuIFRoaXMgYWxzbyBwcmV2ZW50cworICAgICAgICBpbmNvbnNpc3Rl
bmNpZXMgYmV0d2VlbiB0aGUgdmFsdWVzIGluIHRoZSBjb25maWd1cmF0aW9uIGFuZCB0aGUKKyAg
ICAgICAgbWVtYmVycyB3aGVuIGFueSBvZiB0aGVtIGFyZSBtb2RpZmllZCBieSBXZWJQcm9jZXNz
UG9vbCBBUEkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbi5oOiBSZXR1cm4gYSBjb25zdAorICAgICAgICByZWZlcmVuY2UgaW5zdGVhZCBvZiBh
IHRlbXBvcmFyeSBpbiBtZXRob2RzIHJldHVybmluZyBhIFN0cmluZy4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc1Bvb2w6OnVwZGF0ZVByb2Nlc3NTdXBwcmVzc2lvblN0YXRlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjpzZXRQcm9jZXNzTW9kZWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbDo6c2V0TWF4aW11bU51bWJlck9mUHJvY2Vzc2VzKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Bvb2w6Om5ldHdvcmtpbmdQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpsYW5ndWFnZUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUG9vbDo6c2V0VXNlc05ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc1Bvb2w6OnVzZXNOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQb29sOjplbnN1cmVOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQb29sOjplbnN1cmVEYXRhYmFzZVByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUG9vbDo6ZW5zdXJlU2hhcmVkV2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQb29sOjpjcmVhdGVOZXdXZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc1Bvb2w6Ondhcm1Jbml0aWFsUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQb29sOjpkaXNjb25uZWN0UHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjpjcmVhdGVOZXdXZWJQcm9jZXNzUmVzcGVjdGluZ1Byb2Nlc3NDb3VudExp
bWl0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZVdlYlBhZ2UpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cG9zdE1lc3NhZ2VUb0luamVjdGVkQnVu
ZGxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldENhbkhhbmRsZUhUVFBT
U2VydmVyVHJ1c3RFdmFsdWF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6
OnNldENhY2hlTW9kZWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6YWxsb3dT
cGVjaWZpY0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzc1Bvb2w6OnJlcXVlc3RXZWJDb250ZW50U3RhdGlzdGljcyk6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQb29sOjpyZXF1ZXN0TmV0d29ya2luZ1N0YXRpc3RpY3MpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UG9vbDo6c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbDo6c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNlbmRUb0FsbFByb2Nlc3Nlc1JlbGF1
bmNoaW5nVGhlbUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6
OnNlbmRUb09uZVByb2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc1Bv
b2xHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0
aWFsaXplV2ViUHJvY2Vzcyk6CisKIDIwMTUtMDYtMTcgIFlvbmdqdW4gWmhhbmcgIDx5b25nanVu
X3poYW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBBbHNvIHR1cm4gb2ZmIGxvbmcgcHJlc3Mgb24g
bGluayBwcmV2aWV3LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9B
UElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgKaW5kZXggZjllY2IxNi4uNTBlMWY4ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbi5oCkBAIC02MywyNSArNjMsMjUgQEAgcHVibGljOgogICAgIGlu
dDY0X3QgZGlza0NhY2hlU2l6ZU92ZXJyaWRlKCkgY29uc3QgeyByZXR1cm4gbV9kaXNrQ2FjaGVT
aXplT3ZlcnJpZGU7IH0KICAgICB2b2lkIHNldERpc2tDYWNoZVNpemVPdmVycmlkZShpbnQ2NF90
IHNpemUpIHsgbV9kaXNrQ2FjaGVTaXplT3ZlcnJpZGUgPSBzaXplOyB9CiAKLSAgICBXVEY6OlN0
cmluZyBhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9hcHBsaWNh
dGlvbkNhY2hlRGlyZWN0b3J5OyB9CisgICAgY29uc3QgV1RGOjpTdHJpbmcmIGFwcGxpY2F0aW9u
Q2FjaGVEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2FwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rv
cnk7IH0KICAgICB2b2lkIHNldEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoY29uc3QgV1RGOjpT
dHJpbmcmIGFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkpIHsgbV9hcHBsaWNhdGlvbkNhY2hlRGly
ZWN0b3J5ID0gYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeTsgfQogCi0gICAgV1RGOjpTdHJpbmcg
ZGlza0NhY2hlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9kaXNrQ2FjaGVEaXJlY3Rvcnk7
IH0KKyAgICBjb25zdCBXVEY6OlN0cmluZyYgZGlza0NhY2hlRGlyZWN0b3J5KCkgY29uc3QgeyBy
ZXR1cm4gbV9kaXNrQ2FjaGVEaXJlY3Rvcnk7IH0KICAgICB2b2lkIHNldERpc2tDYWNoZURpcmVj
dG9yeShjb25zdCBXVEY6OlN0cmluZyYgZGlza0NhY2hlRGlyZWN0b3J5KSB7IG1fZGlza0NhY2hl
RGlyZWN0b3J5ID0gZGlza0NhY2hlRGlyZWN0b3J5OyB9CiAKLSAgICBXVEY6OlN0cmluZyBpbmRl
eGVkREJEYXRhYmFzZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1faW5kZXhlZERCRGF0YWJh
c2VEaXJlY3Rvcnk7IH0KKyAgICBjb25zdCBXVEY6OlN0cmluZyYgaW5kZXhlZERCRGF0YWJhc2VE
aXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5OyB9
CiAgICAgdm9pZCBzZXRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeShjb25zdCBXVEY6OlN0cmlu
ZyYgaW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkpIHsgbV9pbmRleGVkREJEYXRhYmFzZURpcmVj
dG9yeSA9IGluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5OyB9CiAKLSAgICBXVEY6OlN0cmluZyBp
bmplY3RlZEJ1bmRsZVBhdGgoKSBjb25zdCB7IHJldHVybiBtX2luamVjdGVkQnVuZGxlUGF0aDsg
fQorICAgIGNvbnN0IFdURjo6U3RyaW5nJiBpbmplY3RlZEJ1bmRsZVBhdGgoKSBjb25zdCB7IHJl
dHVybiBtX2luamVjdGVkQnVuZGxlUGF0aDsgfQogICAgIHZvaWQgc2V0SW5qZWN0ZWRCdW5kbGVQ
YXRoKGNvbnN0IFdURjo6U3RyaW5nJiBpbmplY3RlZEJ1bmRsZVBhdGgpIHsgbV9pbmplY3RlZEJ1
bmRsZVBhdGggPSBpbmplY3RlZEJ1bmRsZVBhdGg7IH0KIAotICAgIFdURjo6U3RyaW5nIGxvY2Fs
U3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5
OyB9CisgICAgY29uc3QgV1RGOjpTdHJpbmcmIGxvY2FsU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0
IHsgcmV0dXJuIG1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5OyB9CiAgICAgdm9pZCBzZXRMb2NhbFN0
b3JhZ2VEaXJlY3RvcnkoY29uc3QgV1RGOjpTdHJpbmcmIGxvY2FsU3RvcmFnZURpcmVjdG9yeSkg
eyBtX2xvY2FsU3RvcmFnZURpcmVjdG9yeSA9IGxvY2FsU3RvcmFnZURpcmVjdG9yeTsgfQogCi0g
ICAgV1RGOjpTdHJpbmcgd2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBt
X3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5OyB9CisgICAgY29uc3QgV1RGOjpTdHJpbmcmIHdlYlNR
TERhdGFiYXNlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV93ZWJTUUxEYXRhYmFzZURpcmVj
dG9yeTsgfQogICAgIHZvaWQgc2V0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoY29uc3QgV1RGOjpT
dHJpbmcmIHdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KSB7IG1fd2ViU1FMRGF0YWJhc2VEaXJlY3Rv
cnkgPSB3ZWJTUUxEYXRhYmFzZURpcmVjdG9yeTsgfQogCi0gICAgV1RGOjpTdHJpbmcgbWVkaWFL
ZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVkaWFLZXlzU3RvcmFnZURp
cmVjdG9yeTsgfQorICAgIGNvbnN0IFdURjo6U3RyaW5nJiBtZWRpYUtleXNTdG9yYWdlRGlyZWN0
b3J5KCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5OyB9CiAgICAg
dm9pZCBzZXRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFdURjo6U3RyaW5nJiBtZWRp
YUtleXNTdG9yYWdlRGlyZWN0b3J5KSB7IG1fbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSA9IG1l
ZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnk7IH0KIAogICAgIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmlu
Zz4mIGNhY2hlUGFydGl0aW9uZWRVUkxTY2hlbWVzKCkgeyByZXR1cm4gbV9jYWNoZVBhcnRpdGlv
bmVkVVJMU2NoZW1lczsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nv
Y29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29j
b2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQppbmRleCAzZjk2NDZlLi5hMDBhZjA3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2Nv
YS5tbQpAQCAtMTE4LDcgKzExOCw3IEBAIHN0YXRpYyB2b2lkIHJlZ2lzdGVyVXNlckRlZmF1bHRz
SWZOZWVkZWQoKQogdm9pZCBXZWJQcm9jZXNzUG9vbDo6dXBkYXRlUHJvY2Vzc1N1cHByZXNzaW9u
U3RhdGUoKQogewogI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgaWYgKG1fdXNlc05l
dHdvcmtQcm9jZXNzICYmIG1fbmV0d29ya1Byb2Nlc3MpCisgICAgaWYgKHVzZXNOZXR3b3JrUHJv
Y2VzcygpICYmIG1fbmV0d29ya1Byb2Nlc3MpCiAgICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPnNl
dFByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQocHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZCgpKTsK
ICNlbmRpZgogCkBAIC0xOTIsNyArMTkyLDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZv
cm1Jbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJgogICAg
IHBhcmFtZXRlcnMudWlQcm9jZXNzQnVuZGxlSWRlbnRpZmllciA9IFN0cmluZyhbW05TQnVuZGxl
IG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdKTsKIAogI2lmIEVOQUJMRShORVRXT1JLX1BS
T0NFU1MpCi0gICAgaWYgKCFtX3VzZXNOZXR3b3JrUHJvY2VzcykgeworICAgIGlmICghdXNlc05l
dHdvcmtQcm9jZXNzKCkpIHsKICNlbmRpZgogICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHNjaGVt
ZSA6IGdsb2JhbFVSTFNjaGVtZXNXaXRoQ3VzdG9tUHJvdG9jb2xIYW5kbGVycygpKQogICAgICAg
ICAgICAgcGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEZvckN1c3RvbVByb3RvY29scy5h
cHBlbmQoc2NoZW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
Y3BwCmluZGV4IDQwYzZjZDkuLjM5OWNiZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmNwcApAQCAtMTQwLDEyICsxNDAsOSBAQCBzdGF0aWMgV2Vic2l0ZURh
dGFTdG9yZTo6Q29uZmlndXJhdGlvbiBsZWdhY3lXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bihBUEk6OgogCiBXZWJQcm9jZXNzUG9vbDo6V2ViUHJvY2Vzc1Bvb2woQVBJOjpQcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCiAgICAgOiBtX2NvbmZpZ3VyYXRpb24oY29u
ZmlndXJhdGlvbi5jb3B5KCkpCi0gICAgLCBtX3Byb2Nlc3NNb2RlbChtX2NvbmZpZ3VyYXRpb24t
PnByb2Nlc3NNb2RlbCgpKQotICAgICwgbV93ZWJQcm9jZXNzQ291bnRMaW1pdCghbV9jb25maWd1
cmF0aW9uLT5tYXhpbXVtUHJvY2Vzc0NvdW50KCkgPyBVSU5UX01BWCA6IG1fY29uZmlndXJhdGlv
bi0+bWF4aW11bVByb2Nlc3NDb3VudCgpKQogICAgICwgbV9oYXZlSW5pdGlhbEVtcHR5UHJvY2Vz
cyhmYWxzZSkKICAgICAsIG1fcHJvY2Vzc1dpdGhQYWdlQ2FjaGUoMCkKICAgICAsIG1fZGVmYXVs
dFBhZ2VHcm91cChXZWJQYWdlR3JvdXA6OmNyZWF0ZU5vbk51bGwoKSkKLSAgICAsIG1faW5qZWN0
ZWRCdW5kbGVQYXRoKG1fY29uZmlndXJhdGlvbi0+aW5qZWN0ZWRCdW5kbGVQYXRoKCkpCiAgICAg
LCBtX2Rvd25sb2FkQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpEb3dubG9hZENsaWVudD4o
KSkKICAgICAsIG1faGlzdG9yeUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6TGVnYWN5Q29u
dGV4dEhpc3RvcnlDbGllbnQ+KCkpCiAgICAgLCBtX3Zpc2l0ZWRMaW5rUHJvdmlkZXIoVmlzaXRl
ZExpbmtQcm92aWRlcjo6Y3JlYXRlKCkpCkBAIC0xNTMsMjMgKzE1MCwxNiBAQCBXZWJQcm9jZXNz
UG9vbDo6V2ViUHJvY2Vzc1Bvb2woQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24mIGNvbmZp
Z3VyYXRpb24pCiAgICAgLCBtX3BsdWdJbkF1dG9TdGFydFByb3ZpZGVyKHRoaXMpCiAgICAgLCBt
X2Fsd2F5c1VzZXNDb21wbGV4VGV4dENvZGVQYXRoKGZhbHNlKQogICAgICwgbV9zaG91bGRVc2VG
b250U21vb3RoaW5nKHRydWUpCi0gICAgLCBtX2NhY2hlTW9kZWwobV9jb25maWd1cmF0aW9uLT5j
YWNoZU1vZGVsKCkpCi0gICAgLCBtX2Rpc2tDYWNoZVNpemVPdmVycmlkZShtX2NvbmZpZ3VyYXRp
b24tPmRpc2tDYWNoZVNpemVPdmVycmlkZSgpKQogICAgICwgbV9tZW1vcnlTYW1wbGVyRW5hYmxl
ZChmYWxzZSkKICAgICAsIG1fbWVtb3J5U2FtcGxlckludGVydmFsKDE0MDAuMCkKICAgICAsIG1f
d2Vic2l0ZURhdGFTdG9yZShtX2NvbmZpZ3VyYXRpb24tPnNob3VsZEhhdmVMZWdhY3lEYXRhU3Rv
cmUoKSA/IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlKGxlZ2FjeVdlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uKG1fY29uZmlndXJhdGlvbikpIDogbnVsbHB0cikKICNpZiBVU0UoU09V
UCkKICAgICAsIG1faW5pdGlhbEhUVFBDb29raWVBY2NlcHRQb2xpY3koSFRUUENvb2tpZUFjY2Vw
dFBvbGljeU9ubHlGcm9tTWFpbkRvY3VtZW50RG9tYWluKQogI2VuZGlmCi0gICAgLCBtX2FwcGxp
Y2F0aW9uQ2FjaGVEaXJlY3RvcnkoY29uZmlndXJhdGlvbi5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0
b3J5KCkpCi0gICAgLCBtX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KGNvbmZpZ3VyYXRpb24u
aW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKSkKLSAgICAsIG1fbWVkaWFLZXlzU3RvcmFnZURp
cmVjdG9yeShjb25maWd1cmF0aW9uLm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSkKLSAgICAs
IG1fd2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoY29uZmlndXJhdGlvbi53ZWJTUUxEYXRhYmFzZURp
cmVjdG9yeSgpKQogICAgICwgbV9zaG91bGRVc2VUZXN0aW5nTmV0d29ya1Nlc3Npb24oZmFsc2Up
CiAgICAgLCBtX3Byb2Nlc3NUZXJtaW5hdGlvbkVuYWJsZWQodHJ1ZSkKICNpZiBFTkFCTEUoTkVU
V09SS19QUk9DRVNTKQogICAgICwgbV9jYW5IYW5kbGVIVFRQU1NlcnZlclRydXN0RXZhbHVhdGlv
bih0cnVlKQotICAgICwgbV91c2VzTmV0d29ya1Byb2Nlc3MobV9jb25maWd1cmF0aW9uLT51c2VO
ZXR3b3JrUHJvY2VzcygpKQogI2VuZGlmCiAjaWYgVVNFKFNPVVApCiAgICAgLCBtX2lnbm9yZVRM
U0Vycm9ycyh0cnVlKQpAQCAtMzA0LDcgKzI5NCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNl
dFByb2Nlc3NNb2RlbChQcm9jZXNzTW9kZWwgcHJvY2Vzc01vZGVsKQogICAgIGlmIChwcm9jZXNz
TW9kZWwgIT0gUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJvY2VzcyAmJiAhbV9tZXNzYWdl
c1RvSW5qZWN0ZWRCdW5kbGVQb3N0ZWRUb0VtcHR5Q29udGV4dC5pc0VtcHR5KCkpCiAgICAgICAg
IENSQVNIKCk7CiAKLSAgICBtX3Byb2Nlc3NNb2RlbCA9IHByb2Nlc3NNb2RlbDsKKyAgICBtX2Nv
bmZpZ3VyYXRpb24tPnNldFByb2Nlc3NNb2RlbChwcm9jZXNzTW9kZWwpOwogfQogCiB2b2lkIFdl
YlByb2Nlc3NQb29sOjpzZXRNYXhpbXVtTnVtYmVyT2ZQcm9jZXNzZXModW5zaWduZWQgbWF4aW11
bU51bWJlck9mUHJvY2Vzc2VzKQpAQCAtMzEzLDI0ICszMDMsMjEgQEAgdm9pZCBXZWJQcm9jZXNz
UG9vbDo6c2V0TWF4aW11bU51bWJlck9mUHJvY2Vzc2VzKHVuc2lnbmVkIG1heGltdW1OdW1iZXJP
ZlByb2Nlc3MKICAgICBpZiAoIW1fcHJvY2Vzc2VzLmlzRW1wdHkoKSkKICAgICAgICAgQ1JBU0go
KTsKIAotICAgIGlmIChtYXhpbXVtTnVtYmVyT2ZQcm9jZXNzZXMgPT0gMCkKLSAgICAgICAgbV93
ZWJQcm9jZXNzQ291bnRMaW1pdCA9IFVJTlRfTUFYOwotICAgIGVsc2UKLSAgICAgICAgbV93ZWJQ
cm9jZXNzQ291bnRMaW1pdCA9IG1heGltdW1OdW1iZXJPZlByb2Nlc3NlczsKKyAgICBtX2NvbmZp
Z3VyYXRpb24tPnNldE1heGltdW1Qcm9jZXNzQ291bnQobWF4aW11bU51bWJlck9mUHJvY2Vzc2Vz
KTsKIH0KIAogSVBDOjpDb25uZWN0aW9uKiBXZWJQcm9jZXNzUG9vbDo6bmV0d29ya2luZ1Byb2Nl
c3NDb25uZWN0aW9uKCkKIHsKLSAgICBzd2l0Y2ggKG1fcHJvY2Vzc01vZGVsKSB7CisgICAgc3dp
dGNoIChwcm9jZXNzTW9kZWwoKSkgewogICAgIGNhc2UgUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25k
YXJ5UHJvY2VzczoKICNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAgICAgICBpZiAobV91
c2VzTmV0d29ya1Byb2Nlc3MpCisgICAgICAgIGlmICh1c2VzTmV0d29ya1Byb2Nlc3MoKSkKICAg
ICAgICAgICAgIHJldHVybiBtX25ldHdvcmtQcm9jZXNzLT5jb25uZWN0aW9uKCk7CiAjZW5kaWYK
ICAgICAgICAgcmV0dXJuIG1fcHJvY2Vzc2VzWzBdLT5jb25uZWN0aW9uKCk7CiAgICAgY2FzZSBQ
cm9jZXNzTW9kZWxNdWx0aXBsZVNlY29uZGFyeVByb2Nlc3NlczoKICNpZiBFTkFCTEUoTkVUV09S
S19QUk9DRVNTKQotICAgICAgICBBU1NFUlQobV91c2VzTmV0d29ya1Byb2Nlc3MpOworICAgICAg
ICBBU1NFUlQodXNlc05ldHdvcmtQcm9jZXNzKCkpOwogICAgICAgICByZXR1cm4gbV9uZXR3b3Jr
UHJvY2Vzcy0+Y29ubmVjdGlvbigpOwogI2Vsc2UKICAgICAgICAgYnJlYWs7CkBAIC0zNDksNyAr
MzM2LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6bGFuZ3VhZ2VDaGFuZ2VkKCkKIHsKICAgICBz
ZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlVzZXJQcmVmZXJyZWRMYW5n
dWFnZXNDaGFuZ2VkKHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKSkpOwogI2lmIFVTRShTT1VQKSAm
JiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAgIGlmIChtX3VzZXNOZXR3b3JrUHJvY2VzcyAm
JiBtX25ldHdvcmtQcm9jZXNzKQorICAgIGlmICh1c2VzTmV0d29ya1Byb2Nlc3MoKSAmJiBtX25l
dHdvcmtQcm9jZXNzKQogICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpO
ZXR3b3JrUHJvY2Vzczo6VXNlclByZWZlcnJlZExhbmd1YWdlc0NoYW5nZWQodXNlclByZWZlcnJl
ZExhbmd1YWdlcygpKSwgMCk7CiAjZW5kaWYKIH0KQEAgLTM2Nyw3ICszNTQsNyBAQCB2b2lkIFdl
YlByb2Nlc3NQb29sOjp0ZXh0Q2hlY2tlclN0YXRlQ2hhbmdlZCgpCiB2b2lkIFdlYlByb2Nlc3NQ
b29sOjpzZXRVc2VzTmV0d29ya1Byb2Nlc3MoYm9vbCB1c2VzTmV0d29ya1Byb2Nlc3MpCiB7CiAj
aWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSAgICBtX3VzZXNOZXR3b3JrUHJvY2VzcyA9IHVz
ZXNOZXR3b3JrUHJvY2VzczsKKyAgICBtX2NvbmZpZ3VyYXRpb24tPnNldFVzZU5ldHdvcmtQcm9j
ZXNzKHVzZXNOZXR3b3JrUHJvY2Vzcyk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTSh1c2VzTmV0
d29ya1Byb2Nlc3MpOwogI2VuZGlmCkBAIC0zNzYsNyArMzYzLDcgQEAgdm9pZCBXZWJQcm9jZXNz
UG9vbDo6c2V0VXNlc05ldHdvcmtQcm9jZXNzKGJvb2wgdXNlc05ldHdvcmtQcm9jZXNzKQogYm9v
bCBXZWJQcm9jZXNzUG9vbDo6dXNlc05ldHdvcmtQcm9jZXNzKCkgY29uc3QKIHsKICNpZiBFTkFC
TEUoTkVUV09SS19QUk9DRVNTKQotICAgIHJldHVybiBtX3VzZXNOZXR3b3JrUHJvY2VzczsKKyAg
ICByZXR1cm4gbV9jb25maWd1cmF0aW9uLT51c2VOZXR3b3JrUHJvY2VzcygpOwogI2Vsc2UKICAg
ICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKQEAgLTM5NCw4ICszODEsOCBAQCBOZXR3b3JrUHJvY2Vz
c1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKQogCiAgICAgcGFy
YW1ldGVycy5wcml2YXRlQnJvd3NpbmdFbmFibGVkID0gV2ViUHJlZmVyZW5jZXM6OmFueVBhZ2Vz
QXJlVXNpbmdQcml2YXRlQnJvd3NpbmcoKTsKIAotICAgIHBhcmFtZXRlcnMuY2FjaGVNb2RlbCA9
IG1fY2FjaGVNb2RlbDsKLSAgICBwYXJhbWV0ZXJzLmRpc2tDYWNoZVNpemVPdmVycmlkZSA9IG1f
ZGlza0NhY2hlU2l6ZU92ZXJyaWRlOworICAgIHBhcmFtZXRlcnMuY2FjaGVNb2RlbCA9IGNhY2hl
TW9kZWwoKTsKKyAgICBwYXJhbWV0ZXJzLmRpc2tDYWNoZVNpemVPdmVycmlkZSA9IG1fY29uZmln
dXJhdGlvbi0+ZGlza0NhY2hlU2l6ZU92ZXJyaWRlKCk7CiAgICAgcGFyYW1ldGVycy5jYW5IYW5k
bGVIVFRQU1NlcnZlclRydXN0RXZhbHVhdGlvbiA9IG1fY2FuSGFuZGxlSFRUUFNTZXJ2ZXJUcnVz
dEV2YWx1YXRpb247CiAKICAgICBwYXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9yeSA9IG1fY29u
ZmlndXJhdGlvbi0+ZGlza0NhY2hlRGlyZWN0b3J5KCk7CkBAIC00NzAsMTMgKzQ1NywxMyBAQCB2
b2lkIFdlYlByb2Nlc3NQb29sOjplbnN1cmVEYXRhYmFzZVByb2Nlc3MoKQogCiAgICAgbV9kYXRh
YmFzZVByb2Nlc3MgPSBEYXRhYmFzZVByb2Nlc3NQcm94eTo6Y3JlYXRlKHRoaXMpOwogCi0gICAg
QVNTRVJUKCFtX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5LmlzRW1wdHkoKSk7CisgICAgQVNT
RVJUKCFtX2NvbmZpZ3VyYXRpb24tPmluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkuaXNFbXB0
eSgpKTsKIAogICAgIC8vICoqKioqKioqKgogICAgIC8vIElNUE9SVEFOVDogRG8gbm90IGNoYW5n
ZSB0aGUgZGlyZWN0b3J5IHN0cnVjdHVyZSBmb3IgaW5kZXhlZCBkYXRhYmFzZXMgb24gZGlzayB3
aXRob3V0IGZpcnN0IGNvbnN1bHRpbmcgYSByZXZpZXdlciBmcm9tIEFwcGxlICg8cmRhcjovL3By
b2JsZW0vMTc0NTQ3MTI+KQogICAgIC8vICoqKioqKioqKgogICAgIERhdGFiYXNlUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwotICAgIHBhcmFtZXRlcnMuaW5kZXhlZERhdGFi
YXNlRGlyZWN0b3J5ID0gbV9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeTsKKyAgICBwYXJhbWV0
ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSA9IG1fY29uZmlndXJhdGlvbi0+aW5kZXhlZERC
RGF0YWJhc2VEaXJlY3RvcnkoKTsKIAogICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRs
ZUZvclJlYWRXcml0ZURpcmVjdG9yeShwYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVjdG9y
eSwgcGFyYW1ldGVycy5pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwog
CkBAIC01NzEsNyArNTU4LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0RpZENhY2hl
UGFnZShXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MpCiAKIFdlYlByb2Nlc3NQcm94eSYgV2ViUHJv
Y2Vzc1Bvb2w6OmVuc3VyZVNoYXJlZFdlYlByb2Nlc3MoKQogewotICAgIEFTU0VSVChtX3Byb2Nl
c3NNb2RlbCA9PSBQcm9jZXNzTW9kZWxTaGFyZWRTZWNvbmRhcnlQcm9jZXNzKTsKKyAgICBBU1NF
UlQocHJvY2Vzc01vZGVsKCkgPT0gUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJvY2Vzcyk7
CiAgICAgaWYgKG1fcHJvY2Vzc2VzLmlzRW1wdHkoKSkKICAgICAgICAgY3JlYXRlTmV3V2ViUHJv
Y2VzcygpOwogICAgIHJldHVybiAqbV9wcm9jZXNzZXNbMF07CkBAIC01ODAsNyArNTY3LDcgQEAg
V2ViUHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zdXJlU2hhcmVkV2ViUHJvY2Vzcygp
CiBXZWJQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjpjcmVhdGVOZXdXZWJQcm9jZXNzKCkK
IHsKICNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAgIGlmIChtX3VzZXNOZXR3b3JrUHJv
Y2VzcykKKyAgICBpZiAodXNlc05ldHdvcmtQcm9jZXNzKCkpCiAgICAgICAgIGVuc3VyZU5ldHdv
cmtQcm9jZXNzKCk7CiAjZW5kaWYKIApAQCAtNTkyLDExICs1NzksMTEgQEAgV2ViUHJvY2Vzc1By
b3h5JiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlTmV3V2ViUHJvY2VzcygpCiAgICAgaWYgKCFwYXJh
bWV0ZXJzLmluamVjdGVkQnVuZGxlUGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIFNhbmRib3hFeHRl
bnNpb246OmNyZWF0ZUhhbmRsZShwYXJhbWV0ZXJzLmluamVjdGVkQnVuZGxlUGF0aCwgU2FuZGJv
eEV4dGVuc2lvbjo6UmVhZE9ubHksIHBhcmFtZXRlcnMuaW5qZWN0ZWRCdW5kbGVQYXRoRXh0ZW5z
aW9uSGFuZGxlKTsKIAotICAgIHBhcmFtZXRlcnMuYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSA9
IG1fYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeTsKKyAgICBwYXJhbWV0ZXJzLmFwcGxpY2F0aW9u
Q2FjaGVEaXJlY3RvcnkgPSBtX2NvbmZpZ3VyYXRpb24tPmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rv
cnkoKTsKICAgICBpZiAoIXBhcmFtZXRlcnMuYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeS5pc0Vt
cHR5KCkpCiAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0
ZURpcmVjdG9yeShwYXJhbWV0ZXJzLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnksIHBhcmFtZXRl
cnMuYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAKLSAgICBwYXJh
bWV0ZXJzLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gbV93ZWJTUUxEYXRhYmFzZURpcmVjdG9y
eTsKKyAgICBwYXJhbWV0ZXJzLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gbV9jb25maWd1cmF0
aW9uLT53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpOwogICAgIGlmICghcGFyYW1ldGVycy53ZWJT
UUxEYXRhYmFzZURpcmVjdG9yeS5pc0VtcHR5KCkpCiAgICAgICAgIFNhbmRib3hFeHRlbnNpb246
OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShwYXJhbWV0ZXJzLndlYlNRTERhdGFi
YXNlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5RXh0ZW5zaW9u
SGFuZGxlKTsKIApAQCAtNjE4LDEzICs2MDUsMTMgQEAgV2ViUHJvY2Vzc1Byb3h5JiBXZWJQcm9j
ZXNzUG9vbDo6Y3JlYXRlTmV3V2ViUHJvY2VzcygpCiAgICAgICAgIFNhbmRib3hFeHRlbnNpb246
OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShjb250YWluZXJUZW1wb3JhcnlEaXJl
Y3RvcnksIHBhcmFtZXRlcnMuY29udGFpbmVyVGVtcG9yYXJ5RGlyZWN0b3J5RXh0ZW5zaW9uSGFu
ZGxlKTsKICNlbmRpZgogCi0gICAgcGFyYW1ldGVycy5tZWRpYUtleVN0b3JhZ2VEaXJlY3Rvcnkg
PSBtX21lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnk7CisgICAgcGFyYW1ldGVycy5tZWRpYUtleVN0
b3JhZ2VEaXJlY3RvcnkgPSBtX2NvbmZpZ3VyYXRpb24tPm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rv
cnkoKTsKICAgICBpZiAoIXBhcmFtZXRlcnMubWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5LmlzRW1w
dHkoKSkKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRl
RGlyZWN0b3J5KHBhcmFtZXRlcnMubWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5LCBwYXJhbWV0ZXJz
Lm1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAKICAgICBwYXJhbWV0
ZXJzLnNob3VsZFVzZVRlc3RpbmdOZXR3b3JrU2Vzc2lvbiA9IG1fc2hvdWxkVXNlVGVzdGluZ05l
dHdvcmtTZXNzaW9uOwogCi0gICAgcGFyYW1ldGVycy5jYWNoZU1vZGVsID0gbV9jYWNoZU1vZGVs
OworICAgIHBhcmFtZXRlcnMuY2FjaGVNb2RlbCA9IGNhY2hlTW9kZWwoKTsKICAgICBwYXJhbWV0
ZXJzLmxhbmd1YWdlcyA9IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKTsKIAogICAgIGNvcHlUb1Zl
Y3RvcihtX3NjaGVtZXNUb1JlZ2lzdGVyQXNFbXB0eURvY3VtZW50LCBwYXJhbWV0ZXJzLnVybFNj
aGVtZXNSZWdpc3RlcmVkQXNFbXB0eURvY3VtZW50KTsKQEAgLTY0Niw3ICs2MzMsNyBAQCBXZWJQ
cm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjpjcmVhdGVOZXdXZWJQcm9jZXNzKCkKICAgICAv
LyBpY29uRGF0YWJhc2VQYXRoIGlzIG5vbi1lbXB0eSBieSBkZWZhdWx0LCBidXQgbV9pY29uRGF0
YWJhc2UgaXNuJ3QgZW5hYmxlZCBpbiBVSSBwcm9jZXNzIHVubGVzcyBzZXREYXRhYmFzZVBhdGgg
aXMgY2FsbGVkIGV4cGxpY2l0bHkuCiAgICAgcGFyYW1ldGVycy5pY29uRGF0YWJhc2VFbmFibGVk
ID0gIWljb25EYXRhYmFzZVBhdGgoKS5pc0VtcHR5KCk7CiAKLSAgICBwYXJhbWV0ZXJzLnRlcm1p
bmF0aW9uVGltZW91dCA9IChtX3Byb2Nlc3NNb2RlbCA9PSBQcm9jZXNzTW9kZWxTaGFyZWRTZWNv
bmRhcnlQcm9jZXNzKSA/IHNoYXJlZFNlY29uZGFyeVByb2Nlc3NTaHV0ZG93blRpbWVvdXQgOiAw
OworICAgIHBhcmFtZXRlcnMudGVybWluYXRpb25UaW1lb3V0ID0gKHByb2Nlc3NNb2RlbCgpID09
IFByb2Nlc3NNb2RlbFNoYXJlZFNlY29uZGFyeVByb2Nlc3MpID8gc2hhcmVkU2Vjb25kYXJ5UHJv
Y2Vzc1NodXRkb3duVGltZW91dCA6IDA7CiAKICAgICBwYXJhbWV0ZXJzLnRleHRDaGVja2VyU3Rh
dGUgPSBUZXh0Q2hlY2tlcjo6c3RhdGUoKTsKIApAQCAtNjYwLDcgKzY0Nyw3IEBAIFdlYlByb2Nl
c3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZU5ld1dlYlByb2Nlc3MoKQogI2VuZGlmCiAK
ICNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAgIHBhcmFtZXRlcnMudXNlc05ldHdvcmtQ
cm9jZXNzID0gbV91c2VzTmV0d29ya1Byb2Nlc3M7CisgICAgcGFyYW1ldGVycy51c2VzTmV0d29y
a1Byb2Nlc3MgPSB1c2VzTmV0d29ya1Byb2Nlc3MoKTsKICNlbmRpZgogCiAgICAgcGFyYW1ldGVy
cy5wbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMgPSBtX3BsdWdJbkF1dG9TdGFydFByb3ZpZGVy
LmF1dG9TdGFydE9yaWdpbkhhc2hlc0NvcHkoKTsKQEAgLTcwNiw3ICs2OTMsNyBAQCBXZWJQcm9j
ZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjpjcmVhdGVOZXdXZWJQcm9jZXNzKCkKIAogICAgIG1f
cHJvY2Vzc2VzLmFwcGVuZChwcm9jZXNzLnB0cigpKTsKIAotICAgIGlmIChtX3Byb2Nlc3NNb2Rl
bCA9PSBQcm9jZXNzTW9kZWxTaGFyZWRTZWNvbmRhcnlQcm9jZXNzKSB7CisgICAgaWYgKHByb2Nl
c3NNb2RlbCgpID09IFByb2Nlc3NNb2RlbFNoYXJlZFNlY29uZGFyeVByb2Nlc3MpIHsKICAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgIT0gbV9tZXNzYWdlc1RvSW5qZWN0ZWRCdW5kbGVQb3N0
ZWRUb0VtcHR5Q29udGV4dC5zaXplKCk7ICsraSkgewogICAgICAgICAgICAgYXV0byYgbWVzc2Fn
ZU5hbWVBbmRCb2R5ID0gbV9tZXNzYWdlc1RvSW5qZWN0ZWRCdW5kbGVQb3N0ZWRUb0VtcHR5Q29u
dGV4dFtpXTsKIApAQCAtNzMxLDcgKzcxOCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6Ondhcm1J
bml0aWFsUHJvY2VzcygpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAobV9wcm9j
ZXNzZXMuc2l6ZSgpID49IG1fd2ViUHJvY2Vzc0NvdW50TGltaXQpCisgICAgaWYgKG1fcHJvY2Vz
c2VzLnNpemUoKSA+PSBtYXhpbXVtTnVtYmVyT2ZQcm9jZXNzZXMoKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgY3JlYXRlTmV3V2ViUHJvY2VzcygpOwpAQCAtNzk1LDcgKzc4Miw3IEBAIHZvaWQg
V2ViUHJvY2Vzc1Bvb2w6OmRpc2Nvbm5lY3RQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSogcHJvY2Vz
cykKIAogICAgIC8vIEZJWE1FIChNdWx0aS1XZWJQcm9jZXNzKTogPHJkYXI6Ly9wcm9ibGVtLzEy
MjM5NzY1PiBTb21lIG9mIHRoZSBpbnZhbGlkYXRpb24gY2FsbHMgYmVsb3cgYXJlIHN0aWxsIG5l
Y2Vzc2FyeSBpbiBtdWx0aS1wcm9jZXNzIG1vZGUsIGJ1dCB0aGV5IHNob3VsZCBvbmx5IGFmZmVj
dCBkYXRhIHN0cnVjdHVyZXMgcGVydGFpbmluZyB0byB0aGUgcHJvY2VzcyBiZWluZyBkaXNjb25u
ZWN0ZWQuCiAgICAgLy8gQ2xlYXJpbmcgZXZlcnl0aGluZyBjYXVzZXMgYXNzZXJ0aW9uIGZhaWx1
cmVzLCBzbyBpdCdzIGxlc3MgdHJvdWJsZSB0byBza2lwIHRoYXQgZm9yIG5vdy4KLSAgICBpZiAo
bV9wcm9jZXNzTW9kZWwgIT0gUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJvY2Vzcykgewor
ICAgIGlmIChwcm9jZXNzTW9kZWwoKSAhPSBQcm9jZXNzTW9kZWxTaGFyZWRTZWNvbmRhcnlQcm9j
ZXNzKSB7CiAgICAgICAgIFJlZlB0cjxXZWJQcm9jZXNzUHJveHk+IHByb3RlY3QocHJvY2Vzcyk7
CiAgICAgICAgIGlmIChtX3Byb2Nlc3NXaXRoUGFnZUNhY2hlID09IHByb2Nlc3MpCiAgICAgICAg
ICAgICBtX3Byb2Nlc3NXaXRoUGFnZUNhY2hlID0gMDsKQEAgLTgyMiw3ICs4MDksNyBAQCB2b2lk
IFdlYlByb2Nlc3NQb29sOjpkaXNjb25uZWN0UHJvY2VzcyhXZWJQcm9jZXNzUHJveHkqIHByb2Nl
c3MpCiAKIFdlYlByb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZU5ld1dlYlByb2Nl
c3NSZXNwZWN0aW5nUHJvY2Vzc0NvdW50TGltaXQoKQogewotICAgIGlmIChtX3Byb2Nlc3Nlcy5z
aXplKCkgPCBtX3dlYlByb2Nlc3NDb3VudExpbWl0KQorICAgIGlmIChtX3Byb2Nlc3Nlcy5zaXpl
KCkgPCBtYXhpbXVtTnVtYmVyT2ZQcm9jZXNzZXMoKSkKICAgICAgICAgcmV0dXJuIGNyZWF0ZU5l
d1dlYlByb2Nlc3MoKTsKIAogICAgIC8vIENob29zZSB0aGUgcHJvY2VzcyB3aXRoIGZld2VzdCBw
YWdlcy4KQEAgLTg0OCw3ICs4MzUsNyBAQCBQYXNzUmVmUHRyPFdlYlBhZ2VQcm94eT4gV2ViUHJv
Y2Vzc1Bvb2w6OmNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgVwogICAgIH0K
IAogICAgIFJlZlB0cjxXZWJQcm9jZXNzUHJveHk+IHByb2Nlc3M7Ci0gICAgaWYgKG1fcHJvY2Vz
c01vZGVsID09IFByb2Nlc3NNb2RlbFNoYXJlZFNlY29uZGFyeVByb2Nlc3MpIHsKKyAgICBpZiAo
cHJvY2Vzc01vZGVsKCkgPT0gUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJvY2Vzcykgewog
ICAgICAgICBwcm9jZXNzID0gJmVuc3VyZVNoYXJlZFdlYlByb2Nlc3MoKTsKICAgICB9IGVsc2Ug
ewogICAgICAgICBpZiAobV9oYXZlSW5pdGlhbEVtcHR5UHJvY2VzcykgewpAQCAtOTAzLDcgKzg5
MCw3IEBAIERvd25sb2FkUHJveHkqIFdlYlByb2Nlc3NQb29sOjpyZXN1bWVEb3dubG9hZChjb25z
dCBBUEk6OkRhdGEqIHJlc3VtZURhdGEsIGNvbnN0CiB2b2lkIFdlYlByb2Nlc3NQb29sOjpwb3N0
TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoY29uc3QgU3RyaW5nJiBtZXNzYWdlTmFtZSwgQVBJOjpP
YmplY3QqIG1lc3NhZ2VCb2R5KQogewogICAgIGlmIChtX3Byb2Nlc3Nlcy5pc0VtcHR5KCkpIHsK
LSAgICAgICAgaWYgKG1fcHJvY2Vzc01vZGVsID09IFByb2Nlc3NNb2RlbFNoYXJlZFNlY29uZGFy
eVByb2Nlc3MpCisgICAgICAgIGlmIChwcm9jZXNzTW9kZWwoKSA9PSBQcm9jZXNzTW9kZWxTaGFy
ZWRTZWNvbmRhcnlQcm9jZXNzKQogICAgICAgICAgICAgbV9tZXNzYWdlc1RvSW5qZWN0ZWRCdW5k
bGVQb3N0ZWRUb0VtcHR5Q29udGV4dC5hcHBlbmQoc3RkOjptYWtlX3BhaXIobWVzc2FnZU5hbWUs
IG1lc3NhZ2VCb2R5KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC05ODYsNyArOTczLDcg
QEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0Q2FuSGFuZGxlSFRUUFNTZXJ2ZXJUcnVzdEV2YWx1
YXRpb24oYm9vbCB2YWx1ZSkKIHsKICNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIG1f
Y2FuSGFuZGxlSFRUUFNTZXJ2ZXJUcnVzdEV2YWx1YXRpb24gPSB2YWx1ZTsKLSAgICBpZiAobV91
c2VzTmV0d29ya1Byb2Nlc3MgJiYgbV9uZXR3b3JrUHJvY2VzcykgeworICAgIGlmICh1c2VzTmV0
d29ya1Byb2Nlc3MoKSAmJiBtX25ldHdvcmtQcm9jZXNzKSB7CiAgICAgICAgIG1fbmV0d29ya1By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRDYW5IYW5kbGVIVFRQU1Nl
cnZlclRydXN0RXZhbHVhdGlvbih2YWx1ZSksIDApOwogICAgICAgICByZXR1cm47CiAgICAgfQpA
QCAtMTA1NywxMiArMTA0NCwxMiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpyZWdpc3RlclVSTFNj
aGVtZUFzQ2FjaGVQYXJ0aXRpb25lZChjb25zdCBTdHJpbmcmIHVybFNjaGVtZQogCiB2b2lkIFdl
YlByb2Nlc3NQb29sOjpzZXRDYWNoZU1vZGVsKENhY2hlTW9kZWwgY2FjaGVNb2RlbCkKIHsKLSAg
ICBtX2NhY2hlTW9kZWwgPSBjYWNoZU1vZGVsOwotICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNz
YWdlczo6V2ViUHJvY2Vzczo6U2V0Q2FjaGVNb2RlbChtX2NhY2hlTW9kZWwpKTsKKyAgICBtX2Nv
bmZpZ3VyYXRpb24tPnNldENhY2hlTW9kZWwoY2FjaGVNb2RlbCk7CisgICAgc2VuZFRvQWxsUHJv
Y2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTZXRDYWNoZU1vZGVsKGNhY2hlTW9kZWwpKTsK
IAogI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgaWYgKG1fdXNlc05ldHdvcmtQcm9j
ZXNzICYmIG1fbmV0d29ya1Byb2Nlc3MpCi0gICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRDYWNoZU1vZGVsKG1fY2FjaGVNb2RlbCksIDAp
OworICAgIGlmICh1c2VzTmV0d29ya1Byb2Nlc3MoKSAmJiBtX25ldHdvcmtQcm9jZXNzKQorICAg
ICAgICBtX25ldHdvcmtQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6U2V0
Q2FjaGVNb2RlbChjYWNoZU1vZGVsKSwgMCk7CiAjZW5kaWYKIH0KIApAQCAtMTE5NCw3ICsxMTgx
LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6dXNlVGVzdGluZ05ldHdvcmtTZXNzaW9uKCkKIHZv
aWQgV2ViUHJvY2Vzc1Bvb2w6OmFsbG93U3BlY2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdChj
b25zdCBXZWJDZXJ0aWZpY2F0ZUluZm8qIGNlcnRpZmljYXRlLCBjb25zdCBTdHJpbmcmIGhvc3Qp
CiB7CiAjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSAgICBpZiAobV91c2VzTmV0d29ya1By
b2Nlc3MgJiYgbV9uZXR3b3JrUHJvY2VzcykgeworICAgIGlmICh1c2VzTmV0d29ya1Byb2Nlc3Mo
KSAmJiBtX25ldHdvcmtQcm9jZXNzKSB7CiAgICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpBbGxvd1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZv
ckhvc3QoY2VydGlmaWNhdGUtPmNlcnRpZmljYXRlSW5mbygpLCBob3N0KSwgMCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CkBAIC0xMjQ5LDcgKzEyMzYsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29s
OjpnZXRTdGF0aXN0aWNzKHVpbnQzMl90IHN0YXRpc3RpY3NNYXNrLCBzdGQ6OmZ1bmN0aW9uPHZv
aWQgKAogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpyZXF1ZXN0V2ViQ29udGVudFN0YXRpc3RpY3Mo
U3RhdGlzdGljc1JlcXVlc3QqIHJlcXVlc3QpCiB7Ci0gICAgaWYgKG1fcHJvY2Vzc01vZGVsID09
IFByb2Nlc3NNb2RlbFNoYXJlZFNlY29uZGFyeVByb2Nlc3MpIHsKKyAgICBpZiAocHJvY2Vzc01v
ZGVsKCkgPT0gUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJvY2VzcykgewogICAgICAgICBp
ZiAobV9wcm9jZXNzZXMuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAK
QEAgLTEyNjYsNyArMTI1Myw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlcXVlc3ROZXR3b3Jr
aW5nU3RhdGlzdGljcyhTdGF0aXN0aWNzUmVxdWVzdCogcmVxdWVzdCkKIHsKICAgICBib29sIG5l
dHdvcmtQcm9jZXNzVW5hdmFpbGFibGU7CiAjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSAg
ICBuZXR3b3JrUHJvY2Vzc1VuYXZhaWxhYmxlID0gIW1fdXNlc05ldHdvcmtQcm9jZXNzIHx8ICFt
X25ldHdvcmtQcm9jZXNzOworICAgIG5ldHdvcmtQcm9jZXNzVW5hdmFpbGFibGUgPSAhdXNlc05l
dHdvcmtQcm9jZXNzKCkgfHwgIW1fbmV0d29ya1Byb2Nlc3M7CiAjZWxzZQogICAgIG5ldHdvcmtQ
cm9jZXNzVW5hdmFpbGFibGUgPSB0cnVlOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IGYyMmY1MjcuLmM2ZTQ3NmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNs
dWRlICJBUElEaWN0aW9uYXJ5LmgiCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSAi
QVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFT
dG9yZS5oIgogI2luY2x1ZGUgIkRvd25sb2FkUHJveHlNYXAuaCIKICNpbmNsdWRlICJHZW5lcmlj
Q2FsbGJhY2suaCIKQEAgLTcxLDcgKzcyLDYgQEAgT0JKQ19DTEFTUyBOU1N0cmluZzsKIG5hbWVz
cGFjZSBBUEkgewogY2xhc3MgRG93bmxvYWRDbGllbnQ7CiBjbGFzcyBMZWdhY3lDb250ZXh0SGlz
dG9yeUNsaWVudDsKLWNsYXNzIFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjsKIH0KIAogbmFtZXNw
YWNlIFdlYktpdCB7CkBAIC0xMzksMTAgKzEzOSwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRE
b3dubG9hZENsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpEb3dubG9hZENsaWVudD4pOwogCiAg
ICAgdm9pZCBzZXRQcm9jZXNzTW9kZWwoUHJvY2Vzc01vZGVsKTsgLy8gQ2FuIG9ubHkgYmUgY2Fs
bGVkIHdoZW4gdGhlcmUgYXJlIG5vIHByb2Nlc3NlcyBydW5uaW5nLgotICAgIFByb2Nlc3NNb2Rl
bCBwcm9jZXNzTW9kZWwoKSBjb25zdCB7IHJldHVybiBtX3Byb2Nlc3NNb2RlbDsgfQorICAgIFBy
b2Nlc3NNb2RlbCBwcm9jZXNzTW9kZWwoKSBjb25zdCB7IHJldHVybiBtX2NvbmZpZ3VyYXRpb24t
PnByb2Nlc3NNb2RlbCgpOyB9CiAKICAgICB2b2lkIHNldE1heGltdW1OdW1iZXJPZlByb2Nlc3Nl
cyh1bnNpZ25lZCk7IC8vIENhbiBvbmx5IGJlIGNhbGxlZCB3aGVuIHRoZXJlIGFyZSBubyBwcm9j
ZXNzZXMgcnVubmluZy4KLSAgICB1bnNpZ25lZCBtYXhpbXVtTnVtYmVyT2ZQcm9jZXNzZXMoKSBj
b25zdCB7IHJldHVybiBtX3dlYlByb2Nlc3NDb3VudExpbWl0OyB9CisgICAgdW5zaWduZWQgbWF4
aW11bU51bWJlck9mUHJvY2Vzc2VzKCkgY29uc3QgeyByZXR1cm4gIW1fY29uZmlndXJhdGlvbi0+
bWF4aW11bVByb2Nlc3NDb3VudCgpID8gVUlOVF9NQVggOiBtX2NvbmZpZ3VyYXRpb24tPm1heGlt
dW1Qcm9jZXNzQ291bnQoKTsgfQogCiAgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxXZWJQcm9jZXNz
UHJveHk+PiYgcHJvY2Vzc2VzKCkgY29uc3QgeyByZXR1cm4gbV9wcm9jZXNzZXM7IH0KIApAQCAt
MTY5LDcgKzE2OSw3IEBAIHB1YmxpYzoKIAogICAgIFBhc3NSZWZQdHI8V2ViUGFnZVByb3h5PiBj
cmVhdGVXZWJQYWdlKFBhZ2VDbGllbnQmLCBXZWJQYWdlQ29uZmlndXJhdGlvbik7CiAKLSAgICBj
b25zdCBTdHJpbmcmIGluamVjdGVkQnVuZGxlUGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1faW5qZWN0
ZWRCdW5kbGVQYXRoOyB9CisgICAgY29uc3QgU3RyaW5nJiBpbmplY3RlZEJ1bmRsZVBhdGgoKSBj
b25zdCB7IHJldHVybiBtX2NvbmZpZ3VyYXRpb24tPmluamVjdGVkQnVuZGxlUGF0aCgpOyB9CiAK
ICAgICBEb3dubG9hZFByb3h5KiBkb3dubG9hZChXZWJQYWdlUHJveHkqIGluaXRpYXRpbmdQYWdl
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKICAgICBEb3dubG9hZFByb3h5KiBy
ZXN1bWVEb3dubG9hZChjb25zdCBBUEk6OkRhdGEqIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYg
cGF0aCk7CkBAIC0yMTIsNyArMjEyLDcgQEAgcHVibGljOgogICAgIFZpc2l0ZWRMaW5rUHJvdmlk
ZXImIHZpc2l0ZWRMaW5rUHJvdmlkZXIoKSB7IHJldHVybiBtX3Zpc2l0ZWRMaW5rUHJvdmlkZXIu
Z2V0KCk7IH0KIAogICAgIHZvaWQgc2V0Q2FjaGVNb2RlbChDYWNoZU1vZGVsKTsKLSAgICBDYWNo
ZU1vZGVsIGNhY2hlTW9kZWwoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlTW9kZWw7IH0KKyAgICBD
YWNoZU1vZGVsIGNhY2hlTW9kZWwoKSBjb25zdCB7IHJldHVybiBtX2NvbmZpZ3VyYXRpb24tPmNh
Y2hlTW9kZWwoKTsgfQogCiAgICAgdm9pZCBzZXREZWZhdWx0UmVxdWVzdFRpbWVvdXRJbnRlcnZh
bChkb3VibGUpOwogCkBAIC00MjMsOSArNDIzLDYgQEAgcHJpdmF0ZToKIAogICAgIElQQzo6TWVz
c2FnZVJlY2VpdmVyTWFwIG1fbWVzc2FnZVJlY2VpdmVyTWFwOwogCi0gICAgUHJvY2Vzc01vZGVs
IG1fcHJvY2Vzc01vZGVsOwotICAgIHVuc2lnbmVkIG1fd2ViUHJvY2Vzc0NvdW50TGltaXQ7IC8v
IFRoZSBsaW1pdCBoYXMgbm8gZWZmZWN0IHdoZW4gcHJvY2VzcyBtb2RlbCBpcyBQcm9jZXNzTW9k
ZWxTaGFyZWRTZWNvbmRhcnlQcm9jZXNzLgotICAgIAogICAgIFZlY3RvcjxSZWZQdHI8V2ViUHJv
Y2Vzc1Byb3h5Pj4gbV9wcm9jZXNzZXM7CiAgICAgYm9vbCBtX2hhdmVJbml0aWFsRW1wdHlQcm9j
ZXNzOwogCkBAIC00MzQsNyArNDMxLDYgQEAgcHJpdmF0ZToKICAgICBSZWY8V2ViUGFnZUdyb3Vw
PiBtX2RlZmF1bHRQYWdlR3JvdXA7CiAKICAgICBSZWZQdHI8QVBJOjpPYmplY3Q+IG1faW5qZWN0
ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhOwotICAgIFN0cmluZyBtX2luamVjdGVkQnVu
ZGxlUGF0aDsKICAgICBXZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQgbV9pbmplY3RlZEJ1
bmRsZUNsaWVudDsKIAogICAgIFdlYkNvbnRleHRDbGllbnQgbV9jbGllbnQ7CkBAIC00NzEsOSAr
NDY3LDYgQEAgcHJpdmF0ZToKICAgICAvLyBUaGUgY2xpZW50IHNob3VsZCB1c2UgaW5pdGlhbGl6
YXRpb24gbWVzc2FnZXMgaW5zdGVhZCwgc28gdGhhdCBhIHJlc3RhcnRlZCBwcm9jZXNzIHdvdWxk
IGdldCB0aGUgc2FtZSBzdGF0ZS4KICAgICBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgUmVmUHRy
PEFQSTo6T2JqZWN0Pj4+IG1fbWVzc2FnZXNUb0luamVjdGVkQnVuZGxlUG9zdGVkVG9FbXB0eUNv
bnRleHQ7CiAKLSAgICBDYWNoZU1vZGVsIG1fY2FjaGVNb2RlbDsKLSAgICB1aW50NjRfdCBtX2Rp
c2tDYWNoZVNpemVPdmVycmlkZTsKLQogICAgIGJvb2wgbV9tZW1vcnlTYW1wbGVyRW5hYmxlZDsK
ICAgICBkb3VibGUgbV9tZW1vcnlTYW1wbGVySW50ZXJ2YWw7CiAKQEAgLTQ5OSwxOCArNDkyLDEy
IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fb3ZlcnJpZGVJY29uRGF0YWJhc2VQYXRoOwogICAg
IFN0cmluZyBtX292ZXJyaWRlQ29va2llU3RvcmFnZURpcmVjdG9yeTsKIAotICAgIFN0cmluZyBt
X2FwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnk7Ci0gICAgU3RyaW5nIG1faW5kZXhlZERCRGF0YWJh
c2VEaXJlY3Rvcnk7Ci0gICAgU3RyaW5nIG1fbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeTsKLSAg
ICBTdHJpbmcgbV93ZWJTUUxEYXRhYmFzZURpcmVjdG9yeTsKLQogICAgIGJvb2wgbV9zaG91bGRV
c2VUZXN0aW5nTmV0d29ya1Nlc3Npb247CiAKICAgICBib29sIG1fcHJvY2Vzc1Rlcm1pbmF0aW9u
RW5hYmxlZDsKIAogI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgYm9vbCBtX2Nhbkhh
bmRsZUhUVFBTU2VydmVyVHJ1c3RFdmFsdWF0aW9uOwotICAgIGJvb2wgbV91c2VzTmV0d29ya1By
b2Nlc3M7CiAgICAgUmVmUHRyPE5ldHdvcmtQcm9jZXNzUHJveHk+IG1fbmV0d29ya1Byb2Nlc3M7
CiAjZW5kaWYKIApAQCAtNTQ3LDEwICs1MzQsMTAgQEAgcHJpdmF0ZToKIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+CiB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZW5kVG9OZXR3b3JraW5nUHJvY2VzcyhUJiYg
bWVzc2FnZSkKIHsKLSAgICBzd2l0Y2ggKG1fcHJvY2Vzc01vZGVsKSB7CisgICAgc3dpdGNoIChw
cm9jZXNzTW9kZWwoKSkgewogICAgIGNhc2UgUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJv
Y2VzczoKICNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAgICAgICBpZiAobV91c2VzTmV0
d29ya1Byb2Nlc3MpIHsKKyAgICAgICAgaWYgKHVzZXNOZXR3b3JrUHJvY2VzcygpKSB7CiAgICAg
ICAgICAgICBpZiAobV9uZXR3b3JrUHJvY2VzcyAmJiBtX25ldHdvcmtQcm9jZXNzLT5jYW5TZW5k
TWVzc2FnZSgpKQogICAgICAgICAgICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPnNlbmQoc3RkOjpm
b3J3YXJkPFQ+KG1lc3NhZ2UpLCAwKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTU3NCwxMCAr
NTYxLDEwIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzKFQm
JiBtZXNzYWdlKQogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNl
bmRUb05ldHdvcmtpbmdQcm9jZXNzUmVsYXVuY2hpbmdJZk5lY2Vzc2FyeShUJiYgbWVzc2FnZSkK
IHsKLSAgICBzd2l0Y2ggKG1fcHJvY2Vzc01vZGVsKSB7CisgICAgc3dpdGNoIChwcm9jZXNzTW9k
ZWwoKSkgewogICAgIGNhc2UgUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJvY2VzczoKICNp
ZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAgICAgICBpZiAobV91c2VzTmV0d29ya1Byb2Nl
c3MpIHsKKyAgICAgICAgaWYgKHVzZXNOZXR3b3JrUHJvY2VzcygpKSB7CiAgICAgICAgICAgICBl
bnN1cmVOZXR3b3JrUHJvY2VzcygpOwogICAgICAgICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+c2Vu
ZChzdGQ6OmZvcndhcmQ8VD4obWVzc2FnZSksIDApOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAt
NjI0LDcgKzYxMSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiB2b2lkIFdlYlByb2Nlc3NQb29s
OjpzZW5kVG9BbGxQcm9jZXNzZXNSZWxhdW5jaGluZ1RoZW1JZk5lY2Vzc2FyeShjb25zdCBUJiBt
ZXNzYWdlKQogewogICAgIC8vIEZJWE1FIChNdWx0aS1XZWJQcm9jZXNzKTogV2ViUHJvY2Vzc1Bv
b2wgZG9lc24ndCB0cmFjayBwcm9jZXNzZXMgdGhhdCBoYXZlIGV4aXRlZCwgc28gaXQgY2Fubm90
IHJlbGF1bmNoIHRoZXNlLiBQZXJoYXBzIHRoaXMgZnVuY3Rpb25hbGl0eSB3b24ndCBiZSBuZWVk
ZWQgaW4gdGhpcyBtb2RlLgotICAgIGlmIChtX3Byb2Nlc3NNb2RlbCA9PSBQcm9jZXNzTW9kZWxT
aGFyZWRTZWNvbmRhcnlQcm9jZXNzKQorICAgIGlmIChwcm9jZXNzTW9kZWwoKSA9PSBQcm9jZXNz
TW9kZWxTaGFyZWRTZWNvbmRhcnlQcm9jZXNzKQogICAgICAgICBlbnN1cmVTaGFyZWRXZWJQcm9j
ZXNzKCk7CiAgICAgc2VuZFRvQWxsUHJvY2Vzc2VzKG1lc3NhZ2UpOwogfQpAQCAtNjMyLDcgKzYx
OSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNlbmRUb0FsbFByb2Nlc3Nlc1JlbGF1bmNoaW5n
VGhlbUlmTmVjZXNzYXJ5KGNvbnN0IFQmIG1lc3NhCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogdm9p
ZCBXZWJQcm9jZXNzUG9vbDo6c2VuZFRvT25lUHJvY2VzcyhUJiYgbWVzc2FnZSkKIHsKLSAgICBp
ZiAobV9wcm9jZXNzTW9kZWwgPT0gUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJvY2VzcykK
KyAgICBpZiAocHJvY2Vzc01vZGVsKCkgPT0gUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJv
Y2VzcykKICAgICAgICAgZW5zdXJlU2hhcmVkV2ViUHJvY2VzcygpOwogCiAgICAgYm9vbCBtZXNz
YWdlU2VudCA9IGZhbHNlOwpAQCAtNjQ2LDcgKzYzMyw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6
OnNlbmRUb09uZVByb2Nlc3MoVCYmIG1lc3NhZ2UpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBp
ZiAoIW1lc3NhZ2VTZW50ICYmIG1fcHJvY2Vzc01vZGVsID09IFByb2Nlc3NNb2RlbE11bHRpcGxl
U2Vjb25kYXJ5UHJvY2Vzc2VzKSB7CisgICAgaWYgKCFtZXNzYWdlU2VudCAmJiBwcm9jZXNzTW9k
ZWwoKSA9PSBQcm9jZXNzTW9kZWxNdWx0aXBsZVNlY29uZGFyeVByb2Nlc3NlcykgewogICAgICAg
ICB3YXJtSW5pdGlhbFByb2Nlc3MoKTsKICAgICAgICAgUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4g
cHJvY2VzcyA9IG1fcHJvY2Vzc2VzLmxhc3QoKTsKICAgICAgICAgaWYgKHByb2Nlc3MtPmNhblNl
bmRNZXNzYWdlKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dl
YlByb2Nlc3NQb29sR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViUHJv
Y2Vzc1Bvb2xHdGsuY3BwCmluZGV4IGNjZGI0YWMuLjRiNjdhYmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc1Bvb2xHdGsuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc1Bvb2xHdGsuY3BwCkBAIC0xMDksNyAr
MTA5LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vz
cyhXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJgogICAgICAgICBwYXJhbWV0ZXJzLmRpc2tD
YWNoZURpcmVjdG9yeSA9IG1fY29uZmlndXJhdGlvbi0+ZGlza0NhY2hlRGlyZWN0b3J5KCk7CiAg
ICAgfQogCi0gICAgcGFyYW1ldGVycy5tZW1vcnlDYWNoZURpc2FibGVkID0gbV9tZW1vcnlDYWNo
ZURpc2FibGVkIHx8IG1fY2FjaGVNb2RlbCA9PSBDYWNoZU1vZGVsRG9jdW1lbnRWaWV3ZXI7Cisg
ICAgcGFyYW1ldGVycy5tZW1vcnlDYWNoZURpc2FibGVkID0gbV9tZW1vcnlDYWNoZURpc2FibGVk
IHx8IGNhY2hlTW9kZWwoKSA9PSBDYWNoZU1vZGVsRG9jdW1lbnRWaWV3ZXI7CiB9CiAKIHZvaWQg
V2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW52YWxpZGF0ZUNvbnRleHQoKQo=
</data>
<flag name="review"
          id="280133"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>