<?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>159586</bug_id>
          
          <creation_ts>2016-07-08 16:34:48 -0700</creation_ts>
          <short_desc>Infinite Canvas context save() causes WebKit to crash</short_desc>
          <delta_ts>2016-07-26 11:59:53 -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>Canvas</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>achristensen</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>mkwst</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1209316</commentid>
    <comment_count>0</comment_count>
      <attachid>283216</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-07-08 16:34:48 -0700</bug_when>
    <thetext>Created attachment 283216
canvas-context-infinite-save

If a developer adds a call to CanvasRenderingContext2D.save() in an animation without adding the corresponding CanvasRenderingContext2D.restore(), Webkit might end up crashing. Neither the code nor the specs species any limit on how many context state can be saved.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1209376</commentid>
    <comment_count>1</comment_count>
      <attachid>283233</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-07-08 18:20:55 -0700</bug_when>
    <thetext>Created attachment 283233
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1209401</commentid>
    <comment_count>2</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-07-08 19:28:31 -0700</bug_when>
    <thetext>The link to the specs is: https://www.w3.org/TR/2dcontext/#the-canvas-state</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1209402</commentid>
    <comment_count>3</comment_count>
      <attachid>283233</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-07-08 19:45:16 -0700</bug_when>
    <thetext>Comment on attachment 283233
Patch

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

&gt; Source/WebCore/ChangeLog:6
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=159586

Duplicate line?

&gt; Source/WebCore/html/canvas/CanvasRenderingContext2D.h:388
&gt; +    static const unsigned m_maxSaveCount = 1024;

We don&apos;t use m_prefix for statics AFAIK.

&gt; LayoutTests/fast/canvas/canvas-context-save-limit.html:9
&gt; +        const RED = &apos;#ff0000&apos;;

Missing a description();

&gt; LayoutTests/fast/canvas/canvas-context-save-limit.html:14
&gt; +        var c=document.getElementById(&quot;canvas&quot;);

missing spaces around the =

&gt; LayoutTests/fast/canvas/canvas-context-save-limit.html:15
&gt; +        var ctx=c.getContext(&quot;2d&quot;);

missing spaces around the =</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1209409</commentid>
    <comment_count>4</comment_count>
      <attachid>283244</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-07-08 21:35:34 -0700</bug_when>
    <thetext>Created attachment 283244
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1209484</commentid>
    <comment_count>5</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-07-09 15:38:21 -0700</bug_when>
    <thetext>Here&apos;s the stack trace when it crashes:

Crashed Thread:        0  Dispatch queue: com.apple.main-thread

Exception Type:        EXC_BREAKPOINT (SIGTRAP)
Exception Codes:       0x0000000000000002, 0x0000000000000000
Exception Note:        EXC_CORPSE_NOTIFY

...

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   com.apple.WebCore             	0x00007fffbe1378b2 WTF::Vector&lt;WebCore::CanvasRenderingContext2D::State, 1ul, WTF::CrashOnOverflow, 16ul&gt;::reserveCapacity(unsigned long) + 258
1   com.apple.WebCore             	0x00007fffbe137919 void WTF::Vector&lt;WebCore::CanvasRenderingContext2D::State, 1ul, WTF::CrashOnOverflow, 16ul&gt;::appendSlowCase&lt;WebCore::CanvasRenderingContext2D::State const&amp;&gt;(WebCore::CanvasRenderingContext2D::State const&amp;&amp;&amp;) + 89
2   com.apple.WebCore             	0x00007fffbe03d528 WebCore::CanvasRenderingContext2D::realizeSavesLoop() + 72
3   com.apple.WebCore             	0x00007fffbe1311a4 WebCore::CanvasRenderingContext2D::setFillColor(WTF::String const&amp;, WTF::Optional&lt;float&gt;) + 132
4   com.apple.WebCore             	0x00007fffbe5f0012 WebCore::JSCanvasRenderingContext2D::setFillStyle(JSC::ExecState&amp;, JSC::JSValue) + 82
5   com.apple.WebCore             	0x00007fffbe5e57f6 WebCore::setJSCanvasRenderingContext2DFillStyle(JSC::ExecState*, long long, long long) + 150
6   com.apple.JavaScriptCore      	0x00007fffb9d2c2cf JSC::callCustomSetter(JSC::ExecState*, JSC::JSValue, bool, JSC::JSObject*, JSC::JSValue, JSC::JSValue) + 31</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1209485</commentid>
    <comment_count>6</comment_count>
      <attachid>283244</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-07-09 15:39:39 -0700</bug_when>
    <thetext>Comment on attachment 283244
Patch

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

&gt; Source/WebCore/html/canvas/CanvasRenderingContext2D.h:388
&gt; +    static const unsigned MaxSaveCount = 1024;

I can safely go much higher than this.  Where did 1024 come from?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1209713</commentid>
    <comment_count>7</comment_count>
      <attachid>283244</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-07-11 11:27:41 -0700</bug_when>
    <thetext>Comment on attachment 283244
Patch

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

&gt;&gt; Source/WebCore/html/canvas/CanvasRenderingContext2D.h:388
&gt;&gt; +    static const unsigned MaxSaveCount = 1024;
&gt; 
&gt; I can safely go much higher than this.  Where did 1024 come from?

Yes it can go up to std::numeric_limits&lt;unsigned&gt;::max() / sizeof(State). But actually it is hard to track even tens of stacked states. And I think the only possible case for reaching this limit (1024) is a bug in the developer javascript code. I think also the specs does not mention it because it is system and implementation details. In our case we put the limit as std::numeric_limits&lt;unsigned&gt;::max() / sizeof(State) but the problem we crash when we reach this limit. Increasing this limit will not allow more flexibility for the developer to stack more states, but rather it will waste more memory for a buggy code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1213232</commentid>
    <comment_count>8</comment_count>
      <attachid>283244</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-07-21 11:59:04 -0700</bug_when>
    <thetext>Comment on attachment 283244
Patch

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

&gt; Source/WebCore/ChangeLog:4
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=159586

Is there a corresponding radar?

&gt;&gt;&gt; Source/WebCore/html/canvas/CanvasRenderingContext2D.h:388
&gt;&gt;&gt; +    static const unsigned MaxSaveCount = 1024;
&gt;&gt; 
&gt;&gt; I can safely go much higher than this.  Where did 1024 come from?
&gt; 
&gt; Yes it can go up to std::numeric_limits&lt;unsigned&gt;::max() / sizeof(State). But actually it is hard to track even tens of stacked states. And I think the only possible case for reaching this limit (1024) is a bug in the developer javascript code. I think also the specs does not mention it because it is system and implementation details. In our case we put the limit as std::numeric_limits&lt;unsigned&gt;::max() / sizeof(State) but the problem we crash when we reach this limit. Increasing this limit will not allow more flexibility for the developer to stack more states, but rather it will waste more memory for a buggy code.

What do other browsers do?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1213242</commentid>
    <comment_count>9</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2016-07-21 12:20:03 -0700</bug_when>
    <thetext>Firefox for Mac version 47.0.1 crashes when I visit attachment 283216.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1213245</commentid>
    <comment_count>10</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-07-21 12:23:57 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; Firefox for Mac version 47.0.1 crashes when I visit attachment 283216
&gt; [details].

Ditto for Chrome 52 on Mac.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1213469</commentid>
    <comment_count>11</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-07-21 19:37:04 -0700</bug_when>
    <thetext>Seems like a reasonable change to me. Not sure why 1024 specifically is best. I wonder if maybe it would be even better to do something like throw an exception when save is called instead of silently not saving.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214373</commentid>
    <comment_count>12</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-07-25 16:19:00 -0700</bug_when>
    <thetext>&lt;rdar://problem/26759984&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214398</commentid>
    <comment_count>13</comment_count>
      <attachid>284548</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-07-25 16:55:51 -0700</bug_when>
    <thetext>Created attachment 284548
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214405</commentid>
    <comment_count>14</comment_count>
      <attachid>284548</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-07-25 17:10:49 -0700</bug_when>
    <thetext>Comment on attachment 284548
Patch

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

&gt; Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp:360
&gt; +        static NeverDestroyed&lt;String&gt; consoleMessage(ASCIILiteral(&quot;The number of unbalanced CanvasRenderingContext2D::save() has exceeded the limit.&quot;));

This should refer not to the C++ CanvasRenderingContext2D::save(), but to something the JS author is familiar with. It should also say what the limit is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214409</commentid>
    <comment_count>15</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-07-25 17:19:53 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; Seems like a reasonable change to me. Not sure why 1024 specifically is
&gt; best. I wonder if maybe it would be even better to do something like throw
&gt; an exception when save is called instead of silently not saving.

The current limit is just an arbitrary number as well. It is limit of the Vector&lt;State&gt;. It is equal to std::numeric_limits&lt;unsigned&gt;::max() / sizeof(State). If the size of State increases or decreases, the limit will change as well.

I view MaxSaveCount as the size of the stack for drawing a canvas which can be something like that:

function draw1(ctx) {
    ctx.save();
    draw2(ctx);
    ctx.restore();
}

function draw2(ctx) {
    ctx.save();
    draw3(ctx);
    ctx.restore();
}

And so on for MaxSaveCount calls.

How deep a calls tack can JSC handle? I do not know but I can&apos;t imagine a drawing scenario which can contain more than 10 unbalanced save() calls. To be in the safe side, I changed MaxSaveCount to be 1024 * 16.

I added a console message to be printed when the limit is reached. The purpose of this fix/message is to notify the developer that his JS code has bug. Instead of just letting WebKit crashes because a bug in the developer&apos;s code, we print a message to show the problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214417</commentid>
    <comment_count>16</comment_count>
      <attachid>284548</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-07-25 17:40:39 -0700</bug_when>
    <thetext>Comment on attachment 284548
Patch

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

&gt;&gt; Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp:360
&gt;&gt; +        static NeverDestroyed&lt;String&gt; consoleMessage(ASCIILiteral(&quot;The number of unbalanced CanvasRenderingContext2D::save() has exceeded the limit.&quot;));
&gt; 
&gt; This should refer not to the C++ CanvasRenderingContext2D::save(), but to something the JS author is familiar with. It should also say what the limit is.

The message is changed to be &quot;CanvasRenderingContext2D.save() has been called without a matching restore() too many times. Ignoring save().&quot;

&gt; LayoutTests/fast/canvas/canvas-context-save-limit-expected.txt:2
&gt; +CONSOLE MESSAGE: line 29: The number of unbalanced CanvasRenderingContext2D::save() has exceeded the limit.
&gt; +CONSOLE MESSAGE: line 29: The number of unbalanced CanvasRenderingContext2D::save() has exceeded the limit.

This message is printed by CanvasRenderingContext2D::realizeSaves(). It is printed twice because of the statement &quot;ctx.fillStyle = RED&quot; in the test file. CanvasRenderingContext2D::setFillColor() calls realizeSaves() and then it calls setFillStyle() which calls realizeSaves() also.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214418</commentid>
    <comment_count>17</comment_count>
      <attachid>284554</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-07-25 17:43:41 -0700</bug_when>
    <thetext>Created attachment 284554
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214430</commentid>
    <comment_count>18</comment_count>
      <attachid>284557</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-07-25 18:16:21 -0700</bug_when>
    <thetext>Created attachment 284557
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214544</commentid>
    <comment_count>19</comment_count>
      <attachid>284557</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-26 09:08:45 -0700</bug_when>
    <thetext>Comment on attachment 284557
Patch

Rejecting attachment 284557 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-03&apos;, &apos;validate-changelog&apos;, &apos;--check-oops&apos;, &apos;--non-interactive&apos;, 284557, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

ChangeLog entry in LayoutTests/ChangeLog contains OOPS!.

