<?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>166041</bug_id>
          
          <creation_ts>2016-12-19 15:13:26 -0800</creation_ts>
          <short_desc>Record/replay: fix range used for fuzzy matching</short_desc>
          <delta_ts>2017-01-10 14:32:13 -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>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Keith Rollin">krollin</reporter>
          <assigned_to name="Keith Rollin">krollin</assigned_to>
          <cc>achristensen</cc>
    
    <cc>commit-queue</cc>
    
    <cc>koivisto</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1261234</commentid>
    <comment_count>0</comment_count>
    <who name="Keith Rollin">krollin</who>
    <bug_when>2016-12-19 15:13:26 -0800</bug_when>
    <thetext>Because of two bugs, the attempt to determine the range of URLs to check as part of the process of fuzzy matching was failing. The intent was to find the range of URLs that started with the same &lt;scheme://host:port&gt; as a given URL. However, because of a reversed test, the upper end of the range ended up being the &quot;end()&quot; iterator of the entire collection of URLs. With that fixed, there was another bug due to one URL being given as &lt;scheme://host:port&gt; and the other given as &lt;scheme://host:port/&gt; (note the trailing slash).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1261298</commentid>
    <comment_count>1</comment_count>
      <attachid>297496</attachid>
    <who name="Keith Rollin">krollin</who>
    <bug_when>2016-12-19 18:23:03 -0800</bug_when>
    <thetext>Created attachment 297496
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1261302</commentid>
    <comment_count>2</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2016-12-19 19:01:56 -0800</bug_when>
    <thetext>The mac-ews failure may be my fault. I was taking bots offline to update them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1261839</commentid>
    <comment_count>3</comment_count>
    <who name="Keith Rollin">krollin</who>
    <bug_when>2016-12-20 16:21:59 -0800</bug_when>
    <thetext>Yeah, there was the following build error:

Extractor.cpp:26:
/Volumes/Data/EWS/WebKit/Source/JavaScriptCore/config.h:26:10: fatal error: &apos;wtf/Platform.h&apos; file not found
#include &lt;wtf/Platform.h&gt;

There&apos;s no way my patch led to that. So the patch should still be reviewable as-is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1262304</commentid>
    <comment_count>4</comment_count>
      <attachid>297496</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-12-22 09:22:50 -0800</bug_when>
    <thetext>Comment on attachment 297496
Patch

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

Is there a way we can add regression tests for this? I am concerned about fixing bugs and adding code without regression test coverage, even in diagnostic code.

&gt; Source/WebKit2/NetworkProcess/capture/NetworkCaptureManager.cpp:427
&gt; +    auto pathStart = url.pathStart();
&gt; +    auto baseURLStr = url.string().left(pathStart);
&gt; +    WebCore::URLParser parser(baseURLStr);
&gt; +    return parser.result();

Seems to me that this should be a function in URL or URLParser itself, not something in the network capture code. I don’t think the name “base URL” is right for this, since that is a term that means something specific in the context of URLs. It’s more like topLevelOfServerURL; it would be good to use a more precise term in the name here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1262338</commentid>
    <comment_count>5</comment_count>
      <attachid>297496</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-12-22 11:11:58 -0800</bug_when>
    <thetext>Comment on attachment 297496
Patch

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

&gt;&gt; Source/WebKit2/NetworkProcess/capture/NetworkCaptureManager.cpp:427
&gt;&gt; +    return parser.result();
&gt; 
&gt; Seems to me that this should be a function in URL or URLParser itself, not something in the network capture code. I don’t think the name “base URL” is right for this, since that is a term that means something specific in the context of URLs. It’s more like topLevelOfServerURL; it would be good to use a more precise term in the name here.

This should definitely be in URL.h and URL.cpp.  And we shouldn&apos;t need to reprise the substring.  It looks like you just want to include the &apos;/&apos; after the host if there is one.  There will always be one if the scheme is something like http, but an unknown scheme without a &apos;/&apos; like &quot;asdf://noSlash&quot; won&apos;t have one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1262352</commentid>
    <comment_count>6</comment_count>
    <who name="Keith Rollin">krollin</who>
    <bug_when>2016-12-22 12:08:13 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Is there a way we can add regression tests for this? I am concerned about
&gt; fixing bugs and adding code without regression test coverage, even in
&gt; diagnostic code.

I&apos;ll file a bug and consult with others after the break. It&apos;s not clear to me how this could/should be tested.

&gt; Seems to me that this should be a function in URL or URLParser itself, not
&gt; something in the network capture code.

OK, I&apos;ll file another bug for that. Two bugs, I guess: one to add the feature to URL, the other to use it in Network Capture.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1264319</commentid>
    <comment_count>7</comment_count>
    <who name="Keith Rollin">krollin</who>
    <bug_when>2017-01-05 18:26:45 -0800</bug_when>
    <thetext>The bug for adding test coverage is Bug 166427. The bug for extending URL is Bug 166426. The patch in this bug has been rebased to use that new interface.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1264321</commentid>
    <comment_count>8</comment_count>
      <attachid>298164</attachid>
    <who name="Keith Rollin">krollin</who>
    <bug_when>2017-01-05 18:28:13 -0800</bug_when>
    <thetext>Created attachment 298164
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1264322</commentid>
    <comment_count>9</comment_count>
    <who name="Keith Rollin">krollin</who>
    <bug_when>2017-01-05 18:29:19 -0800</bug_when>
    <thetext>I&apos;m taking that last patch down. Forgot to actually, you know, test it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265160</commentid>
    <comment_count>10</comment_count>
      <attachid>298398</attachid>
    <who name="Keith Rollin">krollin</who>
    <bug_when>2017-01-09 15:09:07 -0800</bug_when>
    <thetext>Created attachment 298398
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265190</commentid>
    <comment_count>11</comment_count>
      <attachid>298398</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-01-09 16:05:57 -0800</bug_when>
    <thetext>Comment on attachment 298398
Patch

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

&gt; Source/WebKit2/NetworkProcess/capture/NetworkCaptureManager.cpp:423
&gt; +    return WebCore::URLParser(url.protocolHostAndPort()).result();

Can we call the URL constructor instead of creating a URLParser (which should only be created by the URL constructor)?

&gt; Source/WebKit2/NetworkProcess/capture/NetworkCaptureResource.h:66
&gt;      std::optional&lt;WebCore::URL&gt; m_url;
&gt; -    std::optional&lt;WebCore::URL&gt; m_baseURL;
&gt; +    std::optional&lt;WebCore::URL&gt; m_urlIdentifyingCommonDomain;

optional&lt;URL&gt; is kind of strange.  A URL is already optional.  isValid() says if it contains a valid URL, and if it doesn&apos;t then it is like nullopt with a String we should only be using for things like the anchor tag.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265221</commentid>
    <comment_count>12</comment_count>
    <who name="Keith Rollin">krollin</who>
    <bug_when>2017-01-09 17:10:35 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; Comment on attachment 298398 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=298398&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/NetworkProcess/capture/NetworkCaptureManager.cpp:423
&gt; &gt; +    return WebCore::URLParser(url.protocolHostAndPort()).result();
&gt; 
&gt; Can we call the URL constructor instead of creating a URLParser (which
&gt; should only be created by the URL constructor)?

OK.

&gt; &gt; Source/WebKit2/NetworkProcess/capture/NetworkCaptureResource.h:66
&gt; &gt;      std::optional&lt;WebCore::URL&gt; m_url;
&gt; &gt; -    std::optional&lt;WebCore::URL&gt; m_baseURL;
&gt; &gt; +    std::optional&lt;WebCore::URL&gt; m_urlIdentifyingCommonDomain;
&gt; 
&gt; optional&lt;URL&gt; is kind of strange.  A URL is already optional.  isValid()
&gt; says if it contains a valid URL, and if it doesn&apos;t then it is like nullopt
&gt; with a String we should only be using for things like the anchor tag.

Antti suggested using Optional in https://bugs.webkit.org/show_bug.cgi?id=164527#c9:

&gt;&gt; Source/WebKit2/NetworkProcess/capture/NetworkCaptureCachedResource.h:87
&gt;&gt; +    // Lazily calculated.
&gt;&gt; +    WebCore::URL m_url;
&gt;&gt; +    WebCore::URL m_baseURL;
&gt;&gt; +    WebCore::URLParser::URLEncodedForm m_queryParameters;
&gt;&gt; +
&gt;&gt; +    bool m_haveURL { false };
&gt;&gt; +    bool m_haveBaseURL { false };
&gt;&gt; +    bool m_haveQueryParameters { false };
&gt; 
&gt; Often this sort of bool+field pairs end up reading better with Optional:
&gt; 
&gt; Optional&lt;WebCore::URL&gt; m_url;

I&apos;m OK with changing it, though. Your way makes sense.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265490</commentid>
    <comment_count>13</comment_count>
    <who name="Keith Rollin">krollin</who>
    <bug_when>2017-01-10 12:32:26 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #11)
&gt; &gt; Comment on attachment 298398 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=298398&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit2/NetworkProcess/capture/NetworkCaptureManager.cpp:423
&gt; &gt; &gt; +    return WebCore::URLParser(url.protocolHostAndPort()).result();
&gt; &gt; 
&gt; &gt; Can we call the URL constructor instead of creating a URLParser (which
&gt; &gt; should only be created by the URL constructor)?
&gt; 
&gt; OK.

Actually, if we parse via the URL c&apos;tor, I think we&apos;ll run afoul of that ASSERT in it. I&apos;ll be passing in a string that doesn&apos;t contain a trailing slash, but the parsed-then-stringified output will have that slash, and the ASSERT will trigger.

I think I&apos;ll just skip using URL&apos;s in this context and use strings. I was using a URL here for consistency between url() and baseURL(). But since that consistency comes at the expense of a lot of unnecessary parsing, it might be best to forego it. I&apos;ll just use a String here (and use isNull instead of wrapping in an std::optional).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265517</commentid>
    <comment_count>14</comment_count>
      <attachid>298507</attachid>
    <who name="Keith Rollin">krollin</who>
    <bug_when>2017-01-10 13:24:41 -0800</bug_when>
    <thetext>Created attachment 298507
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265541</commentid>
    <comment_count>15</comment_count>
      <attachid>298507</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-10 14:32:08 -0800</bug_when>
    <thetext>Comment on attachment 298507
Patch

Clearing flags on attachment: 298507

Committed r210561: &lt;http://trac.webkit.org/changeset/210561&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265542</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-10 14:32:13 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>297496</attachid>
            <date>2016-12-19 18:23:03 -0800</date>
            <delta_ts>2017-01-05 18:28:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-166041-20161219182203.patch</filename>
            <type>text/plain</type>
            <size>5728</size>
            <attacher name="Keith Rollin">krollin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEwMDA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMDgzMTc2NjM0NzM4OWRl
