<?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>159680</bug_id>
          
          <creation_ts>2016-07-12 10:39:15 -0700</creation_ts>
          <short_desc>[WK1][iOS] Crash when WebSocket attempts to dispatch a mixed content blocker event</short_desc>
          <delta_ts>2016-07-13 14:01:02 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>iPhone / iPad</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brent Fulgham">bfulgham</reporter>
          <assigned_to name="Brent Fulgham">bfulgham</assigned_to>
          <cc>aestes</cc>
    
    <cc>andersca</cc>
    
    <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1210083</commentid>
    <comment_count>0</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-07-12 10:39:15 -0700</bug_when>
    <thetext>WebSockets on WK1 will sometimes crash with a null pointer exception when attempting to dispatch a mixed content error event.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1210084</commentid>
    <comment_count>1</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-07-12 10:39:44 -0700</bug_when>
    <thetext>&lt;rdar://problem/22102028&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1210085</commentid>
    <comment_count>2</comment_count>
      <attachid>283426</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-07-12 10:42:00 -0700</bug_when>
    <thetext>Created attachment 283426
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1210086</commentid>
    <comment_count>3</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-07-12 10:42:36 -0700</bug_when>
    <thetext>I&apos;m working on a suitable LayoutTest, but wanted to get feedback on the use of WebThreadRun.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1210093</commentid>
    <comment_count>4</comment_count>
      <attachid>283426</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-07-12 10:54:54 -0700</bug_when>
    <thetext>Comment on attachment 283426
Patch

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

&gt; Source/WebCore/Modules/websockets/WebSocket.cpp:303
&gt; +            WebThreadRun(^{
&gt; +                dispatchOrQueueErrorEvent();
&gt; +                stop();
&gt; +            });

This doesn&apos;t protect the socket.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1210247</commentid>
    <comment_count>5</comment_count>
      <attachid>283470</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-07-12 16:52:16 -0700</bug_when>
    <thetext>Created attachment 283470
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1210251</commentid>
    <comment_count>6</comment_count>
      <attachid>283470</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-07-12 16:56:57 -0700</bug_when>
    <thetext>Comment on attachment 283470
Patch

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

&gt; Source/WebCore/Modules/websockets/WebSocket.cpp:307
&gt; +            dispatch_async(dispatch_get_main_queue(), ^{
&gt; +                WebThreadRun(^{
&gt; +                    dispatchOrQueueErrorEvent();
&gt; +                    stop();
&gt; +                    deref();
&gt; +                });
&gt; +            });

WebThreadRun is already async. Why wrap it in a dispatch_async?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1210274</commentid>
    <comment_count>7</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-07-12 17:40:10 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Comment on attachment 283470 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=283470&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/websockets/WebSocket.cpp:307
&gt; &gt; +            dispatch_async(dispatch_get_main_queue(), ^{
&gt; &gt; +                WebThreadRun(^{
&gt; &gt; +                    dispatchOrQueueErrorEvent();
&gt; &gt; +                    stop();
&gt; &gt; +                    deref();
&gt; &gt; +                });
&gt; &gt; +            });
&gt; 
&gt; WebThreadRun is already async. Why wrap it in a dispatch_async?

See the comment on lines 295-299.

This WebSocket constructor gets created on the WebThread (at least in iOS/WK1). So calling WebThreadRun immediately begins executing the block, which is not what we want.

Instead, we ask the main queue to enqueue the block in the WebThread during the next run loop.

It might be cleaner to modify the WebThread API so that I could just enqueue the block in the run queue without executing the code here.

E.g., What I really want here is for the block I&apos;m sending to WebThreadRun to be executed on the NEXT run loop. I could do that if I could add it to the runQueue member in WebCore/platform/ios/wak/WebCoreThreadRun.cpp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1210275</commentid>
    <comment_count>8</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-07-12 17:40:41 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; Comment on attachment 283470 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=283470&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/Modules/websockets/WebSocket.cpp:307
&gt; &gt; &gt; +            dispatch_async(dispatch_get_main_queue(), ^{
&gt; &gt; &gt; +                WebThreadRun(^{
&gt; &gt; &gt; +                    dispatchOrQueueErrorEvent();
&gt; &gt; &gt; +                    stop();
&gt; &gt; &gt; +                    deref();
&gt; &gt; &gt; +                });
&gt; &gt; &gt; +            });
&gt; &gt; 
&gt; &gt; WebThreadRun is already async. Why wrap it in a dispatch_async?
&gt; 
&gt; See the comment on lines 295-299.
&gt; 
&gt; This WebSocket constructor gets created on the WebThread (at least in
&gt; iOS/WK1). So calling WebThreadRun immediately begins executing the block,
&gt; which is not what we want.
&gt; 
&gt; Instead, we ask the main queue to enqueue the block in the WebThread during
&gt; the next run loop.
&gt; 
&gt; It might be cleaner to modify the WebThread API so that I could just enqueue
&gt; the block in the run queue without executing the code here.
&gt; 
&gt; E.g., What I really want here is for the block I&apos;m sending to WebThreadRun
&gt; to be executed on the NEXT run loop. I could do that if I could add it to
&gt; the runQueue member in WebCore/platform/ios/wak/WebCoreThreadRun.cpp.

Andy: Can you recommend a way to do what I want (see my above comment).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1210278</commentid>
    <comment_count>9</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-07-12 17:47:45 -0700</bug_when>
    <thetext>Can you just use a zero-delay timer?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1210283</commentid>
    <comment_count>10</comment_count>
      <attachid>283480</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-07-12 17:56:28 -0700</bug_when>
    <thetext>Created attachment 283480
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1210285</commentid>
    <comment_count>11</comment_count>
      <attachid>283480</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2016-07-12 17:57:15 -0700</bug_when>
    <thetext>Comment on attachment 283480
Patch

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