Full output: http://webkit-queues.webkit.org/results/1756859</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214545</commentid>
    <comment_count>20</comment_count>
      <attachid>284596</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-07-26 09:15:34 -0700</bug_when>
    <thetext>Created attachment 284596
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214598</commentid>
    <comment_count>21</comment_count>
      <attachid>284607</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-07-26 11:29:39 -0700</bug_when>
    <thetext>Created attachment 284607
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214610</commentid>
    <comment_count>22</comment_count>
      <attachid>284607</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-26 11:59:44 -0700</bug_when>
    <thetext>Comment on attachment 284607
Patch

Clearing flags on attachment: 284607

Committed r203729: &lt;http://trac.webkit.org/changeset/203729&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214611</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-26 11:59:53 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>283216</attachid>
            <date>2016-07-08 16:34:48 -0700</date>
            <delta_ts>2016-07-08 16:34:48 -0700</delta_ts>
            <desc>canvas-context-infinite-save</desc>
            <filename>canvas-context-infinite-save.html</filename>
            <type>text/html</type>
            <size>196</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">PGNhbnZhcyBpZD0ibXlDYW52YXMiPgo8c2NyaXB0PgogICAgdmFyIGM9ZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoIm15Q2FudmFzIik7CiAgICB2YXIgY3R4PWMuZ2V0Q29udGV4dCgiMmQiKTsKICAg
IHdoaWxlICh0cnVlKSB7CiAgICAgICAgY3R4LnNhdmUoKTsKICAgICAgICBjdHgudHJhbnNsYXRl
KDcwLDcwKTsKICAgIH0KPC9zY3JpcHQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283233</attachid>
            <date>2016-07-08 18:20:55 -0700</date>
            <delta_ts>2016-07-08 21:35:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159586-20160708182019.patch</filename>
            <type>text/plain</type>
            <size>4995</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMzAxNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDE2LTA3LTA4ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgSW5maW5pdGUg
Q2FudmFzIGNvbnRleHQgc2F2ZSgpIGNhdXNlcyBXZWJLaXQgdG8gY3Jhc2gKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTU4NgorCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTk1ODYKKworICAgICAgICBU
ZXN0OiBmYXN0L2NhbnZhcy9jYW52YXMtY29udGV4dC1zYXZlLWxpbWl0Lmh0bWwKKworICAgICAg
ICBMaW1pdCB0aGUgc2l6ZSBvZiB0aGUgY2FudmFzIGNvbnRleHQgc3RhdGUgc3RhY2sgdG8gMTAy
NCBzYXZlcy4gQWxsIHRoZQorICAgICAgICBzYXZlcyB3aGljaCBjb21lIGFmdGVyIHRoYXQgbGlt
aXQgd2lsbCBzdGF5IHVucmVhbGl6ZWQuIFRoZSByZXN0b3JlKCkgCisgICAgICAgIHNob3VsZCBu
b3QgaGF2ZSBhbnkgZWZmZWN0IHRpbGwgdGhlcmUgaXMgbm8gdW5yZWFsaXplZCBzYXZlcy4gCisK
KyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpyZWFsaXplU2F2ZXNMb29w
KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaDoKKwog
MjAxNi0wNy0wOCAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAg
TW92ZSBzaG91bGRJbmhlcml0U2VjdXJpdHlPcmlnaW5Gcm9tT3duZXIoKSBmcm9tIFVSTCB0byBE
b2N1bWVudApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJELmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCShyZXZpc2lvbiAyMDI5ODcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNTcsNiArMzU3LDggQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6
OnJlYWxpemVTYQogICAgIEFTU0VSVChtX3N0YXRlU3RhY2suc2l6ZSgpID49IDEpOwogICAgIEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCA9IGRyYXdpbmdDb250ZXh0KCk7CiAgICAgZG8geworICAg
ICAgICBpZiAobV9zdGF0ZVN0YWNrLnNpemUoKSA+PSBtX21heFNhdmVDb3VudCkKKyAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBtX3N0YXRlU3RhY2suYXBwZW5kKHN0YXRlKCkpOwogICAgICAg
ICBpZiAoY29udGV4dCkKICAgICAgICAgICAgIGNvbnRleHQtPnNhdmUoKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RC5oCShyZXZpc2lvbiAyMDI5ODcpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQuaAkod29ya2luZyBjb3B5KQpAQCAtMzA5LDcgKzMwOSw3IEBA
IHByaXZhdGU6CiAgICAgICAgIENhbnZhc0RpZERyYXdBcHBseUFsbCA9IDB4ZmZmZmZmZmYKICAg
ICB9OwogCi0gICAgU3RhdGUmIG1vZGlmaWFibGVTdGF0ZSgpIHsgQVNTRVJUKCFtX3VucmVhbGl6
ZWRTYXZlQ291bnQpOyByZXR1cm4gbV9zdGF0ZVN0YWNrLmxhc3QoKTsgfQorICAgIFN0YXRlJiBt
b2RpZmlhYmxlU3RhdGUoKSB7IEFTU0VSVCghbV91bnJlYWxpemVkU2F2ZUNvdW50IHx8IG1fc3Rh
dGVTdGFjay5zaXplKCkgPj0gbV9tYXhTYXZlQ291bnQpOyByZXR1cm4gbV9zdGF0ZVN0YWNrLmxh
c3QoKTsgfQogICAgIGNvbnN0IFN0YXRlJiBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGVT
dGFjay5sYXN0KCk7IH0KIAogICAgIHZvaWQgYXBwbHlMaW5lRGFzaCgpIGNvbnN0OwpAQCAtMzg1
LDYgKzM4NSw3IEBAIHByaXZhdGU6CiAgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigp
IGNvbnN0IG92ZXJyaWRlOwogI2VuZGlmCiAKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbV9t
YXhTYXZlQ291bnQgPSAxMDI0OwogICAgIFZlY3RvcjxTdGF0ZSwgMT4gbV9zdGF0ZVN0YWNrOwog
ICAgIHVuc2lnbmVkIG1fdW5yZWFsaXplZFNhdmVDb3VudCB7IDAgfTsKICAgICBib29sIG1fdXNl
c0NTU0NvbXBhdGliaWxpdHlQYXJzZU1vZGU7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDI5ODcpCisr
KyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAor
MjAxNi0wNy0wOCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgor
CisgICAgICAgIEluZmluaXRlIENhbnZhcyBjb250ZXh0IHNhdmUoKSBjYXVzZXMgV2ViS2l0IHRv
IGNyYXNoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NTk1ODYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IGZhc3QvY2FudmFzL2NhbnZhcy1jb250ZXh0LXNhdmUtbGltaXQtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy9jYW52YXMtY29udGV4dC1zYXZlLWxpbWl0Lmh0bWw6
IEFkZGVkLgorCiAyMDE2LTA3LTA4ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4K
IAogICAgICAgICBSZWdyZXNzaW9uKHIyMDE4MDUpOiBDcmFzaCB3aXRoIDx1c2U+IHJlc291cmNl
IHRoYXQgaGFzIFZhcnkgaGVhZGVyCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52
YXMtY29udGV4dC1zYXZlLWxpbWl0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtY29udGV4dC1zYXZlLWxpbWl0LWV4cGVjdGVkLnR4dAko
bm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtY29udGV4dC1z
YXZlLWxpbWl0LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYgQEAKK1BB
U1MgY3R4LmZpbGxTdHlsZSBpcyAiI2ZmMDAwMCIKK1BBU1MgY3R4LmZpbGxTdHlsZSBpcyAiIzAw
ZmYwMCIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtY29udGV4dC1zYXZlLWxpbWl0
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWNvbnRl
eHQtc2F2ZS1saW1pdC5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2Fu
dmFzL2NhbnZhcy1jb250ZXh0LXNhdmUtbGltaXQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDM5IEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKyAgICA8Y2FudmFzIGlkPSJjYW52YXMiLz4KKyAgICA8c2NyaXB0PgorICAgICAgICBj
b25zdCBSRUQgPSAnI2ZmMDAwMCc7CisgICAgICAgIGNvbnN0IEdSRUVOID0gJyMwMGZmMDAnOwor
ICAgICAgICBjb25zdCBCTFVFID0gJyMwMDAwZmYnOworICAgICAgICBjb25zdCBTQVZFX1NUQUNL
X1NJWkUgPSAxMDI0OworICAgICAgICAKKyAgICAgICAgdmFyIGM9ZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImNhbnZhcyIpOworICAgICAgICB2YXIgY3R4PWMuZ2V0Q29udGV4dCgiMmQiKTsKKyAg
ICAgICAgCisgICAgICAgIGN0eC5maWxsU3R5bGUgPSBHUkVFTjsKKyAgICAgICAgY3R4LnNhdmUo
KTsKKyAgICAKKyAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBTQVZFX1NUQUNLX1NJWkUgKiAy
OyArK2kpIHsKKyAgICAgICAgICAgIGN0eC5maWxsU3R5bGUgPSBSRUQ7CisgICAgICAgICAgICBj
dHguc2F2ZSgpOworICAgICAgICB9CisKKyAgICAgICAgY3R4LmZpbGxTdHlsZSA9IEJMVUU7Cisg
ICAgICAgIGN0eC5zYXZlKCk7CisgICAgICAgIGN0eC5maWxsU3R5bGUgPSBSRUQ7CisgICAgICAg
IAorICAgICAgICBjdHgucmVzdG9yZSgpOworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
J2N0eC5maWxsU3R5bGUnLCBSRUQpOworCisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgU0FW
RV9TVEFDS19TSVpFICogMjsgKytpKQorICAgICAgICAgICAgY3R4LnJlc3RvcmUoKTsKKyAgICAK
KyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdjdHguZmlsbFN0eWxlJywgR1JFRU4pOwor
ICAgIDwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283244</attachid>
            <date>2016-07-08 21:35:34 -0700</date>
            <delta_ts>2016-07-25 16:55:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159586-20160708213458.patch</filename>
            <type>text/plain</type>
            <size>5583</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMzAxNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDE2LTA3LTA4ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgSW5maW5pdGUg