YzdkZGIxOWMyNGEzNmYxYzk2YzU0NDc3ZC4uNTk4OTBkNTRkMTM4YWI4ZTJkMTFlODFkMzAyNDQ3
OGRlOThlOGIyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI5IEBACiAyMDE2LTEyLTE5ICBLZWl0
aCBSb2xsaW4gIDxrcm9sbGluQGFwcGxlLmNvbT4KIAorICAgICAgICBSZWNvcmQvcmVwbGF5OiBm
aXggcmFuZ2UgdXNlZCBmb3IgZnV6enkgbWF0Y2hpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NjA0MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEJlY2F1c2Ugb2YgdHdvIGJ1Z3MsIHRoZSBhdHRlbXB0
IHRvIGRldGVybWluZSB0aGUgcmFuZ2Ugb2YgVVJMcyB0bworICAgICAgICBjaGVjayBhcyBwYXJ0
IG9mIHRoZSBwcm9jZXNzIG9mIGZ1enp5IG1hdGNoaW5nIHdhcyBmYWlsaW5nLiBUaGUgaW50ZW50
CisgICAgICAgIHdhcyB0byBmaW5kIHRoZSByYW5nZSBvZiBVUkxzIHRoYXQgc3RhcnRlZCB3aXRo
IHRoZSBzYW1lCisgICAgICAgIDxzY2hlbWU6Ly9ob3N0OnBvcnQ+IGFzIGEgZ2l2ZW4gVVJMLiBI
b3dldmVyLCBiZWNhdXNlIG9mIGEgcmV2ZXJzZWQKKyAgICAgICAgdGVzdCwgdGhlIHVwcGVyIGVu
ZCBvZiB0aGUgcmFuZ2UgZW5kZWQgdXAgYmVpbmcgdGhlICJlbmQoKSIgaXRlcmF0b3IKKyAgICAg
ICAgb2YgdGhlIGVudGlyZSBjb2xsZWN0aW9uIG9mIFVSTHMuIFdpdGggdGhhdCBmaXhlZCwgdGhl
cmUgd2FzIGFub3RoZXIKKyAgICAgICAgYnVnIGR1ZSB0byBvbmUgVVJMIGJlaW5nIGdpdmVuIGFz
IDxzY2hlbWU6Ly9ob3N0OnBvcnQ+IGFuZCB0aGUgb3RoZXIKKyAgICAgICAgZ2l2ZW4gYXMgPHNj
aGVtZTovL2hvc3Q6cG9ydC8+IChub3RlIHRoZSB0cmFpbGluZyBzbGFzaCkuIEJvdGggb2YKKyAg
ICAgICAgdGhlc2UgaXNzdWVzIGFyZSBub3cgZml4ZWQuCisKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDYXB0dXJlOjpNYW5hZ2VyOjpmaW5kQmVzdEZ1enp5TWF0Y2gpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrQ2FwdHVyZTo6TWFuYWdlcjo6YmFzZVVSTCk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZU1hbmFnZXIuaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlUmVzb3VyY2UuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrQ2FwdHVyZTo6UmVzb3VyY2U6OmJhc2VVUkwpOgorCisyMDE2LTEy
LTE5ICBLZWl0aCBSb2xsaW4gIDxrcm9sbGluQGFwcGxlLmNvbT4KKwogICAgICAgICBGaXggdW53
YW50ZWQgZGVsZXRpb24gb2YgcmVjb3JkL3JlcGxheSBmaWxlcwogICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2MDQwCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVNYW5hZ2VyLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVN
YW5hZ2VyLmNwcAppbmRleCAzZGFkYzkzNmQyMjA4YWY3YTM1NjlmMzJkYTEwYzQzM2U5N2NmNDI2
Li5kMzBmYmRlMjhjZjI0ZjM3MDIwYzJkMjkxNDczODZjNjc5YWE3NGIxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlTWFuYWdl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3Jr
Q2FwdHVyZU1hbmFnZXIuY3BwCkBAIC0xMzQsMTcgKzEzNCwxNyBAQCBSZXNvdXJjZSogTWFuYWdl
cjo6ZmluZEV4YWN0TWF0Y2goY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
KQogUmVzb3VyY2UqIE1hbmFnZXI6OmZpbmRCZXN0RnV6enlNYXRjaChjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7CiAgICAgY29uc3QgYXV0byYgdXJsID0gcmVxdWVz
dC51cmwoKTsKLSAgICBSZXNvdXJjZSogYmVzdE1hdGNoID0gbnVsbHB0cjsKLSAgICBpbnQgYmVz
dFNjb3JlID0ga01pbk1hdGNoOwotICAgIGNvbnN0IGF1dG8mIGJhc2VVUkwgPSB1cmwuc3RyaW5n
KCkubGVmdCh1cmwucGF0aFN0YXJ0KCkpOworICAgIGNvbnN0IGF1dG8mIGJhc2VVUkwgPSBNYW5h
Z2VyOjpiYXNlVVJMKHVybCk7CiAKLSAgICBjb25zdCBhdXRvJiBsb3dlciA9IHN0ZDo6bG93ZXJf
Ym91bmQoc3RkOjpiZWdpbihtX2NhY2hlZFJlc291cmNlcyksIHN0ZDo6ZW5kKG1fY2FjaGVkUmVz
b3VyY2VzKSwgYmFzZVVSTCwgW10oYXV0byYgcmVzb3VyY2UsIGNvbnN0IGF1dG8mIHVybCkgewot
ICAgICAgICByZXR1cm4gV1RGOjpjb2RlUG9pbnRDb21wYXJlTGVzc1RoYW4ocmVzb3VyY2UuYmFz
ZVVSTCgpLnN0cmluZygpLCB1cmwpOworICAgIGNvbnN0IGF1dG8mIGxvd2VyID0gc3RkOjpsb3dl
cl9ib3VuZChzdGQ6OmJlZ2luKG1fY2FjaGVkUmVzb3VyY2VzKSwgc3RkOjplbmQobV9jYWNoZWRS
ZXNvdXJjZXMpLCBiYXNlVVJMLCBbXShhdXRvJiByZXNvdXJjZSwgY29uc3QgYXV0byYgYmFzZVVS
TCkgeworICAgICAgICByZXR1cm4gV1RGOjpjb2RlUG9pbnRDb21wYXJlTGVzc1RoYW4ocmVzb3Vy
Y2UuYmFzZVVSTCgpLnN0cmluZygpLCBiYXNlVVJMLnN0cmluZygpKTsKICAgICB9KTsKLSAgICBj
b25zdCBhdXRvJiB1cHBlciA9IHN0ZDo6dXBwZXJfYm91bmQobG93ZXIsIHN0ZDo6ZW5kKG1fY2Fj
aGVkUmVzb3VyY2VzKSwgYmFzZVVSTCwgW10oY29uc3QgYXV0byYgdXJsLCBhdXRvJiByZXNvdXJj
ZSkgewotICAgICAgICByZXR1cm4gV1RGOjpjb2RlUG9pbnRDb21wYXJlTGVzc1RoYW4ocmVzb3Vy
Y2UuYmFzZVVSTCgpLnN0cmluZygpLCB1cmwpOworICAgIGNvbnN0IGF1dG8mIHVwcGVyID0gc3Rk
Ojp1cHBlcl9ib3VuZChsb3dlciwgc3RkOjplbmQobV9jYWNoZWRSZXNvdXJjZXMpLCBiYXNlVVJM
LCBbXShjb25zdCBhdXRvJiBiYXNlVVJMLCBhdXRvJiByZXNvdXJjZSkgeworICAgICAgICByZXR1
cm4gV1RGOjpjb2RlUG9pbnRDb21wYXJlTGVzc1RoYW4oYmFzZVVSTC5zdHJpbmcoKSwgcmVzb3Vy
Y2UuYmFzZVVSTCgpLnN0cmluZygpKTsKICAgICB9KTsKIAorICAgIFJlc291cmNlKiBiZXN0TWF0
Y2ggPSBudWxscHRyOworICAgIGludCBiZXN0U2NvcmUgPSBrTWluTWF0Y2g7CiAgICAgY29uc3Qg
YXV0byYgcmVxdWVzdFBhcmFtZXRlcnMgPSBXZWJDb3JlOjpVUkxQYXJzZXI6OnBhcnNlVVJMRW5j
b2RlZEZvcm0odXJsLnF1ZXJ5KCkpOwogICAgIGZvciAoYXV0byBpUmVzb3VyY2UgPSBsb3dlcjsg
aVJlc291cmNlICE9IHVwcGVyOyArK2lSZXNvdXJjZSkgewogICAgICAgICBpbnQgdGhpc1Njb3Jl
ID0gZnV6enlNYXRjaFVSTHModXJsLCByZXF1ZXN0UGFyYW1ldGVycywgaVJlc291cmNlLT51cmwo
KSwgaVJlc291cmNlLT5xdWVyeVBhcmFtZXRlcnMoKSk7CkBAIC00MTksNiArNDE5LDE0IEBAIFN0
cmluZyBNYW5hZ2VyOjpoYXNoVG9QYXRoKGNvbnN0IFN0cmluZyYgaGFzaCkKICAgICByZXR1cm4g
cGF0aDsKIH0KIAorV2ViQ29yZTo6VVJMIE1hbmFnZXI6OmJhc2VVUkwoY29uc3QgV2ViQ29yZTo6
VVJMJiB1cmwpCit7CisgICAgYXV0byBwYXRoU3RhcnQgPSB1cmwucGF0aFN0YXJ0KCk7CisgICAg
YXV0byBiYXNlVVJMU3RyID0gdXJsLnN0cmluZygpLmxlZnQocGF0aFN0YXJ0KTsKKyAgICBXZWJD
b3JlOjpVUkxQYXJzZXIgcGFyc2VyKGJhc2VVUkxTdHIpOworICAgIHJldHVybiBwYXJzZXIucmVz
dWx0KCk7Cit9CisKIHZvaWQgTWFuYWdlcjo6bG9nUmVjb3JkZWRSZXNvdXJjZShjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7CiAgICAgLy8gTG9nIG5ldHdvcmsgcmVz
b3VyY2VzIGFzIHRoZXkgYXJlIGNhY2hlZCB0byBkaXNrLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZU1hbmFnZXIuaCBiL1Nv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVNYW5hZ2Vy
LmgKaW5kZXggNDUwYzA2YWM2MDM3YWIyMmQ1ZGFkZTMxZTljODRiMzI3YTMyOGNmZi4uMjcxNTFm
NzRmMGYwZWVmMTNmODRiOThlYjJiNmJjNWYzOGI1ZDJlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZU1hbmFnZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlTWFu
YWdlci5oCkBAIC04Myw2ICs4Myw3IEBAIHB1YmxpYzoKICAgICBXZWJDb3JlOjpGaWxlSGFuZGxl
IG9wZW5DYWNoZUZpbGUoY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6RmlsZU9wZW5Nb2RlKTsKIAog
ICAgIFN0cmluZyByZXF1ZXN0VG9QYXRoKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYp
OworICAgIHN0YXRpYyBXZWJDb3JlOjpVUkwgYmFzZVVSTChjb25zdCBXZWJDb3JlOjpVUkwmKTsK
IAogcHJpdmF0ZToKICAgICBNYW5hZ2VyKCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZVJlc291cmNlLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVS
ZXNvdXJjZS5jcHAKaW5kZXggMjNlYjY5YWU3NTAyNThjMTFiNTM2YzQwNzI1YzkzY2VjNzFlNDY5
Yi4uZWU5MjZiOGZkYzU2ZmI2OGQyNTMxMzdkYWQyY2Y0ZGUwYTA5MzNjYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZVJlc291
cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdv
cmtDYXB0dXJlUmVzb3VyY2UuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJOZXR3
b3JrQ2FwdHVyZUV2ZW50LmgiCiAjaW5jbHVkZSAiTmV0d29ya0NhcHR1cmVMb2dnaW5nLmgiCisj
aW5jbHVkZSAiTmV0d29ya0NhcHR1cmVNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiTmV0d29ya0NhcHR1
cmVSZWNvcmRlci5oIgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTYyLDEwICs2Myw3IEBAIGNv
bnN0IFdlYkNvcmU6OlVSTCYgUmVzb3VyY2U6OnVybCgpCiBjb25zdCBXZWJDb3JlOjpVUkwmIFJl
c291cmNlOjpiYXNlVVJMKCkKIHsKICAgICBpZiAoIW1fYmFzZVVSTCkgewotICAgICAgICBhdXRv
IHBhdGhTdGFydCA9IHVybCgpLnBhdGhTdGFydCgpOwotICAgICAgICBhdXRvIGJhc2VVUkxTdHIg
PSB1cmwoKS5zdHJpbmcoKS5sZWZ0KHBhdGhTdGFydCk7Ci0gICAgICAgIFdlYkNvcmU6OlVSTFBh
cnNlciBwYXJzZXIoYmFzZVVSTFN0cik7Ci0gICAgICAgIG1fYmFzZVVSTCA9IHBhcnNlci5yZXN1
bHQoKTsKKyAgICAgICAgbV9iYXNlVVJMID0gTWFuYWdlcjo6YmFzZVVSTCh1cmwoKSk7CiAgICAg
fQogCiAgICAgcmV0dXJuICptX2Jhc2VVUkw7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>298164</attachid>
            <date>2017-01-05 18:28:13 -0800</date>
            <delta_ts>2017-01-05 18:28:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-166041-20170105182644.patch</filename>
            <type>text/plain</type>
            <size>7216</size>
            <attacher name="Keith Rollin">krollin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEwMzk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggM2M5MGFhNzIyN2ExMTA1
