<?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>41813</bug_id>
          
          <creation_ts>2010-07-07 16:59:04 -0700</creation_ts>
          <short_desc>XHRs get unnecessary Cache-Control http header after reload</short_desc>
          <delta_ts>2010-07-13 04:32:01 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Nate Chapin">japhet</reporter>
          <assigned_to name="Nate Chapin">japhet</assigned_to>
          <cc>ap</cc>
    
    <cc>beidson</cc>
    
    <cc>fishd</cc>
    
    <cc>koivisto</cc>
    
    <cc>mario</cc>
    
    <cc>mjs</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>247859</commentid>
    <comment_count>0</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2010-07-07 16:59:04 -0700</bug_when>
    <thetext>When a page is reloaded, it verifies all items in the cache with the server instead of just loading from cache if permitted.  The state that controls this action is not cleared when the load is completed (it is cleared during the next navigation), so any subsequent loads (e.g., XHRs) will be given a Cache-Control header, even if the reload &quot;action&quot; has completed.

I believe the state should be cleared after the load event rather than always waiting until the next navigation.

(This causes a lot of extra http requests that get 304 responses on sites like Facebook, where a bunch of static content is loaded via async XHR after the &quot;page has loaded&quot;.  Initial report at http://code.google.com/p/chromium/issues/detail?id=7819)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>247865</commentid>
    <comment_count>1</comment_count>
      <attachid>60807</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2010-07-07 17:08:38 -0700</bug_when>
    <thetext>Created attachment 60807
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248029</commentid>
    <comment_count>2</comment_count>
      <attachid>60807</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-07-07 23:13:06 -0700</bug_when>
    <thetext>Comment on attachment 60807
Patch

WebCore/loader/FrameLoader.cpp:2606
&gt; +          m_loadType = FrameLoadTypeStandard;
I think we also want to reset the load type to standard after performing
a back/forward navigation.  Are there any cases when we wouldn&apos;t want to
reset it?

WebCore/loader/SubresourceLoader.cpp:96
&gt; +      else if (!fl-&gt;activeDocumentLoader()-&gt;isLoadingInAPISense())
I would expect subresources to only care about the state of the documentLoader.
It seems wrong to care if there is a new provisional navigation starting.

Are both of these changes necessary?  It seems like the change to
SubresourceLoader.cpp should be sufficient.  However, resetting m_loadType
certainly seems reasonable to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248030</commentid>
    <comment_count>3</comment_count>
      <attachid>60807</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-07-07 23:13:50 -0700</bug_when>
    <thetext>Comment on attachment 60807
Patch

R- because of the activeDocumentLoader thing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248291</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-07-08 10:01:39 -0700</bug_when>
    <thetext>This seems intentional. What&apos;s the difference between content loaded before onload and after onload? If a user initiates a reload, they want to refresh content, and technical details of whether it&apos;s loaded via HTML tags or XMLHttpRequest are irrelevant.

In fact, many people complain about the opposite behavior - we sometimes DON&apos;T revalidate resources after reload, see bug 30862 and related.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248328</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-07-08 10:47:28 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; This seems intentional.

This behavior differs from Mozilla and IE, and it means that WebKit based browsers generate nearly 3x as many network requests as those browsers on Facebook!  Any site that navigates using reference fragments (or history.pushState) to reuse the existing document will perform poorly at the network level after the user hits reload once on a particular &quot;page&quot;.


&gt; What&apos;s the difference between content loaded before 
&gt; onload and after onload?

Content loaded during page load is related to the page load.  You can see this concept applied to other aspects of page loading: a subframe navigated during page load does not create a separate back/forward entry.

Consider back/forward navigations.  When navigating back in history, we apply a rule that allows stale content to be loaded from the cache.  However, if the user then interacts with the page, and the page creates an XHR, should that XHR also inherit the rule that causes it to load stale content?  It seems like that could render a web app unusable.

I think the load flags should be temporary for the duration of a page load (navigation).  After that, they should reset to the normal state, so that future interactions will behave as they do when a page is normally loaded. 


&gt; If a user initiates a reload, they want to refresh 
&gt; content, and technical details of whether it&apos;s loaded via HTML tags or 
&gt; XMLHttpRequest are irrelevant.

Agreed.  Nate&apos;s patch treats all subresource loads equally.


&gt; In fact, many people complain about the opposite behavior - we sometimes 
&gt; DON&apos;T  revalidate resources after reload, see bug 30862 and related.

Bug 30862 is not contradictory to this bug.  The script element created during parsing of the body should inherit the load flags used to fetch the document.  The load event should be deferred until that script element&apos;s load event handler runs, but during that event handler if another script element is created, then the document&apos;s load event will be further deferred, and the second script element should also inherit the reload flag.  Finally, when the second script element finishes loading, we can fire the load event to the page and reset the load flags.  No problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248354</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-07-08 11:15:42 -0700</bug_when>
    <thetext>Matching other browsers is of course a very strong argument. However, we&apos;ve been long trying to apply our own thinking to refresh functionality, and didn&apos;t just blindly follow others here.

&gt; Agreed.  Nate&apos;s patch treats all subresource loads equally.

It&apos;s only equal in a low level technical sense. The user doesn&apos;t know which requests are made before onload, and which are made after it. Actually, it&apos;s dynamic content that&apos;s most interesting to refresh for normal people, so preventing revalidation in that case sounds like a bad thing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248375</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-07-08 11:36:03 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Matching other browsers is of course a very strong argument. However, we&apos;ve 
&gt; been long trying to apply our own thinking to refresh functionality, and didn&apos;t 
&gt; just blindly follow others here.

3x the number of network requests on Facebook is not in the realm of reasonable, don&apos;t you agree?  I mean, it is really bad.  There are a lot of Facebook users.

I agree with the principle of doing what&apos;s best provided it is compatible with the web.  In this case, I think the choice is pretty clear.


&gt; &gt; Agreed.  Nate&apos;s patch treats all subresource loads equally.
&gt; 
&gt; It&apos;s only equal in a low level technical sense. The user doesn&apos;t know which 
&gt; requests are made before onload, and which are made after it. Actually, it&apos;s 
&gt; dynamic content that&apos;s most interesting to refresh for normal people, so 
&gt; preventing revalidation in that case sounds like a bad thing.

I guess I was confused by your argument.  I agree that the user won&apos;t know the difference for requests made close to the time of the page load stopping.  However, after the page has been quiescent for a little while, I don&apos;t think the user should expect a previous reload to impact new clicks.

I think there is some burden on the web page developer to do the right thing when using XHR.  If we apply load flags to any request made before or during onload, then the web developer can make sure to issue subresource requests during that time so that a &apos;reload&apos; would apply to those requests.  This will work in Firefox and IE (see bug 30862).  Web developers can similarly know that load flags will not apply to requests issued after onload.  So, they can plan accordingly.

I know there is still the case of uninformed web developers, and that is surely the majority case, but I don&apos;t know what else to do.  The current behavior is hurting more than it is helping.  I think that&apos;s clear.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248378</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-07-08 11:38:05 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; Matching other browsers is of course a very strong argument. However, we&apos;ve 
&gt; &gt; been long trying to apply our own thinking to refresh functionality, and didn&apos;t 
&gt; &gt; just blindly follow others here.
&gt; 
&gt; 3x the number of network requests on Facebook is not in the realm of 
&gt; reasonable, don&apos;t you agree?

In case you were wondering, this issue was reported by Facebook developers.
The 3x number comes from their network traffic logs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248390</commentid>
    <comment_count>9</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-07-08 11:51:34 -0700</bug_when>
    <thetext>Is it known why users try to reload Facebook pages? Will this change make their lives worse?

&gt; However, after the page has been quiescent for a little while, I don&apos;t think 
&gt; the user should expect a previous reload to impact new clicks.

I hesitate to propose it, but this almost sounds like there should be a timeout of several seconds then.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248443</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-07-08 12:45:40 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; Is it known why users try to reload Facebook pages? Will this change make their 
&gt; lives worse?

I suspect people hit the reload button to reload the page they are looking at.  I doubt they do so to reload the page that they will look at next.  You know what I mean?  On facebook, there is only one real page, but to the user it looks like many pages.  The user probably only wants to reload a single conceptual page, which is what this patch will give them.  That&apos;s my intuition anyways.


&gt; &gt; However, after the page has been quiescent for a little while, I don&apos;t think 
&gt; &gt; the user should expect a previous reload to impact new clicks.
&gt; 
&gt; I hesitate to propose it, but this almost sounds like there should be a timeout 
&gt; of several seconds then.

Let&apos;s start by having a hard cut off after onload, and fix bug 30862 as I proposed.  I bet that will address most user complaints.

Do you know of any other bugs related to this topic besides bug 30862?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248494</commentid>
    <comment_count>11</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-07-08 13:36:17 -0700</bug_when>
    <thetext>&gt; I suspect people hit the reload button to reload the page they are looking at.  
&gt; I doubt they do so to reload the page that they will look at next.

Well, this just means that we should reset the load type when fragment changes, doesn&apos;t it?

My question was a bit different though. What kind of content do people want to refresh on Facebook? It&apos;s possible that fixing this bug in this way will expose some other difference in behavior, and WebKit will be the only engine  that doesn&apos;t refresh this content. That concern is of course not limited to Facebook, but we could start testing with it if we knew what scenario we&apos;re talking about.

&gt; Let&apos;s start by having a hard cut off after onload, and fix bug 30862 as I proposed.

Fixing 30862 would be of course very welcome. I&apos;d love to hear what other folks CC&apos;ed here think about your proposal about this bug.

&gt; Do you know of any other bugs related to this topic besides bug 30862?

There are several bugs mentioned in comments there. Besides those, bug 38690 may be related (it might even be related to Facebook problem - do we know for sure if it&apos;s users actually hitting Refresh, and not some other reason that makes WebKit revalidate?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248530</commentid>
    <comment_count>12</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2010-07-08 14:11:16 -0700</bug_when>
    <thetext>I agree with Darin about both this and 30862. The current behavior is buggy and resetting the load type on onload is the appropriate fix.

I had noticed the problem earlier when working with the loader code but never tried to fix it as there wasn&apos;t known serious harm caused by it (reloads are assumed to be relatively rare) and the fix is a risky behavior change. Since it is now known to cause real pain, the fix should be tried out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248536</commentid>
    <comment_count>13</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-07-08 14:18:03 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; &gt; I suspect people hit the reload button to reload the page they are looking at.  
&gt; &gt; I doubt they do so to reload the page that they will look at next.
&gt; 
&gt; Well, this just means that we should reset the load type when fragment changes, 
&gt; doesn&apos;t it?

That is another choice.  It seems worse to me.  Again, a request issued after
page load completes seems conceptually divorced from page load.  Once the page
loads, the page should now act like a page that was loaded normally.


&gt; My question was a bit different though. What kind of content do people want 
&gt; to refresh on Facebook?

I don&apos;t know... maybe to see if people have posted additional comments?


&gt; It&apos;s possible that fixing this bug in this way will
&gt; expose some other difference in behavior, and WebKit will be the only 
&gt; engine that doesn&apos;t refresh this content.

The patch here is trying to make WebKit be more like other browsers.


&gt; That concern is of course not 
&gt; limited to Facebook, but we could start testing with it if we knew what 
&gt; scenario we&apos;re talking about.

The scenario is given in comment #0.  Use XHR to request a resource.


&gt; &gt; Do you know of any other bugs related to this topic besides bug 30862?
&gt; 
&gt; There are several bugs mentioned in comments there. Besides those, bug 38690 
&gt; may be related (it might even be related to Facebook problem - do we know for
&gt; sure if it&apos;s users actually hitting Refresh, and not some other reason that 
&gt; makes WebKit revalidate?)

I don&apos;t know for sure.  It is a guess based on observing the behavior of
reload on Facebook pages.  I don&apos;t observe the problem on Facebook unless
I hit reload first.  I didn&apos;t exhaust all possible avenues to see if there
isn&apos;t a redirect following a form submission somewhere.  It is possible,
but given the popularity of the reload button, I&apos;m tempted to blame that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248558</commentid>
    <comment_count>14</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-07-08 14:40:52 -0700</bug_when>
    <thetext>I still see this change as likely to degrade user experience, but I won&apos;t argue with both you and Antti any more.

&gt;&gt; It&apos;s possible that fixing this bug in this way will
&gt;&gt; expose some other difference in behavior, and WebKit will be the only 
&gt;&gt; engine that doesn&apos;t refresh this content.
&gt;
&gt; The patch here is trying to make WebKit be more like other browsers.

It&apos;s very common that a patch that technically makes us more like other browsers actually breaks functionality if we&apos;re still insufficiently like them (or if there are browser specific code paths). All I&apos;m asking for is to actually test (to a reasonable degree) the use case we&apos;re supposed to be improving here. Not in the terms of XMLHttpRequest or DOM events, but in the terms of still seeing new content on Facebook.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248615</commentid>
    <comment_count>15</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-07-08 16:16:07 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; &gt; The patch here is trying to make WebKit be more like other browsers.
&gt; 
&gt; It&apos;s very common that a patch that technically makes us more like other 
&gt; browsers actually breaks functionality if we&apos;re still insufficiently like them 
&gt; (or if there are browser specific code paths).

Yes, this is a good thing to be concerned about.


&gt; All I&apos;m asking for is to 
&gt; actually test (to a reasonable degree) the use case we&apos;re supposed to be 
&gt; improving here. Not in the terms of XMLHttpRequest or DOM events, but in the 
&gt; terms of still seeing new content on Facebook.

Certainly.  When we have this fix in the dev channel of Chrome, I plan on
informing the Facebook engineers so they can also confirm the fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249290</commentid>
    <comment_count>16</comment_count>
      <attachid>61100</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2010-07-09 14:41:34 -0700</bug_when>
    <thetext>Created attachment 61100
patch #2

This change merges the places that are setting cache policy based on DocumentLoader&apos;s original request into addExtraFieldsToRequest.  As it currently stands, those settings often get overridden anyway, and it makes it much harder to follow the logic of the cache policy.  Hopefully this is clearer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249359</commentid>
    <comment_count>17</comment_count>
      <attachid>61100</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-07-09 17:08:01 -0700</bug_when>
    <thetext>Comment on attachment 61100
patch #2

LayoutTests/http/tests/xmlhttprequest/cache-headers-after-reload.html:25
 +            xhr.onload = finish;
nit: indentation

R=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249361</commentid>
    <comment_count>18</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-07-09 17:11:28 -0700</bug_when>
    <thetext>By the way, Alexey... it seems we were already not observing this bug for subresources that go through the WebCore cache.  Take a look at FrameLoader::subresourceCachePolicy.  It will return early if m_isComplete is true, and that is true once we fire onload.  So, Nate&apos;s patch has the effect of making subresources like XHR that do not go through the WebCore cache behave consistently with those that do with regards to reload behavior.

We seriously need to clean up this code.  It is really wonky that there are two systems determining cache policy for different subresources.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249960</commentid>
    <comment_count>19</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2010-07-12 12:25:27 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/63100</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250162</commentid>
    <comment_count>20</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2010-07-12 17:08:33 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; http://trac.webkit.org/changeset/63100

Not sure of the actual reason but it seems this patch is causing an API test failing in the GTK port:

http://build.webkit.org/builders/GTK%20Linux%2032-bit%20Release/builds/1381/steps/API%20tests/logs/stdio

I found this one as the guilty commit by using git bisect with latest code from trunk, but still don&apos;t know whether this test is failing because this test broke something or because it uncovered some other problem somwhere else.

See comment #37 on bug 38648 for more details, now it&apos;s time for me to go to bed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250175</commentid>
    <comment_count>21</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2010-07-12 17:25:10 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; (In reply to comment #19)
&gt; &gt; http://trac.webkit.org/changeset/63100
&gt; 
&gt; Not sure of the actual reason but it seems this patch is causing an API test failing in the GTK port:
&gt; 
&gt; http://build.webkit.org/builders/GTK%20Linux%2032-bit%20Release/builds/1381/steps/API%20tests/logs/stdio
&gt; 
&gt; I found this one as the guilty commit by using git bisect with latest code from trunk, but still don&apos;t know whether this test is failing because this test broke something or because it uncovered some other problem somwhere else.
&gt; 
&gt; See comment #37 on bug 38648 for more details, now it&apos;s time for me to go to bed.

Hmmm.. looks like I was too slow, as Martin already filed a bug for this: 

https://bugs.webkit.org/show_bug.cgi?id=42114

Sorry for the spam</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250436</commentid>
    <comment_count>22</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2010-07-13 04:32:01 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; (In reply to comment #19)
&gt; &gt; http://trac.webkit.org/changeset/63100
&gt; 
&gt; Not sure of the actual reason but it seems this patch is causing an API test 
&gt; failing in the GTK port:
&gt; 
&gt; http://build.webkit.org/builders/GTK%20Linux%2032-bit%20Release/builds/1381/steps/API%20tests/logs/stdio
&gt; 
&gt; I found this one as the guilty commit by using git bisect with latest code from 
&gt; trunk, but still don&apos;t know whether this test is failing because this test 
&gt; broke something or because it uncovered some other problem somwhere else.

After taking another look on this (I&apos;m feel really curious about this stuff), I found the problem in the WebKitGTK API test comes because of this one-line change:


diff --git a/WebCore/loader/FrameLoader.cpp b/WebCore/loader/FrameLoader.cpp
index 8611ac0..40beec7 100644
--- a/WebCore/loader/FrameLoader.cpp
+++ b/WebCore/loader/FrameLoader.cpp
@@ -2605,6 +2605,9 @@ String FrameLoader::userAgent(const KURL&amp; url) const
 void FrameLoader::handledOnloadEvents()
 {
     m_client-&gt;dispatchDidHandleOnloadEvents();
+
+    m_loadType = FrameLoadTypeStandard;
+
 #if ENABLE(OFFLINE_WEB_APPLICATIONS)
     if (documentLoader())
         documentLoader()-&gt;applicationCacheHost()-&gt;stopDeferringEvents();


I&apos;m not an expert on this matter so I can&apos;t tell why this is causing the following assertion in the webview unit test to fail:

ERROR:../../WebKit/gtk/tests/testwebview.c:269:do_test_webkit_web_view_adjustments: assertion failed (gtk_adjustment_get_value(adjustment) == 100.0): (0 == 100)


...but somehow that&apos;s causing the problem and I wonder, out of my ignorance about this part of the code, whether the handleOnloadEvents() function is the right place to reset the m_loadTypeValue. Maybe with this piece of information someone of you could help to understand why this is happening and therefore to fix bug 42114.

Thanks in advance.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60807</attachid>
            <date>2010-07-07 17:08:38 -0700</date>
            <delta_ts>2010-07-09 14:41:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>xhr-cache.txt</filename>
            <type>text/plain</type>
            <size>6902</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MjcyOSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjUgQEAKKzIwMTAtMDctMDcgIE5hdGUgQ2hhcGluICA8amFwaGV0QGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBF
bnN1cmUgdGhhdCBhIGNhY2hlIHBvbGljeSB0aGF0IGZvcmNlcyB2YWxpZGF0aW9uIGlzIGNsZWFy
ZWQgb25jZQorICAgICAgICB0aGUgbG9hZCBldmVudCBpcyBmaXJlZCwgcmF0aGVyIHRoYW4gb25s
eSBkb2luZyBzbyBhdCB0aGUgbmV4dAorICAgICAgICBuYXZpZ2F0aW9uLiBUaGlzIGxlYWRzIHRv
IGEgbG90IG9mIHVubmVjZXNzYXJ5IGxvYWQgb24gQUpBWC15CisgICAgICAgIHdlYnNpdGVzLgor
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MTgxMwor
CisgICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvY2FjaGUtaGVhZGVycy1h
ZnRlci1yZWxvYWQuaHRtbAorCisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpoYW5kbGVkT25sb2FkRXZlbnRzKTogSWYgdGhl
IGxvYWQgdHlwZQorICAgICAgICAgICAgaXMgRnJhbWVMb2FkVHlwZVJlbG9hZCwgY2xlYXIgaXQg
dG8gRnJhbWVMb2FkVHlwZVN0YW5kYXJkCisgICAgICAgICAgICBhZnRlciB0aGUgbG9hZCBldmVu
dC4KKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmNyZWF0ZSk6IE9ubHkgaW5oZXJpdCBjYWNoZSBwb2xp
Y3kKKyAgICAgICAgICAgIGZyb20gdGhlIG9yaWdpbmFsIHJlcXVlc3QgaWYgdGhlIHJlbGV2YW50
IERvY3VtZW50TG9hZGVyCisgICAgICAgICAgICBpcyBzdGlsbCBsb2FkaW5nLgorCiAyMDEwLTA3
LTA3ICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgQmV0aCBEYWtpbi4KSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHJldmlzaW9u
IDYyNzE0KQorKysgV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNjAxLDYgKzI2MDEsMTAgQEAKIHZvaWQgRnJhbWVMb2FkZXI6OmhhbmRsZWRPbmxvYWRF
dmVudHMoKQogewogICAgIG1fY2xpZW50LT5kaXNwYXRjaERpZEhhbmRsZU9ubG9hZEV2ZW50cygp
OworCisgICAgaWYgKG1fbG9hZFR5cGUgPT0gRnJhbWVMb2FkVHlwZVJlbG9hZCkKKyAgICAgICAg
bV9sb2FkVHlwZSA9IEZyYW1lTG9hZFR5cGVTdGFuZGFyZDsKKwogI2lmIEVOQUJMRShPRkZMSU5F
X1dFQl9BUFBMSUNBVElPTlMpCiAgICAgaWYgKGRvY3VtZW50TG9hZGVyKCkpCiAgICAgICAgIGRv
Y3VtZW50TG9hZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCktPnN0b3BEZWZlcnJpbmdFdmVu
dHMoKTsKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDYy
NzE0KQorKysgV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04NCw3ICs4NCw4IEBACiAgICAgICAgIG5ld1JlcXVlc3Quc2V0SFRUUFJlZmVycmVy
KGZsLT5vdXRnb2luZ1JlZmVycmVyKCkpOwogICAgIEZyYW1lTG9hZGVyOjphZGRIVFRQT3JpZ2lu
SWZOZWVkZWQobmV3UmVxdWVzdCwgZmwtPm91dGdvaW5nT3JpZ2luKCkpOwogCi0gICAgLy8gVXNl
IHRoZSBvcmlnaW5hbCByZXF1ZXN0J3MgY2FjaGUgcG9saWN5IGZvciB0d28gcmVhc29uczoKKyAg
ICAvLyBJZiBpbmhlcml0aW5nIGNhY2hlIHBvbGljeSBmcm9tIGEgRG9jdW1lbnRMb2FkZXIsIHVz
ZSB0aGUgb3JpZ2luYWwgcmVxdWVzdCdzCisgICAgLy8gY2FjaGUgcG9saWN5IGZvciB0d28gcmVh
c29uczoKICAgICAvLyAxLiBGb3IgUE9TVCByZXF1ZXN0cywgd2UgbXV0YXRlIHRoZSBjYWNoZSBw
b2xpY3kgZm9yIHRoZSBtYWluIHJlc291cmNlLAogICAgIC8vICAgIGJ1dCB3ZSBkbyBub3Qgd2Fu
dCB0aGlzIHRvIGFwcGx5IHRvIHN1YnJlc291cmNlcwogICAgIC8vIDIuIERlbGVnYXRlcyB0aGF0
IG1vZGlmeSB0aGUgY2FjaGUgcG9saWN5IHVzaW5nIHdpbGxTZW5kUmVxdWVzdDogc2hvdWxkCkBA
IC05Miw2ICs5Myw4IEBACiAgICAgLy8gICAgcGVyIHJlcXVlc3QuCiAgICAgaWYgKG5ld1JlcXVl
c3QuaXNDb25kaXRpb25hbCgpKQogICAgICAgICBuZXdSZXF1ZXN0LnNldENhY2hlUG9saWN5KFJl
bG9hZElnbm9yaW5nQ2FjaGVEYXRhKTsKKyAgICBlbHNlIGlmICghZmwtPmFjdGl2ZURvY3VtZW50
TG9hZGVyKCktPmlzTG9hZGluZ0luQVBJU2Vuc2UoKSkKKyAgICAgICAgbmV3UmVxdWVzdC5zZXRD
YWNoZVBvbGljeShVc2VQcm90b2NvbENhY2hlUG9saWN5KTsKICAgICBlbHNlCiAgICAgICAgIG5l
d1JlcXVlc3Quc2V0Q2FjaGVQb2xpY3koZmwtPm9yaWdpbmFsUmVxdWVzdCgpLmNhY2hlUG9saWN5
KCkpOwogCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291
cmNlcy9wcmludC1jYWNoZS1jb250cm9sLWhlYWRlci5jZ2kKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvcHJpbnQtY2FjaGUtY29u
dHJvbC1oZWFkZXIuY2dpCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94
bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvcHJpbnQtY2FjaGUtY29udHJvbC1oZWFkZXIuY2dpCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwIEBACisjIS91c3IvYmluL3BlcmwgLXdUCit1c2Ugc3Ry
aWN0OworCitwcmludCAiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluXG5cbiI7CisKK2ZvcmVhY2gg
KGtleXMgJUVOVikgeworICAgIGlmICgkXyA9fiAiSFRUUF9DQUNIRV9DT05UUk9MIikgeworICAg
ICAgICBwcmludCAkXyAuICI6ICIgLiAkRU5WeyRffSAuICJcbiI7CisgICAgfQorfQoKUHJvcGVy
dHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNv
dXJjZXMvcHJpbnQtY2FjaGUtY29udHJvbC1oZWFkZXIuY2dpCl9fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2
bjpleGVjdXRhYmxlCiAgICsgKgoKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0
cHJlcXVlc3QvY2FjaGUtaGVhZGVycy1hZnRlci1yZWxvYWQtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvY2FjaGUtaGVhZGVy
cy1hZnRlci1yZWxvYWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9jYWNoZS1oZWFkZXJzLWFmdGVyLXJlbG9hZC1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOCBAQAorVGhpcyB0ZXN0IGRvZXMgdGhl
IGZvbGxvd2luZzoKKzEuIExvYWQgYSBwYWdlLCB0cmlnZ2VyIGFuIFhIUi4KKzIuIFJlbG9hZCB0
aGUgcGFnZS4KKzMuIER1bXAgdGhlIGh0dHAgcmVhZGVycyBmb3IgdGhlIHJlbG9hZCBvZiB0aGUg
WEhSLgorCitUaGUgWEhSIGlzIHRyaWdnZXIgYWZ0ZXIgb25sb2FkIGhhcyBmaXJlZC4gVGhlcmUg
c2hvdWxkIG5vdCBiZSBhbiBIVFRQX0NBQ0hFX0NPTlRST0wgaGVhZGVyIGZvcmNpbmcgcmVsb2Fk
LCBzbyBhbiBodHRwIGNhY2hlIGNvdWxkIGxvYWQgdGhlIHJlc291cmNlIHdpdGhvdXQgY29udGFj
dGluZyB0aGUgc2VydmVyLgorVGhlIHRlc3QgcGFzc2VzIGlmIHRoZXJlIGlzIG5vIEhUVFBfQ0FD
SEVfQ09OVFJPTCBoZWFkZXIgZGlzcGxheWVkIGJlbG93LgorCkluZGV4OiBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2NhY2hlLWhlYWRlcnMtYWZ0ZXItcmVsb2FkLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9jYWNo
ZS1oZWFkZXJzLWFmdGVyLXJlbG9hZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9jYWNoZS1oZWFkZXJzLWFmdGVyLXJlbG9hZC5odG1s
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ0IEBACis8aHRtbD4KKzxib2R5IG9ubG9hZD0ic2V0
VGltZW91dCh0ZXN0LCAxMDApOyI+CitUaGlzIHRlc3QgZG9lcyB0aGUgZm9sbG93aW5nOjxicj4K
KzEuIExvYWQgYSBwYWdlLCB0cmlnZ2VyIGFuIFhIUi48YnI+CisyLiBSZWxvYWQgdGhlIHBhZ2Uu
PGJyPgorMy4gRHVtcCB0aGUgaHR0cCByZWFkZXJzIGZvciB0aGUgcmVsb2FkIG9mIHRoZSBYSFIu
PGJyPjxicj4KK1RoZSBYSFIgaXMgdHJpZ2dlciBhZnRlciBvbmxvYWQgaGFzIGZpcmVkLiBUaGVy
ZSBzaG91bGQgbm90IGJlIGFuIEhUVFBfQ0FDSEVfQ09OVFJPTCBoZWFkZXIgZm9yY2luZyByZWxv
YWQsIHNvIGFuIGh0dHAgY2FjaGUKK2NvdWxkIGxvYWQgdGhlIHJlc291cmNlIHdpdGhvdXQgY29u
dGFjdGluZyB0aGUgc2VydmVyLjxicj4KK1RoZSB0ZXN0IHBhc3NlcyBpZiB0aGVyZSBpcyBubyBI
VFRQX0NBQ0hFX0NPTlRST0wgaGVhZGVyIGRpc3BsYXllZCBiZWxvdy48YnI+Cis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgeworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB9CisKKyAgICBm
dW5jdGlvbiBsb2cobWVzc2FnZSkgeworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
Y29uc29sZSIpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1lc3NhZ2UpKTsK
KyAgICB9CisKKyAgICB2YXIgeGhyOyAgICAKKyAgICBmdW5jdGlvbiB0ZXN0KCkgeworICAgICAg
ICB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKKyAgICAgICAgaWYgKGxvY2FsU3RvcmFnZS5y
ZWxvYWRlZCkKKyAgICAgICAgICB4aHIub25sb2FkID0gZmluaXNoOworICAgICAgICBlbHNlICAg
ICAgICAgCisgICAgICAgICAgeGhyLm9ubG9hZCA9IHJlbG9hZDsKKyAgICAgICAgeGhyLm9wZW4o
IkdFVCIsICJyZXNvdXJjZXMvcHJpbnQtY2FjaGUtY29udHJvbC1oZWFkZXIuY2dpIiwgdHJ1ZSk7
CisgICAgICAgIHhoci5zZW5kKG51bGwpOworICAgIH0KKyAgICAKKyAgICBmdW5jdGlvbiByZWxv
YWQoKSB7CisgICAgICAgIGxvY2FsU3RvcmFnZS5yZWxvYWRlZCA9IHRydWU7CisgICAgICAgIGxv
Y2F0aW9uLnJlbG9hZCh0cnVlKTsKKyAgICB9CisgICAgCisgICAgZnVuY3Rpb24gZmluaXNoKCkg
eworICAgICAgICBsb2coeGhyLnJlc3BvbnNlVGV4dCk7CisgICAgICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3Rp
ZnlEb25lKCk7CisgICAgfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiA2MjcyOSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE2IEBACisyMDEwLTA3LTA3ICBOYXRlIENoYXBpbiAgPGphcGhldEBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGVzdCB0aGF0IENhY2hlLUNvbnRyb2wgaGVhZGVycyBhcmUgbm90IGluY2x1ZGVkIG9uIFhIUnMg
dGhhdCBvY2N1cgorICAgICAgICBhZnRlciB0aGUgbG9hZCBldmVudC4KKworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDE4MTMKKworICAgICAgICAqIGh0
dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvY2FjaGUtaGVhZGVycy1hZnRlci1yZWxvYWQtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2NhY2hl
LWhlYWRlcnMtYWZ0ZXItcmVsb2FkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMv
eG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL3ByaW50LWNhY2hlLWNvbnRyb2wtaGVhZGVyLmNnaTog
QWRkZWQuCisKIDIwMTAtMDctMDcgIFBldGVyIEthc3RpbmcgIDxwa2FzdGluZ0Bnb29nbGUuY29t
PgogCiAgICAgICAgIE5vdCByZXZpZXdlZC4gIENocm9taXVtIHRlc3QgZXhwZWN0YXRpb24gdXBk
YXRlLgo=
</data>
<flag name="review"
          id="48582"
          type_id="1"
          status="-"
          setter="fishd"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>61100</attachid>
            <date>2010-07-09 14:41:34 -0700</date>
            <delta_ts>2010-07-09 17:08:01 -0700</delta_ts>
            <desc>patch #2</desc>
            <filename>xhr-cache2.txt</filename>
            <type>text/plain</type>
            <size>9790</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2Mjk4MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjQgQEAKKzIwMTAtMDctMDkgIE5hdGUgQ2hhcGluICA8amFwaGV0QGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBF
bnN1cmUgdGhhdCBhIGNhY2hlIHBvbGljeSB0aGF0IGZvcmNlcyB2YWxpZGF0aW9uIGlzIGNsZWFy
ZWQgb25jZQorICAgICAgICB0aGUgbG9hZCBldmVudCBpcyBmaXJlZCwgcmF0aGVyIHRoYW4gb25s
eSBkb2luZyBzbyBhdCB0aGUgbmV4dAorICAgICAgICBuYXZpZ2F0aW9uLiBUaGlzIGxlYWRzIHRv
IGEgbG90IG9mIHVubmVjZXNzYXJ5IGxvYWQgb24gQUpBWC15CisgICAgICAgIHdlYnNpdGVzLgor
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MTgxMwor
CisgICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvY2FjaGUtaGVhZGVycy1h
ZnRlci1yZWxvYWQuaHRtbAorCisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpoYW5kbGVkT25sb2FkRXZlbnRzKTogUmVzZXQg
bV9sb2FkVHlwZSB0byBGcmFtZUxvYWRUeXBlU3RhbmRhcmQuCisgICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlcjo6YWRkRXh0cmFGaWVsZHNUb1JlcXVlc3QpOiBPbmx5IHJlc3BlY3QgdGhlIG9y
aWdpbmFsIHJlcXVlc3QncyBjYWNoZSBwb2xpY3kgaWYgdGhlCisgICAgICAgICAgICBEb2N1bWVu
dExvYWRlciBpcyBzdGlsbCBsb2FkaW5nLCBhbmQgaGFuZGxlIHRoZSBvdGhlciBjYWNoZSBwb2xp
Y3kgc2V0dGluZ3MgdGhhdCB3ZXJlIHNjYXR0ZXJlZCBhcm91bmQgdGhlIGxvYWRlci4KKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KTogTWVy
Z2UgY2FjaGVQb2xpY3kgc2V0dGluZyBpbnRvIEZyYW1lTG9hZGVyOjphZGRFeHRyYUZpZWxkc1Rv
UmVxdWVzdC4KKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmNyZWF0ZSk6IE1lcmdlIGNhY2hlUG9saWN5
IHNldHRpbmcgaW50byBGcmFtZUxvYWRlcjo6YWRkRXh0cmFGaWVsZHNUb1JlcXVlc3QuCisKIDIw
MTAtMDctMDkgIER1bWl0cnUgRGFuaWxpdWMgIDxkdW1pQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBVbnJldmlld2VkLCBidXQgcHJlLWFwcHJvdmVkIGJ5IEVyaWMgU2VpZGVsLgpJbmRleDogV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmNwcAkocmV2aXNpb24gNjI4NjQpCisrKyBXZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2MDEsNiArMjYwMSw5IEBACiB2b2lkIEZy
YW1lTG9hZGVyOjpoYW5kbGVkT25sb2FkRXZlbnRzKCkKIHsKICAgICBtX2NsaWVudC0+ZGlzcGF0
Y2hEaWRIYW5kbGVPbmxvYWRFdmVudHMoKTsKKworICAgIG1fbG9hZFR5cGUgPSBGcmFtZUxvYWRU
eXBlU3RhbmRhcmQ7CisKICNpZiBFTkFCTEUoT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKQogICAg
IGlmIChkb2N1bWVudExvYWRlcigpKQogICAgICAgICBkb2N1bWVudExvYWRlcigpLT5hcHBsaWNh
dGlvbkNhY2hlSG9zdCgpLT5zdG9wRGVmZXJyaW5nRXZlbnRzKCk7CkBAIC0yNjczLDYgKzI2NzYs
MTMgQEAKIAogICAgIGFwcGx5VXNlckFnZW50KHJlcXVlc3QpOwogICAgIAorICAgIC8vIElmIHdl
IGluaGVyaXQgY2FjaGUgcG9saWN5IGZyb20gYSBtYWluIHJlc291cmNlLCB3ZSB1c2UgdGhlIERv
Y3VtZW50TG9hZGVyJ3MgCisgICAgLy8gb3JpZ2luYWwgcmVxdWVzdCBjYWNoZSBwb2xpY3kgZm9y
IHR3byByZWFzb25zOgorICAgIC8vIDEuIEZvciBQT1NUIHJlcXVlc3RzLCB3ZSBtdXRhdGUgdGhl
IGNhY2hlIHBvbGljeSBmb3IgdGhlIG1haW4gcmVzb3VyY2UsCisgICAgLy8gICAgYnV0IHdlIGRv
IG5vdCB3YW50IHRoaXMgdG8gYXBwbHkgdG8gc3VicmVzb3VyY2VzCisgICAgLy8gMi4gRGVsZWdh
dGVzIHRoYXQgbW9kaWZ5IHRoZSBjYWNoZSBwb2xpY3kgdXNpbmcgd2lsbFNlbmRSZXF1ZXN0OiBz
aG91bGQKKyAgICAvLyAgICBub3QgYWZmZWN0IGFueSBvdGhlciByZXNvdXJjZXMuIFN1Y2ggY2hh
bmdlcyBuZWVkIHRvIGJlIGRvbmUKKyAgICAvLyAgICBwZXIgcmVxdWVzdC4KICAgICBpZiAobG9h
ZFR5cGUgPT0gRnJhbWVMb2FkVHlwZVJlbG9hZCkgewogICAgICAgICByZXF1ZXN0LnNldENhY2hl
UG9saWN5KFJlbG9hZElnbm9yaW5nQ2FjaGVEYXRhKTsKICAgICAgICAgcmVxdWVzdC5zZXRIVFRQ
SGVhZGVyRmllbGQoIkNhY2hlLUNvbnRyb2wiLCAibWF4LWFnZT0wIik7CkBAIC0yNjgwLDggKzI2
OTAsMTIgQEAKICAgICAgICAgcmVxdWVzdC5zZXRDYWNoZVBvbGljeShSZWxvYWRJZ25vcmluZ0Nh
Y2hlRGF0YSk7CiAgICAgICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKCJDYWNoZS1Db250
cm9sIiwgIm5vLWNhY2hlIik7CiAgICAgICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKCJQ
cmFnbWEiLCAibm8tY2FjaGUiKTsKLSAgICB9IGVsc2UgaWYgKGlzQmFja0ZvcndhcmRMb2FkVHlw
ZShsb2FkVHlwZSkgJiYgIXJlcXVlc3QudXJsKCkucHJvdG9jb2xJcygiaHR0cHMiKSkKKyAgICB9
IGVsc2UgaWYgKHJlcXVlc3QuaXNDb25kaXRpb25hbCgpKQorICAgICAgICByZXF1ZXN0LnNldENh
Y2hlUG9saWN5KFJlbG9hZElnbm9yaW5nQ2FjaGVEYXRhKTsKKyAgICBlbHNlIGlmIChpc0JhY2tG
b3J3YXJkTG9hZFR5cGUobG9hZFR5cGUpICYmICFyZXF1ZXN0LnVybCgpLnByb3RvY29sSXMoImh0
dHBzIikpCiAgICAgICAgIHJlcXVlc3Quc2V0Q2FjaGVQb2xpY3koUmV0dXJuQ2FjaGVEYXRhRWxz
ZUxvYWQpOworICAgIGVsc2UgaWYgKCFtYWluUmVzb3VyY2UgJiYgZG9jdW1lbnRMb2FkZXIoKS0+
aXNMb2FkaW5nSW5BUElTZW5zZSgpKQorICAgICAgICByZXF1ZXN0LnNldENhY2hlUG9saWN5KGRv
Y3VtZW50TG9hZGVyKCktPm9yaWdpbmFsUmVxdWVzdCgpLmNhY2hlUG9saWN5KCkpOwogICAgIAog
ICAgIGlmIChtYWluUmVzb3VyY2UpCiAgICAgICAgIHJlcXVlc3Quc2V0SFRUUEFjY2VwdChkZWZh
dWx0QWNjZXB0SGVhZGVyKTsKQEAgLTI3NzgsMTcgKzI3OTIsNiBAQAogICAgIFJlc291cmNlUmVx
dWVzdCBpbml0aWFsUmVxdWVzdCA9IHJlcXVlc3Q7CiAgICAgaW5pdGlhbFJlcXVlc3Quc2V0VGlt
ZW91dEludGVydmFsKDEwKTsKICAgICAKLSAgICAvLyBVc2UgdGhlIG9yaWdpbmFsIHJlcXVlc3Qn
cyBjYWNoZSBwb2xpY3kgZm9yIHR3byByZWFzb25zOgotICAgIC8vIDEuIEZvciBQT1NUIHJlcXVl
c3RzLCB3ZSBtdXRhdGUgdGhlIGNhY2hlIHBvbGljeSBmb3IgdGhlIG1haW4gcmVzb3VyY2UsCi0g
ICAgLy8gICAgYnV0IHdlIGRvIG5vdCB3YW50IHRoaXMgdG8gYXBwbHkgdG8gc3VicmVzb3VyY2Vz
Ci0gICAgLy8gMi4gRGVsZWdhdGVzIHRoYXQgbW9kaWZ5IHRoZSBjYWNoZSBwb2xpY3kgdXNpbmcg
d2lsbFNlbmRSZXF1ZXN0OiBzaG91bGQKLSAgICAvLyAgICBub3QgYWZmZWN0IGFueSBvdGhlciBy
ZXNvdXJjZXMuIFN1Y2ggY2hhbmdlcyBuZWVkIHRvIGJlIGRvbmUKLSAgICAvLyAgICBwZXIgcmVx
dWVzdC4KLSAgICBpZiAoaW5pdGlhbFJlcXVlc3QuaXNDb25kaXRpb25hbCgpKQotICAgICAgICBp
bml0aWFsUmVxdWVzdC5zZXRDYWNoZVBvbGljeShSZWxvYWRJZ25vcmluZ0NhY2hlRGF0YSk7Ci0g
ICAgZWxzZQotICAgICAgICBpbml0aWFsUmVxdWVzdC5zZXRDYWNoZVBvbGljeShvcmlnaW5hbFJl
cXVlc3QoKS5jYWNoZVBvbGljeSgpKTsKLSAgICAKICAgICBpZiAoIXJlZmVycmVyLmlzRW1wdHko
KSkKICAgICAgICAgaW5pdGlhbFJlcXVlc3Quc2V0SFRUUFJlZmVycmVyKHJlZmVycmVyKTsKICAg
ICBhZGRIVFRQT3JpZ2luSWZOZWVkZWQoaW5pdGlhbFJlcXVlc3QsIG91dGdvaW5nT3JpZ2luKCkp
OwpAQCAtMjc5Niw2ICsyNzk5LDggQEAKICAgICBpZiAoUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBh
Z2UoKSkKICAgICAgICAgaW5pdGlhbFJlcXVlc3Quc2V0Rmlyc3RQYXJ0eUZvckNvb2tpZXMocGFn
ZS0+bWFpbkZyYW1lKCktPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT5yZXF1ZXN0KCkudXJs
KCkpOwogICAgIGluaXRpYWxSZXF1ZXN0LnNldEhUVFBVc2VyQWdlbnQoY2xpZW50KCktPnVzZXJB
Z2VudChyZXF1ZXN0LnVybCgpKSk7CisgICAgCisgICAgYWRkRXh0cmFGaWVsZHNUb1N1YnJlc291
cmNlUmVxdWVzdChpbml0aWFsUmVxdWVzdCk7CiAKICAgICB1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIgPSAwOyAgICAKICAgICBSZXNvdXJjZVJlcXVlc3QgbmV3UmVxdWVzdChpbml0aWFsUmVxdWVz
dCk7CkluZGV4OiBXZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiA2Mjg2
NCkKKysrIFdlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtODQsMTcgKzg0LDYgQEAKICAgICAgICAgbmV3UmVxdWVzdC5zZXRIVFRQUmVmZXJyZXIo
ZmwtPm91dGdvaW5nUmVmZXJyZXIoKSk7CiAgICAgRnJhbWVMb2FkZXI6OmFkZEhUVFBPcmlnaW5J
Zk5lZWRlZChuZXdSZXF1ZXN0LCBmbC0+b3V0Z29pbmdPcmlnaW4oKSk7CiAKLSAgICAvLyBVc2Ug
dGhlIG9yaWdpbmFsIHJlcXVlc3QncyBjYWNoZSBwb2xpY3kgZm9yIHR3byByZWFzb25zOgotICAg
IC8vIDEuIEZvciBQT1NUIHJlcXVlc3RzLCB3ZSBtdXRhdGUgdGhlIGNhY2hlIHBvbGljeSBmb3Ig
dGhlIG1haW4gcmVzb3VyY2UsCi0gICAgLy8gICAgYnV0IHdlIGRvIG5vdCB3YW50IHRoaXMgdG8g
YXBwbHkgdG8gc3VicmVzb3VyY2VzCi0gICAgLy8gMi4gRGVsZWdhdGVzIHRoYXQgbW9kaWZ5IHRo
ZSBjYWNoZSBwb2xpY3kgdXNpbmcgd2lsbFNlbmRSZXF1ZXN0OiBzaG91bGQKLSAgICAvLyAgICBu
b3QgYWZmZWN0IGFueSBvdGhlciByZXNvdXJjZXMuIFN1Y2ggY2hhbmdlcyBuZWVkIHRvIGJlIGRv
bmUKLSAgICAvLyAgICBwZXIgcmVxdWVzdC4KLSAgICBpZiAobmV3UmVxdWVzdC5pc0NvbmRpdGlv
bmFsKCkpCi0gICAgICAgIG5ld1JlcXVlc3Quc2V0Q2FjaGVQb2xpY3koUmVsb2FkSWdub3JpbmdD
YWNoZURhdGEpOwotICAgIGVsc2UKLSAgICAgICAgbmV3UmVxdWVzdC5zZXRDYWNoZVBvbGljeShm
bC0+b3JpZ2luYWxSZXF1ZXN0KCkuY2FjaGVQb2xpY3koKSk7Ci0KICAgICBmbC0+YWRkRXh0cmFG
aWVsZHNUb1N1YnJlc291cmNlUmVxdWVzdChuZXdSZXF1ZXN0KTsKIAogICAgIFJlZlB0cjxTdWJy
ZXNvdXJjZUxvYWRlcj4gc3VibG9hZGVyKGFkb3B0UmVmKG5ldyBTdWJyZXNvdXJjZUxvYWRlcihm
cmFtZSwgY2xpZW50LCBzZW5kUmVzb3VyY2VMb2FkQ2FsbGJhY2tzLCBzaG91bGRDb250ZW50U25p
ZmYpKSk7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291
cmNlcy9wcmludC1jYWNoZS1jb250cm9sLWhlYWRlci5jZ2kKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvcHJpbnQtY2FjaGUtY29u
dHJvbC1oZWFkZXIuY2dpCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94
bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvcHJpbnQtY2FjaGUtY29udHJvbC1oZWFkZXIuY2dpCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwIEBACisjIS91c3IvYmluL3BlcmwgLXdUCit1c2Ugc3Ry
aWN0OworCitwcmludCAiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluXG5cbiI7CisKK2ZvcmVhY2gg
KGtleXMgJUVOVikgeworICAgIGlmICgkXyA9fiAiSFRUUF9DQUNIRV9DT05UUk9MIikgeworICAg
ICAgICBwcmludCAkXyAuICI6ICIgLiAkRU5WeyRffSAuICJcbiI7CisgICAgfQorfQoKUHJvcGVy
dHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNv
dXJjZXMvcHJpbnQtY2FjaGUtY29udHJvbC1oZWFkZXIuY2dpCl9fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2
bjpleGVjdXRhYmxlCiAgICsgKgoKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0
cHJlcXVlc3QvY2FjaGUtaGVhZGVycy1hZnRlci1yZWxvYWQtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvY2FjaGUtaGVhZGVy
cy1hZnRlci1yZWxvYWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9jYWNoZS1oZWFkZXJzLWFmdGVyLXJlbG9hZC1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOCBAQAorVGhpcyB0ZXN0IGRvZXMgdGhl
IGZvbGxvd2luZzoKKzEuIExvYWQgYSBwYWdlLCB0cmlnZ2VyIGFuIFhIUi4KKzIuIFJlbG9hZCB0
aGUgcGFnZS4KKzMuIER1bXAgdGhlIGh0dHAgcmVhZGVycyBmb3IgdGhlIHJlbG9hZCBvZiB0aGUg
WEhSLgorCitUaGUgWEhSIGlzIHRyaWdnZXIgYWZ0ZXIgb25sb2FkIGhhcyBmaXJlZC4gVGhlcmUg
c2hvdWxkIG5vdCBiZSBhbiBIVFRQX0NBQ0hFX0NPTlRST0wgaGVhZGVyIGZvcmNpbmcgcmVsb2Fk
LCBzbyBhbiBodHRwIGNhY2hlIGNvdWxkIGxvYWQgdGhlIHJlc291cmNlIHdpdGhvdXQgY29udGFj
dGluZyB0aGUgc2VydmVyLgorVGhlIHRlc3QgcGFzc2VzIGlmIHRoZXJlIGlzIG5vIEhUVFBfQ0FD
SEVfQ09OVFJPTCBoZWFkZXIgZGlzcGxheWVkIGJlbG93LgorCkluZGV4OiBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2NhY2hlLWhlYWRlcnMtYWZ0ZXItcmVsb2FkLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9jYWNo
ZS1oZWFkZXJzLWFmdGVyLXJlbG9hZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9jYWNoZS1oZWFkZXJzLWFmdGVyLXJlbG9hZC5odG1s
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ0IEBACis8aHRtbD4KKzxib2R5IG9ubG9hZD0ic2V0
VGltZW91dCh0ZXN0LCAxMDApOyI+CitUaGlzIHRlc3QgZG9lcyB0aGUgZm9sbG93aW5nOjxicj4K
KzEuIExvYWQgYSBwYWdlLCB0cmlnZ2VyIGFuIFhIUi48YnI+CisyLiBSZWxvYWQgdGhlIHBhZ2Uu
PGJyPgorMy4gRHVtcCB0aGUgaHR0cCByZWFkZXJzIGZvciB0aGUgcmVsb2FkIG9mIHRoZSBYSFIu
PGJyPjxicj4KK1RoZSBYSFIgaXMgdHJpZ2dlciBhZnRlciBvbmxvYWQgaGFzIGZpcmVkLiBUaGVy
ZSBzaG91bGQgbm90IGJlIGFuIEhUVFBfQ0FDSEVfQ09OVFJPTCBoZWFkZXIgZm9yY2luZyByZWxv
YWQsIHNvIGFuIGh0dHAgY2FjaGUKK2NvdWxkIGxvYWQgdGhlIHJlc291cmNlIHdpdGhvdXQgY29u
dGFjdGluZyB0aGUgc2VydmVyLjxicj4KK1RoZSB0ZXN0IHBhc3NlcyBpZiB0aGVyZSBpcyBubyBI
VFRQX0NBQ0hFX0NPTlRST0wgaGVhZGVyIGRpc3BsYXllZCBiZWxvdy48YnI+Cis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgeworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB9CisKKyAgICBm
dW5jdGlvbiBsb2cobWVzc2FnZSkgeworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
Y29uc29sZSIpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1lc3NhZ2UpKTsK
KyAgICB9CisKKyAgICB2YXIgeGhyOyAgICAKKyAgICBmdW5jdGlvbiB0ZXN0KCkgeworICAgICAg
ICB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKKyAgICAgICAgaWYgKGxvY2FsU3RvcmFnZS5y
ZWxvYWRlZCkKKyAgICAgICAgICB4aHIub25sb2FkID0gZmluaXNoOworICAgICAgICBlbHNlICAg
ICAgICAgCisgICAgICAgICAgeGhyLm9ubG9hZCA9IHJlbG9hZDsKKyAgICAgICAgeGhyLm9wZW4o
IkdFVCIsICJyZXNvdXJjZXMvcHJpbnQtY2FjaGUtY29udHJvbC1oZWFkZXIuY2dpIiwgdHJ1ZSk7
CisgICAgICAgIHhoci5zZW5kKG51bGwpOworICAgIH0KKyAgICAKKyAgICBmdW5jdGlvbiByZWxv
YWQoKSB7CisgICAgICAgIGxvY2FsU3RvcmFnZS5yZWxvYWRlZCA9IHRydWU7CisgICAgICAgIGxv
Y2F0aW9uLnJlbG9hZCh0cnVlKTsKKyAgICB9CisgICAgCisgICAgZnVuY3Rpb24gZmluaXNoKCkg
eworICAgICAgICBsb2coeGhyLnJlc3BvbnNlVGV4dCk7CisgICAgICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3Rp
ZnlEb25lKCk7CisgICAgfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiA2Mjg2NCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE2IEBACisyMDEwLTA3LTA3ICBOYXRlIENoYXBpbiAgPGphcGhldEBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGVzdCB0aGF0IENhY2hlLUNvbnRyb2wgaGVhZGVycyBhcmUgbm90IGluY2x1ZGVkIG9uIFhIUnMg
dGhhdCBvY2N1cgorICAgICAgICBhZnRlciB0aGUgbG9hZCBldmVudC4KKworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDE4MTMKKworICAgICAgICAqIGh0
dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvY2FjaGUtaGVhZGVycy1hZnRlci1yZWxvYWQtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2NhY2hl
LWhlYWRlcnMtYWZ0ZXItcmVsb2FkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMv
eG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL3ByaW50LWNhY2hlLWNvbnRyb2wtaGVhZGVyLmNnaTog
QWRkZWQuCisKIDIwMTAtMDctMDggIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBw
bGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCg==
</data>
<flag name="review"
          id="49071"
          type_id="1"
          status="+"
          setter="fishd"
    />
    <flag name="commit-queue"
          id="49095"
          type_id="3"
          status="-"
          setter="fishd"
    />
          </attachment>
      

    </bug>

</bugzilla>