Q2FudmFzIGNvbnRleHQgc2F2ZSgpIGNhdXNlcyBXZWJLaXQgdG8gY3Jhc2gKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTU4NgorCisgICAgICAgIFRl
c3Q6IGZhc3QvY2FudmFzL2NhbnZhcy1jb250ZXh0LXNhdmUtbGltaXQuaHRtbAorCisgICAgICAg
IExpbWl0IHRoZSBzaXplIG9mIHRoZSBjYW52YXMgY29udGV4dCBzdGF0ZSBzdGFjayB0byAxMDI0
IHNhdmVzLiBBbGwgdGhlCisgICAgICAgIHNhdmVzIHdoaWNoIGNvbWUgYWZ0ZXIgdGhhdCBsaW1p
dCB3aWxsIHN0YXkgdW5yZWFsaXplZC4gVGhlIHJlc3RvcmUoKSAKKyAgICAgICAgc2hvdWxkIG5v
dCBoYXZlIGFueSBlZmZlY3QgdGlsbCB0aGVyZSBpcyBubyB1bnJlYWxpemVkIHNhdmVzLiAKKwor
ICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnJlYWxpemVTYXZlc0xvb3Ap
OgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oOgorCiAy
MDE2LTA3LTA4ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBN
b3ZlIHNob3VsZEluaGVyaXRTZWN1cml0eU9yaWdpbkZyb21Pd25lcigpIGZyb20gVVJMIHRvIERv
Y3VtZW50CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAJKHJldmlzaW9uIDIwMjk4NykKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM1Nyw2ICszNTcsOCBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6
cmVhbGl6ZVNhCiAgICAgQVNTRVJUKG1fc3RhdGVTdGFjay5zaXplKCkgPj0gMSk7CiAgICAgR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0ID0gZHJhd2luZ0NvbnRleHQoKTsKICAgICBkbyB7CisgICAg
ICAgIGlmIChtX3N0YXRlU3RhY2suc2l6ZSgpID49IE1heFNhdmVDb3VudCkKKyAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBtX3N0YXRlU3RhY2suYXBwZW5kKHN0YXRlKCkpOwogICAgICAgICBp
ZiAoY29udGV4dCkKICAgICAgICAgICAgIGNvbnRleHQtPnNhdmUoKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5o
CShyZXZpc2lvbiAyMDI5ODcpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQuaAkod29ya2luZyBjb3B5KQpAQCAtMzA5LDcgKzMwOSw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIENhbnZhc0RpZERyYXdBcHBseUFsbCA9IDB4ZmZmZmZmZmYKICAgICB9
OwogCi0gICAgU3RhdGUmIG1vZGlmaWFibGVTdGF0ZSgpIHsgQVNTRVJUKCFtX3VucmVhbGl6ZWRT
YXZlQ291bnQpOyByZXR1cm4gbV9zdGF0ZVN0YWNrLmxhc3QoKTsgfQorICAgIFN0YXRlJiBtb2Rp
ZmlhYmxlU3RhdGUoKSB7IEFTU0VSVCghbV91bnJlYWxpemVkU2F2ZUNvdW50IHx8IG1fc3RhdGVT
dGFjay5zaXplKCkgPj0gTWF4U2F2ZUNvdW50KTsgcmV0dXJuIG1fc3RhdGVTdGFjay5sYXN0KCk7
IH0KICAgICBjb25zdCBTdGF0ZSYgc3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlU3RhY2su
bGFzdCgpOyB9CiAKICAgICB2b2lkIGFwcGx5TGluZURhc2goKSBjb25zdDsKQEAgLTM4NSw2ICsz
ODUsNyBAQCBwcml2YXRlOgogICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25z
dCBvdmVycmlkZTsKICNlbmRpZgogCisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIE1heFNhdmVD
b3VudCA9IDEwMjQ7CiAgICAgVmVjdG9yPFN0YXRlLCAxPiBtX3N0YXRlU3RhY2s7CiAgICAgdW5z
aWduZWQgbV91bnJlYWxpemVkU2F2ZUNvdW50IHsgMCB9OwogICAgIGJvb2wgbV91c2VzQ1NTQ29t
cGF0aWJpbGl0eVBhcnNlTW9kZTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMjk4NykKKysrIExheW91
dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE2LTA3
LTA4ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAg
ICAgSW5maW5pdGUgQ2FudmFzIGNvbnRleHQgc2F2ZSgpIGNhdXNlcyBXZWJLaXQgdG8gY3Jhc2gK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTU4Ngor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9j
YW52YXMvY2FudmFzLWNvbnRleHQtc2F2ZS1saW1pdC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvY2FudmFzL2NhbnZhcy1jb250ZXh0LXNhdmUtbGltaXQuaHRtbDogQWRkZWQu
CisKIDIwMTYtMDctMDggIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAg
ICAgIFJlZ3Jlc3Npb24ocjIwMTgwNSk6IENyYXNoIHdpdGggPHVzZT4gcmVzb3VyY2UgdGhhdCBo
YXMgVmFyeSBoZWFkZXIKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1jb250
ZXh0LXNhdmUtbGltaXQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvY2FudmFzL2NhbnZhcy1jb250ZXh0LXNhdmUtbGltaXQtZXhwZWN0ZWQudHh0CShub25leGlz
dGVudCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1jb250ZXh0LXNhdmUtbGlt
aXQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTIgQEAKK1RoaXMgdGVz
dCB2ZXJpZmllcyB0aGF0IHRoZSBzaXplIG9mIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCBzdGF0
ZSBzdGFjayBkb2VzIG5vdCBncm93IGJleW9uZCBhIGNlcnRhaW4gbGltaXQuCisKK09uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGN0eC5maWxsU3R5bGUgaXMgIiNmZjAwMDAiCitQ
QVNTIGN0eC5maWxsU3R5bGUgaXMgIiMwMDAwZmYiCitQQVNTIGN0eC5maWxsU3R5bGUgaXMgIiMw
MGZmMDAiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWNvbnRleHQtc2F2ZS1saW1p
dC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1jb250
ZXh0LXNhdmUtbGltaXQuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy9jYW52YXMtY29udGV4dC1zYXZlLWxpbWl0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw0MyBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+CisgICAgPGNhbnZhcyBpZD0iY2FudmFzIi8+CisgICAgPHNjcmlwdD4KKyAgICAgICAg
ZGVzY3JpcHRpb24oIlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHRoZSBzaXplIG9mIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRCBzdGF0ZSBzdGFjayBkb2VzIG5vdCBncm93IGJleW9uZCBhIGNlcnRh
aW4gbGltaXQuIik7CisgICAgICAgIGNvbnN0IFJFRCA9ICcjZmYwMDAwJzsKKyAgICAgICAgY29u
c3QgR1JFRU4gPSAnIzAwZmYwMCc7CisgICAgICAgIGNvbnN0IEJMVUUgPSAnIzAwMDBmZic7Cisg
ICAgICAgIGNvbnN0IFNBVkVfU1RBQ0tfU0laRSA9IDEwMjQ7CisgICAgICAgIGNvbnN0IE1BWF9T
QVZFUyA9IFNBVkVfU1RBQ0tfU0laRSAtIDE7CisgICAgICAgIAorICAgICAgICB2YXIgYyA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKKyAgICAgICAgdmFyIGN0eCA9IGMuZ2V0
Q29udGV4dCgiMmQiKTsKKyAgICAgICAgCisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgTUFY
X1NBVkVTICogMjsgKytpKSB7CisgICAgICAgICAgICBpZiAoIWkgfHwgaSA+PSBNQVhfU0FWRVMp
CisgICAgICAgICAgICAgICAgY3R4LmZpbGxTdHlsZSA9IEdSRUVOOworICAgICAgICAgICAgZWxz
ZSBpZiAoaSA9PSBNQVhfU0FWRVMgLSAxKQorICAgICAgICAgICAgICAgIGN0eC5maWxsU3R5bGUg
PSBCTFVFOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGN0eC5maWxsU3R5bGUg
PSBSRUQ7CisgICAgICAgICAgICBjdHguc2F2ZSgpOworICAgICAgICB9CisKKyAgICAgICAgY3R4
LmZpbGxTdHlsZSA9IFJFRDsKKworICAgICAgICBmb3IgKHZhciBpID0gTUFYX1NBVkVTICogMiAt
IDE7IGkgPj0gMDsgLS1pKSB7CisgICAgICAgICAgICBjdHgucmVzdG9yZSgpOyAgIAorICAgICAg
ICAgICAgaWYgKGkgPT0gTUFYX1NBVkVTICogMiAtIDEpCisgICAgICAgICAgICAgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCdjdHguZmlsbFN0eWxlJywgUkVEKTsKKyAgICAgICAgICAgIGVsc2Ug
aWYgKGkgPT0gTUFYX1NBVkVTIC0gMSkKKyAgICAgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoJ2N0eC5maWxsU3R5bGUnLCBCTFVFKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKCFpKQor
ICAgICAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnY3R4LmZpbGxTdHlsZScsIEdS
RUVOKTsKKyAgICAgICAgfQorICAgIDwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284548</attachid>
            <date>2016-07-25 16:55:51 -0700</date>
            <delta_ts>2016-07-25 17:43:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159586-20160725165444.patch</filename>
            <type>text/plain</type>
            <size>6896</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMzcwMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDE2LTA3LTI1ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgSW5maW5pdGUg