ODUyZjlkNzQ1MzY2NTEyYzcyOTkwM2ZkMi4uNGVjZDg1OGRjNjdlYjRkYTQ5ZDg1M2FhMDk2MWJj
MDgwN2NjMTg4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE3LTAxLTA1ICBLZWl0
aCBSb2xsaW4gIDxrcm9sbGluQGFwcGxlLmNvbT4KKworICAgICAgICBSZWNvcmQvcmVwbGF5OiBm
aXggcmFuZ2UgdXNlZCBmb3IgZnV6enkgbWF0Y2hpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NjA0MQorCisgICAgICAgIFJldmlld2VkIGJ5IERh
cmluIEFkbGVyLgorCisgICAgICAgIEJlY2F1c2Ugb2YgdHdvIGJ1Z3MsIHRoZSBhdHRlbXB0IHRv
IGRldGVybWluZSB0aGUgcmFuZ2Ugb2YgVVJMcyB0bworICAgICAgICBjaGVjayBhcyBwYXJ0IG9m
IHRoZSBwcm9jZXNzIG9mIGZ1enp5IG1hdGNoaW5nIHdhcyBmYWlsaW5nLiBUaGUgaW50ZW50Cisg
ICAgICAgIHdhcyB0byBmaW5kIHRoZSByYW5nZSBvZiBVUkxzIHRoYXQgc3RhcnRlZCB3aXRoIHRo
ZSBzYW1lCisgICAgICAgIDxzY2hlbWU6Ly9ob3N0OnBvcnQ+IGFzIGEgZ2l2ZW4gVVJMLiBIb3dl
dmVyLCBiZWNhdXNlIG9mIGEgcmV2ZXJzZWQKKyAgICAgICAgdGVzdCwgdGhlIHVwcGVyIGVuZCBv
ZiB0aGUgcmFuZ2UgZW5kZWQgdXAgYmVpbmcgdGhlICJlbmQoKSIgaXRlcmF0b3IKKyAgICAgICAg
b2YgdGhlIGVudGlyZSBjb2xsZWN0aW9uIG9mIFVSTHMuIFdpdGggdGhhdCBmaXhlZCwgdGhlcmUg
d2FzIGFub3RoZXIKKyAgICAgICAgYnVnIGR1ZSB0byBvbmUgVVJMIGJlaW5nIGdpdmVuIGFzIDxz
Y2hlbWU6Ly9ob3N0OnBvcnQ+IGFuZCB0aGUgb3RoZXIKKyAgICAgICAgZ2l2ZW4gYXMgPHNjaGVt
ZTovL2hvc3Q6cG9ydC8+IChub3RlIHRoZSB0cmFpbGluZyBzbGFzaCkuIEJvdGggb2YKKyAgICAg
ICAgdGhlc2UgaXNzdWVzIGFyZSBub3cgZml4ZWQuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtDYXB0dXJlOjpNYW5hZ2VyOjpmaW5kQmVzdEZ1enp5TWF0Y2gpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrQ2FwdHVyZTo6TWFuYWdlcjo6dXJsSWRlbnRpZnlpbmdDb21tb25Eb21haW4p
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVNYW5hZ2Vy
Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZVJlc291
cmNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhcHR1cmU6OlJlc291cmNlOjp1cmxJ
ZGVudGlmeWluZ0NvbW1vbkRvbWFpbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYXB0dXJl
OjpSZXNvdXJjZTo6YmFzZVVSTCk6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Y2FwdHVyZS9OZXR3b3JrQ2FwdHVyZVJlc291cmNlLmg6CisKIDIwMTctMDEtMDUgIENhcmxvcyBH
YXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtTT1VQXSBOZXR3
b3JrIHByb2Nlc3MgY3Jhc2ggaW4gV2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJJbXBsOjpk
aWRGYWlsV2l0aEVycm9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlTWFuYWdlci5jcHAKaW5kZXggM2RhZGM5
MzZkMjIwOGFmN2EzNTY5ZjMyZGExMGM0MzNlOTdjZjQyNi4uNjQ3Zjk5YmQ3MjllZWU3MWE4NWJl
ODAxNTBmODAxNTQ4Y2U2ZTJlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVNYW5hZ2VyLmNwcApAQCAt
MTM0LDE3ICsxMzQsMTcgQEAgUmVzb3VyY2UqIE1hbmFnZXI6OmZpbmRFeGFjdE1hdGNoKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIFJlc291cmNlKiBNYW5hZ2VyOjpm
aW5kQmVzdEZ1enp5TWF0Y2goY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
KQogewogICAgIGNvbnN0IGF1dG8mIHVybCA9IHJlcXVlc3QudXJsKCk7Ci0gICAgUmVzb3VyY2Uq
IGJlc3RNYXRjaCA9IG51bGxwdHI7Ci0gICAgaW50IGJlc3RTY29yZSA9IGtNaW5NYXRjaDsKLSAg
ICBjb25zdCBhdXRvJiBiYXNlVVJMID0gdXJsLnN0cmluZygpLmxlZnQodXJsLnBhdGhTdGFydCgp
KTsKKyAgICBjb25zdCBhdXRvJiB1cmxJZGVudGlmeWluZ0NvbW1vbkRvbWFpbiA9IE1hbmFnZXI6
OnVybElkZW50aWZ5aW5nQ29tbW9uRG9tYWluKHVybCk7CiAKLSAgICBjb25zdCBhdXRvJiBsb3dl
ciA9IHN0ZDo6bG93ZXJfYm91bmQoc3RkOjpiZWdpbihtX2NhY2hlZFJlc291cmNlcyksIHN0ZDo6
ZW5kKG1fY2FjaGVkUmVzb3VyY2VzKSwgYmFzZVVSTCwgW10oYXV0byYgcmVzb3VyY2UsIGNvbnN0
IGF1dG8mIHVybCkgewotICAgICAgICByZXR1cm4gV1RGOjpjb2RlUG9pbnRDb21wYXJlTGVzc1Ro
YW4ocmVzb3VyY2UuYmFzZVVSTCgpLnN0cmluZygpLCB1cmwpOworICAgIGNvbnN0IGF1dG8mIGxv
d2VyID0gc3RkOjpsb3dlcl9ib3VuZChzdGQ6OmJlZ2luKG1fY2FjaGVkUmVzb3VyY2VzKSwgc3Rk
OjplbmQobV9jYWNoZWRSZXNvdXJjZXMpLCB1cmxJZGVudGlmeWluZ0NvbW1vbkRvbWFpbiwgW10o
YXV0byYgcmVzb3VyY2UsIGNvbnN0IGF1dG8mIHVybElkZW50aWZ5aW5nQ29tbW9uRG9tYWluKSB7
CisgICAgICAgIHJldHVybiBXVEY6OmNvZGVQb2ludENvbXBhcmVMZXNzVGhhbihyZXNvdXJjZS51
cmxJZGVudGlmeWluZ0NvbW1vbkRvbWFpbigpLnN0cmluZygpLCB1cmxJZGVudGlmeWluZ0NvbW1v
bkRvbWFpbi5zdHJpbmcoKSk7CiAgICAgfSk7Ci0gICAgY29uc3QgYXV0byYgdXBwZXIgPSBzdGQ6
OnVwcGVyX2JvdW5kKGxvd2VyLCBzdGQ6OmVuZChtX2NhY2hlZFJlc291cmNlcyksIGJhc2VVUkws
IFtdKGNvbnN0IGF1dG8mIHVybCwgYXV0byYgcmVzb3VyY2UpIHsKLSAgICAgICAgcmV0dXJuIFdU
Rjo6Y29kZVBvaW50Q29tcGFyZUxlc3NUaGFuKHJlc291cmNlLmJhc2VVUkwoKS5zdHJpbmcoKSwg
dXJsKTsKKyAgICBjb25zdCBhdXRvJiB1cHBlciA9IHN0ZDo6dXBwZXJfYm91bmQobG93ZXIsIHN0
ZDo6ZW5kKG1fY2FjaGVkUmVzb3VyY2VzKSwgdXJsSWRlbnRpZnlpbmdDb21tb25Eb21haW4sIFtd
KGNvbnN0IGF1dG8mIHVybElkZW50aWZ5aW5nQ29tbW9uRG9tYWluLCBhdXRvJiByZXNvdXJjZSkg
eworICAgICAgICByZXR1cm4gV1RGOjpjb2RlUG9pbnRDb21wYXJlTGVzc1RoYW4odXJsSWRlbnRp
ZnlpbmdDb21tb25Eb21haW4uc3RyaW5nKCksIHJlc291cmNlLnVybElkZW50aWZ5aW5nQ29tbW9u
RG9tYWluKCkuc3RyaW5nKCkpOwogICAgIH0pOwogCisgICAgUmVzb3VyY2UqIGJlc3RNYXRjaCA9
IG51bGxwdHI7CisgICAgaW50IGJlc3RTY29yZSA9IGtNaW5NYXRjaDsKICAgICBjb25zdCBhdXRv
JiByZXF1ZXN0UGFyYW1ldGVycyA9IFdlYkNvcmU6OlVSTFBhcnNlcjo6cGFyc2VVUkxFbmNvZGVk
Rm9ybSh1cmwucXVlcnkoKSk7CiAgICAgZm9yIChhdXRvIGlSZXNvdXJjZSA9IGxvd2VyOyBpUmVz
b3VyY2UgIT0gdXBwZXI7ICsraVJlc291cmNlKSB7CiAgICAgICAgIGludCB0aGlzU2NvcmUgPSBm
dXp6eU1hdGNoVVJMcyh1cmwsIHJlcXVlc3RQYXJhbWV0ZXJzLCBpUmVzb3VyY2UtPnVybCgpLCBp
UmVzb3VyY2UtPnF1ZXJ5UGFyYW1ldGVycygpKTsKQEAgLTQxOSw2ICs0MTksMTEgQEAgU3RyaW5n
IE1hbmFnZXI6Omhhc2hUb1BhdGgoY29uc3QgU3RyaW5nJiBoYXNoKQogICAgIHJldHVybiBwYXRo
OwogfQogCitXZWJDb3JlOjpVUkwgTWFuYWdlcjo6dXJsSWRlbnRpZnlpbmdDb21tb25Eb21haW4o
Y29uc3QgV2ViQ29yZTo6VVJMJiB1cmwpCit7CisgICAgcmV0dXJuIFdlYkNvcmU6OlVSTFBhcnNl
cih1cmwucHJvdG9jb2xIb3N0QW5kUG9ydCgpKS5yZXN1bHQoKTsKK30KKwogdm9pZCBNYW5hZ2Vy
Ojpsb2dSZWNvcmRlZFJlc291cmNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCkKIHsKICAgICAvLyBMb2cgbmV0d29yayByZXNvdXJjZXMgYXMgdGhleSBhcmUgY2FjaGVk
IHRvIGRpc2suCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYXB0
dXJlL05ldHdvcmtDYXB0dXJlTWFuYWdlci5oIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZU1hbmFnZXIuaAppbmRleCA0NTBjMDZhYzYwMzdhYjIy
ZDVkYWRlMzFlOWM4NGIzMjdhMzI4Y2ZmLi44MTZlYzFiODg3NzE4M2Q1NjlhNDViM2IyMjViNTM0
OTgwMDE4NzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYXB0
dXJlL05ldHdvcmtDYXB0dXJlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVNYW5hZ2VyLmgKQEAgLTgzLDYgKzgzLDcgQEAg
cHVibGljOgogICAgIFdlYkNvcmU6OkZpbGVIYW5kbGUgb3BlbkNhY2hlRmlsZShjb25zdCBTdHJp
bmcmLCBXZWJDb3JlOjpGaWxlT3Blbk1vZGUpOwogCiAgICAgU3RyaW5nIHJlcXVlc3RUb1BhdGgo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgc3RhdGljIFdlYkNvcmU6OlVS
TCB1cmxJZGVudGlmeWluZ0NvbW1vbkRvbWFpbihjb25zdCBXZWJDb3JlOjpVUkwmKTsKIAogcHJp
dmF0ZToKICAgICBNYW5hZ2VyKCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZVJlc291cmNlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVSZXNvdXJj
ZS5jcHAKaW5kZXggMjNlYjY5YWU3NTAyNThjMTFiNTM2YzQwNzI1YzkzY2VjNzFlNDY5Yi4uZjU5
NDJjYjMwZTdjZTE1YzM1YzQzNjM1OWZjYzg2YzUzMjE0YTI2OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZVJlc291cmNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0
dXJlUmVzb3VyY2UuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJOZXR3b3JrQ2Fw
dHVyZUV2ZW50LmgiCiAjaW5jbHVkZSAiTmV0d29ya0NhcHR1cmVMb2dnaW5nLmgiCisjaW5jbHVk
ZSAiTmV0d29ya0NhcHR1cmVNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiTmV0d29ya0NhcHR1cmVSZWNv
cmRlci5oIgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU5LDE2ICs2MCwxMyBAQCBjb25zdCBX
ZWJDb3JlOjpVUkwmIFJlc291cmNlOjp1cmwoKQogICAgIHJldHVybiAqbV91cmw7CiB9CiAKLWNv
bnN0IFdlYkNvcmU6OlVSTCYgUmVzb3VyY2U6OmJhc2VVUkwoKQorY29uc3QgV2ViQ29yZTo6VVJM
JiBSZXNvdXJjZTo6dXJsSWRlbnRpZnlpbmdDb21tb25Eb21haW4oKQogewotICAgIGlmICghbV9i
YXNlVVJMKSB7Ci0gICAgICAgIGF1dG8gcGF0aFN0YXJ0ID0gdXJsKCkucGF0aFN0YXJ0KCk7Ci0g
ICAgICAgIGF1dG8gYmFzZVVSTFN0ciA9IHVybCgpLnN0cmluZygpLmxlZnQocGF0aFN0YXJ0KTsK
LSAgICAgICAgV2ViQ29yZTo6VVJMUGFyc2VyIHBhcnNlcihiYXNlVVJMU3RyKTsKLSAgICAgICAg
bV9iYXNlVVJMID0gcGFyc2VyLnJlc3VsdCgpOworICAgIGlmICghbV91cmxJZGVudGlmeWluZ0Nv
bW1vbkRvbWFpbikgeworICAgICAgICBtX3VybElkZW50aWZ5aW5nQ29tbW9uRG9tYWluID0gTWFu
YWdlcjo6dXJsSWRlbnRpZnlpbmdDb21tb25Eb21haW4odXJsKCkpOwogICAgIH0KIAotICAgIHJl
dHVybiAqbV9iYXNlVVJMOworICAgIHJldHVybiAqbV91cmxJZGVudGlmeWluZ0NvbW1vbkRvbWFp
bjsKIH0KIAogV2ViQ29yZTo6VVJMUGFyc2VyOjpVUkxFbmNvZGVkRm9ybSBSZXNvdXJjZTo6cXVl
cnlQYXJhbWV0ZXJzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L2NhcHR1cmUvTmV0d29ya0NhcHR1cmVSZXNvdXJjZS5oIGIvU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZVJlc291cmNlLmgKaW5kZXggOTljZDYyMGU1
YjVmZWRmYWNkMThhNTNiNmY4YzM2Y2I0OWQ2ZTE5ZC4uOGQ4NmIyNDc1ZGY5ZTE2OWU5OTZhN2Qx
ZTZlNTdlNzQ3NGQ2Mzg5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZVJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZVJlc291cmNlLmgKQEAgLTU2LDE0
ICs1NiwxNCBAQCBwdWJsaWM6CiAgICAgUmVzb3VyY2UoY29uc3QgU3RyaW5nJiBldmVudEZpbGVQ
YXRoKTsKIAogICAgIGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsKCk7Ci0gICAgY29uc3QgV2ViQ29y
ZTo6VVJMJiBiYXNlVVJMKCk7CisgICAgY29uc3QgV2ViQ29yZTo6VVJMJiB1cmxJZGVudGlmeWlu
Z0NvbW1vbkRvbWFpbigpOwogICAgIFdlYkNvcmU6OlVSTFBhcnNlcjo6VVJMRW5jb2RlZEZvcm0g
cXVlcnlQYXJhbWV0ZXJzKCk7CiAgICAgRXZlbnRTdHJlYW0gZXZlbnRTdHJlYW0oKTsKIAogcHJp
dmF0ZToKICAgICBTdHJpbmcgbV9ldmVudEZpbGVQYXRoOwogICAgIHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6VVJMPiBtX3VybDsKLSAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlVSTD4gbV9iYXNl
VVJMOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6VVJMPiBtX3VybElkZW50aWZ5aW5nQ29t
bW9uRG9tYWluOwogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6VVJMUGFyc2VyOjpVUkxFbmNv
ZGVkRm9ybT4gbV9xdWVyeVBhcmFtZXRlcnM7CiB9OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>298398</attachid>
            <date>2017-01-09 15:09:07 -0800</date>
            <delta_ts>2017-01-10 13:24:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-166041-20170109150731.patch</filename>
            <type>text/plain</type>
            <size>8874</size>
            <attacher name="Keith Rollin">krollin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEwMzk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggM2M5MGFhNzIyN2ExMTA1
