<?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>179361</bug_id>
          
          <creation_ts>2017-11-06 19:54:27 -0800</creation_ts>
          <short_desc>Web Inspector: Eliminate unnecessary hash lookups with NetworkResourceData</short_desc>
          <delta_ts>2017-11-15 09:40:45 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Joseph Pecoraro">joepeck</assigned_to>
          <cc>bburg</cc>
    
    <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>joepeck</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1368908</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-11-06 19:54:27 -0800</bug_when>
    <thetext>Eliminate unnecessary hash lookups with NetworkResourceData

There are a few places where we do multiple hash lookups on NetworkResourceData that we don&apos;t need:

    willSendRequest: (combine these into 1 call)

        m_resourcesData-&gt;resourceCreated(requestId, m_pageAgent-&gt;loaderId(&amp;loader));
        m_resourcesData-&gt;setResourceType(requestId, type);

    didReceiveResponse: (combine these into 1 call)

        m_resourcesData-&gt;responseReceived(requestId, m_pageAgent-&gt;frameId(loader.frame()), response);
        m_resourcesData-&gt;setResourceType(requestId, type);

    didLoadResourceFromMemoryCache: (combine these into 1 call)

        m_resourcesData-&gt;resourceCreated(requestId, loaderId);
        m_resourcesData-&gt;addCachedResource(requestId, &amp;resource);

Combining will eliminate a hash lookup in each case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1368909</commentid>
    <comment_count>1</comment_count>
      <attachid>326187</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-11-06 19:55:50 -0800</bug_when>
    <thetext>Created attachment 326187
[PATCH] Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1368952</commentid>
    <comment_count>2</comment_count>
      <attachid>326187</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-11-07 01:11:15 -0800</bug_when>
    <thetext>Comment on attachment 326187
[PATCH] Proposed Fix

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

&gt; Source/WebCore/inspector/NetworkResourcesData.cpp:131
&gt; +    auto* resourceData = new ResourceData(requestId, loaderId);
&gt; +    resourceData-&gt;setType(type);
&gt; +    m_requestIdToResourceDataMap.set(requestId, resourceData);

An additional cleanup that you might want to do is change m_requestIdToResourceDataMap to store a std::unique_ptr rather than a raw ptr for its value.

&gt; Source/WebCore/inspector/NetworkResourcesData.cpp:134
&gt; +void NetworkResourcesData::resourceCreated(const String&amp; requestId, const String&amp; loaderId, CachedResource* cachedResource)

Can this take the CachedResource by reference?

&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:351
&gt; +    String loaderId = m_pageAgent-&gt;loaderId(&amp;loader);

Can use auto.

&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:444
&gt; +    String frameId = m_pageAgent-&gt;frameId(loader.frame());
&gt; +    String loaderId = m_pageAgent-&gt;loaderId(&amp;loader);

Can use auto.

&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:531
&gt; +    String loaderId = m_pageAgent-&gt;loaderId(&amp;loader);
&gt; +    String frameId = m_pageAgent-&gt;frameId(loader.frame());

Can use auto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1369092</commentid>
    <comment_count>3</comment_count>
      <attachid>326187</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-11-07 11:32:31 -0800</bug_when>
    <thetext>Comment on attachment 326187
[PATCH] Proposed Fix

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

&gt;&gt; Source/WebCore/inspector/NetworkResourcesData.cpp:131
&gt;&gt; +    m_requestIdToResourceDataMap.set(requestId, resourceData);
&gt; 
&gt; An additional cleanup that you might want to do is change m_requestIdToResourceDataMap to store a std::unique_ptr rather than a raw ptr for its value.

This is an excellent idea, I should have addressed this in this change anyways instead of allowing `new` / `delete` in our code. I&apos;ll put up a new patch.

&gt;&gt; Source/WebCore/inspector/NetworkResourcesData.cpp:134
&gt;&gt; +void NetworkResourcesData::resourceCreated(const String&amp; requestId, const String&amp; loaderId, CachedResource* cachedResource)
&gt; 
&gt; Can this take the CachedResource by reference?

