<?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>45072</bug_id>
          
          <creation_ts>2010-09-01 17:16:19 -0700</creation_ts>
          <short_desc>PreloadScanner doesn&apos;t find image while executing script in head</short_desc>
          <delta_ts>2011-11-10 14:26:55 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>54355</dependson>
          <blocked>56842</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Tony Gentilcore">tonyg</reporter>
          <assigned_to name="Tony Gentilcore">tonyg</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric</cc>
    
    <cc>jamesr</cc>
    
    <cc>koivisto</cc>
    
    <cc>mathias</cc>
    
    <cc>mbelshe</cc>
    
    <cc>mihaip</cc>
    
    <cc>psolanki</cc>
    
    <cc>simonjam</cc>
    
    <cc>sreeram</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>273117</commentid>
    <comment_count>0</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-09-01 17:16:19 -0700</bug_when>
    <thetext>The PreloadScanner kicks off the download for subsequent images when parsing is blocked by a script in the &lt;body&gt;. This is demonstrated here:
http://stevesouders.com/cuzillion/?c0=bj1hfff2_0_f&amp;c1=bi1hfff2_0_f&amp;t=1283385832400

However, it doesn&apos;t seem to work when the parsing blocking script is in the &lt;head&gt;. See:
http://stevesouders.com/cuzillion/?c0=hj1hfff2_0_f&amp;c1=bi1hfff2_0_f&amp;t=1283385793856

It would be an optimization to fix this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>280479</commentid>
    <comment_count>1</comment_count>
    <who name="Sreeram Ramachandran">gro.mareers</who>
    <bug_when>2010-09-16 17:48:38 -0700</bug_when>
    <thetext>The PreloadScanner does kick off requests for other things (*) in the &lt;head&gt; when blocked by a script. However, nothing in the &lt;body&gt; is scanned. See:
http://stevesouders.com/cuzillion/?c0=hj1hfff2_0_f&amp;c1=hc1hfff2_0_f&amp;c2=bc1hfff2_0_f&amp;t=1284684371

(*) The only &quot;things&quot; that it seems to recognize are other scripts and stylesheets. A background image specified in an inline stylesheet isn&apos;t recognized.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341789</commentid>
    <comment_count>2</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2011-01-28 15:21:59 -0800</bug_when>
    <thetext>I&apos;m going to look into this next.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341836</commentid>
    <comment_count>3</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2011-01-28 16:17:46 -0800</bug_when>
    <thetext>It looks like http://trac.webkit.org/changeset/35801 added functionality to prevent scanning past the head in order to improve first paint time.

Antti, I&apos;ve been playing around with http://code.google.com/p/web-page-replay/ to get some reproducible network benchmarks. I started by asking the question of how much the preload scanner helps overall (results: http://gent.ilcore.com/2011/01/webkit-preloadscanner.html).

I&apos;m curious if you have any thoughts on this methodology and how you got the numbers you mentioned in the ChangeLog (25% first paint improvement, no change in total load time). It is counterintuitive to me that this would be the case as I typically think of each subresource as dominated by RTT instead of bandwidth. I&apos;m going to try to reproduce on a variety of network settings and see what happens.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341951</commentid>
    <comment_count>4</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-01-28 19:22:07 -0800</bug_when>
    <thetext>That change was done to improve first display performance on low bandwidth (aka cellular) networks. We really should be adjusting this kind of stuff based on current latency and bandwidth.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>342805</commentid>
    <comment_count>5</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2011-01-31 14:05:12 -0800</bug_when>
    <thetext>As a first attempt, I hacked up a build that simply comments out CachedResourceLoader::preload()&apos;s ability to enqueue. Instead it always calls requestPreload(). I compared 44 top sites over a 5Mbps/1Mbps/40ms (up/down/rtt) simulated connection.

With the change, the load event is reached on average about 3% sooner, but the first paint event is moved 7% later. The behavior affects different sites in drastically different ways, so the averages aren&apos;t very useful. Here&apos;s the full data set:
https://spreadsheets.google.com/ccc?hl=en&amp;key=to6x3sukCVJ9xqTm8It73sA&amp;hl=en#gid=2

I&apos;m convinced now that there is value in holding off on preloading in the head to some degree in order to get to painting faster. But there are some interesting wins out there if we can preload some things in the body while blocked in the head. For instance, craigslist both loads 14% faster and paints 12% sooner and imdb loads 20% faster with no significant change in paint time. So I&apos;m going to dig into the differences and see if we can isolate only those cases where it is always a win.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>342831</commentid>
    <comment_count>6</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2011-01-31 14:54:26 -0800</bug_when>
    <thetext>&gt; For instance, craigslist both loads 14% faster and paints 12% sooner...

Here&apos;s a cuzillion test that demonstrates craigslist&apos;s subresources (external stylesheet in head and 2 external scripts in body):
http://stevesouders.com/cuzillion/?c0=hc1hfff2_0_f&amp;c1=bj1hfff2_0_f&amp;c2=bj1hfff2_0_f&amp;t=1296514125

With the preload enqueueing it loads in 4 seconds, with enqueueing disabled it loads in 2. The difference is whether the script downloads are serialized or not. I would expect that at the point it gets blocked the preload scanner should be free to find the next script. I&apos;m hunting around now to see if there&apos;s a logic bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>344982</commentid>
    <comment_count>7</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2011-02-03 14:02:59 -0800</bug_when>
    <thetext>&gt; With the change, the load event is reached on average about 3% sooner, but the first paint event is moved 7% later.

Jamesr and I did some digging to figure out why this pushed back painting so much while improving total load time. It turns out that what really happened is that load times were improved and paint events from the same point in parsing also improved by a similar amount. We were able to confirm this by dumping the parser&apos;s current line/col number during each paint event. The difference was that with the more aggressive preloading, earlier paint events were completely dropped.

This turns out to be due to the fact that the parser yields for painting when it is blocked waiting for a script to download. With the more aggressive preloading, we eliminated points where the parser had to wait for a script to download and thus eliminated opportunities to paint.

In light of this, the more aggressive preloading approach seems like a clear win, but if we want to preserve the same first paint times, we need to make the parser more yieldy. I&apos;m playing around with some ideas for doing that and will ping back when I have something concrete.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>347512</commentid>
    <comment_count>8</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2011-02-08 10:52:17 -0800</bug_when>
    <thetext>&gt; In light of this, the more aggressive preloading approach seems like a clear win, but if we want to preserve the same first paint times, we need to make the parser more yieldy. I&apos;m playing around with some ideas for doing that and will ping back when I have something concrete.

I was surprised that my hacked up parser which always yields before executing a script (regardless of whether it is already loaded) didn&apos;t fix the first paint delay problem. But turning on INSTRUMENT_LAYOUT_SCHEDULING in FrameView pointed out another issue. The traces from http://fashion.ebay.com/womens-clothing copied below demonstrate it. There are opportunities to paint at line 0 col 2079 and line 42 col 577. However, we don&apos;t do the first layout before 250ms. Currently we hit the first opportunity after 250ms and paint. However, with my change we hit it before 250ms, so we don&apos;t paint there and get blocked up on stylesheets again until the opportunity at line 42. 

Here&apos;s the current behavior:
***************
Scheduling layout for 245
Stylesheet added at time 25. 1 stylesheets now remain.
Stylesheet added at time 25. 2 stylesheets now remain.
ENQUEUE PRELOAD http://include.ebaystatic.com:80/eboxapps/verticals/js/en_US/e695/SYS-201020_vjo_e69512468077_1_en_US.js
... 3 more enqueues here
Received all data at 42
Stylesheet loaded at time 116. 1 stylesheets still remain.
Stylesheet loaded at time 159. 0 stylesheets still remain.
Beginning update of style selector at time 159.
Finished update of style selector at time 159
Scheduling layout for 90
executeParsingBlockingScript at 160
PRELOADING http://include.ebaystatic.com/eboxapps/verticals/js/en_US/e695/verticals_Top_e69512468077_2_en_US.js
... Tons of preloads here
Layout timer fired at 250
Elapsed time before first layout: 250
PAINT from [0:2079] at 254
executeParsingBlockingScript at 255
executeParsingBlockingScript at 277
Scheduling layout for 0
DidFlushPaint: set_first_paint_time on 0x462b360
...
***************

