<?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>25533</bug_id>
          
          <creation_ts>2009-05-03 19:24:00 -0700</creation_ts>
          <short_desc>FKA: Elements on the same line should be treated as such by caret navigation</short_desc>
          <delta_ts>2013-11-12 06:32:15 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Accessibility</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>55481</dependson>
          <blocked>25531</blocked>
    
    <blocked>50942</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Joanmarie Diggs">jdiggs</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>apinheiro</cc>
    
    <cc>cfleizach</cc>
    
    <cc>darin</cc>
    
    <cc>enrica</cc>
    
    <cc>jcraig</cc>
    
    <cc>kalman</cc>
    
    <cc>leviw</cc>
    
    <cc>mario</cc>
    
    <cc>p.jacquemart</cc>
    
    <cc>rniwa</cc>
    
    <cc>tkent</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>walker.willie</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>119751</commentid>
    <comment_count>0</comment_count>
    <who name="Joanmarie Diggs">jdiggs</who>
    <bug_when>2009-05-03 19:24:00 -0700</bug_when>
    <thetext>Steps to reproduce:

1. Enable caret navigation if not already enabled. (See bug 16135)

2. Open the (to be) attached test case.

3. Starting from the top of the document, press Down Arrow to progress through the content line by line.

Expected results: Each visual line of text would be treated as a single line for the purpose of navigation.

Actual results: Each table cell and each list item is treated as if it is on a line by itself.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119752</commentid>
    <comment_count>1</comment_count>
      <attachid>29970</attachid>
    <who name="Joanmarie Diggs">jdiggs</who>
    <bug_when>2009-05-03 19:24:37 -0700</bug_when>
    <thetext>Created attachment 29970
aforementioned test case</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>313205</commentid>
    <comment_count>2</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2010-11-24 04:02:40 -0800</bug_when>
    <thetext>I&apos;m curious to know how this works in the Mac port... I mean, does it work like firefox (which I understand it&apos;s the expected behavior as well for GTK) or is it just ok in Mac that down/up arrowing moves to the next/previous cell in the same row for a table?

Asking this because, as far as I can see through my early tests, to make this work as it&apos;s described for the GTK port would require changes in deep WebCore code, and probably platform dependant.

(Adding Chris Fleizach to CC)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318094</commentid>
    <comment_count>3</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2010-12-07 01:46:31 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; I&apos;m curious to know how this works in the Mac port... I mean, does it work like firefox (which I 
&gt; understand it&apos;s the expected behavior as well for GTK) or is it just ok in Mac that down/up 
&gt; arrowing moves to the next/previous cell in the same row for a table?
&gt; 
&gt; Asking this because, as far as I can see through my early tests, to make this work as it&apos;s 
&gt; described for  the GTK port would require changes in deep WebCore code, and probably
&gt; platform dependant.

I plan to work (and hopefully cook a patch) on this bug during this week, at the WebKitGTK hackfest, so any input regarding to my questions above would be really helpful and appreciated O:-) 

I would even consider it as a nice Christmas present!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319393</commentid>
    <comment_count>4</comment_count>
      <attachid>76044</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2010-12-09 04:18:00 -0800</bug_when>
    <thetext>Created attachment 76044
Patch proposal + New layout test

I&apos;m attaching a patch to fix this bug (along with a new layout test) I&apos;ve written this week during the WebKitGTK hackfest, making the following assumptions:

  - It will affect the GTK port only. Other ports will keep working as they used to do and the new functionality introduced is just irrelevant for them.
  - Following Martin Robinson&apos;s suggestion to avoid introducing and JS API breakage with the &quot;MoveDown&quot; and &quot;MoveUp&quot; editing commands, I&apos;ve created new commands for moving up and down (with or without extending a selection) *specifically designed to be used when in caret browsing mode only* which, so far should only affect the GTK port, as the rest of the ports would keep using the &quot;MoveDown&quot;/&quot;MoveUp&quot; commands.
  - In the layout test I&apos;m not only checking the behaviour of this patch when in caret browsing mode but also that the &quot;MoveDown&quot; and &quot;MoveUp&quot; commands (in GTK used only when NOT in caret mode) keep being the same ones than they used to be, to confirm no JS API breakage happened here.

I understand this could be not an easy patch to get accepted, as it introduced four new editing commands that are only needed by the GTK port, but after thinking for a long time and getting a lot of support from Martin, we thought that perhaps this could be the best option to avoid risking the JS API, whenever the patch also provided a good enough layout test for it.

Eager to get some feedback. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319394</commentid>
    <comment_count>5</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2010-12-09 04:20:36 -0800</bug_when>
    <thetext>Adding Kent Tamura and Darin Adler to CC (as per svn blame output)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>323099</commentid>
    <comment_count>6</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2010-12-16 03:49:12 -0800</bug_when>
    <thetext>Removing [GTK] prefix from bug&apos;s title, as its resolution happens mostly in WebCore text editing code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328561</commentid>
    <comment_count>7</comment_count>
      <attachid>77809</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2011-01-03 07:20:21 -0800</bug_when>
    <thetext>Created attachment 77809
Patch proposal + New layout test

Attaching new version of the patch as the previous one is now obsolete, due to latest changes in EditorClientGtk and SelectionController (EDirection type removed)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340030</commentid>
    <comment_count>8</comment_count>
    <who name="Joanmarie Diggs">jdiggs</who>
    <bug_when>2011-01-25 17:15:16 -0800</bug_when>
    <thetext>Ping?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340216</commentid>
    <comment_count>9</comment_count>
    <who name="Joanmarie Diggs">jdiggs</who>
    <bug_when>2011-01-26 05:06:59 -0800</bug_when>
    <thetext>Mario, when I try this fix with certain pages, caret navigation seems to skip lines that it didn&apos;t used to skip.

For instance, try navigating from top to bottom on: http://www.ubuntu.com/project/about-ubuntu</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340221</commentid>
    <comment_count>10</comment_count>
      <attachid>80187</attachid>
    <who name="Joanmarie Diggs">jdiggs</who>
    <bug_when>2011-01-26 05:23:23 -0800</bug_when>
    <thetext>Created attachment 80187
Additional test case

Mario, when re-testing your change for this bug with the test case I mentioned in #a11y, I discovered that your patch impacts it. Therefore maybe this (and my previous comment about skipping lines on Ubuntu) is the same issue after all.

To use this test case, enable caret navigation. Then Tab/Shift+Tab into focus is on the &apos;Start here&apos; link at the top of the page. Start Down Arrowing.

Without your patch, I get stuck on every instance of the &apos;bla&apos; link. I cannot Down Arrow off of it. If I Right Arrow once to move off of the link and then Down Arrow, I move to the end of the line.

With your patch, I only get stuck on the first instance of the &apos;bla&apos; link. I still cannot Down Arrow off of it. But if I Right Arrow once to move off of the link and then Down Arrow, I jump to the very end of the document.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340224</commentid>
    <comment_count>11</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2011-01-26 05:28:06 -0800</bug_when>
    <thetext>Damm it... sounds like this patch is not correct then, after all :-(

Clearing r? flags for now... will come back to it asap (but work is piling up quickly so can&apos;t tell at the moment)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340225</commentid>
    <comment_count>12</comment_count>
      <attachid>77809</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2011-01-26 05:28:31 -0800</bug_when>
    <thetext>Comment on attachment 77809
Patch proposal + New layout test

This is not valid, as per last Joanmarie&apos;s comment</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>359926</commentid>
    <comment_count>13</comment_count>
      <attachid>84236</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2011-03-01 09:04:19 -0800</bug_when>
    <thetext>Created attachment 84236
Patch proposal + Layout test

Attaching a new patch that doesn&apos;t present the problems stated by Joanie, although we still need to fix another bug I found while working on this one that is causing trouble with other issues related to vertical movement of the caret (see below)...

(In reply to comment #10)
&gt; [...]
&gt; Mario, when re-testing your change for this bug with the test case I
&gt; mentioned in #a11y, I discovered that your patch impacts it. Therefore
&gt; maybe this (and my previous comment about skipping lines on Ubuntu) is
&gt; the same issue after all.

Yep, it certainly was :-)

&gt; To use this test case, enable caret navigation. Then Tab/Shift+Tab into
&gt; focus is on the &apos;Start here&apos; link at the top of the page. Start Down
&gt; Arrowing.
&gt; 
&gt; Without your patch, I get stuck on every instance of the &apos;bla&apos; link.
&gt; I cannot Down Arrow off of it. If I Right Arrow once to move off of the
&gt; link and then Down Arrow, I move to the end of the line.
&gt;
&gt; With your patch, I only get stuck on the first instance of the &apos;bla&apos;
&gt; link. I still cannot Down Arrow off of it. But if I Right Arrow once
&gt; to move off of the link and then Down Arrow, I jump to the very end
&gt; of the document.

You were right, I found there was a &quot;different wrong behaviour&quot; with my patch that was not happening without it (still wrong, though), but I found it to be a different bug I&apos;ll be reporting in some minutes, right after posting this comment. Also (and that&apos;s why I mention this here), I&apos;ll be making that new bug blocking this one, since it definitely impacts vertical caret navigation as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>360556</commentid>
    <comment_count>14</comment_count>
      <attachid>84236</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-03-01 21:46:14 -0800</bug_when>
    <thetext>Comment on attachment 84236
Patch proposal + Layout test

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

&gt; Source/WebCore/ChangeLog:28
&gt; +        (WebCore::createCommandMap): Add the new commands needed for the
&gt; +        GTK port, related with up/down movement in caret browsing mode.

I don&apos;t think it&apos;s correct to fix just GTK port.  This is a bug that needs to be fixed on all ports regardless of whether the caret navigation is enabled or not.  To demonstrate the bug on other ports, simply enable the design mode on the attached test case.

&gt; Source/WebCore/editing/EditorCommand.cpp:620
&gt; +static bool isVerticallyCoincident(VisiblePosition origin, VisiblePosition candidate, int originX, SelectionDirection direction)
&gt; +{

This is definitely not right.  We shouldn&apos;t be adding these selection related code in EditorCommand.cpp, which is supposed to be delegating all the work to the rest of editing code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>360680</commentid>
    <comment_count>15</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2011-03-02 02:36:34 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 84236 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=84236&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:28
&gt; &gt; +        (WebCore::createCommandMap): Add the new commands needed for the
&gt; &gt; +        GTK port, related with up/down movement in caret browsing mode.
&gt; 
&gt; I don&apos;t think it&apos;s correct to fix just GTK port. 

Actually the code I&apos;ve introduced is common to all the platforms, it&apos;s just that the GTK port is the only one that would use it at the moment, since it&apos;s the only one, afaik, with caret browsing mode.

I created those 4 new commands precisely because modifying the behavior of the already present MoveUp/MoveDown commands would have an impact in the current API, and that seemed to me like a bad idea.

&gt; This is a bug that needs to be fixed on all ports regardless of whether the
&gt; caret navigation is enabled or not.

I checked what Chrome and Safari does when moving across a table (not in caret browsing mode, but selecting a single character and then extending the selection with shift+arrows) and I found they traverse tables in the same (wrong?) way: cell by cell in a row by row basis.

Obviously, my current patch wouldn&apos;t fix the behavior for those other ports since I&apos;m defining four new commands precisely not to touch current up/down behavior, but your comment makes me think perhaps I should actually be modifying those current commands, instead of creating new ones.

Could you please clarify?

&gt; To demonstrate the bug on other ports, simply enable the design mode on the
&gt; attached test case.

What do you mean by &quot;enable the design mode&quot;?

&gt; &gt; Source/WebCore/editing/EditorCommand.cpp:620
&gt; &gt; +static bool isVerticallyCoincident(VisiblePosition origin, VisiblePosition candidate, int originX, SelectionDirection direction)
&gt; &gt; +{
&gt; 
&gt; This is definitely not right.  We shouldn&apos;t be adding these selection related
&gt; code in EditorCommand.cpp, which is supposed to be delegating all the work
&gt; to the rest of editing code.

Could you provide some guidance, even roughly, about how this could be done then? I&apos;m not fond on this so deep issues in editing stuff and probably I&apos;m missing something :-)

Thanks for the great feedback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>360687</commentid>
    <comment_count>16</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-03-02 02:51:21 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; &gt; This is a bug that needs to be fixed on all ports regardless of whether the
&gt; &gt; caret navigation is enabled or not.
&gt; 
&gt; I checked what Chrome and Safari does when moving across a table (not in caret browsing mode, but selecting a single character and then extending the selection with shift+arrows) and I found they traverse tables in the same (wrong?) way: cell by cell in a row by row basis.
&gt; 
&gt; Obviously, my current patch wouldn&apos;t fix the behavior for those other ports since I&apos;m defining four new commands precisely not to touch current up/down behavior, but your comment makes me think perhaps I should actually be modifying those current commands, instead of creating new ones.

Yes.  You should be changing the behavior of up/down on all platforms because the current behavior is inconsistent with TextEdit, Firefox, etc...

&gt; &gt; To demonstrate the bug on other ports, simply enable the design mode on the
&gt; &gt; attached test case.
&gt; 
&gt; What do you mean by &quot;enable the design mode&quot;?

document.designMode = &apos;on&apos;;

&gt; &gt; &gt; Source/WebCore/editing/EditorCommand.cpp:620
&gt; &gt; &gt; +static bool isVerticallyCoincident(VisiblePosition origin, VisiblePosition candidate, int originX, SelectionDirection direction)
&gt; &gt; &gt; +{
&gt; &gt; 
&gt; &gt; This is definitely not right.  We shouldn&apos;t be adding these selection related
&gt; &gt; code in EditorCommand.cpp, which is supposed to be delegating all the work
&gt; &gt; to the rest of editing code.
&gt; 
&gt; Could you provide some guidance, even roughly, about how this could be done then? I&apos;m not fond on this so deep issues in editing stuff and probably I&apos;m missing something :-)

Given my comment above, I&apos;d guess that you need to modify SelectionController.cpp and visible_units.cpp but not EditorCommand.cpp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>360691</commentid>
    <comment_count>17</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2011-03-02 03:05:13 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; [...]
&gt; &gt; Obviously, my current patch wouldn&apos;t fix the behavior for those other ports since I&apos;m defining four new commands precisely not to touch current up/down behavior, but your comment makes me think perhaps I should actually be modifying those current commands, instead of creating new ones.
&gt; 
&gt; Yes.  You should be changing the behavior of up/down on all platforms because the current behavior is inconsistent with TextEdit, Firefox, etc...

Gotcha. So no more MoveCaretUp/Down command, let&apos;s fix MoveUp/Down instead.

&gt; &gt; &gt; To demonstrate the bug on other ports, simply enable the design mode on the
&gt; &gt; &gt; attached test case.
&gt; &gt; 
&gt; &gt; What do you mean by &quot;enable the design mode&quot;?
&gt; 
&gt; document.designMode = &apos;on&apos;;

Very useful tip indeed. Thanks! I was using the select-1-char + extend with shift/arrow trick to workaround that in chrome and safari. Much better this way!

&gt; &gt; &gt; &gt; Source/WebCore/editing/EditorCommand.cpp:620
&gt; &gt; &gt; &gt; +static bool isVerticallyCoincident(VisiblePosition origin, VisiblePosition candidate, int originX, SelectionDirection direction)
&gt; &gt; &gt; &gt; +{
&gt; &gt; &gt; 
&gt; &gt; &gt; This is definitely not right.  We shouldn&apos;t be adding these selection related
&gt; &gt; &gt; code in EditorCommand.cpp, which is supposed to be delegating all the work
&gt; &gt; &gt; to the rest of editing code.
&gt; &gt; 
&gt; &gt; Could you provide some guidance, even roughly, about how this could be done then? I&apos;m not fond on this so deep issues in editing stuff and probably I&apos;m missing something :-)
&gt; 
&gt; Given my comment above, I&apos;d guess that you need to modify SelectionController.cpp and visible_units.cpp but not EditorCommand.cpp.

Now I understood why I shouldn&apos;t be creating new commands, this makes a lot of sense to me as well.

Still fix for bug 55481 keeps being a dependency for this so I&apos;ll base my work on that one, hoping it will be accepted at some point :-)

Thanks twice!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363383</commentid>
    <comment_count>18</comment_count>
      <attachid>84953</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2011-03-07 09:53:19 -0800</bug_when>
    <thetext>Created attachment 84953
WIP: (incomplete) patch for fixing the bug

I&apos;ve been working lately on this bug but couldn&apos;t find a reliable patch for it yet, that is, I have a patch that seems to improve the situation but still makes some other tests to fail, which means is not correct yet and need further work.

However, due to other constraints currently out of my control, I need to temporarily stop working on this bug and move on to another task, so I&apos;m attaching the patch with the current status of the patch I have, hoping I can resume work on this stuff soon at some point in the next months, or simply for the sake of sharing it in case someone else wished to step up finishing it during the meantime.

Hence, not asking for review over the attached patch.

(In reply to comment #17)
[...]
&gt; &gt; Yes.  You should be changing the behavior of up/down on all platforms because the current behavior is inconsistent with TextEdit, Firefox, etc...
&gt; 
&gt; Gotcha. So no more MoveCaretUp/Down command, let&apos;s fix MoveUp/Down instead.
&gt; 

Did it that way. Now I just need to fix those failing tests :-)

[...]
&gt; &gt; &gt; Could you provide some guidance, even roughly, about how this could be done then? I&apos;m not fond on this so deep issues in editing stuff and probably I&apos;m missing something :-)
&gt; &gt; 
&gt; &gt; Given my comment above, I&apos;d guess that you need to modify SelectionController.cpp and visible_units.cpp but not EditorCommand.cpp.
&gt; 
&gt; Now I understood why I shouldn&apos;t be creating new commands, this makes a lot of sense to me as well.
&gt;
&gt; Still fix for bug 55481 keeps being a dependency for this so I&apos;ll base my work on that one, hoping it will be accepted at some point :-)

As I said here, I used patch for 55481 as a dependency for this one, as it&apos;s crucial not to get stuck on objects with non-zero padding/border when navigating vertically.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>29970</attachid>
            <date>2009-05-03 19:24:37 -0700</date>
            <delta_ts>2009-05-03 19:24:37 -0700</delta_ts>
            <desc>aforementioned test case</desc>
            <filename>line-nav.html</filename>
            <type>text/html</type>
            <size>670</size>
            <attacher name="Joanmarie Diggs">jdiggs</attacher>
            
              <data encoding="base64">PGh0bWw+CjxoZWFkPgo8c3R5bGU+CiNzaWxseS1saXN0IHsKCWxpc3Qtc3R5bGU6IG5vbmU7Cn0K
CiNzaWxseS1saXN0IGxpIHsKCWZsb2F0OiBsZWZ0OwoJcGFkZGluZzogMTBweDsKfQo8L3N0eWxl
Pgo8dGl0bGU+TGluZSBOYXZpZ2F0aW9uIFRlc3Q8L3RpdGxlPgo8L2hlYWQ+Cjxib2R5Pgo8cD5I
ZXJlIGlzIGEgc2ltcGxlIHRhYmxlOjwvcD4KPHRhYmxlIHdpZHRoPSIxMDAlIj4KPGNhcHRpb24+
VGFibGUgQ2FwdGlvbjwvY2FwdGlvbj4KPHRyPjx0aD48L3RoPjx0aD5Db2wuIEhlYWRlciAxPC90
aD48dGg+Q29sLiBIZWFkZXIgMjwvdGg+PC90cj4KPHRyPjx0aD5Sb3cgSGVhZGVyIDE8L3RoPjx0
ZD5PbmU8L3RkPjx0ZD5Ud288L3RkPjwvdHI+Cjx0cj48dGg+Um93IEhlYWRlciAyPC90aD48dGQ+
VGhyZWU8L3RkPjx0ZD5Gb3VyPC90ZD48L3RyPgo8L3RhYmxlPgo8cD5IZXJlIGlzIG1vcmUgdGV4
dCwgZm9sbG93ZWQgYnkgYSBsaXN0IHdpdGggYWxsIG9mIHRoZSBlbGVtZW50cyBvbiBhIHNpbmds
ZSBsaW5lOjwvcD4KPHVsIGlkPSJzaWxseS1saXN0Ij4KPGxpPk9uZTwvbGk+CjxsaT5Ud288L2xp
Pgo8bGk+VGhyZWU8L2xpPgo8bGk+Rm91cjwvbGk+CjwvdWw+CjxiciBjbGVhcj1hbGw+CjxwPkFu
ZCBhIGZpbmFsIGxpbmUgb2YgdGV4dDwvcD4KPC9ib2R5Pgo8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76044</attachid>
            <date>2010-12-09 04:18:00 -0800</date>
            <delta_ts>2011-01-03 07:20:21 -0800</delta_ts>
            <desc>Patch proposal + New layout test</desc>
            <filename>0001-2010-12-09-Mario-Sanchez-Prada-msanchez-igalia.com.patch</filename>
            <type>text/plain</type>
            <size>27427</size>
            <attacher name="Mario Sanchez Prada">mario</attacher>
            
              <data encoding="base64">RnJvbSBmYWMyZmJmNDZkNTAwYjk1MTM2OWNlNmQxMzAwN2QxNjIxYzBkMTNjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJpbyBTYW5jaGV6IFByYWRhIDxtc2FuY2hlekBpZ2FsaWEu