Q2FudmFzIGNvbnRleHQgc2F2ZSgpIGNhdXNlcyBXZWJLaXQgdG8gY3Jhc2gKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTU4NgorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vMjY3NTk5ODQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgTGltaXQgdGhlIHNpemUgb2YgdGhlIGNhbnZhcyBjb250ZXh0IHN0YXRl
IHN0YWNrIHRvIDEwMjQgKiAxNiBzYXZlcy4gQWxsCisgICAgICAgIHRoZSBzYXZlcyB3aGljaCBj
b21lIGFmdGVyIHRoYXQgbGltaXQgd2lsbCBzdGF5IHVucmVhbGl6ZWQuIFRoZSByZXN0b3JlKCkg
CisgICAgICAgIHNob3VsZCBub3QgaGF2ZSBhbnkgZWZmZWN0IHRpbGwgdGhlcmUgaXMgbm8gdW5y
ZWFsaXplZCBzYXZlcy4KKyAgICAgICAgIAorICAgICAgICBUZXN0OiBmYXN0L2NhbnZhcy9jYW52
YXMtY29udGV4dC1zYXZlLWxpbWl0Lmh0bWwKKworICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQ6OnJlYWxpemVTYXZlcyk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQ6OnJlYWxpemVTYXZlc0xvb3ApOgorICAgICAgICAqIGh0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oOiAKKwogMjAxNi0wNy0yNSAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFBhcmFtZXRlcnMgdG8gRE9NSW1wbGVtZW50
YXRpb24uY3JlYXRlRG9jdW1lbnRUeXBlKCkgc2hvdWxkIGJlIG1hbmRhdG9yeSBhbmQgbm9uLW51
bGxhYmxlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAJKHJldmlzaW9uIDIwMzcwMSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM1MSwxMiArMzUxLDI1IEBAIGlubGluZSB2b2lkIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRDo6Rm8KICAgICBjb250ZXh0LmRyYXdCaWRpVGV4dChtX2ZvbnQsIHJ1biwgcG9pbnQs
IGFjdGlvbik7CiB9CiAKK3ZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpyZWFsaXplU2F2
ZXMoKQoreworICAgIGlmIChtX3VucmVhbGl6ZWRTYXZlQ291bnQpCisgICAgICAgIHJlYWxpemVT
YXZlc0xvb3AoKTsKKworICAgIGlmIChtX3VucmVhbGl6ZWRTYXZlQ291bnQpIHsKKyAgICAgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gY29uc29sZU1lc3NhZ2UoQVNDSUlMaXRlcmFs
KCJUaGUgbnVtYmVyIG9mIHVuYmFsYW5jZWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzYXZl
KCkgaGFzIGV4Y2VlZGVkIHRoZSBsaW1pdC4iKSk7CisgICAgICAgIGNhbnZhcygpLT5kb2N1bWVu
dCgpLmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlJlbmRlcmluZywgTWVzc2FnZUxl
dmVsOjpFcnJvciwgY29uc29sZU1lc3NhZ2UpOworICAgIH0KK30KKwogdm9pZCBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQ6OnJlYWxpemVTYXZlc0xvb3AoKQogewogICAgIEFTU0VSVChtX3VucmVh
bGl6ZWRTYXZlQ291bnQpOwogICAgIEFTU0VSVChtX3N0YXRlU3RhY2suc2l6ZSgpID49IDEpOwog
ICAgIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCA9IGRyYXdpbmdDb250ZXh0KCk7CiAgICAgZG8g
eworICAgICAgICBpZiAobV9zdGF0ZVN0YWNrLnNpemUoKSA+IE1heFNhdmVDb3VudCkKKyAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBtX3N0YXRlU3RhY2suYXBwZW5kKHN0YXRlKCkpOwogICAg
ICAgICBpZiAoY29udGV4dCkKICAgICAgICAgICAgIGNvbnRleHQtPnNhdmUoKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRC5oCShyZXZpc2lvbiAyMDM3MDEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaAkod29ya2luZyBjb3B5KQpAQCAtMzA5LDcgKzMwOSw3
IEBAIHByaXZhdGU6CiAgICAgICAgIENhbnZhc0RpZERyYXdBcHBseUFsbCA9IDB4ZmZmZmZmZmYK
ICAgICB9OwogCi0gICAgU3RhdGUmIG1vZGlmaWFibGVTdGF0ZSgpIHsgQVNTRVJUKCFtX3VucmVh
bGl6ZWRTYXZlQ291bnQpOyByZXR1cm4gbV9zdGF0ZVN0YWNrLmxhc3QoKTsgfQorICAgIFN0YXRl
JiBtb2RpZmlhYmxlU3RhdGUoKSB7IEFTU0VSVCghbV91bnJlYWxpemVkU2F2ZUNvdW50IHx8IG1f
c3RhdGVTdGFjay5zaXplKCkgPj0gTWF4U2F2ZUNvdW50KTsgcmV0dXJuIG1fc3RhdGVTdGFjay5s
YXN0KCk7IH0KICAgICBjb25zdCBTdGF0ZSYgc3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRl
U3RhY2subGFzdCgpOyB9CiAKICAgICB2b2lkIGFwcGx5TGluZURhc2goKSBjb25zdDsKQEAgLTMy
NSwxMSArMzI1LDcgQEAgcHJpdmF0ZToKICAgICBHcmFwaGljc0NvbnRleHQqIGRyYXdpbmdDb250
ZXh0KCkgY29uc3Q7CiAKICAgICB2b2lkIHVud2luZFN0YXRlU3RhY2soKTsKLSAgICB2b2lkIHJl
YWxpemVTYXZlcygpCi0gICAgewotICAgICAgICBpZiAobV91bnJlYWxpemVkU2F2ZUNvdW50KQot
ICAgICAgICAgICAgcmVhbGl6ZVNhdmVzTG9vcCgpOwotICAgIH0KKyAgICB2b2lkIHJlYWxpemVT
YXZlcygpOwogICAgIHZvaWQgcmVhbGl6ZVNhdmVzTG9vcCgpOwogCiAgICAgdm9pZCBhcHBseVN0
cm9rZVBhdHRlcm4oKTsKQEAgLTM4NSw2ICszODEsNyBAQCBwcml2YXRlOgogICAgIFBsYXRmb3Jt
TGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBvdmVycmlkZTsKICNlbmRpZgogCisgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIE1heFNhdmVDb3VudCA9IDEwMjQgKiAxNjsKICAgICBWZWN0b3I8
U3RhdGUsIDE+IG1fc3RhdGVTdGFjazsKICAgICB1bnNpZ25lZCBtX3VucmVhbGl6ZWRTYXZlQ291
bnQgeyAwIH07CiAgICAgYm9vbCBtX3VzZXNDU1NDb21wYXRpYmlsaXR5UGFyc2VNb2RlOwpJbmRl
eDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5n
ZUxvZwkocmV2aXNpb24gMjAzNzAxKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTYtMDctMjUgIFNhaWQgQWJvdS1IYWxsYXdhICA8
c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBJbmZpbml0ZSBDYW52YXMgY29udGV4
dCBzYXZlKCkgY2F1c2VzIFdlYktpdCB0byBjcmFzaAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5NTg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2NhbnZhcy9jYW52YXMtY29udGV4dC1zYXZl
LWxpbWl0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9jYW52YXMvY2FudmFz
LWNvbnRleHQtc2F2ZS1saW1pdC5odG1sOiBBZGRlZC4KKwogMjAxNi0wNy0yNSAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFBhcmFtZXRlcnMgdG8gRE9NSW1wbGVt
ZW50YXRpb24uY3JlYXRlRG9jdW1lbnRUeXBlKCkgc2hvdWxkIGJlIG1hbmRhdG9yeSBhbmQgbm9u
LW51bGxhYmxlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtY29udGV4dC1z
YXZlLWxpbWl0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy9jYW52YXMtY29udGV4dC1zYXZlLWxpbWl0LWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtY29udGV4dC1zYXZlLWxpbWl0LWV4
cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE0IEBACitDT05TT0xFIE1FU1NB
R0U6IGxpbmUgMjk6IFRoZSBudW1iZXIgb2YgdW5iYWxhbmNlZCBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQ6OnNhdmUoKSBoYXMgZXhjZWVkZWQgdGhlIGxpbWl0LgorQ09OU09MRSBNRVNTQUdFOiBs
aW5lIDI5OiBUaGUgbnVtYmVyIG9mIHVuYmFsYW5jZWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
OjpzYXZlKCkgaGFzIGV4Y2VlZGVkIHRoZSBsaW1pdC4KK1RoaXMgdGVzdCB2ZXJpZmllcyB0aGF0
IHRoZSBzaXplIG9mIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCBzdGF0ZSBzdGFjayBkb2VzIG5v
dCBncm93IGJleW9uZCBhIGNlcnRhaW4gbGltaXQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KKworCitQQVNTIGN0eC5maWxsU3R5bGUgaXMgIiNmZjAwMDAiCitQQVNTIGN0eC5maWxsU3R5
bGUgaXMgIiMwMDAwZmYiCitQQVNTIGN0eC5maWxsU3R5bGUgaXMgIiMwMGZmMDAiCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWNvbnRleHQtc2F2ZS1saW1pdC5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1jb250ZXh0LXNhdmUtbGltaXQu
aHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtY29u
dGV4dC1zYXZlLWxpbWl0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MyBAQAorPCFE
T0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgICAgPGNh
bnZhcyBpZD0iY2FudmFzIi8+CisgICAgPHNjcmlwdD4KKyAgICAgICAgZGVzY3JpcHRpb24oIlRo
aXMgdGVzdCB2ZXJpZmllcyB0aGF0IHRoZSBzaXplIG9mIENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RCBzdGF0ZSBzdGFjayBkb2VzIG5vdCBncm93IGJleW9uZCBhIGNlcnRhaW4gbGltaXQuIik7Cisg
ICAgICAgIGNvbnN0IFJFRCA9ICcjZmYwMDAwJzsKKyAgICAgICAgY29uc3QgR1JFRU4gPSAnIzAw
ZmYwMCc7CisgICAgICAgIGNvbnN0IEJMVUUgPSAnIzAwMDBmZic7CisgICAgICAgIGNvbnN0IFNB
VkVfU1RBQ0tfU0laRSA9IDEwMjQgKiAxNjsKKyAgICAgICAgY29uc3QgTUFYX1NBVkVTID0gU0FW
RV9TVEFDS19TSVpFIC0gMTsKKworICAgICAgICB2YXIgYyA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJjYW52YXMiKTsKKyAgICAgICAgdmFyIGN0eCA9IGMuZ2V0Q29udGV4dCgiMmQiKTsKKwor
ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IE1BWF9TQVZFUyAqIDI7ICsraSkgeworICAgICAg
ICAgICAgaWYgKCFpIHx8IGkgPj0gTUFYX1NBVkVTKQorICAgICAgICAgICAgICAgIGN0eC5maWxs
U3R5bGUgPSBHUkVFTjsKKyAgICAgICAgICAgIGVsc2UgaWYgKGkgPT0gTUFYX1NBVkVTIC0gMSkK
KyAgICAgICAgICAgICAgICBjdHguZmlsbFN0eWxlID0gQkxVRTsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICBjdHguZmlsbFN0eWxlID0gUkVEOworICAgICAgICAgICAgY3R4LnNh
dmUoKTsKKyAgICAgICAgfQorCisgICAgICAgIGN0eC5maWxsU3R5bGUgPSBSRUQ7CisKKyAgICAg
ICAgZm9yICh2YXIgaSA9IE1BWF9TQVZFUyAqIDIgLSAxOyBpID49IDA7IC0taSkgeworICAgICAg
ICAgICAgY3R4LnJlc3RvcmUoKTsgICAKKyAgICAgICAgICAgIGlmIChpID09IE1BWF9TQVZFUyAq
IDIgLSAxKQorICAgICAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnY3R4LmZpbGxT
dHlsZScsIFJFRCk7CisgICAgICAgICAgICBlbHNlIGlmIChpID09IE1BWF9TQVZFUyAtIDEpCisg
ICAgICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdjdHguZmlsbFN0eWxlJywgQkxV
RSk7CisgICAgICAgICAgICBlbHNlIGlmICghaSkKKyAgICAgICAgICAgICAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoJ2N0eC5maWxsU3R5bGUnLCBHUkVFTik7CisgICAgICAgIH0KKyAgICA8L3Nj
cmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284554</attachid>
            <date>2016-07-25 17:43:41 -0700</date>
            <delta_ts>2016-07-25 18:16:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159586-20160725174234.patch</filename>
            <type>text/plain</type>
            <size>6924</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMzcwMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDE2LTA3LTI1ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgSW5maW5pdGUg
