<?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>59961</bug_id>
          
          <creation_ts>2011-05-02 14:23:36 -0700</creation_ts>
          <short_desc>Implement DefaultParagraphSeparator execCommand, to let authors choose the default block element</short_desc>
          <delta_ts>2012-03-02 01:21:02 -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>HTML Editing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="David Bloom">bloom</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>adele</cc>
    
    <cc>annevk</cc>
    
    <cc>ayg</cc>
    
    <cc>darin</cc>
    
    <cc>ehsan</cc>
    
    <cc>enrica</cc>
    
    <cc>kalman</cc>
    
    <cc>leviw</cc>
    
    <cc>ojan</cc>
    
    <cc>pf</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zcorpan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>396661</commentid>
    <comment_count>0</comment_count>
    <who name="David Bloom">bloom</who>
    <bug_when>2011-05-02 14:23:36 -0700</bug_when>
    <thetext>Opera silently included a new execCommand in Opera 11.10, &quot;opera-defaultBlock&quot;. It lets authors set the default block element for rich text editors on the page to either &apos;p&apos; or &apos;div&apos;. If other browsers adopt a similar execCommand, it could make it much easier for authors to get consistent rich text editing behavior that they want (without resorting to a hacks involving listening to keyboard events and mangling the DOM when the user presses [return]).

Note that this only affects the default block, which is usually not used. For example, pressing [return] inside of &lt;body contentEditable&gt;&lt;p&gt;foo[caret]&lt;/p&gt;&lt;/body&gt; or &lt;body contentEditable&gt;&lt;div&gt;foo[caret]&lt;/div&gt;&lt;/body&gt; will always create another &lt;p&gt; or &lt;div&gt; respectively, regardless of the default block.

For example, if the default block is set to &lt;p&gt;...

&lt;body contentEditable&gt;foo[caret]&lt;/body&gt; --&gt; pressing [return] creates a &lt;p&gt; (default block is used)
&lt;body&gt;&lt;div contentEditable&gt;foo[caret]&lt;/div&gt;&lt;/body&gt; --&gt; pressing [return] creates a &lt;p&gt; (default block is used)
&lt;body contentEditable&gt;&lt;div&gt;foo[caret]&lt;/div&gt;&lt;/body&gt; --&gt; pressing [return] creates a &lt;div&gt; (default block is ignored)
&lt;body contentEditable&gt;&lt;ol&gt;&lt;li&gt;foo&lt;/li&gt;&lt;li&gt;bar[caret]&lt;/li&gt;&lt;/ol&gt;&lt;/body&gt; --&gt; pressing [return] creates an &lt;li&gt; (default block is ignored)
&lt;bdoy contentEditable&gt;&lt;ol&gt;&lt;li&gt;foo&lt;/li&gt;&lt;li&gt;[caret]&lt;/li&gt;&lt;/ol&gt;&lt;/body&gt; --&gt; pressing [return] creates a &lt;p&gt; (default block is used)

Implementing this in WebKit could be as simple as adding a webkit-defaultBlock command that lets authors specify whether to create a &apos;p&apos; or a &apos;div&apos; here: http://trac.webkit.org/browser/trunk/Source/WebCore/editing/htmlediting.cpp?rev=85256#L831</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>396668</commentid>
    <comment_count>1</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-05-02 14:32:00 -0700</bug_when>
    <thetext>This is a great addition to the list of execCommands. It&apos;s one of the bits of contentEditable that rich-text libraries go through many contortions to get cross-browser compat. It&apos;s also an area where the &quot;right&quot; answer depends on the web page&apos;s needs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>396676</commentid>
    <comment_count>2</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-05-02 14:41:25 -0700</bug_when>
    <thetext>It is, unfortunately, not that simple.  There are many places in our code base where the paragraph separator is assumed to be a div.  We&apos;ll have to go through editing code to find all those places and make sure to update them.

What is the syntax like?  execCommand(&quot;defaultBlock&quot;, false, &quot;p&quot;/&quot;div&quot;)?

Also, does Opera&apos;s implementation accept arbitrarily element other than p and div?  I don&apos;t want to have to test this function with every single block element if possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>396686</commentid>
    <comment_count>3</comment_count>
    <who name="David Bloom">bloom</who>
    <bug_when>2011-05-02 14:47:58 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; It is, unfortunately, not that simple.  There are many places in our code base where the paragraph separator is assumed to be a div.  We&apos;ll have to go through editing code to find all those places and make sure to update them.
It is probably worth doing this anyway, since developers already are using workarounds to get &lt;p&gt; in many cases.
&gt; 
&gt; What is the syntax like?  execCommand(&quot;defaultBlock&quot;, false, &quot;p&quot;/&quot;div&quot;)?
Yep.
&gt; 
&gt; Also, does Opera&apos;s implementation accept arbitrarily element other than p and div?  I don&apos;t want to have to test this function with every single block element if possible.
It only accepts &quot;p&quot; or &quot;div&quot; (case-insensitive). All other values are no-ops.
It also supports queryCommandValue, which will return either &quot;p&quot; or &quot;div&quot; (in lowercase).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>396687</commentid>
    <comment_count>4</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-05-02 14:50:18 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; It only accepts &quot;p&quot; or &quot;div&quot; (case-insensitive). All other values are no-ops.
&gt; It also supports queryCommandValue, which will return either &quot;p&quot; or &quot;div&quot; (in lowercase).

What&apos;s the rationale for only allowing two of the available block elements?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>396689</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-05-02 14:51:19 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; &gt; Also, does Opera&apos;s implementation accept arbitrarily element other than p and div?  I don&apos;t want to have to test this function with every single block element if possible.
&gt; It only accepts &quot;p&quot; or &quot;div&quot; (case-insensitive). All other values are no-ops.
&gt; It also supports queryCommandValue, which will return either &quot;p&quot; or &quot;div&quot; (in lowercase).

Okay, that sounds reasonable.  Has this ever been brought up in whatwg?  I&apos;d like to know how much traction this feature gets before implementing it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>396690</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-05-02 14:54:12 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; It only accepts &quot;p&quot; or &quot;div&quot; (case-insensitive). All other values are no-ops.
&gt; &gt; It also supports queryCommandValue, which will return either &quot;p&quot; or &quot;div&quot; (in lowercase).
&gt; 
&gt; What&apos;s the rationale for only allowing two of the available block elements?

Historically, browsers only supposed p, div, and br as a paragraph separator.  If we allowed some other elements, then websites have to deal with them and some block elements (e.g. ul, blockquote, etc...) also have some special rules (e.g. h1 can&apos;t be nested) and special style (ul &gt; li will have a list marker).  So I think limiting to those two elements is a good thing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>397074</commentid>
    <comment_count>7</comment_count>
    <who name="Simon Pieters (:zcorpan)">zcorpan</who>
    <bug_when>2011-05-03 07:37:47 -0700</bug_when>
    <thetext>If you&apos;re interested in implementing this I suggest you bring it up in whatwg or htmlwg. AFAIK it has not been brought up yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>397132</commentid>
    <comment_count>8</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-05-03 09:43:03 -0700</bug_when>
    <thetext>Anne, do you know the history of Opera adding this and whether they intend to propose it to the whatwg?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>397133</commentid>
    <comment_count>9</comment_count>
    <who name="David Bloom">bloom</who>
    <bug_when>2011-05-03 09:44:09 -0700</bug_when>
    <thetext>For reference, the Opera bug for implementing this is DSK-327033.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>397382</commentid>
    <comment_count>10</comment_count>
    <who name="Simon Pieters (:zcorpan)">zcorpan</who>
    <bug_when>2011-05-03 14:15:09 -0700</bug_when>
    <thetext>I know the history. :-) We haven&apos;t proposed it since we didn&apos;t know other vendors would be interested in implementing this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564575</commentid>
    <comment_count>11</comment_count>
    <who name="Pablo Flouret">pf</who>
    <bug_when>2012-02-24 13:14:16 -0800</bug_when>
    <thetext>https://www.w3.org/Bugs/Public/show_bug.cgi?id=15527</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568275</commentid>
    <comment_count>12</comment_count>
      <attachid>129621</attachid>
    <who name="Pablo Flouret">pf</who>
    <bug_when>2012-02-29 20:12:21 -0800</bug_when>
    <thetext>Created attachment 129621
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568277</commentid>
    <comment_count>13</comment_count>
    <who name="Pablo Flouret">pf</who>
    <bug_when>2012-02-29 20:14:42 -0800</bug_when>
    <thetext>createDefaultParagraphElement() was used in a lot of code-paths and i&apos;ve only tested a few relatively obvious things, so if anything else particularly important or interesting should be tested, let me know.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568292</commentid>
    <comment_count>14</comment_count>
      <attachid>129621</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-02-29 20:43:37 -0800</bug_when>
    <thetext>Comment on attachment 129621
Patch

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