Y29tPgpEYXRlOiBXZWQsIDggRGVjIDIwMTAgMjM6MTI6MDcgKzAxMDAKU3ViamVjdDogW1BBVENI
XSAyMDEwLTEyLTA5ICBNYXJpbyBTYW5jaGV6IFByYWRhICA8bXNhbmNoZXpAaWdhbGlhLmNvbT4K
CiAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgogICAgICAgIFtHVEtdIEVsZW1l
bnRzIG9uIHRoZSBzYW1lIGxpbmUgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgc3VjaCBieSBjYXJldCBu
YXZpZ2F0aW9uCiAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTI1NTMzCgogICAgICAgIEVuc3VyZSB0aGUgY2FyZXQgd2lsbCBtb3ZlIHRvIGEgdmVydGljYWxs
eSBjb2luY2lkZW50IHBvc2l0aW9uCiAgICAgICAgd2hlbiBtb3ZpbmcgdXAgYW5kIGRvd24gYWNy
b3NzIGRpZmZlcmVudCBsaW5lcy4KCiAgICAgICAgKiBlZGl0aW5nL0VkaXRvckNvbW1hbmQuY3Bw
OgogICAgICAgIChXZWJDb3JlOjppc1ZlcnRpY2FsbHlDb2luY2lkZW50KTogTmV3LCBjaGVja3Mg
aWYgYSByZW5kZXJlciBpcwogICAgICAgIHZlcnRpY2FsbHkgY29pbmNpZGVudCB0byBhbm90aGVy
IG9uZSB1c2VkIGFzIHJlZmVyZW5jZSBhbmQgYSBnaXZlbgogICAgICAgIFggcG9zaXRpb24sIHdo
ZW4gbW92aW5nIHVwIGFuZCBkb3duIGluIGNhcmV0IGJyb3dzaW5nIG1vZGUuCiAgICAgICAgKFdl
YkNvcmU6OnBlcmZvcm1DYXJldE1vdmVtZW50KTogQWN0dWFsbHkgbW92ZSB0aGUgY2FyZXQgZm9y
d2FyZAogICAgICAgIG9yIGJhY2t3YXJkIGFjcm9zcyBkaWZmZXJlbnQgbGluZXMsIGVuc3VyaW5n
IHRoZSBmaW5hbCBkZXN0aW5hdGlvbgogICAgICAgIGlzIGEgcmVuZGVyZXIgdmVydGljYWxseSBj
b2luY2lkZW50IHdpdGggdGhlIHN0YXJ0IHBvaW50LgogICAgICAgIChXZWJDb3JlOjpleGVjdXRl
TW92ZUNhcmV0RG93bik6IE5ldywgaW1wbGVtZW50cyB0aGUgbmV3CiAgICAgICAgIk1vdmVDYXJl
dERvd24iIGNvbW1hbmQsIHVzZWQgaW4gY2FyZXQgYnJvd3NpbmcgbW9kZSBvbmx5LCBzbyBmYXIK
ICAgICAgICBhZmZlY3RpbmcgdGhlIEdUSyBwb3J0IG9ubHkuCiAgICAgICAgKFdlYkNvcmU6OmV4
ZWN1dGVNb3ZlQ2FyZXREb3duQW5kTW9kaWZ5U2VsZWN0aW9uKTogTmV3LCBpbXBsZW1lbnRzCiAg
ICAgICAgdGhlIG5ldyAiTW92ZUNhcmV0RG93bkFuZE1vZGlmeVNlbGVjdGlvbiIgY29tbWFuZC4K
ICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVDYXJldFVwKTogTmV3LCBpbXBsZW1lbnRzIHRo
ZSBuZXcKICAgICAgICAiTW92ZUNhcmV0VXAiIGNvbW1hbmQuCiAgICAgICAgKFdlYkNvcmU6OmV4
ZWN1dGVNb3ZlQ2FyZXRVcEFuZE1vZGlmeVNlbGVjdGlvbik6IE5ldywgaW1wbGVtZW50cwogICAg
ICAgIHRoZSBuZXcgIk1vdmVDYXJldFVwQW5kTW9kaWZ5U2VsZWN0aW9uIiBjb21tYW5kLgogICAg
ICAgIChXZWJDb3JlOjpjcmVhdGVDb21tYW5kTWFwKTogQWRkIHRoZSBuZXcgY29tbWFuZHMgbmVl
ZGVkIGZvciB0aGUKICAgICAgICBHVEsgcG9ydCwgcmVsYXRlZCB3aXRoIHVwL2Rvd24gbW92ZW1l
bnQgaW4gY2FyZXQgYnJvd3NpbmcgbW9kZS4KCjIwMTAtMTItMDkgIE1hcmlvIFNhbmNoZXogUHJh
ZGEgIDxtc2FuY2hlekBpZ2FsaWEuY29tPgoKICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KCiAgICAgICAgW0dUS10gRWxlbWVudHMgb24gdGhlIHNhbWUgbGluZSBzaG91bGQgYmUg
dHJlYXRlZCBhcyBzdWNoIGJ5IGNhcmV0IG5hdmlnYXRpb24KICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU1MzMKCiAgICAgICAgVXNlIHRoZSBuZXcgY29t
bWFuZHMgZm9yIG1vdmluZyB1cC9kb3duIGluIGNhcmV0IGJyb3dzaW5nIG1vZGUuCgogICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcDoKICAgICAgICAoV2ViS2l0Ojpt
b3ZlQ3Vyc29yQ2FsbGJhY2spOiBSZWRlZmluZSByYXdDb21tYW5kIHRvIG9uZSBvZiB0aGUKICAg
ICAgICBuZXcgZm91ciBjb21tYW5kcyB3aGVuIGFwcHJvcHJpYXRlLgoKMjAxMC0xMi0wOSAgTWFy
aW8gU2FuY2hleiBQcmFkYSAgPG1zYW5jaGV6QGlnYWxpYS5jb20+CgogICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgoKICAgICAgICBbR1RLXSBFbGVtZW50cyBvbiB0aGUgc2FtZSBs
aW5lIHNob3VsZCBiZSB0cmVhdGVkIGFzIHN1Y2ggYnkgY2FyZXQgbmF2aWdhdGlvbgogICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTUzMwoKICAgICAgICBO
ZXcgbGF5b3V0IHRlc3QgZm9yIGNoZWNraW5nIHRoZSBuZXcgZWRpdGluZyBjb21tYW5kcyBmb3Ig
bW92aW5nCiAgICAgICAgdGhlIGNhcmV0IHVwIGFuZCBkb3duIHdoZW4gaW4gY2FyZXQgYnJvd3Np
bmcgKEdUSy1vbmx5IHNvIGZhcikuCgogICAgICAgICogcGxhdGZvcm0vZ3RrL2VkaXRpbmcvc2Vs
ZWN0aW9uL2NhcmV0LW1vZGUtdmVydGljYWwtbmF2aWdhdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVk
LgogICAgICAgICogcGxhdGZvcm0vZ3RrL2VkaXRpbmcvc2VsZWN0aW9uL2NhcmV0LW1vZGUtdmVy
dGljYWwtbmF2aWdhdGlvbi5odG1sOiBBZGRlZC4KLS0tCiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTMgKysKIC4uLi9jYXJldC1tb2RlLXZl
cnRpY2FsLW5hdmlnYXRpb24tZXhwZWN0ZWQudHh0ICAgIHwgICA1MiArKysrKysrKwogLi4uL3Nl
bGVjdGlvbi9jYXJldC1tb2RlLXZlcnRpY2FsLW5hdmlnYXRpb24uaHRtbCAgfCAgMTM1ICsrKysr
KysrKysrKysrKysrKysrCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8ICAgMjkgKysrKwogV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3Bw
ICAgICAgICAgICAgICAgICAgfCAgMTA0ICsrKysrKysrKysrKysrKy0KIFdlYktpdC9ndGsvQ2hh
bmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxMyArKwogV2ViS2l0L2d0
ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwICAgICAgfCAgIDIxICsrKy0KIDcg
ZmlsZXMgY2hhbmdlZCwgMzYyIGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCiBjcmVhdGUg
bW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2VkaXRpbmcvc2VsZWN0aW9uL2Nh
cmV0LW1vZGUtdmVydGljYWwtbmF2aWdhdGlvbi1leHBlY3RlZC50eHQKIGNyZWF0ZSBtb2RlIDEw
MDY0NCBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZWRpdGluZy9zZWxlY3Rpb24vY2FyZXQtbW9k
ZS12ZXJ0aWNhbC1uYXZpZ2F0aW9uLmh0bWwKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYTk2YjI0Zi4uZTdlZGY4MSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE2IEBACisyMDEwLTEyLTA5ICBNYXJpbyBTYW5jaGV6IFByYWRhICA8bXNh
bmNoZXpAaWdhbGlhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBbR1RLXSBFbGVtZW50cyBvbiB0aGUgc2FtZSBsaW5lIHNob3VsZCBiZSB0cmVh
dGVkIGFzIHN1Y2ggYnkgY2FyZXQgbmF2aWdhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU1MzMKKworICAgICAgICBOZXcgbGF5b3V0IHRlc3Qg
Zm9yIGNoZWNraW5nIHRoZSBuZXcgZWRpdGluZyBjb21tYW5kcyBmb3IgbW92aW5nCisgICAgICAg
IHRoZSBjYXJldCB1cCBhbmQgZG93biB3aGVuIGluIGNhcmV0IGJyb3dzaW5nIChHVEstb25seSBz
byBmYXIpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3RrL2VkaXRpbmcvc2VsZWN0aW9uL2NhcmV0
LW1vZGUtdmVydGljYWwtbmF2aWdhdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2d0ay9lZGl0aW5nL3NlbGVjdGlvbi9jYXJldC1tb2RlLXZlcnRpY2FsLW5hdmln
YXRpb24uaHRtbDogQWRkZWQuCisKIDIwMTAtMTItMDYgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6
YWNoQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBPbGl2ZXIgSHVudC4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9lZGl0aW5nL3NlbGVjdGlvbi9jYXJldC1t
b2RlLXZlcnRpY2FsLW5hdmlnYXRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vZ3RrL2VkaXRpbmcvc2VsZWN0aW9uL2NhcmV0LW1vZGUtdmVydGljYWwtbmF2aWdhdGlvbi1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjYwZjZiMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9lZGl0aW5nL3NlbGVj
dGlvbi9jYXJldC1tb2RlLXZlcnRpY2FsLW5hdmlnYXRpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsNTIgQEAKK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZEJlZ2luRWRpdGluZ0luRE9NUmFuZ2U6
cmFuZ2UgZnJvbSAwIG9mIERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDcgb2YgRElW
ID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQKK0VESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRC
ZWdpbkVkaXRpbmc6V2ViVmlld0RpZEJlZ2luRWRpdGluZ05vdGlmaWNhdGlvbgorRURJVElORyBE
RUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0
aW9uTm90aWZpY2F0aW9uCitFRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERP
TVJhbmdlOnJhbmdlIGZyb20gMyBvZiAjdGV4dCA+IFNQQU4gPiBESVYgPiBCT0RZID4gSFRNTCA+
ICNkb2N1bWVudCB0byAzIG9mICN0ZXh0ID4gU1BBTiA+IERJViA+IEJPRFkgPiBIVE1MID4gI2Rv
Y3VtZW50IHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAzIG9mICN0ZXh0ID4gUCA+IERJViA+IEJPRFkg
PiBIVE1MID4gI2RvY3VtZW50IHRvIDMgb2YgI3RleHQgPiBQID4gRElWID4gQk9EWSA+IEhUTUwg
PiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxT
ZWxlY3Rpbmc6RkFMU0UKK0VESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rp
b246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgorRURJVElORyBERUxFR0FU
RTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9tIDMgb2YgI3RleHQgPiBQ
ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMyBvZiAjdGV4dCA+IFAgPiBESVYg
PiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0b0RPTVJhbmdlOnJhbmdlIGZyb20gNSBvZiBESVYg
PiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byA1IG9mIERJViA+IEJPRFkgPiBIVE1MID4gI2Rv
Y3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0
aW5nOkZBTFNFCitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldl
YlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHNo
b3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSA1IG9mIERJViA+IEJPRFkgPiBI
VE1MID4gI2RvY3VtZW50IHRvIDUgb2YgRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG9E
T01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgUCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50
IHRvIDAgb2YgUCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2Vs
ZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCitFRElUSU5HIERF
TEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rp
b25Ob3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9N
UmFuZ2U6cmFuZ2UgZnJvbSAzIG9mICN0ZXh0ID4gUCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2Rv
Y3VtZW50IHRvIDMgb2YgI3RleHQgPiBQID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQg
dG9ET01SYW5nZTpyYW5nZSBmcm9tIDMgb2YgI3RleHQgPiBTUEFOID4gRElWID4gQk9EWSA+IEhU
TUwgPiAjZG9jdW1lbnQgdG8gMyBvZiAjdGV4dCA+IFNQQU4gPiBESVYgPiBCT0RZID4gSFRNTCA+
ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNl
bGVjdGluZzpGQUxTRQorRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlv
bjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCitFRElUSU5HIERFTEVHQVRF
OiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20gMyBvZiAjdGV4dCA+IFNQ
QU4gPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAzIG9mICN0ZXh0ID4gU1BBTiA+
IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9m
IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDAgb2YgRElWID4gQk9EWSA+IEhUTUwg
PiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxT
ZWxlY3Rpbmc6RkFMU0UKK0VESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rp
b246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgorQ29sLiBIZWFkZXIgMQlD
b2wuIEhlYWRlciAyCitSb3cgSGVhZGVyIDEJT25lCVR3bworUm93IEhlYWRlciAyCVRocmVlCUZv
dXIKK0EgcGFyYWdyYXBoIGJldHdlZW4gYSA5LWNlbGwgdGFibGUgYW5kIGEgbGlzdCBvZiB0aHJl
ZSBpdGVtcy4KKworQ2F0RG9nRWxlcGhhbnQKKy0gRm9vCistIEJhcgorCisKK1RoaXMgdGVzdHMg
dmVydGljYWwgY2FyZXQgbmF2aWdhdGlvbiB3b3JrcyBhcyBleHBlY3RlZCBhY3Jvc3MgdGFibGVz
IGFuZCBmbG9hdGluZyBlbGVtZW50cy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisK
K1BBU1MgZ2V0U2VsZWN0aW9uKCkuYW5jaG9yTm9kZS5ub2RlVmFsdWUgaXMgJ0NvbC4gSGVhZGVy
IDEnCitQQVNTIGdldFNlbGVjdGlvbigpLmJhc2VPZmZzZXQgaXMgNQorUEFTUyBnZXRTZWxlY3Rp
b24oKS5hbmNob3JOb2RlLm5vZGVWYWx1ZSBpcyAnT25lJworUEFTUyBnZXRTZWxlY3Rpb24oKS5i
YXNlT2Zmc2V0IGlzIDMKK1BBU1MgZ2V0U2VsZWN0aW9uKCkuYW5jaG9yTm9kZS5ub2RlVmFsdWUg
aXMgJ1RocmVlJworUEFTUyBnZXRTZWxlY3Rpb24oKS5iYXNlT2Zmc2V0IGlzIDUKK1BBU1MgZ2V0
U2VsZWN0aW9uKCkuYW5jaG9yTm9kZS5ub2RlVmFsdWUgaXMgJ0EgcGFyYWdyYXBoIGJldHdlZW4g
YSA5LWNlbGwgdGFibGUgYW5kIGEgbGlzdCBvZiB0aHJlZSBpdGVtcy4nCitQQVNTIGdldFNlbGVj
dGlvbigpLmJhc2VPZmZzZXQgaXMgNjEKK1BBU1MgZ2V0U2VsZWN0aW9uKCkuYW5jaG9yTm9kZS5u
b2RlVmFsdWUgaXMgJ0VsZXBoYW50JworUEFTUyBnZXRTZWxlY3Rpb24oKS5iYXNlT2Zmc2V0IGlz
IDAKK1BBU1MgZ2V0U2VsZWN0aW9uKCkuYW5jaG9yTm9kZS5ub2RlVmFsdWUgaXMgJ1JvdyBIZWFk
ZXIgMicKK1BBU1MgZ2V0U2VsZWN0aW9uKCkuYmFzZU9mZnNldCBpcyA2CitQQVNTIHJhbmdlLnN0
YXJ0Q29udGFpbmVyLm5vZGVWYWx1ZSBpcyAnUm93IEhlYWRlciAxJworUEFTUyBnZXRTZWxlY3Rp
b24oKS5iYXNlT2Zmc2V0IGlzIDYKK1BBU1MgcmFuZ2UuZW5kQ29udGFpbmVyLm5vZGVWYWx1ZSBp
cyAnUm93IEhlYWRlciAyJworUEFTUyBnZXRTZWxlY3Rpb24oKS5leHRlbnRPZmZzZXQgaXMgNgor
UEFTUyByYW5nZS5zdGFydENvbnRhaW5lci5ub2RlVmFsdWUgaXMgJ1JvdyBIZWFkZXIgMicKK1BB
U1MgZ2V0U2VsZWN0aW9uKCkuYmFzZU9mZnNldCBpcyA2CitQQVNTIHJhbmdlLmVuZENvbnRhaW5l
ci5ub2RlVmFsdWUgaXMgJ0EgcGFyYWdyYXBoIGJldHdlZW4gYSA5LWNlbGwgdGFibGUgYW5kIGEg
bGlzdCBvZiB0aHJlZSBpdGVtcy4nCitQQVNTIGdldFNlbGVjdGlvbigpLmV4dGVudE9mZnNldCBp
cyAyMAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9lZGl0aW5nL3NlbGVjdGlvbi9j
YXJldC1tb2RlLXZlcnRpY2FsLW5hdmlnYXRpb24uaHRtbCBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2d0ay9lZGl0aW5nL3NlbGVjdGlvbi9jYXJldC1tb2RlLXZlcnRpY2FsLW5hdmlnYXRpb24uaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMmNkODdlCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2VkaXRpbmcvc2VsZWN0aW9uL2NhcmV0
LW1vZGUtdmVydGljYWwtbmF2aWdhdGlvbi5odG1sCkBAIC0wLDAgKzEsMTM1IEBACis8IURPQ1RZ
UEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgor
PHN0eWxlPgorI2Zsb2F0aW5nLWxpc3QgeworICBsaXN0LXN0eWxlOiBub25lOworICB3aWR0aDog
MTAwJTsKK30KKworI2Zsb2F0aW5nLWxpc3QgbGkgeworICBmbG9hdDogbGVmdDsKKyAgcGFkZGlu
ZzogMTBweDsKK30KKzwvc3R5bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQ+Cit2YXIgc3VjY2Vz
c2Z1bGx5UGFyc2VkID0gZmFsc2U7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vZWRpdGluZy5qcyIgbGFuZ3VhZ2U9IkphdmFTY3JpcHQiIHR5cGU9InRleHQvSmF2YVNj
cmlwdCIgPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgaWQ9ImJvZHkiPgorPHRhYmxlIHdpZHRo
PSIxMDAlIj4KKyAgPHRyPjx0aD48L3RoPjx0aCBpZD0ic3RhcnRXaXRoQ2FyZXRCcm93c2luZyI+
Q29sLiBIZWFkZXIgMTwvdGg+PHRoPkNvbC4gSGVhZGVyIDI8L3RoPjwvdHI+CisgIDx0cj48dGg+
Um93IEhlYWRlciAxPC90aD48dGQ+T25lPC90ZD48dGQ+VHdvPC90ZD48L3RyPgorICA8dHI+PHRo
PlJvdyBIZWFkZXIgMjwvdGg+PHRkPlRocmVlPC90ZD48dGQ+Rm91cjwvdGQ+PC90cj4KKzwvdGFi
bGU+Cis8cCBpZD0icGFyYWdyYXBoIj5BIHBhcmFncmFwaCBiZXR3ZWVuIGEgOS1jZWxsIHRhYmxl
IGFuZCBhIGxpc3Qgb2YgdGhyZWUgaXRlbXMuPC9wPgorPHVsIGlkPSJmbG9hdGluZy1saXN0Ij4K
KyAgPGxpPkNhdDwvbGk+CisgIDxsaT5Eb2c8L2xpPgorICA8bGk+RWxlcGhhbnQ8L2xpPgorPC91
bD4KKzxiciBjbGVhcj0iYWxsIiAvPgorPGRpdiBjb250ZW50ZWRpdGFibGU+CisgIDxzcGFuIGlk
PSJzdGFydFdpdGhvdXRDYXJldEJyb3dzaW5nIj4tIEZvbzwvc3Bhbj48YnIgLz4KKyAgPHA+LSBC
YXI8L3A+PGJyIC8+Cis8L2Rpdj4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdmVydGlj
YWwgY2FyZXQgbmF2aWdhdGlvbiB3b3JrcyBhcyBleHBlY3RlZCBhY3Jvc3MgdGFibGVzIGFuZCBm
bG9hdGluZyBlbGVtZW50cy4iKTsKKworZnVuY3Rpb24gY2hlY2tXaXRoQ2FyZXRCcm93c2luZygp
IHsKKworICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEVu
YWJsZUNhcmV0QnJvd3NpbmciLCB0cnVlKTsKKworICAvLyBDaGVjayBkb3duL3VwIGFycm93cy4K
KworICAvLyBTZXQgY2FyZXQgaW4gdGhlIHNlY29uZCBjZWxsIG9mIHRoZSB0YWJsZS4KKyAgc3Rh
cnRQb2ludCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdGFydFdpdGhDYXJldEJyb3dzaW5n
Iik7CisgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5zZXRQb3NpdGlvbihzdGFydFBvaW50LmNoaWxk
Tm9kZXMuaXRlbSgwKSwgNSk7CisgIHNob3VsZEJlKCJnZXRTZWxlY3Rpb24oKS5hbmNob3JOb2Rl
Lm5vZGVWYWx1ZSIsICInQ29sLiBIZWFkZXIgMSciKTsKKyAgc2hvdWxkQmUoImdldFNlbGVjdGlv
bigpLmJhc2VPZmZzZXQiLCAiNSIpOworCisgIC8vIE1vdmUgdGhlIGNhcmV0IGRvd24gdG8gdGhl
IHNlY29uZCByb3cgb2YgdGhlIHRhYmxlLgorICBldmVudFNlbmRlci5rZXlEb3duKCJkb3duQXJy
b3ciKTsKKyAgc2hvdWxkQmUoImdldFNlbGVjdGlvbigpLmFuY2hvck5vZGUubm9kZVZhbHVlIiwg
IidPbmUnIik7CisgIHNob3VsZEJlKCJnZXRTZWxlY3Rpb24oKS5iYXNlT2Zmc2V0IiwgIjMiKTsK
KworICAvLyBNb3ZlIHRoZSBjYXJldCBkb3duIHRvIHRoZSB0aGlyZCByb3cgb2YgdGhlIHRhYmxl
LgorICBldmVudFNlbmRlci5rZXlEb3duKCJkb3duQXJyb3ciKTsKKyAgc2hvdWxkQmUoImdldFNl
bGVjdGlvbigpLmFuY2hvck5vZGUubm9kZVZhbHVlIiwgIidUaHJlZSciKTsKKyAgc2hvdWxkQmUo
ImdldFNlbGVjdGlvbigpLmJhc2VPZmZzZXQiLCAiNSIpOworCisgIC8vIE1vdmUgdGhlIGNhcmV0
IGRvd24gdG8gcGFyYWdyYXBoLgorICBldmVudFNlbmRlci5rZXlEb3duKCJkb3duQXJyb3ciKTsK
KyAgc2hvdWxkQmUoImdldFNlbGVjdGlvbigpLmFuY2hvck5vZGUubm9kZVZhbHVlIiwgIidBIHBh
cmFncmFwaCBiZXR3ZWVuIGEgOS1jZWxsIHRhYmxlIGFuZCBhIGxpc3Qgb2YgdGhyZWUgaXRlbXMu
JyIpOworICBzaG91bGRCZSgiZ2V0U2VsZWN0aW9uKCkuYmFzZU9mZnNldCIsICI2MSIpOworCisg
IC8vIE1vdmUgdGhlIGNhcmV0IGRvd24gdG8gdGhlIGxpc3Qgb2YgaXRlbXMuCisgIHBhcmFncmFw
aCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwYXJhZ3JhcGgiKTsKKyAgd2luZG93LmdldFNl
bGVjdGlvbigpLnNldFBvc2l0aW9uKHBhcmFncmFwaC5jaGlsZE5vZGVzLml0ZW0oMCksIDIwKTsK
KyAgZXZlbnRTZW5kZXIua2V5RG93bigiZG93bkFycm93Iik7CisgIHNob3VsZEJlKCJnZXRTZWxl
Y3Rpb24oKS5hbmNob3JOb2RlLm5vZGVWYWx1ZSIsICInRWxlcGhhbnQnIik7CisgIHNob3VsZEJl
KCJnZXRTZWxlY3Rpb24oKS5iYXNlT2Zmc2V0IiwgIjAiKTsKKworICAvLyBNb3ZlIHRoZSBjYXJl
dCB1cCBhIGNvdXBsZSBvZiBsaW5lcy4KKyAgZXZlbnRTZW5kZXIua2V5RG93bigidXBBcnJvdyIp
OworICBldmVudFNlbmRlci5rZXlEb3duKCJ1cEFycm93Iik7CisgIHNob3VsZEJlKCJnZXRTZWxl
Y3Rpb24oKS5hbmNob3JOb2RlLm5vZGVWYWx1ZSIsICInUm93IEhlYWRlciAyJyIpOworICBzaG91
bGRCZSgiZ2V0U2VsZWN0aW9uKCkuYmFzZU9mZnNldCIsICI2Iik7CisKKyAgLy8gQ2hlY2sgdXAv
ZG93biBhcnJvd3MgKyBTaGlmdC4KKworICAvLyBTZWxlY3Rpb24gaW5zaWRlIHRoZSB0YWJsZS4K
KyAgZXZlbnRTZW5kZXIua2V5RG93bigidXBBcnJvdyIsIFsic2hpZnRLZXkiXSk7CisgIHJhbmdl
ID0gZ2V0U2VsZWN0aW9uKCkuZ2V0UmFuZ2VBdCgwKTsKKyAgc2hvdWxkQmUoInJhbmdlLnN0YXJ0
Q29udGFpbmVyLm5vZGVWYWx1ZSIsICInUm93IEhlYWRlciAxJyIpOworICBzaG91bGRCZSgiZ2V0
U2VsZWN0aW9uKCkuYmFzZU9mZnNldCIsICI2Iik7CisgIHNob3VsZEJlKCJyYW5nZS5lbmRDb250
YWluZXIubm9kZVZhbHVlIiwgIidSb3cgSGVhZGVyIDInIik7CisgIHNob3VsZEJlKCJnZXRTZWxl
Y3Rpb24oKS5leHRlbnRPZmZzZXQiLCAiNiIpOworCisgIC8vIFNlbGVjdGlvbiBhY3Jvc3MgdGhl
IHRhYmxlIGFuZCB0aGUgcGFyYWdyYXBoLgorICBldmVudFNlbmRlci5rZXlEb3duKCJkb3duQXJy
b3ciLCBbInNoaWZ0S2V5Il0pOworICBldmVudFNlbmRlci5rZXlEb3duKCJkb3duQXJyb3ciLCBb
InNoaWZ0S2V5Il0pOworICByYW5nZSA9IGdldFNlbGVjdGlvbigpLmdldFJhbmdlQXQoMCk7Cisg
IHNob3VsZEJlKCJyYW5nZS5zdGFydENvbnRhaW5lci5ub2RlVmFsdWUiLCAiJ1JvdyBIZWFkZXIg
MiciKTsKKyAgc2hvdWxkQmUoImdldFNlbGVjdGlvbigpLmJhc2VPZmZzZXQiLCAiNiIpOworICBz
aG91bGRCZSgicmFuZ2UuZW5kQ29udGFpbmVyLm5vZGVWYWx1ZSIsICInQSBwYXJhZ3JhcGggYmV0
d2VlbiBhIDktY2VsbCB0YWJsZSBhbmQgYSBsaXN0IG9mIHRocmVlIGl0ZW1zLiciKTsKKyAgc2hv
dWxkQmUoImdldFNlbGVjdGlvbigpLmV4dGVudE9mZnNldCIsICIyMCIpOworfQorCitmdW5jdGlv
biBjaGVja1dpdGhvdXRDYXJldEJyb3dzaW5nKCkgeworICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wRWRpdGluZ0NhbGxiYWNrcygpOworICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVBy
ZWZlcmVuY2UoIldlYktpdEVuYWJsZUNhcmV0QnJvd3NpbmciLCBmYWxzZSk7CisKKyAgLy8gQ2hl
Y2sgTW92ZURvd24gLyBNb3ZlVXAgY29tbWFuZHMuCisKKyAgLy8gU2V0IGNhcmV0IGluIHRoZSBz
ZWNvbmQgY2VsbCBvZiB0aGUgdGFibGUuCisgIHN0YXJ0UG9pbnQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgic3RhcnRXaXRob3V0Q2FyZXRCcm93c2luZyIpOworICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuc2V0UG9zaXRpb24oc3RhcnRQb2ludC5jaGlsZE5vZGVzLml0ZW0oMCksIDMpOworCisg
IC8vIE1vdmUgZG93biBhbmQgdXAgYWNyb3NzIHRoZSBkaWZmZXJlbnQgbGluZXMgaW5zaWRlIHRo
ZSBlZGl0YWJsZSBjb250ZW50LgorICBsYXlvdXRUZXN0Q29udHJvbGxlci5leGVjQ29tbWFuZCgi
TW92ZURvd24iKTsKKyAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZXhlY0NvbW1hbmQoIk1vdmVEb3du
Iik7CisgIGxheW91dFRlc3RDb250cm9sbGVyLmV4ZWNDb21tYW5kKCJNb3ZlVXAiKTsKKyAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZXhlY0NvbW1hbmQoIk1vdmVVcCIpOworICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5leGVjQ29tbWFuZCgiTW92ZVVwIik7Cit9CisKK2lmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpIHsKKyAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisg
IC8vIFdlIG5lZWQgdG8gY2hlY2sgd2l0aCBhbmQgd2l0aG91dCBjYXJldCBicm93c2luZyBhY3Rp
dmF0ZWQgdG8KKyAgLy8gZW5zdXJlIG5vIEFQSSBicmVha2FnZSBoYXMgaGFwcGVuZWQgd2l0aCB0
aGUgTW92ZVVwL0Rvd24gY29tbWFuZHMuCisgIGNoZWNrV2l0aENhcmV0QnJvd3NpbmcoKTsKKyAg
Y2hlY2tXaXRob3V0Q2FyZXRCcm93c2luZygpOworfQorCitzdWNjZXNzZnVsbHlQYXJzZWQgPSB0
cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzBjYWVhMC4u
Nzg5NDM1OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAxMC0xMi0wOSAgTWFyaW8gU2FuY2hleiBQcmFkYSAg
PG1zYW5jaGV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgW0dUS10gRWxlbWVudHMgb24gdGhlIHNhbWUgbGluZSBzaG91bGQgYmUg
dHJlYXRlZCBhcyBzdWNoIGJ5IGNhcmV0IG5hdmlnYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1NTMzCisKKyAgICAgICAgRW5zdXJlIHRoZSBj
YXJldCB3aWxsIG1vdmUgdG8gYSB2ZXJ0aWNhbGx5IGNvaW5jaWRlbnQgcG9zaXRpb24KKyAgICAg
ICAgd2hlbiBtb3ZpbmcgdXAgYW5kIGRvd24gYWNyb3NzIGRpZmZlcmVudCBsaW5lcy4KKworICAg
ICAgICAqIGVkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc1Zl
cnRpY2FsbHlDb2luY2lkZW50KTogTmV3LCBjaGVja3MgaWYgYSByZW5kZXJlciBpcworICAgICAg
ICB2ZXJ0aWNhbGx5IGNvaW5jaWRlbnQgdG8gYW5vdGhlciBvbmUgdXNlZCBhcyByZWZlcmVuY2Ug
YW5kIGEgZ2l2ZW4KKyAgICAgICAgWCBwb3NpdGlvbiwgd2hlbiBtb3ZpbmcgdXAgYW5kIGRvd24g
aW4gY2FyZXQgYnJvd3NpbmcgbW9kZS4KKyAgICAgICAgKFdlYkNvcmU6OnBlcmZvcm1DYXJldE1v
dmVtZW50KTogQWN0dWFsbHkgbW92ZSB0aGUgY2FyZXQgZm9yd2FyZAorICAgICAgICBvciBiYWNr
d2FyZCBhY3Jvc3MgZGlmZmVyZW50IGxpbmVzLCBlbnN1cmluZyB0aGUgZmluYWwgZGVzdGluYXRp
b24KKyAgICAgICAgaXMgYSByZW5kZXJlciB2ZXJ0aWNhbGx5IGNvaW5jaWRlbnQgd2l0aCB0aGUg
c3RhcnQgcG9pbnQuCisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZUNhcmV0RG93bik6IE5l
dywgaW1wbGVtZW50cyB0aGUgbmV3CisgICAgICAgICJNb3ZlQ2FyZXREb3duIiBjb21tYW5kLCB1
c2VkIGluIGNhcmV0IGJyb3dzaW5nIG1vZGUgb25seSwgc28gZmFyCisgICAgICAgIGFmZmVjdGlu
ZyB0aGUgR1RLIHBvcnQgb25seS4KKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlQ2FyZXRE
b3duQW5kTW9kaWZ5U2VsZWN0aW9uKTogTmV3LCBpbXBsZW1lbnRzCisgICAgICAgIHRoZSBuZXcg
Ik1vdmVDYXJldERvd25BbmRNb2RpZnlTZWxlY3Rpb24iIGNvbW1hbmQuCisgICAgICAgIChXZWJD
b3JlOjpleGVjdXRlTW92ZUNhcmV0VXApOiBOZXcsIGltcGxlbWVudHMgdGhlIG5ldworICAgICAg
ICAiTW92ZUNhcmV0VXAiIGNvbW1hbmQuCisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZUNh
cmV0VXBBbmRNb2RpZnlTZWxlY3Rpb24pOiBOZXcsIGltcGxlbWVudHMKKyAgICAgICAgdGhlIG5l
dyAiTW92ZUNhcmV0VXBBbmRNb2RpZnlTZWxlY3Rpb24iIGNvbW1hbmQuCisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVDb21tYW5kTWFwKTogQWRkIHRoZSBuZXcgY29tbWFuZHMgbmVlZGVkIGZvciB0
aGUKKyAgICAgICAgR1RLIHBvcnQsIHJlbGF0ZWQgd2l0aCB1cC9kb3duIG1vdmVtZW50IGluIGNh
cmV0IGJyb3dzaW5nIG1vZGUuCisKIDIwMTAtMTItMDYgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6
YWNoQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBPbGl2ZXIgSHVudC4KZGlmZiAt
LWdpdCBhL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcCBiL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3JDb21tYW5kLmNwcAppbmRleCBhYjgzODE3Li5mN2M3NmVjIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAKKysrIGIvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvckNvbW1hbmQuY3BwCkBAIC00OCw2ICs0OCw3IEBACiAjaW5jbHVkZSAiSW5zZXJ0TGlzdENv
bW1hbmQuaCIKICNpbmNsdWRlICJLaWxsUmluZy5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNs
dWRlICJSZW5kZXJCbG9jay5oIgogI2luY2x1ZGUgIlJlbmRlckJveC5oIgogI2luY2x1ZGUgIlJl
cGxhY2VTZWxlY3Rpb25Db21tYW5kLmgiCiAjaW5jbHVkZSAiU2Nyb2xsYmFyLmgiCkBAIC02MTYs
NiArNjE3LDg3IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlQmFja3dhcmRBbmRNb2RpZnlTZWxl
Y3Rpb24oRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKK3N0YXRpYyBib29sIGlzVmVydGljYWxseUNvaW5jaWRlbnQoUmVuZGVyT2JqZWN0KiBjYW5k
aWRhdGUsIFJlbmRlck9iamVjdCogb3JpZ2luLCBpbnQgb3JpZ2luWCwgV2ViQ29yZTo6U2VsZWN0
aW9uQ29udHJvbGxlcjo6RURpcmVjdGlvbiBkaXJlY3Rpb24pCit7CisgICAgaWYgKCFjYW5kaWRh
dGUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFJlbmRlckJsb2NrKiBvcmlnaW5Db250
YWluaW5nQmxvY2sgPSBvcmlnaW4tPmNvbnRhaW5pbmdCbG9jaygpOworICAgIGlmICghb3JpZ2lu
Q29udGFpbmluZ0Jsb2NrKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBSZW5kZXJCbG9j
ayogY29udGFpbmluZ0Jsb2NrID0gY2FuZGlkYXRlLT5jb250YWluaW5nQmxvY2soKTsKKyAgICBp
ZiAoIWNvbnRhaW5pbmdCbG9jaykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgRmxvYXRQ
b2ludCBvcmlnaW5BYnNQb3MgPSBvcmlnaW5Db250YWluaW5nQmxvY2stPmxvY2FsVG9BYnNvbHV0
ZShGbG9hdFBvaW50KCkpOworICAgIEZsb2F0UG9pbnQgYWJzUG9zID0gY29udGFpbmluZ0Jsb2Nr
LT5sb2NhbFRvQWJzb2x1dGUoRmxvYXRQb2ludCgpKTsKKworICAgIC8vIENhbmRpZGF0ZSBtdXN0
IGJlIGluIGEgaGlnaGVyIHBvc2l0aW9uIHRoYW4gb3JpZ2luIHdoZW4gZ29pbmcgYmFja3dhcmQu
CisgICAgaWYgKGRpcmVjdGlvbiA9PSBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25CYWNr
d2FyZAorICAgICAgICAmJiBhYnNQb3MueSgpICsgY29udGFpbmluZ0Jsb2NrLT5oZWlnaHQoKSA+
PSBvcmlnaW5BYnNQb3MueSgpICsgb3JpZ2luQ29udGFpbmluZ0Jsb2NrLT5oZWlnaHQoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gQ2FuZGlkYXRlIG11c3QgYmUgaW4gYSBsb3dl
ciBwb3NpdGlvbiB0aGFuIG9yaWdpbiB3aGVuIGdvaW5nIGZvcndhcmQuCisgICAgaWYgKGRpcmVj
dGlvbiA9PSBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25Gb3J3YXJkICYmIGFic1Bvcy55
KCkgPD0gb3JpZ2luQWJzUG9zLnkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8g
Q2FuZGlkYXRlIG11c3QgYmUgaW4gdGhlIHNhbWUgdmVydGljYWwgc3BhY2UgdGhhbiBvcmlnaW4u
CisgICAgaWYgKGFic1Bvcy54KCkgPiBvcmlnaW5YIHx8IG9yaWdpblggPj0gYWJzUG9zLngoKSAr
IGNvbnRhaW5pbmdCbG9jay0+d2lkdGgoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
cmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBib29sIHBlcmZvcm1DYXJldE1vdmVtZW50KEZyYW1l
KiBmcmFtZSwgV2ViQ29yZTo6U2VsZWN0aW9uQ29udHJvbGxlcjo6RUFsdGVyYXRpb24gYWx0ZXJh
dGlvbiwgV2ViQ29yZTo6U2VsZWN0aW9uQ29udHJvbGxlcjo6RURpcmVjdGlvbiBkaXJlY3Rpb24p
Cit7CisgICAgU2VsZWN0aW9uQ29udHJvbGxlciogc2VsZWN0aW9uID0gZnJhbWUtPnNlbGVjdGlv
bigpOworICAgIFBvc2l0aW9uIHBvcyA9IHNlbGVjdGlvbi0+c3RhcnQoKTsKKyAgICBOb2RlKiBv
cmlnaW5Ob2RlID0gcG9zLm5vZGUoKTsKKyAgICBpZiAoIW9yaWdpbk5vZGUpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIFJlbmRlck9iamVjdCogb3JpZ2luUmVuZGVyZXIgPSBvcmlnaW5O
b2RlLT5yZW5kZXJlcigpOworICAgIGlmICghb3JpZ2luUmVuZGVyZXIpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIC8vIEdldCB0aGUgYWJzb2x1dGUgWCBjb29yZGluYXRlIGZvciBmdXJ0
aGVyIGNvbXBhcmlzb25zLgorICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb24ocG9z
LCBzZWxlY3Rpb24tPmFmZmluaXR5KCkpOworICAgIGludCB4ID0gdmlzaWJsZVBvc2l0aW9uLmlz
Tm90TnVsbCgpID8gdmlzaWJsZVBvc2l0aW9uLnhPZmZzZXRGb3JWZXJ0aWNhbE5hdmlnYXRpb24o
KSA6IDA7CisKKyAgICAvLyBSZXBlYXQgY29tbWFuZCB1bnRpbCByZWFjaGluZyBhIHZhbGlkIGRl
c3RpbmF0aW9uLgorICAgIE5vZGUqIHByZXZpb3VzTm9kZSA9IDA7CisgICAgd2hpbGUgKHNlbGVj
dGlvbi0+bW9kaWZ5KGFsdGVyYXRpb24sIGRpcmVjdGlvbiwgTGluZUdyYW51bGFyaXR5LCB0cnVl
KSkgeworICAgICAgICBQb3NpdGlvbiBjdXJyZW50UG9zaXRpb24gPSBzZWxlY3Rpb24tPmV4dGVu
dCgpOworICAgICAgICBOb2RlKiBjdXJyZW50Tm9kZSA9IGN1cnJlbnRQb3NpdGlvbi5ub2RlKCk7
CisKKyAgICAgICAgLy8gRG9uJ3Qga2VlcCBsb29waW5nIGlmIG5ldyBzZWxlY3Rpb24gZmFsbHMg
aW4gdGhlIHNhbWUgbm9kZS4KKyAgICAgICAgaWYgKGN1cnJlbnROb2RlID09IHByZXZpb3VzTm9k
ZSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgIFJlbmRlck9iamVjdCogY3Vy
cmVudFJlbmRlcmVyID0gY3VycmVudE5vZGUtPnJlbmRlcmVyKCk7CisgICAgICAgIGlmICghY3Vy
cmVudFJlbmRlcmVyKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGlmIChp
c1ZlcnRpY2FsbHlDb2luY2lkZW50KGN1cnJlbnRSZW5kZXJlciwgb3JpZ2luUmVuZGVyZXIsIHgs
IGRpcmVjdGlvbikpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICBwcmV2aW91
c05vZGUgPSBjdXJyZW50Tm9kZTsKKyAgICB9OworCisgICAgcmV0dXJuIGZhbHNlOworfQorCitz
dGF0aWMgYm9vbCBleGVjdXRlTW92ZUNhcmV0RG93bihGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRp
dG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKK3sKKyAgICByZXR1cm4gcGVyZm9ybUNh
cmV0TW92ZW1lbnQoZnJhbWUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3ZlLCBT
ZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25Gb3J3YXJkKTsKK30KKworc3RhdGljIGJvb2wg
ZXhlY3V0ZU1vdmVDYXJldERvd25BbmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBFdmVu
dCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCit7CisgICAgcmV0dXJuIHBl
cmZvcm1DYXJldE1vdmVtZW50KGZyYW1lLCBTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9u
RXh0ZW5kLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25Gb3J3YXJkKTsKK30KKwogc3Rh
dGljIGJvb2wgZXhlY3V0ZU1vdmVEb3duKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21t
YW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewogICAgIHJldHVybiBmcmFtZS0+c2VsZWN0aW9u
KCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9u
Q29udHJvbGxlcjo6RGlyZWN0aW9uRm9yd2FyZCwgTGluZUdyYW51bGFyaXR5LCB0cnVlKTsKQEAg
LTgwMSw2ICs4ODMsMTYgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVQYXJhZ3JhcGhGb3J3YXJk
QW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1lKiBmcmFtZSwgRXZlbnQqLAogICAgIHJldHVybiB0cnVl
OwogfQogCitzdGF0aWMgYm9vbCBleGVjdXRlTW92ZUNhcmV0VXAoRnJhbWUqIGZyYW1lLCBFdmVu
dCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCit7CisgICAgcmV0dXJuIHBl
cmZvcm1DYXJldE1vdmVtZW50KGZyYW1lLCBTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9u
TW92ZSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uQmFja3dhcmQpOworfQorCitzdGF0
aWMgYm9vbCBleGVjdXRlTW92ZUNhcmV0VXBBbmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUqIGZyYW1l
LCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCit7CisgICAgcmV0
dXJuIHBlcmZvcm1DYXJldE1vdmVtZW50KGZyYW1lLCBTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRl
cmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25CYWNrd2FyZCk7Cit9
CisKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlVXAoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRv
ckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7CiAgICAgcmV0dXJuIGZyYW1lLT5zZWxl
Y3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3ZlLCBTZWxl
Y3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25CYWNrd2FyZCwgTGluZUdyYW51bGFyaXR5LCB0cnVl
KTsKQEAgLTE0MjgsOCArMTUyMCwxMCBAQCBzdGF0aWMgY29uc3QgQ29tbWFuZE1hcCYgY3JlYXRl
Q29tbWFuZE1hcCgpCiAgICAgICAgIHsgIk1ha2VUZXh0V3JpdGluZ0RpcmVjdGlvblJpZ2h0VG9M
ZWZ0IiwgeyBleGVjdXRlTWFrZVRleHRXcml0aW5nRGlyZWN0aW9uUmlnaHRUb0xlZnQsIHN1cHBv
cnRlZEZyb21NZW51T3JLZXlCaW5kaW5nLCBlbmFibGVkSW5SaWNobHlFZGl0YWJsZVRleHQsIHN0
YXRlVGV4dFdyaXRpbmdEaXJlY3Rpb25SaWdodFRvTGVmdCwgdmFsdWVOdWxsLCBub3RUZXh0SW5z
ZXJ0aW9uLCBkb05vdEFsbG93RXhlY3V0aW9uV2hlbkRpc2FibGVkIH0gfSwKICAgICAgICAgeyAi
TW92ZUJhY2t3YXJkIiwgeyBleGVjdXRlTW92ZUJhY2t3YXJkLCBzdXBwb3J0ZWRGcm9tTWVudU9y
S2V5QmluZGluZywgZW5hYmxlZEluRWRpdGFibGVUZXh0T3JDYXJldEJyb3dzaW5nLCBzdGF0ZU5v
bmUsIHZhbHVlTnVsbCwgbm90VGV4dEluc2VydGlvbiwgZG9Ob3RBbGxvd0V4ZWN1dGlvbldoZW5E
aXNhYmxlZCB9IH0sCiAgICAgICAgIHsgIk1vdmVCYWNrd2FyZEFuZE1vZGlmeVNlbGVjdGlvbiIs
IHsgZXhlY3V0ZU1vdmVCYWNrd2FyZEFuZE1vZGlmeVNlbGVjdGlvbiwgc3VwcG9ydGVkRnJvbU1l
bnVPcktleUJpbmRpbmcsIGVuYWJsZWRWaXNpYmxlU2VsZWN0aW9uT3JDYXJldEJyb3dzaW5nLCBz
dGF0ZU5vbmUsIHZhbHVlTnVsbCwgbm90VGV4dEluc2VydGlvbiwgZG9Ob3RBbGxvd0V4ZWN1dGlv
bldoZW5EaXNhYmxlZCB9IH0sCi0gICAgICAgIHsgIk1vdmVEb3duIiwgeyBleGVjdXRlTW92ZURv
d24sIHN1cHBvcnRlZEZyb21NZW51T3JLZXlCaW5kaW5nLCBlbmFibGVkSW5FZGl0YWJsZVRleHRP
ckNhcmV0QnJvd3NpbmcsIHN0YXRlTm9uZSwgdmFsdWVOdWxsLCBub3RUZXh0SW5zZXJ0aW9uLCBk
b05vdEFsbG93RXhlY3V0aW9uV2hlbkRpc2FibGVkIH0gfSwKLSAgICAgICAgeyAiTW92ZURvd25B
bmRNb2RpZnlTZWxlY3Rpb24iLCB7IGV4ZWN1dGVNb3ZlRG93bkFuZE1vZGlmeVNlbGVjdGlvbiwg
c3VwcG9ydGVkRnJvbU1lbnVPcktleUJpbmRpbmcsIGVuYWJsZWRWaXNpYmxlU2VsZWN0aW9uT3JD
YXJldEJyb3dzaW5nLCBzdGF0ZU5vbmUsIHZhbHVlTnVsbCwgbm90VGV4dEluc2VydGlvbiwgZG9O
b3RBbGxvd0V4ZWN1dGlvbldoZW5EaXNhYmxlZCB9IH0sCisgICAgICAgIHsgIk1vdmVDYXJldERv
d24iLCB7IGV4ZWN1dGVNb3ZlQ2FyZXREb3duLCBzdXBwb3J0ZWRGcm9tTWVudU9yS2V5QmluZGlu
ZywgZW5hYmxlZEluRWRpdGFibGVUZXh0T3JDYXJldEJyb3dzaW5nLCBzdGF0ZU5vbmUsIHZhbHVl
TnVsbCwgbm90VGV4dEluc2VydGlvbiwgZG9Ob3RBbGxvd0V4ZWN1dGlvbldoZW5EaXNhYmxlZCB9
IH0sCisgICAgICAgIHsgIk1vdmVDYXJldERvd25BbmRNb2RpZnlTZWxlY3Rpb24iLCB7IGV4ZWN1
dGVNb3ZlQ2FyZXREb3duQW5kTW9kaWZ5U2VsZWN0aW9uLCBzdXBwb3J0ZWRGcm9tTWVudU9yS2V5
QmluZGluZywgZW5hYmxlZFZpc2libGVTZWxlY3Rpb25PckNhcmV0QnJvd3NpbmcsIHN0YXRlTm9u
ZSwgdmFsdWVOdWxsLCBub3RUZXh0SW5zZXJ0aW9uLCBkb05vdEFsbG93RXhlY3V0aW9uV2hlbkRp
c2FibGVkIH0gfSwKKyAgICAgICAgeyAiTW92ZURvd24iLCB7IGV4ZWN1dGVNb3ZlRG93biwgc3Vw
cG9ydGVkRnJvbU1lbnVPcktleUJpbmRpbmcsIGVuYWJsZWRJbkVkaXRhYmxlVGV4dCwgc3RhdGVO
b25lLCB2YWx1ZU51bGwsIG5vdFRleHRJbnNlcnRpb24sIGRvTm90QWxsb3dFeGVjdXRpb25XaGVu
RGlzYWJsZWQgfSB9LAorICAgICAgICB7ICJNb3ZlRG93bkFuZE1vZGlmeVNlbGVjdGlvbiIsIHsg
ZXhlY3V0ZU1vdmVEb3duQW5kTW9kaWZ5U2VsZWN0aW9uLCBzdXBwb3J0ZWRGcm9tTWVudU9yS2V5
QmluZGluZywgZW5hYmxlZFZpc2libGVTZWxlY3Rpb24sIHN0YXRlTm9uZSwgdmFsdWVOdWxsLCBu
b3RUZXh0SW5zZXJ0aW9uLCBkb05vdEFsbG93RXhlY3V0aW9uV2hlbkRpc2FibGVkIH0gfSwKICAg
ICAgICAgeyAiTW92ZUZvcndhcmQiLCB7IGV4ZWN1dGVNb3ZlRm9yd2FyZCwgc3VwcG9ydGVkRnJv
bU1lbnVPcktleUJpbmRpbmcsIGVuYWJsZWRJbkVkaXRhYmxlVGV4dE9yQ2FyZXRCcm93c2luZywg
c3RhdGVOb25lLCB2YWx1ZU51bGwsIG5vdFRleHRJbnNlcnRpb24sIGRvTm90QWxsb3dFeGVjdXRp
b25XaGVuRGlzYWJsZWQgfSB9LAogICAgICAgICB7ICJNb3ZlRm9yd2FyZEFuZE1vZGlmeVNlbGVj
dGlvbiIsIHsgZXhlY3V0ZU1vdmVGb3J3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uLCBzdXBwb3J0ZWRG
cm9tTWVudU9yS2V5QmluZGluZywgZW5hYmxlZFZpc2libGVTZWxlY3Rpb25PckNhcmV0QnJvd3Np
bmcsIHN0YXRlTm9uZSwgdmFsdWVOdWxsLCBub3RUZXh0SW5zZXJ0aW9uLCBkb05vdEFsbG93RXhl
Y3V0aW9uV2hlbkRpc2FibGVkIH0gfSwKICAgICAgICAgeyAiTW92ZUxlZnQiLCB7IGV4ZWN1dGVN
b3ZlTGVmdCwgc3VwcG9ydGVkRnJvbU1lbnVPcktleUJpbmRpbmcsIGVuYWJsZWRJbkVkaXRhYmxl
VGV4dE9yQ2FyZXRCcm93c2luZywgc3RhdGVOb25lLCB2YWx1ZU51bGwsIG5vdFRleHRJbnNlcnRp
b24sIGRvTm90QWxsb3dFeGVjdXRpb25XaGVuRGlzYWJsZWQgfSB9LApAQCAtMTQ2Miw4ICsxNTU2
LDEwIEBAIHN0YXRpYyBjb25zdCBDb21tYW5kTWFwJiBjcmVhdGVDb21tYW5kTWFwKCkKICAgICAg
ICAgeyAiTW92ZVRvTGVmdEVuZE9mTGluZUFuZE1vZGlmeVNlbGVjdGlvbiIsIHsgZXhlY3V0ZU1v
dmVUb0xlZnRFbmRPZkxpbmVBbmRNb2RpZnlTZWxlY3Rpb24sIHN1cHBvcnRlZEZyb21NZW51T3JL
ZXlCaW5kaW5nLCBlbmFibGVkSW5FZGl0YWJsZVRleHQsIHN0YXRlTm9uZSwgdmFsdWVOdWxsLCBu
b3RUZXh0SW5zZXJ0aW9uLCBkb05vdEFsbG93RXhlY3V0aW9uV2hlbkRpc2FibGVkIH0gfSwKICAg
ICAgICAgeyAiTW92ZVRvUmlnaHRFbmRPZkxpbmUiLCB7IGV4ZWN1dGVNb3ZlVG9SaWdodEVuZE9m
TGluZSwgc3VwcG9ydGVkRnJvbU1lbnVPcktleUJpbmRpbmcsIGVuYWJsZWRJbkVkaXRhYmxlVGV4
dCwgc3RhdGVOb25lLCB2YWx1ZU51bGwsIG5vdFRleHRJbnNlcnRpb24sIGRvTm90QWxsb3dFeGVj
dXRpb25XaGVuRGlzYWJsZWQgfSB9LAogICAgICAgICB7ICJNb3ZlVG9SaWdodEVuZE9mTGluZUFu
ZE1vZGlmeVNlbGVjdGlvbiIsIHsgZXhlY3V0ZU1vdmVUb1JpZ2h0RW5kT2ZMaW5lQW5kTW9kaWZ5
U2VsZWN0aW9uLCBzdXBwb3J0ZWRGcm9tTWVudU9yS2V5QmluZGluZywgZW5hYmxlZEluRWRpdGFi
bGVUZXh0LCBzdGF0ZU5vbmUsIHZhbHVlTnVsbCwgbm90VGV4dEluc2VydGlvbiwgZG9Ob3RBbGxv
d0V4ZWN1dGlvbldoZW5EaXNhYmxlZCB9IH0sCi0gICAgICAgIHsgIk1vdmVVcCIsIHsgZXhlY3V0
ZU1vdmVVcCwgc3VwcG9ydGVkRnJvbU1lbnVPcktleUJpbmRpbmcsIGVuYWJsZWRJbkVkaXRhYmxl
VGV4dE9yQ2FyZXRCcm93c2luZywgc3RhdGVOb25lLCB2YWx1ZU51bGwsIG5vdFRleHRJbnNlcnRp
b24sIGRvTm90QWxsb3dFeGVjdXRpb25XaGVuRGlzYWJsZWQgfSB9LAotICAgICAgICB7ICJNb3Zl
VXBBbmRNb2RpZnlTZWxlY3Rpb24iLCB7IGV4ZWN1dGVNb3ZlVXBBbmRNb2RpZnlTZWxlY3Rpb24s
IHN1cHBvcnRlZEZyb21NZW51T3JLZXlCaW5kaW5nLCBlbmFibGVkVmlzaWJsZVNlbGVjdGlvbk9y
Q2FyZXRCcm93c2luZywgc3RhdGVOb25lLCB2YWx1ZU51bGwsIG5vdFRleHRJbnNlcnRpb24sIGRv
Tm90QWxsb3dFeGVjdXRpb25XaGVuRGlzYWJsZWQgfSB9LAorICAgICAgICB7ICJNb3ZlQ2FyZXRV
cCIsIHsgZXhlY3V0ZU1vdmVDYXJldFVwLCBzdXBwb3J0ZWRGcm9tTWVudU9yS2V5QmluZGluZywg
ZW5hYmxlZEluRWRpdGFibGVUZXh0T3JDYXJldEJyb3dzaW5nLCBzdGF0ZU5vbmUsIHZhbHVlTnVs
bCwgbm90VGV4dEluc2VydGlvbiwgZG9Ob3RBbGxvd0V4ZWN1dGlvbldoZW5EaXNhYmxlZCB9IH0s
CisgICAgICAgIHsgIk1vdmVDYXJldFVwQW5kTW9kaWZ5U2VsZWN0aW9uIiwgeyBleGVjdXRlTW92
ZUNhcmV0VXBBbmRNb2RpZnlTZWxlY3Rpb24sIHN1cHBvcnRlZEZyb21NZW51T3JLZXlCaW5kaW5n
LCBlbmFibGVkVmlzaWJsZVNlbGVjdGlvbk9yQ2FyZXRCcm93c2luZywgc3RhdGVOb25lLCB2YWx1
ZU51bGwsIG5vdFRleHRJbnNlcnRpb24sIGRvTm90QWxsb3dFeGVjdXRpb25XaGVuRGlzYWJsZWQg
fSB9LAorICAgICAgICB7ICJNb3ZlVXAiLCB7IGV4ZWN1dGVNb3ZlVXAsIHN1cHBvcnRlZEZyb21N
ZW51T3JLZXlCaW5kaW5nLCBlbmFibGVkSW5FZGl0YWJsZVRleHQsIHN0YXRlTm9uZSwgdmFsdWVO
dWxsLCBub3RUZXh0SW5zZXJ0aW9uLCBkb05vdEFsbG93RXhlY3V0aW9uV2hlbkRpc2FibGVkIH0g
fSwKKyAgICAgICAgeyAiTW92ZVVwQW5kTW9kaWZ5U2VsZWN0aW9uIiwgeyBleGVjdXRlTW92ZVVw
QW5kTW9kaWZ5U2VsZWN0aW9uLCBzdXBwb3J0ZWRGcm9tTWVudU9yS2V5QmluZGluZywgZW5hYmxl
ZFZpc2libGVTZWxlY3Rpb24sIHN0YXRlTm9uZSwgdmFsdWVOdWxsLCBub3RUZXh0SW5zZXJ0aW9u
LCBkb05vdEFsbG93RXhlY3V0aW9uV2hlbkRpc2FibGVkIH0gfSwKICAgICAgICAgeyAiTW92ZVdv
cmRCYWNrd2FyZCIsIHsgZXhlY3V0ZU1vdmVXb3JkQmFja3dhcmQsIHN1cHBvcnRlZEZyb21NZW51
T3JLZXlCaW5kaW5nLCBlbmFibGVkSW5FZGl0YWJsZVRleHRPckNhcmV0QnJvd3NpbmcsIHN0YXRl
Tm9uZSwgdmFsdWVOdWxsLCBub3RUZXh0SW5zZXJ0aW9uLCBkb05vdEFsbG93RXhlY3V0aW9uV2hl
bkRpc2FibGVkIH0gfSwKICAgICAgICAgeyAiTW92ZVdvcmRCYWNrd2FyZEFuZE1vZGlmeVNlbGVj
dGlvbiIsIHsgZXhlY3V0ZU1vdmVXb3JkQmFja3dhcmRBbmRNb2RpZnlTZWxlY3Rpb24sIHN1cHBv
cnRlZEZyb21NZW51T3JLZXlCaW5kaW5nLCBlbmFibGVkVmlzaWJsZVNlbGVjdGlvbk9yQ2FyZXRC
cm93c2luZywgc3RhdGVOb25lLCB2YWx1ZU51bGwsIG5vdFRleHRJbnNlcnRpb24sIGRvTm90QWxs
b3dFeGVjdXRpb25XaGVuRGlzYWJsZWQgfSB9LAogICAgICAgICB7ICJNb3ZlV29yZEZvcndhcmQi
LCB7IGV4ZWN1dGVNb3ZlV29yZEZvcndhcmQsIHN1cHBvcnRlZEZyb21NZW51T3JLZXlCaW5kaW5n
LCBlbmFibGVkSW5FZGl0YWJsZVRleHRPckNhcmV0QnJvd3NpbmcsIHN0YXRlTm9uZSwgdmFsdWVO
dWxsLCBub3RUZXh0SW5zZXJ0aW9uLCBkb05vdEFsbG93RXhlY3V0aW9uV2hlbkRpc2FibGVkIH0g
fSwKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvV2ViS2l0L2d0ay9DaGFuZ2VM
b2cKaW5kZXggMjY2NDZiNi4uYjE0MWFlNyAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMC0xMi0w
OSAgTWFyaW8gU2FuY2hleiBQcmFkYSAgPG1zYW5jaGV6QGlnYWxpYS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0dUS10gRWxlbWVudHMgb24g
dGhlIHNhbWUgbGluZSBzaG91bGQgYmUgdHJlYXRlZCBhcyBzdWNoIGJ5IGNhcmV0IG5hdmlnYXRp
b24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1NTMz
CisKKyAgICAgICAgVXNlIHRoZSBuZXcgY29tbWFuZHMgZm9yIG1vdmluZyB1cC9kb3duIGluIGNh
cmV0IGJyb3dzaW5nIG1vZGUuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGll
bnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0Ojptb3ZlQ3Vyc29yQ2FsbGJhY2spOiBSZWRlZmlu
ZSByYXdDb21tYW5kIHRvIG9uZSBvZiB0aGUKKyAgICAgICAgbmV3IGZvdXIgY29tbWFuZHMgd2hl
biBhcHByb3ByaWF0ZS4KKwogMjAxMC0xMi0wNiAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29u
QGlnYWxpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgWGFuIExvcGV6LgpkaWZmIC0tZ2l0
IGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwIGIvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwCmluZGV4IGRhMDdlNTYuLjA4
NjUyNzggMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50
R3RrLmNwcAorKysgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5j
cHAKQEAgLTIzMCwxMyArMjMwLDMyIEBAIHN0YXRpYyB2b2lkIG1vdmVDdXJzb3JDYWxsYmFjayhH
dGtXaWRnZXQqIHdpZGdldCwgR3RrTW92ZW1lbnRTdGVwIHN0ZXAsIGdpbnQgY291CiAgICAgaWYg
KCFyYXdDb21tYW5kKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoaXNTcGF0aWFsTmF2aWdh
dGlvbkVuYWJsZWQoY29yZShjbGllbnQtPndlYlZpZXcoKSktPmZvY3VzQ29udHJvbGxlcigpLT5m
b2N1c2VkT3JNYWluRnJhbWUoKSkgJiYgc3RlcCA9PSAxKSB7CisgICAgRnJhbWUqIGZyYW1lID0g
Y29yZShjbGllbnQtPndlYlZpZXcoKSktPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWlu
RnJhbWUoKTsKKyAgICBpZiAoaXNTcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQoZnJhbWUpICYmIHN0
ZXAgPT0gMSkgewogICAgICAgICBpZiAoZGlyZWN0aW9uID09IDEpCiAgICAgICAgICAgICByYXdD
b21tYW5kID0gIk1vdmVSaWdodCI7CiAgICAgICAgIGVsc2UgaWYgKCFkaXJlY3Rpb24pCiAgICAg
ICAgICAgICByYXdDb21tYW5kID0gIk1vdmVMZWZ0IjsKICAgICB9CiAKKyAgICBib29sIGNhcmV0
QnJvd3NpbmcgPSBmcmFtZSAmJiBmcmFtZS0+c2V0dGluZ3MoKSAmJiBmcmFtZS0+c2V0dGluZ3Mo
KS0+Y2FyZXRCcm93c2luZ0VuYWJsZWQoKTsKKyAgICBpZiAoY2FyZXRCcm93c2luZyAmJiBzdGVw
ID09IDMpIHsKKyAgICAgICAgc3dpdGNoIChkaXJlY3Rpb24pIHsKKyAgICAgICAgY2FzZSAwOgor
ICAgICAgICAgICAgcmF3Q29tbWFuZCA9ICJNb3ZlQ2FyZXRVcCI7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSAxOgorICAgICAgICAgICAgcmF3Q29tbWFuZCA9ICJNb3ZlQ2FyZXRE
b3duIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICBy
YXdDb21tYW5kID0gIk1vdmVDYXJldFVwQW5kTW9kaWZ5U2VsZWN0aW9uIjsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIDM6CisgICAgICAgICAgICByYXdDb21tYW5kID0gIk1vdmVD
YXJldERvd25BbmRNb2RpZnlTZWxlY3Rpb24iOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKyAgICB9CisKICAgICBmb3IgKGludCBpID0gMDsgaSA8IGFicyhjb3VudCk7IGkrKykKICAg
ICAgICAgY2xpZW50LT5hZGRQZW5kaW5nRWRpdG9yQ29tbWFuZChyYXdDb21tYW5kKTsKIH0KLS0g
CjEuNy4zLjIKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>77809</attachid>
            <date>2011-01-03 07:20:21 -0800</date>
            <delta_ts>2011-03-01 09:04:19 -0800</delta_ts>
            <desc>Patch proposal + New layout test</desc>
            <filename>0001-2011-01-03-Mario-Sanchez-Prada-msanchez-igalia.com.patch</filename>
            <type>text/plain</type>
            <size>27506</size>
            <attacher name="Mario Sanchez Prada">mario</attacher>
            
              <data encoding="base64">RnJvbSBkNWI1ODYxYzU5MDUyZjc3YTYwYjY3YzBhMTEwY2RmYjczNmI4YmY5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJpbyBTYW5jaGV6IFByYWRhIDxtc2FuY2hlekBpZ2FsaWEu