Q2FudmFzIGNvbnRleHQgc2F2ZSgpIGNhdXNlcyBXZWJLaXQgdG8gY3Jhc2gKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTU4NgorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vMjY3NTk5ODQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgTGltaXQgdGhlIHNpemUgb2YgdGhlIGNhbnZhcyBjb250ZXh0IHN0YXRl
IHN0YWNrIHRvIDEwMjQgKiAxNiBzYXZlcy4gQWxsCisgICAgICAgIHRoZSBzYXZlcyB3aGljaCBj
b21lIGFmdGVyIHRoYXQgbGltaXQgd2lsbCBzdGF5IHVucmVhbGl6ZWQuIFRoZSByZXN0b3JlKCkg
CisgICAgICAgIHNob3VsZCBub3QgaGF2ZSBhbnkgZWZmZWN0IHRpbGwgdGhlcmUgaXMgbm8gdW5y
ZWFsaXplZCBzYXZlcy4KKyAgICAgICAgIAorICAgICAgICBUZXN0OiBmYXN0L2NhbnZhcy9jYW52
YXMtY29udGV4dC1zYXZlLWxpbWl0Lmh0bWwKKworICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQ6OnJlYWxpemVTYXZlcyk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQ6OnJlYWxpemVTYXZlc0xvb3ApOgorICAgICAgICAqIGh0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oOiAKKwogMjAxNi0wNy0yNSAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFBhcmFtZXRlcnMgdG8gRE9NSW1wbGVtZW50
YXRpb24uY3JlYXRlRG9jdW1lbnRUeXBlKCkgc2hvdWxkIGJlIG1hbmRhdG9yeSBhbmQgbm9uLW51
bGxhYmxlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAJKHJldmlzaW9uIDIwMzcwMSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM1MSwxMiArMzUxLDI1IEBAIGlubGluZSB2b2lkIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRDo6Rm8KICAgICBjb250ZXh0LmRyYXdCaWRpVGV4dChtX2ZvbnQsIHJ1biwgcG9pbnQs
IGFjdGlvbik7CiB9CiAKK3ZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpyZWFsaXplU2F2
ZXMoKQoreworICAgIGlmIChtX3VucmVhbGl6ZWRTYXZlQ291bnQpCisgICAgICAgIHJlYWxpemVT
YXZlc0xvb3AoKTsKKworICAgIGlmIChtX3VucmVhbGl6ZWRTYXZlQ291bnQpIHsKKyAgICAgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gY29uc29sZU1lc3NhZ2UoQVNDSUlMaXRlcmFs
KCJDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuc2F2ZSgpIGhhcyBiZWVuIGNhbGxlZCB3aXRob3V0
IGEgbWF0Y2hpbmcgcmVzdG9yZSgpIHRvbyBtYW55IHRpbWVzLiBJZ25vcmluZyBzYXZlKCkuIikp
OworICAgICAgICBjYW52YXMoKS0+ZG9jdW1lbnQoKS5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdl
U291cmNlOjpSZW5kZXJpbmcsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGNvbnNvbGVNZXNzYWdlKTsK
KyAgICB9Cit9CisKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpyZWFsaXplU2F2ZXNM
b29wKCkKIHsKICAgICBBU1NFUlQobV91bnJlYWxpemVkU2F2ZUNvdW50KTsKICAgICBBU1NFUlQo
bV9zdGF0ZVN0YWNrLnNpemUoKSA+PSAxKTsKICAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQg
PSBkcmF3aW5nQ29udGV4dCgpOwogICAgIGRvIHsKKyAgICAgICAgaWYgKG1fc3RhdGVTdGFjay5z
aXplKCkgPiBNYXhTYXZlQ291bnQpCisgICAgICAgICAgICBicmVhazsKICAgICAgICAgbV9zdGF0
ZVN0YWNrLmFwcGVuZChzdGF0ZSgpKTsKICAgICAgICAgaWYgKGNvbnRleHQpCiAgICAgICAgICAg
ICBjb250ZXh0LT5zYXZlKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaAkocmV2aXNpb24gMjAzNzAxKQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgJKHdv
cmtpbmcgY29weSkKQEAgLTMwOSw3ICszMDksNyBAQCBwcml2YXRlOgogICAgICAgICBDYW52YXNE
aWREcmF3QXBwbHlBbGwgPSAweGZmZmZmZmZmCiAgICAgfTsKIAotICAgIFN0YXRlJiBtb2RpZmlh
YmxlU3RhdGUoKSB7IEFTU0VSVCghbV91bnJlYWxpemVkU2F2ZUNvdW50KTsgcmV0dXJuIG1fc3Rh
dGVTdGFjay5sYXN0KCk7IH0KKyAgICBTdGF0ZSYgbW9kaWZpYWJsZVN0YXRlKCkgeyBBU1NFUlQo
IW1fdW5yZWFsaXplZFNhdmVDb3VudCB8fCBtX3N0YXRlU3RhY2suc2l6ZSgpID49IE1heFNhdmVD
b3VudCk7IHJldHVybiBtX3N0YXRlU3RhY2subGFzdCgpOyB9CiAgICAgY29uc3QgU3RhdGUmIHN0
YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZVN0YWNrLmxhc3QoKTsgfQogCiAgICAgdm9pZCBh
cHBseUxpbmVEYXNoKCkgY29uc3Q7CkBAIC0zMjUsMTEgKzMyNSw3IEBAIHByaXZhdGU6CiAgICAg
R3JhcGhpY3NDb250ZXh0KiBkcmF3aW5nQ29udGV4dCgpIGNvbnN0OwogCiAgICAgdm9pZCB1bndp
bmRTdGF0ZVN0YWNrKCk7Ci0gICAgdm9pZCByZWFsaXplU2F2ZXMoKQotICAgIHsKLSAgICAgICAg
aWYgKG1fdW5yZWFsaXplZFNhdmVDb3VudCkKLSAgICAgICAgICAgIHJlYWxpemVTYXZlc0xvb3Ao
KTsKLSAgICB9CisgICAgdm9pZCByZWFsaXplU2F2ZXMoKTsKICAgICB2b2lkIHJlYWxpemVTYXZl
c0xvb3AoKTsKIAogICAgIHZvaWQgYXBwbHlTdHJva2VQYXR0ZXJuKCk7CkBAIC0zODUsNiArMzgx
LDcgQEAgcHJpdmF0ZToKICAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Qg
b3ZlcnJpZGU7CiAjZW5kaWYKIAorICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBNYXhTYXZlQ291
bnQgPSAxMDI0ICogMTY7CiAgICAgVmVjdG9yPFN0YXRlLCAxPiBtX3N0YXRlU3RhY2s7CiAgICAg
dW5zaWduZWQgbV91bnJlYWxpemVkU2F2ZUNvdW50IHsgMCB9OwogICAgIGJvb2wgbV91c2VzQ1NT
Q29tcGF0aWJpbGl0eVBhcnNlTW9kZTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMzcwMSkKKysrIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE2
LTA3LTI1ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAg
ICAgICAgSW5maW5pdGUgQ2FudmFzIGNvbnRleHQgc2F2ZSgpIGNhdXNlcyBXZWJLaXQgdG8gY3Jh
c2gKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTU4
NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFz
dC9jYW52YXMvY2FudmFzLWNvbnRleHQtc2F2ZS1saW1pdC1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvY2FudmFzL2NhbnZhcy1jb250ZXh0LXNhdmUtbGltaXQuaHRtbDogQWRk
ZWQuCisKIDIwMTYtMDctMjUgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAg
ICAgICBQYXJhbWV0ZXJzIHRvIERPTUltcGxlbWVudGF0aW9uLmNyZWF0ZURvY3VtZW50VHlwZSgp
IHNob3VsZCBiZSBtYW5kYXRvcnkgYW5kIG5vbi1udWxsYWJsZQpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9jYW52YXMvY2FudmFzLWNvbnRleHQtc2F2ZS1saW1pdC1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWNvbnRleHQtc2F2ZS1saW1p
dC1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMv
Y2FudmFzLWNvbnRleHQtc2F2ZS1saW1pdC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwxNCBAQAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDI5OiBUaGUgbnVtYmVyIG9mIHVu
YmFsYW5jZWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzYXZlKCkgaGFzIGV4Y2VlZGVkIHRo
ZSBsaW1pdC4KK0NPTlNPTEUgTUVTU0FHRTogbGluZSAyOTogVGhlIG51bWJlciBvZiB1bmJhbGFu
Y2VkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2F2ZSgpIGhhcyBleGNlZWRlZCB0aGUgbGlt
aXQuCitUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCB0aGUgc2l6ZSBvZiBDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQgc3RhdGUgc3RhY2sgZG9lcyBub3QgZ3JvdyBiZXlvbmQgYSBjZXJ0YWluIGxpbWl0
LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBjdHguZmlsbFN0eWxlIGlz
ICIjZmYwMDAwIgorUEFTUyBjdHguZmlsbFN0eWxlIGlzICIjMDAwMGZmIgorUEFTUyBjdHguZmls
bFN0eWxlIGlzICIjMDBmZjAwIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1jb250
ZXh0LXNhdmUtbGltaXQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZh
cy9jYW52YXMtY29udGV4dC1zYXZlLWxpbWl0Lmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWNvbnRleHQtc2F2ZS1saW1pdC5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNDMgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+Cis8aGVhZD4K
KyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxjYW52YXMgaWQ9ImNhbnZhcyIvPgorICAgIDxzY3Jp
cHQ+CisgICAgICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCB0aGUgc2l6
ZSBvZiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQgc3RhdGUgc3RhY2sgZG9lcyBub3QgZ3JvdyBi
ZXlvbmQgYSBjZXJ0YWluIGxpbWl0LiIpOworICAgICAgICBjb25zdCBSRUQgPSAnI2ZmMDAwMCc7
CisgICAgICAgIGNvbnN0IEdSRUVOID0gJyMwMGZmMDAnOworICAgICAgICBjb25zdCBCTFVFID0g
JyMwMDAwZmYnOworICAgICAgICBjb25zdCBTQVZFX1NUQUNLX1NJWkUgPSAxMDI0ICogMTY7Cisg
ICAgICAgIGNvbnN0IE1BWF9TQVZFUyA9IFNBVkVfU1RBQ0tfU0laRSAtIDE7CisKKyAgICAgICAg
dmFyIGMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7CisgICAgICAgIHZhciBj
dHggPSBjLmdldENvbnRleHQoIjJkIik7CisKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBN
QVhfU0FWRVMgKiAyOyArK2kpIHsKKyAgICAgICAgICAgIGlmICghaSB8fCBpID49IE1BWF9TQVZF
UykKKyAgICAgICAgICAgICAgICBjdHguZmlsbFN0eWxlID0gR1JFRU47CisgICAgICAgICAgICBl
bHNlIGlmIChpID09IE1BWF9TQVZFUyAtIDEpCisgICAgICAgICAgICAgICAgY3R4LmZpbGxTdHls
ZSA9IEJMVUU7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgY3R4LmZpbGxTdHls
ZSA9IFJFRDsKKyAgICAgICAgICAgIGN0eC5zYXZlKCk7CisgICAgICAgIH0KKworICAgICAgICBj
dHguZmlsbFN0eWxlID0gUkVEOworCisgICAgICAgIGZvciAodmFyIGkgPSBNQVhfU0FWRVMgKiAy
IC0gMTsgaSA+PSAwOyAtLWkpIHsKKyAgICAgICAgICAgIGN0eC5yZXN0b3JlKCk7ICAgCisgICAg
ICAgICAgICBpZiAoaSA9PSBNQVhfU0FWRVMgKiAyIC0gMSkKKyAgICAgICAgICAgICAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoJ2N0eC5maWxsU3R5bGUnLCBSRUQpOworICAgICAgICAgICAgZWxz
ZSBpZiAoaSA9PSBNQVhfU0FWRVMgLSAxKQorICAgICAgICAgICAgICAgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygnY3R4LmZpbGxTdHlsZScsIEJMVUUpOworICAgICAgICAgICAgZWxzZSBpZiAoIWkp
CisgICAgICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdjdHguZmlsbFN0eWxlJywg
R1JFRU4pOworICAgICAgICB9CisgICAgPC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284557</attachid>
            <date>2016-07-25 18:16:21 -0700</date>
            <delta_ts>2016-07-26 09:15:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159586-20160725181514.patch</filename>
            <type>text/plain</type>
            <size>6980</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMzcwMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDE2LTA3LTI1ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgSW5maW5pdGUg