ODUyZjlkNzQ1MzY2NTEyYzcyOTkwM2ZkMi4uNGVjZDg1OGRjNjdlYjRkYTQ5ZDg1M2FhMDk2MWJj
MDgwN2NjMTg4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE3LTAxLTA1ICBLZWl0
aCBSb2xsaW4gIDxrcm9sbGluQGFwcGxlLmNvbT4KKworICAgICAgICBSZWNvcmQvcmVwbGF5OiBm
aXggcmFuZ2UgdXNlZCBmb3IgZnV6enkgbWF0Y2hpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NjA0MQorCisgICAgICAgIFJldmlld2VkIGJ5IERh
cmluIEFkbGVyLgorCisgICAgICAgIEJlY2F1c2Ugb2YgdHdvIGJ1Z3MsIHRoZSBhdHRlbXB0IHRv
IGRldGVybWluZSB0aGUgcmFuZ2Ugb2YgVVJMcyB0bworICAgICAgICBjaGVjayBhcyBwYXJ0IG9m
IHRoZSBwcm9jZXNzIG9mIGZ1enp5IG1hdGNoaW5nIHdhcyBmYWlsaW5nLiBUaGUgaW50ZW50Cisg
ICAgICAgIHdhcyB0byBmaW5kIHRoZSByYW5nZSBvZiBVUkxzIHRoYXQgc3RhcnRlZCB3aXRoIHRo
ZSBzYW1lCisgICAgICAgIDxzY2hlbWU6Ly9ob3N0OnBvcnQ+IGFzIGEgZ2l2ZW4gVVJMLiBIb3dl
dmVyLCBiZWNhdXNlIG9mIGEgcmV2ZXJzZWQKKyAgICAgICAgdGVzdCwgdGhlIHVwcGVyIGVuZCBv
ZiB0aGUgcmFuZ2UgZW5kZWQgdXAgYmVpbmcgdGhlICJlbmQoKSIgaXRlcmF0b3IKKyAgICAgICAg
b2YgdGhlIGVudGlyZSBjb2xsZWN0aW9uIG9mIFVSTHMuIFdpdGggdGhhdCBmaXhlZCwgdGhlcmUg
d2FzIGFub3RoZXIKKyAgICAgICAgYnVnIGR1ZSB0byBvbmUgVVJMIGJlaW5nIGdpdmVuIGFzIDxz
Y2hlbWU6Ly9ob3N0OnBvcnQ+IGFuZCB0aGUgb3RoZXIKKyAgICAgICAgZ2l2ZW4gYXMgPHNjaGVt
ZTovL2hvc3Q6cG9ydC8+IChub3RlIHRoZSB0cmFpbGluZyBzbGFzaCkuIEJvdGggb2YKKyAgICAg
ICAgdGhlc2UgaXNzdWVzIGFyZSBub3cgZml4ZWQuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtDYXB0dXJlOjpNYW5hZ2VyOjpmaW5kQmVzdEZ1enp5TWF0Y2gpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrQ2FwdHVyZTo6TWFuYWdlcjo6dXJsSWRlbnRpZnlpbmdDb21tb25Eb21haW4p
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVNYW5hZ2Vy
Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZVJlc291
cmNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhcHR1cmU6OlJlc291cmNlOjp1cmxJ
ZGVudGlmeWluZ0NvbW1vbkRvbWFpbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYXB0dXJl
OjpSZXNvdXJjZTo6YmFzZVVSTCk6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Y2FwdHVyZS9OZXR3b3JrQ2FwdHVyZVJlc291cmNlLmg6CisKIDIwMTctMDEtMDUgIENhcmxvcyBH
YXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtTT1VQXSBOZXR3
b3JrIHByb2Nlc3MgY3Jhc2ggaW4gV2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJJbXBsOjpk
aWRGYWlsV2l0aEVycm9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlTWFuYWdlci5jcHAKaW5kZXggM2RhZGM5
MzZkMjIwOGFmN2EzNTY5ZjMyZGExMGM0MzNlOTdjZjQyNi4uYjExNTA4YjVlNjMzOTExODg1Nzg3
MGU0YzU2MjA0YzMwNDY5M2U2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVNYW5hZ2VyLmNwcApAQCAt
NjIsMTYgKzYyLDE5IEBAIE1hbmFnZXImIE1hbmFnZXI6OnNpbmdsZXRvbigpCiAKIHZvaWQgTWFu
YWdlcjo6aW5pdGlhbGl6ZShjb25zdCBTdHJpbmcmIHJlY29yZFJlcGxheU1vZGUsIGNvbnN0IFN0
cmluZyYgcmVjb3JkUmVwbGF5Q2FjaGVMb2NhdGlvbikKIHsKLSAgICBERUJVR19MT0coIkluaXRp
YWxpemluZyIpOwotCi0gICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UocmVjb3JkUmVwbGF5
TW9kZSwgInJlY29yZCIpKQorICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKHJlY29yZFJl
cGxheU1vZGUsICJyZWNvcmQiKSkgeworICAgICAgICBERUJVR19MT0coIkluaXRpYWxpemluZzog
cmVjb3JkaW5nIG1vZGUiKTsKICAgICAgICAgbV9yZWNvcmRSZXBsYXlNb2RlID0gUmVjb3JkOwot
ICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UocmVjb3JkUmVwbGF5TW9kZSwgInJl
cGxheSIpKQorICAgIH0gZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShyZWNvcmRSZXBs
YXlNb2RlLCAicmVwbGF5IikpIHsKKyAgICAgICAgREVCVUdfTE9HKCJJbml0aWFsaXppbmc6IHJl
cGxheSBtb2RlIik7CiAgICAgICAgIG1fcmVjb3JkUmVwbGF5TW9kZSA9IFJlcGxheTsKLSAgICBl
bHNlCisgICAgfSBlbHNlIHsKKyAgICAgICAgREVCVUdfTE9HKCJJbml0aWFsaXppbmc6IGRpc2Fi
bGVkIik7CiAgICAgICAgIG1fcmVjb3JkUmVwbGF5TW9kZSA9IERpc2FibGVkOworICAgIH0KIAog
ICAgIG1fcmVjb3JkUmVwbGF5Q2FjaGVMb2NhdGlvbiA9IFdlYkNvcmU6OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChyZWNvcmRSZXBsYXlDYWNoZUxvY2F0aW9uLCBrRGlyTmFtZVJlY29yZFJlcGxh
eSk7CisgICAgREVCVUdfTE9HKCJDYWNoZSBsb2NhdGlvbiA9ICIgU1RSSU5HX1NQRUNJRklFUiwg
REVCVUdfU1RSKG1fcmVjb3JkUmVwbGF5Q2FjaGVMb2NhdGlvbikpOwogCiAgICAgaWYgKGlzUmVj
b3JkaW5nKCkpIHsKICAgICAgICAgbV9yZWNvcmRGaWxlSGFuZGxlID0gV2ViQ29yZTo6RmlsZUhh
bmRsZShyZXBvcnRSZWNvcmRQYXRoKCksIFdlYkNvcmU6Ok9wZW5Gb3JXcml0ZSk7CkBAIC03OSwx
MiArODIsOCBAQCB2b2lkIE1hbmFnZXI6OmluaXRpYWxpemUoY29uc3QgU3RyaW5nJiByZWNvcmRS
ZXBsYXlNb2RlLCBjb25zdCBTdHJpbmcmIHJlY29yZFJlcAogICAgICAgICBtX3JlY29yZEZpbGVI
YW5kbGUgPSBXZWJDb3JlOjpGaWxlSGFuZGxlKHJlcG9ydFJlY29yZFBhdGgoKSwgV2ViQ29yZTo6
T3BlbkZvclJlYWQpOwogICAgICAgICBtX2xvYWRGaWxlSGFuZGxlID0gV2ViQ29yZTo6RmlsZUhh
bmRsZShyZXBvcnRMb2FkUGF0aCgpLCBXZWJDb3JlOjpPcGVuRm9yV3JpdGUpOwogICAgICAgICBt
X3JlcGxheUZpbGVIYW5kbGUgPSBXZWJDb3JlOjpGaWxlSGFuZGxlKHJlcG9ydFJlcGxheVBhdGgo
KSwgV2ViQ29yZTo6T3BlbkZvcldyaXRlKTsKLSAgICB9Ci0KLSAgICBERUJVR19MT0coIkNhY2hl
IGxvY2F0aW9uID0gIiBTVFJJTkdfU1BFQ0lGSUVSLCBERUJVR19TVFIobV9yZWNvcmRSZXBsYXlD
YWNoZUxvY2F0aW9uKSk7Ci0KLSAgICBpZiAoaXNSZXBsYXlpbmcoKSkKICAgICAgICAgbG9hZFJl
c291cmNlcygpOworICAgIH0KIH0KIAogdm9pZCBNYW5hZ2VyOjp0ZXJtaW5hdGUoKQpAQCAtMTM0
LDE3ICsxMzMsMTcgQEAgUmVzb3VyY2UqIE1hbmFnZXI6OmZpbmRFeGFjdE1hdGNoKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIFJlc291cmNlKiBNYW5hZ2VyOjpmaW5k
QmVzdEZ1enp5TWF0Y2goY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQog
ewogICAgIGNvbnN0IGF1dG8mIHVybCA9IHJlcXVlc3QudXJsKCk7Ci0gICAgUmVzb3VyY2UqIGJl
c3RNYXRjaCA9IG51bGxwdHI7Ci0gICAgaW50IGJlc3RTY29yZSA9IGtNaW5NYXRjaDsKLSAgICBj
b25zdCBhdXRvJiBiYXNlVVJMID0gdXJsLnN0cmluZygpLmxlZnQodXJsLnBhdGhTdGFydCgpKTsK
KyAgICBjb25zdCBhdXRvJiB1cmxJZGVudGlmeWluZ0NvbW1vbkRvbWFpbiA9IE1hbmFnZXI6OnVy
bElkZW50aWZ5aW5nQ29tbW9uRG9tYWluKHVybCk7CiAKLSAgICBjb25zdCBhdXRvJiBsb3dlciA9
IHN0ZDo6bG93ZXJfYm91bmQoc3RkOjpiZWdpbihtX2NhY2hlZFJlc291cmNlcyksIHN0ZDo6ZW5k
KG1fY2FjaGVkUmVzb3VyY2VzKSwgYmFzZVVSTCwgW10oYXV0byYgcmVzb3VyY2UsIGNvbnN0IGF1
dG8mIHVybCkgewotICAgICAgICByZXR1cm4gV1RGOjpjb2RlUG9pbnRDb21wYXJlTGVzc1RoYW4o
cmVzb3VyY2UuYmFzZVVSTCgpLnN0cmluZygpLCB1cmwpOworICAgIGNvbnN0IGF1dG8mIGxvd2Vy
ID0gc3RkOjpsb3dlcl9ib3VuZChzdGQ6OmJlZ2luKG1fY2FjaGVkUmVzb3VyY2VzKSwgc3RkOjpl
bmQobV9jYWNoZWRSZXNvdXJjZXMpLCB1cmxJZGVudGlmeWluZ0NvbW1vbkRvbWFpbiwgW3RoaXNd
KGF1dG8mIHJlc291cmNlLCBjb25zdCBhdXRvJiB1cmxJZGVudGlmeWluZ0NvbW1vbkRvbWFpbikg
eworICAgICAgICByZXR1cm4gV1RGOjpjb2RlUG9pbnRDb21wYXJlTGVzc1RoYW4ocmVzb3VyY2Uu
dXJsSWRlbnRpZnlpbmdDb21tb25Eb21haW4oKS5zdHJpbmcoKSwgdXJsSWRlbnRpZnlpbmdDb21t
b25Eb21haW4uc3RyaW5nKCkpOwogICAgIH0pOwotICAgIGNvbnN0IGF1dG8mIHVwcGVyID0gc3Rk
Ojp1cHBlcl9ib3VuZChsb3dlciwgc3RkOjplbmQobV9jYWNoZWRSZXNvdXJjZXMpLCBiYXNlVVJM
LCBbXShjb25zdCBhdXRvJiB1cmwsIGF1dG8mIHJlc291cmNlKSB7Ci0gICAgICAgIHJldHVybiBX
VEY6OmNvZGVQb2ludENvbXBhcmVMZXNzVGhhbihyZXNvdXJjZS5iYXNlVVJMKCkuc3RyaW5nKCks
IHVybCk7CisgICAgY29uc3QgYXV0byYgdXBwZXIgPSBzdGQ6OnVwcGVyX2JvdW5kKGxvd2VyLCBz
dGQ6OmVuZChtX2NhY2hlZFJlc291cmNlcyksIHVybElkZW50aWZ5aW5nQ29tbW9uRG9tYWluLCBb
dGhpc10oY29uc3QgYXV0byYgdXJsSWRlbnRpZnlpbmdDb21tb25Eb21haW4sIGF1dG8mIHJlc291
cmNlKSB7CisgICAgICAgIHJldHVybiBXVEY6OmNvZGVQb2ludENvbXBhcmVMZXNzVGhhbih1cmxJ
ZGVudGlmeWluZ0NvbW1vbkRvbWFpbi5zdHJpbmcoKSwgcmVzb3VyY2UudXJsSWRlbnRpZnlpbmdD
b21tb25Eb21haW4oKS5zdHJpbmcoKSk7CiAgICAgfSk7CiAKKyAgICBSZXNvdXJjZSogYmVzdE1h
dGNoID0gbnVsbHB0cjsKKyAgICBpbnQgYmVzdFNjb3JlID0ga01pbk1hdGNoOwogICAgIGNvbnN0
IGF1dG8mIHJlcXVlc3RQYXJhbWV0ZXJzID0gV2ViQ29yZTo6VVJMUGFyc2VyOjpwYXJzZVVSTEVu
Y29kZWRGb3JtKHVybC5xdWVyeSgpKTsKICAgICBmb3IgKGF1dG8gaVJlc291cmNlID0gbG93ZXI7
IGlSZXNvdXJjZSAhPSB1cHBlcjsgKytpUmVzb3VyY2UpIHsKICAgICAgICAgaW50IHRoaXNTY29y
ZSA9IGZ1enp5TWF0Y2hVUkxzKHVybCwgcmVxdWVzdFBhcmFtZXRlcnMsIGlSZXNvdXJjZS0+dXJs
KCksIGlSZXNvdXJjZS0+cXVlcnlQYXJhbWV0ZXJzKCkpOwpAQCAtNDE5LDYgKzQxOCwxMSBAQCBT
dHJpbmcgTWFuYWdlcjo6aGFzaFRvUGF0aChjb25zdCBTdHJpbmcmIGhhc2gpCiAgICAgcmV0dXJu
IHBhdGg7CiB9CiAKK1dlYkNvcmU6OlVSTCBNYW5hZ2VyOjp1cmxJZGVudGlmeWluZ0NvbW1vbkRv
bWFpbihjb25zdCBXZWJDb3JlOjpVUkwmIHVybCkKK3sKKyAgICByZXR1cm4gV2ViQ29yZTo6VVJM
UGFyc2VyKHVybC5wcm90b2NvbEhvc3RBbmRQb3J0KCkpLnJlc3VsdCgpOworfQorCiB2b2lkIE1h
bmFnZXI6OmxvZ1JlY29yZGVkUmVzb3VyY2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0KQogewogICAgIC8vIExvZyBuZXR3b3JrIHJlc291cmNlcyBhcyB0aGV5IGFyZSBj
YWNoZWQgdG8gZGlzay4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L2NhcHR1cmUvTmV0d29ya0NhcHR1cmVNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlTWFuYWdlci5oCmluZGV4IDQ1MGMwNmFjNjAz
N2FiMjJkNWRhZGUzMWU5Yzg0YjMyN2EzMjhjZmYuLjgxNmVjMWI4ODc3MTgzZDU2OWE0NWIzYjIy
NWI1MzQ5ODAwMTg3M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L2NhcHR1cmUvTmV0d29ya0NhcHR1cmVNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZU1hbmFnZXIuaApAQCAtODMsNiArODMs
NyBAQCBwdWJsaWM6CiAgICAgV2ViQ29yZTo6RmlsZUhhbmRsZSBvcGVuQ2FjaGVGaWxlKGNvbnN0
IFN0cmluZyYsIFdlYkNvcmU6OkZpbGVPcGVuTW9kZSk7CiAKICAgICBTdHJpbmcgcmVxdWVzdFRv
UGF0aChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICBzdGF0aWMgV2ViQ29y
ZTo6VVJMIHVybElkZW50aWZ5aW5nQ29tbW9uRG9tYWluKGNvbnN0IFdlYkNvcmU6OlVSTCYpOwog
CiBwcml2YXRlOgogICAgIE1hbmFnZXIoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlUmVzb3VyY2UuY3Bw
IGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZVJl
c291cmNlLmNwcAppbmRleCAyM2ViNjlhZTc1MDI1OGMxMWI1MzZjNDA3MjVjOTNjZWM3MWU0Njli
Li5mNTk0MmNiMzBlN2NlMTVjMzVjNDM2MzU5ZmNjODZjNTMyMTRhMjY5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlUmVzb3Vy
Y2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29y
a0NhcHR1cmVSZXNvdXJjZS5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIk5ldHdv
cmtDYXB0dXJlRXZlbnQuaCIKICNpbmNsdWRlICJOZXR3b3JrQ2FwdHVyZUxvZ2dpbmcuaCIKKyNp
bmNsdWRlICJOZXR3b3JrQ2FwdHVyZU1hbmFnZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrQ2FwdHVy
ZVJlY29yZGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTksMTYgKzYwLDEzIEBAIGNv
bnN0IFdlYkNvcmU6OlVSTCYgUmVzb3VyY2U6OnVybCgpCiAgICAgcmV0dXJuICptX3VybDsKIH0K
IAotY29uc3QgV2ViQ29yZTo6VVJMJiBSZXNvdXJjZTo6YmFzZVVSTCgpCitjb25zdCBXZWJDb3Jl
OjpVUkwmIFJlc291cmNlOjp1cmxJZGVudGlmeWluZ0NvbW1vbkRvbWFpbigpCiB7Ci0gICAgaWYg
KCFtX2Jhc2VVUkwpIHsKLSAgICAgICAgYXV0byBwYXRoU3RhcnQgPSB1cmwoKS5wYXRoU3RhcnQo
KTsKLSAgICAgICAgYXV0byBiYXNlVVJMU3RyID0gdXJsKCkuc3RyaW5nKCkubGVmdChwYXRoU3Rh
cnQpOwotICAgICAgICBXZWJDb3JlOjpVUkxQYXJzZXIgcGFyc2VyKGJhc2VVUkxTdHIpOwotICAg
ICAgICBtX2Jhc2VVUkwgPSBwYXJzZXIucmVzdWx0KCk7CisgICAgaWYgKCFtX3VybElkZW50aWZ5
aW5nQ29tbW9uRG9tYWluKSB7CisgICAgICAgIG1fdXJsSWRlbnRpZnlpbmdDb21tb25Eb21haW4g
PSBNYW5hZ2VyOjp1cmxJZGVudGlmeWluZ0NvbW1vbkRvbWFpbih1cmwoKSk7CiAgICAgfQogCi0g
ICAgcmV0dXJuICptX2Jhc2VVUkw7CisgICAgcmV0dXJuICptX3VybElkZW50aWZ5aW5nQ29tbW9u
RG9tYWluOwogfQogCiBXZWJDb3JlOjpVUkxQYXJzZXI6OlVSTEVuY29kZWRGb3JtIFJlc291cmNl
OjpxdWVyeVBhcmFtZXRlcnMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZVJlc291cmNlLmggYi9Tb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlUmVzb3VyY2UuaAppbmRleCA5OWNk
NjIwZTViNWZlZGZhY2QxOGE1M2I2ZjhjMzZjYjQ5ZDZlMTlkLi44ZDg2YjI0NzVkZjllMTY5ZTk5
NmE3ZDFlNmU1N2U3NDc0ZDYzODllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlUmVzb3VyY2UuaApAQCAt
NTYsMTQgKzU2LDE0IEBAIHB1YmxpYzoKICAgICBSZXNvdXJjZShjb25zdCBTdHJpbmcmIGV2ZW50
RmlsZVBhdGgpOwogCiAgICAgY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwoKTsKLSAgICBjb25zdCBX
ZWJDb3JlOjpVUkwmIGJhc2VVUkwoKTsKKyAgICBjb25zdCBXZWJDb3JlOjpVUkwmIHVybElkZW50
aWZ5aW5nQ29tbW9uRG9tYWluKCk7CiAgICAgV2ViQ29yZTo6VVJMUGFyc2VyOjpVUkxFbmNvZGVk
Rm9ybSBxdWVyeVBhcmFtZXRlcnMoKTsKICAgICBFdmVudFN0cmVhbSBldmVudFN0cmVhbSgpOwog
CiBwcml2YXRlOgogICAgIFN0cmluZyBtX2V2ZW50RmlsZVBhdGg7CiAgICAgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpVUkw+IG1fdXJsOwotICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6VVJMPiBt
X2Jhc2VVUkw7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpVUkw+IG1fdXJsSWRlbnRpZnlp
bmdDb21tb25Eb21haW47CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpVUkxQYXJzZXI6OlVS
TEVuY29kZWRGb3JtPiBtX3F1ZXJ5UGFyYW1ldGVyczsKIH07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>298507</attachid>
            <date>2017-01-10 13:24:41 -0800</date>
            <delta_ts>2017-01-10 14:32:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-166041-20170110132311.patch</filename>
            <type>text/plain</type>
            <size>9209</size>
            <attacher name="Keith Rollin">krollin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEwMzk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggM2M5MGFhNzIyN2ExMTA1