Y29tPgpEYXRlOiBNb24sIDMgSmFuIDIwMTEgMTM6MDQ6MzAgKzAxMDAKU3ViamVjdDogW1BBVENI
XSAyMDExLTAxLTAzICBNYXJpbyBTYW5jaGV6IFByYWRhICA8bXNhbmNoZXpAaWdhbGlhLmNvbT4K
CiAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgogICAgICAgIFtHVEtdIEVsZW1l
bnRzIG9uIHRoZSBzYW1lIGxpbmUgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgc3VjaCBieSBjYXJldCBu
YXZpZ2F0aW9uCiAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTI1NTMzCgogICAgICAgIEVuc3VyZSB0aGUgY2FyZXQgd2lsbCBtb3ZlIHRvIGEgdmVydGljYWxs
eSBjb2luY2lkZW50IHBvc2l0aW9uCiAgICAgICAgd2hlbiBtb3ZpbmcgdXAgYW5kIGRvd24gYWNy
b3NzIGRpZmZlcmVudCBsaW5lcy4KCiAgICAgICAgKiBlZGl0aW5nL0VkaXRvckNvbW1hbmQuY3Bw
OgogICAgICAgIChXZWJDb3JlOjppc1ZlcnRpY2FsbHlDb2luY2lkZW50KTogTmV3LCBjaGVja3Mg
aWYgYSByZW5kZXJlciBpcwogICAgICAgIHZlcnRpY2FsbHkgY29pbmNpZGVudCB0byBhbm90aGVy
IG9uZSB1c2VkIGFzIHJlZmVyZW5jZSBhbmQgYSBnaXZlbgogICAgICAgIFggcG9zaXRpb24sIHdo
ZW4gbW92aW5nIHVwIGFuZCBkb3duIGluIGNhcmV0IGJyb3dzaW5nIG1vZGUuCiAgICAgICAgKFdl
YkNvcmU6OnBlcmZvcm1DYXJldE1vdmVtZW50KTogQWN0dWFsbHkgbW92ZSB0aGUgY2FyZXQgZm9y
d2FyZAogICAgICAgIG9yIGJhY2t3YXJkIGFjcm9zcyBkaWZmZXJlbnQgbGluZXMsIGVuc3VyaW5n
IHRoZSBmaW5hbCBkZXN0aW5hdGlvbgogICAgICAgIGlzIGEgcmVuZGVyZXIgdmVydGljYWxseSBj
b2luY2lkZW50IHdpdGggdGhlIHN0YXJ0IHBvaW50LgogICAgICAgIChXZWJDb3JlOjpleGVjdXRl
TW92ZUNhcmV0RG93bik6IE5ldywgaW1wbGVtZW50cyB0aGUgbmV3CiAgICAgICAgIk1vdmVDYXJl
dERvd24iIGNvbW1hbmQsIHVzZWQgaW4gY2FyZXQgYnJvd3NpbmcgbW9kZSBvbmx5LCBzbyBmYXIK
ICAgICAgICBhZmZlY3RpbmcgdGhlIEdUSyBwb3J0IG9ubHkuCiAgICAgICAgKFdlYkNvcmU6OmV4
ZWN1dGVNb3ZlQ2FyZXREb3duQW5kTW9kaWZ5U2VsZWN0aW9uKTogTmV3LCBpbXBsZW1lbnRzCiAg
ICAgICAgdGhlIG5ldyAiTW92ZUNhcmV0RG93bkFuZE1vZGlmeVNlbGVjdGlvbiIgY29tbWFuZC4K
ICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVDYXJldFVwKTogTmV3LCBpbXBsZW1lbnRzIHRo
ZSBuZXcKICAgICAgICAiTW92ZUNhcmV0VXAiIGNvbW1hbmQuCiAgICAgICAgKFdlYkNvcmU6OmV4
ZWN1dGVNb3ZlQ2FyZXRVcEFuZE1vZGlmeVNlbGVjdGlvbik6IE5ldywgaW1wbGVtZW50cwogICAg
ICAgIHRoZSBuZXcgIk1vdmVDYXJldFVwQW5kTW9kaWZ5U2VsZWN0aW9uIiBjb21tYW5kLgogICAg
ICAgIChXZWJDb3JlOjpjcmVhdGVDb21tYW5kTWFwKTogQWRkIHRoZSBuZXcgY29tbWFuZHMgbmVl
ZGVkIGZvciB0aGUKICAgICAgICBHVEsgcG9ydCwgcmVsYXRlZCB3aXRoIHVwL2Rvd24gbW92ZW1l
bnQgaW4gY2FyZXQgYnJvd3NpbmcgbW9kZS4KCjIwMTEtMDEtMDMgIE1hcmlvIFNhbmNoZXogUHJh
ZGEgIDxtc2FuY2hlekBpZ2FsaWEuY29tPgoKICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KCiAgICAgICAgW0dUS10gRWxlbWVudHMgb24gdGhlIHNhbWUgbGluZSBzaG91bGQgYmUg
dHJlYXRlZCBhcyBzdWNoIGJ5IGNhcmV0IG5hdmlnYXRpb24KICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU1MzMKCiAgICAgICAgVXNlIHRoZSBuZXcgY29t
bWFuZHMgZm9yIG1vdmluZyB1cC9kb3duIGluIGNhcmV0IGJyb3dzaW5nIG1vZGUuCgogICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcDoKICAgICAgICAoV2ViS2l0Ojpt
b3ZlQ3Vyc29yQ2FsbGJhY2spOiBSZWRlZmluZSByYXdDb21tYW5kIHRvIG9uZSBvZiB0aGUKICAg
ICAgICBuZXcgZm91ciBjb21tYW5kcyB3aGVuIGFwcHJvcHJpYXRlLgoKMjAxMS0wMS0wMyAgTWFy
aW8gU2FuY2hleiBQcmFkYSAgPG1zYW5jaGV6QGlnYWxpYS5jb20+CgogICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgoKICAgICAgICBbR1RLXSBFbGVtZW50cyBvbiB0aGUgc2FtZSBs
aW5lIHNob3VsZCBiZSB0cmVhdGVkIGFzIHN1Y2ggYnkgY2FyZXQgbmF2aWdhdGlvbgogICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTUzMwoKICAgICAgICBO
ZXcgbGF5b3V0IHRlc3QgZm9yIGNoZWNraW5nIHRoZSBuZXcgZWRpdGluZyBjb21tYW5kcyBmb3Ig
bW92aW5nCiAgICAgICAgdGhlIGNhcmV0IHVwIGFuZCBkb3duIHdoZW4gaW4gY2FyZXQgYnJvd3Np
bmcgKEdUSy1vbmx5IHNvIGZhcikuCgogICAgICAgICogcGxhdGZvcm0vZ3RrL2VkaXRpbmcvc2Vs
ZWN0aW9uL2NhcmV0LW1vZGUtdmVydGljYWwtbmF2aWdhdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVk
LgogICAgICAgICogcGxhdGZvcm0vZ3RrL2VkaXRpbmcvc2VsZWN0aW9uL2NhcmV0LW1vZGUtdmVy
dGljYWwtbmF2aWdhdGlvbi5odG1sOiBBZGRlZC4KLS0tCiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTMgKysKIC4uLi9jYXJldC1tb2RlLXZl
cnRpY2FsLW5hdmlnYXRpb24tZXhwZWN0ZWQudHh0ICAgIHwgICA1MiArKysrKysrKwogLi4uL3Nl
bGVjdGlvbi9jYXJldC1tb2RlLXZlcnRpY2FsLW5hdmlnYXRpb24uaHRtbCAgfCAgMTM1ICsrKysr
KysrKysrKysrKysrKysrCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8ICAgMjkgKysrKwogV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3Bw
ICAgICAgICAgICAgICAgICAgfCAgMTA0ICsrKysrKysrKysrKysrKy0KIFdlYktpdC9ndGsvQ2hh
bmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxMyArKwogV2ViS2l0L2d0
ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwICAgICAgfCAgIDE0ICsrCiA3IGZp
bGVzIGNoYW5nZWQsIDM1NiBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQogY3JlYXRlIG1v
ZGUgMTAwNjQ0IExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9lZGl0aW5nL3NlbGVjdGlvbi9jYXJl
dC1tb2RlLXZlcnRpY2FsLW5hdmlnYXRpb24tZXhwZWN0ZWQudHh0CiBjcmVhdGUgbW9kZSAxMDA2
NDQgTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2VkaXRpbmcvc2VsZWN0aW9uL2NhcmV0LW1vZGUt
dmVydGljYWwtbmF2aWdhdGlvbi5odG1sCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDA5ZTFmZmQuLjJjMDAwNDMgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNiBAQAorMjAxMS0wMS0wMyAgTWFyaW8gU2FuY2hleiBQcmFkYSAgPG1zYW5j
aGV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgW0dUS10gRWxlbWVudHMgb24gdGhlIHNhbWUgbGluZSBzaG91bGQgYmUgdHJlYXRl
ZCBhcyBzdWNoIGJ5IGNhcmV0IG5hdmlnYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTI1NTMzCisKKyAgICAgICAgTmV3IGxheW91dCB0ZXN0IGZv
ciBjaGVja2luZyB0aGUgbmV3IGVkaXRpbmcgY29tbWFuZHMgZm9yIG1vdmluZworICAgICAgICB0
aGUgY2FyZXQgdXAgYW5kIGRvd24gd2hlbiBpbiBjYXJldCBicm93c2luZyAoR1RLLW9ubHkgc28g
ZmFyKS4KKworICAgICAgICAqIHBsYXRmb3JtL2d0ay9lZGl0aW5nL3NlbGVjdGlvbi9jYXJldC1t
b2RlLXZlcnRpY2FsLW5hdmlnYXRpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ndGsvZWRpdGluZy9zZWxlY3Rpb24vY2FyZXQtbW9kZS12ZXJ0aWNhbC1uYXZpZ2F0
aW9uLmh0bWw6IEFkZGVkLgorCiAyMDExLTAxLTAyICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgU2tpcCB0aGlzIHRlc3QgZm9yIG5vdy4gIEl0J3MgYmVlbiBmYWls
aW5nIGZvciBhIHdoaWxlLiAgSSdtCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9n
dGsvZWRpdGluZy9zZWxlY3Rpb24vY2FyZXQtbW9kZS12ZXJ0aWNhbC1uYXZpZ2F0aW9uLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9lZGl0aW5nL3NlbGVjdGlvbi9jYXJl
dC1tb2RlLXZlcnRpY2FsLW5hdmlnYXRpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLmI2MGY2YjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9ndGsvZWRpdGluZy9zZWxlY3Rpb24vY2FyZXQtbW9kZS12ZXJ0aWNhbC1uYXZp
Z2F0aW9uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUyIEBACitFRElUSU5HIERFTEVHQVRFOiBz
aG91bGRCZWdpbkVkaXRpbmdJbkRPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiBESVYgPiBCT0RZID4g
SFRNTCA+ICNkb2N1bWVudCB0byA3IG9mIERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50CitF
RElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQmVnaW5FZGl0aW5nOldlYlZpZXdEaWRCZWdpbkVk
aXRpbmdOb3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxl
Y3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgorRURJVElORyBERUxF
R0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9tIDMgb2YgI3RleHQg
PiBTUEFOID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMyBvZiAjdGV4dCA+IFNQ
QU4gPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0b0RPTVJhbmdlOnJhbmdlIGZyb20g
MyBvZiAjdGV4dCA+IFAgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAzIG9mICN0
ZXh0ID4gUCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0
aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCitFRElUSU5HIERFTEVH
QVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25O
b3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFu
Z2U6cmFuZ2UgZnJvbSAzIG9mICN0ZXh0ID4gUCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3Vt
ZW50IHRvIDMgb2YgI3RleHQgPiBQID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG9E
T01SYW5nZTpyYW5nZSBmcm9tIDUgb2YgRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8g
NSBvZiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVjdGlvbkFm
ZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQorRURJVElORyBERUxFR0FURTog
d2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZp
Y2F0aW9uCitFRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJh
bmdlIGZyb20gNSBvZiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byA1IG9mIERJViA+
IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIFAgPiBE
SVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAwIG9mIFAgPiBESVYgPiBCT0RZID4gSFRN
TCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGls
bFNlbGVjdGluZzpGQUxTRQorRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVj
dGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCitFRElUSU5HIERFTEVH
QVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20gMyBvZiAjdGV4dCA+
IFAgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAzIG9mICN0ZXh0ID4gUCA+IERJ
ViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAzIG9mICN0
ZXh0ID4gU1BBTiA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDMgb2YgI3RleHQg
PiBTUEFOID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rp
b25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKK0VESVRJTkcgREVMRUdB
VEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5v
dGlmaWNhdGlvbgorRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5n
ZTpyYW5nZSBmcm9tIDMgb2YgI3RleHQgPiBTUEFOID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9j
dW1lbnQgdG8gMyBvZiAjdGV4dCA+IFNQQU4gPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVu
dCB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVu
dCB0byAwIG9mIERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0
aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCitFRElUSU5HIERFTEVH
QVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25O
b3RpZmljYXRpb24KK0NvbC4gSGVhZGVyIDEJQ29sLiBIZWFkZXIgMgorUm93IEhlYWRlciAxCU9u
ZQlUd28KK1JvdyBIZWFkZXIgMglUaHJlZQlGb3VyCitBIHBhcmFncmFwaCBiZXR3ZWVuIGEgOS1j
ZWxsIHRhYmxlIGFuZCBhIGxpc3Qgb2YgdGhyZWUgaXRlbXMuCisKK0NhdERvZ0VsZXBoYW50Cist
IEZvbworLSBCYXIKKworCitUaGlzIHRlc3RzIHZlcnRpY2FsIGNhcmV0IG5hdmlnYXRpb24gd29y
a3MgYXMgZXhwZWN0ZWQgYWNyb3NzIHRhYmxlcyBhbmQgZmxvYXRpbmcgZWxlbWVudHMuCisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGdldFNlbGVjdGlvbigpLmFuY2hvck5v
ZGUubm9kZVZhbHVlIGlzICdDb2wuIEhlYWRlciAxJworUEFTUyBnZXRTZWxlY3Rpb24oKS5iYXNl
T2Zmc2V0IGlzIDUKK1BBU1MgZ2V0U2VsZWN0aW9uKCkuYW5jaG9yTm9kZS5ub2RlVmFsdWUgaXMg
J09uZScKK1BBU1MgZ2V0U2VsZWN0aW9uKCkuYmFzZU9mZnNldCBpcyAzCitQQVNTIGdldFNlbGVj
dGlvbigpLmFuY2hvck5vZGUubm9kZVZhbHVlIGlzICdUaHJlZScKK1BBU1MgZ2V0U2VsZWN0aW9u
KCkuYmFzZU9mZnNldCBpcyA1CitQQVNTIGdldFNlbGVjdGlvbigpLmFuY2hvck5vZGUubm9kZVZh
bHVlIGlzICdBIHBhcmFncmFwaCBiZXR3ZWVuIGEgOS1jZWxsIHRhYmxlIGFuZCBhIGxpc3Qgb2Yg
dGhyZWUgaXRlbXMuJworUEFTUyBnZXRTZWxlY3Rpb24oKS5iYXNlT2Zmc2V0IGlzIDYxCitQQVNT
IGdldFNlbGVjdGlvbigpLmFuY2hvck5vZGUubm9kZVZhbHVlIGlzICdFbGVwaGFudCcKK1BBU1Mg
Z2V0U2VsZWN0aW9uKCkuYmFzZU9mZnNldCBpcyAwCitQQVNTIGdldFNlbGVjdGlvbigpLmFuY2hv
ck5vZGUubm9kZVZhbHVlIGlzICdSb3cgSGVhZGVyIDInCitQQVNTIGdldFNlbGVjdGlvbigpLmJh
c2VPZmZzZXQgaXMgNgorUEFTUyByYW5nZS5zdGFydENvbnRhaW5lci5ub2RlVmFsdWUgaXMgJ1Jv
dyBIZWFkZXIgMScKK1BBU1MgZ2V0U2VsZWN0aW9uKCkuYmFzZU9mZnNldCBpcyA2CitQQVNTIHJh
bmdlLmVuZENvbnRhaW5lci5ub2RlVmFsdWUgaXMgJ1JvdyBIZWFkZXIgMicKK1BBU1MgZ2V0U2Vs
ZWN0aW9uKCkuZXh0ZW50T2Zmc2V0IGlzIDYKK1BBU1MgcmFuZ2Uuc3RhcnRDb250YWluZXIubm9k
ZVZhbHVlIGlzICdSb3cgSGVhZGVyIDInCitQQVNTIGdldFNlbGVjdGlvbigpLmJhc2VPZmZzZXQg
aXMgNgorUEFTUyByYW5nZS5lbmRDb250YWluZXIubm9kZVZhbHVlIGlzICdBIHBhcmFncmFwaCBi
ZXR3ZWVuIGEgOS1jZWxsIHRhYmxlIGFuZCBhIGxpc3Qgb2YgdGhyZWUgaXRlbXMuJworUEFTUyBn
ZXRTZWxlY3Rpb24oKS5leHRlbnRPZmZzZXQgaXMgMjAKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9ndGsvZWRpdGluZy9zZWxlY3Rpb24vY2FyZXQtbW9kZS12ZXJ0aWNhbC1uYXZpZ2F0aW9u
Lmh0bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZWRpdGluZy9zZWxlY3Rpb24vY2FyZXQt
bW9kZS12ZXJ0aWNhbC1uYXZpZ2F0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uMTJjZDg3ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2d0ay9lZGl0aW5nL3NlbGVjdGlvbi9jYXJldC1tb2RlLXZlcnRpY2FsLW5hdmlnYXRpb24uaHRt
bApAQCAtMCwwICsxLDEzNSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQg
SFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4KKyNmbG9hdGluZy1saXN0IHsKKyAg
bGlzdC1zdHlsZTogbm9uZTsKKyAgd2lkdGg6IDEwMCU7Cit9CisKKyNmbG9hdGluZy1saXN0IGxp
IHsKKyAgZmxvYXQ6IGxlZnQ7CisgIHBhZGRpbmc6IDEwcHg7Cit9Cis8L3N0eWxlPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyI+Cis8c2NyaXB0PgordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IGZhbHNlOworPC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2VkaXRpbmcuanMiIGxhbmd1YWdlPSJK
YXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L0phdmFTY3JpcHQiID48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5IGlkPSJib2R5Ij4KKzx0YWJsZSB3aWR0aD0iMTAwJSI+CisgIDx0cj48dGg+PC90aD48dGgg
aWQ9InN0YXJ0V2l0aENhcmV0QnJvd3NpbmciPkNvbC4gSGVhZGVyIDE8L3RoPjx0aD5Db2wuIEhl
YWRlciAyPC90aD48L3RyPgorICA8dHI+PHRoPlJvdyBIZWFkZXIgMTwvdGg+PHRkPk9uZTwvdGQ+
PHRkPlR3bzwvdGQ+PC90cj4KKyAgPHRyPjx0aD5Sb3cgSGVhZGVyIDI8L3RoPjx0ZD5UaHJlZTwv
dGQ+PHRkPkZvdXI8L3RkPjwvdHI+Cis8L3RhYmxlPgorPHAgaWQ9InBhcmFncmFwaCI+QSBwYXJh
Z3JhcGggYmV0d2VlbiBhIDktY2VsbCB0YWJsZSBhbmQgYSBsaXN0IG9mIHRocmVlIGl0ZW1zLjwv
cD4KKzx1bCBpZD0iZmxvYXRpbmctbGlzdCI+CisgIDxsaT5DYXQ8L2xpPgorICA8bGk+RG9nPC9s
aT4KKyAgPGxpPkVsZXBoYW50PC9saT4KKzwvdWw+Cis8YnIgY2xlYXI9ImFsbCIgLz4KKzxkaXYg
Y29udGVudGVkaXRhYmxlPgorICA8c3BhbiBpZD0ic3RhcnRXaXRob3V0Q2FyZXRCcm93c2luZyI+
LSBGb288L3NwYW4+PGJyIC8+CisgIDxwPi0gQmFyPC9wPjxiciAvPgorPC9kaXY+Cis8cCBpZD0i
ZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK2Rl
c2NyaXB0aW9uKCJUaGlzIHRlc3RzIHZlcnRpY2FsIGNhcmV0IG5hdmlnYXRpb24gd29ya3MgYXMg
ZXhwZWN0ZWQgYWNyb3NzIHRhYmxlcyBhbmQgZmxvYXRpbmcgZWxlbWVudHMuIik7CisKK2Z1bmN0
aW9uIGNoZWNrV2l0aENhcmV0QnJvd3NpbmcoKSB7CisKKyAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
b3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRFbmFibGVDYXJldEJyb3dzaW5nIiwgdHJ1ZSk7CisK
KyAgLy8gQ2hlY2sgZG93bi91cCBhcnJvd3MuCisKKyAgLy8gU2V0IGNhcmV0IGluIHRoZSBzZWNv
bmQgY2VsbCBvZiB0aGUgdGFibGUuCisgIHN0YXJ0UG9pbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgic3RhcnRXaXRoQ2FyZXRCcm93c2luZyIpOworICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
c2V0UG9zaXRpb24oc3RhcnRQb2ludC5jaGlsZE5vZGVzLml0ZW0oMCksIDUpOworICBzaG91bGRC
ZSgiZ2V0U2VsZWN0aW9uKCkuYW5jaG9yTm9kZS5ub2RlVmFsdWUiLCAiJ0NvbC4gSGVhZGVyIDEn
Iik7CisgIHNob3VsZEJlKCJnZXRTZWxlY3Rpb24oKS5iYXNlT2Zmc2V0IiwgIjUiKTsKKworICAv
LyBNb3ZlIHRoZSBjYXJldCBkb3duIHRvIHRoZSBzZWNvbmQgcm93IG9mIHRoZSB0YWJsZS4KKyAg
ZXZlbnRTZW5kZXIua2V5RG93bigiZG93bkFycm93Iik7CisgIHNob3VsZEJlKCJnZXRTZWxlY3Rp
b24oKS5hbmNob3JOb2RlLm5vZGVWYWx1ZSIsICInT25lJyIpOworICBzaG91bGRCZSgiZ2V0U2Vs
ZWN0aW9uKCkuYmFzZU9mZnNldCIsICIzIik7CisKKyAgLy8gTW92ZSB0aGUgY2FyZXQgZG93biB0
byB0aGUgdGhpcmQgcm93IG9mIHRoZSB0YWJsZS4KKyAgZXZlbnRTZW5kZXIua2V5RG93bigiZG93
bkFycm93Iik7CisgIHNob3VsZEJlKCJnZXRTZWxlY3Rpb24oKS5hbmNob3JOb2RlLm5vZGVWYWx1
ZSIsICInVGhyZWUnIik7CisgIHNob3VsZEJlKCJnZXRTZWxlY3Rpb24oKS5iYXNlT2Zmc2V0Iiwg
IjUiKTsKKworICAvLyBNb3ZlIHRoZSBjYXJldCBkb3duIHRvIHBhcmFncmFwaC4KKyAgZXZlbnRT
ZW5kZXIua2V5RG93bigiZG93bkFycm93Iik7CisgIHNob3VsZEJlKCJnZXRTZWxlY3Rpb24oKS5h
bmNob3JOb2RlLm5vZGVWYWx1ZSIsICInQSBwYXJhZ3JhcGggYmV0d2VlbiBhIDktY2VsbCB0YWJs
ZSBhbmQgYSBsaXN0IG9mIHRocmVlIGl0ZW1zLiciKTsKKyAgc2hvdWxkQmUoImdldFNlbGVjdGlv
bigpLmJhc2VPZmZzZXQiLCAiNjEiKTsKKworICAvLyBNb3ZlIHRoZSBjYXJldCBkb3duIHRvIHRo
ZSBsaXN0IG9mIGl0ZW1zLgorICBwYXJhZ3JhcGggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
cGFyYWdyYXBoIik7CisgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5zZXRQb3NpdGlvbihwYXJhZ3Jh
cGguY2hpbGROb2Rlcy5pdGVtKDApLCAyMCk7CisgIGV2ZW50U2VuZGVyLmtleURvd24oImRvd25B
cnJvdyIpOworICBzaG91bGRCZSgiZ2V0U2VsZWN0aW9uKCkuYW5jaG9yTm9kZS5ub2RlVmFsdWUi
LCAiJ0VsZXBoYW50JyIpOworICBzaG91bGRCZSgiZ2V0U2VsZWN0aW9uKCkuYmFzZU9mZnNldCIs
ICIwIik7CisKKyAgLy8gTW92ZSB0aGUgY2FyZXQgdXAgYSBjb3VwbGUgb2YgbGluZXMuCisgIGV2
ZW50U2VuZGVyLmtleURvd24oInVwQXJyb3ciKTsKKyAgZXZlbnRTZW5kZXIua2V5RG93bigidXBB
cnJvdyIpOworICBzaG91bGRCZSgiZ2V0U2VsZWN0aW9uKCkuYW5jaG9yTm9kZS5ub2RlVmFsdWUi
LCAiJ1JvdyBIZWFkZXIgMiciKTsKKyAgc2hvdWxkQmUoImdldFNlbGVjdGlvbigpLmJhc2VPZmZz
ZXQiLCAiNiIpOworCisgIC8vIENoZWNrIHVwL2Rvd24gYXJyb3dzICsgU2hpZnQuCisKKyAgLy8g
U2VsZWN0aW9uIGluc2lkZSB0aGUgdGFibGUuCisgIGV2ZW50U2VuZGVyLmtleURvd24oInVwQXJy
b3ciLCBbInNoaWZ0S2V5Il0pOworICByYW5nZSA9IGdldFNlbGVjdGlvbigpLmdldFJhbmdlQXQo
MCk7CisgIHNob3VsZEJlKCJyYW5nZS5zdGFydENvbnRhaW5lci5ub2RlVmFsdWUiLCAiJ1JvdyBI
ZWFkZXIgMSciKTsKKyAgc2hvdWxkQmUoImdldFNlbGVjdGlvbigpLmJhc2VPZmZzZXQiLCAiNiIp
OworICBzaG91bGRCZSgicmFuZ2UuZW5kQ29udGFpbmVyLm5vZGVWYWx1ZSIsICInUm93IEhlYWRl
ciAyJyIpOworICBzaG91bGRCZSgiZ2V0U2VsZWN0aW9uKCkuZXh0ZW50T2Zmc2V0IiwgIjYiKTsK
KworICAvLyBTZWxlY3Rpb24gYWNyb3NzIHRoZSB0YWJsZSBhbmQgdGhlIHBhcmFncmFwaC4KKyAg
ZXZlbnRTZW5kZXIua2V5RG93bigiZG93bkFycm93IiwgWyJzaGlmdEtleSJdKTsKKyAgZXZlbnRT
ZW5kZXIua2V5RG93bigiZG93bkFycm93IiwgWyJzaGlmdEtleSJdKTsKKyAgcmFuZ2UgPSBnZXRT
ZWxlY3Rpb24oKS5nZXRSYW5nZUF0KDApOworICBzaG91bGRCZSgicmFuZ2Uuc3RhcnRDb250YWlu
ZXIubm9kZVZhbHVlIiwgIidSb3cgSGVhZGVyIDInIik7CisgIHNob3VsZEJlKCJnZXRTZWxlY3Rp
b24oKS5iYXNlT2Zmc2V0IiwgIjYiKTsKKyAgc2hvdWxkQmUoInJhbmdlLmVuZENvbnRhaW5lci5u
b2RlVmFsdWUiLCAiJ0EgcGFyYWdyYXBoIGJldHdlZW4gYSA5LWNlbGwgdGFibGUgYW5kIGEgbGlz
dCBvZiB0aHJlZSBpdGVtcy4nIik7CisgIHNob3VsZEJlKCJnZXRTZWxlY3Rpb24oKS5leHRlbnRP
ZmZzZXQiLCAiMjAiKTsKK30KKworZnVuY3Rpb24gY2hlY2tXaXRob3V0Q2FyZXRCcm93c2luZygp
IHsKKyAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEVkaXRpbmdDYWxsYmFja3MoKTsKKyAgbGF5
b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRFbmFibGVDYXJldEJy
b3dzaW5nIiwgZmFsc2UpOworCisgIC8vIENoZWNrIE1vdmVEb3duIC8gTW92ZVVwIGNvbW1hbmRz
LgorCisgIC8vIFNldCBjYXJldCBpbiB0aGUgc2Vjb25kIGNlbGwgb2YgdGhlIHRhYmxlLgorICBz
dGFydFBvaW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN0YXJ0V2l0aG91dENhcmV0QnJv
d3NpbmciKTsKKyAgd2luZG93LmdldFNlbGVjdGlvbigpLnNldFBvc2l0aW9uKHN0YXJ0UG9pbnQu
Y2hpbGROb2Rlcy5pdGVtKDApLCAzKTsKKworICAvLyBNb3ZlIGRvd24gYW5kIHVwIGFjcm9zcyB0
aGUgZGlmZmVyZW50IGxpbmVzIGluc2lkZSB0aGUgZWRpdGFibGUgY29udGVudC4KKyAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZXhlY0NvbW1hbmQoIk1vdmVEb3duIik7CisgIGxheW91dFRlc3RDb250
cm9sbGVyLmV4ZWNDb21tYW5kKCJNb3ZlRG93biIpOworICBsYXlvdXRUZXN0Q29udHJvbGxlci5l
eGVjQ29tbWFuZCgiTW92ZVVwIik7CisgIGxheW91dFRlc3RDb250cm9sbGVyLmV4ZWNDb21tYW5k
KCJNb3ZlVXAiKTsKKyAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZXhlY0NvbW1hbmQoIk1vdmVVcCIp
OworfQorCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAvLyBXZSBuZWVkIHRvIGNoZWNrIHdpdGggYW5k
IHdpdGhvdXQgY2FyZXQgYnJvd3NpbmcgYWN0aXZhdGVkIHRvCisgIC8vIGVuc3VyZSBubyBBUEkg
YnJlYWthZ2UgaGFzIGhhcHBlbmVkIHdpdGggdGhlIE1vdmVVcC9Eb3duIGNvbW1hbmRzLgorICBj
aGVja1dpdGhDYXJldEJyb3dzaW5nKCk7CisgIGNoZWNrV2l0aG91dENhcmV0QnJvd3NpbmcoKTsK
K30KKworc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IDFlMWVkNTguLjhjNzQzZWUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTEt
MDEtMDMgIE1hcmlvIFNhbmNoZXogUHJhZGEgIDxtc2FuY2hlekBpZ2FsaWEuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHVEtdIEVsZW1lbnRz
IG9uIHRoZSBzYW1lIGxpbmUgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgc3VjaCBieSBjYXJldCBuYXZp
Z2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
NTUzMworCisgICAgICAgIEVuc3VyZSB0aGUgY2FyZXQgd2lsbCBtb3ZlIHRvIGEgdmVydGljYWxs
eSBjb2luY2lkZW50IHBvc2l0aW9uCisgICAgICAgIHdoZW4gbW92aW5nIHVwIGFuZCBkb3duIGFj
cm9zcyBkaWZmZXJlbnQgbGluZXMuCisKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvckNvbW1hbmQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNWZXJ0aWNhbGx5Q29pbmNpZGVudCk6IE5ldywgY2hl
Y2tzIGlmIGEgcmVuZGVyZXIgaXMKKyAgICAgICAgdmVydGljYWxseSBjb2luY2lkZW50IHRvIGFu
b3RoZXIgb25lIHVzZWQgYXMgcmVmZXJlbmNlIGFuZCBhIGdpdmVuCisgICAgICAgIFggcG9zaXRp
b24sIHdoZW4gbW92aW5nIHVwIGFuZCBkb3duIGluIGNhcmV0IGJyb3dzaW5nIG1vZGUuCisgICAg
ICAgIChXZWJDb3JlOjpwZXJmb3JtQ2FyZXRNb3ZlbWVudCk6IEFjdHVhbGx5IG1vdmUgdGhlIGNh
cmV0IGZvcndhcmQKKyAgICAgICAgb3IgYmFja3dhcmQgYWNyb3NzIGRpZmZlcmVudCBsaW5lcywg
ZW5zdXJpbmcgdGhlIGZpbmFsIGRlc3RpbmF0aW9uCisgICAgICAgIGlzIGEgcmVuZGVyZXIgdmVy
dGljYWxseSBjb2luY2lkZW50IHdpdGggdGhlIHN0YXJ0IHBvaW50LgorICAgICAgICAoV2ViQ29y
ZTo6ZXhlY3V0ZU1vdmVDYXJldERvd24pOiBOZXcsIGltcGxlbWVudHMgdGhlIG5ldworICAgICAg
ICAiTW92ZUNhcmV0RG93biIgY29tbWFuZCwgdXNlZCBpbiBjYXJldCBicm93c2luZyBtb2RlIG9u
bHksIHNvIGZhcgorICAgICAgICBhZmZlY3RpbmcgdGhlIEdUSyBwb3J0IG9ubHkuCisgICAgICAg
IChXZWJDb3JlOjpleGVjdXRlTW92ZUNhcmV0RG93bkFuZE1vZGlmeVNlbGVjdGlvbik6IE5ldywg
aW1wbGVtZW50cworICAgICAgICB0aGUgbmV3ICJNb3ZlQ2FyZXREb3duQW5kTW9kaWZ5U2VsZWN0
aW9uIiBjb21tYW5kLgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVDYXJldFVwKTogTmV3
LCBpbXBsZW1lbnRzIHRoZSBuZXcKKyAgICAgICAgIk1vdmVDYXJldFVwIiBjb21tYW5kLgorICAg
ICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVDYXJldFVwQW5kTW9kaWZ5U2VsZWN0aW9uKTogTmV3
LCBpbXBsZW1lbnRzCisgICAgICAgIHRoZSBuZXcgIk1vdmVDYXJldFVwQW5kTW9kaWZ5U2VsZWN0
aW9uIiBjb21tYW5kLgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQ29tbWFuZE1hcCk6IEFkZCB0
aGUgbmV3IGNvbW1hbmRzIG5lZWRlZCBmb3IgdGhlCisgICAgICAgIEdUSyBwb3J0LCByZWxhdGVk
IHdpdGggdXAvZG93biBtb3ZlbWVudCBpbiBjYXJldCBicm93c2luZyBtb2RlLgorCiAyMDExLTAx
LTAyICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgUnViYmVyLXN0
YW1wZWQgYnkgU2ltb24gRnJhc2VyLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ckNvbW1hbmQuY3BwIGIvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCmluZGV4IDVk
ZTQ0YTYuLmZkYTlkMGUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5k
LmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAKQEAgLTQ4LDYgKzQ4
LDcgQEAKICNpbmNsdWRlICJJbnNlcnRMaXN0Q29tbWFuZC5oIgogI2luY2x1ZGUgIktpbGxSaW5n
LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlJlbmRlckJsb2NrLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyQm94LmgiCiAjaW5jbHVkZSAiUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuaCIKICNp
bmNsdWRlICJTY3JvbGxiYXIuaCIKQEAgLTYxNiw2ICs2MTcsODcgQEAgc3RhdGljIGJvb2wgZXhl
Y3V0ZU1vdmVCYWNrd2FyZEFuZE1vZGlmeVNlbGVjdGlvbihGcmFtZSogZnJhbWUsIEV2ZW50Kiwg
RWRpdG9yQ28KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorc3RhdGljIGJvb2wgaXNWZXJ0aWNhbGx5
Q29pbmNpZGVudChSZW5kZXJPYmplY3QqIGNhbmRpZGF0ZSwgUmVuZGVyT2JqZWN0KiBvcmlnaW4s
IGludCBvcmlnaW5YLCBTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uKQoreworICAgIGlmICgh
Y2FuZGlkYXRlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBSZW5kZXJCbG9jayogb3Jp
Z2luQ29udGFpbmluZ0Jsb2NrID0gb3JpZ2luLT5jb250YWluaW5nQmxvY2soKTsKKyAgICBpZiAo
IW9yaWdpbkNvbnRhaW5pbmdCbG9jaykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgUmVu
ZGVyQmxvY2sqIGNvbnRhaW5pbmdCbG9jayA9IGNhbmRpZGF0ZS0+Y29udGFpbmluZ0Jsb2NrKCk7
CisgICAgaWYgKCFjb250YWluaW5nQmxvY2spCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IEZsb2F0UG9pbnQgb3JpZ2luQWJzUG9zID0gb3JpZ2luQ29udGFpbmluZ0Jsb2NrLT5sb2NhbFRv
QWJzb2x1dGUoRmxvYXRQb2ludCgpKTsKKyAgICBGbG9hdFBvaW50IGFic1BvcyA9IGNvbnRhaW5p
bmdCbG9jay0+bG9jYWxUb0Fic29sdXRlKEZsb2F0UG9pbnQoKSk7CisKKyAgICAvLyBDYW5kaWRh
dGUgbXVzdCBiZSBpbiBhIGhpZ2hlciBwb3NpdGlvbiB0aGFuIG9yaWdpbiB3aGVuIGdvaW5nIGJh
Y2t3YXJkLgorICAgIGlmIChkaXJlY3Rpb24gPT0gRGlyZWN0aW9uQmFja3dhcmQKKyAgICAgICAg
JiYgYWJzUG9zLnkoKSArIGNvbnRhaW5pbmdCbG9jay0+aGVpZ2h0KCkgPj0gb3JpZ2luQWJzUG9z
LnkoKSArIG9yaWdpbkNvbnRhaW5pbmdCbG9jay0+aGVpZ2h0KCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIC8vIENhbmRpZGF0ZSBtdXN0IGJlIGluIGEgbG93ZXIgcG9zaXRpb24gdGhh
biBvcmlnaW4gd2hlbiBnb2luZyBmb3J3YXJkLgorICAgIGlmIChkaXJlY3Rpb24gPT0gRGlyZWN0
aW9uRm9yd2FyZCAmJiBhYnNQb3MueSgpIDw9IG9yaWdpbkFic1Bvcy55KCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIC8vIENhbmRpZGF0ZSBtdXN0IGJlIGluIHRoZSBzYW1lIHZlcnRp
Y2FsIHNwYWNlIHRoYW4gb3JpZ2luLgorICAgIGlmIChhYnNQb3MueCgpID4gb3JpZ2luWCB8fCBv
cmlnaW5YID49IGFic1Bvcy54KCkgKyBjb250YWluaW5nQmxvY2stPndpZHRoKCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgYm9vbCBwZXJm
b3JtQ2FyZXRNb3ZlbWVudChGcmFtZSogZnJhbWUsIFdlYkNvcmU6OlNlbGVjdGlvbkNvbnRyb2xs
ZXI6OkVBbHRlcmF0aW9uIGFsdGVyYXRpb24sIFNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24p
Cit7CisgICAgU2VsZWN0aW9uQ29udHJvbGxlciogc2VsZWN0aW9uID0gZnJhbWUtPnNlbGVjdGlv
bigpOworICAgIFBvc2l0aW9uIHBvcyA9IHNlbGVjdGlvbi0+c3RhcnQoKTsKKyAgICBOb2RlKiBv
cmlnaW5Ob2RlID0gcG9zLm5vZGUoKTsKKyAgICBpZiAoIW9yaWdpbk5vZGUpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIFJlbmRlck9iamVjdCogb3JpZ2luUmVuZGVyZXIgPSBvcmlnaW5O
b2RlLT5yZW5kZXJlcigpOworICAgIGlmICghb3JpZ2luUmVuZGVyZXIpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIC8vIEdldCB0aGUgYWJzb2x1dGUgWCBjb29yZGluYXRlIGZvciBmdXJ0
aGVyIGNvbXBhcmlzb25zLgorICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb24ocG9z
LCBzZWxlY3Rpb24tPmFmZmluaXR5KCkpOworICAgIGludCB4ID0gdmlzaWJsZVBvc2l0aW9uLmlz
Tm90TnVsbCgpID8gdmlzaWJsZVBvc2l0aW9uLnhPZmZzZXRGb3JWZXJ0aWNhbE5hdmlnYXRpb24o
KSA6IDA7CisKKyAgICAvLyBSZXBlYXQgY29tbWFuZCB1bnRpbCByZWFjaGluZyBhIHZhbGlkIGRl
c3RpbmF0aW9uLgorICAgIE5vZGUqIHByZXZpb3VzTm9kZSA9IDA7CisgICAgd2hpbGUgKHNlbGVj
dGlvbi0+bW9kaWZ5KGFsdGVyYXRpb24sIGRpcmVjdGlvbiwgTGluZUdyYW51bGFyaXR5LCB0cnVl
KSkgeworICAgICAgICBQb3NpdGlvbiBjdXJyZW50UG9zaXRpb24gPSBzZWxlY3Rpb24tPmV4dGVu
dCgpOworICAgICAgICBOb2RlKiBjdXJyZW50Tm9kZSA9IGN1cnJlbnRQb3NpdGlvbi5ub2RlKCk7
CisKKyAgICAgICAgLy8gRG9uJ3Qga2VlcCBsb29waW5nIGlmIG5ldyBzZWxlY3Rpb24gZmFsbHMg
aW4gdGhlIHNhbWUgbm9kZS4KKyAgICAgICAgaWYgKGN1cnJlbnROb2RlID09IHByZXZpb3VzTm9k
ZSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgIFJlbmRlck9iamVjdCogY3Vy
cmVudFJlbmRlcmVyID0gY3VycmVudE5vZGUtPnJlbmRlcmVyKCk7CisgICAgICAgIGlmICghY3Vy
cmVudFJlbmRlcmVyKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGlmIChp
c1ZlcnRpY2FsbHlDb2luY2lkZW50KGN1cnJlbnRSZW5kZXJlciwgb3JpZ2luUmVuZGVyZXIsIHgs
IGRpcmVjdGlvbikpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICBwcmV2aW91
c05vZGUgPSBjdXJyZW50Tm9kZTsKKyAgICB9OworCisgICAgcmV0dXJuIGZhbHNlOworfQorCitz
dGF0aWMgYm9vbCBleGVjdXRlTW92ZUNhcmV0RG93bihGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRp
dG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKK3sKKyAgICByZXR1cm4gcGVyZm9ybUNh
cmV0TW92ZW1lbnQoZnJhbWUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3ZlLCBE
aXJlY3Rpb25Gb3J3YXJkKTsKK30KKworc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVDYXJldERvd25B
bmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3Vy
Y2UsIGNvbnN0IFN0cmluZyYpCit7CisgICAgcmV0dXJuIHBlcmZvcm1DYXJldE1vdmVtZW50KGZy
YW1lLCBTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kLCBEaXJlY3Rpb25Gb3J3
YXJkKTsKK30KKwogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVEb3duKEZyYW1lKiBmcmFtZSwgRXZl
bnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewogICAgIHJldHVybiBm
cmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9u
TW92ZSwgRGlyZWN0aW9uRm9yd2FyZCwgTGluZUdyYW51bGFyaXR5LCB0cnVlKTsKQEAgLTgwMSw2
ICs4ODMsMTYgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVQYXJhZ3JhcGhGb3J3YXJkQW5kTW9k
aWZ5U2VsZWN0aW9uKEZyYW1lKiBmcmFtZSwgRXZlbnQqLAogICAgIHJldHVybiB0cnVlOwogfQog
CitzdGF0aWMgYm9vbCBleGVjdXRlTW92ZUNhcmV0VXAoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVk
aXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCit7CisgICAgcmV0dXJuIHBlcmZvcm1D
YXJldE1vdmVtZW50KGZyYW1lLCBTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwg
RGlyZWN0aW9uQmFja3dhcmQpOworfQorCitzdGF0aWMgYm9vbCBleGVjdXRlTW92ZUNhcmV0VXBB
bmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3Vy
Y2UsIGNvbnN0IFN0cmluZyYpCit7CisgICAgcmV0dXJuIHBlcmZvcm1DYXJldE1vdmVtZW50KGZy
YW1lLCBTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kLCBEaXJlY3Rpb25CYWNr
d2FyZCk7Cit9CisKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlVXAoRnJhbWUqIGZyYW1lLCBFdmVu
dCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7CiAgICAgcmV0dXJuIGZy
YW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25N
b3ZlLCBEaXJlY3Rpb25CYWNrd2FyZCwgTGluZUdyYW51bGFyaXR5LCB0cnVlKTsKQEAgLTE0MjUs
OCArMTUxNywxMCBAQCBzdGF0aWMgY29uc3QgQ29tbWFuZE1hcCYgY3JlYXRlQ29tbWFuZE1hcCgp
CiAgICAgICAgIHsgIk1ha2VUZXh0V3JpdGluZ0RpcmVjdGlvblJpZ2h0VG9MZWZ0IiwgeyBleGVj
dXRlTWFrZVRleHRXcml0aW5nRGlyZWN0aW9uUmlnaHRUb0xlZnQsIHN1cHBvcnRlZEZyb21NZW51
T3JLZXlCaW5kaW5nLCBlbmFibGVkSW5SaWNobHlFZGl0YWJsZVRleHQsIHN0YXRlVGV4dFdyaXRp
bmdEaXJlY3Rpb25SaWdodFRvTGVmdCwgdmFsdWVOdWxsLCBub3RUZXh0SW5zZXJ0aW9uLCBkb05v
dEFsbG93RXhlY3V0aW9uV2hlbkRpc2FibGVkIH0gfSwKICAgICAgICAgeyAiTW92ZUJhY2t3YXJk
IiwgeyBleGVjdXRlTW92ZUJhY2t3YXJkLCBzdXBwb3J0ZWRGcm9tTWVudU9yS2V5QmluZGluZywg
ZW5hYmxlZEluRWRpdGFibGVUZXh0T3JDYXJldEJyb3dzaW5nLCBzdGF0ZU5vbmUsIHZhbHVlTnVs
bCwgbm90VGV4dEluc2VydGlvbiwgZG9Ob3RBbGxvd0V4ZWN1dGlvbldoZW5EaXNhYmxlZCB9IH0s
CiAgICAgICAgIHsgIk1vdmVCYWNrd2FyZEFuZE1vZGlmeVNlbGVjdGlvbiIsIHsgZXhlY3V0ZU1v
dmVCYWNrd2FyZEFuZE1vZGlmeVNlbGVjdGlvbiwgc3VwcG9ydGVkRnJvbU1lbnVPcktleUJpbmRp
bmcsIGVuYWJsZWRWaXNpYmxlU2VsZWN0aW9uT3JDYXJldEJyb3dzaW5nLCBzdGF0ZU5vbmUsIHZh
bHVlTnVsbCwgbm90VGV4dEluc2VydGlvbiwgZG9Ob3RBbGxvd0V4ZWN1dGlvbldoZW5EaXNhYmxl
ZCB9IH0sCi0gICAgICAgIHsgIk1vdmVEb3duIiwgeyBleGVjdXRlTW92ZURvd24sIHN1cHBvcnRl
ZEZyb21NZW51T3JLZXlCaW5kaW5nLCBlbmFibGVkSW5FZGl0YWJsZVRleHRPckNhcmV0QnJvd3Np
bmcsIHN0YXRlTm9uZSwgdmFsdWVOdWxsLCBub3RUZXh0SW5zZXJ0aW9uLCBkb05vdEFsbG93RXhl
Y3V0aW9uV2hlbkRpc2FibGVkIH0gfSwKLSAgICAgICAgeyAiTW92ZURvd25BbmRNb2RpZnlTZWxl
Y3Rpb24iLCB7IGV4ZWN1dGVNb3ZlRG93bkFuZE1vZGlmeVNlbGVjdGlvbiwgc3VwcG9ydGVkRnJv
bU1lbnVPcktleUJpbmRpbmcsIGVuYWJsZWRWaXNpYmxlU2VsZWN0aW9uT3JDYXJldEJyb3dzaW5n
LCBzdGF0ZU5vbmUsIHZhbHVlTnVsbCwgbm90VGV4dEluc2VydGlvbiwgZG9Ob3RBbGxvd0V4ZWN1
dGlvbldoZW5EaXNhYmxlZCB9IH0sCisgICAgICAgIHsgIk1vdmVDYXJldERvd24iLCB7IGV4ZWN1
dGVNb3ZlQ2FyZXREb3duLCBzdXBwb3J0ZWRGcm9tTWVudU9yS2V5QmluZGluZywgZW5hYmxlZElu
RWRpdGFibGVUZXh0T3JDYXJldEJyb3dzaW5nLCBzdGF0ZU5vbmUsIHZhbHVlTnVsbCwgbm90VGV4
dEluc2VydGlvbiwgZG9Ob3RBbGxvd0V4ZWN1dGlvbldoZW5EaXNhYmxlZCB9IH0sCisgICAgICAg
IHsgIk1vdmVDYXJldERvd25BbmRNb2RpZnlTZWxlY3Rpb24iLCB7IGV4ZWN1dGVNb3ZlQ2FyZXRE
b3duQW5kTW9kaWZ5U2VsZWN0aW9uLCBzdXBwb3J0ZWRGcm9tTWVudU9yS2V5QmluZGluZywgZW5h
YmxlZFZpc2libGVTZWxlY3Rpb25PckNhcmV0QnJvd3NpbmcsIHN0YXRlTm9uZSwgdmFsdWVOdWxs
LCBub3RUZXh0SW5zZXJ0aW9uLCBkb05vdEFsbG93RXhlY3V0aW9uV2hlbkRpc2FibGVkIH0gfSwK
KyAgICAgICAgeyAiTW92ZURvd24iLCB7IGV4ZWN1dGVNb3ZlRG93biwgc3VwcG9ydGVkRnJvbU1l
bnVPcktleUJpbmRpbmcsIGVuYWJsZWRJbkVkaXRhYmxlVGV4dCwgc3RhdGVOb25lLCB2YWx1ZU51
bGwsIG5vdFRleHRJbnNlcnRpb24sIGRvTm90QWxsb3dFeGVjdXRpb25XaGVuRGlzYWJsZWQgfSB9
LAorICAgICAgICB7ICJNb3ZlRG93bkFuZE1vZGlmeVNlbGVjdGlvbiIsIHsgZXhlY3V0ZU1vdmVE
b3duQW5kTW9kaWZ5U2VsZWN0aW9uLCBzdXBwb3J0ZWRGcm9tTWVudU9yS2V5QmluZGluZywgZW5h
YmxlZFZpc2libGVTZWxlY3Rpb24sIHN0YXRlTm9uZSwgdmFsdWVOdWxsLCBub3RUZXh0SW5zZXJ0
aW9uLCBkb05vdEFsbG93RXhlY3V0aW9uV2hlbkRpc2FibGVkIH0gfSwKICAgICAgICAgeyAiTW92
ZUZvcndhcmQiLCB7IGV4ZWN1dGVNb3ZlRm9yd2FyZCwgc3VwcG9ydGVkRnJvbU1lbnVPcktleUJp
bmRpbmcsIGVuYWJsZWRJbkVkaXRhYmxlVGV4dE9yQ2FyZXRCcm93c2luZywgc3RhdGVOb25lLCB2
YWx1ZU51bGwsIG5vdFRleHRJbnNlcnRpb24sIGRvTm90QWxsb3dFeGVjdXRpb25XaGVuRGlzYWJs
ZWQgfSB9LAogICAgICAgICB7ICJNb3ZlRm9yd2FyZEFuZE1vZGlmeVNlbGVjdGlvbiIsIHsgZXhl
Y3V0ZU1vdmVGb3J3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uLCBzdXBwb3J0ZWRGcm9tTWVudU9yS2V5
QmluZGluZywgZW5hYmxlZFZpc2libGVTZWxlY3Rpb25PckNhcmV0QnJvd3NpbmcsIHN0YXRlTm9u
ZSwgdmFsdWVOdWxsLCBub3RUZXh0SW5zZXJ0aW9uLCBkb05vdEFsbG93RXhlY3V0aW9uV2hlbkRp
c2FibGVkIH0gfSwKICAgICAgICAgeyAiTW92ZUxlZnQiLCB7IGV4ZWN1dGVNb3ZlTGVmdCwgc3Vw
cG9ydGVkRnJvbU1lbnVPcktleUJpbmRpbmcsIGVuYWJsZWRJbkVkaXRhYmxlVGV4dE9yQ2FyZXRC
cm93c2luZywgc3RhdGVOb25lLCB2YWx1ZU51bGwsIG5vdFRleHRJbnNlcnRpb24sIGRvTm90QWxs
b3dFeGVjdXRpb25XaGVuRGlzYWJsZWQgfSB9LApAQCAtMTQ1OSw4ICsxNTUzLDEwIEBAIHN0YXRp
YyBjb25zdCBDb21tYW5kTWFwJiBjcmVhdGVDb21tYW5kTWFwKCkKICAgICAgICAgeyAiTW92ZVRv
TGVmdEVuZE9mTGluZUFuZE1vZGlmeVNlbGVjdGlvbiIsIHsgZXhlY3V0ZU1vdmVUb0xlZnRFbmRP
ZkxpbmVBbmRNb2RpZnlTZWxlY3Rpb24sIHN1cHBvcnRlZEZyb21NZW51T3JLZXlCaW5kaW5nLCBl
bmFibGVkSW5FZGl0YWJsZVRleHQsIHN0YXRlTm9uZSwgdmFsdWVOdWxsLCBub3RUZXh0SW5zZXJ0
aW9uLCBkb05vdEFsbG93RXhlY3V0aW9uV2hlbkRpc2FibGVkIH0gfSwKICAgICAgICAgeyAiTW92
ZVRvUmlnaHRFbmRPZkxpbmUiLCB7IGV4ZWN1dGVNb3ZlVG9SaWdodEVuZE9mTGluZSwgc3VwcG9y
dGVkRnJvbU1lbnVPcktleUJpbmRpbmcsIGVuYWJsZWRJbkVkaXRhYmxlVGV4dCwgc3RhdGVOb25l
LCB2YWx1ZU51bGwsIG5vdFRleHRJbnNlcnRpb24sIGRvTm90QWxsb3dFeGVjdXRpb25XaGVuRGlz
YWJsZWQgfSB9LAogICAgICAgICB7ICJNb3ZlVG9SaWdodEVuZE9mTGluZUFuZE1vZGlmeVNlbGVj
dGlvbiIsIHsgZXhlY3V0ZU1vdmVUb1JpZ2h0RW5kT2ZMaW5lQW5kTW9kaWZ5U2VsZWN0aW9uLCBz
dXBwb3J0ZWRGcm9tTWVudU9yS2V5QmluZGluZywgZW5hYmxlZEluRWRpdGFibGVUZXh0LCBzdGF0
ZU5vbmUsIHZhbHVlTnVsbCwgbm90VGV4dEluc2VydGlvbiwgZG9Ob3RBbGxvd0V4ZWN1dGlvbldo
ZW5EaXNhYmxlZCB9IH0sCi0gICAgICAgIHsgIk1vdmVVcCIsIHsgZXhlY3V0ZU1vdmVVcCwgc3Vw
cG9ydGVkRnJvbU1lbnVPcktleUJpbmRpbmcsIGVuYWJsZWRJbkVkaXRhYmxlVGV4dE9yQ2FyZXRC
cm93c2luZywgc3RhdGVOb25lLCB2YWx1ZU51bGwsIG5vdFRleHRJbnNlcnRpb24sIGRvTm90QWxs
b3dFeGVjdXRpb25XaGVuRGlzYWJsZWQgfSB9LAotICAgICAgICB7ICJNb3ZlVXBBbmRNb2RpZnlT
ZWxlY3Rpb24iLCB7IGV4ZWN1dGVNb3ZlVXBBbmRNb2RpZnlTZWxlY3Rpb24sIHN1cHBvcnRlZEZy
b21NZW51T3JLZXlCaW5kaW5nLCBlbmFibGVkVmlzaWJsZVNlbGVjdGlvbk9yQ2FyZXRCcm93c2lu
Zywgc3RhdGVOb25lLCB2YWx1ZU51bGwsIG5vdFRleHRJbnNlcnRpb24sIGRvTm90QWxsb3dFeGVj
dXRpb25XaGVuRGlzYWJsZWQgfSB9LAorICAgICAgICB7ICJNb3ZlQ2FyZXRVcCIsIHsgZXhlY3V0
ZU1vdmVDYXJldFVwLCBzdXBwb3J0ZWRGcm9tTWVudU9yS2V5QmluZGluZywgZW5hYmxlZEluRWRp
dGFibGVUZXh0T3JDYXJldEJyb3dzaW5nLCBzdGF0ZU5vbmUsIHZhbHVlTnVsbCwgbm90VGV4dElu
c2VydGlvbiwgZG9Ob3RBbGxvd0V4ZWN1dGlvbldoZW5EaXNhYmxlZCB9IH0sCisgICAgICAgIHsg
Ik1vdmVDYXJldFVwQW5kTW9kaWZ5U2VsZWN0aW9uIiwgeyBleGVjdXRlTW92ZUNhcmV0VXBBbmRN
b2RpZnlTZWxlY3Rpb24sIHN1cHBvcnRlZEZyb21NZW51T3JLZXlCaW5kaW5nLCBlbmFibGVkVmlz
aWJsZVNlbGVjdGlvbk9yQ2FyZXRCcm93c2luZywgc3RhdGVOb25lLCB2YWx1ZU51bGwsIG5vdFRl
eHRJbnNlcnRpb24sIGRvTm90QWxsb3dFeGVjdXRpb25XaGVuRGlzYWJsZWQgfSB9LAorICAgICAg
ICB7ICJNb3ZlVXAiLCB7IGV4ZWN1dGVNb3ZlVXAsIHN1cHBvcnRlZEZyb21NZW51T3JLZXlCaW5k
aW5nLCBlbmFibGVkSW5FZGl0YWJsZVRleHQsIHN0YXRlTm9uZSwgdmFsdWVOdWxsLCBub3RUZXh0
SW5zZXJ0aW9uLCBkb05vdEFsbG93RXhlY3V0aW9uV2hlbkRpc2FibGVkIH0gfSwKKyAgICAgICAg
eyAiTW92ZVVwQW5kTW9kaWZ5U2VsZWN0aW9uIiwgeyBleGVjdXRlTW92ZVVwQW5kTW9kaWZ5U2Vs
ZWN0aW9uLCBzdXBwb3J0ZWRGcm9tTWVudU9yS2V5QmluZGluZywgZW5hYmxlZFZpc2libGVTZWxl
Y3Rpb24sIHN0YXRlTm9uZSwgdmFsdWVOdWxsLCBub3RUZXh0SW5zZXJ0aW9uLCBkb05vdEFsbG93
RXhlY3V0aW9uV2hlbkRpc2FibGVkIH0gfSwKICAgICAgICAgeyAiTW92ZVdvcmRCYWNrd2FyZCIs
IHsgZXhlY3V0ZU1vdmVXb3JkQmFja3dhcmQsIHN1cHBvcnRlZEZyb21NZW51T3JLZXlCaW5kaW5n
LCBlbmFibGVkSW5FZGl0YWJsZVRleHRPckNhcmV0QnJvd3NpbmcsIHN0YXRlTm9uZSwgdmFsdWVO
dWxsLCBub3RUZXh0SW5zZXJ0aW9uLCBkb05vdEFsbG93RXhlY3V0aW9uV2hlbkRpc2FibGVkIH0g
fSwKICAgICAgICAgeyAiTW92ZVdvcmRCYWNrd2FyZEFuZE1vZGlmeVNlbGVjdGlvbiIsIHsgZXhl
Y3V0ZU1vdmVXb3JkQmFja3dhcmRBbmRNb2RpZnlTZWxlY3Rpb24sIHN1cHBvcnRlZEZyb21NZW51
T3JLZXlCaW5kaW5nLCBlbmFibGVkVmlzaWJsZVNlbGVjdGlvbk9yQ2FyZXRCcm93c2luZywgc3Rh
dGVOb25lLCB2YWx1ZU51bGwsIG5vdFRleHRJbnNlcnRpb24sIGRvTm90QWxsb3dFeGVjdXRpb25X
aGVuRGlzYWJsZWQgfSB9LAogICAgICAgICB7ICJNb3ZlV29yZEZvcndhcmQiLCB7IGV4ZWN1dGVN
b3ZlV29yZEZvcndhcmQsIHN1cHBvcnRlZEZyb21NZW51T3JLZXlCaW5kaW5nLCBlbmFibGVkSW5F
ZGl0YWJsZVRleHRPckNhcmV0QnJvd3NpbmcsIHN0YXRlTm9uZSwgdmFsdWVOdWxsLCBub3RUZXh0
SW5zZXJ0aW9uLCBkb05vdEFsbG93RXhlY3V0aW9uV2hlbkRpc2FibGVkIH0gfSwKZGlmZiAtLWdp
dCBhL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggMGQ3
ZjViMS4uMzhkMmVjZiAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvV2Vi
S2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMS0wMS0wMyAgTWFyaW8gU2Fu
Y2hleiBQcmFkYSAgPG1zYW5jaGV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0dUS10gRWxlbWVudHMgb24gdGhlIHNhbWUgbGlu
ZSBzaG91bGQgYmUgdHJlYXRlZCBhcyBzdWNoIGJ5IGNhcmV0IG5hdmlnYXRpb24KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1NTMzCisKKyAgICAgICAg
VXNlIHRoZSBuZXcgY29tbWFuZHMgZm9yIG1vdmluZyB1cC9kb3duIGluIGNhcmV0IGJyb3dzaW5n
IG1vZGUuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwOgor
ICAgICAgICAoV2ViS2l0Ojptb3ZlQ3Vyc29yQ2FsbGJhY2spOiBSZWRlZmluZSByYXdDb21tYW5k
IHRvIG9uZSBvZiB0aGUKKyAgICAgICAgbmV3IGZvdXIgY29tbWFuZHMgd2hlbiBhcHByb3ByaWF0
ZS4KKwogMjAxMS0wMS0wMiAgWGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CiAKICAgICAg
ICAgRml4IEdUSysgYnVpbGQuCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L0VkaXRvckNsaWVudEd0ay5jcHAgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNs
aWVudEd0ay5jcHAKaW5kZXggM2Y1NWNjYS4uNGI1YzI1OSAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0
ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwCisrKyBiL1dlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1
ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYXN0ZWJvYXJkSGVscGVyR3RrLmgiCiAjaW5jbHVkZSAi
UGxhdGZvcm1LZXlib2FyZEV2ZW50LmgiCisjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRl
ICJXZWJLaXRET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiV2ViS2l0RE9NQ1NTU3R5bGVEZWNsYXJh
dGlvblByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRET01IVE1MRWxlbWVudFByaXZhdGUuaCIK
QEAgLTIxOCw2ICsyMTksMTEgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGd0a01vdmVDb21t
YW5kc1tdWzRdID0gewogICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0gLy8gSG9yaXpvbnRhbCBwYWdlIG1vdmVtZW50CiB9OwogCitzdGF0aWMgY29uc3QgY2hhciog
Y29uc3QgZ3RrTW92ZUNhcmV0TGluZXNDb21tYW5kc1s0XSA9IHsKKyAgICAiTW92ZUNhcmV0VXAi
LCAgICAgICAgICAgICAgICAgICAiTW92ZUNhcmV0RG93biIsCisgICAgIk1vdmVDYXJldFVwQW5k
TW9kaWZ5U2VsZWN0aW9uIiwgIk1vdmVDYXJldERvd25BbmRNb2RpZnlTZWxlY3Rpb24iCit9Owor
CiBzdGF0aWMgdm9pZCBtb3ZlQ3Vyc29yQ2FsbGJhY2soR3RrV2lkZ2V0KiB3aWRnZXQsIEd0a01v
dmVtZW50U3RlcCBzdGVwLCBnaW50IGNvdW50LCBnYm9vbGVhbiBleHRlbmRTZWxlY3Rpb24sIEVk
aXRvckNsaWVudCogY2xpZW50KQogewogICAgIGdfc2lnbmFsX3N0b3BfZW1pc3Npb25fYnlfbmFt
ZSh3aWRnZXQsICJtb3ZlLWN1cnNvciIpOwpAQCAtMjMyLDYgKzIzOCwxNCBAQCBzdGF0aWMgdm9p
ZCBtb3ZlQ3Vyc29yQ2FsbGJhY2soR3RrV2lkZ2V0KiB3aWRnZXQsIEd0a01vdmVtZW50U3RlcCBz
dGVwLCBnaW50IGNvdQogICAgIGlmICghcmF3Q29tbWFuZCkKICAgICAgICAgcmV0dXJuOwogCisg
ICAgLyogQ2hlY2sgc3BlY2lhbCBjYXNlIGZvciBtb3ZpbmcgdGhlIGNhcmV0IHVwL2Rvd24gYWNy
b3NzIGxpbmVzLiAqLworICAgIGlmIChzdGVwID09IDMpIHsKKyAgICAgICAgRnJhbWUqIGZyYW1l
ID0gY29yZShjbGllbnQtPndlYlZpZXcoKSktPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JN
YWluRnJhbWUoKTsKKyAgICAgICAgU2V0dGluZ3MqIHNldHRpbmdzID0gZnJhbWUgPyBmcmFtZS0+
c2V0dGluZ3MoKSA6IDA7CisgICAgICAgIGlmIChzZXR0aW5ncyAmJiBzZXR0aW5ncy0+Y2FyZXRC
cm93c2luZ0VuYWJsZWQoKSkKKyAgICAgICAgICAgIHJhd0NvbW1hbmQgPSBndGtNb3ZlQ2FyZXRM
aW5lc0NvbW1hbmRzW2RpcmVjdGlvbl07CisgICAgfQorCiAgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBhYnMoY291bnQpOyBpKyspCiAgICAgICAgIGNsaWVudC0+YWRkUGVuZGluZ0VkaXRvckNvbW1h
bmQocmF3Q29tbWFuZCk7CiB9Ci0tIAoxLjcuMy40Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>80187</attachid>
            <date>2011-01-26 05:23:23 -0800</date>
            <delta_ts>2011-01-26 05:23:23 -0800</delta_ts>
            <desc>Additional test case</desc>
            <filename>caret-nav-stuckage.html</filename>
            <type>text/html</type>
            <size>700</size>
            <attacher name="Joanmarie Diggs">jdiggs</attacher>
            
              <data encoding="base64">PGh0bWw+CjxoZWFkPgo8dGl0bGU+QmxhPC90aXRsZT4KPHN0eWxlPgpwIHsKICBjbGVhcjogYm90