Q2FudmFzIGNvbnRleHQgc2F2ZSgpIGNhdXNlcyBXZWJLaXQgdG8gY3Jhc2gKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTU4NgorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vMjY3NTk5ODQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgTGltaXQgdGhlIHNpemUgb2YgdGhlIGNhbnZhcyBjb250ZXh0IHN0YXRl
IHN0YWNrIHRvIDEwMjQgKiAxNiBzYXZlcy4gQWxsCisgICAgICAgIHRoZSBzYXZlcyB3aGljaCBj
b21lIGFmdGVyIHRoYXQgbGltaXQgd2lsbCBzdGF5IHVucmVhbGl6ZWQuIFRoZSByZXN0b3JlKCkg
CisgICAgICAgIHNob3VsZCBub3QgaGF2ZSBhbnkgZWZmZWN0IHRpbGwgdGhlcmUgaXMgbm8gdW5y
ZWFsaXplZCBzYXZlcy4KKyAgICAgICAgIAorICAgICAgICBUZXN0OiBmYXN0L2NhbnZhcy9jYW52
YXMtY29udGV4dC1zYXZlLWxpbWl0Lmh0bWwKKworICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQ6OnJlYWxpemVTYXZlcyk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQ6OnJlYWxpemVTYXZlc0xvb3ApOgorICAgICAgICAqIGh0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oOiAKKwogMjAxNi0wNy0yNSAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFBhcmFtZXRlcnMgdG8gRE9NSW1wbGVtZW50
YXRpb24uY3JlYXRlRG9jdW1lbnRUeXBlKCkgc2hvdWxkIGJlIG1hbmRhdG9yeSBhbmQgbm9uLW51
bGxhYmxlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAJKHJldmlzaW9uIDIwMzcwMSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM1MSwxMiArMzUxLDI1IEBAIGlubGluZSB2b2lkIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRDo6Rm8KICAgICBjb250ZXh0LmRyYXdCaWRpVGV4dChtX2ZvbnQsIHJ1biwgcG9pbnQs
IGFjdGlvbik7CiB9CiAKK3ZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpyZWFsaXplU2F2
ZXMoKQoreworICAgIGlmIChtX3VucmVhbGl6ZWRTYXZlQ291bnQpCisgICAgICAgIHJlYWxpemVT
YXZlc0xvb3AoKTsKKworICAgIGlmIChtX3VucmVhbGl6ZWRTYXZlQ291bnQpIHsKKyAgICAgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gY29uc29sZU1lc3NhZ2UoQVNDSUlMaXRlcmFs
KCJDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuc2F2ZSgpIGhhcyBiZWVuIGNhbGxlZCB3aXRob3V0
IGEgbWF0Y2hpbmcgcmVzdG9yZSgpIHRvbyBtYW55IHRpbWVzLiBJZ25vcmluZyBzYXZlKCkuIikp
OworICAgICAgICBjYW52YXMoKS0+ZG9jdW1lbnQoKS5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdl
U291cmNlOjpSZW5kZXJpbmcsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGNvbnNvbGVNZXNzYWdlKTsK
KyAgICB9Cit9CisKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpyZWFsaXplU2F2ZXNM
b29wKCkKIHsKICAgICBBU1NFUlQobV91bnJlYWxpemVkU2F2ZUNvdW50KTsKICAgICBBU1NFUlQo
bV9zdGF0ZVN0YWNrLnNpemUoKSA+PSAxKTsKICAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQg
PSBkcmF3aW5nQ29udGV4dCgpOwogICAgIGRvIHsKKyAgICAgICAgaWYgKG1fc3RhdGVTdGFjay5z
aXplKCkgPiBNYXhTYXZlQ291bnQpCisgICAgICAgICAgICBicmVhazsKICAgICAgICAgbV9zdGF0
ZVN0YWNrLmFwcGVuZChzdGF0ZSgpKTsKICAgICAgICAgaWYgKGNvbnRleHQpCiAgICAgICAgICAg
ICBjb250ZXh0LT5zYXZlKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaAkocmV2aXNpb24gMjAzNzAxKQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgJKHdv
cmtpbmcgY29weSkKQEAgLTMwOSw3ICszMDksNyBAQCBwcml2YXRlOgogICAgICAgICBDYW52YXNE
aWREcmF3QXBwbHlBbGwgPSAweGZmZmZmZmZmCiAgICAgfTsKIAotICAgIFN0YXRlJiBtb2RpZmlh
YmxlU3RhdGUoKSB7IEFTU0VSVCghbV91bnJlYWxpemVkU2F2ZUNvdW50KTsgcmV0dXJuIG1fc3Rh
dGVTdGFjay5sYXN0KCk7IH0KKyAgICBTdGF0ZSYgbW9kaWZpYWJsZVN0YXRlKCkgeyBBU1NFUlQo
IW1fdW5yZWFsaXplZFNhdmVDb3VudCB8fCBtX3N0YXRlU3RhY2suc2l6ZSgpID49IE1heFNhdmVD
b3VudCk7IHJldHVybiBtX3N0YXRlU3RhY2subGFzdCgpOyB9CiAgICAgY29uc3QgU3RhdGUmIHN0
YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZVN0YWNrLmxhc3QoKTsgfQogCiAgICAgdm9pZCBh
cHBseUxpbmVEYXNoKCkgY29uc3Q7CkBAIC0zMjUsMTEgKzMyNSw3IEBAIHByaXZhdGU6CiAgICAg
R3JhcGhpY3NDb250ZXh0KiBkcmF3aW5nQ29udGV4dCgpIGNvbnN0OwogCiAgICAgdm9pZCB1bndp
bmRTdGF0ZVN0YWNrKCk7Ci0gICAgdm9pZCByZWFsaXplU2F2ZXMoKQotICAgIHsKLSAgICAgICAg
aWYgKG1fdW5yZWFsaXplZFNhdmVDb3VudCkKLSAgICAgICAgICAgIHJlYWxpemVTYXZlc0xvb3Ao
KTsKLSAgICB9CisgICAgdm9pZCByZWFsaXplU2F2ZXMoKTsKICAgICB2b2lkIHJlYWxpemVTYXZl
c0xvb3AoKTsKIAogICAgIHZvaWQgYXBwbHlTdHJva2VQYXR0ZXJuKCk7CkBAIC0zODUsNiArMzgx
LDcgQEAgcHJpdmF0ZToKICAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Qg
b3ZlcnJpZGU7CiAjZW5kaWYKIAorICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBNYXhTYXZlQ291
bnQgPSAxMDI0ICogMTY7CiAgICAgVmVjdG9yPFN0YXRlLCAxPiBtX3N0YXRlU3RhY2s7CiAgICAg
dW5zaWduZWQgbV91bnJlYWxpemVkU2F2ZUNvdW50IHsgMCB9OwogICAgIGJvb2wgbV91c2VzQ1NT
Q29tcGF0aWJpbGl0eVBhcnNlTW9kZTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMzcwMSkKKysrIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE2
LTA3LTI1ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAg
ICAgICAgSW5maW5pdGUgQ2FudmFzIGNvbnRleHQgc2F2ZSgpIGNhdXNlcyBXZWJLaXQgdG8gY3Jh
c2gKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTU4
NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFz
dC9jYW52YXMvY2FudmFzLWNvbnRleHQtc2F2ZS1saW1pdC1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvY2FudmFzL2NhbnZhcy1jb250ZXh0LXNhdmUtbGltaXQuaHRtbDogQWRk
ZWQuCisKIDIwMTYtMDctMjUgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAg
ICAgICBQYXJhbWV0ZXJzIHRvIERPTUltcGxlbWVudGF0aW9uLmNyZWF0ZURvY3VtZW50VHlwZSgp
IHNob3VsZCBiZSBtYW5kYXRvcnkgYW5kIG5vbi1udWxsYWJsZQpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9jYW52YXMvY2FudmFzLWNvbnRleHQtc2F2ZS1saW1pdC1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWNvbnRleHQtc2F2ZS1saW1p
dC1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMv
Y2FudmFzLWNvbnRleHQtc2F2ZS1saW1pdC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwxNCBAQAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDI5OiBDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQuc2F2ZSgpIGhhcyBiZWVuIGNhbGxlZCB3aXRob3V0IGEgbWF0Y2hpbmcgcmVzdG9y
ZSgpIHRvbyBtYW55IHRpbWVzLiBJZ25vcmluZyBzYXZlKCkuCitDT05TT0xFIE1FU1NBR0U6IGxp
bmUgMjk6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5zYXZlKCkgaGFzIGJlZW4gY2FsbGVkIHdp
dGhvdXQgYSBtYXRjaGluZyByZXN0b3JlKCkgdG9vIG1hbnkgdGltZXMuIElnbm9yaW5nIHNhdmUo
KS4KK1RoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHRoZSBzaXplIG9mIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRCBzdGF0ZSBzdGFjayBkb2VzIG5vdCBncm93IGJleW9uZCBhIGNlcnRhaW4gbGltaXQu
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGN0eC5maWxsU3R5bGUgaXMg
IiNmZjAwMDAiCitQQVNTIGN0eC5maWxsU3R5bGUgaXMgIiMwMDAwZmYiCitQQVNTIGN0eC5maWxs
U3R5bGUgaXMgIiMwMGZmMDAiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWNvbnRl
eHQtc2F2ZS1saW1pdC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFz
L2NhbnZhcy1jb250ZXh0LXNhdmUtbGltaXQuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtY29udGV4dC1zYXZlLWxpbWl0Lmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw0MyBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxoZWFkPgor
ICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+CisgICAgPGNhbnZhcyBpZD0iY2FudmFzIi8+CisgICAgPHNjcmlw
dD4KKyAgICAgICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHRoZSBzaXpl
IG9mIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCBzdGF0ZSBzdGFjayBkb2VzIG5vdCBncm93IGJl
eW9uZCBhIGNlcnRhaW4gbGltaXQuIik7CisgICAgICAgIGNvbnN0IFJFRCA9ICcjZmYwMDAwJzsK
KyAgICAgICAgY29uc3QgR1JFRU4gPSAnIzAwZmYwMCc7CisgICAgICAgIGNvbnN0IEJMVUUgPSAn
IzAwMDBmZic7CisgICAgICAgIGNvbnN0IFNBVkVfU1RBQ0tfU0laRSA9IDEwMjQgKiAxNjsKKyAg
ICAgICAgY29uc3QgTUFYX1NBVkVTID0gU0FWRV9TVEFDS19TSVpFIC0gMTsKKworICAgICAgICB2
YXIgYyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKKyAgICAgICAgdmFyIGN0
eCA9IGMuZ2V0Q29udGV4dCgiMmQiKTsKKworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IE1B
WF9TQVZFUyAqIDI7ICsraSkgeworICAgICAgICAgICAgaWYgKCFpIHx8IGkgPj0gTUFYX1NBVkVT
KQorICAgICAgICAgICAgICAgIGN0eC5maWxsU3R5bGUgPSBHUkVFTjsKKyAgICAgICAgICAgIGVs
c2UgaWYgKGkgPT0gTUFYX1NBVkVTIC0gMSkKKyAgICAgICAgICAgICAgICBjdHguZmlsbFN0eWxl
ID0gQkxVRTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBjdHguZmlsbFN0eWxl
ID0gUkVEOworICAgICAgICAgICAgY3R4LnNhdmUoKTsKKyAgICAgICAgfQorCisgICAgICAgIGN0
eC5maWxsU3R5bGUgPSBSRUQ7CisKKyAgICAgICAgZm9yICh2YXIgaSA9IE1BWF9TQVZFUyAqIDIg
LSAxOyBpID49IDA7IC0taSkgeworICAgICAgICAgICAgY3R4LnJlc3RvcmUoKTsgICAKKyAgICAg
ICAgICAgIGlmIChpID09IE1BWF9TQVZFUyAqIDIgLSAxKQorICAgICAgICAgICAgICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygnY3R4LmZpbGxTdHlsZScsIFJFRCk7CisgICAgICAgICAgICBlbHNl
IGlmIChpID09IE1BWF9TQVZFUyAtIDEpCisgICAgICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCdjdHguZmlsbFN0eWxlJywgQkxVRSk7CisgICAgICAgICAgICBlbHNlIGlmICghaSkK
KyAgICAgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2N0eC5maWxsU3R5bGUnLCBH
UkVFTik7CisgICAgICAgIH0KKyAgICA8L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284596</attachid>
            <date>2016-07-26 09:15:34 -0700</date>
            <delta_ts>2016-07-26 11:29:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159586-20160726091427.patch</filename>
            <type>text/plain</type>
            <size>7011</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMzcwMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDE2LTA3LTI1ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgSW5maW5pdGUg
