<?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>38690</bug_id>
          
          <creation_ts>2010-05-06 14:21:45 -0700</creation_ts>
          <short_desc>Submitting a POST that leads to a server redirect causes all cached items to redownload</short_desc>
          <delta_ts>2011-03-22 07:08:32 -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>Page Loading</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Henry">wingzx3</reporter>
          <assigned_to name="Nate Chapin">japhet</assigned_to>
          <cc>ap</cc>
    
    <cc>aroben</cc>
    
    <cc>beidson</cc>
    
    <cc>cmarch</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fishd</cc>
    
    <cc>japhet</cc>
    
    <cc>jchaffraix</cc>
    
    <cc>jrgeller</cc>
    
    <cc>k.neirynck</cc>
    
    <cc>koivisto</cc>
    
    <cc>me</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>221964</commentid>
    <comment_count>0</comment_count>
    <who name="Henry">wingzx3</who>
    <bug_when>2010-05-06 14:21:45 -0700</bug_when>
    <thetext>When you submit a form to a webpage that then responds with a header location redirect (ie 302) it causes webkit to load the page from scratch.  None of the previously cached images,css,html,etc are used.  Instead it will redownload everything from the server again.  This pattern is highly prevalent in web applications and leads to lower performance of those applications.

As far as I can tell, this affects all Webkit versions and derivatives such as Chrome and all windows platforms.  I have not tested it on the Mac.

Here is the flow.

1. Submit POST to http://127.0.0.1/firststep.php
2. Server responds.  Status: 302\nLocation: http://127.0.0.1/nextstep.php
3. Webkit loads http://127.0.0.1/nextstep.php without using any cached items.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242460</commentid>
    <comment_count>1</comment_count>
    <who name="Kristof Neirynck">k.neirynck</who>
    <bug_when>2010-06-24 05:18:35 -0700</bug_when>
    <thetext>I can confirm this problem and have created a minimal testcase.
See it live here 
http://crydust.be/lab/prg/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242462</commentid>
    <comment_count>2</comment_count>
      <attachid>59645</attachid>
    <who name="Kristof Neirynck">k.neirynck</who>
    <bug_when>2010-06-24 05:20:14 -0700</bug_when>
    <thetext>Created attachment 59645
Minimal testcase (requires apache server with php)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243145</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-06-25 12:45:49 -0700</bug_when>
    <thetext>&lt;rdar://problem/8132262&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>246127</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-07-02 15:32:30 -0700</bug_when>
    <thetext>Confirmed with r62300. Also reproducible with Safari 4.0.5 on Leopard.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>246128</commentid>
    <comment_count>5</comment_count>
      <attachid>60413</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-07-02 15:38:57 -0700</bug_when>
    <thetext>Created attachment 60413
test case

Same test case, slightly modified to not rely on Apache DirectoryIndex setting.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248556</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-07-08 14:39:44 -0700</bug_when>
    <thetext>It looks like this is related to the code in MainResourceLoader::willSendRequest.
There is a call to isPostOrRedirectAfterPost, and if that returns true, we force
the cache policy to ReloadIgnoringCacheData.  We then modify the ResourceRequest
of the DocumentLoader.

Subresources are impacted by this because FrameLoader::subresourceCachePolicy
inspects the ResourceRequest of the DocumentLoader.  As a result, all of the
subresources become conditional.

(This loader system is making my head explode.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>252396</commentid>
    <comment_count>7</comment_count>
    <who name="Kristof Neirynck">k.neirynck</who>
    <bug_when>2010-07-16 01:25:10 -0700</bug_when>
    <thetext>The problem persists on iOS 4.0.1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>278769</commentid>
    <comment_count>8</comment_count>
    <who name="Kristof Neirynck">k.neirynck</who>
    <bug_when>2010-09-14 01:29:15 -0700</bug_when>
    <thetext>The problem persists on iOS 4.1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>314390</commentid>
    <comment_count>9</comment_count>
    <who name="Kristof Neirynck">k.neirynck</who>
    <bug_when>2010-11-29 07:11:59 -0800</bug_when>
    <thetext>The problem persists on iOS 4.2 (and the latset version of chrome and safari)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>331914</commentid>
    <comment_count>10</comment_count>
    <who name="">jrgeller</who>
    <bug_when>2011-01-10 13:50:13 -0800</bug_when>
    <thetext>This defect is responsible for a quarter of our traffic on our high volume image servers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332055</commentid>
    <comment_count>11</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2011-01-10 16:55:28 -0800</bug_when>
    <thetext>Unless I&apos;m misunderstanding the bug, I&apos;m unable to reproduce this with Safari 5.0.3, Chrome 8, or a recent (~3 days old) Chromium tip of tree build.  I&apos;m consistently seeing If-Modified-Since and If-None-Match headers in the image request in the Post-Redirect-Get cycle (and therefore the server in the test case is returning a 304 for the image request).

Are people still seeing this issue with any of those builds?  It&apos;s possible I&apos;m doing something wrong in my repro attempts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332340</commentid>
    <comment_count>12</comment_count>
    <who name="Chris March">cmarch</who>
    <bug_when>2011-01-11 08:06:53 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; Unless I&apos;m misunderstanding the bug, I&apos;m unable to reproduce this with Safari 5.0.3, Chrome 8, or a recent (~3 days old) Chromium tip of tree build.  I&apos;m consistently seeing If-Modified-Since and If-None-Match headers in the image request in the Post-Redirect-Get cycle (and therefore the server in the test case is returning a 304 for the image request).
&gt; 
&gt; Are people still seeing this issue with any of those builds?  It&apos;s possible I&apos;m doing something wrong in my repro attempts.

My question is: Why is the browser sending the web server requests to check the modified date? 

We use far future expires headers ( 1 year ). I&apos;m testing with Safari 8.0.3 and, after a post and redirect, see a lot of these date check requests resulting in 304s for objects that have been recently downloaded. 

Firefox and IE do not need to check the dates when performing the same test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332341</commentid>
    <comment_count>13</comment_count>
    <who name="Kristof Neirynck">k.neirynck</who>
    <bug_when>2011-01-11 08:07:54 -0800</bug_when>
    <thetext>@Nate: The problem is not related to If-Modified-Since or If-None-Match headers. The problem is that there is a second request for the image. Firefox, internet explorer and opera alike don&apos;t request the image after the post-redirect-get because they remember the expires header from the first time they requested the image.

An image sent with a far-future expires header should NEVER be requested again. Not even after a post-redirect-get.

This is especially important on a mobile network which has a huge latency and low bandwidth.


the problem persists in chrome 8 with useragent 
Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.224 Safari/534.10

the problem persists in chrome canari 10 with useragent 
Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.634.0 Safari/534.16

the problem persists in safari 5 with useragent 
Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533.19.4 (KHTML, like Gecko) Version/5.0.3 Safari/533.19.4

the problem persists in safari on ios 4.2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>333422</commentid>
    <comment_count>14</comment_count>
      <attachid>78757</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2011-01-12 16:52:59 -0800</bug_when>
    <thetext>Created attachment 78757
possible patch

As mentioned in the ChangeLog, the WebCore part of this patch is more or less a revert of http://trac.webkit.org/changeset/43878 and http://trac.webkit.org/changeset/41425.

This patch passes all existing layout tests, as well as the new one for this patch (an adaptation of the test case above). However, I don&apos;t know whether it will still cause problems with Quick Look (see r41425 above).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>333702</commentid>
    <comment_count>15</comment_count>
      <attachid>78757</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2011-01-13 08:27:08 -0800</bug_when>
    <thetext>Comment on attachment 78757
possible patch

Let&apos;s not revert this quite yet when we don&apos;t know what the consequences are.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>333841</commentid>
    <comment_count>16</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2011-01-13 11:40:01 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 78757 [details])
&gt; Let&apos;s not revert this quite yet when we don&apos;t know what the consequences are.

