<?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>27719</bug_id>
          
          <creation_ts>2009-07-27 11:06:44 -0700</creation_ts>
          <short_desc>[Chromium] Regression in r42671 - js event object being hidden.</short_desc>
          <delta_ts>2009-08-12 11:44:27 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Nate Chapin">japhet</reporter>
          <assigned_to name="Nate Chapin">japhet</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>noel.gordon</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>134949</commentid>
    <comment_count>0</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2009-07-27 11:06:44 -0700</bug_when>
    <thetext>The event object should be visible to javascript running on a page.  Currently, the v8 bindings are setting it as a hidden value, causing certain pages to have unintended behaviors.

(Example at www.anselm.edu, the buttons at the top should have menus triggered onmouseover)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134952</commentid>
    <comment_count>1</comment_count>
      <attachid>33557</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2009-07-27 11:09:12 -0700</bug_when>
    <thetext>Created attachment 33557
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134953</commentid>
    <comment_count>2</comment_count>
      <attachid>33557</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-07-27 11:12:10 -0700</bug_when>
    <thetext>Comment on attachment 33557
patch

ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134955</commentid>
    <comment_count>3</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2009-07-27 11:19:12 -0700</bug_when>
    <thetext>Landed as r46421.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>136438</commentid>
    <comment_count>4</comment_count>
    <who name="noel gordon">noel.gordon</who>
    <bug_when>2009-08-01 03:40:25 -0700</bug_when>
    <thetext>Do you need to update ACCESSOR_GETTER(DOMWindowEvent) in
  http://trac.webkit.org/browser/trunk/WebCore/bindings/v8/custom/V8DOMWindowCustom.cpp?#L146
too?  since it tries to extract window.event using:
  v8::Handle&lt;v8::Value&gt; jsEvent = context-&gt;Global()-&gt;GetHiddenValue(eventSymbol);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137044</commentid>
    <comment_count>5</comment_count>
      <attachid>34074</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2009-08-04 10:18:56 -0700</bug_when>
    <thetext>Created attachment 34074
patch2 - missed a window.event accessor</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137045</commentid>
    <comment_count>6</comment_count>
      <attachid>34074</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-08-04 10:20:33 -0700</bug_when>
    <thetext>Comment on attachment 34074
patch2 - missed a window.event accessor

ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137049</commentid>
    <comment_count>7</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2009-08-04 10:28:42 -0700</bug_when>
    <thetext>Landed 2nd patch as r46769.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137174</commentid>
    <comment_count>8</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2009-08-04 16:11:48 -0700</bug_when>
    <thetext>My solution appears to have broken things, so this is getting reopened.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137175</commentid>
    <comment_count>9</comment_count>
      <attachid>34097</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2009-08-04 16:13:52 -0700</bug_when>
    <thetext>Created attachment 34097
revert the previous patches</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137176</commentid>
    <comment_count>10</comment_count>
      <attachid>34097</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-08-04 16:15:32 -0700</bug_when>
    <thetext>Comment on attachment 34097
revert the previous patches

ok. Sorry about that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137179</commentid>
    <comment_count>11</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2009-08-04 16:20:58 -0700</bug_when>
    <thetext>Revert previous changes at r46784.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137209</commentid>
    <comment_count>12</comment_count>
      <attachid>34074</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-08-04 17:36:40 -0700</bug_when>
    <thetext>Comment on attachment 34074
patch2 - missed a window.event accessor

This flag seems to be confusing the commit queue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137210</commentid>
    <comment_count>13</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-08-04 17:41:20 -0700</bug_when>
    <thetext>Actually, it just looks like  http://trac.webkit.org/changeset/46784 won the race.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>138773</commentid>
    <comment_count>14</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2009-08-10 12:44:01 -0700</bug_when>
    <thetext>Reopening again for attempt #2 at actually fixing this issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>138774</commentid>
    <comment_count>15</comment_count>
      <attachid>34499</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2009-08-10 12:44:54 -0700</bug_when>
    <thetext>Created attachment 34499
patch - Add a DOMWindowEvent CustomSetter to V8DOMWindowCustom.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>138777</commentid>
    <comment_count>16</comment_count>
      <attachid>34499</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-08-10 12:56:07 -0700</bug_when>
    <thetext>Comment on attachment 34499
patch - Add a DOMWindowEvent CustomSetter to V8DOMWindowCustom.cpp

&gt;  
&gt; -        attribute [Replaceable, CustomGetter] Event event;
&gt; +        attribute [Custom] Event event;

This will break JSC build. Let&apos;s just add V8CustomSetter instead.

&gt; +        * fast/events/manually-nulled-event-expected.txt: Added.
&gt; +        * fast/events/manually-nulled-event.html: Added.

Yucky name. How about setting-event-to-null.html?


&gt; +&lt;script language=&quot;javascript&quot;&gt;

I would rather see this code in &lt;head&gt; element, initiated by body onload=&quot;runTest();&quot;

&gt; +layoutTestController.dumpAsText();

need to check for layoutTestController existence:

if (window.layoutTestController)

&gt; +
&gt; +&lt;/script&gt;
&gt; +&lt;/body&lt;/html&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>138845</commentid>
    <comment_count>17</comment_count>
      <attachid>34522</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2009-08-10 15:35:37 -0700</bug_when>
    <thetext>Created attachment 34522
patch2 - Fixed DOMWindow.idl and cleaned up logic in CodeGeneratorV8.pm</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>138875</commentid>
    <comment_count>18</comment_count>
      <attachid>34522</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-08-10 18:54:20 -0700</bug_when>
    <thetext>Comment on attachment 34522
patch2 - Fixed DOMWindow.idl and cleaned up logic in CodeGeneratorV8.pm

You should test what happens when you set window.event to null.  Currently, you&apos;re changing the setter but not actually testing it!

Also, I&apos;m skeptical that we should grab CurrentContext in the setter.  Shouldn&apos;t we grab the window that the setter is being called on?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>138977</commentid>
    <comment_count>19</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2009-08-11 08:51:01 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; (From update of attachment 34522 [details])
&gt; You should test what happens when you set window.event to null.  Currently,
&gt; you&apos;re changing the setter but not actually testing it!
I&apos;m either misinterpreting this comment or you&apos;re misunderstanding the test.  Here&apos;s what&apos;s happening:
1. During page load, window.event gets set to null.  In V8, this will call the custom setter (without the custom setter, the custom getter will get swallowed by the nulling of the window.event object).
2. We dispatch a mouse event.  V8AbstractEventListener::invokeEvent() sets the event hidden value.
3. We compare event to null.  If the custom setter was called, the custom getter will be called here and will access the event hidden value.  Otherwise, V8 will return null without using the custom getter and the test will fail.

Does that make sense?

&gt; 
&gt; Also, I&apos;m skeptical that we should grab CurrentContext in the setter. 
&gt; Shouldn&apos;t we grab the window that the setter is being called on?
You very well may be right here, I copied behavior from the custom getter which may or may not be the correct thing to do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>138979</commentid>
    <comment_count>20</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-08-11 09:03:01 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; Does that make sense?

Ah, I missed that.  Can we check the value of window.event before and after setting it to null?  Can we also check the value of window.event after the event is done running?  Also, why are we checking the current window.event value against undefined?  It&apos;s going to be in some predictable state at that point.  We shouldn&apos;t need the branch.

&gt; &gt; Also, I&apos;m skeptical that we should grab CurrentContext in the setter. 
&gt; &gt; Shouldn&apos;t we grab the window that the setter is being called on?
&gt;
&gt; You very well may be right here, I copied behavior from the custom getter which
&gt; may or may not be the correct thing to do.

You should add a second test to see what the right behavior is here.  The way you test this is by having one frame call a function in another frame and then setting the value of event there.  The current context will be the window that includes the second function.  You might need to use with (parent) { event = null } to get the parent frame&apos;s window in scope.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139012</commentid>
    <comment_count>21</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2009-08-11 10:12:56 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; (In reply to comment #19)
&gt; &gt; Does that make sense?
&gt; 
&gt; Ah, I missed that.  Can we check the value of window.event before and after
&gt; setting it to null?  Can we also check the value of window.event after the
&gt; event is done running?  Also, why are we checking the current window.event
&gt; value against undefined?  It&apos;s going to be in some predictable state at that
&gt; point.  We shouldn&apos;t need the branch.
Done.  The branch was there because I copy/pasted that line of javascript from the website in the original bug report. :-)

&gt; 
&gt; &gt; &gt; Also, I&apos;m skeptical that we should grab CurrentContext in the setter. 
&gt; &gt; &gt; Shouldn&apos;t we grab the window that the setter is being called on?
&gt; &gt;
&gt; &gt; You very well may be right here, I copied behavior from the custom getter which
&gt; &gt; may or may not be the correct thing to do.
&gt; 
&gt; You should add a second test to see what the right behavior is here.  The way
&gt; you test this is by having one frame call a function in another frame and then
&gt; setting the value of event there.  The current context will be the window that
&gt; includes the second function.  You might need to use with (parent) { event =
&gt; null } to get the parent frame&apos;s window in scope.
Will do.  Is there a layout test that would serve as a good example for the format of a test like this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139018</commentid>
    <comment_count>22</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-08-11 10:16:19 -0700</bug_when>
    <thetext>&gt; Will do.  Is there a layout test that would serve as a good example for the
&gt; format of a test like this?

You should look for some in the http/security folder (or one of its subfolders) with &quot;lexical&quot; in its name.  There are some test there that do similar things for other APIs.  Although don&apos;t think there are any that have needed the with() trick yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139080</commentid>
    <comment_count>23</comment_count>
      <attachid>34587</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2009-08-11 13:34:26 -0700</bug_when>
    <thetext>Created attachment 34587
patch3 - Add second layout test

The DOMWindowEvent setter has been modified to use the entered context instead of the current context.  Might that be the right answer? :-)

Extra scrutiny on the new layout test would also be appreciated, as I&apos;m not confident I&apos;m actually testing the right thing.  Chrome, FF, and Safari all give the same results on it though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139082</commentid>
    <comment_count>24</comment_count>
      <attachid>34587</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-08-11 13:47:00 -0700</bug_when>
    <thetext>Comment on attachment 34587
patch3 - Add second layout test

Getting close.  A couple points:

1) I don&apos;t think you need the with() block in the second test.  It&apos;s not really doing anything at the moment.  You can just say parent.frames[1], etc.

2) You should move the new test to the same folder as the first test.  You&apos;re not really testing the security of aboutBlank like the other tests in that folder.

3) GetEntered() is also wrong, although you&apos;d need a more complex test to see that.  The correct window is the one that the setter is being called on.  You can see how to do this by looking at the location setter:

http://trac.webkit.org/browser/trunk/WebCore/bindings/v8/custom/V8DOMWindowCustom.cpp#L164

The event getter is probably also wrong in the same way at http://trac.webkit.org/browser/trunk/WebCore/bindings/v8/custom/V8DOMWindowCustom.cpp#L149 but we can deal with that in another patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139107</commentid>
    <comment_count>25</comment_count>
      <attachid>34595</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2009-08-11 14:37:51 -0700</bug_when>
    <thetext>Created attachment 34595
patch4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139111</commentid>
    <comment_count>26</comment_count>
      <attachid>34595</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-08-11 14:46:51 -0700</bug_when>
    <thetext>Comment on attachment 34595
patch4

Ok.  One more subtle issue, then we should be all set.  When you write bindings for the window object, you have to be super careful about security because the window object is exposed across domains.  In particular, you need to add an access control check:

 if (!V8Proxy::canAccessFrame(imp-&gt;frame(), true))
        return v8::Undefined();

(I&apos;m not sure what that &quot;true&quot; is about, you should investigate before adding this code.)

Also, you should be aware that frame() might be null if the window is detached from the frame.  In that case, you probably want to return without doing anything.  You can look at addEventListener as a model:

http://trac.webkit.org/browser/trunk/WebCore/bindings/v8/custom/V8DOMWindowCustom.cpp#L197</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139312</commentid>
    <comment_count>27</comment_count>
    <who name="noel gordon">noel.gordon</who>
    <bug_when>2009-08-12 06:49:01 -0700</bug_when>
    <thetext>&gt;  ... you probably want to return without doing anything.