Yep.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1369107</commentid>
    <comment_count>4</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-11-07 11:50:21 -0800</bug_when>
    <thetext>(In reply to Joseph Pecoraro from comment #0)
&gt; Eliminate unnecessary hash lookups with NetworkResourceData
&gt; 
&gt; There are a few places where we do multiple hash lookups on
&gt; NetworkResourceData that we don&apos;t need:

Another multiple-hash-lookup we can remove is:

    ensureNoDataForRequestId

        ResourceData* resourceData = resourceDataForRequestId(requestId);
        ...
        m_requestIdToResourceDataMap.remove(requestId);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1369112</commentid>
    <comment_count>5</comment_count>
      <attachid>326233</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-11-07 11:56:41 -0800</bug_when>
    <thetext>Created attachment 326233
[PATCH] Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1369115</commentid>
    <comment_count>6</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-11-07 11:58:16 -0800</bug_when>
    <thetext>Attachment 326233 did not pass style-queue:


ERROR: Source/WebCore/inspector/NetworkResourcesData.cpp:273:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 1 in 4 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>1369565</commentid>
    <comment_count>7</comment_count>
      <attachid>326233</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-11-08 13:40:50 -0800</bug_when>
    <thetext>Comment on attachment 326233
[PATCH] Proposed Fix

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

r=me

&gt; Source/WebCore/inspector/NetworkResourcesData.cpp:266
&gt; +            return entry.value-&gt;loaderId() != loaderId;

v. cool</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1369589</commentid>
    <comment_count>8</comment_count>
      <attachid>326233</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-11-08 14:01:18 -0800</bug_when>
    <thetext>Comment on attachment 326233
[PATCH] Proposed Fix

Clearing flags on attachment: 326233

Committed r224596: &lt;https://trac.webkit.org/changeset/224596&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1369590</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-11-08 14:01:20 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1371956</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-11-15 09:40:45 -0800</bug_when>
    <thetext>&lt;rdar://problem/35562212&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>326187</attachid>
            <date>2017-11-06 19:55:50 -0800</date>
            <delta_ts>2017-11-07 11:56:41 -0800</delta_ts>
            <desc>[PATCH] Proposed Fix</desc>
            <filename>looksup-1.patch</filename>
            <type>text/plain</type>
            <size>8244</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyMGVlZDBmZmQ1NC4uMTI4YzdkMmM2YjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwyOSBAQAogMjAxNy0xMS0wNiAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUu
Y29tPgogCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEVsaW1pbmF0ZSB1bm5lY2Vzc2FyeSBoYXNo
IGxvb2t1cHMgd2l0aCBOZXR3b3JrUmVzb3VyY2VEYXRhCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzkzNjEKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0
YS5oOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0
YTo6c2V0VVJMKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNv
dXJjZURhdGE6OnNldFVybCk6IERlbGV0ZWQuCisgICAgICAgIERyaXZlLWJ5IGZpeCB0aGUgbmFt
ZSBgc2V0VXJsYCB0byBgc2V0VVJMYC4KKworICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVz
b3VyY2VzRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6
cmVzb3VyY2VDcmVhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRh
OjpyZXNwb25zZVJlY2VpdmVkKToKKyAgICAgICAgQ3JlYXRlIG5ldyB2ZXJzaW9ucyBvZiBtZXRo
b2RzIHRoYXQgY29tYmluZSB0d28gb3BlcmF0aW9ucy4KKworICAgICAgICAqIGluc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvck5ldHdvcmtBZ2VudDo6ZnJhbWVJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3Rvck5ldHdvcmtBZ2VudDo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZGlkRmFpbExvYWRpbmcpOgorICAgICAgICBV
c2UgdGhlIG5ldyB2ZXJzaW9uIG9mIG9wZXJhdGlvbnMgdG8gYXZvaWQgbXVsdGlwbGUgbG9va3Vw
cy4KKworMjAxNy0xMS0wNiAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgor
CiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IENyZWF0ZSBpbnNwZWN0b3IgYWdlbnRzIGxhemlseQog
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc5MzYwCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0
YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3Bw
CmluZGV4IGI4ZWE1NGM1MWMzLi5kMWEyZTBkMDc3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCkBAIC0xMjIsMjEgKzEyMiwzNCBA
QCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6fk5ldHdvcmtSZXNvdXJjZXNEYXRhKCkKICAgICBjbGVh
cigpOwogfQogCi12b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpyZXNvdXJjZUNyZWF0ZWQoY29u
c3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgbG9hZGVySWQpCit2b2lkIE5ldHdv
cmtSZXNvdXJjZXNEYXRhOjpyZXNvdXJjZUNyZWF0ZWQoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQs
IGNvbnN0IFN0cmluZyYgbG9hZGVySWQsIEluc3BlY3RvclBhZ2VBZ2VudDo6UmVzb3VyY2VUeXBl
IHR5cGUpCiB7CiAgICAgZW5zdXJlTm9EYXRhRm9yUmVxdWVzdElkKHJlcXVlc3RJZCk7Ci0gICAg
bV9yZXF1ZXN0SWRUb1Jlc291cmNlRGF0YU1hcC5zZXQocmVxdWVzdElkLCBuZXcgUmVzb3VyY2VE
YXRhKHJlcXVlc3RJZCwgbG9hZGVySWQpKTsKKworICAgIGF1dG8qIHJlc291cmNlRGF0YSA9IG5l
dyBSZXNvdXJjZURhdGEocmVxdWVzdElkLCBsb2FkZXJJZCk7CisgICAgcmVzb3VyY2VEYXRhLT5z
ZXRUeXBlKHR5cGUpOworICAgIG1fcmVxdWVzdElkVG9SZXNvdXJjZURhdGFNYXAuc2V0KHJlcXVl
c3RJZCwgcmVzb3VyY2VEYXRhKTsKK30KKwordm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6cmVz
b3VyY2VDcmVhdGVkKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIGxvYWRl
cklkLCBDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UpCit7CisgICAgZW5zdXJlTm9EYXRh
Rm9yUmVxdWVzdElkKHJlcXVlc3RJZCk7CisKKyAgICBhdXRvKiByZXNvdXJjZURhdGEgPSBuZXcg
UmVzb3VyY2VEYXRhKHJlcXVlc3RJZCwgbG9hZGVySWQpOworICAgIHJlc291cmNlRGF0YS0+c2V0
Q2FjaGVkUmVzb3VyY2UoY2FjaGVkUmVzb3VyY2UpOworICAgIG1fcmVxdWVzdElkVG9SZXNvdXJj
ZURhdGFNYXAuc2V0KHJlcXVlc3RJZCwgcmVzb3VyY2VEYXRhKTsKIH0KIAotdm9pZCBOZXR3b3Jr
UmVzb3VyY2VzRGF0YTo6cmVzcG9uc2VSZWNlaXZlZChjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwg
Y29uc3QgU3RyaW5nJiBmcmFtZUlkLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkK
K3ZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OnJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgU3RyaW5n
JiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UsIEluc3BlY3RvclBhZ2VBZ2VudDo6UmVzb3VyY2VUeXBlIHR5cGUpCiB7CiAg
ICAgUmVzb3VyY2VEYXRhKiByZXNvdXJjZURhdGEgPSByZXNvdXJjZURhdGFGb3JSZXF1ZXN0SWQo
cmVxdWVzdElkKTsKICAgICBpZiAoIXJlc291cmNlRGF0YSkKICAgICAgICAgcmV0dXJuOwogICAg
IHJlc291cmNlRGF0YS0+c2V0RnJhbWVJZChmcmFtZUlkKTsKLSAgICByZXNvdXJjZURhdGEtPnNl
dFVybChyZXNwb25zZS51cmwoKSk7CisgICAgcmVzb3VyY2VEYXRhLT5zZXRVUkwocmVzcG9uc2Uu
dXJsKCkpOwogICAgIHJlc291cmNlRGF0YS0+c2V0RGVjb2RlcihJbnNwZWN0b3JQYWdlQWdlbnQ6
OmNyZWF0ZVRleHREZWNvZGVyKHJlc3BvbnNlLm1pbWVUeXBlKCksIHJlc3BvbnNlLnRleHRFbmNv
ZGluZ05hbWUoKSkpOwogICAgIHJlc291cmNlRGF0YS0+c2V0SFRUUFN0YXR1c0NvZGUocmVzcG9u
c2UuaHR0cFN0YXR1c0NvZGUoKSk7CisgICAgcmVzb3VyY2VEYXRhLT5zZXRUeXBlKHR5cGUpOwog
fQogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpzZXRSZXNvdXJjZVR5cGUoY29uc3QgU3Ry
aW5nJiByZXF1ZXN0SWQsIEluc3BlY3RvclBhZ2VBZ2VudDo6UmVzb3VyY2VUeXBlIHR5cGUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEu
aCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCmluZGV4
IDUyZGNlNjg1ZDQxLi5lZGY5MjhmNDcwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogICAg
ICAgICB2b2lkIHNldEZyYW1lSWQoY29uc3QgU3RyaW5nJiBmcmFtZUlkKSB7IG1fZnJhbWVJZCA9
IGZyYW1lSWQ7IH0KIAogICAgICAgICBTdHJpbmcgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7
IH0KLSAgICAgICAgdm9pZCBzZXRVcmwoY29uc3QgU3RyaW5nJiB1cmwpIHsgbV91cmwgPSB1cmw7
IH0KKyAgICAgICAgdm9pZCBzZXRVUkwoY29uc3QgU3RyaW5nJiB1cmwpIHsgbV91cmwgPSB1cmw7
IH0KIAogICAgICAgICBib29sIGhhc0NvbnRlbnQoKSBjb25zdCB7IHJldHVybiAhbV9jb250ZW50
LmlzTnVsbCgpOyB9CiAgICAgICAgIFN0cmluZyBjb250ZW50KCkgY29uc3QgeyByZXR1cm4gbV9j
b250ZW50OyB9CkBAIC0xMTEsMTEgKzExMSwxMSBAQCBwdWJsaWM6CiAgICAgfTsKIAogICAgIE5l
dHdvcmtSZXNvdXJjZXNEYXRhKCk7Ci0KICAgICB+TmV0d29ya1Jlc291cmNlc0RhdGEoKTsKIAot
ICAgIHZvaWQgcmVzb3VyY2VDcmVhdGVkKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBT
dHJpbmcmIGxvYWRlcklkKTsKLSAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgU3RyaW5n
JiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYpOworICAgIHZvaWQgcmVzb3VyY2VDcmVhdGVkKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBj
b25zdCBTdHJpbmcmIGxvYWRlcklkLCBJbnNwZWN0b3JQYWdlQWdlbnQ6OlJlc291cmNlVHlwZSk7
CisgICAgdm9pZCByZXNvdXJjZUNyZWF0ZWQoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0
IFN0cmluZyYgbG9hZGVySWQsIENhY2hlZFJlc291cmNlKik7CisgICAgdm9pZCByZXNwb25zZVJl
Y2VpdmVkKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmLCBJbnNwZWN0b3JQYWdlQWdlbnQ6OlJlc291cmNlVHlwZSk7
CiAgICAgdm9pZCBzZXRSZXNvdXJjZVR5cGUoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIEluc3Bl
Y3RvclBhZ2VBZ2VudDo6UmVzb3VyY2VUeXBlKTsKICAgICBJbnNwZWN0b3JQYWdlQWdlbnQ6OlJl
c291cmNlVHlwZSByZXNvdXJjZVR5cGUoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQpOwogICAgIHZv
aWQgc2V0UmVzb3VyY2VDb250ZW50KGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJp
bmcmIGNvbnRlbnQsIGJvb2wgYmFzZTY0RW5jb2RlZCA9IGZhbHNlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNw
cAppbmRleCBiZjhkNmM3YjE5Zi4uMDRjM2MxNzdkZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAg
LTM0OCw3ICszNDgsNyBAQCB2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6d2lsbFNlbmRSZXF1
ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMbwogICAgIGRvdWJsZSB3YWxs
dGltZSA9IGN1cnJlbnRUaW1lKCk7CiAKICAgICBTdHJpbmcgcmVxdWVzdElkID0gSWRlbnRpZmll
cnNGYWN0b3J5OjpyZXF1ZXN0SWQoaWRlbnRpZmllcik7Ci0gICAgbV9yZXNvdXJjZXNEYXRhLT5y
ZXNvdXJjZUNyZWF0ZWQocmVxdWVzdElkLCBtX3BhZ2VBZ2VudC0+bG9hZGVySWQoJmxvYWRlcikp
OworICAgIFN0cmluZyBsb2FkZXJJZCA9IG1fcGFnZUFnZW50LT5sb2FkZXJJZCgmbG9hZGVyKTsK
IAogICAgIGlmICh0eXBlID09IEluc3BlY3RvclBhZ2VBZ2VudDo6T3RoZXJSZXNvdXJjZSkgewog
ICAgICAgICBpZiAobV9sb2FkaW5nWEhSU3luY2hyb25vdXNseSkKQEAgLTM2NSw3ICszNjUsNyBA
QCB2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6d2lsbFNlbmRSZXF1ZXN0KHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgRG9jdW1lbnRMbwogICAgICAgICB9CiAgICAgfQogCi0gICAgbV9yZXNv
dXJjZXNEYXRhLT5zZXRSZXNvdXJjZVR5cGUocmVxdWVzdElkLCB0eXBlKTsKKyAgICBtX3Jlc291
cmNlc0RhdGEtPnJlc291cmNlQ3JlYXRlZChyZXF1ZXN0SWQsIGxvYWRlcklkLCB0eXBlKTsKIAog
ICAgIGZvciAoYXV0byYgZW50cnkgOiBtX2V4dHJhUmVxdWVzdEhlYWRlcnMpCiAgICAgICAgIHJl
cXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKGVudHJ5LmtleSwgZW50cnkudmFsdWUpOwpAQCAtNDQw
LDEwICs0NDAsMTIgQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmRpZFJlY2VpdmVSZXNw
b25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW4KICAgICBpZiAodHlwZSAhPSBu
ZXdUeXBlICYmIG5ld1R5cGUgIT0gSW5zcGVjdG9yUGFnZUFnZW50OjpYSFJSZXNvdXJjZSAmJiBu
ZXdUeXBlICE9IEluc3BlY3RvclBhZ2VBZ2VudDo6T3RoZXJSZXNvdXJjZSkKICAgICAgICAgdHlw
ZSA9IG5ld1R5cGU7CiAKLSAgICBtX3Jlc291cmNlc0RhdGEtPnJlc3BvbnNlUmVjZWl2ZWQocmVx
dWVzdElkLCBtX3BhZ2VBZ2VudC0+ZnJhbWVJZChsb2FkZXIuZnJhbWUoKSksIHJlc3BvbnNlKTsK
LSAgICBtX3Jlc291cmNlc0RhdGEtPnNldFJlc291cmNlVHlwZShyZXF1ZXN0SWQsIHR5cGUpOwor
ICAgIFN0cmluZyBmcmFtZUlkID0gbV9wYWdlQWdlbnQtPmZyYW1lSWQobG9hZGVyLmZyYW1lKCkp
OworICAgIFN0cmluZyBsb2FkZXJJZCA9IG1fcGFnZUFnZW50LT5sb2FkZXJJZCgmbG9hZGVyKTsK
IAotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5yZXNwb25zZVJlY2VpdmVkKHJlcXVlc3RJZCwg
bV9wYWdlQWdlbnQtPmZyYW1lSWQobG9hZGVyLmZyYW1lKCkpLCBtX3BhZ2VBZ2VudC0+bG9hZGVy
SWQoJmxvYWRlciksIHRpbWVzdGFtcCgpLCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlc291cmNlVHlw
ZUpTT04odHlwZSksIHJlc291cmNlUmVzcG9uc2UpOworICAgIG1fcmVzb3VyY2VzRGF0YS0+cmVz
cG9uc2VSZWNlaXZlZChyZXF1ZXN0SWQsIGZyYW1lSWQsIHJlc3BvbnNlLCB0eXBlKTsKKworICAg
IG1fZnJvbnRlbmREaXNwYXRjaGVyLT5yZXNwb25zZVJlY2VpdmVkKHJlcXVlc3RJZCwgZnJhbWVJ
ZCwgbG9hZGVySWQsIHRpbWVzdGFtcCgpLCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlc291cmNlVHlw
ZUpTT04odHlwZSksIHJlc291cmNlUmVzcG9uc2UpOwogCiAgICAgLy8gSWYgd2UgcmV2YWxpZGF0
ZWQgdGhlIHJlc291cmNlIGFuZCBnb3QgTm90IG1vZGlmaWVkLCBzZW5kIGNvbnRlbnQgbGVuZ3Ro
IGZvbGxvd2luZyBkaWRSZWNlaXZlUmVzcG9uc2UKICAgICAvLyBhcyB0aGVyZSB3aWxsIGJlIG5v
IGNhbGxzIHRvIGRpZFJlY2VpdmVEYXRhIGZyb20gdGhlIG5ldHdvcmsgc3RhY2suCkBAIC01MjMs
MTMgKzUyNSwxMiBAQCB2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZGlkRmFpbExvYWRpbmco
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYQogCiB2b2lkIEluc3BlY3Rvck5l
dHdvcmtBZ2VudDo6ZGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKERvY3VtZW50TG9hZGVy
JiBsb2FkZXIsIENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKIHsKLSAgICBTdHJpbmcgbG9hZGVy
SWQgPSBtX3BhZ2VBZ2VudC0+bG9hZGVySWQoJmxvYWRlcik7Ci0gICAgU3RyaW5nIGZyYW1lSWQg
PSBtX3BhZ2VBZ2VudC0+ZnJhbWVJZChsb2FkZXIuZnJhbWUoKSk7CiAgICAgdW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyID0gbG9hZGVyLmZyYW1lKCktPnBhZ2UoKS0+cHJvZ3Jlc3MoKS5jcmVhdGVV
bmlxdWVJZGVudGlmaWVyKCk7CiAgICAgU3RyaW5nIHJlcXVlc3RJZCA9IElkZW50aWZpZXJzRmFj
dG9yeTo6cmVxdWVzdElkKGlkZW50aWZpZXIpOworICAgIFN0cmluZyBsb2FkZXJJZCA9IG1fcGFn
ZUFnZW50LT5sb2FkZXJJZCgmbG9hZGVyKTsKKyAgICBTdHJpbmcgZnJhbWVJZCA9IG1fcGFnZUFn
ZW50LT5mcmFtZUlkKGxvYWRlci5mcmFtZSgpKTsKIAotICAgIG1fcmVzb3VyY2VzRGF0YS0+cmVz
b3VyY2VDcmVhdGVkKHJlcXVlc3RJZCwgbG9hZGVySWQpOwotICAgIG1fcmVzb3VyY2VzRGF0YS0+
YWRkQ2FjaGVkUmVzb3VyY2UocmVxdWVzdElkLCAmcmVzb3VyY2UpOworICAgIG1fcmVzb3VyY2Vz
RGF0YS0+cmVzb3VyY2VDcmVhdGVkKHJlcXVlc3RJZCwgbG9hZGVySWQsICZyZXNvdXJjZSk7CiAK
ICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6SW5pdGlhdG9yPiBpbml0
aWF0b3JPYmplY3QgPSBidWlsZEluaXRpYXRvck9iamVjdChsb2FkZXIuZnJhbWUoKSA/IGxvYWRl
ci5mcmFtZSgpLT5kb2N1bWVudCgpIDogbnVsbHB0cik7CiAK
</data>
<flag name="review"
          id="345535"
          type_id="1"
          status="+"
          setter="sam"
    />
    <flag name="commit-queue"
          id="345536"
          type_id="3"
          status="-"
          setter="joepeck"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>326233</attachid>
            <date>2017-11-07 11:56:41 -0800</date>
            <delta_ts>2017-11-08 14:01:18 -0800</delta_ts>
            <desc>[PATCH] Proposed Fix</desc>
            <filename>optimize-2.patch</filename>
            <type>text/plain</type>
            <size>12668</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAzNmIzOTI5MGJmMy4uZjMyNjZlNTY3ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwzNyBAQAogMjAxNy0xMS0wNyAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUu
Y29tPgogCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEVsaW1pbmF0ZSB1bm5lY2Vzc2FyeSBoYXNo
IGxvb2t1cHMgd2l0aCBOZXR3b3JrUmVzb3VyY2VEYXRhCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzkzNjEKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0
YS5oOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0
YTo6c2V0VVJMKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNv
dXJjZURhdGE6OnNldFVybCk6IERlbGV0ZWQuCisgICAgICAgIERyaXZlLWJ5IGZpeCB0aGUgbmFt
ZSBgc2V0VXJsYCB0byBgc2V0VVJMYC4KKworICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVz
b3VyY2VzRGF0YS5oOgorICAgICAgICBTdG9yZSB1bmlxdWVfcHRycyBpbiB0aGUgSGFzaE1hcC4K
KworICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6cmVzb3VyY2VDcmVhdGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpyZXNwb25zZVJlY2VpdmVkKToKKyAg
ICAgICAgQ3JlYXRlIG5ldyB2ZXJzaW9ucyBvZiBtZXRob2RzIHRoYXQgY29tYmluZSB0d28gb3Bl
cmF0aW9ucy4KKworICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OnJlbW92
ZUNhY2hlZFJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRh
OjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6ZW5zdXJl
Tm9EYXRhRm9yUmVxdWVzdElkKToKKyAgICAgICAgSGFuZGxlIHVuaXF1ZV9wdHJzIGluIHRoZSBI
YXNoTWFwLgorCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdl
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpmcmFtZUlk
ZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50Ojp3aWxs
U2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50Ojpk
aWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0Fn
ZW50OjpkaWRGYWlsTG9hZGluZyk6CisgICAgICAgIFVzZSB0aGUgbmV3IHZlcnNpb24gb2Ygb3Bl
cmF0aW9ucyB0byBhdm9pZCBtdWx0aXBsZSBsb29rdXBzLgorCisyMDE3LTExLTA3ICBKb3NlcGgg
UGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisKICAgICAgICAgV2ViIEluc3BlY3Rvcjog
QWRkIHNvbWUgZmFzdCByZXR1cm5zIGluIGNhc2VzIHdoZXJlIHdlIG9ubHkgY2FsbCB0aHJvdWdo
IHRvIGEgTmV0d29ya0FnZW50CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzkzNTkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3
b3JrUmVzb3VyY2VzRGF0YS5jcHAKaW5kZXggYjhlYTU0YzUxYzMuLjkyOTQzMjJhZmEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAK
QEAgLTM0LDggKzM0LDggQEAKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJU
ZXh0UmVzb3VyY2VEZWNvZGVyLmgiCiAKLQogbmFtZXNwYWNlIFdlYkNvcmUgeworCiB1c2luZyBu
YW1lc3BhY2UgSW5zcGVjdG9yOwogCiBzdGF0aWMgY29uc3Qgc2l6ZV90IG1heGltdW1SZXNvdXJj
ZXNDb250ZW50U2l6ZSA9IDEwMCAqIDEwMDAgKiAxMDAwOyAvLyAxMDBNQgpAQCAtMTExLDggKzEx
MSw3IEBAIHNpemVfdCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkZWNvZGVE
YXRhVG9Db250ZW50KCkKIH0KIAogTmV0d29ya1Jlc291cmNlc0RhdGE6Ok5ldHdvcmtSZXNvdXJj
ZXNEYXRhKCkKLSAgICA6IG1fY29udGVudFNpemUoMCkKLSAgICAsIG1fbWF4aW11bVJlc291cmNl
c0NvbnRlbnRTaXplKG1heGltdW1SZXNvdXJjZXNDb250ZW50U2l6ZSkKKyAgICA6IG1fbWF4aW11
bVJlc291cmNlc0NvbnRlbnRTaXplKG1heGltdW1SZXNvdXJjZXNDb250ZW50U2l6ZSkKICAgICAs
IG1fbWF4aW11bVNpbmdsZVJlc291cmNlQ29udGVudFNpemUobWF4aW11bVNpbmdsZVJlc291cmNl
Q29udGVudFNpemUpCiB7CiB9CkBAIC0xMjIsMjEgKzEyMSwzNCBAQCBOZXR3b3JrUmVzb3VyY2Vz
RGF0YTo6fk5ldHdvcmtSZXNvdXJjZXNEYXRhKCkKICAgICBjbGVhcigpOwogfQogCi12b2lkIE5l
dHdvcmtSZXNvdXJjZXNEYXRhOjpyZXNvdXJjZUNyZWF0ZWQoY29uc3QgU3RyaW5nJiByZXF1ZXN0
SWQsIGNvbnN0IFN0cmluZyYgbG9hZGVySWQpCit2b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpy
ZXNvdXJjZUNyZWF0ZWQoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgbG9h
ZGVySWQsIEluc3BlY3RvclBhZ2VBZ2VudDo6UmVzb3VyY2VUeXBlIHR5cGUpCiB7CiAgICAgZW5z
dXJlTm9EYXRhRm9yUmVxdWVzdElkKHJlcXVlc3RJZCk7Ci0gICAgbV9yZXF1ZXN0SWRUb1Jlc291
cmNlRGF0YU1hcC5zZXQocmVxdWVzdElkLCBuZXcgUmVzb3VyY2VEYXRhKHJlcXVlc3RJZCwgbG9h
ZGVySWQpKTsKKworICAgIGF1dG8gcmVzb3VyY2VEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxSZXNv
dXJjZURhdGE+KHJlcXVlc3RJZCwgbG9hZGVySWQpOworICAgIHJlc291cmNlRGF0YS0+c2V0VHlw
ZSh0eXBlKTsKKyAgICBtX3JlcXVlc3RJZFRvUmVzb3VyY2VEYXRhTWFwLnNldChyZXF1ZXN0SWQs
IFdURk1vdmUocmVzb3VyY2VEYXRhKSk7Cit9CisKK3ZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6
OnJlc291cmNlQ3JlYXRlZChjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBs
b2FkZXJJZCwgQ2FjaGVkUmVzb3VyY2UmIGNhY2hlZFJlc291cmNlKQoreworICAgIGVuc3VyZU5v
RGF0YUZvclJlcXVlc3RJZChyZXF1ZXN0SWQpOworCisgICAgYXV0byByZXNvdXJjZURhdGEgPSBz
dGQ6Om1ha2VfdW5pcXVlPFJlc291cmNlRGF0YT4ocmVxdWVzdElkLCBsb2FkZXJJZCk7CisgICAg
cmVzb3VyY2VEYXRhLT5zZXRDYWNoZWRSZXNvdXJjZSgmY2FjaGVkUmVzb3VyY2UpOworICAgIG1f
cmVxdWVzdElkVG9SZXNvdXJjZURhdGFNYXAuc2V0KHJlcXVlc3RJZCwgV1RGTW92ZShyZXNvdXJj
ZURhdGEpKTsKIH0KIAotdm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6cmVzcG9uc2VSZWNlaXZl
ZChjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK3ZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OnJl
c3BvbnNlUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgZnJh
bWVJZCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIEluc3BlY3RvclBhZ2VBZ2Vu
dDo6UmVzb3VyY2VUeXBlIHR5cGUpCiB7CiAgICAgUmVzb3VyY2VEYXRhKiByZXNvdXJjZURhdGEg
PSByZXNvdXJjZURhdGFGb3JSZXF1ZXN0SWQocmVxdWVzdElkKTsKICAgICBpZiAoIXJlc291cmNl
RGF0YSkKICAgICAgICAgcmV0dXJuOwogICAgIHJlc291cmNlRGF0YS0+c2V0RnJhbWVJZChmcmFt
ZUlkKTsKLSAgICByZXNvdXJjZURhdGEtPnNldFVybChyZXNwb25zZS51cmwoKSk7CisgICAgcmVz
b3VyY2VEYXRhLT5zZXRVUkwocmVzcG9uc2UudXJsKCkpOwogICAgIHJlc291cmNlRGF0YS0+c2V0
RGVjb2RlcihJbnNwZWN0b3JQYWdlQWdlbnQ6OmNyZWF0ZVRleHREZWNvZGVyKHJlc3BvbnNlLm1p
bWVUeXBlKCksIHJlc3BvbnNlLnRleHRFbmNvZGluZ05hbWUoKSkpOwogICAgIHJlc291cmNlRGF0
YS0+c2V0SFRUUFN0YXR1c0NvZGUocmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSk7CisgICAgcmVz
b3VyY2VEYXRhLT5zZXRUeXBlKHR5cGUpOwogfQogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRh
OjpzZXRSZXNvdXJjZVR5cGUoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIEluc3BlY3RvclBhZ2VB
Z2VudDo6UmVzb3VyY2VUeXBlIHR5cGUpCkBAIC0yMzIsNyArMjQ0LDcgQEAgVmVjdG9yPFN0cmlu
Zz4gTmV0d29ya1Jlc291cmNlc0RhdGE6OnJlbW92ZUNhY2hlZFJlc291cmNlKENhY2hlZFJlc291
cmNlKiBjYWNoZWQKIHsKICAgICBWZWN0b3I8U3RyaW5nPiByZXN1bHQ7CiAgICAgZm9yIChhdXRv
JiBlbnRyeSA6IG1fcmVxdWVzdElkVG9SZXNvdXJjZURhdGFNYXApIHsKLSAgICAgICAgUmVzb3Vy
Y2VEYXRhKiByZXNvdXJjZURhdGEgPSBlbnRyeS52YWx1ZTsKKyAgICAgICAgUmVzb3VyY2VEYXRh
KiByZXNvdXJjZURhdGEgPSBlbnRyeS52YWx1ZS5nZXQoKTsKICAgICAgICAgaWYgKHJlc291cmNl
RGF0YS0+Y2FjaGVkUmVzb3VyY2UoKSA9PSBjYWNoZWRSZXNvdXJjZSkgewogICAgICAgICAgICAg
cmVzb3VyY2VEYXRhLT5zZXRDYWNoZWRSZXNvdXJjZShudWxscHRyKTsKICAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmQoZW50cnkua2V5KTsKQEAgLTI0MiwyNyArMjU0LDIzIEBAIFZlY3RvcjxTdHJp
bmc+IE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpyZW1vdmVDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNv
dXJjZSogY2FjaGVkCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBOZXR3b3JrUmVzb3Vy
Y2VzRGF0YTo6Y2xlYXIoY29uc3QgU3RyaW5nJiBwcmVzZXJ2ZWRMb2FkZXJJZCkKK3ZvaWQgTmV0
d29ya1Jlc291cmNlc0RhdGE6OmNsZWFyKHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBwcmVzZXJ2ZWRM
b2FkZXJJZCkKIHsKICAgICBtX3JlcXVlc3RJZHNEZXF1ZS5jbGVhcigpOwogICAgIG1fY29udGVu
dFNpemUgPSAwOwogCi0gICAgUmVzb3VyY2VEYXRhTWFwIHByZXNlcnZlZE1hcDsKLQotICAgIGZv
ciAoYXV0byYgZW50cnkgOiBtX3JlcXVlc3RJZFRvUmVzb3VyY2VEYXRhTWFwKSB7Ci0gICAgICAg
IFJlc291cmNlRGF0YSogcmVzb3VyY2VEYXRhID0gZW50cnkudmFsdWU7Ci0gICAgICAgIEFTU0VS
VChyZXNvdXJjZURhdGEpOwotICAgICAgICBpZiAoIXByZXNlcnZlZExvYWRlcklkLmlzTnVsbCgp
ICYmIHJlc291cmNlRGF0YS0+bG9hZGVySWQoKSA9PSBwcmVzZXJ2ZWRMb2FkZXJJZCkKLSAgICAg
ICAgICAgIHByZXNlcnZlZE1hcC5zZXQoZW50cnkua2V5LCBlbnRyeS52YWx1ZSk7Ci0gICAgICAg
IGVsc2UKLSAgICAgICAgICAgIGRlbGV0ZSByZXNvdXJjZURhdGE7CisgICAgaWYgKCFwcmVzZXJ2
ZWRMb2FkZXJJZCkKKyAgICAgICAgbV9yZXF1ZXN0SWRUb1Jlc291cmNlRGF0YU1hcC5jbGVhcigp
OworICAgIGVsc2UgeworICAgICAgICBtX3JlcXVlc3RJZFRvUmVzb3VyY2VEYXRhTWFwLnJlbW92
ZUlmKFtsb2FkZXJJZCA9ICpwcmVzZXJ2ZWRMb2FkZXJJZF0gKGF1dG8mIGVudHJ5KSB7CisgICAg
ICAgICAgICByZXR1cm4gZW50cnkudmFsdWUtPmxvYWRlcklkKCkgIT0gbG9hZGVySWQ7CisgICAg
ICAgIH0pOwogICAgIH0KLSAgICBtX3JlcXVlc3RJZFRvUmVzb3VyY2VEYXRhTWFwLnN3YXAocHJl
c2VydmVkTWFwKTsKIH0KIAogVmVjdG9yPE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURh
dGEqPiBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6cmVzb3VyY2VzKCkKIHsKLSAgICByZXR1cm4gY29w
eVRvVmVjdG9yKG1fcmVxdWVzdElkVG9SZXNvdXJjZURhdGFNYXAudmFsdWVzKCkpOworICAgIHJl
dHVybiBXVEY6Om1hcChtX3JlcXVlc3RJZFRvUmVzb3VyY2VEYXRhTWFwLnZhbHVlcygpLCBbXSAo
Y29uc3QgYXV0byYgdikgeyByZXR1cm4gdi5nZXQoKTsgfSk7CiB9CiAKIE5ldHdvcmtSZXNvdXJj
ZXNEYXRhOjpSZXNvdXJjZURhdGEqIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpyZXNvdXJjZURhdGFG
b3JSZXF1ZXN0SWQoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQpCkBAIC0yNzQsMTMgKzI4MiwxMyBA
QCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhKiBOZXR3b3JrUmVzb3VyY2VzRGF0
YTo6cmVzb3VyY2VEYXRhRm9yUmVxdWVzdAogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpl
bnN1cmVOb0RhdGFGb3JSZXF1ZXN0SWQoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQpCiB7Ci0gICAg
UmVzb3VyY2VEYXRhKiByZXNvdXJjZURhdGEgPSByZXNvdXJjZURhdGFGb3JSZXF1ZXN0SWQocmVx
dWVzdElkKTsKLSAgICBpZiAoIXJlc291cmNlRGF0YSkKKyAgICBhdXRvIHJlc3VsdCA9IG1fcmVx
dWVzdElkVG9SZXNvdXJjZURhdGFNYXAudGFrZShyZXF1ZXN0SWQpOworICAgIGlmICghcmVzdWx0
KQogICAgICAgICByZXR1cm47CisKKyAgICBSZXNvdXJjZURhdGEqIHJlc291cmNlRGF0YSA9IHJl
c3VsdC5nZXQoKTsKICAgICBpZiAocmVzb3VyY2VEYXRhLT5oYXNDb250ZW50KCkgfHwgcmVzb3Vy
Y2VEYXRhLT5oYXNEYXRhKCkpCiAgICAgICAgIG1fY29udGVudFNpemUgLT0gcmVzb3VyY2VEYXRh
LT5ldmljdENvbnRlbnQoKTsKLSAgICBkZWxldGUgcmVzb3VyY2VEYXRhOwotICAgIG1fcmVxdWVz
dElkVG9SZXNvdXJjZURhdGFNYXAucmVtb3ZlKHJlcXVlc3RJZCk7CiB9CiAKIGJvb2wgTmV0d29y
a1Jlc291cmNlc0RhdGE6OmVuc3VyZUZyZWVTcGFjZShzaXplX3Qgc2l6ZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKaW5kZXggNTJkY2U2ODVk
NDEuLjVkOTljYzk3YjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0
d29ya1Jlc291cmNlc0RhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29y
a1Jlc291cmNlc0RhdGEuaApAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgICAgIHZvaWQg
c2V0RnJhbWVJZChjb25zdCBTdHJpbmcmIGZyYW1lSWQpIHsgbV9mcmFtZUlkID0gZnJhbWVJZDsg
fQogCiAgICAgICAgIFN0cmluZyB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQotICAgICAg
ICB2b2lkIHNldFVybChjb25zdCBTdHJpbmcmIHVybCkgeyBtX3VybCA9IHVybDsgfQorICAgICAg
ICB2b2lkIHNldFVSTChjb25zdCBTdHJpbmcmIHVybCkgeyBtX3VybCA9IHVybDsgfQogCiAgICAg
ICAgIGJvb2wgaGFzQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuICFtX2NvbnRlbnQuaXNOdWxsKCk7
IH0KICAgICAgICAgU3RyaW5nIGNvbnRlbnQoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnQ7IH0K
QEAgLTExMSwxMSArMTExLDExIEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAgTmV0d29ya1Jlc291
cmNlc0RhdGEoKTsKLQogICAgIH5OZXR3b3JrUmVzb3VyY2VzRGF0YSgpOwogCi0gICAgdm9pZCBy
ZXNvdXJjZUNyZWF0ZWQoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgbG9h
ZGVySWQpOwotICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBTdHJpbmcmIHJlcXVlc3RJ
ZCwgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CisgICAg
dm9pZCByZXNvdXJjZUNyZWF0ZWQoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmlu
ZyYgbG9hZGVySWQsIEluc3BlY3RvclBhZ2VBZ2VudDo6UmVzb3VyY2VUeXBlKTsKKyAgICB2b2lk
IHJlc291cmNlQ3JlYXRlZChjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBs
b2FkZXJJZCwgQ2FjaGVkUmVzb3VyY2UmKTsKKyAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29u
c3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYsIEluc3BlY3RvclBhZ2VBZ2VudDo6UmVzb3VyY2VUeXBlKTsKICAgICB2b2lk
IHNldFJlc291cmNlVHlwZShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgSW5zcGVjdG9yUGFnZUFn
ZW50OjpSZXNvdXJjZVR5cGUpOwogICAgIEluc3BlY3RvclBhZ2VBZ2VudDo6UmVzb3VyY2VUeXBl
IHJlc291cmNlVHlwZShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCk7CiAgICAgdm9pZCBzZXRSZXNv
dXJjZUNvbnRlbnQoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgY29udGVu
dCwgYm9vbCBiYXNlNjRFbmNvZGVkID0gZmFsc2UpOwpAQCAtMTI1LDcgKzEyNSw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGFkZFJlc291cmNlU2hhcmVkQnVmZmVyKGNvbnN0IFN0cmluZyYgcmVxdWVz
dElkLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05h
bWUpOwogICAgIFJlc291cmNlRGF0YSBjb25zdCogZGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJ
ZCk7CiAgICAgVmVjdG9yPFN0cmluZz4gcmVtb3ZlQ2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3Vy
Y2UqKTsKLSAgICB2b2lkIGNsZWFyKGNvbnN0IFN0cmluZyYgcHJlc2VydmVkTG9hZGVySWQgPSBT
dHJpbmcoKSk7CisgICAgdm9pZCBjbGVhcihzdGQ6Om9wdGlvbmFsPFN0cmluZz4gcHJlc2VydmVk
TG9hZGVySWQgPSBzdGQ6Om51bGxvcHQpOwogICAgIFZlY3RvcjxSZXNvdXJjZURhdGEqPiByZXNv
dXJjZXMoKTsKIAogcHJpdmF0ZToKQEAgLTEzNCwxMCArMTM0LDggQEAgcHJpdmF0ZToKICAgICBi
b29sIGVuc3VyZUZyZWVTcGFjZShzaXplX3QpOwogCiAgICAgRGVxdWU8U3RyaW5nPiBtX3JlcXVl
c3RJZHNEZXF1ZTsKLQotICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFJlc291cmNlRGF0YSo+
IFJlc291cmNlRGF0YU1hcDsKLSAgICBSZXNvdXJjZURhdGFNYXAgbV9yZXF1ZXN0SWRUb1Jlc291
cmNlRGF0YU1hcDsKLSAgICBzaXplX3QgbV9jb250ZW50U2l6ZTsKKyAgICBIYXNoTWFwPFN0cmlu
Zywgc3RkOjp1bmlxdWVfcHRyPFJlc291cmNlRGF0YT4+IG1fcmVxdWVzdElkVG9SZXNvdXJjZURh
dGFNYXA7CisgICAgc2l6ZV90IG1fY29udGVudFNpemUgeyAwIH07CiAgICAgc2l6ZV90IG1fbWF4
aW11bVJlc291cmNlc0NvbnRlbnRTaXplOwogICAgIHNpemVfdCBtX21heGltdW1TaW5nbGVSZXNv
dXJjZUNvbnRlbnRTaXplOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAppbmRleCBiZjhkNmM3YjE5Zi4u
MjVkNTZiNzY5M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTM0OCw3ICszNDgsNyBAQCB2b2lk
IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6d2lsbFNlbmRSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllciwgRG9jdW1lbnRMbwogICAgIGRvdWJsZSB3YWxsdGltZSA9IGN1cnJlbnRUaW1lKCk7
CiAKICAgICBTdHJpbmcgcmVxdWVzdElkID0gSWRlbnRpZmllcnNGYWN0b3J5OjpyZXF1ZXN0SWQo
aWRlbnRpZmllcik7Ci0gICAgbV9yZXNvdXJjZXNEYXRhLT5yZXNvdXJjZUNyZWF0ZWQocmVxdWVz
dElkLCBtX3BhZ2VBZ2VudC0+bG9hZGVySWQoJmxvYWRlcikpOworICAgIFN0cmluZyBsb2FkZXJJ
ZCA9IG1fcGFnZUFnZW50LT5sb2FkZXJJZCgmbG9hZGVyKTsKIAogICAgIGlmICh0eXBlID09IElu
c3BlY3RvclBhZ2VBZ2VudDo6T3RoZXJSZXNvdXJjZSkgewogICAgICAgICBpZiAobV9sb2FkaW5n
WEhSU3luY2hyb25vdXNseSkKQEAgLTM2NSw3ICszNjUsNyBAQCB2b2lkIEluc3BlY3Rvck5ldHdv
cmtBZ2VudDo6d2lsbFNlbmRSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1l
bnRMbwogICAgICAgICB9CiAgICAgfQogCi0gICAgbV9yZXNvdXJjZXNEYXRhLT5zZXRSZXNvdXJj
ZVR5cGUocmVxdWVzdElkLCB0eXBlKTsKKyAgICBtX3Jlc291cmNlc0RhdGEtPnJlc291cmNlQ3Jl
YXRlZChyZXF1ZXN0SWQsIGxvYWRlcklkLCB0eXBlKTsKIAogICAgIGZvciAoYXV0byYgZW50cnkg
OiBtX2V4dHJhUmVxdWVzdEhlYWRlcnMpCiAgICAgICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZp
ZWxkKGVudHJ5LmtleSwgZW50cnkudmFsdWUpOwpAQCAtNDQwLDEwICs0NDAsMTIgQEAgdm9pZCBJ
bnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIERvY3VtZW4KICAgICBpZiAodHlwZSAhPSBuZXdUeXBlICYmIG5ld1R5cGUgIT0g
SW5zcGVjdG9yUGFnZUFnZW50OjpYSFJSZXNvdXJjZSAmJiBuZXdUeXBlICE9IEluc3BlY3RvclBh
Z2VBZ2VudDo6T3RoZXJSZXNvdXJjZSkKICAgICAgICAgdHlwZSA9IG5ld1R5cGU7CiAKLSAgICBt
X3Jlc291cmNlc0RhdGEtPnJlc3BvbnNlUmVjZWl2ZWQocmVxdWVzdElkLCBtX3BhZ2VBZ2VudC0+
ZnJhbWVJZChsb2FkZXIuZnJhbWUoKSksIHJlc3BvbnNlKTsKLSAgICBtX3Jlc291cmNlc0RhdGEt
PnNldFJlc291cmNlVHlwZShyZXF1ZXN0SWQsIHR5cGUpOworICAgIFN0cmluZyBmcmFtZUlkID0g
bV9wYWdlQWdlbnQtPmZyYW1lSWQobG9hZGVyLmZyYW1lKCkpOworICAgIFN0cmluZyBsb2FkZXJJ
ZCA9IG1fcGFnZUFnZW50LT5sb2FkZXJJZCgmbG9hZGVyKTsKIAotICAgIG1fZnJvbnRlbmREaXNw
YXRjaGVyLT5yZXNwb25zZVJlY2VpdmVkKHJlcXVlc3RJZCwgbV9wYWdlQWdlbnQtPmZyYW1lSWQo
bG9hZGVyLmZyYW1lKCkpLCBtX3BhZ2VBZ2VudC0+bG9hZGVySWQoJmxvYWRlciksIHRpbWVzdGFt
cCgpLCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlc291cmNlVHlwZUpTT04odHlwZSksIHJlc291cmNl
UmVzcG9uc2UpOworICAgIG1fcmVzb3VyY2VzRGF0YS0+cmVzcG9uc2VSZWNlaXZlZChyZXF1ZXN0
SWQsIGZyYW1lSWQsIHJlc3BvbnNlLCB0eXBlKTsKKworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVy
LT5yZXNwb25zZVJlY2VpdmVkKHJlcXVlc3RJZCwgZnJhbWVJZCwgbG9hZGVySWQsIHRpbWVzdGFt
cCgpLCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlc291cmNlVHlwZUpTT04odHlwZSksIHJlc291cmNl
UmVzcG9uc2UpOwogCiAgICAgLy8gSWYgd2UgcmV2YWxpZGF0ZWQgdGhlIHJlc291cmNlIGFuZCBn
b3QgTm90IG1vZGlmaWVkLCBzZW5kIGNvbnRlbnQgbGVuZ3RoIGZvbGxvd2luZyBkaWRSZWNlaXZl
UmVzcG9uc2UKICAgICAvLyBhcyB0aGVyZSB3aWxsIGJlIG5vIGNhbGxzIHRvIGRpZFJlY2VpdmVE
YXRhIGZyb20gdGhlIG5ldHdvcmsgc3RhY2suCkBAIC01MjMsMTMgKzUyNSwxMiBAQCB2b2lkIElu
c3BlY3Rvck5ldHdvcmtBZ2VudDo6ZGlkRmFpbExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyLCBEb2N1bWVudExvYQogCiB2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZGlkTG9hZFJl
c291cmNlRnJvbU1lbW9yeUNhY2hlKERvY3VtZW50TG9hZGVyJiBsb2FkZXIsIENhY2hlZFJlc291
cmNlJiByZXNvdXJjZSkKIHsKLSAgICBTdHJpbmcgbG9hZGVySWQgPSBtX3BhZ2VBZ2VudC0+bG9h
ZGVySWQoJmxvYWRlcik7Ci0gICAgU3RyaW5nIGZyYW1lSWQgPSBtX3BhZ2VBZ2VudC0+ZnJhbWVJ
ZChsb2FkZXIuZnJhbWUoKSk7CiAgICAgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyID0gbG9hZGVy
LmZyYW1lKCktPnBhZ2UoKS0+cHJvZ3Jlc3MoKS5jcmVhdGVVbmlxdWVJZGVudGlmaWVyKCk7CiAg
ICAgU3RyaW5nIHJlcXVlc3RJZCA9IElkZW50aWZpZXJzRmFjdG9yeTo6cmVxdWVzdElkKGlkZW50
aWZpZXIpOworICAgIFN0cmluZyBsb2FkZXJJZCA9IG1fcGFnZUFnZW50LT5sb2FkZXJJZCgmbG9h
ZGVyKTsKKyAgICBTdHJpbmcgZnJhbWVJZCA9IG1fcGFnZUFnZW50LT5mcmFtZUlkKGxvYWRlci5m
cmFtZSgpKTsKIAotICAgIG1fcmVzb3VyY2VzRGF0YS0+cmVzb3VyY2VDcmVhdGVkKHJlcXVlc3RJ
ZCwgbG9hZGVySWQpOwotICAgIG1fcmVzb3VyY2VzRGF0YS0+YWRkQ2FjaGVkUmVzb3VyY2UocmVx
dWVzdElkLCAmcmVzb3VyY2UpOworICAgIG1fcmVzb3VyY2VzRGF0YS0+cmVzb3VyY2VDcmVhdGVk
KHJlcXVlc3RJZCwgbG9hZGVySWQsIHJlc291cmNlKTsKIAogICAgIFJlZlB0cjxJbnNwZWN0b3I6
OlByb3RvY29sOjpOZXR3b3JrOjpJbml0aWF0b3I+IGluaXRpYXRvck9iamVjdCA9IGJ1aWxkSW5p
dGlhdG9yT2JqZWN0KGxvYWRlci5mcmFtZSgpID8gbG9hZGVyLmZyYW1lKCktPmRvY3VtZW50KCkg
OiBudWxscHRyKTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>