aDsKICBtYXJnaW4tcmlnaHQ6IDIyMHB4Owp9CmEgewogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsK
ICBib3JkZXItYm90dG9tOiAxcHggZG90dGVkICM4ODg7Cn0KPC9zdHlsZT4KPC9oZWFkPgo8Ym9k
eT4KPHA+PGEgaHJlZj0iZm9vIj5TdGFydCBoZXJlPC9hPi48L3A+CjxwPkJsYSBibGEgYmxhIGJs
YSBibGEgYmxhIGJsYS4gQmxhIGJsYSBibGEgYmxhIGJsYSBibGEgYmxhLiBCbGEgYmxhIGJsYSBi
bGEgYmxhIGJsYSBibGEuIDxhIGhyZWY9ImJsYSI+YmxhPC9hPi4gIEJsYSBibGEgYmxhIGJsYSBi
bGEgYmxhIGJsYS4gQmxhIGJsYSBibGEgYmxhIGJsYSBibGEgYmxhLiBCbGEgYmxhIGJsYSBibGEg
YmxhIGJsYSBibGEuIDxhIGhyZWY9ImJsYSI+YmxhPC9hPi4gQmxhIGJsYSBibGEgYmxhIGJsYSBi
bGEgYmxhLiBCbGEgYmxhIGJsYSBibGEgYmxhIGJsYSBibGEuIEJsYSBibGEgYmxhIGJsYSBibGEg
YmxhIGJsYS4gPGEgaHJlZj0iYmxhIj5ibGE8L2E+LiAgQmxhIGJsYSBibGEgYmxhIGJsYSBibGEg
YmxhLiBCbGEgYmxhIGJsYSBibGEgYmxhIGJsYSBibGEuIEJsYSBibGEgYmxhIGJsYSBibGEgYmxh
IGJsYS4gPGEgaHJlZj0iYmxhIj5ibGE8L2E+LiBCbGEgYmxhIGJsYSBibGEgYmxhLiAKPC9wPgo8
L2JvZHk+CjwvaHRtbD4KCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>84236</attachid>
            <date>2011-03-01 09:04:19 -0800</date>
            <delta_ts>2011-03-07 09:53:19 -0800</delta_ts>
            <desc>Patch proposal + Layout test</desc>
            <filename>0001-2011-03-01-Mario-Sanchez-Prada-msanchez-igalia.com.patch</filename>
            <type>text/plain</type>
            <size>28039</size>
            <attacher name="Mario Sanchez Prada">mario</attacher>
            
              <data encoding="base64">RnJvbSA3OWQ1MTQ4YjEwZjZkNDk3M2JlODUxMmQxNDVmN2JlMjY5MjEwMzgwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJpbyBTYW5jaGV6IFByYWRhIDxtc2FuY2hlekBpZ2FsaWEu
