<?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>185107</bug_id>
          
          <creation_ts>2018-04-27 21:29:10 -0700</creation_ts>
          <short_desc>NetworkResourceLoader::isMainResource() is a misnomer; it is only true for a main frame initiated load</short_desc>
          <delta_ts>2018-04-28 15:23:25 -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>WebKit Misc.</component>
          <version>WebKit Local Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=185105</see_also>
          <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="Daniel Bates">dbates</reporter>
          <assigned_to name="Daniel Bates">dbates</assigned_to>
          <cc>achristensen</cc>
    
    <cc>aestes</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>japhet</cc>
    
    <cc>joepeck</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1418759</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-04-27 21:29:10 -0700</bug_when>
    <thetext>NetworkResourceLoader::isMainResource() is a misnomer. It only returns true if the request is for the main frame. Throughout the code base the term &quot;main resource&quot; is known to be the document that is loaded in a frame. Another way to say this, every frame has exactly one main resource, including the top-most frame (&quot;main frame&quot;). However, NetworkResourceLoader::isMainResource() is currently defined to be:

[[
    bool isMainResource() const { return m_parameters.request.requester() == WebCore::ResourceRequest::Requester::Main; }
]]
&lt;https://trac.webkit.org/browser/trunk/Source/WebKit/NetworkProcess/NetworkResourceLoader.h?rev=231110#L107&gt;

So, NetworkResourceLoader::isMainResource() is only true for a main resource of the main frame. This is confusing. We should rename NetworkResourceLoader::isMainResource() to better descibre its purpose. Maybe NetworkResourceLoader::isMainFrameLoader()? NetworkResourceLoader::isMainFrameMainResource()? or NetworkResourceLoader::initiatedByMainFrame()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1418762</commentid>
    <comment_count>1</comment_count>
      <attachid>339059</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-04-27 21:47:22 -0700</bug_when>
    <thetext>Created attachment 339059
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1418763</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-04-27 21:50:22 -0700</bug_when>
    <thetext>Attachment 339059 did not pass style-queue:


ERROR: Source/WebCore/platform/network/ResourceRequestBase.h:166:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
Total errors found: 1 in 18 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1418766</commentid>
    <comment_count>3</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-04-27 21:56:55 -0700</bug_when>
    <thetext>I am open to naming suggestions. The proposed patch renames NetworkResourceLoader::isMainResource() to NetworkResourceLoader::isMainFrameLoader(). I also renamed ResourceRequest::Requester::Main to ResourceRequest::Requester::MainFrame to help clarify that the requester is the &quot;main frame&quot; as opposed to an arbitrary main resource (that may or may not be for the main frame).

While I was performing the renames I came across code that looks incorrect as the intention of the code looks like it would be applicable to all main resources. However it was coded with respect to ResourceRequest::Requester::Main, which is only set for the main frame&apos;s main resource. I did not fix up such code. Further investigation is required. The following are the most suspicious functions that have such code:

WebCore::adjustMIMETypeIfNecessary():
    &lt;https://trac.webkit.org/browser/trunk/Source/WebCore/platform/network/ios/WebCoreURLResponseIOS.mm?rev=228531#L52&gt;

WebKit::NetworkCache::SpeculativeLoadManager::registerLoad():
    &lt;https://trac.webkit.org/browser/trunk/Source/WebKit/NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp?rev=230944#L373&gt;

WebKit::ServiceWorkerClientFetch::didReceiveResponse():
    &lt;https://trac.webkit.org/browser/trunk/Source/WebKit/WebProcess/Storage/ServiceWorkerClientFetch.cpp?rev=229774#L143&gt;

We should consider auditing all the functions in this patch that were affected by the renames for correctness.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1418822</commentid>
    <comment_count>4</comment_count>
      <attachid>339059</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-04-28 15:23:05 -0700</bug_when>
    <thetext>Comment on attachment 339059
Patch

Wow, I am not sure what I was thinking yesterday.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>339059</attachid>
            <date>2018-04-27 21:47:22 -0700</date>
            <delta_ts>2018-04-28 15:23:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185107-20180427214721.patch</filename>
            <type>text/plain</type>
            <size>27498</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzMTEyOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBACisyMDE4LTA0LTI3ICBEYW5pZWwg
QmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OmlzTWFpblJlc291cmNlKCkgaXMgYSBtaXNub21lcjsgaXQgaXMgb25seSB0cnVlIGZvciBh
IG1haW4gZnJhbWUgaW5pdGlhdGVkIGxvYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE4NTEwNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFJlbmFtZSBSZXNvdXJjZVJlcXVlc3Q6OlJlcXVlc3Rlcjo6TWFp
biB0byBSZXNvdXJjZVJlcXVlc3Q6OlJlcXVlc3Rlcjo6TWFpbkZyYW1lIHRvIGJldHRlcgorICAg
ICAgICBkZXNjcmliZSB0aGlzIGVudW1lcmF0b3IuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQ
YWdlQWdlbnQ6Omluc3BlY3RvclJlc291cmNlVHlwZSk6CisgICAgICAgICogbG9hZGVyL0RvY3Vt
ZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpzdGFydExv
YWRpbmdNYWluUmVzb3VyY2UpOgorICAgICAgICAqIGxvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVy
LmNwcDoKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdEludGVybmFsKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdh
dGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5k
bGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKTogUmVtb3ZlIHNlbGYtCisgICAgICAgIGNvbnRyYWRpY3RvcnkgY29kZSB0aGF0IGRv
ZXMgbm90aGluZyBtZWFuaW5nZnVsIGFuZCBhZGQgYSBGSVhNRSBjb21tZW50LiBTZWUgPGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODUxMDU+CisgICAgICAgIGZvciBt
b3JlIGRldGFpbHMuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9pb3MvV2ViQ29yZVVSTFJl
c3BvbnNlSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6YWRqdXN0TUlNRVR5cGVJZk5lY2Vzc2Fy
eSk6IEkgYW0gdW5jbGVhciBpZiB0aGlzIGNvZGUgaXMgY29ycmVjdCBhcyB3cml0dGVuLiBJdCBz
ZWVtcyB3ZWlyZAorICAgICAgICB0aGF0IHdlIHNwZWNpYWwgY2FzZSBhIG1haW4gZnJhbWUgbG9h
ZCBhcyBvcHBvc2VkIHRvIGFsbCBtYWluIHJlc291cmNlIGxvYWRzLiBGdXJ0aGVyIGludmVzdGln
YXRpb24KKyAgICAgICAgaXMgcmVxdWlyZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9t
YWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tOgorICAg
ICAgICAoLVtXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUgY29u
bmVjdGlvbjpkaWRSZWNlaXZlUmVzcG9uc2U6XSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9t
YWMvV2ViQ29yZVVSTFJlc3BvbnNlLm1tOgorICAgICAgICAoV2ViQ29yZTo6YWRqdXN0TUlNRVR5
cGVJZk5lY2Vzc2FyeSk6CisKIDIwMTgtMDQtMjcgIEtlaXRoIFJvbGxpbiAgPGtyb2xsaW5AYXBw
bGUuY29tPgogCiAgICAgICAgIEZpeCBjcmFzaCBpbiBEb2N1bWVudExvYWRlcjo6c3RhcnRMb2Fk
aW5nTWFpblJlc291cmNlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvclBhZ2VBZ2VudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCShyZXZpc2lvbiAyMzExMjgpCisrKyBT
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI1MSw3ICsyNTEsNyBAQCBJbnNwZWN0b3JQYWdlQWdlbnQ6OlJlc291
cmNlVHlwZSBJbnNwZWN0CiAgICAgICAgIHN3aXRjaCAoY2FjaGVkUmVzb3VyY2UucmVzb3VyY2VS
ZXF1ZXN0KCkucmVxdWVzdGVyKCkpIHsKICAgICAgICAgY2FzZSBSZXNvdXJjZVJlcXVlc3Q6OlJl
cXVlc3Rlcjo6RmV0Y2g6CiAgICAgICAgICAgICByZXR1cm4gSW5zcGVjdG9yUGFnZUFnZW50OjpG
ZXRjaFJlc291cmNlOwotICAgICAgICBjYXNlIFJlc291cmNlUmVxdWVzdDo6UmVxdWVzdGVyOjpN
YWluOgorICAgICAgICBjYXNlIFJlc291cmNlUmVxdWVzdDo6UmVxdWVzdGVyOjpNYWluRnJhbWU6
CiAgICAgICAgICAgICByZXR1cm4gSW5zcGVjdG9yUGFnZUFnZW50OjpEb2N1bWVudFJlc291cmNl
OwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIEluc3BlY3RvclBhZ2VBZ2Vu
dDo6WEhSUmVzb3VyY2U7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2Fk
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRl
ci5jcHAJKHJldmlzaW9uIDIzMTEyOCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dExvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3MDUsNyArMTcwNSw3IEBAIHZvaWQgRG9j
dW1lbnRMb2FkZXI6OnN0YXJ0TG9hZGluZ01haW5SZXMKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCi0gICAgICAgIHJlcXVlc3Quc2V0UmVxdWVzdGVyKFJlc291cmNlUmVxdWVzdDo6
UmVxdWVzdGVyOjpNYWluKTsKKyAgICAgICAgcmVxdWVzdC5zZXRSZXF1ZXN0ZXIoUmVzb3VyY2VS
ZXF1ZXN0OjpSZXF1ZXN0ZXI6Ok1haW5GcmFtZSk7CiAgICAgICAgIC8vIElmIHRoaXMgaXMgYSBy
ZWxvYWQgdGhlIGNhY2hlIGxheWVyIG1pZ2h0IGhhdmUgbWFkZSB0aGUgcHJldmlvdXMgcmVxdWVz
dCBjb25kaXRpb25hbC4gRG9jdW1lbnRMb2FkZXIgY2FuJ3QgaGFuZGxlIDMwNCByZXNwb25zZXMg
aXRzZWxmLgogICAgICAgICByZXF1ZXN0Lm1ha2VVbmNvbmRpdGlvbmFsKCk7CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5jcHAJKHJldmlzaW9u
IDIzMTEyOCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTg0LDcgKzE4NCw3IEBAIHB1YmxpYzoKICAgICAgICAgYm9v
bCByZWZyZXNoID0gZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihmcmFtZS5kb2N1bWVu
dCgpLT51cmwoKSwgdXJsKCkpOwogICAgICAgICBSZXNvdXJjZVJlcXVlc3QgcmVzb3VyY2VSZXF1
ZXN0IHsgdXJsKCksIHJlZmVycmVyKCksIHJlZnJlc2ggPyBSZWxvYWRJZ25vcmluZ0NhY2hlRGF0
YSA6IFVzZVByb3RvY29sQ2FjaGVQb2xpY3kgfTsKICAgICAgICAgaWYgKGluaXRpYXRlZEJ5TWFp
bkZyYW1lKCkgPT0gSW5pdGlhdGVkQnlNYWluRnJhbWU6OlllcykKLSAgICAgICAgICAgIHJlc291
cmNlUmVxdWVzdC5zZXRSZXF1ZXN0ZXIoUmVzb3VyY2VSZXF1ZXN0OjpSZXF1ZXN0ZXI6Ok1haW4p
OworICAgICAgICAgICAgcmVzb3VyY2VSZXF1ZXN0LnNldFJlcXVlc3RlcihSZXNvdXJjZVJlcXVl
c3Q6OlJlcXVlc3Rlcjo6TWFpbkZyYW1lKTsKICAgICAgICAgRnJhbWVMb2FkUmVxdWVzdCBmcmFt
ZUxvYWRSZXF1ZXN0IHsgaW5pdGlhdGluZ0RvY3VtZW50KCksICpzZWN1cml0eU9yaWdpbigpLCBy
ZXNvdXJjZVJlcXVlc3QsICJfc2VsZiIsIGxvY2tIaXN0b3J5KCksIGxvY2tCYWNrRm9yd2FyZExp
c3QoKSwgTWF5YmVTZW5kUmVmZXJyZXIsIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTDo6Tm8s
IE5ld0ZyYW1lT3BlbmVyUG9saWN5OjpBbGxvdywgc2hvdWxkT3BlbkV4dGVybmFsVVJMcygpLCBp
bml0aWF0ZWRCeU1haW5GcmFtZSgpIH07CiAKICAgICAgICAgZnJhbWUubG9hZGVyKCkuY2hhbmdl
TG9jYXRpb24oV1RGTW92ZShmcmFtZUxvYWRSZXF1ZXN0KSk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDIzMTEyOCkKKysrIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE4MSw3ICsxODEsNyBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVl
c3RJCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKG5ld1JlcXVlc3Qp
KTsKICAgICB9CiAKLSAgICBpZiAobmV3UmVxdWVzdC5yZXF1ZXN0ZXIoKSAhPSBSZXNvdXJjZVJl
cXVlc3RCYXNlOjpSZXF1ZXN0ZXI6Ok1haW4pIHsKKyAgICBpZiAobmV3UmVxdWVzdC5yZXF1ZXN0
ZXIoKSAhPSBSZXNvdXJjZVJlcXVlc3RCYXNlOjpSZXF1ZXN0ZXI6Ok1haW5GcmFtZSkgewogICAg
ICAgICB0cmFjZVBvaW50KFN1YnJlc291cmNlTG9hZFdpbGxTdGFydCk7CiAgICAgICAgIFJlc291
cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5sb2dTdWJyZXNvdXJjZUxvYWRpbmcobV9mcmFtZS5n
ZXQoKSwgbmV3UmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7CiAgICAgfQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNl
LmgJKHJldmlzaW9uIDIzMTEyOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VSZXF1ZXN0QmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjMsNyArMTYzLDcgQEAg
cHVibGljOgogICAgIGJvb2wgaGlkZGVuRnJvbUluc3BlY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1f
aGlkZGVuRnJvbUluc3BlY3RvcjsgfQogICAgIHZvaWQgc2V0SGlkZGVuRnJvbUluc3BlY3Rvcihi
b29sIGhpZGRlbkZyb21JbnNwZWN0b3IpIHsgbV9oaWRkZW5Gcm9tSW5zcGVjdG9yID0gaGlkZGVu
RnJvbUluc3BlY3RvcjsgfQogCi0gICAgZW51bSBjbGFzcyBSZXF1ZXN0ZXIgeyBVbnNwZWNpZmll
ZCwgTWFpbiwgWEhSLCBGZXRjaCwgTWVkaWEgfTsKKyAgICBlbnVtIGNsYXNzIFJlcXVlc3RlciB7
IFVuc3BlY2lmaWVkLCBNYWluRnJhbWUsIFhIUiwgRmV0Y2gsIE1lZGlhIH07CiAgICAgUmVxdWVz
dGVyIHJlcXVlc3RlcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdGVyOyB9CiAgICAgdm9pZCBz
ZXRSZXF1ZXN0ZXIoUmVxdWVzdGVyIHJlcXVlc3RlcikgeyBtX3JlcXVlc3RlciA9IHJlcXVlc3Rl
cjsgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNl
SGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5k
bGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAJKHJldmlzaW9u
IDIzMTEyOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VI
YW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE4OCwxNCArMTg4LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZUNGVVJMQ29u
bmVjdGlvbkRlbGVnYQogCiAgICAgICAgIExPRyhOZXR3b3JrLCAiQ0ZOZXQgLSBSZXNvdXJjZUhh
bmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRSZWNlaXZl
UmVzcG9uc2UoaGFuZGxlPSVwKSAoJXMpIiwgbV9oYW5kbGUsIG1faGFuZGxlLT5maXJzdFJlcXVl
c3QoKS51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAotICAgICAgICAvLyBBdm9pZCBN
SU1FIHR5cGUgc25pZmZpbmcgaWYgdGhlIHJlc3BvbnNlIGNvbWVzIGJhY2sgYXMgMzA0IE5vdCBN
b2RpZmllZC4KLSAgICAgICAgYXV0byBtc2cgPSBDRlVSTFJlc3BvbnNlR2V0SFRUUFJlc3BvbnNl
KGNmUmVzcG9uc2UuZ2V0KCkpOwotICAgICAgICBpbnQgc3RhdHVzQ29kZSA9IG1zZyA/IENGSFRU
UE1lc3NhZ2VHZXRSZXNwb25zZVN0YXR1c0NvZGUobXNnKSA6IDA7Ci0KLSAgICAgICAgaWYgKHN0
YXR1c0NvZGUgIT0gMzA0KSB7Ci0gICAgICAgICAgICBib29sIGlzTWFpblJlc291cmNlTG9hZCA9
IG1faGFuZGxlLT5maXJzdFJlcXVlc3QoKS5yZXF1ZXN0ZXIoKSA9PSBSZXNvdXJjZVJlcXVlc3Q6
OlJlcXVlc3Rlcjo6TWFpbjsKLSAgICAgICAgfQotCisgICAgICAgIC8vIEZJWE1FOiBBdm9pZCBN
SU1FIHR5cGUgc25pZmZpbmcgaWYgdGhlIHJlc3BvbnNlIGNvbWVzIGJhY2sgYXMgMzA0IE5vdCBN
b2RpZmllZC4gU2VlIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg1
MTA1Pi4KICAgICAgICAgaWYgKF9DRlVSTFJlcXVlc3RDb3B5UHJvdG9jb2xQcm9wZXJ0eUZvcktl
eShtX2hhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkuY2ZVUkxSZXF1ZXN0KERvTm90VXBkYXRlSFRUUEJv
ZHkpLCBDRlNUUigiRm9yY2VIVE1MTUlNRVR5cGUiKSkpCiAgICAgICAgICAgICBDRlVSTFJlc3Bv
bnNlU2V0TUlNRVR5cGUoY2ZSZXNwb25zZS5nZXQoKSwgQ0ZTVFIoInRleHQvaHRtbCIpKTsKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvV2ViQ29yZVVSTFJlc3Bv
bnNlSU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
aW9zL1dlYkNvcmVVUkxSZXNwb25zZUlPUy5tbQkocmV2aXNpb24gMjMxMTI4KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvV2ViQ29yZVVSTFJlc3BvbnNlSU9TLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
dm9pZCBhZGp1c3RNSU1FVHlwZUlmTmVjZXNzYXJ5KENGVVJMUmVzcG9uc2VSZWYgY2ZSZXNwb25z
ZSwgYm9vbCBpc01haW5SZXNvdXJjZUxvYWQpCit2b2lkIGFkanVzdE1JTUVUeXBlSWZOZWNlc3Nh
cnkoQ0ZVUkxSZXNwb25zZVJlZiBjZlJlc3BvbnNlLCBib29sIGlzTWFpbkZyYW1lTG9hZCkKIHsK
ICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IG1pbWVUeXBlID0gQ0ZVUkxSZXNwb25zZUdldE1J
TUVUeXBlKGNmUmVzcG9uc2UpOwogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXBkYXRlZE1J
TUVUeXBlID0gbWltZVR5cGU7CkBAIC00OSw3ICs0OSw3IEBAIHZvaWQgYWRqdXN0TUlNRVR5cGVJ
Zk5lY2Vzc2FyeShDRlVSTFJlc3AKICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICAvLyBXZSBtdXN0
IGVuc3VyZSB0aGF0IHRoZSBNSU1FIHR5cGUgaXMgY29ycmVjdCwgc28gdGhhdCBRdWlja0xvb2sn
cyB3ZWIgcGx1Z2luIGlzIGNhbGxlZCB3aGVuIG5lZWRlZC4KICAgICAvLyBXZSBmaWx0ZXIgdGhl
IGJhc2ljIE1JTUUgdHlwZXMgc28gdGhhdCB3ZSBkb24ndCBkbyB1bm5lY2Vzc2FyeSB3b3JrIGlu
IHN0YW5kYXJkIGJyb3dzaW5nIHNpdHVhdGlvbnMuCi0gICAgaWYgKGlzTWFpblJlc291cmNlTG9h
ZCAmJiBzaG91bGRVc2VRdWlja0xvb2tGb3JNSU1FVHlwZSgoTlNTdHJpbmcgKil1cGRhdGVkTUlN
RVR5cGUuZ2V0KCkpKSB7CisgICAgaWYgKGlzTWFpbkZyYW1lTG9hZCAmJiBzaG91bGRVc2VRdWlj
a0xvb2tGb3JNSU1FVHlwZSgoTlNTdHJpbmcgKil1cGRhdGVkTUlNRVR5cGUuZ2V0KCkpKSB7CiAg
ICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gc3VnZ2VzdGVkRmlsZW5hbWUgPSBhZG9wdENG
KENGVVJMUmVzcG9uc2VDb3B5U3VnZ2VzdGVkRmlsZW5hbWUoY2ZSZXNwb25zZSkpOwogICAgICAg
ICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHF1aWNrTG9va01JTUVUeXBlID0gYWRvcHRDRigoQ0ZT
dHJpbmdSZWYpUUxUeXBlQ29weUJlc3RNaW1lVHlwZUZvckZpbGVOYW1lQW5kTWltZVR5cGUoKE5T
U3RyaW5nICopc3VnZ2VzdGVkRmlsZW5hbWUuZ2V0KCksIChOU1N0cmluZyAqKW1pbWVUeXBlLmdl
dCgpKSk7CiAgICAgICAgIGlmICghcXVpY2tMb29rTUlNRVR5cGUpIHsKQEAgLTY5LDcgKzY5LDcg
QEAgdm9pZCBhZGp1c3RNSU1FVHlwZUlmTmVjZXNzYXJ5KENGVVJMUmVzcAogICAgICAgICAgICAg
dXBkYXRlZE1JTUVUeXBlID0gcXVpY2tMb29rTUlNRVR5cGU7CiAgICAgfQogI2Vsc2UKLSAgICBV
TlVTRURfUEFSQU0oaXNNYWluUmVzb3VyY2VMb2FkKTsKKyAgICBVTlVTRURfUEFSQU0oaXNNYWlu
RnJhbWVMb2FkKTsKICNlbmRpZiAvLyBVU0UoUVVJQ0tfTE9PSykKICAgICBpZiAoIW1pbWVUeXBl
IHx8IENGU3RyaW5nQ29tcGFyZShtaW1lVHlwZS5nZXQoKSwgdXBkYXRlZE1JTUVUeXBlLmdldCgp
LCBrQ0ZDb21wYXJlQ2FzZUluc2Vuc2l0aXZlKSAhPSBrQ0ZDb21wYXJlRXF1YWxUbykKICAgICAg
ICAgQ0ZVUkxSZXNwb25zZVNldE1JTUVUeXBlKGNmUmVzcG9uc2UsIHVwZGF0ZWRNSU1FVHlwZS5n
ZXQoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3Jl
UmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxl
QXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCShyZXZpc2lvbiAyMzExMjgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJh
dGlvblF1ZXVlRGVsZWdhdGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTIzMyw4ICsyMzMsOCBAQCAt
ICh2b2lkKWNvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvCiAgICAgICAgIC8vIEF2b2lk
IE1JTUUgdHlwZSBzbmlmZmluZyBpZiB0aGUgcmVzcG9uc2UgY29tZXMgYmFjayBhcyAzMDQgTm90
IE1vZGlmaWVkLgogICAgICAgICBpbnQgc3RhdHVzQ29kZSA9IFtyIHJlc3BvbmRzVG9TZWxlY3Rv
cjpAc2VsZWN0b3Ioc3RhdHVzQ29kZSldID8gWyhpZClyIHN0YXR1c0NvZGVdIDogMDsKICAgICAg
ICAgaWYgKHN0YXR1c0NvZGUgIT0gMzA0KSB7Ci0gICAgICAgICAgICBib29sIGlzTWFpblJlc291
cmNlTG9hZCA9IG1faGFuZGxlLT5maXJzdFJlcXVlc3QoKS5yZXF1ZXN0ZXIoKSA9PSBSZXNvdXJj
ZVJlcXVlc3Q6OlJlcXVlc3Rlcjo6TWFpbjsKLSAgICAgICAgICAgIGFkanVzdE1JTUVUeXBlSWZO
ZWNlc3NhcnkoW3IgX0NGVVJMUmVzcG9uc2VdLCBpc01haW5SZXNvdXJjZUxvYWQpOworICAgICAg
ICAgICAgYm9vbCBpc01haW5GcmFtZUxvYWQgPSBtX2hhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkucmVx
dWVzdGVyKCkgPT0gUmVzb3VyY2VSZXF1ZXN0OjpSZXF1ZXN0ZXI6Ok1haW5GcmFtZTsKKyAgICAg
ICAgICAgIGFkanVzdE1JTUVUeXBlSWZOZWNlc3NhcnkoW3IgX0NGVVJMUmVzcG9uc2VdLCBpc01h
aW5GcmFtZUxvYWQpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKFttX2hhbmRsZS0+Zmlyc3RS
ZXF1ZXN0KCkubnNVUkxSZXF1ZXN0KERvTm90VXBkYXRlSFRUUEJvZHkpIF9wcm9wZXJ0eUZvcktl
eTpAIkZvcmNlSFRNTE1JTUVUeXBlIl0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2UuaAkocmV2aXNpb24g
MjMxMTI4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVVS
TFJlc3BvbnNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDYgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogV0VCQ09SRV9FWFBPUlQgTlNVUkxSZXNwb25zZSAqc3ludGhlc2l6ZVJlZGlyZWN0
UmVzcG9uc2VJZk5lY2Vzc2FyeShOU1VSTFJlcXVlc3QgKmN1cnJlbnRSZXF1ZXN0LCBOU1VSTFJl
cXVlc3QgKm5ld1JlcXVlc3QsIE5TVVJMUmVzcG9uc2UgKnJlZGlyZWN0UmVzcG9uc2UpOwogI2Vu
ZGlmCiAKLVdFQkNPUkVfRVhQT1JUIHZvaWQgYWRqdXN0TUlNRVR5cGVJZk5lY2Vzc2FyeShDRlVS
TFJlc3BvbnNlUmVmLCBib29sIGlzTWFpblJlc291cmNlTG9hZCk7CitXRUJDT1JFX0VYUE9SVCB2
b2lkIGFkanVzdE1JTUVUeXBlSWZOZWNlc3NhcnkoQ0ZVUkxSZXNwb25zZVJlZiwgYm9vbCBpc01h
aW5GcmFtZUxvYWQpOwogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L21hYy9XZWJDb3JlVVJMUmVzcG9uc2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNlLm1tCShyZXZpc2lvbiAyMzEx
MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVz
cG9uc2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTI4Niw5ICsyODYsOSBAQCBzdGF0aWMgQ0ZEaWN0
aW9uYXJ5UmVmIGNyZWF0ZUV4dGVuc2lvblRvCiAgICAgcmV0dXJuIENGRGljdGlvbmFyeUNyZWF0
ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoY29uc3Qgdm9pZCoqKSZrZXlzLCAoY29uc3Qgdm9pZCoq
KSZ2YWx1ZXMsIHNpemVvZihrZXlzKS9zaXplb2YoQ0ZTdHJpbmdSZWYpLCAma0NGVHlwZURpY3Rp
b25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKTsKIH0K
IAotdm9pZCBhZGp1c3RNSU1FVHlwZUlmTmVjZXNzYXJ5KENGVVJMUmVzcG9uc2VSZWYgY2ZSZXNw
b25zZSwgYm9vbCBpc01haW5SZXNvdXJjZUxvYWQpCit2b2lkIGFkanVzdE1JTUVUeXBlSWZOZWNl
c3NhcnkoQ0ZVUkxSZXNwb25zZVJlZiBjZlJlc3BvbnNlLCBib29sIGlzTWFpbkZyYW1lTG9hZCkK
IHsKLSAgICBVTlVTRURfUEFSQU0oaXNNYWluUmVzb3VyY2VMb2FkKTsKKyAgICBVTlVTRURfUEFS
QU0oaXNNYWluRnJhbWVMb2FkKTsKICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHJlc3VsdCA9
IENGVVJMUmVzcG9uc2VHZXRNSU1FVHlwZShjZlJlc3BvbnNlKTsKICAgICBSZXRhaW5QdHI8Q0ZT
dHJpbmdSZWY+IG9yaWdpbmFsUmVzdWx0ID0gcmVzdWx0OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNp
b24gMjMxMTI5KQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwzNiBAQAorMjAxOC0wNC0yNyAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5j
b20+CisKKyAgICAgICAgTmV0d29ya1Jlc291cmNlTG9hZGVyOjppc01haW5SZXNvdXJjZSgpIGlz
IGEgbWlzbm9tZXI7IGl0IGlzIG9ubHkgdHJ1ZSBmb3IgYSBtYWluIGZyYW1lIGluaXRpYXRlZCBs
b2FkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODUx
MDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTdWJz
dGl0dXRlIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6aXNNYWluRnJhbWVMb2FkZXIoKSBmb3IgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjppc01haW5SZXNvdXJjZSgpCisgICAgICAgIHRvIGJldHRlciBk
ZXNjcmliZSBpdHMgcHVycG9zZS4KKworICAgICAgICBUaGUgcGhyYXNlICJtYWluIHJlc291cmNl
IiByZWZlcnMgdGhlIGRvY3VtZW50IGxvYWRlZCBpbiBhIGZyYW1lLiBUaGVyZSBjYW4gYmUgbW9y
ZSB0aGFuIG9uZSBtYWluCisgICAgICAgIHJlc291cmNlIGluIGEgd2ViIHBhZ2UuIFRvIGJlIHBy
ZWNpc2UsIHRoZXJlIGlzIGV4YWN0bHkgb25lIG1haW4gcmVzb3VyY2UgcGVyIGZyYW1lIGluIHRo
ZSBwYWdlLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6cmV0cmlldmVDYWNoZUVudHJ5
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydE5ldHdvcmtM
b2FkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZl
UmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJl
dHJpZXZlQ2FjaGVFbnRyeSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291
cmNlTG9hZGVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjptYWtlU3RvcmVEZWNpc2lvbik6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVM
b2FkTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRp
dmVMb2FkTWFuYWdlcjo6cmVnaXN0ZXJMb2FkKTogSSBhbSB1bmNsZWFyIGlmIHRoaXMgY29kZSBp
cyBjb3JyZWN0CisgICAgICAgIGFzIHdyaXR0ZW4uIEl0IHNlZW1zIHdlaXJkIHRoYXQgd2Ugc3Bl
Y2lhbCBjYXNlIGEgbWFpbiBmcmFtZSBsb2FkIGFzIG9wcG9zZWQgdG8gYWxsIG1haW4gcmVzb3Vy
Y2UgbG9hZHMuCisgICAgICAgIEZ1cnRoZXIgaW52ZXN0aWdhdGlvbiBpcyByZXF1aXJlZC4KKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tOgorICAg
ICAgICAoLVtXS05ldHdvcmtTZXNzaW9uRGVsZWdhdGUgVVJMU2Vzc2lvbjpkYXRhVGFzazpkaWRS
ZWNlaXZlUmVzcG9uc2U6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9TdG9yYWdlL1NlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKTogSSBhbSB1bmNs
ZWFyIGlmIHRoaXMgY29kZSBpcyBjb3JyZWN0IGFzIHdyaXR0ZW4uCisgICAgICAgIEl0IHNlZW1z
IHdlaXJkIHRoYXQgd2Ugc3BlY2lhbCBjYXNlIGEgbWFpbiBmcmFtZSBsb2FkIGFzIG9wcG9zZWQg
dG8gYWxsIG1haW4gcmVzb3VyY2UgbG9hZHMuIEZ1cnRoZXIKKyAgICAgICAgaW52ZXN0aWdhdGlv
biBpcyByZXF1aXJlZC4KKwogMjAxOC0wNC0yNyAgVGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBh
cHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTjogVG91Y2ggZXZlbnRzIGZhaWwgdG8gZGlz
cGF0Y2ggdG8gdGhlIHBhZ2UgaW4gYWxsIGNhc2VzLgpJbmRleDogU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAkocmV2aXNp
b24gMjMxMTI4KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjYsNyArMTY2LDcgQEAgdm9pZCBOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0KCkKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OwogCiAgICAgaWYgKG1fZGVmZXJzTG9hZGluZykgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKCJzdGFydDogTG9hZGluZyBpcyBkZWZlcnJlZCAocGFnZUlEID0gJSIgUFJJdTY0ICIs
IGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5S
ZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJ
RCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01h
aW5SZXNvdXJjZSgpLCBpc1N5bmNocm9ub3VzKCkpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKCJzdGFydDogTG9hZGluZyBpcyBkZWZlcnJlZCAocGFnZUlEID0gJSIgUFJJdTY0ICIs
IGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5G
cmFtZUxvYWRlciA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBh
Z2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBp
c01haW5GcmFtZUxvYWRlcigpLCBpc1N5bmNocm9ub3VzKCkpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC0xODEsNyArMTgxLDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0
YXJ0KCkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBpZiAodGhpcy0+Y2FuVXNlQ2FjaGUodGhpcy0+b3JpZ2luYWxSZXF1ZXN0KCkpKSB7Ci0gICAg
ICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RhcnQ6IENoZWNraW5nIGNhY2hl
IGZvciByZXNvdXJjZSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQg
IiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNo
cm9ub3VzID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZy
YW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCB0aGlzLT5pc01haW5SZXNvdXJjZSgpLCB0
aGlzLT5pc1N5bmNocm9ub3VzKCkpOworICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoInN0YXJ0OiBDaGVja2luZyBjYWNoZSBmb3IgcmVzb3VyY2UgKHBhZ2VJRCA9ICUiIFBS
SXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwg
aXNNYWluRnJhbWVMb2FkZXIgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkKSIsIG1fcGFyYW1ldGVy
cy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRp
ZmllciwgdGhpcy0+aXNNYWluRnJhbWVMb2FkZXIoKSwgdGhpcy0+aXNTeW5jaHJvbm91cygpKTsK
ICAgICAgICAgICAgICAgICB0aGlzLT5yZXRyaWV2ZUNhY2hlRW50cnkodGhpcy0+b3JpZ2luYWxS
ZXF1ZXN0KCkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KQEAgLTE5
Miw3ICsxOTIsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnQoKQogICAgIH0K
ICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoYXQgY29kZSBwYXRoIG9uY2UgbV9uZXR3b3JrTG9hZENo
ZWNrZXIgaXMgdXNlZCBmb3IgYWxsIG5ldHdvcmsgbG9hZHMuCiAgICAgaWYgKGNhblVzZUNhY2hl
KG9yaWdpbmFsUmVxdWVzdCgpKSkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJz
dGFydDogQ2hlY2tpbmcgY2FjaGUgZm9yIHJlc291cmNlIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwg
ZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGlzTWFpblJl
c291cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlE
LCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIGlzTWFp
blJlc291cmNlKCksIGlzU3luY2hyb25vdXMoKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoInN0YXJ0OiBDaGVja2luZyBjYWNoZSBmb3IgcmVzb3VyY2UgKHBhZ2VJRCA9ICUiIFBS
SXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwg
aXNNYWluRnJhbWVMb2FkZXIgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkKSIsIG1fcGFyYW1ldGVy
cy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRp
ZmllciwgaXNNYWluRnJhbWVMb2FkZXIoKSwgaXNTeW5jaHJvbm91cygpKTsKICAgICAgICAgcmV0
cmlldmVDYWNoZUVudHJ5KG9yaWdpbmFsUmVxdWVzdCgpKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KQEAgLTIxNCwyNiArMjE0LDI2IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpyZXRy
aWV2ZUNhY2gKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBpZiAoIWVu
dHJ5KSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJyZXRyaWV2ZUNhY2hl
RW50cnk6IFJlc291cmNlIG5vdCBpbiBjYWNoZSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1l
SUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJj
ZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9w
YXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNv
dXJjZSgpLCBpc1N5bmNocm9ub3VzKCkpOworICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRCgicmV0cmlldmVDYWNoZUVudHJ5OiBSZXNvdXJjZSBub3QgaW4gY2FjaGUgKHBhZ2VJRCA9
ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1
NjQgIiwgaXNNYWluRnJhbWVMb2FkZXIgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkKSIsIG1fcGFy
YW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMu
aWRlbnRpZmllciwgaXNNYWluRnJhbWVMb2FkZXIoKSwgaXNTeW5jaHJvbm91cygpKTsKICAgICAg
ICAgICAgIGxvYWRlci0+c3RhcnROZXR3b3JrTG9hZChXVEZNb3ZlKHJlcXVlc3QpLCBGaXJzdExv
YWQ6Olllcyk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgaWYgKGVu
dHJ5LT5yZWRpcmVjdFJlcXVlc3QoKSkgewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRCgicmV0cmlldmVDYWNoZUVudHJ5OiBIYW5kbGluZyByZWRpcmVjdCAocGFnZUlEID0gJSIg
UFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAi
LCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQpIiwgbV9wYXJhbWV0ZXJz
LndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlm
aWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNocm9ub3VzKCkpOworICAgICAgICAgICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRCgicmV0cmlldmVDYWNoZUVudHJ5OiBIYW5kbGluZyByZWRpcmVj
dCAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJ
RCA9ICUiIFBSSXU2NCAiLCBpc01haW5GcmFtZUxvYWRlciA9ICVkLCBpc1N5bmNocm9ub3VzID0g
JWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1f
cGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5GcmFtZUxvYWRlcigpLCBpc1N5bmNocm9ub3Vz
KCkpOwogICAgICAgICAgICAgbG9hZGVyLT5kaXNwYXRjaFdpbGxTZW5kUmVxdWVzdEZvckNhY2hl
RW50cnkoV1RGTW92ZShlbnRyeSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAg
ICAgICAgIGlmIChsb2FkZXItPm1fcGFyYW1ldGVycy5uZWVkc0NlcnRpZmljYXRlSW5mbyAmJiAh
ZW50cnktPnJlc3BvbnNlKCkuY2VydGlmaWNhdGVJbmZvKCkpIHsKLSAgICAgICAgICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoInJldHJpZXZlQ2FjaGVFbnRyeTogUmVzb3VyY2UgZG9lcyBub3Qg
aGF2ZSByZXF1aXJlZCBjZXJ0aWZpY2F0ZSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQg
PSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9
ICVkLCBpc1N5bmNocm9ub3VzID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJh
bWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNvdXJj
ZSgpLCBpc1N5bmNocm9ub3VzKCkpOworICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RCgicmV0cmlldmVDYWNoZUVudHJ5OiBSZXNvdXJjZSBkb2VzIG5vdCBoYXZlIHJlcXVpcmVkIGNl
cnRpZmljYXRlIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBy
ZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGlzTWFpbkZyYW1lTG9hZGVyID0gJWQsIGlzU3luY2hy
b25vdXMgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJh
bWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIGlzTWFpbkZyYW1lTG9hZGVyKCksIGlzU3lu
Y2hyb25vdXMoKSk7CiAgICAgICAgICAgICBsb2FkZXItPnN0YXJ0TmV0d29ya0xvYWQoV1RGTW92
ZShyZXF1ZXN0KSwgRmlyc3RMb2FkOjpZZXMpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAgICAgICAgIGlmIChlbnRyeS0+bmVlZHNWYWxpZGF0aW9uKCkgfHwgcmVxdWVzdC5jYWNo
ZVBvbGljeSgpID09IFdlYkNvcmU6OlJlZnJlc2hBbnlDYWNoZURhdGEpIHsKLSAgICAgICAgICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJldHJpZXZlQ2FjaGVFbnRyeTogVmFsaWRhdGluZyBj
YWNoZSBlbnRyeSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwg
cmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9u
b3VzID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1l
SUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNocm9u
b3VzKCkpOworICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicmV0cmlldmVDYWNo
ZUVudHJ5OiBWYWxpZGF0aW5nIGNhY2hlIGVudHJ5IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJh
bWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGlzTWFpbkZyYW1l
TG9hZGVyID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlE
LCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIGlzTWFp
bkZyYW1lTG9hZGVyKCksIGlzU3luY2hyb25vdXMoKSk7CiAgICAgICAgICAgICBsb2FkZXItPnZh
bGlkYXRlQ2FjaGVFbnRyeShXVEZNb3ZlKGVudHJ5KSk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicmV0cmlldmVDYWNoZUVu
dHJ5OiBSZXRyaWV2ZWQgcmVzb3VyY2UgZnJvbSBjYWNoZSAocGFnZUlEID0gJSIgUFJJdTY0ICIs
IGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5S
ZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJ
RCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01h
aW5SZXNvdXJjZSgpLCBpc1N5bmNocm9ub3VzKCkpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKCJyZXRyaWV2ZUNhY2hlRW50cnk6IFJldHJpZXZlZCByZXNvdXJjZSBmcm9tIGNhY2hl
IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlE
ID0gJSIgUFJJdTY0ICIsIGlzTWFpbkZyYW1lTG9hZGVyID0gJWQsIGlzU3luY2hyb25vdXMgPSAl
ZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9w
YXJhbWV0ZXJzLmlkZW50aWZpZXIsIGlzTWFpbkZyYW1lTG9hZGVyKCksIGlzU3luY2hyb25vdXMo
KSk7CiAgICAgICAgIGxvYWRlci0+ZGlkUmV0cmlldmVDYWNoZUVudHJ5KFdURk1vdmUoZW50cnkp
KTsKICAgICB9KTsKIH0KQEAgLTI0MSw3ICsyNDEsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6cmV0cmlldmVDYWNoCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3
b3JrTG9hZChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBGaXJzdExvYWQgbG9hZCkKIHsKICAg
ICBpZiAobG9hZCA9PSBGaXJzdExvYWQ6OlllcykgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKCJzdGFydE5ldHdvcmtMb2FkOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQg
PSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9
ICVkLCBpc1N5bmNocm9ub3VzID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJh
bWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNvdXJj
ZSgpLCBpc1N5bmNocm9ub3VzKCkpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJz
dGFydE5ldHdvcmtMb2FkOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1
NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5GcmFtZUxvYWRlciA9ICVkLCBp
c1N5bmNocm9ub3VzID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJz
LndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5GcmFtZUxvYWRlcigp
LCBpc1N5bmNocm9ub3VzKCkpOwogCiAgICAgICAgIGNvbnN1bWVTYW5kYm94RXh0ZW5zaW9ucygp
OwogCkBAIC00MTMsNyArNDEzLDcgQEAgYXV0byBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJl
Y2VpdmVSZQogICAgIH0KICAgICBib29sIHNob3VsZFNlbmREaWRSZWNlaXZlUmVzcG9uc2UgPSAh
bV9jYWNoZUVudHJ5Rm9yVmFsaWRhdGlvbjsKIAotICAgIGJvb2wgc2hvdWxkV2FpdENvbnRpbnVl
RGlkUmVjZWl2ZVJlc3BvbnNlID0gaXNNYWluUmVzb3VyY2UoKTsKKyAgICBib29sIHNob3VsZFdh
aXRDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSA9IGlzTWFpbkZyYW1lTG9hZGVyKCk7CiAgICAg
aWYgKHNob3VsZFNlbmREaWRSZWNlaXZlUmVzcG9uc2UpIHsKIAogICAgICAgICBSZXNvdXJjZUVy
cm9yIGVycm9yOwpAQCAtNzQ3LDcgKzc0Nyw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVy
OjpkaWRSZXRyaWV2ZUMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGJvb2wgbmVlZHND
b250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgPSBpc01haW5SZXNvdXJjZSgpOworICAg
IGJvb2wgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgPSBpc01haW5GcmFt
ZUxvYWRlcigpOwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNl
aXZlUmVzcG9uc2UgeyByZXNwb25zZSwgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1l
c3NhZ2UgfSk7CiAKICAgICBpZiAobmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3Nh
Z2UpCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmgJKHJldmlzaW9uIDIzMTEyOCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEw
NCw3ICsxMDQsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNvbnZlcnRUb0Rvd25sb2FkKERvd25s
b2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmKTsKIAotICAgIGJvb2wgaXNNYWluUmVzb3VyY2UoKSBjb25zdCB7IHJl
dHVybiBtX3BhcmFtZXRlcnMucmVxdWVzdC5yZXF1ZXN0ZXIoKSA9PSBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3Q6OlJlcXVlc3Rlcjo6TWFpbjsgfQorICAgIGJvb2wgaXNNYWluRnJhbWVMb2FkZXIo
KSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnMucmVxdWVzdC5yZXF1ZXN0ZXIoKSA9PSBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3Q6OlJlcXVlc3Rlcjo6TWFpbkZyYW1lOyB9CiAgICAgYm9vbCBp
c0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSBjb25zdDsKIAogI2lmIEhBVkUoQ0ZORVRXT1JLX1NU
T1JBR0VfUEFSVElUSU9OSU5HKSAmJiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAJ
KHJldmlzaW9uIDIzMTEyOCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjc1LDggKzI3NSw4IEBAIHN0YXRp
YyBTdG9yZURlY2lzaW9uIG1ha2VTdG9yZURlY2lzaW9uKGMKICAgICAgICAgICAgIHJldHVybiBT
dG9yZURlY2lzaW9uOjpOb0R1ZVRvSFRUUFN0YXR1c0NvZGU7CiAgICAgfQogCi0gICAgYm9vbCBp
c01haW5SZXNvdXJjZSA9IG9yaWdpbmFsUmVxdWVzdC5yZXF1ZXN0ZXIoKSA9PSBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3Q6OlJlcXVlc3Rlcjo6TWFpbjsKLSAgICBib29sIHN0b3JlVW5jb25kaXRp
b25hbGx5Rm9ySGlzdG9yeU5hdmlnYXRpb24gPSBpc01haW5SZXNvdXJjZSB8fCBvcmlnaW5hbFJl
cXVlc3QucHJpb3JpdHkoKSA9PSBXZWJDb3JlOjpSZXNvdXJjZUxvYWRQcmlvcml0eTo6VmVyeUhp
Z2g7CisgICAgYm9vbCBpc01haW5GcmFtZUxvYWRlciA9IG9yaWdpbmFsUmVxdWVzdC5yZXF1ZXN0
ZXIoKSA9PSBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OlJlcXVlc3Rlcjo6TWFpbkZyYW1lOwor
ICAgIGJvb2wgc3RvcmVVbmNvbmRpdGlvbmFsbHlGb3JIaXN0b3J5TmF2aWdhdGlvbiA9IGlzTWFp
bkZyYW1lTG9hZGVyIHx8IG9yaWdpbmFsUmVxdWVzdC5wcmlvcml0eSgpID09IFdlYkNvcmU6OlJl
c291cmNlTG9hZFByaW9yaXR5OjpWZXJ5SGlnaDsKICAgICBpZiAoIXN0b3JlVW5jb25kaXRpb25h
bGx5Rm9ySGlzdG9yeU5hdmlnYXRpb24pIHsKICAgICAgICAgYXV0byBub3cgPSBXYWxsVGltZTo6
bm93KCk7CiAgICAgICAgIGJvb2wgaGFzTm9uWmVyb0xpZmV0aW1lID0gIXJlc3BvbnNlLmNhY2hl
Q29udHJvbENvbnRhaW5zTm9DYWNoZSgpICYmIFdlYkNvcmU6OmNvbXB1dGVGcmVzaG5lc3NMaWZl
dGltZUZvckhUVFBGYW1pbHkocmVzcG9uc2UsIG5vdykgPiAwX21zOwpJbmRleDogU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5h
Z2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuY3BwCShyZXZpc2lvbiAyMzExMjgp
CisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1
bGF0aXZlTG9hZE1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzAsOCArMzcwLDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpyZWdpc3RlckxvYQogICAgIGlmICghcmVxdWVz
dC5odHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OlJhbmdlKS5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGF1dG8gaXNNYWluUmVzb3VyY2UgPSByZXF1ZXN0LnJlcXVlc3Rl
cigpID09IFJlc291cmNlUmVxdWVzdDo6UmVxdWVzdGVyOjpNYWluOwotICAgIGlmIChpc01haW5S
ZXNvdXJjZSkgeworICAgIGlmIChyZXF1ZXN0LnJlcXVlc3RlcigpID09IFJlc291cmNlUmVxdWVz
dDo6UmVxdWVzdGVyOjpNYWluRnJhbWUpIHsKICAgICAgICAgLy8gTWFyayBwcmV2aW91cyBsb2Fk
IGluIHRoaXMgZnJhbWUgYXMgY29tcGxldGVkIGlmIG5lY2Vzc2FyeS4KICAgICAgICAgaWYgKGF1
dG8qIHBlbmRpbmdGcmFtZUxvYWQgPSBtX3BlbmRpbmdGcmFtZUxvYWRzLmdldChmcmFtZUlEKSkK
ICAgICAgICAgICAgIHBlbmRpbmdGcmFtZUxvYWQtPm1hcmtMb2FkQXNDb21wbGV0ZWQoKTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2Nv
YS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05l
dHdvcmtTZXNzaW9uQ29jb2EubW0JKHJldmlzaW9uIDIzMTEyOCkKKysrIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQkod29ya2luZyBjb3B5
KQpAQCAtNDg5LDggKzQ4OSw4IEBAIC0gKHZvaWQpVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICop
c2Vzc2kKICAgICAgICAgLy8gQXZvaWQgTUlNRSB0eXBlIHNuaWZmaW5nIGlmIHRoZSByZXNwb25z
ZSBjb21lcyBiYWNrIGFzIDMwNCBOb3QgTW9kaWZpZWQuCiAgICAgICAgIGludCBzdGF0dXNDb2Rl
ID0gW3Jlc3BvbnNlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc3RhdHVzQ29kZSldID8g
WyhpZClyZXNwb25zZSBzdGF0dXNDb2RlXSA6IDA7CiAgICAgICAgIGlmIChzdGF0dXNDb2RlICE9
IDMwNCkgewotICAgICAgICAgICAgYm9vbCBpc01haW5SZXNvdXJjZUxvYWQgPSBuZXR3b3JrRGF0
YVRhc2stPmZpcnN0UmVxdWVzdCgpLnJlcXVlc3RlcigpID09IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdDo6UmVxdWVzdGVyOjpNYWluOwotICAgICAgICAgICAgV2ViQ29yZTo6YWRqdXN0TUlNRVR5
cGVJZk5lY2Vzc2FyeShyZXNwb25zZS5fQ0ZVUkxSZXNwb25zZSwgaXNNYWluUmVzb3VyY2VMb2Fk
KTsKKyAgICAgICAgICAgIGJvb2wgaXNNYWluRnJhbWVMb2FkID0gbmV0d29ya0RhdGFUYXNrLT5m
aXJzdFJlcXVlc3QoKS5yZXF1ZXN0ZXIoKSA9PSBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OlJl
cXVlc3Rlcjo6TWFpbkZyYW1lOworICAgICAgICAgICAgV2ViQ29yZTo6YWRqdXN0TUlNRVR5cGVJ
Zk5lY2Vzc2FyeShyZXNwb25zZS5fQ0ZVUkxSZXNwb25zZSwgaXNNYWluRnJhbWVMb2FkKTsKICAg
ICAgICAgfQogCiAgICAgICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzb3VyY2VSZXNw
b25zZShyZXNwb25zZSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9T
ZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5jcHAJKHJldmlzaW9u
IDIzMTEyOCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZpY2VXb3Jr
ZXJDbGllbnRGZXRjaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MCw3ICsxNDAsNyBAQCB2b2lk
IFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6ZGlkUmVjZWl2CiAKICAgICAgICAgLy8gSW4gY2Fz
ZSBvZiBtYWluIHJlc291cmNlIGFuZCBtaW1lIHR5cGUgaXMgdGhlIGRlZmF1bHQgb25lLCB3ZSBz
ZXQgaXQgdG8gdGV4dC9odG1sIHRvIHBhc3MgbW9yZSBzZXJ2aWNlIHdvcmtlciBXUFQgdGVzdHMu
CiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgcmVmaW5lIG91ciBNSU1FIHR5cGUgc25pZmZp
bmcgc3RyYXRlZ3kgZm9yIHN5bnRoZXRpYyByZXNwb25zZXMuCi0gICAgICAgIGlmIChtX2xvYWRl
ci0+b3JpZ2luYWxSZXF1ZXN0KCkucmVxdWVzdGVyKCkgPT0gUmVzb3VyY2VSZXF1ZXN0OjpSZXF1
ZXN0ZXI6Ok1haW4pIHsKKyAgICAgICAgaWYgKG1fbG9hZGVyLT5vcmlnaW5hbFJlcXVlc3QoKS5y
ZXF1ZXN0ZXIoKSA9PSBSZXNvdXJjZVJlcXVlc3Q6OlJlcXVlc3Rlcjo6TWFpbkZyYW1lKSB7CiAg
ICAgICAgICAgICBpZiAocmVzcG9uc2UubWltZVR5cGUoKSA9PSBkZWZhdWx0TUlNRVR5cGUoKSkg
ewogICAgICAgICAgICAgICAgIHJlc3BvbnNlLnNldE1pbWVUeXBlKEFTQ0lJTGl0ZXJhbCgidGV4
dC9odG1sIikpOwogICAgICAgICAgICAgICAgIHJlc3BvbnNlLnNldFRleHRFbmNvZGluZ05hbWUo
QVNDSUlMaXRlcmFsKCJVVEYtOCIpKTsK
</data>
<flag name="review"
          id="357300"
          type_id="1"
          status="-"
          setter="dbates"
    />
          </attachment>
      

    </bug>

</bugzilla>