Q2FudmFzIGNvbnRleHQgc2F2ZSgpIGNhdXNlcyBXZWJLaXQgdG8gY3Jhc2gKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTU4NgorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vMjY3NTk5ODQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2Vy
LgorCisgICAgICAgIExpbWl0IHRoZSBzaXplIG9mIHRoZSBjYW52YXMgY29udGV4dCBzdGF0ZSBz
dGFjayB0byAxMDI0ICogMTYgc2F2ZXMuIEFsbAorICAgICAgICB0aGUgc2F2ZXMgd2hpY2ggY29t
ZSBhZnRlciB0aGF0IGxpbWl0IHdpbGwgc3RheSB1bnJlYWxpemVkLiBUaGUgcmVzdG9yZSgpIAor
ICAgICAgICBzaG91bGQgbm90IGhhdmUgYW55IGVmZmVjdCB0aWxsIHRoZXJlIGlzIG5vIHVucmVh
bGl6ZWQgc2F2ZXMuCisgICAgICAgICAKKyAgICAgICAgVGVzdDogZmFzdC9jYW52YXMvY2FudmFz
LWNvbnRleHQtc2F2ZS1saW1pdC5odG1sCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEOjpyZWFsaXplU2F2ZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEOjpyZWFsaXplU2F2ZXNMb29wKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9D
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaDogCisKIDIwMTYtMDctMjUgIENocmlzIER1bWV6ICA8
Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBQYXJhbWV0ZXJzIHRvIERPTUltcGxlbWVudGF0
aW9uLmNyZWF0ZURvY3VtZW50VHlwZSgpIHNob3VsZCBiZSBtYW5kYXRvcnkgYW5kIG5vbi1udWxs
YWJsZQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJELmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCShyZXZpc2lvbiAyMDM3MDEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zNTEsMTIgKzM1MSwyNSBAQCBpbmxpbmUgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQ6OkZvCiAgICAgY29udGV4dC5kcmF3QmlkaVRleHQobV9mb250LCBydW4sIHBvaW50LCBh
Y3Rpb24pOwogfQogCit2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6cmVhbGl6ZVNhdmVz
KCkKK3sKKyAgICBpZiAobV91bnJlYWxpemVkU2F2ZUNvdW50KQorICAgICAgICByZWFsaXplU2F2
ZXNMb29wKCk7CisKKyAgICBpZiAobV91bnJlYWxpemVkU2F2ZUNvdW50KSB7CisgICAgICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGNvbnNvbGVNZXNzYWdlKEFTQ0lJTGl0ZXJhbCgi
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJELnNhdmUoKSBoYXMgYmVlbiBjYWxsZWQgd2l0aG91dCBh
IG1hdGNoaW5nIHJlc3RvcmUoKSB0b28gbWFueSB0aW1lcy4gSWdub3Jpbmcgc2F2ZSgpLiIpKTsK
KyAgICAgICAgY2FudmFzKCktPmRvY3VtZW50KCkuYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNv
dXJjZTo6UmVuZGVyaW5nLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBjb25zb2xlTWVzc2FnZSk7Cisg
ICAgfQorfQorCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6cmVhbGl6ZVNhdmVzTG9v
cCgpCiB7CiAgICAgQVNTRVJUKG1fdW5yZWFsaXplZFNhdmVDb3VudCk7CiAgICAgQVNTRVJUKG1f
c3RhdGVTdGFjay5zaXplKCkgPj0gMSk7CiAgICAgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0ID0g
ZHJhd2luZ0NvbnRleHQoKTsKICAgICBkbyB7CisgICAgICAgIGlmIChtX3N0YXRlU3RhY2suc2l6
ZSgpID4gTWF4U2F2ZUNvdW50KQorICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIG1fc3RhdGVT
dGFjay5hcHBlbmQoc3RhdGUoKSk7CiAgICAgICAgIGlmIChjb250ZXh0KQogICAgICAgICAgICAg
Y29udGV4dC0+c2F2ZSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJELmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgJKHJldmlzaW9uIDIwMzcwMSkKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMDksNyArMzA5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgQ2FudmFzRGlk
RHJhd0FwcGx5QWxsID0gMHhmZmZmZmZmZgogICAgIH07CiAKLSAgICBTdGF0ZSYgbW9kaWZpYWJs
ZVN0YXRlKCkgeyBBU1NFUlQoIW1fdW5yZWFsaXplZFNhdmVDb3VudCk7IHJldHVybiBtX3N0YXRl
U3RhY2subGFzdCgpOyB9CisgICAgU3RhdGUmIG1vZGlmaWFibGVTdGF0ZSgpIHsgQVNTRVJUKCFt
X3VucmVhbGl6ZWRTYXZlQ291bnQgfHwgbV9zdGF0ZVN0YWNrLnNpemUoKSA+PSBNYXhTYXZlQ291
bnQpOyByZXR1cm4gbV9zdGF0ZVN0YWNrLmxhc3QoKTsgfQogICAgIGNvbnN0IFN0YXRlJiBzdGF0
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGVTdGFjay5sYXN0KCk7IH0KIAogICAgIHZvaWQgYXBw
bHlMaW5lRGFzaCgpIGNvbnN0OwpAQCAtMzI1LDExICszMjUsNyBAQCBwcml2YXRlOgogICAgIEdy
YXBoaWNzQ29udGV4dCogZHJhd2luZ0NvbnRleHQoKSBjb25zdDsKIAogICAgIHZvaWQgdW53aW5k
U3RhdGVTdGFjaygpOwotICAgIHZvaWQgcmVhbGl6ZVNhdmVzKCkKLSAgICB7Ci0gICAgICAgIGlm
IChtX3VucmVhbGl6ZWRTYXZlQ291bnQpCi0gICAgICAgICAgICByZWFsaXplU2F2ZXNMb29wKCk7
Ci0gICAgfQorICAgIHZvaWQgcmVhbGl6ZVNhdmVzKCk7CiAgICAgdm9pZCByZWFsaXplU2F2ZXNM
b29wKCk7CiAKICAgICB2b2lkIGFwcGx5U3Ryb2tlUGF0dGVybigpOwpAQCAtMzg1LDYgKzM4MSw3
IEBAIHByaXZhdGU6CiAgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IG92
ZXJyaWRlOwogI2VuZGlmCiAKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgTWF4U2F2ZUNvdW50
ID0gMTAyNCAqIDE2OwogICAgIFZlY3RvcjxTdGF0ZSwgMT4gbV9zdGF0ZVN0YWNrOwogICAgIHVu
c2lnbmVkIG1fdW5yZWFsaXplZFNhdmVDb3VudCB7IDAgfTsKICAgICBib29sIG1fdXNlc0NTU0Nv
bXBhdGliaWxpdHlQYXJzZU1vZGU7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDM3MDEpCisrKyBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxNi0w
Ny0yNSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAg
ICAgIEluZmluaXRlIENhbnZhcyBjb250ZXh0IHNhdmUoKSBjYXVzZXMgV2ViS2l0IHRvIGNyYXNo
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTk1ODYK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI2NzU5OTg0PgorCisgICAgICAgIFJldmlld2VkIGJ5
IFNpbW9uIEZyYXNlci4KKworICAgICAgICAqIGZhc3QvY2FudmFzL2NhbnZhcy1jb250ZXh0LXNh
dmUtbGltaXQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy9jYW52
YXMtY29udGV4dC1zYXZlLWxpbWl0Lmh0bWw6IEFkZGVkLgorCiAyMDE2LTA3LTI1ICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUGFyYW1ldGVycyB0byBET01JbXBs
ZW1lbnRhdGlvbi5jcmVhdGVEb2N1bWVudFR5cGUoKSBzaG91bGQgYmUgbWFuZGF0b3J5IGFuZCBu
b24tbnVsbGFibGUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1jb250ZXh0
LXNhdmUtbGltaXQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
Y2FudmFzL2NhbnZhcy1jb250ZXh0LXNhdmUtbGltaXQtZXhwZWN0ZWQudHh0CShub25leGlzdGVu
dCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1jb250ZXh0LXNhdmUtbGltaXQt
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTQgQEAKK0NPTlNPTEUgTUVT
U0FHRTogbGluZSAyOTogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELnNhdmUoKSBoYXMgYmVlbiBj
YWxsZWQgd2l0aG91dCBhIG1hdGNoaW5nIHJlc3RvcmUoKSB0b28gbWFueSB0aW1lcy4gSWdub3Jp
bmcgc2F2ZSgpLgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDI5OiBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQuc2F2ZSgpIGhhcyBiZWVuIGNhbGxlZCB3aXRob3V0IGEgbWF0Y2hpbmcgcmVzdG9yZSgp
IHRvbyBtYW55IHRpbWVzLiBJZ25vcmluZyBzYXZlKCkuCitUaGlzIHRlc3QgdmVyaWZpZXMgdGhh
dCB0aGUgc2l6ZSBvZiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQgc3RhdGUgc3RhY2sgZG9lcyBu
b3QgZ3JvdyBiZXlvbmQgYSBjZXJ0YWluIGxpbWl0LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCisKKworUEFTUyBjdHguZmlsbFN0eWxlIGlzICIjZmYwMDAwIgorUEFTUyBjdHguZmlsbFN0
eWxlIGlzICIjMDAwMGZmIgorUEFTUyBjdHguZmlsbFN0eWxlIGlzICIjMDBmZjAwIgorUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1jb250ZXh0LXNhdmUtbGltaXQuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtY29udGV4dC1zYXZlLWxpbWl0
Lmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWNv
bnRleHQtc2F2ZS1saW1pdC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDMgQEAKKzwh
RE9DVFlQRSBIVE1MPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxj
YW52YXMgaWQ9ImNhbnZhcyIvPgorICAgIDxzY3JpcHQ+CisgICAgICAgIGRlc2NyaXB0aW9uKCJU
aGlzIHRlc3QgdmVyaWZpZXMgdGhhdCB0aGUgc2l6ZSBvZiBDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQgc3RhdGUgc3RhY2sgZG9lcyBub3QgZ3JvdyBiZXlvbmQgYSBjZXJ0YWluIGxpbWl0LiIpOwor
ICAgICAgICBjb25zdCBSRUQgPSAnI2ZmMDAwMCc7CisgICAgICAgIGNvbnN0IEdSRUVOID0gJyMw
MGZmMDAnOworICAgICAgICBjb25zdCBCTFVFID0gJyMwMDAwZmYnOworICAgICAgICBjb25zdCBT
QVZFX1NUQUNLX1NJWkUgPSAxMDI0ICogMTY7CisgICAgICAgIGNvbnN0IE1BWF9TQVZFUyA9IFNB
VkVfU1RBQ0tfU0laRSAtIDE7CisKKyAgICAgICAgdmFyIGMgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiY2FudmFzIik7CisgICAgICAgIHZhciBjdHggPSBjLmdldENvbnRleHQoIjJkIik7CisK
KyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBNQVhfU0FWRVMgKiAyOyArK2kpIHsKKyAgICAg
ICAgICAgIGlmICghaSB8fCBpID49IE1BWF9TQVZFUykKKyAgICAgICAgICAgICAgICBjdHguZmls
bFN0eWxlID0gR1JFRU47CisgICAgICAgICAgICBlbHNlIGlmIChpID09IE1BWF9TQVZFUyAtIDEp
CisgICAgICAgICAgICAgICAgY3R4LmZpbGxTdHlsZSA9IEJMVUU7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgY3R4LmZpbGxTdHlsZSA9IFJFRDsKKyAgICAgICAgICAgIGN0eC5z
YXZlKCk7CisgICAgICAgIH0KKworICAgICAgICBjdHguZmlsbFN0eWxlID0gUkVEOworCisgICAg
ICAgIGZvciAodmFyIGkgPSBNQVhfU0FWRVMgKiAyIC0gMTsgaSA+PSAwOyAtLWkpIHsKKyAgICAg
ICAgICAgIGN0eC5yZXN0b3JlKCk7ICAgCisgICAgICAgICAgICBpZiAoaSA9PSBNQVhfU0FWRVMg
KiAyIC0gMSkKKyAgICAgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2N0eC5maWxs
U3R5bGUnLCBSRUQpOworICAgICAgICAgICAgZWxzZSBpZiAoaSA9PSBNQVhfU0FWRVMgLSAxKQor
ICAgICAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnY3R4LmZpbGxTdHlsZScsIEJM
VUUpOworICAgICAgICAgICAgZWxzZSBpZiAoIWkpCisgICAgICAgICAgICAgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCdjdHguZmlsbFN0eWxlJywgR1JFRU4pOworICAgICAgICB9CisgICAgPC9z
Y3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284607</attachid>
            <date>2016-07-26 11:29:39 -0700</date>
            <delta_ts>2016-07-26 11:59:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159586-20160726112832.patch</filename>
            <type>text/plain</type>
            <size>7011</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMzcwMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDE2LTA3LTI1ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgSW5maW5pdGUg
