<?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>192945</bug_id>
          
          <creation_ts>2018-12-20 12:07:51 -0800</creation_ts>
          <short_desc>Use unorm2_normalize instead of precomposedStringWithCanonicalMapping in userVisibleString</short_desc>
          <delta_ts>2019-01-15 19:27:52 -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 Template Framework</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</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>
          
          <blocked>174816</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Catanzaro">mcatanzaro</reporter>
          <assigned_to name="Michael Catanzaro">mcatanzaro</assigned_to>
          <cc>achristensen</cc>
    
    <cc>ap</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>Ms2ger</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1489989</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-12-20 12:07:51 -0800</bug_when>
    <thetext>Replace use of the nice NSString function precomposedStringWithCanonicalMapping with the ICU API unorm2_normalize. This is to prep the code for translation to cross-platform C++.

Please congratulate the ICU developers for creating an API that is impossible to safely use except when calling it twice in succession.

Note this code was all written by Ms2ger; I&apos;m just splitting it into its own patch because I fear we&apos;ve lost him to end of year holidays.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1490016</commentid>
    <comment_count>1</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-12-20 12:58:35 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #0)
&gt; Note this code was all written by Ms2ger; I&apos;m just splitting it into its own
&gt; patch because I fear we&apos;ve lost him to end of year holidays.

OK, I&apos;ve mucked with it quite a bit to attempt to integrate it into NSURLExtras.mm. Let&apos;s say credit to Ms2ger if it works and my fault if EWS comes back red red red.....</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1490018</commentid>
    <comment_count>2</comment_count>
      <attachid>357853</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-12-20 13:02:14 -0800</bug_when>
    <thetext>Created attachment 357853
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1490029</commentid>
    <comment_count>3</comment_count>
      <attachid>357856</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-12-20 13:18:39 -0800</bug_when>
    <thetext>Created attachment 357856
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1490034</commentid>
    <comment_count>4</comment_count>
      <attachid>357858</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-12-20 13:30:36 -0800</bug_when>
    <thetext>Created attachment 357858
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1490048</commentid>
    <comment_count>5</comment_count>
      <attachid>357862</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-12-20 13:46:10 -0800</bug_when>
    <thetext>Created attachment 357862
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1490057</commentid>
    <comment_count>6</comment_count>
      <attachid>357865</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-12-20 13:55:40 -0800</bug_when>
    <thetext>Created attachment 357865
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1490078</commentid>
    <comment_count>7</comment_count>
      <attachid>357865</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-12-20 14:34:00 -0800</bug_when>
    <thetext>Comment on attachment 357865
Patch

Unsetting r? until the Mac EWS are working again:

Exception: Error auto-installing the keyring package to:
 &quot;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkitpy/thirdparty/autoinstalled/keyring&quot;
 --&gt; Inner message: Could not download Python modules from URL &quot;None&quot;.
 Make sure you are connected to the internet.
 You must be connected to the internet when downloading needed modules for the first time.
 --&gt; Inner message: &lt;urlopen error [SSL: TLSV1_ALERT_PROTOCOL_VERSION] tlsv1 alert protocol version (_ssl.c:590)&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1490192</commentid>
    <comment_count>8</comment_count>
      <attachid>357865</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-12-20 17:00:02 -0800</bug_when>
    <thetext>Comment on attachment 357865
Patch

OK, all the bots are happy except for the network error....

This is my first Objective C[++] ever and I am very proud of it! Even if it is mostly copied from Ms2ger.

Note that after this lands, I will immediately reland the patch in bug #174816, deleting all this code. This commit is just to make sure that if the switch from the NSString normalization to the ICU normalization introduces an unexpected regression, it will bisect down to this small revision instead of the huge patch in that bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1490195</commentid>
    <comment_count>9</comment_count>
      <attachid>357865</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-12-20 17:05:09 -0800</bug_when>
    <thetext>Comment on attachment 357865
Patch

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

&gt; Source/WTF/wtf/cocoa/NSURLExtras.mm:1170
&gt; +    ASSERT(sourceBuffer.last() == &apos;\0&apos;);

This assertion seems redundant.

&gt; Source/WTF/wtf/cocoa/NSURLExtras.mm:1175
&gt; +    const UNormalizer2 *normalizer = unorm2_getNFCInstance(&amp;uerror);

Can unorm2_getNFCInstance never fail?