And with body scanning plus yielding:
***************
Document got a renderer at 0
Received all data at 0
Scheduling layout for 247
Parsing finished at 3
Received all data at 3
Elapsed time before first layout: 4
Scheduling layout for 245
PAINT at 14
DidFlushPaint: Document got a renderer at 0
Stylesheet added at time 25. 1 stylesheets now remain.
Stylesheet added at time 25. 2 stylesheets now remain.
PRELOADING http://include.ebaystatic.com/eboxapps/verticals/js/en_US/e695/SYS-201020_vjo_e69512468077_1_en_US.js
... 3 more preloads here
Received all data at 41
Stylesheet loaded at time 116. 1 stylesheets still remain.
Stylesheet loaded at time 162. 0 stylesheets still remain.
Beginning update of style selector at time 162.
Finished update of style selector at time 163
Scheduling layout for 87
timerScheduled at 163
timerFired at 164
executeParsingBlockingScript at 164
timerScheduled at 164
PRELOADING http://p.ebaystatic.com/aw/pics/buy/csa/logos/sprVNLFashionVault.gif
... tons of preloads here
timerFired at 173
executeParsingBlockingScript at 173
timerScheduled at 195
timerFired at 199
executeParsingBlockingScript at 199
timerScheduled at 200
timerFired at 203
executeParsingBlockingScript at 203
Stylesheet added at time 275. 1 stylesheets now remain.
Stylesheet loaded at time 275. 0 stylesheets still remain.
Beginning update of style selector at time 275.
Finished update of style selector at time 279
Layout timer unscheduled at 279
Scheduling layout for 0
Document got a renderer at 0
Stylesheet added at time 314. 1 stylesheets now remain.
Stylesheet loaded at time 314. 0 stylesheets still remain.
Beginning update of style selector at time 314.
Finished update of style selector at time 339
timerScheduled at 391
Layout timer unscheduled at 142
Document got a renderer at 0
Stylesheet added at time 2. 1 stylesheets now remain.
Layout timer fired at 429
Elapsed time before first layout: 429
Scheduling layout for 0
PAINT from [18:106] at 71
PAINT from [42:577] at 527
timerFired at 544
executeParsingBlockingScript at 544
executeParsingBlockingScript at 546
executeParsingBlockingScript at 575
Scheduling layout for 0
Parsing finished at 612
DidFlushPaint: set_first_paint_time on 0xef22b60
...
***************</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>375452</commentid>
    <comment_count>9</comment_count>
      <attachid>87351</attachid>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2011-03-29 09:58:13 -0700</bug_when>
    <thetext>Created attachment 87351
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376737</commentid>
    <comment_count>10</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2011-03-30 15:28:49 -0700</bug_when>
    <thetext>Antti, you&apos;re probably the best person to review this. Would you mind taking a look when you get the chance?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376900</commentid>
    <comment_count>11</comment_count>
      <attachid>87351</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-03-30 20:29:42 -0700</bug_when>
    <thetext>Comment on attachment 87351
Patch

Ok, sounds convincing, r=me.

It might be better if you left HTMLPreloadScanner::scanningBody() and the related tracking code still in. It can be removed later when we are sure it has no value in mobile world either.

You can just do UNUSED_PARAM(referencedFromBody) with a FIXME in CachedResourceLoader::preload().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377212</commentid>
    <comment_count>12</comment_count>
      <attachid>87741</attachid>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2011-03-31 09:08:53 -0700</bug_when>
    <thetext>Created attachment 87741
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377215</commentid>
    <comment_count>13</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2011-03-31 09:09:20 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 87351 [details])
&gt; Ok, sounds convincing, r=me.
&gt; 
&gt; It might be better if you left HTMLPreloadScanner::scanningBody() and the related tracking code still in. It can be removed later when we are sure it has no value in mobile world either.
&gt; 
&gt; You can just do UNUSED_PARAM(referencedFromBody) with a FIXME in CachedResourceLoader::preload().

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377389</commentid>
    <comment_count>14</comment_count>
      <attachid>87741</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-03-31 13:15:15 -0700</bug_when>
    <thetext>Comment on attachment 87741
Patch for landing

Rejecting attachment 87741 from commit-queue.