I&apos;m not familiar with the process for determining the fallout in non-browser WebKit apps. :(

Any chance I could get some help or pointers in the right direction to resolve the uncertainty?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>333850</commentid>
    <comment_count>17</comment_count>
      <attachid>78757</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-01-13 11:54:32 -0800</bug_when>
    <thetext>Comment on attachment 78757
possible patch

I agree that the risk of regressing QuickLook is pretty high in this case.

You (or someone else) will likely need to temporarily replace WebKit frameworks in /System/Library with locally built ones, and see how QuickLook works with that. As a start, this can be done on either Mac OS X 10.5 or 10.6.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>333921</commentid>
    <comment_count>18</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2011-01-13 13:55:43 -0800</bug_when>
    <thetext>In general, running the 3rd party WebKit app with &quot;DYLD_FRAMEWORK_PATH&quot; set to your local build directory will would.

Transient system services like QuickLooks are a slight different beast.  Fortunately, there is a quicklooks command-line tool you can run against your built WebKit:
http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man1/qlmanage.1.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336094</commentid>
    <comment_count>19</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2011-01-18 14:24:20 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; In general, running the 3rd party WebKit app with &quot;DYLD_FRAMEWORK_PATH&quot; set to your local build directory will would.
&gt; 
&gt; Transient system services like QuickLooks are a slight different beast.  Fortunately, there is a quicklooks command-line tool you can run against your built WebKit:
&gt; http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man1/qlmanage.1.html

Thus far, I&apos;ve tried running both qlmanage and quicklookd from a terminal with DYLD_FRAMEWORK_PATH, as well as running them via Tools/Scripts/run-webkit-app.  Neither have picked up my binary.

I assume I&apos;m doing something obviously wrong?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336104</commentid>
    <comment_count>20</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-01-18 14:39:57 -0800</bug_when>
    <thetext>This works for me:

DYLD_FRAMEWORK_PATH=/Users/ap/Safari/OpenSource/WebKitBuild/Debug /System/Library/Frameworks/QuickLook.framework/Versions/A/Resources/quicklookd.app/Contents/MacOS/qlmanage -p /Users/ap/Desktop/test.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336171</commentid>
    <comment_count>21</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2011-01-18 15:57:52 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; This works for me:
&gt; 
&gt; DYLD_FRAMEWORK_PATH=/Users/ap/Safari/OpenSource/WebKitBuild/Debug /System/Library/Frameworks/QuickLook.framework/Versions/A/Resources/quicklookd.app/Contents/MacOS/qlmanage -p /Users/ap/Desktop/test.html

I was indeed doing something obviously wrong before.  Thanks for the help!

I was not able to reproduce the problem described in http://trac.webkit.org/changeset/41425 when running with my patch.  Is there anything else you&apos;d like me to test before re-requesting review?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336178</commentid>
    <comment_count>22</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-01-18 16:06:28 -0800</bug_when>
    <thetext>I just realized that Bugzilla wrapped my reply, and it wasn&apos;t clear that this was a single line, not too lines. Looks like you got it right.

The best thing to do would be for Brady to try running with your patch, since he knew how to reproduce the QL problem before. I don&apos;t know if he has the time for that though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345400</commentid>
    <comment_count>23</comment_count>
    <who name="Kristof Neirynck">k.neirynck</who>
    <bug_when>2011-02-04 00:44:33 -0800</bug_when>
    <thetext>Just a reminder that this is still a very important issue.
It is now being noticed by several developers.
Most now have to choose between PRG and reloading the page completely or just not redirecting which breaks the back button.

http://www.google.com/support/forum/p/Chrome/thread?tid=72bf3773f7e66d68&amp;hl=en
http://stackoverflow.com/questions/3004702/full-page-reload-on-post-redirect-get-ignoring-cache-control
http://stackoverflow.com/questions/3114962/post-redirect-get-in-webkit-causes-a-full-page-reload
http://stackoverflow.com/questions/4301405/webkit-image-reload-on-post-redirect-get/4896019</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>346680</commentid>
    <comment_count>24</comment_count>
      <attachid>78757</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-02-07 10:51:43 -0800</bug_when>
    <thetext>Comment on attachment 78757
possible patch

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

Nate, I would suggest also addressing a FIXME question in FrameLoader::loadPostRequest() in this patch. We know where this code is, it&apos;s in MainResourceLoader::willSendRequest(). The comment can probably be just removed - what do you think?

Can you also add a test for POST result, not just redirect-after-POST? Please confirm that tests pass in Firefox.

&gt; LayoutTests/http/tests/cache/post-redirect-get.php:15
&gt; +if ($_POST[&quot;submit&quot;] == &quot;redirect&quot;) {
&gt; +	header(&apos;Location: post-redirect-get.php&apos;);
&gt; +	exit();
&gt; +}

Maybe set status line explicitly, too?

&gt; LayoutTests/http/tests/cache/post-redirect-get.php:44
&gt; +function submitForm()
&gt; +{
&gt; +    if (window.eventSender) {
&gt; +        var target = document.getElementById(&quot;submit&quot;);
&gt; +        eventSender.mouseMoveTo(target.offsetLeft + 2, target.offsetTop + 2);
&gt; +        eventSender.mouseDown();
&gt; +        eventSender.mouseUp();
&gt; +    }
&gt; +}

Why not just form.submit()? This needs a comment explaining why EventSender is used.

&gt; LayoutTests/http/tests/cache/resources/post-redirect-get-image.php:14
&gt; +    $etag = &apos;&quot;&apos;.$filesize.&apos;-&apos;.$filemtime.&apos;&quot;&apos;;

Spaces are missing around dots.

&gt; LayoutTests/http/tests/cache/resources/post-redirect-get-image.php:16
&gt; +    $max_age = 12*31*24*60*60;//one year

Spaces.

&gt; LayoutTests/http/tests/cache/resources/post-redirect-get-image.php:17
&gt; +    $expires = gmdate(DATE_RFC1123, time()+$max_age);

Space. I personally like weird coding styles in HTML and JavaScript test sources, because this adds ad hoc testing for parsing code, but this is PHP, and we&apos;re not developing it here.

&gt; LayoutTests/http/tests/cache/resources/post-redirect-get-image.php:27
&gt; +    header(&apos;Etag: &apos;.$etag);

Space missing here.

&gt; LayoutTests/http/tests/cache/resources/post-redirect-get-cleanup.php:2
&gt; +unlink(&quot;image-loaded.tmp&quot;);

Where does this file reside? See http/tests/resources/reset-temp-file.php and related files for how we normally implement state in HTTP tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>346683</commentid>
    <comment_count>25</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-02-07 10:59:23 -0800</bug_when>
    <thetext>It&apos;s too bad that &lt;http://trac.webkit.org/changeset/43878&gt; didn&apos;t have a test. It shouldn&apos;t be too hard to make one!

We sorely lack test coverage in cache code, so a test for that would be of extreme value, even though this patch has little to do with that old change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>346779</commentid>
    <comment_count>26</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2011-02-07 14:00:22 -0800</bug_when>
    <thetext>Sorry it took so long for me to get back to this, but yes - applying this patch does reproduce the quick looks bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>346780</commentid>
    <comment_count>27</comment_count>
      <attachid>81516</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2011-02-07 14:08:24 -0800</bug_when>
    <thetext>Created attachment 81516
Test case for quicklooks bug

To run the Quick Looks test:

1 - Unzip these two address cards to the same directory.
2 - In a terminal on 10.6.6, run `qlmanage -p test1.vcf test2.vcf`
3 - Go back and forth in the Quick Looks window that comes up, notice the images change.
4 - Now run qlmanage against your local build with this patch - `DYLD_FRAMEWORK_PATH=&lt;path to webkit build&gt; qlmanage -p test1.vcf test2.vcf`
5 - Notice that going back and forth, the images do NOT change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>347110</commentid>
    <comment_count>28</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-02-07 22:30:33 -0800</bug_when>
    <thetext>It sounds like there is a bug in Quick Look.  Has a bug been filed against it?  Can we consider some kind of run-time option for this that browsers embedding WebKit can flip to enable proper cache behavior?

I don&apos;t see why the buggyness of Quick Look should hinder web browsers embedding WebKit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>347618</commentid>
    <comment_count>29</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2011-02-08 13:04:35 -0800</bug_when>
    <thetext>(In reply to comment #28)
&gt; It sounds like there is a bug in Quick Look.  Has a bug been filed against it?  

Future QuickLooks will work fine.  But we cannot break old QuickLooks.

&gt;Can we consider some kind of run-time option for this that browsers embedding WebKit can flip to enable proper cache behavior?

We can add a QuickLooks specific quirk to Settings and do a bundle check for it.

&gt; I don&apos;t see why the buggyness of Quick Look should hinder web browsers embedding WebKit.

The WebKit project has traditionally had a zero regression.  Even if the bug you&apos;re fixing is the &quot;greater good,&quot; you can&apos;t knowingly break something else in the process.

I&apos;d be happy to help Nate apply proper bundle check + quirks here, or I can get to it myself, but not until next week.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>347619</commentid>
    <comment_count>30</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2011-02-08 13:05:08 -0800</bug_when>
    <thetext>(In reply to comment #29)
&gt; The WebKit project has traditionally had a zero regression.

I meant &quot;zero regression policy.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>347632</commentid>
    <comment_count>31</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-02-08 13:19:54 -0800</bug_when>
    <thetext>(In reply to comment #30)
&gt; (In reply to comment #29)
&gt; &gt; The WebKit project has traditionally had a zero regression.
&gt; 
&gt; I meant &quot;zero regression policy.&quot;

I understand.  I&apos;m glad we don&apos;t need to make such a difficult decision.  A quirk sounds great to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>347656</commentid>
    <comment_count>32</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2011-02-08 13:52:37 -0800</bug_when>
    <thetext>(In reply to comment #31)
&gt; (In reply to comment #30)
&gt; &gt; (In reply to comment #29)
&gt; &gt; &gt; The WebKit project has traditionally had a zero regression.
&gt; &gt; 
&gt; &gt; I meant &quot;zero regression policy.&quot;
&gt; 
&gt; I understand.  I&apos;m glad we don&apos;t need to make such a difficult decision.  A quirk sounds great to me.

Quirks sound good to me too.  I&apos;ll do that next week, if not sooner.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355687</commentid>
    <comment_count>33</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2011-02-22 16:27:35 -0800</bug_when>
    <thetext>(In reply to comment #24)
&gt; (From update of attachment 78757 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=78757&amp;action=review
&gt; 
&gt; Nate, I would suggest also addressing a FIXME question in FrameLoader::loadPostRequest() in this patch. We know where this code is, it&apos;s in MainResourceLoader::willSendRequest(). The comment can probably be just removed - what do you think?
&gt; 
&gt; Can you also add a test for POST result, not just redirect-after-POST? Please confirm that tests pass in Firefox.

I&apos;ve addressed all comments except this last one.  I&apos;m not sure I fully understand, what are you looking for in the new test?  Submit a form that posts to the original url?

&gt; 
&gt; &gt; LayoutTests/http/tests/cache/post-redirect-get.php:15
&gt; &gt; +if ($_POST[&quot;submit&quot;] == &quot;redirect&quot;) {
&gt; &gt; +	header(&apos;Location: post-redirect-get.php&apos;);
&gt; &gt; +	exit();
&gt; &gt; +}
&gt; 
&gt; Maybe set status line explicitly, too?
&gt; 
&gt; &gt; LayoutTests/http/tests/cache/post-redirect-get.php:44
&gt; &gt; +function submitForm()
&gt; &gt; +{
&gt; &gt; +    if (window.eventSender) {
&gt; &gt; +        var target = document.getElementById(&quot;submit&quot;);
&gt; &gt; +        eventSender.mouseMoveTo(target.offsetLeft + 2, target.offsetTop + 2);
&gt; &gt; +        eventSender.mouseDown();
&gt; &gt; +        eventSender.mouseUp();
&gt; &gt; +    }
&gt; &gt; +}
&gt; 
&gt; Why not just form.submit()? This needs a comment explaining why EventSender is used.
&gt; 
&gt; &gt; LayoutTests/http/tests/cache/resources/post-redirect-get-image.php:14
&gt; &gt; +    $etag = &apos;&quot;&apos;.$filesize.&apos;-&apos;.$filemtime.&apos;&quot;&apos;;
&gt; 
&gt; Spaces are missing around dots.
&gt; 
&gt; &gt; LayoutTests/http/tests/cache/resources/post-redirect-get-image.php:16
&gt; &gt; +    $max_age = 12*31*24*60*60;//one year
&gt; 
&gt; Spaces.
&gt; 
&gt; &gt; LayoutTests/http/tests/cache/resources/post-redirect-get-image.php:17
&gt; &gt; +    $expires = gmdate(DATE_RFC1123, time()+$max_age);
&gt; 
&gt; Space. I personally like weird coding styles in HTML and JavaScript test sources, because this adds ad hoc testing for parsing code, but this is PHP, and we&apos;re not developing it here.
&gt; 
&gt; &gt; LayoutTests/http/tests/cache/resources/post-redirect-get-image.php:27
&gt; &gt; +    header(&apos;Etag: &apos;.$etag);
&gt; 
&gt; Space missing here.
&gt; 
&gt; &gt; LayoutTests/http/tests/cache/resources/post-redirect-get-cleanup.php:2
&gt; &gt; +unlink(&quot;image-loaded.tmp&quot;);
&gt; 
&gt; Where does this file reside? See http/tests/resources/reset-temp-file.php and related files for how we normally implement state in HTTP tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355697</commentid>
    <comment_count>34</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-02-22 16:36:41 -0800</bug_when>
    <thetext>&gt;&gt; Can you also add a test for POST result, not just redirect-after-POST? Please confirm that tests pass in Firefox.
&gt;
&gt; I&apos;ve addressed all comments except this last one.  I&apos;m not sure I fully understand, what are you looking for in the new test?  Submit a form that posts to the original url?

The included tests verifies what happens after a POST followed by redirect. What happens after a POST that just returns an HTML document without any redirection?

&gt; &lt;...&gt;

Please don&apos;t overquote. This makes it hard to follow bugs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>356565</commentid>
    <comment_count>35</comment_count>
      <attachid>83584</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2011-02-23 17:01:43 -0800</bug_when>
    <thetext>Created attachment 83584
patch #2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>356575</commentid>
    <comment_count>36</comment_count>
      <attachid>83584</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-02-23 17:08:55 -0800</bug_when>
    <thetext>Comment on attachment 83584
patch #2

No ChangeLogs?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>356576</commentid>
    <comment_count>37</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2011-02-23 17:10:17 -0800</bug_when>
    <thetext>(In reply to comment #36)
&gt; (From update of attachment 83584 [details])
&gt; No ChangeLogs?

Wow, sorry about that.  Will re-upload momentarily.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>356578</commentid>
    <comment_count>38</comment_count>
      <attachid>83587</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2011-02-23 17:14:30 -0800</bug_when>
    <thetext>Created attachment 83587
with ChangeLogs this time</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>356796</commentid>
    <comment_count>39</comment_count>
      <attachid>83587</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-02-24 02:37:52 -0800</bug_when>
    <thetext>Comment on attachment 83587
with ChangeLogs this time

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

&gt; Source/WebCore/page/Settings.h:372
&gt; +        void setUseQuickLookResourceCachingQuirks(bool flag) { m_useQuickLookResourceCachingQuirks = flag; }

Is this a chromium-only thing?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>357028</commentid>
    <comment_count>40</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2011-02-24 08:34:00 -0800</bug_when>
    <thetext>(In reply to comment #39)
&gt; (From update of attachment 83587 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=83587&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/page/Settings.h:372
&gt; &gt; +        void setUseQuickLookResourceCachingQuirks(bool flag) { m_useQuickLookResourceCachingQuirks = flag; }
&gt; 
&gt; Is this a chromium-only thing?

It&apos;s going to be used only for the QuickLook app.  I was assuming that that was in private Apple code and that I couldn&apos;t actually set it myself, but if I&apos;m wrong, let me know. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>367122</commentid>
    <comment_count>41</comment_count>
      <attachid>83587</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2011-03-14 12:21:16 -0700</bug_when>
    <thetext>Comment on attachment 83587
with ChangeLogs this time

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

&gt;&gt;&gt; Source/WebCore/page/Settings.h:372
&gt;&gt;&gt; +        void setUseQuickLookResourceCachingQuirks(bool flag) { m_useQuickLookResourceCachingQuirks = flag; }
&gt;&gt; 
&gt;&gt; Is this a chromium-only thing?
&gt; 
&gt; It&apos;s going to be used only for the QuickLook app.  I was assuming that that was in private Apple code and that I couldn&apos;t actually set it myself, but if I&apos;m wrong, let me know. :)

Where&apos;s the WebKit/mac code that does the bundle check and actually sets the flag?

Without that code, this patch breaks things in the way previously discussed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>367123</commentid>
    <comment_count>42</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2011-03-14 12:22:06 -0700</bug_when>
    <thetext>(In reply to comment #41)
&gt; (From update of attachment 83587 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=83587&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebCore/page/Settings.h:372
&gt; &gt;&gt;&gt; +        void setUseQuickLookResourceCachingQuirks(bool flag) { m_useQuickLookResourceCachingQuirks = flag; }
&gt; &gt;&gt; 
&gt; &gt;&gt; Is this a chromium-only thing?
&gt; &gt; 
&gt; &gt; It&apos;s going to be used only for the QuickLook app.  I was assuming that that was in private Apple code and that I couldn&apos;t actually set it myself, but if I&apos;m wrong, let me know. :)
&gt; 
&gt; Where&apos;s the WebKit/mac code that does the bundle check and actually sets the flag?
&gt; 
&gt; Without that code, this patch breaks things in the way previously discussed.

I worded that funny, sorry - I meant to answer your question and say &quot;no, nothing private about it - it can and should be done in WebKit/mac&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>369335</commentid>
    <comment_count>43</comment_count>
      <attachid>86102</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2011-03-17 15:09:43 -0700</bug_when>
    <thetext>Created attachment 86102
Set the flag when QuickLook is loaded

Verified that this patch passes both the new layout tests and Brady&apos;s quicklook repro steps.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>371015</commentid>
    <comment_count>44</comment_count>
      <attachid>86102</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2011-03-21 16:47:02 -0700</bug_when>
    <thetext>Comment on attachment 86102
Set the flag when QuickLook is loaded

We&apos;ll just have to keep a close eye out for problems this might cause.  I know this is a big performance problem, but am dubious that the Quicklook bug was the only correctness problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>371153</commentid>
    <comment_count>45</comment_count>
      <attachid>86102</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-03-21 19:33:02 -0700</bug_when>
    <thetext>Comment on attachment 86102
Set the flag when QuickLook is loaded

Clearing flags on attachment: 86102

Committed r81635: &lt;http://trac.webkit.org/changeset/81635&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>371154</commentid>
    <comment_count>46</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-03-21 19:33:07 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>371157</commentid>
    <comment_count>47</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-03-21 19:39:49 -0700</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 86102:

http/tests/media/video-cancel-load.html bug 56797 (authors: eric.carlson@apple.com and jamesr@chromium.org)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>371360</commentid>
    <comment_count>48</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-03-22 06:39:11 -0700</bug_when>
    <thetext>The new tests are failing on Windows: http://build.webkit.org/results/Windows%207%20Release%20(Tests)/r81635%20(10626)/results.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>371369</commentid>
    <comment_count>49</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-03-22 06:57:33 -0700</bug_when>
    <thetext>http://php.net/manual/en/function.sys-get-temp-dir.php says that sys_get_temp_dir is only available in PHP 5.2.1 and newer. We use PHP 4 on Windows. The tests will have to be rewritten to work with PHP 4.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>371373</commentid>
    <comment_count>50</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-03-22 07:08:32 -0700</bug_when>
    <thetext>I fixed the tests in r81665.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>59645</attachid>
            <date>2010-06-24 05:20:14 -0700</date>
            <delta_ts>2010-07-02 15:38:57 -0700</delta_ts>
            <desc>Minimal testcase (requires apache server with php)</desc>
            <filename>prg.zip</filename>
            <type>application/octet-stream</type>
            <size>2837</size>
            <attacher name="Kristof Neirynck">k.neirynck</attacher>
            
              <data encoding="base64">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
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>60413</attachid>
            <date>2010-07-02 15:38:57 -0700</date>
            <delta_ts>2010-07-02 15:38:57 -0700</delta_ts>
            <desc>test case</desc>
            <filename>prg.zip</filename>
            <type>application/zip</type>
            <size>4471</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">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
aC5MUEsFBgAAAAAKAAoA2wIAAIYOAAAAAA==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78757</attachid>
            <date>2011-01-12 16:52:59 -0800</date>
            <delta_ts>2011-02-23 17:01:43 -0800</delta_ts>
            <desc>possible patch</desc>
            <filename>cache.txt</filename>
            <type>text/plain</type>
            <size>7096</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUvcG9zdC1yZWRpcmVjdC1nZXQucGhw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUvcG9zdC1yZWRpcmVj
dC1nZXQucGhwCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS9w
b3N0LXJlZGlyZWN0LWdldC5waHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTggQEAKKzw/cGhw
CisvLyBUaGlzIHRlc3QgbG9hZHMgYW4gdW5jYWNoZWFibGUgbWFpbiByZXNvdXJjZSBhbmQgYSBj
YWNoZWFibGUgaW1hZ2Ugc3VicmVzb3VyY2UuCisvLyBXZSB0aGVuIHRyaWdnZXIgYSBQT1NUIHJl
cXVlc3QsIHdoaWNoIHJlZGlyZWN0cyBhcyBhIEdFVCBiYWNrIHRvIHRoaXMgcGFnZS4KKy8vIE9u
IHRoaXMgR0VUIHJlcXVlc3QsIHRoZSBpbWFnZSBzaG91bGQgYmUgbG9hZGVkIGZyb20gdGhlIGNh
Y2hlIGFuZCBubyBIVFRQCisvLyByZXF1ZXN0IHNob3VsZCBiZSBzZW50LiBUaGUgaW1hZ2UgcmVz
b3VyY2Ugd2lsbCByZXR1cm4gNDA0IGlmIGl0IHJlY2VpdmVzCisvLyBhIHNlY29uZCByZXF1ZXN0
LCB3aGljaCB3aWxsIGNhdXNlIHVzIHRvIEZBSUwuCisvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTM4NjkwCitoZWFkZXIoJ0NhY2hlLUNvbnRyb2w6IG5vLWNh
Y2hlLCBuby1zdG9yZSwgbXVzdC1yZXZhbGlkYXRlLCBtYXgtYWdlPTAnKTsKK2hlYWRlcignUHJh
Z21hOiBuby1jYWNoZScpOworaGVhZGVyKCdFeHBpcmVzOiAnIC4gZ21kYXRlKERBVEVfUkZDMTEy
MywgdGltZSgpLTEpKTsKKworaWYgKCRfUE9TVFsic3VibWl0Il0gPT0gInJlZGlyZWN0Iikgewor
CWhlYWRlcignTG9jYXRpb246IHBvc3QtcmVkaXJlY3QtZ2V0LnBocCcpOworCWV4aXQoKTsKK30K
Kz8+Cis8aHRtbD4KKzxib2R5PgorPGRpdiBpZD0icmVzdWx0Ij48L2Rpdj4KKzxzY3JpcHQ+Citp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUo
KTsKK30KKyAgICAKK2Z1bmN0aW9uIGxvZ0FuZEZpbmlzaChtZXNzYWdlKQoreworICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVU
ZXh0Tm9kZShtZXNzYWdlKSk7CisgICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdDsKKyAg
ICB4aHIub3BlbigiR0VUIiwgInJlc291cmNlcy9wb3N0LXJlZGlyZWN0LWdldC1jbGVhbnVwLnBo
cCIsIGZhbHNlKTsKKyAgICB4aHIuc2VuZChudWxsKTsKKyAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7
Cit9CisKK2Z1bmN0aW9uIHN1Ym1pdEZvcm0oKQoreworICAgIGlmICh3aW5kb3cuZXZlbnRTZW5k
ZXIpIHsKKyAgICAgICAgdmFyIHRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdWJt
aXQiKTsKKyAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8odGFyZ2V0Lm9mZnNldExlZnQg
KyAyLCB0YXJnZXQub2Zmc2V0VG9wICsgMik7CisgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93
bigpOworICAgICAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CisgICAgfQorfQorPC9zY3JpcHQ+
Cis8P3BocAorY2xlYXJzdGF0Y2FjaGUoKTsKK2lmIChmaWxlX2V4aXN0cygicmVzb3VyY2VzL2lt
YWdlLWxvYWRlZC50bXAiKSkKKyAgICBlY2hvICI8aW1nIHNyYz1cInJlc291cmNlcy9wb3N0LXJl
ZGlyZWN0LWdldC1pbWFnZS5waHBcIiBvbmxvYWQ9XCJsb2dBbmRGaW5pc2goJ1BBU1MnKTtcIiBv
bmVycm9yPVwibG9nQW5kRmluaXNoKCdGQUlMJyk7XCI+PC9pbWc+IjsKK2Vsc2UgeworICAgIGVj
aG8gIjxmb3JtIGFjdGlvbj0ncG9zdC1yZWRpcmVjdC1nZXQucGhwJyBtZXRob2Q9J3Bvc3QnPiI7
CisgICAgZWNobyAiPGlucHV0IHR5cGU9J3N1Ym1pdCcgaWQ9J3N1Ym1pdCcgbmFtZT0nc3VibWl0
JyB2YWx1ZT0ncmVkaXJlY3QnPiI7CisgICAgZWNobyAiPC9mb3JtPiI7CisgICAgZWNobyAiPGlt
ZyBzcmM9J3Jlc291cmNlcy9wb3N0LXJlZGlyZWN0LWdldC1pbWFnZS5waHAnIG9ubG9hZD0nc3Vi
bWl0Rm9ybSgpOycgb25lcnJvcj1cImxvZ0FuZEZpbmlzaCgnRkFJTCcpO1wiPjwvaW1nPiI7Cit9
IAorPz4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvY2Fj
aGUvcmVzb3VyY2VzL3Bvc3QtcmVkaXJlY3QtZ2V0LWltYWdlLnBocAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL3Jlc291cmNlcy9wb3N0LXJlZGlyZWN0LWdldC1p
bWFnZS5waHAJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL3Jl
c291cmNlcy9wb3N0LXJlZGlyZWN0LWdldC1pbWFnZS5waHAJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMzEgQEAKKzw/cGhwCitjbGVhcnN0YXRjYWNoZSgpOworaWYgKGZpbGVfZXhpc3RzKCJpbWFn
ZS1sb2FkZWQudG1wIikpIHsKKwloZWFkZXIoJ0hUVFAvMS4xIDQwNCBOb3QgRm91bmQnKTsKKwll
eGl0KCk7Cit9IGVsc2UgeworICAgICR0bXBGaWxlID0gZm9wZW4oImltYWdlLWxvYWRlZC50bXAi
LCAndycpOworICAgIGZjbG9zZSgkdG1wRmlsZSk7CisgICAgCisgICAgJGZpbGVuYW1lID0gJ2Nv
bXBhc3Mtbm8tY2FjaGUuanBnJzsKKyAgICAkZmlsZW10aW1lID0gZmlsZW10aW1lKCRmaWxlbmFt
ZSk7CisgICAgJGZpbGVzaXplID0gZmlsZXNpemUoJGZpbGVuYW1lKTsKKworICAgICRldGFnID0g
JyInLiRmaWxlc2l6ZS4nLScuJGZpbGVtdGltZS4nIic7CisgICAgJGxhc3RfbW9kaWZpZWQgPSBn
bWRhdGUoREFURV9SRkMxMTIzLCAkZmlsZW10aW1lKTsKKyAgICAkbWF4X2FnZSA9IDEyKjMxKjI0
KjYwKjYwOy8vb25lIHllYXIKKyAgICAkZXhwaXJlcyA9IGdtZGF0ZShEQVRFX1JGQzExMjMsIHRp
bWUoKSskbWF4X2FnZSk7CisKKyAgICAkaGFuZGxlID0gZm9wZW4oJGZpbGVuYW1lLCAncmInKTsK
KyAgICAkY29udGVudHMgPSBmcmVhZCgkaGFuZGxlLCAkZmlsZXNpemUpOworICAgIGZjbG9zZSgk
aGFuZGxlKTsKKworICAgIGhlYWRlcignQ2FjaGUtQ29udHJvbDogcHVibGljLCBtYXgtYWdlPScg
LiAkbWF4X2FnZSk7CisgICAgaGVhZGVyKCdFeHBpcmVzOiAnIC4gJGV4cGlyZXMpOworICAgIGhl
YWRlcignQ29udGVudC1UeXBlOiBpbWFnZS9wbmcnKTsKKyAgICBoZWFkZXIoJ0NvbnRlbnQtTGVu
Z3RoOiAnIC4gJGZpbGVzaXplKTsKKyAgICBoZWFkZXIoJ0V0YWc6ICcuJGV0YWcpOworICAgIGhl
YWRlcignTGFzdC1Nb2RpZmllZDogJyAuICRsYXN0X21vZGlmaWVkKTsKKyAgICBlY2hvICRjb250
ZW50czsKKyAgICBleGl0KCk7Cit9CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hl
L3Jlc291cmNlcy9wb3N0LXJlZGlyZWN0LWdldC1jbGVhbnVwLnBocAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL3Jlc291cmNlcy9wb3N0LXJlZGlyZWN0LWdldC1j
bGVhbnVwLnBocAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUv
cmVzb3VyY2VzL3Bvc3QtcmVkaXJlY3QtZ2V0LWNsZWFudXAucGhwCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDMgQEAKKzw/cGhwCit1bmxpbmsoImltYWdlLWxvYWRlZC50bXAiKTsKKz8+CkluZGV4
OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL3Bvc3QtcmVkaXJlY3QtZ2V0LWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL3Bvc3QtcmVk
aXJlY3QtZ2V0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvY2FjaGUvcG9zdC1yZWRpcmVjdC1nZXQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDIgQEAKK1BBU1MKKwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNzU2NTUpCisrKyBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxMS0w
MS0xMiAgTmF0ZSBDaGFwaW4gIDxqYXBoZXRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3QgZm9yIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zODY5MC4KKworICAgICAgICAqIGh0dHAvdGVzdHMv
Y2FjaGUvcG9zdC1yZWRpcmVjdC1nZXQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBo
dHRwL3Rlc3RzL2NhY2hlL3Bvc3QtcmVkaXJlY3QtZ2V0LnBocDogQWRkZWQuCisgICAgICAgICog
aHR0cC90ZXN0cy9jYWNoZS9yZXNvdXJjZXMvcG9zdC1yZWRpcmVjdC1nZXQtY2xlYW51cC5waHA6
IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvY2FjaGUvcmVzb3VyY2VzL3Bvc3QtcmVkaXJl
Y3QtZ2V0LWltYWdlLnBocDogQWRkZWQuCisKIDIwMTEtMDEtMTEgIE1hdHRoZXcgRGVsYW5leSAg
PG1kZWxhbmV5QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIu
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiA3NTY1NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDExLTAxLTEyICBOYXRlIENo
YXBpbiAgPGphcGhldEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgRG8gbm90IGNoZWNrIHRoZSBEb2N1bWVudExvYWRlcidzIHJl
cXVlc3QgY2FjaGUgcG9saWN5CisgICAgICAgIGluIGRldGVybWluaW5nIHdoZXRoZXIgd2Ugc2hv
dWxkIGZvcmNlIHJldmFsaWRhdGlvbiBvZiBhIGNhY2hlZAorICAgICAgICBzdWJyZXNvdXJjZS4g
SWYgdGhlIG1haW4gcmVzb3VyY2UgcmVjZWl2ZWQgaGVhZGVycyB0ZWxsaW5nIGl0IG5vdAorICAg
ICAgICB0byBjYWNoZSwgdGhhdCBwb2xpY3kgd2lsbCBiZSBwcm9wYWdhdGVkIHRvIHN1YnJlc291
cmNlcy4KKworICAgICAgICBUaGlzIGVmZmVjdGl2ZWx5IGEgcmV2ZXJ0IG9mIGh0dHA6Ly90cmFj
LndlYmtpdC5vcmcvY2hhbmdlc2V0LzQzODc4CisgICAgICAgIGFuZCBodHRwOi8vdHJhYy53ZWJr
aXQub3JnL2NoYW5nZXNldC80MTQyNS4KKworICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL2NhY2hl
L3Bvc3QtcmVkaXJlY3QtZ2V0LnBocAorCisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpzdWJyZXNvdXJjZUNhY2hlUG9saWN5
KToKKwogMjAxMS0wMS0xMiAgQ2hyaXMgTWFycmluICA8Y21hcnJpbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgVW5yZXZpZXdlZC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cAkocmV2aXNpb24gNzU1MDkpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjk1LDE4ICsyMjk1LDEwIEBACiAgICAgICAgICAgICBy
ZXR1cm4gcGFyZW50Q2FjaGVQb2xpY3k7CiAgICAgfQogCi0gICAgLy8gRklYTUU6IFBPU1QgZG9j
dW1lbnRzIGFyZSBhbHdheXMgUmVsb2FkcywgYnV0IHRoZWlyIHN1YnJlc291cmNlcyBzaG91bGQg
c3RpbGwgYmUgUmV2YWxpZGF0ZS4KLSAgICAvLyBJZiB3ZSBicmluZyB0aGUgQ2FjaGVQb2xpY3ku
aCBhbmQgUmVzb3VyY2VSZXF1ZXN0IGNhY2hlIHBvbGljeSBlbnVtcyBpbiBzeW5jIHdpdGggZWFj
aCBvdGhlciBhbmQKLSAgICAvLyByZW1lbWJlciAiUmV2YWxpZGF0ZSIgaW4gUmVzb3VyY2VSZXF1
ZXN0cywgd2UgY2FuIHJlbW92ZSB0aGlzICJQT1NUIiBjaGVjayBhbmQgcmV0dXJuIGVpdGhlciAi
UmVsb2FkIiAKLSAgICAvLyBvciAiUmV2YWxpZGF0ZSIgaWYgdGhlIERvY3VtZW50TG9hZGVyIHdh
cyByZXF1ZXN0ZWQgd2l0aCBlaXRoZXIuCi0gICAgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0KGRvY3VtZW50TG9hZGVyKCktPnJlcXVlc3QoKSk7Ci0gICAgaWYgKHJlcXVlc3QuY2FjaGVQ
b2xpY3koKSA9PSBSZWxvYWRJZ25vcmluZ0NhY2hlRGF0YSAmJiAhZXF1YWxJZ25vcmluZ0Nhc2Uo
cmVxdWVzdC5odHRwTWV0aG9kKCksICJwb3N0IikpCi0gICAgICAgIHJldHVybiBDYWNoZVBvbGlj
eVJldmFsaWRhdGU7Ci0KICAgICBpZiAobV9sb2FkVHlwZSA9PSBGcmFtZUxvYWRUeXBlUmVsb2Fk
KQogICAgICAgICByZXR1cm4gQ2FjaGVQb2xpY3lSZXZhbGlkYXRlOwogCi0gICAgaWYgKHJlcXVl
c3QuY2FjaGVQb2xpY3koKSA9PSBSZXR1cm5DYWNoZURhdGFFbHNlTG9hZCkKKyAgICBpZiAoZG9j
dW1lbnRMb2FkZXIoKS0+cmVxdWVzdCgpLmNhY2hlUG9saWN5KCkgPT0gUmV0dXJuQ2FjaGVEYXRh
RWxzZUxvYWQpCiAgICAgICAgIHJldHVybiBDYWNoZVBvbGljeUhpc3RvcnlCdWZmZXI7CiAKICAg
ICByZXR1cm4gQ2FjaGVQb2xpY3lWZXJpZnk7Cg==
</data>
<flag name="review"
          id="70120"
          type_id="1"
          status="-"
          setter="beidson"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>81516</attachid>
            <date>2011-02-07 14:08:24 -0800</date>
            <delta_ts>2011-02-07 14:08:24 -0800</delta_ts>
            <desc>Test case for quicklooks bug</desc>
            <filename>vcftest.zip</filename>
            <type>application/zip</type>
            <size>5452</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">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
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>83584</attachid>
            <date>2011-02-23 17:01:43 -0800</date>
            <delta_ts>2011-02-23 17:14:30 -0800</delta_ts>
            <desc>patch #2</desc>
            <filename>redirect-cache2.txt</filename>
            <type>text/plain</type>
            <size>10533</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgJKHJldmlzaW9uIDc5MzI4KQorKysgU291cmNlL1dl
YkNvcmUvcGFnZS9TZXR0aW5ncy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNjgsNiArMzY4LDkgQEAK
IAogICAgICAgICB2b2lkIHNldENyb3NzT3JpZ2luQ2hlY2tJbkdldE1hdGNoZWRDU1NSdWxlc0Rp
c2FibGVkKGJvb2wgZmxhZykgeyBtX2Nyb3NzT3JpZ2luQ2hlY2tJbkdldE1hdGNoZWRDU1NSdWxl
c0Rpc2FibGVkID0gZmxhZzsgfQogICAgICAgICBib29sIGNyb3NzT3JpZ2luQ2hlY2tJbkdldE1h
dGNoZWRDU1NSdWxlc0Rpc2FibGVkKCkgY29uc3QgeyByZXR1cm4gbV9jcm9zc09yaWdpbkNoZWNr
SW5HZXRNYXRjaGVkQ1NTUnVsZXNEaXNhYmxlZDsgfQorICAgICAgICAKKyAgICAgICAgdm9pZCBz
ZXRVc2VRdWlja0xvb2tSZXNvdXJjZUNhY2hpbmdRdWlya3MoYm9vbCBmbGFnKSB7IG1fdXNlUXVp
Y2tMb29rUmVzb3VyY2VDYWNoaW5nUXVpcmtzID0gZmxhZzsgfQorICAgICAgICBib29sIHVzZVF1
aWNrTG9va1Jlc291cmNlQ2FjaGluZ1F1aXJrcygpIGNvbnN0IHsgcmV0dXJuIG1fdXNlUXVpY2tM
b29rUmVzb3VyY2VDYWNoaW5nUXVpcmtzOyB9CiAKICAgICBwcml2YXRlOgogICAgICAgICBQYWdl
KiBtX3BhZ2U7CkBAIC00NjYsNiArNDY5LDcgQEAKICAgICAgICAgYm9vbCBtX3VzZVByZUhUTUw1
UGFyc2VyUXVpcmtzOiAxOwogICAgICAgICBib29sIG1faHlwZXJsaW5rQXVkaXRpbmdFbmFibGVk
IDogMTsKICAgICAgICAgYm9vbCBtX2Nyb3NzT3JpZ2luQ2hlY2tJbkdldE1hdGNoZWRDU1NSdWxl
c0Rpc2FibGVkIDogMTsKKyAgICAgICAgYm9vbCBtX3VzZVF1aWNrTG9va1Jlc291cmNlQ2FjaGlu
Z1F1aXJrcyA6IDE7CiAKICNpZiBVU0UoU0FGQVJJX1RIRU1FKQogICAgICAgICBzdGF0aWMgYm9v
bCBnU2hvdWxkUGFpbnROYXRpdmVDb250cm9sczsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2V0dGluZ3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3Mu
Y3BwCShyZXZpc2lvbiA3OTMyOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNzMsNiArMTczLDcgQEAKICAgICAsIG1fdXNlUHJlSFRNTDVQ
YXJzZXJRdWlya3MoZmFsc2UpCiAgICAgLCBtX2h5cGVybGlua0F1ZGl0aW5nRW5hYmxlZChmYWxz
ZSkKICAgICAsIG1fY3Jvc3NPcmlnaW5DaGVja0luR2V0TWF0Y2hlZENTU1J1bGVzRGlzYWJsZWQo
ZmFsc2UpCisgICAgLCBtX3VzZVF1aWNrTG9va1Jlc291cmNlQ2FjaGluZ1F1aXJrcyhmYWxzZSkK
IHsKICAgICAvLyBBIEZyYW1lIG1heSBub3QgaGF2ZSBiZWVuIGNyZWF0ZWQgeWV0LCBzbyB3ZSBp
bml0aWFsaXplIHRoZSBBdG9taWNTdHJpbmcgCiAgICAgLy8gaGFzaCBiZWZvcmUgdHJ5aW5nIHRv
IHVzZSBpdC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkocmV2aXNp
b24gNzkzMjgpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMzI3LDEyICsyMzI3LDkgQEAKICAgICAgICAgICAgIHJldHVybiBwYXJl
bnRDYWNoZVBvbGljeTsKICAgICB9CiAKLSAgICAvLyBGSVhNRTogUE9TVCBkb2N1bWVudHMgYXJl
IGFsd2F5cyBSZWxvYWRzLCBidXQgdGhlaXIgc3VicmVzb3VyY2VzIHNob3VsZCBzdGlsbCBiZSBS
ZXZhbGlkYXRlLgotICAgIC8vIElmIHdlIGJyaW5nIHRoZSBDYWNoZVBvbGljeS5oIGFuZCBSZXNv
dXJjZVJlcXVlc3QgY2FjaGUgcG9saWN5IGVudW1zIGluIHN5bmMgd2l0aCBlYWNoIG90aGVyIGFu
ZAotICAgIC8vIHJlbWVtYmVyICJSZXZhbGlkYXRlIiBpbiBSZXNvdXJjZVJlcXVlc3RzLCB3ZSBj
YW4gcmVtb3ZlIHRoaXMgIlBPU1QiIGNoZWNrIGFuZCByZXR1cm4gZWl0aGVyICJSZWxvYWQiIAot
ICAgIC8vIG9yICJSZXZhbGlkYXRlIiBpZiB0aGUgRG9jdW1lbnRMb2FkZXIgd2FzIHJlcXVlc3Rl
ZCB3aXRoIGVpdGhlci4KICAgICBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QoZG9jdW1l
bnRMb2FkZXIoKS0+cmVxdWVzdCgpKTsKLSAgICBpZiAocmVxdWVzdC5jYWNoZVBvbGljeSgpID09
IFJlbG9hZElnbm9yaW5nQ2FjaGVEYXRhICYmICFlcXVhbElnbm9yaW5nQ2FzZShyZXF1ZXN0Lmh0
dHBNZXRob2QoKSwgInBvc3QiKSkKKyAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBtX2ZyYW1lLT5z
ZXR0aW5ncygpOworICAgIGlmIChzZXR0aW5ncyAmJiBzZXR0aW5ncy0+dXNlUXVpY2tMb29rUmVz
b3VyY2VDYWNoaW5nUXVpcmtzKCkgJiYgcmVxdWVzdC5jYWNoZVBvbGljeSgpID09IFJlbG9hZEln
bm9yaW5nQ2FjaGVEYXRhICYmICFlcXVhbElnbm9yaW5nQ2FzZShyZXF1ZXN0Lmh0dHBNZXRob2Qo
KSwgInBvc3QiKSkKICAgICAgICAgcmV0dXJuIENhY2hlUG9saWN5UmV2YWxpZGF0ZTsKIAogICAg
IGlmIChtX2xvYWRUeXBlID09IEZyYW1lTG9hZFR5cGVSZWxvYWQpCkBAIC0yNzI1LDEyICsyNzIy
LDYgQEAKIHsKICAgICBSZWZQdHI8Rm9ybVN0YXRlPiBmb3JtU3RhdGUgPSBwcnBGb3JtU3RhdGU7
CiAKLSAgICAvLyBXaGVuIHBvc3RpbmcsIHVzZSB0aGUgTlNVUkxSZXF1ZXN0UmVsb2FkSWdub3Jp
bmdDYWNoZURhdGEgbG9hZCBmbGFnLgotICAgIC8vIFRoaXMgcHJldmVudHMgYSBwb3RlbnRpYWwg
YnVnIHdoaWNoIG1heSBjYXVzZSBhIHBhZ2Ugd2l0aCBhIGZvcm0gdGhhdCB1c2VzIGl0c2VsZgot
ICAgIC8vIGFzIGFuIGFjdGlvbiB0byBiZSByZXR1cm5lZCBmcm9tIHRoZSBjYWNoZSB3aXRob3V0
IHN1Ym1pdHRpbmcuCi0KLSAgICAvLyBGSVhNRTogV2hlcmUncyB0aGUgY29kZSB0aGF0IGltcGxl
bWVudHMgd2hhdCB0aGUgY29tbWVudCBhYm92ZSBzYXlzPwotCiAgICAgLy8gUHJldmlvdXNseSB3
aGVuIHRoaXMgbWV0aG9kIHdhcyByZWFjaGVkLCB0aGUgb3JpZ2luYWwgRnJhbWVMb2FkUmVxdWVz
dCBoYWQgYmVlbiBkZWNvbnN0cnVjdGVkIHRvIGJ1aWxkIGEgCiAgICAgLy8gYnVuY2ggb2YgcGFy
YW1ldGVycyB0aGF0IHdvdWxkIGNvbWUgaW4gaGVyZSBhbmQgdGhlbiBiZSBidWlsdCBiYWNrIHVw
IHRvIGEgUmVzb3VyY2VSZXF1ZXN0LiAgSW4gY2FzZQogICAgIC8vIGFueSBjYWxsZXIgZGVwZW5k
cyBvbiB0aGUgaW1tdXRhYmlsaXR5IG9mIHRoZSBvcmlnaW5hbCBSZXNvdXJjZVJlcXVlc3QsIEkn
bSByZWJ1aWxkaW5nIGEgUmVzb3VyY2VSZXF1ZXN0CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2NhY2hlL3Bvc3QtcmVkaXJlY3QtZ2V0LnBocAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2NhY2hlL3Bvc3QtcmVkaXJlY3QtZ2V0LnBocAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUvcG9zdC1yZWRpcmVjdC1nZXQucGhwCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDU4IEBACis8P3BocAorLy8gVGhpcyB0ZXN0IGxvYWRzIGFuIHVu
Y2FjaGVhYmxlIG1haW4gcmVzb3VyY2UgYW5kIGEgY2FjaGVhYmxlIGltYWdlIHN1YnJlc291cmNl
LgorLy8gV2UgdGhlbiB0cmlnZ2VyIGEgUE9TVCByZXF1ZXN0LCB3aGljaCByZWRpcmVjdHMgYXMg
YSBHRVQgYmFjayB0byB0aGlzIHBhZ2UuCisvLyBPbiB0aGlzIEdFVCByZXF1ZXN0LCB0aGUgaW1h
Z2Ugc2hvdWxkIGJlIGxvYWRlZCBmcm9tIHRoZSBjYWNoZSBhbmQgbm8gSFRUUAorLy8gcmVxdWVz
dCBzaG91bGQgYmUgc2VudC4gVGhlIGltYWdlIHJlc291cmNlIHdpbGwgcmV0dXJuIDQwNCBpZiBp
dCByZWNlaXZlcworLy8gYSBzZWNvbmQgcmVxdWVzdCwgd2hpY2ggd2lsbCBjYXVzZSB1cyB0byBG
QUlMLgorLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zODY5
MAoraGVhZGVyKCdDYWNoZS1Db250cm9sOiBuby1jYWNoZSwgbm8tc3RvcmUsIG11c3QtcmV2YWxp
ZGF0ZSwgbWF4LWFnZT0wJyk7CitoZWFkZXIoJ1ByYWdtYTogbm8tY2FjaGUnKTsKK2hlYWRlcign
RXhwaXJlczogJyAuIGdtZGF0ZShEQVRFX1JGQzExMjMsIHRpbWUoKS0xKSk7CisKK2lmICgkX1BP
U1RbInN1Ym1pdCJdID09ICJyZWRpcmVjdCIpIHsKKyAgICBoZWFkZXIoJ0hUVFAvMS4xIDMwMiBG
b3VuZCcpOworICAgIGhlYWRlcignTG9jYXRpb246IHBvc3QtcmVkaXJlY3QtZ2V0LnBocD9maW5p
c2g9dHJ1ZScpOworICAgIGV4aXQoKTsKK30KKz8+Cis8aHRtbD4KKzxib2R5PgorPGRpdiBpZD0i
cmVzdWx0Ij48L2Rpdj4KKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRl
c3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KKyAgICAKK2Z1bmN0aW9uIGxvZ0FuZEZp
bmlzaChtZXNzYWdlKQoreworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5h
cHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtZXNzYWdlKSk7CisgICAgdmFyIHho
ciA9IG5ldyBYTUxIdHRwUmVxdWVzdDsKKyAgICB4aHIub3BlbigiR0VUIiwgIi4uL3Jlc291cmNl
cy9yZXNldC10ZW1wLWZpbGUucGhwP2ZpbGVuYW1lPXBvc3QudG1wIiwgZmFsc2UpOworICAgIHho
ci5zZW5kKG51bGwpOworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKzwvc2NyaXB0PgorPD9w
aHAKK2NsZWFyc3RhdGNhY2hlKCk7CitpZiAoJF9HRVRbImZpbmlzaCJdID09ICJ0cnVlIikgewor
ICAgIC8vIFRoZSBpbml0aWFsIGxvYWQgb2YgdGhlIGltYWdlIG1pZ2h0IGhhdmUgYmVlbiBkb25l
IGZyb20gdGhlIGNhY2hlLiBJbiB0aGF0IGNhc2UsIHRvdWNoIHRoZQorICAgIC8vIHN0YXRlIGZp
bGUgdG8gaW5kaWNhdGUgYSBsb2FkIGhhcyBhbHJlYWR5IG9jY3VycmVkLgorICAgIGlmICghZmls
ZV9leGlzdHMoc3lzX2dldF90ZW1wX2RpcigpIC4gIi9wb3N0LnRtcCIpKSB7CisgICAgICAgIGVj
aG8gIjxzY3JpcHQ+IjsKKyAgICAgICAgZWNobyAieGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0OyI7
CisgICAgICAgIGVjaG8gInhoci5vcGVuKCdHRVQnLCAnLi4vcmVzb3VyY2VzL3RvdWNoLXRlbXAt
ZmlsZS5waHA/ZmlsZW5hbWU9cG9zdC50bXAnLCBmYWxzZSk7IjsKKyAgICAgICAgZWNobyAieGhy
LnNlbmQobnVsbCk7IjsKKyAgICAgICAgZWNobyAiPC9zY3JpcHQ+IjsKKyAgICB9CisgICAgZWNo
byAiPGltZyBzcmM9J3Jlc291cmNlcy9wb3N0LWltYWdlLXRvLXZlcmlmeS5waHAnIG9ubG9hZD1c
ImxvZ0FuZEZpbmlzaCgnUEFTUycpO1wiIG9uZXJyb3I9XCJsb2dBbmRGaW5pc2goJ0ZBSUwnKTtc
Ij48L2ltZz4iOworfSBlbHNlIHsKKyAgICBlY2hvICI8Zm9ybSBhY3Rpb249J3Bvc3QtcmVkaXJl
Y3QtZ2V0LnBocCcgbWV0aG9kPSdwb3N0Jz4iOworICAgIGVjaG8gIjxpbnB1dCB0eXBlPSdzdWJt
aXQnIGlkPSdzdWJtaXQnIG5hbWU9J3N1Ym1pdCcgdmFsdWU9J3JlZGlyZWN0Jz4iOworICAgIGVj
aG8gIjwvZm9ybT4iOworICAgIGVjaG8gIjxpbWcgc3JjPSdyZXNvdXJjZXMvcG9zdC1pbWFnZS10
by12ZXJpZnkucGhwJyBvbmxvYWQ9XCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3VibWl0Jyku
Y2xpY2soKTtcIiBvbmVycm9yPVwibG9nQW5kRmluaXNoKCdGQUlMIG9uIGluaXRpYWwgbG9hZCcp
O1wiPjwvaW1nPiI7Cit9IAorPz4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvY2FjaGUvcG9zdC13aXRoLWNhY2hlZC1zdWJyZXNvdXJjZXMtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUvcG9zdC13aXRo
LWNhY2hlZC1zdWJyZXNvdXJjZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS9wb3N0LXdpdGgtY2FjaGVkLXN1YnJlc291cmNlcy1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMiBAQAorUEFTUworCkluZGV4OiBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL3Jlc291cmNlcy9wb3N0LWltYWdlLXRvLXZlcmlmeS5w
aHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS9yZXNvdXJjZXMv
cG9zdC1pbWFnZS10by12ZXJpZnkucGhwCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9jYWNoZS9yZXNvdXJjZXMvcG9zdC1pbWFnZS10by12ZXJpZnkucGhwCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDMyIEBACis8P3BocAorY2xlYXJzdGF0Y2FjaGUoKTsKK2lmIChmaWxl
X2V4aXN0cyhzeXNfZ2V0X3RlbXBfZGlyKCkgLiAiL3Bvc3QudG1wIikpIHsKKyAgICBoZWFkZXIo
J0hUVFAvMS4xIDQwNCBOb3QgRm91bmQnKTsKKyAgICBleGl0KCk7Cit9IGVsc2UgeworICAgICR0
bXBGaWxlID0gZm9wZW4oc3lzX2dldF90ZW1wX2RpcigpIC4gIi9wb3N0LnRtcCIsICd3Jyk7Cisg
ICAgZmNsb3NlKCR0bXBGaWxlKTsKKyAgICAKKyAgICAkZmlsZW5hbWUgPSAnY29tcGFzcy1uby1j
YWNoZS5qcGcnOworICAgICRmaWxlbXRpbWUgPSBmaWxlbXRpbWUoJGZpbGVuYW1lKTsKKyAgICAk
ZmlsZXNpemUgPSBmaWxlc2l6ZSgkZmlsZW5hbWUpOworCisgICAgJGV0YWcgPSAnIicgLiAkZmls
ZXNpemUgLiAnLScgLiAkZmlsZW10aW1lIC4gJyInOworICAgICRsYXN0X21vZGlmaWVkID0gZ21k
YXRlKERBVEVfUkZDMTEyMywgJGZpbGVtdGltZSk7CisgICAgJG1heF9hZ2UgPSAxMiAqIDMxICog
MjQgKiA2MCAqIDYwOyAvL29uZSB5ZWFyCisgICAgJGV4cGlyZXMgPSBnbWRhdGUoREFURV9SRkMx
MTIzLCB0aW1lKCkgKyAkbWF4X2FnZSk7CisKKyAgICAkaGFuZGxlID0gZm9wZW4oJGZpbGVuYW1l
LCAncmInKTsKKyAgICAkY29udGVudHMgPSBmcmVhZCgkaGFuZGxlLCAkZmlsZXNpemUpOworICAg
IGZjbG9zZSgkaGFuZGxlKTsKKworICAgIGhlYWRlcignQ2FjaGUtQ29udHJvbDogcHVibGljLCBt
YXgtYWdlPScgLiAkbWF4X2FnZSk7CisgICAgaGVhZGVyKCdFeHBpcmVzOiAnIC4gJGV4cGlyZXMp
OworICAgIGhlYWRlcignQ29udGVudC1UeXBlOiBpbWFnZS9wbmcnKTsKKyAgICBoZWFkZXIoJ0Nv
bnRlbnQtTGVuZ3RoOiAnIC4gJGZpbGVzaXplKTsKKyAgICBoZWFkZXIoJ0V0YWc6ICcgLiAkZXRh
Zyk7CisgICAgaGVhZGVyKCdMYXN0LU1vZGlmaWVkOiAnIC4gJGxhc3RfbW9kaWZpZWQpOworICAg
IGVjaG8gJGNvbnRlbnRzOworICAgIGV4aXQoKTsKK30KKz8+ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS9wb3N0LXdpdGgtY2Fj
aGVkLXN1YnJlc291cmNlcy5waHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9jYWNoZS9wb3N0LXdpdGgtY2FjaGVkLXN1YnJlc291cmNlcy5waHAJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL3Bvc3Qtd2l0aC1jYWNoZWQtc3VicmVzb3Vy
Y2VzLnBocAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MiBAQAorPD9waHAKKy8vIFRoaXMgdGVz
dCBsb2FkcyBhbiB1bmNhY2hlYWJsZSBtYWluIHJlc291cmNlIGFuZCBhIGNhY2hlYWJsZSBpbWFn
ZSBzdWJyZXNvdXJjZS4KKy8vIFdlIHJlcXVlc3QgdGhpcyBwYWdlIGFzIGEgR0VULCB0aGVuIHJl
bG9hZCB0aGlzIHBhZ2Ugd2l0aCBhIFBPU1QuCisvLyBPbiB0aGUgcG9zdCByZXF1ZXN0LCB0aGUg
aW1hZ2Ugc2hvdWxkIGJlIGxvYWRlZCBmcm9tIHRoZSBjYWNoZSBhbmQgbm8gSFRUUAorLy8gcmVx
dWVzdCBzaG91bGQgYmUgc2VudC4gVGhlIGltYWdlIHJlc291cmNlIHdpbGwgcmV0dXJuIDQwNCBp
ZiBpdCByZWNlaXZlcworLy8gYSBzZWNvbmQgcmVxdWVzdCwgd2hpY2ggd2lsbCBjYXVzZSB1cyB0
byBGQUlMLgorLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0z
ODY5MAoraGVhZGVyKCdDYWNoZS1Db250cm9sOiBuby1jYWNoZSwgbm8tc3RvcmUsIG11c3QtcmV2
YWxpZGF0ZSwgbWF4LWFnZT0wJyk7CitoZWFkZXIoJ1ByYWdtYTogbm8tY2FjaGUnKTsKK2hlYWRl
cignRXhwaXJlczogJyAuIGdtZGF0ZShEQVRFX1JGQzExMjMsIHRpbWUoKS0xKSk7Cis/PgorPGh0
bWw+Cis8Ym9keT4KKzxkaXYgaWQ9InJlc3VsdCI+PC9kaXY+Cis8c2NyaXB0PgoraWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9Cisg
ICAgCitmdW5jdGlvbiBsb2dBbmRGaW5pc2gobWVzc2FnZSkKK3sKKyAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgicmVzdWx0IikuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUo
bWVzc2FnZSkpOworICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3Q7CisgICAgeGhyLm9w
ZW4oIkdFVCIsICIuLi9yZXNvdXJjZXMvcmVzZXQtdGVtcC1maWxlLnBocD9maWxlbmFtZT1wb3N0
LnRtcCIsIGZhbHNlKTsKKyAgICB4aHIuc2VuZChudWxsKTsKKyAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25l
KCk7Cit9Cis8L3NjcmlwdD4KKzw/cGhwCitjbGVhcnN0YXRjYWNoZSgpOworaWYgKCRfUE9TVFsi
c3VibWl0Il0gPT0gImZpbmlzaCIpIHsKKyAgICAvLyBUaGUgaW5pdGlhbCBsb2FkIG9mIHRoZSBp
bWFnZSBtaWdodCBoYXZlIGJlZW4gZG9uZSBmcm9tIHRoZSBjYWNoZS4gSW4gdGhhdCBjYXNlLCB0
b3VjaCB0aGUKKyAgICAvLyBzdGF0ZSBmaWxlIHRvIGluZGljYXRlIGEgbG9hZCBoYXMgYWxyZWFk
eSBvY2N1cnJlZC4KKyAgICBpZiAoIWZpbGVfZXhpc3RzKHN5c19nZXRfdGVtcF9kaXIoKSAuICIv
cG9zdC50bXAiKSkgeworICAgICAgICBlY2hvICI8c2NyaXB0PiI7CisgICAgICAgIGVjaG8gInho
ciA9IG5ldyBYTUxIdHRwUmVxdWVzdDsiOworICAgICAgICBlY2hvICJ4aHIub3BlbignR0VUJywg
Jy4uL3Jlc291cmNlcy90b3VjaC10ZW1wLWZpbGUucGhwP2ZpbGVuYW1lPXBvc3QudG1wJywgZmFs
c2UpOyI7CisgICAgICAgIGVjaG8gInhoci5zZW5kKG51bGwpOyI7CisgICAgICAgIGVjaG8gIjwv
c2NyaXB0PiI7CisgICAgfQorICAgIGVjaG8gIjxpbWcgc3JjPSdyZXNvdXJjZXMvcG9zdC1pbWFn
ZS10by12ZXJpZnkucGhwJyBvbmxvYWQ9XCJsb2dBbmRGaW5pc2goJ1BBU1MnKTtcIiBvbmVycm9y
PVwibG9nQW5kRmluaXNoKCdGQUlMJyk7XCI+PC9pbWc+IjsKK30gZWxzZSB7CisgICAgZWNobyAi
PGZvcm0gYWN0aW9uPSdwb3N0LXdpdGgtY2FjaGVkLXN1YnJlc291cmNlcy5waHAnIG1ldGhvZD0n
cG9zdCc+IjsKKyAgICBlY2hvICI8aW5wdXQgdHlwZT0nc3VibWl0JyBpZD0nc3VibWl0JyBuYW1l
PSdzdWJtaXQnIHZhbHVlPSdmaW5pc2gnPiI7CisgICAgZWNobyAiPC9mb3JtPiI7CisgICAgZWNo
byAiPGltZyBzcmM9J3Jlc291cmNlcy9wb3N0LWltYWdlLXRvLXZlcmlmeS5waHAnIG9ubG9hZD1c
ImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzdWJtaXQnKS5jbGljaygpO1wiIG9uZXJyb3I9XCJs
b2dBbmRGaW5pc2goJ0ZBSUwgb24gaW5pdGlhbCBsb2FkJyk7XCI+PC9pbWc+IjsKK30gCis/Pgor
PC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS9wb3N0
LXJlZGlyZWN0LWdldC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9jYWNoZS9wb3N0LXJlZGlyZWN0LWdldC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL3Bvc3QtcmVkaXJlY3QtZ2V0LWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyIEBACitQQVNTCisK
</data>
<flag name="commit-queue"
          id="75426"
          type_id="3"
          status="-"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>83587</attachid>
            <date>2011-02-23 17:14:30 -0800</date>
            <delta_ts>2011-03-17 15:09:43 -0700</delta_ts>
            <desc>with ChangeLogs this time</desc>
            <filename>redirect-cache3.txt</filename>
            <type>text/plain</type>
            <size>12684</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc5NTA2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTEtMDItMjMgIE5hdGUgQ2hh
cGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBEbyBub3QgY2hlY2sgdGhlIERvY3VtZW50TG9hZGVyJ3MgcmVx
dWVzdCBjYWNoZSBwb2xpY3kKKyAgICAgICAgaW4gZGV0ZXJtaW5pbmcgd2hldGhlciB3ZSBzaG91
bGQgZm9yY2UgcmV2YWxpZGF0aW9uIG9mIGEgY2FjaGVkCisgICAgICAgIHN1YnJlc291cmNlLiBJ
ZiB0aGUgbWFpbiByZXNvdXJjZSByZWNlaXZlZCBoZWFkZXJzIHRlbGxpbmcgaXQgbm90CisgICAg
ICAgIHRvIGNhY2hlLCB0aGF0IHBvbGljeSB3aWxsIGJlIHByb3BhZ2F0ZWQgdG8gc3VicmVzb3Vy
Y2VzLgorCisgICAgICAgIFRoZSBwcmV2aW91cyBiZWhhdmlvciBpcyBsZWZ0IGluIGJlaGluZCBh
IGZsYWcgaW4gU2V0dGluZ3MsIHNpbmNlCisgICAgICAgIFF1aWNrTG9vayBkZXBlbmRzIG9uIGl0
LgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zODY5
MAorCisgICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL2NhY2hlL3Bvc3QtcmVkaXJlY3QtZ2V0LnBo
cAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9jYWNoZS9wb3N0LXdpdGgtY2FjaGVkLXN1YnJl
c291cmNlcy5waHAKKworICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6c3VicmVzb3VyY2VDYWNoZVBvbGljeSk6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFBvc3RSZXF1ZXN0KToKKyAgICAgICAgKiBwYWdl
L1NldHRpbmdzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpTZXR0aW5ncyk6Cisg
ICAgICAgICogcGFnZS9TZXR0aW5ncy5oOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OnNl
dFVzZVF1aWNrTG9va1Jlc291cmNlQ2FjaGluZ1F1aXJrcyk6CisgICAgICAgIChXZWJDb3JlOjpT
ZXR0aW5nczo6dXNlUXVpY2tMb29rUmVzb3VyY2VDYWNoaW5nUXVpcmtzKToKKwogMjAxMS0wMi0x
NyAgRW5yaWNhIENhc3VjY2kgIDxlbnJpY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IERhcmluIEFkbGVyLgpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAkocmV2aXNpb24gNzkz
MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM2OCw2ICszNjgsOSBAQAogCiAgICAgICAgIHZvaWQgc2V0Q3Jvc3NPcmlnaW5DaGVja0luR2V0
TWF0Y2hlZENTU1J1bGVzRGlzYWJsZWQoYm9vbCBmbGFnKSB7IG1fY3Jvc3NPcmlnaW5DaGVja0lu
R2V0TWF0Y2hlZENTU1J1bGVzRGlzYWJsZWQgPSBmbGFnOyB9CiAgICAgICAgIGJvb2wgY3Jvc3NP
cmlnaW5DaGVja0luR2V0TWF0Y2hlZENTU1J1bGVzRGlzYWJsZWQoKSBjb25zdCB7IHJldHVybiBt
X2Nyb3NzT3JpZ2luQ2hlY2tJbkdldE1hdGNoZWRDU1NSdWxlc0Rpc2FibGVkOyB9CisgICAgICAg
IAorICAgICAgICB2b2lkIHNldFVzZVF1aWNrTG9va1Jlc291cmNlQ2FjaGluZ1F1aXJrcyhib29s
IGZsYWcpIHsgbV91c2VRdWlja0xvb2tSZXNvdXJjZUNhY2hpbmdRdWlya3MgPSBmbGFnOyB9Cisg
ICAgICAgIGJvb2wgdXNlUXVpY2tMb29rUmVzb3VyY2VDYWNoaW5nUXVpcmtzKCkgY29uc3QgeyBy
ZXR1cm4gbV91c2VRdWlja0xvb2tSZXNvdXJjZUNhY2hpbmdRdWlya3M7IH0KIAogICAgIHByaXZh
dGU6CiAgICAgICAgIFBhZ2UqIG1fcGFnZTsKQEAgLTQ2Niw2ICs0NjksNyBAQAogICAgICAgICBi
b29sIG1fdXNlUHJlSFRNTDVQYXJzZXJRdWlya3M6IDE7CiAgICAgICAgIGJvb2wgbV9oeXBlcmxp
bmtBdWRpdGluZ0VuYWJsZWQgOiAxOwogICAgICAgICBib29sIG1fY3Jvc3NPcmlnaW5DaGVja0lu
R2V0TWF0Y2hlZENTU1J1bGVzRGlzYWJsZWQgOiAxOworICAgICAgICBib29sIG1fdXNlUXVpY2tM
b29rUmVzb3VyY2VDYWNoaW5nUXVpcmtzIDogMTsKIAogI2lmIFVTRShTQUZBUklfVEhFTUUpCiAg
ICAgICAgIHN0YXRpYyBib29sIGdTaG91bGRQYWludE5hdGl2ZUNvbnRyb2xzOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGFnZS9TZXR0aW5ncy5jcHAJKHJldmlzaW9uIDc5MzI4KQorKysgU291cmNlL1dlYkNvcmUv
cGFnZS9TZXR0aW5ncy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3Myw2ICsxNzMsNyBAQAogICAg
ICwgbV91c2VQcmVIVE1MNVBhcnNlclF1aXJrcyhmYWxzZSkKICAgICAsIG1faHlwZXJsaW5rQXVk
aXRpbmdFbmFibGVkKGZhbHNlKQogICAgICwgbV9jcm9zc09yaWdpbkNoZWNrSW5HZXRNYXRjaGVk
Q1NTUnVsZXNEaXNhYmxlZChmYWxzZSkKKyAgICAsIG1fdXNlUXVpY2tMb29rUmVzb3VyY2VDYWNo
aW5nUXVpcmtzKGZhbHNlKQogewogICAgIC8vIEEgRnJhbWUgbWF5IG5vdCBoYXZlIGJlZW4gY3Jl
YXRlZCB5ZXQsIHNvIHdlIGluaXRpYWxpemUgdGhlIEF0b21pY1N0cmluZyAKICAgICAvLyBoYXNo
IGJlZm9yZSB0cnlpbmcgdG8gdXNlIGl0LgpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXIuY3BwCShyZXZpc2lvbiA3OTMyOCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzMjcsMTIgKzIzMjcsOSBAQAogICAgICAg
ICAgICAgcmV0dXJuIHBhcmVudENhY2hlUG9saWN5OwogICAgIH0KIAotICAgIC8vIEZJWE1FOiBQ
T1NUIGRvY3VtZW50cyBhcmUgYWx3YXlzIFJlbG9hZHMsIGJ1dCB0aGVpciBzdWJyZXNvdXJjZXMg
c2hvdWxkIHN0aWxsIGJlIFJldmFsaWRhdGUuCi0gICAgLy8gSWYgd2UgYnJpbmcgdGhlIENhY2hl
UG9saWN5LmggYW5kIFJlc291cmNlUmVxdWVzdCBjYWNoZSBwb2xpY3kgZW51bXMgaW4gc3luYyB3
aXRoIGVhY2ggb3RoZXIgYW5kCi0gICAgLy8gcmVtZW1iZXIgIlJldmFsaWRhdGUiIGluIFJlc291
cmNlUmVxdWVzdHMsIHdlIGNhbiByZW1vdmUgdGhpcyAiUE9TVCIgY2hlY2sgYW5kIHJldHVybiBl
aXRoZXIgIlJlbG9hZCIgCi0gICAgLy8gb3IgIlJldmFsaWRhdGUiIGlmIHRoZSBEb2N1bWVudExv
YWRlciB3YXMgcmVxdWVzdGVkIHdpdGggZWl0aGVyLgogICAgIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdChkb2N1bWVudExvYWRlcigpLT5yZXF1ZXN0KCkpOwotICAgIGlmIChyZXF1ZXN0
LmNhY2hlUG9saWN5KCkgPT0gUmVsb2FkSWdub3JpbmdDYWNoZURhdGEgJiYgIWVxdWFsSWdub3Jp
bmdDYXNlKHJlcXVlc3QuaHR0cE1ldGhvZCgpLCAicG9zdCIpKQorICAgIFNldHRpbmdzKiBzZXR0
aW5ncyA9IG1fZnJhbWUtPnNldHRpbmdzKCk7CisgICAgaWYgKHNldHRpbmdzICYmIHNldHRpbmdz
LT51c2VRdWlja0xvb2tSZXNvdXJjZUNhY2hpbmdRdWlya3MoKSAmJiByZXF1ZXN0LmNhY2hlUG9s
aWN5KCkgPT0gUmVsb2FkSWdub3JpbmdDYWNoZURhdGEgJiYgIWVxdWFsSWdub3JpbmdDYXNlKHJl
cXVlc3QuaHR0cE1ldGhvZCgpLCAicG9zdCIpKQogICAgICAgICByZXR1cm4gQ2FjaGVQb2xpY3lS
ZXZhbGlkYXRlOwogCiAgICAgaWYgKG1fbG9hZFR5cGUgPT0gRnJhbWVMb2FkVHlwZVJlbG9hZCkK
QEAgLTI3MjUsMTIgKzI3MjIsNiBAQAogewogICAgIFJlZlB0cjxGb3JtU3RhdGU+IGZvcm1TdGF0
ZSA9IHBycEZvcm1TdGF0ZTsKIAotICAgIC8vIFdoZW4gcG9zdGluZywgdXNlIHRoZSBOU1VSTFJl
cXVlc3RSZWxvYWRJZ25vcmluZ0NhY2hlRGF0YSBsb2FkIGZsYWcuCi0gICAgLy8gVGhpcyBwcmV2
ZW50cyBhIHBvdGVudGlhbCBidWcgd2hpY2ggbWF5IGNhdXNlIGEgcGFnZSB3aXRoIGEgZm9ybSB0
aGF0IHVzZXMgaXRzZWxmCi0gICAgLy8gYXMgYW4gYWN0aW9uIHRvIGJlIHJldHVybmVkIGZyb20g
dGhlIGNhY2hlIHdpdGhvdXQgc3VibWl0dGluZy4KLQotICAgIC8vIEZJWE1FOiBXaGVyZSdzIHRo
ZSBjb2RlIHRoYXQgaW1wbGVtZW50cyB3aGF0IHRoZSBjb21tZW50IGFib3ZlIHNheXM/Ci0KICAg
ICAvLyBQcmV2aW91c2x5IHdoZW4gdGhpcyBtZXRob2Qgd2FzIHJlYWNoZWQsIHRoZSBvcmlnaW5h
bCBGcmFtZUxvYWRSZXF1ZXN0IGhhZCBiZWVuIGRlY29uc3RydWN0ZWQgdG8gYnVpbGQgYSAKICAg
ICAvLyBidW5jaCBvZiBwYXJhbWV0ZXJzIHRoYXQgd291bGQgY29tZSBpbiBoZXJlIGFuZCB0aGVu
IGJlIGJ1aWx0IGJhY2sgdXAgdG8gYSBSZXNvdXJjZVJlcXVlc3QuICBJbiBjYXNlCiAgICAgLy8g
YW55IGNhbGxlciBkZXBlbmRzIG9uIHRoZSBpbW11dGFiaWxpdHkgb2YgdGhlIG9yaWdpbmFsIFJl
c291cmNlUmVxdWVzdCwgSSdtIHJlYnVpbGRpbmcgYSBSZXNvdXJjZVJlcXVlc3QKSW5kZXg6IExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUvcG9zdC1yZWRpcmVjdC1nZXQucGhwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUvcG9zdC1yZWRpcmVjdC1nZXQucGhw
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS9wb3N0LXJlZGly
ZWN0LWdldC5waHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTggQEAKKzw/cGhwCisvLyBUaGlz
IHRlc3QgbG9hZHMgYW4gdW5jYWNoZWFibGUgbWFpbiByZXNvdXJjZSBhbmQgYSBjYWNoZWFibGUg
aW1hZ2Ugc3VicmVzb3VyY2UuCisvLyBXZSB0aGVuIHRyaWdnZXIgYSBQT1NUIHJlcXVlc3QsIHdo
aWNoIHJlZGlyZWN0cyBhcyBhIEdFVCBiYWNrIHRvIHRoaXMgcGFnZS4KKy8vIE9uIHRoaXMgR0VU
IHJlcXVlc3QsIHRoZSBpbWFnZSBzaG91bGQgYmUgbG9hZGVkIGZyb20gdGhlIGNhY2hlIGFuZCBu
byBIVFRQCisvLyByZXF1ZXN0IHNob3VsZCBiZSBzZW50LiBUaGUgaW1hZ2UgcmVzb3VyY2Ugd2ls
bCByZXR1cm4gNDA0IGlmIGl0IHJlY2VpdmVzCisvLyBhIHNlY29uZCByZXF1ZXN0LCB3aGljaCB3
aWxsIGNhdXNlIHVzIHRvIEZBSUwuCisvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTM4NjkwCitoZWFkZXIoJ0NhY2hlLUNvbnRyb2w6IG5vLWNhY2hlLCBuby1z
dG9yZSwgbXVzdC1yZXZhbGlkYXRlLCBtYXgtYWdlPTAnKTsKK2hlYWRlcignUHJhZ21hOiBuby1j
YWNoZScpOworaGVhZGVyKCdFeHBpcmVzOiAnIC4gZ21kYXRlKERBVEVfUkZDMTEyMywgdGltZSgp
LTEpKTsKKworaWYgKCRfUE9TVFsic3VibWl0Il0gPT0gInJlZGlyZWN0IikgeworICAgIGhlYWRl
cignSFRUUC8xLjEgMzAyIEZvdW5kJyk7CisgICAgaGVhZGVyKCdMb2NhdGlvbjogcG9zdC1yZWRp
cmVjdC1nZXQucGhwP2ZpbmlzaD10cnVlJyk7CisgICAgZXhpdCgpOworfQorPz4KKzxodG1sPgor
PGJvZHk+Cis8ZGl2IGlkPSJyZXN1bHQiPjwvZGl2PgorPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQorICAgIAor
ZnVuY3Rpb24gbG9nQW5kRmluaXNoKG1lc3NhZ2UpCit7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInJlc3VsdCIpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1lc3Nh
Z2UpKTsKKyAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0OworICAgIHhoci5vcGVuKCJH
RVQiLCAiLi4vcmVzb3VyY2VzL3Jlc2V0LXRlbXAtZmlsZS5waHA/ZmlsZW5hbWU9cG9zdC50bXAi
LCBmYWxzZSk7CisgICAgeGhyLnNlbmQobnVsbCk7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwor
fQorPC9zY3JpcHQ+Cis8P3BocAorY2xlYXJzdGF0Y2FjaGUoKTsKK2lmICgkX0dFVFsiZmluaXNo
Il0gPT0gInRydWUiKSB7CisgICAgLy8gVGhlIGluaXRpYWwgbG9hZCBvZiB0aGUgaW1hZ2UgbWln
aHQgaGF2ZSBiZWVuIGRvbmUgZnJvbSB0aGUgY2FjaGUuIEluIHRoYXQgY2FzZSwgdG91Y2ggdGhl
CisgICAgLy8gc3RhdGUgZmlsZSB0byBpbmRpY2F0ZSBhIGxvYWQgaGFzIGFscmVhZHkgb2NjdXJy
ZWQuCisgICAgaWYgKCFmaWxlX2V4aXN0cyhzeXNfZ2V0X3RlbXBfZGlyKCkgLiAiL3Bvc3QudG1w
IikpIHsKKyAgICAgICAgZWNobyAiPHNjcmlwdD4iOworICAgICAgICBlY2hvICJ4aHIgPSBuZXcg
WE1MSHR0cFJlcXVlc3Q7IjsKKyAgICAgICAgZWNobyAieGhyLm9wZW4oJ0dFVCcsICcuLi9yZXNv
dXJjZXMvdG91Y2gtdGVtcC1maWxlLnBocD9maWxlbmFtZT1wb3N0LnRtcCcsIGZhbHNlKTsiOwor
ICAgICAgICBlY2hvICJ4aHIuc2VuZChudWxsKTsiOworICAgICAgICBlY2hvICI8L3NjcmlwdD4i
OworICAgIH0KKyAgICBlY2hvICI8aW1nIHNyYz0ncmVzb3VyY2VzL3Bvc3QtaW1hZ2UtdG8tdmVy
aWZ5LnBocCcgb25sb2FkPVwibG9nQW5kRmluaXNoKCdQQVNTJyk7XCIgb25lcnJvcj1cImxvZ0Fu
ZEZpbmlzaCgnRkFJTCcpO1wiPjwvaW1nPiI7Cit9IGVsc2UgeworICAgIGVjaG8gIjxmb3JtIGFj
dGlvbj0ncG9zdC1yZWRpcmVjdC1nZXQucGhwJyBtZXRob2Q9J3Bvc3QnPiI7CisgICAgZWNobyAi
PGlucHV0IHR5cGU9J3N1Ym1pdCcgaWQ9J3N1Ym1pdCcgbmFtZT0nc3VibWl0JyB2YWx1ZT0ncmVk
aXJlY3QnPiI7CisgICAgZWNobyAiPC9mb3JtPiI7CisgICAgZWNobyAiPGltZyBzcmM9J3Jlc291
cmNlcy9wb3N0LWltYWdlLXRvLXZlcmlmeS5waHAnIG9ubG9hZD1cImRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdzdWJtaXQnKS5jbGljaygpO1wiIG9uZXJyb3I9XCJsb2dBbmRGaW5pc2goJ0ZBSUwg
b24gaW5pdGlhbCBsb2FkJyk7XCI+PC9pbWc+IjsKK30gCis/PgorPC9ib2R5PgorPC9odG1sPgpJ
bmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS9wb3N0LXdpdGgtY2FjaGVkLXN1YnJl
c291cmNlcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9jYWNoZS9wb3N0LXdpdGgtY2FjaGVkLXN1YnJlc291cmNlcy1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL3Bvc3Qtd2l0aC1jYWNoZWQt
c3VicmVzb3VyY2VzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyIEBACitQ
QVNTCisKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUvcmVzb3VyY2VzL3Bvc3Qt
aW1hZ2UtdG8tdmVyaWZ5LnBocAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2NhY2hlL3Jlc291cmNlcy9wb3N0LWltYWdlLXRvLXZlcmlmeS5waHAJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL3Jlc291cmNlcy9wb3N0LWltYWdlLXRvLXZl
cmlmeS5waHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzIgQEAKKzw/cGhwCitjbGVhcnN0YXRj
YWNoZSgpOworaWYgKGZpbGVfZXhpc3RzKHN5c19nZXRfdGVtcF9kaXIoKSAuICIvcG9zdC50bXAi
KSkgeworICAgIGhlYWRlcignSFRUUC8xLjEgNDA0IE5vdCBGb3VuZCcpOworICAgIGV4aXQoKTsK
K30gZWxzZSB7CisgICAgJHRtcEZpbGUgPSBmb3BlbihzeXNfZ2V0X3RlbXBfZGlyKCkgLiAiL3Bv
c3QudG1wIiwgJ3cnKTsKKyAgICBmY2xvc2UoJHRtcEZpbGUpOworICAgIAorICAgICRmaWxlbmFt
ZSA9ICdjb21wYXNzLW5vLWNhY2hlLmpwZyc7CisgICAgJGZpbGVtdGltZSA9IGZpbGVtdGltZSgk
ZmlsZW5hbWUpOworICAgICRmaWxlc2l6ZSA9IGZpbGVzaXplKCRmaWxlbmFtZSk7CisKKyAgICAk
ZXRhZyA9ICciJyAuICRmaWxlc2l6ZSAuICctJyAuICRmaWxlbXRpbWUgLiAnIic7CisgICAgJGxh
c3RfbW9kaWZpZWQgPSBnbWRhdGUoREFURV9SRkMxMTIzLCAkZmlsZW10aW1lKTsKKyAgICAkbWF4
X2FnZSA9IDEyICogMzEgKiAyNCAqIDYwICogNjA7IC8vb25lIHllYXIKKyAgICAkZXhwaXJlcyA9
IGdtZGF0ZShEQVRFX1JGQzExMjMsIHRpbWUoKSArICRtYXhfYWdlKTsKKworICAgICRoYW5kbGUg
PSBmb3BlbigkZmlsZW5hbWUsICdyYicpOworICAgICRjb250ZW50cyA9IGZyZWFkKCRoYW5kbGUs
ICRmaWxlc2l6ZSk7CisgICAgZmNsb3NlKCRoYW5kbGUpOworCisgICAgaGVhZGVyKCdDYWNoZS1D
b250cm9sOiBwdWJsaWMsIG1heC1hZ2U9JyAuICRtYXhfYWdlKTsKKyAgICBoZWFkZXIoJ0V4cGly
ZXM6ICcgLiAkZXhwaXJlcyk7CisgICAgaGVhZGVyKCdDb250ZW50LVR5cGU6IGltYWdlL3BuZycp
OworICAgIGhlYWRlcignQ29udGVudC1MZW5ndGg6ICcgLiAkZmlsZXNpemUpOworICAgIGhlYWRl
cignRXRhZzogJyAuICRldGFnKTsKKyAgICBoZWFkZXIoJ0xhc3QtTW9kaWZpZWQ6ICcgLiAkbGFz
dF9tb2RpZmllZCk7CisgICAgZWNobyAkY29udGVudHM7CisgICAgZXhpdCgpOworfQorPz4KXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nh
Y2hlL3Bvc3Qtd2l0aC1jYWNoZWQtc3VicmVzb3VyY2VzLnBocAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL3Bvc3Qtd2l0aC1jYWNoZWQtc3VicmVzb3VyY2VzLnBo
cAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUvcG9zdC13aXRo
LWNhY2hlZC1zdWJyZXNvdXJjZXMucGhwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUyIEBACis8
P3BocAorLy8gVGhpcyB0ZXN0IGxvYWRzIGFuIHVuY2FjaGVhYmxlIG1haW4gcmVzb3VyY2UgYW5k
IGEgY2FjaGVhYmxlIGltYWdlIHN1YnJlc291cmNlLgorLy8gV2UgcmVxdWVzdCB0aGlzIHBhZ2Ug
YXMgYSBHRVQsIHRoZW4gcmVsb2FkIHRoaXMgcGFnZSB3aXRoIGEgUE9TVC4KKy8vIE9uIHRoZSBw
b3N0IHJlcXVlc3QsIHRoZSBpbWFnZSBzaG91bGQgYmUgbG9hZGVkIGZyb20gdGhlIGNhY2hlIGFu
ZCBubyBIVFRQCisvLyByZXF1ZXN0IHNob3VsZCBiZSBzZW50LiBUaGUgaW1hZ2UgcmVzb3VyY2Ug
d2lsbCByZXR1cm4gNDA0IGlmIGl0IHJlY2VpdmVzCisvLyBhIHNlY29uZCByZXF1ZXN0LCB3aGlj
aCB3aWxsIGNhdXNlIHVzIHRvIEZBSUwuCisvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTM4NjkwCitoZWFkZXIoJ0NhY2hlLUNvbnRyb2w6IG5vLWNhY2hlLCBu
by1zdG9yZSwgbXVzdC1yZXZhbGlkYXRlLCBtYXgtYWdlPTAnKTsKK2hlYWRlcignUHJhZ21hOiBu
by1jYWNoZScpOworaGVhZGVyKCdFeHBpcmVzOiAnIC4gZ21kYXRlKERBVEVfUkZDMTEyMywgdGlt
ZSgpLTEpKTsKKz8+Cis8aHRtbD4KKzxib2R5PgorPGRpdiBpZD0icmVzdWx0Ij48L2Rpdj4KKzxz
Y3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRV
bnRpbERvbmUoKTsKK30KKyAgICAKK2Z1bmN0aW9uIGxvZ0FuZEZpbmlzaChtZXNzYWdlKQorewor
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5hcHBlbmRDaGlsZChkb2N1bWVu
dC5jcmVhdGVUZXh0Tm9kZShtZXNzYWdlKSk7CisgICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVx
dWVzdDsKKyAgICB4aHIub3BlbigiR0VUIiwgIi4uL3Jlc291cmNlcy9yZXNldC10ZW1wLWZpbGUu
cGhwP2ZpbGVuYW1lPXBvc3QudG1wIiwgZmFsc2UpOworICAgIHhoci5zZW5kKG51bGwpOworICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKzwvc2NyaXB0PgorPD9waHAKK2NsZWFyc3RhdGNhY2hl
KCk7CitpZiAoJF9QT1NUWyJzdWJtaXQiXSA9PSAiZmluaXNoIikgeworICAgIC8vIFRoZSBpbml0
aWFsIGxvYWQgb2YgdGhlIGltYWdlIG1pZ2h0IGhhdmUgYmVlbiBkb25lIGZyb20gdGhlIGNhY2hl
LiBJbiB0aGF0IGNhc2UsIHRvdWNoIHRoZQorICAgIC8vIHN0YXRlIGZpbGUgdG8gaW5kaWNhdGUg
YSBsb2FkIGhhcyBhbHJlYWR5IG9jY3VycmVkLgorICAgIGlmICghZmlsZV9leGlzdHMoc3lzX2dl
dF90ZW1wX2RpcigpIC4gIi9wb3N0LnRtcCIpKSB7CisgICAgICAgIGVjaG8gIjxzY3JpcHQ+IjsK
KyAgICAgICAgZWNobyAieGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0OyI7CisgICAgICAgIGVjaG8g
Inhoci5vcGVuKCdHRVQnLCAnLi4vcmVzb3VyY2VzL3RvdWNoLXRlbXAtZmlsZS5waHA/ZmlsZW5h
bWU9cG9zdC50bXAnLCBmYWxzZSk7IjsKKyAgICAgICAgZWNobyAieGhyLnNlbmQobnVsbCk7IjsK
KyAgICAgICAgZWNobyAiPC9zY3JpcHQ+IjsKKyAgICB9CisgICAgZWNobyAiPGltZyBzcmM9J3Jl
c291cmNlcy9wb3N0LWltYWdlLXRvLXZlcmlmeS5waHAnIG9ubG9hZD1cImxvZ0FuZEZpbmlzaCgn
UEFTUycpO1wiIG9uZXJyb3I9XCJsb2dBbmRGaW5pc2goJ0ZBSUwnKTtcIj48L2ltZz4iOworfSBl
bHNlIHsKKyAgICBlY2hvICI8Zm9ybSBhY3Rpb249J3Bvc3Qtd2l0aC1jYWNoZWQtc3VicmVzb3Vy
Y2VzLnBocCcgbWV0aG9kPSdwb3N0Jz4iOworICAgIGVjaG8gIjxpbnB1dCB0eXBlPSdzdWJtaXQn
IGlkPSdzdWJtaXQnIG5hbWU9J3N1Ym1pdCcgdmFsdWU9J2ZpbmlzaCc+IjsKKyAgICBlY2hvICI8
L2Zvcm0+IjsKKyAgICBlY2hvICI8aW1nIHNyYz0ncmVzb3VyY2VzL3Bvc3QtaW1hZ2UtdG8tdmVy
aWZ5LnBocCcgb25sb2FkPVwiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N1Ym1pdCcpLmNsaWNr
KCk7XCIgb25lcnJvcj1cImxvZ0FuZEZpbmlzaCgnRkFJTCBvbiBpbml0aWFsIGxvYWQnKTtcIj48
L2ltZz4iOworfSAKKz8+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2NhY2hlL3Bvc3QtcmVkaXJlY3QtZ2V0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL3Bvc3QtcmVkaXJlY3QtZ2V0LWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUvcG9zdC1y
ZWRpcmVjdC1nZXQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIgQEAKK1BB
U1MKKwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNzk1MDYpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMS0wMi0yMyAgTmF0ZSBDaGFwaW4g
IDxqYXBoZXRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRlc3RzIGZvciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9Mzg2OTAuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2NhY2hlL3Bvc3QtcmVkaXJl
Y3QtZ2V0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9jYWNoZS9w
b3N0LXJlZGlyZWN0LWdldC5waHA6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvY2FjaGUv
cG9zdC13aXRoLWNhY2hlZC1zdWJyZXNvdXJjZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBodHRwL3Rlc3RzL2NhY2hlL3Bvc3Qtd2l0aC1jYWNoZWQtc3VicmVzb3VyY2VzLnBocDog
QWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9jYWNoZS9yZXNvdXJjZXMvcG9zdC1pbWFnZS10
by12ZXJpZnkucGhwOiBBZGRlZC4KKwogMjAxMS0wMi0yMyAgQW5kcmV3IFdpbHNvbiAgPGF0d2ls
c29uQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZW1vdmVkIG91dGRhdGVkL2luY29ycmVjdCBj
aHJvbWl1bSBiYXNlbGlucy4gVW5yZXZpZXdlZC4K
</data>
<flag name="review"
          id="75432"
          type_id="1"
          status="-"
          setter="beidson"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86102</attachid>
            <date>2011-03-17 15:09:43 -0700</date>
            <delta_ts>2011-03-21 19:33:02 -0700</delta_ts>
            <desc>Set the flag when QuickLook is loaded</desc>
            <filename>redirect-cache4.txt</filename>
            <type>text/plain</type>
            <size>17606</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDgxMzkxKQorKysgU291cmNlL1dlYktpdC9t
YWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMDMtMTcg
IE5hdGUgQ2hhcGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeHBvc2UgYSBwcmVmZXJlbmNlIHRvIHVzZSBj
YWNoaW5nIHF1aXJrcyBmb3IgUXVpY2tMb29rLAorICAgICAgICBhbmQgdXNlIGl0IGlmIHRoZSBR
dWlja0xvb2sgZnJhbWV3b3JrIGlzIGxvYWRlZC4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzg2OTAKKworICAgICAgICAqIFdlYlZpZXcvV2ViUHJl
ZmVyZW5jZUtleXNQcml2YXRlLmg6CisgICAgICAgICogV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5t
bToKKyAgICAgICAgKHVzZVF1aWNrTG9va1F1aXJrcyk6CisgICAgICAgICgrW1dlYlByZWZlcmVu
Y2VzIGluaXRpYWxpemVdKToKKyAgICAgICAgKC1bV2ViUHJlZmVyZW5jZXMgdXNlUXVpY2tMb29r
UmVzb3VyY2VDYWNoaW5nUXVpcmtzXSk6CisgICAgICAgICogV2ViVmlldy9XZWJQcmVmZXJlbmNl
c1ByaXZhdGUuaDoKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dl
YlZpZXcgX3ByZWZlcmVuY2VzQ2hhbmdlZE5vdGlmaWNhdGlvbjpdKToKKwogMjAxMS0wMy0xNiAg
SmVmZiBKb2huc29uICA8Z2l0aHViQGxhcGNhdHNvZnR3YXJlLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlha292LgpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oCShyZXZpc2lvbiA4MTM5MSkKKysr
IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTIzNiw0ICsyMzYsNiBAQAogLSAodm9pZClzZXRVc2VQcmVIVE1MNVBhcnNl
clF1aXJrczooQk9PTClmbGFnOwogLSAoQk9PTCl1c2VQcmVIVE1MNVBhcnNlclF1aXJrczsKIAor
LSAoQk9PTCl1c2VRdWlja0xvb2tSZXNvdXJjZUNhY2hpbmdRdWlya3M7CisKIEBlbmQKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5c1By
aXZhdGUuaAkocmV2aXNpb24gODEzOTEpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDUsNiArMTA1LDcg
QEAKICNkZWZpbmUgV2ViS2l0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWRQcmVmZXJl
bmNlS2V5IEAiV2ViS2l0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQiCiAjZGVmaW5l
IFdlYktpdE1lbW9yeUluZm9FbmFibGVkUHJlZmVyZW5jZUtleSBAIldlYktpdE1lbW9yeUluZm9F
bmFibGVkIgogI2RlZmluZSBXZWJLaXRIeXBlcmxpbmtBdWRpdGluZ0VuYWJsZWRQcmVmZXJlbmNl
S2V5IEAiV2ViS2l0SHlwZXJsaW5rQXVkaXRpbmdFbmFibGVkIgorI2RlZmluZSBXZWJLaXRVc2VR
dWlja0xvb2tSZXNvdXJjZUNhY2hpbmdRdWlya3NQcmVmZXJlbmNlS2V5IEAiV2ViS2l0VXNlUXVp
Y2tMb29rUmVzb3VyY2VDYWNoaW5nUXVpcmtzIgogCiAvLyBUaGVzZSBhcmUgcHJpdmF0ZSBib3Ro
IGJlY2F1c2UgY2FsbGVycyBzaG91bGQgYmUgdXNpbmcgdGhlIGNvdmVyIG1ldGhvZHMgYW5kIGJl
Y2F1c2UgdGhlCiAvLyBjb3ZlciBtZXRob2RzIHRoZW1zZWx2ZXMgYXJlIHByaXZhdGUuCkluZGV4
OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCShyZXZpc2lvbiA4MTM5MSkKKysrIFNv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTUx
Niw2ICsxNTE2LDcgQEAKICAgICBzZXR0aW5ncy0+c2V0TWVtb3J5SW5mb0VuYWJsZWQoW3ByZWZl
cmVuY2VzIG1lbW9yeUluZm9FbmFibGVkXSk7CiAgICAgc2V0dGluZ3MtPnNldEh5cGVybGlua0F1
ZGl0aW5nRW5hYmxlZChbcHJlZmVyZW5jZXMgaHlwZXJsaW5rQXVkaXRpbmdFbmFibGVkXSk7CiAg
ICAgc2V0dGluZ3MtPnNldFVzZVByZUhUTUw1UGFyc2VyUXVpcmtzKFtzZWxmIF9uZWVkc1ByZUhU
TUw1UGFyc2VyUXVpcmtzXSk7CisgICAgc2V0dGluZ3MtPnNldFVzZVF1aWNrTG9va1Jlc291cmNl
Q2FjaGluZ1F1aXJrcyhbcHJlZmVyZW5jZXMgdXNlUXVpY2tMb29rUmVzb3VyY2VDYWNoaW5nUXVp
cmtzXSk7CiAgICAgc2V0dGluZ3MtPnNldENyb3NzT3JpZ2luQ2hlY2tJbkdldE1hdGNoZWRDU1NS
dWxlc0Rpc2FibGVkKFtzZWxmIF9uZWVkc1VucmVzdHJpY3RlZEdldE1hdGNoZWRDU1NSdWxlc10p
OwogCiAgICAgLy8gQXBwbGljYXRpb24gQ2FjaGUgUHJlZmVyZW5jZXMgYXJlIHN0b3JlZCBvbiB0
aGUgZ2xvYmFsIGNhY2hlIHN0b3JhZ2UgbWFuYWdlciwgbm90IGluIFNldHRpbmdzLgpJbmRleDog
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCShyZXZpc2lvbiA4
MTM5MSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0JKHdv
cmtpbmcgY29weSkKQEAgLTEzNiw2ICsxMzYsMjIgQEAKICAgICByZXR1cm4gY2FjaGVNb2RlbDsK
IH0KIAorc3RhdGljIGJvb2wgdXNlUXVpY2tMb29rUXVpcmtzKHZvaWQpCit7CisgICAgTlNBcnJh
eSogZnJhbWV3b3JrcyA9IFtOU0J1bmRsZSBhbGxGcmFtZXdvcmtzXTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIAorICAgIGlmICghZnJhbWV3b3JrcykKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBbZnJhbWV3b3JrcyBjb3VudF07
IGkrKykgeworICAgICAgICBOU0J1bmRsZSogYnVuZGxlID0gW2ZyYW1ld29ya3Mgb2JqZWN0QXRJ
bmRleDogaV07CisgICAgICAgIGNvbnN0IGNoYXIqIGJ1bmRsZUlEID0gW1tidW5kbGUgYnVuZGxl
SWRlbnRpZmllcl0gVVRGOFN0cmluZ107CisgICAgICAgIGlmIChidW5kbGVJRCAmJiAhc3RyY2Fz
ZWNtcChidW5kbGVJRCwgImNvbS5hcHBsZS5RdWlja0xvb2tVSUZyYW1ld29yayIpKQorICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwogQGludGVy
ZmFjZSBXZWJQcmVmZXJlbmNlc1ByaXZhdGUgOiBOU09iamVjdAogewogQHB1YmxpYwpAQCAtMzcz
LDYgKzM4OSw3IEBACiAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpOT10sICAgV2Vi
S2l0TWVtb3J5SW5mb0VuYWJsZWRQcmVmZXJlbmNlS2V5LAogICAgICAgICBbTlNOdW1iZXIgbnVt
YmVyV2l0aEJvb2w6WUVTXSwgIFdlYktpdEh5cGVybGlua0F1ZGl0aW5nRW5hYmxlZFByZWZlcmVu
Y2VLZXksCiAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpOT10sICAgV2ViS2l0VXNl
UHJlSFRNTDVQYXJzZXJRdWlya3NLZXksCisgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoQm9v
bDp1c2VRdWlja0xvb2tRdWlya3MoKV0sIFdlYktpdFVzZVF1aWNrTG9va1Jlc291cmNlQ2FjaGlu
Z1F1aXJrc1ByZWZlcmVuY2VLZXksCiAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoTG9uZ0xv
bmc6V2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6Om5vUXVvdGEoKV0sIFdlYktpdEFw
cGxpY2F0aW9uQ2FjaGVUb3RhbFF1b3RhLAogICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aExv
bmdMb25nOldlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpub1F1b3RhKCldLCBXZWJL
aXRBcHBsaWNhdGlvbkNhY2hlRGVmYXVsdE9yaWdpblF1b3RhLAogICAgICAgICBuaWxdOwpAQCAt
MTM5Niw2ICsxNDEzLDExIEBACiAgICAgW3NlbGYgX3NldEJvb2xWYWx1ZTpmbGFnIGZvcktleTpX
ZWJLaXRVc2VQcmVIVE1MNVBhcnNlclF1aXJrc0tleV07CiB9CiAKKy0gKEJPT0wpdXNlUXVpY2tM
b29rUmVzb3VyY2VDYWNoaW5nUXVpcmtzCit7CisgICAgcmV0dXJuIFtzZWxmIF9ib29sVmFsdWVG
b3JLZXk6V2ViS2l0VXNlUXVpY2tMb29rUmVzb3VyY2VDYWNoaW5nUXVpcmtzUHJlZmVyZW5jZUtl
eV07Cit9CisKIC0gKHZvaWQpZGlkUmVtb3ZlRnJvbVdlYlZpZXcKIHsKICAgICBBU1NFUlQoX3By
aXZhdGUtPm51bVdlYlZpZXdzKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgxMzkxKQorKysg
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjkgQEAK
KzIwMTEtMDMtMTcgIE5hdGUgQ2hhcGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEbyBub3QgY2hlY2sgdGhl
IERvY3VtZW50TG9hZGVyJ3MgcmVxdWVzdCBjYWNoZSBwb2xpY3kKKyAgICAgICAgaW4gZGV0ZXJt
aW5pbmcgd2hldGhlciB3ZSBzaG91bGQgZm9yY2UgcmV2YWxpZGF0aW9uIG9mIGEgY2FjaGVkCisg
ICAgICAgIHN1YnJlc291cmNlLiBJZiB0aGUgbWFpbiByZXNvdXJjZSByZWNlaXZlZCBoZWFkZXJz
IHRlbGxpbmcgaXQgbm90CisgICAgICAgIHRvIGNhY2hlLCB0aGF0IHBvbGljeSB3aWxsIGJlIHBy
b3BhZ2F0ZWQgdG8gc3VicmVzb3VyY2VzLgorCisgICAgICAgIFRoZSBwcmV2aW91cyBiZWhhdmlv
ciBpcyBsZWZ0IGluIGJlaGluZCBhIGZsYWcgaW4gU2V0dGluZ3MsIHNpbmNlCisgICAgICAgIFF1
aWNrTG9vayBkZXBlbmRzIG9uIGl0LgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0zODY5MAorCisgICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL2NhY2hl
L3Bvc3QtcmVkaXJlY3QtZ2V0LnBocAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9jYWNoZS9w
b3N0LXdpdGgtY2FjaGVkLXN1YnJlc291cmNlcy5waHAKKworICAgICAgICAqIGxvYWRlci9GcmFt
ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6c3VicmVzb3VyY2VD
YWNoZVBvbGljeSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFBvc3RSZXF1
ZXN0KToKKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNl
dHRpbmdzOjpTZXR0aW5ncyk6CisgICAgICAgICogcGFnZS9TZXR0aW5ncy5oOgorICAgICAgICAo
V2ViQ29yZTo6U2V0dGluZ3M6OnNldFVzZVF1aWNrTG9va1Jlc291cmNlQ2FjaGluZ1F1aXJrcyk6
CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6dXNlUXVpY2tMb29rUmVzb3VyY2VDYWNoaW5n
UXVpcmtzKToKKwogMjAxMS0wMy0xNyAgSmVmZiBNaWxsZXIgIDxqZWZmbUBhcHBsZS5jb20+CiAK
ICAgICAgICAgVXNlIGEgY29uc2lzdGVudCBzZXQgb2YgZmlsZSBwYXR0ZXJucyBpbiB0aGUgc3Zu
Omlnbm9yZSBwcm9wZXJ0eSBmb3IgYWxsIC54Y29kZXByb2ogZGlyZWN0b3JpZXMsIHNwZWNpZmlj
YWxseToKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgJKHJldmlzaW9uIDgxMzkxKQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNzEsNiArMzcx
LDkgQEAKIAogICAgICAgICB2b2lkIHNldENyb3NzT3JpZ2luQ2hlY2tJbkdldE1hdGNoZWRDU1NS
dWxlc0Rpc2FibGVkKGJvb2wgZmxhZykgeyBtX2Nyb3NzT3JpZ2luQ2hlY2tJbkdldE1hdGNoZWRD
U1NSdWxlc0Rpc2FibGVkID0gZmxhZzsgfQogICAgICAgICBib29sIGNyb3NzT3JpZ2luQ2hlY2tJ
bkdldE1hdGNoZWRDU1NSdWxlc0Rpc2FibGVkKCkgY29uc3QgeyByZXR1cm4gbV9jcm9zc09yaWdp
bkNoZWNrSW5HZXRNYXRjaGVkQ1NTUnVsZXNEaXNhYmxlZDsgfQorICAgICAgICAKKyAgICAgICAg
dm9pZCBzZXRVc2VRdWlja0xvb2tSZXNvdXJjZUNhY2hpbmdRdWlya3MoYm9vbCBmbGFnKSB7IG1f
dXNlUXVpY2tMb29rUmVzb3VyY2VDYWNoaW5nUXVpcmtzID0gZmxhZzsgfQorICAgICAgICBib29s
IHVzZVF1aWNrTG9va1Jlc291cmNlQ2FjaGluZ1F1aXJrcygpIGNvbnN0IHsgcmV0dXJuIG1fdXNl
UXVpY2tMb29rUmVzb3VyY2VDYWNoaW5nUXVpcmtzOyB9CiAKICAgICAgICAgdm9pZCBzZXRGb3Jj
ZUNvbXBvc2l0aW5nTW9kZShib29sIGZsYWcpIHsgbV9mb3JjZUNvbXBvc2l0aW5nTW9kZSA9IGZs
YWc7IH0KICAgICAgICAgYm9vbCBmb3JjZUNvbXBvc2l0aW5nTW9kZSgpIHsgcmV0dXJuIG1fZm9y
Y2VDb21wb3NpdGluZ01vZGU7IH0KQEAgLTQ3Myw2ICs0NzYsNyBAQAogICAgICAgICBib29sIG1f
dXNlUHJlSFRNTDVQYXJzZXJRdWlya3M6IDE7CiAgICAgICAgIGJvb2wgbV9oeXBlcmxpbmtBdWRp
dGluZ0VuYWJsZWQgOiAxOwogICAgICAgICBib29sIG1fY3Jvc3NPcmlnaW5DaGVja0luR2V0TWF0
Y2hlZENTU1J1bGVzRGlzYWJsZWQgOiAxOworICAgICAgICBib29sIG1fdXNlUXVpY2tMb29rUmVz
b3VyY2VDYWNoaW5nUXVpcmtzIDogMTsKICAgICAgICAgYm9vbCBtX2ZvcmNlQ29tcG9zaXRpbmdN
b2RlIDogMTsKIAogI2lmIFVTRShTQUZBUklfVEhFTUUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
YWdlL1NldHRpbmdzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRp
bmdzLmNwcAkocmV2aXNpb24gODEzOTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc1LDYgKzE3NSw3IEBACiAgICAgLCBtX3VzZVByZUhU
TUw1UGFyc2VyUXVpcmtzKGZhbHNlKQogICAgICwgbV9oeXBlcmxpbmtBdWRpdGluZ0VuYWJsZWQo
ZmFsc2UpCiAgICAgLCBtX2Nyb3NzT3JpZ2luQ2hlY2tJbkdldE1hdGNoZWRDU1NSdWxlc0Rpc2Fi
bGVkKGZhbHNlKQorICAgICwgbV91c2VRdWlja0xvb2tSZXNvdXJjZUNhY2hpbmdRdWlya3MoZmFs
c2UpCiAgICAgLCBtX2ZvcmNlQ29tcG9zaXRpbmdNb2RlKGZhbHNlKQogewogICAgIC8vIEEgRnJh
bWUgbWF5IG5vdCBoYXZlIGJlZW4gY3JlYXRlZCB5ZXQsIHNvIHdlIGluaXRpYWxpemUgdGhlIEF0
b21pY1N0cmluZyAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkocmV2
aXNpb24gODEzOTEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yMzI0LDEyICsyMzI0LDkgQEAKICAgICAgICAgICAgIHJldHVybiBw
YXJlbnRDYWNoZVBvbGljeTsKICAgICB9CiAKLSAgICAvLyBGSVhNRTogUE9TVCBkb2N1bWVudHMg
YXJlIGFsd2F5cyBSZWxvYWRzLCBidXQgdGhlaXIgc3VicmVzb3VyY2VzIHNob3VsZCBzdGlsbCBi
ZSBSZXZhbGlkYXRlLgotICAgIC8vIElmIHdlIGJyaW5nIHRoZSBDYWNoZVBvbGljeS5oIGFuZCBS
ZXNvdXJjZVJlcXVlc3QgY2FjaGUgcG9saWN5IGVudW1zIGluIHN5bmMgd2l0aCBlYWNoIG90aGVy
IGFuZAotICAgIC8vIHJlbWVtYmVyICJSZXZhbGlkYXRlIiBpbiBSZXNvdXJjZVJlcXVlc3RzLCB3
ZSBjYW4gcmVtb3ZlIHRoaXMgIlBPU1QiIGNoZWNrIGFuZCByZXR1cm4gZWl0aGVyICJSZWxvYWQi
IAotICAgIC8vIG9yICJSZXZhbGlkYXRlIiBpZiB0aGUgRG9jdW1lbnRMb2FkZXIgd2FzIHJlcXVl
c3RlZCB3aXRoIGVpdGhlci4KICAgICBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QoZG9j
dW1lbnRMb2FkZXIoKS0+cmVxdWVzdCgpKTsKLSAgICBpZiAocmVxdWVzdC5jYWNoZVBvbGljeSgp
ID09IFJlbG9hZElnbm9yaW5nQ2FjaGVEYXRhICYmICFlcXVhbElnbm9yaW5nQ2FzZShyZXF1ZXN0
Lmh0dHBNZXRob2QoKSwgInBvc3QiKSkKKyAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBtX2ZyYW1l
LT5zZXR0aW5ncygpOworICAgIGlmIChzZXR0aW5ncyAmJiBzZXR0aW5ncy0+dXNlUXVpY2tMb29r
UmVzb3VyY2VDYWNoaW5nUXVpcmtzKCkgJiYgcmVxdWVzdC5jYWNoZVBvbGljeSgpID09IFJlbG9h
ZElnbm9yaW5nQ2FjaGVEYXRhICYmICFlcXVhbElnbm9yaW5nQ2FzZShyZXF1ZXN0Lmh0dHBNZXRo
b2QoKSwgInBvc3QiKSkKICAgICAgICAgcmV0dXJuIENhY2hlUG9saWN5UmV2YWxpZGF0ZTsKIAog
ICAgIGlmIChtX2xvYWRUeXBlID09IEZyYW1lTG9hZFR5cGVSZWxvYWQpCkBAIC0yNzIxLDEyICsy
NzE4LDYgQEAKIHsKICAgICBSZWZQdHI8Rm9ybVN0YXRlPiBmb3JtU3RhdGUgPSBwcnBGb3JtU3Rh
dGU7CiAKLSAgICAvLyBXaGVuIHBvc3RpbmcsIHVzZSB0aGUgTlNVUkxSZXF1ZXN0UmVsb2FkSWdu
b3JpbmdDYWNoZURhdGEgbG9hZCBmbGFnLgotICAgIC8vIFRoaXMgcHJldmVudHMgYSBwb3RlbnRp
YWwgYnVnIHdoaWNoIG1heSBjYXVzZSBhIHBhZ2Ugd2l0aCBhIGZvcm0gdGhhdCB1c2VzIGl0c2Vs
ZgotICAgIC8vIGFzIGFuIGFjdGlvbiB0byBiZSByZXR1cm5lZCBmcm9tIHRoZSBjYWNoZSB3aXRo
b3V0IHN1Ym1pdHRpbmcuCi0KLSAgICAvLyBGSVhNRTogV2hlcmUncyB0aGUgY29kZSB0aGF0IGlt
cGxlbWVudHMgd2hhdCB0aGUgY29tbWVudCBhYm92ZSBzYXlzPwotCiAgICAgLy8gUHJldmlvdXNs
eSB3aGVuIHRoaXMgbWV0aG9kIHdhcyByZWFjaGVkLCB0aGUgb3JpZ2luYWwgRnJhbWVMb2FkUmVx
dWVzdCBoYWQgYmVlbiBkZWNvbnN0cnVjdGVkIHRvIGJ1aWxkIGEgCiAgICAgLy8gYnVuY2ggb2Yg
cGFyYW1ldGVycyB0aGF0IHdvdWxkIGNvbWUgaW4gaGVyZSBhbmQgdGhlbiBiZSBidWlsdCBiYWNr
IHVwIHRvIGEgUmVzb3VyY2VSZXF1ZXN0LiAgSW4gY2FzZQogICAgIC8vIGFueSBjYWxsZXIgZGVw
ZW5kcyBvbiB0aGUgaW1tdXRhYmlsaXR5IG9mIHRoZSBvcmlnaW5hbCBSZXNvdXJjZVJlcXVlc3Qs
IEknbSByZWJ1aWxkaW5nIGEgUmVzb3VyY2VSZXF1ZXN0CkluZGV4OiBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2NhY2hlL3Bvc3QtcmVkaXJlY3QtZ2V0LnBocAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2NhY2hlL3Bvc3QtcmVkaXJlY3QtZ2V0LnBocAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUvcG9zdC1yZWRpcmVjdC1nZXQucGhwCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU4IEBACis8P3BocAorLy8gVGhpcyB0ZXN0IGxvYWRzIGFu
IHVuY2FjaGVhYmxlIG1haW4gcmVzb3VyY2UgYW5kIGEgY2FjaGVhYmxlIGltYWdlIHN1YnJlc291
cmNlLgorLy8gV2UgdGhlbiB0cmlnZ2VyIGEgUE9TVCByZXF1ZXN0LCB3aGljaCByZWRpcmVjdHMg
YXMgYSBHRVQgYmFjayB0byB0aGlzIHBhZ2UuCisvLyBPbiB0aGlzIEdFVCByZXF1ZXN0LCB0aGUg
aW1hZ2Ugc2hvdWxkIGJlIGxvYWRlZCBmcm9tIHRoZSBjYWNoZSBhbmQgbm8gSFRUUAorLy8gcmVx
dWVzdCBzaG91bGQgYmUgc2VudC4gVGhlIGltYWdlIHJlc291cmNlIHdpbGwgcmV0dXJuIDQwNCBp
ZiBpdCByZWNlaXZlcworLy8gYSBzZWNvbmQgcmVxdWVzdCwgd2hpY2ggd2lsbCBjYXVzZSB1cyB0
byBGQUlMLgorLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0z
ODY5MAoraGVhZGVyKCdDYWNoZS1Db250cm9sOiBuby1jYWNoZSwgbm8tc3RvcmUsIG11c3QtcmV2
YWxpZGF0ZSwgbWF4LWFnZT0wJyk7CitoZWFkZXIoJ1ByYWdtYTogbm8tY2FjaGUnKTsKK2hlYWRl
cignRXhwaXJlczogJyAuIGdtZGF0ZShEQVRFX1JGQzExMjMsIHRpbWUoKS0xKSk7CisKK2lmICgk
X1BPU1RbInN1Ym1pdCJdID09ICJyZWRpcmVjdCIpIHsKKyAgICBoZWFkZXIoJ0hUVFAvMS4xIDMw
MiBGb3VuZCcpOworICAgIGhlYWRlcignTG9jYXRpb246IHBvc3QtcmVkaXJlY3QtZ2V0LnBocD9m
aW5pc2g9dHJ1ZScpOworICAgIGV4aXQoKTsKK30KKz8+Cis8aHRtbD4KKzxib2R5PgorPGRpdiBp
ZD0icmVzdWx0Ij48L2Rpdj4KKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91
dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KKyAgICAKK2Z1bmN0aW9uIGxvZ0Fu
ZEZpbmlzaChtZXNzYWdlKQoreworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQi
KS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtZXNzYWdlKSk7CisgICAgdmFy
IHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdDsKKyAgICB4aHIub3BlbigiR0VUIiwgIi4uL3Jlc291
cmNlcy9yZXNldC10ZW1wLWZpbGUucGhwP2ZpbGVuYW1lPXBvc3QudG1wIiwgZmFsc2UpOworICAg
IHhoci5zZW5kKG51bGwpOworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKzwvc2NyaXB0Pgor
PD9waHAKK2NsZWFyc3RhdGNhY2hlKCk7CitpZiAoJF9HRVRbImZpbmlzaCJdID09ICJ0cnVlIikg
eworICAgIC8vIFRoZSBpbml0aWFsIGxvYWQgb2YgdGhlIGltYWdlIG1pZ2h0IGhhdmUgYmVlbiBk
b25lIGZyb20gdGhlIGNhY2hlLiBJbiB0aGF0IGNhc2UsIHRvdWNoIHRoZQorICAgIC8vIHN0YXRl
IGZpbGUgdG8gaW5kaWNhdGUgYSBsb2FkIGhhcyBhbHJlYWR5IG9jY3VycmVkLgorICAgIGlmICgh
ZmlsZV9leGlzdHMoc3lzX2dldF90ZW1wX2RpcigpIC4gIi9wb3N0LnRtcCIpKSB7CisgICAgICAg
IGVjaG8gIjxzY3JpcHQ+IjsKKyAgICAgICAgZWNobyAieGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0
OyI7CisgICAgICAgIGVjaG8gInhoci5vcGVuKCdHRVQnLCAnLi4vcmVzb3VyY2VzL3RvdWNoLXRl
bXAtZmlsZS5waHA/ZmlsZW5hbWU9cG9zdC50bXAnLCBmYWxzZSk7IjsKKyAgICAgICAgZWNobyAi
eGhyLnNlbmQobnVsbCk7IjsKKyAgICAgICAgZWNobyAiPC9zY3JpcHQ+IjsKKyAgICB9CisgICAg
ZWNobyAiPGltZyBzcmM9J3Jlc291cmNlcy9wb3N0LWltYWdlLXRvLXZlcmlmeS5waHAnIG9ubG9h
ZD1cImxvZ0FuZEZpbmlzaCgnUEFTUycpO1wiIG9uZXJyb3I9XCJsb2dBbmRGaW5pc2goJ0ZBSUwn
KTtcIj48L2ltZz4iOworfSBlbHNlIHsKKyAgICBlY2hvICI8Zm9ybSBhY3Rpb249J3Bvc3QtcmVk
aXJlY3QtZ2V0LnBocCcgbWV0aG9kPSdwb3N0Jz4iOworICAgIGVjaG8gIjxpbnB1dCB0eXBlPSdz
dWJtaXQnIGlkPSdzdWJtaXQnIG5hbWU9J3N1Ym1pdCcgdmFsdWU9J3JlZGlyZWN0Jz4iOworICAg
IGVjaG8gIjwvZm9ybT4iOworICAgIGVjaG8gIjxpbWcgc3JjPSdyZXNvdXJjZXMvcG9zdC1pbWFn
ZS10by12ZXJpZnkucGhwJyBvbmxvYWQ9XCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3VibWl0
JykuY2xpY2soKTtcIiBvbmVycm9yPVwibG9nQW5kRmluaXNoKCdGQUlMIG9uIGluaXRpYWwgbG9h
ZCcpO1wiPjwvaW1nPiI7Cit9IAorPz4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRl
c3RzL2h0dHAvdGVzdHMvY2FjaGUvcG9zdC13aXRoLWNhY2hlZC1zdWJyZXNvdXJjZXMtZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUvcG9zdC13
aXRoLWNhY2hlZC1zdWJyZXNvdXJjZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS9wb3N0LXdpdGgtY2FjaGVkLXN1YnJlc291cmNlcy1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMiBAQAorUEFTUworCkluZGV4OiBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL3Jlc291cmNlcy9wb3N0LWltYWdlLXRvLXZlcmlm
eS5waHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS9yZXNvdXJj
ZXMvcG9zdC1pbWFnZS10by12ZXJpZnkucGhwCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9jYWNoZS9yZXNvdXJjZXMvcG9zdC1pbWFnZS10by12ZXJpZnkucGhwCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDMyIEBACis8P3BocAorY2xlYXJzdGF0Y2FjaGUoKTsKK2lmIChm
aWxlX2V4aXN0cyhzeXNfZ2V0X3RlbXBfZGlyKCkgLiAiL3Bvc3QudG1wIikpIHsKKyAgICBoZWFk
ZXIoJ0hUVFAvMS4xIDQwNCBOb3QgRm91bmQnKTsKKyAgICBleGl0KCk7Cit9IGVsc2UgeworICAg
ICR0bXBGaWxlID0gZm9wZW4oc3lzX2dldF90ZW1wX2RpcigpIC4gIi9wb3N0LnRtcCIsICd3Jyk7
CisgICAgZmNsb3NlKCR0bXBGaWxlKTsKKyAgICAKKyAgICAkZmlsZW5hbWUgPSAnY29tcGFzcy1u
by1jYWNoZS5qcGcnOworICAgICRmaWxlbXRpbWUgPSBmaWxlbXRpbWUoJGZpbGVuYW1lKTsKKyAg
ICAkZmlsZXNpemUgPSBmaWxlc2l6ZSgkZmlsZW5hbWUpOworCisgICAgJGV0YWcgPSAnIicgLiAk
ZmlsZXNpemUgLiAnLScgLiAkZmlsZW10aW1lIC4gJyInOworICAgICRsYXN0X21vZGlmaWVkID0g
Z21kYXRlKERBVEVfUkZDMTEyMywgJGZpbGVtdGltZSk7CisgICAgJG1heF9hZ2UgPSAxMiAqIDMx
ICogMjQgKiA2MCAqIDYwOyAvL29uZSB5ZWFyCisgICAgJGV4cGlyZXMgPSBnbWRhdGUoREFURV9S
RkMxMTIzLCB0aW1lKCkgKyAkbWF4X2FnZSk7CisKKyAgICAkaGFuZGxlID0gZm9wZW4oJGZpbGVu
YW1lLCAncmInKTsKKyAgICAkY29udGVudHMgPSBmcmVhZCgkaGFuZGxlLCAkZmlsZXNpemUpOwor
ICAgIGZjbG9zZSgkaGFuZGxlKTsKKworICAgIGhlYWRlcignQ2FjaGUtQ29udHJvbDogcHVibGlj
LCBtYXgtYWdlPScgLiAkbWF4X2FnZSk7CisgICAgaGVhZGVyKCdFeHBpcmVzOiAnIC4gJGV4cGly
ZXMpOworICAgIGhlYWRlcignQ29udGVudC1UeXBlOiBpbWFnZS9wbmcnKTsKKyAgICBoZWFkZXIo
J0NvbnRlbnQtTGVuZ3RoOiAnIC4gJGZpbGVzaXplKTsKKyAgICBoZWFkZXIoJ0V0YWc6ICcgLiAk
ZXRhZyk7CisgICAgaGVhZGVyKCdMYXN0LU1vZGlmaWVkOiAnIC4gJGxhc3RfbW9kaWZpZWQpOwor
ICAgIGVjaG8gJGNvbnRlbnRzOworICAgIGV4aXQoKTsKK30KKz8+ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS9wb3N0LXdpdGgt
Y2FjaGVkLXN1YnJlc291cmNlcy5waHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9jYWNoZS9wb3N0LXdpdGgtY2FjaGVkLXN1YnJlc291cmNlcy5waHAJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL3Bvc3Qtd2l0aC1jYWNoZWQtc3VicmVz
b3VyY2VzLnBocAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MiBAQAorPD9waHAKKy8vIFRoaXMg
dGVzdCBsb2FkcyBhbiB1bmNhY2hlYWJsZSBtYWluIHJlc291cmNlIGFuZCBhIGNhY2hlYWJsZSBp
bWFnZSBzdWJyZXNvdXJjZS4KKy8vIFdlIHJlcXVlc3QgdGhpcyBwYWdlIGFzIGEgR0VULCB0aGVu
IHJlbG9hZCB0aGlzIHBhZ2Ugd2l0aCBhIFBPU1QuCisvLyBPbiB0aGUgcG9zdCByZXF1ZXN0LCB0
aGUgaW1hZ2Ugc2hvdWxkIGJlIGxvYWRlZCBmcm9tIHRoZSBjYWNoZSBhbmQgbm8gSFRUUAorLy8g
cmVxdWVzdCBzaG91bGQgYmUgc2VudC4gVGhlIGltYWdlIHJlc291cmNlIHdpbGwgcmV0dXJuIDQw
NCBpZiBpdCByZWNlaXZlcworLy8gYSBzZWNvbmQgcmVxdWVzdCwgd2hpY2ggd2lsbCBjYXVzZSB1
cyB0byBGQUlMLgorLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0zODY5MAoraGVhZGVyKCdDYWNoZS1Db250cm9sOiBuby1jYWNoZSwgbm8tc3RvcmUsIG11c3Qt
cmV2YWxpZGF0ZSwgbWF4LWFnZT0wJyk7CitoZWFkZXIoJ1ByYWdtYTogbm8tY2FjaGUnKTsKK2hl
YWRlcignRXhwaXJlczogJyAuIGdtZGF0ZShEQVRFX1JGQzExMjMsIHRpbWUoKS0xKSk7Cis/Pgor
PGh0bWw+Cis8Ym9keT4KKzxkaXYgaWQ9InJlc3VsdCI+PC9kaXY+Cis8c2NyaXB0PgoraWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9
CisgICAgCitmdW5jdGlvbiBsb2dBbmRGaW5pc2gobWVzc2FnZSkKK3sKKyAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgicmVzdWx0IikuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5v
ZGUobWVzc2FnZSkpOworICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3Q7CisgICAgeGhy
Lm9wZW4oIkdFVCIsICIuLi9yZXNvdXJjZXMvcmVzZXQtdGVtcC1maWxlLnBocD9maWxlbmFtZT1w
b3N0LnRtcCIsIGZhbHNlKTsKKyAgICB4aHIuc2VuZChudWxsKTsKKyAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlE
b25lKCk7Cit9Cis8L3NjcmlwdD4KKzw/cGhwCitjbGVhcnN0YXRjYWNoZSgpOworaWYgKCRfUE9T
VFsic3VibWl0Il0gPT0gImZpbmlzaCIpIHsKKyAgICAvLyBUaGUgaW5pdGlhbCBsb2FkIG9mIHRo
ZSBpbWFnZSBtaWdodCBoYXZlIGJlZW4gZG9uZSBmcm9tIHRoZSBjYWNoZS4gSW4gdGhhdCBjYXNl
LCB0b3VjaCB0aGUKKyAgICAvLyBzdGF0ZSBmaWxlIHRvIGluZGljYXRlIGEgbG9hZCBoYXMgYWxy
ZWFkeSBvY2N1cnJlZC4KKyAgICBpZiAoIWZpbGVfZXhpc3RzKHN5c19nZXRfdGVtcF9kaXIoKSAu
ICIvcG9zdC50bXAiKSkgeworICAgICAgICBlY2hvICI8c2NyaXB0PiI7CisgICAgICAgIGVjaG8g
InhociA9IG5ldyBYTUxIdHRwUmVxdWVzdDsiOworICAgICAgICBlY2hvICJ4aHIub3BlbignR0VU
JywgJy4uL3Jlc291cmNlcy90b3VjaC10ZW1wLWZpbGUucGhwP2ZpbGVuYW1lPXBvc3QudG1wJywg
ZmFsc2UpOyI7CisgICAgICAgIGVjaG8gInhoci5zZW5kKG51bGwpOyI7CisgICAgICAgIGVjaG8g
Ijwvc2NyaXB0PiI7CisgICAgfQorICAgIGVjaG8gIjxpbWcgc3JjPSdyZXNvdXJjZXMvcG9zdC1p
bWFnZS10by12ZXJpZnkucGhwJyBvbmxvYWQ9XCJsb2dBbmRGaW5pc2goJ1BBU1MnKTtcIiBvbmVy
cm9yPVwibG9nQW5kRmluaXNoKCdGQUlMJyk7XCI+PC9pbWc+IjsKK30gZWxzZSB7CisgICAgZWNo
byAiPGZvcm0gYWN0aW9uPSdwb3N0LXdpdGgtY2FjaGVkLXN1YnJlc291cmNlcy5waHAnIG1ldGhv
ZD0ncG9zdCc+IjsKKyAgICBlY2hvICI8aW5wdXQgdHlwZT0nc3VibWl0JyBpZD0nc3VibWl0JyBu
YW1lPSdzdWJtaXQnIHZhbHVlPSdmaW5pc2gnPiI7CisgICAgZWNobyAiPC9mb3JtPiI7CisgICAg
ZWNobyAiPGltZyBzcmM9J3Jlc291cmNlcy9wb3N0LWltYWdlLXRvLXZlcmlmeS5waHAnIG9ubG9h
ZD1cImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzdWJtaXQnKS5jbGljaygpO1wiIG9uZXJyb3I9
XCJsb2dBbmRGaW5pc2goJ0ZBSUwgb24gaW5pdGlhbCBsb2FkJyk7XCI+PC9pbWc+IjsKK30gCis/
PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS9w
b3N0LXJlZGlyZWN0LWdldC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9jYWNoZS9wb3N0LXJlZGlyZWN0LWdldC1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL3Bvc3QtcmVkaXJlY3QtZ2V0LWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyIEBACitQQVNTCisKSW5kZXg6IExh
eW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDgxMzkxKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDMtMTcgIE5hdGUgQ2hhcGluICA8amFwaGV0QGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUZXN0cyBmb3IgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4Njkw
LgorCisgICAgICAgICogaHR0cC90ZXN0cy9jYWNoZS9wb3N0LXJlZGlyZWN0LWdldC1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvY2FjaGUvcG9zdC1yZWRpcmVjdC1n
ZXQucGhwOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2NhY2hlL3Bvc3Qtd2l0aC1jYWNo
ZWQtc3VicmVzb3VyY2VzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0
cy9jYWNoZS9wb3N0LXdpdGgtY2FjaGVkLXN1YnJlc291cmNlcy5waHA6IEFkZGVkLgorICAgICAg
ICAqIGh0dHAvdGVzdHMvY2FjaGUvcmVzb3VyY2VzL3Bvc3QtaW1hZ2UtdG8tdmVyaWZ5LnBocDog
QWRkZWQuCisKIDIwMTEtMDMtMTcgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIERpc2FibGUgaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yayB0ZXN0cwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>