&gt; Source/WTF/wtf/cocoa/NSURLExtras.mm:1177
&gt; +    if (uerror == U_BUFFER_OVERFLOW_ERROR) {

Is this case covered by tests?  Are there tests with emoji?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1490264</commentid>
    <comment_count>10</comment_count>
      <attachid>357865</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-12-20 19:47:11 -0800</bug_when>
    <thetext>Comment on attachment 357865
Patch

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

&gt;&gt; Source/WTF/wtf/cocoa/NSURLExtras.mm:1170
&gt;&gt; +    ASSERT(sourceBuffer.last() == &apos;\0&apos;);
&gt; 
&gt; This assertion seems redundant.

It is, but it makes the next line sourceBuffer.removeLast() easier to understand, so seems worth keeping.

&gt;&gt; Source/WTF/wtf/cocoa/NSURLExtras.mm:1175
&gt;&gt; +    const UNormalizer2 *normalizer = unorm2_getNFCInstance(&amp;uerror);
&gt; 
&gt; Can unorm2_getNFCInstance never fail?

Good catch. It can fail if there is a memory allocation error. So not in practice, but we should check it regardless, especially since we create an error, pass it in, and don&apos;t check it... that&apos;s no good. And maybe in the future the function could change to fail in different ways.

&gt;&gt; Source/WTF/wtf/cocoa/NSURLExtras.mm:1177
&gt;&gt; +    if (uerror == U_BUFFER_OVERFLOW_ERROR) {
&gt; 
&gt; Is this case covered by tests?  Are there tests with emoji?

There is a test with a snowman emoji.

None of the tests intentionally triggers this &quot;error condition&quot;. (Of course it&apos;s not a real error, just bad API design to require the caller to allocate a bigger buffer instead of ICU allocating the right size and returning it.) I can check the patch in bug #174816 tomorrow to see if any of those tests hit this codepath in the big patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1490644</commentid>
    <comment_count>11</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-12-22 16:38:59 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #10)
&gt; None of the tests intentionally triggers this &quot;error condition&quot;. (Of course
&gt; it&apos;s not a real error, just bad API design to require the caller to allocate
&gt; a bigger buffer instead of ICU allocating the right size and returning it.)
&gt; I can check the patch in bug #174816 tomorrow to see if any of those tests
&gt; hit this codepath in the big patch.

None of the tests hit this path. In fact, input size is always equal to output size. I doubt that&apos;s guaranteed to be the case, but I don&apos;t know enough about Unicode to pursue it further.

I&apos;ll update the patch to add the missing error check, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1490646</commentid>
    <comment_count>12</comment_count>
      <attachid>358027</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-12-22 16:48:15 -0800</bug_when>
    <thetext>Created attachment 358027
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1490661</commentid>
    <comment_count>13</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2018-12-23 10:46:29 -0800</bug_when>
    <thetext>&gt; None of the tests hit this path. In fact, input size is always equal to output size. I doubt that&apos;s guaranteed to be the case, but I don&apos;t know enough about Unicode to pursue it further.

Is this actually about Unicode, or just strings longer than 2048 characters?

Unicode can certainly be tricky because conversions can make strings longer, but I don&apos;t see how that comes into play in this code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1490711</commentid>
    <comment_count>14</comment_count>
      <attachid>358027</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-12-24 10:34:02 -0800</bug_when>
    <thetext>Comment on attachment 358027
Patch

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

&gt; Source/WTF/wtf/cocoa/NSURLExtras.mm:1180
&gt; +        normalizedLength = unorm2_normalize(normalizer, sourceBuffer.data(), sourceBuffer.size(), normalizedCharacters.data(), normalizedCharacters.size(), &amp;uerror);
&gt; +        if (uerror == U_BUFFER_OVERFLOW_ERROR) {

This &quot;error&quot; occurs if the output size is greater than input size (sourceBuffer.size()). I don&apos;t think it has anything to do with the 2048-bit inline capacity of sourceBuffer.

In all of the URLHelpers.cpp tests from bug #174816, the output size is always equal to the input size, so it is not currently tested (probably; there are a couple more tests in URLExtras.mm that I have not run).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1490712</commentid>
    <comment_count>15</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-12-24 10:35:33 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #14)
&gt; This &quot;error&quot; occurs if the output size is greater than input size
&gt; (sourceBuffer.size()). I don&apos;t think it has anything to do with the 2048-bit
&gt; inline capacity of sourceBuffer.

More specifically: the error occurs if the output size is greater than the size of the buffer provided for the output, normalizedCharacters.size(). And normalizedCharacters.size() is initially the same as sourceBuffer.size().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1491270</commentid>
    <comment_count>16</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2019-01-02 14:52:56 -0800</bug_when>
    <thetext>Alex Christensen should review this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1491435</commentid>
    <comment_count>17</comment_count>
      <attachid>358027</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-01-03 08:49:44 -0800</bug_when>
    <thetext>Comment on attachment 358027
Patch

I think this code should be put in a subroutine with a name that takes a const String&amp; parameter and returns a String.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1494428</commentid>
    <comment_count>18</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-01-14 17:39:13 -0800</bug_when>
    <thetext>Adding a new subroutine might be harder for me than you&apos;d think, but here goes.

A sacrifice to the EWS gods: 🔥🐑🔥</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1494429</commentid>
    <comment_count>19</comment_count>
      <attachid>359107</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-01-14 17:41:25 -0800</bug_when>
    <thetext>Created attachment 359107
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1494476</commentid>
    <comment_count>20</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-01-14 19:24:40 -0800</bug_when>
    <thetext>Thanks!

(In reply to Michael Catanzaro from comment #18)
&gt; A sacrifice to the EWS gods: 🔥🐑🔥

This must have worked. Can&apos;t believe it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1494478</commentid>
    <comment_count>21</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-01-14 19:26:08 -0800</bug_when>
    <thetext>Committed r239970: &lt;https://trac.webkit.org/changeset/239970&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1494482</commentid>
    <comment_count>22</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-01-14 19:29:29 -0800</bug_when>
    <thetext>&lt;rdar://problem/47274320&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1494652</commentid>
    <comment_count>23</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-01-15 08:56:13 -0800</bug_when>
    <thetext>Why does this use charactersWithNullTermination? That’s the worst part of this new code, I think.

Do we need a fast path for any simple cases, like all ASCII?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1494653</commentid>
    <comment_count>24</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-01-15 08:57:22 -0800</bug_when>
    <thetext>I think this can and should easily be improved so that it works without allocating memory just to copy the characters into it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1494654</commentid>
    <comment_count>25</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-01-15 08:57:47 -0800</bug_when>
    <thetext>I’m referring to charactersWithNullTermination, not the Vector on the stack.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1494661</commentid>
    <comment_count>26</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-01-15 09:35:35 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #23)
&gt; Why does this use charactersWithNullTermination? That’s the worst part of
&gt; this new code, I think.

We need a UChar* buffer. It could also be done using String::characters16 and copying the resultant buffer, but that seems worse.

&gt; Do we need a fast path for any simple cases, like all ASCII?

That&apos;s a question for the performance tests, but I&apos;d guess probably not, because displaying URLs should never be performance-sensitive. (And, without looking into implementation, it&apos;s possible that ICU has a fast path already internally, and also possible that the NSString function we&apos;ve replaced did not. We&apos;d have to check the implementations to decide whether to expect the new one to be slower.)

Regardless, I&apos;d like to handle suggested improvements in bug #174816, please, so we can do them in C++ instead of prayers. (I&apos;ve never written Objective C++ before, and have just been throwing patches at EWS hoping they&apos;d build and maybe also work.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1494769</commentid>
    <comment_count>27</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-01-15 12:54:28 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #26)
&gt; (In reply to Darin Adler from comment #23)
&gt; &gt; Why does this use charactersWithNullTermination? That’s the worst part of
&gt; &gt; this new code, I think.
&gt; 
&gt; We need a UChar* buffer. It could also be done using String::characters16
&gt; and copying the resultant buffer, but that seems worse.

The idiom to efficiently get a UChar* buffer would be:

    auto characters = StringView { string }.upconvertedCharacters();

Then &quot;characters&quot; can be passed anywhere that needs a &quot;const UChar*&quot;. We should switch to that I think.

I don’t know why you say &quot;copying the resultant buffer&quot;. I don’t see any reason we’d need to copy it.

Feel free to handle this in bug 174816. Nothing super urgent, just unnecessarily underperforming idiom. Nothing should use charactersWithNullTermination unless it needs null termination.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1494770</commentid>
    <comment_count>28</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-01-15 12:55:53 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #26)
&gt; &gt; Do we need a fast path for any simple cases, like all ASCII?
&gt; 
&gt; That&apos;s a question for the performance tests, but I&apos;d guess probably not,
&gt; because displaying URLs should never be performance-sensitive. (And, without
&gt; looking into implementation, it&apos;s possible that ICU has a fast path already
&gt; internally, and also possible that the NSString function we&apos;ve replaced did
&gt; not. We&apos;d have to check the implementations to decide whether to expect the
&gt; new one to be slower.)

I think we should consider a special case for when the string is already normalized. That will not only help speed but might even help memory use because we’d share the string instead of allocating a new one with all the same characters.

But maybe I’m missing the big picture. This might be such a specialized corner of the code that these kinds of optimization aren’t important.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1494787</commentid>
    <comment_count>29</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-01-15 13:23:13 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #27)
&gt; The idiom to efficiently get a UChar* buffer would be:
&gt; 
&gt;     auto characters = StringView { string }.upconvertedCharacters();
&gt; 
&gt; Then &quot;characters&quot; can be passed anywhere that needs a &quot;const UChar*&quot;. We
&gt; should switch to that I think.
&gt; 
&gt; I don’t know why you say &quot;copying the resultant buffer&quot;. I don’t see any
&gt; reason we’d need to copy it.
&gt; 
&gt; Feel free to handle this in bug 174816. Nothing super urgent, just
&gt; unnecessarily underperforming idiom. Nothing should use
&gt; charactersWithNullTermination unless it needs null termination.

OK, I&apos;ll copy this into bug #174816.

(In reply to Darin Adler from comment #28)
&gt; I think we should consider a special case for when the string is already
&gt; normalized. That will not only help speed but might even help memory use
&gt; because we’d share the string instead of allocating a new one with all the
&gt; same characters.

Problem is: how to detect that the string is already normalized? We could pass it through this API and verify that the result is unchanged. :D

&gt; But maybe I’m missing the big picture. This might be such a specialized
&gt; corner of the code that these kinds of optimization aren’t important.

Hopefully, since this code only runs when formatting a URL for display (e.g. in the address bar).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1494920</commentid>
    <comment_count>30</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-01-15 17:14:42 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #29)
&gt; Problem is: how to detect that the string is already normalized?

unorm2_quickCheck

&gt; We could
&gt; pass it through this API and verify that the result is unchanged. :D

Or that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1494984</commentid>
    <comment_count>31</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-01-15 19:27:52 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #30)
&gt; (In reply to Michael Catanzaro from comment #29)
&gt; &gt; Problem is: how to detect that the string is already normalized?
&gt; 
&gt; unorm2_quickCheck

OK, cool: piled that onto bug #174816.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357853</attachid>
            <date>2018-12-20 13:02:14 -0800</date>
            <delta_ts>2018-12-20 13:18:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192945-20181220150213.patch</filename>
            <type>text/plain</type>
            <size>2706</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5NDI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDY0ZGRiZDQzZTI4YWNiYTI3Mjk3MWU5
ZjM1OGUyYjY0NDRhNWJjMmUuLjkyYzJmMmNjN2EyMmFiMDk5YzZkM2VjYzE3MzhiZmMwODU2ZDhm
YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTgtMTItMjAgIE1pY2hhZWwgQ2F0YW56YXJvICA8
bWNhdGFuemFyb0BpZ2FsaWEuY29tPgorCisgICAgICAgIFVzZSB1bm9ybTJfbm9ybWFsaXplIGlu
c3RlYWQgb2YgcHJlY29tcG9zZWRTdHJpbmdXaXRoQ2Fub25pY2FsTWFwcGluZyBpbiB1c2VyVmlz
aWJsZVN0cmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTkyOTQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgUmVwbGFjZSB1c2Ugb2YgdGhlIG5pY2UgTlNTdHJpbmcgZnVuY3Rpb24gcHJlY29tcG9zZWRT
dHJpbmdXaXRoQ2Fub25pY2FsTWFwcGluZyB3aXRoIHRoZSBJQ1UKKyAgICAgICAgQVBJIHVub3Jt
Ml9ub3JtYWxpemUuIFRoaXMgaXMgdG8gcHJlcCB0aGUgY29kZSBmb3IgdHJhbnNsYXRpb24gdG8g
Y3Jvc3MtcGxhdGZvcm0gQysrLiBPZgorICAgICAgICBjb3Vyc2UgdGhpcyBpcyBtdWNoIHdvcnNl
IHRoYW4gdGhlIHByZWV4aXN0aW5nIGNvZGUsIGJ1dCB0aGlzIGlzIGp1c3QgYSB0cmFuc2l0aW9u
YWwKKyAgICAgICAgbWVhc3VyZSBhbmQgbm90IHRoZSBmaW5hbCBzdGF0ZSBvZiB0aGUgY29kZS4g
SXQgd291bGRuJ3QgbWFrZSBzZW5zZSB0byBkbyB0aGlzIGlmIHRoZSBjb2RlCisgICAgICAgIHdl
cmUgdG8gcmVtYWluIE9iamVjdGl2ZSBDKysuCisKKyAgICAgICAgKiB3dGYvY29jb2EvTlNVUkxF
eHRyYXMubW06CisgICAgICAgIChXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKToKKwogMjAxOC0xMi0x
OSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIHd0Zi9PcHRpb25h
bC5oOiBtb3ZlLWNvbnN0cnVjdG9yIGFuZCBtb3ZlLWFzc2lnbm1lbnQgb3BlcmF0b3Igc2hvdWxk
IGRpc2VuZ2FnZSB0aGUgdmFsdWUgYmVpbmcgbW92ZWQgZnJvbQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvY29jb2EvTlNVUkxFeHRyYXMubW0gYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9OU1VS
TEV4dHJhcy5tbQppbmRleCBkNTdiOTk1MWEwN2Y5NmEyY2ViZGI5NzdmNjhlOTE5YjE4YzZiZWE4
Li5iMzQ0MDRmNDk1YWRhYzI3MzIzNjEzYjQyYzA5M2U1ZTFiYTFjN2JmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9jb2NvYS9OU1VSTEV4dHJhcy5tbQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9j
b2NvYS9OU1VSTEV4dHJhcy5tbQpAQCAtMTE2NSw3ICsxMTY1LDI0IEBAIE5TU3RyaW5nICp1c2Vy
VmlzaWJsZVN0cmluZyhOU1VSTCAqVVJMKQogICAgICAgICAgICAgcmVzdWx0ID0gbWFwcGVkUmVz
dWx0OwogICAgIH0KIAotICAgIHJlc3VsdCA9IFtyZXN1bHQgcHJlY29tcG9zZWRTdHJpbmdXaXRo
Q2Fub25pY2FsTWFwcGluZ107CisgICAgYXV0byBzb3VyY2VCdWZmZXIgPSBTdHJpbmcocmVzdWx0
KS5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpOworICAgIEFTU0VSVChzb3VyY2VCdWZm
ZXIubGFzdCgpID09ICdcMCcpOworICAgIHNvdXJjZUJ1ZmZlci5yZW1vdmVMYXN0KCk7CisKKyAg
ICBWZWN0b3I8VUNoYXIsIHVybEJ5dGVzQnVmZmVyTGVuZ3RoPiBub3JtYWxpemVkQ2hhcmFjdGVy
cyhzb3VyY2VCdWZmZXIuc2l6ZSgpKTsKKyAgICBVRXJyb3JDb2RlIHVlcnJvciA9IFVfWkVST19F
UlJPUjsKKyAgICBjb25zdCBVTm9ybWFsaXplcjIgKm5vcm1hbGl6ZXIgPSB1bm9ybTJfZ2V0TkZD
SW5zdGFuY2UoJnVlcnJvcik7CisgICAgaW50MzJfdCBub3JtYWxpemVkTGVuZ3RoID0gdW5vcm0y
X25vcm1hbGl6ZShub3JtYWxpemVyLCBzb3VyY2VCdWZmZXIuZGF0YSgpLCBzb3VyY2VCdWZmZXIu
c2l6ZSgpLCBub3JtYWxpemVkQ2hhcmFjdGVycy5kYXRhKCksIG5vcm1hbGl6ZWRDaGFyYWN0ZXJz
LnNpemUoKSwgJnVlcnJvcik7CisgICAgaWYgKHVlcnJvciA9PSBVX0JVRkZFUl9PVkVSRkxPV19F
UlJPUikgeworICAgICAgICB1ZXJyb3IgPSBVX1pFUk9fRVJST1I7CisgICAgICAgIG5vcm1hbGl6
ZWRDaGFyYWN0ZXJzLnJlc2l6ZShub3JtYWxpemVkTGVuZ3RoKTsKKyAgICAgICAgbm9ybWFsaXpl
ZExlbmd0aCA9IHVub3JtMl9ub3JtYWxpemUobm9ybWFsaXplciwgc291cmNlQnVmZmVyLmRhdGEo
KSwgc291cmNlQnVmZmVyLnNpemUoKSwgbm9ybWFsaXplZENoYXJhY3RlcnMuZGF0YSgpLCBub3Jt
YWxpemVkTGVuZ3RoLCAmdWVycm9yKTsKKyAgICB9CisgICAgaWYgKFVfRkFJTFVSRSh1ZXJyb3Ip
KQorICAgICAgICByZXN1bHQgPSBzdHJpbmc7CisgICAgZWxzZQorICAgICAgICByZXN1bHQgPSBb
TlNTdHJpbmcgaW5pdFdpdGhDaGFyYWN0ZXJzOm5vcm1hbGl6ZWRDaGFyYWN0ZXJzLmRhdGEoKSwg
bGVuZ3RoOm5vcm1hbGl6ZWRMZW5ndGhdOworCiAgICAgcmV0dXJuIENGQnJpZGdpbmdSZWxlYXNl
KGNyZWF0ZVN0cmluZ1dpdGhFc2NhcGVkVW5zYWZlQ2hhcmFjdGVycygoX19icmlkZ2UgQ0ZTdHJp
bmdSZWYpcmVzdWx0LmdldCgpKSk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357856</attachid>
            <date>2018-12-20 13:18:39 -0800</date>
            <delta_ts>2018-12-20 13:30:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192945-20181220151839.patch</filename>
            <type>text/plain</type>
            <size>2712</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5NDI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDY0ZGRiZDQzZTI4YWNiYTI3Mjk3MWU5
ZjM1OGUyYjY0NDRhNWJjMmUuLjkyYzJmMmNjN2EyMmFiMDk5YzZkM2VjYzE3MzhiZmMwODU2ZDhm
YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTgtMTItMjAgIE1pY2hhZWwgQ2F0YW56YXJvICA8
bWNhdGFuemFyb0BpZ2FsaWEuY29tPgorCisgICAgICAgIFVzZSB1bm9ybTJfbm9ybWFsaXplIGlu
c3RlYWQgb2YgcHJlY29tcG9zZWRTdHJpbmdXaXRoQ2Fub25pY2FsTWFwcGluZyBpbiB1c2VyVmlz
aWJsZVN0cmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTkyOTQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgUmVwbGFjZSB1c2Ugb2YgdGhlIG5pY2UgTlNTdHJpbmcgZnVuY3Rpb24gcHJlY29tcG9zZWRT
dHJpbmdXaXRoQ2Fub25pY2FsTWFwcGluZyB3aXRoIHRoZSBJQ1UKKyAgICAgICAgQVBJIHVub3Jt
Ml9ub3JtYWxpemUuIFRoaXMgaXMgdG8gcHJlcCB0aGUgY29kZSBmb3IgdHJhbnNsYXRpb24gdG8g
Y3Jvc3MtcGxhdGZvcm0gQysrLiBPZgorICAgICAgICBjb3Vyc2UgdGhpcyBpcyBtdWNoIHdvcnNl
IHRoYW4gdGhlIHByZWV4aXN0aW5nIGNvZGUsIGJ1dCB0aGlzIGlzIGp1c3QgYSB0cmFuc2l0aW9u
YWwKKyAgICAgICAgbWVhc3VyZSBhbmQgbm90IHRoZSBmaW5hbCBzdGF0ZSBvZiB0aGUgY29kZS4g
SXQgd291bGRuJ3QgbWFrZSBzZW5zZSB0byBkbyB0aGlzIGlmIHRoZSBjb2RlCisgICAgICAgIHdl
cmUgdG8gcmVtYWluIE9iamVjdGl2ZSBDKysuCisKKyAgICAgICAgKiB3dGYvY29jb2EvTlNVUkxF
eHRyYXMubW06CisgICAgICAgIChXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKToKKwogMjAxOC0xMi0x
OSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIHd0Zi9PcHRpb25h
bC5oOiBtb3ZlLWNvbnN0cnVjdG9yIGFuZCBtb3ZlLWFzc2lnbm1lbnQgb3BlcmF0b3Igc2hvdWxk
IGRpc2VuZ2FnZSB0aGUgdmFsdWUgYmVpbmcgbW92ZWQgZnJvbQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvY29jb2EvTlNVUkxFeHRyYXMubW0gYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9OU1VS
TEV4dHJhcy5tbQppbmRleCBkNTdiOTk1MWEwN2Y5NmEyY2ViZGI5NzdmNjhlOTE5YjE4YzZiZWE4
Li5kNWI1YmRkY2FmNzRkYzc1YmY1MjhhZmNkODUyMTAwZWM3YmQ0ZjU5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9jb2NvYS9OU1VSTEV4dHJhcy5tbQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9j
b2NvYS9OU1VSTEV4dHJhcy5tbQpAQCAtMTE2NSw3ICsxMTY1LDI0IEBAIE5TU3RyaW5nICp1c2Vy
VmlzaWJsZVN0cmluZyhOU1VSTCAqVVJMKQogICAgICAgICAgICAgcmVzdWx0ID0gbWFwcGVkUmVz
dWx0OwogICAgIH0KIAotICAgIHJlc3VsdCA9IFtyZXN1bHQgcHJlY29tcG9zZWRTdHJpbmdXaXRo
Q2Fub25pY2FsTWFwcGluZ107CisgICAgYXV0byBzb3VyY2VCdWZmZXIgPSBTdHJpbmcocmVzdWx0
LmdldCgpKS5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpOworICAgIEFTU0VSVChzb3Vy
Y2VCdWZmZXIubGFzdCgpID09ICdcMCcpOworICAgIHNvdXJjZUJ1ZmZlci5yZW1vdmVMYXN0KCk7
CisKKyAgICBWZWN0b3I8VUNoYXIsIHVybEJ5dGVzQnVmZmVyTGVuZ3RoPiBub3JtYWxpemVkQ2hh
cmFjdGVycyhzb3VyY2VCdWZmZXIuc2l6ZSgpKTsKKyAgICBVRXJyb3JDb2RlIHVlcnJvciA9IFVf
WkVST19FUlJPUjsKKyAgICBjb25zdCBVTm9ybWFsaXplcjIgKm5vcm1hbGl6ZXIgPSB1bm9ybTJf
Z2V0TkZDSW5zdGFuY2UoJnVlcnJvcik7CisgICAgaW50MzJfdCBub3JtYWxpemVkTGVuZ3RoID0g
dW5vcm0yX25vcm1hbGl6ZShub3JtYWxpemVyLCBzb3VyY2VCdWZmZXIuZGF0YSgpLCBzb3VyY2VC
dWZmZXIuc2l6ZSgpLCBub3JtYWxpemVkQ2hhcmFjdGVycy5kYXRhKCksIG5vcm1hbGl6ZWRDaGFy
YWN0ZXJzLnNpemUoKSwgJnVlcnJvcik7CisgICAgaWYgKHVlcnJvciA9PSBVX0JVRkZFUl9PVkVS
RkxPV19FUlJPUikgeworICAgICAgICB1ZXJyb3IgPSBVX1pFUk9fRVJST1I7CisgICAgICAgIG5v
cm1hbGl6ZWRDaGFyYWN0ZXJzLnJlc2l6ZShub3JtYWxpemVkTGVuZ3RoKTsKKyAgICAgICAgbm9y
bWFsaXplZExlbmd0aCA9IHVub3JtMl9ub3JtYWxpemUobm9ybWFsaXplciwgc291cmNlQnVmZmVy
LmRhdGEoKSwgc291cmNlQnVmZmVyLnNpemUoKSwgbm9ybWFsaXplZENoYXJhY3RlcnMuZGF0YSgp
LCBub3JtYWxpemVkTGVuZ3RoLCAmdWVycm9yKTsKKyAgICB9CisgICAgaWYgKFVfRkFJTFVSRSh1
ZXJyb3IpKQorICAgICAgICByZXN1bHQgPSBzdHJpbmc7CisgICAgZWxzZQorICAgICAgICByZXN1
bHQgPSBbTlNTdHJpbmcgaW5pdFdpdGhDaGFyYWN0ZXJzOm5vcm1hbGl6ZWRDaGFyYWN0ZXJzLmRh
dGEoKSwgbGVuZ3RoOm5vcm1hbGl6ZWRMZW5ndGhdOworCiAgICAgcmV0dXJuIENGQnJpZGdpbmdS
ZWxlYXNlKGNyZWF0ZVN0cmluZ1dpdGhFc2NhcGVkVW5zYWZlQ2hhcmFjdGVycygoX19icmlkZ2Ug
Q0ZTdHJpbmdSZWYpcmVzdWx0LmdldCgpKSk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357858</attachid>
            <date>2018-12-20 13:30:36 -0800</date>
            <delta_ts>2018-12-20 13:46:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192945-20181220153035.patch</filename>
            <type>text/plain</type>
            <size>2925</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5NDI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDY0ZGRiZDQzZTI4YWNiYTI3Mjk3MWU5
ZjM1OGUyYjY0NDRhNWJjMmUuLjkyYzJmMmNjN2EyMmFiMDk5YzZkM2VjYzE3MzhiZmMwODU2ZDhm
YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTgtMTItMjAgIE1pY2hhZWwgQ2F0YW56YXJvICA8
bWNhdGFuemFyb0BpZ2FsaWEuY29tPgorCisgICAgICAgIFVzZSB1bm9ybTJfbm9ybWFsaXplIGlu
c3RlYWQgb2YgcHJlY29tcG9zZWRTdHJpbmdXaXRoQ2Fub25pY2FsTWFwcGluZyBpbiB1c2VyVmlz
aWJsZVN0cmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTkyOTQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgUmVwbGFjZSB1c2Ugb2YgdGhlIG5pY2UgTlNTdHJpbmcgZnVuY3Rpb24gcHJlY29tcG9zZWRT
dHJpbmdXaXRoQ2Fub25pY2FsTWFwcGluZyB3aXRoIHRoZSBJQ1UKKyAgICAgICAgQVBJIHVub3Jt
Ml9ub3JtYWxpemUuIFRoaXMgaXMgdG8gcHJlcCB0aGUgY29kZSBmb3IgdHJhbnNsYXRpb24gdG8g
Y3Jvc3MtcGxhdGZvcm0gQysrLiBPZgorICAgICAgICBjb3Vyc2UgdGhpcyBpcyBtdWNoIHdvcnNl
IHRoYW4gdGhlIHByZWV4aXN0aW5nIGNvZGUsIGJ1dCB0aGlzIGlzIGp1c3QgYSB0cmFuc2l0aW9u
YWwKKyAgICAgICAgbWVhc3VyZSBhbmQgbm90IHRoZSBmaW5hbCBzdGF0ZSBvZiB0aGUgY29kZS4g
SXQgd291bGRuJ3QgbWFrZSBzZW5zZSB0byBkbyB0aGlzIGlmIHRoZSBjb2RlCisgICAgICAgIHdl
cmUgdG8gcmVtYWluIE9iamVjdGl2ZSBDKysuCisKKyAgICAgICAgKiB3dGYvY29jb2EvTlNVUkxF
eHRyYXMubW06CisgICAgICAgIChXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKToKKwogMjAxOC0xMi0x
OSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIHd0Zi9PcHRpb25h
bC5oOiBtb3ZlLWNvbnN0cnVjdG9yIGFuZCBtb3ZlLWFzc2lnbm1lbnQgb3BlcmF0b3Igc2hvdWxk
IGRpc2VuZ2FnZSB0aGUgdmFsdWUgYmVpbmcgbW92ZWQgZnJvbQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvY29jb2EvTlNVUkxFeHRyYXMubW0gYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9OU1VS
TEV4dHJhcy5tbQppbmRleCBkNTdiOTk1MWEwN2Y5NmEyY2ViZGI5NzdmNjhlOTE5YjE4YzZiZWE4
Li4xNTQ5YjcxODQwOTg1MjkwNzQ1NzEzNzJhZjhlOWI3ZmMyYTQwOGNjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9jb2NvYS9OU1VSTEV4dHJhcy5tbQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9j
b2NvYS9OU1VSTEV4dHJhcy5tbQpAQCAtMzksNiArMzksNyBAQAogI2ltcG9ydCA8d3RmL1ZlY3Rv
ci5oPgogI2ltcG9ydCA8dW5pY29kZS91Y2hhci5oPgogI2ltcG9ydCA8dW5pY29kZS91aWRuYS5o
PgorI2ltcG9ydCA8dW5pY29kZS91bm9ybS5oPgogI2ltcG9ydCA8dW5pY29kZS91c2NyaXB0Lmg+
CiAKIC8vIE5lZWRzIHRvIGJlIGJpZyBlbm91Z2ggdG8gaG9sZCBhbiBJRE4tZW5jb2RlZCBuYW1l
LgpAQCAtMTE2NSw3ICsxMTY2LDI0IEBAIE5TU3RyaW5nICp1c2VyVmlzaWJsZVN0cmluZyhOU1VS
TCAqVVJMKQogICAgICAgICAgICAgcmVzdWx0ID0gbWFwcGVkUmVzdWx0OwogICAgIH0KIAotICAg
IHJlc3VsdCA9IFtyZXN1bHQgcHJlY29tcG9zZWRTdHJpbmdXaXRoQ2Fub25pY2FsTWFwcGluZ107
CisgICAgYXV0byBzb3VyY2VCdWZmZXIgPSBTdHJpbmcocmVzdWx0LmdldCgpKS5jaGFyYWN0ZXJz
V2l0aE51bGxUZXJtaW5hdGlvbigpOworICAgIEFTU0VSVChzb3VyY2VCdWZmZXIubGFzdCgpID09
ICdcMCcpOworICAgIHNvdXJjZUJ1ZmZlci5yZW1vdmVMYXN0KCk7CisKKyAgICBWZWN0b3I8VUNo
YXIsIFVSTF9CWVRFU19CVUZGRVJfTEVOR1RIPiBub3JtYWxpemVkQ2hhcmFjdGVycyhzb3VyY2VC
dWZmZXIuc2l6ZSgpKTsKKyAgICBVRXJyb3JDb2RlIHVlcnJvciA9IFVfWkVST19FUlJPUjsKKyAg
ICBjb25zdCBVTm9ybWFsaXplcjIgKm5vcm1hbGl6ZXIgPSB1bm9ybTJfZ2V0TkZDSW5zdGFuY2Uo
JnVlcnJvcik7CisgICAgaW50MzJfdCBub3JtYWxpemVkTGVuZ3RoID0gdW5vcm0yX25vcm1hbGl6
ZShub3JtYWxpemVyLCBzb3VyY2VCdWZmZXIuZGF0YSgpLCBzb3VyY2VCdWZmZXIuc2l6ZSgpLCBu
b3JtYWxpemVkQ2hhcmFjdGVycy5kYXRhKCksIG5vcm1hbGl6ZWRDaGFyYWN0ZXJzLnNpemUoKSwg
JnVlcnJvcik7CisgICAgaWYgKHVlcnJvciA9PSBVX0JVRkZFUl9PVkVSRkxPV19FUlJPUikgewor
ICAgICAgICB1ZXJyb3IgPSBVX1pFUk9fRVJST1I7CisgICAgICAgIG5vcm1hbGl6ZWRDaGFyYWN0
ZXJzLnJlc2l6ZShub3JtYWxpemVkTGVuZ3RoKTsKKyAgICAgICAgbm9ybWFsaXplZExlbmd0aCA9
IHVub3JtMl9ub3JtYWxpemUobm9ybWFsaXplciwgc291cmNlQnVmZmVyLmRhdGEoKSwgc291cmNl
QnVmZmVyLnNpemUoKSwgbm9ybWFsaXplZENoYXJhY3RlcnMuZGF0YSgpLCBub3JtYWxpemVkTGVu
Z3RoLCAmdWVycm9yKTsKKyAgICB9CisgICAgaWYgKFVfRkFJTFVSRSh1ZXJyb3IpKQorICAgICAg
ICByZXN1bHQgPSBzdHJpbmc7CisgICAgZWxzZQorICAgICAgICByZXN1bHQgPSBbTlNTdHJpbmcg
aW5pdFdpdGhDaGFyYWN0ZXJzOm5vcm1hbGl6ZWRDaGFyYWN0ZXJzLmRhdGEoKSwgbGVuZ3RoOm5v
cm1hbGl6ZWRMZW5ndGhdOworCiAgICAgcmV0dXJuIENGQnJpZGdpbmdSZWxlYXNlKGNyZWF0ZVN0
cmluZ1dpdGhFc2NhcGVkVW5zYWZlQ2hhcmFjdGVycygoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpcmVz
dWx0LmdldCgpKSk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357862</attachid>
            <date>2018-12-20 13:46:10 -0800</date>
            <delta_ts>2018-12-20 13:55:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192945-20181220154609.patch</filename>
            <type>text/plain</type>
            <size>2935</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5NDI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDY0ZGRiZDQzZTI4YWNiYTI3Mjk3MWU5
ZjM1OGUyYjY0NDRhNWJjMmUuLjkyYzJmMmNjN2EyMmFiMDk5YzZkM2VjYzE3MzhiZmMwODU2ZDhm
YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTgtMTItMjAgIE1pY2hhZWwgQ2F0YW56YXJvICA8
bWNhdGFuemFyb0BpZ2FsaWEuY29tPgorCisgICAgICAgIFVzZSB1bm9ybTJfbm9ybWFsaXplIGlu
c3RlYWQgb2YgcHJlY29tcG9zZWRTdHJpbmdXaXRoQ2Fub25pY2FsTWFwcGluZyBpbiB1c2VyVmlz
aWJsZVN0cmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTkyOTQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgUmVwbGFjZSB1c2Ugb2YgdGhlIG5pY2UgTlNTdHJpbmcgZnVuY3Rpb24gcHJlY29tcG9zZWRT
dHJpbmdXaXRoQ2Fub25pY2FsTWFwcGluZyB3aXRoIHRoZSBJQ1UKKyAgICAgICAgQVBJIHVub3Jt
Ml9ub3JtYWxpemUuIFRoaXMgaXMgdG8gcHJlcCB0aGUgY29kZSBmb3IgdHJhbnNsYXRpb24gdG8g
Y3Jvc3MtcGxhdGZvcm0gQysrLiBPZgorICAgICAgICBjb3Vyc2UgdGhpcyBpcyBtdWNoIHdvcnNl
IHRoYW4gdGhlIHByZWV4aXN0aW5nIGNvZGUsIGJ1dCB0aGlzIGlzIGp1c3QgYSB0cmFuc2l0aW9u
YWwKKyAgICAgICAgbWVhc3VyZSBhbmQgbm90IHRoZSBmaW5hbCBzdGF0ZSBvZiB0aGUgY29kZS4g
SXQgd291bGRuJ3QgbWFrZSBzZW5zZSB0byBkbyB0aGlzIGlmIHRoZSBjb2RlCisgICAgICAgIHdl
cmUgdG8gcmVtYWluIE9iamVjdGl2ZSBDKysuCisKKyAgICAgICAgKiB3dGYvY29jb2EvTlNVUkxF
eHRyYXMubW06CisgICAgICAgIChXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKToKKwogMjAxOC0xMi0x
OSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIHd0Zi9PcHRpb25h
bC5oOiBtb3ZlLWNvbnN0cnVjdG9yIGFuZCBtb3ZlLWFzc2lnbm1lbnQgb3BlcmF0b3Igc2hvdWxk
IGRpc2VuZ2FnZSB0aGUgdmFsdWUgYmVpbmcgbW92ZWQgZnJvbQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvY29jb2EvTlNVUkxFeHRyYXMubW0gYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9OU1VS
TEV4dHJhcy5tbQppbmRleCBkNTdiOTk1MWEwN2Y5NmEyY2ViZGI5NzdmNjhlOTE5YjE4YzZiZWE4
Li41YWI5ZTMwMzExOTJiN2UwNmJhY2RhZDk2OTRlNjMyMWVjZjcxODliIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9jb2NvYS9OU1VSTEV4dHJhcy5tbQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9j
b2NvYS9OU1VSTEV4dHJhcy5tbQpAQCAtMzksNiArMzksNyBAQAogI2ltcG9ydCA8d3RmL1ZlY3Rv
ci5oPgogI2ltcG9ydCA8dW5pY29kZS91Y2hhci5oPgogI2ltcG9ydCA8dW5pY29kZS91aWRuYS5o
PgorI2ltcG9ydCA8dW5pY29kZS91bm9ybS5oPgogI2ltcG9ydCA8dW5pY29kZS91c2NyaXB0Lmg+
CiAKIC8vIE5lZWRzIHRvIGJlIGJpZyBlbm91Z2ggdG8gaG9sZCBhbiBJRE4tZW5jb2RlZCBuYW1l
LgpAQCAtMTE2NSw3ICsxMTY2LDI0IEBAIE5TU3RyaW5nICp1c2VyVmlzaWJsZVN0cmluZyhOU1VS
TCAqVVJMKQogICAgICAgICAgICAgcmVzdWx0ID0gbWFwcGVkUmVzdWx0OwogICAgIH0KIAotICAg
IHJlc3VsdCA9IFtyZXN1bHQgcHJlY29tcG9zZWRTdHJpbmdXaXRoQ2Fub25pY2FsTWFwcGluZ107
CisgICAgYXV0byBzb3VyY2VCdWZmZXIgPSBTdHJpbmcocmVzdWx0LmdldCgpKS5jaGFyYWN0ZXJz
V2l0aE51bGxUZXJtaW5hdGlvbigpOworICAgIEFTU0VSVChzb3VyY2VCdWZmZXIubGFzdCgpID09
ICdcMCcpOworICAgIHNvdXJjZUJ1ZmZlci5yZW1vdmVMYXN0KCk7CisKKyAgICBWZWN0b3I8VUNo
YXIsIFVSTF9CWVRFU19CVUZGRVJfTEVOR1RIPiBub3JtYWxpemVkQ2hhcmFjdGVycyhzb3VyY2VC
dWZmZXIuc2l6ZSgpKTsKKyAgICBVRXJyb3JDb2RlIHVlcnJvciA9IFVfWkVST19FUlJPUjsKKyAg
ICBjb25zdCBVTm9ybWFsaXplcjIgKm5vcm1hbGl6ZXIgPSB1bm9ybTJfZ2V0TkZDSW5zdGFuY2Uo
JnVlcnJvcik7CisgICAgaW50MzJfdCBub3JtYWxpemVkTGVuZ3RoID0gdW5vcm0yX25vcm1hbGl6
ZShub3JtYWxpemVyLCBzb3VyY2VCdWZmZXIuZGF0YSgpLCBzb3VyY2VCdWZmZXIuc2l6ZSgpLCBu
b3JtYWxpemVkQ2hhcmFjdGVycy5kYXRhKCksIG5vcm1hbGl6ZWRDaGFyYWN0ZXJzLnNpemUoKSwg
JnVlcnJvcik7CisgICAgaWYgKHVlcnJvciA9PSBVX0JVRkZFUl9PVkVSRkxPV19FUlJPUikgewor
ICAgICAgICB1ZXJyb3IgPSBVX1pFUk9fRVJST1I7CisgICAgICAgIG5vcm1hbGl6ZWRDaGFyYWN0
ZXJzLnJlc2l6ZShub3JtYWxpemVkTGVuZ3RoKTsKKyAgICAgICAgbm9ybWFsaXplZExlbmd0aCA9
IHVub3JtMl9ub3JtYWxpemUobm9ybWFsaXplciwgc291cmNlQnVmZmVyLmRhdGEoKSwgc291cmNl
QnVmZmVyLnNpemUoKSwgbm9ybWFsaXplZENoYXJhY3RlcnMuZGF0YSgpLCBub3JtYWxpemVkTGVu
Z3RoLCAmdWVycm9yKTsKKyAgICB9CisgICAgaWYgKFVfRkFJTFVSRSh1ZXJyb3IpKQorICAgICAg
ICByZXN1bHQgPSBbTlNTdHJpbmcgc3RyaW5nXTsKKyAgICBlbHNlCisgICAgICAgIHJlc3VsdCA9
IFtOU1N0cmluZyBpbml0V2l0aENoYXJhY3RlcnM6bm9ybWFsaXplZENoYXJhY3RlcnMuZGF0YSgp
IGxlbmd0aDpub3JtYWxpemVkTGVuZ3RoXTsKKwogICAgIHJldHVybiBDRkJyaWRnaW5nUmVsZWFz
ZShjcmVhdGVTdHJpbmdXaXRoRXNjYXBlZFVuc2FmZUNoYXJhY3RlcnMoKF9fYnJpZGdlIENGU3Ry
aW5nUmVmKXJlc3VsdC5nZXQoKSkpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357865</attachid>
            <date>2018-12-20 13:55:40 -0800</date>
            <delta_ts>2018-12-22 16:48:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192945-20181220155539.patch</filename>
            <type>text/plain</type>
            <size>2943</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5NDI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDY0ZGRiZDQzZTI4YWNiYTI3Mjk3MWU5
ZjM1OGUyYjY0NDRhNWJjMmUuLjkyYzJmMmNjN2EyMmFiMDk5YzZkM2VjYzE3MzhiZmMwODU2ZDhm
YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTgtMTItMjAgIE1pY2hhZWwgQ2F0YW56YXJvICA8
bWNhdGFuemFyb0BpZ2FsaWEuY29tPgorCisgICAgICAgIFVzZSB1bm9ybTJfbm9ybWFsaXplIGlu
c3RlYWQgb2YgcHJlY29tcG9zZWRTdHJpbmdXaXRoQ2Fub25pY2FsTWFwcGluZyBpbiB1c2VyVmlz
aWJsZVN0cmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTkyOTQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgUmVwbGFjZSB1c2Ugb2YgdGhlIG5pY2UgTlNTdHJpbmcgZnVuY3Rpb24gcHJlY29tcG9zZWRT
dHJpbmdXaXRoQ2Fub25pY2FsTWFwcGluZyB3aXRoIHRoZSBJQ1UKKyAgICAgICAgQVBJIHVub3Jt
Ml9ub3JtYWxpemUuIFRoaXMgaXMgdG8gcHJlcCB0aGUgY29kZSBmb3IgdHJhbnNsYXRpb24gdG8g
Y3Jvc3MtcGxhdGZvcm0gQysrLiBPZgorICAgICAgICBjb3Vyc2UgdGhpcyBpcyBtdWNoIHdvcnNl
IHRoYW4gdGhlIHByZWV4aXN0aW5nIGNvZGUsIGJ1dCB0aGlzIGlzIGp1c3QgYSB0cmFuc2l0aW9u
YWwKKyAgICAgICAgbWVhc3VyZSBhbmQgbm90IHRoZSBmaW5hbCBzdGF0ZSBvZiB0aGUgY29kZS4g
SXQgd291bGRuJ3QgbWFrZSBzZW5zZSB0byBkbyB0aGlzIGlmIHRoZSBjb2RlCisgICAgICAgIHdl
cmUgdG8gcmVtYWluIE9iamVjdGl2ZSBDKysuCisKKyAgICAgICAgKiB3dGYvY29jb2EvTlNVUkxF
eHRyYXMubW06CisgICAgICAgIChXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKToKKwogMjAxOC0xMi0x
OSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIHd0Zi9PcHRpb25h
bC5oOiBtb3ZlLWNvbnN0cnVjdG9yIGFuZCBtb3ZlLWFzc2lnbm1lbnQgb3BlcmF0b3Igc2hvdWxk
IGRpc2VuZ2FnZSB0aGUgdmFsdWUgYmVpbmcgbW92ZWQgZnJvbQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvY29jb2EvTlNVUkxFeHRyYXMubW0gYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9OU1VS
TEV4dHJhcy5tbQppbmRleCBkNTdiOTk1MWEwN2Y5NmEyY2ViZGI5NzdmNjhlOTE5YjE4YzZiZWE4
Li42YTNjNTJmMjM1OWQxMmFlMDU5YTMxOTFlOTNjZGU5NTg1YmFmNjkwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9jb2NvYS9OU1VSTEV4dHJhcy5tbQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9j
b2NvYS9OU1VSTEV4dHJhcy5tbQpAQCAtMzksNiArMzksNyBAQAogI2ltcG9ydCA8d3RmL1ZlY3Rv
ci5oPgogI2ltcG9ydCA8dW5pY29kZS91Y2hhci5oPgogI2ltcG9ydCA8dW5pY29kZS91aWRuYS5o
PgorI2ltcG9ydCA8dW5pY29kZS91bm9ybS5oPgogI2ltcG9ydCA8dW5pY29kZS91c2NyaXB0Lmg+
CiAKIC8vIE5lZWRzIHRvIGJlIGJpZyBlbm91Z2ggdG8gaG9sZCBhbiBJRE4tZW5jb2RlZCBuYW1l
LgpAQCAtMTE2NSw3ICsxMTY2LDI0IEBAIE5TU3RyaW5nICp1c2VyVmlzaWJsZVN0cmluZyhOU1VS
TCAqVVJMKQogICAgICAgICAgICAgcmVzdWx0ID0gbWFwcGVkUmVzdWx0OwogICAgIH0KIAotICAg
IHJlc3VsdCA9IFtyZXN1bHQgcHJlY29tcG9zZWRTdHJpbmdXaXRoQ2Fub25pY2FsTWFwcGluZ107
CisgICAgYXV0byBzb3VyY2VCdWZmZXIgPSBTdHJpbmcocmVzdWx0LmdldCgpKS5jaGFyYWN0ZXJz
V2l0aE51bGxUZXJtaW5hdGlvbigpOworICAgIEFTU0VSVChzb3VyY2VCdWZmZXIubGFzdCgpID09
ICdcMCcpOworICAgIHNvdXJjZUJ1ZmZlci5yZW1vdmVMYXN0KCk7CisKKyAgICBWZWN0b3I8VUNo
YXIsIFVSTF9CWVRFU19CVUZGRVJfTEVOR1RIPiBub3JtYWxpemVkQ2hhcmFjdGVycyhzb3VyY2VC
dWZmZXIuc2l6ZSgpKTsKKyAgICBVRXJyb3JDb2RlIHVlcnJvciA9IFVfWkVST19FUlJPUjsKKyAg
ICBjb25zdCBVTm9ybWFsaXplcjIgKm5vcm1hbGl6ZXIgPSB1bm9ybTJfZ2V0TkZDSW5zdGFuY2Uo
JnVlcnJvcik7CisgICAgaW50MzJfdCBub3JtYWxpemVkTGVuZ3RoID0gdW5vcm0yX25vcm1hbGl6
ZShub3JtYWxpemVyLCBzb3VyY2VCdWZmZXIuZGF0YSgpLCBzb3VyY2VCdWZmZXIuc2l6ZSgpLCBu
b3JtYWxpemVkQ2hhcmFjdGVycy5kYXRhKCksIG5vcm1hbGl6ZWRDaGFyYWN0ZXJzLnNpemUoKSwg
JnVlcnJvcik7CisgICAgaWYgKHVlcnJvciA9PSBVX0JVRkZFUl9PVkVSRkxPV19FUlJPUikgewor
ICAgICAgICB1ZXJyb3IgPSBVX1pFUk9fRVJST1I7CisgICAgICAgIG5vcm1hbGl6ZWRDaGFyYWN0
ZXJzLnJlc2l6ZShub3JtYWxpemVkTGVuZ3RoKTsKKyAgICAgICAgbm9ybWFsaXplZExlbmd0aCA9
IHVub3JtMl9ub3JtYWxpemUobm9ybWFsaXplciwgc291cmNlQnVmZmVyLmRhdGEoKSwgc291cmNl
QnVmZmVyLnNpemUoKSwgbm9ybWFsaXplZENoYXJhY3RlcnMuZGF0YSgpLCBub3JtYWxpemVkTGVu
Z3RoLCAmdWVycm9yKTsKKyAgICB9CisgICAgaWYgKFVfRkFJTFVSRSh1ZXJyb3IpKQorICAgICAg
ICByZXN1bHQgPSBbTlNTdHJpbmcgc3RyaW5nXTsKKyAgICBlbHNlCisgICAgICAgIHJlc3VsdCA9
IFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoQ2hhcmFjdGVyczpub3JtYWxpemVkQ2hhcmFjdGVy
cy5kYXRhKCkgbGVuZ3RoOm5vcm1hbGl6ZWRMZW5ndGhdOworCiAgICAgcmV0dXJuIENGQnJpZGdp
bmdSZWxlYXNlKGNyZWF0ZVN0cmluZ1dpdGhFc2NhcGVkVW5zYWZlQ2hhcmFjdGVycygoX19icmlk
Z2UgQ0ZTdHJpbmdSZWYpcmVzdWx0LmdldCgpKSk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>358027</attachid>
            <date>2018-12-22 16:48:15 -0800</date>
            <delta_ts>2019-01-14 17:41:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192945-20181222184814.patch</filename>
            <type>text/plain</type>
            <size>2979</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5NTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDE4MWU2YjJmOWY1N2FkNGVhYWI1YjVm
MDM2ZjM0NGJjZWQxODE2YTEuLjQ1N2ZkMGUxYmZmZWVmYjc5YTEwMzg0MjE4YmNiZDMxMDkzMGFl
NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTgtMTItMjIgIE1pY2hhZWwgQ2F0YW56YXJvICA8
bWNhdGFuemFyb0BpZ2FsaWEuY29tPgorCisgICAgICAgIFVzZSB1bm9ybTJfbm9ybWFsaXplIGlu
c3RlYWQgb2YgcHJlY29tcG9zZWRTdHJpbmdXaXRoQ2Fub25pY2FsTWFwcGluZyBpbiB1c2VyVmlz
aWJsZVN0cmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTkyOTQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgUmVwbGFjZSB1c2Ugb2YgdGhlIG5pY2UgTlNTdHJpbmcgZnVuY3Rpb24gcHJlY29tcG9zZWRT
dHJpbmdXaXRoQ2Fub25pY2FsTWFwcGluZyB3aXRoIHRoZSBJQ1UKKyAgICAgICAgQVBJIHVub3Jt
Ml9ub3JtYWxpemUuIFRoaXMgaXMgdG8gcHJlcCB0aGUgY29kZSBmb3IgdHJhbnNsYXRpb24gdG8g
Y3Jvc3MtcGxhdGZvcm0gQysrLiBPZgorICAgICAgICBjb3Vyc2UgdGhpcyBpcyBtdWNoIHdvcnNl
IHRoYW4gdGhlIHByZWV4aXN0aW5nIGNvZGUsIGJ1dCB0aGlzIGlzIGp1c3QgYSB0cmFuc2l0aW9u
YWwKKyAgICAgICAgbWVhc3VyZSBhbmQgbm90IHRoZSBmaW5hbCBzdGF0ZSBvZiB0aGUgY29kZS4g
SXQgd291bGRuJ3QgbWFrZSBzZW5zZSB0byBkbyB0aGlzIGlmIHRoZSBjb2RlCisgICAgICAgIHdl
cmUgdG8gcmVtYWluIE9iamVjdGl2ZSBDKysuCisKKyAgICAgICAgKiB3dGYvY29jb2EvTlNVUkxF
eHRyYXMubW06CisgICAgICAgIChXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKToKKwogMjAxOC0xMi0y
MSAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeGVkIGJ1aWxk
aW5nIGZvciBtYWNPUyAxMC4xMyB1c2luZyB0aGUgbWFjT1MgMTAuMTQgU0RLLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvY29jb2EvTlNVUkxFeHRyYXMubW0gYi9Tb3VyY2UvV1RGL3d0Zi9j
b2NvYS9OU1VSTEV4dHJhcy5tbQppbmRleCBkNTdiOTk1MWEwN2Y5NmEyY2ViZGI5NzdmNjhlOTE5
YjE4YzZiZWE4Li4wYzAyYjFiNjUwM2QzYTZhZmJhNGFkNDY5MGM5MTkzMWU1ZDkzMmJlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9OU1VSTEV4dHJhcy5tbQorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9jb2NvYS9OU1VSTEV4dHJhcy5tbQpAQCAtMzksNiArMzksNyBAQAogI2ltcG9ydCA8
d3RmL1ZlY3Rvci5oPgogI2ltcG9ydCA8dW5pY29kZS91Y2hhci5oPgogI2ltcG9ydCA8dW5pY29k
ZS91aWRuYS5oPgorI2ltcG9ydCA8dW5pY29kZS91bm9ybS5oPgogI2ltcG9ydCA8dW5pY29kZS91
c2NyaXB0Lmg+CiAKIC8vIE5lZWRzIHRvIGJlIGJpZyBlbm91Z2ggdG8gaG9sZCBhbiBJRE4tZW5j
b2RlZCBuYW1lLgpAQCAtMTE2NSw3ICsxMTY2LDI2IEBAIE5TU3RyaW5nICp1c2VyVmlzaWJsZVN0
cmluZyhOU1VSTCAqVVJMKQogICAgICAgICAgICAgcmVzdWx0ID0gbWFwcGVkUmVzdWx0OwogICAg
IH0KIAotICAgIHJlc3VsdCA9IFtyZXN1bHQgcHJlY29tcG9zZWRTdHJpbmdXaXRoQ2Fub25pY2Fs
TWFwcGluZ107CisgICAgYXV0byBzb3VyY2VCdWZmZXIgPSBTdHJpbmcocmVzdWx0LmdldCgpKS5j
aGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpOworICAgIEFTU0VSVChzb3VyY2VCdWZmZXIu
bGFzdCgpID09ICdcMCcpOworICAgIHNvdXJjZUJ1ZmZlci5yZW1vdmVMYXN0KCk7CisKKyAgICBy
ZXN1bHQgPSBbTlNTdHJpbmcgc3RyaW5nXTsKKyAgICBWZWN0b3I8VUNoYXIsIFVSTF9CWVRFU19C
VUZGRVJfTEVOR1RIPiBub3JtYWxpemVkQ2hhcmFjdGVycyhzb3VyY2VCdWZmZXIuc2l6ZSgpKTsK
KyAgICBVRXJyb3JDb2RlIHVlcnJvciA9IFVfWkVST19FUlJPUjsKKyAgICBpbnQzMl90IG5vcm1h
bGl6ZWRMZW5ndGggPSAwOworICAgIGNvbnN0IFVOb3JtYWxpemVyMiAqbm9ybWFsaXplciA9IHVu
b3JtMl9nZXRORkNJbnN0YW5jZSgmdWVycm9yKTsKKyAgICBpZiAoIVVfRkFJTFVSRSh1ZXJyb3Ip
KSB7CisgICAgICAgIG5vcm1hbGl6ZWRMZW5ndGggPSB1bm9ybTJfbm9ybWFsaXplKG5vcm1hbGl6
ZXIsIHNvdXJjZUJ1ZmZlci5kYXRhKCksIHNvdXJjZUJ1ZmZlci5zaXplKCksIG5vcm1hbGl6ZWRD
aGFyYWN0ZXJzLmRhdGEoKSwgbm9ybWFsaXplZENoYXJhY3RlcnMuc2l6ZSgpLCAmdWVycm9yKTsK
KyAgICAgICAgaWYgKHVlcnJvciA9PSBVX0JVRkZFUl9PVkVSRkxPV19FUlJPUikgeworICAgICAg
ICAgICAgdWVycm9yID0gVV9aRVJPX0VSUk9SOworICAgICAgICAgICAgbm9ybWFsaXplZENoYXJh
Y3RlcnMucmVzaXplKG5vcm1hbGl6ZWRMZW5ndGgpOworICAgICAgICAgICAgbm9ybWFsaXplZExl
bmd0aCA9IHVub3JtMl9ub3JtYWxpemUobm9ybWFsaXplciwgc291cmNlQnVmZmVyLmRhdGEoKSwg
c291cmNlQnVmZmVyLnNpemUoKSwgbm9ybWFsaXplZENoYXJhY3RlcnMuZGF0YSgpLCBub3JtYWxp
emVkTGVuZ3RoLCAmdWVycm9yKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIVVfRkFJTFVSRSh1
ZXJyb3IpKQorICAgICAgICAgICAgcmVzdWx0ID0gW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhD
aGFyYWN0ZXJzOm5vcm1hbGl6ZWRDaGFyYWN0ZXJzLmRhdGEoKSBsZW5ndGg6bm9ybWFsaXplZExl
bmd0aF07CisgICAgfQorCiAgICAgcmV0dXJuIENGQnJpZGdpbmdSZWxlYXNlKGNyZWF0ZVN0cmlu
Z1dpdGhFc2NhcGVkVW5zYWZlQ2hhcmFjdGVycygoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpcmVzdWx0
LmdldCgpKSk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359107</attachid>
            <date>2019-01-14 17:41:25 -0800</date>
            <delta_ts>2019-01-14 18:36:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192945-20190114194124.patch</filename>
            <type>text/plain</type>
            <size>3469</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5OTYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDlkMGFlM2UzMjUxNmFlMzMyYzE0YTRl
M2E3YzM4YWRmNWQ3NGFiNTkuLjIyMTY5YzJjZjgzZGMxZjVmNTcyNWRmNTZjZDY3YzY1NDNjMzBi
NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTktMDEtMTQgIE1pY2hhZWwgQ2F0YW56YXJvICA8
bWNhdGFuemFyb0BpZ2FsaWEuY29tPgorCisgICAgICAgIFVzZSB1bm9ybTJfbm9ybWFsaXplIGlu
c3RlYWQgb2YgcHJlY29tcG9zZWRTdHJpbmdXaXRoQ2Fub25pY2FsTWFwcGluZyBpbiB1c2VyVmlz
aWJsZVN0cmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTkyOTQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgUmVwbGFjZSB1c2Ugb2YgdGhlIG5pY2UgTlNTdHJpbmcgZnVuY3Rpb24gcHJlY29tcG9zZWRT
dHJpbmdXaXRoQ2Fub25pY2FsTWFwcGluZyB3aXRoIHRoZSBJQ1UKKyAgICAgICAgQVBJIHVub3Jt
Ml9ub3JtYWxpemUuIFRoaXMgaXMgdG8gcHJlcCB0aGUgY29kZSBmb3IgdHJhbnNsYXRpb24gdG8g
Y3Jvc3MtcGxhdGZvcm0gQysrLiBPZgorICAgICAgICBjb3Vyc2UgdGhpcyBpcyBtdWNoIHdvcnNl
IHRoYW4gdGhlIHByZWV4aXN0aW5nIGNvZGUsIGJ1dCB0aGlzIGlzIGp1c3QgYSB0cmFuc2l0aW9u
YWwKKyAgICAgICAgbWVhc3VyZSBhbmQgbm90IHRoZSBmaW5hbCBzdGF0ZSBvZiB0aGUgY29kZS4g
SXQgd291bGRuJ3QgbWFrZSBzZW5zZSB0byBkbyB0aGlzIGlmIHRoZSBjb2RlCisgICAgICAgIHdl
cmUgdG8gcmVtYWluIE9iamVjdGl2ZSBDKysuCisKKyAgICAgICAgKiB3dGYvY29jb2EvTlNVUkxF
eHRyYXMubW06CisgICAgICAgIChXVEY6OnRvTm9ybWFsaXphdGlvbkZvcm1DKToKKyAgICAgICAg
KFdURjo6dXNlclZpc2libGVTdHJpbmcpOgorCiAyMDE5LTAxLTEyICBUaW1vdGh5IEhhdGNoZXIg
IDx0aW1vdGh5QGFwcGxlLmNvbT4KIAogICAgICAgICBIYXZlIHByZWZlcnMtY29sb3Itc2NoZW1l
OiBsaWdodCBhbHdheXMgbWF0Y2ggb24gbWFjT1MgdmVyc2lvbnMgYmVmb3JlIE1vamF2ZS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2NvY29hL05TVVJMRXh0cmFzLm1tIGIvU291cmNlL1dU
Ri93dGYvY29jb2EvTlNVUkxFeHRyYXMubW0KaW5kZXggODYyMjcwMGFlY2YxMmMwYzRjODdhNTk1
NDAxNjIzOGIzNGQ0ZWFjYS4uZGFkOWQ2MjRiNzU3OTNhYjY3NTA1MGVhZDAxY2ExZGI1MjljM2Zi
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvY29jb2EvTlNVUkxFeHRyYXMubW0KKysrIGIv
U291cmNlL1dURi93dGYvY29jb2EvTlNVUkxFeHRyYXMubW0KQEAgLTMyLDYgKzMyLDcgQEAKIAog
I2ltcG9ydCA8dW5pY29kZS91Y2hhci5oPgogI2ltcG9ydCA8dW5pY29kZS91aWRuYS5oPgorI2lt
cG9ydCA8dW5pY29kZS91bm9ybS5oPgogI2ltcG9ydCA8dW5pY29kZS91c2NyaXB0Lmg+CiAjaW1w
b3J0IDx3dGYvRnVuY3Rpb24uaD4KICNpbXBvcnQgPHd0Zi9IZXhOdW1iZXIuaD4KQEAgLTEwOTUs
NiArMTA5NiwzMSBAQCBzdGF0aWMgQ0ZTdHJpbmdSZWYgY3JlYXRlU3RyaW5nV2l0aEVzY2FwZWRV
bnNhZmVDaGFyYWN0ZXJzKENGU3RyaW5nUmVmIHN0cmluZykKICAgICByZXR1cm4gQ0ZTdHJpbmdD
cmVhdGVXaXRoQ2hhcmFjdGVycyhudWxscHRyLCBvdXRCdWZmZXIuZGF0YSgpLCBvdXRCdWZmZXIu
c2l6ZSgpKTsKIH0KIAorc3RhdGljIFN0cmluZyB0b05vcm1hbGl6YXRpb25Gb3JtQyhjb25zdCBT
dHJpbmcmIHN0cmluZykKK3sKKyAgICBhdXRvIHNvdXJjZUJ1ZmZlciA9IHN0cmluZy5jaGFyYWN0
ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpOworICAgIEFTU0VSVChzb3VyY2VCdWZmZXIubGFzdCgp
ID09ICdcMCcpOworICAgIHNvdXJjZUJ1ZmZlci5yZW1vdmVMYXN0KCk7CisKKyAgICBTdHJpbmcg
cmVzdWx0OworICAgIFZlY3RvcjxVQ2hhciwgVVJMX0JZVEVTX0JVRkZFUl9MRU5HVEg+IG5vcm1h
bGl6ZWRDaGFyYWN0ZXJzKHNvdXJjZUJ1ZmZlci5zaXplKCkpOworICAgIFVFcnJvckNvZGUgdWVy
cm9yID0gVV9aRVJPX0VSUk9SOworICAgIGludDMyX3Qgbm9ybWFsaXplZExlbmd0aCA9IDA7Cisg
ICAgY29uc3QgVU5vcm1hbGl6ZXIyICpub3JtYWxpemVyID0gdW5vcm0yX2dldE5GQ0luc3RhbmNl
KCZ1ZXJyb3IpOworICAgIGlmICghVV9GQUlMVVJFKHVlcnJvcikpIHsKKyAgICAgICAgbm9ybWFs
aXplZExlbmd0aCA9IHVub3JtMl9ub3JtYWxpemUobm9ybWFsaXplciwgc291cmNlQnVmZmVyLmRh
dGEoKSwgc291cmNlQnVmZmVyLnNpemUoKSwgbm9ybWFsaXplZENoYXJhY3RlcnMuZGF0YSgpLCBu
b3JtYWxpemVkQ2hhcmFjdGVycy5zaXplKCksICZ1ZXJyb3IpOworICAgICAgICBpZiAodWVycm9y
ID09IFVfQlVGRkVSX09WRVJGTE9XX0VSUk9SKSB7CisgICAgICAgICAgICB1ZXJyb3IgPSBVX1pF
Uk9fRVJST1I7CisgICAgICAgICAgICBub3JtYWxpemVkQ2hhcmFjdGVycy5yZXNpemUobm9ybWFs
aXplZExlbmd0aCk7CisgICAgICAgICAgICBub3JtYWxpemVkTGVuZ3RoID0gdW5vcm0yX25vcm1h
bGl6ZShub3JtYWxpemVyLCBzb3VyY2VCdWZmZXIuZGF0YSgpLCBzb3VyY2VCdWZmZXIuc2l6ZSgp
LCBub3JtYWxpemVkQ2hhcmFjdGVycy5kYXRhKCksIG5vcm1hbGl6ZWRMZW5ndGgsICZ1ZXJyb3Ip
OworICAgICAgICB9CisgICAgICAgIGlmICghVV9GQUlMVVJFKHVlcnJvcikpCisgICAgICAgICAg
ICByZXN1bHQgPSBTdHJpbmcobm9ybWFsaXplZENoYXJhY3RlcnMuZGF0YSgpLCBub3JtYWxpemVk
TGVuZ3RoKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiBOU1N0cmluZyAqdXNl
clZpc2libGVTdHJpbmcoTlNVUkwgKlVSTCkKIHsKICAgICBOU0RhdGEgKmRhdGEgPSBvcmlnaW5h
bFVSTERhdGEoVVJMKTsKQEAgLTExNjUsNyArMTE5MSw5IEBAIE5TU3RyaW5nICp1c2VyVmlzaWJs
ZVN0cmluZyhOU1VSTCAqVVJMKQogICAgICAgICAgICAgcmVzdWx0ID0gbWFwcGVkUmVzdWx0Owog
ICAgIH0KIAotICAgIHJlc3VsdCA9IFtyZXN1bHQgcHJlY29tcG9zZWRTdHJpbmdXaXRoQ2Fub25p
Y2FsTWFwcGluZ107CisgICAgYXV0byB3dGZTdHJpbmcgPSBTdHJpbmcocmVzdWx0LmdldCgpKTsK
KyAgICBhdXRvIG5vcm1hbGl6ZWQgPSB0b05vcm1hbGl6YXRpb25Gb3JtQyh3dGZTdHJpbmcpOwor
ICAgIHJlc3VsdCA9IHN0YXRpY19jYXN0PE5TU3RyaW5nICo+KG5vcm1hbGl6ZWQpOwogICAgIHJl
dHVybiBDRkJyaWRnaW5nUmVsZWFzZShjcmVhdGVTdHJpbmdXaXRoRXNjYXBlZFVuc2FmZUNoYXJh
Y3RlcnMoKF9fYnJpZGdlIENGU3RyaW5nUmVmKXJlc3VsdC5nZXQoKSkpOwogfQogCg==
</data>
<flag name="review"
          id="375911"
          type_id="1"
          status="+"
          setter="achristensen"
    />
          </attachment>
      

    </bug>

</bugzilla>