Failed to run &quot;[&apos;./Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=cr-jail-8&apos;, &apos;apply-...&quot; exit_code: 1

Last 500 characters of output:
autoinstalled/mechanize/_urllib2_fork.py&quot;, line 332, in _call_chain
    result = func(*args)
  File &quot;/mnt/git/webkit-commit-queue/Tools/Scripts/webkitpy/thirdparty/autoinstalled/mechanize/_urllib2_fork.py&quot;, line 1170, in https_open
    return self.do_open(conn_factory, req)
  File &quot;/mnt/git/webkit-commit-queue/Tools/Scripts/webkitpy/thirdparty/autoinstalled/mechanize/_urllib2_fork.py&quot;, line 1118, in do_open
    raise URLError(err)
urllib2.URLError: &lt;urlopen error [Errno 60] Operation timed out&gt;

Full output: http://queues.webkit.org/results/8315243</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377437</commentid>
    <comment_count>15</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-03-31 14:10:07 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #11)
&gt; &gt; (From update of attachment 87351 [details] [details])
&gt; &gt; Ok, sounds convincing, r=me.
&gt; &gt; 
&gt; &gt; It might be better if you left HTMLPreloadScanner::scanningBody() and the related tracking code still in. It can be removed later when we are sure it has no value in mobile world either.
&gt; &gt; 
&gt; &gt; You can just do UNUSED_PARAM(referencedFromBody) with a FIXME in CachedResourceLoader::preload().
&gt; 
&gt; Done.

Oh and you should re-title the bug. Nothing changes in how images are handled.

ChangeLog  has some garbage:

+        PreloadScanner doesn&amp;apos;t find image while executing script in head</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377484</commentid>
    <comment_count>16</comment_count>
      <attachid>87741</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-03-31 15:14:43 -0700</bug_when>
    <thetext>Comment on attachment 87741
Patch for landing

Clearing flags on attachment: 87741

Committed r82628: &lt;http://trac.webkit.org/changeset/82628&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377485</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-03-31 15:14:49 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377492</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-31 15:22:17 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/82628 might have broken Chromium Linux Release</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87351</attachid>
            <date>2011-03-29 09:58:13 -0700</date>
            <delta_ts>2011-03-31 09:08:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-45072-20110329095812.patch</filename>
            <type>text/plain</type>
            <size>13731</size>
            <attacher name="Tony Gentilcore">tonyg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODIxNzUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4MTgyODhlZTQyNmNmOTMxMTEzNjNj
OTkyOTZlMDg1MDRlZmVhMzhkLi5jMmFhNDc0NWE4OTg3Yjc0MjEzYmNkODJlNjQ1NGFjMTFlOGVk
MzcwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMDMtMjkgIFRvbnkgR2VudGlsY29yZSAg
PHRvbnlnQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBQcmVsb2FkU2Nhbm5lciBkb2VzbiZhcG9zO3QgZmluZCBpbWFnZSB3aGls
ZSBleGVjdXRpbmcgc2NyaXB0IGluIGhlYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQ1MDcyCisKKyAgICAgICAgKiBmYXN0L2xvYWRlci93aWxsU2Vu
ZFJlcXVlc3QtbnVsbC1mb3ItcHJlbG9hZC5odG1sOiBOZWVkIHRvIGNhbGwKKyAgICAgICAgc2V0
V2lsU2VuZFJlcXVlc3RSZXR1cm5zTnVsbCgpIHByaW9yIHRvIGludm9raW5nIHRoZSBwcmVsb2Fk
IHNjYW5uZXIKKyAgICAgICAgd2hpbGUgYmxvY2tlZCBvbiBlbXB0eS1zY3JpcHQuanMuCisgICAg
ICAgICogZmFzdC9wcmVsb2FkZXIvc2Nhbi1ib2R5LWZyb20taGVhZC1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvcHJlbG9hZGVyL3NjYW4tYm9keS1mcm9tLWhlYWQuaHRtbDog
QWRkZWQuIE5vdGljZSB0aGF0IGluIHRoZQorICAgICAgICBsb2FkZWQgcmVzb3VyY2Ugb3V0cHV0
LCB0aGUgc2NyaXB0IGFuZCBzdHlsZSBhcmUgcmVxdWVzdGVkIGJlZm9yZSB0aGUKKyAgICAgICAg
aW1hZ2UgZXZlbiB0aG91Z2ggdGhlIGltYWdlIGlzIGZpcnN0IGluIHRoZSBET00uIFRoaXMgbWVh
bnMgaXQgd2FzCisgICAgICAgIHF1ZXVlZCB1cCB0byB3YWl0IGZvciByZW5kZXJlcmluZyByYXRo
ZXIgdGhhbiBsb2FkZWQgaW1tZWRpYXRlbHkuCisKIDIwMTEtMDMtMjggIEplc3NpZSBCZXJsaW4g
IDxqYmVybGluQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYW5vdGhlciB0ZXN0IHRoYXQgZGVw
ZW5kcyBvbiBFdmVudFNlbmRlciB0byB0aGUgbWFjLXdrMiBTa2lwcGVkIGZpbGUuCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci93aWxsU2VuZFJlcXVlc3QtbnVsbC1mb3ItcHJl
bG9hZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvd2lsbFNlbmRSZXF1ZXN0LW51bGwt
Zm9yLXByZWxvYWQuaHRtbAppbmRleCBjMjYwZTFlZGFiZjIxZDI0NjkyYjA1MTEzNmE0NjllY2Y0
ZWJmOWNkLi4wMWRjYTA1MWU2ZTZiZTA5OTJlZTRkMjNlOGE2ZWM1NWNjNmU4NDFmIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci93aWxsU2VuZFJlcXVlc3QtbnVsbC1mb3ItcHJl
bG9hZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3dpbGxTZW5kUmVxdWVzdC1u
dWxsLWZvci1wcmVsb2FkLmh0bWwKQEAgLTIsMTMgKzIsMTMgQEAKIDxodG1sPg0KIDxoZWFkPg0K
ICAgICA8dGl0bGU+QnVnIDUzMTIzOiBDcmFzaGVzIGxvYWRpbmcgcGFnZXMgd2hlbiBjYW5jZWxs
aW5nIHN1YnJlc291cmNlIGxvYWRzIHRocm91Z2ggV2ViS2l0PC90aXRsZT4NCi0gICAgPHNjcmlw
dCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0icmVzb3VyY2VzL2VtcHR5LXNjcmlwdC5qcyI+
PC9zY3JpcHQ+DQogICAgIDxzY3JpcHQ+DQogICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKSB7DQogICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOw0KICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldFdpbGxTZW5kUmVxdWVz
dFJldHVybnNOdWxsKHRydWUpOw0KICAgICAgICAgfQ0KICAgICA8L3NjcmlwdD4NCisgICAgPHNj
cmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0icmVzb3VyY2VzL2VtcHR5LXNjcmlwdC5q
cyI+PC9zY3JpcHQ+DQogPC9oZWFkPg0KIDxib2R5Pg0KICAgICA8cD5UZXN0IGZvciA8YSBocmVm
PSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTMxMjMiPkJ1ZyA1MzEy
MzogQ3Jhc2hlcyBsb2FkaW5nIHBhZ2VzIHdoZW4gY2FuY2VsbGluZyBzdWJyZXNvdXJjZSBsb2Fk
cyB0aHJvdWdoIFdlYktpdDwvYT4uDQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9wcmVs
b2FkZXIvc2Nhbi1ib2R5LWZyb20taGVhZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0
L3ByZWxvYWRlci9zY2FuLWJvZHktZnJvbS1oZWFkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5h
OWQzMTY1ZDYxM2I5YWJmYTRmODhmMTQ3ZTUxZDE1ZGM1MzM2Nzg1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9wcmVsb2FkZXIvc2Nhbi1ib2R5LWZyb20taGVhZC1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxNSBAQAorc3R5bGUxLmNzcyBoYXMgTUlNRSB0eXBlIHRleHQvY3Nz
CitzY3JpcHQxLmpzIGhhcyBNSU1FIHR5cGUgYXBwbGljYXRpb24veC1qYXZhc2NyaXB0CitpbWFn
ZTEucG5nIGhhcyBNSU1FIHR5cGUgaW1hZ2UvcG5nCisKK1RoaXMgdGVzdHMgdGhhdCByZXNvdXJj
ZXMgaW4gdGhlIGJvZHkgd2hpY2ggYmxvY2sgcGFyc2luZyAoc2NyaXB0LCBjc3MpIGFyZSBwcmVs
b2FkZWQKK2FoZWFkIG9mIG90aGVyIHJlc291cmNlcyAoaW1hZ2VzKS4gSXQgcmVxdWlyZXMgRHVt
cFJlbmRlclRyZWUgdG8gc2VlIHRoZSBsb2cgb2Ygd2hhdAorcmVzb3VyY2VzIGFyZSBsb2FkZWQu
Cis8aW1nIHNyYz1yZXNvdXJjZXMvaW1hZ2UxLnBuZz4KKzxzY3JpcHQgc3JjPXJlc291cmNlcy9z
Y3JpcHQxLmpzPjwvc2NyaXB0PgorPHN0eWxlPgorICBAaW1wb3J0ICJyZXNvdXJjZXMvc3R5bGUx
LmNzcyI7Cis8L3N0eWxlPgorPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L3ByZWxvYWRlci9zY2FuLWJvZHktZnJvbS1oZWFkLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L3ByZWxvYWRlci9zY2FuLWJvZHktZnJvbS1oZWFkLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjcy
NzY1YzFjOTQyMDVkYTVhYzMyMjdjZDEwMDI5YjE0MWEyMjZmZgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvcHJlbG9hZGVyL3NjYW4tYm9keS1mcm9tLWhlYWQuaHRtbApAQCAt
MCwwICsxLDIyIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcFJlc291cmNlUmVzcG9uc2VNSU1FVHlwZXMo
KTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9cmVzb3VyY2VzL25vbi1leGlzdGFudC5qcz48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD5kb2N1bWVudC53cml0ZSgiPHBsYWlu
dGV4dD4iKTs8L3NjcmlwdD4KK1RoaXMgdGVzdHMgdGhhdCByZXNvdXJjZXMgaW4gdGhlIGJvZHkg
d2hpY2ggYmxvY2sgcGFyc2luZyAoc2NyaXB0LCBjc3MpIGFyZSBwcmVsb2FkZWQKK2FoZWFkIG9m
IG90aGVyIHJlc291cmNlcyAoaW1hZ2VzKS4gSXQgcmVxdWlyZXMgRHVtcFJlbmRlclRyZWUgdG8g
c2VlIHRoZSBsb2cgb2Ygd2hhdAorcmVzb3VyY2VzIGFyZSBsb2FkZWQuCis8aW1nIHNyYz1yZXNv
dXJjZXMvaW1hZ2UxLnBuZz4KKzxzY3JpcHQgc3JjPXJlc291cmNlcy9zY3JpcHQxLmpzPjwvc2Ny
aXB0PgorPHN0eWxlPgorICBAaW1wb3J0ICJyZXNvdXJjZXMvc3R5bGUxLmNzcyI7Cis8L3N0eWxl
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDRlMjU4OWE3MTU4ZjdiYjlhNGQ4OGI4
MGY1NmFkMTlkNjAzZGYxZGYuLjdiOGQ5NzRhMDhjMjMzMzk5ZjEwODQyZWQzYmZmYmIyNGFmNDk4
Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MCBAQAorMjAxMS0wMy0yOSAgVG9ueSBHZW50aWxj
b3JlICA8dG9ueWdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFByZWxvYWRTY2FubmVyIGRvZXNuJmFwb3M7dCBmaW5kIGltYWdl
IHdoaWxlIGV4ZWN1dGluZyBzY3JpcHQgaW4gaGVhZAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDUwNzIKKworICAgICAgICBQcmV2aW91c2x5LCB3aGls
ZSBwYXJzaW5nIHRoZSBoZWFkLCBubyByZXNvdXJjZXMgaW4gdGhlIGJvZHkgd291bGQgYmUKKyAg
ICAgICAgcHJlbG9hZGVkLiBBZnRlciB0aGlzIHBhdGNoLCB3ZSB3aWxsIHByZWxvYWQgc2NyaXB0
cyBhbmQgc3R5bGVzIGluIHRoZQorICAgICAgICBib2R5LCBhbHRob3VnaCB3ZSBjb250aW51ZSB0
byBob2xkIG9mZiBvbiBhbGwgaW1hZ2VzIHVudGlsIHRoZSBwYWdlIGlzIAorICAgICAgICBmaXJz
dCByZW5kZXJlZC4KKworICAgICAgICBUbyBldmFsdWF0ZSB0aGlzIGNoYW5nZSwgSSd2ZSByZWNv
cmRlZCBhIHNhbXBsaW5nIG9mIDQ1IG9mIGFsZXhhJ3MgdG9wCisgICAgICAgIHNpdGVzIGFuZCBy
ZXBsYXllZCB0aGVtIHVuZGVyIHNpbXVsYXRlZCBiYW5kd2lkdGggY29uZGl0aW9ucywgbG9hZGlu
ZworICAgICAgICBlYWNoIDUtMTUgdGltZXMgdW50aWwgc3RkZGV2IGlzIHNtYWxsIGVub3VnaC4K
KworICAgICAgICBUaW1lIHRvIHRoZSBsb2FkIGV2ZW50IGltcHJvdmVkIGF0IHRoZSBvdmVyYWxs
IGF2ZXJhZ2UgYnkgMyUuCisgICAgICAgIE1vc3Qgc2l0ZXMgYXJlIHVuY2hhbmdlZCwgYnV0IHNp
dGVzIHdpdGggY2VydGFpbiBibG9ja2luZyBwYXR0ZXJucyBoYWQKKyAgICAgICAgYmlnIHdpbnMg
LS0gZWJheSAxOSUgKDMzMW1zKSwgbWljcm9zb2Z0IDE1JSAoMjI2bXMpLCBjb25kdWl0IDE1JSAo
Mjc3bXMpCisgICAgICAgIG55dGltZXMgNyUgKDE4Mm1zKS4KKworICAgICAgICBUaW1lIHRvIERP
TSBjb250ZW50IGxvYWRlZCBldmVudCBpbXByb3ZlZCBieSA2JSB3aXRoIHNvbWUgZXZlbiBiaWdn
ZXIKKyAgICAgICAgaW5kaXZpZHVhbCB3aW5zLgorCisgICAgICAgIEZpcnN0IHBhaW50IHRpbWUg
aGVsZCBzdGVhZHkuCisKKyAgICAgICAgTm90ZSB0aGF0IEkgb3JpZ2luYWxseSB3YW50ZWQgdG8g
YWxsb3cgcHJlbG9hZGluZyBvZiBpbWFnZXMgd2hpbGUgaW4gdGhlCisgICAgICAgIGhlYWQsIGJ1
dCB0aGF0IHJlZ3Jlc3NlZCBmaXJzdCBwYWludCB0aW1lIChldmVuIHRob3VnaCBpdCB3YXMgYmV0
dGVyIGZvcgorICAgICAgICBvdmVyYWxsIGxvYWQgdGltZSkuCisKKyAgICAgICAgVGVzdDogZmFz
dC9wcmVsb2FkZXIvc2Nhbi1ib2R5LWZyb20taGVhZC5odG1sCisKKyAgICAgICAgKiBodG1sL3Bh
cnNlci9DU1NQcmVsb2FkU2Nhbm5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmVsb2Fk
U2Nhbm5lcjo6c2Nhbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmVsb2FkU2Nhbm5lcjo6ZW1p
dFJ1bGUpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0NTU1ByZWxvYWRTY2FubmVyLmg6CisgICAg
ICAgICogaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxOYW1lczo6UHJlbG9hZFRhc2s6OnByZWxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTFByZWxvYWRTY2FubmVyOjpIVE1MUHJlbG9hZFNjYW5uZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFByZWxvYWRTY2FubmVyOjpwcm9jZXNzVG9rZW4pOgorICAgICAgICAqIGh0bWwvcGFy
c2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRl
cjo6cHJlbG9hZCk6IFRoaXMgaXMgd2hlcmUgdGhlIGFjdHVhbAorICAgICAgICBjaGFuZ2UgaXMu
IFRoZSByZXN0IG9mIHRoaXMgcGF0Y2ggaXMganVzdCBjbGVhbmluZyB1cCB0aGUgbm93IHVudXNl
ZAorICAgICAgICBzY2FubmluZ0JvZHkgbWVtYmVyLgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZUxvYWRlci5oOgorCiAyMDExLTAzLTI4ICBPbGl2ZXIgSHVudCAgPG9saXZl
ckBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9DU1NQcmVsb2FkU2Nhbm5lci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9DU1NQcmVsb2FkU2Nhbm5lci5jcHAKaW5kZXgg
MjMzNjRmOWE4MGEyYjA5ODY0MzJjZTBhMzU1NDc2YzIxNzJkYmRkZC4uYmU3NjIyNzg5OGM2ZjM0
ZWI4ZmE3MmQ1YjkyMDk2ODhlYzM5ZjU2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvQ1NTUHJlbG9hZFNjYW5uZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0NTU1ByZWxvYWRTY2FubmVyLmNwcApAQCAtNDksMTAgKzQ5LDggQEAgdm9pZCBDU1NQ
cmVsb2FkU2Nhbm5lcjo6cmVzZXQoKQogICAgIG1fcnVsZVZhbHVlLmNsZWFyKCk7CiB9CiAKLXZv
aWQgQ1NTUHJlbG9hZFNjYW5uZXI6OnNjYW4oY29uc3QgSFRNTFRva2VuJiB0b2tlbiwgYm9vbCBz
Y2FubmluZ0JvZHkpCit2b2lkIENTU1ByZWxvYWRTY2FubmVyOjpzY2FuKGNvbnN0IEhUTUxUb2tl
biYgdG9rZW4pCiB7Ci0gICAgbV9zY2FubmluZ0JvZHkgPSBzY2FubmluZ0JvZHk7Ci0KICAgICBj
b25zdCBIVE1MVG9rZW46OkRhdGFWZWN0b3ImIGNoYXJhY3RlcnMgPSB0b2tlbi5jaGFyYWN0ZXJz
KCk7CiAgICAgZm9yIChIVE1MVG9rZW46OkRhdGFWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIg
PSBjaGFyYWN0ZXJzLmJlZ2luKCk7IGl0ZXIgIT0gY2hhcmFjdGVycy5lbmQoKTsgKytpdGVyKQog
ICAgICAgICB0b2tlbml6ZSgqaXRlcik7CkBAIC0xODYsNyArMTg0LDcgQEAgdm9pZCBDU1NQcmVs
b2FkU2Nhbm5lcjo6ZW1pdFJ1bGUoKQogICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZSgiaW1wb3J0
IiwgbV9ydWxlLmRhdGEoKSwgbV9ydWxlLnNpemUoKSkpIHsKICAgICAgICAgU3RyaW5nIHZhbHVl
ID0gcGFyc2VDU1NTdHJpbmdPclVSTChtX3J1bGVWYWx1ZS5kYXRhKCksIG1fcnVsZVZhbHVlLnNp
emUoKSk7CiAgICAgICAgIGlmICghdmFsdWUuaXNFbXB0eSgpKQotICAgICAgICAgICAgbV9kb2N1
bWVudC0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+cHJlbG9hZChDYWNoZWRSZXNvdXJjZTo6Q1NT
U3R5bGVTaGVldCwgdmFsdWUsIFN0cmluZygpLCBtX3NjYW5uaW5nQm9keSk7CisgICAgICAgICAg
ICBtX2RvY3VtZW50LT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5wcmVsb2FkKENhY2hlZFJlc291
cmNlOjpDU1NTdHlsZVNoZWV0LCB2YWx1ZSwgU3RyaW5nKCkpOwogICAgIH0KICAgICBtX3J1bGUu
Y2xlYXIoKTsKICAgICBtX3J1bGVWYWx1ZS5jbGVhcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvQ1NTUHJlbG9hZFNjYW5uZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0NTU1ByZWxvYWRTY2FubmVyLmgKaW5kZXggZmFlOTVhMTRlOGJlOWI0NWEwMGNh
YWY2NmJkM2QyZTZhMWUxNTE1ZS4uMTk0Njc3MDI3NTg2ZTNiODEzZDM0NWU1NDVhNTkzM2FiOTQx
MTc4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ1NTUHJlbG9hZFNj
YW5uZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9DU1NQcmVsb2FkU2Nhbm5l
ci5oCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICBDU1NQcmVsb2FkU2Nhbm5lcihEb2N1
bWVudCopOwogCiAgICAgdm9pZCByZXNldCgpOwotICAgIHZvaWQgc2Nhbihjb25zdCBIVE1MVG9r
ZW4mLCBib29sIHNjYW5uaW5nQm9keSk7CisgICAgdm9pZCBzY2FuKGNvbnN0IEhUTUxUb2tlbiYp
OwogCiBwcml2YXRlOgogICAgIGVudW0gU3RhdGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAKaW5kZXggZDIzNTQyZjM3NmVjYjVhOWNm
OWNmZWU4MDA5Y2M2MzkwYzZmMDMwMS4uZDRhMDgyZWU1MjYxNjZmNTE3NDUyOTVlM2QxOGI0YzRl
MWM1NWFiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxv
YWRTY2FubmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9h
ZFNjYW5uZXIuY3BwCkBAIC0xMTAsMTggKzExMCwxOCBAQCBwdWJsaWM6CiAgICAgICAgIG1fdXJs
VG9Mb2FkID0gc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKGF0dHJpYnV0ZVZhbHVl
KTsKICAgICB9CiAKLSAgICB2b2lkIHByZWxvYWQoRG9jdW1lbnQqIGRvY3VtZW50LCBib29sIHNj
YW5uaW5nQm9keSkKKyAgICB2b2lkIHByZWxvYWQoRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIHsK
ICAgICAgICAgaWYgKG1fdXJsVG9Mb2FkLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybjsK
IAogICAgICAgICBDYWNoZWRSZXNvdXJjZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2FkZXIgPSBk
b2N1bWVudC0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKTsKICAgICAgICAgaWYgKG1fdGFnTmFtZSA9
PSBzY3JpcHRUYWcpCi0gICAgICAgICAgICBjYWNoZWRSZXNvdXJjZUxvYWRlci0+cHJlbG9hZChD
YWNoZWRSZXNvdXJjZTo6U2NyaXB0LCBtX3VybFRvTG9hZCwgbV9jaGFyc2V0LCBzY2FubmluZ0Jv
ZHkpOworICAgICAgICAgICAgY2FjaGVkUmVzb3VyY2VMb2FkZXItPnByZWxvYWQoQ2FjaGVkUmVz
b3VyY2U6OlNjcmlwdCwgbV91cmxUb0xvYWQsIG1fY2hhcnNldCk7CiAgICAgICAgIGVsc2UgaWYg
KG1fdGFnTmFtZSA9PSBpbWdUYWcpIAotICAgICAgICAgICAgY2FjaGVkUmVzb3VyY2VMb2FkZXIt
PnByZWxvYWQoQ2FjaGVkUmVzb3VyY2U6OkltYWdlUmVzb3VyY2UsIG1fdXJsVG9Mb2FkLCBTdHJp
bmcoKSwgc2Nhbm5pbmdCb2R5KTsKKyAgICAgICAgICAgIGNhY2hlZFJlc291cmNlTG9hZGVyLT5w
cmVsb2FkKENhY2hlZFJlc291cmNlOjpJbWFnZVJlc291cmNlLCBtX3VybFRvTG9hZCwgU3RyaW5n
KCkpOwogICAgICAgICBlbHNlIGlmIChtX3RhZ05hbWUgPT0gbGlua1RhZyAmJiBtX2xpbmtJc1N0
eWxlU2hlZXQgJiYgbV9saW5rTWVkaWFBdHRyaWJ1dGVJc1NjcmVlbikgCi0gICAgICAgICAgICBj
YWNoZWRSZXNvdXJjZUxvYWRlci0+cHJlbG9hZChDYWNoZWRSZXNvdXJjZTo6Q1NTU3R5bGVTaGVl
dCwgbV91cmxUb0xvYWQsIG1fY2hhcnNldCwgc2Nhbm5pbmdCb2R5KTsKKyAgICAgICAgICAgIGNh
Y2hlZFJlc291cmNlTG9hZGVyLT5wcmVsb2FkKENhY2hlZFJlc291cmNlOjpDU1NTdHlsZVNoZWV0
LCBtX3VybFRvTG9hZCwgbV9jaGFyc2V0KTsKICAgICB9CiAKICAgICBjb25zdCBBdG9taWNTdHJp
bmcmIHRhZ05hbWUoKSBjb25zdCB7IHJldHVybiBtX3RhZ05hbWU7IH0KQEAgLTE0MCw3ICsxNDAs
NiBAQCBIVE1MUHJlbG9hZFNjYW5uZXI6OkhUTUxQcmVsb2FkU2Nhbm5lcihEb2N1bWVudCogZG9j
dW1lbnQpCiAgICAgOiBtX2RvY3VtZW50KGRvY3VtZW50KQogICAgICwgbV9jc3NTY2FubmVyKGRv
Y3VtZW50KQogICAgICwgbV90b2tlbml6ZXIoSFRNTFRva2VuaXplcjo6Y3JlYXRlKEhUTUxEb2N1
bWVudFBhcnNlcjo6dXNlUHJlSFRNTDVQYXJzZXJRdWlya3MoZG9jdW1lbnQpKSkKLSAgICAsIG1f
Ym9keVNlZW4oZmFsc2UpCiAgICAgLCBtX2luU3R5bGUoZmFsc2UpCiB7CiB9CkBAIC0xNjQsNyAr
MTYzLDcgQEAgdm9pZCBIVE1MUHJlbG9hZFNjYW5uZXI6OnByb2Nlc3NUb2tlbigpCiB7CiAgICAg
aWYgKG1faW5TdHlsZSkgewogICAgICAgICBpZiAobV90b2tlbi50eXBlKCkgPT0gSFRNTFRva2Vu
OjpDaGFyYWN0ZXIpCi0gICAgICAgICAgICBtX2Nzc1NjYW5uZXIuc2NhbihtX3Rva2VuLCBzY2Fu
bmluZ0JvZHkoKSk7CisgICAgICAgICAgICBtX2Nzc1NjYW5uZXIuc2NhbihtX3Rva2VuKTsKICAg
ICAgICAgZWxzZSBpZiAobV90b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpFbmRUYWcpIHsKICAg
ICAgICAgICAgIG1faW5TdHlsZSA9IGZhbHNlOwogICAgICAgICAgICAgbV9jc3NTY2FubmVyLnJl
c2V0KCk7CkBAIC0xNzcsMTggKzE3NiwxMCBAQCB2b2lkIEhUTUxQcmVsb2FkU2Nhbm5lcjo6cHJv
Y2Vzc1Rva2VuKCkKICAgICBQcmVsb2FkVGFzayB0YXNrKG1fdG9rZW4pOwogICAgIG1fdG9rZW5p
emVyLT51cGRhdGVTdGF0ZUZvcih0YXNrLnRhZ05hbWUoKSwgbV9kb2N1bWVudC0+ZnJhbWUoKSk7
CiAKLSAgICBpZiAodGFzay50YWdOYW1lKCkgPT0gYm9keVRhZykKLSAgICAgICAgbV9ib2R5U2Vl
biA9IHRydWU7Ci0KICAgICBpZiAodGFzay50YWdOYW1lKCkgPT0gc3R5bGVUYWcpCiAgICAgICAg
IG1faW5TdHlsZSA9IHRydWU7CiAKLSAgICB0YXNrLnByZWxvYWQobV9kb2N1bWVudCwgc2Nhbm5p
bmdCb2R5KCkpOwotfQotCi1ib29sIEhUTUxQcmVsb2FkU2Nhbm5lcjo6c2Nhbm5pbmdCb2R5KCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gbV9kb2N1bWVudC0+Ym9keSgpIHx8IG1fYm9keVNlZW47Cisg
ICAgdGFzay5wcmVsb2FkKG1fZG9jdW1lbnQpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5oCmluZGV4IGJlZDc3ZmU1YjQxOThlNzdh
OGQ0NzgxYTdmNzNmN2YxY2U2NjExNGIuLmUwN2I4YTE0NzRmZjZmNTJjZDFhMTQzZTU4NTBiNmM2
MmE2NDU3OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVs
b2FkU2Nhbm5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2Fk
U2Nhbm5lci5oCkBAIC00OCwxNCArNDgsMTIgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHZv
aWQgcHJvY2Vzc1Rva2VuKCk7Ci0gICAgYm9vbCBzY2FubmluZ0JvZHkoKSBjb25zdDsKIAogICAg
IERvY3VtZW50KiBtX2RvY3VtZW50OwogICAgIFNlZ21lbnRlZFN0cmluZyBtX3NvdXJjZTsKICAg
ICBDU1NQcmVsb2FkU2Nhbm5lciBtX2Nzc1NjYW5uZXI7CiAgICAgT3duUHRyPEhUTUxUb2tlbml6
ZXI+IG1fdG9rZW5pemVyOwogICAgIEhUTUxUb2tlbiBtX3Rva2VuOwotICAgIGJvb2wgbV9ib2R5
U2VlbjsKICAgICBib29sIG1faW5TdHlsZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGE5MTgyZTdiZmJj
OTY0ZDQwZjIwN2Y5ODRiZmU5YWQyNTk4MWNiMmIuLmQ5ZGZiZjQxNTA3MTRkNDJkN2M2NTdjZGUz
NDIyMDdlMDI0Y2I3MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcApAQCAtNTkwLDEyICs1OTAsMTMgQEAgaW50IENhY2hl
ZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0Q291bnQoKQogICAgIHJldHVybiBtX3JlcXVlc3RDb3Vu
dDsKIH0KICAgICAKLXZvaWQgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnByZWxvYWQoQ2FjaGVkUmVz
b3VyY2U6OlR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgY2hhcnNl
dCwgYm9vbCByZWZlcmVuY2VkRnJvbUJvZHkpCit2b2lkIENhY2hlZFJlc291cmNlTG9hZGVyOjpw
cmVsb2FkKENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25z
dCBTdHJpbmcmIGNoYXJzZXQpCiB7CiAgICAgYm9vbCBoYXNSZW5kZXJpbmcgPSBtX2RvY3VtZW50
LT5ib2R5KCkgJiYgbV9kb2N1bWVudC0+Ym9keSgpLT5yZW5kZXJlcigpOwotICAgIGlmICghaGFz
UmVuZGVyaW5nICYmIChyZWZlcmVuY2VkRnJvbUJvZHkgfHwgdHlwZSA9PSBDYWNoZWRSZXNvdXJj
ZTo6SW1hZ2VSZXNvdXJjZSkpIHsKLSAgICAgICAgLy8gRG9uJ3QgcHJlbG9hZCBpbWFnZXMgb3Ig
Ym9keSByZXNvdXJjZXMgYmVmb3JlIHdlIGhhdmUgc29tZXRoaW5nIHRvIGRyYXcuIFRoaXMgcHJl
dmVudHMKLSAgICAgICAgLy8gcHJlbG9hZHMgZnJvbSBib2R5IGRlbGF5aW5nIGZpcnN0IGRpc3Bs
YXkgd2hlbiBiYW5kd2lkdGggaXMgbGltaXRlZC4KKyAgICBib29sIGNhbkJsb2NrUGFyc2VyID0g
dHlwZSA9PSBDYWNoZWRSZXNvdXJjZTo6U2NyaXB0IHx8IHR5cGUgPT0gQ2FjaGVkUmVzb3VyY2U6
OkNTU1N0eWxlU2hlZXQ7CisgICAgaWYgKCFoYXNSZW5kZXJpbmcgJiYgIWNhbkJsb2NrUGFyc2Vy
KSB7CisgICAgICAgIC8vIERvbid0IHByZWxvYWQgc3VicmVzb3VyY2VzIHRoYXQgY2FuJ3QgYmxv
Y2sgdGhlIHBhcnNlciBiZWZvcmUgd2UgaGF2ZSBzb21ldGhpbmcgdG8gZHJhdy4KKyAgICAgICAg
Ly8gVGhpcyBoZWxwcyBwcmV2ZW50IHByZWxvYWRzIGZyb20gZGVsYXlpbmcgZmlyc3QgZGlzcGxh
eSB3aGVuIGJhbmR3aWR0aCBpcyBsaW1pdGVkLgogICAgICAgICBQZW5kaW5nUHJlbG9hZCBwZW5k
aW5nUHJlbG9hZCA9IHsgdHlwZSwgdXJsLCBjaGFyc2V0IH07CiAgICAgICAgIG1fcGVuZGluZ1By
ZWxvYWRzLmFwcGVuZChwZW5kaW5nUHJlbG9hZCk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgKaW5kZXgg
MmQ2YjFkMjFlZDIyZGRkZGZjNWZlNmEwOGViYTdkNDU4ZDYxZTBhOS4uMjdmYTVmYzQ2NDcwZTRj
N2QwOTMzMmU4MjJjMmU0NjE4ZWYxYjUzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgKQEAgLTEwNCw3ICsxMDQsNyBAQCBwdWJs
aWM6CiAgICAgCiAgICAgdm9pZCBjbGVhclByZWxvYWRzKCk7CiAgICAgdm9pZCBjbGVhclBlbmRp
bmdQcmVsb2FkcygpOwotICAgIHZvaWQgcHJlbG9hZChDYWNoZWRSZXNvdXJjZTo6VHlwZSwgY29u
c3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwgYm9vbCByZWZlcmVuY2VkRnJv
bUJvZHkpOworICAgIHZvaWQgcHJlbG9hZChDYWNoZWRSZXNvdXJjZTo6VHlwZSwgY29uc3QgU3Ry
aW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgY2hhcnNldCk7CiAgICAgdm9pZCBjaGVja0ZvclBlbmRp
bmdQcmVsb2FkcygpOwogICAgIHZvaWQgcHJpbnRQcmVsb2FkU3RhdHMoKTsKICAgICAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87741</attachid>
            <date>2011-03-31 09:08:53 -0700</date>
            <delta_ts>2011-03-31 15:14:43 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-45072-20110331090852.patch</filename>
            <type>text/plain</type>
            <size>7304</size>
            <attacher name="Tony Gentilcore">tonyg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODIxNzUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4MTgyODhlZTQyNmNmOTMxMTEzNjNj
OTkyOTZlMDg1MDRlZmVhMzhkLi41NjJmNTNiZTVhY2NiNjdkYWZlMjJjY2NiMzIyZmYzNjIxZjEy
NTE5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMDMtMjkgIFRvbnkgR2VudGlsY29yZSAg
PHRvbnlnQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0
by4KKworICAgICAgICBQcmVsb2FkU2Nhbm5lciBkb2VzbiZhcG9zO3QgZmluZCBpbWFnZSB3aGls
ZSBleGVjdXRpbmcgc2NyaXB0IGluIGhlYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQ1MDcyCisKKyAgICAgICAgKiBmYXN0L2xvYWRlci93aWxsU2Vu
ZFJlcXVlc3QtbnVsbC1mb3ItcHJlbG9hZC5odG1sOiBOZWVkIHRvIGNhbGwKKyAgICAgICAgc2V0
V2lsU2VuZFJlcXVlc3RSZXR1cm5zTnVsbCgpIHByaW9yIHRvIGludm9raW5nIHRoZSBwcmVsb2Fk
IHNjYW5uZXIKKyAgICAgICAgd2hpbGUgYmxvY2tlZCBvbiBlbXB0eS1zY3JpcHQuanMuCisgICAg
ICAgICogZmFzdC9wcmVsb2FkZXIvc2Nhbi1ib2R5LWZyb20taGVhZC1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvcHJlbG9hZGVyL3NjYW4tYm9keS1mcm9tLWhlYWQuaHRtbDog
QWRkZWQuIE5vdGljZSB0aGF0IGluIHRoZQorICAgICAgICBsb2FkZWQgcmVzb3VyY2Ugb3V0cHV0
LCB0aGUgc2NyaXB0IGFuZCBzdHlsZSBhcmUgcmVxdWVzdGVkIGJlZm9yZSB0aGUKKyAgICAgICAg
aW1hZ2UgZXZlbiB0aG91Z2ggdGhlIGltYWdlIGlzIGZpcnN0IGluIHRoZSBET00uIFRoaXMgbWVh
bnMgaXQgd2FzCisgICAgICAgIHF1ZXVlZCB1cCB0byB3YWl0IGZvciByZW5kZXJlcmluZyByYXRo
ZXIgdGhhbiBsb2FkZWQgaW1tZWRpYXRlbHkuCisKIDIwMTEtMDMtMjggIEplc3NpZSBCZXJsaW4g
IDxqYmVybGluQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYW5vdGhlciB0ZXN0IHRoYXQgZGVw
ZW5kcyBvbiBFdmVudFNlbmRlciB0byB0aGUgbWFjLXdrMiBTa2lwcGVkIGZpbGUuCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci93aWxsU2VuZFJlcXVlc3QtbnVsbC1mb3ItcHJl
bG9hZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvd2lsbFNlbmRSZXF1ZXN0LW51bGwt
Zm9yLXByZWxvYWQuaHRtbAppbmRleCBjMjYwZTFlZGFiZjIxZDI0NjkyYjA1MTEzNmE0NjllY2Y0
ZWJmOWNkLi4wMWRjYTA1MWU2ZTZiZTA5OTJlZTRkMjNlOGE2ZWM1NWNjNmU4NDFmIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci93aWxsU2VuZFJlcXVlc3QtbnVsbC1mb3ItcHJl
bG9hZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3dpbGxTZW5kUmVxdWVzdC1u
dWxsLWZvci1wcmVsb2FkLmh0bWwKQEAgLTIsMTMgKzIsMTMgQEAKIDxodG1sPg0KIDxoZWFkPg0K
ICAgICA8dGl0bGU+QnVnIDUzMTIzOiBDcmFzaGVzIGxvYWRpbmcgcGFnZXMgd2hlbiBjYW5jZWxs
aW5nIHN1YnJlc291cmNlIGxvYWRzIHRocm91Z2ggV2ViS2l0PC90aXRsZT4NCi0gICAgPHNjcmlw
dCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0icmVzb3VyY2VzL2VtcHR5LXNjcmlwdC5qcyI+
PC9zY3JpcHQ+DQogICAgIDxzY3JpcHQ+DQogICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKSB7DQogICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOw0KICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldFdpbGxTZW5kUmVxdWVz
dFJldHVybnNOdWxsKHRydWUpOw0KICAgICAgICAgfQ0KICAgICA8L3NjcmlwdD4NCisgICAgPHNj
cmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0icmVzb3VyY2VzL2VtcHR5LXNjcmlwdC5q
cyI+PC9zY3JpcHQ+DQogPC9oZWFkPg0KIDxib2R5Pg0KICAgICA8cD5UZXN0IGZvciA8YSBocmVm
PSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTMxMjMiPkJ1ZyA1MzEy
MzogQ3Jhc2hlcyBsb2FkaW5nIHBhZ2VzIHdoZW4gY2FuY2VsbGluZyBzdWJyZXNvdXJjZSBsb2Fk
cyB0aHJvdWdoIFdlYktpdDwvYT4uDQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9wcmVs
b2FkZXIvc2Nhbi1ib2R5LWZyb20taGVhZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0
L3ByZWxvYWRlci9zY2FuLWJvZHktZnJvbS1oZWFkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5h
OWQzMTY1ZDYxM2I5YWJmYTRmODhmMTQ3ZTUxZDE1ZGM1MzM2Nzg1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9wcmVsb2FkZXIvc2Nhbi1ib2R5LWZyb20taGVhZC1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxNSBAQAorc3R5bGUxLmNzcyBoYXMgTUlNRSB0eXBlIHRleHQvY3Nz
CitzY3JpcHQxLmpzIGhhcyBNSU1FIHR5cGUgYXBwbGljYXRpb24veC1qYXZhc2NyaXB0CitpbWFn
ZTEucG5nIGhhcyBNSU1FIHR5cGUgaW1hZ2UvcG5nCisKK1RoaXMgdGVzdHMgdGhhdCByZXNvdXJj
ZXMgaW4gdGhlIGJvZHkgd2hpY2ggYmxvY2sgcGFyc2luZyAoc2NyaXB0LCBjc3MpIGFyZSBwcmVs
b2FkZWQKK2FoZWFkIG9mIG90aGVyIHJlc291cmNlcyAoaW1hZ2VzKS4gSXQgcmVxdWlyZXMgRHVt
cFJlbmRlclRyZWUgdG8gc2VlIHRoZSBsb2cgb2Ygd2hhdAorcmVzb3VyY2VzIGFyZSBsb2FkZWQu
Cis8aW1nIHNyYz1yZXNvdXJjZXMvaW1hZ2UxLnBuZz4KKzxzY3JpcHQgc3JjPXJlc291cmNlcy9z
Y3JpcHQxLmpzPjwvc2NyaXB0PgorPHN0eWxlPgorICBAaW1wb3J0ICJyZXNvdXJjZXMvc3R5bGUx
LmNzcyI7Cis8L3N0eWxlPgorPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L3ByZWxvYWRlci9zY2FuLWJvZHktZnJvbS1oZWFkLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L3ByZWxvYWRlci9zY2FuLWJvZHktZnJvbS1oZWFkLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjcy
NzY1YzFjOTQyMDVkYTVhYzMyMjdjZDEwMDI5YjE0MWEyMjZmZgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvcHJlbG9hZGVyL3NjYW4tYm9keS1mcm9tLWhlYWQuaHRtbApAQCAt
MCwwICsxLDIyIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcFJlc291cmNlUmVzcG9uc2VNSU1FVHlwZXMo
KTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9cmVzb3VyY2VzL25vbi1leGlzdGFudC5qcz48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD5kb2N1bWVudC53cml0ZSgiPHBsYWlu
dGV4dD4iKTs8L3NjcmlwdD4KK1RoaXMgdGVzdHMgdGhhdCByZXNvdXJjZXMgaW4gdGhlIGJvZHkg
d2hpY2ggYmxvY2sgcGFyc2luZyAoc2NyaXB0LCBjc3MpIGFyZSBwcmVsb2FkZWQKK2FoZWFkIG9m
IG90aGVyIHJlc291cmNlcyAoaW1hZ2VzKS4gSXQgcmVxdWlyZXMgRHVtcFJlbmRlclRyZWUgdG8g
c2VlIHRoZSBsb2cgb2Ygd2hhdAorcmVzb3VyY2VzIGFyZSBsb2FkZWQuCis8aW1nIHNyYz1yZXNv
dXJjZXMvaW1hZ2UxLnBuZz4KKzxzY3JpcHQgc3JjPXJlc291cmNlcy9zY3JpcHQxLmpzPjwvc2Ny
aXB0PgorPHN0eWxlPgorICBAaW1wb3J0ICJyZXNvdXJjZXMvc3R5bGUxLmNzcyI7Cis8L3N0eWxl
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDRlMjU4OWE3MTU4ZjdiYjlhNGQ4OGI4
MGY1NmFkMTlkNjAzZGYxZGYuLjQ1OTAwYzY1OWUwNDFlZjI0MGFkMWE0N2ZmZDIyNTIwODY5MmNm
YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOCBAQAorMjAxMS0wMy0yOSAgVG9ueSBHZW50aWxj
b3JlICA8dG9ueWdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFudHRpIEtv
aXZpc3RvLgorCisgICAgICAgIFByZWxvYWRTY2FubmVyIGRvZXNuJmFwb3M7dCBmaW5kIGltYWdl
IHdoaWxlIGV4ZWN1dGluZyBzY3JpcHQgaW4gaGVhZAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDUwNzIKKworICAgICAgICBQcmV2aW91c2x5LCB3aGls
ZSBwYXJzaW5nIHRoZSBoZWFkLCBubyByZXNvdXJjZXMgaW4gdGhlIGJvZHkgd291bGQgYmUKKyAg
ICAgICAgcHJlbG9hZGVkLiBBZnRlciB0aGlzIHBhdGNoLCB3ZSB3aWxsIHByZWxvYWQgc2NyaXB0
cyBhbmQgc3R5bGVzIGluIHRoZQorICAgICAgICBib2R5LCBhbHRob3VnaCB3ZSBjb250aW51ZSB0
byBob2xkIG9mZiBvbiBhbGwgaW1hZ2VzIHVudGlsIHRoZSBwYWdlIGlzIAorICAgICAgICBmaXJz
dCByZW5kZXJlZC4KKworICAgICAgICBUbyBldmFsdWF0ZSB0aGlzIGNoYW5nZSwgSSd2ZSByZWNv
cmRlZCBhIHNhbXBsaW5nIG9mIDQ1IG9mIGFsZXhhJ3MgdG9wCisgICAgICAgIHNpdGVzIGFuZCBy
ZXBsYXllZCB0aGVtIHVuZGVyIHNpbXVsYXRlZCBiYW5kd2lkdGggY29uZGl0aW9ucywgbG9hZGlu
ZworICAgICAgICBlYWNoIDUtMTUgdGltZXMgdW50aWwgc3RkZGV2IGlzIHNtYWxsIGVub3VnaC4K
KworICAgICAgICBUaW1lIHRvIHRoZSBsb2FkIGV2ZW50IGltcHJvdmVkIGF0IHRoZSBvdmVyYWxs
IGF2ZXJhZ2UgYnkgMyUuCisgICAgICAgIE1vc3Qgc2l0ZXMgYXJlIHVuY2hhbmdlZCwgYnV0IHNp
dGVzIHdpdGggY2VydGFpbiBibG9ja2luZyBwYXR0ZXJucyBoYWQKKyAgICAgICAgYmlnIHdpbnMg
LS0gZWJheSAxOSUgKDMzMW1zKSwgbWljcm9zb2Z0IDE1JSAoMjI2bXMpLCBjb25kdWl0IDE1JSAo
Mjc3bXMpCisgICAgICAgIG55dGltZXMgNyUgKDE4Mm1zKS4KKworICAgICAgICBUaW1lIHRvIERP
TSBjb250ZW50IGxvYWRlZCBldmVudCBpbXByb3ZlZCBieSA2JSB3aXRoIHNvbWUgZXZlbiBiaWdn
ZXIKKyAgICAgICAgaW5kaXZpZHVhbCB3aW5zLgorCisgICAgICAgIEZpcnN0IHBhaW50IHRpbWUg
aGVsZCBzdGVhZHkuCisKKyAgICAgICAgTm90ZSB0aGF0IEkgb3JpZ2luYWxseSB3YW50ZWQgdG8g
YWxsb3cgcHJlbG9hZGluZyBvZiBpbWFnZXMgd2hpbGUgaW4gdGhlCisgICAgICAgIGhlYWQsIGJ1
dCB0aGF0IHJlZ3Jlc3NlZCBmaXJzdCBwYWludCB0aW1lIChldmVuIHRob3VnaCBpdCB3YXMgYmV0
dGVyIGZvcgorICAgICAgICBvdmVyYWxsIGxvYWQgdGltZSkuCisKKyAgICAgICAgVGVzdDogZmFz
dC9wcmVsb2FkZXIvc2Nhbi1ib2R5LWZyb20taGVhZC5odG1sCisKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
UmVzb3VyY2VMb2FkZXI6OnByZWxvYWQpOgorCiAyMDExLTAzLTI4ICBPbGl2ZXIgSHVudCAgPG9s
aXZlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVy
LmNwcAppbmRleCBhOTE4MmU3YmZiYzk2NGQ0MGYyMDdmOTg0YmZlOWFkMjU5ODFjYjJiLi5lNzgz
NTQ4ZDcyZmJkNGM3MTRhYjNlZjMwMWZlYjJmMDk4M2M3YjZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTU5Miwx
MCArNTkyLDE0IEBAIGludCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdENvdW50KCkKICAg
ICAKIHZvaWQgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnByZWxvYWQoQ2FjaGVkUmVzb3VyY2U6OlR5
cGUgdHlwZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwgYm9vbCBy
ZWZlcmVuY2VkRnJvbUJvZHkpCiB7CisgICAgLy8gRklYTUU6IFJpcCB0aGlzIG91dCB3aGVuIHdl
IGFyZSBzdXJlIGl0IGlzIG5vIGxvbmdlciBuZWNlc3NhcnkgKGV2ZW4gZm9yIG1vYmlsZSkuCisg
ICAgVU5VU0VEX1BBUkFNKHJlZmVyZW5jZWRGcm9tQm9keSk7CisKICAgICBib29sIGhhc1JlbmRl
cmluZyA9IG1fZG9jdW1lbnQtPmJvZHkoKSAmJiBtX2RvY3VtZW50LT5ib2R5KCktPnJlbmRlcmVy
KCk7Ci0gICAgaWYgKCFoYXNSZW5kZXJpbmcgJiYgKHJlZmVyZW5jZWRGcm9tQm9keSB8fCB0eXBl
ID09IENhY2hlZFJlc291cmNlOjpJbWFnZVJlc291cmNlKSkgewotICAgICAgICAvLyBEb24ndCBw
cmVsb2FkIGltYWdlcyBvciBib2R5IHJlc291cmNlcyBiZWZvcmUgd2UgaGF2ZSBzb21ldGhpbmcg
dG8gZHJhdy4gVGhpcyBwcmV2ZW50cwotICAgICAgICAvLyBwcmVsb2FkcyBmcm9tIGJvZHkgZGVs
YXlpbmcgZmlyc3QgZGlzcGxheSB3aGVuIGJhbmR3aWR0aCBpcyBsaW1pdGVkLgorICAgIGJvb2wg
Y2FuQmxvY2tQYXJzZXIgPSB0eXBlID09IENhY2hlZFJlc291cmNlOjpTY3JpcHQgfHwgdHlwZSA9
PSBDYWNoZWRSZXNvdXJjZTo6Q1NTU3R5bGVTaGVldDsKKyAgICBpZiAoIWhhc1JlbmRlcmluZyAm
JiAhY2FuQmxvY2tQYXJzZXIpIHsKKyAgICAgICAgLy8gRG9uJ3QgcHJlbG9hZCBzdWJyZXNvdXJj
ZXMgdGhhdCBjYW4ndCBibG9jayB0aGUgcGFyc2VyIGJlZm9yZSB3ZSBoYXZlIHNvbWV0aGluZyB0
byBkcmF3LgorICAgICAgICAvLyBUaGlzIGhlbHBzIHByZXZlbnQgcHJlbG9hZHMgZnJvbSBkZWxh
eWluZyBmaXJzdCBkaXNwbGF5IHdoZW4gYmFuZHdpZHRoIGlzIGxpbWl0ZWQuCiAgICAgICAgIFBl
bmRpbmdQcmVsb2FkIHBlbmRpbmdQcmVsb2FkID0geyB0eXBlLCB1cmwsIGNoYXJzZXQgfTsKICAg
ICAgICAgbV9wZW5kaW5nUHJlbG9hZHMuYXBwZW5kKHBlbmRpbmdQcmVsb2FkKTsKICAgICAgICAg
cmV0dXJuOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>