Y29tPgpEYXRlOiBNb24sIDIxIEZlYiAyMDExIDEyOjEyOjEzICswMTAwClN1YmplY3Q6IFtQQVRD
SCAxLzJdIDIwMTEtMDMtMDEgIE1hcmlvIFNhbmNoZXogUHJhZGEgIDxtc2FuY2hlekBpZ2FsaWEu
Y29tPgoKICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCiAgICAgICAgW0dUS10g
RWxlbWVudHMgb24gdGhlIHNhbWUgbGluZSBzaG91bGQgYmUgdHJlYXRlZCBhcyBzdWNoIGJ5IGNh
cmV0IG5hdmlnYXRpb24KICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjU1MzMKCiAgICAgICAgTmV3IGxheW91dCB0ZXN0IGZvciBjaGVja2luZyB0aGUgbmV3
IGVkaXRpbmcgY29tbWFuZHMgZm9yIG1vdmluZwogICAgICAgIHRoZSBjYXJldCB1cCBhbmQgZG93
biB3aGVuIGluIGNhcmV0IGJyb3dzaW5nIChHVEstb25seSBzbyBmYXIpLgoKICAgICAgICAqIHBs
YXRmb3JtL2d0ay9lZGl0aW5nL3NlbGVjdGlvbi9jYXJldC1tb2RlLXZlcnRpY2FsLW5hdmlnYXRp
b24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KICAgICAgICAqIHBsYXRmb3JtL2d0ay9lZGl0aW5nL3Nl
bGVjdGlvbi9jYXJldC1tb2RlLXZlcnRpY2FsLW5hdmlnYXRpb24uaHRtbDogQWRkZWQuCjIwMTEt
MDMtMDEgIE1hcmlvIFNhbmNoZXogUHJhZGEgIDxtc2FuY2hlekBpZ2FsaWEuY29tPgoKICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCiAgICAgICAgW0dUS10gRWxlbWVudHMgb24g
dGhlIHNhbWUgbGluZSBzaG91bGQgYmUgdHJlYXRlZCBhcyBzdWNoIGJ5IGNhcmV0IG5hdmlnYXRp
b24KICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU1MzMK
CiAgICAgICAgRW5zdXJlIHRoZSBjYXJldCB3aWxsIG1vdmUgdG8gYSB2ZXJ0aWNhbGx5IGNvaW5j
aWRlbnQgcG9zaXRpb24KICAgICAgICB3aGVuIG1vdmluZyB1cCBhbmQgZG93biBhY3Jvc3MgZGlm
ZmVyZW50IGxpbmVzLgoKICAgICAgICAqIGVkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHA6CiAgICAg
ICAgKFdlYkNvcmU6OmlzVmVydGljYWxseUNvaW5jaWRlbnQpOiBOZXcsIGNoZWNrcyBpZiBhIHJl
bmRlcmVyIGlzCiAgICAgICAgdmVydGljYWxseSBjb2luY2lkZW50IHRvIGFub3RoZXIgb25lIHVz
ZWQgYXMgcmVmZXJlbmNlIGFuZCBhIGdpdmVuCiAgICAgICAgWCBwb3NpdGlvbiwgd2hlbiBtb3Zp
bmcgdXAgYW5kIGRvd24gaW4gY2FyZXQgYnJvd3NpbmcgbW9kZS4KICAgICAgICAoV2ViQ29yZTo6
bW92ZUNhcmV0VmVydGljYWxseSk6IEFjdHVhbGx5IG1vdmUgdGhlIGNhcmV0IGZvcndhcmQKICAg
ICAgICBvciBiYWNrd2FyZCBhY3Jvc3MgZGlmZmVyZW50IGxpbmVzLCBlbnN1cmluZyB0aGUgZmlu
YWwgZGVzdGluYXRpb24KICAgICAgICBpcyBhIHJlbmRlcmVkIHZlcnRpY2FsbHkgY29pbmNpZGVu
dCB3aXRoIHRoZSBzdGFydCBwb2ludC4KICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVDYXJl
dERvd24pOiBOZXcsIGltcGxlbWVudHMgdGhlIG5ldwogICAgICAgICJNb3ZlQ2FyZXREb3duIiBj
b21tYW5kLCB1c2VkIGluIGNhcmV0IGJyb3dzaW5nIG1vZGUgb25seSwgc28gZmFyCiAgICAgICAg
YWZmZWN0aW5nIHRoZSBHVEsgcG9ydCBvbmx5LgogICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92
ZUNhcmV0RG93bkFuZE1vZGlmeVNlbGVjdGlvbik6IE5ldywgaW1wbGVtZW50cwogICAgICAgIHRo
ZSBuZXcgIk1vdmVDYXJldERvd25BbmRNb2RpZnlTZWxlY3Rpb24iIGNvbW1hbmQuCiAgICAgICAg
KFdlYkNvcmU6OmV4ZWN1dGVNb3ZlQ2FyZXRVcCk6IE5ldywgaW1wbGVtZW50cyB0aGUgbmV3CiAg
ICAgICAgIk1vdmVDYXJldFVwIiBjb21tYW5kLgogICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92
ZUNhcmV0VXBBbmRNb2RpZnlTZWxlY3Rpb24pOiBOZXcsIGltcGxlbWVudHMKICAgICAgICB0aGUg
bmV3ICJNb3ZlQ2FyZXRVcEFuZE1vZGlmeVNlbGVjdGlvbiIgY29tbWFuZC4KICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlQ29tbWFuZE1hcCk6IEFkZCB0aGUgbmV3IGNvbW1hbmRzIG5lZWRlZCBmb3Ig
dGhlCiAgICAgICAgR1RLIHBvcnQsIHJlbGF0ZWQgd2l0aCB1cC9kb3duIG1vdmVtZW50IGluIGNh
cmV0IGJyb3dzaW5nIG1vZGUuCjIwMTEtMDMtMDEgIE1hcmlvIFNhbmNoZXogUHJhZGEgIDxtc2Fu
Y2hlekBpZ2FsaWEuY29tPgoKICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCiAg
ICAgICAgW0dUS10gRWxlbWVudHMgb24gdGhlIHNhbWUgbGluZSBzaG91bGQgYmUgdHJlYXRlZCBh
cyBzdWNoIGJ5IGNhcmV0IG5hdmlnYXRpb24KICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjU1MzMKCiAgICAgICAgVXNlIHRoZSBuZXcgY29tbWFuZHMgZm9y
IG1vdmluZyB1cC9kb3duIGluIGNhcmV0IGJyb3dzaW5nIG1vZGUuCgogICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcDoKICAgICAgICAoV2ViS2l0Ojptb3ZlQ3Vyc29y
Q2FsbGJhY2spOiBSZWRlZmluZSByYXdDb21tYW5kIHRvIG9uZSBvZiB0aGUKICAgICAgICBuZXcg
Zm91ciBjb21tYW5kcyB3aGVuIGFwcHJvcHJpYXRlLgotLS0KIExheW91dFRlc3RzL0NoYW5nZUxv
ZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxMyArKwogLi4uL2NhcmV0LW1vZGUt
dmVydGljYWwtbmF2aWdhdGlvbi1leHBlY3RlZC50eHQgICAgfCAgIDUyICsrKysrKysrCiAuLi4v
c2VsZWN0aW9uL2NhcmV0LW1vZGUtdmVydGljYWwtbmF2aWdhdGlvbi5odG1sICB8ICAxMzUgKysr
KysrKysrKysrKysrKysrKysKIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwgICAyOSArKysrCiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNv
bW1hbmQuY3BwICAgICAgICAgICB8ICAxMTAgKysrKysrKysrKysrKysrLQogU291cmNlL1dlYktp
dC9ndGsvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEzICsrCiAuLi4vV2Vi
S2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwICB8ICAgMTQgKysKIDcg
ZmlsZXMgY2hhbmdlZCwgMzYyIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCiBjcmVhdGUg
bW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2VkaXRpbmcvc2VsZWN0aW9uL2Nh
cmV0LW1vZGUtdmVydGljYWwtbmF2aWdhdGlvbi1leHBlY3RlZC50eHQKIGNyZWF0ZSBtb2RlIDEw
MDY0NCBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZWRpdGluZy9zZWxlY3Rpb24vY2FyZXQtbW9k
ZS12ZXJ0aWNhbC1uYXZpZ2F0aW9uLmh0bWwKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNzMxYzQ2NS4uOGZlYzc2NSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE2IEBACisyMDExLTAzLTAxICBNYXJpbyBTYW5jaGV6IFByYWRhICA8bXNh
bmNoZXpAaWdhbGlhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBbR1RLXSBFbGVtZW50cyBvbiB0aGUgc2FtZSBsaW5lIHNob3VsZCBiZSB0cmVh
dGVkIGFzIHN1Y2ggYnkgY2FyZXQgbmF2aWdhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU1MzMKKworICAgICAgICBOZXcgbGF5b3V0IHRlc3Qg
Zm9yIGNoZWNraW5nIHRoZSBuZXcgZWRpdGluZyBjb21tYW5kcyBmb3IgbW92aW5nCisgICAgICAg
IHRoZSBjYXJldCB1cCBhbmQgZG93biB3aGVuIGluIGNhcmV0IGJyb3dzaW5nIChHVEstb25seSBz
byBmYXIpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3RrL2VkaXRpbmcvc2VsZWN0aW9uL2NhcmV0
LW1vZGUtdmVydGljYWwtbmF2aWdhdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2d0ay9lZGl0aW5nL3NlbGVjdGlvbi9jYXJldC1tb2RlLXZlcnRpY2FsLW5hdmln
YXRpb24uaHRtbDogQWRkZWQuCisKIDIwMTEtMDItMjcgIEFwYXJuYSBOYW5keWFsICA8YXBhcm5h
Lm5hbmRAd2lwcm8uY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZWRpdGluZy9zZWxlY3Rpb24vY2Fy
ZXQtbW9kZS12ZXJ0aWNhbC1uYXZpZ2F0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2d0ay9lZGl0aW5nL3NlbGVjdGlvbi9jYXJldC1tb2RlLXZlcnRpY2FsLW5hdmlnYXRp
b24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI2MGY2
YjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZWRpdGluZy9z
ZWxlY3Rpb24vY2FyZXQtbW9kZS12ZXJ0aWNhbC1uYXZpZ2F0aW9uLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDUyIEBACitFRElUSU5HIERFTEVHQVRFOiBzaG91bGRCZWdpbkVkaXRpbmdJbkRPTVJh
bmdlOnJhbmdlIGZyb20gMCBvZiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byA3IG9m
IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50CitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3
RGlkQmVnaW5FZGl0aW5nOldlYlZpZXdEaWRCZWdpbkVkaXRpbmdOb3RpZmljYXRpb24KK0VESVRJ
TkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNl
bGVjdGlvbk5vdGlmaWNhdGlvbgorRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0
ZWRET01SYW5nZTpyYW5nZSBmcm9tIDMgb2YgI3RleHQgPiBTUEFOID4gRElWID4gQk9EWSA+IEhU
TUwgPiAjZG9jdW1lbnQgdG8gMyBvZiAjdGV4dCA+IFNQQU4gPiBESVYgPiBCT0RZID4gSFRNTCA+
ICNkb2N1bWVudCB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMyBvZiAjdGV4dCA+IFAgPiBESVYgPiBC
T0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAzIG9mICN0ZXh0ID4gUCA+IERJViA+IEJPRFkgPiBI
VE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0
aWxsU2VsZWN0aW5nOkZBTFNFCitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2Vs
ZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KK0VESVRJTkcgREVM
RUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSAzIG9mICN0ZXh0
ID4gUCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDMgb2YgI3RleHQgPiBQID4g
RElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDUgb2Yg
RElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gNSBvZiBESVYgPiBCT0RZID4gSFRNTCA+
ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNl
bGVjdGluZzpGQUxTRQorRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlv
bjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCitFRElUSU5HIERFTEVHQVRF
OiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20gNSBvZiBESVYgPiBCT0RZ
ID4gSFRNTCA+ICNkb2N1bWVudCB0byA1IG9mIERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50
IHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIFAgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1
bWVudCB0byAwIG9mIFAgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpO
U1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQorRURJVElO
RyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2Vs
ZWN0aW9uTm90aWZpY2F0aW9uCitFRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3Rl
ZERPTVJhbmdlOnJhbmdlIGZyb20gMyBvZiAjdGV4dCA+IFAgPiBESVYgPiBCT0RZID4gSFRNTCA+
ICNkb2N1bWVudCB0byAzIG9mICN0ZXh0ID4gUCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3Vt
ZW50IHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAzIG9mICN0ZXh0ID4gU1BBTiA+IERJViA+IEJPRFkg
PiBIVE1MID4gI2RvY3VtZW50IHRvIDMgb2YgI3RleHQgPiBTUEFOID4gRElWID4gQk9EWSA+IEhU
TUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3Rp
bGxTZWxlY3Rpbmc6RkFMU0UKK0VESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxl
Y3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgorRURJVElORyBERUxF
R0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9tIDMgb2YgI3RleHQg
PiBTUEFOID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMyBvZiAjdGV4dCA+IFNQ
QU4gPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0b0RPTVJhbmdlOnJhbmdlIGZyb20g
MCBvZiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAwIG9mIERJViA+IEJPRFkgPiBI
VE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0
aWxsU2VsZWN0aW5nOkZBTFNFCitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2Vs
ZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KK0NvbC4gSGVhZGVy
IDEJQ29sLiBIZWFkZXIgMgorUm93IEhlYWRlciAxCU9uZQlUd28KK1JvdyBIZWFkZXIgMglUaHJl
ZQlGb3VyCitBIHBhcmFncmFwaCBiZXR3ZWVuIGEgOS1jZWxsIHRhYmxlIGFuZCBhIGxpc3Qgb2Yg
dGhyZWUgaXRlbXMuCisKK0NhdERvZ0VsZXBoYW50CistIEZvbworLSBCYXIKKworCitUaGlzIHRl
c3RzIHZlcnRpY2FsIGNhcmV0IG5hdmlnYXRpb24gd29ya3MgYXMgZXhwZWN0ZWQgYWNyb3NzIHRh
YmxlcyBhbmQgZmxvYXRpbmcgZWxlbWVudHMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworCitQQVNTIGdldFNlbGVjdGlvbigpLmFuY2hvck5vZGUubm9kZVZhbHVlIGlzICdDb2wuIEhl
YWRlciAxJworUEFTUyBnZXRTZWxlY3Rpb24oKS5iYXNlT2Zmc2V0IGlzIDUKK1BBU1MgZ2V0U2Vs
ZWN0aW9uKCkuYW5jaG9yTm9kZS5ub2RlVmFsdWUgaXMgJ09uZScKK1BBU1MgZ2V0U2VsZWN0aW9u
KCkuYmFzZU9mZnNldCBpcyAzCitQQVNTIGdldFNlbGVjdGlvbigpLmFuY2hvck5vZGUubm9kZVZh
bHVlIGlzICdUaHJlZScKK1BBU1MgZ2V0U2VsZWN0aW9uKCkuYmFzZU9mZnNldCBpcyA1CitQQVNT
IGdldFNlbGVjdGlvbigpLmFuY2hvck5vZGUubm9kZVZhbHVlIGlzICdBIHBhcmFncmFwaCBiZXR3
ZWVuIGEgOS1jZWxsIHRhYmxlIGFuZCBhIGxpc3Qgb2YgdGhyZWUgaXRlbXMuJworUEFTUyBnZXRT
ZWxlY3Rpb24oKS5iYXNlT2Zmc2V0IGlzIDYxCitQQVNTIGdldFNlbGVjdGlvbigpLmFuY2hvck5v
ZGUubm9kZVZhbHVlIGlzICdFbGVwaGFudCcKK1BBU1MgZ2V0U2VsZWN0aW9uKCkuYmFzZU9mZnNl
dCBpcyAwCitQQVNTIGdldFNlbGVjdGlvbigpLmFuY2hvck5vZGUubm9kZVZhbHVlIGlzICdSb3cg
SGVhZGVyIDInCitQQVNTIGdldFNlbGVjdGlvbigpLmJhc2VPZmZzZXQgaXMgNgorUEFTUyByYW5n
ZS5zdGFydENvbnRhaW5lci5ub2RlVmFsdWUgaXMgJ1JvdyBIZWFkZXIgMScKK1BBU1MgZ2V0U2Vs
ZWN0aW9uKCkuYmFzZU9mZnNldCBpcyA2CitQQVNTIHJhbmdlLmVuZENvbnRhaW5lci5ub2RlVmFs
dWUgaXMgJ1JvdyBIZWFkZXIgMicKK1BBU1MgZ2V0U2VsZWN0aW9uKCkuZXh0ZW50T2Zmc2V0IGlz
IDYKK1BBU1MgcmFuZ2Uuc3RhcnRDb250YWluZXIubm9kZVZhbHVlIGlzICdSb3cgSGVhZGVyIDIn
CitQQVNTIGdldFNlbGVjdGlvbigpLmJhc2VPZmZzZXQgaXMgNgorUEFTUyByYW5nZS5lbmRDb250
YWluZXIubm9kZVZhbHVlIGlzICdBIHBhcmFncmFwaCBiZXR3ZWVuIGEgOS1jZWxsIHRhYmxlIGFu
ZCBhIGxpc3Qgb2YgdGhyZWUgaXRlbXMuJworUEFTUyBnZXRTZWxlY3Rpb24oKS5leHRlbnRPZmZz
ZXQgaXMgMjAKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZWRpdGluZy9zZWxlY3Rp
b24vY2FyZXQtbW9kZS12ZXJ0aWNhbC1uYXZpZ2F0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9ndGsvZWRpdGluZy9zZWxlY3Rpb24vY2FyZXQtbW9kZS12ZXJ0aWNhbC1uYXZpZ2F0aW9u
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTJjZDg3ZQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9lZGl0aW5nL3NlbGVjdGlvbi9j
YXJldC1tb2RlLXZlcnRpY2FsLW5hdmlnYXRpb24uaHRtbApAQCAtMCwwICsxLDEzNSBAQAorPCFE
T0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVh
ZD4KKzxzdHlsZT4KKyNmbG9hdGluZy1saXN0IHsKKyAgbGlzdC1zdHlsZTogbm9uZTsKKyAgd2lk
dGg6IDEwMCU7Cit9CisKKyNmbG9hdGluZy1saXN0IGxpIHsKKyAgZmxvYXQ6IGxlZnQ7CisgIHBh
ZGRpbmc6IDEwcHg7Cit9Cis8L3N0eWxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIu
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0PgordmFyIHN1
Y2Nlc3NmdWxseVBhcnNlZCA9IGZhbHNlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uL2VkaXRpbmcuanMiIGxhbmd1YWdlPSJKYXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L0ph
dmFTY3JpcHQiID48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IGlkPSJib2R5Ij4KKzx0YWJsZSB3
aWR0aD0iMTAwJSI+CisgIDx0cj48dGg+PC90aD48dGggaWQ9InN0YXJ0V2l0aENhcmV0QnJvd3Np
bmciPkNvbC4gSGVhZGVyIDE8L3RoPjx0aD5Db2wuIEhlYWRlciAyPC90aD48L3RyPgorICA8dHI+
PHRoPlJvdyBIZWFkZXIgMTwvdGg+PHRkPk9uZTwvdGQ+PHRkPlR3bzwvdGQ+PC90cj4KKyAgPHRy
Pjx0aD5Sb3cgSGVhZGVyIDI8L3RoPjx0ZD5UaHJlZTwvdGQ+PHRkPkZvdXI8L3RkPjwvdHI+Cis8
L3RhYmxlPgorPHAgaWQ9InBhcmFncmFwaCI+QSBwYXJhZ3JhcGggYmV0d2VlbiBhIDktY2VsbCB0
YWJsZSBhbmQgYSBsaXN0IG9mIHRocmVlIGl0ZW1zLjwvcD4KKzx1bCBpZD0iZmxvYXRpbmctbGlz
dCI+CisgIDxsaT5DYXQ8L2xpPgorICA8bGk+RG9nPC9saT4KKyAgPGxpPkVsZXBoYW50PC9saT4K
KzwvdWw+Cis8YnIgY2xlYXI9ImFsbCIgLz4KKzxkaXYgY29udGVudGVkaXRhYmxlPgorICA8c3Bh
biBpZD0ic3RhcnRXaXRob3V0Q2FyZXRCcm93c2luZyI+LSBGb288L3NwYW4+PGJyIC8+CisgIDxw
Pi0gQmFyPC9wPjxiciAvPgorPC9kaXY+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHZl
cnRpY2FsIGNhcmV0IG5hdmlnYXRpb24gd29ya3MgYXMgZXhwZWN0ZWQgYWNyb3NzIHRhYmxlcyBh
bmQgZmxvYXRpbmcgZWxlbWVudHMuIik7CisKK2Z1bmN0aW9uIGNoZWNrV2l0aENhcmV0QnJvd3Np
bmcoKSB7CisKKyAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJL
aXRFbmFibGVDYXJldEJyb3dzaW5nIiwgdHJ1ZSk7CisKKyAgLy8gQ2hlY2sgZG93bi91cCBhcnJv
d3MuCisKKyAgLy8gU2V0IGNhcmV0IGluIHRoZSBzZWNvbmQgY2VsbCBvZiB0aGUgdGFibGUuCisg
IHN0YXJ0UG9pbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3RhcnRXaXRoQ2FyZXRCcm93
c2luZyIpOworICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuc2V0UG9zaXRpb24oc3RhcnRQb2ludC5j
aGlsZE5vZGVzLml0ZW0oMCksIDUpOworICBzaG91bGRCZSgiZ2V0U2VsZWN0aW9uKCkuYW5jaG9y
Tm9kZS5ub2RlVmFsdWUiLCAiJ0NvbC4gSGVhZGVyIDEnIik7CisgIHNob3VsZEJlKCJnZXRTZWxl
Y3Rpb24oKS5iYXNlT2Zmc2V0IiwgIjUiKTsKKworICAvLyBNb3ZlIHRoZSBjYXJldCBkb3duIHRv
IHRoZSBzZWNvbmQgcm93IG9mIHRoZSB0YWJsZS4KKyAgZXZlbnRTZW5kZXIua2V5RG93bigiZG93
bkFycm93Iik7CisgIHNob3VsZEJlKCJnZXRTZWxlY3Rpb24oKS5hbmNob3JOb2RlLm5vZGVWYWx1
ZSIsICInT25lJyIpOworICBzaG91bGRCZSgiZ2V0U2VsZWN0aW9uKCkuYmFzZU9mZnNldCIsICIz
Iik7CisKKyAgLy8gTW92ZSB0aGUgY2FyZXQgZG93biB0byB0aGUgdGhpcmQgcm93IG9mIHRoZSB0
YWJsZS4KKyAgZXZlbnRTZW5kZXIua2V5RG93bigiZG93bkFycm93Iik7CisgIHNob3VsZEJlKCJn
ZXRTZWxlY3Rpb24oKS5hbmNob3JOb2RlLm5vZGVWYWx1ZSIsICInVGhyZWUnIik7CisgIHNob3Vs
ZEJlKCJnZXRTZWxlY3Rpb24oKS5iYXNlT2Zmc2V0IiwgIjUiKTsKKworICAvLyBNb3ZlIHRoZSBj
YXJldCBkb3duIHRvIHBhcmFncmFwaC4KKyAgZXZlbnRTZW5kZXIua2V5RG93bigiZG93bkFycm93
Iik7CisgIHNob3VsZEJlKCJnZXRTZWxlY3Rpb24oKS5hbmNob3JOb2RlLm5vZGVWYWx1ZSIsICIn
QSBwYXJhZ3JhcGggYmV0d2VlbiBhIDktY2VsbCB0YWJsZSBhbmQgYSBsaXN0IG9mIHRocmVlIGl0
ZW1zLiciKTsKKyAgc2hvdWxkQmUoImdldFNlbGVjdGlvbigpLmJhc2VPZmZzZXQiLCAiNjEiKTsK
KworICAvLyBNb3ZlIHRoZSBjYXJldCBkb3duIHRvIHRoZSBsaXN0IG9mIGl0ZW1zLgorICBwYXJh
Z3JhcGggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGFyYWdyYXBoIik7CisgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5zZXRQb3NpdGlvbihwYXJhZ3JhcGguY2hpbGROb2Rlcy5pdGVtKDApLCAy
MCk7CisgIGV2ZW50U2VuZGVyLmtleURvd24oImRvd25BcnJvdyIpOworICBzaG91bGRCZSgiZ2V0
U2VsZWN0aW9uKCkuYW5jaG9yTm9kZS5ub2RlVmFsdWUiLCAiJ0VsZXBoYW50JyIpOworICBzaG91
bGRCZSgiZ2V0U2VsZWN0aW9uKCkuYmFzZU9mZnNldCIsICIwIik7CisKKyAgLy8gTW92ZSB0aGUg
Y2FyZXQgdXAgYSBjb3VwbGUgb2YgbGluZXMuCisgIGV2ZW50U2VuZGVyLmtleURvd24oInVwQXJy
b3ciKTsKKyAgZXZlbnRTZW5kZXIua2V5RG93bigidXBBcnJvdyIpOworICBzaG91bGRCZSgiZ2V0
U2VsZWN0aW9uKCkuYW5jaG9yTm9kZS5ub2RlVmFsdWUiLCAiJ1JvdyBIZWFkZXIgMiciKTsKKyAg
c2hvdWxkQmUoImdldFNlbGVjdGlvbigpLmJhc2VPZmZzZXQiLCAiNiIpOworCisgIC8vIENoZWNr
IHVwL2Rvd24gYXJyb3dzICsgU2hpZnQuCisKKyAgLy8gU2VsZWN0aW9uIGluc2lkZSB0aGUgdGFi
bGUuCisgIGV2ZW50U2VuZGVyLmtleURvd24oInVwQXJyb3ciLCBbInNoaWZ0S2V5Il0pOworICBy
YW5nZSA9IGdldFNlbGVjdGlvbigpLmdldFJhbmdlQXQoMCk7CisgIHNob3VsZEJlKCJyYW5nZS5z
dGFydENvbnRhaW5lci5ub2RlVmFsdWUiLCAiJ1JvdyBIZWFkZXIgMSciKTsKKyAgc2hvdWxkQmUo
ImdldFNlbGVjdGlvbigpLmJhc2VPZmZzZXQiLCAiNiIpOworICBzaG91bGRCZSgicmFuZ2UuZW5k
Q29udGFpbmVyLm5vZGVWYWx1ZSIsICInUm93IEhlYWRlciAyJyIpOworICBzaG91bGRCZSgiZ2V0
U2VsZWN0aW9uKCkuZXh0ZW50T2Zmc2V0IiwgIjYiKTsKKworICAvLyBTZWxlY3Rpb24gYWNyb3Nz
IHRoZSB0YWJsZSBhbmQgdGhlIHBhcmFncmFwaC4KKyAgZXZlbnRTZW5kZXIua2V5RG93bigiZG93
bkFycm93IiwgWyJzaGlmdEtleSJdKTsKKyAgZXZlbnRTZW5kZXIua2V5RG93bigiZG93bkFycm93
IiwgWyJzaGlmdEtleSJdKTsKKyAgcmFuZ2UgPSBnZXRTZWxlY3Rpb24oKS5nZXRSYW5nZUF0KDAp
OworICBzaG91bGRCZSgicmFuZ2Uuc3RhcnRDb250YWluZXIubm9kZVZhbHVlIiwgIidSb3cgSGVh
ZGVyIDInIik7CisgIHNob3VsZEJlKCJnZXRTZWxlY3Rpb24oKS5iYXNlT2Zmc2V0IiwgIjYiKTsK
KyAgc2hvdWxkQmUoInJhbmdlLmVuZENvbnRhaW5lci5ub2RlVmFsdWUiLCAiJ0EgcGFyYWdyYXBo
IGJldHdlZW4gYSA5LWNlbGwgdGFibGUgYW5kIGEgbGlzdCBvZiB0aHJlZSBpdGVtcy4nIik7Cisg
IHNob3VsZEJlKCJnZXRTZWxlY3Rpb24oKS5leHRlbnRPZmZzZXQiLCAiMjAiKTsKK30KKworZnVu
Y3Rpb24gY2hlY2tXaXRob3V0Q2FyZXRCcm93c2luZygpIHsKKyAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEVkaXRpbmdDYWxsYmFja3MoKTsKKyAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJp
ZGVQcmVmZXJlbmNlKCJXZWJLaXRFbmFibGVDYXJldEJyb3dzaW5nIiwgZmFsc2UpOworCisgIC8v
IENoZWNrIE1vdmVEb3duIC8gTW92ZVVwIGNvbW1hbmRzLgorCisgIC8vIFNldCBjYXJldCBpbiB0
aGUgc2Vjb25kIGNlbGwgb2YgdGhlIHRhYmxlLgorICBzdGFydFBvaW50ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInN0YXJ0V2l0aG91dENhcmV0QnJvd3NpbmciKTsKKyAgd2luZG93LmdldFNl
bGVjdGlvbigpLnNldFBvc2l0aW9uKHN0YXJ0UG9pbnQuY2hpbGROb2Rlcy5pdGVtKDApLCAzKTsK
KworICAvLyBNb3ZlIGRvd24gYW5kIHVwIGFjcm9zcyB0aGUgZGlmZmVyZW50IGxpbmVzIGluc2lk
ZSB0aGUgZWRpdGFibGUgY29udGVudC4KKyAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZXhlY0NvbW1h
bmQoIk1vdmVEb3duIik7CisgIGxheW91dFRlc3RDb250cm9sbGVyLmV4ZWNDb21tYW5kKCJNb3Zl
RG93biIpOworICBsYXlvdXRUZXN0Q29udHJvbGxlci5leGVjQ29tbWFuZCgiTW92ZVVwIik7Cisg
IGxheW91dFRlc3RDb250cm9sbGVyLmV4ZWNDb21tYW5kKCJNb3ZlVXAiKTsKKyAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZXhlY0NvbW1hbmQoIk1vdmVVcCIpOworfQorCitpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKSB7CisgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
KworICAvLyBXZSBuZWVkIHRvIGNoZWNrIHdpdGggYW5kIHdpdGhvdXQgY2FyZXQgYnJvd3Npbmcg
YWN0aXZhdGVkIHRvCisgIC8vIGVuc3VyZSBubyBBUEkgYnJlYWthZ2UgaGFzIGhhcHBlbmVkIHdp
dGggdGhlIE1vdmVVcC9Eb3duIGNvbW1hbmRzLgorICBjaGVja1dpdGhDYXJldEJyb3dzaW5nKCk7
CisgIGNoZWNrV2l0aG91dENhcmV0QnJvd3NpbmcoKTsKK30KKworc3VjY2Vzc2Z1bGx5UGFyc2Vk
ID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggOTVkNzUyNS4uNmUzYzMxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisy
MDExLTAzLTAxICBNYXJpbyBTYW5jaGV6IFByYWRhICA8bXNhbmNoZXpAaWdhbGlhLmNvbT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbR1RLXSBFbGVt
ZW50cyBvbiB0aGUgc2FtZSBsaW5lIHNob3VsZCBiZSB0cmVhdGVkIGFzIHN1Y2ggYnkgY2FyZXQg
bmF2aWdhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjU1MzMKKworICAgICAgICBFbnN1cmUgdGhlIGNhcmV0IHdpbGwgbW92ZSB0byBhIHZlcnRp
Y2FsbHkgY29pbmNpZGVudCBwb3NpdGlvbgorICAgICAgICB3aGVuIG1vdmluZyB1cCBhbmQgZG93
biBhY3Jvc3MgZGlmZmVyZW50IGxpbmVzLgorCisgICAgICAgICogZWRpdGluZy9FZGl0b3JDb21t
YW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzVmVydGljYWxseUNvaW5jaWRlbnQpOiBOZXcs
IGNoZWNrcyBpZiBhIHJlbmRlcmVyIGlzCisgICAgICAgIHZlcnRpY2FsbHkgY29pbmNpZGVudCB0
byBhbm90aGVyIG9uZSB1c2VkIGFzIHJlZmVyZW5jZSBhbmQgYSBnaXZlbgorICAgICAgICBYIHBv
c2l0aW9uLCB3aGVuIG1vdmluZyB1cCBhbmQgZG93biBpbiBjYXJldCBicm93c2luZyBtb2RlLgor
ICAgICAgICAoV2ViQ29yZTo6bW92ZUNhcmV0VmVydGljYWxseSk6IEFjdHVhbGx5IG1vdmUgdGhl
IGNhcmV0IGZvcndhcmQKKyAgICAgICAgb3IgYmFja3dhcmQgYWNyb3NzIGRpZmZlcmVudCBsaW5l
cywgZW5zdXJpbmcgdGhlIGZpbmFsIGRlc3RpbmF0aW9uCisgICAgICAgIGlzIGEgcmVuZGVyZWQg
dmVydGljYWxseSBjb2luY2lkZW50IHdpdGggdGhlIHN0YXJ0IHBvaW50LgorICAgICAgICAoV2Vi
Q29yZTo6ZXhlY3V0ZU1vdmVDYXJldERvd24pOiBOZXcsIGltcGxlbWVudHMgdGhlIG5ldworICAg
ICAgICAiTW92ZUNhcmV0RG93biIgY29tbWFuZCwgdXNlZCBpbiBjYXJldCBicm93c2luZyBtb2Rl
IG9ubHksIHNvIGZhcgorICAgICAgICBhZmZlY3RpbmcgdGhlIEdUSyBwb3J0IG9ubHkuCisgICAg
ICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZUNhcmV0RG93bkFuZE1vZGlmeVNlbGVjdGlvbik6IE5l
dywgaW1wbGVtZW50cworICAgICAgICB0aGUgbmV3ICJNb3ZlQ2FyZXREb3duQW5kTW9kaWZ5U2Vs
ZWN0aW9uIiBjb21tYW5kLgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVDYXJldFVwKTog
TmV3LCBpbXBsZW1lbnRzIHRoZSBuZXcKKyAgICAgICAgIk1vdmVDYXJldFVwIiBjb21tYW5kLgor
ICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVDYXJldFVwQW5kTW9kaWZ5U2VsZWN0aW9uKTog
TmV3LCBpbXBsZW1lbnRzCisgICAgICAgIHRoZSBuZXcgIk1vdmVDYXJldFVwQW5kTW9kaWZ5U2Vs
ZWN0aW9uIiBjb21tYW5kLgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQ29tbWFuZE1hcCk6IEFk
ZCB0aGUgbmV3IGNvbW1hbmRzIG5lZWRlZCBmb3IgdGhlCisgICAgICAgIEdUSyBwb3J0LCByZWxh
dGVkIHdpdGggdXAvZG93biBtb3ZlbWVudCBpbiBjYXJldCBicm93c2luZyBtb2RlLgorCiAyMDEx
LTAyLTI3ICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQub3JnPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3JDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29t
bWFuZC5jcHAKaW5kZXggYzY0NmUyZC4uYjkzY2YzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvckNvbW1hbmQuY3BwCkBAIC00OSw2ICs0OSw3IEBACiAjaW5jbHVkZSAiSW5zZXJ0TGlz
dENvbW1hbmQuaCIKICNpbmNsdWRlICJLaWxsUmluZy5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKKyNp
bmNsdWRlICJSZW5kZXJCbG9jay5oIgogI2luY2x1ZGUgIlJlbmRlckJveC5oIgogI2luY2x1ZGUg
IlJlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmgiCiAjaW5jbHVkZSAiU2Nyb2xsYmFyLmgiCkBAIC02
MTUsNiArNjE2LDkzIEBAIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlQmFja3dhcmRBbmRNb2RpZnlT
ZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKK3N0YXRpYyBib29sIGlzVmVydGljYWxseUNvaW5jaWRlbnQoVmlzaWJsZVBvc2l0aW9u
IG9yaWdpbiwgVmlzaWJsZVBvc2l0aW9uIGNhbmRpZGF0ZSwgaW50IG9yaWdpblgsIFNlbGVjdGlv
bkRpcmVjdGlvbiBkaXJlY3Rpb24pCit7CisgICAgaWYgKG9yaWdpbi5pc051bGwoKSB8fCBjYW5k
aWRhdGUuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFJlbmRlck9iamVj
dCogb3JpZ2luUmVuZGVyZXI7CisgICAgSW50UmVjdCBvcmlnaW5SZWN0ID0gb3JpZ2luLmxvY2Fs
Q2FyZXRSZWN0KG9yaWdpblJlbmRlcmVyKTsKKyAgICBpZiAoIW9yaWdpblJlbmRlcmVyKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBSZW5kZXJCbG9jayogb3JpZ2luQmxvY2sgPSBvcmln
aW5SZW5kZXJlci0+Y29udGFpbmluZ0Jsb2NrKCk7CisgICAgaWYgKCFvcmlnaW5CbG9jaykKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIEZsb2F0UG9pbnQgb3JpZ2luQWJzUG9zID0gb3JpZ2lu
QmxvY2stPmxvY2FsVG9BYnNvbHV0ZShGbG9hdFBvaW50KCkpOworCisgICAgUmVuZGVyT2JqZWN0
KiBjYW5kaWRhdGVSZW5kZXJlcjsKKyAgICBJbnRSZWN0IGNhbmRpZGF0ZVJlY3QgPSBjYW5kaWRh
dGUubG9jYWxDYXJldFJlY3QoY2FuZGlkYXRlUmVuZGVyZXIpOworICAgIGlmICghY2FuZGlkYXRl
UmVuZGVyZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFJlbmRlckJsb2NrKiBjYW5k
aWRhdGVCbG9jayA9IGNhbmRpZGF0ZVJlbmRlcmVyLT5jb250YWluaW5nQmxvY2soKTsKKyAgICBp
ZiAoIWNhbmRpZGF0ZUJsb2NrKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgRmxvYXRQb2lu
dCBjYW5kaWRhdGVBYnNQb3MgPSBjYW5kaWRhdGVCbG9jay0+bG9jYWxUb0Fic29sdXRlKEZsb2F0
UG9pbnQoKSk7CisKKyAgICAvLyBDYW5kaWRhdGUgY2FyZXQgbXVzdCBiZSBpbiBhIGhpZ2hlciBw
b3NpdGlvbiB0aGFuIG9yaWdpbiBvbmUgd2hlbiBnb2luZyBiYWNrd2FyZC4KKyAgICBpZiAoZGly
ZWN0aW9uID09IERpcmVjdGlvbkJhY2t3YXJkCisgICAgICAgICYmIGNhbmRpZGF0ZUFic1Bvcy55
KCkgKyBjYW5kaWRhdGVSZWN0LnkoKSA+PSBvcmlnaW5BYnNQb3MueSgpICsgb3JpZ2luUmVjdC55
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIENhbmRpZGF0ZSBjYXJldCBtdXN0
IGJlIGluIGEgbG93ZXIgcG9zaXRpb24gdGhhbiBvcmlnaW4gb25lIHdoZW4gZ29pbmcgZm9yd2Fy
ZC4KKyAgICBpZiAoZGlyZWN0aW9uID09IERpcmVjdGlvbkZvcndhcmQKKyAgICAgICAgJiYgY2Fu
ZGlkYXRlQWJzUG9zLnkoKSArIGNhbmRpZGF0ZVJlY3QueSgpICsgY2FuZGlkYXRlUmVjdC5oZWln
aHQoKSA8PSBvcmlnaW5BYnNQb3MueSgpICsgb3JpZ2luUmVjdC55KCkgKyBvcmlnaW5SZWN0Lmhl
aWdodCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBDYW5kaWRhdGUgbXVzdCBi
ZSBpbiB0aGUgc2FtZSB2ZXJ0aWNhbCBzcGFjZSB0aGFuIG9yaWdpbi4KKyAgICBpZiAoY2FuZGlk
YXRlQWJzUG9zLngoKSA+IG9yaWdpblggfHwgb3JpZ2luWCA+IGNhbmRpZGF0ZUFic1Bvcy54KCkg
KyBjYW5kaWRhdGVCbG9jay0+d2lkdGgoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
cmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBib29sIG1vdmVDYXJldFZlcnRpY2FsbHkoRnJhbWUq
IGZyYW1lLCBXZWJDb3JlOjpTZWxlY3Rpb25Db250cm9sbGVyOjpFQWx0ZXJhdGlvbiBhbHRlcmF0
aW9uLCBTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uKQoreworICAgIFNlbGVjdGlvbkNvbnRy
b2xsZXIqIHNlbGVjdGlvbiA9IGZyYW1lLT5zZWxlY3Rpb24oKTsKKyAgICBQb3NpdGlvbiBwb3Mg
PSBzZWxlY3Rpb24tPmV4dGVudCgpOworICAgIE5vZGUqIG9yaWdpbk5vZGUgPSBwb3MuY29udGFp
bmVyTm9kZSgpOworICAgIGlmICghb3JpZ2luTm9kZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgUmVuZGVyT2JqZWN0KiBvcmlnaW5SZW5kZXJlciA9IG9yaWdpbk5vZGUtPnJlbmRlcmVy
KCk7CisgICAgaWYgKCFvcmlnaW5SZW5kZXJlcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgLy8gR2V0IHRoZSBhYnNvbHV0ZSBYIGNvb3JkaW5hdGUgZm9yIGZ1cnRoZXIgY29tcGFyaXNv
bnMuCisgICAgVmlzaWJsZVBvc2l0aW9uIG9yaWdpblZpc2libGVQb3NpdGlvbihwb3MsIHNlbGVj
dGlvbi0+YWZmaW5pdHkoKSk7CisgICAgaW50IHggPSBvcmlnaW5WaXNpYmxlUG9zaXRpb24uaXNO
b3ROdWxsKCkgPyBvcmlnaW5WaXNpYmxlUG9zaXRpb24ueE9mZnNldEZvclZlcnRpY2FsTmF2aWdh
dGlvbigpIDogMDsKKworICAgIC8vIFJlcGVhdCBjb21tYW5kIHVudGlsIHJlYWNoaW5nIGEgdmFs
aWQgZGVzdGluYXRpb24uCisgICAgUG9zaXRpb24gcHJldmlvdXNQb3NpdGlvbiA9IHBvczsKKyAg
ICB3aGlsZSAoc2VsZWN0aW9uLT5tb2RpZnkoYWx0ZXJhdGlvbiwgZGlyZWN0aW9uLCBMaW5lR3Jh
bnVsYXJpdHksIHRydWUpKSB7CisgICAgICAgIFBvc2l0aW9uIGN1cnJlbnRQb3NpdGlvbiA9IHNl
bGVjdGlvbi0+ZXh0ZW50KCk7CisKKyAgICAgICAgLy8gRG9uJ3Qga2VlcCBsb29waW5nIGlmIG5l
dyBzZWxlY3Rpb24gaGFzIG5vdCBjaGFuZ2VkLgorICAgICAgICBpZiAoY3VycmVudFBvc2l0aW9u
ID09IHByZXZpb3VzUG9zaXRpb24pCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAg
ICAgVmlzaWJsZVBvc2l0aW9uIGN1cnJlbnRWaXNpYmxlUG9zaXRpb24oY3VycmVudFBvc2l0aW9u
LCBzZWxlY3Rpb24tPmFmZmluaXR5KCkpOworICAgICAgICBpZiAoaXNWZXJ0aWNhbGx5Q29pbmNp
ZGVudChvcmlnaW5WaXNpYmxlUG9zaXRpb24sIGN1cnJlbnRWaXNpYmxlUG9zaXRpb24sIHgsIGRp
cmVjdGlvbikpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICBwcmV2aW91c1Bv
c2l0aW9uID0gY3VycmVudFBvc2l0aW9uOworICAgIH07CisKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK3N0YXRpYyBib29sIGV4ZWN1dGVNb3ZlQ2FyZXREb3duKEZyYW1lKiBmcmFtZSwgRXZlbnQq
LCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQoreworICAgIHJldHVybiBtb3Zl
Q2FyZXRWZXJ0aWNhbGx5KGZyYW1lLCBTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uTW92
ZSwgRGlyZWN0aW9uRm9yd2FyZCk7Cit9CisKK3N0YXRpYyBib29sIGV4ZWN1dGVNb3ZlQ2FyZXRE
b3duQW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5k
U291cmNlLCBjb25zdCBTdHJpbmcmKQoreworICAgIHJldHVybiBtb3ZlQ2FyZXRWZXJ0aWNhbGx5
KGZyYW1lLCBTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kLCBEaXJlY3Rpb25G
b3J3YXJkKTsKK30KKwogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVEb3duKEZyYW1lKiBmcmFtZSwg
RXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewogICAgIHJldHVy
biBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0
aW9uTW92ZSwgRGlyZWN0aW9uRm9yd2FyZCwgTGluZUdyYW51bGFyaXR5LCB0cnVlKTsKQEAgLTgw
MCw2ICs4ODgsMTYgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVQYXJhZ3JhcGhGb3J3YXJkQW5k
TW9kaWZ5U2VsZWN0aW9uKEZyYW1lKiBmcmFtZSwgRXZlbnQqLAogICAgIHJldHVybiB0cnVlOwog
fQogCitzdGF0aWMgYm9vbCBleGVjdXRlTW92ZUNhcmV0VXAoRnJhbWUqIGZyYW1lLCBFdmVudCos
IEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCit7CisgICAgcmV0dXJuIG1vdmVD
YXJldFZlcnRpY2FsbHkoZnJhbWUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3Zl
LCBEaXJlY3Rpb25CYWNrd2FyZCk7Cit9CisKK3N0YXRpYyBib29sIGV4ZWN1dGVNb3ZlQ2FyZXRV
cEFuZE1vZGlmeVNlbGVjdGlvbihGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNv
dXJjZSwgY29uc3QgU3RyaW5nJikKK3sKKyAgICByZXR1cm4gbW92ZUNhcmV0VmVydGljYWxseShm
cmFtZSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwgRGlyZWN0aW9uQmFj
a3dhcmQpOworfQorCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVVwKEZyYW1lKiBmcmFtZSwgRXZl
bnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewogICAgIHJldHVybiBm
cmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9u
TW92ZSwgRGlyZWN0aW9uQmFja3dhcmQsIExpbmVHcmFudWxhcml0eSwgdHJ1ZSk7CkBAIC0xNDU2
LDggKzE1NTQsMTAgQEAgc3RhdGljIGNvbnN0IENvbW1hbmRNYXAmIGNyZWF0ZUNvbW1hbmRNYXAo
KQogICAgICAgICB7ICJNYWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25SaWdodFRvTGVmdCIsIHsgZXhl
Y3V0ZU1ha2VUZXh0V3JpdGluZ0RpcmVjdGlvblJpZ2h0VG9MZWZ0LCBzdXBwb3J0ZWRGcm9tTWVu
dU9yS2V5QmluZGluZywgZW5hYmxlZEluUmljaGx5RWRpdGFibGVUZXh0LCBzdGF0ZVRleHRXcml0
aW5nRGlyZWN0aW9uUmlnaHRUb0xlZnQsIHZhbHVlTnVsbCwgbm90VGV4dEluc2VydGlvbiwgZG9O
b3RBbGxvd0V4ZWN1dGlvbldoZW5EaXNhYmxlZCB9IH0sCiAgICAgICAgIHsgIk1vdmVCYWNrd2Fy
ZCIsIHsgZXhlY3V0ZU1vdmVCYWNrd2FyZCwgc3VwcG9ydGVkRnJvbU1lbnVPcktleUJpbmRpbmcs
IGVuYWJsZWRJbkVkaXRhYmxlVGV4dE9yQ2FyZXRCcm93c2luZywgc3RhdGVOb25lLCB2YWx1ZU51
bGwsIG5vdFRleHRJbnNlcnRpb24sIGRvTm90QWxsb3dFeGVjdXRpb25XaGVuRGlzYWJsZWQgfSB9
LAogICAgICAgICB7ICJNb3ZlQmFja3dhcmRBbmRNb2RpZnlTZWxlY3Rpb24iLCB7IGV4ZWN1dGVN
b3ZlQmFja3dhcmRBbmRNb2RpZnlTZWxlY3Rpb24sIHN1cHBvcnRlZEZyb21NZW51T3JLZXlCaW5k
aW5nLCBlbmFibGVkVmlzaWJsZVNlbGVjdGlvbk9yQ2FyZXRCcm93c2luZywgc3RhdGVOb25lLCB2
YWx1ZU51bGwsIG5vdFRleHRJbnNlcnRpb24sIGRvTm90QWxsb3dFeGVjdXRpb25XaGVuRGlzYWJs
ZWQgfSB9LAotICAgICAgICB7ICJNb3ZlRG93biIsIHsgZXhlY3V0ZU1vdmVEb3duLCBzdXBwb3J0
ZWRGcm9tTWVudU9yS2V5QmluZGluZywgZW5hYmxlZEluRWRpdGFibGVUZXh0T3JDYXJldEJyb3dz
aW5nLCBzdGF0ZU5vbmUsIHZhbHVlTnVsbCwgbm90VGV4dEluc2VydGlvbiwgZG9Ob3RBbGxvd0V4
ZWN1dGlvbldoZW5EaXNhYmxlZCB9IH0sCi0gICAgICAgIHsgIk1vdmVEb3duQW5kTW9kaWZ5U2Vs
ZWN0aW9uIiwgeyBleGVjdXRlTW92ZURvd25BbmRNb2RpZnlTZWxlY3Rpb24sIHN1cHBvcnRlZEZy
b21NZW51T3JLZXlCaW5kaW5nLCBlbmFibGVkVmlzaWJsZVNlbGVjdGlvbk9yQ2FyZXRCcm93c2lu
Zywgc3RhdGVOb25lLCB2YWx1ZU51bGwsIG5vdFRleHRJbnNlcnRpb24sIGRvTm90QWxsb3dFeGVj
dXRpb25XaGVuRGlzYWJsZWQgfSB9LAorICAgICAgICB7ICJNb3ZlQ2FyZXREb3duIiwgeyBleGVj
dXRlTW92ZUNhcmV0RG93biwgc3VwcG9ydGVkRnJvbU1lbnVPcktleUJpbmRpbmcsIGVuYWJsZWRJ
bkVkaXRhYmxlVGV4dE9yQ2FyZXRCcm93c2luZywgc3RhdGVOb25lLCB2YWx1ZU51bGwsIG5vdFRl
eHRJbnNlcnRpb24sIGRvTm90QWxsb3dFeGVjdXRpb25XaGVuRGlzYWJsZWQgfSB9LAorICAgICAg
ICB7ICJNb3ZlQ2FyZXREb3duQW5kTW9kaWZ5U2VsZWN0aW9uIiwgeyBleGVjdXRlTW92ZUNhcmV0
RG93bkFuZE1vZGlmeVNlbGVjdGlvbiwgc3VwcG9ydGVkRnJvbU1lbnVPcktleUJpbmRpbmcsIGVu
YWJsZWRWaXNpYmxlU2VsZWN0aW9uT3JDYXJldEJyb3dzaW5nLCBzdGF0ZU5vbmUsIHZhbHVlTnVs
bCwgbm90VGV4dEluc2VydGlvbiwgZG9Ob3RBbGxvd0V4ZWN1dGlvbldoZW5EaXNhYmxlZCB9IH0s
CisgICAgICAgIHsgIk1vdmVEb3duIiwgeyBleGVjdXRlTW92ZURvd24sIHN1cHBvcnRlZEZyb21N
ZW51T3JLZXlCaW5kaW5nLCBlbmFibGVkSW5FZGl0YWJsZVRleHQsIHN0YXRlTm9uZSwgdmFsdWVO
dWxsLCBub3RUZXh0SW5zZXJ0aW9uLCBkb05vdEFsbG93RXhlY3V0aW9uV2hlbkRpc2FibGVkIH0g
fSwKKyAgICAgICAgeyAiTW92ZURvd25BbmRNb2RpZnlTZWxlY3Rpb24iLCB7IGV4ZWN1dGVNb3Zl
RG93bkFuZE1vZGlmeVNlbGVjdGlvbiwgc3VwcG9ydGVkRnJvbU1lbnVPcktleUJpbmRpbmcsIGVu
YWJsZWRWaXNpYmxlU2VsZWN0aW9uLCBzdGF0ZU5vbmUsIHZhbHVlTnVsbCwgbm90VGV4dEluc2Vy
dGlvbiwgZG9Ob3RBbGxvd0V4ZWN1dGlvbldoZW5EaXNhYmxlZCB9IH0sCiAgICAgICAgIHsgIk1v
dmVGb3J3YXJkIiwgeyBleGVjdXRlTW92ZUZvcndhcmQsIHN1cHBvcnRlZEZyb21NZW51T3JLZXlC
aW5kaW5nLCBlbmFibGVkSW5FZGl0YWJsZVRleHRPckNhcmV0QnJvd3NpbmcsIHN0YXRlTm9uZSwg
dmFsdWVOdWxsLCBub3RUZXh0SW5zZXJ0aW9uLCBkb05vdEFsbG93RXhlY3V0aW9uV2hlbkRpc2Fi
bGVkIH0gfSwKICAgICAgICAgeyAiTW92ZUZvcndhcmRBbmRNb2RpZnlTZWxlY3Rpb24iLCB7IGV4
ZWN1dGVNb3ZlRm9yd2FyZEFuZE1vZGlmeVNlbGVjdGlvbiwgc3VwcG9ydGVkRnJvbU1lbnVPcktl
eUJpbmRpbmcsIGVuYWJsZWRWaXNpYmxlU2VsZWN0aW9uT3JDYXJldEJyb3dzaW5nLCBzdGF0ZU5v
bmUsIHZhbHVlTnVsbCwgbm90VGV4dEluc2VydGlvbiwgZG9Ob3RBbGxvd0V4ZWN1dGlvbldoZW5E
aXNhYmxlZCB9IH0sCiAgICAgICAgIHsgIk1vdmVMZWZ0IiwgeyBleGVjdXRlTW92ZUxlZnQsIHN1
cHBvcnRlZEZyb21NZW51T3JLZXlCaW5kaW5nLCBlbmFibGVkSW5FZGl0YWJsZVRleHRPckNhcmV0
QnJvd3NpbmcsIHN0YXRlTm9uZSwgdmFsdWVOdWxsLCBub3RUZXh0SW5zZXJ0aW9uLCBkb05vdEFs
bG93RXhlY3V0aW9uV2hlbkRpc2FibGVkIH0gfSwKQEAgLTE0OTAsOCArMTU5MCwxMCBAQCBzdGF0
aWMgY29uc3QgQ29tbWFuZE1hcCYgY3JlYXRlQ29tbWFuZE1hcCgpCiAgICAgICAgIHsgIk1vdmVU
b0xlZnRFbmRPZkxpbmVBbmRNb2RpZnlTZWxlY3Rpb24iLCB7IGV4ZWN1dGVNb3ZlVG9MZWZ0RW5k
T2ZMaW5lQW5kTW9kaWZ5U2VsZWN0aW9uLCBzdXBwb3J0ZWRGcm9tTWVudU9yS2V5QmluZGluZywg
ZW5hYmxlZEluRWRpdGFibGVUZXh0LCBzdGF0ZU5vbmUsIHZhbHVlTnVsbCwgbm90VGV4dEluc2Vy
dGlvbiwgZG9Ob3RBbGxvd0V4ZWN1dGlvbldoZW5EaXNhYmxlZCB9IH0sCiAgICAgICAgIHsgIk1v
dmVUb1JpZ2h0RW5kT2ZMaW5lIiwgeyBleGVjdXRlTW92ZVRvUmlnaHRFbmRPZkxpbmUsIHN1cHBv
cnRlZEZyb21NZW51T3JLZXlCaW5kaW5nLCBlbmFibGVkSW5FZGl0YWJsZVRleHQsIHN0YXRlTm9u
ZSwgdmFsdWVOdWxsLCBub3RUZXh0SW5zZXJ0aW9uLCBkb05vdEFsbG93RXhlY3V0aW9uV2hlbkRp
c2FibGVkIH0gfSwKICAgICAgICAgeyAiTW92ZVRvUmlnaHRFbmRPZkxpbmVBbmRNb2RpZnlTZWxl
Y3Rpb24iLCB7IGV4ZWN1dGVNb3ZlVG9SaWdodEVuZE9mTGluZUFuZE1vZGlmeVNlbGVjdGlvbiwg
c3VwcG9ydGVkRnJvbU1lbnVPcktleUJpbmRpbmcsIGVuYWJsZWRJbkVkaXRhYmxlVGV4dCwgc3Rh
dGVOb25lLCB2YWx1ZU51bGwsIG5vdFRleHRJbnNlcnRpb24sIGRvTm90QWxsb3dFeGVjdXRpb25X
aGVuRGlzYWJsZWQgfSB9LAotICAgICAgICB7ICJNb3ZlVXAiLCB7IGV4ZWN1dGVNb3ZlVXAsIHN1
cHBvcnRlZEZyb21NZW51T3JLZXlCaW5kaW5nLCBlbmFibGVkSW5FZGl0YWJsZVRleHRPckNhcmV0
QnJvd3NpbmcsIHN0YXRlTm9uZSwgdmFsdWVOdWxsLCBub3RUZXh0SW5zZXJ0aW9uLCBkb05vdEFs
bG93RXhlY3V0aW9uV2hlbkRpc2FibGVkIH0gfSwKLSAgICAgICAgeyAiTW92ZVVwQW5kTW9kaWZ5
U2VsZWN0aW9uIiwgeyBleGVjdXRlTW92ZVVwQW5kTW9kaWZ5U2VsZWN0aW9uLCBzdXBwb3J0ZWRG
cm9tTWVudU9yS2V5QmluZGluZywgZW5hYmxlZFZpc2libGVTZWxlY3Rpb25PckNhcmV0QnJvd3Np
bmcsIHN0YXRlTm9uZSwgdmFsdWVOdWxsLCBub3RUZXh0SW5zZXJ0aW9uLCBkb05vdEFsbG93RXhl
Y3V0aW9uV2hlbkRpc2FibGVkIH0gfSwKKyAgICAgICAgeyAiTW92ZUNhcmV0VXAiLCB7IGV4ZWN1
dGVNb3ZlQ2FyZXRVcCwgc3VwcG9ydGVkRnJvbU1lbnVPcktleUJpbmRpbmcsIGVuYWJsZWRJbkVk
aXRhYmxlVGV4dE9yQ2FyZXRCcm93c2luZywgc3RhdGVOb25lLCB2YWx1ZU51bGwsIG5vdFRleHRJ
bnNlcnRpb24sIGRvTm90QWxsb3dFeGVjdXRpb25XaGVuRGlzYWJsZWQgfSB9LAorICAgICAgICB7
ICJNb3ZlQ2FyZXRVcEFuZE1vZGlmeVNlbGVjdGlvbiIsIHsgZXhlY3V0ZU1vdmVDYXJldFVwQW5k
TW9kaWZ5U2VsZWN0aW9uLCBzdXBwb3J0ZWRGcm9tTWVudU9yS2V5QmluZGluZywgZW5hYmxlZFZp
c2libGVTZWxlY3Rpb25PckNhcmV0QnJvd3NpbmcsIHN0YXRlTm9uZSwgdmFsdWVOdWxsLCBub3RU
ZXh0SW5zZXJ0aW9uLCBkb05vdEFsbG93RXhlY3V0aW9uV2hlbkRpc2FibGVkIH0gfSwKKyAgICAg
ICAgeyAiTW92ZVVwIiwgeyBleGVjdXRlTW92ZVVwLCBzdXBwb3J0ZWRGcm9tTWVudU9yS2V5Qmlu
ZGluZywgZW5hYmxlZEluRWRpdGFibGVUZXh0LCBzdGF0ZU5vbmUsIHZhbHVlTnVsbCwgbm90VGV4
dEluc2VydGlvbiwgZG9Ob3RBbGxvd0V4ZWN1dGlvbldoZW5EaXNhYmxlZCB9IH0sCisgICAgICAg
IHsgIk1vdmVVcEFuZE1vZGlmeVNlbGVjdGlvbiIsIHsgZXhlY3V0ZU1vdmVVcEFuZE1vZGlmeVNl
bGVjdGlvbiwgc3VwcG9ydGVkRnJvbU1lbnVPcktleUJpbmRpbmcsIGVuYWJsZWRWaXNpYmxlU2Vs
ZWN0aW9uLCBzdGF0ZU5vbmUsIHZhbHVlTnVsbCwgbm90VGV4dEluc2VydGlvbiwgZG9Ob3RBbGxv
d0V4ZWN1dGlvbldoZW5EaXNhYmxlZCB9IH0sCiAgICAgICAgIHsgIk1vdmVXb3JkQmFja3dhcmQi
LCB7IGV4ZWN1dGVNb3ZlV29yZEJhY2t3YXJkLCBzdXBwb3J0ZWRGcm9tTWVudU9yS2V5QmluZGlu
ZywgZW5hYmxlZEluRWRpdGFibGVUZXh0T3JDYXJldEJyb3dzaW5nLCBzdGF0ZU5vbmUsIHZhbHVl
TnVsbCwgbm90VGV4dEluc2VydGlvbiwgZG9Ob3RBbGxvd0V4ZWN1dGlvbldoZW5EaXNhYmxlZCB9
IH0sCiAgICAgICAgIHsgIk1vdmVXb3JkQmFja3dhcmRBbmRNb2RpZnlTZWxlY3Rpb24iLCB7IGV4
ZWN1dGVNb3ZlV29yZEJhY2t3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uLCBzdXBwb3J0ZWRGcm9tTWVu
dU9yS2V5QmluZGluZywgZW5hYmxlZFZpc2libGVTZWxlY3Rpb25PckNhcmV0QnJvd3NpbmcsIHN0
YXRlTm9uZSwgdmFsdWVOdWxsLCBub3RUZXh0SW5zZXJ0aW9uLCBkb05vdEFsbG93RXhlY3V0aW9u
V2hlbkRpc2FibGVkIH0gfSwKICAgICAgICAgeyAiTW92ZVdvcmRGb3J3YXJkIiwgeyBleGVjdXRl
TW92ZVdvcmRGb3J3YXJkLCBzdXBwb3J0ZWRGcm9tTWVudU9yS2V5QmluZGluZywgZW5hYmxlZElu
RWRpdGFibGVUZXh0T3JDYXJldEJyb3dzaW5nLCBzdGF0ZU5vbmUsIHZhbHVlTnVsbCwgbm90VGV4
dEluc2VydGlvbiwgZG9Ob3RBbGxvd0V4ZWN1dGlvbldoZW5EaXNhYmxlZCB9IH0sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFu
Z2VMb2cKaW5kZXggZTAxYmY0NC4uZDUzNWVlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9n
dGsvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE2IEBACisyMDExLTAzLTAxICBNYXJpbyBTYW5jaGV6IFByYWRhICA8bXNhbmNoZXpAaWdhbGlh
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBb
R1RLXSBFbGVtZW50cyBvbiB0aGUgc2FtZSBsaW5lIHNob3VsZCBiZSB0cmVhdGVkIGFzIHN1Y2gg
YnkgY2FyZXQgbmF2aWdhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjU1MzMKKworICAgICAgICBVc2UgdGhlIG5ldyBjb21tYW5kcyBmb3IgbW92
aW5nIHVwL2Rvd24gaW4gY2FyZXQgYnJvd3NpbmcgbW9kZS4KKworICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0VkaXRvckNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1vdmVDdXJzb3JD
YWxsYmFjayk6IFJlZGVmaW5lIHJhd0NvbW1hbmQgdG8gb25lIG9mIHRoZQorICAgICAgICBuZXcg
Zm91ciBjb21tYW5kcyB3aGVuIGFwcHJvcHJpYXRlLgorCiAyMDExLTAyLTI2ICBMdWthc3ogU2xh
Y2hjaWFrICA8bC5zbGFjaGNpYWtAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
WGFuIExvcGV6LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
RWRpdG9yQ2xpZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Vk
aXRvckNsaWVudEd0ay5jcHAKaW5kZXggOTEyNjlhMy4uNDY5MWRjNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwCkBAIC0z
OCw2ICszOCw3IEBACiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBhc3RlYm9hcmRIZWxw
ZXJHdGsuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUtleWJvYXJkRXZlbnQuaCIKKyNpbmNsdWRlICJT
ZXR0aW5ncy5oIgogI2luY2x1ZGUgIldlYktpdERPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJXZWJL
aXRET01DU1NTdHlsZURlY2xhcmF0aW9uUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdERPTUhU
TUxFbGVtZW50UHJpdmF0ZS5oIgpAQCAtMjE4LDYgKzIxOSwxMSBAQCBzdGF0aWMgY29uc3QgY2hh
ciogY29uc3QgZ3RrTW92ZUNvbW1hbmRzW11bNF0gPSB7CiAgICAgICAwLCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfSAvLyBIb3Jpem9udGFsIHBhZ2UgbW92ZW1lbnQKIH07CiAK
K3N0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBndGtNb3ZlQ2FyZXRMaW5lc0NvbW1hbmRzWzRdID0g
eworICAgICJNb3ZlQ2FyZXRVcCIsICAgICAgICAgICAgICAgICAgICJNb3ZlQ2FyZXREb3duIiwK
KyAgICAiTW92ZUNhcmV0VXBBbmRNb2RpZnlTZWxlY3Rpb24iLCAiTW92ZUNhcmV0RG93bkFuZE1v
ZGlmeVNlbGVjdGlvbiIKK307CisKIHN0YXRpYyB2b2lkIG1vdmVDdXJzb3JDYWxsYmFjayhHdGtX
aWRnZXQqIHdpZGdldCwgR3RrTW92ZW1lbnRTdGVwIHN0ZXAsIGdpbnQgY291bnQsIGdib29sZWFu
IGV4dGVuZFNlbGVjdGlvbiwgRWRpdG9yQ2xpZW50KiBjbGllbnQpCiB7CiAgICAgZ19zaWduYWxf
c3RvcF9lbWlzc2lvbl9ieV9uYW1lKHdpZGdldCwgIm1vdmUtY3Vyc29yIik7CkBAIC0yMzIsNiAr
MjM4LDE0IEBAIHN0YXRpYyB2b2lkIG1vdmVDdXJzb3JDYWxsYmFjayhHdGtXaWRnZXQqIHdpZGdl
dCwgR3RrTW92ZW1lbnRTdGVwIHN0ZXAsIGdpbnQgY291CiAgICAgaWYgKCFyYXdDb21tYW5kKQog
ICAgICAgICByZXR1cm47CiAKKyAgICAvKiBDaGVjayBzcGVjaWFsIGNhc2UgZm9yIG1vdmluZyB0
aGUgY2FyZXQgdXAvZG93biBhY3Jvc3MgbGluZXMuICovCisgICAgaWYgKHN0ZXAgPT0gMykgewor
ICAgICAgICBGcmFtZSogZnJhbWUgPSBjb3JlKGNsaWVudC0+d2ViVmlldygpKS0+Zm9jdXNDb250
cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOworICAgICAgICBTZXR0aW5ncyogc2V0dGlu
Z3MgPSBmcmFtZSA/IGZyYW1lLT5zZXR0aW5ncygpIDogMDsKKyAgICAgICAgaWYgKHNldHRpbmdz
ICYmIHNldHRpbmdzLT5jYXJldEJyb3dzaW5nRW5hYmxlZCgpKQorICAgICAgICAgICAgcmF3Q29t
bWFuZCA9IGd0a01vdmVDYXJldExpbmVzQ29tbWFuZHNbZGlyZWN0aW9uXTsKKyAgICB9CisKICAg
ICBmb3IgKGludCBpID0gMDsgaSA8IGFicyhjb3VudCk7IGkrKykKICAgICAgICAgY2xpZW50LT5h
ZGRQZW5kaW5nRWRpdG9yQ29tbWFuZChyYXdDb21tYW5kKTsKIH0KLS0gCjEuNy4zLjUKCg==
</data>
<flag name="review"
          id="76206"
          type_id="1"
          status="-"
          setter="rniwa"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>84953</attachid>
            <date>2011-03-07 09:53:19 -0800</date>
            <delta_ts>2011-03-07 09:53:19 -0800</delta_ts>
            <desc>WIP: (incomplete) patch for fixing the bug</desc>
            <filename>0001-WIP-incomplete-patch-for-fixing-bug-25533.patch</filename>
            <type>text/plain</type>
            <size>18315</size>
            <attacher name="Mario Sanchez Prada">mario</attacher>
            
              <data encoding="base64">RnJvbSBkYjFhYjI0YmY1Yjc2NDk2ZWQ5MDE2NjA5N2NiMDA0NDA2YTg2YmEyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJpbyBTYW5jaGV6IFByYWRhIDxtc2FuY2hlekBpZ2FsaWEu