&gt; Source/WebCore/Modules/websockets/WebSocket.cpp:304
&gt; +#if USE(WEB_THREAD)
&gt; +            ASSERT(WebThreadIsCurrent());
&gt; +            RunLoop::current().dispatch([this, protectedThis = Ref&lt;WebSocket&gt;(*this)]() {
&gt; +#else
&gt;              RunLoop::main().dispatch([this, protectedThis = Ref&lt;WebSocket&gt;(*this)]() {
&gt; +#endif

Won&apos;t RunLoop::current() work even int he non-WebThread case?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1210286</commentid>
    <comment_count>12</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-07-12 18:00:18 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; Comment on attachment 283480 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=283480&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/websockets/WebSocket.cpp:304
&gt; &gt; +#if USE(WEB_THREAD)
&gt; &gt; +            ASSERT(WebThreadIsCurrent());
&gt; &gt; +            RunLoop::current().dispatch([this, protectedThis = Ref&lt;WebSocket&gt;(*this)]() {
&gt; &gt; +#else
&gt; &gt;              RunLoop::main().dispatch([this, protectedThis = Ref&lt;WebSocket&gt;(*this)]() {
&gt; &gt; +#endif
&gt; 
&gt; Won&apos;t RunLoop::current() work even int he non-WebThread case?

It seems to. I&apos;ll revise the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1210287</commentid>
    <comment_count>13</comment_count>
      <attachid>283481</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-07-12 18:00:46 -0700</bug_when>
    <thetext>Created attachment 283481
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1210289</commentid>
    <comment_count>14</comment_count>
      <attachid>283481</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2016-07-12 18:04:53 -0700</bug_when>
    <thetext>Comment on attachment 283481
Patch

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

&gt; Source/WebCore/Modules/websockets/WebSocket.cpp:68
&gt; +#if USE(WEB_THREAD)
&gt; +#include &quot;WebCoreThreadRun.h&quot;
&gt; +#endif

This shouldn&apos;t be needed anymore.

&gt; Source/WebCore/Modules/websockets/WebSocket.cpp:299
&gt; -            RunLoop::main().dispatch([this, protectedThis = Ref&lt;WebSocket&gt;(*this)]() {
&gt; +            RunLoop::current().dispatch([this, protectedThis = Ref&lt;WebSocket&gt;(*this)]() {

An ASSERT(isMainThread()) (which really means is main-or-web thread) would be nice here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1210291</commentid>
    <comment_count>15</comment_count>
      <attachid>283483</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-07-12 18:07:34 -0700</bug_when>
    <thetext>Created attachment 283483
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1210295</commentid>
    <comment_count>16</comment_count>
      <attachid>283483</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2016-07-12 18:16:42 -0700</bug_when>
    <thetext>Comment on attachment 283483
Patch

Wait, couldn&apos;t this be called on a worker thread?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1210302</commentid>
    <comment_count>17</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2016-07-12 18:27:43 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; Comment on attachment 283483 [details]
&gt; Patch
&gt; 
&gt; Wait, couldn&apos;t this be called on a worker thread?

If so, then your solution of dispatching to the main thread then calling WebThreadRun() seems ok to me. You&apos;d only be penalizing iOS WebKit1 with a second dispatch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1210310</commentid>
    <comment_count>18</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-07-12 20:05:40 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (In reply to comment #16)
&gt; &gt; Comment on attachment 283483 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; Wait, couldn&apos;t this be called on a worker thread?
&gt; 
&gt; If so, then your solution of dispatching to the main thread then calling
&gt; WebThreadRun() seems ok to me. You&apos;d only be penalizing iOS WebKit1 with a
&gt; second dispatch.

Yes -- its possible for these WebSockets to be used by workers, so I&apos;ll revert back to my original patch. :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1210312</commentid>
    <comment_count>19</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-07-12 20:15:26 -0700</bug_when>
    <thetext>Based on Andy&apos;s comments, moving the &quot;dispatch_async(main) + WebThreadRun&quot; version of the patch for approval.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1210511</commentid>
    <comment_count>20</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2016-07-13 10:21:34 -0700</bug_when>
    <thetext>While looking this over I noticed that mixed content checking is bypassed for WebSockets that that don&apos;t have Documents. For instance, it&apos;s possible to communicate using the ws: protocol from inside a Worker on a secure page. I filed &lt;https://bugs.webkit.org/show_bug.cgi?id=159726&gt; about this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1210513</commentid>
    <comment_count>21</comment_count>
      <attachid>283470</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-13 10:26:15 -0700</bug_when>
    <thetext>Comment on attachment 283470
Patch

Clearing flags on attachment: 283470

Committed r203165: &lt;http://trac.webkit.org/changeset/203165&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1210514</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-13 10:26:20 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1210660</commentid>
    <comment_count>23</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-07-13 14:01:02 -0700</bug_when>
    <thetext>FYI there&apos;s probably another crash in this code, bug #149864.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283426</attachid>
            <date>2016-07-12 10:42:00 -0700</date>
            <delta_ts>2016-07-12 16:52:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159680-20160712104117.patch</filename>
            <type>text/plain</type>
            <size>2048</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMzExNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDE2LTA3LTEyICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtXSzFdW2lPU10gQ3Jhc2gg
d2hlbiBXZWJTb2NrZXQgYXR0ZW1wdHMgdG8gZGlzcGF0Y2ggYSBtaXhlZCBjb250ZW50IGJsb2Nr
ZXIgZXZlbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1OTY4MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjIxMDIwMjg+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV0sxIG9uIGlPUyBzaG91bGQgbm90
IHVzZSBSdW5Mb29wOjptYWluKCkuIEluc3RlYWQsIGl0IHNob3VsZCBiZSBkaXNwYXRjaGluZyBl
dmVudHMKKyAgICAgICAgb24gdGhlIFdlYlRocmVhZC4KKworICAgICAgICAqIE1vZHVsZXMvd2Vi
c29ja2V0cy9XZWJTb2NrZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Ojpjb25u
ZWN0KTogRG8gbm90IHVzZSBSdW5Mb29wOjptYWluKCkgd2hlbiB3ZSBzaG91bGQgYmUgdXNpbmcK
KyAgICAgICAgdGhlIFdlYlRocmVhZC4KKwogMjAxNi0wNy0xMiAgRnJlZGVyaWMgV2FuZyAgPGZ3
YW5nQGlnYWxpYS5jb20+CiAKICAgICAgICAgTW92ZSBNYXRoTUxPcGVyYXRvckRpY3Rpb25hcnkg
ZnJvbSByZW5kZXJpbmcgdG8gRE9NCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNv
Y2tldHMvV2ViU29ja2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAkocmV2aXNpb24gMjAzMDkzKQorKysgU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTYzLDYgKzYzLDEwIEBACiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCisjaWYgVVNFKFdFQl9USFJFQUQpCisjaW5j
bHVkZSAiV2ViQ29yZVRocmVhZFJ1bi5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY29uc3Qgc2l6ZV90IG1heFJlYXNvblNpemVJbkJ5dGVzID0gMTIzOwpAQCAtMjkyLDEwICsy
OTYsMTcgQEAgdm9pZCBXZWJTb2NrZXQ6OmNvbm5lY3QoY29uc3QgU3RyaW5nJiB1cgogICAgICAg
ICAgICAgLy8gdXNpbmcgdGhlIGVycm9yIGV2ZW50LiBCdXQgc2luY2UgdGhpcyBjb2RlIGV4ZWN1
dGVzIGFzIHBhcnQgb2YgdGhlIFdlYlNvY2tldCdzCiAgICAgICAgICAgICAvLyBjb25zdHJ1Y3Rv
ciwgd2UgaGF2ZSB0byB3YWl0IHVudGlsIHRoZSBjb25zdHJ1Y3RvciBoYXMgY29tcGxldGVkIGJl
Zm9yZSBmaXJpbmcgdGhlCiAgICAgICAgICAgICAvLyBldmVudDsgb3RoZXJ3aXNlLCB1c2VycyBj
YW4ndCBjb25uZWN0IHRvIHRoZSBldmVudC4KKyNpZiBVU0UoV0VCX1RIUkVBRCkKKyAgICAgICAg
ICAgIFdlYlRocmVhZFJ1biheeworICAgICAgICAgICAgICAgIGRpc3BhdGNoT3JRdWV1ZUVycm9y
RXZlbnQoKTsKKyAgICAgICAgICAgICAgICBzdG9wKCk7CisgICAgICAgICAgICB9KTsKKyNlbHNl
CiAgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBSZWY8V2ViU29ja2V0PigqdGhpcyldKCkgewogICAgICAgICAgICAgICAgIGRpc3BhdGNo
T3JRdWV1ZUVycm9yRXZlbnQoKTsKICAgICAgICAgICAgICAgICBzdG9wKCk7CiAgICAgICAgICAg
ICB9KTsKKyNlbmRpZgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283470</attachid>
            <date>2016-07-12 16:52:16 -0700</date>
            <delta_ts>2016-07-13 10:26:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159680-20160712165133.patch</filename>
            <type>text/plain</type>
            <size>6186</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMzEzNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDE2LTA3LTEyICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtXSzFdW2lPU10gQ3Jhc2gg
d2hlbiBXZWJTb2NrZXQgYXR0ZW1wdHMgdG8gZGlzcGF0Y2ggYSBtaXhlZCBjb250ZW50IGJsb2Nr
ZXIgZXZlbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1OTY4MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjIxMDIwMjg+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV0sxIG9uIGlPUyBzaG91bGQgbm90
IHVzZSBSdW5Mb29wOjptYWluKCkuIEluc3RlYWQsIGl0IHNob3VsZCBiZSBkaXNwYXRjaGluZyBl
dmVudHMKKyAgICAgICAgb24gdGhlIFdlYlRocmVhZC4KKworICAgICAgICBUZXN0OiBodHRwL3Rl
c3RzL3NzbC9taXhlZENvbnRlbnQvaW5zZWN1cmUtd2Vic29ja2V0Lmh0bWwKKworICAgICAgICAq
IE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
U29ja2V0Ojpjb25uZWN0KTogRG8gbm90IHVzZSBSdW5Mb29wOjptYWluKCkgd2hlbiB3ZSBzaG91
bGQgYmUgdXNpbmcKKyAgICAgICAgdGhlIFdlYlRocmVhZC4KKwogMjAxNi0wNy0xMSAgRGVhbiBK
YWNrc29uICA8ZGlub0BhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAoMjAyNjk0KTog
QXVkaW8gYW5kIFZpZGVvIHBsYXliYWNrIGNvbnRyb2xzOiBDYW5ub3QgZmluZCBhIHBvc2l0aW9u
IHNsaWRlciB0byBhZGp1c3QgcGxheWJhY2sgcG9zaXRpb24gdXNpbmcgVk8uCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAkocmV2aXNp
b24gMjAzMTM2KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tl
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzLDYgKzYzLDEwIEBACiAjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nQnVpbGRlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCisj
aWYgVVNFKFdFQl9USFJFQUQpCisjaW5jbHVkZSAiV2ViQ29yZVRocmVhZFJ1bi5oIgorI2VuZGlm
CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY29uc3Qgc2l6ZV90IG1heFJlYXNvblNpemVJbkJ5
dGVzID0gMTIzOwpAQCAtMjkyLDEwICsyOTYsMjEgQEAgdm9pZCBXZWJTb2NrZXQ6OmNvbm5lY3Qo
Y29uc3QgU3RyaW5nJiB1cgogICAgICAgICAgICAgLy8gdXNpbmcgdGhlIGVycm9yIGV2ZW50LiBC
dXQgc2luY2UgdGhpcyBjb2RlIGV4ZWN1dGVzIGFzIHBhcnQgb2YgdGhlIFdlYlNvY2tldCdzCiAg
ICAgICAgICAgICAvLyBjb25zdHJ1Y3Rvciwgd2UgaGF2ZSB0byB3YWl0IHVudGlsIHRoZSBjb25z
dHJ1Y3RvciBoYXMgY29tcGxldGVkIGJlZm9yZSBmaXJpbmcgdGhlCiAgICAgICAgICAgICAvLyBl
dmVudDsgb3RoZXJ3aXNlLCB1c2VycyBjYW4ndCBjb25uZWN0IHRvIHRoZSBldmVudC4KKyNpZiBV
U0UoV0VCX1RIUkVBRCkKKyAgICAgICAgICAgIHJlZigpOworICAgICAgICAgICAgZGlzcGF0Y2hf
YXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKKyAgICAgICAgICAgICAgICBXZWJU
aHJlYWRSdW4oXnsKKyAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2hPclF1ZXVlRXJyb3JFdmVu
dCgpOworICAgICAgICAgICAgICAgICAgICBzdG9wKCk7CisgICAgICAgICAgICAgICAgICAgIGRl
cmVmKCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKyNlbHNlCiAgICAg
ICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBS
ZWY8V2ViU29ja2V0PigqdGhpcyldKCkgewogICAgICAgICAgICAgICAgIGRpc3BhdGNoT3JRdWV1
ZUVycm9yRXZlbnQoKTsKICAgICAgICAgICAgICAgICBzdG9wKCk7CiAgICAgICAgICAgICB9KTsK
KyNlbmRpZgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpJbmRleDogTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwko
cmV2aXNpb24gMjAzMTM2KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTUgQEAKKzIwMTYtMDctMTIgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBh
cHBsZS5jb20+CisKKyAgICAgICAgW1dLMV1baU9TXSBDcmFzaCB3aGVuIFdlYlNvY2tldCBhdHRl
bXB0cyB0byBkaXNwYXRjaCBhIG1peGVkIGNvbnRlbnQgYmxvY2tlciBldmVudAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5NjgwCisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS8yMjEwMjAyOD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvc3NsL21peGVkQ29udGVudDogQWRkZWQuCisg
ICAgICAgICogaHR0cC90ZXN0cy9zc2wvbWl4ZWRDb250ZW50L2luc2VjdXJlLXdlYnNvY2tldC1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc3NsL21peGVkQ29udGVu
dC9pbnNlY3VyZS13ZWJzb2NrZXQuaHRtbDogQWRkZWQuCisKIDIwMTYtMDctMTIgIFJ5YW4gSGFk
ZGFkICA8cnlhbmhhZGRhZEBhcHBsZS5jb20+CiAKICAgICAgICAgTWFya2luZyBmYXN0L2Nzcy9h
bmNlc3Rvci1vZi1ob3ZlcmVkLWVsZW1lbnQtZGV0YWNoZWQuaHRtbCBhcyBmbGFreSBvbiBNYWMK
SW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3NsL21peGVkQ29udGVudC9pbnNlY3VyZS13
ZWJzb2NrZXQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvc3NsL21peGVkQ29udGVudC9pbnNlY3VyZS13ZWJzb2NrZXQtZXhwZWN0ZWQudHh0CShub25l
eGlzdGVudCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3NsL21peGVkQ29udGVudC9pbnNl
Y3VyZS13ZWJzb2NrZXQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTYg
QEAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAzMjogW2Jsb2NrZWRdIFRoZSBwYWdlIGF0IGh0dHBz
Oi8vMTI3LjAuMC4xOjg0NDMvc3NsL21peGVkQ29udGVudC9pbnNlY3VyZS13ZWJzb2NrZXQuaHRt
bCB3YXMgbm90IGFsbG93ZWQgdG8gcnVuIGluc2VjdXJlIGNvbnRlbnQgZnJvbSB3czovLzEyNy4w
LjAuMTo4ODgwL3dlYnNvY2tldC90ZXN0cy9oeWJpL2VjaG8uCisKK1Rlc3QgdGhhdCB3ZSBkbyBu
b3QgY3Jhc2ggd2hlbiBoYW5kbGluZyBtaXhlZCBjb250ZW50IGV2ZW50cy4KKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCitSdW5uaW5nIFRlc3QKK1BBU1NFRC4gU29ja2V0IHdhcyBub3QgY3Jl
YXRlZC4KK1RoaXMgdGVzdCBjb25uZWN0cyB0byBhbiBpbnNlY3VyZSB3czovLyBXZWJTb2NrZXQu
IFdlIHNob3VsZCBibG9jayB0aGUgY29ubmVjdGlvbiBhbmQgdHJpZ2dlciBhIG1peGVkIGNvbnRl
bnQgY2FsbGJhY2sgYmVjYXVzZSB0aGUgbWFpbiBmcmFtZSBpcyBIVFRQUywgYnV0IHRoZSBkYXRh
IHNlbnQgb3ZlciB0aGUgc29ja2V0IGNvdWxkIGJlIHJlY29yZGVkIG9yIGNvbnRyb2xsZWQgYnkg
YW4gYXR0YWNrZXIuCisKKwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zc2wvbWl4ZWRD
b250ZW50L2luc2VjdXJlLXdlYnNvY2tldC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc3NsL21peGVkQ29udGVudC9pbnNlY3VyZS13ZWJzb2NrZXQuaHRtbAkobm9u
ZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NzbC9taXhlZENvbnRlbnQvaW5z
ZWN1cmUtd2Vic29ja2V0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NiBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+CisgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgp
OworICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB9CisKKyAgICBmdW5jdGlv
biBhZGRDb25zb2xlTWVzc2FnZShtZXNzYWdlKSB7CisgICAgICAgIHZhciBjb25zb2xlID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKTsKKyAgICAgICAgY29uc29sZS5pbm5lckhU
TUwgKz0gIjxici8+IiArIG1lc3NhZ2U7ICAgICAgICAKKyAgICB9CisKKyAgICBmdW5jdGlvbiBv
blNvY2tldE9wZW5lZCgpIHsKKyAgICAgICAgYWRkQ29uc29sZU1lc3NhZ2UoIkZBSUxFRDogV2Vi
U29ja2V0IGNvbm5lY3Rpb24gb3BlbmVkLiIpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICB9CisKKyAgICBm
dW5jdGlvbiBvblNvY2tldEVycm9yKGV2ZW50KSB7CisgICAgICAgIGFkZENvbnNvbGVNZXNzYWdl
KCJQQVNTRUQuIFNvY2tldCB3YXMgbm90IGNyZWF0ZWQuIik7CisgICAgICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgIH0K
KworICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgICAgIGFkZENvbnNvbGVNZXNzYWdlKCJS
dW5uaW5nIFRlc3QiKTsKKyAgICAgICAgd2luZG93Lm9uZXJyb3IgPSBvblNvY2tldEVycm9yOwor
ICAgICAgICB0cnkgeworICAgICAgICAgICAgd3MgPSBuZXcgV2ViU29ja2V0KCJ3czovLzEyNy4w
LjAuMTo4ODgwL3dlYnNvY2tldC90ZXN0cy9oeWJpL2VjaG8iKTsKKyAgICAgICAgICAgIHdzLm9u
b3BlbiA9IG9uU29ja2V0T3BlbmVkOworICAgICAgICAgICAgd3Mub25lcnJvciA9IG9uU29ja2V0
RXJyb3I7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAg
ICAgfQorICAgIH0KKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVz
dCgpIj4KKyAgICA8c2NyaXB0PgorICAgIGRlc2NyaXB0aW9uKCdUZXN0IHRoYXQgd2UgZG8gbm90
IGNyYXNoIHdoZW4gaGFuZGxpbmcgbWl4ZWQgY29udGVudCBldmVudHMuJyk7CisgICAgPC9zY3Jp
cHQ+CisKKyAgICA8cD5UaGlzIHRlc3QgY29ubmVjdHMgdG8gYW4gaW5zZWN1cmUgd3M6Ly8gV2Vi
U29ja2V0LiAgV2Ugc2hvdWxkIGJsb2NrIHRoZQorY29ubmVjdGlvbiBhbmQgdHJpZ2dlciBhIG1p
eGVkIGNvbnRlbnQgY2FsbGJhY2sgYmVjYXVzZSB0aGUgbWFpbiBmcmFtZSBpcworSFRUUFMsIGJ1
dCB0aGUgZGF0YSBzZW50IG92ZXIgdGhlIHNvY2tldCBjb3VsZCBiZSByZWNvcmRlZCBvcgorY29u
dHJvbGxlZCBieSBhbiBhdHRhY2tlci48L3A+CisKKyAgICA8ZGl2IGlkPSdjb25zb2xlJz48L2Rp
dj4KKworICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283480</attachid>
            <date>2016-07-12 17:56:28 -0700</date>
            <delta_ts>2016-07-12 18:00:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159680-20160712175544.patch</filename>
            <type>text/plain</type>
            <size>6022</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMzEzNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDE2LTA3LTEyICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtXSzFdW2lPU10gQ3Jhc2gg
d2hlbiBXZWJTb2NrZXQgYXR0ZW1wdHMgdG8gZGlzcGF0Y2ggYSBtaXhlZCBjb250ZW50IGJsb2Nr
ZXIgZXZlbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1OTY4MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjIxMDIwMjg+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV0sxIG9uIGlPUyBzaG91bGQgbm90
IHVzZSBSdW5Mb29wOjptYWluKCkuIEluc3RlYWQsIGl0IHNob3VsZCBiZSBkaXNwYXRjaGluZyBl
dmVudHMKKyAgICAgICAgb24gdGhlIFdlYlRocmVhZC4KKworICAgICAgICBUZXN0OiBodHRwL3Rl
c3RzL3NzbC9taXhlZENvbnRlbnQvaW5zZWN1cmUtd2Vic29ja2V0Lmh0bWwKKworICAgICAgICAq
IE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
U29ja2V0Ojpjb25uZWN0KTogRG8gbm90IHVzZSBSdW5Mb29wOjptYWluKCkgd2hlbiB3ZSBzaG91
bGQgYmUgdXNpbmcKKyAgICAgICAgdGhlIFdlYlRocmVhZC4KKwogMjAxNi0wNy0xMSAgRGVhbiBK
YWNrc29uICA8ZGlub0BhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAoMjAyNjk0KTog
QXVkaW8gYW5kIFZpZGVvIHBsYXliYWNrIGNvbnRyb2xzOiBDYW5ub3QgZmluZCBhIHBvc2l0aW9u
IHNsaWRlciB0byBhZGp1c3QgcGxheWJhY2sgcG9zaXRpb24gdXNpbmcgVk8uCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAkocmV2aXNp
b24gMjAzMTM2KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tl
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzLDYgKzYzLDEwIEBACiAjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nQnVpbGRlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCisj
aWYgVVNFKFdFQl9USFJFQUQpCisjaW5jbHVkZSAiV2ViQ29yZVRocmVhZFJ1bi5oIgorI2VuZGlm
CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY29uc3Qgc2l6ZV90IG1heFJlYXNvblNpemVJbkJ5
dGVzID0gMTIzOwpAQCAtMjkyLDcgKzI5NiwxMiBAQCB2b2lkIFdlYlNvY2tldDo6Y29ubmVjdChj
b25zdCBTdHJpbmcmIHVyCiAgICAgICAgICAgICAvLyB1c2luZyB0aGUgZXJyb3IgZXZlbnQuIEJ1
dCBzaW5jZSB0aGlzIGNvZGUgZXhlY3V0ZXMgYXMgcGFydCBvZiB0aGUgV2ViU29ja2V0J3MKICAg
ICAgICAgICAgIC8vIGNvbnN0cnVjdG9yLCB3ZSBoYXZlIHRvIHdhaXQgdW50aWwgdGhlIGNvbnN0
cnVjdG9yIGhhcyBjb21wbGV0ZWQgYmVmb3JlIGZpcmluZyB0aGUKICAgICAgICAgICAgIC8vIGV2
ZW50OyBvdGhlcndpc2UsIHVzZXJzIGNhbid0IGNvbm5lY3QgdG8gdGhlIGV2ZW50LgorI2lmIFVT
RShXRUJfVEhSRUFEKQorICAgICAgICAgICAgQVNTRVJUKFdlYlRocmVhZElzQ3VycmVudCgpKTsK
KyAgICAgICAgICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IFJlZjxXZWJTb2NrZXQ+KCp0aGlzKV0oKSB7CisjZWxzZQogICAgICAgICAgICAgUnVu
TG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmPFdlYlNvY2tl
dD4oKnRoaXMpXSgpIHsKKyNlbmRpZgogICAgICAgICAgICAgICAgIGRpc3BhdGNoT3JRdWV1ZUVy
cm9yRXZlbnQoKTsKICAgICAgICAgICAgICAgICBzdG9wKCk7CiAgICAgICAgICAgICB9KTsKSW5k
ZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHJldmlzaW9uIDIwMzEzNikKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE2LTA3LTEyICBCcmVudCBGdWxnaGFtICA8YmZ1
bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtXSzFdW2lPU10gQ3Jhc2ggd2hlbiBXZWJTb2Nr
ZXQgYXR0ZW1wdHMgdG8gZGlzcGF0Y2ggYSBtaXhlZCBjb250ZW50IGJsb2NrZXIgZXZlbnQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTY4MAorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vMjIxMDIwMjg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3NzbC9taXhlZENvbnRlbnQ6IEFk
ZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc3NsL21peGVkQ29udGVudC9pbnNlY3VyZS13ZWJz
b2NrZXQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NzbC9taXhl
ZENvbnRlbnQvaW5zZWN1cmUtd2Vic29ja2V0Lmh0bWw6IEFkZGVkLgorCiAyMDE2LTA3LTEyICBS
eWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBwbGUuY29tPgogCiAgICAgICAgIE1hcmtpbmcgZmFz
dC9jc3MvYW5jZXN0b3Itb2YtaG92ZXJlZC1lbGVtZW50LWRldGFjaGVkLmh0bWwgYXMgZmxha3kg
b24gTWFjCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NzbC9taXhlZENvbnRlbnQvaW5z
ZWN1cmUtd2Vic29ja2V0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NzbC9taXhlZENvbnRlbnQvaW5zZWN1cmUtd2Vic29ja2V0LWV4cGVjdGVkLnR4
dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NzbC9taXhlZENvbnRl
bnQvaW5zZWN1cmUtd2Vic29ja2V0LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDE2IEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMzI6IFtibG9ja2VkXSBUaGUgcGFnZSBh
dCBodHRwczovLzEyNy4wLjAuMTo4NDQzL3NzbC9taXhlZENvbnRlbnQvaW5zZWN1cmUtd2Vic29j
a2V0Lmh0bWwgd2FzIG5vdCBhbGxvd2VkIHRvIHJ1biBpbnNlY3VyZSBjb250ZW50IGZyb20gd3M6
Ly8xMjcuMC4wLjE6ODg4MC93ZWJzb2NrZXQvdGVzdHMvaHliaS9lY2hvLgorCitUZXN0IHRoYXQg
d2UgZG8gbm90IGNyYXNoIHdoZW4gaGFuZGxpbmcgbWl4ZWQgY29udGVudCBldmVudHMuCisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKworUnVubmluZyBUZXN0CitQQVNTRUQuIFNvY2tldCB3YXMg
bm90IGNyZWF0ZWQuCitUaGlzIHRlc3QgY29ubmVjdHMgdG8gYW4gaW5zZWN1cmUgd3M6Ly8gV2Vi
U29ja2V0LiBXZSBzaG91bGQgYmxvY2sgdGhlIGNvbm5lY3Rpb24gYW5kIHRyaWdnZXIgYSBtaXhl
ZCBjb250ZW50IGNhbGxiYWNrIGJlY2F1c2UgdGhlIG1haW4gZnJhbWUgaXMgSFRUUFMsIGJ1dCB0
aGUgZGF0YSBzZW50IG92ZXIgdGhlIHNvY2tldCBjb3VsZCBiZSByZWNvcmRlZCBvciBjb250cm9s
bGVkIGJ5IGFuIGF0dGFja2VyLgorCisKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3Ns
L21peGVkQ29udGVudC9pbnNlY3VyZS13ZWJzb2NrZXQuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3NzbC9taXhlZENvbnRlbnQvaW5zZWN1cmUtd2Vic29ja2V0Lmh0
bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zc2wvbWl4ZWRDb250
ZW50L2luc2VjdXJlLXdlYnNvY2tldC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTYg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0IHNyYz0iL2pz
LXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0Pgor
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRp
bERvbmUoKTsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgfQorCisgICAg
ZnVuY3Rpb24gYWRkQ29uc29sZU1lc3NhZ2UobWVzc2FnZSkgeworICAgICAgICB2YXIgY29uc29s
ZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJyk7CisgICAgICAgIGNvbnNvbGUu
aW5uZXJIVE1MICs9ICI8YnIvPiIgKyBtZXNzYWdlOyAgICAgICAgCisgICAgfQorCisgICAgZnVu
Y3Rpb24gb25Tb2NrZXRPcGVuZWQoKSB7CisgICAgICAgIGFkZENvbnNvbGVNZXNzYWdlKCJGQUlM
RUQ6IFdlYlNvY2tldCBjb25uZWN0aW9uIG9wZW5lZC4iKTsKKyAgICAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgfQor
CisgICAgZnVuY3Rpb24gb25Tb2NrZXRFcnJvcihldmVudCkgeworICAgICAgICBhZGRDb25zb2xl
TWVzc2FnZSgiUEFTU0VELiBTb2NrZXQgd2FzIG5vdCBjcmVhdGVkLiIpOworICAgICAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
KyAgICB9CisKKyAgICBmdW5jdGlvbiBydW5UZXN0KCkgeworICAgICAgICBhZGRDb25zb2xlTWVz
c2FnZSgiUnVubmluZyBUZXN0Iik7CisgICAgICAgIHdpbmRvdy5vbmVycm9yID0gb25Tb2NrZXRF
cnJvcjsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHdzID0gbmV3IFdlYlNvY2tldCgid3M6
Ly8xMjcuMC4wLjE6ODg4MC93ZWJzb2NrZXQvdGVzdHMvaHliaS9lY2hvIik7CisgICAgICAgICAg
ICB3cy5vbm9wZW4gPSBvblNvY2tldE9wZW5lZDsKKyAgICAgICAgICAgIHdzLm9uZXJyb3IgPSBv
blNvY2tldEVycm9yOworICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
CisgICAgICAgIH0KKyAgICB9CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9
InJ1blRlc3QoKSI+CisgICAgPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlvbignVGVzdCB0aGF0IHdl
IGRvIG5vdCBjcmFzaCB3aGVuIGhhbmRsaW5nIG1peGVkIGNvbnRlbnQgZXZlbnRzLicpOworICAg
IDwvc2NyaXB0PgorCisgICAgPHA+VGhpcyB0ZXN0IGNvbm5lY3RzIHRvIGFuIGluc2VjdXJlIHdz
Oi8vIFdlYlNvY2tldC4gIFdlIHNob3VsZCBibG9jayB0aGUKK2Nvbm5lY3Rpb24gYW5kIHRyaWdn
ZXIgYSBtaXhlZCBjb250ZW50IGNhbGxiYWNrIGJlY2F1c2UgdGhlIG1haW4gZnJhbWUgaXMKK0hU
VFBTLCBidXQgdGhlIGRhdGEgc2VudCBvdmVyIHRoZSBzb2NrZXQgY291bGQgYmUgcmVjb3JkZWQg
b3IKK2NvbnRyb2xsZWQgYnkgYW4gYXR0YWNrZXIuPC9wPgorCisgICAgPGRpdiBpZD0nY29uc29s
ZSc+PC9kaXY+CisKKyAgICA8c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283481</attachid>
            <date>2016-07-12 18:00:46 -0700</date>
            <delta_ts>2016-07-12 18:07:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159680-20160712180002.patch</filename>
            <type>text/plain</type>
            <size>5942</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMzEzNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDE2LTA3LTEyICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtXSzFdW2lPU10gQ3Jhc2gg
d2hlbiBXZWJTb2NrZXQgYXR0ZW1wdHMgdG8gZGlzcGF0Y2ggYSBtaXhlZCBjb250ZW50IGJsb2Nr
ZXIgZXZlbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1OTY4MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjIxMDIwMjg+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV0sxIG9uIGlPUyBzaG91bGQgbm90
IHVzZSBSdW5Mb29wOjptYWluKCkuIEluc3RlYWQsIGl0IHNob3VsZCBiZSBkaXNwYXRjaGluZyBl
dmVudHMKKyAgICAgICAgb24gdGhlIFdlYlRocmVhZC4KKworICAgICAgICBUZXN0OiBodHRwL3Rl
c3RzL3NzbC9taXhlZENvbnRlbnQvaW5zZWN1cmUtd2Vic29ja2V0Lmh0bWwKKworICAgICAgICAq
IE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
U29ja2V0Ojpjb25uZWN0KTogRG8gbm90IHVzZSBSdW5Mb29wOjptYWluKCkgd2hlbiB3ZSBzaG91
bGQgYmUgdXNpbmcKKyAgICAgICAgdGhlIFdlYlRocmVhZC4KKwogMjAxNi0wNy0xMSAgRGVhbiBK
YWNrc29uICA8ZGlub0BhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAoMjAyNjk0KTog
QXVkaW8gYW5kIFZpZGVvIHBsYXliYWNrIGNvbnRyb2xzOiBDYW5ub3QgZmluZCBhIHBvc2l0aW9u
IHNsaWRlciB0byBhZGp1c3QgcGxheWJhY2sgcG9zaXRpb24gdXNpbmcgVk8uCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAkocmV2aXNp
b24gMjAzMTM2KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tl
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzLDYgKzYzLDEwIEBACiAjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nQnVpbGRlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCisj
aWYgVVNFKFdFQl9USFJFQUQpCisjaW5jbHVkZSAiV2ViQ29yZVRocmVhZFJ1bi5oIgorI2VuZGlm
CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY29uc3Qgc2l6ZV90IG1heFJlYXNvblNpemVJbkJ5
dGVzID0gMTIzOwpAQCAtMjkyLDcgKzI5Niw3IEBAIHZvaWQgV2ViU29ja2V0Ojpjb25uZWN0KGNv
bnN0IFN0cmluZyYgdXIKICAgICAgICAgICAgIC8vIHVzaW5nIHRoZSBlcnJvciBldmVudC4gQnV0
IHNpbmNlIHRoaXMgY29kZSBleGVjdXRlcyBhcyBwYXJ0IG9mIHRoZSBXZWJTb2NrZXQncwogICAg
ICAgICAgICAgLy8gY29uc3RydWN0b3IsIHdlIGhhdmUgdG8gd2FpdCB1bnRpbCB0aGUgY29uc3Ry
dWN0b3IgaGFzIGNvbXBsZXRlZCBiZWZvcmUgZmlyaW5nIHRoZQogICAgICAgICAgICAgLy8gZXZl
bnQ7IG90aGVyd2lzZSwgdXNlcnMgY2FuJ3QgY29ubmVjdCB0byB0aGUgZXZlbnQuCi0gICAgICAg
ICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWY8
V2ViU29ja2V0PigqdGhpcyldKCkgeworICAgICAgICAgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRp
c3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmPFdlYlNvY2tldD4oKnRoaXMpXSgpIHsK
ICAgICAgICAgICAgICAgICBkaXNwYXRjaE9yUXVldWVFcnJvckV2ZW50KCk7CiAgICAgICAgICAg
ICAgICAgc3RvcCgpOwogICAgICAgICAgICAgfSk7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDMxMzYp
CisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBA
QAorMjAxNi0wNy0xMiAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KKworICAg
ICAgICBbV0sxXVtpT1NdIENyYXNoIHdoZW4gV2ViU29ja2V0IGF0dGVtcHRzIHRvIGRpc3BhdGNo
IGEgbWl4ZWQgY29udGVudCBibG9ja2VyIGV2ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTk2ODAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzIy
MTAyMDI4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogaHR0cC90ZXN0cy9zc2wvbWl4ZWRDb250ZW50OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rl
c3RzL3NzbC9taXhlZENvbnRlbnQvaW5zZWN1cmUtd2Vic29ja2V0LWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zc2wvbWl4ZWRDb250ZW50L2luc2VjdXJlLXdlYnNv
Y2tldC5odG1sOiBBZGRlZC4KKwogMjAxNi0wNy0xMiAgUnlhbiBIYWRkYWQgIDxyeWFuaGFkZGFk
QGFwcGxlLmNvbT4KIAogICAgICAgICBNYXJraW5nIGZhc3QvY3NzL2FuY2VzdG9yLW9mLWhvdmVy
ZWQtZWxlbWVudC1kZXRhY2hlZC5odG1sIGFzIGZsYWt5IG9uIE1hYwpJbmRleDogTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zc2wvbWl4ZWRDb250ZW50L2luc2VjdXJlLXdlYnNvY2tldC1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zc2wvbWl4ZWRDb250
ZW50L2luc2VjdXJlLXdlYnNvY2tldC1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zc2wvbWl4ZWRDb250ZW50L2luc2VjdXJlLXdlYnNvY2tldC1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNiBAQAorQ09OU09MRSBNRVNT
QUdFOiBsaW5lIDMyOiBbYmxvY2tlZF0gVGhlIHBhZ2UgYXQgaHR0cHM6Ly8xMjcuMC4wLjE6ODQ0
My9zc2wvbWl4ZWRDb250ZW50L2luc2VjdXJlLXdlYnNvY2tldC5odG1sIHdhcyBub3QgYWxsb3dl
ZCB0byBydW4gaW5zZWN1cmUgY29udGVudCBmcm9tIHdzOi8vMTI3LjAuMC4xOjg4ODAvd2Vic29j
a2V0L3Rlc3RzL2h5YmkvZWNoby4KKworVGVzdCB0aGF0IHdlIGRvIG5vdCBjcmFzaCB3aGVuIGhh
bmRsaW5nIG1peGVkIGNvbnRlbnQgZXZlbnRzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CisKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
K1J1bm5pbmcgVGVzdAorUEFTU0VELiBTb2NrZXQgd2FzIG5vdCBjcmVhdGVkLgorVGhpcyB0ZXN0
IGNvbm5lY3RzIHRvIGFuIGluc2VjdXJlIHdzOi8vIFdlYlNvY2tldC4gV2Ugc2hvdWxkIGJsb2Nr
IHRoZSBjb25uZWN0aW9uIGFuZCB0cmlnZ2VyIGEgbWl4ZWQgY29udGVudCBjYWxsYmFjayBiZWNh
dXNlIHRoZSBtYWluIGZyYW1lIGlzIEhUVFBTLCBidXQgdGhlIGRhdGEgc2VudCBvdmVyIHRoZSBz
b2NrZXQgY291bGQgYmUgcmVjb3JkZWQgb3IgY29udHJvbGxlZCBieSBhbiBhdHRhY2tlci4KKwor
CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NzbC9taXhlZENvbnRlbnQvaW5zZWN1cmUt
d2Vic29ja2V0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zc2wv
bWl4ZWRDb250ZW50L2luc2VjdXJlLXdlYnNvY2tldC5odG1sCShub25leGlzdGVudCkKKysrIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc3NsL21peGVkQ29udGVudC9pbnNlY3VyZS13ZWJzb2NrZXQu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+CisgICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdD4KKyAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgICAgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOworICAgIH0KKworICAgIGZ1bmN0aW9uIGFkZENvbnNvbGVNZXNz
YWdlKG1lc3NhZ2UpIHsKKyAgICAgICAgdmFyIGNvbnNvbGUgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnY29uc29sZScpOworICAgICAgICBjb25zb2xlLmlubmVySFRNTCArPSAiPGJyLz4iICsg
bWVzc2FnZTsgICAgICAgIAorICAgIH0KKworICAgIGZ1bmN0aW9uIG9uU29ja2V0T3BlbmVkKCkg
eworICAgICAgICBhZGRDb25zb2xlTWVzc2FnZSgiRkFJTEVEOiBXZWJTb2NrZXQgY29ubmVjdGlv
biBvcGVuZWQuIik7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAg
IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgIH0KKworICAgIGZ1bmN0aW9uIG9uU29ja2V0
RXJyb3IoZXZlbnQpIHsKKyAgICAgICAgYWRkQ29uc29sZU1lc3NhZ2UoIlBBU1NFRC4gU29ja2V0
IHdhcyBub3QgY3JlYXRlZC4iKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAg
ICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgfQorCisgICAgZnVuY3Rpb24g
cnVuVGVzdCgpIHsKKyAgICAgICAgYWRkQ29uc29sZU1lc3NhZ2UoIlJ1bm5pbmcgVGVzdCIpOwor
ICAgICAgICB3aW5kb3cub25lcnJvciA9IG9uU29ja2V0RXJyb3I7CisgICAgICAgIHRyeSB7Cisg
ICAgICAgICAgICB3cyA9IG5ldyBXZWJTb2NrZXQoIndzOi8vMTI3LjAuMC4xOjg4ODAvd2Vic29j
a2V0L3Rlc3RzL2h5YmkvZWNobyIpOworICAgICAgICAgICAgd3Mub25vcGVuID0gb25Tb2NrZXRP
cGVuZWQ7CisgICAgICAgICAgICB3cy5vbmVycm9yID0gb25Tb2NrZXRFcnJvcjsKKyAgICAgICAg
fSBjYXRjaCAoZSkgeworICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAg
ICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICB9CisgICAgfQorICAg
IDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorICAgIDxzY3Jp
cHQ+CisgICAgZGVzY3JpcHRpb24oJ1Rlc3QgdGhhdCB3ZSBkbyBub3QgY3Jhc2ggd2hlbiBoYW5k
bGluZyBtaXhlZCBjb250ZW50IGV2ZW50cy4nKTsKKyAgICA8L3NjcmlwdD4KKworICAgIDxwPlRo
aXMgdGVzdCBjb25uZWN0cyB0byBhbiBpbnNlY3VyZSB3czovLyBXZWJTb2NrZXQuICBXZSBzaG91
bGQgYmxvY2sgdGhlCitjb25uZWN0aW9uIGFuZCB0cmlnZ2VyIGEgbWl4ZWQgY29udGVudCBjYWxs
YmFjayBiZWNhdXNlIHRoZSBtYWluIGZyYW1lIGlzCitIVFRQUywgYnV0IHRoZSBkYXRhIHNlbnQg
b3ZlciB0aGUgc29ja2V0IGNvdWxkIGJlIHJlY29yZGVkIG9yCitjb250cm9sbGVkIGJ5IGFuIGF0
dGFja2VyLjwvcD4KKworICAgIDxkaXYgaWQ9J2NvbnNvbGUnPjwvZGl2PgorCisgICAgPHNjcmlw
dCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283483</attachid>
            <date>2016-07-12 18:07:34 -0700</date>
            <delta_ts>2016-07-12 20:08:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159680-20160712180651.patch</filename>
            <type>text/plain</type>
            <size>5801</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMzEzNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDE2LTA3LTEyICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtXSzFdW2lPU10gQ3Jhc2gg
d2hlbiBXZWJTb2NrZXQgYXR0ZW1wdHMgdG8gZGlzcGF0Y2ggYSBtaXhlZCBjb250ZW50IGJsb2Nr
ZXIgZXZlbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1OTY4MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjIxMDIwMjg+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV0sxIG9uIGlPUyBzaG91bGQgbm90
IHVzZSBSdW5Mb29wOjptYWluKCkuIEluc3RlYWQsIGl0IHNob3VsZCBiZSBkaXNwYXRjaGluZyBl
dmVudHMKKyAgICAgICAgb24gdGhlIFdlYlRocmVhZC4KKworICAgICAgICBUZXN0OiBodHRwL3Rl
c3RzL3NzbC9taXhlZENvbnRlbnQvaW5zZWN1cmUtd2Vic29ja2V0Lmh0bWwKKworICAgICAgICAq
IE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
U29ja2V0Ojpjb25uZWN0KTogRG8gbm90IHVzZSBSdW5Mb29wOjptYWluKCkgd2hlbiB3ZSBzaG91
bGQgYmUgdXNpbmcKKyAgICAgICAgdGhlIFdlYlRocmVhZC4KKwogMjAxNi0wNy0xMSAgRGVhbiBK
YWNrc29uICA8ZGlub0BhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAoMjAyNjk0KTog
QXVkaW8gYW5kIFZpZGVvIHBsYXliYWNrIGNvbnRyb2xzOiBDYW5ub3QgZmluZCBhIHBvc2l0aW9u
IHNsaWRlciB0byBhZGp1c3QgcGxheWJhY2sgcG9zaXRpb24gdXNpbmcgVk8uCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAkocmV2aXNp
b24gMjAzMTM2KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tl
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5Miw3ICsyOTIsOCBAQCB2b2lkIFdlYlNvY2tldDo6
Y29ubmVjdChjb25zdCBTdHJpbmcmIHVyCiAgICAgICAgICAgICAvLyB1c2luZyB0aGUgZXJyb3Ig
ZXZlbnQuIEJ1dCBzaW5jZSB0aGlzIGNvZGUgZXhlY3V0ZXMgYXMgcGFydCBvZiB0aGUgV2ViU29j
a2V0J3MKICAgICAgICAgICAgIC8vIGNvbnN0cnVjdG9yLCB3ZSBoYXZlIHRvIHdhaXQgdW50aWwg
dGhlIGNvbnN0cnVjdG9yIGhhcyBjb21wbGV0ZWQgYmVmb3JlIGZpcmluZyB0aGUKICAgICAgICAg
ICAgIC8vIGV2ZW50OyBvdGhlcndpc2UsIHVzZXJzIGNhbid0IGNvbm5lY3QgdG8gdGhlIGV2ZW50
LgotICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gUmVmPFdlYlNvY2tldD4oKnRoaXMpXSgpIHsKKyAgICAgICAgICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7IC8vIE1ha2Ugc3VyZSB0aGlzIGlzIG1haW4tb3Itd2ViIHRocmVhZAorICAg
ICAgICAgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gUmVmPFdlYlNvY2tldD4oKnRoaXMpXSgpIHsKICAgICAgICAgICAgICAgICBkaXNwYXRjaE9y
UXVldWVFcnJvckV2ZW50KCk7CiAgICAgICAgICAgICAgICAgc3RvcCgpOwogICAgICAgICAgICAg
fSk7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDMxMzYpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxNi0wNy0xMiAgQnJlbnQgRnVsZ2hh
bSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBbV0sxXVtpT1NdIENyYXNoIHdoZW4g
V2ViU29ja2V0IGF0dGVtcHRzIHRvIGRpc3BhdGNoIGEgbWl4ZWQgY29udGVudCBibG9ja2VyIGV2
ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTk2
ODAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzIyMTAyMDI4PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaHR0cC90ZXN0cy9zc2wvbWl4ZWRDb250
ZW50OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NzbC9taXhlZENvbnRlbnQvaW5zZWN1
cmUtd2Vic29ja2V0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9z
c2wvbWl4ZWRDb250ZW50L2luc2VjdXJlLXdlYnNvY2tldC5odG1sOiBBZGRlZC4KKwogMjAxNi0w
Ny0xMiAgUnlhbiBIYWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAgICBNYXJr
aW5nIGZhc3QvY3NzL2FuY2VzdG9yLW9mLWhvdmVyZWQtZWxlbWVudC1kZXRhY2hlZC5odG1sIGFz
IGZsYWt5IG9uIE1hYwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zc2wvbWl4ZWRDb250
ZW50L2luc2VjdXJlLXdlYnNvY2tldC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zc2wvbWl4ZWRDb250ZW50L2luc2VjdXJlLXdlYnNvY2tldC1leHBl
Y3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zc2wvbWl4
ZWRDb250ZW50L2luc2VjdXJlLXdlYnNvY2tldC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwxNiBAQAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDMyOiBbYmxvY2tlZF0gVGhl
IHBhZ2UgYXQgaHR0cHM6Ly8xMjcuMC4wLjE6ODQ0My9zc2wvbWl4ZWRDb250ZW50L2luc2VjdXJl
LXdlYnNvY2tldC5odG1sIHdhcyBub3QgYWxsb3dlZCB0byBydW4gaW5zZWN1cmUgY29udGVudCBm
cm9tIHdzOi8vMTI3LjAuMC4xOjg4ODAvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZWNoby4KKworVGVz
dCB0aGF0IHdlIGRvIG5vdCBjcmFzaCB3aGVuIGhhbmRsaW5nIG1peGVkIGNvbnRlbnQgZXZlbnRz
LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKK1J1bm5pbmcgVGVzdAorUEFTU0VELiBTb2Nr
ZXQgd2FzIG5vdCBjcmVhdGVkLgorVGhpcyB0ZXN0IGNvbm5lY3RzIHRvIGFuIGluc2VjdXJlIHdz
Oi8vIFdlYlNvY2tldC4gV2Ugc2hvdWxkIGJsb2NrIHRoZSBjb25uZWN0aW9uIGFuZCB0cmlnZ2Vy
IGEgbWl4ZWQgY29udGVudCBjYWxsYmFjayBiZWNhdXNlIHRoZSBtYWluIGZyYW1lIGlzIEhUVFBT
LCBidXQgdGhlIGRhdGEgc2VudCBvdmVyIHRoZSBzb2NrZXQgY291bGQgYmUgcmVjb3JkZWQgb3Ig
Y29udHJvbGxlZCBieSBhbiBhdHRhY2tlci4KKworCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NzbC9taXhlZENvbnRlbnQvaW5zZWN1cmUtd2Vic29ja2V0Lmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zc2wvbWl4ZWRDb250ZW50L2luc2VjdXJlLXdlYnNv
Y2tldC5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3NsL21p
eGVkQ29udGVudC9pbnNlY3VyZS13ZWJzb2NrZXQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDU2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHNjcmlwdCBz
cmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNj
cmlwdD4KKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci53
YWl0VW50aWxEb25lKCk7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIH0K
KworICAgIGZ1bmN0aW9uIGFkZENvbnNvbGVNZXNzYWdlKG1lc3NhZ2UpIHsKKyAgICAgICAgdmFy
IGNvbnNvbGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpOworICAgICAgICBj
b25zb2xlLmlubmVySFRNTCArPSAiPGJyLz4iICsgbWVzc2FnZTsgICAgICAgIAorICAgIH0KKwor
ICAgIGZ1bmN0aW9uIG9uU29ja2V0T3BlbmVkKCkgeworICAgICAgICBhZGRDb25zb2xlTWVzc2Fn
ZSgiRkFJTEVEOiBXZWJTb2NrZXQgY29ubmVjdGlvbiBvcGVuZWQuIik7CisgICAgICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwor
ICAgIH0KKworICAgIGZ1bmN0aW9uIG9uU29ja2V0RXJyb3IoZXZlbnQpIHsKKyAgICAgICAgYWRk
Q29uc29sZU1lc3NhZ2UoIlBBU1NFRC4gU29ja2V0IHdhcyBub3QgY3JlYXRlZC4iKTsKKyAgICAg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlE
b25lKCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICAgICAgYWRkQ29u
c29sZU1lc3NhZ2UoIlJ1bm5pbmcgVGVzdCIpOworICAgICAgICB3aW5kb3cub25lcnJvciA9IG9u
U29ja2V0RXJyb3I7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICB3cyA9IG5ldyBXZWJTb2Nr
ZXQoIndzOi8vMTI3LjAuMC4xOjg4ODAvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZWNobyIpOworICAg
ICAgICAgICAgd3Mub25vcGVuID0gb25Tb2NrZXRPcGVuZWQ7CisgICAgICAgICAgICB3cy5vbmVy
cm9yID0gb25Tb2NrZXRFcnJvcjsKKyAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5
RG9uZSgpOworICAgICAgICB9CisgICAgfQorICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkg
b25sb2FkPSJydW5UZXN0KCkiPgorICAgIDxzY3JpcHQ+CisgICAgZGVzY3JpcHRpb24oJ1Rlc3Qg
dGhhdCB3ZSBkbyBub3QgY3Jhc2ggd2hlbiBoYW5kbGluZyBtaXhlZCBjb250ZW50IGV2ZW50cy4n
KTsKKyAgICA8L3NjcmlwdD4KKworICAgIDxwPlRoaXMgdGVzdCBjb25uZWN0cyB0byBhbiBpbnNl
Y3VyZSB3czovLyBXZWJTb2NrZXQuICBXZSBzaG91bGQgYmxvY2sgdGhlCitjb25uZWN0aW9uIGFu
ZCB0cmlnZ2VyIGEgbWl4ZWQgY29udGVudCBjYWxsYmFjayBiZWNhdXNlIHRoZSBtYWluIGZyYW1l
IGlzCitIVFRQUywgYnV0IHRoZSBkYXRhIHNlbnQgb3ZlciB0aGUgc29ja2V0IGNvdWxkIGJlIHJl
Y29yZGVkIG9yCitjb250cm9sbGVkIGJ5IGFuIGF0dGFja2VyLjwvcD4KKworICAgIDxkaXYgaWQ9
J2NvbnNvbGUnPjwvZGl2PgorCisgICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>