Q2FudmFzIGNvbnRleHQgc2F2ZSgpIGNhdXNlcyBXZWJLaXQgdG8gY3Jhc2gKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTU4NgorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vMjY3NTk5ODQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2Vy
LgorCisgICAgICAgIExpbWl0IHRoZSBzaXplIG9mIHRoZSBjYW52YXMgY29udGV4dCBzdGF0ZSBz
dGFjayB0byAxMDI0ICogMTYgc2F2ZXMuIEFsbAorICAgICAgICB0aGUgc2F2ZXMgd2hpY2ggY29t
ZSBhZnRlciB0aGF0IGxpbWl0IHdpbGwgc3RheSB1bnJlYWxpemVkLiBUaGUgcmVzdG9yZSgpIAor
ICAgICAgICBzaG91bGQgbm90IGhhdmUgYW55IGVmZmVjdCB0aWxsIHRoZXJlIGlzIG5vIHVucmVh
bGl6ZWQgc2F2ZXMuCisgICAgICAgICAKKyAgICAgICAgVGVzdDogZmFzdC9jYW52YXMvY2FudmFz
LWNvbnRleHQtc2F2ZS1saW1pdC5odG1sCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEOjpyZWFsaXplU2F2ZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEOjpyZWFsaXplU2F2ZXNMb29wKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9D
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaDogCisKIDIwMTYtMDctMjUgIENocmlzIER1bWV6ICA8
Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBQYXJhbWV0ZXJzIHRvIERPTUltcGxlbWVudGF0
aW9uLmNyZWF0ZURvY3VtZW50VHlwZSgpIHNob3VsZCBiZSBtYW5kYXRvcnkgYW5kIG5vbi1udWxs
YWJsZQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJELmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCShyZXZpc2lvbiAyMDM3MDEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zNTEsMTIgKzM1MSwyNSBAQCBpbmxpbmUgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQ6OkZvCiAgICAgY29udGV4dC5kcmF3QmlkaVRleHQobV9mb250LCBydW4sIHBvaW50LCBh
Y3Rpb24pOwogfQogCit2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6cmVhbGl6ZVNhdmVz
KCkKK3sKKyAgICBpZiAobV91bnJlYWxpemVkU2F2ZUNvdW50KQorICAgICAgICByZWFsaXplU2F2
ZXNMb29wKCk7CisKKyAgICBpZiAobV91bnJlYWxpemVkU2F2ZUNvdW50KSB7CisgICAgICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGNvbnNvbGVNZXNzYWdlKEFTQ0lJTGl0ZXJhbCgi
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJELnNhdmUoKSBoYXMgYmVlbiBjYWxsZWQgd2l0aG91dCBh
IG1hdGNoaW5nIHJlc3RvcmUoKSB0b28gbWFueSB0aW1lcy4gSWdub3Jpbmcgc2F2ZSgpLiIpKTsK
KyAgICAgICAgY2FudmFzKCktPmRvY3VtZW50KCkuYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNv
dXJjZTo6UmVuZGVyaW5nLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBjb25zb2xlTWVzc2FnZSk7Cisg
ICAgfQorfQorCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6cmVhbGl6ZVNhdmVzTG9v
cCgpCiB7CiAgICAgQVNTRVJUKG1fdW5yZWFsaXplZFNhdmVDb3VudCk7CiAgICAgQVNTRVJUKG1f
c3RhdGVTdGFjay5zaXplKCkgPj0gMSk7CiAgICAgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0ID0g
ZHJhd2luZ0NvbnRleHQoKTsKICAgICBkbyB7CisgICAgICAgIGlmIChtX3N0YXRlU3RhY2suc2l6
ZSgpID4gTWF4U2F2ZUNvdW50KQorICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIG1fc3RhdGVT
dGFjay5hcHBlbmQoc3RhdGUoKSk7CiAgICAgICAgIGlmIChjb250ZXh0KQogICAgICAgICAgICAg
Y29udGV4dC0+c2F2ZSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJELmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgJKHJldmlzaW9uIDIwMzcwMSkKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMDksNyArMzA5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgQ2FudmFzRGlk
RHJhd0FwcGx5QWxsID0gMHhmZmZmZmZmZgogICAgIH07CiAKLSAgICBTdGF0ZSYgbW9kaWZpYWJs
ZVN0YXRlKCkgeyBBU1NFUlQoIW1fdW5yZWFsaXplZFNhdmVDb3VudCk7IHJldHVybiBtX3N0YXRl
U3RhY2subGFzdCgpOyB9CisgICAgU3RhdGUmIG1vZGlmaWFibGVTdGF0ZSgpIHsgQVNTRVJUKCFt
X3VucmVhbGl6ZWRTYXZlQ291bnQgfHwgbV9zdGF0ZVN0YWNrLnNpemUoKSA+PSBNYXhTYXZlQ291
bnQpOyByZXR1cm4gbV9zdGF0ZVN0YWNrLmxhc3QoKTsgfQogICAgIGNvbnN0IFN0YXRlJiBzdGF0
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGVTdGFjay5sYXN0KCk7IH0KIAogICAgIHZvaWQgYXBw
bHlMaW5lRGFzaCgpIGNvbnN0OwpAQCAtMzI1LDExICszMjUsNyBAQCBwcml2YXRlOgogICAgIEdy
YXBoaWNzQ29udGV4dCogZHJhd2luZ0NvbnRleHQoKSBjb25zdDsKIAogICAgIHZvaWQgdW53aW5k
U3RhdGVTdGFjaygpOwotICAgIHZvaWQgcmVhbGl6ZVNhdmVzKCkKLSAgICB7Ci0gICAgICAgIGlm
IChtX3VucmVhbGl6ZWRTYXZlQ291bnQpCi0gICAgICAgICAgICByZWFsaXplU2F2ZXNMb29wKCk7
Ci0gICAgfQorICAgIHZvaWQgcmVhbGl6ZVNhdmVzKCk7CiAgICAgdm9pZCByZWFsaXplU2F2ZXNM
b29wKCk7CiAKICAgICB2b2lkIGFwcGx5U3Ryb2tlUGF0dGVybigpOwpAQCAtMzg1LDYgKzM4MSw3
IEBAIHByaXZhdGU6CiAgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IG92
ZXJyaWRlOwogI2VuZGlmCiAKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgTWF4U2F2ZUNvdW50
ID0gMTAyNCAqIDE2OwogICAgIFZlY3RvcjxTdGF0ZSwgMT4gbV9zdGF0ZVN0YWNrOwogICAgIHVu
c2lnbmVkIG1fdW5yZWFsaXplZFNhdmVDb3VudCB7IDAgfTsKICAgICBib29sIG1fdXNlc0NTU0Nv
bXBhdGliaWxpdHlQYXJzZU1vZGU7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDM3MDEpCisrKyBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxNi0w
Ny0yNSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAg
ICAgIEluZmluaXRlIENhbnZhcyBjb250ZXh0IHNhdmUoKSBjYXVzZXMgV2ViS2l0IHRvIGNyYXNo
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTk1ODYK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI2NzU5OTg0PgorCisgICAgICAgIFJldmlld2VkIGJ5
IFNpbW9uIEZyYXNlci4KKworICAgICAgICAqIGZhc3QvY2FudmFzL2NhbnZhcy1jb250ZXh0LXNh
dmUtbGltaXQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy9jYW52
YXMtY29udGV4dC1zYXZlLWxpbWl0Lmh0bWw6IEFkZGVkLgorCiAyMDE2LTA3LTI1ICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUGFyYW1ldGVycyB0byBET01JbXBs
ZW1lbnRhdGlvbi5jcmVhdGVEb2N1bWVudFR5cGUoKSBzaG91bGQgYmUgbWFuZGF0b3J5IGFuZCBu
b24tbnVsbGFibGUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1jb250ZXh0
LXNhdmUtbGltaXQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
Y2FudmFzL2NhbnZhcy1jb250ZXh0LXNhdmUtbGltaXQtZXhwZWN0ZWQudHh0CShub25leGlzdGVu
dCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1jb250ZXh0LXNhdmUtbGltaXQt
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTQgQEAKK0NPTlNPTEUgTUVT
U0FHRTogbGluZSAyOTogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELnNhdmUoKSBoYXMgYmVlbiBj
YWxsZWQgd2l0aG91dCBhIG1hdGNoaW5nIHJlc3RvcmUoKSB0b28gbWFueSB0aW1lcy4gSWdub3Jp
bmcgc2F2ZSgpLgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDI5OiBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQuc2F2ZSgpIGhhcyBiZWVuIGNhbGxlZCB3aXRob3V0IGEgbWF0Y2hpbmcgcmVzdG9yZSgp
IHRvbyBtYW55IHRpbWVzLiBJZ25vcmluZyBzYXZlKCkuCitUaGlzIHRlc3QgdmVyaWZpZXMgdGhh
dCB0aGUgc2l6ZSBvZiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQgc3RhdGUgc3RhY2sgZG9lcyBu
b3QgZ3JvdyBiZXlvbmQgYSBjZXJ0YWluIGxpbWl0LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCisKKworUEFTUyBjdHguZmlsbFN0eWxlIGlzICIjZmYwMDAwIgorUEFTUyBjdHguZmlsbFN0
eWxlIGlzICIjMDAwMGZmIgorUEFTUyBjdHguZmlsbFN0eWxlIGlzICIjMDBmZjAwIgorUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1jb250ZXh0LXNhdmUtbGltaXQuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtY29udGV4dC1zYXZlLWxpbWl0
Lmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWNv
bnRleHQtc2F2ZS1saW1pdC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDMgQEAKKzwh
RE9DVFlQRSBIVE1MPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxj
YW52YXMgaWQ9ImNhbnZhcyIvPgorICAgIDxzY3JpcHQ+CisgICAgICAgIGRlc2NyaXB0aW9uKCJU
aGlzIHRlc3QgdmVyaWZpZXMgdGhhdCB0aGUgc2l6ZSBvZiBDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQgc3RhdGUgc3RhY2sgZG9lcyBub3QgZ3JvdyBiZXlvbmQgYSBjZXJ0YWluIGxpbWl0LiIpOwor
ICAgICAgICBjb25zdCBSRUQgPSAnI2ZmMDAwMCc7CisgICAgICAgIGNvbnN0IEdSRUVOID0gJyMw
MGZmMDAnOworICAgICAgICBjb25zdCBCTFVFID0gJyMwMDAwZmYnOworICAgICAgICBjb25zdCBT
QVZFX1NUQUNLX1NJWkUgPSAxMDI0ICogMTY7CisgICAgICAgIGNvbnN0IE1BWF9TQVZFUyA9IFNB
VkVfU1RBQ0tfU0laRSAtIDE7CisKKyAgICAgICAgdmFyIGMgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiY2FudmFzIik7CisgICAgICAgIHZhciBjdHggPSBjLmdldENvbnRleHQoIjJkIik7CisK
KyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBNQVhfU0FWRVMgKiAyOyArK2kpIHsKKyAgICAg
ICAgICAgIGlmICghaSB8fCBpID49IE1BWF9TQVZFUykKKyAgICAgICAgICAgICAgICBjdHguZmls
bFN0eWxlID0gR1JFRU47CisgICAgICAgICAgICBlbHNlIGlmIChpID09IE1BWF9TQVZFUyAtIDEp
CisgICAgICAgICAgICAgICAgY3R4LmZpbGxTdHlsZSA9IEJMVUU7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgY3R4LmZpbGxTdHlsZSA9IFJFRDsKKyAgICAgICAgICAgIGN0eC5z
YXZlKCk7CisgICAgICAgIH0KKworICAgICAgICBjdHguZmlsbFN0eWxlID0gUkVEOworCisgICAg
ICAgIGZvciAodmFyIGkgPSBNQVhfU0FWRVMgKiAyIC0gMTsgaSA+PSAwOyAtLWkpIHsKKyAgICAg
ICAgICAgIGN0eC5yZXN0b3JlKCk7ICAgCisgICAgICAgICAgICBpZiAoaSA9PSBNQVhfU0FWRVMg
KiAyIC0gMSkKKyAgICAgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2N0eC5maWxs
U3R5bGUnLCBSRUQpOworICAgICAgICAgICAgZWxzZSBpZiAoaSA9PSBNQVhfU0FWRVMgLSAxKQor
ICAgICAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnY3R4LmZpbGxTdHlsZScsIEJM
VUUpOworICAgICAgICAgICAgZWxzZSBpZiAoIWkpCisgICAgICAgICAgICAgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCdjdHguZmlsbFN0eWxlJywgR1JFRU4pOworICAgICAgICB9CisgICAgPC9z
Y3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
</data>

          </attachment>
      

    </bug>

</bugzilla>