Now there&apos;s an idea.  Nate could you try that?  Define the setter, but don&apos;t do anything in the body, just return.  Does that fix the www.anselm.edu site?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139378</commentid>
    <comment_count>28</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2009-08-12 10:06:18 -0700</bug_when>
    <thetext>(In reply to comment #27)
&gt; &gt;  ... you probably want to return without doing anything.
&gt; 
&gt; Now there&apos;s an idea.  Nate could you try that?  Define the setter, but don&apos;t do
&gt; anything in the body, just return.  Does that fix the www.anselm.edu site?

Yes, an empty custom setter does fix the www.anselm.edu issue.  It does, however, create an unnecessary difference between Chromium&apos;s behavior and that of FF and Safari browsers (since they both allow window.event to be manually overwritten, and an empty custom setter would prevent that).

(In reply to comment #26)
&gt; (From update of attachment 34595 [details])
&gt;  if (!V8Proxy::canAccessFrame(imp-&gt;frame(), true))
&gt;         return v8::Undefined();
&gt; 
&gt; (I&apos;m not sure what that &quot;true&quot; is about, you should investigate before adding
&gt; this code.)

The &quot;true&quot; indicates that V8Proxy::reportUnsafeAccessTo() should be called if imp-&gt;frame() cannot be accessed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139380</commentid>
    <comment_count>29</comment_count>
      <attachid>34669</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2009-08-12 10:17:57 -0700</bug_when>
    <thetext>Created attachment 34669
patch5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139443</commentid>
    <comment_count>30</comment_count>
      <attachid>34669</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-08-12 11:24:11 -0700</bug_when>
    <thetext>Comment on attachment 34669
patch5

Great!  Thanks for your patience.  (There&apos;s some unneeded code in the test, but I don&apos;t think we should worry about that too much.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139448</commentid>
    <comment_count>31</comment_count>
      <attachid>34669</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2009-08-12 11:31:55 -0700</bug_when>
    <thetext>Comment on attachment 34669
patch5

I&apos;ll commit this myself.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139455</commentid>
    <comment_count>32</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2009-08-12 11:44:27 -0700</bug_when>
    <thetext>Landed as r47130.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33557</attachid>
            <date>2009-07-27 11:09:12 -0700</date>
            <delta_ts>2009-08-04 16:13:52 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>2188</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NjQxOSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMDktMDctMjcgIE5hdGUgQ2hhcGluICA8amFwaGV0QGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBG
aXggYSByZWdyZXNzaW9uIGludHJvZHVjZWQgaW4gcjQyNjcxLCB3aGljaCBjYXVzZWQgdGhlIGpz
IGV2ZW50IAorICAgICAgICBvYmplY3QgdG8gYmUgaGlkZGVuIChzb21lIHdlYnNpdGVzIGRlcGVu
ZCBvbiBiZWluZyBhYmxlIHRvIGFjY2VzcyBpdCkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3NzE5CisKKyAgICAgICAgKiBiaW5kaW5ncy92OC9W
OEFic3RyYWN0RXZlbnRMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOEFic3RyYWN0
RXZlbnRMaXN0ZW5lcjo6aW52b2tlRXZlbnRIYW5kbGVyKTogTWFrZSB0aGUgZXZlbnQgb2JqZWN0
IHZpc2libGUgdG8gamF2YXNjcmlwdCwgaW5zdGVhZCBvZiBoaWRkZW4uCisKIDIwMDktMDctMjcg
IEppYW4gTGkgIDxqaWFubGlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERh
dmlkIExldmluLgpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9WOEFic3RyYWN0RXZlbnRMaXN0
ZW5lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9WOEFic3RyYWN0RXZl
bnRMaXN0ZW5lci5jcHAJKHJldmlzaW9uIDQ2NDE5KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9W
OEFic3RyYWN0RXZlbnRMaXN0ZW5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3LDExICs2Nywx
MSBAQCB2b2lkIFY4QWJzdHJhY3RFdmVudExpc3RlbmVyOjppbnZva2VFdmVuCiAgICAgICAgIHRy
eUNhdGNoLlNldFZlcmJvc2UodHJ1ZSk7CiAKICAgICAgICAgLy8gU2F2ZSB0aGUgb2xkICdldmVu
dCcgcHJvcGVydHkgc28gd2UgY2FuIHJlc3RvcmUgaXQgbGF0ZXIuCi0gICAgICAgIHY4OjpMb2Nh
bDx2ODo6VmFsdWU+IHNhdmVkRXZlbnQgPSB2OENvbnRleHQtPkdsb2JhbCgpLT5HZXRIaWRkZW5W
YWx1ZShldmVudFN5bWJvbCk7CisgICAgICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHNhdmVkRXZl
bnQgPSB2OENvbnRleHQtPkdsb2JhbCgpLT5HZXQoZXZlbnRTeW1ib2wpOwogICAgICAgICB0cnlD
YXRjaC5SZXNldCgpOwogCiAgICAgICAgIC8vIE1ha2UgdGhlIGV2ZW50IGF2YWlsYWJsZSBpbiB0
aGUgZ2xvYmFsIG9iamVjdCwgc28gRE9NV2luZG93IGNhbiBleHBvc2UgaXQuCi0gICAgICAgIHY4
Q29udGV4dC0+R2xvYmFsKCktPlNldEhpZGRlblZhbHVlKGV2ZW50U3ltYm9sLCBqc0V2ZW50KTsK
KyAgICAgICAgdjhDb250ZXh0LT5HbG9iYWwoKS0+U2V0KGV2ZW50U3ltYm9sLCBqc0V2ZW50KTsK
ICAgICAgICAgdHJ5Q2F0Y2guUmVzZXQoKTsKIAogICAgICAgICAvLyBDYWxsIHRoZSBldmVudCBo
YW5kbGVyLgpAQCAtODAsOSArODAsOSBAQCB2b2lkIFY4QWJzdHJhY3RFdmVudExpc3RlbmVyOjpp
bnZva2VFdmVuCiAKICAgICAgICAgLy8gUmVzdG9yZSB0aGUgb2xkIGV2ZW50LiBUaGlzIG11c3Qg
YmUgZG9uZSBmb3IgYWxsIGV4aXQgcGF0aHMgdGhyb3VnaCB0aGlzIG1ldGhvZC4KICAgICAgICAg
aWYgKHNhdmVkRXZlbnQuSXNFbXB0eSgpKQotICAgICAgICAgICAgdjhDb250ZXh0LT5HbG9iYWwo
KS0+U2V0SGlkZGVuVmFsdWUoZXZlbnRTeW1ib2wsIHY4OjpVbmRlZmluZWQoKSk7CisgICAgICAg
ICAgICB2OENvbnRleHQtPkdsb2JhbCgpLT5TZXQoZXZlbnRTeW1ib2wsIHY4OjpVbmRlZmluZWQo
KSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHY4Q29udGV4dC0+R2xvYmFsKCktPlNldEhp
ZGRlblZhbHVlKGV2ZW50U3ltYm9sLCBzYXZlZEV2ZW50KTsKKyAgICAgICAgICAgIHY4Q29udGV4
dC0+R2xvYmFsKCktPlNldChldmVudFN5bWJvbCwgc2F2ZWRFdmVudCk7CiAgICAgICAgIHRyeUNh
dGNoLlJlc2V0KCk7CiAgICAgfQogCg==
</data>
<flag name="review"
          id="17821"
          type_id="1"
          status="+"
          setter="dglazkov"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34074</attachid>
            <date>2009-08-04 10:18:56 -0700</date>
            <delta_ts>2009-08-04 17:36:40 -0700</delta_ts>
            <desc>patch2 - missed a window.event accessor</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>1330</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0Njc2OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTQgQEAKKzIwMDktMDgtMDQgIE5hdGUgQ2hhcGluICA8amFwaGV0QGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBN
aXNzZWQgYSBwbGFjZSB0aGF0IGV4cGVjdHMgd2luZG93LmV2ZW50IHRvIGJlIGhpZGRlbiB3aGVu
IGl0IHNob3VsZG4ndCBiZS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9Mjc3MTkKKworICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdp
bmRvd0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBQ0NFU1NPUl9HRVRURVIpOiB3aW5k
b3cuZXZlbnQgaXMgbm8gbG9uZ2VyIGhpZGRlbi4KKwogMjAwOS0wOC0wMyAgQ2hyaXMgRmxlaXph
Y2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEpvbiBIb25l
eWN1dHQuCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3Rv
bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5k
b3dDdXN0b20uY3BwCShyZXZpc2lvbiA0Njc2OCkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ3LDcgKzE0Nyw3
IEBAIEFDQ0VTU09SX0dFVFRFUihET01XaW5kb3dFdmVudCkKIHsKICAgICB2ODo6TG9jYWw8djg6
OlN0cmluZz4gZXZlbnRTeW1ib2wgPSB2ODo6U3RyaW5nOjpOZXdTeW1ib2woImV2ZW50Iik7CiAg
ICAgdjg6OkxvY2FsPHY4OjpDb250ZXh0PiBjb250ZXh0ID0gdjg6OkNvbnRleHQ6OkdldEN1cnJl
bnQoKTsKLSAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4ganNFdmVudCA9IGNvbnRleHQtPkdsb2Jh
bCgpLT5HZXRIaWRkZW5WYWx1ZShldmVudFN5bWJvbCk7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IGpzRXZlbnQgPSBjb250ZXh0LT5HbG9iYWwoKS0+R2V0KGV2ZW50U3ltYm9sKTsKICAgICBp
ZiAoanNFdmVudC5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiAg
ICAgcmV0dXJuIGpzRXZlbnQ7Cg==
</data>
<flag name="review"
          id="18242"
          type_id="1"
          status="+"
          setter="dglazkov"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34097</attachid>
            <date>2009-08-04 16:13:52 -0700</date>
            <delta_ts>2009-08-10 12:44:54 -0700</delta_ts>
            <desc>revert the previous patches</desc>
            <filename>patch3.txt</filename>
            <type>text/plain</type>
            <size>2943</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9DaGFuZ2VM
b2cJKHJldmlzaW9uIDQ2NzgzKQ0KKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
DQpAQCAtMSwzICsxLDE2IEBADQorMjAwOS0wOC0wNCAgTmF0ZSBDaGFwaW4gIDxqYXBoZXRAY2hy
b21pdW0ub3JnPg0KKw0KKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuDQorDQor
ICAgICAgICBSZXZlcnQgcjQ2NDIxIGFuZCByNDY3NjksIHdoaWNoIGFwcGVhciB0byBoYXZlIHRv
dGFsbHkgaG9zZWQgdGhlIHY4IGJpbmRpbmdzLg0KKw0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3NzE5DQorDQorICAgICAgICAqIGJpbmRpbmdzL3Y4
L1Y4QWJzdHJhY3RFdmVudExpc3RlbmVyLmNwcDogUmV2ZXJ0IHI0NjQyMS4NCisgICAgICAgIChX
ZWJDb3JlOjpWOEFic3RyYWN0RXZlbnRMaXN0ZW5lcjo6aW52b2tlRXZlbnRIYW5kbGVyKToNCisg
ICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcDogUmV2ZXJ0
IHI0Njc2OS4NCisgICAgICAgIChXZWJDb3JlOjpBQ0NFU1NPUl9HRVRURVIpOg0KKw0KIDIwMDkt
MDgtMDQgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4NCiANCiAgICAgICAg
IFJldmlld2VkIGJ5IERhcmluIEFkbGVyLg0KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvVjhB
YnN0cmFjdEV2ZW50TGlzdGVuZXIuY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9iaW5kaW5n
cy92OC9WOEFic3RyYWN0RXZlbnRMaXN0ZW5lci5jcHAJKHJldmlzaW9uIDQ2NzgyKQ0KKysrIFdl
YkNvcmUvYmluZGluZ3MvdjgvVjhBYnN0cmFjdEV2ZW50TGlzdGVuZXIuY3BwCSh3b3JraW5nIGNv
cHkpDQpAQCAtNzMsMTEgKzczLDExIEBAIHZvaWQgVjhBYnN0cmFjdEV2ZW50TGlzdGVuZXI6Omlu
dm9rZUV2ZW4NCiAgICAgICAgIHRyeUNhdGNoLlNldFZlcmJvc2UodHJ1ZSk7DQogDQogICAgICAg
ICAvLyBTYXZlIHRoZSBvbGQgJ2V2ZW50JyBwcm9wZXJ0eSBzbyB3ZSBjYW4gcmVzdG9yZSBpdCBs
YXRlci4NCi0gICAgICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHNhdmVkRXZlbnQgPSB2OENvbnRl
eHQtPkdsb2JhbCgpLT5HZXQoZXZlbnRTeW1ib2wpOw0KKyAgICAgICAgdjg6OkxvY2FsPHY4OjpW
YWx1ZT4gc2F2ZWRFdmVudCA9IHY4Q29udGV4dC0+R2xvYmFsKCktPkdldEhpZGRlblZhbHVlKGV2
ZW50U3ltYm9sKTsNCiAgICAgICAgIHRyeUNhdGNoLlJlc2V0KCk7DQogDQogICAgICAgICAvLyBN
YWtlIHRoZSBldmVudCBhdmFpbGFibGUgaW4gdGhlIGdsb2JhbCBvYmplY3QsIHNvIERPTVdpbmRv
dyBjYW4gZXhwb3NlIGl0Lg0KLSAgICAgICAgdjhDb250ZXh0LT5HbG9iYWwoKS0+U2V0KGV2ZW50
U3ltYm9sLCBqc0V2ZW50KTsNCisgICAgICAgIHY4Q29udGV4dC0+R2xvYmFsKCktPlNldEhpZGRl
blZhbHVlKGV2ZW50U3ltYm9sLCBqc0V2ZW50KTsNCiAgICAgICAgIHRyeUNhdGNoLlJlc2V0KCk7
DQogDQogICAgICAgICAvLyBDYWxsIHRoZSBldmVudCBoYW5kbGVyLg0KQEAgLTg2LDkgKzg2LDkg
QEAgdm9pZCBWOEFic3RyYWN0RXZlbnRMaXN0ZW5lcjo6aW52b2tlRXZlbg0KIA0KICAgICAgICAg
Ly8gUmVzdG9yZSB0aGUgb2xkIGV2ZW50LiBUaGlzIG11c3QgYmUgZG9uZSBmb3IgYWxsIGV4aXQg
cGF0aHMgdGhyb3VnaCB0aGlzIG1ldGhvZC4NCiAgICAgICAgIGlmIChzYXZlZEV2ZW50LklzRW1w
dHkoKSkNCi0gICAgICAgICAgICB2OENvbnRleHQtPkdsb2JhbCgpLT5TZXQoZXZlbnRTeW1ib2ws
IHY4OjpVbmRlZmluZWQoKSk7DQorICAgICAgICAgICAgdjhDb250ZXh0LT5HbG9iYWwoKS0+U2V0
SGlkZGVuVmFsdWUoZXZlbnRTeW1ib2wsIHY4OjpVbmRlZmluZWQoKSk7DQogICAgICAgICBlbHNl
DQotICAgICAgICAgICAgdjhDb250ZXh0LT5HbG9iYWwoKS0+U2V0KGV2ZW50U3ltYm9sLCBzYXZl
ZEV2ZW50KTsNCisgICAgICAgICAgICB2OENvbnRleHQtPkdsb2JhbCgpLT5TZXRIaWRkZW5WYWx1
ZShldmVudFN5bWJvbCwgc2F2ZWRFdmVudCk7DQogICAgICAgICB0cnlDYXRjaC5SZXNldCgpOw0K
ICAgICB9DQogDQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dD
dXN0b20uY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhE
T01XaW5kb3dDdXN0b20uY3BwCShyZXZpc2lvbiA0Njc4MikNCisrKyBXZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkNCkBAIC0xNDcs
NyArMTQ3LDcgQEAgQUNDRVNTT1JfR0VUVEVSKERPTVdpbmRvd0V2ZW50KQ0KIHsNCiAgICAgdjg6
OkxvY2FsPHY4OjpTdHJpbmc+IGV2ZW50U3ltYm9sID0gdjg6OlN0cmluZzo6TmV3U3ltYm9sKCJl
dmVudCIpOw0KICAgICB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IGNvbnRleHQgPSB2ODo6Q29udGV4
dDo6R2V0Q3VycmVudCgpOw0KLSAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4ganNFdmVudCA9IGNv
bnRleHQtPkdsb2JhbCgpLT5HZXQoZXZlbnRTeW1ib2wpOw0KKyAgICB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4ganNFdmVudCA9IGNvbnRleHQtPkdsb2JhbCgpLT5HZXRIaWRkZW5WYWx1ZShldmVudFN5
bWJvbCk7DQogICAgIGlmIChqc0V2ZW50LklzRW1wdHkoKSkNCiAgICAgICAgIHJldHVybiB2ODo6
VW5kZWZpbmVkKCk7DQogICAgIHJldHVybiBqc0V2ZW50Ow0K
</data>
<flag name="review"
          id="18266"
          type_id="1"
          status="+"
          setter="dglazkov"
    />
    <flag name="commit-queue"
          id="18267"
          type_id="3"
          status="+"
          setter="dglazkov"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34499</attachid>
            <date>2009-08-10 12:44:54 -0700</date>
            <delta_ts>2009-08-10 15:35:37 -0700</delta_ts>
            <desc>patch - Add a DOMWindowEvent CustomSetter to V8DOMWindowCustom.cpp</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>5215</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0Njk5NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMDktMDgtMTAgIE5hdGUgQ2hhcGluICA8amFwaGV0QGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgYSBDdXN0b20gU2V0dGVyIGZvciBET01XaW5kb3dFdmVudCBpbiB0aGUgVjggYmluZGluZ3Mu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzcxOQor
CisgICAgICAgIFRlc3Q6IGZhc3QvZXZlbnRzL21hbnVhbGx5LW51bGxlZC1ldmVudC5odG1sCisK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21CaW5kaW5nLmg6CisgICAgICAg
ICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkFDQ0VTU09SX1NFVFRFUik6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuaWRsOgor
CiAyMDA5LTA4LTEwICBTdGV2ZSBGYWxrZW5idXJnICA8c2ZhbGtlbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgV2luZG93cyBidWlsZCBmaXguCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEN1c3RvbUJpbmRpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOEN1c3RvbUJpbmRpbmcuaAkocmV2aXNpb24gNDY5OTUpCisrKyBXZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUJpbmRpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMjE1LDcg
KzIxNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBERUNMQVJFX1BST1BFUlRZ
X0FDQ0VTU09SKENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRFN0cm9rZVN0eWxlKTsKICAgICAgICAg
REVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUihDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRGaWxsU3R5
bGUpOwotICAgICAgICBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SX0dFVFRFUihET01XaW5kb3dF
dmVudCk7CisgICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1IoRE9NV2luZG93RXZlbnQp
OwogICAgICAgICBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SX0dFVFRFUihET01XaW5kb3dDcnlw
dG8pOwogICAgICAgICBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SX1NFVFRFUihET01XaW5kb3dM
b2NhdGlvbik7CiAgICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1JfU0VUVEVSKERPTVdp
bmRvd09wZW5lcik7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRv
d0N1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhE
T01XaW5kb3dDdXN0b20uY3BwCShyZXZpc2lvbiA0Njk5NSkKKysrIFdlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUzLDYg
KzE1MywxMyBAQCBBQ0NFU1NPUl9HRVRURVIoRE9NV2luZG93RXZlbnQpCiAgICAgcmV0dXJuIGpz
RXZlbnQ7CiB9CiAKK0FDQ0VTU09SX1NFVFRFUihET01XaW5kb3dFdmVudCkKK3sKKyAgICB2ODo6
TG9jYWw8djg6OlN0cmluZz4gZXZlbnRTeW1ib2wgPSB2ODo6U3RyaW5nOjpOZXdTeW1ib2woImV2
ZW50Iik7CisgICAgdjg6OkxvY2FsPHY4OjpDb250ZXh0PiBjb250ZXh0ID0gdjg6OkNvbnRleHQ6
OkdldEN1cnJlbnQoKTsKKyAgICBjb250ZXh0LT5HbG9iYWwoKS0+U2V0SGlkZGVuVmFsdWUoZXZl
bnRTeW1ib2wsIHZhbHVlKTsKK30KKwogQUNDRVNTT1JfR0VUVEVSKERPTVdpbmRvd0NyeXB0bykK
IHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IG1lLgpJbmRleDogV2ViQ29yZS9wYWdlL0RPTVdp
bmRvdy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwJKHJldmlz
aW9uIDQ2OTk1KQorKysgV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwJKHdvcmtpbmcgY29weSkK
QEAgLTU1LDcgKzU1LDcgQEAgbW9kdWxlIHdpbmRvdyB7CiAgICAgICAgIGF0dHJpYnV0ZSBbUmVw
bGFjZWFibGVdIE5hdmlnYXRvciBjbGllbnRJbmZvcm1hdGlvbjsKICAgICAgICAgYXR0cmlidXRl
IFtEb05vdENoZWNrRG9tYWluU2VjdXJpdHksIEpTQ0N1c3RvbSwgVjhDdXN0b21TZXR0ZXIsIFY4
RGlzYWxsb3dTaGFkb3dpbmddIExvY2F0aW9uIGxvY2F0aW9uOwogCi0gICAgICAgIGF0dHJpYnV0
ZSBbUmVwbGFjZWFibGUsIEN1c3RvbUdldHRlcl0gRXZlbnQgZXZlbnQ7CisgICAgICAgIGF0dHJp
YnV0ZSBbQ3VzdG9tXSBFdmVudCBldmVudDsKIAogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUg
W0N1c3RvbV0gQ3J5cHRvIGNyeXB0bzsKIApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNDY5OTUpCisrKyBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAw
OS0wOC0xMCAgTmF0ZSBDaGFwaW4gIDxqYXBoZXRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIGxheW91dCB0ZXN0IHRv
IGVuc3VyZSB0aGF0IHdpbmRvdy5ldmVudCBjYW4gYmUgcHJvcGVybHkgYWNjZXNzZWQKKyAgICAg
ICAgYWZ0ZXIgaXQgaGFzIGJlZW4gbnVsbGVkIGJ5IGEgc2NyaXB0IG9uIGEgcGFnZS4KKworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc3MTkKKworICAg
ICAgICAqIGZhc3QvZXZlbnRzL21hbnVhbGx5LW51bGxlZC1ldmVudC1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL21hbnVhbGx5LW51bGxlZC1ldmVudC5odG1sOiBB
ZGRlZC4KKwogMjAwOS0wOC0wNyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgRGFuIEJlcm5zdGVpbi4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
ZXZlbnRzL21hbnVhbGx5LW51bGxlZC1ldmVudC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWFudWFsbHktbnVsbGVkLWV2ZW50LWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21hbnVhbGx5LW51bGxl
ZC1ldmVudC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMiBAQAorVGhpcyB0
ZXN0IHdpbGwgdHJpZ2dlciBhIG1vdXNlIG92ZXIgb2YgdGhpcyBlbGVtZW50LiBXZSB3aWxsIHRo
ZW4gY2hlY2sgdG8gc2VlIGlmIGV2ZW50IHdhcyBwcm9wZXJseSBzZXQgKGkuZS4sIG5vdCBudWxs
KS4gVGhpcyBpcyBpbiByZXNwb25zZSB0byBhIHY4IGJ1ZyB0aGF0IGNhbiBicmVhayB3aW5kb3cu
ZXZlbnQgZXhwb3N1cmUgaWYgdGhlIGNsaWVudCB0cmllcyB0byBtYW51YWxseSBzZXQgZXZlbnQu
DQorUEFTUzogZXZlbnQgaXMgdmFsaWQNCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9t
YW51YWxseS1udWxsZWQtZXZlbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy9tYW51YWxseS1udWxsZWQtZXZlbnQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2Zhc3QvZXZlbnRzL21hbnVhbGx5LW51bGxlZC1ldmVudC5odG1sCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDMxIEBACis8aHRtbD48Ym9keT4NCis8ZGl2IGlkPSJ0YXJnZXQiIG9uTW91
c2VPdmVyPSJtb3VzZU92ZXIoZXZlbnQpOyI+VGhpcyB0ZXN0IHdpbGwgdHJpZ2dlciBhIG1vdXNl
IG92ZXIgb2YgdGhpcyBlbGVtZW50LiAgDQorV2Ugd2lsbCB0aGVuIGNoZWNrIHRvIHNlZSBpZiBl
dmVudCB3YXMgcHJvcGVybHkgc2V0IChpLmUuLCBub3QgbnVsbCkuDQorVGhpcyBpcyBpbiByZXNw
b25zZSB0byBhIHY4IGJ1ZyB0aGF0IGNhbiBicmVhayB3aW5kb3cuZXZlbnQgZXhwb3N1cmUgaWYg
dGhlIGNsaWVudCB0cmllcyB0byBtYW51YWxseSBzZXQgZXZlbnQuPC9kaXY+DQorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+DQorPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+DQorZnVuY3Rp
b24gbG9nKHMpDQorew0KKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmFw
cGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHMgKyAiXG4iKSk7DQorfQ0KKw0KK2Z1
bmN0aW9uIG1vdXNlT3ZlcihldmVudCkNCit7DQorICAgIGlmIChldmVudCA9PT0gbnVsbCkgew0K
KyAgICAgICAgbG9nKCJGQUlMOiBldmVudCBpcyBudWxsIik7DQorICAgIH0gZWxzZSB7DQorICAg
ICAgICBsb2coIlBBU1M6IGV2ZW50IGlzIHZhbGlkIik7DQorICAgIH0NCit9DQorDQoraWYod2lu
ZG93LmV2ZW50ID09IHVuZGVmaW5lZCkgZXZlbnQgPSBudWxsOw0KKw0KK3ZhciB0YXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0Iik7DQordmFyIG5ld0V2ZW50ID0gZG9jdW1l
bnQuY3JlYXRlRXZlbnQoIk1vdXNlRXZlbnQiKTsNCituZXdFdmVudC5pbml0TW91c2VFdmVudCgi
bW91c2VvdmVyIiwgZmFsc2UsIGZhbHNlLCB3aW5kb3csIDAsIDEwLCAxMCwgMTAsIDEwLCBmYWxz
ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgMCwgdGFyZ2V0KTsNCit0YXJnZXQuZGlzcGF0Y2hFdmVu
dChuZXdFdmVudCk7DQorDQorbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOw0KKw0K
Kzwvc2NyaXB0Pg0KKzwvYm9keTwvaHRtbD4NCg==
</data>
<flag name="review"
          id="18654"
          type_id="1"
          status="-"
          setter="dglazkov"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34522</attachid>
            <date>2009-08-10 15:35:37 -0700</date>
            <delta_ts>2009-08-11 13:34:26 -0700</delta_ts>
            <desc>patch2 - Fixed DOMWindow.idl and cleaned up logic in CodeGeneratorV8.pm</desc>
            <filename>patch2.txt</filename>
            <type>text/plain</type>
            <size>8676</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NzAwNykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjAgQEAKKzIwMDktMDgtMTAgIE5hdGUgQ2hhcGluICA8amFwaGV0QGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgYSBDdXN0b20gU2V0dGVyIGZvciBET01XaW5kb3dFdmVudCBpbiB0aGUgVjggYmluZGluZ3Mu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzcxOQor
CisgICAgICAgIFRlc3Q6IGZhc3QvZXZlbnRzL3NldC1ldmVudC10by1udWxsLmh0bWwKKworICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtOiBDbGVhbiB1cCBjdXN0
b20gZ2V0dGVyL3NldHRlciBjb2RlLCAKKyAgICAgICAgICAgIGFzIGl0IGN1cnJlbnRseSBkb2Vz
bid0IHN1cHBvcnQgYSBjdXN0b20gZ2V0dGVyIAorICAgICAgICAgICAgYW5kIGEgdjgtc3BlY2lm
aWMgY3VzdG9tIHNldHRlciBzaW11bHRhbmVvdXNseS4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9j
dXN0b20vVjhDdXN0b21CaW5kaW5nLmg6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4
RE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFDQ0VTU09SX1NFVFRFUik6
CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuaWRsOgorCiAyMDA5LTA4LTEwICBLZW5uZXRoIFJv
aGRlIENocmlzdGlhbnNlbiAgPGtlbm5ldGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBTaW1vbiBIYXVzbWFubi4KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9yVjgucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JWOC5wbQkocmV2aXNpb24gNDcwMDcpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCSh3b3JraW5nIGNvcHkpCkBAIC05NzUsNTEgKzk3NSwy
NCBAQCBzdWIgR2VuZXJhdGVCYXRjaGVkQXR0cmlidXRlRGF0YQogICAgICAgICAgICAgICAgICAg
ICAkc2V0dGVyID0gIlY4Q3VzdG9tOjp2OCR7Y3VzdG9tQWNjZXNzb3J9QWNjZXNzb3JTZXR0ZXIi
OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICMgRGVmYXVsdCBHZXR0ZXIgYW5kIFNldHRlcgorICAgICAgICAgICAgJGdldHRl
ciA9ICIke2ludGVyZmFjZU5hbWV9SW50ZXJuYWw6OiR7YXR0ck5hbWV9QXR0ckdldHRlciI7Cisg
ICAgICAgICAgICAkc2V0dGVyID0gIiR7aW50ZXJmYWNlTmFtZX1JbnRlcm5hbDo6JHthdHRyTmFt
ZX1BdHRyU2V0dGVyIjsKIAotICAgICAgICAjIEN1c3RvbSBHZXR0ZXIgYW5kIFNldHRlcgotICAg
ICAgICB9IGVsc2lmICgkYXR0ckV4dC0+eyJDdXN0b20ifSB8fCAkYXR0ckV4dC0+eyJWOEN1c3Rv
bSJ9KSB7Ci0gICAgICAgICAgICAkZ2V0dGVyID0gIlY4Q3VzdG9tOjp2OCR7Y3VzdG9tQWNjZXNz
b3J9QWNjZXNzb3JHZXR0ZXIiOwotICAgICAgICAgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJX
b3JrZXJDb250ZXh0IiBhbmQgJGF0dHJOYW1lIGVxICJzZWxmIikgewotICAgICAgICAgICAgICAg
ICRzZXR0ZXIgPSAiMCI7Ci0gICAgICAgICAgICAgICAgJHByb3BBdHRyID0gInY4OjpSZWFkT25s
eSI7Ci0gICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgIyBDdXN0b20gU2V0dGVyCisg
ICAgICAgICAgICBpZiAoJGF0dHJFeHQtPnsiQ3VzdG9tU2V0dGVyIn0gfHwgJGF0dHJFeHQtPnsi
VjhDdXN0b21TZXR0ZXIifSB8fCAkYXR0ckV4dC0+eyJDdXN0b20ifSB8fCAkYXR0ckV4dC0+eyJW
OEN1c3RvbSJ9KSB7CiAgICAgICAgICAgICAgICAgJGhhc0N1c3RvbVNldHRlciA9IDE7CiAgICAg
ICAgICAgICAgICAgJHNldHRlciA9ICJWOEN1c3RvbTo6djgke2N1c3RvbUFjY2Vzc29yfUFjY2Vz
c29yU2V0dGVyIjsKICAgICAgICAgICAgIH0KIAotICAgICAgICAjIEN1c3RvbSBTZXR0ZXIKLSAg
ICAgICAgfSBlbHNpZiAoJGF0dHJFeHQtPnsiQ3VzdG9tU2V0dGVyIn0gfHwgJGF0dHJFeHQtPnsi
VjhDdXN0b21TZXR0ZXIifSkgewotICAgICAgICAgICAgJGhhc0N1c3RvbVNldHRlciA9IDE7Ci0g
ICAgICAgICAgICAkZ2V0dGVyID0gIiR7aW50ZXJmYWNlTmFtZX1JbnRlcm5hbDo6JHthdHRyTmFt
ZX1BdHRyR2V0dGVyIjsKLSAgICAgICAgICAgICRzZXR0ZXIgPSAiVjhDdXN0b206OnY4JHtjdXN0
b21BY2Nlc3Nvcn1BY2Nlc3NvclNldHRlciI7Ci0KLSAgICAgICAgIyBDdXN0b20gR2V0dGVyCi0g
ICAgICAgIH0gZWxzaWYgKCRhdHRyRXh0LT57IkN1c3RvbUdldHRlciJ9KSB7Ci0gICAgICAgICAg
ICAkZ2V0dGVyID0gIlY4Q3VzdG9tOjp2OCR7Y3VzdG9tQWNjZXNzb3J9QWNjZXNzb3JHZXR0ZXIi
OwotICAgICAgICAgICAgJHNldHRlciA9ICIke2ludGVyZmFjZU5hbWV9SW50ZXJuYWw6OiR7YXR0
ck5hbWV9QXR0clNldHRlciI7Ci0KLSAgICAgICAgIyBSZXBsYWNlYWJsZQotICAgICAgICB9IGVs
c2lmICgkYXR0ckV4dC0+eyJSZXBsYWNlYWJsZSJ9KSB7Ci0gICAgICAgICAgICAjIFJlcGxhY2Vh
YmxlIGFjY2Vzc29yIGlzIHB1dCBvbiBpbnN0YW5jZSB0ZW1wbGF0ZSB3aXRoIFJlYWRPbmx5IGF0
dHJpYnV0ZS4KLSAgICAgICAgICAgICRnZXR0ZXIgPSAiJHtpbnRlcmZhY2VOYW1lfUludGVybmFs
Ojoke2F0dHJOYW1lfUF0dHJHZXR0ZXIiOwotICAgICAgICAgICAgJHNldHRlciA9ICIwIjsKLQot
ICAgICAgICAgICAgIyBNYXJrIHRvIGF2b2lkIGR1cGxpY2F0ZSB2ODo6UmVhZE9ubHkgZmxhZ3Mg
aW4gb3V0cHV0LgotICAgICAgICAgICAgJGhhc0N1c3RvbVNldHRlciA9IDE7Ci0KLSAgICAgICAg
ICAgICMgSGFuZGxlIHRoZSBzcGVjaWFsIGNhc2Ugb2Ygd2luZG93LnRvcCBiZWluZyBtYXJrZWQg
dXBzdHJlYW0gYXMgUmVwbGFjZWFibGUuCi0gICAgICAgICAgICAjIEZJWE1FOiBJbnZlc3RpZ2F0
ZSB3aHkgW1JlcGxhY2VhYmxlXSBpcyBub3QgbWFya2VkIGFzIFJlYWRPbmx5Ci0gICAgICAgICAg
ICAjIHVwc3RyZWFtIGFuZCByZWFjaCBwYXJpdHkuCi0gICAgICAgICAgICBpZiAoISgkaW50ZXJm
YWNlTmFtZSBlcSAiRE9NV2luZG93IiBhbmQgJGF0dHJOYW1lIGVxICJ0b3AiKSkgewotICAgICAg
ICAgICAgICAgICRwcm9wQXR0ciAuPSAifHY4OjpSZWFkT25seSI7CisgICAgICAgICAgICAjIEN1
c3RvbSBHZXR0ZXIKKyAgICAgICAgICAgIGlmICgkYXR0ckV4dC0+eyJDdXN0b21HZXR0ZXIifSB8
fCAkYXR0ckV4dC0+eyJDdXN0b20ifSB8fCAkYXR0ckV4dC0+eyJWOEN1c3RvbSJ9KSB7CisgICAg
ICAgICAgICAgICAgJGdldHRlciA9ICJWOEN1c3RvbTo6djgke2N1c3RvbUFjY2Vzc29yfUFjY2Vz
c29yR2V0dGVyIjsKICAgICAgICAgICAgIH0KLQotICAgICAgICAjIE5vcm1hbAotICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgJGdldHRlciA9ICIke2ludGVyZmFjZU5hbWV9SW50ZXJuYWw6
OiR7YXR0ck5hbWV9QXR0ckdldHRlciI7Ci0gICAgICAgICAgICAkc2V0dGVyID0gIiR7aW50ZXJm
YWNlTmFtZX1JbnRlcm5hbDo6JHthdHRyTmFtZX1BdHRyU2V0dGVyIjsKICAgICAgICAgfQogCisg
ICAgICAgICMgUmVwbGFjZWFibGUKICAgICAgICAgaWYgKCRhdHRyRXh0LT57IlJlcGxhY2VhYmxl
In0gJiYgISRoYXNDdXN0b21TZXR0ZXIpIHsKICAgICAgICAgICAgICRzZXR0ZXIgPSAiMCI7CiAg
ICAgICAgICAgICAkcHJvcEF0dHIgLj0gInx2ODo6UmVhZE9ubHkiOwpJbmRleDogV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21CaW5kaW5nLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21CaW5kaW5nLmgJKHJldmlzaW9uIDQ3MDA3KQor
KysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21CaW5kaW5nLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTIxOCw3ICsyMTgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAg
REVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUihDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRTdHJva2VT
dHlsZSk7CiAgICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1IoQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJERmlsbFN0eWxlKTsKLSAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUl9H
RVRURVIoRE9NV2luZG93RXZlbnQpOworICAgICAgICBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09S
KERPTVdpbmRvd0V2ZW50KTsKICAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUl9HRVRU
RVIoRE9NV2luZG93Q3J5cHRvKTsKICAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUl9T
RVRURVIoRE9NV2luZG93TG9jYXRpb24pOwogICAgICAgICBERUNMQVJFX1BST1BFUlRZX0FDQ0VT
U09SX1NFVFRFUihET01XaW5kb3dPcGVuZXIpOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcAkocmV2aXNpb24gNDcwMDcpCisrKyBX
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE1Myw2ICsxNTMsMTMgQEAgQUNDRVNTT1JfR0VUVEVSKERPTVdpbmRvd0V2ZW50
KQogICAgIHJldHVybiBqc0V2ZW50OwogfQogCitBQ0NFU1NPUl9TRVRURVIoRE9NV2luZG93RXZl
bnQpCit7CisgICAgdjg6OkxvY2FsPHY4OjpTdHJpbmc+IGV2ZW50U3ltYm9sID0gdjg6OlN0cmlu
Zzo6TmV3U3ltYm9sKCJldmVudCIpOworICAgIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gY29udGV4
dCA9IHY4OjpDb250ZXh0OjpHZXRDdXJyZW50KCk7CisgICAgY29udGV4dC0+R2xvYmFsKCktPlNl
dEhpZGRlblZhbHVlKGV2ZW50U3ltYm9sLCB2YWx1ZSk7Cit9CisKIEFDQ0VTU09SX0dFVFRFUihE
T01XaW5kb3dDcnlwdG8pCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCBtZS4KSW5kZXg6IFdl
YkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9ET01X
aW5kb3cuaWRsCShyZXZpc2lvbiA0NzAwNykKKysrIFdlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRs
CSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBAIG1vZHVsZSB3aW5kb3cgewogICAgICAg
ICBhdHRyaWJ1dGUgW1JlcGxhY2VhYmxlXSBOYXZpZ2F0b3IgY2xpZW50SW5mb3JtYXRpb247CiAg
ICAgICAgIGF0dHJpYnV0ZSBbRG9Ob3RDaGVja0RvbWFpblNlY3VyaXR5LCBKU0NDdXN0b20sIFY4
Q3VzdG9tU2V0dGVyLCBWOERpc2FsbG93U2hhZG93aW5nXSBMb2NhdGlvbiBsb2NhdGlvbjsKIAot
ICAgICAgICBhdHRyaWJ1dGUgW1JlcGxhY2VhYmxlLCBDdXN0b21HZXR0ZXJdIEV2ZW50IGV2ZW50
OworICAgICAgICBhdHRyaWJ1dGUgW1JlcGxhY2VhYmxlLCBDdXN0b21HZXR0ZXIsIFY4Q3VzdG9t
U2V0dGVyXSBFdmVudCBldmVudDsKIAogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW0N1c3Rv
bV0gQ3J5cHRvIGNyeXB0bzsKIApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNDcwMDcpCisrKyBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAwOS0wOC0x
MCAgTmF0ZSBDaGFwaW4gIDxqYXBoZXRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIGxheW91dCB0ZXN0IHRvIGVuc3Vy
ZSB0aGF0IHdpbmRvdy5ldmVudCBjYW4gYmUgcHJvcGVybHkgYWNjZXNzZWQKKyAgICAgICAgYWZ0
ZXIgaXQgaGFzIGJlZW4gbnVsbGVkIGJ5IGEgc2NyaXB0IG9uIGEgcGFnZS4KKworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc3MTkKKworICAgICAgICAq
IGZhc3QvZXZlbnRzL3NldC1ldmVudC10by1udWxsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9ldmVudHMvc2V0LWV2ZW50LXRvLW51bGwuaHRtbDogQWRkZWQuCisKIDIwMDkt
MDgtMTAgIE5pa29sYXMgWmltbWVybWFubiAgPG5pa29sYXMuemltbWVybWFubkB0b3JjaG1vYmls
ZS5jb20+CiAKICAgICAgICAgUnViYmVyLXN0YW1wZWQgYnkgR2VvcmdlIFN0YWlrb3MuCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zZXQtZXZlbnQtdG8tbnVsbC1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc2V0LWV2ZW50LXRvLW51bGwt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc2V0
LWV2ZW50LXRvLW51bGwtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIgQEAK
K1RoaXMgdGVzdCB3aWxsIHRyaWdnZXIgYSBtb3VzZSBvdmVyIG9mIHRoaXMgZWxlbWVudC4gV2Ug
d2lsbCB0aGVuIGNoZWNrIHRvIHNlZSBpZiBldmVudCB3YXMgcHJvcGVybHkgc2V0IChpLmUuLCBu
b3QgbnVsbCkuIFRoaXMgaXMgaW4gcmVzcG9uc2UgdG8gYSB2OCBidWcgdGhhdCBjYW4gYnJlYWsg
d2luZG93LmV2ZW50IGV4cG9zdXJlIGlmIHRoZSBjbGllbnQgdHJpZXMgdG8gbWFudWFsbHkgc2V0
IGV2ZW50Lg0KK1BBU1M6IGV2ZW50IGlzIHZhbGlkDQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMvc2V0LWV2ZW50LXRvLW51bGwuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2V2ZW50cy9zZXQtZXZlbnQtdG8tbnVsbC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvc2V0LWV2ZW50LXRvLW51bGwuaHRtbAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwzOCBAQAorPGh0bWw+DQorPGhlYWQ+DQorPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNj
cmlwdCI+DQorZnVuY3Rpb24gbG9nKHMpDQorew0KKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgiY29uc29sZSIpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHMgKyAiXG4i
KSk7DQorfQ0KKw0KK2Z1bmN0aW9uIG1vdXNlT3ZlcihldmVudCkNCit7DQorICAgIGlmIChldmVu
dCA9PT0gbnVsbCkgew0KKyAgICAgICAgbG9nKCJGQUlMOiBldmVudCBpcyBudWxsIik7DQorICAg
IH0gZWxzZSB7DQorICAgICAgICBsb2coIlBBU1M6IGV2ZW50IGlzIHZhbGlkIik7DQorICAgIH0N
Cit9DQorDQorZnVuY3Rpb24gcnVuVGVzdCgpIHsNCisgICAgdmFyIHRhcmdldCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQiKTsNCisgICAgdmFyIG5ld0V2ZW50ID0gZG9jdW1lbnQu
Y3JlYXRlRXZlbnQoIk1vdXNlRXZlbnQiKTsNCisgICAgbmV3RXZlbnQuaW5pdE1vdXNlRXZlbnQo
Im1vdXNlb3ZlciIsIGZhbHNlLCBmYWxzZSwgd2luZG93LCAwLCAxMCwgMTAsIDEwLCAxMCwgZmFs
c2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIDAsIHRhcmdldCk7DQorICAgIHRhcmdldC5kaXNwYXRj
aEV2ZW50KG5ld0V2ZW50KTsNCisNCisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgew0KKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOw0KKyAgICB9
DQorfQ0KKw0KKzwvc2NyaXB0Pg0KKzwvaGVhZD4NCis8Ym9keSBvbkxvYWQ9InJ1blRlc3QoKTsi
Pg0KKzxkaXYgaWQ9InRhcmdldCIgb25Nb3VzZU92ZXI9Im1vdXNlT3ZlcihldmVudCk7Ij5UaGlz
IHRlc3Qgd2lsbCB0cmlnZ2VyIGEgbW91c2Ugb3ZlciBvZiB0aGlzIGVsZW1lbnQuICANCitXZSB3
aWxsIHRoZW4gY2hlY2sgdG8gc2VlIGlmIGV2ZW50IHdhcyBwcm9wZXJseSBzZXQgKGkuZS4sIG5v
dCBudWxsKS4NCitUaGlzIGlzIGluIHJlc3BvbnNlIHRvIGEgdjggYnVnIHRoYXQgY2FuIGJyZWFr
IHdpbmRvdy5ldmVudCBleHBvc3VyZSBpZiB0aGUgY2xpZW50IHRyaWVzIHRvIG1hbnVhbGx5IHNl
dCBldmVudC48L2Rpdj4NCis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4NCis8c2NyaXB0PmlmKHdp
bmRvdy5ldmVudCA9PSB1bmRlZmluZWQpIGV2ZW50ID0gbnVsbDs8L3NjcmlwdD4NCis8L2JvZHk+
DQorPC9odG1sPg0K
</data>
<flag name="review"
          id="18680"
          type_id="1"
          status="-"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34587</attachid>
            <date>2009-08-11 13:34:26 -0700</date>
            <delta_ts>2009-08-11 14:37:51 -0700</delta_ts>
            <desc>patch3 - Add second layout test</desc>
            <filename>patch3.txt</filename>
            <type>text/plain</type>
            <size>11915</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NzAwNykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjEgQEAKKzIwMDktMDgtMTAgIE5hdGUgQ2hhcGluICA8amFwaGV0QGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgYSBDdXN0b20gU2V0dGVyIGZvciBET01XaW5kb3dFdmVudCBpbiB0aGUgVjggYmluZGluZ3Mu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzcxOQor
CisgICAgICAgIFRlc3RzOiBmYXN0L2V2ZW50cy9zZXQtZXZlbnQtdG8tbnVsbC5odG1sCisgICAg
ICAgICAgICAgICBodHRwL3Rlc3RzL3NlY3VyaXR5L2Fib3V0Qmxhbmsvc2VjdXJpdHktY29udGV4
dC1ldmVudC1zZXR0aW5nLmh0bWwKKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvclY4LnBtOiBDbGVhbiB1cCBjdXN0b20gZ2V0dGVyL3NldHRlciBjb2RlLCAKKyAgICAg
ICAgICAgIGFzIGl0IGN1cnJlbnRseSBkb2Vzbid0IHN1cHBvcnQgYSBjdXN0b20gZ2V0dGVyIAor
ICAgICAgICAgICAgYW5kIGEgdjgtc3BlY2lmaWMgY3VzdG9tIHNldHRlciBzaW11bHRhbmVvdXNs
eS4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21CaW5kaW5nLmg6CisgICAg
ICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkFDQ0VTU09SX1NFVFRFUik6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuaWRs
OgorCiAyMDA5LTA4LTEwICBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiAgPGtlbm5ldGhAd2Vi
a2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KSW5kZXg6IFdl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQkocmV2aXNpb24gNDcw
MDcpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCSh3b3Jr
aW5nIGNvcHkpCkBAIC05NzUsNTEgKzk3NSwyNCBAQCBzdWIgR2VuZXJhdGVCYXRjaGVkQXR0cmli
dXRlRGF0YQogICAgICAgICAgICAgICAgICAgICAkc2V0dGVyID0gIlY4Q3VzdG9tOjp2OCR7Y3Vz
dG9tQWNjZXNzb3J9QWNjZXNzb3JTZXR0ZXIiOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICMgRGVmYXVsdCBHZXR0ZXIgYW5k
IFNldHRlcgorICAgICAgICAgICAgJGdldHRlciA9ICIke2ludGVyZmFjZU5hbWV9SW50ZXJuYWw6
OiR7YXR0ck5hbWV9QXR0ckdldHRlciI7CisgICAgICAgICAgICAkc2V0dGVyID0gIiR7aW50ZXJm
YWNlTmFtZX1JbnRlcm5hbDo6JHthdHRyTmFtZX1BdHRyU2V0dGVyIjsKIAotICAgICAgICAjIEN1
c3RvbSBHZXR0ZXIgYW5kIFNldHRlcgotICAgICAgICB9IGVsc2lmICgkYXR0ckV4dC0+eyJDdXN0
b20ifSB8fCAkYXR0ckV4dC0+eyJWOEN1c3RvbSJ9KSB7Ci0gICAgICAgICAgICAkZ2V0dGVyID0g
IlY4Q3VzdG9tOjp2OCR7Y3VzdG9tQWNjZXNzb3J9QWNjZXNzb3JHZXR0ZXIiOwotICAgICAgICAg
ICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJXb3JrZXJDb250ZXh0IiBhbmQgJGF0dHJOYW1lIGVx
ICJzZWxmIikgewotICAgICAgICAgICAgICAgICRzZXR0ZXIgPSAiMCI7Ci0gICAgICAgICAgICAg
ICAgJHByb3BBdHRyID0gInY4OjpSZWFkT25seSI7Ci0gICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgIyBDdXN0b20gU2V0dGVyCisgICAgICAgICAgICBpZiAoJGF0dHJFeHQtPnsiQ3Vz
dG9tU2V0dGVyIn0gfHwgJGF0dHJFeHQtPnsiVjhDdXN0b21TZXR0ZXIifSB8fCAkYXR0ckV4dC0+
eyJDdXN0b20ifSB8fCAkYXR0ckV4dC0+eyJWOEN1c3RvbSJ9KSB7CiAgICAgICAgICAgICAgICAg
JGhhc0N1c3RvbVNldHRlciA9IDE7CiAgICAgICAgICAgICAgICAgJHNldHRlciA9ICJWOEN1c3Rv
bTo6djgke2N1c3RvbUFjY2Vzc29yfUFjY2Vzc29yU2V0dGVyIjsKICAgICAgICAgICAgIH0KIAot
ICAgICAgICAjIEN1c3RvbSBTZXR0ZXIKLSAgICAgICAgfSBlbHNpZiAoJGF0dHJFeHQtPnsiQ3Vz
dG9tU2V0dGVyIn0gfHwgJGF0dHJFeHQtPnsiVjhDdXN0b21TZXR0ZXIifSkgewotICAgICAgICAg
ICAgJGhhc0N1c3RvbVNldHRlciA9IDE7Ci0gICAgICAgICAgICAkZ2V0dGVyID0gIiR7aW50ZXJm
YWNlTmFtZX1JbnRlcm5hbDo6JHthdHRyTmFtZX1BdHRyR2V0dGVyIjsKLSAgICAgICAgICAgICRz
ZXR0ZXIgPSAiVjhDdXN0b206OnY4JHtjdXN0b21BY2Nlc3Nvcn1BY2Nlc3NvclNldHRlciI7Ci0K
LSAgICAgICAgIyBDdXN0b20gR2V0dGVyCi0gICAgICAgIH0gZWxzaWYgKCRhdHRyRXh0LT57IkN1
c3RvbUdldHRlciJ9KSB7Ci0gICAgICAgICAgICAkZ2V0dGVyID0gIlY4Q3VzdG9tOjp2OCR7Y3Vz
dG9tQWNjZXNzb3J9QWNjZXNzb3JHZXR0ZXIiOwotICAgICAgICAgICAgJHNldHRlciA9ICIke2lu
dGVyZmFjZU5hbWV9SW50ZXJuYWw6OiR7YXR0ck5hbWV9QXR0clNldHRlciI7Ci0KLSAgICAgICAg
IyBSZXBsYWNlYWJsZQotICAgICAgICB9IGVsc2lmICgkYXR0ckV4dC0+eyJSZXBsYWNlYWJsZSJ9
KSB7Ci0gICAgICAgICAgICAjIFJlcGxhY2VhYmxlIGFjY2Vzc29yIGlzIHB1dCBvbiBpbnN0YW5j
ZSB0ZW1wbGF0ZSB3aXRoIFJlYWRPbmx5IGF0dHJpYnV0ZS4KLSAgICAgICAgICAgICRnZXR0ZXIg
PSAiJHtpbnRlcmZhY2VOYW1lfUludGVybmFsOjoke2F0dHJOYW1lfUF0dHJHZXR0ZXIiOwotICAg
ICAgICAgICAgJHNldHRlciA9ICIwIjsKLQotICAgICAgICAgICAgIyBNYXJrIHRvIGF2b2lkIGR1
cGxpY2F0ZSB2ODo6UmVhZE9ubHkgZmxhZ3MgaW4gb3V0cHV0LgotICAgICAgICAgICAgJGhhc0N1
c3RvbVNldHRlciA9IDE7Ci0KLSAgICAgICAgICAgICMgSGFuZGxlIHRoZSBzcGVjaWFsIGNhc2Ug
b2Ygd2luZG93LnRvcCBiZWluZyBtYXJrZWQgdXBzdHJlYW0gYXMgUmVwbGFjZWFibGUuCi0gICAg
ICAgICAgICAjIEZJWE1FOiBJbnZlc3RpZ2F0ZSB3aHkgW1JlcGxhY2VhYmxlXSBpcyBub3QgbWFy
a2VkIGFzIFJlYWRPbmx5Ci0gICAgICAgICAgICAjIHVwc3RyZWFtIGFuZCByZWFjaCBwYXJpdHku
Ci0gICAgICAgICAgICBpZiAoISgkaW50ZXJmYWNlTmFtZSBlcSAiRE9NV2luZG93IiBhbmQgJGF0
dHJOYW1lIGVxICJ0b3AiKSkgewotICAgICAgICAgICAgICAgICRwcm9wQXR0ciAuPSAifHY4OjpS
ZWFkT25seSI7CisgICAgICAgICAgICAjIEN1c3RvbSBHZXR0ZXIKKyAgICAgICAgICAgIGlmICgk
YXR0ckV4dC0+eyJDdXN0b21HZXR0ZXIifSB8fCAkYXR0ckV4dC0+eyJDdXN0b20ifSB8fCAkYXR0
ckV4dC0+eyJWOEN1c3RvbSJ9KSB7CisgICAgICAgICAgICAgICAgJGdldHRlciA9ICJWOEN1c3Rv
bTo6djgke2N1c3RvbUFjY2Vzc29yfUFjY2Vzc29yR2V0dGVyIjsKICAgICAgICAgICAgIH0KLQot
ICAgICAgICAjIE5vcm1hbAotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgJGdldHRlciA9
ICIke2ludGVyZmFjZU5hbWV9SW50ZXJuYWw6OiR7YXR0ck5hbWV9QXR0ckdldHRlciI7Ci0gICAg
ICAgICAgICAkc2V0dGVyID0gIiR7aW50ZXJmYWNlTmFtZX1JbnRlcm5hbDo6JHthdHRyTmFtZX1B
dHRyU2V0dGVyIjsKICAgICAgICAgfQogCisgICAgICAgICMgUmVwbGFjZWFibGUKICAgICAgICAg
aWYgKCRhdHRyRXh0LT57IlJlcGxhY2VhYmxlIn0gJiYgISRoYXNDdXN0b21TZXR0ZXIpIHsKICAg
ICAgICAgICAgICRzZXR0ZXIgPSAiMCI7CiAgICAgICAgICAgICAkcHJvcEF0dHIgLj0gInx2ODo6
UmVhZE9ubHkiOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21CaW5k
aW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21C
aW5kaW5nLmgJKHJldmlzaW9uIDQ3MDA3KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhDdXN0b21CaW5kaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxOCw3ICsyMTgsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUihDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkRTdHJva2VTdHlsZSk7CiAgICAgICAgIERFQ0xBUkVfUFJPUEVS
VFlfQUNDRVNTT1IoQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJERmlsbFN0eWxlKTsKLSAgICAgICAg
REVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUl9HRVRURVIoRE9NV2luZG93RXZlbnQpOworICAgICAg
ICBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SKERPTVdpbmRvd0V2ZW50KTsKICAgICAgICAgREVD
TEFSRV9QUk9QRVJUWV9BQ0NFU1NPUl9HRVRURVIoRE9NV2luZG93Q3J5cHRvKTsKICAgICAgICAg
REVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUl9TRVRURVIoRE9NV2luZG93TG9jYXRpb24pOwogICAg
ICAgICBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SX1NFVFRFUihET01XaW5kb3dPcGVuZXIpOwpJ
bmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9t
LmNwcAkocmV2aXNpb24gNDcwMDcpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERP
TVdpbmRvd0N1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1Myw2ICsxNTMsMTMgQEAgQUND
RVNTT1JfR0VUVEVSKERPTVdpbmRvd0V2ZW50KQogICAgIHJldHVybiBqc0V2ZW50OwogfQogCitB
Q0NFU1NPUl9TRVRURVIoRE9NV2luZG93RXZlbnQpCit7CisgICAgdjg6OkxvY2FsPHY4OjpTdHJp
bmc+IGV2ZW50U3ltYm9sID0gdjg6OlN0cmluZzo6TmV3U3ltYm9sKCJldmVudCIpOworICAgIHY4
OjpMb2NhbDx2ODo6Q29udGV4dD4gY29udGV4dCA9IHY4OjpDb250ZXh0OjpHZXRFbnRlcmVkKCk7
CisgICAgY29udGV4dC0+R2xvYmFsKCktPlNldEhpZGRlblZhbHVlKGV2ZW50U3ltYm9sLCB2YWx1
ZSk7Cit9CisKIEFDQ0VTU09SX0dFVFRFUihET01XaW5kb3dDcnlwdG8pCiB7CiAgICAgLy8gRklY
TUU6IEltcGxlbWVudCBtZS4KSW5kZXg6IFdlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCShyZXZpc2lvbiA0NzAwNykKKysr
IFdlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3
IEBAIG1vZHVsZSB3aW5kb3cgewogICAgICAgICBhdHRyaWJ1dGUgW1JlcGxhY2VhYmxlXSBOYXZp
Z2F0b3IgY2xpZW50SW5mb3JtYXRpb247CiAgICAgICAgIGF0dHJpYnV0ZSBbRG9Ob3RDaGVja0Rv
bWFpblNlY3VyaXR5LCBKU0NDdXN0b20sIFY4Q3VzdG9tU2V0dGVyLCBWOERpc2FsbG93U2hhZG93
aW5nXSBMb2NhdGlvbiBsb2NhdGlvbjsKIAotICAgICAgICBhdHRyaWJ1dGUgW1JlcGxhY2VhYmxl
LCBDdXN0b21HZXR0ZXJdIEV2ZW50IGV2ZW50OworICAgICAgICBhdHRyaWJ1dGUgW1JlcGxhY2Vh
YmxlLCBDdXN0b21HZXR0ZXIsIFY4Q3VzdG9tU2V0dGVyXSBFdmVudCBldmVudDsKIAogICAgICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgW0N1c3RvbV0gQ3J5cHRvIGNyeXB0bzsKIApJbmRleDogTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwko
cmV2aXNpb24gNDcwMDcpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxNyBAQAorMjAwOS0wOC0xMCAgTmF0ZSBDaGFwaW4gIDxqYXBoZXRAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZCBhIGxheW91dCB0ZXN0IHRvIGVuc3VyZSB0aGF0IHdpbmRvdy5ldmVudCBjYW4gYmUgcHJv
cGVybHkgYWNjZXNzZWQKKyAgICAgICAgYWZ0ZXIgaXQgaGFzIGJlZW4gbnVsbGVkIGJ5IGEgc2Ny
aXB0IG9uIGEgcGFnZS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9Mjc3MTkKKworICAgICAgICAqIGZhc3QvZXZlbnRzL3NldC1ldmVudC10by1udWxs
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvc2V0LWV2ZW50LXRv
LW51bGwuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9hYm91dEJs
YW5rL3NlY3VyaXR5LWNvbnRleHQtZXZlbnQtc2V0dGluZy1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvYWJvdXRCbGFuay9zZWN1cml0eS1jb250ZXh0
LWV2ZW50LXNldHRpbmcuaHRtbDogQWRkZWQuCisKIDIwMDktMDgtMTAgIE5pa29sYXMgWmltbWVy
bWFubiAgPG5pa29sYXMuemltbWVybWFubkB0b3JjaG1vYmlsZS5jb20+CiAKICAgICAgICAgUnVi
YmVyLXN0YW1wZWQgYnkgR2VvcmdlIFN0YWlrb3MuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy9zZXQtZXZlbnQtdG8tbnVsbC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvc2V0LWV2ZW50LXRvLW51bGwtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc2V0LWV2ZW50LXRvLW51bGwtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIgQEAKK1RoaXMgdGVzdCB3aWxsIHRyaWdn
ZXIgYSBtb3VzZSBvdmVyIG9mIHRoaXMgZWxlbWVudC4gV2Ugd2lsbCB0aGVuIGNoZWNrIHRvIHNl
ZSBpZiBldmVudCB3YXMgcHJvcGVybHkgc2V0IChpLmUuLCBub3QgbnVsbCkuIFRoaXMgaXMgaW4g
cmVzcG9uc2UgdG8gYSB2OCBidWcgdGhhdCBjYW4gYnJlYWsgd2luZG93LmV2ZW50IGV4cG9zdXJl
IGlmIHRoZSBjbGllbnQgdHJpZXMgdG8gbWFudWFsbHkgc2V0IGV2ZW50Lg0KK1BBU1M6IEFmdGVy
IE1vdXNlRXZlbnQsIGV2ZW50IGlzIHZhbGlkDQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvc2V0LWV2ZW50LXRvLW51bGwuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy9zZXQtZXZlbnQtdG8tbnVsbC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9ldmVudHMvc2V0LWV2ZW50LXRvLW51bGwuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw0NiBAQAorPGh0bWw+DQorPGhlYWQ+DQorPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlw
dCI+DQorZnVuY3Rpb24gbG9nKHMpDQorew0KKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
Y29uc29sZSIpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHMgKyAiXG4iKSk7
DQorfQ0KKw0KK2Z1bmN0aW9uIG1vdXNlT3ZlcihldmVudCkNCit7DQorICAgIGlmIChldmVudCA9
PT0gbnVsbCkgew0KKyAgICAgICAgbG9nKCJGQUlMOiBBZnRlciBNb3VzZUV2ZW50LCBldmVudCBp
cyBudWxsIik7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBsb2coIlBBU1M6IEFmdGVyIE1vdXNl
RXZlbnQsIGV2ZW50IGlzIHZhbGlkIik7DQorICAgIH0NCit9DQorDQorZnVuY3Rpb24gcnVuVGVz
dCgpIHsNCisgICAgdmFyIHRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQi
KTsNCisgICAgdmFyIG5ld0V2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoIk1vdXNlRXZlbnQi
KTsNCisgICAgbmV3RXZlbnQuaW5pdE1vdXNlRXZlbnQoIm1vdXNlb3ZlciIsIGZhbHNlLCBmYWxz
ZSwgd2luZG93LCAwLCAxMCwgMTAsIDEwLCAxMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2Us
IDAsIHRhcmdldCk7DQorICAgIHRhcmdldC5kaXNwYXRjaEV2ZW50KG5ld0V2ZW50KTsNCisNCisg
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgew0KKyAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOw0KKyAgICB9DQorfQ0KKw0KKzwvc2NyaXB0Pg0KKzwv
aGVhZD4NCis8Ym9keSBvbkxvYWQ9InJ1blRlc3QoKTsiPg0KKzxkaXYgaWQ9InRhcmdldCIgb25N
b3VzZU92ZXI9Im1vdXNlT3ZlcihldmVudCk7Ij5UaGlzIHRlc3Qgd2lsbCB0cmlnZ2VyIGEgbW91
c2Ugb3ZlciBvZiB0aGlzIGVsZW1lbnQuICANCitXZSB3aWxsIHRoZW4gY2hlY2sgdG8gc2VlIGlm
IGV2ZW50IHdhcyBwcm9wZXJseSBzZXQgKGkuZS4sIG5vdCBudWxsKS4NCitUaGlzIGlzIGluIHJl
c3BvbnNlIHRvIGEgdjggYnVnIHRoYXQgY2FuIGJyZWFrIHdpbmRvdy5ldmVudCBleHBvc3VyZSBp
ZiB0aGUgY2xpZW50IHRyaWVzIHRvIG1hbnVhbGx5IHNldCBldmVudC48L2Rpdj4NCis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4NCis8c2NyaXB0Pg0KK2lmICghKGV2ZW50ID09PSB1bmRlZmluZWQp
KSB7DQorICAgIGxvZygiRkFJTDogZXZlbnQgZG9lcyBub3QgYmVnaW4gYXMgdW5kZWZpbmVkIik7
DQorfQ0KK2V2ZW50ID0gbnVsbDsNCitpZiAoIShldmVudCA9PT0gbnVsbCkpIHsNCisgICAgbG9n
KCJGQUlMOiBldmVudCB3YXMgbm90IHN1Y2Nlc3NmdWxseSBzZXQgdG8gbnVsbCIpOw0KK30NCis8
L3NjcmlwdD4NCis8L2JvZHk+DQorPC9odG1sPg0KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVz
dHMvc2VjdXJpdHkvYWJvdXRCbGFuay9zZWN1cml0eS1jb250ZXh0LWV2ZW50LXNldHRpbmctZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
YWJvdXRCbGFuay9zZWN1cml0eS1jb250ZXh0LWV2ZW50LXNldHRpbmctZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9hYm91dEJsYW5r
L3NlY3VyaXR5LWNvbnRleHQtZXZlbnQtc2V0dGluZy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsOSBAQAorIA0KK0hlbHBlcnMgbG9hZGVkIQ0KKy0tLSBUZXN0IGJlZ2lucyAt
LS0NCit3aW5kb3cuZXZlbnQgPSB1bmRlZmluZWQNCistLS0gQWZ0ZXIgd2luZG93LmV2ZW50ID0g
bnVsbCAtLS0NCit3aW5kb3cuZXZlbnQgPSBudWxsDQorLS0tIEFmdGVyIE1vdXNlRXZlbnQgY29t
cGxldGVzIC0tLQ0KK3dpbmRvdy5ldmVudCA9IHVuZGVmaW5lZA0KKy0tLSBUZXN0IGVuZHMgLS0t
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS9hYm91dEJsYW5rL3NlY3VyaXR5LWNvbnRleHQtZXZlbnQtc2V0dGluZy5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvYWJvdXRCbGFu
ay9zZWN1cml0eS1jb250ZXh0LWV2ZW50LXNldHRpbmcuaHRtbAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvYWJvdXRCbGFuay9zZWN1cml0eS1jb250ZXh0
LWV2ZW50LXNldHRpbmcuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1OCBAQAorPGh0bWw+
DQorPGhlYWQ+DQorPHNjcmlwdD4NCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7
DQorICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7DQorICBsYXlvdXRUZXN0Q29u
dHJvbGxlci53YWl0VW50aWxEb25lKCk7DQorfQ0KKw0KK2RvY3VtZW50LmNvb2tpZSA9ICdjb29r
aWU9cGFyZW50JzsNCisNCitmdW5jdGlvbiBsb2cobXNnKSB7DQorICB2YXIgbGluZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOw0KKyAgbGluZS5hcHBlbmRDaGlsZChkb2N1bWVudC5j
cmVhdGVUZXh0Tm9kZShtc2cpKTsNCisgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xl
JykuYXBwZW5kQ2hpbGQobGluZSk7DQorfQ0KKw0KK2Z1bmN0aW9uIGdldEV2ZW50KCkgew0KKyAg
ICB2YXIgdGFyZ2V0ID0gZnJhbWVzWzFdLndpbmRvdzsNCisgICAgdmFyIG5ld0V2ZW50ID0gZnJh
bWVzWzFdLmRvY3VtZW50LmNyZWF0ZUV2ZW50KCJNb3VzZUV2ZW50Iik7DQorICAgIG5ld0V2ZW50
LmluaXRNb3VzZUV2ZW50KCJtb3VzZW92ZXIiLCBmYWxzZSwgZmFsc2UsIHdpbmRvdywgMCwgMTAs
IDEwLCAxMCwgMTAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAwLCB0YXJnZXQpOw0KKyAg
ICB0YXJnZXQuZGlzcGF0Y2hFdmVudChuZXdFdmVudCk7DQorfQ0KKw0KKw0KK3ZhciB0ZXN0U3Rh
cnRlZCA9IGZhbHNlOw0KK2Z1bmN0aW9uIGRvVGVzdCgpIHsNCisgIGlmICh0ZXN0U3RhcnRlZCkN
CisgICAgcmV0dXJuOw0KKw0KKyAgdGVzdFN0YXJ0ZWQgPSB0cnVlOw0KKyAgZnJhbWVzWzBdLmxv
Y2F0aW9uID0gImphdmFzY3JpcHQ6IiArDQorICAgICAgIndpbmRvdy5teWV2ZW50bnVsbCA9IGZ1
bmN0aW9uKCkgeyB3aXRoKHBhcmVudCkgeyBmcmFtZXNbMV0ud2luZG93LmV2ZW50ID0gbnVsbDsg
fX07IiArDQorICAgICAgIndpbmRvdy5teWV2ZW50cmVhbCA9IGZ1bmN0aW9uKCkgeyB3aXRoKHBh
cmVudCkge2ZyYW1lc1sxXS53aW5kb3cuZXZlbnQgPSBwYXJlbnQuZ2V0RXZlbnQoKTsgfX07IiAr
DQorICAgICAgInBhcmVudC5sb2coJ0hlbHBlcnMgbG9hZGVkIVxcbicpOyIgKw0KKyAgICAgICJw
YXJlbnQuc2V0VGltZW91dCgnY29udGludWVUZXN0KCknLCAxMCk7IjsNCit9DQorDQorZnVuY3Rp
b24gY29udGludWVUZXN0KCkgew0KKyAgbG9nKCctLS0gVGVzdCBiZWdpbnMgLS0tXG4nKTsNCisg
IGxvZygnd2luZG93LmV2ZW50ID0gJyArIGZyYW1lc1sxXS53aW5kb3cuZXZlbnQgKyAnXG4nKTsN
CisgIGxvZygnLS0tIEFmdGVyIHdpbmRvdy5ldmVudCA9IG51bGwgLS0tXG4nKTsNCisgIGZyYW1l
c1swXS5teWV2ZW50bnVsbCgpOw0KKyAgbG9nKCd3aW5kb3cuZXZlbnQgPSAnICsgZnJhbWVzWzFd
LndpbmRvdy5ldmVudCArICdcbicpOw0KKyAgbG9nKCctLS0gQWZ0ZXIgTW91c2VFdmVudCBjb21w
bGV0ZXMgLS0tXG4nKTsNCisgIGZyYW1lc1swXS5teWV2ZW50cmVhbCgpOw0KKyAgbG9nKCd3aW5k
b3cuZXZlbnQgPSAnICsgZnJhbWVzWzFdLndpbmRvdy5ldmVudCArICdcbicpOw0KKyAgbG9nKCct
LS0gVGVzdCBlbmRzIC0tLVxuJyk7DQorDQorICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlE
b25lKCk7DQorfQ0KKzwvc2NyaXB0Pg0KKzwvaGVhZD4NCis8Ym9keSBvbmxvYWQ9ImRvVGVzdCgp
Ij4NCis8aWZyYW1lIHNyYz0iYWJvdXQ6YmxhbmsiPjwvaWZyYW1lPg0KKzxpZnJhbWUgc3JjPSIi
PjwvaWZyYW1lPg0KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pg0KKzwvYm9keT4NCis8L2h0bWw+
DQo=
</data>
<flag name="review"
          id="18741"
          type_id="1"
          status="-"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34595</attachid>
            <date>2009-08-11 14:37:51 -0700</date>
            <delta_ts>2009-08-12 10:17:57 -0700</delta_ts>
            <desc>patch4</desc>
            <filename>patch4.txt</filename>
            <type>text/plain</type>
            <size>11957</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NzAwNykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjEgQEAKKzIwMDktMDgtMTAgIE5hdGUgQ2hhcGluICA8amFwaGV0QGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgYSBDdXN0b20gU2V0dGVyIGZvciBET01XaW5kb3dFdmVudCBpbiB0aGUgVjggYmluZGluZ3Mu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzcxOQor
CisgICAgICAgIFRlc3RzOiBmYXN0L2V2ZW50cy9zZXQtZXZlbnQtaW4tYW5vdGhlci1mcmFtZS5o
dG1sCisgICAgICAgICAgICAgICBmYXN0L2V2ZW50cy9zZXQtZXZlbnQtdG8tbnVsbC5odG1sCisK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbTogQ2xlYW4gdXAg
Y3VzdG9tIGdldHRlci9zZXR0ZXIgY29kZSwgCisgICAgICAgICAgICBhcyBpdCBjdXJyZW50bHkg
ZG9lc24ndCBzdXBwb3J0IGEgY3VzdG9tIGdldHRlciAKKyAgICAgICAgICAgIGFuZCBhIHY4LXNw
ZWNpZmljIGN1c3RvbSBzZXR0ZXIgc2ltdWx0YW5lb3VzbHkuCisgICAgICAgICogYmluZGluZ3Mv
djgvY3VzdG9tL1Y4Q3VzdG9tQmluZGluZy5oOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3Rv
bS9WOERPTVdpbmRvd0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBQ0NFU1NPUl9TRVRU
RVIpOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmlkbDoKKwogMjAwOS0wOC0xMCAgS2VubmV0
aCBSb2hkZSBDaHJpc3RpYW5zZW4gIDxrZW5uZXRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvclY4LnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9yVjgucG0JKHJldmlzaW9uIDQ3MDA3KQorKysgV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQkod29ya2luZyBjb3B5KQpAQCAtOTc1LDUxICs5
NzUsMjQgQEAgc3ViIEdlbmVyYXRlQmF0Y2hlZEF0dHJpYnV0ZURhdGEKICAgICAgICAgICAgICAg
ICAgICAgJHNldHRlciA9ICJWOEN1c3RvbTo6djgke2N1c3RvbUFjY2Vzc29yfUFjY2Vzc29yU2V0
dGVyIjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAjIERlZmF1bHQgR2V0dGVyIGFuZCBTZXR0ZXIKKyAgICAgICAgICAgICRn
ZXR0ZXIgPSAiJHtpbnRlcmZhY2VOYW1lfUludGVybmFsOjoke2F0dHJOYW1lfUF0dHJHZXR0ZXIi
OworICAgICAgICAgICAgJHNldHRlciA9ICIke2ludGVyZmFjZU5hbWV9SW50ZXJuYWw6OiR7YXR0
ck5hbWV9QXR0clNldHRlciI7CiAKLSAgICAgICAgIyBDdXN0b20gR2V0dGVyIGFuZCBTZXR0ZXIK
LSAgICAgICAgfSBlbHNpZiAoJGF0dHJFeHQtPnsiQ3VzdG9tIn0gfHwgJGF0dHJFeHQtPnsiVjhD
dXN0b20ifSkgewotICAgICAgICAgICAgJGdldHRlciA9ICJWOEN1c3RvbTo6djgke2N1c3RvbUFj
Y2Vzc29yfUFjY2Vzc29yR2V0dGVyIjsKLSAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlTmFtZSBl
cSAiV29ya2VyQ29udGV4dCIgYW5kICRhdHRyTmFtZSBlcSAic2VsZiIpIHsKLSAgICAgICAgICAg
ICAgICAkc2V0dGVyID0gIjAiOwotICAgICAgICAgICAgICAgICRwcm9wQXR0ciA9ICJ2ODo6UmVh
ZE9ubHkiOwotICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICMgQ3VzdG9tIFNldHRl
cgorICAgICAgICAgICAgaWYgKCRhdHRyRXh0LT57IkN1c3RvbVNldHRlciJ9IHx8ICRhdHRyRXh0
LT57IlY4Q3VzdG9tU2V0dGVyIn0gfHwgJGF0dHJFeHQtPnsiQ3VzdG9tIn0gfHwgJGF0dHJFeHQt
PnsiVjhDdXN0b20ifSkgewogICAgICAgICAgICAgICAgICRoYXNDdXN0b21TZXR0ZXIgPSAxOwog
ICAgICAgICAgICAgICAgICRzZXR0ZXIgPSAiVjhDdXN0b206OnY4JHtjdXN0b21BY2Nlc3Nvcn1B
Y2Nlc3NvclNldHRlciI7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgIyBDdXN0b20gU2V0dGVy
Ci0gICAgICAgIH0gZWxzaWYgKCRhdHRyRXh0LT57IkN1c3RvbVNldHRlciJ9IHx8ICRhdHRyRXh0
LT57IlY4Q3VzdG9tU2V0dGVyIn0pIHsKLSAgICAgICAgICAgICRoYXNDdXN0b21TZXR0ZXIgPSAx
OwotICAgICAgICAgICAgJGdldHRlciA9ICIke2ludGVyZmFjZU5hbWV9SW50ZXJuYWw6OiR7YXR0
ck5hbWV9QXR0ckdldHRlciI7Ci0gICAgICAgICAgICAkc2V0dGVyID0gIlY4Q3VzdG9tOjp2OCR7
Y3VzdG9tQWNjZXNzb3J9QWNjZXNzb3JTZXR0ZXIiOwotCi0gICAgICAgICMgQ3VzdG9tIEdldHRl
cgotICAgICAgICB9IGVsc2lmICgkYXR0ckV4dC0+eyJDdXN0b21HZXR0ZXIifSkgewotICAgICAg
ICAgICAgJGdldHRlciA9ICJWOEN1c3RvbTo6djgke2N1c3RvbUFjY2Vzc29yfUFjY2Vzc29yR2V0
dGVyIjsKLSAgICAgICAgICAgICRzZXR0ZXIgPSAiJHtpbnRlcmZhY2VOYW1lfUludGVybmFsOjok
e2F0dHJOYW1lfUF0dHJTZXR0ZXIiOwotCi0gICAgICAgICMgUmVwbGFjZWFibGUKLSAgICAgICAg
fSBlbHNpZiAoJGF0dHJFeHQtPnsiUmVwbGFjZWFibGUifSkgewotICAgICAgICAgICAgIyBSZXBs
YWNlYWJsZSBhY2Nlc3NvciBpcyBwdXQgb24gaW5zdGFuY2UgdGVtcGxhdGUgd2l0aCBSZWFkT25s
eSBhdHRyaWJ1dGUuCi0gICAgICAgICAgICAkZ2V0dGVyID0gIiR7aW50ZXJmYWNlTmFtZX1JbnRl
cm5hbDo6JHthdHRyTmFtZX1BdHRyR2V0dGVyIjsKLSAgICAgICAgICAgICRzZXR0ZXIgPSAiMCI7
Ci0KLSAgICAgICAgICAgICMgTWFyayB0byBhdm9pZCBkdXBsaWNhdGUgdjg6OlJlYWRPbmx5IGZs
YWdzIGluIG91dHB1dC4KLSAgICAgICAgICAgICRoYXNDdXN0b21TZXR0ZXIgPSAxOwotCi0gICAg
ICAgICAgICAjIEhhbmRsZSB0aGUgc3BlY2lhbCBjYXNlIG9mIHdpbmRvdy50b3AgYmVpbmcgbWFy
a2VkIHVwc3RyZWFtIGFzIFJlcGxhY2VhYmxlLgotICAgICAgICAgICAgIyBGSVhNRTogSW52ZXN0
aWdhdGUgd2h5IFtSZXBsYWNlYWJsZV0gaXMgbm90IG1hcmtlZCBhcyBSZWFkT25seQotICAgICAg
ICAgICAgIyB1cHN0cmVhbSBhbmQgcmVhY2ggcGFyaXR5LgotICAgICAgICAgICAgaWYgKCEoJGlu
dGVyZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIgYW5kICRhdHRyTmFtZSBlcSAidG9wIikpIHsKLSAg
ICAgICAgICAgICAgICAkcHJvcEF0dHIgLj0gInx2ODo6UmVhZE9ubHkiOworICAgICAgICAgICAg
IyBDdXN0b20gR2V0dGVyCisgICAgICAgICAgICBpZiAoJGF0dHJFeHQtPnsiQ3VzdG9tR2V0dGVy
In0gfHwgJGF0dHJFeHQtPnsiQ3VzdG9tIn0gfHwgJGF0dHJFeHQtPnsiVjhDdXN0b20ifSkgewor
ICAgICAgICAgICAgICAgICRnZXR0ZXIgPSAiVjhDdXN0b206OnY4JHtjdXN0b21BY2Nlc3Nvcn1B
Y2Nlc3NvckdldHRlciI7CiAgICAgICAgICAgICB9Ci0KLSAgICAgICAgIyBOb3JtYWwKLSAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgICRnZXR0ZXIgPSAiJHtpbnRlcmZhY2VOYW1lfUludGVy
bmFsOjoke2F0dHJOYW1lfUF0dHJHZXR0ZXIiOwotICAgICAgICAgICAgJHNldHRlciA9ICIke2lu
dGVyZmFjZU5hbWV9SW50ZXJuYWw6OiR7YXR0ck5hbWV9QXR0clNldHRlciI7CiAgICAgICAgIH0K
IAorICAgICAgICAjIFJlcGxhY2VhYmxlCiAgICAgICAgIGlmICgkYXR0ckV4dC0+eyJSZXBsYWNl
YWJsZSJ9ICYmICEkaGFzQ3VzdG9tU2V0dGVyKSB7CiAgICAgICAgICAgICAkc2V0dGVyID0gIjAi
OwogICAgICAgICAgICAgJHByb3BBdHRyIC49ICJ8djg6OlJlYWRPbmx5IjsKSW5kZXg6IFdlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tQmluZGluZy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tQmluZGluZy5oCShyZXZpc2lvbiA0NzAw
NykKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tQmluZGluZy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMTgsNyArMjE4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAg
ICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1IoQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEU3Ry
b2tlU3R5bGUpOwogICAgICAgICBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SKENhbnZhc1JlbmRl
cmluZ0NvbnRleHQyREZpbGxTdHlsZSk7Ci0gICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNT
T1JfR0VUVEVSKERPTVdpbmRvd0V2ZW50KTsKKyAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NF
U1NPUihET01XaW5kb3dFdmVudCk7CiAgICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1Jf
R0VUVEVSKERPTVdpbmRvd0NyeXB0byk7CiAgICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNT
T1JfU0VUVEVSKERPTVdpbmRvd0xvY2F0aW9uKTsKICAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9B
Q0NFU1NPUl9TRVRURVIoRE9NV2luZG93T3BlbmVyKTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAJKHJldmlzaW9uIDQ3MDA3KQor
KysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNTMsNiArMTUzLDE4IEBAIEFDQ0VTU09SX0dFVFRFUihET01XaW5kb3dF
dmVudCkKICAgICByZXR1cm4ganNFdmVudDsKIH0KIAorQUNDRVNTT1JfU0VUVEVSKERPTVdpbmRv
d0V2ZW50KQoreworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gVjhET01XcmFw
cGVyOjpsb29rdXBET01XcmFwcGVyKFY4Q2xhc3NJbmRleDo6RE9NV0lORE9XLCBpbmZvLlRoaXMo
KSk7CisgICAgaWYgKGhvbGRlci5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIERP
TVdpbmRvdyogaW1wID0gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8RE9NV2lu
ZG93PihWOENsYXNzSW5kZXg6OkRPTVdJTkRPVywgaG9sZGVyKTsKKyAgICB2ODo6TG9jYWw8djg6
OkNvbnRleHQ+IGNvbnRleHQgPSBWOFByb3h5Ojpjb250ZXh0KGltcC0+ZnJhbWUoKSk7CisgICAg
djg6OkxvY2FsPHY4OjpTdHJpbmc+IGV2ZW50U3ltYm9sID0gdjg6OlN0cmluZzo6TmV3U3ltYm9s
KCJldmVudCIpOworICAgIGNvbnRleHQtPkdsb2JhbCgpLT5TZXRIaWRkZW5WYWx1ZShldmVudFN5
bWJvbCwgdmFsdWUpOworfQorCiBBQ0NFU1NPUl9HRVRURVIoRE9NV2luZG93Q3J5cHRvKQogewog
ICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgbWUuCkluZGV4OiBXZWJDb3JlL3BhZ2UvRE9NV2luZG93
LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAkocmV2aXNpb24g
NDcwMDcpCisrKyBXZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAkod29ya2luZyBjb3B5KQpAQCAt
NTUsNyArNTUsNyBAQCBtb2R1bGUgd2luZG93IHsKICAgICAgICAgYXR0cmlidXRlIFtSZXBsYWNl
YWJsZV0gTmF2aWdhdG9yIGNsaWVudEluZm9ybWF0aW9uOwogICAgICAgICBhdHRyaWJ1dGUgW0Rv
Tm90Q2hlY2tEb21haW5TZWN1cml0eSwgSlNDQ3VzdG9tLCBWOEN1c3RvbVNldHRlciwgVjhEaXNh
bGxvd1NoYWRvd2luZ10gTG9jYXRpb24gbG9jYXRpb247CiAKLSAgICAgICAgYXR0cmlidXRlIFtS
ZXBsYWNlYWJsZSwgQ3VzdG9tR2V0dGVyXSBFdmVudCBldmVudDsKKyAgICAgICAgYXR0cmlidXRl
IFtSZXBsYWNlYWJsZSwgQ3VzdG9tR2V0dGVyLCBWOEN1c3RvbVNldHRlcl0gRXZlbnQgZXZlbnQ7
CiAKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtDdXN0b21dIENyeXB0byBjcnlwdG87CiAK
SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDQ3MDA3KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMDktMDgtMTAgIE5hdGUgQ2hhcGluICA8amFw
aGV0QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGQgYSBsYXlvdXQgdGVzdCB0byBlbnN1cmUgdGhhdCB3aW5kb3cuZXZlbnQg
Y2FuIGJlIHByb3Blcmx5IGFjY2Vzc2VkCisgICAgICAgIGFmdGVyIGl0IGhhcyBiZWVuIG51bGxl
ZCBieSBhIHNjcmlwdCBvbiBhIHBhZ2UuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTI3NzE5CisKKyAgICAgICAgKiBmYXN0L2V2ZW50cy9zZXQtZXZl
bnQtaW4tYW5vdGhlci1mcmFtZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
ZXZlbnRzL3NldC1ldmVudC1pbi1hbm90aGVyLWZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvZXZlbnRzL3NldC1ldmVudC10by1udWxsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9ldmVudHMvc2V0LWV2ZW50LXRvLW51bGwuaHRtbDogQWRkZWQuCisKIDIwMDkt
MDgtMTAgIE5pa29sYXMgWmltbWVybWFubiAgPG5pa29sYXMuemltbWVybWFubkB0b3JjaG1vYmls
ZS5jb20+CiAKICAgICAgICAgUnViYmVyLXN0YW1wZWQgYnkgR2VvcmdlIFN0YWlrb3MuCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zZXQtZXZlbnQtaW4tYW5vdGhlci1mcmFtZS1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc2V0LWV2ZW50
LWluLWFub3RoZXItZnJhbWUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9ldmVudHMvc2V0LWV2ZW50LWluLWFub3RoZXItZnJhbWUtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDkgQEAKKyANCitIZWxwZXJzIGxvYWRlZCENCistLS0gVGVz
dCBiZWdpbnMgLS0tDQord2luZG93LmV2ZW50ID0gdW5kZWZpbmVkDQorLS0tIEFmdGVyIHdpbmRv
dy5ldmVudCA9IG51bGwgLS0tDQord2luZG93LmV2ZW50ID0gbnVsbA0KKy0tLSBBZnRlciBNb3Vz
ZUV2ZW50IGNvbXBsZXRlcyAtLS0NCit3aW5kb3cuZXZlbnQgPSB1bmRlZmluZWQNCistLS0gVGVz
dCBlbmRzIC0tLQ0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3NldC1ldmVudC1pbi1h
bm90aGVyLWZyYW1lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMv
c2V0LWV2ZW50LWluLWFub3RoZXItZnJhbWUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL3NldC1ldmVudC1pbi1hbm90aGVyLWZyYW1lLmh0bWwJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNTggQEAKKzxodG1sPg0KKzxoZWFkPg0KKzxzY3JpcHQ+DQoraWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgew0KKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7DQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsN
Cit9DQorDQorZG9jdW1lbnQuY29va2llID0gJ2Nvb2tpZT1wYXJlbnQnOw0KKw0KK2Z1bmN0aW9u
IGxvZyhtc2cpIHsNCisgICAgdmFyIGxpbmUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYn
KTsNCisgICAgbGluZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtc2cpKTsN
CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKS5hcHBlbmRDaGlsZChsaW5l
KTsNCit9DQorDQorZnVuY3Rpb24gZ2V0RXZlbnQoKSB7DQorICAgIHZhciB0YXJnZXQgPSBmcmFt
ZXNbMV0ud2luZG93Ow0KKyAgICB2YXIgbmV3RXZlbnQgPSBmcmFtZXNbMV0uZG9jdW1lbnQuY3Jl
YXRlRXZlbnQoIk1vdXNlRXZlbnQiKTsNCisgICAgbmV3RXZlbnQuaW5pdE1vdXNlRXZlbnQoIm1v
dXNlb3ZlciIsIGZhbHNlLCBmYWxzZSwgd2luZG93LCAwLCAxMCwgMTAsIDEwLCAxMCwgZmFsc2Us
IGZhbHNlLCBmYWxzZSwgZmFsc2UsIDAsIHRhcmdldCk7DQorICAgIHRhcmdldC5kaXNwYXRjaEV2
ZW50KG5ld0V2ZW50KTsNCit9DQorDQorDQordmFyIHRlc3RTdGFydGVkID0gZmFsc2U7DQorZnVu
Y3Rpb24gZG9UZXN0KCkgew0KKyAgaWYgKHRlc3RTdGFydGVkKQ0KKyAgICAgIHJldHVybjsNCisN
CisgIHRlc3RTdGFydGVkID0gdHJ1ZTsNCisgIGZyYW1lc1swXS5sb2NhdGlvbiA9ICJqYXZhc2Ny
aXB0OiIgKw0KKyAgICAgICJ3aW5kb3cubXlldmVudG51bGwgPSBmdW5jdGlvbigpIHsgcGFyZW50
LmZyYW1lc1sxXS53aW5kb3cuZXZlbnQgPSBudWxsOyB9OyIgKw0KKyAgICAgICJ3aW5kb3cubXll
dmVudHJlYWwgPSBmdW5jdGlvbigpIHsgcGFyZW50LmZyYW1lc1sxXS53aW5kb3cuZXZlbnQgPSBw
YXJlbnQuZ2V0RXZlbnQoKTsgfTsiICsNCisgICAgICAicGFyZW50LmxvZygnSGVscGVycyBsb2Fk
ZWQhXFxuJyk7IiArDQorICAgICAgInBhcmVudC5zZXRUaW1lb3V0KCdjb250aW51ZVRlc3QoKScs
IDEwKTsiOw0KK30NCisNCitmdW5jdGlvbiBjb250aW51ZVRlc3QoKSB7DQorICAgIGxvZygnLS0t
IFRlc3QgYmVnaW5zIC0tLVxuJyk7DQorICAgIGxvZygnd2luZG93LmV2ZW50ID0gJyArIGZyYW1l
c1sxXS53aW5kb3cuZXZlbnQgKyAnXG4nKTsNCisgICAgbG9nKCctLS0gQWZ0ZXIgd2luZG93LmV2
ZW50ID0gbnVsbCAtLS1cbicpOw0KKyAgICBmcmFtZXNbMF0ubXlldmVudG51bGwoKTsNCisgICAg
bG9nKCd3aW5kb3cuZXZlbnQgPSAnICsgZnJhbWVzWzFdLndpbmRvdy5ldmVudCArICdcbicpOw0K
KyAgICBsb2coJy0tLSBBZnRlciBNb3VzZUV2ZW50IGNvbXBsZXRlcyAtLS1cbicpOw0KKyAgICBm
cmFtZXNbMF0ubXlldmVudHJlYWwoKTsNCisgICAgbG9nKCd3aW5kb3cuZXZlbnQgPSAnICsgZnJh
bWVzWzFdLndpbmRvdy5ldmVudCArICdcbicpOw0KKyAgICBsb2coJy0tLSBUZXN0IGVuZHMgLS0t
XG4nKTsNCisNCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOw0KK30NCis8
L3NjcmlwdD4NCis8L2hlYWQ+DQorPGJvZHkgb25sb2FkPSJkb1Rlc3QoKSI+DQorPGlmcmFtZSBz
cmM9ImFib3V0OmJsYW5rIj48L2lmcmFtZT4NCis8aWZyYW1lIHNyYz0iIj48L2lmcmFtZT4NCis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4NCis8L2JvZHk+DQorPC9odG1sPg0KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZXZlbnRzL3NldC1ldmVudC10by1udWxsLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zZXQtZXZlbnQtdG8tbnVsbC1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zZXQtZXZlbnQt
dG8tbnVsbC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMiBAQAorVGhpcyB0
ZXN0IHdpbGwgdHJpZ2dlciBhIG1vdXNlIG92ZXIgb2YgdGhpcyBlbGVtZW50LiBXZSB3aWxsIHRo
ZW4gY2hlY2sgdG8gc2VlIGlmIGV2ZW50IHdhcyBwcm9wZXJseSBzZXQgKGkuZS4sIG5vdCBudWxs
KS4gVGhpcyBpcyBpbiByZXNwb25zZSB0byBhIHY4IGJ1ZyB0aGF0IGNhbiBicmVhayB3aW5kb3cu
ZXZlbnQgZXhwb3N1cmUgaWYgdGhlIGNsaWVudCB0cmllcyB0byBtYW51YWxseSBzZXQgZXZlbnQu
DQorUEFTUzogQWZ0ZXIgTW91c2VFdmVudCwgZXZlbnQgaXMgdmFsaWQNCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy9zZXQtZXZlbnQtdG8tbnVsbC5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZXZlbnRzL3NldC1ldmVudC10by1udWxsLmh0bWwJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zZXQtZXZlbnQtdG8tbnVsbC5odG1sCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDQ2IEBACis8aHRtbD4NCis8aGVhZD4NCis8c2NyaXB0IGxhbmd1
YWdlPSJqYXZhc2NyaXB0Ij4NCitmdW5jdGlvbiBsb2cocykNCit7DQorICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJjb25zb2xlIikuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5v
ZGUocyArICJcbiIpKTsNCit9DQorDQorZnVuY3Rpb24gbW91c2VPdmVyKGV2ZW50KQ0KK3sNCisg
ICAgaWYgKGV2ZW50ID09PSBudWxsKSB7DQorICAgICAgICBsb2coIkZBSUw6IEFmdGVyIE1vdXNl
RXZlbnQsIGV2ZW50IGlzIG51bGwiKTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIGxvZygiUEFT
UzogQWZ0ZXIgTW91c2VFdmVudCwgZXZlbnQgaXMgdmFsaWQiKTsNCisgICAgfQ0KK30NCisNCitm
dW5jdGlvbiBydW5UZXN0KCkgew0KKyAgICB2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInRhcmdldCIpOw0KKyAgICB2YXIgbmV3RXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVu
dCgiTW91c2VFdmVudCIpOw0KKyAgICBuZXdFdmVudC5pbml0TW91c2VFdmVudCgibW91c2VvdmVy
IiwgZmFsc2UsIGZhbHNlLCB3aW5kb3csIDAsIDEwLCAxMCwgMTAsIDEwLCBmYWxzZSwgZmFsc2Us
IGZhbHNlLCBmYWxzZSwgMCwgdGFyZ2V0KTsNCisgICAgdGFyZ2V0LmRpc3BhdGNoRXZlbnQobmV3
RXZlbnQpOw0KKw0KKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7DQorICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7DQorICAgIH0NCit9DQorDQor
PC9zY3JpcHQ+DQorPC9oZWFkPg0KKzxib2R5IG9uTG9hZD0icnVuVGVzdCgpOyI+DQorPGRpdiBp
ZD0idGFyZ2V0IiBvbk1vdXNlT3Zlcj0ibW91c2VPdmVyKGV2ZW50KTsiPlRoaXMgdGVzdCB3aWxs
IHRyaWdnZXIgYSBtb3VzZSBvdmVyIG9mIHRoaXMgZWxlbWVudC4gIA0KK1dlIHdpbGwgdGhlbiBj
aGVjayB0byBzZWUgaWYgZXZlbnQgd2FzIHByb3Blcmx5IHNldCAoaS5lLiwgbm90IG51bGwpLg0K
K1RoaXMgaXMgaW4gcmVzcG9uc2UgdG8gYSB2OCBidWcgdGhhdCBjYW4gYnJlYWsgd2luZG93LmV2
ZW50IGV4cG9zdXJlIGlmIHRoZSBjbGllbnQgdHJpZXMgdG8gbWFudWFsbHkgc2V0IGV2ZW50Ljwv
ZGl2Pg0KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pg0KKzxzY3JpcHQ+DQoraWYgKCEoZXZlbnQg
PT09IHVuZGVmaW5lZCkpIHsNCisgICAgbG9nKCJGQUlMOiBldmVudCBkb2VzIG5vdCBiZWdpbiBh
cyB1bmRlZmluZWQiKTsNCit9DQorZXZlbnQgPSBudWxsOw0KK2lmICghKGV2ZW50ID09PSBudWxs
KSkgew0KKyAgICBsb2coIkZBSUw6IGV2ZW50IHdhcyBub3Qgc3VjY2Vzc2Z1bGx5IHNldCB0byBu
dWxsIik7DQorfQ0KKzwvc2NyaXB0Pg0KKzwvYm9keT4NCis8L2h0bWw+DQo=
</data>
<flag name="review"
          id="18750"
          type_id="1"
          status="-"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34669</attachid>
            <date>2009-08-12 10:17:57 -0700</date>
            <delta_ts>2009-08-12 11:31:55 -0700</delta_ts>
            <desc>patch5</desc>
            <filename>patch5.txt</filename>
            <type>text/plain</type>
            <size>11989</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NzExOSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjEgQEAKKzIwMDktMDgtMTAgIE5hdGUgQ2hhcGluICA8amFwaGV0QGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgYSBDdXN0b20gU2V0dGVyIGZvciBET01XaW5kb3dFdmVudCBpbiB0aGUgVjggYmluZGluZ3Mu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzcxOQor
CisgICAgICAgIFRlc3RzOiBmYXN0L2V2ZW50cy9zZXQtZXZlbnQtaW4tYW5vdGhlci1mcmFtZS5o
dG1sCisgICAgICAgICAgICAgICBmYXN0L2V2ZW50cy9zZXQtZXZlbnQtdG8tbnVsbC5odG1sCisK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbTogQ2xlYW4gdXAg
Y3VzdG9tIGdldHRlci9zZXR0ZXIgY29kZSwgCisgICAgICAgICAgICBhcyBpdCBjdXJyZW50bHkg
ZG9lc24ndCBzdXBwb3J0IGEgY3VzdG9tIGdldHRlciAKKyAgICAgICAgICAgIGFuZCBhIHY4LXNw
ZWNpZmljIGN1c3RvbSBzZXR0ZXIgc2ltdWx0YW5lb3VzbHkuCisgICAgICAgICogYmluZGluZ3Mv
djgvY3VzdG9tL1Y4Q3VzdG9tQmluZGluZy5oOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3Rv
bS9WOERPTVdpbmRvd0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBQ0NFU1NPUl9TRVRU
RVIpOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmlkbDoKKwogMjAwOS0wOC0wOCAgWW9uZyBM
aSAgPHlvbmcubGlAdG9yY2htb2JpbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0g
VHJlYXQuCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBt
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgu
cG0JKHJldmlzaW9uIDQ3MTE5KQorKysgV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JWOC5wbQkod29ya2luZyBjb3B5KQpAQCAtOTc1LDUxICs5NzUsMjQgQEAgc3ViIEdlbmVy
YXRlQmF0Y2hlZEF0dHJpYnV0ZURhdGEKICAgICAgICAgICAgICAgICAgICAgJHNldHRlciA9ICJW
OEN1c3RvbTo6djgke2N1c3RvbUFjY2Vzc29yfUFjY2Vzc29yU2V0dGVyIjsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAjIERl
ZmF1bHQgR2V0dGVyIGFuZCBTZXR0ZXIKKyAgICAgICAgICAgICRnZXR0ZXIgPSAiJHtpbnRlcmZh
Y2VOYW1lfUludGVybmFsOjoke2F0dHJOYW1lfUF0dHJHZXR0ZXIiOworICAgICAgICAgICAgJHNl
dHRlciA9ICIke2ludGVyZmFjZU5hbWV9SW50ZXJuYWw6OiR7YXR0ck5hbWV9QXR0clNldHRlciI7
CiAKLSAgICAgICAgIyBDdXN0b20gR2V0dGVyIGFuZCBTZXR0ZXIKLSAgICAgICAgfSBlbHNpZiAo
JGF0dHJFeHQtPnsiQ3VzdG9tIn0gfHwgJGF0dHJFeHQtPnsiVjhDdXN0b20ifSkgewotICAgICAg
ICAgICAgJGdldHRlciA9ICJWOEN1c3RvbTo6djgke2N1c3RvbUFjY2Vzc29yfUFjY2Vzc29yR2V0
dGVyIjsKLSAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiV29ya2VyQ29udGV4dCIg
YW5kICRhdHRyTmFtZSBlcSAic2VsZiIpIHsKLSAgICAgICAgICAgICAgICAkc2V0dGVyID0gIjAi
OwotICAgICAgICAgICAgICAgICRwcm9wQXR0ciA9ICJ2ODo6UmVhZE9ubHkiOwotICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICMgQ3VzdG9tIFNldHRlcgorICAgICAgICAgICAgaWYg
KCRhdHRyRXh0LT57IkN1c3RvbVNldHRlciJ9IHx8ICRhdHRyRXh0LT57IlY4Q3VzdG9tU2V0dGVy
In0gfHwgJGF0dHJFeHQtPnsiQ3VzdG9tIn0gfHwgJGF0dHJFeHQtPnsiVjhDdXN0b20ifSkgewog
ICAgICAgICAgICAgICAgICRoYXNDdXN0b21TZXR0ZXIgPSAxOwogICAgICAgICAgICAgICAgICRz
ZXR0ZXIgPSAiVjhDdXN0b206OnY4JHtjdXN0b21BY2Nlc3Nvcn1BY2Nlc3NvclNldHRlciI7CiAg
ICAgICAgICAgICB9CiAKLSAgICAgICAgIyBDdXN0b20gU2V0dGVyCi0gICAgICAgIH0gZWxzaWYg
KCRhdHRyRXh0LT57IkN1c3RvbVNldHRlciJ9IHx8ICRhdHRyRXh0LT57IlY4Q3VzdG9tU2V0dGVy
In0pIHsKLSAgICAgICAgICAgICRoYXNDdXN0b21TZXR0ZXIgPSAxOwotICAgICAgICAgICAgJGdl
dHRlciA9ICIke2ludGVyZmFjZU5hbWV9SW50ZXJuYWw6OiR7YXR0ck5hbWV9QXR0ckdldHRlciI7
Ci0gICAgICAgICAgICAkc2V0dGVyID0gIlY4Q3VzdG9tOjp2OCR7Y3VzdG9tQWNjZXNzb3J9QWNj
ZXNzb3JTZXR0ZXIiOwotCi0gICAgICAgICMgQ3VzdG9tIEdldHRlcgotICAgICAgICB9IGVsc2lm
ICgkYXR0ckV4dC0+eyJDdXN0b21HZXR0ZXIifSkgewotICAgICAgICAgICAgJGdldHRlciA9ICJW
OEN1c3RvbTo6djgke2N1c3RvbUFjY2Vzc29yfUFjY2Vzc29yR2V0dGVyIjsKLSAgICAgICAgICAg
ICRzZXR0ZXIgPSAiJHtpbnRlcmZhY2VOYW1lfUludGVybmFsOjoke2F0dHJOYW1lfUF0dHJTZXR0
ZXIiOwotCi0gICAgICAgICMgUmVwbGFjZWFibGUKLSAgICAgICAgfSBlbHNpZiAoJGF0dHJFeHQt
PnsiUmVwbGFjZWFibGUifSkgewotICAgICAgICAgICAgIyBSZXBsYWNlYWJsZSBhY2Nlc3NvciBp
cyBwdXQgb24gaW5zdGFuY2UgdGVtcGxhdGUgd2l0aCBSZWFkT25seSBhdHRyaWJ1dGUuCi0gICAg
ICAgICAgICAkZ2V0dGVyID0gIiR7aW50ZXJmYWNlTmFtZX1JbnRlcm5hbDo6JHthdHRyTmFtZX1B
dHRyR2V0dGVyIjsKLSAgICAgICAgICAgICRzZXR0ZXIgPSAiMCI7Ci0KLSAgICAgICAgICAgICMg
TWFyayB0byBhdm9pZCBkdXBsaWNhdGUgdjg6OlJlYWRPbmx5IGZsYWdzIGluIG91dHB1dC4KLSAg
ICAgICAgICAgICRoYXNDdXN0b21TZXR0ZXIgPSAxOwotCi0gICAgICAgICAgICAjIEhhbmRsZSB0
aGUgc3BlY2lhbCBjYXNlIG9mIHdpbmRvdy50b3AgYmVpbmcgbWFya2VkIHVwc3RyZWFtIGFzIFJl
cGxhY2VhYmxlLgotICAgICAgICAgICAgIyBGSVhNRTogSW52ZXN0aWdhdGUgd2h5IFtSZXBsYWNl
YWJsZV0gaXMgbm90IG1hcmtlZCBhcyBSZWFkT25seQotICAgICAgICAgICAgIyB1cHN0cmVhbSBh
bmQgcmVhY2ggcGFyaXR5LgotICAgICAgICAgICAgaWYgKCEoJGludGVyZmFjZU5hbWUgZXEgIkRP
TVdpbmRvdyIgYW5kICRhdHRyTmFtZSBlcSAidG9wIikpIHsKLSAgICAgICAgICAgICAgICAkcHJv
cEF0dHIgLj0gInx2ODo6UmVhZE9ubHkiOworICAgICAgICAgICAgIyBDdXN0b20gR2V0dGVyCisg
ICAgICAgICAgICBpZiAoJGF0dHJFeHQtPnsiQ3VzdG9tR2V0dGVyIn0gfHwgJGF0dHJFeHQtPnsi
Q3VzdG9tIn0gfHwgJGF0dHJFeHQtPnsiVjhDdXN0b20ifSkgeworICAgICAgICAgICAgICAgICRn
ZXR0ZXIgPSAiVjhDdXN0b206OnY4JHtjdXN0b21BY2Nlc3Nvcn1BY2Nlc3NvckdldHRlciI7CiAg
ICAgICAgICAgICB9Ci0KLSAgICAgICAgIyBOb3JtYWwKLSAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgICRnZXR0ZXIgPSAiJHtpbnRlcmZhY2VOYW1lfUludGVybmFsOjoke2F0dHJOYW1lfUF0
dHJHZXR0ZXIiOwotICAgICAgICAgICAgJHNldHRlciA9ICIke2ludGVyZmFjZU5hbWV9SW50ZXJu
YWw6OiR7YXR0ck5hbWV9QXR0clNldHRlciI7CiAgICAgICAgIH0KIAorICAgICAgICAjIFJlcGxh
Y2VhYmxlCiAgICAgICAgIGlmICgkYXR0ckV4dC0+eyJSZXBsYWNlYWJsZSJ9ICYmICEkaGFzQ3Vz
dG9tU2V0dGVyKSB7CiAgICAgICAgICAgICAkc2V0dGVyID0gIjAiOwogICAgICAgICAgICAgJHBy
b3BBdHRyIC49ICJ8djg6OlJlYWRPbmx5IjsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4Q3VzdG9tQmluZGluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4Q3VzdG9tQmluZGluZy5oCShyZXZpc2lvbiA0NzExOSkKKysrIFdlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tQmluZGluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTgs
NyArMjE4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIERFQ0xBUkVfUFJPUEVS
VFlfQUNDRVNTT1IoQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEU3Ryb2tlU3R5bGUpOwogICAgICAg
ICBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SKENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREZpbGxT
dHlsZSk7Ci0gICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1JfR0VUVEVSKERPTVdpbmRv
d0V2ZW50KTsKKyAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUihET01XaW5kb3dFdmVu
dCk7CiAgICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1JfR0VUVEVSKERPTVdpbmRvd0Ny
eXB0byk7CiAgICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1JfU0VUVEVSKERPTVdpbmRv
d0xvY2F0aW9uKTsKICAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUl9TRVRURVIoRE9N
V2luZG93T3BlbmVyKTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2lu
ZG93Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OERPTVdpbmRvd0N1c3RvbS5jcHAJKHJldmlzaW9uIDQ3MTE5KQorKysgV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTMs
NiArMTUzLDIxIEBAIEFDQ0VTU09SX0dFVFRFUihET01XaW5kb3dFdmVudCkKICAgICByZXR1cm4g
anNFdmVudDsKIH0KIAorQUNDRVNTT1JfU0VUVEVSKERPTVdpbmRvd0V2ZW50KQoreworICAgIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gVjhET01XcmFwcGVyOjpsb29rdXBET01XcmFw
cGVyKFY4Q2xhc3NJbmRleDo6RE9NV0lORE9XLCBpbmZvLlRoaXMoKSk7CisgICAgaWYgKGhvbGRl
ci5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIEZyYW1lKiBmcmFtZSA9IFY4RE9N
V3JhcHBlcjo6Y29udmVydFRvTmF0aXZlT2JqZWN0PERPTVdpbmRvdz4oVjhDbGFzc0luZGV4OjpE
T01XSU5ET1csIGhvbGRlciktPmZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSB8fCAhVjhQcm94eTo6
Y2FuQWNjZXNzRnJhbWUoZnJhbWUsIHRydWUpKQorICAgICAgICByZXR1cm47CisKKyAgICB2ODo6
TG9jYWw8djg6OkNvbnRleHQ+IGNvbnRleHQgPSBWOFByb3h5Ojpjb250ZXh0KGZyYW1lKTsKKyAg
ICB2ODo6TG9jYWw8djg6OlN0cmluZz4gZXZlbnRTeW1ib2wgPSB2ODo6U3RyaW5nOjpOZXdTeW1i
b2woImV2ZW50Iik7CisgICAgY29udGV4dC0+R2xvYmFsKCktPlNldEhpZGRlblZhbHVlKGV2ZW50
U3ltYm9sLCB2YWx1ZSk7Cit9CisKIEFDQ0VTU09SX0dFVFRFUihET01XaW5kb3dDcnlwdG8pCiB7
CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCBtZS4KSW5kZXg6IFdlYkNvcmUvcGFnZS9ET01XaW5k
b3cuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCShyZXZpc2lv
biA0NzExOSkKKysrIFdlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCSh3b3JraW5nIGNvcHkpCkBA
IC01NSw3ICs1NSw3IEBAIG1vZHVsZSB3aW5kb3cgewogICAgICAgICBhdHRyaWJ1dGUgW1JlcGxh
Y2VhYmxlXSBOYXZpZ2F0b3IgY2xpZW50SW5mb3JtYXRpb247CiAgICAgICAgIGF0dHJpYnV0ZSBb
RG9Ob3RDaGVja0RvbWFpblNlY3VyaXR5LCBKU0NDdXN0b20sIFY4Q3VzdG9tU2V0dGVyLCBWOERp
c2FsbG93U2hhZG93aW5nXSBMb2NhdGlvbiBsb2NhdGlvbjsKIAotICAgICAgICBhdHRyaWJ1dGUg
W1JlcGxhY2VhYmxlLCBDdXN0b21HZXR0ZXJdIEV2ZW50IGV2ZW50OworICAgICAgICBhdHRyaWJ1
dGUgW1JlcGxhY2VhYmxlLCBDdXN0b21HZXR0ZXIsIFY4Q3VzdG9tU2V0dGVyXSBFdmVudCBldmVu
dDsKIAogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW0N1c3RvbV0gQ3J5cHRvIGNyeXB0bzsK
IApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L0NoYW5nZUxvZwkocmV2aXNpb24gNDcxMTkpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAwOS0wOC0xMCAgTmF0ZSBDaGFwaW4gIDxq
YXBoZXRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZCBhIGxheW91dCB0ZXN0IHRvIGVuc3VyZSB0aGF0IHdpbmRvdy5ldmVu
dCBjYW4gYmUgcHJvcGVybHkgYWNjZXNzZWQKKyAgICAgICAgYWZ0ZXIgaXQgaGFzIGJlZW4gbnVs
bGVkIGJ5IGEgc2NyaXB0IG9uIGEgcGFnZS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc3MTkKKworICAgICAgICAqIGZhc3QvZXZlbnRzL3NldC1l
dmVudC1pbi1hbm90aGVyLWZyYW1lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFz
dC9ldmVudHMvc2V0LWV2ZW50LWluLWFub3RoZXItZnJhbWUuaHRtbDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9ldmVudHMvc2V0LWV2ZW50LXRvLW51bGwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2V2ZW50cy9zZXQtZXZlbnQtdG8tbnVsbC5odG1sOiBBZGRlZC4KKwogMjAw
OS0wOC0xMiAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBPbGl2ZXIgSHVudC4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L3NldC1ldmVudC1pbi1hbm90aGVyLWZyYW1lLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zZXQtZXZlbnQtaW4tYW5vdGhlci1mcmFtZS1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zZXQtZXZlbnQt
aW4tYW5vdGhlci1mcmFtZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOSBA
QAorIA0KK0hlbHBlcnMgbG9hZGVkIQ0KKy0tLSBUZXN0IGJlZ2lucyAtLS0NCit3aW5kb3cuZXZl
bnQgPSB1bmRlZmluZWQNCistLS0gQWZ0ZXIgd2luZG93LmV2ZW50ID0gbnVsbCAtLS0NCit3aW5k
b3cuZXZlbnQgPSBudWxsDQorLS0tIEFmdGVyIE1vdXNlRXZlbnQgY29tcGxldGVzIC0tLQ0KK3dp
bmRvdy5ldmVudCA9IHVuZGVmaW5lZA0KKy0tLSBUZXN0IGVuZHMgLS0tDQpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvc2V0LWV2ZW50LWluLWFub3RoZXItZnJhbWUuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zZXQtZXZlbnQtaW4tYW5vdGhlci1mcmFt
ZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc2V0LWV2ZW50
LWluLWFub3RoZXItZnJhbWUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1OCBAQAorPGh0
bWw+DQorPGhlYWQ+DQorPHNjcmlwdD4NCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KSB7DQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsNCisgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOw0KK30NCisNCitkb2N1bWVudC5jb29raWUg
PSAnY29va2llPXBhcmVudCc7DQorDQorZnVuY3Rpb24gbG9nKG1zZykgew0KKyAgICB2YXIgbGlu
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOw0KKyAgICBsaW5lLmFwcGVuZENoaWxk
KGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1zZykpOw0KKyAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnY29uc29sZScpLmFwcGVuZENoaWxkKGxpbmUpOw0KK30NCisNCitmdW5jdGlvbiBnZXRF
dmVudCgpIHsNCisgICAgdmFyIHRhcmdldCA9IGZyYW1lc1sxXS53aW5kb3c7DQorICAgIHZhciBu
ZXdFdmVudCA9IGZyYW1lc1sxXS5kb2N1bWVudC5jcmVhdGVFdmVudCgiTW91c2VFdmVudCIpOw0K
KyAgICBuZXdFdmVudC5pbml0TW91c2VFdmVudCgibW91c2VvdmVyIiwgZmFsc2UsIGZhbHNlLCB3
aW5kb3csIDAsIDEwLCAxMCwgMTAsIDEwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgMCwg
dGFyZ2V0KTsNCisgICAgdGFyZ2V0LmRpc3BhdGNoRXZlbnQobmV3RXZlbnQpOw0KK30NCisNCisN
Cit2YXIgdGVzdFN0YXJ0ZWQgPSBmYWxzZTsNCitmdW5jdGlvbiBkb1Rlc3QoKSB7DQorICBpZiAo
dGVzdFN0YXJ0ZWQpDQorICAgICAgcmV0dXJuOw0KKw0KKyAgdGVzdFN0YXJ0ZWQgPSB0cnVlOw0K
KyAgZnJhbWVzWzBdLmxvY2F0aW9uID0gImphdmFzY3JpcHQ6IiArDQorICAgICAgIndpbmRvdy5t
eWV2ZW50bnVsbCA9IGZ1bmN0aW9uKCkgeyBwYXJlbnQuZnJhbWVzWzFdLndpbmRvdy5ldmVudCA9
IG51bGw7IH07IiArDQorICAgICAgIndpbmRvdy5teWV2ZW50cmVhbCA9IGZ1bmN0aW9uKCkgeyBw
YXJlbnQuZnJhbWVzWzFdLndpbmRvdy5ldmVudCA9IHBhcmVudC5nZXRFdmVudCgpOyB9OyIgKw0K
KyAgICAgICJwYXJlbnQubG9nKCdIZWxwZXJzIGxvYWRlZCFcXG4nKTsiICsNCisgICAgICAicGFy
ZW50LnNldFRpbWVvdXQoJ2NvbnRpbnVlVGVzdCgpJywgMTApOyI7DQorfQ0KKw0KK2Z1bmN0aW9u
IGNvbnRpbnVlVGVzdCgpIHsNCisgICAgbG9nKCctLS0gVGVzdCBiZWdpbnMgLS0tXG4nKTsNCisg
ICAgbG9nKCd3aW5kb3cuZXZlbnQgPSAnICsgZnJhbWVzWzFdLndpbmRvdy5ldmVudCArICdcbicp
Ow0KKyAgICBsb2coJy0tLSBBZnRlciB3aW5kb3cuZXZlbnQgPSBudWxsIC0tLVxuJyk7DQorICAg
IGZyYW1lc1swXS5teWV2ZW50bnVsbCgpOw0KKyAgICBsb2coJ3dpbmRvdy5ldmVudCA9ICcgKyBm
cmFtZXNbMV0ud2luZG93LmV2ZW50ICsgJ1xuJyk7DQorICAgIGxvZygnLS0tIEFmdGVyIE1vdXNl
RXZlbnQgY29tcGxldGVzIC0tLVxuJyk7DQorICAgIGZyYW1lc1swXS5teWV2ZW50cmVhbCgpOw0K
KyAgICBsb2coJ3dpbmRvdy5ldmVudCA9ICcgKyBmcmFtZXNbMV0ud2luZG93LmV2ZW50ICsgJ1xu
Jyk7DQorICAgIGxvZygnLS0tIFRlc3QgZW5kcyAtLS1cbicpOw0KKw0KKyAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5ub3RpZnlEb25lKCk7DQorfQ0KKzwvc2NyaXB0Pg0KKzwvaGVhZD4NCis8Ym9k
eSBvbmxvYWQ9ImRvVGVzdCgpIj4NCis8aWZyYW1lIHNyYz0iYWJvdXQ6YmxhbmsiPjwvaWZyYW1l
Pg0KKzxpZnJhbWUgc3JjPSIiPjwvaWZyYW1lPg0KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pg0K
KzwvYm9keT4NCis8L2h0bWw+DQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc2V0LWV2
ZW50LXRvLW51bGwtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
ZXZlbnRzL3NldC1ldmVudC10by1udWxsLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2Zhc3QvZXZlbnRzL3NldC1ldmVudC10by1udWxsLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwyIEBACitUaGlzIHRlc3Qgd2lsbCB0cmlnZ2VyIGEgbW91c2Ug
b3ZlciBvZiB0aGlzIGVsZW1lbnQuIFdlIHdpbGwgdGhlbiBjaGVjayB0byBzZWUgaWYgZXZlbnQg
d2FzIHByb3Blcmx5IHNldCAoaS5lLiwgbm90IG51bGwpLiBUaGlzIGlzIGluIHJlc3BvbnNlIHRv
IGEgdjggYnVnIHRoYXQgY2FuIGJyZWFrIHdpbmRvdy5ldmVudCBleHBvc3VyZSBpZiB0aGUgY2xp
ZW50IHRyaWVzIHRvIG1hbnVhbGx5IHNldCBldmVudC4NCitQQVNTOiBBZnRlciBNb3VzZUV2ZW50
LCBldmVudCBpcyB2YWxpZA0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3NldC1ldmVu
dC10by1udWxsLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc2V0
LWV2ZW50LXRvLW51bGwuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZl
bnRzL3NldC1ldmVudC10by1udWxsLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDYgQEAK
KzxodG1sPg0KKzxoZWFkPg0KKzxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPg0KK2Z1bmN0
aW9uIGxvZyhzKQ0KK3sNCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5h
cHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShzICsgIlxuIikpOw0KK30NCisNCitm
dW5jdGlvbiBtb3VzZU92ZXIoZXZlbnQpDQorew0KKyAgICBpZiAoZXZlbnQgPT09IG51bGwpIHsN
CisgICAgICAgIGxvZygiRkFJTDogQWZ0ZXIgTW91c2VFdmVudCwgZXZlbnQgaXMgbnVsbCIpOw0K
KyAgICB9IGVsc2Ugew0KKyAgICAgICAgbG9nKCJQQVNTOiBBZnRlciBNb3VzZUV2ZW50LCBldmVu
dCBpcyB2YWxpZCIpOw0KKyAgICB9DQorfQ0KKw0KK2Z1bmN0aW9uIHJ1blRlc3QoKSB7DQorICAg
IHZhciB0YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0Iik7DQorICAgIHZh
ciBuZXdFdmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCJNb3VzZUV2ZW50Iik7DQorICAgIG5l
d0V2ZW50LmluaXRNb3VzZUV2ZW50KCJtb3VzZW92ZXIiLCBmYWxzZSwgZmFsc2UsIHdpbmRvdywg
MCwgMTAsIDEwLCAxMCwgMTAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAwLCB0YXJnZXQp
Ow0KKyAgICB0YXJnZXQuZGlzcGF0Y2hFdmVudChuZXdFdmVudCk7DQorDQorICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsNCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsNCisgICAgfQ0KK30NCisNCis8L3NjcmlwdD4NCis8L2hlYWQ+DQorPGJv
ZHkgb25Mb2FkPSJydW5UZXN0KCk7Ij4NCis8ZGl2IGlkPSJ0YXJnZXQiIG9uTW91c2VPdmVyPSJt
b3VzZU92ZXIoZXZlbnQpOyI+VGhpcyB0ZXN0IHdpbGwgdHJpZ2dlciBhIG1vdXNlIG92ZXIgb2Yg
dGhpcyBlbGVtZW50LiAgDQorV2Ugd2lsbCB0aGVuIGNoZWNrIHRvIHNlZSBpZiBldmVudCB3YXMg
cHJvcGVybHkgc2V0IChpLmUuLCBub3QgbnVsbCkuDQorVGhpcyBpcyBpbiByZXNwb25zZSB0byBh
IHY4IGJ1ZyB0aGF0IGNhbiBicmVhayB3aW5kb3cuZXZlbnQgZXhwb3N1cmUgaWYgdGhlIGNsaWVu
dCB0cmllcyB0byBtYW51YWxseSBzZXQgZXZlbnQuPC9kaXY+DQorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+DQorPHNjcmlwdD4NCitpZiAoIShldmVudCA9PT0gdW5kZWZpbmVkKSkgew0KKyAgICBs
b2coIkZBSUw6IGV2ZW50IGRvZXMgbm90IGJlZ2luIGFzIHVuZGVmaW5lZCIpOw0KK30NCitldmVu
dCA9IG51bGw7DQoraWYgKCEoZXZlbnQgPT09IG51bGwpKSB7DQorICAgIGxvZygiRkFJTDogZXZl
bnQgd2FzIG5vdCBzdWNjZXNzZnVsbHkgc2V0IHRvIG51bGwiKTsNCit9DQorPC9zY3JpcHQ+DQor
PC9ib2R5Pg0KKzwvaHRtbD4NCg==
</data>
<flag name="review"
          id="18822"
          type_id="1"
          status="+"
          setter="abarth"
    />
    <flag name="commit-queue"
          id="18839"
          type_id="3"
          status="-"
          setter="japhet"
    />
          </attachment>
      

    </bug>

</bugzilla>