ODUyZjlkNzQ1MzY2NTEyYzcyOTkwM2ZkMi4uNWExMzBmMTQxNzIyZWMwZGIyN2M2NDI0NDZmZTY2
ZTFiMTI0YzgzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDE3LTAxLTEwICBLZWl0
aCBSb2xsaW4gIDxrcm9sbGluQGFwcGxlLmNvbT4KKworICAgICAgICBSZWNvcmQvcmVwbGF5OiBm
aXggcmFuZ2UgdXNlZCBmb3IgZnV6enkgbWF0Y2hpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NjA0MQorCisgICAgICAgIFJldmlld2VkIGJ5IERh
cmluIEFkbGVyIGFuZCBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAgIEJlY2F1c2Ugb2YgdHdv
IGJ1Z3MsIHRoZSBhdHRlbXB0IHRvIGRldGVybWluZSB0aGUgcmFuZ2Ugb2YgVVJMcyB0bworICAg
ICAgICBjaGVjayBhcyBwYXJ0IG9mIHRoZSBwcm9jZXNzIG9mIGZ1enp5IG1hdGNoaW5nIHdhcyBm
YWlsaW5nLiBUaGUgaW50ZW50CisgICAgICAgIHdhcyB0byBmaW5kIHRoZSByYW5nZSBvZiBVUkxz
IHRoYXQgc3RhcnRlZCB3aXRoIHRoZSBzYW1lCisgICAgICAgIDxzY2hlbWU6Ly9ob3N0OnBvcnQ+
IGFzIGEgZ2l2ZW4gVVJMLiBIb3dldmVyLCBiZWNhdXNlIG9mIGEgcmV2ZXJzZWQKKyAgICAgICAg
dGVzdCwgdGhlIHVwcGVyIGVuZCBvZiB0aGUgcmFuZ2UgZW5kZWQgdXAgYmVpbmcgdGhlICJlbmQo
KSIgaXRlcmF0b3IKKyAgICAgICAgb2YgdGhlIGVudGlyZSBjb2xsZWN0aW9uIG9mIFVSTHMuIFdp
dGggdGhhdCBmaXhlZCwgdGhlcmUgd2FzIGFub3RoZXIKKyAgICAgICAgYnVnIGR1ZSB0byBvbmUg
VVJMIGJlaW5nIGdpdmVuIGFzIDxzY2hlbWU6Ly9ob3N0OnBvcnQ+IGFuZCB0aGUgb3RoZXIKKyAg
ICAgICAgZ2l2ZW4gYXMgPHNjaGVtZTovL2hvc3Q6cG9ydC8+IChub3RlIHRoZSB0cmFpbGluZyBz
bGFzaCkuIEJvdGggb2YKKyAgICAgICAgdGhlc2UgaXNzdWVzIGFyZSBub3cgZml4ZWQuCisKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlTWFuYWdlci5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYXB0dXJlOjpNYW5hZ2VyOjppbml0aWFsaXplKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhcHR1cmU6Ok1hbmFnZXI6OmZpbmRCZXN0RnV6enlN
YXRjaCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYXB0dXJlOjpNYW5hZ2VyOjp1cmxJZGVu
dGlmeWluZ0NvbW1vbkRvbWFpbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9O
ZXR3b3JrQ2FwdHVyZU1hbmFnZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYXB0dXJl
L05ldHdvcmtDYXB0dXJlUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2Fw
dHVyZTo6UmVzb3VyY2U6OnVybCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYXB0dXJlOjpS
ZXNvdXJjZTo6dXJsSWRlbnRpZnlpbmdDb21tb25Eb21haW4pOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrQ2FwdHVyZTo6UmVzb3VyY2U6OmJhc2VVUkwpOiBEZWxldGVkLgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVSZXNvdXJjZS5oOgorCiAyMDE3LTAx
LTA1ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAg
ICBbU09VUF0gTmV0d29yayBwcm9jZXNzIGNyYXNoIGluIFdlYktpdDo6Q3VzdG9tUHJvdG9jb2xN
YW5hZ2VySW1wbDo6ZGlkRmFpbFdpdGhFcnJvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZU1hbmFnZXIuY3BwIGIvU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZU1hbmFnZXIuY3Bw
CmluZGV4IDNkYWRjOTM2ZDIyMDhhZjdhMzU2OWYzMmRhMTBjNDMzZTk3Y2Y0MjYuLjQ2ZDg4YzQ5
NTUzZjk4YTgyYjIxYzYyOWNjNTliZTJlZjEyMTY2MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVNYW5hZ2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlTWFu
YWdlci5jcHAKQEAgLTYyLDE2ICs2MiwxOSBAQCBNYW5hZ2VyJiBNYW5hZ2VyOjpzaW5nbGV0b24o
KQogCiB2b2lkIE1hbmFnZXI6OmluaXRpYWxpemUoY29uc3QgU3RyaW5nJiByZWNvcmRSZXBsYXlN
b2RlLCBjb25zdCBTdHJpbmcmIHJlY29yZFJlcGxheUNhY2hlTG9jYXRpb24pCiB7Ci0gICAgREVC
VUdfTE9HKCJJbml0aWFsaXppbmciKTsKLQotICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNl
KHJlY29yZFJlcGxheU1vZGUsICJyZWNvcmQiKSkKKyAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJ
Q2FzZShyZWNvcmRSZXBsYXlNb2RlLCAicmVjb3JkIikpIHsKKyAgICAgICAgREVCVUdfTE9HKCJJ
bml0aWFsaXppbmc6IHJlY29yZGluZyBtb2RlIik7CiAgICAgICAgIG1fcmVjb3JkUmVwbGF5TW9k
ZSA9IFJlY29yZDsKLSAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKHJlY29yZFJl
cGxheU1vZGUsICJyZXBsYXkiKSkKKyAgICB9IGVsc2UgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNh
c2UocmVjb3JkUmVwbGF5TW9kZSwgInJlcGxheSIpKSB7CisgICAgICAgIERFQlVHX0xPRygiSW5p
dGlhbGl6aW5nOiByZXBsYXkgbW9kZSIpOwogICAgICAgICBtX3JlY29yZFJlcGxheU1vZGUgPSBS
ZXBsYXk7Ci0gICAgZWxzZQorICAgIH0gZWxzZSB7CisgICAgICAgIERFQlVHX0xPRygiSW5pdGlh
bGl6aW5nOiBkaXNhYmxlZCIpOwogICAgICAgICBtX3JlY29yZFJlcGxheU1vZGUgPSBEaXNhYmxl
ZDsKKyAgICB9CiAKICAgICBtX3JlY29yZFJlcGxheUNhY2hlTG9jYXRpb24gPSBXZWJDb3JlOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVjb3JkUmVwbGF5Q2FjaGVMb2NhdGlvbiwga0Rpck5h
bWVSZWNvcmRSZXBsYXkpOworICAgIERFQlVHX0xPRygiQ2FjaGUgbG9jYXRpb24gPSAiIFNUUklO
R19TUEVDSUZJRVIsIERFQlVHX1NUUihtX3JlY29yZFJlcGxheUNhY2hlTG9jYXRpb24pKTsKIAog
ICAgIGlmIChpc1JlY29yZGluZygpKSB7CiAgICAgICAgIG1fcmVjb3JkRmlsZUhhbmRsZSA9IFdl
YkNvcmU6OkZpbGVIYW5kbGUocmVwb3J0UmVjb3JkUGF0aCgpLCBXZWJDb3JlOjpPcGVuRm9yV3Jp
dGUpOwpAQCAtNzksMTIgKzgyLDggQEAgdm9pZCBNYW5hZ2VyOjppbml0aWFsaXplKGNvbnN0IFN0
cmluZyYgcmVjb3JkUmVwbGF5TW9kZSwgY29uc3QgU3RyaW5nJiByZWNvcmRSZXAKICAgICAgICAg
bV9yZWNvcmRGaWxlSGFuZGxlID0gV2ViQ29yZTo6RmlsZUhhbmRsZShyZXBvcnRSZWNvcmRQYXRo
KCksIFdlYkNvcmU6Ok9wZW5Gb3JSZWFkKTsKICAgICAgICAgbV9sb2FkRmlsZUhhbmRsZSA9IFdl
YkNvcmU6OkZpbGVIYW5kbGUocmVwb3J0TG9hZFBhdGgoKSwgV2ViQ29yZTo6T3BlbkZvcldyaXRl
KTsKICAgICAgICAgbV9yZXBsYXlGaWxlSGFuZGxlID0gV2ViQ29yZTo6RmlsZUhhbmRsZShyZXBv
cnRSZXBsYXlQYXRoKCksIFdlYkNvcmU6Ok9wZW5Gb3JXcml0ZSk7Ci0gICAgfQotCi0gICAgREVC
VUdfTE9HKCJDYWNoZSBsb2NhdGlvbiA9ICIgU1RSSU5HX1NQRUNJRklFUiwgREVCVUdfU1RSKG1f
cmVjb3JkUmVwbGF5Q2FjaGVMb2NhdGlvbikpOwotCi0gICAgaWYgKGlzUmVwbGF5aW5nKCkpCiAg
ICAgICAgIGxvYWRSZXNvdXJjZXMoKTsKKyAgICB9CiB9CiAKIHZvaWQgTWFuYWdlcjo6dGVybWlu
YXRlKCkKQEAgLTEzNCwxNyArMTMzLDE3IEBAIFJlc291cmNlKiBNYW5hZ2VyOjpmaW5kRXhhY3RN
YXRjaChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiBSZXNvdXJjZSog
TWFuYWdlcjo6ZmluZEJlc3RGdXp6eU1hdGNoKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCkKIHsKICAgICBjb25zdCBhdXRvJiB1cmwgPSByZXF1ZXN0LnVybCgpOwotICAg
IFJlc291cmNlKiBiZXN0TWF0Y2ggPSBudWxscHRyOwotICAgIGludCBiZXN0U2NvcmUgPSBrTWlu
TWF0Y2g7Ci0gICAgY29uc3QgYXV0byYgYmFzZVVSTCA9IHVybC5zdHJpbmcoKS5sZWZ0KHVybC5w
YXRoU3RhcnQoKSk7CisgICAgY29uc3QgYXV0byYgdXJsSWRlbnRpZnlpbmdDb21tb25Eb21haW4g
PSBNYW5hZ2VyOjp1cmxJZGVudGlmeWluZ0NvbW1vbkRvbWFpbih1cmwpOwogCi0gICAgY29uc3Qg
YXV0byYgbG93ZXIgPSBzdGQ6Omxvd2VyX2JvdW5kKHN0ZDo6YmVnaW4obV9jYWNoZWRSZXNvdXJj
ZXMpLCBzdGQ6OmVuZChtX2NhY2hlZFJlc291cmNlcyksIGJhc2VVUkwsIFtdKGF1dG8mIHJlc291
cmNlLCBjb25zdCBhdXRvJiB1cmwpIHsKLSAgICAgICAgcmV0dXJuIFdURjo6Y29kZVBvaW50Q29t
cGFyZUxlc3NUaGFuKHJlc291cmNlLmJhc2VVUkwoKS5zdHJpbmcoKSwgdXJsKTsKKyAgICBjb25z
dCBhdXRvJiBsb3dlciA9IHN0ZDo6bG93ZXJfYm91bmQoc3RkOjpiZWdpbihtX2NhY2hlZFJlc291
cmNlcyksIHN0ZDo6ZW5kKG1fY2FjaGVkUmVzb3VyY2VzKSwgdXJsSWRlbnRpZnlpbmdDb21tb25E
b21haW4sIFtdKGF1dG8mIHJlc291cmNlLCBjb25zdCBhdXRvJiB1cmxJZGVudGlmeWluZ0NvbW1v
bkRvbWFpbikgeworICAgICAgICByZXR1cm4gV1RGOjpjb2RlUG9pbnRDb21wYXJlTGVzc1RoYW4o
cmVzb3VyY2UudXJsSWRlbnRpZnlpbmdDb21tb25Eb21haW4oKSwgdXJsSWRlbnRpZnlpbmdDb21t
b25Eb21haW4pOwogICAgIH0pOwotICAgIGNvbnN0IGF1dG8mIHVwcGVyID0gc3RkOjp1cHBlcl9i
b3VuZChsb3dlciwgc3RkOjplbmQobV9jYWNoZWRSZXNvdXJjZXMpLCBiYXNlVVJMLCBbXShjb25z
dCBhdXRvJiB1cmwsIGF1dG8mIHJlc291cmNlKSB7Ci0gICAgICAgIHJldHVybiBXVEY6OmNvZGVQ
b2ludENvbXBhcmVMZXNzVGhhbihyZXNvdXJjZS5iYXNlVVJMKCkuc3RyaW5nKCksIHVybCk7Cisg
ICAgY29uc3QgYXV0byYgdXBwZXIgPSBzdGQ6OnVwcGVyX2JvdW5kKGxvd2VyLCBzdGQ6OmVuZCht
X2NhY2hlZFJlc291cmNlcyksIHVybElkZW50aWZ5aW5nQ29tbW9uRG9tYWluLCBbXShjb25zdCBh
dXRvJiB1cmxJZGVudGlmeWluZ0NvbW1vbkRvbWFpbiwgYXV0byYgcmVzb3VyY2UpIHsKKyAgICAg
ICAgcmV0dXJuIFdURjo6Y29kZVBvaW50Q29tcGFyZUxlc3NUaGFuKHVybElkZW50aWZ5aW5nQ29t
bW9uRG9tYWluLCByZXNvdXJjZS51cmxJZGVudGlmeWluZ0NvbW1vbkRvbWFpbigpKTsKICAgICB9
KTsKIAorICAgIFJlc291cmNlKiBiZXN0TWF0Y2ggPSBudWxscHRyOworICAgIGludCBiZXN0U2Nv
cmUgPSBrTWluTWF0Y2g7CiAgICAgY29uc3QgYXV0byYgcmVxdWVzdFBhcmFtZXRlcnMgPSBXZWJD
b3JlOjpVUkxQYXJzZXI6OnBhcnNlVVJMRW5jb2RlZEZvcm0odXJsLnF1ZXJ5KCkpOwogICAgIGZv
ciAoYXV0byBpUmVzb3VyY2UgPSBsb3dlcjsgaVJlc291cmNlICE9IHVwcGVyOyArK2lSZXNvdXJj
ZSkgewogICAgICAgICBpbnQgdGhpc1Njb3JlID0gZnV6enlNYXRjaFVSTHModXJsLCByZXF1ZXN0
UGFyYW1ldGVycywgaVJlc291cmNlLT51cmwoKSwgaVJlc291cmNlLT5xdWVyeVBhcmFtZXRlcnMo
KSk7CkBAIC00MTksNiArNDE4LDExIEBAIFN0cmluZyBNYW5hZ2VyOjpoYXNoVG9QYXRoKGNvbnN0
IFN0cmluZyYgaGFzaCkKICAgICByZXR1cm4gcGF0aDsKIH0KIAorU3RyaW5nIE1hbmFnZXI6OnVy
bElkZW50aWZ5aW5nQ29tbW9uRG9tYWluKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsKQoreworICAg
IHJldHVybiB1cmwucHJvdG9jb2xIb3N0QW5kUG9ydCgpOworfQorCiB2b2lkIE1hbmFnZXI6Omxv
Z1JlY29yZGVkUmVzb3VyY2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
KQogewogICAgIC8vIExvZyBuZXR3b3JrIHJlc291cmNlcyBhcyB0aGV5IGFyZSBjYWNoZWQgdG8g
ZGlzay4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhcHR1cmUv
TmV0d29ya0NhcHR1cmVNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9j
YXB0dXJlL05ldHdvcmtDYXB0dXJlTWFuYWdlci5oCmluZGV4IDQ1MGMwNmFjNjAzN2FiMjJkNWRh
ZGUzMWU5Yzg0YjMyN2EzMjhjZmYuLjY2YjYzOWY0OGQ4NzViNGJjZDMwYzlkOGJjZTVkNDZiMDA1
ODc5ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhcHR1cmUv
TmV0d29ya0NhcHR1cmVNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZU1hbmFnZXIuaApAQCAtODMsNiArODMsNyBAQCBwdWJs
aWM6CiAgICAgV2ViQ29yZTo6RmlsZUhhbmRsZSBvcGVuQ2FjaGVGaWxlKGNvbnN0IFN0cmluZyYs
IFdlYkNvcmU6OkZpbGVPcGVuTW9kZSk7CiAKICAgICBTdHJpbmcgcmVxdWVzdFRvUGF0aChjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICBzdGF0aWMgU3RyaW5nIHVybElkZW50
aWZ5aW5nQ29tbW9uRG9tYWluKGNvbnN0IFdlYkNvcmU6OlVSTCYpOwogCiBwcml2YXRlOgogICAg
IE1hbmFnZXIoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZVJlc291cmNlLmNwcAppbmRl
eCAyM2ViNjlhZTc1MDI1OGMxMWI1MzZjNDA3MjVjOTNjZWM3MWU0NjliLi43MDRjMGQ2YWQ0ZjY2
YTBjM2NhYjNiYWYzZTk5NTYxZDg4ODRmMDQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlUmVzb3VyY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVSZXNvdXJj
ZS5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIk5ldHdvcmtDYXB0dXJlRXZlbnQu
aCIKICNpbmNsdWRlICJOZXR3b3JrQ2FwdHVyZUxvZ2dpbmcuaCIKKyNpbmNsdWRlICJOZXR3b3Jr
Q2FwdHVyZU1hbmFnZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrQ2FwdHVyZVJlY29yZGVyLmgiCiAK
IG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDIsNyArNDMsNyBAQCBSZXNvdXJjZTo6UmVzb3VyY2Uo
Y29uc3QgU3RyaW5nJiBldmVudEZpbGVQYXRoKQogCiBjb25zdCBXZWJDb3JlOjpVUkwmIFJlc291
cmNlOjp1cmwoKQogewotICAgIGlmICghbV91cmwpIHsKKyAgICBpZiAoIW1fdXJsLmlzVmFsaWQo
KSkgewogICAgICAgICBhdXRvIGV2ZW50cyA9IGV2ZW50U3RyZWFtKCk7CiAgICAgICAgIGF1dG8g
ZXZlbnQgPSBldmVudHMubmV4dEV2ZW50KCk7CiAgICAgICAgIGlmICghZXZlbnQpCkBAIC01Niwx
OSArNTcsMTUgQEAgY29uc3QgV2ViQ29yZTo6VVJMJiBSZXNvdXJjZTo6dXJsKCkKICAgICAgICAg
fQogICAgIH0KIAotICAgIHJldHVybiAqbV91cmw7CisgICAgcmV0dXJuIG1fdXJsOwogfQogCi1j
b25zdCBXZWJDb3JlOjpVUkwmIFJlc291cmNlOjpiYXNlVVJMKCkKK2NvbnN0IFN0cmluZyYgUmVz
b3VyY2U6OnVybElkZW50aWZ5aW5nQ29tbW9uRG9tYWluKCkKIHsKLSAgICBpZiAoIW1fYmFzZVVS
TCkgewotICAgICAgICBhdXRvIHBhdGhTdGFydCA9IHVybCgpLnBhdGhTdGFydCgpOwotICAgICAg
ICBhdXRvIGJhc2VVUkxTdHIgPSB1cmwoKS5zdHJpbmcoKS5sZWZ0KHBhdGhTdGFydCk7Ci0gICAg
ICAgIFdlYkNvcmU6OlVSTFBhcnNlciBwYXJzZXIoYmFzZVVSTFN0cik7Ci0gICAgICAgIG1fYmFz
ZVVSTCA9IHBhcnNlci5yZXN1bHQoKTsKLSAgICB9CisgICAgaWYgKG1fdXJsSWRlbnRpZnlpbmdD
b21tb25Eb21haW4uaXNOdWxsKCkpCisgICAgICAgIG1fdXJsSWRlbnRpZnlpbmdDb21tb25Eb21h
aW4gPSBNYW5hZ2VyOjp1cmxJZGVudGlmeWluZ0NvbW1vbkRvbWFpbih1cmwoKSk7CiAKLSAgICBy
ZXR1cm4gKm1fYmFzZVVSTDsKKyAgICByZXR1cm4gbV91cmxJZGVudGlmeWluZ0NvbW1vbkRvbWFp
bjsKIH0KIAogV2ViQ29yZTo6VVJMUGFyc2VyOjpVUkxFbmNvZGVkRm9ybSBSZXNvdXJjZTo6cXVl
cnlQYXJhbWV0ZXJzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L2NhcHR1cmUvTmV0d29ya0NhcHR1cmVSZXNvdXJjZS5oIGIvU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZVJlc291cmNlLmgKaW5kZXggOTljZDYyMGU1
YjVmZWRmYWNkMThhNTNiNmY4YzM2Y2I0OWQ2ZTE5ZC4uZTU3NjBlZDFiYzMwYTE5YWFlZjg0YjBl
OGRmODFjMzk3ODg5YWE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZVJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZVJlc291cmNlLmgKQEAgLTU2LDE0
ICs1NiwxNCBAQCBwdWJsaWM6CiAgICAgUmVzb3VyY2UoY29uc3QgU3RyaW5nJiBldmVudEZpbGVQ
YXRoKTsKIAogICAgIGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsKCk7Ci0gICAgY29uc3QgV2ViQ29y
ZTo6VVJMJiBiYXNlVVJMKCk7CisgICAgY29uc3QgU3RyaW5nJiB1cmxJZGVudGlmeWluZ0NvbW1v
bkRvbWFpbigpOwogICAgIFdlYkNvcmU6OlVSTFBhcnNlcjo6VVJMRW5jb2RlZEZvcm0gcXVlcnlQ
YXJhbWV0ZXJzKCk7CiAgICAgRXZlbnRTdHJlYW0gZXZlbnRTdHJlYW0oKTsKIAogcHJpdmF0ZToK
ICAgICBTdHJpbmcgbV9ldmVudEZpbGVQYXRoOwotICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
VVJMPiBtX3VybDsKLSAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlVSTD4gbV9iYXNlVVJMOwor
ICAgIFdlYkNvcmU6OlVSTCBtX3VybDsKKyAgICBTdHJpbmcgbV91cmxJZGVudGlmeWluZ0NvbW1v
bkRvbWFpbjsKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlVSTFBhcnNlcjo6VVJMRW5jb2Rl
ZEZvcm0+IG1fcXVlcnlQYXJhbWV0ZXJzOwogfTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>