Y29tPgpEYXRlOiBNb24sIDIxIEZlYiAyMDExIDEyOjEyOjEzICswMTAwClN1YmplY3Q6IFtQQVRD
SF0gV0lQOiBpbmNvbXBsZXRlIHBhdGNoIGZvciBmaXhpbmcgYnVnIDI1NTMzCgpUT0RPOiBkbyBu
b3QgYnJlYWsgb3RoZXIgdGVzdHMsIHN1Y2ggYXM6CgogZWRpdGluZy9leGVjQ29tbWFuZC9pbmRl
bnQtcHJlLmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uLzM2OTA3MDMtMi5odG1sCiBlZGl0aW5nL3Nl
bGVjdGlvbi8zNjkwNzAzLmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL21vdmUtYnktbGluZS0wMDEu
aHRtbAotLS0KIC4uLi9jYXJldC1tb2RlLXZlcnRpY2FsLW5hdmlnYXRpb24tZXhwZWN0ZWQudHh0
ICAgIHwgICA1MiArKysrKysrCiAuLi4vc2VsZWN0aW9uL2NhcmV0LW1vZGUtdmVydGljYWwtbmF2
aWdhdGlvbi5odG1sICB8ICAxMzUgKysrKysrKysrKysrKysrKysrKwogU291cmNlL1dlYkNvcmUv
ZWRpdGluZy92aXNpYmxlX3VuaXRzLmNwcCAgICAgICAgICAgfCAgMTQxICsrKysrKysrKysrKysr
KysrKy0tCiAzIGZpbGVzIGNoYW5nZWQsIDMxOSBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygt
KQogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9lZGl0aW5nL3Nl
bGVjdGlvbi9jYXJldC1tb2RlLXZlcnRpY2FsLW5hdmlnYXRpb24tZXhwZWN0ZWQudHh0CiBjcmVh
dGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2VkaXRpbmcvc2VsZWN0aW9u
L2NhcmV0LW1vZGUtdmVydGljYWwtbmF2aWdhdGlvbi5odG1sCgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZ3RrL2VkaXRpbmcvc2VsZWN0aW9uL2NhcmV0LW1vZGUtdmVydGljYWwt
bmF2aWdhdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZWRpdGlu
Zy9zZWxlY3Rpb24vY2FyZXQtbW9kZS12ZXJ0aWNhbC1uYXZpZ2F0aW9uLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNjBmNmIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2VkaXRpbmcvc2VsZWN0aW9uL2NhcmV0LW1v
ZGUtdmVydGljYWwtbmF2aWdhdGlvbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1MiBAQAorRURJ
VElORyBERUxFR0FURTogc2hvdWxkQmVnaW5FZGl0aW5nSW5ET01SYW5nZTpyYW5nZSBmcm9tIDAg
b2YgRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gNyBvZiBESVYgPiBCT0RZID4gSFRN
TCA+ICNkb2N1bWVudAorRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZEJlZ2luRWRpdGluZzpX
ZWJWaWV3RGlkQmVnaW5FZGl0aW5nTm90aWZpY2F0aW9uCitFRElUSU5HIERFTEVHQVRFOiB3ZWJW
aWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRp
b24KK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2Ug
ZnJvbSAzIG9mICN0ZXh0ID4gU1BBTiA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRv
IDMgb2YgI3RleHQgPiBTUEFOID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG9ET01S
YW5nZTpyYW5nZSBmcm9tIDMgb2YgI3RleHQgPiBQID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9j
dW1lbnQgdG8gMyBvZiAjdGV4dCA+IFAgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBh
ZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxT
RQorRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlk
Q2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCitFRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFu
Z2VTZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20gMyBvZiAjdGV4dCA+IFAgPiBESVYgPiBCT0RZ
ID4gSFRNTCA+ICNkb2N1bWVudCB0byAzIG9mICN0ZXh0ID4gUCA+IERJViA+IEJPRFkgPiBIVE1M
ID4gI2RvY3VtZW50IHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSA1IG9mIERJViA+IEJPRFkgPiBIVE1M
ID4gI2RvY3VtZW50IHRvIDUgb2YgRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5p
dHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKK0VE
SVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5n
ZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgorRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2Vs
ZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9tIDUgb2YgRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1l
bnQgdG8gNSBvZiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0b0RPTVJhbmdlOnJhbmdl
IGZyb20gMCBvZiBQID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMCBvZiBQID4g
RElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0
eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKK0VESVRJTkcgREVMRUdBVEU6IHdlYlZp
ZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlv
bgorRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZTpyYW5nZSBm
cm9tIDMgb2YgI3RleHQgPiBQID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMyBv
ZiAjdGV4dCA+IFAgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0b0RPTVJhbmdlOnJh
bmdlIGZyb20gMyBvZiAjdGV4dCA+IFNQQU4gPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVu
dCB0byAzIG9mICN0ZXh0ID4gU1BBTiA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFm
ZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNF
CitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRD
aGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5n
ZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSAzIG9mICN0ZXh0ID4gU1BBTiA+IERJViA+IEJP
RFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDMgb2YgI3RleHQgPiBTUEFOID4gRElWID4gQk9EWSA+
IEhUTUwgPiAjZG9jdW1lbnQgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgRElWID4gQk9EWSA+
IEhUTUwgPiAjZG9jdW1lbnQgdG8gMCBvZiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBh
ZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxT
RQorRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlk
Q2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCitDb2wuIEhlYWRlciAxCUNvbC4gSGVhZGVyIDIK
K1JvdyBIZWFkZXIgMQlPbmUJVHdvCitSb3cgSGVhZGVyIDIJVGhyZWUJRm91cgorQSBwYXJhZ3Jh
cGggYmV0d2VlbiBhIDktY2VsbCB0YWJsZSBhbmQgYSBsaXN0IG9mIHRocmVlIGl0ZW1zLgorCitD
YXREb2dFbGVwaGFudAorLSBGb28KKy0gQmFyCisKKworVGhpcyB0ZXN0cyB2ZXJ0aWNhbCBjYXJl
dCBuYXZpZ2F0aW9uIHdvcmtzIGFzIGV4cGVjdGVkIGFjcm9zcyB0YWJsZXMgYW5kIGZsb2F0aW5n
IGVsZW1lbnRzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBnZXRTZWxl
Y3Rpb24oKS5hbmNob3JOb2RlLm5vZGVWYWx1ZSBpcyAnQ29sLiBIZWFkZXIgMScKK1BBU1MgZ2V0
U2VsZWN0aW9uKCkuYmFzZU9mZnNldCBpcyA1CitQQVNTIGdldFNlbGVjdGlvbigpLmFuY2hvck5v
ZGUubm9kZVZhbHVlIGlzICdPbmUnCitQQVNTIGdldFNlbGVjdGlvbigpLmJhc2VPZmZzZXQgaXMg
MworUEFTUyBnZXRTZWxlY3Rpb24oKS5hbmNob3JOb2RlLm5vZGVWYWx1ZSBpcyAnVGhyZWUnCitQ
QVNTIGdldFNlbGVjdGlvbigpLmJhc2VPZmZzZXQgaXMgNQorUEFTUyBnZXRTZWxlY3Rpb24oKS5h
bmNob3JOb2RlLm5vZGVWYWx1ZSBpcyAnQSBwYXJhZ3JhcGggYmV0d2VlbiBhIDktY2VsbCB0YWJs
ZSBhbmQgYSBsaXN0IG9mIHRocmVlIGl0ZW1zLicKK1BBU1MgZ2V0U2VsZWN0aW9uKCkuYmFzZU9m
ZnNldCBpcyA2MQorUEFTUyBnZXRTZWxlY3Rpb24oKS5hbmNob3JOb2RlLm5vZGVWYWx1ZSBpcyAn
RWxlcGhhbnQnCitQQVNTIGdldFNlbGVjdGlvbigpLmJhc2VPZmZzZXQgaXMgMAorUEFTUyBnZXRT
ZWxlY3Rpb24oKS5hbmNob3JOb2RlLm5vZGVWYWx1ZSBpcyAnUm93IEhlYWRlciAyJworUEFTUyBn
ZXRTZWxlY3Rpb24oKS5iYXNlT2Zmc2V0IGlzIDYKK1BBU1MgcmFuZ2Uuc3RhcnRDb250YWluZXIu
bm9kZVZhbHVlIGlzICdSb3cgSGVhZGVyIDEnCitQQVNTIGdldFNlbGVjdGlvbigpLmJhc2VPZmZz
ZXQgaXMgNgorUEFTUyByYW5nZS5lbmRDb250YWluZXIubm9kZVZhbHVlIGlzICdSb3cgSGVhZGVy
IDInCitQQVNTIGdldFNlbGVjdGlvbigpLmV4dGVudE9mZnNldCBpcyA2CitQQVNTIHJhbmdlLnN0
YXJ0Q29udGFpbmVyLm5vZGVWYWx1ZSBpcyAnUm93IEhlYWRlciAyJworUEFTUyBnZXRTZWxlY3Rp
b24oKS5iYXNlT2Zmc2V0IGlzIDYKK1BBU1MgcmFuZ2UuZW5kQ29udGFpbmVyLm5vZGVWYWx1ZSBp
cyAnQSBwYXJhZ3JhcGggYmV0d2VlbiBhIDktY2VsbCB0YWJsZSBhbmQgYSBsaXN0IG9mIHRocmVl
IGl0ZW1zLicKK1BBU1MgZ2V0U2VsZWN0aW9uKCkuZXh0ZW50T2Zmc2V0IGlzIDIwCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2VkaXRpbmcvc2VsZWN0aW9uL2NhcmV0LW1vZGUtdmVy
dGljYWwtbmF2aWdhdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2VkaXRpbmcv
c2VsZWN0aW9uL2NhcmV0LW1vZGUtdmVydGljYWwtbmF2aWdhdGlvbi5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyY2Q4N2UKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9ndGsvZWRpdGluZy9zZWxlY3Rpb24vY2FyZXQtbW9kZS12ZXJ0aWNh
bC1uYXZpZ2F0aW9uLmh0bWwKQEAgLTAsMCArMSwxMzUgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJ
QyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+CisjZmxv
YXRpbmctbGlzdCB7CisgIGxpc3Qtc3R5bGU6IG5vbmU7CisgIHdpZHRoOiAxMDAlOworfQorCisj
ZmxvYXRpbmctbGlzdCBsaSB7CisgIGZsb2F0OiBsZWZ0OworICBwYWRkaW5nOiAxMHB4OworfQor
PC9zdHlsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdD4KK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQg
PSBmYWxzZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9lZGl0aW5n
LmpzIiBsYW5ndWFnZT0iSmF2YVNjcmlwdCIgdHlwZT0idGV4dC9KYXZhU2NyaXB0IiA+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keSBpZD0iYm9keSI+Cis8dGFibGUgd2lkdGg9IjEwMCUiPgorICA8
dHI+PHRoPjwvdGg+PHRoIGlkPSJzdGFydFdpdGhDYXJldEJyb3dzaW5nIj5Db2wuIEhlYWRlciAx
PC90aD48dGg+Q29sLiBIZWFkZXIgMjwvdGg+PC90cj4KKyAgPHRyPjx0aD5Sb3cgSGVhZGVyIDE8
L3RoPjx0ZD5PbmU8L3RkPjx0ZD5Ud288L3RkPjwvdHI+CisgIDx0cj48dGg+Um93IEhlYWRlciAy
PC90aD48dGQ+VGhyZWU8L3RkPjx0ZD5Gb3VyPC90ZD48L3RyPgorPC90YWJsZT4KKzxwIGlkPSJw
YXJhZ3JhcGgiPkEgcGFyYWdyYXBoIGJldHdlZW4gYSA5LWNlbGwgdGFibGUgYW5kIGEgbGlzdCBv
ZiB0aHJlZSBpdGVtcy48L3A+Cis8dWwgaWQ9ImZsb2F0aW5nLWxpc3QiPgorICA8bGk+Q2F0PC9s
aT4KKyAgPGxpPkRvZzwvbGk+CisgIDxsaT5FbGVwaGFudDwvbGk+Cis8L3VsPgorPGJyIGNsZWFy
PSJhbGwiIC8+Cis8ZGl2IGNvbnRlbnRlZGl0YWJsZT4KKyAgPHNwYW4gaWQ9InN0YXJ0V2l0aG91
dENhcmV0QnJvd3NpbmciPi0gRm9vPC9zcGFuPjxiciAvPgorICA8cD4tIEJhcjwvcD48YnIgLz4K
KzwvZGl2PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB2ZXJ0aWNhbCBjYXJldCBuYXZp
Z2F0aW9uIHdvcmtzIGFzIGV4cGVjdGVkIGFjcm9zcyB0YWJsZXMgYW5kIGZsb2F0aW5nIGVsZW1l
bnRzLiIpOworCitmdW5jdGlvbiBjaGVja1dpdGhDYXJldEJyb3dzaW5nKCkgeworCisgIGxheW91
dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0RW5hYmxlQ2FyZXRCcm93
c2luZyIsIHRydWUpOworCisgIC8vIENoZWNrIGRvd24vdXAgYXJyb3dzLgorCisgIC8vIFNldCBj
YXJldCBpbiB0aGUgc2Vjb25kIGNlbGwgb2YgdGhlIHRhYmxlLgorICBzdGFydFBvaW50ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN0YXJ0V2l0aENhcmV0QnJvd3NpbmciKTsKKyAgd2luZG93
LmdldFNlbGVjdGlvbigpLnNldFBvc2l0aW9uKHN0YXJ0UG9pbnQuY2hpbGROb2Rlcy5pdGVtKDAp
LCA1KTsKKyAgc2hvdWxkQmUoImdldFNlbGVjdGlvbigpLmFuY2hvck5vZGUubm9kZVZhbHVlIiwg
IidDb2wuIEhlYWRlciAxJyIpOworICBzaG91bGRCZSgiZ2V0U2VsZWN0aW9uKCkuYmFzZU9mZnNl
dCIsICI1Iik7CisKKyAgLy8gTW92ZSB0aGUgY2FyZXQgZG93biB0byB0aGUgc2Vjb25kIHJvdyBv
ZiB0aGUgdGFibGUuCisgIGV2ZW50U2VuZGVyLmtleURvd24oImRvd25BcnJvdyIpOworICBzaG91
bGRCZSgiZ2V0U2VsZWN0aW9uKCkuYW5jaG9yTm9kZS5ub2RlVmFsdWUiLCAiJ09uZSciKTsKKyAg
c2hvdWxkQmUoImdldFNlbGVjdGlvbigpLmJhc2VPZmZzZXQiLCAiMyIpOworCisgIC8vIE1vdmUg
dGhlIGNhcmV0IGRvd24gdG8gdGhlIHRoaXJkIHJvdyBvZiB0aGUgdGFibGUuCisgIGV2ZW50U2Vu
ZGVyLmtleURvd24oImRvd25BcnJvdyIpOworICBzaG91bGRCZSgiZ2V0U2VsZWN0aW9uKCkuYW5j
aG9yTm9kZS5ub2RlVmFsdWUiLCAiJ1RocmVlJyIpOworICBzaG91bGRCZSgiZ2V0U2VsZWN0aW9u
KCkuYmFzZU9mZnNldCIsICI1Iik7CisKKyAgLy8gTW92ZSB0aGUgY2FyZXQgZG93biB0byBwYXJh
Z3JhcGguCisgIGV2ZW50U2VuZGVyLmtleURvd24oImRvd25BcnJvdyIpOworICBzaG91bGRCZSgi
Z2V0U2VsZWN0aW9uKCkuYW5jaG9yTm9kZS5ub2RlVmFsdWUiLCAiJ0EgcGFyYWdyYXBoIGJldHdl
ZW4gYSA5LWNlbGwgdGFibGUgYW5kIGEgbGlzdCBvZiB0aHJlZSBpdGVtcy4nIik7CisgIHNob3Vs
ZEJlKCJnZXRTZWxlY3Rpb24oKS5iYXNlT2Zmc2V0IiwgIjYxIik7CisKKyAgLy8gTW92ZSB0aGUg
Y2FyZXQgZG93biB0byB0aGUgbGlzdCBvZiBpdGVtcy4KKyAgcGFyYWdyYXBoID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInBhcmFncmFwaCIpOworICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuc2V0
UG9zaXRpb24ocGFyYWdyYXBoLmNoaWxkTm9kZXMuaXRlbSgwKSwgMjApOworICBldmVudFNlbmRl
ci5rZXlEb3duKCJkb3duQXJyb3ciKTsKKyAgc2hvdWxkQmUoImdldFNlbGVjdGlvbigpLmFuY2hv
ck5vZGUubm9kZVZhbHVlIiwgIidFbGVwaGFudCciKTsKKyAgc2hvdWxkQmUoImdldFNlbGVjdGlv
bigpLmJhc2VPZmZzZXQiLCAiMCIpOworCisgIC8vIE1vdmUgdGhlIGNhcmV0IHVwIGEgY291cGxl
IG9mIGxpbmVzLgorICBldmVudFNlbmRlci5rZXlEb3duKCJ1cEFycm93Iik7CisgIGV2ZW50U2Vu
ZGVyLmtleURvd24oInVwQXJyb3ciKTsKKyAgc2hvdWxkQmUoImdldFNlbGVjdGlvbigpLmFuY2hv
ck5vZGUubm9kZVZhbHVlIiwgIidSb3cgSGVhZGVyIDInIik7CisgIHNob3VsZEJlKCJnZXRTZWxl
Y3Rpb24oKS5iYXNlT2Zmc2V0IiwgIjYiKTsKKworICAvLyBDaGVjayB1cC9kb3duIGFycm93cyAr
IFNoaWZ0LgorCisgIC8vIFNlbGVjdGlvbiBpbnNpZGUgdGhlIHRhYmxlLgorICBldmVudFNlbmRl
ci5rZXlEb3duKCJ1cEFycm93IiwgWyJzaGlmdEtleSJdKTsKKyAgcmFuZ2UgPSBnZXRTZWxlY3Rp
b24oKS5nZXRSYW5nZUF0KDApOworICBzaG91bGRCZSgicmFuZ2Uuc3RhcnRDb250YWluZXIubm9k
ZVZhbHVlIiwgIidSb3cgSGVhZGVyIDEnIik7CisgIHNob3VsZEJlKCJnZXRTZWxlY3Rpb24oKS5i
YXNlT2Zmc2V0IiwgIjYiKTsKKyAgc2hvdWxkQmUoInJhbmdlLmVuZENvbnRhaW5lci5ub2RlVmFs
dWUiLCAiJ1JvdyBIZWFkZXIgMiciKTsKKyAgc2hvdWxkQmUoImdldFNlbGVjdGlvbigpLmV4dGVu
dE9mZnNldCIsICI2Iik7CisKKyAgLy8gU2VsZWN0aW9uIGFjcm9zcyB0aGUgdGFibGUgYW5kIHRo
ZSBwYXJhZ3JhcGguCisgIGV2ZW50U2VuZGVyLmtleURvd24oImRvd25BcnJvdyIsIFsic2hpZnRL
ZXkiXSk7CisgIGV2ZW50U2VuZGVyLmtleURvd24oImRvd25BcnJvdyIsIFsic2hpZnRLZXkiXSk7
CisgIHJhbmdlID0gZ2V0U2VsZWN0aW9uKCkuZ2V0UmFuZ2VBdCgwKTsKKyAgc2hvdWxkQmUoInJh
bmdlLnN0YXJ0Q29udGFpbmVyLm5vZGVWYWx1ZSIsICInUm93IEhlYWRlciAyJyIpOworICBzaG91
bGRCZSgiZ2V0U2VsZWN0aW9uKCkuYmFzZU9mZnNldCIsICI2Iik7CisgIHNob3VsZEJlKCJyYW5n
ZS5lbmRDb250YWluZXIubm9kZVZhbHVlIiwgIidBIHBhcmFncmFwaCBiZXR3ZWVuIGEgOS1jZWxs
IHRhYmxlIGFuZCBhIGxpc3Qgb2YgdGhyZWUgaXRlbXMuJyIpOworICBzaG91bGRCZSgiZ2V0U2Vs
ZWN0aW9uKCkuZXh0ZW50T2Zmc2V0IiwgIjIwIik7Cit9CisKK2Z1bmN0aW9uIGNoZWNrV2l0aG91
dENhcmV0QnJvd3NpbmcoKSB7CisgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBFZGl0aW5nQ2Fs
bGJhY2tzKCk7CisgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2Vi
S2l0RW5hYmxlQ2FyZXRCcm93c2luZyIsIGZhbHNlKTsKKworICAvLyBDaGVjayBNb3ZlRG93biAv
IE1vdmVVcCBjb21tYW5kcy4KKworICAvLyBTZXQgY2FyZXQgaW4gdGhlIHNlY29uZCBjZWxsIG9m
IHRoZSB0YWJsZS4KKyAgc3RhcnRQb2ludCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdGFy
dFdpdGhvdXRDYXJldEJyb3dzaW5nIik7CisgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5zZXRQb3Np
dGlvbihzdGFydFBvaW50LmNoaWxkTm9kZXMuaXRlbSgwKSwgMyk7CisKKyAgLy8gTW92ZSBkb3du
IGFuZCB1cCBhY3Jvc3MgdGhlIGRpZmZlcmVudCBsaW5lcyBpbnNpZGUgdGhlIGVkaXRhYmxlIGNv
bnRlbnQuCisgIGxheW91dFRlc3RDb250cm9sbGVyLmV4ZWNDb21tYW5kKCJNb3ZlRG93biIpOwor
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5leGVjQ29tbWFuZCgiTW92ZURvd24iKTsKKyAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZXhlY0NvbW1hbmQoIk1vdmVVcCIpOworICBsYXlvdXRUZXN0Q29udHJv
bGxlci5leGVjQ29tbWFuZCgiTW92ZVVwIik7CisgIGxheW91dFRlc3RDb250cm9sbGVyLmV4ZWND
b21tYW5kKCJNb3ZlVXAiKTsKK30KKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikg
eworICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgLy8gV2UgbmVlZCB0
byBjaGVjayB3aXRoIGFuZCB3aXRob3V0IGNhcmV0IGJyb3dzaW5nIGFjdGl2YXRlZCB0bworICAv
LyBlbnN1cmUgbm8gQVBJIGJyZWFrYWdlIGhhcyBoYXBwZW5lZCB3aXRoIHRoZSBNb3ZlVXAvRG93
biBjb21tYW5kcy4KKyAgY2hlY2tXaXRoQ2FyZXRCcm93c2luZygpOworICBjaGVja1dpdGhvdXRD
YXJldEJyb3dzaW5nKCk7Cit9CisKK3N1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy92aXNpYmxlX3VuaXRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
dmlzaWJsZV91bml0cy5jcHAKaW5kZXggODhlNzE3OS4uZTgxMTViYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy92aXNpYmxlX3VuaXRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL3Zpc2libGVfdW5pdHMuY3BwCkBAIC00OTUsNiArNDk1LDc1IEBAIHN0YXRpYyBO
b2RlKiBlbmNsb3NpbmdOb2RlV2l0aE5vbklubGluZVJlbmRlcmVyKE5vZGUqIG4pCiAgICAgcmV0
dXJuIDA7CiB9CiAKK3R5cGVkZWYgZW51bSB7CisgICAgUG9zaXRpb25Vbmtub3duLAorICAgIFBv
c2l0aW9uQmVmb3JlLAorICAgIFBvc2l0aW9uQ29pbmNpZGVudCwKKyAgICBQb3NpdGlvbkFmdGVy
Cit9IFJlbGF0aXZlQmxvY2tQb3NpdGlvbjsKKworc3RhdGljIFJlbGF0aXZlQmxvY2tQb3NpdGlv
biB2ZXJ0aWNhbFBvc2l0aW9uRm9yQmxvY2tzKFZpc2libGVQb3NpdGlvbiBvcmlnaW4sIFZpc2li
bGVQb3NpdGlvbiBjYW5kaWRhdGUpCit7CisgICAgaWYgKG9yaWdpbi5pc051bGwoKSB8fCBjYW5k
aWRhdGUuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBQb3NpdGlvblVua25vd247CisKKyAgICBS
ZW5kZXJPYmplY3QqIG9yaWdpblJlbmRlcmVyOworICAgIG9yaWdpbi5sb2NhbENhcmV0UmVjdChv
cmlnaW5SZW5kZXJlcik7CisgICAgaWYgKCFvcmlnaW5SZW5kZXJlcikKKyAgICAgICAgcmV0dXJu
IFBvc2l0aW9uVW5rbm93bjsKKworICAgIFJlbmRlckJsb2NrKiBvcmlnaW5CbG9jayA9IG9yaWdp
blJlbmRlcmVyLT5jb250YWluaW5nQmxvY2soKTsKKyAgICBpZiAoIW9yaWdpbkJsb2NrKQorICAg
ICAgICByZXR1cm4gUG9zaXRpb25Vbmtub3duOworICAgIEZsb2F0UG9pbnQgb3JpZ2luQWJzUG9z
ID0gb3JpZ2luQmxvY2stPmxvY2FsVG9BYnNvbHV0ZShGbG9hdFBvaW50KCkpOworCisgICAgUmVu
ZGVyT2JqZWN0KiBjYW5kaWRhdGVSZW5kZXJlcjsKKyAgICBjYW5kaWRhdGUubG9jYWxDYXJldFJl
Y3QoY2FuZGlkYXRlUmVuZGVyZXIpOworICAgIGlmICghY2FuZGlkYXRlUmVuZGVyZXIpCisgICAg
ICAgIHJldHVybiBQb3NpdGlvblVua25vd247CisKKyAgICBSZW5kZXJCbG9jayogY2FuZGlkYXRl
QmxvY2sgPSBjYW5kaWRhdGVSZW5kZXJlci0+Y29udGFpbmluZ0Jsb2NrKCk7CisgICAgaWYgKCFj
YW5kaWRhdGVCbG9jaykKKyAgICAgICAgcmV0dXJuIFBvc2l0aW9uVW5rbm93bjsKKyAgICBGbG9h
dFBvaW50IGNhbmRpZGF0ZUFic1BvcyA9IGNhbmRpZGF0ZUJsb2NrLT5sb2NhbFRvQWJzb2x1dGUo
RmxvYXRQb2ludCgpKTsKKworICAgIGludCBvcmlnaW5ZID0gb3JpZ2luQWJzUG9zLnkoKTsKKyAg
ICBpbnQgY2FuZGlkYXRlWSA9IGNhbmRpZGF0ZUFic1Bvcy55KCk7CisKKyAgICBpZiAob3JpZ2lu
WSA8IGNhbmRpZGF0ZVkpCisgICAgICAgIHJldHVybiBQb3NpdGlvbkFmdGVyOworICAgIGVsc2Ug
aWYgKGNhbmRpZGF0ZVkgPCBvcmlnaW5ZKQorICAgICAgICByZXR1cm4gUG9zaXRpb25CZWZvcmU7
CisgICAgZWxzZQorICAgICAgICByZXR1cm4gUG9zaXRpb25Db2luY2lkZW50OworfQorCitzdGF0
aWMgaW50IGhvcml6b250YWxEaXN0YW5jZUZyb21CbG9jayhpbnQgeFBvcywgVmlzaWJsZVBvc2l0
aW9uIGNhbmRpZGF0ZSkKK3sKKyAgICBpZiAoY2FuZGlkYXRlLmlzTnVsbCgpKQorICAgICAgICBy
ZXR1cm4gUG9zaXRpb25Vbmtub3duOworCisgICAgUmVuZGVyT2JqZWN0KiBjYW5kaWRhdGVSZW5k
ZXJlcjsKKyAgICBJbnRSZWN0IGNhbmRpZGF0ZVJlY3QgPSBjYW5kaWRhdGUubG9jYWxDYXJldFJl
Y3QoY2FuZGlkYXRlUmVuZGVyZXIpOworICAgIGlmICghY2FuZGlkYXRlUmVuZGVyZXIpCisgICAg
ICAgIHJldHVybiBQb3NpdGlvblVua25vd247CisKKyAgICBSZW5kZXJCbG9jayogY2FuZGlkYXRl
QmxvY2sgPSBjYW5kaWRhdGVSZW5kZXJlci0+Y29udGFpbmluZ0Jsb2NrKCk7CisgICAgaWYgKCFj
YW5kaWRhdGVCbG9jaykKKyAgICAgICAgcmV0dXJuIFBvc2l0aW9uVW5rbm93bjsKKyAgICBGbG9h
dFBvaW50IGNhbmRpZGF0ZUFic1BvcyA9IGNhbmRpZGF0ZUJsb2NrLT5sb2NhbFRvQWJzb2x1dGUo
RmxvYXRQb2ludCgpKTsKKworICAgIC8vIElmIHhQb3MgaXMgd2l0aGluIHRoZSBib3VuZGFyaWVz
IG9mIHRoZSBibG9jaywgd2UgY29uc2lkZXIgdGhlCisgICAgLy8gZGlzdGFuY2UgdG8gdGhlIGJs
b2NrIGlzIHplcm8gKGl0J3MgaW5zaWRlIG9mIGl0KS4KKyAgICBpZiAoY2FuZGlkYXRlQWJzUG9z
LngoKSA8PSB4UG9zICYmIHhQb3MgPD0gY2FuZGlkYXRlQWJzUG9zLngoKSArIGNhbmRpZGF0ZUJs
b2NrLT53aWR0aCgpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIC8vIFJldHVybiBtaW5pbXVt
IGRpc3RhbmNlIGZyb20geFBvcyB0byB0aGUgYmxvY2suCisgICAgaW50IGRpc3RhbmNlVG9TdGFy
dCA9IGFicyh4UG9zIC0gY2FuZGlkYXRlQWJzUG9zLngoKSk7CisgICAgaW50IGRpc3RhbmNlVG9F
bmQgPSBhYnMoeFBvcyAtIGNhbmRpZGF0ZUFic1Bvcy54KCkgLSBjYW5kaWRhdGVCbG9jay0+d2lk
dGgoKSk7CisgICAgcmV0dXJuIGRpc3RhbmNlVG9TdGFydCA+IGRpc3RhbmNlVG9FbmQgPyBkaXN0
YW5jZVRvRW5kIDogZGlzdGFuY2VUb1N0YXJ0OworfQorCiBWaXNpYmxlUG9zaXRpb24gcHJldmlv
dXNMaW5lUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uICZ2aXNpYmxlUG9zaXRpb24sIGlu
dCB4KQogewogICAgIFBvc2l0aW9uIHAgPSB2aXNpYmxlUG9zaXRpb24uZGVlcEVxdWl2YWxlbnQo
KTsKQEAgLTUzMiwyNCArNjAxLDUxIEBAIFZpc2libGVQb3NpdGlvbiBwcmV2aW91c0xpbmVQb3Np
dGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24gJnZpc2libGVQb3NpdGlvbiwgaW50CiAgICAgICAg
IE5vZGUqIG4gPSBwcmV2aW91c0xlYWZXaXRoU2FtZUVkaXRhYmlsaXR5KG5vZGUpOwogICAgICAg
ICB3aGlsZSAobiAmJiBzdGFydEJsb2NrID09IGVuY2xvc2luZ05vZGVXaXRoTm9uSW5saW5lUmVu
ZGVyZXIobikpCiAgICAgICAgICAgICBuID0gcHJldmlvdXNMZWFmV2l0aFNhbWVFZGl0YWJpbGl0
eShuKTsKKworICAgICAgICAvLyBMb2NhdGUgYW4gb2JqZWN0IG5vdCBpbiB0aGUgc2FtZSBsaW5l
IHRvIHVzZSBhcyByZWZlcmVuY2UuCisgICAgICAgIFZpc2libGVQb3NpdGlvbiByZWZlcmVuY2VQ
b3NpdGlvbjsKICAgICAgICAgd2hpbGUgKG4pIHsKICAgICAgICAgICAgIGlmIChoaWdoZXN0RWRp
dGFibGVSb290KGZpcnN0UG9zaXRpb25Jbk9yQmVmb3JlTm9kZShuKSkgIT0gaGlnaGVzdFJvb3Qp
CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBpZiAobi0+cmVuZGVyZXIoKSAm
JiBuLT5yZW5kZXJlcigpLT5pc0lubGluZSgpKSB7CisgICAgICAgICAgICAgICAgUG9zaXRpb24g
cG9zID0gZmlyc3RQb3NpdGlvbkluTm9kZShuKTsKKyAgICAgICAgICAgICAgICByZWZlcmVuY2VQ
b3NpdGlvbiA9IFZpc2libGVQb3NpdGlvbihwb3MsIHZpc2libGVQb3NpdGlvbi5hZmZpbml0eSgp
KTsKKyAgICAgICAgICAgICAgICBpZiAodmVydGljYWxQb3NpdGlvbkZvckJsb2Nrcyh2aXNpYmxl
UG9zaXRpb24sIHJlZmVyZW5jZVBvc2l0aW9uKSA9PSBQb3NpdGlvbkJlZm9yZSkKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBuID0gcHJldmlv
dXNMZWFmV2l0aFNhbWVFZGl0YWJpbGl0eShuKTsKKyAgICAgICAgfQorCisgICAgICAgIGludCBs
YXN0RGlzdGFuY2UgPSAtMTsKKyAgICAgICAgd2hpbGUgKG4gJiYgbGFzdERpc3RhbmNlKSB7Cisg
ICAgICAgICAgICBpZiAoaGlnaGVzdEVkaXRhYmxlUm9vdChmaXJzdFBvc2l0aW9uSW5PckJlZm9y
ZU5vZGUobikpICE9IGhpZ2hlc3RSb290KQorICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgUG9zaXRpb24gcG9zKG4sIGNhcmV0TWluT2Zmc2V0KG4pKTsKICAgICAgICAgICAgIGlm
IChwb3MuaXNDYW5kaWRhdGUoKSkgewogICAgICAgICAgICAgICAgIFJlbmRlck9iamVjdCogbyA9
IG4tPnJlbmRlcmVyKCk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKG8pOwogICAgICAgICAgICAg
ICAgIGlmIChjYW5IYXZlQ3Vyc29yKG8pKSB7CiAgICAgICAgICAgICAgICAgICAgIFBvc2l0aW9u
IG1heFBvcyhuLCBjYXJldE1heE9mZnNldChuKSk7CisKKyAgICAgICAgICAgICAgICAgICAgVmlz
aWJsZVBvc2l0aW9uIGN1cnJlbnRQb3NpdGlvbihtYXhQb3MsIHZpc2libGVQb3NpdGlvbi5hZmZp
bml0eSgpKTsKKyAgICAgICAgICAgICAgICAgICAgUmVsYXRpdmVCbG9ja1Bvc2l0aW9uIHJlbGF0
aXZlUG9zaXRpb24gPSB2ZXJ0aWNhbFBvc2l0aW9uRm9yQmxvY2tzKHJlZmVyZW5jZVBvc2l0aW9u
LCBjdXJyZW50UG9zaXRpb24pOworICAgICAgICAgICAgICAgICAgICBpZiAocm9vdCAmJiByZWxh
dGl2ZVBvc2l0aW9uICE9IFBvc2l0aW9uQ29pbmNpZGVudCkKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworCiAgICAgICAgICAgICAgICAgICAgIG1heFBvcy5nZXRJbmxpbmVCb3hBbmRP
ZmZzZXQoRE9XTlNUUkVBTSwgYm94LCBpZ25vcmVkQ2FyZXRPZmZzZXQpOwotICAgICAgICAgICAg
ICAgICAgICBpZiAoYm94KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBwcmV2aW91cyBy
b290IGxpbmUgYm94IGZvdW5kCisKKyAgICAgICAgICAgICAgICAgICAgaW50IGRpc3RhbmNlID0g
aG9yaXpvbnRhbERpc3RhbmNlRnJvbUJsb2NrKHgsIGN1cnJlbnRQb3NpdGlvbik7CisgICAgICAg
ICAgICAgICAgICAgIGlmIChib3ggJiYgKGxhc3REaXN0YW5jZSA9PSAtMSB8fCAhZGlzdGFuY2Ug
fHwgZGlzdGFuY2UgPCBsYXN0RGlzdGFuY2UpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBy
b290ID0gYm94LT5yb290KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluaW5nQmxv
Y2sgPSBuLT5yZW5kZXJlcigpLT5jb250YWluaW5nQmxvY2soKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFkaXN0YW5jZSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgfQog
Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24ocG9zLCBET1dOU1RS
RUFNKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFib3ggJiYgIWRpc3RhbmNlKQorICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihwb3MsIERPV05TVFJFQU0p
OworCisgICAgICAgICAgICAgICAgICAgIGxhc3REaXN0YW5jZSA9IGRpc3RhbmNlOwogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIG4gPSBwcmV2aW91c0xlYWZX
aXRoU2FtZUVkaXRhYmlsaXR5KG4pOwpAQCAtNjQxLDI2ICs3MzcsNTMgQEAgVmlzaWJsZVBvc2l0
aW9uIG5leHRMaW5lUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uICZ2aXNpYmxlUG9zaXRp
b24sIGludCB4KQogICAgICAgICBOb2RlKiBuID0gbmV4dExlYWZXaXRoU2FtZUVkaXRhYmlsaXR5
KG5vZGUsIHAuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSk7CiAgICAgICAgIHdoaWxlIChuICYm
IHN0YXJ0QmxvY2sgPT0gZW5jbG9zaW5nTm9kZVdpdGhOb25JbmxpbmVSZW5kZXJlcihuKSkKICAg
ICAgICAgICAgIG4gPSBuZXh0TGVhZldpdGhTYW1lRWRpdGFiaWxpdHkobik7CisKKyAgICAgICAg
Ly8gTG9jYXRlIGFuIG9iamVjdCBub3QgaW4gdGhlIHNhbWUgbGluZSB0byB1c2UgYXMgcmVmZXJl
bmNlLgorICAgICAgICBWaXNpYmxlUG9zaXRpb24gcmVmZXJlbmNlUG9zaXRpb247CiAgICAgICAg
IHdoaWxlIChuKSB7CiAgICAgICAgICAgICBpZiAoaGlnaGVzdEVkaXRhYmxlUm9vdChmaXJzdFBv
c2l0aW9uSW5PckJlZm9yZU5vZGUobikpICE9IGhpZ2hlc3RSb290KQogICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgaWYgKG4tPnJlbmRlcmVyKCkgJiYgbi0+cmVuZGVyZXIoKS0+
aXNJbmxpbmUoKSkgeworICAgICAgICAgICAgICAgIFBvc2l0aW9uIHBvcyA9IGZpcnN0UG9zaXRp
b25Jbk5vZGUobik7CisgICAgICAgICAgICAgICAgcmVmZXJlbmNlUG9zaXRpb24gPSBWaXNpYmxl
UG9zaXRpb24ocG9zLCB2aXNpYmxlUG9zaXRpb24uYWZmaW5pdHkoKSk7CisgICAgICAgICAgICAg
ICAgaWYgKHZlcnRpY2FsUG9zaXRpb25Gb3JCbG9ja3ModmlzaWJsZVBvc2l0aW9uLCByZWZlcmVu
Y2VQb3NpdGlvbikgPT0gUG9zaXRpb25BZnRlcikKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBuID0gbmV4dExlYWZXaXRoU2FtZUVkaXRhYmls
aXR5KG4pOworICAgICAgICB9CisKKyAgICAgICAgaW50IGxhc3REaXN0YW5jZSA9IC0xOworICAg
ICAgICB3aGlsZSAobiAmJiBsYXN0RGlzdGFuY2UpIHsKKyAgICAgICAgICAgIGlmIChoaWdoZXN0
RWRpdGFibGVSb290KGZpcnN0UG9zaXRpb25Jbk9yQmVmb3JlTm9kZShuKSkgIT0gaGlnaGVzdFJv
b3QpCisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBQb3NpdGlvbiBwb3Mobiwg
Y2FyZXRNaW5PZmZzZXQobikpOwogICAgICAgICAgICAgaWYgKHBvcy5pc0NhbmRpZGF0ZSgpKSB7
CiAgICAgICAgICAgICAgICAgQVNTRVJUKG4tPnJlbmRlcmVyKCkpOworCisgICAgICAgICAgICAg
ICAgVmlzaWJsZVBvc2l0aW9uIGN1cnJlbnRQb3NpdGlvbihwb3MsIHZpc2libGVQb3NpdGlvbi5h
ZmZpbml0eSgpKTsKKyAgICAgICAgICAgICAgICBSZWxhdGl2ZUJsb2NrUG9zaXRpb24gcmVsYXRp
dmVQb3NpdGlvbiA9IHZlcnRpY2FsUG9zaXRpb25Gb3JCbG9ja3MocmVmZXJlbmNlUG9zaXRpb24s
IGN1cnJlbnRQb3NpdGlvbik7CisgICAgICAgICAgICAgICAgaWYgKHJvb3QgJiYgcmVsYXRpdmVQ
b3NpdGlvbiAhPSBQb3NpdGlvbkNvaW5jaWRlbnQpCisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworCiAgICAgICAgICAgICAgICAgcG9zLmdldElubGluZUJveEFuZE9mZnNldChET1dOU1RSRUFN
LCBib3gsIGlnbm9yZWRDYXJldE9mZnNldCk7Ci0gICAgICAgICAgICAgICAgaWYgKGJveCkgewot
ICAgICAgICAgICAgICAgICAgICAvLyBuZXh0IHJvb3QgbGluZSBib3ggZm91bmQKKworICAgICAg
ICAgICAgICAgIGludCBkaXN0YW5jZSA9IGhvcml6b250YWxEaXN0YW5jZUZyb21CbG9jayh4LCBj
dXJyZW50UG9zaXRpb24pOworICAgICAgICAgICAgICAgIGlmIChib3ggJiYgKGxhc3REaXN0YW5j
ZSA9PSAtMSB8fCAhZGlzdGFuY2UgfHwgZGlzdGFuY2UgPCBsYXN0RGlzdGFuY2UpKSB7CiAgICAg
ICAgICAgICAgICAgICAgIHJvb3QgPSBib3gtPnJvb3QoKTsKICAgICAgICAgICAgICAgICAgICAg
Y29udGFpbmluZ0Jsb2NrID0gbi0+cmVuZGVyZXIoKS0+Y29udGFpbmluZ0Jsb2NrKCk7Ci0gICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBpZiAoIWRpc3RhbmNl
KQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihwb3MsIERPV05TVFJFQU0pOwor
ICAgICAgICAgICAgICAgIGlmICghYm94ICYmICFkaXN0YW5jZSkKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihwb3MsIERPV05TVFJFQU0pOworCisgICAgICAgICAg
ICAgICAgbGFzdERpc3RhbmNlID0gZGlzdGFuY2U7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBuID0gbmV4dExlYWZXaXRoU2FtZUVkaXRhYmlsaXR5KG4pOwogICAgICAgICB9CiAgICAgfQot
ICAgIAorCiAgICAgaWYgKHJvb3QpIHsKICAgICAgICAgLy8gRklYTUU6IENhbiBiZSB3cm9uZyBm
b3IgbXVsdGktY29sdW1uIGxheW91dCBhbmQgd2l0aCB0cmFuc2Zvcm1zLgogICAgICAgICBGbG9h
dFBvaW50IGFic1BvcyA9IGNvbnRhaW5pbmdCbG9jay0+bG9jYWxUb0Fic29sdXRlKEZsb2F0UG9p
bnQoKSk7Ci0tIAoxLjcuNAoK
</data>

          </attachment>
      

    </bug>

</bugzilla>