&gt; Source/WebCore/editing/Editor.cpp:3028
&gt; +PassRefPtr&lt;HTMLElement&gt; Editor::createDefaultParagraphSeparatorElement(Document* document) const
&gt; +{
&gt; +    if (defaultParagraphSeparatorIsDiv())
&gt; +        return HTMLDivElement::create(document);
&gt; +    return HTMLParagraphElement::create(document);

We don&apos;t want to have this function on Editor. We should just add this to CompositeEditCommand instead.

&gt; Source/WebCore/editing/Editor.h:407
&gt; +    bool m_defaultParagraphSeparatorIsDiv; // Should be P otherwise.

Instead of saying that it should be p otherwise, please use enum.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568299</commentid>
    <comment_count>15</comment_count>
    <who name="Pablo Flouret">pf</who>
    <bug_when>2012-02-29 21:04:28 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 129621 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=129621&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/editing/Editor.cpp:3028
&gt; &gt; +PassRefPtr&lt;HTMLElement&gt; Editor::createDefaultParagraphSeparatorElement(Document* document) const
&gt; &gt; +{
&gt; &gt; +    if (defaultParagraphSeparatorIsDiv())
&gt; &gt; +        return HTMLDivElement::create(document);
&gt; &gt; +    return HTMLParagraphElement::create(document);
&gt; 
&gt; We don&apos;t want to have this function on Editor. We should just add this to CompositeEditCommand instead.
&gt;

What about the calls in createFragmentFrom{Text,Nodes}? I guess i could go back to the helper function and get to the editor from the document.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568357</commentid>
    <comment_count>16</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-02-29 22:24:35 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; (In reply to comment #14)
&gt; &gt; (From update of attachment 129621 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=129621&amp;action=review
&gt; &gt; We don&apos;t want to have this function on Editor. We should just add this to CompositeEditCommand instead.
&gt; &gt;
&gt; 
&gt; What about the calls in createFragmentFrom{Text,Nodes}? I guess i could go back to the helper function and get to the editor from the document.

Ugh... that&apos;s a good point :(  But let&apos;s also add one on CompositeEditCommand (can just be an inline function) so that we don&apos;t have to repeat document()-&gt;frame()-&gt;editor()-&gt; everywhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568932</commentid>
    <comment_count>17</comment_count>
      <attachid>129748</attachid>
    <who name="Pablo Flouret">pf</who>
    <bug_when>2012-03-01 14:33:10 -0800</bug_when>
    <thetext>Created attachment 129748
Patch

Looking back on the change i think it looks cleaner to keep the helper and do the editor check there, if you&apos;d still like to have it in CompositeEditCommand as well, i can add it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568936</commentid>
    <comment_count>18</comment_count>
      <attachid>129748</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-03-01 14:38:40 -0800</bug_when>
    <thetext>Comment on attachment 129748
Patch

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

&gt; Source/WebCore/editing/Editor.cpp:3026
&gt; +void Editor::setDefaultParagraphSeparator(EditorParagraphSeparator separator)
&gt; +{
&gt; +    ASSERT(separator == EditorParagraphSeparatorDiv || separator == EditorParagraphSeparatorP);
&gt; +    m_defaultParagraphSeparator = separator;
&gt; +}

I don&apos;t think we need an assertion here since compiler enforces the value in enum by default. Also, it&apos;s probably better to keep it inline.

&gt; Source/WebCore/editing/Editor.h:83
&gt; +enum EditorParagraphSeparator { EditorParagraphSeparatorDiv, EditorParagraphSeparatorP };

Should be EditorParagraphSeparatorIsDiv and EditorParagraphSeparatorIsP

&gt; Source/WebCore/editing/htmlediting.cpp:852
&gt; +    if (document-&gt;frame()-&gt;editor()-&gt;defaultParagraphSeparator() == EditorParagraphSeparatorP)
&gt; +        return HTMLParagraphElement::create(document);
&gt;      return HTMLDivElement::create(document);

We should use switch statement here instead so that we&apos;ll get a compilation error when a new value is added to enum and forgot to add a case here.

&gt; Source/WebCore/page/Frame.cpp:311
&gt; +
&gt; +    // Reset the editor&apos;s default paragraph separator to the default value (a div).
&gt; +    m_editor.setDefaultParagraphSeparator(EditorParagraphSeparatorDiv);

What!? We shouldn&apos;t have to do this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568975</commentid>
    <comment_count>19</comment_count>
    <who name="Pablo Flouret">pf</who>
    <bug_when>2012-03-01 15:23:27 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; (From update of attachment 129748 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=129748&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/page/Frame.cpp:311
&gt; &gt; +
&gt; &gt; +    // Reset the editor&apos;s default paragraph separator to the default value (a div).
&gt; &gt; +    m_editor.setDefaultParagraphSeparator(EditorParagraphSeparatorDiv);
&gt; 
&gt; What!? We shouldn&apos;t have to do this.

I wasn&apos;t too happy about that one either, but (for instance) if i refresh the page or navigate away the editor is reused, and consequently the separator is not reset, which i think it should be.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568984</commentid>
    <comment_count>20</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-03-01 15:34:02 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; I wasn&apos;t too happy about that one either, but (for instance) if i refresh the page or navigate away the editor is reused, and consequently the separator is not reset, which i think it should be.

Okay, it seems like we have a bug here. But we should fix it in a separate patch since we have the same problem for styleWithCSS, etc...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569000</commentid>
    <comment_count>21</comment_count>
      <attachid>129764</attachid>
    <who name="Pablo Flouret">pf</who>
    <bug_when>2012-03-01 15:47:39 -0800</bug_when>
    <thetext>Created attachment 129764
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569005</commentid>
    <comment_count>22</comment_count>
      <attachid>129764</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-03-01 15:51:13 -0800</bug_when>
    <thetext>Comment on attachment 129764
Patch

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

Where did test go?

&gt; Source/WebCore/editing/EditorCommand.cpp:1395
&gt; +        return &quot;div&quot;;

Instead of hard-coding string here, can we use divTag.localName()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569022</commentid>
    <comment_count>23</comment_count>
      <attachid>129765</attachid>
    <who name="Pablo Flouret">pf</who>
    <bug_when>2012-03-01 16:09:40 -0800</bug_when>
    <thetext>Created attachment 129765
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569024</commentid>
    <comment_count>24</comment_count>
    <who name="Pablo Flouret">pf</who>
    <bug_when>2012-03-01 16:10:50 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; (In reply to comment #19)
&gt; &gt; I wasn&apos;t too happy about that one either, but (for instance) if i refresh the page or navigate away the editor is reused, and consequently the separator is not reset, which i think it should be.
&gt; 
&gt; Okay, it seems like we have a bug here. But we should fix it in a separate patch since we have the same problem for styleWithCSS, etc...

Filed bug 80065.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569032</commentid>
    <comment_count>25</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-03-01 16:15:01 -0800</bug_when>
    <thetext>(In reply to comment #24)
&gt; (In reply to comment #20)
&gt; &gt; (In reply to comment #19)
&gt; &gt; &gt; I wasn&apos;t too happy about that one either, but (for instance) if i refresh the page or navigate away the editor is reused, and consequently the separator is not reset, which i think it should be.
&gt; &gt; 
&gt; &gt; Okay, it seems like we have a bug here. But we should fix it in a separate patch since we have the same problem for styleWithCSS, etc...
&gt; 
&gt; Filed bug 80065.

Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569410</commentid>
    <comment_count>26</comment_count>
      <attachid>129765</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-02 01:20:56 -0800</bug_when>
    <thetext>Comment on attachment 129765
Patch

Clearing flags on attachment: 129765

Committed r109529: &lt;http://trac.webkit.org/changeset/109529&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569411</commentid>
    <comment_count>27</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-02 01:21:02 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129621</attachid>
            <date>2012-02-29 20:12:21 -0800</date>
            <delta_ts>2012-03-01 14:33:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-59961-20120229201220.patch</filename>
            <type>text/plain</type>
            <size>24702</size>
            <attacher name="Pablo Flouret">pf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5MDIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTA5NDY1OWFiMTg4MDgy
NzU4OTQ0NWI5ZWFiNzIwYWVlNDhjZjVhYS4uYWU2NzFhMjY5YzI0NzNjMDQ3MGEyMDA4NWIyZDg2
ZGRmOWRkMmUxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDEyLTAyLTI5ICBQYWJs
byBGbG91cmV0ICA8cGFibG9mQG1vdG9yb2xhLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgRGVm
YXVsdFBhcmFncmFwaFNlcGFyYXRvciBleGVjQ29tbWFuZCwgdG8gbGV0IGF1dGhvcnMgY2hvb3Nl
IHRoZSBkZWZhdWx0IGJsb2NrIGVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTU5OTYxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgaHR0cDovL2R2Y3MudzMub3JnL2hnL2VkaXRpbmcvcmF3LWZpbGUv
dGlwL2VkaXRpbmcuaHRtbCN0aGUtZGVmYXVsdHBhcmFncmFwaHNlcGFyYXRvci1jb21tYW5kCisK
KyAgICAgICAgVGVzdDogZWRpdGluZy9leGVjQ29tbWFuZC9kZWZhdWx0LXBhcmFncmFwaC1zZXBh
cmF0b3IuaHRtbAorCisgICAgICAgICogZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29tbWFuZDo6aW5zZXJ0TmV3RGVmYXVs
dFBhcmFncmFwaEVsZW1lbnRBdCk6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29t
bWFuZDo6YnJlYWtPdXRPZkVtcHR5TGlzdEl0ZW0pOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9y
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6RWRpdG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OkVkaXRvcjo6Y3JlYXRlRGVmYXVsdFBhcmFncmFwaFNlcGFyYXRvckVsZW1lbnQpOgorICAg
ICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmRlZmF1
bHRQYXJhZ3JhcGhTZXBhcmF0b3JJc0Rpdik6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNl
dERlZmF1bHRQYXJhZ3JhcGhTZXBhcmF0b3JJc0Rpdik6CisgICAgICAgIChFZGl0b3IpOgorICAg
ICAgICAqIGVkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleGVj
dXRlRGVmYXVsdFBhcmFncmFwaFNlcGFyYXRvcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OnZhbHVlRGVmYXVsdFBhcmFncmFwaFNlcGFyYXRvcik6CisgICAgICAgIChX
ZWJDb3JlOjpjcmVhdGVDb21tYW5kTWFwKToKKyAgICAgICAgKiBlZGl0aW5nL0luc2VydFBhcmFn
cmFwaFNlcGFyYXRvckNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zZXJ0UGFyYWdy
YXBoU2VwYXJhdG9yQ29tbWFuZDo6ZG9BcHBseSk6CisgICAgICAgICogZWRpdGluZy9SZXBsYWNl
U2VsZWN0aW9uQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXBsYWNlbWVudEZyYWdt
ZW50OjppbnNlcnRGcmFnbWVudEZvclRlc3RSZW5kZXJpbmcpOgorICAgICAgICAqIGVkaXRpbmcv
aHRtbGVkaXRpbmcuY3BwOgorICAgICAgICAqIGVkaXRpbmcvaHRtbGVkaXRpbmcuaDoKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAqIGVkaXRpbmcvbWFya3VwLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZUZyYWdtZW50RnJvbVRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
RnJhZ21lbnRGcm9tTm9kZXMpOgorCisgICAgICAgICogaHRtbC9IVE1MUGFyYWdyYXBoRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGFyYWdyYXBoRWxlbWVudDo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGh0bWwvSFRNTFBhcmFncmFwaEVsZW1lbnQu
aDoKKyAgICAgICAgKEhUTUxQYXJhZ3JhcGhFbGVtZW50KToKKyAgICAgICAgICAgIEFkZGVkIGNy
ZWF0ZShEb2N1bWVudCopIG1ldGhvZCB0aGF0IGRlZmF1bHRzIHRvIHBUYWcgYXMgdGhlIFF1YWxp
ZmllZE5hbWUuCisKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lOjpzZXREb2N1bWVudCk6CisKIDIwMTItMDItMjcgIENocmlzIFJvZ2VycyAgPGNyb2dl
cnNAZ29vZ2xlLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgc3RhdGljIGNvbXByZXNzaW9uIGN1
cnZlIHBhcmFtZXRlcnMgZm9yIER5bmFtaWNzQ29tcHJlc3Nvck5vZGUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKaW5kZXggZjU3NjU3MTM3Yjg5
MDdhOTc0Y2MwYTU4OTQ5NTU1YzhlNmRlYWVmNy4uZTQwMDYzZTZlZGI4ODYzZTkwOWQ2MzY1OWVi
ZDZiNTQzYzRkZmM0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3Np
dGVFZGl0Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVF
ZGl0Q29tbWFuZC5jcHAKQEAgLTg2Niw3ICs4NjYsNyBAQCB2b2lkIENvbXBvc2l0ZUVkaXRDb21t
YW5kOjpyZW1vdmVQbGFjZWhvbGRlckF0KGNvbnN0IFBvc2l0aW9uJiBwKQogCiBQYXNzUmVmUHRy
PE5vZGU+IENvbXBvc2l0ZUVkaXRDb21tYW5kOjppbnNlcnROZXdEZWZhdWx0UGFyYWdyYXBoRWxl
bWVudEF0KGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlvbikKIHsKLSAgICBSZWZQdHI8RWxlbWVudD4g
cGFyYWdyYXBoRWxlbWVudCA9IGNyZWF0ZURlZmF1bHRQYXJhZ3JhcGhFbGVtZW50KGRvY3VtZW50
KCkpOworICAgIFJlZlB0cjxFbGVtZW50PiBwYXJhZ3JhcGhFbGVtZW50ID0gZG9jdW1lbnQoKS0+
ZnJhbWUoKS0+ZWRpdG9yKCktPmNyZWF0ZURlZmF1bHRQYXJhZ3JhcGhTZXBhcmF0b3JFbGVtZW50
KGRvY3VtZW50KCkpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWM7CiAgICAgcGFyYWdyYXBoRWxlbWVu
dC0+YXBwZW5kQ2hpbGQoY3JlYXRlQnJlYWtFbGVtZW50KGRvY3VtZW50KCkpLCBlYyk7CiAgICAg
aW5zZXJ0Tm9kZUF0KHBhcmFncmFwaEVsZW1lbnQsIHBvc2l0aW9uKTsKQEAgLTEyNTgsNyArMTI1
OCw3IEBAIGJvb2wgQ29tcG9zaXRlRWRpdENvbW1hbmQ6OmJyZWFrT3V0T2ZFbXB0eUxpc3RJdGVt
KCkKICAgICAgICAgICAgIG5ld0Jsb2NrID0gY3JlYXRlTGlzdEl0ZW1FbGVtZW50KGRvY3VtZW50
KCkpOwogICAgIH0KICAgICBpZiAoIW5ld0Jsb2NrKQotICAgICAgICBuZXdCbG9jayA9IGNyZWF0
ZURlZmF1bHRQYXJhZ3JhcGhFbGVtZW50KGRvY3VtZW50KCkpOworICAgICAgICBuZXdCbG9jayA9
IGRvY3VtZW50KCktPmZyYW1lKCktPmVkaXRvcigpLT5jcmVhdGVEZWZhdWx0UGFyYWdyYXBoU2Vw
YXJhdG9yRWxlbWVudChkb2N1bWVudCgpKTsKIAogICAgIGlmIChlbXB0eUxpc3RJdGVtLT5yZW5k
ZXJlcigpLT5uZXh0U2libGluZygpKSB7CiAgICAgICAgIC8vIElmIGVtcHR5TGlzdEl0ZW0gZm9s
bG93cyBhbm90aGVyIGxpc3QgaXRlbSwgc3BsaXQgdGhlIGxpc3Qgbm9kZS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmNwcAppbmRleCAxY2UyNGU1MzhkNDM1N2YxZTNlMmRiYTgwYzQ0YjRhNTg0YzJh
MDZmLi5hNGY1NzFmZmJiNzRmNTE2ZTRiYzdhMmEwYmQ0Nzg2NTQzZGUyYzM0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuY3BwCkBAIC01Miw5ICs1MiwxMSBAQAogI2luY2x1ZGUgIkZyYW1lVHJl
ZS5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5o
IgorI2luY2x1ZGUgIkhUTUxEaXZFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEZvcm1Db250cm9s
RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxGcmFtZU93bmVyRWxlbWVudC5oIgogI2luY2x1ZGUg
IkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIkhUTUxQYXJhZ3JhcGhFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiSFRNTFRleHRBcmVhRWxlbWVudC5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNp
bmNsdWRlICJJbmRlbnRPdXRkZW50Q29tbWFuZC5oIgpAQCAtODQ2LDYgKzg0OCw3IEBAIEVkaXRv
cjo6RWRpdG9yKEZyYW1lKiBmcmFtZSkKICAgICAsIG1fc3BlbGxDaGVja2VyKGFkb3B0UHRyKG5l
dyBTcGVsbENoZWNrZXIoZnJhbWUpKSkKICAgICAsIG1fc3BlbGxpbmdDb3JyZWN0b3IoYWRvcHRQ
dHIobmV3IFNwZWxsaW5nQ29ycmVjdGlvbkNvbnRyb2xsZXIoZnJhbWUpKSkKICAgICAsIG1fYXJl
TWFya2VkVGV4dE1hdGNoZXNIaWdobGlnaHRlZChmYWxzZSkKKyAgICAsIG1fZGVmYXVsdFBhcmFn
cmFwaFNlcGFyYXRvcklzRGl2KHRydWUpCiB7CiB9CiAKQEAgLTMwMTgsNCArMzAyMSwxMCBAQCBi
b29sIEVkaXRvcjo6dW5pZmllZFRleHRDaGVja2VyRW5hYmxlZCgpIGNvbnN0CiAgICAgcmV0dXJu
IFdlYkNvcmU6OnVuaWZpZWRUZXh0Q2hlY2tlckVuYWJsZWQobV9mcmFtZSk7CiB9CiAKK1Bhc3NS
ZWZQdHI8SFRNTEVsZW1lbnQ+IEVkaXRvcjo6Y3JlYXRlRGVmYXVsdFBhcmFncmFwaFNlcGFyYXRv
ckVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KSBjb25zdAoreworICAgIGlmIChkZWZhdWx0UGFy
YWdyYXBoU2VwYXJhdG9ySXNEaXYoKSkKKyAgICAgICAgcmV0dXJuIEhUTUxEaXZFbGVtZW50Ojpj
cmVhdGUoZG9jdW1lbnQpOworICAgIHJldHVybiBIVE1MUGFyYWdyYXBoRWxlbWVudDo6Y3JlYXRl
KGRvY3VtZW50KTsKK30KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ci5oCmluZGV4IGUzOThiYmYzZTc4NzljMDc4NDM1OTUxZGFkNTIxZDdhZmU5ZTUyYTEuLjU3NGM4
YzVjZDhkMTI3MDRiOTcyZmFhYjNlZmEyNWU0YTllYjkzZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3IuaApAQCAtMzgzLDYgKzM4MywxMCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGRldmljZVNjYWxl
RmFjdG9yQ2hhbmdlZCgpOwogCisgICAgYm9vbCBkZWZhdWx0UGFyYWdyYXBoU2VwYXJhdG9ySXNE
aXYoKSBjb25zdCB7IHJldHVybiBtX2RlZmF1bHRQYXJhZ3JhcGhTZXBhcmF0b3JJc0RpdjsgfQor
ICAgIHZvaWQgc2V0RGVmYXVsdFBhcmFncmFwaFNlcGFyYXRvcklzRGl2KGJvb2wgaXNEaXYpIHsg
bV9kZWZhdWx0UGFyYWdyYXBoU2VwYXJhdG9ySXNEaXYgPSBpc0RpdjsgfTsKKyAgICBQYXNzUmVm
UHRyPEhUTUxFbGVtZW50PiBjcmVhdGVEZWZhdWx0UGFyYWdyYXBoU2VwYXJhdG9yRWxlbWVudChE
b2N1bWVudCopIGNvbnN0OworCiBwcml2YXRlOgogICAgIEZyYW1lKiBtX2ZyYW1lOwogICAgIE93
blB0cjxEZWxldGVCdXR0b25Db250cm9sbGVyPiBtX2RlbGV0ZUJ1dHRvbkNvbnRyb2xsZXI7CkBA
IC00MDAsNiArNDA0LDcgQEAgcHJpdmF0ZToKICAgICBPd25QdHI8U3BlbGxpbmdDb3JyZWN0aW9u
Q29udHJvbGxlcj4gbV9zcGVsbGluZ0NvcnJlY3RvcjsKICAgICBWaXNpYmxlU2VsZWN0aW9uIG1f
bWFyazsKICAgICBib29sIG1fYXJlTWFya2VkVGV4dE1hdGNoZXNIaWdobGlnaHRlZDsKKyAgICBi
b29sIG1fZGVmYXVsdFBhcmFncmFwaFNlcGFyYXRvcklzRGl2OyAvLyBTaG91bGQgYmUgUCBvdGhl
cndpc2UuCiAKICAgICBib29sIGNhbkRlbGV0ZVJhbmdlKFJhbmdlKikgY29uc3Q7CiAgICAgYm9v
bCBjYW5TbWFydFJlcGxhY2VXaXRoUGFzdGVib2FyZChQYXN0ZWJvYXJkKik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcAppbmRleCBhNDEzNzQyNWQwNDRlMWM0OTFlM2Fj
NmM2YTgwMmJhMzM3NzQwNmY5Li41ZDU1NGFlNWMwZWFhY2FkNTA3M2Q0MTFmODc2ZTU2ODdjNmUx
MGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAKQEAgLTMwNyw2
ICszMDcsMTYgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZUN1dChGcmFtZSogZnJhbWUsIEV2ZW50Kiwg
RWRpdG9yQ29tbWFuZFNvdXJjZSBzb3VyY2UsIGNvbnN0IFMKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAorc3RhdGljIGJvb2wgZXhlY3V0ZURlZmF1bHRQYXJhZ3JhcGhTZXBhcmF0b3IoRnJhbWUqIGZy
YW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYgdmFsdWUpCit7
CisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHZhbHVlLCAiZGl2IikpCisgICAgICAgIGZyYW1l
LT5lZGl0b3IoKS0+c2V0RGVmYXVsdFBhcmFncmFwaFNlcGFyYXRvcklzRGl2KHRydWUpOworICAg
IGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHZhbHVlLCAicCIpKQorICAgICAgICBmcmFtZS0+
ZWRpdG9yKCktPnNldERlZmF1bHRQYXJhZ3JhcGhTZXBhcmF0b3JJc0RpdihmYWxzZSk7CisKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKwogc3RhdGljIGJvb2wgZXhlY3V0ZURlbGV0ZShGcmFtZSogZnJh
bWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSBzb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7
CiAgICAgc3dpdGNoIChzb3VyY2UpIHsKQEAgLTEzNzgsNiArMTM4OCwxMSBAQCBzdGF0aWMgU3Ry
aW5nIHZhbHVlQmFja0NvbG9yKEZyYW1lKiBmcmFtZSwgRXZlbnQqKQogICAgIHJldHVybiB2YWx1
ZVN0eWxlKGZyYW1lLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7CiB9CiAKK3N0YXRpYyBT
dHJpbmcgdmFsdWVEZWZhdWx0UGFyYWdyYXBoU2VwYXJhdG9yKEZyYW1lKiBmcmFtZSwgRXZlbnQq
KQoreworICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCktPmRlZmF1bHRQYXJhZ3JhcGhTZXBhcmF0
b3JJc0RpdigpID8gImRpdiIgOiAicCI7Cit9CisKIHN0YXRpYyBTdHJpbmcgdmFsdWVGb250TmFt
ZShGcmFtZSogZnJhbWUsIEV2ZW50KikKIHsKICAgICByZXR1cm4gdmFsdWVTdHlsZShmcmFtZSwg
Q1NTUHJvcGVydHlGb250RmFtaWx5KTsKQEAgLTE0MjksNiArMTQ0NCw3IEBAIHN0YXRpYyBjb25z
dCBDb21tYW5kTWFwJiBjcmVhdGVDb21tYW5kTWFwKCkKICAgICAgICAgeyAiQ29weSIsIHsgZXhl
Y3V0ZUNvcHksIHN1cHBvcnRlZENvcHlDdXQsIGVuYWJsZWRDb3B5LCBzdGF0ZU5vbmUsIHZhbHVl
TnVsbCwgbm90VGV4dEluc2VydGlvbiwgYWxsb3dFeGVjdXRpb25XaGVuRGlzYWJsZWQgfSB9LAog
ICAgICAgICB7ICJDcmVhdGVMaW5rIiwgeyBleGVjdXRlQ3JlYXRlTGluaywgc3VwcG9ydGVkLCBl
bmFibGVkSW5SaWNobHlFZGl0YWJsZVRleHQsIHN0YXRlTm9uZSwgdmFsdWVOdWxsLCBub3RUZXh0
SW5zZXJ0aW9uLCBkb05vdEFsbG93RXhlY3V0aW9uV2hlbkRpc2FibGVkIH0gfSwKICAgICAgICAg
eyAiQ3V0IiwgeyBleGVjdXRlQ3V0LCBzdXBwb3J0ZWRDb3B5Q3V0LCBlbmFibGVkQ3V0LCBzdGF0
ZU5vbmUsIHZhbHVlTnVsbCwgbm90VGV4dEluc2VydGlvbiwgYWxsb3dFeGVjdXRpb25XaGVuRGlz
YWJsZWQgfSB9LAorICAgICAgICB7ICJEZWZhdWx0UGFyYWdyYXBoU2VwYXJhdG9yIiwgeyBleGVj
dXRlRGVmYXVsdFBhcmFncmFwaFNlcGFyYXRvciwgc3VwcG9ydGVkLCBlbmFibGVkLCBzdGF0ZU5v
bmUsIHZhbHVlRGVmYXVsdFBhcmFncmFwaFNlcGFyYXRvciwgbm90VGV4dEluc2VydGlvbiwgZG9O
b3RBbGxvd0V4ZWN1dGlvbldoZW5EaXNhYmxlZH0gfSwKICAgICAgICAgeyAiRGVsZXRlIiwgeyBl
eGVjdXRlRGVsZXRlLCBzdXBwb3J0ZWQsIGVuYWJsZWREZWxldGUsIHN0YXRlTm9uZSwgdmFsdWVO
dWxsLCBub3RUZXh0SW5zZXJ0aW9uLCBkb05vdEFsbG93RXhlY3V0aW9uV2hlbkRpc2FibGVkIH0g
fSwKICAgICAgICAgeyAiRGVsZXRlQmFja3dhcmQiLCB7IGV4ZWN1dGVEZWxldGVCYWNrd2FyZCwg
c3VwcG9ydGVkRnJvbU1lbnVPcktleUJpbmRpbmcsIGVuYWJsZWRJbkVkaXRhYmxlVGV4dCwgc3Rh
dGVOb25lLCB2YWx1ZU51bGwsIG5vdFRleHRJbnNlcnRpb24sIGRvTm90QWxsb3dFeGVjdXRpb25X
aGVuRGlzYWJsZWQgfSB9LAogICAgICAgICB7ICJEZWxldGVCYWNrd2FyZEJ5RGVjb21wb3NpbmdQ
cmV2aW91c0NoYXJhY3RlciIsIHsgZXhlY3V0ZURlbGV0ZUJhY2t3YXJkQnlEZWNvbXBvc2luZ1By
ZXZpb3VzQ2hhcmFjdGVyLCBzdXBwb3J0ZWRGcm9tTWVudU9yS2V5QmluZGluZywgZW5hYmxlZElu
RWRpdGFibGVUZXh0LCBzdGF0ZU5vbmUsIHZhbHVlTnVsbCwgbm90VGV4dEluc2VydGlvbiwgZG9O
b3RBbGxvd0V4ZWN1dGlvbldoZW5EaXNhYmxlZCB9IH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0luc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQuY3BwIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9JbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kLmNwcAppbmRl
eCA0NmYzYzhhNWQ5YWJlNGNiZDNhM2FiOGZlODFjOTYzZWRjOGQ0MzY4Li44MDc2NTU1NWYxMjk4
NWIxYWIyOTBhMTAyZDY5N2RiN2E2YjZmZWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0luc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZC5jcHAKQEAgLTI5
LDYgKzI5LDggQEAKICNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCiAjaW5jbHVkZSAiRG9j
dW1lbnQuaCIKICNpbmNsdWRlICJFZGl0aW5nU3R5bGUuaCIKKyNpbmNsdWRlICJFZGl0b3IuaCIK
KyNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAjaW5jbHVkZSAi
SFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSW5zZXJ0TGluZUJyZWFrQ29tbWFuZC5oIgpAQCAtMjAz
LDEwICsyMDUsMTAgQEAgdm9pZCBJbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kOjpkb0Fw
cGx5KCkKICAgICAvLyBDcmVhdGUgYmxvY2sgdG8gYmUgaW5zZXJ0ZWQuCiAgICAgUmVmUHRyPEVs
ZW1lbnQ+IGJsb2NrVG9JbnNlcnQ7CiAgICAgaWYgKHN0YXJ0QmxvY2sgPT0gc3RhcnRCbG9jay0+
cm9vdEVkaXRhYmxlRWxlbWVudCgpKSB7Ci0gICAgICAgIGJsb2NrVG9JbnNlcnQgPSBjcmVhdGVE
ZWZhdWx0UGFyYWdyYXBoRWxlbWVudChkb2N1bWVudCgpKTsKKyAgICAgICAgYmxvY2tUb0luc2Vy
dCA9IGRvY3VtZW50KCktPmZyYW1lKCktPmVkaXRvcigpLT5jcmVhdGVEZWZhdWx0UGFyYWdyYXBo
U2VwYXJhdG9yRWxlbWVudChkb2N1bWVudCgpKTsKICAgICAgICAgbmVzdE5ld0Jsb2NrID0gdHJ1
ZTsKICAgICB9IGVsc2UgaWYgKHNob3VsZFVzZURlZmF1bHRQYXJhZ3JhcGhFbGVtZW50KHN0YXJ0
QmxvY2spKSAKLSAgICAgICAgYmxvY2tUb0luc2VydCA9IGNyZWF0ZURlZmF1bHRQYXJhZ3JhcGhF
bGVtZW50KGRvY3VtZW50KCkpOworICAgICAgICBibG9ja1RvSW5zZXJ0ID0gZG9jdW1lbnQoKS0+
ZnJhbWUoKS0+ZWRpdG9yKCktPmNyZWF0ZURlZmF1bHRQYXJhZ3JhcGhTZXBhcmF0b3JFbGVtZW50
KGRvY3VtZW50KCkpOwogICAgIGVsc2UKICAgICAgICAgYmxvY2tUb0luc2VydCA9IHN0YXJ0Qmxv
Y2stPmNsb25lRWxlbWVudFdpdGhvdXRDaGlsZHJlbigpOwogCkBAIC0yMTgsNyArMjIwLDcgQEAg
dm9pZCBJbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kOjpkb0FwcGx5KCkKICAgICAgICAg
ICAgIGlmIChpc0ZpcnN0SW5CbG9jayAmJiAhbGluZUJyZWFrRXhpc3RzQXRWaXNpYmxlUG9zaXRp
b24odmlzaWJsZVBvcykpIHsKICAgICAgICAgICAgICAgICAvLyBUaGUgYmxvY2sgaXMgZW1wdHku
ICBDcmVhdGUgYW4gZW1wdHkgYmxvY2sgdG8KICAgICAgICAgICAgICAgICAvLyByZXByZXNlbnQg
dGhlIHBhcmFncmFwaCB0aGF0IHdlJ3JlIGxlYXZpbmcuCi0gICAgICAgICAgICAgICAgUmVmUHRy
PEVsZW1lbnQ+IGV4dHJhQmxvY2sgPSBjcmVhdGVEZWZhdWx0UGFyYWdyYXBoRWxlbWVudChkb2N1
bWVudCgpKTsKKyAgICAgICAgICAgICAgICBSZWZQdHI8RWxlbWVudD4gZXh0cmFCbG9jayA9IGRv
Y3VtZW50KCktPmZyYW1lKCktPmVkaXRvcigpLT5jcmVhdGVEZWZhdWx0UGFyYWdyYXBoU2VwYXJh
dG9yRWxlbWVudChkb2N1bWVudCgpKTsKICAgICAgICAgICAgICAgICBhcHBlbmROb2RlKGV4dHJh
QmxvY2ssIHN0YXJ0QmxvY2spOwogICAgICAgICAgICAgICAgIGFwcGVuZEJsb2NrUGxhY2Vob2xk
ZXIoZXh0cmFCbG9jayk7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCmluZGV4IDk1ZmRhZjA2MGE4YjU1OTU3
Y2Q4NTI0NWRiNWQ3ZGQ1MjdhODAyYzIuLjQ3YjcxOGJhYmYyYjAyZDczMDEwMDBkZWUwMDc0YzFl
ZDNjYzIxY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVj
dGlvbkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVj
dGlvbkNvbW1hbmQuY3BwCkBAIC0yNDcsNyArMjQ3LDcgQEAgdm9pZCBSZXBsYWNlbWVudEZyYWdt
ZW50OjppbnNlcnROb2RlQmVmb3JlKFBhc3NSZWZQdHI8Tm9kZT4gbm9kZSwgTm9kZSogcmVmTm9k
ZSkKIAogUGFzc1JlZlB0cjxTdHlsZWRFbGVtZW50PiBSZXBsYWNlbWVudEZyYWdtZW50OjppbnNl
cnRGcmFnbWVudEZvclRlc3RSZW5kZXJpbmcoTm9kZSogcm9vdEVkaXRhYmxlRWxlbWVudCkKIHsK
LSAgICBSZWZQdHI8U3R5bGVkRWxlbWVudD4gaG9sZGVyID0gY3JlYXRlRGVmYXVsdFBhcmFncmFw
aEVsZW1lbnQobV9kb2N1bWVudC5nZXQoKSk7CisgICAgUmVmUHRyPFN0eWxlZEVsZW1lbnQ+IGhv
bGRlciA9IG1fZG9jdW1lbnQtPmZyYW1lKCktPmVkaXRvcigpLT5jcmVhdGVEZWZhdWx0UGFyYWdy
YXBoU2VwYXJhdG9yRWxlbWVudChtX2RvY3VtZW50LmdldCgpKTsKICAgICAKICAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1s
ZWRpdGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcAppbmRl
eCAwNzA0NjEwMGU0N2M3N2VkYjE5M2FkYjQyN2Y3NTE1ZTYyMjIxZjBkLi40OTAwYzU4MWE0ZmQ2
OTEzMDJiNzkxMGYyNjYxYWZkNDlkMTE5YzJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL2h0bWxlZGl0aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxl
ZGl0aW5nLmNwcApAQCAtODQyLDExICs4NDIsNiBAQCBib29sIGlzRW1wdHlUYWJsZUNlbGwoY29u
c3QgTm9kZSogbm9kZSkKICAgICByZXR1cm4gIWNoaWxkUmVuZGVyZXItPm5leHRTaWJsaW5nKCk7
CiB9CiAKLVBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IGNyZWF0ZURlZmF1bHRQYXJhZ3JhcGhFbGVt
ZW50KERvY3VtZW50KiBkb2N1bWVudCkKLXsKLSAgICByZXR1cm4gSFRNTERpdkVsZW1lbnQ6OmNy
ZWF0ZShkb2N1bWVudCk7Ci19Ci0KIFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IGNyZWF0ZUJyZWFr
RWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCiB7CiAgICAgcmV0dXJuIEhUTUxCUkVsZW1lbnQ6
OmNyZWF0ZShkb2N1bWVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0
bWxlZGl0aW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmgKaW5kZXgg
YWJiNDllMzEyMjQ0NzRhNjFkMWZlMWRjNmEyNjc3OWUwMDAwMTRiMS4uMDg0MDZmNTBhOTJmYWEw
ZWFiYTE5ODc5MDMyNWQxMWZjY2ViNjk4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9odG1sZWRpdGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRp
bmcuaApAQCAtMTk5LDcgKzE5OSw2IEBAIFBhc3NSZWZQdHI8UmFuZ2U+IGF2b2lkSW50ZXJzZWN0
aW9uV2l0aE5vZGUoY29uc3QgUmFuZ2UqLCBOb2RlKik7CiAgICAgCiAvLyBGdW5jdGlvbnMgcmV0
dXJuaW5nIEhUTUxFbGVtZW50CiAgICAgCi1QYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBjcmVhdGVE
ZWZhdWx0UGFyYWdyYXBoRWxlbWVudChEb2N1bWVudCopOwogUGFzc1JlZlB0cjxIVE1MRWxlbWVu
dD4gY3JlYXRlQnJlYWtFbGVtZW50KERvY3VtZW50Kik7CiBQYXNzUmVmUHRyPEhUTUxFbGVtZW50
PiBjcmVhdGVPcmRlcmVkTGlzdEVsZW1lbnQoRG9jdW1lbnQqKTsKIFBhc3NSZWZQdHI8SFRNTEVs
ZW1lbnQ+IGNyZWF0ZVVub3JkZXJlZExpc3RFbGVtZW50KERvY3VtZW50Kik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL21hcmt1cC5jcHAKaW5kZXggYzBjMGJmNGRiNTNiYzJmNjc4N2RkOTFmNGM3YzA2NTMyZDVm
MjI3Ni4uNDY1ZGQ1N2Y5ZjU1MWUwMzExZTc3ZTk3YTcxODQwNTUwNGNmMWZmNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvbWFya3VwLmNwcApAQCAtOTAwLDcgKzkwMCw3IEBAIFBhc3NSZWZQdHI8RG9jdW1l
bnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGcm9tVGV4dChSYW5nZSogY29udGV4dCwgY29uc3Qg
U3RyaW5nCiAgICAgICAgICAgICBpZiAodXNlQ2xvbmVzT2ZFbmNsb3NpbmdCbG9jaykKICAgICAg
ICAgICAgICAgICBlbGVtZW50ID0gYmxvY2stPmNsb25lRWxlbWVudFdpdGhvdXRDaGlsZHJlbigp
OwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBjcmVhdGVEZWZh
dWx0UGFyYWdyYXBoRWxlbWVudChkb2N1bWVudCk7CisgICAgICAgICAgICAgICAgZWxlbWVudCA9
IGRvY3VtZW50LT5mcmFtZSgpLT5lZGl0b3IoKS0+Y3JlYXRlRGVmYXVsdFBhcmFncmFwaFNlcGFy
YXRvckVsZW1lbnQoZG9jdW1lbnQpOwogICAgICAgICAgICAgZmlsbENvbnRhaW5lckZyb21TdHJp
bmcoZWxlbWVudC5nZXQoKSwgcyk7CiAgICAgICAgIH0KICAgICAgICAgZnJhZ21lbnQtPmFwcGVu
ZENoaWxkKGVsZW1lbnQucmVsZWFzZSgpLCBlYyk7CkBAIC05MjMsNyArOTIzLDcgQEAgUGFzc1Jl
ZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZyb21Ob2RlcyhEb2N1bWVudCAq
ZG9jdW1lbnQsIGNvbnN0IFYKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBzaXplX3Qg
c2l6ZSA9IG5vZGVzLnNpemUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsr
aSkgewotICAgICAgICBSZWZQdHI8RWxlbWVudD4gZWxlbWVudCA9IGNyZWF0ZURlZmF1bHRQYXJh
Z3JhcGhFbGVtZW50KGRvY3VtZW50KTsKKyAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQg
PSBkb2N1bWVudC0+ZnJhbWUoKS0+ZWRpdG9yKCktPmNyZWF0ZURlZmF1bHRQYXJhZ3JhcGhTZXBh
cmF0b3JFbGVtZW50KGRvY3VtZW50KTsKICAgICAgICAgZWxlbWVudC0+YXBwZW5kQ2hpbGQobm9k
ZXNbaV0sIGVjKTsKICAgICAgICAgQVNTRVJUKCFlYyk7CiAgICAgICAgIGZyYWdtZW50LT5hcHBl
bmRDaGlsZChlbGVtZW50LnJlbGVhc2UoKSwgZWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MUGFyYWdyYXBoRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxQYXJhZ3JhcGhFbGVtZW50LmNwcAppbmRleCBjOGY2YWQzZWUzNDY0MmY2ODU5MjMwMTM0OGMy
ZmE2YmM1YzY5NDcwLi5hZTg5NjE5YTU0MGZlOWU2OWM1YTg2ZjJlOTFjNjQyMDg2YWI2ZDliIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQYXJhZ3JhcGhFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQYXJhZ3JhcGhFbGVtZW50LmNwcApAQCAtMzks
NiArMzksMTEgQEAgaW5saW5lIEhUTUxQYXJhZ3JhcGhFbGVtZW50OjpIVE1MUGFyYWdyYXBoRWxl
bWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLAogICAgIEFTU0VSVChoYXNUYWdOYW1l
KHBUYWcpKTsKIH0KIAorUGFzc1JlZlB0cjxIVE1MUGFyYWdyYXBoRWxlbWVudD4gSFRNTFBhcmFn
cmFwaEVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBIVE1MUGFyYWdyYXBoRWxlbWVudChwVGFnLCBkb2N1bWVudCkpOworfQorCiBQ
YXNzUmVmUHRyPEhUTUxQYXJhZ3JhcGhFbGVtZW50PiBIVE1MUGFyYWdyYXBoRWxlbWVudDo6Y3Jl
YXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKIHsK
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxQYXJhZ3JhcGhFbGVtZW50KHRhZ05hbWUsIGRv
Y3VtZW50KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQYXJhZ3JhcGhF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQYXJhZ3JhcGhFbGVtZW50LmgKaW5k
ZXggODZhODVhNjNhZDdhNDNmMGY3NzAzZTQyNmRlNzFkNmE3NjVkMDYzMi4uZDAxZWRjMmM1Mzg4
ODFjYzZjMTExMGVhZjEzZDkxOWU0OTNjMDMwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MUGFyYWdyYXBoRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFBhcmFncmFwaEVsZW1lbnQuaApAQCAtMjksNiArMjksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIEhUTUxQYXJhZ3JhcGhFbGVtZW50IDogcHVibGljIEhUTUxFbGVtZW50IHsKIHB1
YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MUGFyYWdyYXBoRWxlbWVudD4gY3JlYXRl
KERvY3VtZW50Kik7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTFBhcmFncmFwaEVsZW1lbnQ+
IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAogcHJpdmF0ZToKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZS5jcHAKaW5kZXggZGQzMGQ3MzdhY2JmM2JhMDJiMWEyNWEwYTk0N2VkYjdjMDY1
NDFlMC4uNmIzODk3NjhkNjg4NjA2Njk1Mjk4Y2M5YWVkOTY1YmU1YWJlMjI2ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZS5jcHAKQEAgLTMwNiw2ICszMDYsOSBAQCB2b2lkIEZyYW1lOjpzZXREb2N1bWVudChQ
YXNzUmVmUHRyPERvY3VtZW50PiBuZXdEb2MpCiAgICAgICAgIG5vdGlmeUNocm9tZUNsaWVudFdo
ZWVsRXZlbnRIYW5kbGVyQ291bnRDaGFuZ2VkKCk7CiAgICAgICAgIG5vdGlmeUNocm9tZUNsaWVu
dFRvdWNoRXZlbnRIYW5kbGVyQ291bnRDaGFuZ2VkKCk7CiAgICAgfQorCisgICAgLy8gUmVzZXQg
dGhlIGVkaXRvcidzIGRlZmF1bHQgcGFyYWdyYXBoIHNlcGFyYXRvciB0byB0aGUgZGVmYXVsdCB2
YWx1ZSAoYSBkaXYpLgorICAgIG1fZWRpdG9yLnNldERlZmF1bHRQYXJhZ3JhcGhTZXBhcmF0b3JJ
c0Rpdih0cnVlKTsKIH0KIAogI2lmIEVOQUJMRShPUklFTlRBVElPTl9FVkVOVFMpCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
NmZkNWZjMTEyOTgzN2Y0Yzc4NmY0Yzg2MmFhN2VmMTM4MzI5ODhmYy4uNzJmZDY2OGI0OGNjMjAx
ZTRmMWU0ZjVlNzdjMGQ4Y2I4YTJjNWNlMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEyLTAy
LTI5ICBQYWJsbyBGbG91cmV0ICA8cGFibG9mQG1vdG9yb2xhLmNvbT4KKworICAgICAgICBJbXBs
ZW1lbnQgRGVmYXVsdFBhcmFncmFwaFNlcGFyYXRvciBleGVjQ29tbWFuZCwgdG8gbGV0IGF1dGhv
cnMgY2hvb3NlIHRoZSBkZWZhdWx0IGJsb2NrIGVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5OTYxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBlZGl0aW5nL2V4ZWNDb21tYW5kL2RlZmF1bHQt
cGFyYWdyYXBoLXNlcGFyYXRvci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRp
bmcvZXhlY0NvbW1hbmQvZGVmYXVsdC1wYXJhZ3JhcGgtc2VwYXJhdG9yLmh0bWw6IEFkZGVkLgor
CiAyMDEyLTAyLTI3ICBDaHJpcyBSb2dlcnMgIDxjcm9nZXJzQGdvb2dsZS5jb20+CiAKICAgICAg
ICAgSW1wbGVtZW50IHN0YXRpYyBjb21wcmVzc2lvbiBjdXJ2ZSBwYXJhbWV0ZXJzIGZvciBEeW5h
bWljc0NvbXByZXNzb3JOb2RlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWND
b21tYW5kL2RlZmF1bHQtcGFyYWdyYXBoLXNlcGFyYXRvci1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL2RlZmF1bHQtcGFyYWdyYXBoLXNlcGFyYXRvci1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZmFkYjFiN2NmNzRlZjYxNGI3Yzg4NWE0ZDc2NmIyN2Y1OGM0
MDY0MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQv
ZGVmYXVsdC1wYXJhZ3JhcGgtc2VwYXJhdG9yLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDY1IEBA
CitQQVNTIGRvY3VtZW50LnF1ZXJ5Q29tbWFuZEVuYWJsZWQoJ0RlZmF1bHRQYXJhZ3JhcGhTZXBh
cmF0b3InKSBpcyB0cnVlCitQQVNTIGRvY3VtZW50LnF1ZXJ5Q29tbWFuZFZhbHVlKCdEZWZhdWx0
UGFyYWdyYXBoU2VwYXJhdG9yJykgaXMgImRpdiIKK2RvY3VtZW50LmV4ZWNDb21tYW5kKCdEZWZh
dWx0UGFyYWdyYXBoU2VwYXJhdG9yJywgZmFsc2UsICdwJykKK1BBU1MgZG9jdW1lbnQucXVlcnlD
b21tYW5kVmFsdWUoJ0RlZmF1bHRQYXJhZ3JhcGhTZXBhcmF0b3InKSBpcyAicCIKK2RvY3VtZW50
LmV4ZWNDb21tYW5kKCdEZWZhdWx0UGFyYWdyYXBoU2VwYXJhdG9yJywgZmFsc2UsICdicicpCitQ
QVNTIGRvY3VtZW50LnF1ZXJ5Q29tbWFuZFZhbHVlKCdEZWZhdWx0UGFyYWdyYXBoU2VwYXJhdG9y
JykgaXMgInAiCitkb2N1bWVudC5leGVjQ29tbWFuZCgnRGVmYXVsdFBhcmFncmFwaFNlcGFyYXRv
cicsIGZhbHNlLCAnaW52YWxpZCcpCitQQVNTIGRvY3VtZW50LnF1ZXJ5Q29tbWFuZFZhbHVlKCdE
ZWZhdWx0UGFyYWdyYXBoU2VwYXJhdG9yJykgaXMgInAiCisKK0NyZWF0aW5nIHBhcmFncmFwaHMg
aW4gdGhlIG5vcm1hbCB3YXkuCitkb2N1bWVudC5leGVjQ29tbWFuZCgnSW5zZXJ0VGV4dCcsIGZh
bHNlLCAnYScpCitQQVNTIGRpdi5pbm5lckhUTUwgaXMgImEiCitkb2N1bWVudC5leGVjQ29tbWFu
ZCgnSW5zZXJ0VGV4dCcsIGZhbHNlLCAnXG4nKQorUEFTUyBkaXYuaW5uZXJIVE1MIGlzICJhPHA+
PGJyPjwvcD4iCitkb2N1bWVudC5leGVjQ29tbWFuZCgnSW5zZXJ0VGV4dCcsIGZhbHNlLCAnYicp
CitQQVNTIGRpdi5pbm5lckhUTUwgaXMgImE8cD5iPC9wPiIKK2RvY3VtZW50LmV4ZWNDb21tYW5k
KCdJbnNlcnRUZXh0JywgZmFsc2UsICdcbicpCitQQVNTIGRpdi5pbm5lckhUTUwgaXMgImE8cD5i
PC9wPjxwPjxicj48L3A+IgorZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ0RlbGV0ZScpCitQQVNTIGRp
di5pbm5lckhUTUwgaXMgImE8cD5iPC9wPiIKK2RvY3VtZW50LmV4ZWNDb21tYW5kKCdEZWxldGUn
KQorUEFTUyBkaXYuaW5uZXJIVE1MIGlzICJhPHA+PGJyPjwvcD4iCitkb2N1bWVudC5leGVjQ29t
bWFuZCgnRGVsZXRlJykKK1BBU1MgZGl2LmlubmVySFRNTCBpcyAiYSIKK2RvY3VtZW50LmV4ZWND
b21tYW5kKCdEZWZhdWx0UGFyYWdyYXBoU2VwYXJhdG9yJywgZmFsc2UsICdkaXYnKQorZG9jdW1l
bnQuZXhlY0NvbW1hbmQoJ0luc2VydFBhcmFncmFwaCcpCitQQVNTIGRpdi5pbm5lckhUTUwgaXMg
ImE8ZGl2Pjxicj48L2Rpdj4iCitkaXYuaW5uZXJIVE1MID0gJycKKworVXNpbmcgdGhlIHByZXZp
b3VzIGJsb2NrIGFzIHRlbXBsYXRlIGZvciB0aGUgbmV3IG9uZS4KK2RvY3VtZW50LmV4ZWNDb21t
YW5kKCdEZWZhdWx0UGFyYWdyYXBoU2VwYXJhdG9yJywgZmFsc2UsICdwJykKK2RvY3VtZW50LmV4
ZWNDb21tYW5kKCJJbnNlcnRIVE1MIiwgZmFsc2UsICI8cHJlPmE8L3ByZT4iKTsKK1BBU1MgZGl2
LmlubmVySFRNTCBpcyAiPHByZT5hPC9wcmU+IgorZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ0luc2Vy
dFRleHQnLCBmYWxzZSwgJ2InKQorUEFTUyBkaXYuaW5uZXJIVE1MIGlzICI8cHJlPmFiPC9wcmU+
IgorZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ0luc2VydFRleHQnLCBmYWxzZSwgJ1xuJykKK1BBU1Mg
ZGl2LmlubmVySFRNTCBpcyAiPHByZT5hYjwvcHJlPjxwcmU+PGJyPjwvcHJlPiIKK2RvY3VtZW50
LmV4ZWNDb21tYW5kKCdJbnNlcnRUZXh0JywgZmFsc2UsICdjJykKK1BBU1MgZGl2LmlubmVySFRN
TCBpcyAiPHByZT5hYjwvcHJlPjxwcmU+YzwvcHJlPiIKK2RvY3VtZW50LmV4ZWNDb21tYW5kKCdE
ZWZhdWx0UGFyYWdyYXBoU2VwYXJhdG9yJywgZmFsc2UsICdkaXYnKQorZG9jdW1lbnQuZXhlY0Nv
bW1hbmQoJ0luc2VydFRleHQnLCBmYWxzZSwgJ1xuJykKK1BBU1MgZGl2LmlubmVySFRNTCBpcyAi
PHByZT5hYjwvcHJlPjxwcmU+YzwvcHJlPjxwcmU+PGJyPjwvcHJlPiIKK2RvY3VtZW50LmV4ZWND
b21tYW5kKCdEZWxldGUnKQorZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ0luc2VydFBhcmFncmFwaCcp
CitQQVNTIGRpdi5pbm5lckhUTUwgaXMgIjxwcmU+YWI8L3ByZT48cHJlPmM8L3ByZT48cHJlPjxi
cj48L3ByZT4iCisKK0JyZWFraW5nIG91dCBvZiBsaXN0cy4KK2Rpdi5pbm5lckhUTUwgPSAnJwor
ZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ0RlZmF1bHRQYXJhZ3JhcGhTZXBhcmF0b3InLCBmYWxzZSwg
J3AnKQorZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkluc2VydEhUTUwiLCBmYWxzZSwgIjx1bD48bGk+
YTwvbGk+PC91bD4iKQorUEFTUyBkaXYuaW5uZXJIVE1MIGlzICI8dWw+PGxpPmE8L2xpPjwvdWw+
IgorZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ0luc2VydFBhcmFncmFwaCcpCitkb2N1bWVudC5leGVj
Q29tbWFuZCgnSW5zZXJ0UGFyYWdyYXBoJykKK1BBU1MgZGl2LmlubmVySFRNTCBpcyAiPHVsPjxs
aT5hPC9saT48L3VsPjxwPjxicj48L3A+IgorCitCcmVha2luZyB1cCBuZXN0ZWQgZWxlbWVudHMu
CitkaXYuaW5uZXJIVE1MID0gJycKK2RvY3VtZW50LmV4ZWNDb21tYW5kKCJJbnNlcnRIVE1MIiwg
ZmFsc2UsICI8Y2l0ZT5hPGNpdGU+YmM8L2NpdGU+PC9jaXRlPiIpCitzZWxlY3Rpb24ubW9kaWZ5
KCJtb3ZlIiwgImJhY2t3YXJkIiwgImNoYXJhY3RlciIpCitkb2N1bWVudC5leGVjQ29tbWFuZCgn
SW5zZXJ0UGFyYWdyYXBoJykKK1BBU1MgZGl2LmlubmVySFRNTCBpcyAiPGNpdGU+YTxjaXRlPmI8
L2NpdGU+PC9jaXRlPjxwPjxjaXRlPjxjaXRlPmM8L2NpdGU+PC9jaXRlPjwvcD4iCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9kZWZhdWx0LXBhcmFncmFwaC1zZXBhcmF0
b3IuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvZGVmYXVsdC1wYXJhZ3Jh
cGgtc2VwYXJhdG9yLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTlhY2JkZDNlMWIxZTQ5NjJiNjdjNDI3NGEx
ZGUzZDcyZDZhY2M3NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvZXhl
Y0NvbW1hbmQvZGVmYXVsdC1wYXJhZ3JhcGgtc2VwYXJhdG9yLmh0bWwKQEAgLTAsMCArMSw4MSBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li9lZGl0aW5nLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD1lZGl0b3Ig
Y29udGVudGVkaXRhYmxlPjwvZGl2PgorPHNjcmlwdD4KKyAgICBzaG91bGRCZVRydWUoImRvY3Vt
ZW50LnF1ZXJ5Q29tbWFuZEVuYWJsZWQoJ0RlZmF1bHRQYXJhZ3JhcGhTZXBhcmF0b3InKSIpOwor
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZG9jdW1lbnQucXVlcnlDb21tYW5kVmFsdWUoJ0Rl
ZmF1bHRQYXJhZ3JhcGhTZXBhcmF0b3InKSIsICJkaXYiKTsgLy8gRGVmYXVsdCBpcyBkaXYuCisg
ICAgZXZhbEFuZExvZygiZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ0RlZmF1bHRQYXJhZ3JhcGhTZXBh
cmF0b3InLCBmYWxzZSwgJ3AnKSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZG9jdW1l
bnQucXVlcnlDb21tYW5kVmFsdWUoJ0RlZmF1bHRQYXJhZ3JhcGhTZXBhcmF0b3InKSIsICJwIik7
CisgICAgZXZhbEFuZExvZygiZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ0RlZmF1bHRQYXJhZ3JhcGhT
ZXBhcmF0b3InLCBmYWxzZSwgJ2JyJykiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRv
Y3VtZW50LnF1ZXJ5Q29tbWFuZFZhbHVlKCdEZWZhdWx0UGFyYWdyYXBoU2VwYXJhdG9yJykiLCAi
cCIpOworICAgIGV2YWxBbmRMb2coImRvY3VtZW50LmV4ZWNDb21tYW5kKCdEZWZhdWx0UGFyYWdy
YXBoU2VwYXJhdG9yJywgZmFsc2UsICdpbnZhbGlkJykiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoImRvY3VtZW50LnF1ZXJ5Q29tbWFuZFZhbHVlKCdEZWZhdWx0UGFyYWdyYXBoU2VwYXJh
dG9yJykiLCAicCIpOworCisgICAgZGVidWcoIlxuQ3JlYXRpbmcgcGFyYWdyYXBocyBpbiB0aGUg
bm9ybWFsIHdheS4iKTsKKyAgICB2YXIgZGl2ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI2Vk
aXRvciIpOworICAgIGRpdi5mb2N1cygpOworICAgIGV2YWxBbmRMb2coImRvY3VtZW50LmV4ZWND
b21tYW5kKCdJbnNlcnRUZXh0JywgZmFsc2UsICdhJykiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoImRpdi5pbm5lckhUTUwiLCAiYSIpOworICAgIGV2YWxBbmRMb2coImRvY3VtZW50LmV4
ZWNDb21tYW5kKCdJbnNlcnRUZXh0JywgZmFsc2UsICdcXG4nKSIpOworICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygiZGl2LmlubmVySFRNTCIsICJhPHA+PGJyPjwvcD4iKTsKKyAgICBldmFsQW5k
TG9nKCJkb2N1bWVudC5leGVjQ29tbWFuZCgnSW5zZXJ0VGV4dCcsIGZhbHNlLCAnYicpIik7Cisg
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkaXYuaW5uZXJIVE1MIiwgImE8cD5iPC9wPiIpOwor
ICAgIGV2YWxBbmRMb2coImRvY3VtZW50LmV4ZWNDb21tYW5kKCdJbnNlcnRUZXh0JywgZmFsc2Us
ICdcXG4nKSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZGl2LmlubmVySFRNTCIsICJh
PHA+YjwvcD48cD48YnI+PC9wPiIpOworICAgIGV2YWxBbmRMb2coImRvY3VtZW50LmV4ZWNDb21t
YW5kKCdEZWxldGUnKSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZGl2LmlubmVySFRN
TCIsICJhPHA+YjwvcD4iKTsKKyAgICBldmFsQW5kTG9nKCJkb2N1bWVudC5leGVjQ29tbWFuZCgn
RGVsZXRlJykiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRpdi5pbm5lckhUTUwiLCAi
YTxwPjxicj48L3A+Iik7CisgICAgZXZhbEFuZExvZygiZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ0Rl
bGV0ZScpIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkaXYuaW5uZXJIVE1MIiwgImEi
KTsKKyAgICBldmFsQW5kTG9nKCJkb2N1bWVudC5leGVjQ29tbWFuZCgnRGVmYXVsdFBhcmFncmFw
aFNlcGFyYXRvcicsIGZhbHNlLCAnZGl2JykiKTsKKyAgICBldmFsQW5kTG9nKCJkb2N1bWVudC5l
eGVjQ29tbWFuZCgnSW5zZXJ0UGFyYWdyYXBoJykiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJp
bmcoImRpdi5pbm5lckhUTUwiLCAiYTxkaXY+PGJyPjwvZGl2PiIpOworICAgIGV2YWxBbmRMb2co
ImRpdi5pbm5lckhUTUwgPSAnJyIpOworCisgICAgZGVidWcoIlxuVXNpbmcgdGhlIHByZXZpb3Vz
IGJsb2NrIGFzIHRlbXBsYXRlIGZvciB0aGUgbmV3IG9uZS4iKTsKKyAgICBldmFsQW5kTG9nKCJk
b2N1bWVudC5leGVjQ29tbWFuZCgnRGVmYXVsdFBhcmFncmFwaFNlcGFyYXRvcicsIGZhbHNlLCAn
cCcpIik7CisgICAgZGVidWcoJ2RvY3VtZW50LmV4ZWNDb21tYW5kKCJJbnNlcnRIVE1MIiwgZmFs
c2UsICImbHQ7cHJlJmd0O2EmbHQ7L3ByZSZndDsiKTsnKTsKKyAgICBkb2N1bWVudC5leGVjQ29t
bWFuZCgiSW5zZXJ0SFRNTCIsIGZhbHNlLCAiPHByZT5hPC9wcmU+Iik7CisgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJkaXYuaW5uZXJIVE1MIiwgIjxwcmU+YTwvcHJlPiIpOworICAgIGV2YWxB
bmRMb2coImRvY3VtZW50LmV4ZWNDb21tYW5kKCdJbnNlcnRUZXh0JywgZmFsc2UsICdiJykiKTsK
KyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRpdi5pbm5lckhUTUwiLCAiPHByZT5hYjwvcHJl
PiIpOworICAgIGV2YWxBbmRMb2coImRvY3VtZW50LmV4ZWNDb21tYW5kKCdJbnNlcnRUZXh0Jywg
ZmFsc2UsICdcXG4nKSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZGl2LmlubmVySFRN
TCIsICI8cHJlPmFiPC9wcmU+PHByZT48YnI+PC9wcmU+Iik7CisgICAgZXZhbEFuZExvZygiZG9j
dW1lbnQuZXhlY0NvbW1hbmQoJ0luc2VydFRleHQnLCBmYWxzZSwgJ2MnKSIpOworICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygiZGl2LmlubmVySFRNTCIsICI8cHJlPmFiPC9wcmU+PHByZT5jPC9w
cmU+Iik7CisgICAgZXZhbEFuZExvZygiZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ0RlZmF1bHRQYXJh
Z3JhcGhTZXBhcmF0b3InLCBmYWxzZSwgJ2RpdicpIik7CisgICAgZXZhbEFuZExvZygiZG9jdW1l
bnQuZXhlY0NvbW1hbmQoJ0luc2VydFRleHQnLCBmYWxzZSwgJ1xcbicpIik7CisgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJkaXYuaW5uZXJIVE1MIiwgIjxwcmU+YWI8L3ByZT48cHJlPmM8L3By
ZT48cHJlPjxicj48L3ByZT4iKTsKKyAgICBldmFsQW5kTG9nKCJkb2N1bWVudC5leGVjQ29tbWFu
ZCgnRGVsZXRlJykiKTsKKyAgICBldmFsQW5kTG9nKCJkb2N1bWVudC5leGVjQ29tbWFuZCgnSW5z
ZXJ0UGFyYWdyYXBoJykiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRpdi5pbm5lckhU
TUwiLCAiPHByZT5hYjwvcHJlPjxwcmU+YzwvcHJlPjxwcmU+PGJyPjwvcHJlPiIpOworCisgICAg
ZGVidWcoIlxuQnJlYWtpbmcgb3V0IG9mIGxpc3RzLiIpOworICAgIGV2YWxBbmRMb2coImRpdi5p
bm5lckhUTUwgPSAnJyIpOworICAgIGV2YWxBbmRMb2coImRvY3VtZW50LmV4ZWNDb21tYW5kKCdE
ZWZhdWx0UGFyYWdyYXBoU2VwYXJhdG9yJywgZmFsc2UsICdwJykiKTsKKyAgICBkZWJ1ZygnZG9j
dW1lbnQuZXhlY0NvbW1hbmQoIkluc2VydEhUTUwiLCBmYWxzZSwgIiZsdDt1bD4mbHQ7bGk+YSZs
dDsvbGk+Jmx0Oy91bD4iKScpOworICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJJbnNlcnRIVE1M
IiwgZmFsc2UsICI8dWw+PGxpPmE8L2xpPjwvdWw+Iik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJkaXYuaW5uZXJIVE1MIiwgIjx1bD48bGk+YTwvbGk+PC91bD4iKTsKKyAgICBldmFsQW5k
TG9nKCJkb2N1bWVudC5leGVjQ29tbWFuZCgnSW5zZXJ0UGFyYWdyYXBoJykiKTsKKyAgICBldmFs
QW5kTG9nKCJkb2N1bWVudC5leGVjQ29tbWFuZCgnSW5zZXJ0UGFyYWdyYXBoJykiKTsKKyAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoImRpdi5pbm5lckhUTUwiLCAiPHVsPjxsaT5hPC9saT48L3Vs
PjxwPjxicj48L3A+Iik7CisKKyAgICBkZWJ1ZygiXG5CcmVha2luZyB1cCBuZXN0ZWQgZWxlbWVu
dHMuIik7CisgICAgZXZhbEFuZExvZygiZGl2LmlubmVySFRNTCA9ICcnIik7CisgICAgZGVidWco
J2RvY3VtZW50LmV4ZWNDb21tYW5kKCJJbnNlcnRIVE1MIiwgZmFsc2UsICImbHQ7Y2l0ZT5hJmx0
O2NpdGU+YmMmbHQ7L2NpdGU+Jmx0Oy9jaXRlPiIpJyk7CisgICAgZG9jdW1lbnQuZXhlY0NvbW1h
bmQoIkluc2VydEhUTUwiLCBmYWxzZSwgIjxjaXRlPmE8Y2l0ZT5iYzwvY2l0ZT48L2NpdGU+Iik7
CisgICAgZXZhbEFuZExvZygnc2VsZWN0aW9uLm1vZGlmeSgibW92ZSIsICJiYWNrd2FyZCIsICJj
aGFyYWN0ZXIiKScpOworICAgIGV2YWxBbmRMb2coImRvY3VtZW50LmV4ZWNDb21tYW5kKCdJbnNl
cnRQYXJhZ3JhcGgnKSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZGl2LmlubmVySFRN
TCIsICI8Y2l0ZT5hPGNpdGU+YjwvY2l0ZT48L2NpdGU+PHA+PGNpdGU+PGNpdGU+YzwvY2l0ZT48
L2NpdGU+PC9wPiIpOworCisgICAgZGl2LmlubmVySFRNTCA9ICIiOworPC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129748</attachid>
            <date>2012-03-01 14:33:10 -0800</date>
            <delta_ts>2012-03-01 15:47:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-59961-20120301143309.patch</filename>
            <type>text/plain</type>
            <size>18432</size>
            <attacher name="Pablo Flouret">pf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5MDIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTA5NDY1OWFiMTg4MDgy
NzU4OTQ0NWI5ZWFiNzIwYWVlNDhjZjVhYS4uNDJjYzMyMjUxNTMwZDBlZWE0NGE5ZWI4NThmMmE5
ZGRkNzM3MDhmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDEyLTAyLTI5ICBQYWJs
byBGbG91cmV0ICA8cGFibG9mQG1vdG9yb2xhLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgRGVm
YXVsdFBhcmFncmFwaFNlcGFyYXRvciBleGVjQ29tbWFuZCwgdG8gbGV0IGF1dGhvcnMgY2hvb3Nl
IHRoZSBkZWZhdWx0IGJsb2NrIGVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTU5OTYxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgaHR0cDovL2R2Y3MudzMub3JnL2hnL2VkaXRpbmcvcmF3LWZpbGUv
dGlwL2VkaXRpbmcuaHRtbCN0aGUtZGVmYXVsdHBhcmFncmFwaHNlcGFyYXRvci1jb21tYW5kCisK
KyAgICAgICAgVGVzdDogZWRpdGluZy9leGVjQ29tbWFuZC9kZWZhdWx0LXBhcmFncmFwaC1zZXBh
cmF0b3IuaHRtbAorCisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RWRpdG9yOjpFZGl0b3IpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzZXREZWZh
dWx0UGFyYWdyYXBoU2VwYXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGVk
aXRpbmcvRWRpdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmRlZmF1bHRQYXJhZ3Jh
cGhTZXBhcmF0b3IpOgorICAgICAgICAoRWRpdG9yKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRv
ckNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZURlZmF1bHRQYXJhZ3JhcGhT
ZXBhcmF0b3IpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjp2YWx1ZURl
ZmF1bHRQYXJhZ3JhcGhTZXBhcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQ29tbWFu
ZE1hcCk6CisgICAgICAgICogZWRpdGluZy9odG1sZWRpdGluZy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVEZWZhdWx0UGFyYWdyYXBoRWxlbWVudCk6CisKKyAgICAgICAgKiBodG1sL0hU
TUxQYXJhZ3JhcGhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQYXJhZ3JhcGhF
bGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogaHRtbC9IVE1M
UGFyYWdyYXBoRWxlbWVudC5oOgorICAgICAgICAoSFRNTFBhcmFncmFwaEVsZW1lbnQpOgorICAg
ICAgICAgICAgQWRkZWQgY3JlYXRlKERvY3VtZW50KikgbWV0aG9kIHRoYXQgZGVmYXVsdHMgdG8g
cFRhZyBhcyB0aGUgUXVhbGlmaWVkTmFtZS4KKworICAgICAgICAqIHBhZ2UvRnJhbWUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OnNldERvY3VtZW50KToKKwogMjAxMi0wMi0yNyAgQ2hy
aXMgUm9nZXJzICA8Y3JvZ2Vyc0Bnb29nbGUuY29tPgogCiAgICAgICAgIEltcGxlbWVudCBzdGF0
aWMgY29tcHJlc3Npb24gY3VydmUgcGFyYW1ldGVycyBmb3IgRHluYW1pY3NDb21wcmVzc29yTm9k
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDFjZTI0ZTUzOGQ0MzU3ZjFlM2UyZGJh
ODBjNDRiNGE1ODRjMmEwNmYuLjYwODFkNDZmZWY2ZGE4ZjAwOGQ4MTkzZDM2M2MwODRhNGI5ZjM5
NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTg0Niw2ICs4NDYsNyBAQCBFZGl0
b3I6OkVkaXRvcihGcmFtZSogZnJhbWUpCiAgICAgLCBtX3NwZWxsQ2hlY2tlcihhZG9wdFB0cihu
ZXcgU3BlbGxDaGVja2VyKGZyYW1lKSkpCiAgICAgLCBtX3NwZWxsaW5nQ29ycmVjdG9yKGFkb3B0
UHRyKG5ldyBTcGVsbGluZ0NvcnJlY3Rpb25Db250cm9sbGVyKGZyYW1lKSkpCiAgICAgLCBtX2Fy
ZU1hcmtlZFRleHRNYXRjaGVzSGlnaGxpZ2h0ZWQoZmFsc2UpCisgICAgLCBtX2RlZmF1bHRQYXJh
Z3JhcGhTZXBhcmF0b3IoRWRpdG9yUGFyYWdyYXBoU2VwYXJhdG9yRGl2KQogewogfQogCkBAIC0z
MDE4LDQgKzMwMTksMTAgQEAgYm9vbCBFZGl0b3I6OnVuaWZpZWRUZXh0Q2hlY2tlckVuYWJsZWQo
KSBjb25zdAogICAgIHJldHVybiBXZWJDb3JlOjp1bmlmaWVkVGV4dENoZWNrZXJFbmFibGVkKG1f
ZnJhbWUpOwogfQogCit2b2lkIEVkaXRvcjo6c2V0RGVmYXVsdFBhcmFncmFwaFNlcGFyYXRvcihF
ZGl0b3JQYXJhZ3JhcGhTZXBhcmF0b3Igc2VwYXJhdG9yKQoreworICAgIEFTU0VSVChzZXBhcmF0
b3IgPT0gRWRpdG9yUGFyYWdyYXBoU2VwYXJhdG9yRGl2IHx8IHNlcGFyYXRvciA9PSBFZGl0b3JQ
YXJhZ3JhcGhTZXBhcmF0b3JQKTsKKyAgICBtX2RlZmF1bHRQYXJhZ3JhcGhTZXBhcmF0b3IgPSBz
ZXBhcmF0b3I7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ci5oCmluZGV4IGUzOThiYmYzZTc4NzljMDc4NDM1OTUxZGFkNTIxZDdhZmU5ZTUyYTEuLjJkODNj
ZTNmNDA4ZmIwOTNkMTQ2NzBhOTBhODFjYjhiMWM0Y2QwYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3IuaApAQCAtODAsNiArODAsNyBAQCBzdHJ1Y3QgQ29tcG9zaXRpb25VbmRlcmxpbmUgewogfTsK
IAogZW51bSBFZGl0b3JDb21tYW5kU291cmNlIHsgQ29tbWFuZEZyb21NZW51T3JLZXlCaW5kaW5n
LCBDb21tYW5kRnJvbURPTSwgQ29tbWFuZEZyb21ET01XaXRoVXNlckludGVyZmFjZSB9OworZW51
bSBFZGl0b3JQYXJhZ3JhcGhTZXBhcmF0b3IgeyBFZGl0b3JQYXJhZ3JhcGhTZXBhcmF0b3JEaXYs
IEVkaXRvclBhcmFncmFwaFNlcGFyYXRvclAgfTsKIAogY2xhc3MgRWRpdG9yIHsKIHB1YmxpYzoK
QEAgLTM4Myw2ICszODQsOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGRldmljZVNjYWxlRmFjdG9y
Q2hhbmdlZCgpOwogCisgICAgRWRpdG9yUGFyYWdyYXBoU2VwYXJhdG9yIGRlZmF1bHRQYXJhZ3Jh
cGhTZXBhcmF0b3IoKSBjb25zdCB7IHJldHVybiBtX2RlZmF1bHRQYXJhZ3JhcGhTZXBhcmF0b3I7
IH0KKyAgICB2b2lkIHNldERlZmF1bHRQYXJhZ3JhcGhTZXBhcmF0b3IoRWRpdG9yUGFyYWdyYXBo
U2VwYXJhdG9yKTsKKwogcHJpdmF0ZToKICAgICBGcmFtZSogbV9mcmFtZTsKICAgICBPd25QdHI8
RGVsZXRlQnV0dG9uQ29udHJvbGxlcj4gbV9kZWxldGVCdXR0b25Db250cm9sbGVyOwpAQCAtNDAw
LDYgKzQwNCw3IEBAIHByaXZhdGU6CiAgICAgT3duUHRyPFNwZWxsaW5nQ29ycmVjdGlvbkNvbnRy
b2xsZXI+IG1fc3BlbGxpbmdDb3JyZWN0b3I7CiAgICAgVmlzaWJsZVNlbGVjdGlvbiBtX21hcms7
CiAgICAgYm9vbCBtX2FyZU1hcmtlZFRleHRNYXRjaGVzSGlnaGxpZ2h0ZWQ7CisgICAgRWRpdG9y
UGFyYWdyYXBoU2VwYXJhdG9yIG1fZGVmYXVsdFBhcmFncmFwaFNlcGFyYXRvcjsKIAogICAgIGJv
b2wgY2FuRGVsZXRlUmFuZ2UoUmFuZ2UqKSBjb25zdDsKICAgICBib29sIGNhblNtYXJ0UmVwbGFj
ZVdpdGhQYXN0ZWJvYXJkKFBhc3RlYm9hcmQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ckNvbW1hbmQuY3BwCmluZGV4IGE0MTM3NDI1ZDA0NGUxYzQ5MWUzYWM2YzZhODAyYmEzMzc3NDA2
ZjkuLmM2YTA4NTRmNzVhMWM5MTI4ODBhMjIxMmY1YmJjYzBiZWUwZDFhYmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcApAQCAtMzA3LDYgKzMwNywxNiBAQCBzdGF0
aWMgYm9vbCBleGVjdXRlQ3V0KEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291
cmNlIHNvdXJjZSwgY29uc3QgUwogICAgIHJldHVybiB0cnVlOwogfQogCitzdGF0aWMgYm9vbCBl
eGVjdXRlRGVmYXVsdFBhcmFncmFwaFNlcGFyYXRvcihGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRp
dG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBpZiAoZXF1YWxJ
Z25vcmluZ0Nhc2UodmFsdWUsICJkaXYiKSkKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5zZXRE
ZWZhdWx0UGFyYWdyYXBoU2VwYXJhdG9yKEVkaXRvclBhcmFncmFwaFNlcGFyYXRvckRpdik7Cisg
ICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUsICJwIikpCisgICAgICAgIGZyYW1l
LT5lZGl0b3IoKS0+c2V0RGVmYXVsdFBhcmFncmFwaFNlcGFyYXRvcihFZGl0b3JQYXJhZ3JhcGhT
ZXBhcmF0b3JQKTsKKworICAgIHJldHVybiB0cnVlOworfQorCiBzdGF0aWMgYm9vbCBleGVjdXRl
RGVsZXRlKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlIHNvdXJjZSwg
Y29uc3QgU3RyaW5nJikKIHsKICAgICBzd2l0Y2ggKHNvdXJjZSkgewpAQCAtMTM3OCw2ICsxMzg4
LDExIEBAIHN0YXRpYyBTdHJpbmcgdmFsdWVCYWNrQ29sb3IoRnJhbWUqIGZyYW1lLCBFdmVudCop
CiAgICAgcmV0dXJuIHZhbHVlU3R5bGUoZnJhbWUsIENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9y
KTsKIH0KIAorc3RhdGljIFN0cmluZyB2YWx1ZURlZmF1bHRQYXJhZ3JhcGhTZXBhcmF0b3IoRnJh
bWUqIGZyYW1lLCBFdmVudCopCit7CisgICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS0+ZGVmYXVs
dFBhcmFncmFwaFNlcGFyYXRvcigpID09IEVkaXRvclBhcmFncmFwaFNlcGFyYXRvckRpdiA/ICJk
aXYiIDogInAiOworfQorCiBzdGF0aWMgU3RyaW5nIHZhbHVlRm9udE5hbWUoRnJhbWUqIGZyYW1l
LCBFdmVudCopCiB7CiAgICAgcmV0dXJuIHZhbHVlU3R5bGUoZnJhbWUsIENTU1Byb3BlcnR5Rm9u
dEZhbWlseSk7CkBAIC0xNDI5LDYgKzE0NDQsNyBAQCBzdGF0aWMgY29uc3QgQ29tbWFuZE1hcCYg
Y3JlYXRlQ29tbWFuZE1hcCgpCiAgICAgICAgIHsgIkNvcHkiLCB7IGV4ZWN1dGVDb3B5LCBzdXBw
b3J0ZWRDb3B5Q3V0LCBlbmFibGVkQ29weSwgc3RhdGVOb25lLCB2YWx1ZU51bGwsIG5vdFRleHRJ
bnNlcnRpb24sIGFsbG93RXhlY3V0aW9uV2hlbkRpc2FibGVkIH0gfSwKICAgICAgICAgeyAiQ3Jl
YXRlTGluayIsIHsgZXhlY3V0ZUNyZWF0ZUxpbmssIHN1cHBvcnRlZCwgZW5hYmxlZEluUmljaGx5
RWRpdGFibGVUZXh0LCBzdGF0ZU5vbmUsIHZhbHVlTnVsbCwgbm90VGV4dEluc2VydGlvbiwgZG9O
b3RBbGxvd0V4ZWN1dGlvbldoZW5EaXNhYmxlZCB9IH0sCiAgICAgICAgIHsgIkN1dCIsIHsgZXhl
Y3V0ZUN1dCwgc3VwcG9ydGVkQ29weUN1dCwgZW5hYmxlZEN1dCwgc3RhdGVOb25lLCB2YWx1ZU51
bGwsIG5vdFRleHRJbnNlcnRpb24sIGFsbG93RXhlY3V0aW9uV2hlbkRpc2FibGVkIH0gfSwKKyAg
ICAgICAgeyAiRGVmYXVsdFBhcmFncmFwaFNlcGFyYXRvciIsIHsgZXhlY3V0ZURlZmF1bHRQYXJh
Z3JhcGhTZXBhcmF0b3IsIHN1cHBvcnRlZCwgZW5hYmxlZCwgc3RhdGVOb25lLCB2YWx1ZURlZmF1
bHRQYXJhZ3JhcGhTZXBhcmF0b3IsIG5vdFRleHRJbnNlcnRpb24sIGRvTm90QWxsb3dFeGVjdXRp
b25XaGVuRGlzYWJsZWR9IH0sCiAgICAgICAgIHsgIkRlbGV0ZSIsIHsgZXhlY3V0ZURlbGV0ZSwg
c3VwcG9ydGVkLCBlbmFibGVkRGVsZXRlLCBzdGF0ZU5vbmUsIHZhbHVlTnVsbCwgbm90VGV4dElu
c2VydGlvbiwgZG9Ob3RBbGxvd0V4ZWN1dGlvbldoZW5EaXNhYmxlZCB9IH0sCiAgICAgICAgIHsg
IkRlbGV0ZUJhY2t3YXJkIiwgeyBleGVjdXRlRGVsZXRlQmFja3dhcmQsIHN1cHBvcnRlZEZyb21N
ZW51T3JLZXlCaW5kaW5nLCBlbmFibGVkSW5FZGl0YWJsZVRleHQsIHN0YXRlTm9uZSwgdmFsdWVO
dWxsLCBub3RUZXh0SW5zZXJ0aW9uLCBkb05vdEFsbG93RXhlY3V0aW9uV2hlbkRpc2FibGVkIH0g
fSwKICAgICAgICAgeyAiRGVsZXRlQmFja3dhcmRCeURlY29tcG9zaW5nUHJldmlvdXNDaGFyYWN0
ZXIiLCB7IGV4ZWN1dGVEZWxldGVCYWNrd2FyZEJ5RGVjb21wb3NpbmdQcmV2aW91c0NoYXJhY3Rl
ciwgc3VwcG9ydGVkRnJvbU1lbnVPcktleUJpbmRpbmcsIGVuYWJsZWRJbkVkaXRhYmxlVGV4dCwg
c3RhdGVOb25lLCB2YWx1ZU51bGwsIG5vdFRleHRJbnNlcnRpb24sIGRvTm90QWxsb3dFeGVjdXRp
b25XaGVuRGlzYWJsZWQgfSB9LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9o
dG1sZWRpdGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcApp
bmRleCAwNzA0NjEwMGU0N2M3N2VkYjE5M2FkYjQyN2Y3NTE1ZTYyMjIxZjBkLi4yMTQ2YjIxMWQ2
NTYwYmFlNTIzMGNmYzZjMGEyMzc3MzBlNDM2OGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0
bWxlZGl0aW5nLmNwcApAQCAtMjksNiArMjksOCBAQAogI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUu
aCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkVkaXRpbmdUZXh0LmgiCisjaW5j
bHVkZSAiRWRpdG9yLmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJIVE1MQlJFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiSFRNTERpdkVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MRWxlbWVu
dEZhY3RvcnkuaCIKQEAgLTM4LDYgKzQwLDcgQEAKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNp
bmNsdWRlICJIVE1MT2JqZWN0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxPTGlzdEVsZW1lbnQu
aCIKKyNpbmNsdWRlICJIVE1MUGFyYWdyYXBoRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxVTGlz
dEVsZW1lbnQuaCIKICNpbmNsdWRlICJQb3NpdGlvbkl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyT2JqZWN0LmgiCkBAIC04NDQsNiArODQ3LDggQEAgYm9vbCBpc0VtcHR5VGFibGVDZWxsKGNv
bnN0IE5vZGUqIG5vZGUpCiAKIFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IGNyZWF0ZURlZmF1bHRQ
YXJhZ3JhcGhFbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCkKIHsKKyAgICBpZiAoZG9jdW1lbnQt
PmZyYW1lKCktPmVkaXRvcigpLT5kZWZhdWx0UGFyYWdyYXBoU2VwYXJhdG9yKCkgPT0gRWRpdG9y
UGFyYWdyYXBoU2VwYXJhdG9yUCkKKyAgICAgICAgcmV0dXJuIEhUTUxQYXJhZ3JhcGhFbGVtZW50
OjpjcmVhdGUoZG9jdW1lbnQpOwogICAgIHJldHVybiBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRv
Y3VtZW50KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGFyYWdy
YXBoRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQYXJhZ3JhcGhFbGVtZW50
LmNwcAppbmRleCBjOGY2YWQzZWUzNDY0MmY2ODU5MjMwMTM0OGMyZmE2YmM1YzY5NDcwLi5hZTg5
NjE5YTU0MGZlOWU2OWM1YTg2ZjJlOTFjNjQyMDg2YWI2ZDliIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxQYXJhZ3JhcGhFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxQYXJhZ3JhcGhFbGVtZW50LmNwcApAQCAtMzksNiArMzksMTEgQEAgaW5saW5l
IEhUTUxQYXJhZ3JhcGhFbGVtZW50OjpIVE1MUGFyYWdyYXBoRWxlbWVudChjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW1lLAogICAgIEFTU0VSVChoYXNUYWdOYW1lKHBUYWcpKTsKIH0KIAorUGFz
c1JlZlB0cjxIVE1MUGFyYWdyYXBoRWxlbWVudD4gSFRNTFBhcmFncmFwaEVsZW1lbnQ6OmNyZWF0
ZShEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MUGFy
YWdyYXBoRWxlbWVudChwVGFnLCBkb2N1bWVudCkpOworfQorCiBQYXNzUmVmUHRyPEhUTUxQYXJh
Z3JhcGhFbGVtZW50PiBIVE1MUGFyYWdyYXBoRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKIHsKICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IEhUTUxQYXJhZ3JhcGhFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQYXJhZ3JhcGhFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxQYXJhZ3JhcGhFbGVtZW50LmgKaW5kZXggODZhODVhNjNhZDdhNDNm
MGY3NzAzZTQyNmRlNzFkNmE3NjVkMDYzMi4uZDAxZWRjMmM1Mzg4ODFjYzZjMTExMGVhZjEzZDkx
OWU0OTNjMDMwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGFyYWdyYXBo
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBhcmFncmFwaEVsZW1lbnQu
aApAQCAtMjksNiArMjksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEhUTUxQYXJh
Z3JhcGhFbGVtZW50IDogcHVibGljIEhUTUxFbGVtZW50IHsKIHB1YmxpYzoKKyAgICBzdGF0aWMg
UGFzc1JlZlB0cjxIVE1MUGFyYWdyYXBoRWxlbWVudD4gY3JlYXRlKERvY3VtZW50Kik7CiAgICAg
c3RhdGljIFBhc3NSZWZQdHI8SFRNTFBhcmFncmFwaEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKaW5k
ZXggZGQzMGQ3MzdhY2JmM2JhMDJiMWEyNWEwYTk0N2VkYjdjMDY1NDFlMC4uN2Q3ZjMyNTdhZjgx
YzQyYzY4M2EyYzkxMzU4NDRlYmIwMGM3NzQwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKQEAgLTMw
Niw2ICszMDYsOSBAQCB2b2lkIEZyYW1lOjpzZXREb2N1bWVudChQYXNzUmVmUHRyPERvY3VtZW50
PiBuZXdEb2MpCiAgICAgICAgIG5vdGlmeUNocm9tZUNsaWVudFdoZWVsRXZlbnRIYW5kbGVyQ291
bnRDaGFuZ2VkKCk7CiAgICAgICAgIG5vdGlmeUNocm9tZUNsaWVudFRvdWNoRXZlbnRIYW5kbGVy
Q291bnRDaGFuZ2VkKCk7CiAgICAgfQorCisgICAgLy8gUmVzZXQgdGhlIGVkaXRvcidzIGRlZmF1
bHQgcGFyYWdyYXBoIHNlcGFyYXRvciB0byB0aGUgZGVmYXVsdCB2YWx1ZSAoYSBkaXYpLgorICAg
IG1fZWRpdG9yLnNldERlZmF1bHRQYXJhZ3JhcGhTZXBhcmF0b3IoRWRpdG9yUGFyYWdyYXBoU2Vw
YXJhdG9yRGl2KTsKIH0KIAogI2lmIEVOQUJMRShPUklFTlRBVElPTl9FVkVOVFMpCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
NmZkNWZjMTEyOTgzN2Y0Yzc4NmY0Yzg2MmFhN2VmMTM4MzI5ODhmYy4uNzJmZDY2OGI0OGNjMjAx
ZTRmMWU0ZjVlNzdjMGQ4Y2I4YTJjNWNlMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEyLTAy
LTI5ICBQYWJsbyBGbG91cmV0ICA8cGFibG9mQG1vdG9yb2xhLmNvbT4KKworICAgICAgICBJbXBs
ZW1lbnQgRGVmYXVsdFBhcmFncmFwaFNlcGFyYXRvciBleGVjQ29tbWFuZCwgdG8gbGV0IGF1dGhv
cnMgY2hvb3NlIHRoZSBkZWZhdWx0IGJsb2NrIGVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5OTYxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBlZGl0aW5nL2V4ZWNDb21tYW5kL2RlZmF1bHQt
cGFyYWdyYXBoLXNlcGFyYXRvci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRp
bmcvZXhlY0NvbW1hbmQvZGVmYXVsdC1wYXJhZ3JhcGgtc2VwYXJhdG9yLmh0bWw6IEFkZGVkLgor
CiAyMDEyLTAyLTI3ICBDaHJpcyBSb2dlcnMgIDxjcm9nZXJzQGdvb2dsZS5jb20+CiAKICAgICAg
ICAgSW1wbGVtZW50IHN0YXRpYyBjb21wcmVzc2lvbiBjdXJ2ZSBwYXJhbWV0ZXJzIGZvciBEeW5h
bWljc0NvbXByZXNzb3JOb2RlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWND
b21tYW5kL2RlZmF1bHQtcGFyYWdyYXBoLXNlcGFyYXRvci1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL2RlZmF1bHQtcGFyYWdyYXBoLXNlcGFyYXRvci1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZmFkYjFiN2NmNzRlZjYxNGI3Yzg4NWE0ZDc2NmIyN2Y1OGM0
MDY0MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQv
ZGVmYXVsdC1wYXJhZ3JhcGgtc2VwYXJhdG9yLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDY1IEBA
CitQQVNTIGRvY3VtZW50LnF1ZXJ5Q29tbWFuZEVuYWJsZWQoJ0RlZmF1bHRQYXJhZ3JhcGhTZXBh
cmF0b3InKSBpcyB0cnVlCitQQVNTIGRvY3VtZW50LnF1ZXJ5Q29tbWFuZFZhbHVlKCdEZWZhdWx0
UGFyYWdyYXBoU2VwYXJhdG9yJykgaXMgImRpdiIKK2RvY3VtZW50LmV4ZWNDb21tYW5kKCdEZWZh
dWx0UGFyYWdyYXBoU2VwYXJhdG9yJywgZmFsc2UsICdwJykKK1BBU1MgZG9jdW1lbnQucXVlcnlD
b21tYW5kVmFsdWUoJ0RlZmF1bHRQYXJhZ3JhcGhTZXBhcmF0b3InKSBpcyAicCIKK2RvY3VtZW50
LmV4ZWNDb21tYW5kKCdEZWZhdWx0UGFyYWdyYXBoU2VwYXJhdG9yJywgZmFsc2UsICdicicpCitQ
QVNTIGRvY3VtZW50LnF1ZXJ5Q29tbWFuZFZhbHVlKCdEZWZhdWx0UGFyYWdyYXBoU2VwYXJhdG9y
JykgaXMgInAiCitkb2N1bWVudC5leGVjQ29tbWFuZCgnRGVmYXVsdFBhcmFncmFwaFNlcGFyYXRv
cicsIGZhbHNlLCAnaW52YWxpZCcpCitQQVNTIGRvY3VtZW50LnF1ZXJ5Q29tbWFuZFZhbHVlKCdE
ZWZhdWx0UGFyYWdyYXBoU2VwYXJhdG9yJykgaXMgInAiCisKK0NyZWF0aW5nIHBhcmFncmFwaHMg
aW4gdGhlIG5vcm1hbCB3YXkuCitkb2N1bWVudC5leGVjQ29tbWFuZCgnSW5zZXJ0VGV4dCcsIGZh
bHNlLCAnYScpCitQQVNTIGRpdi5pbm5lckhUTUwgaXMgImEiCitkb2N1bWVudC5leGVjQ29tbWFu
ZCgnSW5zZXJ0VGV4dCcsIGZhbHNlLCAnXG4nKQorUEFTUyBkaXYuaW5uZXJIVE1MIGlzICJhPHA+
PGJyPjwvcD4iCitkb2N1bWVudC5leGVjQ29tbWFuZCgnSW5zZXJ0VGV4dCcsIGZhbHNlLCAnYicp
CitQQVNTIGRpdi5pbm5lckhUTUwgaXMgImE8cD5iPC9wPiIKK2RvY3VtZW50LmV4ZWNDb21tYW5k
KCdJbnNlcnRUZXh0JywgZmFsc2UsICdcbicpCitQQVNTIGRpdi5pbm5lckhUTUwgaXMgImE8cD5i
PC9wPjxwPjxicj48L3A+IgorZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ0RlbGV0ZScpCitQQVNTIGRp
di5pbm5lckhUTUwgaXMgImE8cD5iPC9wPiIKK2RvY3VtZW50LmV4ZWNDb21tYW5kKCdEZWxldGUn
KQorUEFTUyBkaXYuaW5uZXJIVE1MIGlzICJhPHA+PGJyPjwvcD4iCitkb2N1bWVudC5leGVjQ29t
bWFuZCgnRGVsZXRlJykKK1BBU1MgZGl2LmlubmVySFRNTCBpcyAiYSIKK2RvY3VtZW50LmV4ZWND
b21tYW5kKCdEZWZhdWx0UGFyYWdyYXBoU2VwYXJhdG9yJywgZmFsc2UsICdkaXYnKQorZG9jdW1l
bnQuZXhlY0NvbW1hbmQoJ0luc2VydFBhcmFncmFwaCcpCitQQVNTIGRpdi5pbm5lckhUTUwgaXMg
ImE8ZGl2Pjxicj48L2Rpdj4iCitkaXYuaW5uZXJIVE1MID0gJycKKworVXNpbmcgdGhlIHByZXZp
b3VzIGJsb2NrIGFzIHRlbXBsYXRlIGZvciB0aGUgbmV3IG9uZS4KK2RvY3VtZW50LmV4ZWNDb21t
YW5kKCdEZWZhdWx0UGFyYWdyYXBoU2VwYXJhdG9yJywgZmFsc2UsICdwJykKK2RvY3VtZW50LmV4
ZWNDb21tYW5kKCJJbnNlcnRIVE1MIiwgZmFsc2UsICI8cHJlPmE8L3ByZT4iKTsKK1BBU1MgZGl2
LmlubmVySFRNTCBpcyAiPHByZT5hPC9wcmU+IgorZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ0luc2Vy
dFRleHQnLCBmYWxzZSwgJ2InKQorUEFTUyBkaXYuaW5uZXJIVE1MIGlzICI8cHJlPmFiPC9wcmU+
IgorZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ0luc2VydFRleHQnLCBmYWxzZSwgJ1xuJykKK1BBU1Mg
ZGl2LmlubmVySFRNTCBpcyAiPHByZT5hYjwvcHJlPjxwcmU+PGJyPjwvcHJlPiIKK2RvY3VtZW50
LmV4ZWNDb21tYW5kKCdJbnNlcnRUZXh0JywgZmFsc2UsICdjJykKK1BBU1MgZGl2LmlubmVySFRN
TCBpcyAiPHByZT5hYjwvcHJlPjxwcmU+YzwvcHJlPiIKK2RvY3VtZW50LmV4ZWNDb21tYW5kKCdE
ZWZhdWx0UGFyYWdyYXBoU2VwYXJhdG9yJywgZmFsc2UsICdkaXYnKQorZG9jdW1lbnQuZXhlY0Nv
bW1hbmQoJ0luc2VydFRleHQnLCBmYWxzZSwgJ1xuJykKK1BBU1MgZGl2LmlubmVySFRNTCBpcyAi
PHByZT5hYjwvcHJlPjxwcmU+YzwvcHJlPjxwcmU+PGJyPjwvcHJlPiIKK2RvY3VtZW50LmV4ZWND
b21tYW5kKCdEZWxldGUnKQorZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ0luc2VydFBhcmFncmFwaCcp
CitQQVNTIGRpdi5pbm5lckhUTUwgaXMgIjxwcmU+YWI8L3ByZT48cHJlPmM8L3ByZT48cHJlPjxi
cj48L3ByZT4iCisKK0JyZWFraW5nIG91dCBvZiBsaXN0cy4KK2Rpdi5pbm5lckhUTUwgPSAnJwor
ZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ0RlZmF1bHRQYXJhZ3JhcGhTZXBhcmF0b3InLCBmYWxzZSwg
J3AnKQorZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkluc2VydEhUTUwiLCBmYWxzZSwgIjx1bD48bGk+
YTwvbGk+PC91bD4iKQorUEFTUyBkaXYuaW5uZXJIVE1MIGlzICI8dWw+PGxpPmE8L2xpPjwvdWw+
IgorZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ0luc2VydFBhcmFncmFwaCcpCitkb2N1bWVudC5leGVj
Q29tbWFuZCgnSW5zZXJ0UGFyYWdyYXBoJykKK1BBU1MgZGl2LmlubmVySFRNTCBpcyAiPHVsPjxs
aT5hPC9saT48L3VsPjxwPjxicj48L3A+IgorCitCcmVha2luZyB1cCBuZXN0ZWQgZWxlbWVudHMu
CitkaXYuaW5uZXJIVE1MID0gJycKK2RvY3VtZW50LmV4ZWNDb21tYW5kKCJJbnNlcnRIVE1MIiwg
ZmFsc2UsICI8Y2l0ZT5hPGNpdGU+YmM8L2NpdGU+PC9jaXRlPiIpCitzZWxlY3Rpb24ubW9kaWZ5
KCJtb3ZlIiwgImJhY2t3YXJkIiwgImNoYXJhY3RlciIpCitkb2N1bWVudC5leGVjQ29tbWFuZCgn
SW5zZXJ0UGFyYWdyYXBoJykKK1BBU1MgZGl2LmlubmVySFRNTCBpcyAiPGNpdGU+YTxjaXRlPmI8
L2NpdGU+PC9jaXRlPjxwPjxjaXRlPjxjaXRlPmM8L2NpdGU+PC9jaXRlPjwvcD4iCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9kZWZhdWx0LXBhcmFncmFwaC1zZXBhcmF0
b3IuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvZGVmYXVsdC1wYXJhZ3Jh
cGgtc2VwYXJhdG9yLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTlhY2JkZDNlMWIxZTQ5NjJiNjdjNDI3NGEx
ZGUzZDcyZDZhY2M3NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvZXhl
Y0NvbW1hbmQvZGVmYXVsdC1wYXJhZ3JhcGgtc2VwYXJhdG9yLmh0bWwKQEAgLTAsMCArMSw4MSBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li9lZGl0aW5nLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD1lZGl0b3Ig
Y29udGVudGVkaXRhYmxlPjwvZGl2PgorPHNjcmlwdD4KKyAgICBzaG91bGRCZVRydWUoImRvY3Vt
ZW50LnF1ZXJ5Q29tbWFuZEVuYWJsZWQoJ0RlZmF1bHRQYXJhZ3JhcGhTZXBhcmF0b3InKSIpOwor
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZG9jdW1lbnQucXVlcnlDb21tYW5kVmFsdWUoJ0Rl
ZmF1bHRQYXJhZ3JhcGhTZXBhcmF0b3InKSIsICJkaXYiKTsgLy8gRGVmYXVsdCBpcyBkaXYuCisg
ICAgZXZhbEFuZExvZygiZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ0RlZmF1bHRQYXJhZ3JhcGhTZXBh
cmF0b3InLCBmYWxzZSwgJ3AnKSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZG9jdW1l
bnQucXVlcnlDb21tYW5kVmFsdWUoJ0RlZmF1bHRQYXJhZ3JhcGhTZXBhcmF0b3InKSIsICJwIik7
CisgICAgZXZhbEFuZExvZygiZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ0RlZmF1bHRQYXJhZ3JhcGhT
ZXBhcmF0b3InLCBmYWxzZSwgJ2JyJykiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRv
Y3VtZW50LnF1ZXJ5Q29tbWFuZFZhbHVlKCdEZWZhdWx0UGFyYWdyYXBoU2VwYXJhdG9yJykiLCAi
cCIpOworICAgIGV2YWxBbmRMb2coImRvY3VtZW50LmV4ZWNDb21tYW5kKCdEZWZhdWx0UGFyYWdy
YXBoU2VwYXJhdG9yJywgZmFsc2UsICdpbnZhbGlkJykiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoImRvY3VtZW50LnF1ZXJ5Q29tbWFuZFZhbHVlKCdEZWZhdWx0UGFyYWdyYXBoU2VwYXJh
dG9yJykiLCAicCIpOworCisgICAgZGVidWcoIlxuQ3JlYXRpbmcgcGFyYWdyYXBocyBpbiB0aGUg
bm9ybWFsIHdheS4iKTsKKyAgICB2YXIgZGl2ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI2Vk
aXRvciIpOworICAgIGRpdi5mb2N1cygpOworICAgIGV2YWxBbmRMb2coImRvY3VtZW50LmV4ZWND
b21tYW5kKCdJbnNlcnRUZXh0JywgZmFsc2UsICdhJykiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoImRpdi5pbm5lckhUTUwiLCAiYSIpOworICAgIGV2YWxBbmRMb2coImRvY3VtZW50LmV4
ZWNDb21tYW5kKCdJbnNlcnRUZXh0JywgZmFsc2UsICdcXG4nKSIpOworICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygiZGl2LmlubmVySFRNTCIsICJhPHA+PGJyPjwvcD4iKTsKKyAgICBldmFsQW5k
TG9nKCJkb2N1bWVudC5leGVjQ29tbWFuZCgnSW5zZXJ0VGV4dCcsIGZhbHNlLCAnYicpIik7Cisg
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkaXYuaW5uZXJIVE1MIiwgImE8cD5iPC9wPiIpOwor
ICAgIGV2YWxBbmRMb2coImRvY3VtZW50LmV4ZWNDb21tYW5kKCdJbnNlcnRUZXh0JywgZmFsc2Us
ICdcXG4nKSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZGl2LmlubmVySFRNTCIsICJh
PHA+YjwvcD48cD48YnI+PC9wPiIpOworICAgIGV2YWxBbmRMb2coImRvY3VtZW50LmV4ZWNDb21t
YW5kKCdEZWxldGUnKSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZGl2LmlubmVySFRN
TCIsICJhPHA+YjwvcD4iKTsKKyAgICBldmFsQW5kTG9nKCJkb2N1bWVudC5leGVjQ29tbWFuZCgn
RGVsZXRlJykiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRpdi5pbm5lckhUTUwiLCAi
YTxwPjxicj48L3A+Iik7CisgICAgZXZhbEFuZExvZygiZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ0Rl
bGV0ZScpIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkaXYuaW5uZXJIVE1MIiwgImEi
KTsKKyAgICBldmFsQW5kTG9nKCJkb2N1bWVudC5leGVjQ29tbWFuZCgnRGVmYXVsdFBhcmFncmFw
aFNlcGFyYXRvcicsIGZhbHNlLCAnZGl2JykiKTsKKyAgICBldmFsQW5kTG9nKCJkb2N1bWVudC5l
eGVjQ29tbWFuZCgnSW5zZXJ0UGFyYWdyYXBoJykiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJp
bmcoImRpdi5pbm5lckhUTUwiLCAiYTxkaXY+PGJyPjwvZGl2PiIpOworICAgIGV2YWxBbmRMb2co
ImRpdi5pbm5lckhUTUwgPSAnJyIpOworCisgICAgZGVidWcoIlxuVXNpbmcgdGhlIHByZXZpb3Vz
IGJsb2NrIGFzIHRlbXBsYXRlIGZvciB0aGUgbmV3IG9uZS4iKTsKKyAgICBldmFsQW5kTG9nKCJk
b2N1bWVudC5leGVjQ29tbWFuZCgnRGVmYXVsdFBhcmFncmFwaFNlcGFyYXRvcicsIGZhbHNlLCAn
cCcpIik7CisgICAgZGVidWcoJ2RvY3VtZW50LmV4ZWNDb21tYW5kKCJJbnNlcnRIVE1MIiwgZmFs
c2UsICImbHQ7cHJlJmd0O2EmbHQ7L3ByZSZndDsiKTsnKTsKKyAgICBkb2N1bWVudC5leGVjQ29t
bWFuZCgiSW5zZXJ0SFRNTCIsIGZhbHNlLCAiPHByZT5hPC9wcmU+Iik7CisgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJkaXYuaW5uZXJIVE1MIiwgIjxwcmU+YTwvcHJlPiIpOworICAgIGV2YWxB
bmRMb2coImRvY3VtZW50LmV4ZWNDb21tYW5kKCdJbnNlcnRUZXh0JywgZmFsc2UsICdiJykiKTsK
KyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRpdi5pbm5lckhUTUwiLCAiPHByZT5hYjwvcHJl
PiIpOworICAgIGV2YWxBbmRMb2coImRvY3VtZW50LmV4ZWNDb21tYW5kKCdJbnNlcnRUZXh0Jywg
ZmFsc2UsICdcXG4nKSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZGl2LmlubmVySFRN
TCIsICI8cHJlPmFiPC9wcmU+PHByZT48YnI+PC9wcmU+Iik7CisgICAgZXZhbEFuZExvZygiZG9j
dW1lbnQuZXhlY0NvbW1hbmQoJ0luc2VydFRleHQnLCBmYWxzZSwgJ2MnKSIpOworICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygiZGl2LmlubmVySFRNTCIsICI8cHJlPmFiPC9wcmU+PHByZT5jPC9w
cmU+Iik7CisgICAgZXZhbEFuZExvZygiZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ0RlZmF1bHRQYXJh
Z3JhcGhTZXBhcmF0b3InLCBmYWxzZSwgJ2RpdicpIik7CisgICAgZXZhbEFuZExvZygiZG9jdW1l
bnQuZXhlY0NvbW1hbmQoJ0luc2VydFRleHQnLCBmYWxzZSwgJ1xcbicpIik7CisgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJkaXYuaW5uZXJIVE1MIiwgIjxwcmU+YWI8L3ByZT48cHJlPmM8L3By
ZT48cHJlPjxicj48L3ByZT4iKTsKKyAgICBldmFsQW5kTG9nKCJkb2N1bWVudC5leGVjQ29tbWFu
ZCgnRGVsZXRlJykiKTsKKyAgICBldmFsQW5kTG9nKCJkb2N1bWVudC5leGVjQ29tbWFuZCgnSW5z
ZXJ0UGFyYWdyYXBoJykiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRpdi5pbm5lckhU
TUwiLCAiPHByZT5hYjwvcHJlPjxwcmU+YzwvcHJlPjxwcmU+PGJyPjwvcHJlPiIpOworCisgICAg
ZGVidWcoIlxuQnJlYWtpbmcgb3V0IG9mIGxpc3RzLiIpOworICAgIGV2YWxBbmRMb2coImRpdi5p
bm5lckhUTUwgPSAnJyIpOworICAgIGV2YWxBbmRMb2coImRvY3VtZW50LmV4ZWNDb21tYW5kKCdE
ZWZhdWx0UGFyYWdyYXBoU2VwYXJhdG9yJywgZmFsc2UsICdwJykiKTsKKyAgICBkZWJ1ZygnZG9j
dW1lbnQuZXhlY0NvbW1hbmQoIkluc2VydEhUTUwiLCBmYWxzZSwgIiZsdDt1bD4mbHQ7bGk+YSZs
dDsvbGk+Jmx0Oy91bD4iKScpOworICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJJbnNlcnRIVE1M
IiwgZmFsc2UsICI8dWw+PGxpPmE8L2xpPjwvdWw+Iik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJkaXYuaW5uZXJIVE1MIiwgIjx1bD48bGk+YTwvbGk+PC91bD4iKTsKKyAgICBldmFsQW5k
TG9nKCJkb2N1bWVudC5leGVjQ29tbWFuZCgnSW5zZXJ0UGFyYWdyYXBoJykiKTsKKyAgICBldmFs
QW5kTG9nKCJkb2N1bWVudC5leGVjQ29tbWFuZCgnSW5zZXJ0UGFyYWdyYXBoJykiKTsKKyAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoImRpdi5pbm5lckhUTUwiLCAiPHVsPjxsaT5hPC9saT48L3Vs
PjxwPjxicj48L3A+Iik7CisKKyAgICBkZWJ1ZygiXG5CcmVha2luZyB1cCBuZXN0ZWQgZWxlbWVu
dHMuIik7CisgICAgZXZhbEFuZExvZygiZGl2LmlubmVySFRNTCA9ICcnIik7CisgICAgZGVidWco
J2RvY3VtZW50LmV4ZWNDb21tYW5kKCJJbnNlcnRIVE1MIiwgZmFsc2UsICImbHQ7Y2l0ZT5hJmx0
O2NpdGU+YmMmbHQ7L2NpdGU+Jmx0Oy9jaXRlPiIpJyk7CisgICAgZG9jdW1lbnQuZXhlY0NvbW1h
bmQoIkluc2VydEhUTUwiLCBmYWxzZSwgIjxjaXRlPmE8Y2l0ZT5iYzwvY2l0ZT48L2NpdGU+Iik7
CisgICAgZXZhbEFuZExvZygnc2VsZWN0aW9uLm1vZGlmeSgibW92ZSIsICJiYWNrd2FyZCIsICJj
aGFyYWN0ZXIiKScpOworICAgIGV2YWxBbmRMb2coImRvY3VtZW50LmV4ZWNDb21tYW5kKCdJbnNl
cnRQYXJhZ3JhcGgnKSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZGl2LmlubmVySFRN
TCIsICI8Y2l0ZT5hPGNpdGU+YjwvY2l0ZT48L2NpdGU+PHA+PGNpdGU+PGNpdGU+YzwvY2l0ZT48
L2NpdGU+PC9wPiIpOworCisgICAgZGl2LmlubmVySFRNTCA9ICIiOworPC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129764</attachid>
            <date>2012-03-01 15:47:39 -0800</date>
            <delta_ts>2012-03-01 16:09:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-59961-20120301154738.patch</filename>
            <type>text/plain</type>
            <size>9591</size>
            <attacher name="Pablo Flouret">pf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5MDIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTA5NDY1OWFiMTg4MDgy
NzU4OTQ0NWI5ZWFiNzIwYWVlNDhjZjVhYS4uZjZmZjRhNzgyZDQ5MDRjZjQxYWUxY2VmYzYwMDZm
YjExNmZjM2Q3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEyLTAyLTI5ICBQYWJs
byBGbG91cmV0ICA8cGFibG9mQG1vdG9yb2xhLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgRGVm
YXVsdFBhcmFncmFwaFNlcGFyYXRvciBleGVjQ29tbWFuZCwgdG8gbGV0IGF1dGhvcnMgY2hvb3Nl
IHRoZSBkZWZhdWx0IGJsb2NrIGVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTU5OTYxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgaHR0cDovL2R2Y3MudzMub3JnL2hnL2VkaXRpbmcvcmF3LWZpbGUv
dGlwL2VkaXRpbmcuaHRtbCN0aGUtZGVmYXVsdHBhcmFncmFwaHNlcGFyYXRvci1jb21tYW5kCisK
KyAgICAgICAgVGVzdDogZWRpdGluZy9leGVjQ29tbWFuZC9kZWZhdWx0LXBhcmFncmFwaC1zZXBh
cmF0b3IuaHRtbAorCisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RWRpdG9yOjpFZGl0b3IpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6CisgICAg
ICAgIChXZWJDb3JlOjpFZGl0b3I6OmRlZmF1bHRQYXJhZ3JhcGhTZXBhcmF0b3IpOgorICAgICAg
ICAoV2ViQ29yZTo6RWRpdG9yOjpzZXREZWZhdWx0UGFyYWdyYXBoU2VwYXJhdG9yKToKKyAgICAg
ICAgKEVkaXRvcik6CisgICAgICAgICogZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmV4ZWN1dGVEZWZhdWx0UGFyYWdyYXBoU2VwYXJhdG9yKToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6dmFsdWVEZWZhdWx0UGFyYWdyYXBoU2VwYXJh
dG9yKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNvbW1hbmRNYXApOgorICAgICAgICAqIGVk
aXRpbmcvaHRtbGVkaXRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRGVmYXVsdFBh
cmFncmFwaEVsZW1lbnQpOgorCisgICAgICAgICogaHRtbC9IVE1MUGFyYWdyYXBoRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGFyYWdyYXBoRWxlbWVudDo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGh0bWwvSFRNTFBhcmFncmFwaEVsZW1lbnQuaDoK
KyAgICAgICAgKEhUTUxQYXJhZ3JhcGhFbGVtZW50KToKKyAgICAgICAgICAgIEFkZGVkIGNyZWF0
ZShEb2N1bWVudCopIG1ldGhvZCB0aGF0IGRlZmF1bHRzIHRvIHBUYWcgYXMgdGhlIFF1YWxpZmll
ZE5hbWUuCisKIDIwMTItMDItMjcgIENocmlzIFJvZ2VycyAgPGNyb2dlcnNAZ29vZ2xlLmNvbT4K
IAogICAgICAgICBJbXBsZW1lbnQgc3RhdGljIGNvbXByZXNzaW9uIGN1cnZlIHBhcmFtZXRlcnMg
Zm9yIER5bmFtaWNzQ29tcHJlc3Nvck5vZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRl
eCAxY2UyNGU1MzhkNDM1N2YxZTNlMmRiYTgwYzQ0YjRhNTg0YzJhMDZmLi40ZmQzNjMxYzc2Y2E4
YzA1NTJiOWE0ZjU3ODg0YTViNTE4ZjgzOWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3Bw
CkBAIC04NDYsNiArODQ2LDcgQEAgRWRpdG9yOjpFZGl0b3IoRnJhbWUqIGZyYW1lKQogICAgICwg
bV9zcGVsbENoZWNrZXIoYWRvcHRQdHIobmV3IFNwZWxsQ2hlY2tlcihmcmFtZSkpKQogICAgICwg
bV9zcGVsbGluZ0NvcnJlY3RvcihhZG9wdFB0cihuZXcgU3BlbGxpbmdDb3JyZWN0aW9uQ29udHJv
bGxlcihmcmFtZSkpKQogICAgICwgbV9hcmVNYXJrZWRUZXh0TWF0Y2hlc0hpZ2hsaWdodGVkKGZh
bHNlKQorICAgICwgbV9kZWZhdWx0UGFyYWdyYXBoU2VwYXJhdG9yKEVkaXRvclBhcmFncmFwaFNl
cGFyYXRvcklzRGl2KQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAppbmRleCBlMzk4YmJm
M2U3ODc5YzA3ODQzNTk1MWRhZDUyMWQ3YWZlOWU1MmExLi4zYzI1NDRhNzE2Y2FmZDhkOGQzNGE5
ZjMyMGFiYTU5ODUxZmI3YTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKQEAgLTgwLDYgKzgw
LDcgQEAgc3RydWN0IENvbXBvc2l0aW9uVW5kZXJsaW5lIHsKIH07CiAKIGVudW0gRWRpdG9yQ29t
bWFuZFNvdXJjZSB7IENvbW1hbmRGcm9tTWVudU9yS2V5QmluZGluZywgQ29tbWFuZEZyb21ET00s
IENvbW1hbmRGcm9tRE9NV2l0aFVzZXJJbnRlcmZhY2UgfTsKK2VudW0gRWRpdG9yUGFyYWdyYXBo
U2VwYXJhdG9yIHsgRWRpdG9yUGFyYWdyYXBoU2VwYXJhdG9ySXNEaXYsIEVkaXRvclBhcmFncmFw
aFNlcGFyYXRvcklzUCB9OwogCiBjbGFzcyBFZGl0b3IgewogcHVibGljOgpAQCAtMzgzLDYgKzM4
NCw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGV2aWNlU2NhbGVGYWN0b3JDaGFuZ2VkKCk7CiAK
KyAgICBFZGl0b3JQYXJhZ3JhcGhTZXBhcmF0b3IgZGVmYXVsdFBhcmFncmFwaFNlcGFyYXRvcigp
IGNvbnN0IHsgcmV0dXJuIG1fZGVmYXVsdFBhcmFncmFwaFNlcGFyYXRvcjsgfQorICAgIHZvaWQg
c2V0RGVmYXVsdFBhcmFncmFwaFNlcGFyYXRvcihFZGl0b3JQYXJhZ3JhcGhTZXBhcmF0b3Igc2Vw
YXJhdG9yKSB7IG1fZGVmYXVsdFBhcmFncmFwaFNlcGFyYXRvciA9IHNlcGFyYXRvcjsgfQorCiBw
cml2YXRlOgogICAgIEZyYW1lKiBtX2ZyYW1lOwogICAgIE93blB0cjxEZWxldGVCdXR0b25Db250
cm9sbGVyPiBtX2RlbGV0ZUJ1dHRvbkNvbnRyb2xsZXI7CkBAIC00MDAsNiArNDA0LDcgQEAgcHJp
dmF0ZToKICAgICBPd25QdHI8U3BlbGxpbmdDb3JyZWN0aW9uQ29udHJvbGxlcj4gbV9zcGVsbGlu
Z0NvcnJlY3RvcjsKICAgICBWaXNpYmxlU2VsZWN0aW9uIG1fbWFyazsKICAgICBib29sIG1fYXJl
TWFya2VkVGV4dE1hdGNoZXNIaWdobGlnaHRlZDsKKyAgICBFZGl0b3JQYXJhZ3JhcGhTZXBhcmF0
b3IgbV9kZWZhdWx0UGFyYWdyYXBoU2VwYXJhdG9yOwogCiAgICAgYm9vbCBjYW5EZWxldGVSYW5n
ZShSYW5nZSopIGNvbnN0OwogICAgIGJvb2wgY2FuU21hcnRSZXBsYWNlV2l0aFBhc3RlYm9hcmQo
UGFzdGVib2FyZCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JD
b21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAKaW5k
ZXggYTQxMzc0MjVkMDQ0ZTFjNDkxZTNhYzZjNmE4MDJiYTMzNzc0MDZmOS4uZDc4MGZjOTY2Y2I1
Zjc5ZjAzYzlmMmYyYmQ4NTk2Y2VkNDYwZjg0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvckNvbW1hbmQuY3BwCkBAIC0zMDcsNiArMzA3LDE2IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVD
dXQoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLCBjb25z
dCBTCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3N0YXRpYyBib29sIGV4ZWN1dGVEZWZhdWx0UGFy
YWdyYXBoU2VwYXJhdG9yKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNl
LCBjb25zdCBTdHJpbmcmIHZhbHVlKQoreworICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh2YWx1
ZSwgImRpdiIpKQorICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPnNldERlZmF1bHRQYXJhZ3JhcGhT
ZXBhcmF0b3IoRWRpdG9yUGFyYWdyYXBoU2VwYXJhdG9ySXNEaXYpOworICAgIGVsc2UgaWYgKGVx
dWFsSWdub3JpbmdDYXNlKHZhbHVlLCAicCIpKQorICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPnNl
dERlZmF1bHRQYXJhZ3JhcGhTZXBhcmF0b3IoRWRpdG9yUGFyYWdyYXBoU2VwYXJhdG9ySXNQKTsK
KworICAgIHJldHVybiB0cnVlOworfQorCiBzdGF0aWMgYm9vbCBleGVjdXRlRGVsZXRlKEZyYW1l
KiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlIHNvdXJjZSwgY29uc3QgU3RyaW5n
JikKIHsKICAgICBzd2l0Y2ggKHNvdXJjZSkgewpAQCAtMTM3OCw2ICsxMzg4LDE5IEBAIHN0YXRp
YyBTdHJpbmcgdmFsdWVCYWNrQ29sb3IoRnJhbWUqIGZyYW1lLCBFdmVudCopCiAgICAgcmV0dXJu
IHZhbHVlU3R5bGUoZnJhbWUsIENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKTsKIH0KIAorc3Rh
dGljIFN0cmluZyB2YWx1ZURlZmF1bHRQYXJhZ3JhcGhTZXBhcmF0b3IoRnJhbWUqIGZyYW1lLCBF
dmVudCopCit7CisgICAgc3dpdGNoIChmcmFtZS0+ZWRpdG9yKCktPmRlZmF1bHRQYXJhZ3JhcGhT
ZXBhcmF0b3IoKSkgeworICAgIGNhc2UgRWRpdG9yUGFyYWdyYXBoU2VwYXJhdG9ySXNEaXY6Cisg
ICAgICAgIHJldHVybiAiZGl2IjsKKyAgICBjYXNlIEVkaXRvclBhcmFncmFwaFNlcGFyYXRvcklz
UDoKKyAgICAgICAgcmV0dXJuICJwIjsKKyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKIHN0YXRpYyBTdHJpbmcgdmFsdWVGb250TmFt
ZShGcmFtZSogZnJhbWUsIEV2ZW50KikKIHsKICAgICByZXR1cm4gdmFsdWVTdHlsZShmcmFtZSwg
Q1NTUHJvcGVydHlGb250RmFtaWx5KTsKQEAgLTE0MjksNiArMTQ1Miw3IEBAIHN0YXRpYyBjb25z
dCBDb21tYW5kTWFwJiBjcmVhdGVDb21tYW5kTWFwKCkKICAgICAgICAgeyAiQ29weSIsIHsgZXhl
Y3V0ZUNvcHksIHN1cHBvcnRlZENvcHlDdXQsIGVuYWJsZWRDb3B5LCBzdGF0ZU5vbmUsIHZhbHVl
TnVsbCwgbm90VGV4dEluc2VydGlvbiwgYWxsb3dFeGVjdXRpb25XaGVuRGlzYWJsZWQgfSB9LAog
ICAgICAgICB7ICJDcmVhdGVMaW5rIiwgeyBleGVjdXRlQ3JlYXRlTGluaywgc3VwcG9ydGVkLCBl
bmFibGVkSW5SaWNobHlFZGl0YWJsZVRleHQsIHN0YXRlTm9uZSwgdmFsdWVOdWxsLCBub3RUZXh0
SW5zZXJ0aW9uLCBkb05vdEFsbG93RXhlY3V0aW9uV2hlbkRpc2FibGVkIH0gfSwKICAgICAgICAg
eyAiQ3V0IiwgeyBleGVjdXRlQ3V0LCBzdXBwb3J0ZWRDb3B5Q3V0LCBlbmFibGVkQ3V0LCBzdGF0
ZU5vbmUsIHZhbHVlTnVsbCwgbm90VGV4dEluc2VydGlvbiwgYWxsb3dFeGVjdXRpb25XaGVuRGlz
YWJsZWQgfSB9LAorICAgICAgICB7ICJEZWZhdWx0UGFyYWdyYXBoU2VwYXJhdG9yIiwgeyBleGVj
dXRlRGVmYXVsdFBhcmFncmFwaFNlcGFyYXRvciwgc3VwcG9ydGVkLCBlbmFibGVkLCBzdGF0ZU5v
bmUsIHZhbHVlRGVmYXVsdFBhcmFncmFwaFNlcGFyYXRvciwgbm90VGV4dEluc2VydGlvbiwgZG9O
b3RBbGxvd0V4ZWN1dGlvbldoZW5EaXNhYmxlZH0gfSwKICAgICAgICAgeyAiRGVsZXRlIiwgeyBl
eGVjdXRlRGVsZXRlLCBzdXBwb3J0ZWQsIGVuYWJsZWREZWxldGUsIHN0YXRlTm9uZSwgdmFsdWVO
dWxsLCBub3RUZXh0SW5zZXJ0aW9uLCBkb05vdEFsbG93RXhlY3V0aW9uV2hlbkRpc2FibGVkIH0g
fSwKICAgICAgICAgeyAiRGVsZXRlQmFja3dhcmQiLCB7IGV4ZWN1dGVEZWxldGVCYWNrd2FyZCwg
c3VwcG9ydGVkRnJvbU1lbnVPcktleUJpbmRpbmcsIGVuYWJsZWRJbkVkaXRhYmxlVGV4dCwgc3Rh
dGVOb25lLCB2YWx1ZU51bGwsIG5vdFRleHRJbnNlcnRpb24sIGRvTm90QWxsb3dFeGVjdXRpb25X
aGVuRGlzYWJsZWQgfSB9LAogICAgICAgICB7ICJEZWxldGVCYWNrd2FyZEJ5RGVjb21wb3NpbmdQ
cmV2aW91c0NoYXJhY3RlciIsIHsgZXhlY3V0ZURlbGV0ZUJhY2t3YXJkQnlEZWNvbXBvc2luZ1By
ZXZpb3VzQ2hhcmFjdGVyLCBzdXBwb3J0ZWRGcm9tTWVudU9yS2V5QmluZGluZywgZW5hYmxlZElu
RWRpdGFibGVUZXh0LCBzdGF0ZU5vbmUsIHZhbHVlTnVsbCwgbm90VGV4dEluc2VydGlvbiwgZG9O
b3RBbGxvd0V4ZWN1dGlvbldoZW5EaXNhYmxlZCB9IH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRt
bGVkaXRpbmcuY3BwCmluZGV4IDA3MDQ2MTAwZTQ3Yzc3ZWRiMTkzYWRiNDI3Zjc1MTVlNjIyMjFm
MGQuLmI2ZDMwYTE4Yjk4NWIxNDU1NzFlM2ZhOTE2YTcwYTVjNTY2YWM5MTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCkBAIC0yOSw2ICsyOSw4IEBACiAjaW5jbHVkZSAi
QVhPYmplY3RDYWNoZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRWRpdGlu
Z1RleHQuaCIKKyNpbmNsdWRlICJFZGl0b3IuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1
ZGUgIkhUTUxCUkVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MRGl2RWxlbWVudC5oIgogI2luY2x1
ZGUgIkhUTUxFbGVtZW50RmFjdG9yeS5oIgpAQCAtMzgsNiArNDAsNyBAQAogI2luY2x1ZGUgIkhU
TUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxPYmplY3RFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRN
TE9MaXN0RWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxQYXJhZ3JhcGhFbGVtZW50LmgiCiAjaW5j
bHVkZSAiSFRNTFVMaXN0RWxlbWVudC5oIgogI2luY2x1ZGUgIlBvc2l0aW9uSXRlcmF0b3IuaCIK
ICNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKQEAgLTg0NCw3ICs4NDcsMTUgQEAgYm9vbCBpc0Vt
cHR5VGFibGVDZWxsKGNvbnN0IE5vZGUqIG5vZGUpCiAKIFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+
IGNyZWF0ZURlZmF1bHRQYXJhZ3JhcGhFbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCkKIHsKLSAg
ICByZXR1cm4gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CisgICAgc3dpdGNoIChk
b2N1bWVudC0+ZnJhbWUoKS0+ZWRpdG9yKCktPmRlZmF1bHRQYXJhZ3JhcGhTZXBhcmF0b3IoKSkg
eworICAgIGNhc2UgRWRpdG9yUGFyYWdyYXBoU2VwYXJhdG9ySXNEaXY6CisgICAgICAgIHJldHVy
biBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKyAgICBjYXNlIEVkaXRvclBhcmFn
cmFwaFNlcGFyYXRvcklzUDoKKyAgICAgICAgcmV0dXJuIEhUTUxQYXJhZ3JhcGhFbGVtZW50Ojpj
cmVhdGUoZG9jdW1lbnQpOworICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IHJldHVybiAwOwogfQogCiBQYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBjcmVhdGVCcmVha0VsZW1l
bnQoRG9jdW1lbnQqIGRvY3VtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MUGFyYWdyYXBoRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQYXJhZ3Jh
cGhFbGVtZW50LmNwcAppbmRleCBjOGY2YWQzZWUzNDY0MmY2ODU5MjMwMTM0OGMyZmE2YmM1YzY5
NDcwLi5hZTg5NjE5YTU0MGZlOWU2OWM1YTg2ZjJlOTFjNjQyMDg2YWI2ZDliIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQYXJhZ3JhcGhFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxQYXJhZ3JhcGhFbGVtZW50LmNwcApAQCAtMzksNiArMzksMTEg
QEAgaW5saW5lIEhUTUxQYXJhZ3JhcGhFbGVtZW50OjpIVE1MUGFyYWdyYXBoRWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLAogICAgIEFTU0VSVChoYXNUYWdOYW1lKHBUYWcpKTsK
IH0KIAorUGFzc1JlZlB0cjxIVE1MUGFyYWdyYXBoRWxlbWVudD4gSFRNTFBhcmFncmFwaEVsZW1l
bnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBIVE1MUGFyYWdyYXBoRWxlbWVudChwVGFnLCBkb2N1bWVudCkpOworfQorCiBQYXNzUmVmUHRy
PEhUTUxQYXJhZ3JhcGhFbGVtZW50PiBIVE1MUGFyYWdyYXBoRWxlbWVudDo6Y3JlYXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKIHsKICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IEhUTUxQYXJhZ3JhcGhFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQYXJhZ3JhcGhFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQYXJhZ3JhcGhFbGVtZW50LmgKaW5kZXggODZhODVh
NjNhZDdhNDNmMGY3NzAzZTQyNmRlNzFkNmE3NjVkMDYzMi4uZDAxZWRjMmM1Mzg4ODFjYzZjMTEx
MGVhZjEzZDkxOWU0OTNjMDMwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
UGFyYWdyYXBoRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBhcmFncmFw
aEVsZW1lbnQuaApAQCAtMjksNiArMjksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IEhUTUxQYXJhZ3JhcGhFbGVtZW50IDogcHVibGljIEhUTUxFbGVtZW50IHsKIHB1YmxpYzoKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MUGFyYWdyYXBoRWxlbWVudD4gY3JlYXRlKERvY3VtZW50
Kik7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTFBhcmFncmFwaEVsZW1lbnQ+IGNyZWF0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA2ZmQ1
ZmMxMTI5ODM3ZjRjNzg2ZjRjODYyYWE3ZWYxMzgzMjk4OGZjLi43MmZkNjY4YjQ4Y2MyMDFlNGYx
ZTRmNWU3N2MwZDhjYjhhMmM1Y2UyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMDItMjkg
IFBhYmxvIEZsb3VyZXQgIDxwYWJsb2ZAbW90b3JvbGEuY29tPgorCisgICAgICAgIEltcGxlbWVu
dCBEZWZhdWx0UGFyYWdyYXBoU2VwYXJhdG9yIGV4ZWNDb21tYW5kLCB0byBsZXQgYXV0aG9ycyBj
aG9vc2UgdGhlIGRlZmF1bHQgYmxvY2sgZWxlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTk5NjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIGVkaXRpbmcvZXhlY0NvbW1hbmQvZGVmYXVsdC1wYXJh
Z3JhcGgtc2VwYXJhdG9yLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9l
eGVjQ29tbWFuZC9kZWZhdWx0LXBhcmFncmFwaC1zZXBhcmF0b3IuaHRtbDogQWRkZWQuCisKIDIw
MTItMDItMjcgIENocmlzIFJvZ2VycyAgPGNyb2dlcnNAZ29vZ2xlLmNvbT4KIAogICAgICAgICBJ
bXBsZW1lbnQgc3RhdGljIGNvbXByZXNzaW9uIGN1cnZlIHBhcmFtZXRlcnMgZm9yIER5bmFtaWNz
Q29tcHJlc3Nvck5vZGUK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129765</attachid>
            <date>2012-03-01 16:09:40 -0800</date>
            <delta_ts>2012-03-02 01:20:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-59961-20120301160939.patch</filename>
            <type>text/plain</type>
            <size>17825</size>
            <attacher name="Pablo Flouret">pf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5MDIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTA5NDY1OWFiMTg4MDgy
NzU4OTQ0NWI5ZWFiNzIwYWVlNDhjZjVhYS4uZjZmZjRhNzgyZDQ5MDRjZjQxYWUxY2VmYzYwMDZm
YjExNmZjM2Q3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEyLTAyLTI5ICBQYWJs
byBGbG91cmV0ICA8cGFibG9mQG1vdG9yb2xhLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgRGVm
YXVsdFBhcmFncmFwaFNlcGFyYXRvciBleGVjQ29tbWFuZCwgdG8gbGV0IGF1dGhvcnMgY2hvb3Nl
IHRoZSBkZWZhdWx0IGJsb2NrIGVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTU5OTYxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgaHR0cDovL2R2Y3MudzMub3JnL2hnL2VkaXRpbmcvcmF3LWZpbGUv
dGlwL2VkaXRpbmcuaHRtbCN0aGUtZGVmYXVsdHBhcmFncmFwaHNlcGFyYXRvci1jb21tYW5kCisK
KyAgICAgICAgVGVzdDogZWRpdGluZy9leGVjQ29tbWFuZC9kZWZhdWx0LXBhcmFncmFwaC1zZXBh
cmF0b3IuaHRtbAorCisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RWRpdG9yOjpFZGl0b3IpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6CisgICAg
ICAgIChXZWJDb3JlOjpFZGl0b3I6OmRlZmF1bHRQYXJhZ3JhcGhTZXBhcmF0b3IpOgorICAgICAg
ICAoV2ViQ29yZTo6RWRpdG9yOjpzZXREZWZhdWx0UGFyYWdyYXBoU2VwYXJhdG9yKToKKyAgICAg
ICAgKEVkaXRvcik6CisgICAgICAgICogZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmV4ZWN1dGVEZWZhdWx0UGFyYWdyYXBoU2VwYXJhdG9yKToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6dmFsdWVEZWZhdWx0UGFyYWdyYXBoU2VwYXJh
dG9yKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNvbW1hbmRNYXApOgorICAgICAgICAqIGVk
aXRpbmcvaHRtbGVkaXRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRGVmYXVsdFBh
cmFncmFwaEVsZW1lbnQpOgorCisgICAgICAgICogaHRtbC9IVE1MUGFyYWdyYXBoRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGFyYWdyYXBoRWxlbWVudDo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGh0bWwvSFRNTFBhcmFncmFwaEVsZW1lbnQuaDoK
KyAgICAgICAgKEhUTUxQYXJhZ3JhcGhFbGVtZW50KToKKyAgICAgICAgICAgIEFkZGVkIGNyZWF0
ZShEb2N1bWVudCopIG1ldGhvZCB0aGF0IGRlZmF1bHRzIHRvIHBUYWcgYXMgdGhlIFF1YWxpZmll
ZE5hbWUuCisKIDIwMTItMDItMjcgIENocmlzIFJvZ2VycyAgPGNyb2dlcnNAZ29vZ2xlLmNvbT4K
IAogICAgICAgICBJbXBsZW1lbnQgc3RhdGljIGNvbXByZXNzaW9uIGN1cnZlIHBhcmFtZXRlcnMg
Zm9yIER5bmFtaWNzQ29tcHJlc3Nvck5vZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRl
eCAxY2UyNGU1MzhkNDM1N2YxZTNlMmRiYTgwYzQ0YjRhNTg0YzJhMDZmLi40ZmQzNjMxYzc2Y2E4
YzA1NTJiOWE0ZjU3ODg0YTViNTE4ZjgzOWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3Bw
CkBAIC04NDYsNiArODQ2LDcgQEAgRWRpdG9yOjpFZGl0b3IoRnJhbWUqIGZyYW1lKQogICAgICwg
bV9zcGVsbENoZWNrZXIoYWRvcHRQdHIobmV3IFNwZWxsQ2hlY2tlcihmcmFtZSkpKQogICAgICwg
bV9zcGVsbGluZ0NvcnJlY3RvcihhZG9wdFB0cihuZXcgU3BlbGxpbmdDb3JyZWN0aW9uQ29udHJv
bGxlcihmcmFtZSkpKQogICAgICwgbV9hcmVNYXJrZWRUZXh0TWF0Y2hlc0hpZ2hsaWdodGVkKGZh
bHNlKQorICAgICwgbV9kZWZhdWx0UGFyYWdyYXBoU2VwYXJhdG9yKEVkaXRvclBhcmFncmFwaFNl
cGFyYXRvcklzRGl2KQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAppbmRleCBlMzk4YmJm
M2U3ODc5YzA3ODQzNTk1MWRhZDUyMWQ3YWZlOWU1MmExLi4zYzI1NDRhNzE2Y2FmZDhkOGQzNGE5
ZjMyMGFiYTU5ODUxZmI3YTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKQEAgLTgwLDYgKzgw
LDcgQEAgc3RydWN0IENvbXBvc2l0aW9uVW5kZXJsaW5lIHsKIH07CiAKIGVudW0gRWRpdG9yQ29t
bWFuZFNvdXJjZSB7IENvbW1hbmRGcm9tTWVudU9yS2V5QmluZGluZywgQ29tbWFuZEZyb21ET00s
IENvbW1hbmRGcm9tRE9NV2l0aFVzZXJJbnRlcmZhY2UgfTsKK2VudW0gRWRpdG9yUGFyYWdyYXBo
U2VwYXJhdG9yIHsgRWRpdG9yUGFyYWdyYXBoU2VwYXJhdG9ySXNEaXYsIEVkaXRvclBhcmFncmFw
aFNlcGFyYXRvcklzUCB9OwogCiBjbGFzcyBFZGl0b3IgewogcHVibGljOgpAQCAtMzgzLDYgKzM4
NCw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGV2aWNlU2NhbGVGYWN0b3JDaGFuZ2VkKCk7CiAK
KyAgICBFZGl0b3JQYXJhZ3JhcGhTZXBhcmF0b3IgZGVmYXVsdFBhcmFncmFwaFNlcGFyYXRvcigp
IGNvbnN0IHsgcmV0dXJuIG1fZGVmYXVsdFBhcmFncmFwaFNlcGFyYXRvcjsgfQorICAgIHZvaWQg
c2V0RGVmYXVsdFBhcmFncmFwaFNlcGFyYXRvcihFZGl0b3JQYXJhZ3JhcGhTZXBhcmF0b3Igc2Vw
YXJhdG9yKSB7IG1fZGVmYXVsdFBhcmFncmFwaFNlcGFyYXRvciA9IHNlcGFyYXRvcjsgfQorCiBw
cml2YXRlOgogICAgIEZyYW1lKiBtX2ZyYW1lOwogICAgIE93blB0cjxEZWxldGVCdXR0b25Db250
cm9sbGVyPiBtX2RlbGV0ZUJ1dHRvbkNvbnRyb2xsZXI7CkBAIC00MDAsNiArNDA0LDcgQEAgcHJp
dmF0ZToKICAgICBPd25QdHI8U3BlbGxpbmdDb3JyZWN0aW9uQ29udHJvbGxlcj4gbV9zcGVsbGlu
Z0NvcnJlY3RvcjsKICAgICBWaXNpYmxlU2VsZWN0aW9uIG1fbWFyazsKICAgICBib29sIG1fYXJl
TWFya2VkVGV4dE1hdGNoZXNIaWdobGlnaHRlZDsKKyAgICBFZGl0b3JQYXJhZ3JhcGhTZXBhcmF0
b3IgbV9kZWZhdWx0UGFyYWdyYXBoU2VwYXJhdG9yOwogCiAgICAgYm9vbCBjYW5EZWxldGVSYW5n
ZShSYW5nZSopIGNvbnN0OwogICAgIGJvb2wgY2FuU21hcnRSZXBsYWNlV2l0aFBhc3RlYm9hcmQo
UGFzdGVib2FyZCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JD
b21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAKaW5k
ZXggYTQxMzc0MjVkMDQ0ZTFjNDkxZTNhYzZjNmE4MDJiYTMzNzc0MDZmOS4uYjlmMzRiOTgwNTll
MGNmOGEyM2E0OGIwOGEwMzg3NmE0MTg4MjQ5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvckNvbW1hbmQuY3BwCkBAIC0zMDcsNiArMzA3LDE2IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVD
dXQoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLCBjb25z
dCBTCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3N0YXRpYyBib29sIGV4ZWN1dGVEZWZhdWx0UGFy
YWdyYXBoU2VwYXJhdG9yKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNl
LCBjb25zdCBTdHJpbmcmIHZhbHVlKQoreworICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh2YWx1
ZSwgImRpdiIpKQorICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPnNldERlZmF1bHRQYXJhZ3JhcGhT
ZXBhcmF0b3IoRWRpdG9yUGFyYWdyYXBoU2VwYXJhdG9ySXNEaXYpOworICAgIGVsc2UgaWYgKGVx
dWFsSWdub3JpbmdDYXNlKHZhbHVlLCAicCIpKQorICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPnNl
dERlZmF1bHRQYXJhZ3JhcGhTZXBhcmF0b3IoRWRpdG9yUGFyYWdyYXBoU2VwYXJhdG9ySXNQKTsK
KworICAgIHJldHVybiB0cnVlOworfQorCiBzdGF0aWMgYm9vbCBleGVjdXRlRGVsZXRlKEZyYW1l
KiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlIHNvdXJjZSwgY29uc3QgU3RyaW5n
JikKIHsKICAgICBzd2l0Y2ggKHNvdXJjZSkgewpAQCAtMTM3OCw2ICsxMzg4LDE5IEBAIHN0YXRp
YyBTdHJpbmcgdmFsdWVCYWNrQ29sb3IoRnJhbWUqIGZyYW1lLCBFdmVudCopCiAgICAgcmV0dXJu
IHZhbHVlU3R5bGUoZnJhbWUsIENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKTsKIH0KIAorc3Rh
dGljIFN0cmluZyB2YWx1ZURlZmF1bHRQYXJhZ3JhcGhTZXBhcmF0b3IoRnJhbWUqIGZyYW1lLCBF
dmVudCopCit7CisgICAgc3dpdGNoIChmcmFtZS0+ZWRpdG9yKCktPmRlZmF1bHRQYXJhZ3JhcGhT
ZXBhcmF0b3IoKSkgeworICAgIGNhc2UgRWRpdG9yUGFyYWdyYXBoU2VwYXJhdG9ySXNEaXY6Cisg
ICAgICAgIHJldHVybiBkaXZUYWcubG9jYWxOYW1lKCk7CisgICAgY2FzZSBFZGl0b3JQYXJhZ3Jh
cGhTZXBhcmF0b3JJc1A6CisgICAgICAgIHJldHVybiBwVGFnLmxvY2FsTmFtZSgpOworICAgIH0K
KworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKwog
c3RhdGljIFN0cmluZyB2YWx1ZUZvbnROYW1lKEZyYW1lKiBmcmFtZSwgRXZlbnQqKQogewogICAg
IHJldHVybiB2YWx1ZVN0eWxlKGZyYW1lLCBDU1NQcm9wZXJ0eUZvbnRGYW1pbHkpOwpAQCAtMTQy
OSw2ICsxNDUyLDcgQEAgc3RhdGljIGNvbnN0IENvbW1hbmRNYXAmIGNyZWF0ZUNvbW1hbmRNYXAo
KQogICAgICAgICB7ICJDb3B5IiwgeyBleGVjdXRlQ29weSwgc3VwcG9ydGVkQ29weUN1dCwgZW5h
YmxlZENvcHksIHN0YXRlTm9uZSwgdmFsdWVOdWxsLCBub3RUZXh0SW5zZXJ0aW9uLCBhbGxvd0V4
ZWN1dGlvbldoZW5EaXNhYmxlZCB9IH0sCiAgICAgICAgIHsgIkNyZWF0ZUxpbmsiLCB7IGV4ZWN1
dGVDcmVhdGVMaW5rLCBzdXBwb3J0ZWQsIGVuYWJsZWRJblJpY2hseUVkaXRhYmxlVGV4dCwgc3Rh
dGVOb25lLCB2YWx1ZU51bGwsIG5vdFRleHRJbnNlcnRpb24sIGRvTm90QWxsb3dFeGVjdXRpb25X
aGVuRGlzYWJsZWQgfSB9LAogICAgICAgICB7ICJDdXQiLCB7IGV4ZWN1dGVDdXQsIHN1cHBvcnRl
ZENvcHlDdXQsIGVuYWJsZWRDdXQsIHN0YXRlTm9uZSwgdmFsdWVOdWxsLCBub3RUZXh0SW5zZXJ0
aW9uLCBhbGxvd0V4ZWN1dGlvbldoZW5EaXNhYmxlZCB9IH0sCisgICAgICAgIHsgIkRlZmF1bHRQ
YXJhZ3JhcGhTZXBhcmF0b3IiLCB7IGV4ZWN1dGVEZWZhdWx0UGFyYWdyYXBoU2VwYXJhdG9yLCBz
dXBwb3J0ZWQsIGVuYWJsZWQsIHN0YXRlTm9uZSwgdmFsdWVEZWZhdWx0UGFyYWdyYXBoU2VwYXJh
dG9yLCBub3RUZXh0SW5zZXJ0aW9uLCBkb05vdEFsbG93RXhlY3V0aW9uV2hlbkRpc2FibGVkfSB9
LAogICAgICAgICB7ICJEZWxldGUiLCB7IGV4ZWN1dGVEZWxldGUsIHN1cHBvcnRlZCwgZW5hYmxl
ZERlbGV0ZSwgc3RhdGVOb25lLCB2YWx1ZU51bGwsIG5vdFRleHRJbnNlcnRpb24sIGRvTm90QWxs
b3dFeGVjdXRpb25XaGVuRGlzYWJsZWQgfSB9LAogICAgICAgICB7ICJEZWxldGVCYWNrd2FyZCIs
IHsgZXhlY3V0ZURlbGV0ZUJhY2t3YXJkLCBzdXBwb3J0ZWRGcm9tTWVudU9yS2V5QmluZGluZywg
ZW5hYmxlZEluRWRpdGFibGVUZXh0LCBzdGF0ZU5vbmUsIHZhbHVlTnVsbCwgbm90VGV4dEluc2Vy
dGlvbiwgZG9Ob3RBbGxvd0V4ZWN1dGlvbldoZW5EaXNhYmxlZCB9IH0sCiAgICAgICAgIHsgIkRl
bGV0ZUJhY2t3YXJkQnlEZWNvbXBvc2luZ1ByZXZpb3VzQ2hhcmFjdGVyIiwgeyBleGVjdXRlRGVs
ZXRlQmFja3dhcmRCeURlY29tcG9zaW5nUHJldmlvdXNDaGFyYWN0ZXIsIHN1cHBvcnRlZEZyb21N
ZW51T3JLZXlCaW5kaW5nLCBlbmFibGVkSW5FZGl0YWJsZVRleHQsIHN0YXRlTm9uZSwgdmFsdWVO
dWxsLCBub3RUZXh0SW5zZXJ0aW9uLCBkb05vdEFsbG93RXhlY3V0aW9uV2hlbkRpc2FibGVkIH0g
fSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAKaW5kZXggMDcwNDYxMDBlNDdj
NzdlZGIxOTNhZGI0MjdmNzUxNWU2MjIyMWYwZC4uYjZkMzBhMThiOTg1YjE0NTU3MWUzZmE5MTZh
NzBhNWM1NjZhYzkxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1sZWRp
dGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAKQEAg
LTI5LDYgKzI5LDggQEAKICNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgiCiAjaW5jbHVkZSAiRG9j
dW1lbnQuaCIKICNpbmNsdWRlICJFZGl0aW5nVGV4dC5oIgorI2luY2x1ZGUgIkVkaXRvci5oIgor
I2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSFRNTEJSRWxlbWVudC5oIgogI2luY2x1ZGUg
IkhUTUxEaXZFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnRGYWN0b3J5LmgiCkBAIC0z
OCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTE9iamVj
dEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MT0xpc3RFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRN
TFBhcmFncmFwaEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MVUxpc3RFbGVtZW50LmgiCiAjaW5j
bHVkZSAiUG9zaXRpb25JdGVyYXRvci5oIgogI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgpAQCAt
ODQ0LDcgKzg0NywxNSBAQCBib29sIGlzRW1wdHlUYWJsZUNlbGwoY29uc3QgTm9kZSogbm9kZSkK
IAogUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gY3JlYXRlRGVmYXVsdFBhcmFncmFwaEVsZW1lbnQo
RG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIHJldHVybiBIVE1MRGl2RWxlbWVudDo6Y3JlYXRl
KGRvY3VtZW50KTsKKyAgICBzd2l0Y2ggKGRvY3VtZW50LT5mcmFtZSgpLT5lZGl0b3IoKS0+ZGVm
YXVsdFBhcmFncmFwaFNlcGFyYXRvcigpKSB7CisgICAgY2FzZSBFZGl0b3JQYXJhZ3JhcGhTZXBh
cmF0b3JJc0RpdjoKKyAgICAgICAgcmV0dXJuIEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jdW1l
bnQpOworICAgIGNhc2UgRWRpdG9yUGFyYWdyYXBoU2VwYXJhdG9ySXNQOgorICAgICAgICByZXR1
cm4gSFRNTFBhcmFncmFwaEVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CisgICAgfQorCisgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIDA7CiB9CiAKIFBhc3NSZWZQdHI8SFRN
TEVsZW1lbnQ+IGNyZWF0ZUJyZWFrRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQYXJhZ3JhcGhFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFBhcmFncmFwaEVsZW1lbnQuY3BwCmluZGV4IGM4ZjZhZDNlZTM0
NjQyZjY4NTkyMzAxMzQ4YzJmYTZiYzVjNjk0NzAuLmFlODk2MTlhNTQwZmU5ZTY5YzVhODZmMmU5
MWM2NDIwODZhYjZkOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBhcmFn
cmFwaEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBhcmFncmFwaEVs
ZW1lbnQuY3BwCkBAIC0zOSw2ICszOSwxMSBAQCBpbmxpbmUgSFRNTFBhcmFncmFwaEVsZW1lbnQ6
OkhUTUxQYXJhZ3JhcGhFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsCiAgICAg
QVNTRVJUKGhhc1RhZ05hbWUocFRhZykpOwogfQogCitQYXNzUmVmUHRyPEhUTUxQYXJhZ3JhcGhF
bGVtZW50PiBIVE1MUGFyYWdyYXBoRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkK
K3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxQYXJhZ3JhcGhFbGVtZW50KHBUYWcsIGRv
Y3VtZW50KSk7Cit9CisKIFBhc3NSZWZQdHI8SFRNTFBhcmFncmFwaEVsZW1lbnQ+IEhUTUxQYXJh
Z3JhcGhFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1l
bnQqIGRvY3VtZW50KQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTFBhcmFncmFwaEVs
ZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFBhcmFncmFwaEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBhcmFn
cmFwaEVsZW1lbnQuaAppbmRleCA4NmE4NWE2M2FkN2E0M2YwZjc3MDNlNDI2ZGU3MWQ2YTc2NWQw
NjMyLi5kMDFlZGMyYzUzODg4MWNjNmMxMTEwZWFmMTNkOTE5ZTQ5M2MwMzA3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQYXJhZ3JhcGhFbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MUGFyYWdyYXBoRWxlbWVudC5oCkBAIC0yOSw2ICsyOSw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSFRNTFBhcmFncmFwaEVsZW1lbnQgOiBwdWJsaWMg
SFRNTEVsZW1lbnQgewogcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxQYXJhZ3Jh
cGhFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQqKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1M
UGFyYWdyYXBoRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCop
OwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDZmZDVmYzExMjk4MzdmNGM3ODZmNGM4NjJhYTdlZjEzODMy
OTg4ZmMuLjcyZmQ2NjhiNDhjYzIwMWU0ZjFlNGY1ZTc3YzBkOGNiOGEyYzVjZTIgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMyBAQAorMjAxMi0wMi0yOSAgUGFibG8gRmxvdXJldCAgPHBhYmxvZkBtb3Rvcm9s
YS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IERlZmF1bHRQYXJhZ3JhcGhTZXBhcmF0b3IgZXhl
Y0NvbW1hbmQsIHRvIGxldCBhdXRob3JzIGNob29zZSB0aGUgZGVmYXVsdCBibG9jayBlbGVtZW50
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTk2MQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZWRpdGlu
Zy9leGVjQ29tbWFuZC9kZWZhdWx0LXBhcmFncmFwaC1zZXBhcmF0b3ItZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL2V4ZWNDb21tYW5kL2RlZmF1bHQtcGFyYWdyYXBoLXNl
cGFyYXRvci5odG1sOiBBZGRlZC4KKwogMjAxMi0wMi0yNyAgQ2hyaXMgUm9nZXJzICA8Y3JvZ2Vy
c0Bnb29nbGUuY29tPgogCiAgICAgICAgIEltcGxlbWVudCBzdGF0aWMgY29tcHJlc3Npb24gY3Vy
dmUgcGFyYW1ldGVycyBmb3IgRHluYW1pY3NDb21wcmVzc29yTm9kZQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9kZWZhdWx0LXBhcmFncmFwaC1zZXBhcmF0b3It
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9kZWZhdWx0LXBh
cmFncmFwaC1zZXBhcmF0b3ItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgzNTQzZjZkZDFjYzhi
NDgyMTFiZDU4YWU1MjAzODc2MjdjMTEyNzAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9lZGl0aW5nL2V4ZWNDb21tYW5kL2RlZmF1bHQtcGFyYWdyYXBoLXNlcGFyYXRvci1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSw2NSBAQAorUEFTUyBkb2N1bWVudC5xdWVyeUNvbW1hbmRFbmFibGVk
KCdEZWZhdWx0UGFyYWdyYXBoU2VwYXJhdG9yJykgaXMgdHJ1ZQorUEFTUyBkb2N1bWVudC5xdWVy
eUNvbW1hbmRWYWx1ZSgnRGVmYXVsdFBhcmFncmFwaFNlcGFyYXRvcicpIGlzICJkaXYiCitkb2N1
bWVudC5leGVjQ29tbWFuZCgnRGVmYXVsdFBhcmFncmFwaFNlcGFyYXRvcicsIGZhbHNlLCAncCcp
CitQQVNTIGRvY3VtZW50LnF1ZXJ5Q29tbWFuZFZhbHVlKCdEZWZhdWx0UGFyYWdyYXBoU2VwYXJh
dG9yJykgaXMgInAiCitkb2N1bWVudC5leGVjQ29tbWFuZCgnRGVmYXVsdFBhcmFncmFwaFNlcGFy
YXRvcicsIGZhbHNlLCAnYnInKQorUEFTUyBkb2N1bWVudC5xdWVyeUNvbW1hbmRWYWx1ZSgnRGVm
YXVsdFBhcmFncmFwaFNlcGFyYXRvcicpIGlzICJwIgorZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ0Rl
ZmF1bHRQYXJhZ3JhcGhTZXBhcmF0b3InLCBmYWxzZSwgJ2ludmFsaWQnKQorUEFTUyBkb2N1bWVu
dC5xdWVyeUNvbW1hbmRWYWx1ZSgnRGVmYXVsdFBhcmFncmFwaFNlcGFyYXRvcicpIGlzICJwIgor
CitDcmVhdGluZyBwYXJhZ3JhcGhzIGluIHRoZSBub3JtYWwgd2F5LgorZG9jdW1lbnQuZXhlY0Nv
bW1hbmQoJ0luc2VydFRleHQnLCBmYWxzZSwgJ2EnKQorUEFTUyBkaXYuaW5uZXJIVE1MIGlzICJh
IgorZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ0luc2VydFRleHQnLCBmYWxzZSwgJ1xuJykKK1BBU1Mg
ZGl2LmlubmVySFRNTCBpcyAiYTxwPjxicj48L3A+IgorZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ0lu
c2VydFRleHQnLCBmYWxzZSwgJ2InKQorUEFTUyBkaXYuaW5uZXJIVE1MIGlzICJhPHA+YjwvcD4i
Citkb2N1bWVudC5leGVjQ29tbWFuZCgnSW5zZXJ0VGV4dCcsIGZhbHNlLCAnXG4nKQorUEFTUyBk
aXYuaW5uZXJIVE1MIGlzICJhPHA+YjwvcD48cD48YnI+PC9wPiIKK2RvY3VtZW50LmV4ZWNDb21t
YW5kKCdEZWxldGUnKQorUEFTUyBkaXYuaW5uZXJIVE1MIGlzICJhPHA+YjwvcD4iCitkb2N1bWVu
dC5leGVjQ29tbWFuZCgnRGVsZXRlJykKK1BBU1MgZGl2LmlubmVySFRNTCBpcyAiYTxwPjxicj48
L3A+IgorZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ0RlbGV0ZScpCitQQVNTIGRpdi5pbm5lckhUTUwg
aXMgImEiCitkb2N1bWVudC5leGVjQ29tbWFuZCgnRGVmYXVsdFBhcmFncmFwaFNlcGFyYXRvcics
IGZhbHNlLCAnZGl2JykKK2RvY3VtZW50LmV4ZWNDb21tYW5kKCdJbnNlcnRQYXJhZ3JhcGgnKQor
UEFTUyBkaXYuaW5uZXJIVE1MIGlzICJhPGRpdj48YnI+PC9kaXY+IgorZGl2LmlubmVySFRNTCA9
ICcnCisKK1VzaW5nIHRoZSBwcmV2aW91cyBibG9jayBhcyB0ZW1wbGF0ZSBmb3IgdGhlIG5ldyBv
bmUuCitkb2N1bWVudC5leGVjQ29tbWFuZCgnRGVmYXVsdFBhcmFncmFwaFNlcGFyYXRvcicsIGZh
bHNlLCAncCcpCitkb2N1bWVudC5leGVjQ29tbWFuZCgiSW5zZXJ0SFRNTCIsIGZhbHNlLCAiPHBy
ZT5hPC9wcmU+Iik7CitQQVNTIGRpdi5pbm5lckhUTUwgaXMgIjxwcmU+YTwvcHJlPiIKK2RvY3Vt
ZW50LmV4ZWNDb21tYW5kKCdJbnNlcnRUZXh0JywgZmFsc2UsICdiJykKK1BBU1MgZGl2LmlubmVy
SFRNTCBpcyAiPHByZT5hYjwvcHJlPiIKK2RvY3VtZW50LmV4ZWNDb21tYW5kKCdJbnNlcnRUZXh0
JywgZmFsc2UsICdcbicpCitQQVNTIGRpdi5pbm5lckhUTUwgaXMgIjxwcmU+YWI8L3ByZT48cHJl
Pjxicj48L3ByZT4iCitkb2N1bWVudC5leGVjQ29tbWFuZCgnSW5zZXJ0VGV4dCcsIGZhbHNlLCAn
YycpCitQQVNTIGRpdi5pbm5lckhUTUwgaXMgIjxwcmU+YWI8L3ByZT48cHJlPmM8L3ByZT4iCitk
b2N1bWVudC5leGVjQ29tbWFuZCgnRGVmYXVsdFBhcmFncmFwaFNlcGFyYXRvcicsIGZhbHNlLCAn
ZGl2JykKK2RvY3VtZW50LmV4ZWNDb21tYW5kKCdJbnNlcnRUZXh0JywgZmFsc2UsICdcbicpCitQ
QVNTIGRpdi5pbm5lckhUTUwgaXMgIjxwcmU+YWI8L3ByZT48cHJlPmM8L3ByZT48cHJlPjxicj48
L3ByZT4iCitkb2N1bWVudC5leGVjQ29tbWFuZCgnRGVsZXRlJykKK2RvY3VtZW50LmV4ZWNDb21t
YW5kKCdJbnNlcnRQYXJhZ3JhcGgnKQorUEFTUyBkaXYuaW5uZXJIVE1MIGlzICI8cHJlPmFiPC9w
cmU+PHByZT5jPC9wcmU+PHByZT48YnI+PC9wcmU+IgorCitCcmVha2luZyBvdXQgb2YgbGlzdHMu
CitkaXYuaW5uZXJIVE1MID0gJycKK2RvY3VtZW50LmV4ZWNDb21tYW5kKCdEZWZhdWx0UGFyYWdy
YXBoU2VwYXJhdG9yJywgZmFsc2UsICdwJykKK2RvY3VtZW50LmV4ZWNDb21tYW5kKCJJbnNlcnRI
VE1MIiwgZmFsc2UsICI8dWw+PGxpPmE8L2xpPjwvdWw+IikKK1BBU1MgZGl2LmlubmVySFRNTCBp
cyAiPHVsPjxsaT5hPC9saT48L3VsPiIKK2RvY3VtZW50LmV4ZWNDb21tYW5kKCdJbnNlcnRQYXJh
Z3JhcGgnKQorZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ0luc2VydFBhcmFncmFwaCcpCitQQVNTIGRp
di5pbm5lckhUTUwgaXMgIjx1bD48bGk+YTwvbGk+PC91bD48cD48YnI+PC9wPiIKKworQnJlYWtp
bmcgdXAgbmVzdGVkIGVsZW1lbnRzLgorZGl2LmlubmVySFRNTCA9ICcnCitkb2N1bWVudC5leGVj
Q29tbWFuZCgiSW5zZXJ0SFRNTCIsIGZhbHNlLCAiPGNpdGU+YTxjaXRlPmJjPC9jaXRlPjwvY2l0
ZT4iKQord2luZG93LmdldFNlbGVjdGlvbigpLm1vZGlmeSgibW92ZSIsICJiYWNrd2FyZCIsICJj
aGFyYWN0ZXIiKQorZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ0luc2VydFBhcmFncmFwaCcpCitQQVNT
IGRpdi5pbm5lckhUTUwgaXMgIjxjaXRlPmE8Y2l0ZT5iPC9jaXRlPjwvY2l0ZT48cD48Y2l0ZT48
Y2l0ZT5jPC9jaXRlPjwvY2l0ZT48L3A+IgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvZXhl
Y0NvbW1hbmQvZGVmYXVsdC1wYXJhZ3JhcGgtc2VwYXJhdG9yLmh0bWwgYi9MYXlvdXRUZXN0cy9l
ZGl0aW5nL2V4ZWNDb21tYW5kL2RlZmF1bHQtcGFyYWdyYXBoLXNlcGFyYXRvci5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmE0YjcxOTczZWVkNmNlZDM1MjQ2MDA3ZDhlMWY5ZDk5ZTlmYWFhYzIKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL2RlZmF1bHQtcGFyYWdy
YXBoLXNlcGFyYXRvci5odG1sCkBAIC0wLDAgKzEsODEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ZWRpdG9yIGNvbnRl
bnRlZGl0YWJsZT48L2Rpdj4KKzxzY3JpcHQ+CisgICAgc2hvdWxkQmVUcnVlKCJkb2N1bWVudC5x
dWVyeUNvbW1hbmRFbmFibGVkKCdEZWZhdWx0UGFyYWdyYXBoU2VwYXJhdG9yJykiKTsKKyAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoImRvY3VtZW50LnF1ZXJ5Q29tbWFuZFZhbHVlKCdEZWZhdWx0
UGFyYWdyYXBoU2VwYXJhdG9yJykiLCAiZGl2Iik7IC8vIERlZmF1bHQgaXMgZGl2LgorICAgIGV2
YWxBbmRMb2coImRvY3VtZW50LmV4ZWNDb21tYW5kKCdEZWZhdWx0UGFyYWdyYXBoU2VwYXJhdG9y
JywgZmFsc2UsICdwJykiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRvY3VtZW50LnF1
ZXJ5Q29tbWFuZFZhbHVlKCdEZWZhdWx0UGFyYWdyYXBoU2VwYXJhdG9yJykiLCAicCIpOworICAg
IGV2YWxBbmRMb2coImRvY3VtZW50LmV4ZWNDb21tYW5kKCdEZWZhdWx0UGFyYWdyYXBoU2VwYXJh
dG9yJywgZmFsc2UsICdicicpIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkb2N1bWVu
dC5xdWVyeUNvbW1hbmRWYWx1ZSgnRGVmYXVsdFBhcmFncmFwaFNlcGFyYXRvcicpIiwgInAiKTsK
KyAgICBldmFsQW5kTG9nKCJkb2N1bWVudC5leGVjQ29tbWFuZCgnRGVmYXVsdFBhcmFncmFwaFNl
cGFyYXRvcicsIGZhbHNlLCAnaW52YWxpZCcpIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJkb2N1bWVudC5xdWVyeUNvbW1hbmRWYWx1ZSgnRGVmYXVsdFBhcmFncmFwaFNlcGFyYXRvcicp
IiwgInAiKTsKKworICAgIGRlYnVnKCJcbkNyZWF0aW5nIHBhcmFncmFwaHMgaW4gdGhlIG5vcm1h
bCB3YXkuIik7CisgICAgdmFyIGRpdiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNlZGl0b3Ii
KTsKKyAgICBkaXYuZm9jdXMoKTsKKyAgICBldmFsQW5kTG9nKCJkb2N1bWVudC5leGVjQ29tbWFu
ZCgnSW5zZXJ0VGV4dCcsIGZhbHNlLCAnYScpIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJkaXYuaW5uZXJIVE1MIiwgImEiKTsKKyAgICBldmFsQW5kTG9nKCJkb2N1bWVudC5leGVjQ29t
bWFuZCgnSW5zZXJ0VGV4dCcsIGZhbHNlLCAnXFxuJykiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoImRpdi5pbm5lckhUTUwiLCAiYTxwPjxicj48L3A+Iik7CisgICAgZXZhbEFuZExvZygi
ZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ0luc2VydFRleHQnLCBmYWxzZSwgJ2InKSIpOworICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygiZGl2LmlubmVySFRNTCIsICJhPHA+YjwvcD4iKTsKKyAgICBl
dmFsQW5kTG9nKCJkb2N1bWVudC5leGVjQ29tbWFuZCgnSW5zZXJ0VGV4dCcsIGZhbHNlLCAnXFxu
JykiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRpdi5pbm5lckhUTUwiLCAiYTxwPmI8
L3A+PHA+PGJyPjwvcD4iKTsKKyAgICBldmFsQW5kTG9nKCJkb2N1bWVudC5leGVjQ29tbWFuZCgn
RGVsZXRlJykiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRpdi5pbm5lckhUTUwiLCAi
YTxwPmI8L3A+Iik7CisgICAgZXZhbEFuZExvZygiZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ0RlbGV0
ZScpIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkaXYuaW5uZXJIVE1MIiwgImE8cD48
YnI+PC9wPiIpOworICAgIGV2YWxBbmRMb2coImRvY3VtZW50LmV4ZWNDb21tYW5kKCdEZWxldGUn
KSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZGl2LmlubmVySFRNTCIsICJhIik7Cisg
ICAgZXZhbEFuZExvZygiZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ0RlZmF1bHRQYXJhZ3JhcGhTZXBh
cmF0b3InLCBmYWxzZSwgJ2RpdicpIik7CisgICAgZXZhbEFuZExvZygiZG9jdW1lbnQuZXhlY0Nv
bW1hbmQoJ0luc2VydFBhcmFncmFwaCcpIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJk
aXYuaW5uZXJIVE1MIiwgImE8ZGl2Pjxicj48L2Rpdj4iKTsKKyAgICBldmFsQW5kTG9nKCJkaXYu
aW5uZXJIVE1MID0gJyciKTsKKworICAgIGRlYnVnKCJcblVzaW5nIHRoZSBwcmV2aW91cyBibG9j
ayBhcyB0ZW1wbGF0ZSBmb3IgdGhlIG5ldyBvbmUuIik7CisgICAgZXZhbEFuZExvZygiZG9jdW1l
bnQuZXhlY0NvbW1hbmQoJ0RlZmF1bHRQYXJhZ3JhcGhTZXBhcmF0b3InLCBmYWxzZSwgJ3AnKSIp
OworICAgIGRlYnVnKCdkb2N1bWVudC5leGVjQ29tbWFuZCgiSW5zZXJ0SFRNTCIsIGZhbHNlLCAi
Jmx0O3ByZSZndDthJmx0Oy9wcmUmZ3Q7Iik7Jyk7CisgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQo
Ikluc2VydEhUTUwiLCBmYWxzZSwgIjxwcmU+YTwvcHJlPiIpOworICAgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygiZGl2LmlubmVySFRNTCIsICI8cHJlPmE8L3ByZT4iKTsKKyAgICBldmFsQW5kTG9n
KCJkb2N1bWVudC5leGVjQ29tbWFuZCgnSW5zZXJ0VGV4dCcsIGZhbHNlLCAnYicpIik7CisgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkaXYuaW5uZXJIVE1MIiwgIjxwcmU+YWI8L3ByZT4iKTsK
KyAgICBldmFsQW5kTG9nKCJkb2N1bWVudC5leGVjQ29tbWFuZCgnSW5zZXJ0VGV4dCcsIGZhbHNl
LCAnXFxuJykiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRpdi5pbm5lckhUTUwiLCAi
PHByZT5hYjwvcHJlPjxwcmU+PGJyPjwvcHJlPiIpOworICAgIGV2YWxBbmRMb2coImRvY3VtZW50
LmV4ZWNDb21tYW5kKCdJbnNlcnRUZXh0JywgZmFsc2UsICdjJykiKTsKKyAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoImRpdi5pbm5lckhUTUwiLCAiPHByZT5hYjwvcHJlPjxwcmU+YzwvcHJlPiIp
OworICAgIGV2YWxBbmRMb2coImRvY3VtZW50LmV4ZWNDb21tYW5kKCdEZWZhdWx0UGFyYWdyYXBo
U2VwYXJhdG9yJywgZmFsc2UsICdkaXYnKSIpOworICAgIGV2YWxBbmRMb2coImRvY3VtZW50LmV4
ZWNDb21tYW5kKCdJbnNlcnRUZXh0JywgZmFsc2UsICdcXG4nKSIpOworICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygiZGl2LmlubmVySFRNTCIsICI8cHJlPmFiPC9wcmU+PHByZT5jPC9wcmU+PHBy
ZT48YnI+PC9wcmU+Iik7CisgICAgZXZhbEFuZExvZygiZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ0Rl
bGV0ZScpIik7CisgICAgZXZhbEFuZExvZygiZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ0luc2VydFBh
cmFncmFwaCcpIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkaXYuaW5uZXJIVE1MIiwg
IjxwcmU+YWI8L3ByZT48cHJlPmM8L3ByZT48cHJlPjxicj48L3ByZT4iKTsKKworICAgIGRlYnVn
KCJcbkJyZWFraW5nIG91dCBvZiBsaXN0cy4iKTsKKyAgICBldmFsQW5kTG9nKCJkaXYuaW5uZXJI
VE1MID0gJyciKTsKKyAgICBldmFsQW5kTG9nKCJkb2N1bWVudC5leGVjQ29tbWFuZCgnRGVmYXVs
dFBhcmFncmFwaFNlcGFyYXRvcicsIGZhbHNlLCAncCcpIik7CisgICAgZGVidWcoJ2RvY3VtZW50
LmV4ZWNDb21tYW5kKCJJbnNlcnRIVE1MIiwgZmFsc2UsICImbHQ7dWw+Jmx0O2xpPmEmbHQ7L2xp
PiZsdDsvdWw+IiknKTsKKyAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiSW5zZXJ0SFRNTCIsIGZh
bHNlLCAiPHVsPjxsaT5hPC9saT48L3VsPiIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygi
ZGl2LmlubmVySFRNTCIsICI8dWw+PGxpPmE8L2xpPjwvdWw+Iik7CisgICAgZXZhbEFuZExvZygi
ZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ0luc2VydFBhcmFncmFwaCcpIik7CisgICAgZXZhbEFuZExv
ZygiZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ0luc2VydFBhcmFncmFwaCcpIik7CisgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJkaXYuaW5uZXJIVE1MIiwgIjx1bD48bGk+YTwvbGk+PC91bD48cD48
YnI+PC9wPiIpOworCisgICAgZGVidWcoIlxuQnJlYWtpbmcgdXAgbmVzdGVkIGVsZW1lbnRzLiIp
OworICAgIGV2YWxBbmRMb2coImRpdi5pbm5lckhUTUwgPSAnJyIpOworICAgIGRlYnVnKCdkb2N1
bWVudC5leGVjQ29tbWFuZCgiSW5zZXJ0SFRNTCIsIGZhbHNlLCAiJmx0O2NpdGU+YSZsdDtjaXRl
PmJjJmx0Oy9jaXRlPiZsdDsvY2l0ZT4iKScpOworICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJJ
bnNlcnRIVE1MIiwgZmFsc2UsICI8Y2l0ZT5hPGNpdGU+YmM8L2NpdGU+PC9jaXRlPiIpOworICAg
IGV2YWxBbmRMb2coJ3dpbmRvdy5nZXRTZWxlY3Rpb24oKS5tb2RpZnkoIm1vdmUiLCAiYmFja3dh
cmQiLCAiY2hhcmFjdGVyIiknKTsKKyAgICBldmFsQW5kTG9nKCJkb2N1bWVudC5leGVjQ29tbWFu
ZCgnSW5zZXJ0UGFyYWdyYXBoJykiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRpdi5p
bm5lckhUTUwiLCAiPGNpdGU+YTxjaXRlPmI8L2NpdGU+PC9jaXRlPjxwPjxjaXRlPjxjaXRlPmM8
L2NpdGU+PC9jaXRlPjwvcD4iKTsKKworICAgIGRpdi5pbm5lckhUTUwgPSAiIjsKKyAgICBkb2N1
bWVudC5leGVjQ29tbWFuZCgiRGVmYXVsdFBhcmFncmFwaFNlcGFyYXRvciIsIGZhbHNlLCAiZGl2
Iik7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>