<?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>65140</bug_id>
          
          <creation_ts>2011-07-25 15:42:10 -0700</creation_ts>
          <short_desc>REGRESSION (r84327-r84329): CSS stylesheets fail to load on www.flagstar.com login page</short_desc>
          <delta_ts>2011-11-10 13:50:57 -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>Page Loading</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.6</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>https://www.flagstar.com/myloanswebapp/logonEntry.do?action=Create</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>HasReduction, InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>62407</dependson>
    
    <dependson>45425</dependson>
    
    <dependson>61400</dependson>
    
    <dependson>66591</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="David Kilzer (:ddkilzer)">ddkilzer</reporter>
          <assigned_to name="Julien Chaffraix">jchaffraix</assigned_to>
          <cc>aestes</cc>
    
    <cc>ap</cc>
    
    <cc>ian</cc>
    
    <cc>jchaffraix</cc>
    
    <cc>koivisto</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>441922</commentid>
    <comment_count>0</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2011-07-25 15:42:10 -0700</bug_when>
    <thetext>* SUMMARY
Loading the login page for www.flagstar.com doesn&apos;t load the CSS for the page, leaving the user with unstyled content (permanently).

* STEPS TO REPRODUCE
1. Launch Safari.
2. Open URL:  &lt;https://www.flagstar.com/&gt; and select &quot;My Loans&quot; from the &quot;Log into your accounts&quot; dropdown.
   OR
   Open URL:  &lt;https://www.flagstar.com/myloanswebapp/logonEntry.do?action=Create&gt;

* RESULTS
Unstyled content.

* REGRESSION
This is a regression between r84327 (works) and r84329 (fails).  Looks like a regression from r84329 for Bug 45425.
&lt;http://trac.webkit.org/changeset/84329&gt;

* NOTES
A follow-up fix was made in Bug 61400 in r88479, but it did not fix all test cases (and WebKit nightly build r91677 still reproduces this).
&lt;http://trac.webkit.org/changeset/88479&gt;

Bug 62407 was opened to fix the remaining test cases.  This bug may be a duplicate of Bug 62407.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441927</commentid>
    <comment_count>1</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2011-07-25 15:44:24 -0700</bug_when>
    <thetext>&lt;rdar://problem/9835905&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445078</commentid>
    <comment_count>2</comment_count>
      <attachid>102609</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2011-08-01 18:53:09 -0700</bug_when>
    <thetext>Created attachment 102609
Reduction that needs 2 trivial external stylesheets to work</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445079</commentid>
    <comment_count>3</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2011-08-01 18:54:54 -0700</bug_when>
    <thetext>I started analyzing the bug today and here are my thoughts.

* I am not sure if it related to bug 62407 as those 2 failures were already in WebKit, the test just uncovered them (which is why the test landed with those failures in the first place).
* The root problem is that we call setDisabled on a &lt;link&gt; whose stylesheet is loading. Currently we just ignore those call as HTMLLinkElement::m_sheet is NULL which is wrong. I will need to look into how Gecko handles that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445581</commentid>
    <comment_count>4</comment_count>
      <attachid>102709</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2011-08-02 15:56:20 -0700</bug_when>
    <thetext>Created attachment 102709
Proposed fix: Add a temporary state that we merge back into the stylesheet on sheetLoaded(), also make the code more robust to disabled change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448324</commentid>
    <comment_count>5</comment_count>
      <attachid>102709</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-08-08 15:50:10 -0700</bug_when>
    <thetext>Comment on attachment 102709
Proposed fix: Add a temporary state that we merge back into the stylesheet on sheetLoaded(), also make the code more robust to disabled change.

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

I&apos;m going to say r+ as fixing a regression is good, but it seems like there might be a cleaner solution. Some inconsistent ranting below...

&gt; LayoutTests/fast/css/stylesheet-enable-second-alternate.html:2
&gt; +&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;
&gt; +&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot; lang=&quot;en&quot; xml:lang=&quot;en&quot;&gt;

Why all this XHTML boilerplate?

&gt; LayoutTests/http/tests/css/resources/slow-loading-sheet.php:3
&gt; +// We sleep here so that we are have enough time to test the different attributes before the stylesheet is fully loaded.
&gt; +usleep(100);

Sounds flaky.

&gt; Source/WebCore/html/HTMLLinkElement.h:115
&gt; +    enum PendingSheetDisabledStatus { Unset, Disabled, Enabled };

Do we need three states? From a naive point of view, every sheet is pending enabled unless set otherwise. That would let you use a boolean, improving this rather awkward naming.

If that&apos;s not accurate, perhaps a comment would help.

Also, should the name have &quot;ViaScript&quot; to match m_isEnabledViaScript? In fact, it feels wrong to have these variables separate, as both just remember what was set by a script.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448411</commentid>
    <comment_count>6</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2011-08-08 19:12:01 -0700</bug_when>
    <thetext>&gt; &gt; LayoutTests/fast/css/stylesheet-enable-second-alternate.html:2
&gt; &gt; +&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;
&gt; &gt; +&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot; lang=&quot;en&quot; xml:lang=&quot;en&quot;&gt;
&gt; 
&gt; Why all this XHTML boilerplate?

I guess I copied the test from an existing one with this flow. Will be removed.

&gt; &gt; LayoutTests/http/tests/css/resources/slow-loading-sheet.php:3
&gt; &gt; +// We sleep here so that we are have enough time to test the different attributes before the stylesheet is fully loaded.
&gt; &gt; +usleep(100);
&gt; 
&gt; Sounds flaky.

It can be indeed. Thought I don&apos;t think this is a problem. We just need to test the information prior / after the load to make sure they get updated properly.

&gt; &gt; Source/WebCore/html/HTMLLinkElement.h:115
&gt; &gt; +    enum PendingSheetDisabledStatus { Unset, Disabled, Enabled };
&gt; 
&gt; Do we need three states? From a naive point of view, every sheet is pending enabled unless set otherwise. That would let you use a boolean, improving this rather awkward naming.

After a quick discussion over IRC, I had a look at removing this tri-state and merging it in the existing boolean m_isEnabledViaScript. I thought that not knowing if JS disabled a style sheet would be a problem (as currently we don&apos;t know if false is disabled from JS or just it was never set). However it looks like it is enough for our needs.

I will post a patch along those lines shortly!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448413</commentid>
    <comment_count>7</comment_count>
      <attachid>103326</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2011-08-08 19:29:24 -0700</bug_when>
    <thetext>Created attachment 103326
Proposed fix 2: Less XHTML headers, more reusing m_isEnabledViaScript, more Alexey love?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>449541</commentid>
    <comment_count>8</comment_count>
      <attachid>103566</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2011-08-10 18:15:43 -0700</bug_when>
    <thetext>Created attachment 103566
Proposed fix 3: Even better fix as the previous could lose some information in the way, also tightened the checks between disabled() and m_isEnabledViaScript.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452763</commentid>
    <comment_count>9</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2011-08-17 17:40:06 -0700</bug_when>
    <thetext>review ping, this patch has been up for review for 7 days and solves some regressions seen in the wild.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452971</commentid>
    <comment_count>10</comment_count>
      <attachid>103566</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-08-18 05:34:01 -0700</bug_when>
    <thetext>Comment on attachment 103566
Proposed fix 3: Even better fix as the previous could lose some information in the way, also tightened the checks between disabled() and m_isEnabledViaScript.

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

The logic is pretty convoluted and hard to follow. Is that the case with the spec as well? 

r- for all the style issues and open questions.

&gt; Source/WebCore/html/HTMLLinkElement.cpp:84
&gt;  void HTMLLinkElement::setDisabled(bool disabled)
&gt;  {

The code seems to assume this is only ever invoked from script, via DOM. It would be nice to assert that somehow.

&gt; Source/WebCore/html/HTMLLinkElement.cpp:89
&gt; +        // If we are in the middle of loading a stylesheet, we store the information from this call
&gt; +        // as it is a common pattern to disable / enable the stylesheet through JS (regardless of
&gt; +        // whether the sheet was loaded).
&gt; +        // See https://bugs.webkit.org/show_bug.cgi?id=65140

The verbose comment here adds little information. We don&apos;t generally link to bugzilla on every code change.

&gt; Source/WebCore/html/HTMLLinkElement.cpp:91
&gt; +        if (m_relAttribute.m_isStyleSheet &amp;&amp; m_loading)
&gt; +            setEnabledViaScript(!disabled);

Why these specific conditions? Can&apos;t non-stylesheet links be disabled? Why only when loading? setDisabled() does not have these tests in other branches.

Could the setEnabledViaScript call simply be moved to the top of this function? It seems to be called in all cases, except for these tests.

&gt; Source/WebCore/html/HTMLLinkElement.cpp:99
&gt; +    if (wasDisabled == disabled) {
&gt; +        // If JS forces the sheet to be enabled, we need to force a recalcStyleSelector or
&gt; +        // we may not apply the stylesheet (for example for alternate stylesheet).

I don&apos;t quite understand why we need to take some special action in a case where nothing supposedly changes?

&gt; Source/WebCore/html/HTMLLinkElement.cpp:100
&gt; +        if (isEnabledViaScript() != !disabled) {

Triple negatives make my head hurt.

&gt; Source/WebCore/html/HTMLLinkElement.cpp:102
&gt; +            setEnabledViaScript(!disabled);
&gt; +            document()-&gt;styleSelectorChanged(DeferRecalcStyle);

If changing the enabled view script state requires style recalc, would it better to trigger it in that function itself?

&gt; Source/WebCore/html/HTMLLinkElement.cpp:474
&gt; +    if (m_sheet)
&gt; +        return m_sheet-&gt;disabled();

Please handle the special !m_sheet case as early return and the regular case at the end of the function.

&gt; Source/WebCore/html/HTMLLinkElement.cpp:479
&gt; +    // FF disagrees with the spec and always has an associated stylesheet if the &apos;rel&apos; attribute indicates a
&gt; +    // stylesheet and href is provided (regardless of whether the resource may be in error). As we store the
&gt; +    // enabled state in m_isEnabledViaScript while loading, return this information to be consistent with FF
&gt; +    // and our future self here.

Do you mean that we violate the spec here to be compatible with FF? Why? What does the spec say?

Our future self? I don&apos;t understand the comment.

&gt; Source/WebCore/html/HTMLLinkElement.h:60
&gt; -    bool isEnabledViaScript() const { return m_isEnabledViaScript; }
&gt; +    bool isEnabledViaScript() const { checkDisabledAndEnabledViaScriptState(); return m_isEnabledViaScript == Enabled; }

Since the API is setDisabled, reversing the logic might make some of the code read better (isDisabledViaScript())

&gt; Source/WebCore/html/HTMLLinkElement.h:61
&gt; +    void setEnabledViaScript(bool enabled) { m_isEnabledViaScript = enabled ? Enabled : Disabled; }

Why is the setter public?  Since the API is setDisabled, reversing the logic might make some of the code read better.

&gt; Source/WebCore/html/HTMLLinkElement.h:104
&gt; +    void checkDisabledAndEnabledViaScriptState() const
&gt; +    {
&gt; +        // When we are loading, m_isEnabledViaScript stores the information if JS calls us and can thus have any value.
&gt; +        // If m_isEnabledViaScript is Unset, the style sheet may be unabled or disabled.
&gt; +        // Finally if we are not in the 2 previous cases, then JS should override our disabled value so we must make sure
&gt; +        // that both values match.
&gt; +        ASSERT(isLoading() || m_isEnabledViaScript == Unset || ((m_isEnabledViaScript == Disabled &amp;&amp; sheet()-&gt;disabled()) || (m_isEnabledViaScript == Enabled &amp;&amp; !sheet()-&gt;disabled())));
&gt; +    }

Confusingly this function is a pure assertion. It would be better to replace it with a boolean debug-only function (isDisabledStateConsistent() or something) and ASSERT on that instead.

The comment is overly verbose and adds little value.

&gt; Source/WebCore/html/HTMLLinkElement.h:118
&gt; -    bool m_isEnabledViaScript;
&gt; +    enum EnabledViaScriptState { Unset, Enabled, Disabled };
&gt; +    EnabledViaScriptState m_isEnabledViaScript;

m_is* naming is for booleans. Something like m_scriptState might be good, with values like Unset/EnabledViaScript/DisabledViaScript.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>453117</commentid>
    <comment_count>11</comment_count>
      <attachid>103566</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2011-08-18 10:26:16 -0700</bug_when>
    <thetext>Comment on attachment 103566
Proposed fix 3: Even better fix as the previous could lose some information in the way, also tightened the checks between disabled() and m_isEnabledViaScript.

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

&gt;&gt; Source/WebCore/html/HTMLLinkElement.cpp:84
&gt;&gt;  {
&gt; 
&gt; The code seems to assume this is only ever invoked from script, via DOM. It would be nice to assert that somehow.

I agree but I don&apos;t think we can do that easily. One way would be to create custom wrappers which opens its own can of worms.

&gt;&gt; Source/WebCore/html/HTMLLinkElement.cpp:89
&gt;&gt; +        // See https://bugs.webkit.org/show_bug.cgi?id=65140
&gt; 
&gt; The verbose comment here adds little information. We don&apos;t generally link to bugzilla on every code change.

It is not uncommon to link to the bug to explain why it is needed. In this case, it links back to this bug for context.

&gt;&gt; Source/WebCore/html/HTMLLinkElement.cpp:91
&gt;&gt; +            setEnabledViaScript(!disabled);
&gt; 
&gt; Why these specific conditions? Can&apos;t non-stylesheet links be disabled? Why only when loading? setDisabled() does not have these tests in other branches.

Per HTML5 standard: &quot;The IDL attribute disabled only applies to style sheet links. When the link element defines a style sheet link, then the disabled attribute behaves as defined for the alternative style sheets DOM. For all other link elements it always return false and does nothing on setting.&quot;

Unfortunately we don&apos;t implement the filtering at the binding level nor anywhere else. That&apos;s another bug thought which should not impact this change. Let&apos;s just remove the checks.

&gt; Could the setEnabledViaScript call simply be moved to the top of this function? It seems to be called in all cases, except for these tests.

It looks like it is possible to move setEnabledViaScript.

&gt;&gt; Source/WebCore/html/HTMLLinkElement.cpp:99
&gt;&gt; +        // we may not apply the stylesheet (for example for alternate stylesheet).
&gt; 
&gt; I don&apos;t quite understand why we need to take some special action in a case where nothing supposedly changes?

Currently we make a difference between an enabled stylesheet and a stylesheet enabled through JS. To be more precise, alternate style sheet are applied only if they were enabled through JS. This matches the spec and we don&apos;t want to change that.

&gt;&gt; Source/WebCore/html/HTMLLinkElement.cpp:102
&gt;&gt; +            document()-&gt;styleSelectorChanged(DeferRecalcStyle);
&gt; 
&gt; If changing the enabled view script state requires style recalc, would it better to trigger it in that function itself?

Good point, I will change the logic to move the styleSelectorChanged to the setter.

&gt;&gt; Source/WebCore/html/HTMLLinkElement.cpp:479
&gt;&gt; +    // and our future self here.
&gt; 
&gt; Do you mean that we violate the spec here to be compatible with FF? Why? What does the spec say?
&gt; 
&gt; Our future self? I don&apos;t understand the comment.

No, we don&apos;t violate the spec, it&apos;s FF who does: basically it states that you create your stylesheet only when it was fetched from the network (CSS OM: &quot;6.3.4 Requirements on User Agents Implementing the HTTP Link Header&quot;).

As for the future self, it meant when we would reconcile the temporary state with the disabled state from the stylesheet.

&gt;&gt; Source/WebCore/html/HTMLLinkElement.h:60
&gt;&gt; +    bool isEnabledViaScript() const { checkDisabledAndEnabledViaScriptState(); return m_isEnabledViaScript == Enabled; }
&gt; 
&gt; Since the API is setDisabled, reversing the logic might make some of the code read better (isDisabledViaScript())

But it would make the recalcStyleSelector logic not as good. We are interested here whether we forced the stylesheet to be enabled.

&gt;&gt; Source/WebCore/html/HTMLLinkElement.h:61
&gt;&gt; +    void setEnabledViaScript(bool enabled) { m_isEnabledViaScript = enabled ? Enabled : Disabled; }
&gt; 
&gt; Why is the setter public?  Since the API is setDisabled, reversing the logic might make some of the code read better.

Same comment as above. It should not be public though.

&gt;&gt; Source/WebCore/html/HTMLLinkElement.h:104
&gt;&gt; +    }
&gt; 
&gt; Confusingly this function is a pure assertion. It would be better to replace it with a boolean debug-only function (isDisabledStateConsistent() or something) and ASSERT on that instead.
&gt; 
&gt; The comment is overly verbose and adds little value.

Fair enough, I will change the method and remove the comment.

&gt;&gt; Source/WebCore/html/HTMLLinkElement.h:118
&gt;&gt; +    EnabledViaScriptState m_isEnabledViaScript;
&gt; 
&gt; m_is* naming is for booleans. Something like m_scriptState might be good, with values like Unset/EnabledViaScript/DisabledViaScript.

I am not too keen on m_scriptState but the alternatives I came with are not any better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>453447</commentid>
    <comment_count>12</comment_count>
      <attachid>104415</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2011-08-18 15:53:09 -0700</bug_when>
    <thetext>Created attachment 104415
New version 4: Simplified further the code after Anti&apos;s comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>453449</commentid>
    <comment_count>13</comment_count>
      <attachid>104416</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2011-08-18 15:54:33 -0700</bug_when>
    <thetext>Created attachment 104416
New version 4: Simplified further the code after Antti&apos;s comments (sorry for the mispelling).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>453462</commentid>
    <comment_count>14</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2011-08-18 16:05:24 -0700</bug_when>
    <thetext>&gt;&gt; If changing the enabled view script state requires style recalc, would it better to trigger it in that function itself?

&gt; Good point, I will change the logic to move the styleSelectorChanged to the setter.

FYI I did not do this change as we would end up doing unneeded style recalc. If you don&apos;t have a stylesheet and are just storing the information temporary in m_scriptState, you shouldn&apos;t do a recalcStyleSelector. Same if you are following the old code path where this will be called at the right time (during process()).
Instead I kept the manual call as it was the only one needed. Let me know what you think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>453891</commentid>
    <comment_count>15</comment_count>
      <attachid>104416</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2011-08-19 10:02:56 -0700</bug_when>
    <thetext>Comment on attachment 104416
New version 4: Simplified further the code after Antti&apos;s comments (sorry for the mispelling).

After discussing the change over IRC, it became clear there should be a test for an alternate stylesheet in error to make sure we are consistent in this case. Clearing the review until I come up with such a test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>453901</commentid>
    <comment_count>16</comment_count>
      <attachid>104520</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2011-08-19 10:14:57 -0700</bug_when>
    <thetext>Created attachment 104520
New version 5: Tweaked the debug-only code + added testing for an alternate stylesheet in error.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>453922</commentid>
    <comment_count>17</comment_count>
      <attachid>104520</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-08-19 10:46:16 -0700</bug_when>
    <thetext>Comment on attachment 104520
New version 5: Tweaked the debug-only code + added testing for an alternate stylesheet in error.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>453926</commentid>
    <comment_count>18</comment_count>
      <attachid>104526</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2011-08-19 10:52:45 -0700</bug_when>
    <thetext>Created attachment 104526
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>453963</commentid>
    <comment_count>19</comment_count>
      <attachid>104526</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-19 11:54:23 -0700</bug_when>
    <thetext>Comment on attachment 104526
Patch for landing

Clearing flags on attachment: 104526

Committed r93425: &lt;http://trac.webkit.org/changeset/93425&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>453964</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-19 11:54:29 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>454102</commentid>
    <comment_count>21</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2011-08-19 14:41:04 -0700</bug_when>
    <thetext>Rolled out the change in http://trac.webkit.org/changeset/93439 as the ASSERT would trigger on some of our buildbots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>454288</commentid>
    <comment_count>22</comment_count>
      <attachid>104613</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2011-08-19 20:01:26 -0700</bug_when>
    <thetext>Created attachment 104613
Patch 6: Solve the valid ASSERT by adding a custom setter to |disabled| that forwards the information through the associated &lt;link&gt; (if any).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>454336</commentid>
    <comment_count>23</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-08-20 04:04:46 -0700</bug_when>
    <thetext>So now setting disabled attribute on stylesheet also changes the disabled value of the referencing link element? Does this match spec and other browsers? Test case?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>454622</commentid>
    <comment_count>24</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2011-08-22 09:08:51 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; So now setting disabled attribute on stylesheet also changes the disabled value of the referencing link element?

It&apos;s more than that. &lt;link&gt;&apos;s disabled is basically its sheet&apos;s disabled value if it has one. If not, it returns false on getting and does nothing on setting (this last point is what caused the regression as we were too strict).

&gt; Does this match spec and other browsers? Test case?

It matches HTML5 that defines the behavior of &lt;link&gt;&apos;s disabled. FF also implements that.

The forwarding is already covered by LayoutTests/fast/dom/HTMLLinkElement/disabled-attribute.html (see bug 45425 which landed and caused this regression). However you have a point, the tests that comes with this patch do not cover setting sheet.disabled enough. I will add more testing on this side.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>454644</commentid>
    <comment_count>25</comment_count>
      <attachid>104686</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2011-08-22 09:58:41 -0700</bug_when>
    <thetext>Created attachment 104686
Patch 7: Same as previously but with more testing for the sheet.disabled() case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458155</commentid>
    <comment_count>26</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-08-29 03:53:56 -0700</bug_when>
    <thetext>Actually from my reading this patch breaks the HTML5 spec:

http://www.whatwg.org/specs/web-apps/current-work/multipage/semantics.html#styling

&quot;... link elements whose specified resource has not yet been fetched, ... , must have their LinkStyle interface&apos;s sheet attribute return null.&quot;

and

&quot;The disabled IDL attribute on link and style elements must return false and do nothing on setting, if the sheet attribute of their LinkStyle interface is null.&quot;

According to these the disabled attribute must do nothing as long as the resource has not been fetched.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458338</commentid>
    <comment_count>27</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2011-08-29 12:02:53 -0700</bug_when>
    <thetext>&gt; According to these the disabled attribute must do nothing as long as the resource has not been fetched.

Yes, however that&apos;s exactly what caused this regression. If we ignore JS during loading then we end up missing what web-sites are currently doing.

FF does not have this regression because it always has an associated stylesheet for that matter (which violates HTML5 as you just pointed out). Note that until we strictly implemented HTML5, we did not have any of those problems as disabled would work in any cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458376</commentid>
    <comment_count>28</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-08-29 12:40:27 -0700</bug_when>
    <thetext>
(In reply to comment #27)

&gt; Yes, however that&apos;s exactly what caused this regression. If we ignore JS during loading then we end up missing what web-sites are currently doing.

&gt; FF does not have this regression because it always has an associated stylesheet for that matter (which violates HTML5 as you just pointed out). Note that until we strictly implemented HTML5, we did not have any of those problems as disabled would work in any cases.

I tried to ask you exactly this above: &quot;Do you mean that we violate the spec here to be compatible with FF?&quot; You answered &quot;No, we don&apos;t violate the spec, it&apos;s FF who does&quot; which sounded to me different from what you are now saying.

Are there other known regressions from this? If not perhaps we should stick with the HTML5 and try to get the site fixed. If we want to have this behavior, we also need to get the specification changed. What do IE9 and Opera do?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458477</commentid>
    <comment_count>29</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2011-08-29 15:10:49 -0700</bug_when>
    <thetext>(In reply to comment #28)
&gt; (In reply to comment #27)
&gt; 
&gt; &gt; Yes, however that&apos;s exactly what caused this regression. If we ignore JS during loading then we end up missing what web-sites are currently doing.
&gt; 
&gt; &gt; FF does not have this regression because it always has an associated stylesheet for that matter (which violates HTML5 as you just pointed out). Note that until we strictly implemented HTML5, we did not have any of those problems as disabled would work in any cases.
&gt; 
&gt; I tried to ask you exactly this above: &quot;Do you mean that we violate the spec here to be compatible with FF?&quot; You answered &quot;No, we don&apos;t violate the spec, it&apos;s FF who does&quot; which sounded to me different from what you are now saying.

I misunderstood the &quot;to be compatible&quot; as &quot;to match FF&quot; (which we don&apos;t) and polarized my answer on that, which was indeed wrong. Sorry for the misunderstanding. The proper answer should be: this patch and FF are violating the specifications in 2 different ways.

&gt; Are there other known regressions from this?

Yes, board.4chan.org is also impacted (http://code.google.com/p/chromium/issues/detail?id=84300).

&gt; If not perhaps we should stick with the HTML5 and try to get the site fixed.

We could but I don&apos;t think such regressions are good to keep.

&gt; If we want to have this behavior, we also need to get the specification 
&gt; changed. What do IE9 and Opera do?

IE9 does not support link.sheet. It abides by link.disabled as if there were always a stylesheet.

Opera matches FF and always had an associated stylesheet.

Poking further into the behavior of both browsers, it looks like:
* They both fill link.sheet with default values even if the stylesheet was in error.
* FF loads any stylesheet synchronously - at least from a JS perspective.
* Opera does asynchronous loading for alternate sheets (thus querying the sheet can lead to different results if you reload the page). The results are consistent within one load though (loading vs loaded sheet)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458764</commentid>
    <comment_count>30</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-08-30 01:29:32 -0700</bug_when>
    <thetext>So this gives us behavior that is a) against the spec b) does not really match any other engine. This does not seem ideal.

Is there some good reason we don&apos;t just revert http://trac.webkit.org/changeset/84329 and go back to our original behavior (which is also against spec and doesn&apos;t match other engines but has distinct advantage of being hundreds of lines less code)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459431</commentid>
    <comment_count>31</comment_count>
    <who name="Ian &apos;Hixie&apos; Hickson">ian</who>
    <bug_when>2011-08-30 21:50:23 -0700</bug_when>
    <thetext>When you intentionally implement something that violates the spec, the spec is wrong. Please always let me know when the spec is wrong! I recommend posting to whatwg@whatwg.org so that other browser vendors can discuss what the best plan of action is here.

What does IE do? What does Firefox do? If they&apos;re the same, that&apos;s what the spec should say here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459742</commentid>
    <comment_count>32</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2011-08-31 11:00:57 -0700</bug_when>
    <thetext>&gt; Is there some good reason we don&apos;t just revert http://trac.webkit.org/changeset/84329 and go back to our original behavior (which is also against spec and doesn&apos;t match other engines but has distinct advantage of being hundreds of lines less code)?

I have no objections to reverting 84329 and the follow-up fix as those changes have lead to several regressions. However we need to keep the test coverage developed while investigating those regressions though.

As Ian pointed out, we have to bring the behavior to the WHATWG. I was thinking of doing that as a post-mortem of those regressions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459834</commentid>
    <comment_count>33</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-08-31 12:49:32 -0700</bug_when>
    <thetext>(In reply to comment #32)
&gt; &gt; Is there some good reason we don&apos;t just revert http://trac.webkit.org/changeset/84329 and go back to our original behavior (which is also against spec and doesn&apos;t match other engines but has distinct advantage of being hundreds of lines less code)?
&gt; 
&gt; I have no objections to reverting 84329 and the follow-up fix as those changes have lead to several regressions. However we need to keep the test coverage developed while investigating those regressions though.
&gt; 
&gt; As Ian pointed out, we have to bring the behavior to the WHATWG. I was thinking of doing that as a post-mortem of those regressions.

Yeah, at this point I think it would be good to revert the code changes for now (but keep the tests) while we figure out what we exactly want to do. 

The spec clearly needs to change (which is why I mentioned it above &quot; … we also need to get the specification changed.&quot; :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>460777</commentid>
    <comment_count>34</comment_count>
      <attachid>106028</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2011-09-01 14:20:36 -0700</bug_when>
    <thetext>Created attachment 106028
Patch 8: Revert the 2 previous changes, keeping the test cases developped (covered by 67436).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>460944</commentid>
    <comment_count>35</comment_count>
      <attachid>106028</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-01 17:17:24 -0700</bug_when>
    <thetext>Comment on attachment 106028
Patch 8: Revert the 2 previous changes, keeping the test cases developped (covered by 67436).

Clearing flags on attachment: 106028

Committed r94369: &lt;http://trac.webkit.org/changeset/94369&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>460945</commentid>
    <comment_count>36</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-01 17:17:31 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475123</commentid>
    <comment_count>37</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2011-09-28 17:40:06 -0700</bug_when>
    <thetext>Sounds like this bug shouldn&apos;t be closed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499974</commentid>
    <comment_count>38</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-11-10 09:05:36 -0800</bug_when>
    <thetext>&gt; Sounds like this bug shouldn&apos;t be closed.

Why? It looks like the problem with flagstar.com got fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500239</commentid>
    <comment_count>39</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2011-11-10 13:50:57 -0800</bug_when>
    <thetext>(In reply to comment #38)
&gt; &gt; Sounds like this bug shouldn&apos;t be closed.
&gt; 
&gt; Why? It looks like the problem with flagstar.com got fixed.

I misunderstood what was being reverted in r94369. My mistake.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>102609</attachid>
            <date>2011-08-01 18:53:09 -0700</date>
            <delta_ts>2011-08-01 18:53:09 -0700</delta_ts>
            <desc>Reduction that needs 2 trivial external stylesheets to work</desc>
            <filename>index.html</filename>
            <type>text/html</type>
            <size>772</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFs
Ly9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25h
bC5kdGQiPgo8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgbGFuZz0i
ZW4iIHhtbDpsYW5nPSJlbiI+CjxoZWFkPgogPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJy
ZXNvdXJjZXMvcmVkLmNzcyIgbWVkaWE9ImFsbCIgdGl0bGU9IkRlZmF1bHQgU3R5bGUgU2hlZXQi
IHR5cGU9InRleHQvY3NzIiAvPgogPGxpbmsgcmVsPSJhbHRlcm5hdGUgc3R5bGVzaGVldCIgaHJl
Zj0icmVzb3VyY2VzL2dyZWVuLmNzcyIgbWVkaWE9ImFsbCIgdGl0bGU9ImdyZWVuIiB0eXBlPSJ0
ZXh0L2NzcyIgLz4KIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KICAgIHZhciByZWQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGluayIpWzBdOwogICAgcmVkLmRpc2Fi
bGVkID0gdHJ1ZTsKICAgIHZhciBncmVlbiA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJsaW5rIilbMV07CiAgICBncmVlbi5kaXNhYmxlZCA9IHRydWU7CiAgICBncmVlbi5kaXNhYmxl
ZCA9IGZhbHNlOwo8L3NjcmlwdD4KPC9oZWFkPgo8Ym9keT4KCjxkaXYgaWQ9ImNvbnRhaW5lciI+
CiA8ZGl2IGlkPSJjb250ZW50Ij4KICA8aDEgdGl0bGU9Ik15TG9hbnMiPk15TG9hbnM8L2gxPgog
PC9kaXY+CjwvZGl2PgoKPC9ib2R5Pgo8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102709</attachid>
            <date>2011-08-02 15:56:20 -0700</date>
            <delta_ts>2011-08-08 19:29:20 -0700</delta_ts>
            <desc>Proposed fix: Add a temporary state that we merge back into the stylesheet on sheetLoaded(), also make the code more robust to disabled change.</desc>
            <filename>bug-65140-20110802155619.patch</filename>
            <type>text/plain</type>
            <size>25444</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTIxNDcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBhZmY0Y2NkZWE5NWM2ZTcxOGM5NmJh
MzVmNzdiYjY4M2QzYTVkMTE5Li5jZDMxYzVkZjZkMmJjNmNjYWRmNGZhNDEyMjU3Nzk3YjM4Yjgy
YTRlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTEtMDgtMDIgIEp1bGllbiBDaGFmZnJhaXgg
IDxqY2hhZmZyYWl4QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUkVHUkVTU0lPTiAocjg0MzI3LXI4
NDMyOSk6IENTUyBzdHlsZXNoZWV0cyBmYWlsIHRvIGxvYWQgb24gd3d3LmZsYWdzdGFyLmNvbSBs
b2dpbiBwYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02NTE0MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vOTgzNTkwNT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvY3NzL2xpbmstZGlzYWJs
ZWQtYXR0ci1leHBlY3RlZC50eHQ6IFRoaXMgY2hhbmdlIGlzIGEgcHJvZ3Jlc3Npb24sIGJ1dCB3
ZSBhcmUgc3RpbGwKKyAgICAgICAgbm90IGhhbmRsaW5nIHVwZGF0ZXMgdG8gdGhlIHNlbGVjdGVk
IHN0eWxlIHNldCBwcm9wZXJseSAoYWxyZWFkeSBjb3ZlcmVkIGJ5IGJ1ZyA2MjQwNykuCisKKyAg
ICAgICAgKiBmYXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1maXJzdC1hbHRlcm5hdGUtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1maXJz
dC1hbHRlcm5hdGUtb24tbG9hZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
Y3NzL3N0eWxlc2hlZXQtZW5hYmxlLWZpcnN0LWFsdGVybmF0ZS1vbi1sb2FkLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxlLWZpcnN0LWFsdGVybmF0ZS5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1zZWNvbmQt
YWx0ZXJuYXRlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3Mvc3R5bGVz
aGVldC1lbmFibGUtc2Vjb25kLWFsdGVybmF0ZS1vbi1sb2FkLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZmFzdC9jc3Mvc3R5bGVzaGVldC1lbmFibGUtc2Vjb25kLWFsdGVybmF0ZS1v
bi1sb2FkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxl
LXNlY29uZC1hbHRlcm5hdGUuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9jc3Mv
bGluay1jc3MtZGlzYWJsZWQtdmFsdWUtd2l0aC1zbG93LWxvYWRpbmctc2hlZXQtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2Nzcy9saW5rLWNzcy1kaXNhYmxlZC12
YWx1ZS13aXRoLXNsb3ctbG9hZGluZy1zaGVldC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL2Nzcy9yZXNvdXJjZXMvbGluay1jc3MtZGlzYWJsZWQtdmFsdWUtd2l0aC1zbG93LWxv
YWRpbmctc2hlZXQuanM6IEFkZGVkLgorICAgICAgICAob25TaGVldExvYWRlZCk6CisgICAgICAg
ICh0ZXN0V2hlbkxvYWRlZCk6CisgICAgICAgICogaHR0cC90ZXN0cy9jc3MvcmVzb3VyY2VzL3Ns
b3ctbG9hZGluZy1zaGVldC5waHA6IEFkZGVkLgorICAgICAgICBUaG9zZSBhcmUgYSB2YXJpYXRp
b24gb24gdGhlIHNhbWUgdGhlbWU6IHdlIGRpc2FibGUgc29tZSBzdHlsZXNoZWV0IGFuZCBlbmFi
bGUgb3RoZXJzLAorICAgICAgICBlaXRoZXIgZGlyZWN0bHkgb3IgbGF0ZXIuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6IE1ha2VkIGxpbmstY3Nz
LWRpc2FibGVkLXZhbHVlLXdpdGgtc2xvdy1sb2FkaW5nLXNoZWV0LmpzIGFzCisgICAgICAgIFNM
T1csIG5vdCBzdXJlIHdoeSBhcyBpdCBzaG91bGQgcnVuIGZhc3QgZW5vdWdoIGFuZCBkb2VzIG5v
dCB0aW1lIG91dCBpZiB5b3UgcnVuIGl0IG1hbnVhbGx5LgorCiAyMDExLTA4LTAxICBDaHJpcyBS
b2dlcnMgIDxjcm9nZXJzQGdvb2dsZS5jb20+CiAKICAgICAgICAgQWRkIGF1ZGlvbm9kZS5odG1s
IGFuZCBnYWluLmh0bWwgd2ViIGF1ZGlvIGxheW91dCB0ZXN0cwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9jc3MvbGluay1kaXNhYmxlZC1hdHRyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2Zhc3QvY3NzL2xpbmstZGlzYWJsZWQtYXR0ci1leHBlY3RlZC50eHQKaW5kZXggNTcxYWNi
MjhkNzcyNjYwZmMyYWRiNGMyMmZhODIwZmM1NmE2ZGZjZS4uZjQxMzcwYTEyNWY0Mjk4MDMwZDVi
NjQxMGY1OTVjNWNhMTMxM2NkOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvbGlu
ay1kaXNhYmxlZC1hdHRyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9s
aW5rLWRpc2FibGVkLWF0dHItZXhwZWN0ZWQudHh0CkBAIC0xNSwxMSArMTUsMTEgQEAgUEFTUyBn
ZXRDb21wdXRlZFN0eWxlKGNvbnNvbGUpLndoaXRlU3BhY2UgaXMgJ3ByZS13cmFwJwogYWx0c2hl
ZXQKIEZBSUwgbGluay5kaXNhYmxlZCBzaG91bGQgYmUgdHJ1ZS4gV2FzIGZhbHNlLgogUEFTUyBs
aW5rLnNoZWV0IGlzIG5vbi1udWxsLgotRkFJTCBnZXRDb21wdXRlZFN0eWxlKGNvbnNvbGUpLmJh
Y2tncm91bmRDb2xvciBzaG91bGQgYmUgcmdiKDAsIDEyOCwgMCkuIFdhcyByZ2JhKDAsIDAsIDAs
IDApLgorUEFTUyBnZXRDb21wdXRlZFN0eWxlKGNvbnNvbGUpLmJhY2tncm91bmRDb2xvciBpcyAn
cmdiKDAsIDEyOCwgMCknCiBGQUlMIGxpbmsuZGlzYWJsZWQgc2hvdWxkIGJlIHRydWUuIFdhcyBm
YWxzZS4KLVBBU1MgZ2V0Q29tcHV0ZWRTdHlsZShjb25zb2xlKS5iYWNrZ3JvdW5kQ29sb3IgaXMg
b3JpZ2luYWxCRworRkFJTCBnZXRDb21wdXRlZFN0eWxlKGNvbnNvbGUpLmJhY2tncm91bmRDb2xv
ciBzaG91bGQgYmUgcmdiYSgwLCAwLCAwLCAwKS4gV2FzIHJnYigwLCAxMjgsIDApLgogUEFTUyBs
aW5rLmRpc2FibGVkIGlzIGZhbHNlCi1GQUlMIGdldENvbXB1dGVkU3R5bGUoY29uc29sZSkuYmFj
a2dyb3VuZENvbG9yIHNob3VsZCBiZSByZ2IoMCwgMTI4LCAwKS4gV2FzIHJnYmEoMCwgMCwgMCwg
MCkuCitQQVNTIGdldENvbXB1dGVkU3R5bGUoY29uc29sZSkuYmFja2dyb3VuZENvbG9yIGlzICdy
Z2IoMCwgMTI4LCAwKScKIFBBU1MgZ2V0Q29tcHV0ZWRTdHlsZShjb25zb2xlKS5iYWNrZ3JvdW5k
Q29sb3IgaXMgb3JpZ2luYWxCRwogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1maXJzdC1h
bHRlcm5hdGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGVzaGVldC1l
bmFibGUtZmlyc3QtYWx0ZXJuYXRlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMDUyOGZiNzU4
YTkxZDdmMzA2ODIwNzExMTUwZjk4YTVkMTcwMmM0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9jc3Mvc3R5bGVzaGVldC1lbmFibGUtZmlyc3QtYWx0ZXJuYXRlLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDUgQEAKK1Rlc3QgZm9yIDY1MTQwOiBSRUdSRVNTSU9OIChyODQzMjct
cjg0MzI5KTogQ1NTIHN0eWxlc2hlZXRzIGZhaWwgdG8gbG9hZCBvbiB3d3cuZmxhZ3N0YXIuY29t
IGxvZ2luIHBhZ2UKKworVGhpcyB0ZXN0IFBBU1NFRCBpZiBQQVNTRUQgaXMgd3JpdHRlbiBiZWxv
dyAoYWx0ZXJuYXRpdmVseSB0aGUgbmV4dCBsaW5lIHNob3VsZCBoYXZlIGEgR1JFRU4gYmFja2dy
b3VuZCkuCisKK1BBU1NFRApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGVz
aGVldC1lbmFibGUtZmlyc3QtYWx0ZXJuYXRlLW9uLWxvYWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvZmFzdC9jc3Mvc3R5bGVzaGVldC1lbmFibGUtZmlyc3QtYWx0ZXJuYXRlLW9uLWxvYWQt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMwNTI4ZmI3NThhOTFkN2YzMDY4MjA3MTExNTBmOThh
NWQxNzAyYzQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZXNo
ZWV0LWVuYWJsZS1maXJzdC1hbHRlcm5hdGUtb24tbG9hZC1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSw1IEBACitUZXN0IGZvciA2NTE0MDogUkVHUkVTU0lPTiAocjg0MzI3LXI4NDMyOSk6IENTUyBz
dHlsZXNoZWV0cyBmYWlsIHRvIGxvYWQgb24gd3d3LmZsYWdzdGFyLmNvbSBsb2dpbiBwYWdlCisK
K1RoaXMgdGVzdCBQQVNTRUQgaWYgUEFTU0VEIGlzIHdyaXR0ZW4gYmVsb3cgKGFsdGVybmF0aXZl
bHkgdGhlIG5leHQgbGluZSBzaG91bGQgaGF2ZSBhIEdSRUVOIGJhY2tncm91bmQpLgorCitQQVNT
RUQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxlLWZp
cnN0LWFsdGVybmF0ZS1vbi1sb2FkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZXNo
ZWV0LWVuYWJsZS1maXJzdC1hbHRlcm5hdGUtb24tbG9hZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZmMDJj
NmU1ZWEyMjFjZjc2MDE4YzZkYzFkMTU0YzAzNTQ2OGMzMzMKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1maXJzdC1hbHRlcm5hdGUtb24t
bG9hZC5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzND
Ly9EVEQgWEhUTUwgMS4wIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi94
aHRtbDEvRFREL3hodG1sMS10cmFuc2l0aW9uYWwuZHRkIj4KKzxodG1sIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hodG1sIiBsYW5nPSJlbiIgeG1sOmxhbmc9ImVuIj4KKzxoZWFkPgor
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvcmVkLmNzcyIgbWVkaWE9ImFs
bCIgdGl0bGU9IkRlZmF1bHQgU3R5bGUgU2hlZXQiIHR5cGU9InRleHQvY3NzIiAvPgorPGxpbmsg
cmVsPSJhbHRlcm5hdGUgc3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL2dyZWVuLmNzcyIgbWVk
aWE9ImFsbCIgdGl0bGU9ImdyZWVuIiB0eXBlPSJ0ZXh0L2NzcyIgLz4KKzxzY3JpcHQgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0Ij4KKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQor
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICBmdW5jdGlv
biB0ZXN0KCkgeworICAgICAgICB2YXIgcmVkID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoImxpbmsiKVswXTsKKyAgICAgICAgcmVkLmRpc2FibGVkID0gdHJ1ZTsKKyAgICAgICAgdmFy
IGdyZWVuID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxpbmsiKVsxXTsKKyAgICAg
ICAgZ3JlZW4uZGlzYWJsZWQgPSB0cnVlOworICAgICAgICBncmVlbi5kaXNhYmxlZCA9IGZhbHNl
OworCisgICAgICAgIHZhciBjb25zb2xlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNv
bGUiKTsKKyAgICAgICAgaWYgKGdldENvbXB1dGVkU3R5bGUoY29uc29sZSwgbnVsbCkuYmFja2dy
b3VuZENvbG9yID09PSAicmdiKDAsIDEyOCwgMCkiKQorICAgICAgICAgICAgY29uc29sZS5pbm5l
ckhUTUwgPSAiUEFTU0VEIjsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY29uc29sZS5pbm5l
ckhUTUwgPSAiRkFJTEVELCBiYWNrZ3JvdW5kID0gIiArIGdldENvbXB1dGVkU3R5bGUoY29uc29s
ZSwgbnVsbCkuYmFja2dyb3VuZENvbG9yOworICAgIH0KKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0
ZW5lcigibG9hZCIsIHRlc3QsIGZhbHNlKTsKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
cD5UZXN0IGZvciA8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NjUxNDAiPjY1MTQwPC9hPjogUkVHUkVTU0lPTiAocjg0MzI3LXI4NDMyOSk6IENTUyBzdHls
ZXNoZWV0cyBmYWlsIHRvIGxvYWQgb24gd3d3LmZsYWdzdGFyLmNvbSBsb2dpbiBwYWdlPC9wPgor
PHA+VGhpcyB0ZXN0IFBBU1NFRCBpZiBQQVNTRUQgaXMgd3JpdHRlbiBiZWxvdyAoYWx0ZXJuYXRp
dmVseSB0aGUgbmV4dCBsaW5lIHNob3VsZCBoYXZlIGEgR1JFRU4gYmFja2dyb3VuZCkuPC9wPgor
PGRpdiBpZD0iY29uc29sZSI+RkFJTEVEPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1maXJzdC1hbHRlcm5h
dGUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxlLWZpcnN0LWFs
dGVybmF0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFiNjE2MzU4NmZkZjQ4ZDdmYTcyOGFkYzM4MGM1ZTlj
NWQ4NmE5NGIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZXNo
ZWV0LWVuYWJsZS1maXJzdC1hbHRlcm5hdGUuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IURPQ1RZ
UEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIiAi
aHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+
Cis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgbGFuZz0iZW4iIHht
bDpsYW5nPSJlbiI+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0icmVzb3Vy
Y2VzL3JlZC5jc3MiIG1lZGlhPSJhbGwiIHRpdGxlPSJEZWZhdWx0IFN0eWxlIFNoZWV0IiB0eXBl
PSJ0ZXh0L2NzcyIgLz4KKzxsaW5rIHJlbD0iYWx0ZXJuYXRlIHN0eWxlc2hlZXQiIGhyZWY9InJl
c291cmNlcy9ncmVlbi5jc3MiIG1lZGlhPSJhbGwiIHRpdGxlPSJncmVlbiIgdHlwZT0idGV4dC9j
c3MiIC8+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOworCisgICAgdmFyIHJlZCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJs
aW5rIilbMF07CisgICAgcmVkLmRpc2FibGVkID0gdHJ1ZTsKKyAgICB2YXIgZ3JlZW4gPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGluayIpWzFdOworICAgIGdyZWVuLmRpc2FibGVk
ID0gdHJ1ZTsKKyAgICBncmVlbi5kaXNhYmxlZCA9IGZhbHNlOworCisgICAgZnVuY3Rpb24gdGVz
dCgpIHsKKyAgICAgICAgdmFyIGNvbnNvbGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29u
c29sZSIpOworICAgICAgICBpZiAoZ2V0Q29tcHV0ZWRTdHlsZShjb25zb2xlLCBudWxsKS5iYWNr
Z3JvdW5kQ29sb3IgPT09ICJyZ2IoMCwgMTI4LCAwKSIpCisgICAgICAgICAgICBjb25zb2xlLmlu
bmVySFRNTCA9ICJQQVNTRUQiOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjb25zb2xlLmlu
bmVySFRNTCA9ICJGQUlMRUQsIGJhY2tncm91bmQgPSAiICsgZ2V0Q29tcHV0ZWRTdHlsZShjb25z
b2xlLCBudWxsKS5iYWNrZ3JvdW5kQ29sb3I7CisgICAgfQorICAgIHdpbmRvdy5hZGRFdmVudExp
c3RlbmVyKCJsb2FkIiwgdGVzdCwgZmFsc2UpOworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxwPlRlc3QgZm9yIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02NTE0MCI+NjUxNDA8L2E+OiBSRUdSRVNTSU9OIChyODQzMjctcjg0MzI5KTogQ1NTIHN0
eWxlc2hlZXRzIGZhaWwgdG8gbG9hZCBvbiB3d3cuZmxhZ3N0YXIuY29tIGxvZ2luIHBhZ2U8L3A+
Cis8cD5UaGlzIHRlc3QgUEFTU0VEIGlmIFBBU1NFRCBpcyB3cml0dGVuIGJlbG93IChhbHRlcm5h
dGl2ZWx5IHRoZSBuZXh0IGxpbmUgc2hvdWxkIGhhdmUgYSBHUkVFTiBiYWNrZ3JvdW5kKS48L3A+
Cis8ZGl2IGlkPSJjb25zb2xlIj5GQUlMRUQ8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxlLXNlY29uZC1hbHRl
cm5hdGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGVzaGVldC1lbmFi
bGUtc2Vjb25kLWFsdGVybmF0ZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzA1MjhmYjc1OGE5
MWQ3ZjMwNjgyMDcxMTE1MGY5OGE1ZDE3MDJjNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxlLXNlY29uZC1hbHRlcm5hdGUtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsNSBAQAorVGVzdCBmb3IgNjUxNDA6IFJFR1JFU1NJT04gKHI4NDMyNy1y
ODQzMjkpOiBDU1Mgc3R5bGVzaGVldHMgZmFpbCB0byBsb2FkIG9uIHd3dy5mbGFnc3Rhci5jb20g
bG9naW4gcGFnZQorCitUaGlzIHRlc3QgUEFTU0VEIGlmIFBBU1NFRCBpcyB3cml0dGVuIGJlbG93
IChhbHRlcm5hdGl2ZWx5IHRoZSBuZXh0IGxpbmUgc2hvdWxkIGhhdmUgYSBHUkVFTiBiYWNrZ3Jv
dW5kKS4KKworUEFTU0VECmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZXNo
ZWV0LWVuYWJsZS1zZWNvbmQtYWx0ZXJuYXRlLW9uLWxvYWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvZmFzdC9jc3Mvc3R5bGVzaGVldC1lbmFibGUtc2Vjb25kLWFsdGVybmF0ZS1vbi1sb2Fk
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMDUyOGZiNzU4YTkxZDdmMzA2ODIwNzExMTUwZjk4
YTVkMTcwMmM0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGVz
aGVldC1lbmFibGUtc2Vjb25kLWFsdGVybmF0ZS1vbi1sb2FkLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDUgQEAKK1Rlc3QgZm9yIDY1MTQwOiBSRUdSRVNTSU9OIChyODQzMjctcjg0MzI5KTogQ1NT
IHN0eWxlc2hlZXRzIGZhaWwgdG8gbG9hZCBvbiB3d3cuZmxhZ3N0YXIuY29tIGxvZ2luIHBhZ2UK
KworVGhpcyB0ZXN0IFBBU1NFRCBpZiBQQVNTRUQgaXMgd3JpdHRlbiBiZWxvdyAoYWx0ZXJuYXRp
dmVseSB0aGUgbmV4dCBsaW5lIHNob3VsZCBoYXZlIGEgR1JFRU4gYmFja2dyb3VuZCkuCisKK1BB
U1NFRApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGVzaGVldC1lbmFibGUt
c2Vjb25kLWFsdGVybmF0ZS1vbi1sb2FkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHls
ZXNoZWV0LWVuYWJsZS1zZWNvbmQtYWx0ZXJuYXRlLW9uLWxvYWQuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5h
MzFiOTU0MjU5Y2Q2NmQ5ODhjMTVjYjc2ZjIxYzVkYjE2ZjYzYTNlCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGVzaGVldC1lbmFibGUtc2Vjb25kLWFsdGVybmF0
ZS1vbi1sb2FkLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCFET0NUWVBFIGh0bWwgUFVCTElDICIt
Ly9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3Jn
L1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPgorPGh0bWwgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIGxhbmc9ImVuIiB4bWw6bGFuZz0iZW4iPgorPGhl
YWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy9yZWQuY3NzIiBtZWRp
YT0iYWxsIiB0aXRsZT0iRGVmYXVsdCBTdHlsZSBTaGVldCIgdHlwZT0idGV4dC9jc3MiIC8+Cis8
bGluayByZWw9ImFsdGVybmF0ZSBzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvcmVkLmNzcyIg
bWVkaWE9ImFsbCIgdGl0bGU9ImdyZWVuIiB0eXBlPSJ0ZXh0L2NzcyIgLz4KKzxsaW5rIHJlbD0i
YWx0ZXJuYXRlIHN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy9ncmVlbi5jc3MiIG1lZGlhPSJh
bGwiIHRpdGxlPSJncmVlbiIgdHlwZT0idGV4dC9jc3MiIC8+Cis8c2NyaXB0IHR5cGU9InRleHQv
amF2YXNjcmlwdCI+CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgZnVuY3Rpb24gdGVz
dCgpIHsKKyAgICAgICAgdmFyIHJlZCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJs
aW5rIilbMF07CisgICAgICAgIHJlZC5kaXNhYmxlZCA9IHRydWU7CisgICAgICAgIHZhciBncmVl
biA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJsaW5rIilbMl07CisgICAgICAgIGdy
ZWVuLmRpc2FibGVkID0gZmFsc2U7CisKKyAgICAgICAgdmFyIGNvbnNvbGUgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiY29uc29sZSIpOworICAgICAgICBpZiAoZ2V0Q29tcHV0ZWRTdHlsZShj
b25zb2xlLCBudWxsKS5iYWNrZ3JvdW5kQ29sb3IgPT09ICJyZ2IoMCwgMTI4LCAwKSIpCisgICAg
ICAgICAgICBjb25zb2xlLmlubmVySFRNTCA9ICJQQVNTRUQiOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICBjb25zb2xlLmlubmVySFRNTCA9ICJGQUlMRUQsIGJhY2tncm91bmQgPSAiICsgZ2V0
Q29tcHV0ZWRTdHlsZShjb25zb2xlLCBudWxsKS5iYWNrZ3JvdW5kQ29sb3I7CisgICAgfQorICAg
IHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgdGVzdCwgZmFsc2UpOworPC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRlc3QgZm9yIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTE0MCI+NjUxNDA8L2E+OiBSRUdSRVNTSU9OIChyODQz
Mjctcjg0MzI5KTogQ1NTIHN0eWxlc2hlZXRzIGZhaWwgdG8gbG9hZCBvbiB3d3cuZmxhZ3N0YXIu
Y29tIGxvZ2luIHBhZ2U8L3A+Cis8cD5UaGlzIHRlc3QgUEFTU0VEIGlmIFBBU1NFRCBpcyB3cml0
dGVuIGJlbG93IChhbHRlcm5hdGl2ZWx5IHRoZSBuZXh0IGxpbmUgc2hvdWxkIGhhdmUgYSBHUkVF
TiBiYWNrZ3JvdW5kKS48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj5GQUlMRUQ8L2Rpdj4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlc2hlZXQt
ZW5hYmxlLXNlY29uZC1hbHRlcm5hdGUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxl
c2hlZXQtZW5hYmxlLXNlY29uZC1hbHRlcm5hdGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDc1NQpp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MTc5OWIwYjFl
NGQyZDZhODliOWE3NDBlYmFjNjg1YjNjZmU5MzFmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9jc3Mvc3R5bGVzaGVldC1lbmFibGUtc2Vjb25kLWFsdGVybmF0ZS5odG1sCkBA
IC0wLDAgKzEsMzEgQEAKKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwg
MS4wIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3ho
dG1sMS10cmFuc2l0aW9uYWwuZHRkIj4KKzxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hodG1sIiBsYW5nPSJlbiIgeG1sOmxhbmc9ImVuIj4KKzxoZWFkPgorPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvcmVkLmNzcyIgbWVkaWE9ImFsbCIgdGl0bGU9IkRl
ZmF1bHQgU3R5bGUgU2hlZXQiIHR5cGU9InRleHQvY3NzIiAvPgorPGxpbmsgcmVsPSJhbHRlcm5h
dGUgc3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL3JlZC5jc3MiIG1lZGlhPSJhbGwiIHRpdGxl
PSJncmVlbiIgdHlwZT0idGV4dC9jc3MiIC8+Cis8bGluayByZWw9ImFsdGVybmF0ZSBzdHlsZXNo
ZWV0IiBocmVmPSJyZXNvdXJjZXMvZ3JlZW4uY3NzIiBtZWRpYT0iYWxsIiB0aXRsZT0iZ3JlZW4i
IHR5cGU9InRleHQvY3NzIiAvPgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgIHZhciByZWQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgibGluayIpWzBdOworICAgIHJlZC5kaXNhYmxlZCA9IHRydWU7CisgICAgdmFy
IGdyZWVuID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxpbmsiKVsyXTsKKyAgICBn
cmVlbi5kaXNhYmxlZCA9IGZhbHNlOworCisgICAgZnVuY3Rpb24gdGVzdCgpIHsKKyAgICAgICAg
dmFyIGNvbnNvbGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpOworICAgICAg
ICBpZiAoZ2V0Q29tcHV0ZWRTdHlsZShjb25zb2xlLCBudWxsKS5iYWNrZ3JvdW5kQ29sb3IgPT09
ICJyZ2IoMCwgMTI4LCAwKSIpCisgICAgICAgICAgICBjb25zb2xlLmlubmVySFRNTCA9ICJQQVNT
RUQiOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjb25zb2xlLmlubmVySFRNTCA9ICJGQUlM
RUQsIGJhY2tncm91bmQgPSAiICsgZ2V0Q29tcHV0ZWRTdHlsZShjb25zb2xlLCBudWxsKS5iYWNr
Z3JvdW5kQ29sb3I7CisgICAgfQorICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwg
dGVzdCwgZmFsc2UpOworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRlc3QgZm9yIDxh
IGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTE0MCI+NjUx
NDA8L2E+OiBSRUdSRVNTSU9OIChyODQzMjctcjg0MzI5KTogQ1NTIHN0eWxlc2hlZXRzIGZhaWwg
dG8gbG9hZCBvbiB3d3cuZmxhZ3N0YXIuY29tIGxvZ2luIHBhZ2U8L3A+Cis8cD5UaGlzIHRlc3Qg
UEFTU0VEIGlmIFBBU1NFRCBpcyB3cml0dGVuIGJlbG93IChhbHRlcm5hdGl2ZWx5IHRoZSBuZXh0
IGxpbmUgc2hvdWxkIGhhdmUgYSBHUkVFTiBiYWNrZ3JvdW5kKS48L3A+Cis8ZGl2IGlkPSJjb25z
b2xlIj5GQUlMRUQ8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvY3NzL2xpbmstY3NzLWRpc2FibGVkLXZhbHVlLXdpdGgtc2xvdy1sb2Fk
aW5nLXNoZWV0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY3NzL2xpbmst
Y3NzLWRpc2FibGVkLXZhbHVlLXdpdGgtc2xvdy1sb2FkaW5nLXNoZWV0LWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42MTQwMGFhYTBlYzBhNGUyMGNmZDc2YjBhMzUyMGI5MTc0ZTM2NTQ4Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jc3MvbGluay1jc3MtZGlzYWJs
ZWQtdmFsdWUtd2l0aC1zbG93LWxvYWRpbmctc2hlZXQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MTkgQEAKK1Rlc3QgdGhhdCBIVE1MTGlua0VsZW1lbnQncyBkaXNhYmxlZCBhdHRyaWJ1dGUgaXMg
cHJvcGVybHkgY2FjaGVkIHdoaWxlIHNldCB3aGVuIGxvYWRpbmcgYSBzdHlsZXNoZWV0LgorCitP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworVGVzdGluZyB2YWx1ZSBvZiAnZGlzYWJsZWQn
IHByaW9yIHRvIGxvYWQganVzdCBhZnRlciBzZXR0aW5nIHRoZW0KK1BBU1MgbWFpblNoZWV0TGlu
ay5zaGVldCBpcyBub24tbnVsbC4KK1BBU1MgYWx0ZXJuYXRlU2hlZXRMaW5rLnNoZWV0IGlzIG51
bGwKK1BBU1MgbWFpblNoZWV0TGluay5kaXNhYmxlZCBpcyB0cnVlCitQQVNTIGFsdGVybmF0ZVNo
ZWV0TGluay5kaXNhYmxlZCBpcyBmYWxzZQorVGVzdGluZyB0aGUgdmFsdWVzIHdoZW4gdGhlIGFs
dGVybmF0ZSBzaGVldCBpcyBsb2FkZWQgKGFzIHRoaXMgaXMgdGhlIG9ubHkgb25lIHRoYXQgaGFz
IHNoZWV0KCkgPT09IG51bGwpCitQQVNTIG1haW5TaGVldExpbmsuc2hlZXQgaXMgbm9uLW51bGwu
CitQQVNTIGFsdGVybmF0ZVNoZWV0TGluay5zaGVldCBpcyBub24tbnVsbC4KK1BBU1MgbWFpblNo
ZWV0TGluay5kaXNhYmxlZCBpcyB0cnVlCitQQVNTIGFsdGVybmF0ZVNoZWV0TGluay5kaXNhYmxl
ZCBpcyBmYWxzZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY3NzL2xpbmstY3NzLWRp
c2FibGVkLXZhbHVlLXdpdGgtc2xvdy1sb2FkaW5nLXNoZWV0Lmh0bWwgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2Nzcy9saW5rLWNzcy1kaXNhYmxlZC12YWx1ZS13aXRoLXNsb3ctbG9hZGluZy1z
aGVldC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA3ZmYyY2NjYTFiNGZlMjFlZjFkMTI1MTk1YTY2MmZjZmIy
ODY2MGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nzcy9saW5r
LWNzcy1kaXNhYmxlZC12YWx1ZS13aXRoLXNsb3ctbG9hZGluZy1zaGVldC5odG1sCkBAIC0wLDAg
KzEsMTQgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4K
KzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy9z
bG93LWxvYWRpbmctc2hlZXQucGhwP2NvbG9yPXJlZCIgbWVkaWE9ImFsbCIgdGl0bGU9IkRlZmF1
bHQgU3R5bGUgU2hlZXQiIHR5cGU9InRleHQvY3NzIiAvPgorPGxpbmsgcmVsPSJhbHRlcm5hdGUg
c3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL3Nsb3ctbG9hZGluZy1zaGVldC5waHA/Y29sb3I9
Z3JlZW4iIG1lZGlhPSJhbGwiIHRpdGxlPSJncmVlbiIgdHlwZT0idGV4dC9jc3MiIC8+Cis8c2Ny
aXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvbGluay1jc3MtZGlzYWJsZWQtdmFsdWUt
d2l0aC1zbG93LWxvYWRpbmctc2hlZXQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9qcy10
ZXN0LXJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jc3MvcmVzb3VyY2VzL2xpbmst
Y3NzLWRpc2FibGVkLXZhbHVlLXdpdGgtc2xvdy1sb2FkaW5nLXNoZWV0LmpzIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9jc3MvcmVzb3VyY2VzL2xpbmstY3NzLWRpc2FibGVkLXZhbHVlLXdpdGgt
c2xvdy1sb2FkaW5nLXNoZWV0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ODlmMjczNmE2NDQ4OTU1NTRlOWQw
NmQ4MGZlNWI5YTg5OTdmZjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2Nzcy9yZXNvdXJjZXMvbGluay1jc3MtZGlzYWJsZWQtdmFsdWUtd2l0aC1zbG93LWxvYWRp
bmctc2hlZXQuanMKQEAgLTAsMCArMSw0NSBAQAorZGVzY3JpcHRpb24oIlRlc3QgdGhhdCBIVE1M
TGlua0VsZW1lbnQncyBkaXNhYmxlZCBhdHRyaWJ1dGUgaXMgcHJvcGVybHkgY2FjaGVkIHdoaWxl
IHNldCB3aGVuIGxvYWRpbmcgYSBzdHlsZXNoZWV0LiIpOworCitpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsK
Kword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCittYWluU2hlZXRMaW5rID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxpbmsiKVswXTsKK2FsdGVybmF0ZVNoZWV0TGluayA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJsaW5rIilbMV07CisKK21haW5TaGVldExp
bmsuZGlzYWJsZWQgPSB0cnVlOworYWx0ZXJuYXRlU2hlZXRMaW5rLmRpc2FibGVkID0gZmFsc2U7
CisKK2RlYnVnKCJUZXN0aW5nIHZhbHVlIG9mICdkaXNhYmxlZCcgcHJpb3IgdG8gbG9hZCBqdXN0
IGFmdGVyIHNldHRpbmcgdGhlbSIpOworc2hvdWxkQmVOb25OdWxsKCJtYWluU2hlZXRMaW5rLnNo
ZWV0Iik7CitzaG91bGRCZU51bGwoImFsdGVybmF0ZVNoZWV0TGluay5zaGVldCIpOworc2hvdWxk
QmVUcnVlKCJtYWluU2hlZXRMaW5rLmRpc2FibGVkIiwgdHJ1ZSk7CitzaG91bGRCZUZhbHNlKCJh
bHRlcm5hdGVTaGVldExpbmsuZGlzYWJsZWQiKTsKKworZGVidWcoIlRlc3RpbmcgdGhlIHZhbHVl
cyB3aGVuIHRoZSBhbHRlcm5hdGUgc2hlZXQgaXMgbG9hZGVkIChhcyB0aGlzIGlzIHRoZSBvbmx5
IG9uZSB0aGF0IGhhcyBzaGVldCgpID09PSBudWxsKSIpOworCitmdW5jdGlvbiBvblNoZWV0TG9h
ZGVkKGYsIGVsZW0sIG1heHRpbWUpIHsKKyAgICBpZiAoZWxlbS5zaGVldCB8fCBtYXh0aW1lIDw9
IDApCisgICAgICAgIGYoKTsKKyAgICBlbHNlCisgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24g
KCkgeyBvblNoZWV0TG9hZGVkKGYsIGVsZW0sIG1heHRpbWUgLSAyNSk7fSwgMjUpOworfQorCitm
dW5jdGlvbiB0ZXN0V2hlbkxvYWRlZCgpIHsKKyAgICAgICAgLy8gVGhvc2UgbmV4dCAyIGxpbmVz
IGFyZSBhIHNhbml0eSBjaGVjay4KKyAgICAgICAgLy8gSWYgdGhlIHNlY29uZCBjaGVjayBmYWls
cywgaXQgaXMgbGlrZWx5IHRoYXQgdGhlIHRlc3QgdGltZWQgb3V0IGFuZCB0aHVzCisgICAgICAg
IC8vIHlvdSBjYW4gZGlzY2FyZCB0aGUgcmVzdCBvZiByZXN1bHRzIGFzIGl0IGlzIG5vdCB0ZXN0
aW5nIHdoYXQgd2Ugd2FudAorICAgICAgICAvLyAobmFtZWx5IHRoYXQgdGhlIGRpc2FibGVkIHZh
bHVlIGlzIHBhc3NlZCB0byB0aGUgZmluYWwgc2hlZXQpLgorICAgICAgICBzaG91bGRCZU5vbk51
bGwoIm1haW5TaGVldExpbmsuc2hlZXQiKTsKKyAgICAgICAgc2hvdWxkQmVOb25OdWxsKCJhbHRl
cm5hdGVTaGVldExpbmsuc2hlZXQiKTsKKworICAgICAgICBzaG91bGRCZVRydWUoIm1haW5TaGVl
dExpbmsuZGlzYWJsZWQiKTsKKyAgICAgICAgc2hvdWxkQmVGYWxzZSgiYWx0ZXJuYXRlU2hlZXRM
aW5rLmRpc2FibGVkIik7CisKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK29uU2hlZXRM
b2FkZWQodGVzdFdoZW5Mb2FkZWQsIGFsdGVybmF0ZVNoZWV0TGluaywgNTAwKTsKKwordmFyIHN1
Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2Nzcy9yZXNvdXJjZXMvc2xvdy1sb2FkaW5nLXNoZWV0LnBocCBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvY3NzL3Jlc291cmNlcy9zbG93LWxvYWRpbmctc2hlZXQucGhwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjI4OTM3ZDQyYWY4MDMwNWJlOGMzOGNjNmY2ZTlmMDJmMDBiZjZkZTkKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nzcy9yZXNvdXJjZXMvc2xvdy1sb2FkaW5nLXNo
ZWV0LnBocApAQCAtMCwwICsxLDE1IEBACis8P3BocAorLy8gV2Ugc2xlZXAgaGVyZSBzbyB0aGF0
IHdlIGFyZSBoYXZlIGVub3VnaCB0aW1lIHRvIHRlc3QgdGhlIGRpZmZlcmVudCBhdHRyaWJ1dGVz
IGJlZm9yZSB0aGUgc3R5bGVzaGVldCBpcyBmdWxseSBsb2FkZWQuCit1c2xlZXAoMTAwKTsKKwor
aGVhZGVyKCJFeHBpcmVzOiBUaHUsIDAxIERlYyAyMDAzIDE2OjAwOjAwIEdNVCIpOworaGVhZGVy
KCJDYWNoZS1Db250cm9sOiBuby1jYWNoZSwgbm8tc3RvcmUsIG11c3QtcmV2YWxpZGF0ZSIpOwor
aGVhZGVyKCJQcmFnbWE6IG5vLWNhY2hlIik7CitoZWFkZXIoIkNvbnRlbnQtVHlwZTogdGV4dC9j
c3MiKTsKKworJGNvbG9yID0gJF9HRVRbJ2NvbG9yJ107CisKK2VjaG8gImgxIHsgYmFja2dyb3Vu
ZC1jb2xvcjogJGNvbG9yIH1cbiI7CitvYl9mbHVzaCgpOworZmx1c2goKTsKKz8+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKaW5k
ZXggZGMwNTcxY2Q1MjliNGUwNDRjMGUzOWNhMTBkN2JlZmEzZDFlNDIyMy4uNzRiZTFhOWQxZjIz
M2ExZDc5MGI5NDEwNDk0YWE0Y2MzZTU2YzQyYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CisrKyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dApAQCAtNjMsNiArNjMsOCBAQCBC
VUdXSzY0NDk4IFNMT1cgREVCVUcgOiBmYXN0L2VuY29kaW5nL3BhcnNlci10ZXN0cy00MC5odG1s
ID0gUEFTUwogQlVHV0s2NDUwMiBTTE9XIERFQlVHIDogZmFzdC9mb3Jtcy9mb3JtLWFzc29jaWF0
ZWQtZWxlbWVudC1jcmFzaDMuaHRtbCA9IFBBU1MKIFdPTlRGSVggU0xPVyA6IGZhc3QvZG9tL1dp
bmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtY2xvbmUtcmVhbGx5LWRlZXAtYXJyYXkuaHRtbCA9IFBB
U1MKIAorQlVHV0s2NTE0MCBTTE9XOiBodHRwL3Rlc3RzL2Nzcy9saW5rLWNzcy1kaXNhYmxlZC12
YWx1ZS13aXRoLXNsb3ctbG9hZGluZy1zaGVldC5odG1sID0gUEFTUworCiAvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog
Ly8gU0tJUFBFRCBURVNUUwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzOGFiYzRjZDdmMzk3
NThiZmQ1N2M1MjdlNDJhMmY4NTNkMDEyZWVmLi4yZWYzZTExMzk3YTA0MDZiNmZiY2M4ZDE3ZTI3
ZTc0ZTk0NDgxODc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMTEtMDgtMDIgIEp1
bGllbiBDaGFmZnJhaXggIDxqY2hhZmZyYWl4QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUkVHUkVT
U0lPTiAocjg0MzI3LXI4NDMyOSk6IENTUyBzdHlsZXNoZWV0cyBmYWlsIHRvIGxvYWQgb24gd3d3
LmZsYWdzdGFyLmNvbSBsb2dpbiBwYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02NTE0MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vOTgzNTkwNT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0czog
ZmFzdC9jc3Mvc3R5bGVzaGVldC1lbmFibGUtZmlyc3QtYWx0ZXJuYXRlLW9uLWxvYWQuaHRtbAor
ICAgICAgICAgICAgICAgZmFzdC9jc3Mvc3R5bGVzaGVldC1lbmFibGUtZmlyc3QtYWx0ZXJuYXRl
Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxlLXNlY29uZC1h
bHRlcm5hdGUtb24tbG9hZC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Nzcy9zdHlsZXNoZWV0
LWVuYWJsZS1zZWNvbmQtYWx0ZXJuYXRlLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMv
Y3NzL2xpbmstY3NzLWRpc2FibGVkLXZhbHVlLXdpdGgtc2xvdy1sb2FkaW5nLXNoZWV0Lmh0bWwK
KworICAgICAgICBUaGUgZ2lzdCBvZiB0aGUgaXNzdWUgd2FzIHRoYXQgd2Ugd2VyZSBpZ25vcmlu
ZyBjYWxscyB0byBIVE1MTGlua0VsZW1lbnQ6OnNldERpc2FibGVkIHdoZW4KKyAgICAgICAgd2Ug
d2VyZSBsb2FkaW5nIGEgc3R5bGVzaGVldCAobV9zaGVldCB3YXMgMCBhbmQgdGh1cyBpZ25vcmVk
IHRoZSBjYWxsIHBlciB0aGUgc3BlYykuCisKKyAgICAgICAgRkYgZ29lcyBhZ2FpbnN0IHRoZSBz
cGVjIGhlcmUgYW5kIGp1c3QgYWx3YXlzIGtlZXAgYW4gYXNzb2NpYXRlZCBzaGVldCBhcyBsb25n
IGFzICdyZWwnIGhpbnRzIGF0IGEgc3R5bGVzaGVldAorICAgICAgICBsaW5rIGFuZCBocmVmIGlz
IHByZXNlbnQuIEluc3RlYWQgb2Ygc2lkaW5nIHdpdGggRkYsIEkgY29udGludWVkIHRvIGZvbGxv
dyB0aGUgc3BlY2lmaWNhdGlvbiBhbmQgYWRkZWQgYQorICAgICAgICB0ZW1wb3JhcnkgZGlzYWJs
ZWQgc3RhdGUgdGhhdCBnZXRzIG1lcmdlZCBpbnRvIHRoZSBzdHlsZXNoZWV0IHdoZW4gd2UgZ2V0
IGl0LgorCisgICAgICAgIFdoaWxlIGRlYnVnZ2luZyBvdXIgY2FzZSBhdCBoYW5kLCBJIGZvdW5k
IHNvbWUgY2FzZXMgdGhhdCB3ZXJlIG5vdCBwcm9wZXJseSBoYW5kbGVkIGFuZCB3ZXJlCisgICAg
ICAgIGZpeGVkIGFzIHBhcnQgb2YgdGhpcyBjaGFuZ2UuCisKKyAgICAgICAgKiBodG1sL0hUTUxM
aW5rRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OkhUTUxM
aW5rRWxlbWVudCk6IEFkZGVkIHRoZSBuZXcgdmFyaWFibGUuCisgICAgICAgIChXZWJDb3JlOjpI
VE1MTGlua0VsZW1lbnQ6OnNldERpc2FibGVkKTogQ2hhbmdlZCB0aGUgbG9naWMgdG8gYWNjb21t
b2RhdGUgdGhlIHRlbXBvcmFyeQorICAgICAgICBzdGF0ZSB0aGF0IHdlIGhhdmUuIEFsc28gYmV0
dGVyIGhhbmRsZSBjaGFuZ2luZyB0aGUgZGlzYWJsZWQgc3RhdGUgcmVnYXJkbGVzcyBvZiB3aGV0
aGVyCisgICAgICAgIHRoZSBzaGVldCBpcyBwZW5kaW5nLgorICAgICAgICAoV2ViQ29yZTo6SFRN
TExpbmtFbGVtZW50OjpzaGVldExvYWRlZCk6IFJlY29uY2lsZSBvdXIgdGVtcG9yYXJ5IGRpc2Fi
bGVkIHN0YXRlIHdpdGgKKyAgICAgICAgdGhlIHJlYWwgc3RhdGUuIFdlIGRvIHRoaXMgc3RlcCBo
ZXJlIGFzIHRoaXMgYXZvaWRzIHVubmVlZGVkIHJlY2FsY1N0eWxlLgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTExpbmtFbGVtZW50OjpkaXNhYmxlZCk6IFdlIHJldHVybiB0aGUgdGVtcG9yYXJ5IHN0
YXRlIGhlcmUgdG8gbWF0Y2gKKyAgICAgICAgRkYgYW5kIG91ciBmdXR1cmUgc2VsZi4gVGhpcyBp
cyBhbiBvcHRpbWlzdGljIHZpZXcgYXMgaWYgdGhlcmUgaXMgbm8gc2hlZXQsIHdlCisgICAgICAg
IHdpbGwganVzdCBkaXNjYXJkIHRoZSBzdGF0ZSBpbiBzaGVldExvYWRlZCgpLgorICAgICAgICAq
IGh0bWwvSFRNTExpbmtFbGVtZW50Lmg6IEFkZGVkIG1fcGVuZGluZ1NoZWV0RGlzYWJsZWRTdGF0
dXMgdG8gaG9sZCB0aGUKKyAgICAgICAgdGVtcG9yYXJ5IGRpc2FibGVkIHN0YXRlLgorCiAyMDEx
LTA4LTAxICBTY290dCBHcmFoYW0gIDxzY290dG1nQGNocm9taXVtLm9yZz4KIAogICAgICAgICBS
RUdSRVNTSU9OIChyMzk3MjU/KTogUmVzb3VyY2VzIHJlbW92ZWQgZnJvbSBkb2N1bWVudCBjYW4g
bm90IGJlIGZyZWVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKaW5kZXgg
YzRkOTQzMWYwNWEzYTY4MTczZTZjNDdkZDgzNmU3MzcyOGY0MzBlZi4uNmVmYjk4NzQ2NjJjMzAx
NzEzZjRiMTkzNTY0MWM5YTlkMzFiYmYzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTGlua0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtF
bGVtZW50LmNwcApAQCAtNjAsNiArNjAsNyBAQCBpbmxpbmUgSFRNTExpbmtFbGVtZW50OjpIVE1M
TGlua0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqCiAgICAg
LCBtX2NyZWF0ZWRCeVBhcnNlcihjcmVhdGVkQnlQYXJzZXIpCiAgICAgLCBtX2lzSW5TaGFkb3dU
cmVlKGZhbHNlKQogICAgICwgbV9wZW5kaW5nU2hlZXRUeXBlKE5vbmUpCisgICAgLCBtX3BlbmRp
bmdTaGVldERpc2FibGVkU3RhdHVzKFVuc2V0KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKGxp
bmtUYWcpKTsKIH0KQEAgLTgyLDEyICs4MywyOCBAQCBIVE1MTGlua0VsZW1lbnQ6On5IVE1MTGlu
a0VsZW1lbnQoKQogCiB2b2lkIEhUTUxMaW5rRWxlbWVudDo6c2V0RGlzYWJsZWQoYm9vbCBkaXNh
YmxlZCkKIHsKLSAgICBpZiAoIW1fc2hlZXQpCisgICAgaWYgKCFtX3NoZWV0KSB7CisgICAgICAg
IC8vIElmIHdlIGFyZSBpbiB0aGUgbWlkZGxlIG9mIGxvYWRpbmcgYSBzdHlsZXNoZWV0LCB3ZSBz
dG9yZSB0aGUgaW5mb3JtYXRpb24gZnJvbSB0aGlzIGNhbGwKKyAgICAgICAgLy8gYXMgaXQgaXMg
YSBjb21tb24gcGF0dGVybiB0byBkaXNhYmxlIC8gZW5hYmxlIHRoZSBzdHlsZXNoZWV0IHRocm91
Z2ggSlMgKHJlZ2FyZGxlc3Mgb2YKKyAgICAgICAgLy8gd2hldGhlciB0aGUgc2hlZXQgd2FzIGxv
YWRlZCkuCisgICAgICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NjUxNDAKKyAgICAgICAgaWYgKG1fcmVsQXR0cmlidXRlLm1faXNTdHlsZVNoZWV0ICYm
IG1fbG9hZGluZykKKyAgICAgICAgICAgIG1fcGVuZGluZ1NoZWV0RGlzYWJsZWRTdGF0dXMgPSBk
aXNhYmxlZCA/IERpc2FibGVkIDogRW5hYmxlZDsKICAgICAgICAgcmV0dXJuOworICAgIH0KIAog
ICAgIGJvb2wgd2FzRGlzYWJsZWQgPSBtX3NoZWV0LT5kaXNhYmxlZCgpOwotICAgIGlmICh3YXNE
aXNhYmxlZCA9PSBkaXNhYmxlZCkKKworICAgIGlmICh3YXNEaXNhYmxlZCA9PSBkaXNhYmxlZCkg
eworICAgICAgICBib29sIHdhc0VuYWJsZWRWaWFTY3JpcHQgPSBtX2lzRW5hYmxlZFZpYVNjcmlw
dDsKKyAgICAgICAgLy8gSWYgSlMgZm9yY2VzIHRoZSBzaGVldCB0byBiZSBlbmFibGVkLCB3ZSBu
ZWVkIHRvIGZvcmNlIGEgcmVjYWxjU3R5bGVTZWxlY3RvciBvcgorICAgICAgICAvLyB3ZSBtYXkg
bm90IGFwcGx5IHRoZSBzdHlsZXNoZWV0IChmb3IgZXhhbXBsZSBmb3IgYWx0ZXJuYXRlIHN0eWxl
c2hlZXQpLgorICAgICAgICBpZiAod2FzRW5hYmxlZFZpYVNjcmlwdCAhPSAhZGlzYWJsZWQpIHsK
KyAgICAgICAgICAgIG1faXNFbmFibGVkVmlhU2NyaXB0ID0gIWRpc2FibGVkOworICAgICAgICAg
ICAgZG9jdW1lbnQoKS0+c3R5bGVTZWxlY3RvckNoYW5nZWQoRGVmZXJSZWNhbGNTdHlsZSk7Cisg
ICAgICAgIH0KICAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIG1fc2hlZXQtPnNldERpc2Fi
bGVkKGRpc2FibGVkKTsKICAgICBtX2lzRW5hYmxlZFZpYVNjcmlwdCA9ICFkaXNhYmxlZDsKQEAg
LTM1NiwxMCArMzczLDIwIEBAIHZvaWQgSFRNTExpbmtFbGVtZW50OjpsaW5rTG9hZGluZ0Vycm9y
ZWQoKQogCiBib29sIEhUTUxMaW5rRWxlbWVudDo6c2hlZXRMb2FkZWQoKQogeworICAgIC8vIE1p
Z3JhdGUgdGhlIGRpc2FibGVkIGluZm9ybWF0aW9uIGJlZm9yZSByZW1vdmVQZW5kaW5nU2hlZXQg
aXMgY2FsbGVkCisgICAgLy8gYXMgaXQgd2lsbCBzdGFydCBhIHJlY2FsU3R5bGVTZWxlY3RvciB3
aGljaCBuZWVkcyB0aGlzIGluZm9ybWF0aW9uLgorICAgIGlmIChtX3BlbmRpbmdTaGVldERpc2Fi
bGVkU3RhdHVzICE9IFVuc2V0KSB7CisgICAgICAgIEFTU0VSVCghbV9sb2FkaW5nKTsKKyAgICAg
ICAgQVNTRVJUKG1fcmVsQXR0cmlidXRlLm1faXNTdHlsZVNoZWV0KTsKKyAgICAgICAgc2V0RGlz
YWJsZWQobV9wZW5kaW5nU2hlZXREaXNhYmxlZFN0YXR1cyA9PSBEaXNhYmxlZCk7CisgICAgICAg
IG1fcGVuZGluZ1NoZWV0RGlzYWJsZWRTdGF0dXMgPSBVbnNldDsKKyAgICB9CisKICAgICBpZiAo
IWlzTG9hZGluZygpKSB7CiAgICAgICAgIHJlbW92ZVBlbmRpbmdTaGVldCgpOwogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CisKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTQ0Miw3ICs0
NjksMTYgQEAgdm9pZCBIVE1MTGlua0VsZW1lbnQ6OnJlbW92ZVBlbmRpbmdTaGVldCgpCiAKIGJv
b2wgSFRNTExpbmtFbGVtZW50OjpkaXNhYmxlZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fc2hl
ZXQgJiYgbV9zaGVldC0+ZGlzYWJsZWQoKTsKKyAgICBpZiAobV9zaGVldCkKKyAgICAgICAgcmV0
dXJuIG1fc2hlZXQtPmRpc2FibGVkKCk7CisKKyAgICAvLyBGRiBkaXNhZ3JlZXMgd2l0aCB0aGUg
c3BlYyBhbmQgYWx3YXlzIGhhcyBhbiBhc3NvY2lhdGVkIHN0eWxlc2hlZXQgaWYgdGhlICdyZWwn
IGF0dHJpYnV0ZSBpbmRpY2F0ZXMgYQorICAgIC8vIHN0eWxlc2hlZXQgYW5kIGhyZWYgaXMgcHJv
dmlkZWQgKHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGUgcmVzb3VyY2UgbWF5IGJlIGluIGVycm9y
KS4gV2UgcmV0dXJuIG91cgorICAgIC8vIGNhY2hlZCBpbmZvcm1hdGlvbiB0byBiZSBjb25zaXN0
ZW50IHdpdGggRkYgYW5kIG91ciBmdXR1cmUgc2VsZiBoZXJlLgorICAgIGlmIChtX3BlbmRpbmdT
aGVldERpc2FibGVkU3RhdHVzICE9IFVuc2V0KQorICAgICAgICByZXR1cm4gbV9wZW5kaW5nU2hl
ZXREaXNhYmxlZFN0YXR1cyA9PSBEaXNhYmxlZDsKKworICAgIHJldHVybiBmYWxzZTsKIH0KIAog
RE9NU2V0dGFibGVUb2tlbkxpc3QqIEhUTUxMaW5rRWxlbWVudDo6c2l6ZXMoKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmgKaW5kZXggOGZlZGUwMmU1ZTdmOTJiNzQwZjg1
OTA5MTNlOGI3NTlhNmQxNTEzOC4uNzFmYzYwYzU0YzJmM2RlMGFjYjQzY2Y0ZWRmYzE3YjI1ZjJi
NDYzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oCkBAIC0xMDksOCArMTA5
LDExIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzRW5hYmxlZFZpYVNjcmlwdDsKICAgICBib29s
IG1fY3JlYXRlZEJ5UGFyc2VyOwogICAgIGJvb2wgbV9pc0luU2hhZG93VHJlZTsKLSAgICAKKwog
ICAgIFBlbmRpbmdTaGVldFR5cGUgbV9wZW5kaW5nU2hlZXRUeXBlOworCisgICAgZW51bSBQZW5k
aW5nU2hlZXREaXNhYmxlZFN0YXR1cyB7IFVuc2V0LCBEaXNhYmxlZCwgRW5hYmxlZCB9OworICAg
IFBlbmRpbmdTaGVldERpc2FibGVkU3RhdHVzIG1fcGVuZGluZ1NoZWV0RGlzYWJsZWRTdGF0dXM7
CiB9OwogCiB9IC8vbmFtZXNwYWNlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103326</attachid>
            <date>2011-08-08 19:29:24 -0700</date>
            <delta_ts>2011-08-10 18:15:39 -0700</delta_ts>
            <desc>Proposed fix 2: Less XHTML headers, more reusing m_isEnabledViaScript, more Alexey love?</desc>
            <filename>bug-65140-20110808192923.patch</filename>
            <type>text/plain</type>
            <size>25300</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTI2NTgKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAzOTZmNGJhNGFlOGU3YTMxOGE5ZjA5
MGFlOTA3ZDc5MGM4NDJmMzIyLi5hNzg3NWJmZjY0ZjAxZTZlOGZhZGMwNWE2ODJjNjBhMGMwNDA5
N2VkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTEtMDgtMDggIEp1bGllbiBDaGFmZnJhaXgg
IDxqY2hhZmZyYWl4QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUkVHUkVTU0lPTiAocjg0MzI3LXI4
NDMyOSk6IENTUyBzdHlsZXNoZWV0cyBmYWlsIHRvIGxvYWQgb24gd3d3LmZsYWdzdGFyLmNvbSBs
b2dpbiBwYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02NTE0MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vOTgzNTkwNT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvY3NzL2xpbmstZGlzYWJs
ZWQtYXR0ci1leHBlY3RlZC50eHQ6IFRoaXMgY2hhbmdlIGlzIGEgcHJvZ3Jlc3Npb24sIGJ1dCB3
ZSBhcmUgc3RpbGwKKyAgICAgICAgbm90IGhhbmRsaW5nIHVwZGF0ZXMgdG8gdGhlIHNlbGVjdGVk
IHN0eWxlIHNldCBwcm9wZXJseSAoYWxyZWFkeSBjb3ZlcmVkIGJ5IGJ1ZyA2MjQwNykuCisKKyAg
ICAgICAgKiBmYXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1maXJzdC1hbHRlcm5hdGUtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1maXJz
dC1hbHRlcm5hdGUtb24tbG9hZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
Y3NzL3N0eWxlc2hlZXQtZW5hYmxlLWZpcnN0LWFsdGVybmF0ZS1vbi1sb2FkLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxlLWZpcnN0LWFsdGVybmF0ZS5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1zZWNvbmQt
YWx0ZXJuYXRlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3Mvc3R5bGVz
aGVldC1lbmFibGUtc2Vjb25kLWFsdGVybmF0ZS1vbi1sb2FkLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZmFzdC9jc3Mvc3R5bGVzaGVldC1lbmFibGUtc2Vjb25kLWFsdGVybmF0ZS1v
bi1sb2FkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxl
LXNlY29uZC1hbHRlcm5hdGUuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9jc3Mv
bGluay1jc3MtZGlzYWJsZWQtdmFsdWUtd2l0aC1zbG93LWxvYWRpbmctc2hlZXQtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2Nzcy9saW5rLWNzcy1kaXNhYmxlZC12
YWx1ZS13aXRoLXNsb3ctbG9hZGluZy1zaGVldC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL2Nzcy9yZXNvdXJjZXMvbGluay1jc3MtZGlzYWJsZWQtdmFsdWUtd2l0aC1zbG93LWxv
YWRpbmctc2hlZXQuanM6IEFkZGVkLgorICAgICAgICAob25TaGVldExvYWRlZCk6CisgICAgICAg
ICh0ZXN0V2hlbkxvYWRlZCk6CisgICAgICAgICogaHR0cC90ZXN0cy9jc3MvcmVzb3VyY2VzL3Ns
b3ctbG9hZGluZy1zaGVldC5waHA6IEFkZGVkLgorICAgICAgICBUaG9zZSBhcmUgYSB2YXJpYXRp
b24gb24gdGhlIHNhbWUgdGhlbWU6IHdlIGRpc2FibGUgc29tZSBzdHlsZXNoZWV0IGFuZCBlbmFi
bGUgb3RoZXJzLAorICAgICAgICBlaXRoZXIgZGlyZWN0bHkgb3IgbGF0ZXIuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6IE1ha2VkIGxpbmstY3Nz
LWRpc2FibGVkLXZhbHVlLXdpdGgtc2xvdy1sb2FkaW5nLXNoZWV0LmpzIGFzCisgICAgICAgIFNM
T1csIG5vdCBzdXJlIHdoeSBhcyBpdCBzaG91bGQgcnVuIGZhc3QgZW5vdWdoIGFuZCBkb2VzIG5v
dCB0aW1lIG91dCBpZiB5b3UgcnVuIGl0IG1hbnVhbGx5LgorCiAyMDExLTA4LTA4ICBBZGFtIEJh
cnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVGhpcyBzaG91bGQgYWN0dWFsbHkg
YmUgdGhlIGNvcnJlY3QgZml4IGZvcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3Mv
bGluay1kaXNhYmxlZC1hdHRyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL2xp
bmstZGlzYWJsZWQtYXR0ci1leHBlY3RlZC50eHQKaW5kZXggNTcxYWNiMjhkNzcyNjYwZmMyYWRi
NGMyMmZhODIwZmM1NmE2ZGZjZS4uZjQxMzcwYTEyNWY0Mjk4MDMwZDViNjQxMGY1OTVjNWNhMTMx
M2NkOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvbGluay1kaXNhYmxlZC1hdHRy
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9saW5rLWRpc2FibGVkLWF0
dHItZXhwZWN0ZWQudHh0CkBAIC0xNSwxMSArMTUsMTEgQEAgUEFTUyBnZXRDb21wdXRlZFN0eWxl
KGNvbnNvbGUpLndoaXRlU3BhY2UgaXMgJ3ByZS13cmFwJwogYWx0c2hlZXQKIEZBSUwgbGluay5k
aXNhYmxlZCBzaG91bGQgYmUgdHJ1ZS4gV2FzIGZhbHNlLgogUEFTUyBsaW5rLnNoZWV0IGlzIG5v
bi1udWxsLgotRkFJTCBnZXRDb21wdXRlZFN0eWxlKGNvbnNvbGUpLmJhY2tncm91bmRDb2xvciBz
aG91bGQgYmUgcmdiKDAsIDEyOCwgMCkuIFdhcyByZ2JhKDAsIDAsIDAsIDApLgorUEFTUyBnZXRD
b21wdXRlZFN0eWxlKGNvbnNvbGUpLmJhY2tncm91bmRDb2xvciBpcyAncmdiKDAsIDEyOCwgMCkn
CiBGQUlMIGxpbmsuZGlzYWJsZWQgc2hvdWxkIGJlIHRydWUuIFdhcyBmYWxzZS4KLVBBU1MgZ2V0
Q29tcHV0ZWRTdHlsZShjb25zb2xlKS5iYWNrZ3JvdW5kQ29sb3IgaXMgb3JpZ2luYWxCRworRkFJ
TCBnZXRDb21wdXRlZFN0eWxlKGNvbnNvbGUpLmJhY2tncm91bmRDb2xvciBzaG91bGQgYmUgcmdi
YSgwLCAwLCAwLCAwKS4gV2FzIHJnYigwLCAxMjgsIDApLgogUEFTUyBsaW5rLmRpc2FibGVkIGlz
IGZhbHNlCi1GQUlMIGdldENvbXB1dGVkU3R5bGUoY29uc29sZSkuYmFja2dyb3VuZENvbG9yIHNo
b3VsZCBiZSByZ2IoMCwgMTI4LCAwKS4gV2FzIHJnYmEoMCwgMCwgMCwgMCkuCitQQVNTIGdldENv
bXB1dGVkU3R5bGUoY29uc29sZSkuYmFja2dyb3VuZENvbG9yIGlzICdyZ2IoMCwgMTI4LCAwKScK
IFBBU1MgZ2V0Q29tcHV0ZWRTdHlsZShjb25zb2xlKS5iYWNrZ3JvdW5kQ29sb3IgaXMgb3JpZ2lu
YWxCRwogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1maXJzdC1hbHRlcm5hdGUtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGVzaGVldC1lbmFibGUtZmlyc3QtYWx0
ZXJuYXRlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMDUyOGZiNzU4YTkxZDdmMzA2ODIwNzEx
MTUwZjk4YTVkMTcwMmM0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mv
c3R5bGVzaGVldC1lbmFibGUtZmlyc3QtYWx0ZXJuYXRlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDUgQEAKK1Rlc3QgZm9yIDY1MTQwOiBSRUdSRVNTSU9OIChyODQzMjctcjg0MzI5KTogQ1NTIHN0
eWxlc2hlZXRzIGZhaWwgdG8gbG9hZCBvbiB3d3cuZmxhZ3N0YXIuY29tIGxvZ2luIHBhZ2UKKwor
VGhpcyB0ZXN0IFBBU1NFRCBpZiBQQVNTRUQgaXMgd3JpdHRlbiBiZWxvdyAoYWx0ZXJuYXRpdmVs
eSB0aGUgbmV4dCBsaW5lIHNob3VsZCBoYXZlIGEgR1JFRU4gYmFja2dyb3VuZCkuCisKK1BBU1NF
RApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGVzaGVldC1lbmFibGUtZmly
c3QtYWx0ZXJuYXRlLW9uLWxvYWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mv
c3R5bGVzaGVldC1lbmFibGUtZmlyc3QtYWx0ZXJuYXRlLW9uLWxvYWQtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmMwNTI4ZmI3NThhOTFkN2YzMDY4MjA3MTExNTBmOThhNWQxNzAyYzQKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1maXJz
dC1hbHRlcm5hdGUtb24tbG9hZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1IEBACitUZXN0IGZv
ciA2NTE0MDogUkVHUkVTU0lPTiAocjg0MzI3LXI4NDMyOSk6IENTUyBzdHlsZXNoZWV0cyBmYWls
IHRvIGxvYWQgb24gd3d3LmZsYWdzdGFyLmNvbSBsb2dpbiBwYWdlCisKK1RoaXMgdGVzdCBQQVNT
RUQgaWYgUEFTU0VEIGlzIHdyaXR0ZW4gYmVsb3cgKGFsdGVybmF0aXZlbHkgdGhlIG5leHQgbGlu
ZSBzaG91bGQgaGF2ZSBhIEdSRUVOIGJhY2tncm91bmQpLgorCitQQVNTRUQKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxlLWZpcnN0LWFsdGVybmF0ZS1v
bi1sb2FkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1maXJz
dC1hbHRlcm5hdGUtb24tbG9hZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEyOTVlNDJkYzI0ZjQxMjlhYTNh
Yjc5MjdmNmVhOTY0NzgxZTBiZGQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1maXJzdC1hbHRlcm5hdGUtb24tbG9hZC5odG1sCkBAIC0w
LDAgKzEsMzEgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VO
Ij4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNl
cy9yZWQuY3NzIiBtZWRpYT0iYWxsIiB0aXRsZT0iRGVmYXVsdCBTdHlsZSBTaGVldCIgdHlwZT0i
dGV4dC9jc3MiIC8+Cis8bGluayByZWw9ImFsdGVybmF0ZSBzdHlsZXNoZWV0IiBocmVmPSJyZXNv
dXJjZXMvZ3JlZW4uY3NzIiBtZWRpYT0iYWxsIiB0aXRsZT0iZ3JlZW4iIHR5cGU9InRleHQvY3Nz
IiAvPgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKKworICAgIGZ1bmN0aW9uIHRlc3QoKSB7CisgICAgICAgIHZhciByZWQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGluayIpWzBdOworICAgICAgICByZWQuZGlzYWJsZWQg
PSB0cnVlOworICAgICAgICB2YXIgZ3JlZW4gPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgibGluayIpWzFdOworICAgICAgICBncmVlbi5kaXNhYmxlZCA9IHRydWU7CisgICAgICAgIGdy
ZWVuLmRpc2FibGVkID0gZmFsc2U7CisKKyAgICAgICAgdmFyIGNvbnNvbGUgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiY29uc29sZSIpOworICAgICAgICBpZiAoZ2V0Q29tcHV0ZWRTdHlsZShj
b25zb2xlLCBudWxsKS5iYWNrZ3JvdW5kQ29sb3IgPT09ICJyZ2IoMCwgMTI4LCAwKSIpCisgICAg
ICAgICAgICBjb25zb2xlLmlubmVySFRNTCA9ICJQQVNTRUQiOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICBjb25zb2xlLmlubmVySFRNTCA9ICJGQUlMRUQsIGJhY2tncm91bmQgPSAiICsgZ2V0
Q29tcHV0ZWRTdHlsZShjb25zb2xlLCBudWxsKS5iYWNrZ3JvdW5kQ29sb3I7CisgICAgfQorICAg
IHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgdGVzdCwgZmFsc2UpOworPC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRlc3QgZm9yIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTE0MCI+NjUxNDA8L2E+OiBSRUdSRVNTSU9OIChyODQz
Mjctcjg0MzI5KTogQ1NTIHN0eWxlc2hlZXRzIGZhaWwgdG8gbG9hZCBvbiB3d3cuZmxhZ3N0YXIu
Y29tIGxvZ2luIHBhZ2U8L3A+Cis8cD5UaGlzIHRlc3QgUEFTU0VEIGlmIFBBU1NFRCBpcyB3cml0
dGVuIGJlbG93IChhbHRlcm5hdGl2ZWx5IHRoZSBuZXh0IGxpbmUgc2hvdWxkIGhhdmUgYSBHUkVF
TiBiYWNrZ3JvdW5kKS48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj5GQUlMRUQ8L2Rpdj4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlc2hlZXQt
ZW5hYmxlLWZpcnN0LWFsdGVybmF0ZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGVz
aGVldC1lbmFibGUtZmlyc3QtYWx0ZXJuYXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjU1OTA2M2Y5MWMz
MjBjYjk3Yjk0NDFhYWMzZDYxZjU1MjJlMTUzMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxlLWZpcnN0LWFsdGVybmF0ZS5odG1sCkBAIC0w
LDAgKzEsMzEgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VO
Ij4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNl
cy9yZWQuY3NzIiBtZWRpYT0iYWxsIiB0aXRsZT0iRGVmYXVsdCBTdHlsZSBTaGVldCIgdHlwZT0i
dGV4dC9jc3MiIC8+Cis8bGluayByZWw9ImFsdGVybmF0ZSBzdHlsZXNoZWV0IiBocmVmPSJyZXNv
dXJjZXMvZ3JlZW4uY3NzIiBtZWRpYT0iYWxsIiB0aXRsZT0iZ3JlZW4iIHR5cGU9InRleHQvY3Nz
IiAvPgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKKworICAgIHZhciByZWQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGlu
ayIpWzBdOworICAgIHJlZC5kaXNhYmxlZCA9IHRydWU7CisgICAgdmFyIGdyZWVuID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxpbmsiKVsxXTsKKyAgICBncmVlbi5kaXNhYmxlZCA9
IHRydWU7CisgICAgZ3JlZW4uZGlzYWJsZWQgPSBmYWxzZTsKKworICAgIGZ1bmN0aW9uIHRlc3Qo
KSB7CisgICAgICAgIHZhciBjb25zb2xlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNv
bGUiKTsKKyAgICAgICAgaWYgKGdldENvbXB1dGVkU3R5bGUoY29uc29sZSwgbnVsbCkuYmFja2dy
b3VuZENvbG9yID09PSAicmdiKDAsIDEyOCwgMCkiKQorICAgICAgICAgICAgY29uc29sZS5pbm5l
ckhUTUwgPSAiUEFTU0VEIjsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY29uc29sZS5pbm5l
ckhUTUwgPSAiRkFJTEVELCBiYWNrZ3JvdW5kID0gIiArIGdldENvbXB1dGVkU3R5bGUoY29uc29s
ZSwgbnVsbCkuYmFja2dyb3VuZENvbG9yOworICAgIH0KKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0
ZW5lcigibG9hZCIsIHRlc3QsIGZhbHNlKTsKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
cD5UZXN0IGZvciA8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NjUxNDAiPjY1MTQwPC9hPjogUkVHUkVTU0lPTiAocjg0MzI3LXI4NDMyOSk6IENTUyBzdHls
ZXNoZWV0cyBmYWlsIHRvIGxvYWQgb24gd3d3LmZsYWdzdGFyLmNvbSBsb2dpbiBwYWdlPC9wPgor
PHA+VGhpcyB0ZXN0IFBBU1NFRCBpZiBQQVNTRUQgaXMgd3JpdHRlbiBiZWxvdyAoYWx0ZXJuYXRp
dmVseSB0aGUgbmV4dCBsaW5lIHNob3VsZCBoYXZlIGEgR1JFRU4gYmFja2dyb3VuZCkuPC9wPgor
PGRpdiBpZD0iY29uc29sZSI+RkFJTEVEPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1zZWNvbmQtYWx0ZXJu
YXRlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxl
LXNlY29uZC1hbHRlcm5hdGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMwNTI4ZmI3NThhOTFk
N2YzMDY4MjA3MTExNTBmOThhNWQxNzAyYzQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1zZWNvbmQtYWx0ZXJuYXRlLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDUgQEAKK1Rlc3QgZm9yIDY1MTQwOiBSRUdSRVNTSU9OIChyODQzMjctcjg0
MzI5KTogQ1NTIHN0eWxlc2hlZXRzIGZhaWwgdG8gbG9hZCBvbiB3d3cuZmxhZ3N0YXIuY29tIGxv
Z2luIHBhZ2UKKworVGhpcyB0ZXN0IFBBU1NFRCBpZiBQQVNTRUQgaXMgd3JpdHRlbiBiZWxvdyAo
YWx0ZXJuYXRpdmVseSB0aGUgbmV4dCBsaW5lIHNob3VsZCBoYXZlIGEgR1JFRU4gYmFja2dyb3Vu
ZCkuCisKK1BBU1NFRApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGVzaGVl
dC1lbmFibGUtc2Vjb25kLWFsdGVybmF0ZS1vbi1sb2FkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2Zhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxlLXNlY29uZC1hbHRlcm5hdGUtb24tbG9hZC1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzA1MjhmYjc1OGE5MWQ3ZjMwNjgyMDcxMTE1MGY5OGE1
ZDE3MDJjNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlc2hl
ZXQtZW5hYmxlLXNlY29uZC1hbHRlcm5hdGUtb24tbG9hZC1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSw1IEBACitUZXN0IGZvciA2NTE0MDogUkVHUkVTU0lPTiAocjg0MzI3LXI4NDMyOSk6IENTUyBz
dHlsZXNoZWV0cyBmYWlsIHRvIGxvYWQgb24gd3d3LmZsYWdzdGFyLmNvbSBsb2dpbiBwYWdlCisK
K1RoaXMgdGVzdCBQQVNTRUQgaWYgUEFTU0VEIGlzIHdyaXR0ZW4gYmVsb3cgKGFsdGVybmF0aXZl
bHkgdGhlIG5leHQgbGluZSBzaG91bGQgaGF2ZSBhIEdSRUVOIGJhY2tncm91bmQpLgorCitQQVNT
RUQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxlLXNl
Y29uZC1hbHRlcm5hdGUtb24tbG9hZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGVz
aGVldC1lbmFibGUtc2Vjb25kLWFsdGVybmF0ZS1vbi1sb2FkLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2M4
MDg2ZTBiNGEyN2M3ZmZkODFhMzNjMGQwMjUzMTU1MTQyYzY2ZAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxlLXNlY29uZC1hbHRlcm5hdGUt
b24tbG9hZC5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8v
SUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9InJlc291cmNlcy9yZWQuY3NzIiBtZWRpYT0iYWxsIiB0aXRsZT0iRGVmYXVsdCBT
dHlsZSBTaGVldCIgdHlwZT0idGV4dC9jc3MiIC8+Cis8bGluayByZWw9ImFsdGVybmF0ZSBzdHls
ZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvcmVkLmNzcyIgbWVkaWE9ImFsbCIgdGl0bGU9ImdyZWVu
IiB0eXBlPSJ0ZXh0L2NzcyIgLz4KKzxsaW5rIHJlbD0iYWx0ZXJuYXRlIHN0eWxlc2hlZXQiIGhy
ZWY9InJlc291cmNlcy9ncmVlbi5jc3MiIG1lZGlhPSJhbGwiIHRpdGxlPSJncmVlbiIgdHlwZT0i
dGV4dC9jc3MiIC8+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOworCisgICAgZnVuY3Rpb24gdGVzdCgpIHsKKyAgICAgICAgdmFyIHJlZCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJsaW5rIilbMF07CisgICAgICAgIHJlZC5k
aXNhYmxlZCA9IHRydWU7CisgICAgICAgIHZhciBncmVlbiA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJsaW5rIilbMl07CisgICAgICAgIGdyZWVuLmRpc2FibGVkID0gZmFsc2U7CisK
KyAgICAgICAgdmFyIGNvbnNvbGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIp
OworICAgICAgICBpZiAoZ2V0Q29tcHV0ZWRTdHlsZShjb25zb2xlLCBudWxsKS5iYWNrZ3JvdW5k
Q29sb3IgPT09ICJyZ2IoMCwgMTI4LCAwKSIpCisgICAgICAgICAgICBjb25zb2xlLmlubmVySFRN
TCA9ICJQQVNTRUQiOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjb25zb2xlLmlubmVySFRN
TCA9ICJGQUlMRUQsIGJhY2tncm91bmQgPSAiICsgZ2V0Q29tcHV0ZWRTdHlsZShjb25zb2xlLCBu
dWxsKS5iYWNrZ3JvdW5kQ29sb3I7CisgICAgfQorICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVy
KCJsb2FkIiwgdGVzdCwgZmFsc2UpOworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRl
c3QgZm9yIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
NTE0MCI+NjUxNDA8L2E+OiBSRUdSRVNTSU9OIChyODQzMjctcjg0MzI5KTogQ1NTIHN0eWxlc2hl
ZXRzIGZhaWwgdG8gbG9hZCBvbiB3d3cuZmxhZ3N0YXIuY29tIGxvZ2luIHBhZ2U8L3A+Cis8cD5U
aGlzIHRlc3QgUEFTU0VEIGlmIFBBU1NFRCBpcyB3cml0dGVuIGJlbG93IChhbHRlcm5hdGl2ZWx5
IHRoZSBuZXh0IGxpbmUgc2hvdWxkIGhhdmUgYSBHUkVFTiBiYWNrZ3JvdW5kKS48L3A+Cis8ZGl2
IGlkPSJjb25zb2xlIj5GQUlMRUQ8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxlLXNlY29uZC1hbHRlcm5hdGUu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxlLXNlY29uZC1hbHRl
cm5hdGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMGU1YzJjMjFkZDZmNWI1NTAwNTEzMjI0MDllMzM1Nzc3
NGY4YTZkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGVzaGVl
dC1lbmFibGUtc2Vjb25kLWFsdGVybmF0ZS5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhRE9DVFlQ
RSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy9yZWQuY3NzIiBtZWRpYT0iYWxs
IiB0aXRsZT0iRGVmYXVsdCBTdHlsZSBTaGVldCIgdHlwZT0idGV4dC9jc3MiIC8+Cis8bGluayBy
ZWw9ImFsdGVybmF0ZSBzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvcmVkLmNzcyIgbWVkaWE9
ImFsbCIgdGl0bGU9ImdyZWVuIiB0eXBlPSJ0ZXh0L2NzcyIgLz4KKzxsaW5rIHJlbD0iYWx0ZXJu
YXRlIHN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy9ncmVlbi5jc3MiIG1lZGlhPSJhbGwiIHRp
dGxlPSJncmVlbiIgdHlwZT0idGV4dC9jc3MiIC8+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNj
cmlwdCI+CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgdmFyIHJlZCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJsaW5rIilbMF07CisgICAgcmVkLmRpc2FibGVkID0gdHJ1
ZTsKKyAgICB2YXIgZ3JlZW4gPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGluayIp
WzJdOworICAgIGdyZWVuLmRpc2FibGVkID0gZmFsc2U7CisKKyAgICBmdW5jdGlvbiB0ZXN0KCkg
eworICAgICAgICB2YXIgY29uc29sZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xl
Iik7CisgICAgICAgIGlmIChnZXRDb21wdXRlZFN0eWxlKGNvbnNvbGUsIG51bGwpLmJhY2tncm91
bmRDb2xvciA9PT0gInJnYigwLCAxMjgsIDApIikKKyAgICAgICAgICAgIGNvbnNvbGUuaW5uZXJI
VE1MID0gIlBBU1NFRCI7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvbnNvbGUuaW5uZXJI
VE1MID0gIkZBSUxFRCwgYmFja2dyb3VuZCA9ICIgKyBnZXRDb21wdXRlZFN0eWxlKGNvbnNvbGUs
IG51bGwpLmJhY2tncm91bmRDb2xvcjsKKyAgICB9CisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVu
ZXIoImxvYWQiLCB0ZXN0LCBmYWxzZSk7Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHA+
VGVzdCBmb3IgPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTY1MTQwIj42NTE0MDwvYT46IFJFR1JFU1NJT04gKHI4NDMyNy1yODQzMjkpOiBDU1Mgc3R5bGVz
aGVldHMgZmFpbCB0byBsb2FkIG9uIHd3dy5mbGFnc3Rhci5jb20gbG9naW4gcGFnZTwvcD4KKzxw
PlRoaXMgdGVzdCBQQVNTRUQgaWYgUEFTU0VEIGlzIHdyaXR0ZW4gYmVsb3cgKGFsdGVybmF0aXZl
bHkgdGhlIG5leHQgbGluZSBzaG91bGQgaGF2ZSBhIEdSRUVOIGJhY2tncm91bmQpLjwvcD4KKzxk
aXYgaWQ9ImNvbnNvbGUiPkZBSUxFRDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jc3MvbGluay1jc3MtZGlzYWJsZWQtdmFsdWUtd2l0
aC1zbG93LWxvYWRpbmctc2hlZXQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9jc3MvbGluay1jc3MtZGlzYWJsZWQtdmFsdWUtd2l0aC1zbG93LWxvYWRpbmctc2hlZXQtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYxNDAwYWFhMGVjMGE0ZTIwY2ZkNzZiMGEzNTIwYjkxNzRl
MzY1NDgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nzcy9saW5r
LWNzcy1kaXNhYmxlZC12YWx1ZS13aXRoLXNsb3ctbG9hZGluZy1zaGVldC1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwxOSBAQAorVGVzdCB0aGF0IEhUTUxMaW5rRWxlbWVudCdzIGRpc2FibGVkIGF0
dHJpYnV0ZSBpcyBwcm9wZXJseSBjYWNoZWQgd2hpbGUgc2V0IHdoZW4gbG9hZGluZyBhIHN0eWxl
c2hlZXQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitUZXN0aW5nIHZhbHVlIG9m
ICdkaXNhYmxlZCcgcHJpb3IgdG8gbG9hZCBqdXN0IGFmdGVyIHNldHRpbmcgdGhlbQorUEFTUyBt
YWluU2hlZXRMaW5rLnNoZWV0IGlzIG5vbi1udWxsLgorUEFTUyBhbHRlcm5hdGVTaGVldExpbmsu
c2hlZXQgaXMgbnVsbAorUEFTUyBtYWluU2hlZXRMaW5rLmRpc2FibGVkIGlzIHRydWUKK1BBU1Mg
YWx0ZXJuYXRlU2hlZXRMaW5rLmRpc2FibGVkIGlzIGZhbHNlCitUZXN0aW5nIHRoZSB2YWx1ZXMg
d2hlbiB0aGUgYWx0ZXJuYXRlIHNoZWV0IGlzIGxvYWRlZCAoYXMgdGhpcyBpcyB0aGUgb25seSBv
bmUgdGhhdCBoYXMgc2hlZXQoKSA9PT0gbnVsbCkKK1BBU1MgbWFpblNoZWV0TGluay5zaGVldCBp
cyBub24tbnVsbC4KK1BBU1MgYWx0ZXJuYXRlU2hlZXRMaW5rLnNoZWV0IGlzIG5vbi1udWxsLgor
UEFTUyBtYWluU2hlZXRMaW5rLmRpc2FibGVkIGlzIHRydWUKK1BBU1MgYWx0ZXJuYXRlU2hlZXRM
aW5rLmRpc2FibGVkIGlzIGZhbHNlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jc3Mv
bGluay1jc3MtZGlzYWJsZWQtdmFsdWUtd2l0aC1zbG93LWxvYWRpbmctc2hlZXQuaHRtbCBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvY3NzL2xpbmstY3NzLWRpc2FibGVkLXZhbHVlLXdpdGgtc2xv
dy1sb2FkaW5nLXNoZWV0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDdmZjJjY2NhMWI0ZmUyMWVmMWQxMjUx
OTVhNjYyZmNmYjI4NjYwYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvY3NzL2xpbmstY3NzLWRpc2FibGVkLXZhbHVlLXdpdGgtc2xvdy1sb2FkaW5nLXNoZWV0Lmh0
bWwKQEAgLTAsMCArMSwxNCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQg
SFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
cmVzb3VyY2VzL3Nsb3ctbG9hZGluZy1zaGVldC5waHA/Y29sb3I9cmVkIiBtZWRpYT0iYWxsIiB0
aXRsZT0iRGVmYXVsdCBTdHlsZSBTaGVldCIgdHlwZT0idGV4dC9jc3MiIC8+Cis8bGluayByZWw9
ImFsdGVybmF0ZSBzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvc2xvdy1sb2FkaW5nLXNoZWV0
LnBocD9jb2xvcj1ncmVlbiIgbWVkaWE9ImFsbCIgdGl0bGU9ImdyZWVuIiB0eXBlPSJ0ZXh0L2Nz
cyIgLz4KKzxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9saW5rLWNzcy1kaXNh
YmxlZC12YWx1ZS13aXRoLXNsb3ctbG9hZGluZy1zaGVldC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nzcy9yZXNv
dXJjZXMvbGluay1jc3MtZGlzYWJsZWQtdmFsdWUtd2l0aC1zbG93LWxvYWRpbmctc2hlZXQuanMg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nzcy9yZXNvdXJjZXMvbGluay1jc3MtZGlzYWJsZWQt
dmFsdWUtd2l0aC1zbG93LWxvYWRpbmctc2hlZXQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDU4OWYyNzM2YTY0
NDg5NTU1NGU5ZDA2ZDgwZmU1YjlhODk5N2ZmMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvY3NzL3Jlc291cmNlcy9saW5rLWNzcy1kaXNhYmxlZC12YWx1ZS13aXRo
LXNsb3ctbG9hZGluZy1zaGVldC5qcwpAQCAtMCwwICsxLDQ1IEBACitkZXNjcmlwdGlvbigiVGVz
dCB0aGF0IEhUTUxMaW5rRWxlbWVudCdzIGRpc2FibGVkIGF0dHJpYnV0ZSBpcyBwcm9wZXJseSBj
YWNoZWQgd2hpbGUgc2V0IHdoZW4gbG9hZGluZyBhIHN0eWxlc2hlZXQuIik7CisKK2lmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVu
dGlsRG9uZSgpOworCit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKK21haW5TaGVldExp
bmsgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGluayIpWzBdOworYWx0ZXJuYXRl
U2hlZXRMaW5rID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxpbmsiKVsxXTsKKwor
bWFpblNoZWV0TGluay5kaXNhYmxlZCA9IHRydWU7CithbHRlcm5hdGVTaGVldExpbmsuZGlzYWJs
ZWQgPSBmYWxzZTsKKworZGVidWcoIlRlc3RpbmcgdmFsdWUgb2YgJ2Rpc2FibGVkJyBwcmlvciB0
byBsb2FkIGp1c3QgYWZ0ZXIgc2V0dGluZyB0aGVtIik7CitzaG91bGRCZU5vbk51bGwoIm1haW5T
aGVldExpbmsuc2hlZXQiKTsKK3Nob3VsZEJlTnVsbCgiYWx0ZXJuYXRlU2hlZXRMaW5rLnNoZWV0
Iik7CitzaG91bGRCZVRydWUoIm1haW5TaGVldExpbmsuZGlzYWJsZWQiLCB0cnVlKTsKK3Nob3Vs
ZEJlRmFsc2UoImFsdGVybmF0ZVNoZWV0TGluay5kaXNhYmxlZCIpOworCitkZWJ1ZygiVGVzdGlu
ZyB0aGUgdmFsdWVzIHdoZW4gdGhlIGFsdGVybmF0ZSBzaGVldCBpcyBsb2FkZWQgKGFzIHRoaXMg
aXMgdGhlIG9ubHkgb25lIHRoYXQgaGFzIHNoZWV0KCkgPT09IG51bGwpIik7CisKK2Z1bmN0aW9u
IG9uU2hlZXRMb2FkZWQoZiwgZWxlbSwgbWF4dGltZSkgeworICAgIGlmIChlbGVtLnNoZWV0IHx8
IG1heHRpbWUgPD0gMCkKKyAgICAgICAgZigpOworICAgIGVsc2UKKyAgICAgICAgc2V0VGltZW91
dChmdW5jdGlvbiAoKSB7IG9uU2hlZXRMb2FkZWQoZiwgZWxlbSwgbWF4dGltZSAtIDI1KTt9LCAy
NSk7Cit9CisKK2Z1bmN0aW9uIHRlc3RXaGVuTG9hZGVkKCkgeworICAgICAgICAvLyBUaG9zZSBu
ZXh0IDIgbGluZXMgYXJlIGEgc2FuaXR5IGNoZWNrLgorICAgICAgICAvLyBJZiB0aGUgc2Vjb25k
IGNoZWNrIGZhaWxzLCBpdCBpcyBsaWtlbHkgdGhhdCB0aGUgdGVzdCB0aW1lZCBvdXQgYW5kIHRo
dXMKKyAgICAgICAgLy8geW91IGNhbiBkaXNjYXJkIHRoZSByZXN0IG9mIHJlc3VsdHMgYXMgaXQg
aXMgbm90IHRlc3Rpbmcgd2hhdCB3ZSB3YW50CisgICAgICAgIC8vIChuYW1lbHkgdGhhdCB0aGUg
ZGlzYWJsZWQgdmFsdWUgaXMgcGFzc2VkIHRvIHRoZSBmaW5hbCBzaGVldCkuCisgICAgICAgIHNo
b3VsZEJlTm9uTnVsbCgibWFpblNoZWV0TGluay5zaGVldCIpOworICAgICAgICBzaG91bGRCZU5v
bk51bGwoImFsdGVybmF0ZVNoZWV0TGluay5zaGVldCIpOworCisgICAgICAgIHNob3VsZEJlVHJ1
ZSgibWFpblNoZWV0TGluay5kaXNhYmxlZCIpOworICAgICAgICBzaG91bGRCZUZhbHNlKCJhbHRl
cm5hdGVTaGVldExpbmsuZGlzYWJsZWQiKTsKKworICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKK30K
Kworb25TaGVldExvYWRlZCh0ZXN0V2hlbkxvYWRlZCwgYWx0ZXJuYXRlU2hlZXRMaW5rLCA1MDAp
OworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvY3NzL3Jlc291cmNlcy9zbG93LWxvYWRpbmctc2hlZXQucGhwIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9jc3MvcmVzb3VyY2VzL3Nsb3ctbG9hZGluZy1zaGVldC5waHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMjg5MzdkNDJhZjgwMzA1YmU4YzM4Y2M2ZjZlOWYwMmYwMGJmNmRlOQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY3NzL3Jlc291cmNlcy9zbG93
LWxvYWRpbmctc2hlZXQucGhwCkBAIC0wLDAgKzEsMTUgQEAKKzw/cGhwCisvLyBXZSBzbGVlcCBo
ZXJlIHNvIHRoYXQgd2UgYXJlIGhhdmUgZW5vdWdoIHRpbWUgdG8gdGVzdCB0aGUgZGlmZmVyZW50
IGF0dHJpYnV0ZXMgYmVmb3JlIHRoZSBzdHlsZXNoZWV0IGlzIGZ1bGx5IGxvYWRlZC4KK3VzbGVl
cCgxMDApOworCitoZWFkZXIoIkV4cGlyZXM6IFRodSwgMDEgRGVjIDIwMDMgMTY6MDA6MDAgR01U
Iik7CitoZWFkZXIoIkNhY2hlLUNvbnRyb2w6IG5vLWNhY2hlLCBuby1zdG9yZSwgbXVzdC1yZXZh
bGlkYXRlIik7CitoZWFkZXIoIlByYWdtYTogbm8tY2FjaGUiKTsKK2hlYWRlcigiQ29udGVudC1U
eXBlOiB0ZXh0L2NzcyIpOworCiskY29sb3IgPSAkX0dFVFsnY29sb3InXTsKKworZWNobyAiaDEg
eyBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3IgfVxuIjsKK29iX2ZsdXNoKCk7CitmbHVzaCgpOwor
Pz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0
YXRpb25zLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRp
b25zLnR4dAppbmRleCA5YjkwNTU1MjNjODY0MDU5Zjc0M2ZhY2Q3NDVhYTBlYmU5YjI4YzVlLi5m
OWQwZTRjMTJmYjE5M2JjOTcwOTBiMDMyNGQxZmExMzE5MDNlNDA1IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKKysrIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CkBAIC02NCw2
ICs2NCw4IEBAIEJVR1dLNjQ0OTggU0xPVyBERUJVRyA6IGZhc3QvZW5jb2RpbmcvcGFyc2VyLXRl
c3RzLTQwLmh0bWwgPSBQQVNTCiBCVUdXSzY0NTAyIFNMT1cgREVCVUcgOiBmYXN0L2Zvcm1zL2Zv
cm0tYXNzb2NpYXRlZC1lbGVtZW50LWNyYXNoMy5odG1sID0gUEFTUwogV09OVEZJWCBTTE9XIDog
ZmFzdC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1jbG9uZS1yZWFsbHktZGVlcC1hcnJh
eS5odG1sID0gUEFTUwogCitCVUdXSzY1MTQwIFNMT1c6IGh0dHAvdGVzdHMvY3NzL2xpbmstY3Nz
LWRpc2FibGVkLXZhbHVlLXdpdGgtc2xvdy1sb2FkaW5nLXNoZWV0Lmh0bWwgPSBQQVNTCisKIC8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCiAvLyBTS0lQUEVEIFRFU1RTCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDA1
M2EwYTU2ZDcyMjRiYjU0NTEwMWY0NDFhOWQxZjcwZGE4ZGM2YmUuLmYxNDlkNjBmZjA5OGM0ZmZk
MzE4ZDgxZTI5YzlmODg2OTY4OTUzODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MSBAQAorMjAx
MS0wOC0wOCAgSnVsaWVuIENoYWZmcmFpeCAgPGpjaGFmZnJhaXhAd2Via2l0Lm9yZz4KKworICAg
ICAgICBSRUdSRVNTSU9OIChyODQzMjctcjg0MzI5KTogQ1NTIHN0eWxlc2hlZXRzIGZhaWwgdG8g
bG9hZCBvbiB3d3cuZmxhZ3N0YXIuY29tIGxvZ2luIHBhZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1MTQwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvY3NzL3N0eWxlc2hlZXQtZW5h
YmxlLWZpcnN0LWFsdGVybmF0ZS1vbi1sb2FkLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvY3Nz
L3N0eWxlc2hlZXQtZW5hYmxlLWZpcnN0LWFsdGVybmF0ZS5odG1sCisgICAgICAgICAgICAgICBm
YXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1zZWNvbmQtYWx0ZXJuYXRlLW9uLWxvYWQuaHRtbAor
ICAgICAgICAgICAgICAgZmFzdC9jc3Mvc3R5bGVzaGVldC1lbmFibGUtc2Vjb25kLWFsdGVybmF0
ZS5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL2Nzcy9saW5rLWNzcy1kaXNhYmxlZC12
YWx1ZS13aXRoLXNsb3ctbG9hZGluZy1zaGVldC5odG1sCisKKyAgICAgICAgVGhlIGdpc3Qgb2Yg
dGhlIGlzc3VlIHdhcyB0aGF0IHdlIHdlcmUgaWdub3JpbmcgY2FsbHMgdG8gSFRNTExpbmtFbGVt
ZW50OjpzZXREaXNhYmxlZCB0aGF0IHdvdWxkIGVuYWJsZSBhIHN0eWxlIHNoZWV0CisgICAgICAg
IHdoZW4gd2Ugd2VyZSBsb2FkaW5nIGEgc3R5bGVzaGVldCAobV9zaGVldCB3YXMgMCBhbmQgdGh1
cyBpZ25vcmVkIHRoZSBjYWxsIHBlciB0aGUgc3BlYykuCisKKyAgICAgICAgRkYgZ29lcyBhZ2Fp
bnN0IHRoZSBzcGVjIGhlcmUgYW5kIGp1c3QgYWx3YXlzIGtlZXAgYW4gYXNzb2NpYXRlZCBzaGVl
dCBhcyBsb25nIGFzICdyZWwnIGhpbnRzIGF0IGEgc3R5bGVzaGVldAorICAgICAgICBsaW5rIGFu
ZCBocmVmIGlzIHByZXNlbnQuIEluc3RlYWQgb2Ygc2lkaW5nIHdpdGggRkYsIEkgY29udGludWVk
IHRvIGZvbGxvdyB0aGUgc3BlY2lmaWNhdGlvbiBhbmQgc3RvcmUgdGhlCisgICAgICAgIGVuYWJs
ZWQgdmlhIGphdmFzY3JpcHQgc3RhdGUgaW50byB0aGUgZXhpc3RpbmcgbV9pc0VuYWJsZWRWaWFT
Y3JpcHQgZmllZGwuIFRoaXMgaW5mb3JtYXRpb24gZ2V0cyBtZXJnZWQgYmFjaworICAgICAgICBp
bnRvIHRoZSBzdHlsZSBzaGVldCBkaXNhYmxlZCBzdGF0ZS4KKworICAgICAgICBXaGlsZSBkZWJ1
Z2dpbmcgb3VyIGNhc2UgYXQgaGFuZCwgSSBmb3VuZCBzb21lIGNhc2VzIHRoYXQgd2VyZSBub3Qg
cHJvcGVybHkgaGFuZGxlZCBhbmQgd2VyZQorICAgICAgICBmaXhlZCBhcyBwYXJ0IG9mIHRoaXMg
Y2hhbmdlLgorCisgICAgICAgICogaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTExpbmtFbGVtZW50OjpzZXREaXNhYmxlZCk6IFN0b3JlIHRoZSB0ZW1wb3Jh
cnkgaW5mb3JtYXRpb24gaGVyZS4gQWxzbyBpZgorICAgICAgICB3ZSBzZXQgZGlzYWJsZWQgdG8g
dGhlIGV4aXN0aW5nIHZhbHVlLCBtYWtlIHN1cmUgbV9pc0VuYWJsZWRWaWFTY3JpcHQgaXMgc2V0
IHByb3Blcmx5CisgICAgICAgIGFzIHdlIGNvdWxkIGxvc2UgdGhlIGZvcmNlZCBiaXRzIGluIHNv
bWUgY2FzZXMuCisKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudDo6c2hlZXRMb2Fk
ZWQpOiBQdXNoIGJhY2sgdGhlIGRpc2FibGVkIGluZm9ybWF0aW9uIGlmCisgICAgICAgIG1faXNF
bmFibGVkVmlhU2NyaXB0IGlzIHRydWUuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1l
bnQ6OmRpc2FibGVkKTogQmUgY29uc2lzdGVudCB3aXRoIEZGIGhlcmUgYnkgcmV0dXJuaW5nIHRo
ZSBjYWNoZWQKKyAgICAgICAgaW5mb3JtYXRpb24gaWYgd2UgYXJlIGxvYWRpbmcuCisKKyAgICAg
ICAgKiBodG1sL0hUTUxMaW5rRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtF
bGVtZW50Ojppc0VuYWJsZWRWaWFTY3JpcHQpOiBBZGRlZCBhbiBBU1NFUlQgdGhhdCBtYWtlIHN1
cmUgdGhhdAorICAgICAgICB3ZSBwcm9wYWdhdGUgYmFjayBvdXIgaW5mb3JtYXRpb24gd2hlbiB3
ZSBmaW5pc2hlZCBsb2FkaW5nIHRoZSBzdHlsZSBzaGVldC4KKwogMjAxMS0wOC0wOCAgQ2hyaXMg
Um9nZXJzICA8Y3JvZ2Vyc0Bnb29nbGUuY29tPgogCiAgICAgICAgIEZpeCB0aHJlYWQtc2FmZXR5
IG9mIEF1ZGlvTm9kZSBkZWxldGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTGlua0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQu
Y3BwCmluZGV4IGM0ZDk0MzFmMDVhM2E2ODE3M2U2YzQ3ZGQ4MzZlNzM3MjhmNDMwZWYuLmQzZTEz
YmNhNTRiYzY4NDg2MzBmYmJkZDY5OGEyMzkyOThhMmUxMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxMaW5rRWxlbWVudC5jcHAKQEAgLTgyLDEyICs4MiwyOCBAQCBIVE1MTGlua0VsZW1lbnQ6
On5IVE1MTGlua0VsZW1lbnQoKQogCiB2b2lkIEhUTUxMaW5rRWxlbWVudDo6c2V0RGlzYWJsZWQo
Ym9vbCBkaXNhYmxlZCkKIHsKLSAgICBpZiAoIW1fc2hlZXQpCisgICAgaWYgKCFtX3NoZWV0KSB7
CisgICAgICAgIC8vIElmIHdlIGFyZSBpbiB0aGUgbWlkZGxlIG9mIGxvYWRpbmcgYSBzdHlsZXNo
ZWV0LCB3ZSBzdG9yZSB0aGUgaW5mb3JtYXRpb24gZnJvbSB0aGlzIGNhbGwKKyAgICAgICAgLy8g
YXMgaXQgaXMgYSBjb21tb24gcGF0dGVybiB0byBkaXNhYmxlIC8gZW5hYmxlIHRoZSBzdHlsZXNo
ZWV0IHRocm91Z2ggSlMgKHJlZ2FyZGxlc3Mgb2YKKyAgICAgICAgLy8gd2hldGhlciB0aGUgc2hl
ZXQgd2FzIGxvYWRlZCkuCisgICAgICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NjUxNDAKKyAgICAgICAgaWYgKG1fcmVsQXR0cmlidXRlLm1faXNTdHls
ZVNoZWV0ICYmIG1fbG9hZGluZykKKyAgICAgICAgICAgIG1faXNFbmFibGVkVmlhU2NyaXB0ID0g
IWRpc2FibGVkOwogICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgYm9vbCB3YXNEaXNhYmxl
ZCA9IG1fc2hlZXQtPmRpc2FibGVkKCk7Ci0gICAgaWYgKHdhc0Rpc2FibGVkID09IGRpc2FibGVk
KQorCisgICAgaWYgKHdhc0Rpc2FibGVkID09IGRpc2FibGVkKSB7CisgICAgICAgIGJvb2wgd2Fz
RW5hYmxlZFZpYVNjcmlwdCA9IG1faXNFbmFibGVkVmlhU2NyaXB0OworICAgICAgICAvLyBJZiBK
UyBmb3JjZXMgdGhlIHNoZWV0IHRvIGJlIGVuYWJsZWQsIHdlIG5lZWQgdG8gZm9yY2UgYSByZWNh
bGNTdHlsZVNlbGVjdG9yIG9yCisgICAgICAgIC8vIHdlIG1heSBub3QgYXBwbHkgdGhlIHN0eWxl
c2hlZXQgKGZvciBleGFtcGxlIGZvciBhbHRlcm5hdGUgc3R5bGVzaGVldCkuCisgICAgICAgIGlm
ICh3YXNFbmFibGVkVmlhU2NyaXB0ICE9ICFkaXNhYmxlZCkgeworICAgICAgICAgICAgbV9pc0Vu
YWJsZWRWaWFTY3JpcHQgPSAhZGlzYWJsZWQ7CisgICAgICAgICAgICBkb2N1bWVudCgpLT5zdHls
ZVNlbGVjdG9yQ2hhbmdlZChEZWZlclJlY2FsY1N0eWxlKTsKKyAgICAgICAgfQogICAgICAgICBy
ZXR1cm47CisgICAgfQogCiAgICAgbV9zaGVldC0+c2V0RGlzYWJsZWQoZGlzYWJsZWQpOwogICAg
IG1faXNFbmFibGVkVmlhU2NyaXB0ID0gIWRpc2FibGVkOwpAQCAtMzU2LDEwICszNzIsMTkgQEAg
dm9pZCBIVE1MTGlua0VsZW1lbnQ6OmxpbmtMb2FkaW5nRXJyb3JlZCgpCiAKIGJvb2wgSFRNTExp
bmtFbGVtZW50OjpzaGVldExvYWRlZCgpCiB7CisgICAgLy8gTWlncmF0ZSB0aGUgZGlzYWJsZWQg
aW5mb3JtYXRpb24gYmVmb3JlIHJlbW92ZVBlbmRpbmdTaGVldCBpcyBjYWxsZWQKKyAgICAvLyBh
cyBpdCB3aWxsIHN0YXJ0IGEgcmVjYWxTdHlsZVNlbGVjdG9yIHdoaWNoIG5lZWRzIHRoaXMgaW5m
b3JtYXRpb24uCisgICAgaWYgKG1faXNFbmFibGVkVmlhU2NyaXB0KSB7CisgICAgICAgIEFTU0VS
VCghbV9sb2FkaW5nKTsKKyAgICAgICAgQVNTRVJUKG1fcmVsQXR0cmlidXRlLm1faXNTdHlsZVNo
ZWV0KTsKKyAgICAgICAgc2V0RGlzYWJsZWQoIW1faXNFbmFibGVkVmlhU2NyaXB0KTsKKyAgICB9
CisKICAgICBpZiAoIWlzTG9hZGluZygpKSB7CiAgICAgICAgIHJlbW92ZVBlbmRpbmdTaGVldCgp
OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CisKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
QEAgLTQ0Miw3ICs0NjcsMTcgQEAgdm9pZCBIVE1MTGlua0VsZW1lbnQ6OnJlbW92ZVBlbmRpbmdT
aGVldCgpCiAKIGJvb2wgSFRNTExpbmtFbGVtZW50OjpkaXNhYmxlZCgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIG1fc2hlZXQgJiYgbV9zaGVldC0+ZGlzYWJsZWQoKTsKKyAgICBpZiAobV9zaGVldCkK
KyAgICAgICAgcmV0dXJuIG1fc2hlZXQtPmRpc2FibGVkKCk7CisKKyAgICAvLyBGRiBkaXNhZ3Jl
ZXMgd2l0aCB0aGUgc3BlYyBhbmQgYWx3YXlzIGhhcyBhbiBhc3NvY2lhdGVkIHN0eWxlc2hlZXQg
aWYgdGhlICdyZWwnIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgYQorICAgIC8vIHN0eWxlc2hlZXQgYW5k
IGhyZWYgaXMgcHJvdmlkZWQgKHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGUgcmVzb3VyY2UgbWF5
IGJlIGluIGVycm9yKS4gQXMgd2Ugc3RvcmUgdGhlCisgICAgLy8gZW5hYmxlZCBzdGF0ZSBpbiBt
X2lzRW5hYmxlZFZpYVNjcmlwdCB3aGlsZSBsb2FkaW5nLCByZXR1cm4gdGhpcyBpbmZvcm1hdGlv
biB0byBiZSBjb25zaXN0ZW50IHdpdGggRkYKKyAgICAvLyBhbmQgb3VyIGZ1dHVyZSBzZWxmIGhl
cmUuCisgICAgaWYgKGlzTG9hZGluZygpICYmIG1faXNFbmFibGVkVmlhU2NyaXB0KQorICAgICAg
ICByZXR1cm4gIW1faXNFbmFibGVkVmlhU2NyaXB0OworCisgICAgcmV0dXJuIGZhbHNlOwogfQog
CiBET01TZXR0YWJsZVRva2VuTGlzdCogSFRNTExpbmtFbGVtZW50OjpzaXplcygpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaAppbmRleCA4ZmVkZTAyZTVlN2Y5MmI3NDBm
ODU5MDkxM2U4Yjc1OWE2ZDE1MTM4Li5mZjE4ZjdiMGRiZWVmY2VhMTgwMGUyNzM0ZTQ3NzdlNzUy
M2VjNzM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmgKQEAgLTU3LDcgKzU3
LDE1IEBAIHB1YmxpYzoKIAogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSByZW5hbWVkIGlz
U3R5bGVTaGVldExvYWRpbmcgYXMgdGhpcyBpcyBvbmx5IHVzZWQgZm9yIHN0eWxlc2hlZXRzLgog
ICAgIGJvb2wgaXNMb2FkaW5nKCkgY29uc3Q7Ci0gICAgYm9vbCBpc0VuYWJsZWRWaWFTY3JpcHQo
KSBjb25zdCB7IHJldHVybiBtX2lzRW5hYmxlZFZpYVNjcmlwdDsgfQorICAgIGJvb2wgaXNFbmFi
bGVkVmlhU2NyaXB0KCkgY29uc3QKKyAgICB7CisgICAgICAgIC8vIFdoZW4gd2UgYXJlIGxvYWRp
bmcgbV9pc0VuYWJsZWRWaWFTY3JpcHQgc3RvcmVzIHRoZSBpbmZvcm1hdGlvbiBpZiBKUyBjYWxs
cyB1cyBhbmQgY2FuIHRodXMgaGF2ZSBhbnkgdmFsdWUuCisgICAgICAgIC8vIElmIG1faXNFbmFi
bGVkVmlhU2NyaXB0IGlzIGZhbHNlLCBpdCBkb2Vzbid0IG1lYW4gYW55dGhpbmcgYXMgdGhlIHN0
eWxlIHNoZWV0IG1heSBiZSBkaXNhYmxlZCBieSBvdGhlciBtZWFucworICAgICAgICAvLyAoZG9j
dW1lbnQucHJlZmVyZWRTdHlsZVNoZWV0U2V0IGZvciBleGFtcGxlKSBhbHNvIG1faXNFbmFibGVk
VmlhU2NyaXB0IGlzIGluaXRpYWxseSBmYWxzZS4KKyAgICAgICAgLy8gSWYgbV9pc0VuYWJsZWRW
aWFTY3JpcHQgaXMgdHJ1ZSwgdGhlbiB0aGUgc2hlZXQgc2hvdWxkIG5vdCBiZSBkaXNhYmxlZCBh
cyBKUyBzaG91bGQgb3ZlcnJpZGUgaXRzIHN0YXRlLgorICAgICAgICBBU1NFUlQoaXNMb2FkaW5n
KCkgfHwgIW1faXNFbmFibGVkVmlhU2NyaXB0IHx8IChtX2lzRW5hYmxlZFZpYVNjcmlwdCA9PSAh
c2hlZXQoKS0+ZGlzYWJsZWQoKSkpOworICAgICAgICByZXR1cm4gbV9pc0VuYWJsZWRWaWFTY3Jp
cHQ7CisgICAgfQogICAgIGJvb2wgZGlzYWJsZWQoKSBjb25zdDsKICAgICB2b2lkIHNldERpc2Fi
bGVkKGJvb2wpOwogICAgIHZvaWQgc2V0U2l6ZXMoY29uc3QgU3RyaW5nJik7CkBAIC0xMDksNyAr
MTE3LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNFbmFibGVkVmlhU2NyaXB0OwogICAgIGJv
b2wgbV9jcmVhdGVkQnlQYXJzZXI7CiAgICAgYm9vbCBtX2lzSW5TaGFkb3dUcmVlOwotICAgIAor
CiAgICAgUGVuZGluZ1NoZWV0VHlwZSBtX3BlbmRpbmdTaGVldFR5cGU7CiB9OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103566</attachid>
            <date>2011-08-10 18:15:43 -0700</date>
            <delta_ts>2011-08-18 15:53:05 -0700</delta_ts>
            <desc>Proposed fix 3: Even better fix as the previous could lose some information in the way, also tightened the checks between disabled() and m_isEnabledViaScript.</desc>
            <filename>bug-65140-20110810181542.patch</filename>
            <type>text/plain</type>
            <size>27542</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTI4MDEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4M2M5NjBkMWMwODU4NGM5YTVjMWY2
MTQzMWQ1MzM0NTk4NmI0NzYwLi4wNjE5MjExZTUyOGY1OTI3MWFlMGIzMjU0NDI1NTE3ZGYwYjVl
MDk0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTEtMDgtMTAgIEp1bGllbiBDaGFmZnJhaXgg
IDxqY2hhZmZyYWl4QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUkVHUkVTU0lPTiAocjg0MzI3LXI4
NDMyOSk6IENTUyBzdHlsZXNoZWV0cyBmYWlsIHRvIGxvYWQgb24gd3d3LmZsYWdzdGFyLmNvbSBs
b2dpbiBwYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02NTE0MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vOTgzNTkwNT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvY3NzL2xpbmstZGlzYWJs
ZWQtYXR0ci1leHBlY3RlZC50eHQ6IFRoaXMgY2hhbmdlIGlzIGEgcHJvZ3Jlc3Npb24sIGJ1dCB3
ZSBhcmUgc3RpbGwKKyAgICAgICAgbm90IGhhbmRsaW5nIHVwZGF0ZXMgdG8gdGhlIHNlbGVjdGVk
IHN0eWxlIHNldCBwcm9wZXJseSAoYWxyZWFkeSBjb3ZlcmVkIGJ5IGJ1ZyA2MjQwNykuCisKKyAg
ICAgICAgKiBmYXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1maXJzdC1hbHRlcm5hdGUtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1maXJz
dC1hbHRlcm5hdGUtb24tbG9hZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
Y3NzL3N0eWxlc2hlZXQtZW5hYmxlLWZpcnN0LWFsdGVybmF0ZS1vbi1sb2FkLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxlLWZpcnN0LWFsdGVybmF0ZS5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1zZWNvbmQt
YWx0ZXJuYXRlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3Mvc3R5bGVz
aGVldC1lbmFibGUtc2Vjb25kLWFsdGVybmF0ZS1vbi1sb2FkLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZmFzdC9jc3Mvc3R5bGVzaGVldC1lbmFibGUtc2Vjb25kLWFsdGVybmF0ZS1v
bi1sb2FkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxl
LXNlY29uZC1hbHRlcm5hdGUuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9jc3Mv
bGluay1jc3MtZGlzYWJsZWQtdmFsdWUtd2l0aC1zbG93LWxvYWRpbmctc2hlZXQtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2Nzcy9saW5rLWNzcy1kaXNhYmxlZC12
YWx1ZS13aXRoLXNsb3ctbG9hZGluZy1zaGVldC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL2Nzcy9yZXNvdXJjZXMvbGluay1jc3MtZGlzYWJsZWQtdmFsdWUtd2l0aC1zbG93LWxv
YWRpbmctc2hlZXQuanM6IEFkZGVkLgorICAgICAgICAob25TaGVldExvYWRlZCk6CisgICAgICAg
ICh0ZXN0V2hlbkxvYWRlZCk6CisgICAgICAgICogaHR0cC90ZXN0cy9jc3MvcmVzb3VyY2VzL3Ns
b3ctbG9hZGluZy1zaGVldC5waHA6IEFkZGVkLgorICAgICAgICBUaG9zZSBhcmUgYSB2YXJpYXRp
b24gb24gdGhlIHNhbWUgdGhlbWU6IHdlIGRpc2FibGUgc29tZSBzdHlsZXNoZWV0IGFuZCBlbmFi
bGUgb3RoZXJzLAorICAgICAgICBlaXRoZXIgZGlyZWN0bHkgb3IgbGF0ZXIuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6IE1ha2VkIGxpbmstY3Nz
LWRpc2FibGVkLXZhbHVlLXdpdGgtc2xvdy1sb2FkaW5nLXNoZWV0LmpzIGFzCisgICAgICAgIFNM
T1csIG5vdCBzdXJlIHdoeSBhcyBpdCBzaG91bGQgcnVuIGZhc3QgZW5vdWdoIGFuZCBkb2VzIG5v
dCB0aW1lIG91dCBpZiB5b3UgcnVuIGl0IG1hbnVhbGx5LgorCiAyMDExLTA4LTEwICBBYmhpc2hl
ayBBcnlhICA8aW5mZXJub0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVGVzdHMgdGhhdCB3ZSBk
byBub3QgY3Jhc2ggd2hlbiB0cnlpbmcgdG8gYWNjZXNzIGEgcmVtb3ZlZApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9jc3MvbGluay1kaXNhYmxlZC1hdHRyLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2Zhc3QvY3NzL2xpbmstZGlzYWJsZWQtYXR0ci1leHBlY3RlZC50eHQKaW5kZXgg
NTcxYWNiMjhkNzcyNjYwZmMyYWRiNGMyMmZhODIwZmM1NmE2ZGZjZS4uZjQxMzcwYTEyNWY0Mjk4
MDMwZDViNjQxMGY1OTVjNWNhMTMxM2NkOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9j
c3MvbGluay1kaXNhYmxlZC1hdHRyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2Nzcy9saW5rLWRpc2FibGVkLWF0dHItZXhwZWN0ZWQudHh0CkBAIC0xNSwxMSArMTUsMTEgQEAg
UEFTUyBnZXRDb21wdXRlZFN0eWxlKGNvbnNvbGUpLndoaXRlU3BhY2UgaXMgJ3ByZS13cmFwJwog
YWx0c2hlZXQKIEZBSUwgbGluay5kaXNhYmxlZCBzaG91bGQgYmUgdHJ1ZS4gV2FzIGZhbHNlLgog
UEFTUyBsaW5rLnNoZWV0IGlzIG5vbi1udWxsLgotRkFJTCBnZXRDb21wdXRlZFN0eWxlKGNvbnNv
bGUpLmJhY2tncm91bmRDb2xvciBzaG91bGQgYmUgcmdiKDAsIDEyOCwgMCkuIFdhcyByZ2JhKDAs
IDAsIDAsIDApLgorUEFTUyBnZXRDb21wdXRlZFN0eWxlKGNvbnNvbGUpLmJhY2tncm91bmRDb2xv
ciBpcyAncmdiKDAsIDEyOCwgMCknCiBGQUlMIGxpbmsuZGlzYWJsZWQgc2hvdWxkIGJlIHRydWUu
IFdhcyBmYWxzZS4KLVBBU1MgZ2V0Q29tcHV0ZWRTdHlsZShjb25zb2xlKS5iYWNrZ3JvdW5kQ29s
b3IgaXMgb3JpZ2luYWxCRworRkFJTCBnZXRDb21wdXRlZFN0eWxlKGNvbnNvbGUpLmJhY2tncm91
bmRDb2xvciBzaG91bGQgYmUgcmdiYSgwLCAwLCAwLCAwKS4gV2FzIHJnYigwLCAxMjgsIDApLgog
UEFTUyBsaW5rLmRpc2FibGVkIGlzIGZhbHNlCi1GQUlMIGdldENvbXB1dGVkU3R5bGUoY29uc29s
ZSkuYmFja2dyb3VuZENvbG9yIHNob3VsZCBiZSByZ2IoMCwgMTI4LCAwKS4gV2FzIHJnYmEoMCwg
MCwgMCwgMCkuCitQQVNTIGdldENvbXB1dGVkU3R5bGUoY29uc29sZSkuYmFja2dyb3VuZENvbG9y
IGlzICdyZ2IoMCwgMTI4LCAwKScKIFBBU1MgZ2V0Q29tcHV0ZWRTdHlsZShjb25zb2xlKS5iYWNr
Z3JvdW5kQ29sb3IgaXMgb3JpZ2luYWxCRwogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1m
aXJzdC1hbHRlcm5hdGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGVz
aGVldC1lbmFibGUtZmlyc3QtYWx0ZXJuYXRlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMDUy
OGZiNzU4YTkxZDdmMzA2ODIwNzExMTUwZjk4YTVkMTcwMmM0Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGVzaGVldC1lbmFibGUtZmlyc3QtYWx0ZXJuYXRlLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAKK1Rlc3QgZm9yIDY1MTQwOiBSRUdSRVNTSU9OIChy
ODQzMjctcjg0MzI5KTogQ1NTIHN0eWxlc2hlZXRzIGZhaWwgdG8gbG9hZCBvbiB3d3cuZmxhZ3N0
YXIuY29tIGxvZ2luIHBhZ2UKKworVGhpcyB0ZXN0IFBBU1NFRCBpZiBQQVNTRUQgaXMgd3JpdHRl
biBiZWxvdyAoYWx0ZXJuYXRpdmVseSB0aGUgbmV4dCBsaW5lIHNob3VsZCBoYXZlIGEgR1JFRU4g
YmFja2dyb3VuZCkuCisKK1BBU1NFRApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3Mv
c3R5bGVzaGVldC1lbmFibGUtZmlyc3QtYWx0ZXJuYXRlLW9uLWxvYWQtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGVzaGVldC1lbmFibGUtZmlyc3QtYWx0ZXJuYXRlLW9u
LWxvYWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMwNTI4ZmI3NThhOTFkN2YzMDY4MjA3MTEx
NTBmOThhNWQxNzAyYzQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9z
dHlsZXNoZWV0LWVuYWJsZS1maXJzdC1hbHRlcm5hdGUtb24tbG9hZC1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSw1IEBACitUZXN0IGZvciA2NTE0MDogUkVHUkVTU0lPTiAocjg0MzI3LXI4NDMyOSk6
IENTUyBzdHlsZXNoZWV0cyBmYWlsIHRvIGxvYWQgb24gd3d3LmZsYWdzdGFyLmNvbSBsb2dpbiBw
YWdlCisKK1RoaXMgdGVzdCBQQVNTRUQgaWYgUEFTU0VEIGlzIHdyaXR0ZW4gYmVsb3cgKGFsdGVy
bmF0aXZlbHkgdGhlIG5leHQgbGluZSBzaG91bGQgaGF2ZSBhIEdSRUVOIGJhY2tncm91bmQpLgor
CitQQVNTRUQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlc2hlZXQtZW5h
YmxlLWZpcnN0LWFsdGVybmF0ZS1vbi1sb2FkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9z
dHlsZXNoZWV0LWVuYWJsZS1maXJzdC1hbHRlcm5hdGUtb24tbG9hZC5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmEyOTVlNDJkYzI0ZjQxMjlhYTNhYjc5MjdmNmVhOTY0NzgxZTBiZGQKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1maXJzdC1hbHRlcm5h
dGUtb24tbG9hZC5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAi
LS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9InJlc291cmNlcy9yZWQuY3NzIiBtZWRpYT0iYWxsIiB0aXRsZT0iRGVmYXVs
dCBTdHlsZSBTaGVldCIgdHlwZT0idGV4dC9jc3MiIC8+Cis8bGluayByZWw9ImFsdGVybmF0ZSBz
dHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvZ3JlZW4uY3NzIiBtZWRpYT0iYWxsIiB0aXRsZT0i
Z3JlZW4iIHR5cGU9InRleHQvY3NzIiAvPgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
PgorICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgIGZ1bmN0aW9uIHRlc3QoKSB7CisgICAg
ICAgIHZhciByZWQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGluayIpWzBdOwor
ICAgICAgICByZWQuZGlzYWJsZWQgPSB0cnVlOworICAgICAgICB2YXIgZ3JlZW4gPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGluayIpWzFdOworICAgICAgICBncmVlbi5kaXNhYmxl
ZCA9IHRydWU7CisgICAgICAgIGdyZWVuLmRpc2FibGVkID0gZmFsc2U7CisKKyAgICAgICAgdmFy
IGNvbnNvbGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpOworICAgICAgICBp
ZiAoZ2V0Q29tcHV0ZWRTdHlsZShjb25zb2xlLCBudWxsKS5iYWNrZ3JvdW5kQ29sb3IgPT09ICJy
Z2IoMCwgMTI4LCAwKSIpCisgICAgICAgICAgICBjb25zb2xlLmlubmVySFRNTCA9ICJQQVNTRUQi
OworICAgICAgICBlbHNlCisgICAgICAgICAgICBjb25zb2xlLmlubmVySFRNTCA9ICJGQUlMRUQs
IGJhY2tncm91bmQgPSAiICsgZ2V0Q29tcHV0ZWRTdHlsZShjb25zb2xlLCBudWxsKS5iYWNrZ3Jv
dW5kQ29sb3I7CisgICAgfQorICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgdGVz
dCwgZmFsc2UpOworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRlc3QgZm9yIDxhIGhy
ZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTE0MCI+NjUxNDA8
L2E+OiBSRUdSRVNTSU9OIChyODQzMjctcjg0MzI5KTogQ1NTIHN0eWxlc2hlZXRzIGZhaWwgdG8g
bG9hZCBvbiB3d3cuZmxhZ3N0YXIuY29tIGxvZ2luIHBhZ2U8L3A+Cis8cD5UaGlzIHRlc3QgUEFT
U0VEIGlmIFBBU1NFRCBpcyB3cml0dGVuIGJlbG93IChhbHRlcm5hdGl2ZWx5IHRoZSBuZXh0IGxp
bmUgc2hvdWxkIGhhdmUgYSBHUkVFTiBiYWNrZ3JvdW5kKS48L3A+Cis8ZGl2IGlkPSJjb25zb2xl
Ij5GQUlMRUQ8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxlLWZpcnN0LWFsdGVybmF0ZS5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9jc3Mvc3R5bGVzaGVldC1lbmFibGUtZmlyc3QtYWx0ZXJuYXRlLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZjU1OTA2M2Y5MWMzMjBjYjk3Yjk0NDFhYWMzZDYxZjU1MjJlMTUzMwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxlLWZpcnN0
LWFsdGVybmF0ZS5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAi
LS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9InJlc291cmNlcy9yZWQuY3NzIiBtZWRpYT0iYWxsIiB0aXRsZT0iRGVmYXVs
dCBTdHlsZSBTaGVldCIgdHlwZT0idGV4dC9jc3MiIC8+Cis8bGluayByZWw9ImFsdGVybmF0ZSBz
dHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvZ3JlZW4uY3NzIiBtZWRpYT0iYWxsIiB0aXRsZT0i
Z3JlZW4iIHR5cGU9InRleHQvY3NzIiAvPgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
PgorICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgIHZhciByZWQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgibGluayIpWzBdOworICAgIHJlZC5kaXNhYmxlZCA9IHRydWU7Cisg
ICAgdmFyIGdyZWVuID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxpbmsiKVsxXTsK
KyAgICBncmVlbi5kaXNhYmxlZCA9IHRydWU7CisgICAgZ3JlZW4uZGlzYWJsZWQgPSBmYWxzZTsK
KworICAgIGZ1bmN0aW9uIHRlc3QoKSB7CisgICAgICAgIHZhciBjb25zb2xlID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKTsKKyAgICAgICAgaWYgKGdldENvbXB1dGVkU3R5bGUo
Y29uc29sZSwgbnVsbCkuYmFja2dyb3VuZENvbG9yID09PSAicmdiKDAsIDEyOCwgMCkiKQorICAg
ICAgICAgICAgY29uc29sZS5pbm5lckhUTUwgPSAiUEFTU0VEIjsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgY29uc29sZS5pbm5lckhUTUwgPSAiRkFJTEVELCBiYWNrZ3JvdW5kID0gIiArIGdl
dENvbXB1dGVkU3R5bGUoY29uc29sZSwgbnVsbCkuYmFja2dyb3VuZENvbG9yOworICAgIH0KKyAg
ICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIHRlc3QsIGZhbHNlKTsKKzwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8cD5UZXN0IGZvciA8YSBocmVmPSJodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjUxNDAiPjY1MTQwPC9hPjogUkVHUkVTU0lPTiAocjg0
MzI3LXI4NDMyOSk6IENTUyBzdHlsZXNoZWV0cyBmYWlsIHRvIGxvYWQgb24gd3d3LmZsYWdzdGFy
LmNvbSBsb2dpbiBwYWdlPC9wPgorPHA+VGhpcyB0ZXN0IFBBU1NFRCBpZiBQQVNTRUQgaXMgd3Jp
dHRlbiBiZWxvdyAoYWx0ZXJuYXRpdmVseSB0aGUgbmV4dCBsaW5lIHNob3VsZCBoYXZlIGEgR1JF
RU4gYmFja2dyb3VuZCkuPC9wPgorPGRpdiBpZD0iY29uc29sZSI+RkFJTEVEPC9kaXY+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZXNoZWV0
LWVuYWJsZS1zZWNvbmQtYWx0ZXJuYXRlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qv
Y3NzL3N0eWxlc2hlZXQtZW5hYmxlLXNlY29uZC1hbHRlcm5hdGUtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmMwNTI4ZmI3NThhOTFkN2YzMDY4MjA3MTExNTBmOThhNWQxNzAyYzQKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1zZWNvbmQt
YWx0ZXJuYXRlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAKK1Rlc3QgZm9yIDY1MTQwOiBS
RUdSRVNTSU9OIChyODQzMjctcjg0MzI5KTogQ1NTIHN0eWxlc2hlZXRzIGZhaWwgdG8gbG9hZCBv
biB3d3cuZmxhZ3N0YXIuY29tIGxvZ2luIHBhZ2UKKworVGhpcyB0ZXN0IFBBU1NFRCBpZiBQQVNT
RUQgaXMgd3JpdHRlbiBiZWxvdyAoYWx0ZXJuYXRpdmVseSB0aGUgbmV4dCBsaW5lIHNob3VsZCBo
YXZlIGEgR1JFRU4gYmFja2dyb3VuZCkuCisKK1BBU1NFRApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9jc3Mvc3R5bGVzaGVldC1lbmFibGUtc2Vjb25kLWFsdGVybmF0ZS1vbi1sb2FkLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxlLXNlY29u
ZC1hbHRlcm5hdGUtb24tbG9hZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzA1MjhmYjc1OGE5
MWQ3ZjMwNjgyMDcxMTE1MGY5OGE1ZDE3MDJjNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxlLXNlY29uZC1hbHRlcm5hdGUtb24tbG9hZC1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSw1IEBACitUZXN0IGZvciA2NTE0MDogUkVHUkVTU0lPTiAo
cjg0MzI3LXI4NDMyOSk6IENTUyBzdHlsZXNoZWV0cyBmYWlsIHRvIGxvYWQgb24gd3d3LmZsYWdz
dGFyLmNvbSBsb2dpbiBwYWdlCisKK1RoaXMgdGVzdCBQQVNTRUQgaWYgUEFTU0VEIGlzIHdyaXR0
ZW4gYmVsb3cgKGFsdGVybmF0aXZlbHkgdGhlIG5leHQgbGluZSBzaG91bGQgaGF2ZSBhIEdSRUVO
IGJhY2tncm91bmQpLgorCitQQVNTRUQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3Nz
L3N0eWxlc2hlZXQtZW5hYmxlLXNlY29uZC1hbHRlcm5hdGUtb24tbG9hZC5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9jc3Mvc3R5bGVzaGVldC1lbmFibGUtc2Vjb25kLWFsdGVybmF0ZS1vbi1sb2Fk
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uY2M4MDg2ZTBiNGEyN2M3ZmZkODFhMzNjMGQwMjUzMTU1MTQyYzY2
ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlc2hlZXQtZW5h
YmxlLXNlY29uZC1hbHRlcm5hdGUtb24tbG9hZC5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhRE9D
VFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy9yZWQuY3NzIiBtZWRpYT0i
YWxsIiB0aXRsZT0iRGVmYXVsdCBTdHlsZSBTaGVldCIgdHlwZT0idGV4dC9jc3MiIC8+Cis8bGlu
ayByZWw9ImFsdGVybmF0ZSBzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvcmVkLmNzcyIgbWVk
aWE9ImFsbCIgdGl0bGU9ImdyZWVuIiB0eXBlPSJ0ZXh0L2NzcyIgLz4KKzxsaW5rIHJlbD0iYWx0
ZXJuYXRlIHN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy9ncmVlbi5jc3MiIG1lZGlhPSJhbGwi
IHRpdGxlPSJncmVlbiIgdHlwZT0idGV4dC9jc3MiIC8+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2
YXNjcmlwdCI+CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgZnVuY3Rpb24gdGVzdCgp
IHsKKyAgICAgICAgdmFyIHJlZCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJsaW5r
IilbMF07CisgICAgICAgIHJlZC5kaXNhYmxlZCA9IHRydWU7CisgICAgICAgIHZhciBncmVlbiA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJsaW5rIilbMl07CisgICAgICAgIGdyZWVu
LmRpc2FibGVkID0gZmFsc2U7CisKKyAgICAgICAgdmFyIGNvbnNvbGUgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiY29uc29sZSIpOworICAgICAgICBpZiAoZ2V0Q29tcHV0ZWRTdHlsZShjb25z
b2xlLCBudWxsKS5iYWNrZ3JvdW5kQ29sb3IgPT09ICJyZ2IoMCwgMTI4LCAwKSIpCisgICAgICAg
ICAgICBjb25zb2xlLmlubmVySFRNTCA9ICJQQVNTRUQiOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBjb25zb2xlLmlubmVySFRNTCA9ICJGQUlMRUQsIGJhY2tncm91bmQgPSAiICsgZ2V0Q29t
cHV0ZWRTdHlsZShjb25zb2xlLCBudWxsKS5iYWNrZ3JvdW5kQ29sb3I7CisgICAgfQorICAgIHdp
bmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgdGVzdCwgZmFsc2UpOworPC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxwPlRlc3QgZm9yIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD02NTE0MCI+NjUxNDA8L2E+OiBSRUdSRVNTSU9OIChyODQzMjct
cjg0MzI5KTogQ1NTIHN0eWxlc2hlZXRzIGZhaWwgdG8gbG9hZCBvbiB3d3cuZmxhZ3N0YXIuY29t
IGxvZ2luIHBhZ2U8L3A+Cis8cD5UaGlzIHRlc3QgUEFTU0VEIGlmIFBBU1NFRCBpcyB3cml0dGVu
IGJlbG93IChhbHRlcm5hdGl2ZWx5IHRoZSBuZXh0IGxpbmUgc2hvdWxkIGhhdmUgYSBHUkVFTiBi
YWNrZ3JvdW5kKS48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj5GQUlMRUQ8L2Rpdj4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlc2hlZXQtZW5h
YmxlLXNlY29uZC1hbHRlcm5hdGUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlc2hl
ZXQtZW5hYmxlLXNlY29uZC1hbHRlcm5hdGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMGU1YzJjMjFkZDZm
NWI1NTAwNTEzMjI0MDllMzM1Nzc3NGY4YTZkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9jc3Mvc3R5bGVzaGVldC1lbmFibGUtc2Vjb25kLWFsdGVybmF0ZS5odG1sCkBAIC0w
LDAgKzEsMzEgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VO
Ij4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNl
cy9yZWQuY3NzIiBtZWRpYT0iYWxsIiB0aXRsZT0iRGVmYXVsdCBTdHlsZSBTaGVldCIgdHlwZT0i
dGV4dC9jc3MiIC8+Cis8bGluayByZWw9ImFsdGVybmF0ZSBzdHlsZXNoZWV0IiBocmVmPSJyZXNv
dXJjZXMvcmVkLmNzcyIgbWVkaWE9ImFsbCIgdGl0bGU9ImdyZWVuIiB0eXBlPSJ0ZXh0L2NzcyIg
Lz4KKzxsaW5rIHJlbD0iYWx0ZXJuYXRlIHN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy9ncmVl
bi5jc3MiIG1lZGlhPSJhbGwiIHRpdGxlPSJncmVlbiIgdHlwZT0idGV4dC9jc3MiIC8+Cis8c2Ny
aXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisg
ICAgdmFyIHJlZCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJsaW5rIilbMF07Cisg
ICAgcmVkLmRpc2FibGVkID0gdHJ1ZTsKKyAgICB2YXIgZ3JlZW4gPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgibGluayIpWzJdOworICAgIGdyZWVuLmRpc2FibGVkID0gZmFsc2U7CisK
KyAgICBmdW5jdGlvbiB0ZXN0KCkgeworICAgICAgICB2YXIgY29uc29sZSA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJjb25zb2xlIik7CisgICAgICAgIGlmIChnZXRDb21wdXRlZFN0eWxlKGNv
bnNvbGUsIG51bGwpLmJhY2tncm91bmRDb2xvciA9PT0gInJnYigwLCAxMjgsIDApIikKKyAgICAg
ICAgICAgIGNvbnNvbGUuaW5uZXJIVE1MID0gIlBBU1NFRCI7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIGNvbnNvbGUuaW5uZXJIVE1MID0gIkZBSUxFRCwgYmFja2dyb3VuZCA9ICIgKyBnZXRD
b21wdXRlZFN0eWxlKGNvbnNvbGUsIG51bGwpLmJhY2tncm91bmRDb2xvcjsKKyAgICB9CisgICAg
d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCB0ZXN0LCBmYWxzZSk7Cis8L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPHA+VGVzdCBmb3IgPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTY1MTQwIj42NTE0MDwvYT46IFJFR1JFU1NJT04gKHI4NDMy
Ny1yODQzMjkpOiBDU1Mgc3R5bGVzaGVldHMgZmFpbCB0byBsb2FkIG9uIHd3dy5mbGFnc3Rhci5j
b20gbG9naW4gcGFnZTwvcD4KKzxwPlRoaXMgdGVzdCBQQVNTRUQgaWYgUEFTU0VEIGlzIHdyaXR0
ZW4gYmVsb3cgKGFsdGVybmF0aXZlbHkgdGhlIG5leHQgbGluZSBzaG91bGQgaGF2ZSBhIEdSRUVO
IGJhY2tncm91bmQpLjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPkZBSUxFRDwvZGl2PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jc3MvbGluay1j
c3MtZGlzYWJsZWQtdmFsdWUtd2l0aC1zbG93LWxvYWRpbmctc2hlZXQtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jc3MvbGluay1jc3MtZGlzYWJsZWQtdmFsdWUtd2l0aC1z
bG93LWxvYWRpbmctc2hlZXQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYxNDAwYWFhMGVjMGE0
ZTIwY2ZkNzZiMGEzNTIwYjkxNzRlMzY1NDgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2Nzcy9saW5rLWNzcy1kaXNhYmxlZC12YWx1ZS13aXRoLXNsb3ctbG9hZGlu
Zy1zaGVldC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxOSBAQAorVGVzdCB0aGF0IEhUTUxMaW5r
RWxlbWVudCdzIGRpc2FibGVkIGF0dHJpYnV0ZSBpcyBwcm9wZXJseSBjYWNoZWQgd2hpbGUgc2V0
IHdoZW4gbG9hZGluZyBhIHN0eWxlc2hlZXQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworCitUZXN0aW5nIHZhbHVlIG9mICdkaXNhYmxlZCcgcHJpb3IgdG8gbG9hZCBqdXN0IGFmdGVy
IHNldHRpbmcgdGhlbQorUEFTUyBtYWluU2hlZXRMaW5rLnNoZWV0IGlzIG5vbi1udWxsLgorUEFT
UyBhbHRlcm5hdGVTaGVldExpbmsuc2hlZXQgaXMgbnVsbAorUEFTUyBtYWluU2hlZXRMaW5rLmRp
c2FibGVkIGlzIHRydWUKK1BBU1MgYWx0ZXJuYXRlU2hlZXRMaW5rLmRpc2FibGVkIGlzIGZhbHNl
CitUZXN0aW5nIHRoZSB2YWx1ZXMgd2hlbiB0aGUgYWx0ZXJuYXRlIHNoZWV0IGlzIGxvYWRlZCAo
YXMgdGhpcyBpcyB0aGUgb25seSBvbmUgdGhhdCBoYXMgc2hlZXQoKSA9PT0gbnVsbCkKK1BBU1Mg
bWFpblNoZWV0TGluay5zaGVldCBpcyBub24tbnVsbC4KK1BBU1MgYWx0ZXJuYXRlU2hlZXRMaW5r
LnNoZWV0IGlzIG5vbi1udWxsLgorUEFTUyBtYWluU2hlZXRMaW5rLmRpc2FibGVkIGlzIHRydWUK
K1BBU1MgYWx0ZXJuYXRlU2hlZXRMaW5rLmRpc2FibGVkIGlzIGZhbHNlCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9jc3MvbGluay1jc3MtZGlzYWJsZWQtdmFsdWUtd2l0aC1zbG93LWxv
YWRpbmctc2hlZXQuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY3NzL2xpbmstY3NzLWRp
c2FibGVkLXZhbHVlLXdpdGgtc2xvdy1sb2FkaW5nLXNoZWV0Lmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDdm
ZjJjY2NhMWI0ZmUyMWVmMWQxMjUxOTVhNjYyZmNmYjI4NjYwYQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY3NzL2xpbmstY3NzLWRpc2FibGVkLXZhbHVlLXdpdGgt
c2xvdy1sb2FkaW5nLXNoZWV0Lmh0bWwKQEAgLTAsMCArMSwxNCBAQAorPCFET0NUWVBFIEhUTUwg
UFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL3Nsb3ctbG9hZGluZy1zaGVldC5waHA/Y29s
b3I9cmVkIiBtZWRpYT0iYWxsIiB0aXRsZT0iRGVmYXVsdCBTdHlsZSBTaGVldCIgdHlwZT0idGV4
dC9jc3MiIC8+Cis8bGluayByZWw9ImFsdGVybmF0ZSBzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJj
ZXMvc2xvdy1sb2FkaW5nLXNoZWV0LnBocD9jb2xvcj1ncmVlbiIgbWVkaWE9ImFsbCIgdGl0bGU9
ImdyZWVuIiB0eXBlPSJ0ZXh0L2NzcyIgLz4KKzxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVz
Y3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InJl
c291cmNlcy9saW5rLWNzcy1kaXNhYmxlZC12YWx1ZS13aXRoLXNsb3ctbG9hZGluZy1zaGVldC5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2Nzcy9yZXNvdXJjZXMvbGluay1jc3MtZGlzYWJsZWQtdmFsdWUtd2l0aC1z
bG93LWxvYWRpbmctc2hlZXQuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nzcy9yZXNvdXJj
ZXMvbGluay1jc3MtZGlzYWJsZWQtdmFsdWUtd2l0aC1zbG93LWxvYWRpbmctc2hlZXQuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMDU4OWYyNzM2YTY0NDg5NTU1NGU5ZDA2ZDgwZmU1YjlhODk5N2ZmMwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY3NzL3Jlc291cmNlcy9saW5rLWNz
cy1kaXNhYmxlZC12YWx1ZS13aXRoLXNsb3ctbG9hZGluZy1zaGVldC5qcwpAQCAtMCwwICsxLDQ1
IEBACitkZXNjcmlwdGlvbigiVGVzdCB0aGF0IEhUTUxMaW5rRWxlbWVudCdzIGRpc2FibGVkIGF0
dHJpYnV0ZSBpcyBwcm9wZXJseSBjYWNoZWQgd2hpbGUgc2V0IHdoZW4gbG9hZGluZyBhIHN0eWxl
c2hlZXQuIik7CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworCit3aW5kb3cuanNUZXN0SXNBc3luYyA9
IHRydWU7CisKK21haW5TaGVldExpbmsgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
bGluayIpWzBdOworYWx0ZXJuYXRlU2hlZXRMaW5rID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoImxpbmsiKVsxXTsKKworbWFpblNoZWV0TGluay5kaXNhYmxlZCA9IHRydWU7CithbHRl
cm5hdGVTaGVldExpbmsuZGlzYWJsZWQgPSBmYWxzZTsKKworZGVidWcoIlRlc3RpbmcgdmFsdWUg
b2YgJ2Rpc2FibGVkJyBwcmlvciB0byBsb2FkIGp1c3QgYWZ0ZXIgc2V0dGluZyB0aGVtIik7Citz
aG91bGRCZU5vbk51bGwoIm1haW5TaGVldExpbmsuc2hlZXQiKTsKK3Nob3VsZEJlTnVsbCgiYWx0
ZXJuYXRlU2hlZXRMaW5rLnNoZWV0Iik7CitzaG91bGRCZVRydWUoIm1haW5TaGVldExpbmsuZGlz
YWJsZWQiLCB0cnVlKTsKK3Nob3VsZEJlRmFsc2UoImFsdGVybmF0ZVNoZWV0TGluay5kaXNhYmxl
ZCIpOworCitkZWJ1ZygiVGVzdGluZyB0aGUgdmFsdWVzIHdoZW4gdGhlIGFsdGVybmF0ZSBzaGVl
dCBpcyBsb2FkZWQgKGFzIHRoaXMgaXMgdGhlIG9ubHkgb25lIHRoYXQgaGFzIHNoZWV0KCkgPT09
IG51bGwpIik7CisKK2Z1bmN0aW9uIG9uU2hlZXRMb2FkZWQoZiwgZWxlbSwgbWF4dGltZSkgewor
ICAgIGlmIChlbGVtLnNoZWV0IHx8IG1heHRpbWUgPD0gMCkKKyAgICAgICAgZigpOworICAgIGVs
c2UKKyAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7IG9uU2hlZXRMb2FkZWQoZiwgZWxl
bSwgbWF4dGltZSAtIDI1KTt9LCAyNSk7Cit9CisKK2Z1bmN0aW9uIHRlc3RXaGVuTG9hZGVkKCkg
eworICAgICAgICAvLyBUaG9zZSBuZXh0IDIgbGluZXMgYXJlIGEgc2FuaXR5IGNoZWNrLgorICAg
ICAgICAvLyBJZiB0aGUgc2Vjb25kIGNoZWNrIGZhaWxzLCBpdCBpcyBsaWtlbHkgdGhhdCB0aGUg
dGVzdCB0aW1lZCBvdXQgYW5kIHRodXMKKyAgICAgICAgLy8geW91IGNhbiBkaXNjYXJkIHRoZSBy
ZXN0IG9mIHJlc3VsdHMgYXMgaXQgaXMgbm90IHRlc3Rpbmcgd2hhdCB3ZSB3YW50CisgICAgICAg
IC8vIChuYW1lbHkgdGhhdCB0aGUgZGlzYWJsZWQgdmFsdWUgaXMgcGFzc2VkIHRvIHRoZSBmaW5h
bCBzaGVldCkuCisgICAgICAgIHNob3VsZEJlTm9uTnVsbCgibWFpblNoZWV0TGluay5zaGVldCIp
OworICAgICAgICBzaG91bGRCZU5vbk51bGwoImFsdGVybmF0ZVNoZWV0TGluay5zaGVldCIpOwor
CisgICAgICAgIHNob3VsZEJlVHJ1ZSgibWFpblNoZWV0TGluay5kaXNhYmxlZCIpOworICAgICAg
ICBzaG91bGRCZUZhbHNlKCJhbHRlcm5hdGVTaGVldExpbmsuZGlzYWJsZWQiKTsKKworICAgICAg
ICBmaW5pc2hKU1Rlc3QoKTsKK30KKworb25TaGVldExvYWRlZCh0ZXN0V2hlbkxvYWRlZCwgYWx0
ZXJuYXRlU2hlZXRMaW5rLCA1MDApOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY3NzL3Jlc291cmNlcy9zbG93LWxv
YWRpbmctc2hlZXQucGhwIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jc3MvcmVzb3VyY2VzL3Ns
b3ctbG9hZGluZy1zaGVldC5waHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjg5MzdkNDJhZjgwMzA1YmU4YzM4Y2M2
ZjZlOWYwMmYwMGJmNmRlOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvY3NzL3Jlc291cmNlcy9zbG93LWxvYWRpbmctc2hlZXQucGhwCkBAIC0wLDAgKzEsMTUgQEAK
Kzw/cGhwCisvLyBXZSBzbGVlcCBoZXJlIHNvIHRoYXQgd2UgYXJlIGhhdmUgZW5vdWdoIHRpbWUg
dG8gdGVzdCB0aGUgZGlmZmVyZW50IGF0dHJpYnV0ZXMgYmVmb3JlIHRoZSBzdHlsZXNoZWV0IGlz
IGZ1bGx5IGxvYWRlZC4KK3VzbGVlcCgxMDApOworCitoZWFkZXIoIkV4cGlyZXM6IFRodSwgMDEg
RGVjIDIwMDMgMTY6MDA6MDAgR01UIik7CitoZWFkZXIoIkNhY2hlLUNvbnRyb2w6IG5vLWNhY2hl
LCBuby1zdG9yZSwgbXVzdC1yZXZhbGlkYXRlIik7CitoZWFkZXIoIlByYWdtYTogbm8tY2FjaGUi
KTsKK2hlYWRlcigiQ29udGVudC1UeXBlOiB0ZXh0L2NzcyIpOworCiskY29sb3IgPSAkX0dFVFsn
Y29sb3InXTsKKworZWNobyAiaDEgeyBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3IgfVxuIjsKK29i
X2ZsdXNoKCk7CitmbHVzaCgpOworPz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAppbmRleCA3NGI0OTkwMTk1NDQyNjYzN2M2Nzlj
ODMwNWJhYjMxZWE5NmQ1MmViLi5lZDdhYTJjYzFjNjkwYzFjMTRkNjA3NTk2YjQ3YWJiOTQ3MjA4
MTA5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVj
dGF0aW9ucy50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBl
Y3RhdGlvbnMudHh0CkBAIC02NCw2ICs2NCw4IEBAIEJVR1dLNjQ0OTggU0xPVyBERUJVRyA6IGZh
c3QvZW5jb2RpbmcvcGFyc2VyLXRlc3RzLTQwLmh0bWwgPSBQQVNTCiBCVUdXSzY0NTAyIFNMT1cg
REVCVUcgOiBmYXN0L2Zvcm1zL2Zvcm0tYXNzb2NpYXRlZC1lbGVtZW50LWNyYXNoMy5odG1sID0g
UEFTUwogV09OVEZJWCBTTE9XIDogZmFzdC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1j
bG9uZS1yZWFsbHktZGVlcC1hcnJheS5odG1sID0gUEFTUwogCitCVUdXSzY1MTQwIFNMT1c6IGh0
dHAvdGVzdHMvY3NzL2xpbmstY3NzLWRpc2FibGVkLXZhbHVlLXdpdGgtc2xvdy1sb2FkaW5nLXNo
ZWV0Lmh0bWwgPSBQQVNTCisKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLyBTS0lQUEVEIFRFU1RTCiAvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IDEzMzE0YjMxN2Q1NjMyZjBmYzM2MmZlZmRlMmEwMDZjMzkwYTEy
NTcuLmMxYWE5MmZhNjllZjY5YjI1YWVjOWM1YzZmMDQyNGNmODY3NDFkODggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw1MCBAQAorMjAxMS0wOC0xMCAgSnVsaWVuIENoYWZmcmFpeCAgPGpjaGFmZnJh
aXhAd2Via2l0Lm9yZz4KKworICAgICAgICBSRUdSRVNTSU9OIChyODQzMjctcjg0MzI5KTogQ1NT
IHN0eWxlc2hlZXRzIGZhaWwgdG8gbG9hZCBvbiB3d3cuZmxhZ3N0YXIuY29tIGxvZ2luIHBhZ2UK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1MTQwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHM6IGZh
c3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxlLWZpcnN0LWFsdGVybmF0ZS1vbi1sb2FkLmh0bWwKKyAg
ICAgICAgICAgICAgIGZhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxlLWZpcnN0LWFsdGVybmF0ZS5o
dG1sCisgICAgICAgICAgICAgICBmYXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1zZWNvbmQtYWx0
ZXJuYXRlLW9uLWxvYWQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9jc3Mvc3R5bGVzaGVldC1l
bmFibGUtc2Vjb25kLWFsdGVybmF0ZS5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL2Nz
cy9saW5rLWNzcy1kaXNhYmxlZC12YWx1ZS13aXRoLXNsb3ctbG9hZGluZy1zaGVldC5odG1sCisK
KyAgICAgICAgVGhlIGdpc3Qgb2YgdGhlIGlzc3VlIGlzIHRoYXQgd2Ugd2VyZSBpZ25vcmluZyBj
YWxscyB0byBIVE1MTGlua0VsZW1lbnQ6OnNldERpc2FibGVkIHRoYXQgd291bGQgZW5hYmxlIGEK
KyAgICAgICAgc3R5bGUgc2hlZXQgd2hlbiB3ZSB3ZXJlIGxvYWRpbmcgYSBzdHlsZXNoZWV0ICht
X3NoZWV0IHdhcyAwIGFuZCB0aHVzIGlnbm9yZWQgdGhlIGNhbGwgcGVyIHRoZSBzcGVjKS4KKwor
ICAgICAgICBGRiBnb2VzIGFnYWluc3QgdGhlIHNwZWMgaGVyZSBhbmQganVzdCBhbHdheXMga2Vl
cCBhbiBhc3NvY2lhdGVkIHNoZWV0IGFzIGxvbmcgYXMgJ3JlbCcgaGludHMgYXQgYSBzdHlsZXNo
ZWV0CisgICAgICAgIGxpbmsgYW5kIGhyZWYgaXMgcHJlc2VudC4gSW5zdGVhZCBvZiBzaWRpbmcg
d2l0aCBGRiwgSSBjb250aW51ZWQgdG8gZm9sbG93IHRoZSBzcGVjaWZpY2F0aW9uIGFuZCBzdG9y
ZSB0aGUKKyAgICAgICAgZW5hYmxlZCB2aWEgamF2YXNjcmlwdCBzdGF0ZSBpbnRvIHRoZSBleGlz
dGluZyBtX2lzRW5hYmxlZFZpYVNjcmlwdCBmaWVkbC4gVGhpcyBpbmZvcm1hdGlvbiBnZXRzIG1l
cmdlZCBiYWNrCisgICAgICAgIGludG8gdGhlIHN0eWxlIHNoZWV0IGRpc2FibGVkIHN0YXRlLgor
CisgICAgICAgIFdoaWxlIGRlYnVnZ2luZyB0aGUgY2FzZSBhdCBoYW5kLCBJIGZvdW5kIHNvbWUg
Y2FzZXMgdGhhdCB3ZXJlIG5vdCBwcm9wZXJseSBoYW5kbGVkIGFuZCB3ZXJlCisgICAgICAgIGZp
eGVkIGFzIHBhcnQgb2YgdGhpcyBjaGFuZ2UuCisKKyAgICAgICAgKiBodG1sL0hUTUxMaW5rRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OnNldERpc2FibGVk
KTogU3RvcmUgdGhlIHRlbXBvcmFyeSBpbmZvcm1hdGlvbiBoZXJlLiBBbHNvIGlmCisgICAgICAg
IHdlIHNldCBkaXNhYmxlZCB0byB0aGUgZXhpc3RpbmcgdmFsdWUsIG1ha2Ugc3VyZSBtX2lzRW5h
YmxlZFZpYVNjcmlwdCBpcyBzZXQgcHJvcGVybHkKKyAgICAgICAgYXMgd2UgY291bGQgbG9zZSB0
aGUgImZvcmNlZCB2aWEgSlMiIGluZm9ybWF0aW9uIGluIHNvbWUgY2FzZXMuIEkgaGFkIHRvIG1v
dmUgc2V0dGluZworICAgICAgICBtX2lzRW5hYmxlZFZpYVNjcmlwdCBhYm92ZSBzZXREaXNhYmxl
ZCBhcyBpdCB3b3VsZCBkbyBhIHJlY2FsY1N0eWxlU2VsZWN0IGFuZCB0cmlnZ2VyCisgICAgICAg
IHRoZSBBU1NFUlQuCisKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudDo6c2hlZXRM
b2FkZWQpOiBQdXNoIGJhY2sgdGhlIGRpc2FibGVkIGluZm9ybWF0aW9uIGlmCisgICAgICAgIG1f
aXNFbmFibGVkVmlhU2NyaXB0IGlzIHNldC4KKworICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtF
bGVtZW50OjpkaXNhYmxlZCk6IEJlIGNvbnNpc3RlbnQgd2l0aCBGRiBoZXJlIGJ5IHJldHVybmlu
ZyB0aGUgY2FjaGVkCisgICAgICAgIGluZm9ybWF0aW9uIGlmIHdlIGFyZSBsb2FkaW5nLiBBbHNv
IGNoZWNrIHRoYXQgdGhlIHZhbHVlIG9mIG1faXNFbmFibGVkVmlhU2NyaXB0IGFuZCBkaXNhYmxl
ZCgpCisgICAgICAgIGFyZSBjb25zaXN0ZW50LgorCisgICAgICAgICogaHRtbC9IVE1MTGlua0Vs
ZW1lbnQuaDogbV9pc0VuYWJsZWRWaWFTY3JpcHQgaXMgYW4gZW51bSBhcyB3ZSBkbyBuZWVkIHRv
IHN0b3JlIDMgc3RhdGVzOgorICAgICAgICBVbnNldCwgRGlzYWJsZWQgYW5kIEVuYWJsZWQuCisK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudDo6aXNFbmFibGVkVmlhU2NyaXB0KTog
Q2FsbCBjaGVja0Rpc2FibGVkQW5kRW5hYmxlZFZpYVNjcmlwdFN0YXRlLgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTExpbmtFbGVtZW50OjpzZXRFbmFibGVkVmlhU2NyaXB0KTogSGVscGVyIG1ldGhv
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudDo6Y2hlY2tEaXNhYmxlZEFuZEVu
YWJsZWRWaWFTY3JpcHRTdGF0ZSk6IFRoaXMgbWV0aG9kIG1ha2Ugc3VyZQorICAgICAgICB0aGF0
IGRpc2FibGVkKCkgYW5kIG1faXNFbmFibGVkVmlhU2NyaXB0U3RhdGUgYXJlIGNvbnNpc3RlbnQg
d2l0aCBlYWNoIG90aGVyLCB0aGF0IGlzIGlmCisgICAgICAgIEpTIGZvcmNlcyBhIHNoZWV0IHRv
IGJlIGVuYWJsZWQgLyBkaXNhYmxlZCwgaXQgc2hvdWxkIGJlIHRoZSBjYXNlLgorCiAyMDExLTA4
LTEwICBBYmhpc2hlayBBcnlhICA8aW5mZXJub0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQ2hl
Y2sgdGhhdCB3ZSBkbyBub3QgbmVlZCBsYXlvdXQgYmVmb3JlIHRyeWluZyB0byBkaXJ0eQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCmluZGV4IGM0ZDk0MzFmMDVhM2E2ODE3
M2U2YzQ3ZGQ4MzZlNzM3MjhmNDMwZWYuLmRkMWQzZmQ5YzI3NDg2Njk2NjkyZDY2NjJjNjIyMGNl
ZmZhYjNkMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKQEAgLTU2
LDcgKzU2LDcgQEAgaW5saW5lIEhUTUxMaW5rRWxlbWVudDo6SFRNTExpbmtFbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KgogICAgICwgbV9saW5rTG9hZGVyKHRo
aXMpCiAgICAgLCBtX3NpemVzKERPTVNldHRhYmxlVG9rZW5MaXN0OjpjcmVhdGUoKSkKICAgICAs
IG1fbG9hZGluZyhmYWxzZSkKLSAgICAsIG1faXNFbmFibGVkVmlhU2NyaXB0KGZhbHNlKQorICAg
ICwgbV9pc0VuYWJsZWRWaWFTY3JpcHQoVW5zZXQpCiAgICAgLCBtX2NyZWF0ZWRCeVBhcnNlcihj
cmVhdGVkQnlQYXJzZXIpCiAgICAgLCBtX2lzSW5TaGFkb3dUcmVlKGZhbHNlKQogICAgICwgbV9w
ZW5kaW5nU2hlZXRUeXBlKE5vbmUpCkBAIC04MiwxNSArODIsMzAgQEAgSFRNTExpbmtFbGVtZW50
Ojp+SFRNTExpbmtFbGVtZW50KCkKIAogdm9pZCBIVE1MTGlua0VsZW1lbnQ6OnNldERpc2FibGVk
KGJvb2wgZGlzYWJsZWQpCiB7Ci0gICAgaWYgKCFtX3NoZWV0KQorICAgIGlmICghbV9zaGVldCkg
eworICAgICAgICAvLyBJZiB3ZSBhcmUgaW4gdGhlIG1pZGRsZSBvZiBsb2FkaW5nIGEgc3R5bGVz
aGVldCwgd2Ugc3RvcmUgdGhlIGluZm9ybWF0aW9uIGZyb20gdGhpcyBjYWxsCisgICAgICAgIC8v
IGFzIGl0IGlzIGEgY29tbW9uIHBhdHRlcm4gdG8gZGlzYWJsZSAvIGVuYWJsZSB0aGUgc3R5bGVz
aGVldCB0aHJvdWdoIEpTIChyZWdhcmRsZXNzIG9mCisgICAgICAgIC8vIHdoZXRoZXIgdGhlIHNo
ZWV0IHdhcyBsb2FkZWQpLgorICAgICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTY1MTQwCisgICAgICAgIGlmIChtX3JlbEF0dHJpYnV0ZS5tX2lzU3R5
bGVTaGVldCAmJiBtX2xvYWRpbmcpCisgICAgICAgICAgICBzZXRFbmFibGVkVmlhU2NyaXB0KCFk
aXNhYmxlZCk7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBib29sIHdhc0Rpc2FibGVk
ID0gbV9zaGVldC0+ZGlzYWJsZWQoKTsKLSAgICBpZiAod2FzRGlzYWJsZWQgPT0gZGlzYWJsZWQp
CisKKyAgICBpZiAod2FzRGlzYWJsZWQgPT0gZGlzYWJsZWQpIHsKKyAgICAgICAgLy8gSWYgSlMg
Zm9yY2VzIHRoZSBzaGVldCB0byBiZSBlbmFibGVkLCB3ZSBuZWVkIHRvIGZvcmNlIGEgcmVjYWxj
U3R5bGVTZWxlY3RvciBvcgorICAgICAgICAvLyB3ZSBtYXkgbm90IGFwcGx5IHRoZSBzdHlsZXNo
ZWV0IChmb3IgZXhhbXBsZSBmb3IgYWx0ZXJuYXRlIHN0eWxlc2hlZXQpLgorICAgICAgICBpZiAo
aXNFbmFibGVkVmlhU2NyaXB0KCkgIT0gIWRpc2FibGVkKSB7CisgICAgICAgICAgICBzZXRFbmFi
bGVkVmlhU2NyaXB0KCFkaXNhYmxlZCk7CisgICAgICAgICAgICBkb2N1bWVudCgpLT5zdHlsZVNl
bGVjdG9yQ2hhbmdlZChEZWZlclJlY2FsY1N0eWxlKTsKKyAgICAgICAgfQogICAgICAgICByZXR1
cm47CisgICAgfQogCisgICAgc2V0RW5hYmxlZFZpYVNjcmlwdCghZGlzYWJsZWQpOwogICAgIG1f
c2hlZXQtPnNldERpc2FibGVkKGRpc2FibGVkKTsKLSAgICBtX2lzRW5hYmxlZFZpYVNjcmlwdCA9
ICFkaXNhYmxlZDsKIAogICAgIC8vIElmIHdlIGNoYW5nZSB0aGUgZGlzYWJsZWQgc3RhdGUgd2hp
bGUgdGhlIHNoZWV0IGlzIHN0aWxsIGxvYWRpbmcsIHRoZW4gd2UgaGF2ZSB0bwogICAgIC8vIHBl
cmZvcm0gdGhyZWUgY2hlY2tzOgpAQCAtMTE3LDYgKzEzMiw4IEBAIHZvaWQgSFRNTExpbmtFbGVt
ZW50OjpzZXREaXNhYmxlZChib29sIGRpc2FibGVkKQogCiAgICAgaWYgKCFkaXNhYmxlZCkKICAg
ICAgICAgcHJvY2VzcygpOworCisgICAgY2hlY2tEaXNhYmxlZEFuZEVuYWJsZWRWaWFTY3JpcHRT
dGF0ZSgpOwogfQogCiBTdHlsZVNoZWV0KiBIVE1MTGlua0VsZW1lbnQ6OnNoZWV0KCkgY29uc3QK
QEAgLTM1NiwxMCArMzczLDE5IEBAIHZvaWQgSFRNTExpbmtFbGVtZW50OjpsaW5rTG9hZGluZ0Vy
cm9yZWQoKQogCiBib29sIEhUTUxMaW5rRWxlbWVudDo6c2hlZXRMb2FkZWQoKQogeworICAgIC8v
IE1pZ3JhdGUgdGhlIGRpc2FibGVkIGluZm9ybWF0aW9uIGJlZm9yZSByZW1vdmVQZW5kaW5nU2hl
ZXQgaXMgY2FsbGVkCisgICAgLy8gYXMgaXQgd2lsbCBzdGFydCBhIHJlY2FsU3R5bGVTZWxlY3Rv
ciB3aGljaCBuZWVkcyB0aGlzIGluZm9ybWF0aW9uLgorICAgIGlmIChtX2lzRW5hYmxlZFZpYVNj
cmlwdCAhPSBVbnNldCkgeworICAgICAgICBBU1NFUlQoIW1fbG9hZGluZyk7CisgICAgICAgIEFT
U0VSVChtX3JlbEF0dHJpYnV0ZS5tX2lzU3R5bGVTaGVldCk7CisgICAgICAgIHNldERpc2FibGVk
KG1faXNFbmFibGVkVmlhU2NyaXB0ID09IERpc2FibGVkKTsKKyAgICB9CisKICAgICBpZiAoIWlz
TG9hZGluZygpKSB7CiAgICAgICAgIHJlbW92ZVBlbmRpbmdTaGVldCgpOwogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CisKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTQ0Miw3ICs0Njgs
MTkgQEAgdm9pZCBIVE1MTGlua0VsZW1lbnQ6OnJlbW92ZVBlbmRpbmdTaGVldCgpCiAKIGJvb2wg
SFRNTExpbmtFbGVtZW50OjpkaXNhYmxlZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fc2hlZXQg
JiYgbV9zaGVldC0+ZGlzYWJsZWQoKTsKKyAgICBjaGVja0Rpc2FibGVkQW5kRW5hYmxlZFZpYVNj
cmlwdFN0YXRlKCk7CisKKyAgICBpZiAobV9zaGVldCkKKyAgICAgICAgcmV0dXJuIG1fc2hlZXQt
PmRpc2FibGVkKCk7CisKKyAgICAvLyBGRiBkaXNhZ3JlZXMgd2l0aCB0aGUgc3BlYyBhbmQgYWx3
YXlzIGhhcyBhbiBhc3NvY2lhdGVkIHN0eWxlc2hlZXQgaWYgdGhlICdyZWwnIGF0dHJpYnV0ZSBp
bmRpY2F0ZXMgYQorICAgIC8vIHN0eWxlc2hlZXQgYW5kIGhyZWYgaXMgcHJvdmlkZWQgKHJlZ2Fy
ZGxlc3Mgb2Ygd2hldGhlciB0aGUgcmVzb3VyY2UgbWF5IGJlIGluIGVycm9yKS4gQXMgd2Ugc3Rv
cmUgdGhlCisgICAgLy8gZW5hYmxlZCBzdGF0ZSBpbiBtX2lzRW5hYmxlZFZpYVNjcmlwdCB3aGls
ZSBsb2FkaW5nLCByZXR1cm4gdGhpcyBpbmZvcm1hdGlvbiB0byBiZSBjb25zaXN0ZW50IHdpdGgg
RkYKKyAgICAvLyBhbmQgb3VyIGZ1dHVyZSBzZWxmIGhlcmUuCisgICAgaWYgKGlzTG9hZGluZygp
ICYmIG1faXNFbmFibGVkVmlhU2NyaXB0ICE9IFVuc2V0KQorICAgICAgICByZXR1cm4gbV9pc0Vu
YWJsZWRWaWFTY3JpcHQgPT0gRGlzYWJsZWQ7CisKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIERP
TVNldHRhYmxlVG9rZW5MaXN0KiBIVE1MTGlua0VsZW1lbnQ6OnNpemVzKCkgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oCmluZGV4IDhmZWRlMDJlNWU3ZjkyYjc0MGY4NTkw
OTEzZThiNzU5YTZkMTUxMzguLjBlMmJhZDY3Yjk1NTQ1NGIzNDc3Zjg1Y2JmMmY1ZTAxOWQyZjU4
MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaApAQCAtNTcsNyArNTcsOCBA
QCBwdWJsaWM6CiAKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgcmVuYW1lZCBpc1N0eWxl
U2hlZXRMb2FkaW5nIGFzIHRoaXMgaXMgb25seSB1c2VkIGZvciBzdHlsZXNoZWV0cy4KICAgICBi
b29sIGlzTG9hZGluZygpIGNvbnN0OwotICAgIGJvb2wgaXNFbmFibGVkVmlhU2NyaXB0KCkgY29u
c3QgeyByZXR1cm4gbV9pc0VuYWJsZWRWaWFTY3JpcHQ7IH0KKyAgICBib29sIGlzRW5hYmxlZFZp
YVNjcmlwdCgpIGNvbnN0IHsgY2hlY2tEaXNhYmxlZEFuZEVuYWJsZWRWaWFTY3JpcHRTdGF0ZSgp
OyByZXR1cm4gbV9pc0VuYWJsZWRWaWFTY3JpcHQgPT0gRW5hYmxlZDsgfQorICAgIHZvaWQgc2V0
RW5hYmxlZFZpYVNjcmlwdChib29sIGVuYWJsZWQpIHsgbV9pc0VuYWJsZWRWaWFTY3JpcHQgPSBl
bmFibGVkID8gRW5hYmxlZCA6IERpc2FibGVkOyB9CiAgICAgYm9vbCBkaXNhYmxlZCgpIGNvbnN0
OwogICAgIHZvaWQgc2V0RGlzYWJsZWQoYm9vbCk7CiAgICAgdm9pZCBzZXRTaXplcyhjb25zdCBT
dHJpbmcmKTsKQEAgLTg1LDcgKzg2LDYgQEAgcHJpdmF0ZToKICAgICAKICAgICB2aXJ0dWFsIGJv
b2wgaXNVUkxBdHRyaWJ1dGUoQXR0cmlidXRlKikgY29uc3Q7CiAKLXByaXZhdGU6CiAgICAgdmly
dHVhbCB2b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYp
IGNvbnN0OwogCiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaFBhcnNpbmdDaGlsZHJlbigpOwpAQCAt
OTQsNiArOTQsMTQgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFkZFBlbmRpbmdTaGVldChQZW5kaW5n
U2hlZXRUeXBlKTsKICAgICB2b2lkIHJlbW92ZVBlbmRpbmdTaGVldCgpOwogCisgICAgdm9pZCBj
aGVja0Rpc2FibGVkQW5kRW5hYmxlZFZpYVNjcmlwdFN0YXRlKCkgY29uc3QKKyAgICB7CisgICAg
ICAgIC8vIFdoZW4gd2UgYXJlIGxvYWRpbmcsIG1faXNFbmFibGVkVmlhU2NyaXB0IHN0b3JlcyB0
aGUgaW5mb3JtYXRpb24gaWYgSlMgY2FsbHMgdXMgYW5kIGNhbiB0aHVzIGhhdmUgYW55IHZhbHVl
LgorICAgICAgICAvLyBJZiBtX2lzRW5hYmxlZFZpYVNjcmlwdCBpcyBVbnNldCwgdGhlIHN0eWxl
IHNoZWV0IG1heSBiZSB1bmFibGVkIG9yIGRpc2FibGVkLgorICAgICAgICAvLyBGaW5hbGx5IGlm
IHdlIGFyZSBub3QgaW4gdGhlIDIgcHJldmlvdXMgY2FzZXMsIHRoZW4gSlMgc2hvdWxkIG92ZXJy
aWRlIG91ciBkaXNhYmxlZCB2YWx1ZSBzbyB3ZSBtdXN0IG1ha2Ugc3VyZQorICAgICAgICAvLyB0
aGF0IGJvdGggdmFsdWVzIG1hdGNoLgorICAgICAgICBBU1NFUlQoaXNMb2FkaW5nKCkgfHwgbV9p
c0VuYWJsZWRWaWFTY3JpcHQgPT0gVW5zZXQgfHwgKChtX2lzRW5hYmxlZFZpYVNjcmlwdCA9PSBE
aXNhYmxlZCAmJiBzaGVldCgpLT5kaXNhYmxlZCgpKSB8fCAobV9pc0VuYWJsZWRWaWFTY3JpcHQg
PT0gRW5hYmxlZCAmJiAhc2hlZXQoKS0+ZGlzYWJsZWQoKSkpKTsKKyAgICB9CiBwcml2YXRlOgog
ICAgIEhUTUxMaW5rRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqLCBib29s
IGNyZWF0ZWRCeVBhcnNlcik7CiAKQEAgLTEwNiwxMCArMTE0LDExIEBAIHByaXZhdGU6CiAgICAg
UmVmUHRyPERPTVNldHRhYmxlVG9rZW5MaXN0PiBtX3NpemVzOwogICAgIExpbmtSZWxBdHRyaWJ1
dGUgbV9yZWxBdHRyaWJ1dGU7CiAgICAgYm9vbCBtX2xvYWRpbmc7Ci0gICAgYm9vbCBtX2lzRW5h
YmxlZFZpYVNjcmlwdDsKKyAgICBlbnVtIEVuYWJsZWRWaWFTY3JpcHRTdGF0ZSB7IFVuc2V0LCBF
bmFibGVkLCBEaXNhYmxlZCB9OworICAgIEVuYWJsZWRWaWFTY3JpcHRTdGF0ZSBtX2lzRW5hYmxl
ZFZpYVNjcmlwdDsKICAgICBib29sIG1fY3JlYXRlZEJ5UGFyc2VyOwogICAgIGJvb2wgbV9pc0lu
U2hhZG93VHJlZTsKLSAgICAKKwogICAgIFBlbmRpbmdTaGVldFR5cGUgbV9wZW5kaW5nU2hlZXRU
eXBlOwogfTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104415</attachid>
            <date>2011-08-18 15:53:09 -0700</date>
            <delta_ts>2011-08-18 15:54:30 -0700</delta_ts>
            <desc>New version 4: Simplified further the code after Anti&apos;s comments.</desc>
            <filename>bug-65140-20110818155308.patch</filename>
            <type>text/plain</type>
            <size>26888</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTMzMTUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4M2MwYTk4MzIwMjU5NWFiMzhjZjY0
NzU5MzI5Nzk2ZDE4YmEzMDZlLi5hOTNjMDY3Y2MwNWEyZTY2MGI5MjQxNWI3ZWVmNTAwOGVjNzMz
MTI0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTEtMDgtMTggIEp1bGllbiBDaGFmZnJhaXgg
IDxqY2hhZmZyYWl4QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUkVHUkVTU0lPTiAocjg0MzI3LXI4
NDMyOSk6IENTUyBzdHlsZXNoZWV0cyBmYWlsIHRvIGxvYWQgb24gd3d3LmZsYWdzdGFyLmNvbSBs
b2dpbiBwYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02NTE0MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogZmFzdC9jc3MvbGluay1kaXNhYmxlZC1hdHRyLWV4cGVjdGVkLnR4dDogVGhpcyBjaGFuZ2Ug
aXMgYSBwcm9ncmVzc2lvbiwgYnV0IHdlIGFyZSBzdGlsbAorICAgICAgICBub3QgaGFuZGxpbmcg
dXBkYXRlcyB0byB0aGUgc2VsZWN0ZWQgc3R5bGUgc2V0IHByb3Blcmx5IChhbHJlYWR5IGNvdmVy
ZWQgYnkgYnVnIDYyNDA3KS4KKworICAgICAgICAqIGZhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxl
LWZpcnN0LWFsdGVybmF0ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3Nz
L3N0eWxlc2hlZXQtZW5hYmxlLWZpcnN0LWFsdGVybmF0ZS1vbi1sb2FkLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZmFzdC9jc3Mvc3R5bGVzaGVldC1lbmFibGUtZmlyc3QtYWx0ZXJu
YXRlLW9uLWxvYWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3Mvc3R5bGVzaGVldC1l
bmFibGUtZmlyc3QtYWx0ZXJuYXRlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL3N0
eWxlc2hlZXQtZW5hYmxlLXNlY29uZC1hbHRlcm5hdGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1zZWNvbmQtYWx0ZXJuYXRlLW9uLWxv
YWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9zdHlsZXNoZWV0LWVu
YWJsZS1zZWNvbmQtYWx0ZXJuYXRlLW9uLWxvYWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9jc3Mvc3R5bGVzaGVldC1lbmFibGUtc2Vjb25kLWFsdGVybmF0ZS5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL2Nzcy9saW5rLWNzcy1kaXNhYmxlZC12YWx1ZS13aXRoLXNsb3ct
bG9hZGluZy1zaGVldC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMv
Y3NzL2xpbmstY3NzLWRpc2FibGVkLXZhbHVlLXdpdGgtc2xvdy1sb2FkaW5nLXNoZWV0Lmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvY3NzL3Jlc291cmNlcy9saW5rLWNzcy1kaXNh
YmxlZC12YWx1ZS13aXRoLXNsb3ctbG9hZGluZy1zaGVldC5qczogQWRkZWQuCisgICAgICAgIChv
blNoZWV0TG9hZGVkKToKKyAgICAgICAgKHRlc3RXaGVuTG9hZGVkKToKKyAgICAgICAgKiBodHRw
L3Rlc3RzL2Nzcy9yZXNvdXJjZXMvc2xvdy1sb2FkaW5nLXNoZWV0LnBocDogQWRkZWQuCisgICAg
ICAgIFRob3NlIGFyZSBhIHZhcmlhdGlvbiBvbiB0aGUgc2FtZSB0aGVtZTogd2UgZGlzYWJsZSBz
b21lIHN0eWxlc2hlZXQgYW5kIGVuYWJsZSBvdGhlcnMsCisgICAgICAgIGVpdGhlciBkaXJlY3Rs
eSBvciBsYXRlci4KKworICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRp
b25zLnR4dDogTWFrZWQgbGluay1jc3MtZGlzYWJsZWQtdmFsdWUtd2l0aC1zbG93LWxvYWRpbmct
c2hlZXQuanMgYXMKKyAgICAgICAgU0xPVywgbm90IHN1cmUgd2h5IGFzIGl0IHNob3VsZCBydW4g
ZmFzdCBlbm91Z2ggYW5kIGRvZXMgbm90IHRpbWUgb3V0IGlmIHlvdSBydW4gaXQgbWFudWFsbHku
CisKIDIwMTEtMDgtMTggIEFuZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBbRXh0ZW5zaW9ucyBBUEldIHJlbmFtZSB3ZWJJbnNwZWN0
b3IucmVzb3VyY2VzIHRvIHdlYkluc3BlY3Rvci5uZXR3b3JrCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2Nzcy9saW5rLWRpc2FibGVkLWF0dHItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZmFzdC9jc3MvbGluay1kaXNhYmxlZC1hdHRyLWV4cGVjdGVkLnR4dAppbmRleCA1NzFhY2Iy
OGQ3NzI2NjBmYzJhZGI0YzIyZmE4MjBmYzU2YTZkZmNlLi5mNDEzNzBhMTI1ZjQyOTgwMzBkNWI2
NDEwZjU5NWM1Y2ExMzEzY2Q5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9saW5r
LWRpc2FibGVkLWF0dHItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL2xp
bmstZGlzYWJsZWQtYXR0ci1leHBlY3RlZC50eHQKQEAgLTE1LDExICsxNSwxMSBAQCBQQVNTIGdl
dENvbXB1dGVkU3R5bGUoY29uc29sZSkud2hpdGVTcGFjZSBpcyAncHJlLXdyYXAnCiBhbHRzaGVl
dAogRkFJTCBsaW5rLmRpc2FibGVkIHNob3VsZCBiZSB0cnVlLiBXYXMgZmFsc2UuCiBQQVNTIGxp
bmsuc2hlZXQgaXMgbm9uLW51bGwuCi1GQUlMIGdldENvbXB1dGVkU3R5bGUoY29uc29sZSkuYmFj
a2dyb3VuZENvbG9yIHNob3VsZCBiZSByZ2IoMCwgMTI4LCAwKS4gV2FzIHJnYmEoMCwgMCwgMCwg
MCkuCitQQVNTIGdldENvbXB1dGVkU3R5bGUoY29uc29sZSkuYmFja2dyb3VuZENvbG9yIGlzICdy
Z2IoMCwgMTI4LCAwKScKIEZBSUwgbGluay5kaXNhYmxlZCBzaG91bGQgYmUgdHJ1ZS4gV2FzIGZh
bHNlLgotUEFTUyBnZXRDb21wdXRlZFN0eWxlKGNvbnNvbGUpLmJhY2tncm91bmRDb2xvciBpcyBv
cmlnaW5hbEJHCitGQUlMIGdldENvbXB1dGVkU3R5bGUoY29uc29sZSkuYmFja2dyb3VuZENvbG9y
IHNob3VsZCBiZSByZ2JhKDAsIDAsIDAsIDApLiBXYXMgcmdiKDAsIDEyOCwgMCkuCiBQQVNTIGxp
bmsuZGlzYWJsZWQgaXMgZmFsc2UKLUZBSUwgZ2V0Q29tcHV0ZWRTdHlsZShjb25zb2xlKS5iYWNr
Z3JvdW5kQ29sb3Igc2hvdWxkIGJlIHJnYigwLCAxMjgsIDApLiBXYXMgcmdiYSgwLCAwLCAwLCAw
KS4KK1BBU1MgZ2V0Q29tcHV0ZWRTdHlsZShjb25zb2xlKS5iYWNrZ3JvdW5kQ29sb3IgaXMgJ3Jn
YigwLCAxMjgsIDApJwogUEFTUyBnZXRDb21wdXRlZFN0eWxlKGNvbnNvbGUpLmJhY2tncm91bmRD
b2xvciBpcyBvcmlnaW5hbEJHCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxlLWZpcnN0LWFs
dGVybmF0ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZXNoZWV0LWVu
YWJsZS1maXJzdC1hbHRlcm5hdGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMwNTI4ZmI3NThh
OTFkN2YzMDY4MjA3MTExNTBmOThhNWQxNzAyYzQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1maXJzdC1hbHRlcm5hdGUtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsNSBAQAorVGVzdCBmb3IgNjUxNDA6IFJFR1JFU1NJT04gKHI4NDMyNy1y
ODQzMjkpOiBDU1Mgc3R5bGVzaGVldHMgZmFpbCB0byBsb2FkIG9uIHd3dy5mbGFnc3Rhci5jb20g
bG9naW4gcGFnZQorCitUaGlzIHRlc3QgUEFTU0VEIGlmIFBBU1NFRCBpcyB3cml0dGVuIGJlbG93
IChhbHRlcm5hdGl2ZWx5IHRoZSBuZXh0IGxpbmUgc2hvdWxkIGhhdmUgYSBHUkVFTiBiYWNrZ3Jv
dW5kKS4KKworUEFTU0VECmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZXNo
ZWV0LWVuYWJsZS1maXJzdC1hbHRlcm5hdGUtb24tbG9hZC1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9mYXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1maXJzdC1hbHRlcm5hdGUtb24tbG9hZC1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzA1MjhmYjc1OGE5MWQ3ZjMwNjgyMDcxMTE1MGY5OGE1
ZDE3MDJjNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlc2hl
ZXQtZW5hYmxlLWZpcnN0LWFsdGVybmF0ZS1vbi1sb2FkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDUgQEAKK1Rlc3QgZm9yIDY1MTQwOiBSRUdSRVNTSU9OIChyODQzMjctcjg0MzI5KTogQ1NTIHN0
eWxlc2hlZXRzIGZhaWwgdG8gbG9hZCBvbiB3d3cuZmxhZ3N0YXIuY29tIGxvZ2luIHBhZ2UKKwor
VGhpcyB0ZXN0IFBBU1NFRCBpZiBQQVNTRUQgaXMgd3JpdHRlbiBiZWxvdyAoYWx0ZXJuYXRpdmVs
eSB0aGUgbmV4dCBsaW5lIHNob3VsZCBoYXZlIGEgR1JFRU4gYmFja2dyb3VuZCkuCisKK1BBU1NF
RApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGVzaGVldC1lbmFibGUtZmly
c3QtYWx0ZXJuYXRlLW9uLWxvYWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlc2hl
ZXQtZW5hYmxlLWZpcnN0LWFsdGVybmF0ZS1vbi1sb2FkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA3
NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTI5NWU0
MmRjMjRmNDEyOWFhM2FiNzkyN2Y2ZWE5NjQ3ODFlMGJkZAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxlLWZpcnN0LWFsdGVybmF0ZS1vbi1s
b2FkLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRG
Ly9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0icmVzb3VyY2VzL3JlZC5jc3MiIG1lZGlhPSJhbGwiIHRpdGxlPSJEZWZhdWx0IFN0eWxl
IFNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgLz4KKzxsaW5rIHJlbD0iYWx0ZXJuYXRlIHN0eWxlc2hl
ZXQiIGhyZWY9InJlc291cmNlcy9ncmVlbi5jc3MiIG1lZGlhPSJhbGwiIHRpdGxlPSJncmVlbiIg
dHlwZT0idGV4dC9jc3MiIC8+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgZnVuY3Rpb24gdGVzdCgpIHsKKyAgICAgICAgdmFy
IHJlZCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJsaW5rIilbMF07CisgICAgICAg
IHJlZC5kaXNhYmxlZCA9IHRydWU7CisgICAgICAgIHZhciBncmVlbiA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJsaW5rIilbMV07CisgICAgICAgIGdyZWVuLmRpc2FibGVkID0gdHJ1
ZTsKKyAgICAgICAgZ3JlZW4uZGlzYWJsZWQgPSBmYWxzZTsKKworICAgICAgICB2YXIgY29uc29s
ZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIik7CisgICAgICAgIGlmIChnZXRD
b21wdXRlZFN0eWxlKGNvbnNvbGUsIG51bGwpLmJhY2tncm91bmRDb2xvciA9PT0gInJnYigwLCAx
MjgsIDApIikKKyAgICAgICAgICAgIGNvbnNvbGUuaW5uZXJIVE1MID0gIlBBU1NFRCI7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIGNvbnNvbGUuaW5uZXJIVE1MID0gIkZBSUxFRCwgYmFja2dy
b3VuZCA9ICIgKyBnZXRDb21wdXRlZFN0eWxlKGNvbnNvbGUsIG51bGwpLmJhY2tncm91bmRDb2xv
cjsKKyAgICB9CisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCB0ZXN0LCBmYWxz
ZSk7Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGVzdCBmb3IgPGEgaHJlZj0iaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1MTQwIj42NTE0MDwvYT46IFJF
R1JFU1NJT04gKHI4NDMyNy1yODQzMjkpOiBDU1Mgc3R5bGVzaGVldHMgZmFpbCB0byBsb2FkIG9u
IHd3dy5mbGFnc3Rhci5jb20gbG9naW4gcGFnZTwvcD4KKzxwPlRoaXMgdGVzdCBQQVNTRUQgaWYg
UEFTU0VEIGlzIHdyaXR0ZW4gYmVsb3cgKGFsdGVybmF0aXZlbHkgdGhlIG5leHQgbGluZSBzaG91
bGQgaGF2ZSBhIEdSRUVOIGJhY2tncm91bmQpLjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPkZBSUxF
RDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9j
c3Mvc3R5bGVzaGVldC1lbmFibGUtZmlyc3QtYWx0ZXJuYXRlLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1maXJzdC1hbHRlcm5hdGUuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5mNTU5MDYzZjkxYzMyMGNiOTdiOTQ0MWFhYzNkNjFmNTUyMmUxNTMzCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGVzaGVldC1lbmFibGUtZmlyc3QtYWx0ZXJu
YXRlLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRG
Ly9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0icmVzb3VyY2VzL3JlZC5jc3MiIG1lZGlhPSJhbGwiIHRpdGxlPSJEZWZhdWx0IFN0eWxl
IFNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgLz4KKzxsaW5rIHJlbD0iYWx0ZXJuYXRlIHN0eWxlc2hl
ZXQiIGhyZWY9InJlc291cmNlcy9ncmVlbi5jc3MiIG1lZGlhPSJhbGwiIHRpdGxlPSJncmVlbiIg
dHlwZT0idGV4dC9jc3MiIC8+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgdmFyIHJlZCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJsaW5rIilbMF07CisgICAgcmVkLmRpc2FibGVkID0gdHJ1ZTsKKyAgICB2YXIg
Z3JlZW4gPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGluayIpWzFdOworICAgIGdy
ZWVuLmRpc2FibGVkID0gdHJ1ZTsKKyAgICBncmVlbi5kaXNhYmxlZCA9IGZhbHNlOworCisgICAg
ZnVuY3Rpb24gdGVzdCgpIHsKKyAgICAgICAgdmFyIGNvbnNvbGUgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiY29uc29sZSIpOworICAgICAgICBpZiAoZ2V0Q29tcHV0ZWRTdHlsZShjb25zb2xl
LCBudWxsKS5iYWNrZ3JvdW5kQ29sb3IgPT09ICJyZ2IoMCwgMTI4LCAwKSIpCisgICAgICAgICAg
ICBjb25zb2xlLmlubmVySFRNTCA9ICJQQVNTRUQiOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBjb25zb2xlLmlubmVySFRNTCA9ICJGQUlMRUQsIGJhY2tncm91bmQgPSAiICsgZ2V0Q29tcHV0
ZWRTdHlsZShjb25zb2xlLCBudWxsKS5iYWNrZ3JvdW5kQ29sb3I7CisgICAgfQorICAgIHdpbmRv
dy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgdGVzdCwgZmFsc2UpOworPC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxwPlRlc3QgZm9yIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02NTE0MCI+NjUxNDA8L2E+OiBSRUdSRVNTSU9OIChyODQzMjctcjg0
MzI5KTogQ1NTIHN0eWxlc2hlZXRzIGZhaWwgdG8gbG9hZCBvbiB3d3cuZmxhZ3N0YXIuY29tIGxv
Z2luIHBhZ2U8L3A+Cis8cD5UaGlzIHRlc3QgUEFTU0VEIGlmIFBBU1NFRCBpcyB3cml0dGVuIGJl
bG93IChhbHRlcm5hdGl2ZWx5IHRoZSBuZXh0IGxpbmUgc2hvdWxkIGhhdmUgYSBHUkVFTiBiYWNr
Z3JvdW5kKS48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj5GQUlMRUQ8L2Rpdj4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxl
LXNlY29uZC1hbHRlcm5hdGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5
bGVzaGVldC1lbmFibGUtc2Vjb25kLWFsdGVybmF0ZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YzA1MjhmYjc1OGE5MWQ3ZjMwNjgyMDcxMTE1MGY5OGE1ZDE3MDJjNAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxlLXNlY29uZC1hbHRlcm5h
dGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorVGVzdCBmb3IgNjUxNDA6IFJFR1JFU1NJ
T04gKHI4NDMyNy1yODQzMjkpOiBDU1Mgc3R5bGVzaGVldHMgZmFpbCB0byBsb2FkIG9uIHd3dy5m
bGFnc3Rhci5jb20gbG9naW4gcGFnZQorCitUaGlzIHRlc3QgUEFTU0VEIGlmIFBBU1NFRCBpcyB3
cml0dGVuIGJlbG93IChhbHRlcm5hdGl2ZWx5IHRoZSBuZXh0IGxpbmUgc2hvdWxkIGhhdmUgYSBH
UkVFTiBiYWNrZ3JvdW5kKS4KKworUEFTU0VECmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1zZWNvbmQtYWx0ZXJuYXRlLW9uLWxvYWQtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGVzaGVldC1lbmFibGUtc2Vjb25kLWFsdGVy
bmF0ZS1vbi1sb2FkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMDUyOGZiNzU4YTkxZDdmMzA2
ODIwNzExMTUwZjk4YTVkMTcwMmM0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9jc3Mvc3R5bGVzaGVldC1lbmFibGUtc2Vjb25kLWFsdGVybmF0ZS1vbi1sb2FkLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDUgQEAKK1Rlc3QgZm9yIDY1MTQwOiBSRUdSRVNTSU9OIChyODQzMjct
cjg0MzI5KTogQ1NTIHN0eWxlc2hlZXRzIGZhaWwgdG8gbG9hZCBvbiB3d3cuZmxhZ3N0YXIuY29t
IGxvZ2luIHBhZ2UKKworVGhpcyB0ZXN0IFBBU1NFRCBpZiBQQVNTRUQgaXMgd3JpdHRlbiBiZWxv
dyAoYWx0ZXJuYXRpdmVseSB0aGUgbmV4dCBsaW5lIHNob3VsZCBoYXZlIGEgR1JFRU4gYmFja2dy
b3VuZCkuCisKK1BBU1NFRApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGVz
aGVldC1lbmFibGUtc2Vjb25kLWFsdGVybmF0ZS1vbi1sb2FkLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1zZWNvbmQtYWx0ZXJuYXRlLW9uLWxvYWQuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5jYzgwODZlMGI0YTI3YzdmZmQ4MWEzM2MwZDAyNTMxNTUxNDJjNjZkCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGVzaGVldC1lbmFibGUtc2Vj
b25kLWFsdGVybmF0ZS1vbi1sb2FkLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCFET0NUWVBFIEhU
TUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL3JlZC5jc3MiIG1lZGlhPSJhbGwiIHRp
dGxlPSJEZWZhdWx0IFN0eWxlIFNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgLz4KKzxsaW5rIHJlbD0i
YWx0ZXJuYXRlIHN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy9yZWQuY3NzIiBtZWRpYT0iYWxs
IiB0aXRsZT0iZ3JlZW4iIHR5cGU9InRleHQvY3NzIiAvPgorPGxpbmsgcmVsPSJhbHRlcm5hdGUg
c3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL2dyZWVuLmNzcyIgbWVkaWE9ImFsbCIgdGl0bGU9
ImdyZWVuIiB0eXBlPSJ0ZXh0L2NzcyIgLz4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0
Ij4KKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICBmdW5jdGlvbiB0ZXN0KCkgeworICAg
ICAgICB2YXIgcmVkID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxpbmsiKVswXTsK
KyAgICAgICAgcmVkLmRpc2FibGVkID0gdHJ1ZTsKKyAgICAgICAgdmFyIGdyZWVuID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxpbmsiKVsyXTsKKyAgICAgICAgZ3JlZW4uZGlzYWJs
ZWQgPSBmYWxzZTsKKworICAgICAgICB2YXIgY29uc29sZSA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJjb25zb2xlIik7CisgICAgICAgIGlmIChnZXRDb21wdXRlZFN0eWxlKGNvbnNvbGUsIG51
bGwpLmJhY2tncm91bmRDb2xvciA9PT0gInJnYigwLCAxMjgsIDApIikKKyAgICAgICAgICAgIGNv
bnNvbGUuaW5uZXJIVE1MID0gIlBBU1NFRCI7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNv
bnNvbGUuaW5uZXJIVE1MID0gIkZBSUxFRCwgYmFja2dyb3VuZCA9ICIgKyBnZXRDb21wdXRlZFN0
eWxlKGNvbnNvbGUsIG51bGwpLmJhY2tncm91bmRDb2xvcjsKKyAgICB9CisgICAgd2luZG93LmFk
ZEV2ZW50TGlzdGVuZXIoImxvYWQiLCB0ZXN0LCBmYWxzZSk7Cis8L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPHA+VGVzdCBmb3IgPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTY1MTQwIj42NTE0MDwvYT46IFJFR1JFU1NJT04gKHI4NDMyNy1yODQzMjkp
OiBDU1Mgc3R5bGVzaGVldHMgZmFpbCB0byBsb2FkIG9uIHd3dy5mbGFnc3Rhci5jb20gbG9naW4g
cGFnZTwvcD4KKzxwPlRoaXMgdGVzdCBQQVNTRUQgaWYgUEFTU0VEIGlzIHdyaXR0ZW4gYmVsb3cg
KGFsdGVybmF0aXZlbHkgdGhlIG5leHQgbGluZSBzaG91bGQgaGF2ZSBhIEdSRUVOIGJhY2tncm91
bmQpLjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPkZBSUxFRDwvZGl2PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGVzaGVldC1lbmFibGUtc2Vj
b25kLWFsdGVybmF0ZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGVzaGVldC1lbmFi
bGUtc2Vjb25kLWFsdGVybmF0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAwZTVjMmMyMWRkNmY1YjU1MDA1
MTMyMjQwOWUzMzU3Nzc0ZjhhNmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1zZWNvbmQtYWx0ZXJuYXRlLmh0bWwKQEAgLTAsMCArMSwz
MSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0
bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL3JlZC5j
c3MiIG1lZGlhPSJhbGwiIHRpdGxlPSJEZWZhdWx0IFN0eWxlIFNoZWV0IiB0eXBlPSJ0ZXh0L2Nz
cyIgLz4KKzxsaW5rIHJlbD0iYWx0ZXJuYXRlIHN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy9y
ZWQuY3NzIiBtZWRpYT0iYWxsIiB0aXRsZT0iZ3JlZW4iIHR5cGU9InRleHQvY3NzIiAvPgorPGxp
bmsgcmVsPSJhbHRlcm5hdGUgc3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL2dyZWVuLmNzcyIg
bWVkaWE9ImFsbCIgdGl0bGU9ImdyZWVuIiB0eXBlPSJ0ZXh0L2NzcyIgLz4KKzxzY3JpcHQgdHlw
ZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICB2YXIg
cmVkID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxpbmsiKVswXTsKKyAgICByZWQu
ZGlzYWJsZWQgPSB0cnVlOworICAgIHZhciBncmVlbiA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJsaW5rIilbMl07CisgICAgZ3JlZW4uZGlzYWJsZWQgPSBmYWxzZTsKKworICAgIGZ1
bmN0aW9uIHRlc3QoKSB7CisgICAgICAgIHZhciBjb25zb2xlID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImNvbnNvbGUiKTsKKyAgICAgICAgaWYgKGdldENvbXB1dGVkU3R5bGUoY29uc29sZSwg
bnVsbCkuYmFja2dyb3VuZENvbG9yID09PSAicmdiKDAsIDEyOCwgMCkiKQorICAgICAgICAgICAg
Y29uc29sZS5pbm5lckhUTUwgPSAiUEFTU0VEIjsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
Y29uc29sZS5pbm5lckhUTUwgPSAiRkFJTEVELCBiYWNrZ3JvdW5kID0gIiArIGdldENvbXB1dGVk
U3R5bGUoY29uc29sZSwgbnVsbCkuYmFja2dyb3VuZENvbG9yOworICAgIH0KKyAgICB3aW5kb3cu
YWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIHRlc3QsIGZhbHNlKTsKKzwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8cD5UZXN0IGZvciA8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NjUxNDAiPjY1MTQwPC9hPjogUkVHUkVTU0lPTiAocjg0MzI3LXI4NDMy
OSk6IENTUyBzdHlsZXNoZWV0cyBmYWlsIHRvIGxvYWQgb24gd3d3LmZsYWdzdGFyLmNvbSBsb2dp
biBwYWdlPC9wPgorPHA+VGhpcyB0ZXN0IFBBU1NFRCBpZiBQQVNTRUQgaXMgd3JpdHRlbiBiZWxv
dyAoYWx0ZXJuYXRpdmVseSB0aGUgbmV4dCBsaW5lIHNob3VsZCBoYXZlIGEgR1JFRU4gYmFja2dy
b3VuZCkuPC9wPgorPGRpdiBpZD0iY29uc29sZSI+RkFJTEVEPC9kaXY+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nzcy9saW5rLWNzcy1kaXNh
YmxlZC12YWx1ZS13aXRoLXNsb3ctbG9hZGluZy1zaGVldC1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2Nzcy9saW5rLWNzcy1kaXNhYmxlZC12YWx1ZS13aXRoLXNsb3ctbG9h
ZGluZy1zaGVldC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjE0MDBhYWEwZWMwYTRlMjBjZmQ3
NmIwYTM1MjBiOTE3NGUzNjU0OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvY3NzL2xpbmstY3NzLWRpc2FibGVkLXZhbHVlLXdpdGgtc2xvdy1sb2FkaW5nLXNoZWV0
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE5IEBACitUZXN0IHRoYXQgSFRNTExpbmtFbGVtZW50
J3MgZGlzYWJsZWQgYXR0cmlidXRlIGlzIHByb3Blcmx5IGNhY2hlZCB3aGlsZSBzZXQgd2hlbiBs
b2FkaW5nIGEgc3R5bGVzaGVldC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1Rl
c3RpbmcgdmFsdWUgb2YgJ2Rpc2FibGVkJyBwcmlvciB0byBsb2FkIGp1c3QgYWZ0ZXIgc2V0dGlu
ZyB0aGVtCitQQVNTIG1haW5TaGVldExpbmsuc2hlZXQgaXMgbm9uLW51bGwuCitQQVNTIGFsdGVy
bmF0ZVNoZWV0TGluay5zaGVldCBpcyBudWxsCitQQVNTIG1haW5TaGVldExpbmsuZGlzYWJsZWQg
aXMgdHJ1ZQorUEFTUyBhbHRlcm5hdGVTaGVldExpbmsuZGlzYWJsZWQgaXMgZmFsc2UKK1Rlc3Rp
bmcgdGhlIHZhbHVlcyB3aGVuIHRoZSBhbHRlcm5hdGUgc2hlZXQgaXMgbG9hZGVkIChhcyB0aGlz
IGlzIHRoZSBvbmx5IG9uZSB0aGF0IGhhcyBzaGVldCgpID09PSBudWxsKQorUEFTUyBtYWluU2hl
ZXRMaW5rLnNoZWV0IGlzIG5vbi1udWxsLgorUEFTUyBhbHRlcm5hdGVTaGVldExpbmsuc2hlZXQg
aXMgbm9uLW51bGwuCitQQVNTIG1haW5TaGVldExpbmsuZGlzYWJsZWQgaXMgdHJ1ZQorUEFTUyBh
bHRlcm5hdGVTaGVldExpbmsuZGlzYWJsZWQgaXMgZmFsc2UKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2Nzcy9saW5rLWNzcy1kaXNhYmxlZC12YWx1ZS13aXRoLXNsb3ctbG9hZGluZy1z
aGVldC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jc3MvbGluay1jc3MtZGlzYWJsZWQt
dmFsdWUtd2l0aC1zbG93LWxvYWRpbmctc2hlZXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDc1NQpp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wN2ZmMmNjY2Ex
YjRmZTIxZWYxZDEyNTE5NWE2NjJmY2ZiMjg2NjBhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9jc3MvbGluay1jc3MtZGlzYWJsZWQtdmFsdWUtd2l0aC1zbG93LWxv
YWRpbmctc2hlZXQuaHRtbApAQCAtMCwwICsxLDE0IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMg
Ii0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvc2xvdy1sb2FkaW5nLXNoZWV0LnBocD9jb2xvcj1yZWQi
IG1lZGlhPSJhbGwiIHRpdGxlPSJEZWZhdWx0IFN0eWxlIFNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIg
Lz4KKzxsaW5rIHJlbD0iYWx0ZXJuYXRlIHN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy9zbG93
LWxvYWRpbmctc2hlZXQucGhwP2NvbG9yPWdyZWVuIiBtZWRpYT0iYWxsIiB0aXRsZT0iZ3JlZW4i
IHR5cGU9InRleHQvY3NzIiAvPgorPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlv
biI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L2xpbmstY3NzLWRpc2FibGVkLXZhbHVlLXdpdGgtc2xvdy1sb2FkaW5nLXNoZWV0LmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvY3NzL3Jlc291cmNlcy9saW5rLWNzcy1kaXNhYmxlZC12YWx1ZS13aXRoLXNsb3ctbG9h
ZGluZy1zaGVldC5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY3NzL3Jlc291cmNlcy9saW5r
LWNzcy1kaXNhYmxlZC12YWx1ZS13aXRoLXNsb3ctbG9hZGluZy1zaGVldC5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wNTg5ZjI3MzZhNjQ0ODk1NTU0ZTlkMDZkODBmZTViOWE4OTk3ZmYzCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jc3MvcmVzb3VyY2VzL2xpbmstY3NzLWRpc2Fi
bGVkLXZhbHVlLXdpdGgtc2xvdy1sb2FkaW5nLXNoZWV0LmpzCkBAIC0wLDAgKzEsNDUgQEAKK2Rl
c2NyaXB0aW9uKCJUZXN0IHRoYXQgSFRNTExpbmtFbGVtZW50J3MgZGlzYWJsZWQgYXR0cmlidXRl
IGlzIHByb3Blcmx5IGNhY2hlZCB3aGlsZSBzZXQgd2hlbiBsb2FkaW5nIGEgc3R5bGVzaGVldC4i
KTsKKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci53YWl0VW50aWxEb25lKCk7CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsK
KworbWFpblNoZWV0TGluayA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJsaW5rIilb
MF07CithbHRlcm5hdGVTaGVldExpbmsgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
bGluayIpWzFdOworCittYWluU2hlZXRMaW5rLmRpc2FibGVkID0gdHJ1ZTsKK2FsdGVybmF0ZVNo
ZWV0TGluay5kaXNhYmxlZCA9IGZhbHNlOworCitkZWJ1ZygiVGVzdGluZyB2YWx1ZSBvZiAnZGlz
YWJsZWQnIHByaW9yIHRvIGxvYWQganVzdCBhZnRlciBzZXR0aW5nIHRoZW0iKTsKK3Nob3VsZEJl
Tm9uTnVsbCgibWFpblNoZWV0TGluay5zaGVldCIpOworc2hvdWxkQmVOdWxsKCJhbHRlcm5hdGVT
aGVldExpbmsuc2hlZXQiKTsKK3Nob3VsZEJlVHJ1ZSgibWFpblNoZWV0TGluay5kaXNhYmxlZCIs
IHRydWUpOworc2hvdWxkQmVGYWxzZSgiYWx0ZXJuYXRlU2hlZXRMaW5rLmRpc2FibGVkIik7CisK
K2RlYnVnKCJUZXN0aW5nIHRoZSB2YWx1ZXMgd2hlbiB0aGUgYWx0ZXJuYXRlIHNoZWV0IGlzIGxv
YWRlZCAoYXMgdGhpcyBpcyB0aGUgb25seSBvbmUgdGhhdCBoYXMgc2hlZXQoKSA9PT0gbnVsbCki
KTsKKworZnVuY3Rpb24gb25TaGVldExvYWRlZChmLCBlbGVtLCBtYXh0aW1lKSB7CisgICAgaWYg
KGVsZW0uc2hlZXQgfHwgbWF4dGltZSA8PSAwKQorICAgICAgICBmKCk7CisgICAgZWxzZQorICAg
ICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgb25TaGVldExvYWRlZChmLCBlbGVtLCBtYXh0
aW1lIC0gMjUpO30sIDI1KTsKK30KKworZnVuY3Rpb24gdGVzdFdoZW5Mb2FkZWQoKSB7CisgICAg
ICAgIC8vIFRob3NlIG5leHQgMiBsaW5lcyBhcmUgYSBzYW5pdHkgY2hlY2suCisgICAgICAgIC8v
IElmIHRoZSBzZWNvbmQgY2hlY2sgZmFpbHMsIGl0IGlzIGxpa2VseSB0aGF0IHRoZSB0ZXN0IHRp
bWVkIG91dCBhbmQgdGh1cworICAgICAgICAvLyB5b3UgY2FuIGRpc2NhcmQgdGhlIHJlc3Qgb2Yg
cmVzdWx0cyBhcyBpdCBpcyBub3QgdGVzdGluZyB3aGF0IHdlIHdhbnQKKyAgICAgICAgLy8gKG5h
bWVseSB0aGF0IHRoZSBkaXNhYmxlZCB2YWx1ZSBpcyBwYXNzZWQgdG8gdGhlIGZpbmFsIHNoZWV0
KS4KKyAgICAgICAgc2hvdWxkQmVOb25OdWxsKCJtYWluU2hlZXRMaW5rLnNoZWV0Iik7CisgICAg
ICAgIHNob3VsZEJlTm9uTnVsbCgiYWx0ZXJuYXRlU2hlZXRMaW5rLnNoZWV0Iik7CisKKyAgICAg
ICAgc2hvdWxkQmVUcnVlKCJtYWluU2hlZXRMaW5rLmRpc2FibGVkIik7CisgICAgICAgIHNob3Vs
ZEJlRmFsc2UoImFsdGVybmF0ZVNoZWV0TGluay5kaXNhYmxlZCIpOworCisgICAgICAgIGZpbmlz
aEpTVGVzdCgpOworfQorCitvblNoZWV0TG9hZGVkKHRlc3RXaGVuTG9hZGVkLCBhbHRlcm5hdGVT
aGVldExpbmssIDUwMCk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jc3MvcmVzb3VyY2VzL3Nsb3ctbG9hZGluZy1z
aGVldC5waHAgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nzcy9yZXNvdXJjZXMvc2xvdy1sb2Fk
aW5nLXNoZWV0LnBocApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yODkzN2Q0MmFmODAzMDViZThjMzhjYzZmNmU5ZjAy
ZjAwYmY2ZGU5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jc3Mv
cmVzb3VyY2VzL3Nsb3ctbG9hZGluZy1zaGVldC5waHAKQEAgLTAsMCArMSwxNSBAQAorPD9waHAK
Ky8vIFdlIHNsZWVwIGhlcmUgc28gdGhhdCB3ZSBhcmUgaGF2ZSBlbm91Z2ggdGltZSB0byB0ZXN0
IHRoZSBkaWZmZXJlbnQgYXR0cmlidXRlcyBiZWZvcmUgdGhlIHN0eWxlc2hlZXQgaXMgZnVsbHkg
bG9hZGVkLgordXNsZWVwKDEwMCk7CisKK2hlYWRlcigiRXhwaXJlczogVGh1LCAwMSBEZWMgMjAw
MyAxNjowMDowMCBHTVQiKTsKK2hlYWRlcigiQ2FjaGUtQ29udHJvbDogbm8tY2FjaGUsIG5vLXN0
b3JlLCBtdXN0LXJldmFsaWRhdGUiKTsKK2hlYWRlcigiUHJhZ21hOiBuby1jYWNoZSIpOworaGVh
ZGVyKCJDb250ZW50LVR5cGU6IHRleHQvY3NzIik7CisKKyRjb2xvciA9ICRfR0VUWydjb2xvcidd
OworCitlY2hvICJoMSB7IGJhY2tncm91bmQtY29sb3I6ICRjb2xvciB9XG4iOworb2JfZmx1c2go
KTsKK2ZsdXNoKCk7Cis/PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0vdGVzdF9leHBlY3RhdGlvbnMudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0v
dGVzdF9leHBlY3RhdGlvbnMudHh0CmluZGV4IDJiNmE4NWI4NWU0NTgxM2NlODQ5YTQ2ZTQxOGVm
OTMzNmMwNmM0YTkuLjg3YTMwZjA4NzYxYWRjYmVmOGViODg2MTBkZDc2MDRmMzZiODFiMTEgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25z
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9u
cy50eHQKQEAgLTY0LDYgKzY0LDggQEAgQlVHV0s2NDQ5OCBTTE9XIERFQlVHIDogZmFzdC9lbmNv
ZGluZy9wYXJzZXItdGVzdHMtNDAuaHRtbCA9IFBBU1MKIEJVR1dLNjQ1MDIgU0xPVyBERUJVRyA6
IGZhc3QvZm9ybXMvZm9ybS1hc3NvY2lhdGVkLWVsZW1lbnQtY3Jhc2gzLmh0bWwgPSBQQVNTCiBX
T05URklYIFNMT1cgOiBmYXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWNsb25lLXJl
YWxseS1kZWVwLWFycmF5Lmh0bWwgPSBQQVNTCiAKK0JVR1dLNjUxNDAgU0xPVzogaHR0cC90ZXN0
cy9jc3MvbGluay1jc3MtZGlzYWJsZWQtdmFsdWUtd2l0aC1zbG93LWxvYWRpbmctc2hlZXQuaHRt
bCA9IFBBU1MKKwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vIFNLSVBQRUQgVEVTVFMKIC8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggZWQwMDYwNjRlODNkZTdlMWRkNmE3ZjMwMGIxZDVlZDc0NTc4MjgwYS4uZDVm
YmVlMzJkNDA4MzI0Yjk5NzFmODFiOTk5ODI3ODM5NDg0ODUzZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDQ4IEBACisyMDExLTA4LTE4ICBKdWxpZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJr
aXQub3JnPgorCisgICAgICAgIFJFR1JFU1NJT04gKHI4NDMyNy1yODQzMjkpOiBDU1Mgc3R5bGVz
aGVldHMgZmFpbCB0byBsb2FkIG9uIHd3dy5mbGFnc3Rhci5jb20gbG9naW4gcGFnZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjUxNDAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0czogZmFzdC9jc3Mv
c3R5bGVzaGVldC1lbmFibGUtZmlyc3QtYWx0ZXJuYXRlLW9uLWxvYWQuaHRtbAorICAgICAgICAg
ICAgICAgZmFzdC9jc3Mvc3R5bGVzaGVldC1lbmFibGUtZmlyc3QtYWx0ZXJuYXRlLmh0bWwKKyAg
ICAgICAgICAgICAgIGZhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxlLXNlY29uZC1hbHRlcm5hdGUt
b24tbG9hZC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1z
ZWNvbmQtYWx0ZXJuYXRlLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvY3NzL2xpbmst
Y3NzLWRpc2FibGVkLXZhbHVlLXdpdGgtc2xvdy1sb2FkaW5nLXNoZWV0Lmh0bWwKKworICAgICAg
ICBUaGUgZ2lzdCBvZiB0aGUgaXNzdWUgaXMgdGhhdCB3ZSB3ZXJlIGlnbm9yaW5nIGNhbGxzIHRv
IEhUTUxMaW5rRWxlbWVudDo6c2V0RGlzYWJsZWQgdGhhdCB3b3VsZCBlbmFibGUgYQorICAgICAg
ICBzdHlsZSBzaGVldCB3aGVuIHdlIHdlcmUgbG9hZGluZyBhIHN0eWxlc2hlZXQgKG1fc2hlZXQg
d2FzIDAgYW5kIHRodXMgaWdub3JlZCB0aGUgY2FsbCBwZXIgdGhlIHNwZWMpLgorCisgICAgICAg
IEZGIGdvZXMgYWdhaW5zdCB0aGUgQ1NTIE9NIHNwZWMgaW4gdGhpcyBjYXNlIGFuZCBhbHdheXMg
a2VlcCBhbiBhc3NvY2lhdGVkIHNoZWV0IGFzIGxvbmcgYXMgJ3JlbCcgaGludHMKKyAgICAgICAg
YXQgYSBzdHlsZXNoZWV0IGxpbmsgYW5kIGhyZWYgaXMgcHJlc2VudC4gSW5zdGVhZCBvZiBzaWRp
bmcgd2l0aCBGRiwgSSBjb250aW51ZWQgdG8gZm9sbG93IHRoZQorICAgICAgICBzcGVjaWZpY2F0
aW9uIGFuZCBzdG9yZSB0aGUgZW5hYmxlZCB2aWEgamF2YXNjcmlwdCBzdGF0ZSBpbnRvIG1fc2Ny
aXB0U3RhdGUgKHJlbmFtZWQgZnJvbQorICAgICAgICBtX2lzRW5hYmxlZFZpYVNjcmlwdCkuIFRo
aXMgaW5mb3JtYXRpb24gZ2V0cyBtZXJnZWQgYmFjayBpbnRvIHRoZSBzdHlsZSBzaGVldCBkaXNh
YmxlZCBzdGF0ZSB3aGVuIGl0IGlzCisgICAgICAgIGF2YWlsYWJsZS4KKworICAgICAgICBXaGls
ZSBkZWJ1Z2dpbmcgdGhlIGNhc2UgYXQgaGFuZCwgSSBmb3VuZCBzb21lIGNhc2VzIHRoYXQgd2Vy
ZSBub3QgcHJvcGVybHkgaGFuZGxlZCBhbmQgd2VyZSBmaXhlZCBhcworICAgICAgICBwYXJ0IG9m
IHRoaXMgY2hhbmdlLgorCisgICAgICAgICogaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50OjpIVE1MTGlua0VsZW1lbnQpOiBVcGRhdGVk
IGFmdGVyIG1faXNFbmFibGVkVmlhU2NyaXB0IHJlbmFtZS4KKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxMaW5rRWxlbWVudDo6c2V0RGlzYWJsZWQpOiBBbHdheXMgY2FsbCBzZXRJc0VuYWJsZWRWaWFT
Y3JpcHQgc28gdGhhdAorICAgICAgICB0aGUgaW5mb3JtYXRpb24gaXMgcHJvcGVybHkgc3RvcmVk
IChlaXRoZXIgZm9yIHJlY2FsY1N0eWxlU2VsZWN0b3Igb3IganVzdCB0byBzdG9yZQorICAgICAg
ICB0aGUgc3RhdGUgZHVyaW5nIGxvYWRpbmcpLgorCisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlu
a0VsZW1lbnQ6OnNoZWV0TG9hZGVkKTogTWVyZ2UgYmFjayB0aGUgc3RhdGUgZnJvbSBtX3Njcmlw
dFN0YXRlIHRvCisgICAgICAgIHRoZSBzaGVldCdzIGRpc2FibGVkIHN0YXRlLgorCisgICAgICAg
IChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OmRpc2FibGVkKTogQWNjb3VudCBmb3IgdGhlIHRl
bXBvcmFyeSBzdGF0ZSBhbmQgcmV0dXJuIHRoZQorICAgICAgICByaWdodCB2YWx1ZS4gSXQgbWF0
Y2hlcyBGRiBhbmQgd2hhdCBwZW9wbGUgd291bGQgZXhwZWN0LgorCisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTGlua0VsZW1lbnQ6OmNoZWNrRGlzYWJsZWRBbmRFbmFibGVkVmlhU2NyaXB0U3RhdGUp
OiBEZWJ1ZyBvbmx5IG1ldGhvZAorICAgICAgICB0aGF0IGNoZWNrcyB0aGF0IGRpc2FibGVkKCkg
YW5kIGlzRW5hYmxlZFZpYVNjcmlwdCgpIGFyZSBjb25zaXN0ZW50IHdpdGggZWFjaCBvdGhlcgor
ICAgICAgICAodW5kZXIgc29tZSBjaXJjdW1zdGFuY2VzKS4KKworICAgICAgICAqIGh0bWwvSFRN
TExpbmtFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OmlzRW5h
YmxlZFZpYVNjcmlwdCk6IFVwZGF0ZWQgYWZ0ZXIgbV9pc0VuYWJsZWRWaWFTY3JpcHQgcmVuYW1l
LgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50OjpzZXRJc0VuYWJsZWRWaWFTY3Jp
cHQpOiBBZGRlZCBzZXR0ZXIuCisKIDIwMTEtMDgtMTggIEFuZHJleSBLb3N5YWtvdiAgPGNhc2Vx
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBbRXh0ZW5zaW9ucyBBUEld
IHJlbmFtZSB3ZWJJbnNwZWN0b3IucmVzb3VyY2VzIHRvIHdlYkluc3BlY3Rvci5uZXR3b3JrCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKaW5kZXggNGJjNmU5MzNlY2QwZGYz
YmNlYzM5YjFjYzhjYTNmOThmOTc4ODlkMi4uNDNjMjk2NzZhYzUxMjNiZjhjNzFkYjE5MmRmMTI2
Yzg1NGU0MmI0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcApAQCAt
NTYsNyArNTYsNyBAQCBpbmxpbmUgSFRNTExpbmtFbGVtZW50OjpIVE1MTGlua0VsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqCiAgICAgLCBtX2xpbmtMb2FkZXIo
dGhpcykKICAgICAsIG1fc2l6ZXMoRE9NU2V0dGFibGVUb2tlbkxpc3Q6OmNyZWF0ZSgpKQogICAg
ICwgbV9sb2FkaW5nKGZhbHNlKQotICAgICwgbV9pc0VuYWJsZWRWaWFTY3JpcHQoZmFsc2UpCisg
ICAgLCBtX3NjcmlwdFN0YXRlKFVuc2V0KQogICAgICwgbV9jcmVhdGVkQnlQYXJzZXIoY3JlYXRl
ZEJ5UGFyc2VyKQogICAgICwgbV9pc0luU2hhZG93VHJlZShmYWxzZSkKICAgICAsIG1fcGVuZGlu
Z1NoZWV0VHlwZShOb25lKQpAQCAtODUsMTUgKzg1LDIwIEBAIEhUTUxMaW5rRWxlbWVudDo6fkhU
TUxMaW5rRWxlbWVudCgpCiAKIHZvaWQgSFRNTExpbmtFbGVtZW50OjpzZXREaXNhYmxlZChib29s
IGRpc2FibGVkKQogeworICAgIGJvb2wgd2FzRW5hYmxlZFZpYVNjcmlwdCA9IGlzRW5hYmxlZFZp
YVNjcmlwdCgpOworICAgIHNldElzRW5hYmxlZFZpYVNjcmlwdCghZGlzYWJsZWQpOworCiAgICAg
aWYgKCFtX3NoZWV0KQogICAgICAgICByZXR1cm47CiAKICAgICBib29sIHdhc0Rpc2FibGVkID0g
bV9zaGVldC0+ZGlzYWJsZWQoKTsKLSAgICBpZiAod2FzRGlzYWJsZWQgPT0gZGlzYWJsZWQpCisg
ICAgaWYgKHdhc0Rpc2FibGVkID09IGRpc2FibGVkKSB7CisgICAgICAgIGlmICh3YXNFbmFibGVk
VmlhU2NyaXB0ICE9IGlzRW5hYmxlZFZpYVNjcmlwdCgpKQorICAgICAgICAgICAgZG9jdW1lbnQo
KS0+c3R5bGVTZWxlY3RvckNoYW5nZWQoRGVmZXJSZWNhbGNTdHlsZSk7CiAgICAgICAgIHJldHVy
bjsKKyAgICB9CiAKICAgICBtX3NoZWV0LT5zZXREaXNhYmxlZChkaXNhYmxlZCk7Ci0gICAgbV9p
c0VuYWJsZWRWaWFTY3JpcHQgPSAhZGlzYWJsZWQ7CiAKICAgICAvLyBJZiB3ZSBjaGFuZ2UgdGhl
IGRpc2FibGVkIHN0YXRlIHdoaWxlIHRoZSBzaGVldCBpcyBzdGlsbCBsb2FkaW5nLCB0aGVuIHdl
IGhhdmUgdG8KICAgICAvLyBwZXJmb3JtIHRocmVlIGNoZWNrczoKQEAgLTEyMCw2ICsxMjUsOCBA
QCB2b2lkIEhUTUxMaW5rRWxlbWVudDo6c2V0RGlzYWJsZWQoYm9vbCBkaXNhYmxlZCkKIAogICAg
IGlmICghZGlzYWJsZWQpCiAgICAgICAgIHByb2Nlc3MoKTsKKworICAgIGNoZWNrRGlzYWJsZWRB
bmRFbmFibGVkVmlhU2NyaXB0U3RhdGUoKTsKIH0KIAogU3R5bGVTaGVldCogSFRNTExpbmtFbGVt
ZW50OjpzaGVldCgpIGNvbnN0CkBAIC0zNTksMTAgKzM2NiwyMCBAQCB2b2lkIEhUTUxMaW5rRWxl
bWVudDo6bGlua0xvYWRpbmdFcnJvcmVkKCkKIAogYm9vbCBIVE1MTGlua0VsZW1lbnQ6OnNoZWV0
TG9hZGVkKCkKIHsKKyAgICAvLyBNaWdyYXRlIHRoZSBkaXNhYmxlZCBpbmZvcm1hdGlvbiBiZWZv
cmUgcmVtb3ZlUGVuZGluZ1NoZWV0IGlzIGNhbGxlZAorICAgIC8vIGFzIGl0IHdpbGwgc3RhcnQg
YSByZWNhbFN0eWxlU2VsZWN0b3Igd2hpY2ggbmVlZHMgdGhpcyBpbmZvcm1hdGlvbi4KKyAgICBp
ZiAobV9zY3JpcHRTdGF0ZSAhPSBVbnNldCkgeworICAgICAgICBBU1NFUlQoIW1fbG9hZGluZyk7
CisgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgQVNTRVJUIHRoYXQgaXQgd2FzIHNldCBmb3Ig
c3R5bGVzaGVldHMgb25seSwgYnV0CisgICAgICAgIC8vIGN1cnJlbnRseSB3ZSBhbGxvdyBzZXRE
aXNhYmxlZCB0byBiZSBjYWxsZWQgcmVnYXJkbGVzcyBvZiB0aGUgPGxpbms+IHJlbC4KKyAgICAg
ICAgc2V0RGlzYWJsZWQobV9zY3JpcHRTdGF0ZSA9PSBEaXNhYmxlZFZpYVNjcmlwdCk7CisgICAg
fQorCiAgICAgaWYgKCFpc0xvYWRpbmcoKSkgewogICAgICAgICByZW1vdmVQZW5kaW5nU2hlZXQo
KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQorCiAgICAgcmV0dXJuIGZhbHNlOwogfQog
CkBAIC00NDUsNyArNDYyLDE5IEBAIHZvaWQgSFRNTExpbmtFbGVtZW50OjpyZW1vdmVQZW5kaW5n
U2hlZXQoKQogCiBib29sIEhUTUxMaW5rRWxlbWVudDo6ZGlzYWJsZWQoKSBjb25zdAogewotICAg
IHJldHVybiBtX3NoZWV0ICYmIG1fc2hlZXQtPmRpc2FibGVkKCk7CisgICAgY2hlY2tEaXNhYmxl
ZEFuZEVuYWJsZWRWaWFTY3JpcHRTdGF0ZSgpOworCisgICAgaWYgKCFtX3NoZWV0KSB7CisgICAg
ICAgIC8vIEZGIGRpc2FncmVlcyB3aXRoIHRoZSBDU1MgT00gc3BlYyBhbmQgYWx3YXlzIGhhcyBh
biBhc3NvY2lhdGVkIHN0eWxlc2hlZXQgZm9yIGFsdGVybmF0ZSBzaGVldCAocmVnYXJkbGVzcyBv
ZiB3aGV0aGVyCisgICAgICAgIC8vIHRoZSByZXNvdXJjZSBpcyBmZXRjaGVkKS4gQXMgd2Ugc3Rv
cmUgdGhlIGVuYWJsZWQgc3RhdGUgaW4gbV9zY3JpcHRTdGF0ZSB3aGlsZSBsb2FkaW5nLCByZXR1
cm4gdGhpcyBpbmZvcm1hdGlvbiB0byBiZQorICAgICAgICAvLyBjb25zaXN0ZW50IHdpdGggRkYu
CisgICAgICAgIGlmIChpc0xvYWRpbmcoKSAmJiBtX3NjcmlwdFN0YXRlICE9IFVuc2V0KQorICAg
ICAgICAgICAgcmV0dXJuIG1fc2NyaXB0U3RhdGUgPT0gRGlzYWJsZWRWaWFTY3JpcHQ7CisKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiBtX3NoZWV0LT5kaXNhYmxl
ZCgpOwogfQogCiBET01TZXR0YWJsZVRva2VuTGlzdCogSFRNTExpbmtFbGVtZW50OjpzaXplcygp
IGNvbnN0CkBAIC00NTgsNCArNDg3LDIzIEBAIHZvaWQgSFRNTExpbmtFbGVtZW50OjpzZXRTaXpl
cyhjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgIG1fc2l6ZXMtPnNldFZhbHVlKHZhbHVlKTsKIH0K
IAordm9pZCBIVE1MTGlua0VsZW1lbnQ6OmNoZWNrRGlzYWJsZWRBbmRFbmFibGVkVmlhU2NyaXB0
U3RhdGUoKSBjb25zdAoreworI2lmbmRlZiBOREVCVUcKKyAgICBpZiAoIW1fcmVsQXR0cmlidXRl
Lm1faXNTdHlsZVNoZWV0KQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBEdXJpbmcgbG9hZGlu
ZywgbV9zY3JpcHRTdGF0ZSBob2xkcyB0aGUgdGVtcG9yYXJ5IHZhbHVlIGZvciBzaGVldCgpLT5k
aXNhYmxlZCgpCisgICAgLy8gc28gaXQgY2FuIGhhdmUgYW55IHZhbHVlcyAoc2FtZSBmb3Igc2hl
ZXQoKS0+ZGlzYWJsZWQoKSkuCisgICAgaWYgKGlzTG9hZGluZygpKQorICAgICAgICByZXR1cm47
CisKKyAgICBpZiAobV9zY3JpcHRTdGF0ZSA9PSBVbnNldCkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgYm9vbCBpc0Rpc2FibGVkVmlhU2NyaXB0ID0gbV9zY3JpcHRTdGF0ZSA9PSBEaXNhYmxlZFZp
YVNjcmlwdDsKKyAgICBBU1NFUlQoaXNEaXNhYmxlZFZpYVNjcmlwdCA9PSBzaGVldCgpLT5kaXNh
YmxlZCgpKTsKKyNlbmRpZgorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTGlua0VsZW1lbnQuaAppbmRleCA4ZmVkZTAyZTVlN2Y5MmI3NDBmODU5MDkxM2U4
Yjc1OWE2ZDE1MTM4Li42NTVkNTA1YWFhOTI4YTFjNmUxNjcyMDk0ZTNmZTlkMTZjMTJmNzQzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVi
bGljOgogCiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIHJlbmFtZWQgaXNTdHlsZVNoZWV0
TG9hZGluZyBhcyB0aGlzIGlzIG9ubHkgdXNlZCBmb3Igc3R5bGVzaGVldHMuCiAgICAgYm9vbCBp
c0xvYWRpbmcoKSBjb25zdDsKLSAgICBib29sIGlzRW5hYmxlZFZpYVNjcmlwdCgpIGNvbnN0IHsg
cmV0dXJuIG1faXNFbmFibGVkVmlhU2NyaXB0OyB9CisgICAgYm9vbCBpc0VuYWJsZWRWaWFTY3Jp
cHQoKSBjb25zdCB7IHJldHVybiBtX3NjcmlwdFN0YXRlID09IEVuYWJsZWRWaWFTY3JpcHQ7IH0K
ICAgICBib29sIGRpc2FibGVkKCkgY29uc3Q7CiAgICAgdm9pZCBzZXREaXNhYmxlZChib29sKTsK
ICAgICB2b2lkIHNldFNpemVzKGNvbnN0IFN0cmluZyYpOwpAQCAtODUsNyArODUsNiBAQCBwcml2
YXRlOgogICAgIAogICAgIHZpcnR1YWwgYm9vbCBpc1VSTEF0dHJpYnV0ZShBdHRyaWJ1dGUqKSBj
b25zdDsKIAotcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgYWRkU3VicmVzb3VyY2VBdHRyaWJ1
dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JikgY29uc3Q7CiAKICAgICB2aXJ0dWFsIHZvaWQgZmlu
aXNoUGFyc2luZ0NoaWxkcmVuKCk7CkBAIC05Nyw2ICs5Niw5IEBAIHByaXZhdGU6CiBwcml2YXRl
OgogICAgIEhUTUxMaW5rRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqLCBi
b29sIGNyZWF0ZWRCeVBhcnNlcik7CiAKKyAgICB2b2lkIHNldElzRW5hYmxlZFZpYVNjcmlwdChi
b29sIGVuYWJsZWQpIHsgbV9zY3JpcHRTdGF0ZSA9IGVuYWJsZWQgPyBFbmFibGVkVmlhU2NyaXB0
IDogRGlzYWJsZWRWaWFTY3JpcHQ7IH0KKyAgICB2b2lkIGNoZWNrRGlzYWJsZWRBbmRFbmFibGVk
VmlhU2NyaXB0U3RhdGUoKSBjb25zdDsKKwogICAgIExpbmtMb2FkZXIgbV9saW5rTG9hZGVyOwog
ICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZENTU1N0eWxlU2hlZXQ+IG1fY2FjaGVkU2hl
ZXQ7CiAgICAgUmVmUHRyPENTU1N0eWxlU2hlZXQ+IG1fc2hlZXQ7CkBAIC0xMDYsMTAgKzEwOCwx
MSBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxET01TZXR0YWJsZVRva2VuTGlzdD4gbV9zaXplczsK
ICAgICBMaW5rUmVsQXR0cmlidXRlIG1fcmVsQXR0cmlidXRlOwogICAgIGJvb2wgbV9sb2FkaW5n
OwotICAgIGJvb2wgbV9pc0VuYWJsZWRWaWFTY3JpcHQ7CisgICAgZW51bSBFbmFibGVkVmlhU2Ny
aXB0U3RhdGUgeyBVbnNldCwgRW5hYmxlZFZpYVNjcmlwdCwgRGlzYWJsZWRWaWFTY3JpcHQgfTsK
KyAgICBFbmFibGVkVmlhU2NyaXB0U3RhdGUgbV9zY3JpcHRTdGF0ZTsKICAgICBib29sIG1fY3Jl
YXRlZEJ5UGFyc2VyOwogICAgIGJvb2wgbV9pc0luU2hhZG93VHJlZTsKLSAgICAKKwogICAgIFBl
bmRpbmdTaGVldFR5cGUgbV9wZW5kaW5nU2hlZXRUeXBlOwogfTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104416</attachid>
            <date>2011-08-18 15:54:33 -0700</date>
            <delta_ts>2011-08-19 10:14:54 -0700</delta_ts>
            <desc>New version 4: Simplified further the code after Antti&apos;s comments (sorry for the mispelling).</desc>
            <filename>bug-65140-20110818155432.patch</filename>
            <type>text/plain</type>
            <size>26888</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTMzMTUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4M2MwYTk4MzIwMjU5NWFiMzhjZjY0
NzU5MzI5Nzk2ZDE4YmEzMDZlLi5hOTNjMDY3Y2MwNWEyZTY2MGI5MjQxNWI3ZWVmNTAwOGVjNzMz
MTI0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTEtMDgtMTggIEp1bGllbiBDaGFmZnJhaXgg
IDxqY2hhZmZyYWl4QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUkVHUkVTU0lPTiAocjg0MzI3LXI4
NDMyOSk6IENTUyBzdHlsZXNoZWV0cyBmYWlsIHRvIGxvYWQgb24gd3d3LmZsYWdzdGFyLmNvbSBs
b2dpbiBwYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02NTE0MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogZmFzdC9jc3MvbGluay1kaXNhYmxlZC1hdHRyLWV4cGVjdGVkLnR4dDogVGhpcyBjaGFuZ2Ug
aXMgYSBwcm9ncmVzc2lvbiwgYnV0IHdlIGFyZSBzdGlsbAorICAgICAgICBub3QgaGFuZGxpbmcg
dXBkYXRlcyB0byB0aGUgc2VsZWN0ZWQgc3R5bGUgc2V0IHByb3Blcmx5IChhbHJlYWR5IGNvdmVy
ZWQgYnkgYnVnIDYyNDA3KS4KKworICAgICAgICAqIGZhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxl
LWZpcnN0LWFsdGVybmF0ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3Nz
L3N0eWxlc2hlZXQtZW5hYmxlLWZpcnN0LWFsdGVybmF0ZS1vbi1sb2FkLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZmFzdC9jc3Mvc3R5bGVzaGVldC1lbmFibGUtZmlyc3QtYWx0ZXJu
YXRlLW9uLWxvYWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3Mvc3R5bGVzaGVldC1l
bmFibGUtZmlyc3QtYWx0ZXJuYXRlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL3N0
eWxlc2hlZXQtZW5hYmxlLXNlY29uZC1hbHRlcm5hdGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1zZWNvbmQtYWx0ZXJuYXRlLW9uLWxv
YWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9zdHlsZXNoZWV0LWVu
YWJsZS1zZWNvbmQtYWx0ZXJuYXRlLW9uLWxvYWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9jc3Mvc3R5bGVzaGVldC1lbmFibGUtc2Vjb25kLWFsdGVybmF0ZS5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL2Nzcy9saW5rLWNzcy1kaXNhYmxlZC12YWx1ZS13aXRoLXNsb3ct
bG9hZGluZy1zaGVldC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMv
Y3NzL2xpbmstY3NzLWRpc2FibGVkLXZhbHVlLXdpdGgtc2xvdy1sb2FkaW5nLXNoZWV0Lmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvY3NzL3Jlc291cmNlcy9saW5rLWNzcy1kaXNh
YmxlZC12YWx1ZS13aXRoLXNsb3ctbG9hZGluZy1zaGVldC5qczogQWRkZWQuCisgICAgICAgIChv
blNoZWV0TG9hZGVkKToKKyAgICAgICAgKHRlc3RXaGVuTG9hZGVkKToKKyAgICAgICAgKiBodHRw
L3Rlc3RzL2Nzcy9yZXNvdXJjZXMvc2xvdy1sb2FkaW5nLXNoZWV0LnBocDogQWRkZWQuCisgICAg
ICAgIFRob3NlIGFyZSBhIHZhcmlhdGlvbiBvbiB0aGUgc2FtZSB0aGVtZTogd2UgZGlzYWJsZSBz
b21lIHN0eWxlc2hlZXQgYW5kIGVuYWJsZSBvdGhlcnMsCisgICAgICAgIGVpdGhlciBkaXJlY3Rs
eSBvciBsYXRlci4KKworICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRp
b25zLnR4dDogTWFrZWQgbGluay1jc3MtZGlzYWJsZWQtdmFsdWUtd2l0aC1zbG93LWxvYWRpbmct
c2hlZXQuanMgYXMKKyAgICAgICAgU0xPVywgbm90IHN1cmUgd2h5IGFzIGl0IHNob3VsZCBydW4g
ZmFzdCBlbm91Z2ggYW5kIGRvZXMgbm90IHRpbWUgb3V0IGlmIHlvdSBydW4gaXQgbWFudWFsbHku
CisKIDIwMTEtMDgtMTggIEFuZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBbRXh0ZW5zaW9ucyBBUEldIHJlbmFtZSB3ZWJJbnNwZWN0
b3IucmVzb3VyY2VzIHRvIHdlYkluc3BlY3Rvci5uZXR3b3JrCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2Nzcy9saW5rLWRpc2FibGVkLWF0dHItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZmFzdC9jc3MvbGluay1kaXNhYmxlZC1hdHRyLWV4cGVjdGVkLnR4dAppbmRleCA1NzFhY2Iy
OGQ3NzI2NjBmYzJhZGI0YzIyZmE4MjBmYzU2YTZkZmNlLi5mNDEzNzBhMTI1ZjQyOTgwMzBkNWI2
NDEwZjU5NWM1Y2ExMzEzY2Q5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9saW5r
LWRpc2FibGVkLWF0dHItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL2xp
bmstZGlzYWJsZWQtYXR0ci1leHBlY3RlZC50eHQKQEAgLTE1LDExICsxNSwxMSBAQCBQQVNTIGdl
dENvbXB1dGVkU3R5bGUoY29uc29sZSkud2hpdGVTcGFjZSBpcyAncHJlLXdyYXAnCiBhbHRzaGVl
dAogRkFJTCBsaW5rLmRpc2FibGVkIHNob3VsZCBiZSB0cnVlLiBXYXMgZmFsc2UuCiBQQVNTIGxp
bmsuc2hlZXQgaXMgbm9uLW51bGwuCi1GQUlMIGdldENvbXB1dGVkU3R5bGUoY29uc29sZSkuYmFj
a2dyb3VuZENvbG9yIHNob3VsZCBiZSByZ2IoMCwgMTI4LCAwKS4gV2FzIHJnYmEoMCwgMCwgMCwg
MCkuCitQQVNTIGdldENvbXB1dGVkU3R5bGUoY29uc29sZSkuYmFja2dyb3VuZENvbG9yIGlzICdy
Z2IoMCwgMTI4LCAwKScKIEZBSUwgbGluay5kaXNhYmxlZCBzaG91bGQgYmUgdHJ1ZS4gV2FzIGZh
bHNlLgotUEFTUyBnZXRDb21wdXRlZFN0eWxlKGNvbnNvbGUpLmJhY2tncm91bmRDb2xvciBpcyBv
cmlnaW5hbEJHCitGQUlMIGdldENvbXB1dGVkU3R5bGUoY29uc29sZSkuYmFja2dyb3VuZENvbG9y
IHNob3VsZCBiZSByZ2JhKDAsIDAsIDAsIDApLiBXYXMgcmdiKDAsIDEyOCwgMCkuCiBQQVNTIGxp
bmsuZGlzYWJsZWQgaXMgZmFsc2UKLUZBSUwgZ2V0Q29tcHV0ZWRTdHlsZShjb25zb2xlKS5iYWNr
Z3JvdW5kQ29sb3Igc2hvdWxkIGJlIHJnYigwLCAxMjgsIDApLiBXYXMgcmdiYSgwLCAwLCAwLCAw
KS4KK1BBU1MgZ2V0Q29tcHV0ZWRTdHlsZShjb25zb2xlKS5iYWNrZ3JvdW5kQ29sb3IgaXMgJ3Jn
YigwLCAxMjgsIDApJwogUEFTUyBnZXRDb21wdXRlZFN0eWxlKGNvbnNvbGUpLmJhY2tncm91bmRD
b2xvciBpcyBvcmlnaW5hbEJHCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxlLWZpcnN0LWFs
dGVybmF0ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZXNoZWV0LWVu
YWJsZS1maXJzdC1hbHRlcm5hdGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMwNTI4ZmI3NThh
OTFkN2YzMDY4MjA3MTExNTBmOThhNWQxNzAyYzQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1maXJzdC1hbHRlcm5hdGUtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsNSBAQAorVGVzdCBmb3IgNjUxNDA6IFJFR1JFU1NJT04gKHI4NDMyNy1y
ODQzMjkpOiBDU1Mgc3R5bGVzaGVldHMgZmFpbCB0byBsb2FkIG9uIHd3dy5mbGFnc3Rhci5jb20g
bG9naW4gcGFnZQorCitUaGlzIHRlc3QgUEFTU0VEIGlmIFBBU1NFRCBpcyB3cml0dGVuIGJlbG93
IChhbHRlcm5hdGl2ZWx5IHRoZSBuZXh0IGxpbmUgc2hvdWxkIGhhdmUgYSBHUkVFTiBiYWNrZ3Jv
dW5kKS4KKworUEFTU0VECmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZXNo
ZWV0LWVuYWJsZS1maXJzdC1hbHRlcm5hdGUtb24tbG9hZC1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9mYXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1maXJzdC1hbHRlcm5hdGUtb24tbG9hZC1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzA1MjhmYjc1OGE5MWQ3ZjMwNjgyMDcxMTE1MGY5OGE1
ZDE3MDJjNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlc2hl
ZXQtZW5hYmxlLWZpcnN0LWFsdGVybmF0ZS1vbi1sb2FkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDUgQEAKK1Rlc3QgZm9yIDY1MTQwOiBSRUdSRVNTSU9OIChyODQzMjctcjg0MzI5KTogQ1NTIHN0
eWxlc2hlZXRzIGZhaWwgdG8gbG9hZCBvbiB3d3cuZmxhZ3N0YXIuY29tIGxvZ2luIHBhZ2UKKwor
VGhpcyB0ZXN0IFBBU1NFRCBpZiBQQVNTRUQgaXMgd3JpdHRlbiBiZWxvdyAoYWx0ZXJuYXRpdmVs
eSB0aGUgbmV4dCBsaW5lIHNob3VsZCBoYXZlIGEgR1JFRU4gYmFja2dyb3VuZCkuCisKK1BBU1NF
RApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGVzaGVldC1lbmFibGUtZmly
c3QtYWx0ZXJuYXRlLW9uLWxvYWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlc2hl
ZXQtZW5hYmxlLWZpcnN0LWFsdGVybmF0ZS1vbi1sb2FkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA3
NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTI5NWU0
MmRjMjRmNDEyOWFhM2FiNzkyN2Y2ZWE5NjQ3ODFlMGJkZAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxlLWZpcnN0LWFsdGVybmF0ZS1vbi1s
b2FkLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRG
Ly9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0icmVzb3VyY2VzL3JlZC5jc3MiIG1lZGlhPSJhbGwiIHRpdGxlPSJEZWZhdWx0IFN0eWxl
IFNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgLz4KKzxsaW5rIHJlbD0iYWx0ZXJuYXRlIHN0eWxlc2hl
ZXQiIGhyZWY9InJlc291cmNlcy9ncmVlbi5jc3MiIG1lZGlhPSJhbGwiIHRpdGxlPSJncmVlbiIg
dHlwZT0idGV4dC9jc3MiIC8+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgZnVuY3Rpb24gdGVzdCgpIHsKKyAgICAgICAgdmFy
IHJlZCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJsaW5rIilbMF07CisgICAgICAg
IHJlZC5kaXNhYmxlZCA9IHRydWU7CisgICAgICAgIHZhciBncmVlbiA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJsaW5rIilbMV07CisgICAgICAgIGdyZWVuLmRpc2FibGVkID0gdHJ1
ZTsKKyAgICAgICAgZ3JlZW4uZGlzYWJsZWQgPSBmYWxzZTsKKworICAgICAgICB2YXIgY29uc29s
ZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIik7CisgICAgICAgIGlmIChnZXRD
b21wdXRlZFN0eWxlKGNvbnNvbGUsIG51bGwpLmJhY2tncm91bmRDb2xvciA9PT0gInJnYigwLCAx
MjgsIDApIikKKyAgICAgICAgICAgIGNvbnNvbGUuaW5uZXJIVE1MID0gIlBBU1NFRCI7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIGNvbnNvbGUuaW5uZXJIVE1MID0gIkZBSUxFRCwgYmFja2dy
b3VuZCA9ICIgKyBnZXRDb21wdXRlZFN0eWxlKGNvbnNvbGUsIG51bGwpLmJhY2tncm91bmRDb2xv
cjsKKyAgICB9CisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCB0ZXN0LCBmYWxz
ZSk7Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGVzdCBmb3IgPGEgaHJlZj0iaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1MTQwIj42NTE0MDwvYT46IFJF
R1JFU1NJT04gKHI4NDMyNy1yODQzMjkpOiBDU1Mgc3R5bGVzaGVldHMgZmFpbCB0byBsb2FkIG9u
IHd3dy5mbGFnc3Rhci5jb20gbG9naW4gcGFnZTwvcD4KKzxwPlRoaXMgdGVzdCBQQVNTRUQgaWYg
UEFTU0VEIGlzIHdyaXR0ZW4gYmVsb3cgKGFsdGVybmF0aXZlbHkgdGhlIG5leHQgbGluZSBzaG91
bGQgaGF2ZSBhIEdSRUVOIGJhY2tncm91bmQpLjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPkZBSUxF
RDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9j
c3Mvc3R5bGVzaGVldC1lbmFibGUtZmlyc3QtYWx0ZXJuYXRlLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1maXJzdC1hbHRlcm5hdGUuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5mNTU5MDYzZjkxYzMyMGNiOTdiOTQ0MWFhYzNkNjFmNTUyMmUxNTMzCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGVzaGVldC1lbmFibGUtZmlyc3QtYWx0ZXJu
YXRlLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRG
Ly9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0icmVzb3VyY2VzL3JlZC5jc3MiIG1lZGlhPSJhbGwiIHRpdGxlPSJEZWZhdWx0IFN0eWxl
IFNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgLz4KKzxsaW5rIHJlbD0iYWx0ZXJuYXRlIHN0eWxlc2hl
ZXQiIGhyZWY9InJlc291cmNlcy9ncmVlbi5jc3MiIG1lZGlhPSJhbGwiIHRpdGxlPSJncmVlbiIg
dHlwZT0idGV4dC9jc3MiIC8+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgdmFyIHJlZCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJsaW5rIilbMF07CisgICAgcmVkLmRpc2FibGVkID0gdHJ1ZTsKKyAgICB2YXIg
Z3JlZW4gPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGluayIpWzFdOworICAgIGdy
ZWVuLmRpc2FibGVkID0gdHJ1ZTsKKyAgICBncmVlbi5kaXNhYmxlZCA9IGZhbHNlOworCisgICAg
ZnVuY3Rpb24gdGVzdCgpIHsKKyAgICAgICAgdmFyIGNvbnNvbGUgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiY29uc29sZSIpOworICAgICAgICBpZiAoZ2V0Q29tcHV0ZWRTdHlsZShjb25zb2xl
LCBudWxsKS5iYWNrZ3JvdW5kQ29sb3IgPT09ICJyZ2IoMCwgMTI4LCAwKSIpCisgICAgICAgICAg
ICBjb25zb2xlLmlubmVySFRNTCA9ICJQQVNTRUQiOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBjb25zb2xlLmlubmVySFRNTCA9ICJGQUlMRUQsIGJhY2tncm91bmQgPSAiICsgZ2V0Q29tcHV0
ZWRTdHlsZShjb25zb2xlLCBudWxsKS5iYWNrZ3JvdW5kQ29sb3I7CisgICAgfQorICAgIHdpbmRv
dy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgdGVzdCwgZmFsc2UpOworPC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxwPlRlc3QgZm9yIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02NTE0MCI+NjUxNDA8L2E+OiBSRUdSRVNTSU9OIChyODQzMjctcjg0
MzI5KTogQ1NTIHN0eWxlc2hlZXRzIGZhaWwgdG8gbG9hZCBvbiB3d3cuZmxhZ3N0YXIuY29tIGxv
Z2luIHBhZ2U8L3A+Cis8cD5UaGlzIHRlc3QgUEFTU0VEIGlmIFBBU1NFRCBpcyB3cml0dGVuIGJl
bG93IChhbHRlcm5hdGl2ZWx5IHRoZSBuZXh0IGxpbmUgc2hvdWxkIGhhdmUgYSBHUkVFTiBiYWNr
Z3JvdW5kKS48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj5GQUlMRUQ8L2Rpdj4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxl
LXNlY29uZC1hbHRlcm5hdGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5
bGVzaGVldC1lbmFibGUtc2Vjb25kLWFsdGVybmF0ZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YzA1MjhmYjc1OGE5MWQ3ZjMwNjgyMDcxMTE1MGY5OGE1ZDE3MDJjNAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxlLXNlY29uZC1hbHRlcm5h
dGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorVGVzdCBmb3IgNjUxNDA6IFJFR1JFU1NJ
T04gKHI4NDMyNy1yODQzMjkpOiBDU1Mgc3R5bGVzaGVldHMgZmFpbCB0byBsb2FkIG9uIHd3dy5m
bGFnc3Rhci5jb20gbG9naW4gcGFnZQorCitUaGlzIHRlc3QgUEFTU0VEIGlmIFBBU1NFRCBpcyB3
cml0dGVuIGJlbG93IChhbHRlcm5hdGl2ZWx5IHRoZSBuZXh0IGxpbmUgc2hvdWxkIGhhdmUgYSBH
UkVFTiBiYWNrZ3JvdW5kKS4KKworUEFTU0VECmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1zZWNvbmQtYWx0ZXJuYXRlLW9uLWxvYWQtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGVzaGVldC1lbmFibGUtc2Vjb25kLWFsdGVy
bmF0ZS1vbi1sb2FkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMDUyOGZiNzU4YTkxZDdmMzA2
ODIwNzExMTUwZjk4YTVkMTcwMmM0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9jc3Mvc3R5bGVzaGVldC1lbmFibGUtc2Vjb25kLWFsdGVybmF0ZS1vbi1sb2FkLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDUgQEAKK1Rlc3QgZm9yIDY1MTQwOiBSRUdSRVNTSU9OIChyODQzMjct
cjg0MzI5KTogQ1NTIHN0eWxlc2hlZXRzIGZhaWwgdG8gbG9hZCBvbiB3d3cuZmxhZ3N0YXIuY29t
IGxvZ2luIHBhZ2UKKworVGhpcyB0ZXN0IFBBU1NFRCBpZiBQQVNTRUQgaXMgd3JpdHRlbiBiZWxv
dyAoYWx0ZXJuYXRpdmVseSB0aGUgbmV4dCBsaW5lIHNob3VsZCBoYXZlIGEgR1JFRU4gYmFja2dy
b3VuZCkuCisKK1BBU1NFRApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGVz
aGVldC1lbmFibGUtc2Vjb25kLWFsdGVybmF0ZS1vbi1sb2FkLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1zZWNvbmQtYWx0ZXJuYXRlLW9uLWxvYWQuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5jYzgwODZlMGI0YTI3YzdmZmQ4MWEzM2MwZDAyNTMxNTUxNDJjNjZkCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGVzaGVldC1lbmFibGUtc2Vj
b25kLWFsdGVybmF0ZS1vbi1sb2FkLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCFET0NUWVBFIEhU
TUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL3JlZC5jc3MiIG1lZGlhPSJhbGwiIHRp
dGxlPSJEZWZhdWx0IFN0eWxlIFNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgLz4KKzxsaW5rIHJlbD0i
YWx0ZXJuYXRlIHN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy9yZWQuY3NzIiBtZWRpYT0iYWxs
IiB0aXRsZT0iZ3JlZW4iIHR5cGU9InRleHQvY3NzIiAvPgorPGxpbmsgcmVsPSJhbHRlcm5hdGUg
c3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL2dyZWVuLmNzcyIgbWVkaWE9ImFsbCIgdGl0bGU9
ImdyZWVuIiB0eXBlPSJ0ZXh0L2NzcyIgLz4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0
Ij4KKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICBmdW5jdGlvbiB0ZXN0KCkgeworICAg
ICAgICB2YXIgcmVkID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxpbmsiKVswXTsK
KyAgICAgICAgcmVkLmRpc2FibGVkID0gdHJ1ZTsKKyAgICAgICAgdmFyIGdyZWVuID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxpbmsiKVsyXTsKKyAgICAgICAgZ3JlZW4uZGlzYWJs
ZWQgPSBmYWxzZTsKKworICAgICAgICB2YXIgY29uc29sZSA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJjb25zb2xlIik7CisgICAgICAgIGlmIChnZXRDb21wdXRlZFN0eWxlKGNvbnNvbGUsIG51
bGwpLmJhY2tncm91bmRDb2xvciA9PT0gInJnYigwLCAxMjgsIDApIikKKyAgICAgICAgICAgIGNv
bnNvbGUuaW5uZXJIVE1MID0gIlBBU1NFRCI7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNv
bnNvbGUuaW5uZXJIVE1MID0gIkZBSUxFRCwgYmFja2dyb3VuZCA9ICIgKyBnZXRDb21wdXRlZFN0
eWxlKGNvbnNvbGUsIG51bGwpLmJhY2tncm91bmRDb2xvcjsKKyAgICB9CisgICAgd2luZG93LmFk
ZEV2ZW50TGlzdGVuZXIoImxvYWQiLCB0ZXN0LCBmYWxzZSk7Cis8L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPHA+VGVzdCBmb3IgPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTY1MTQwIj42NTE0MDwvYT46IFJFR1JFU1NJT04gKHI4NDMyNy1yODQzMjkp
OiBDU1Mgc3R5bGVzaGVldHMgZmFpbCB0byBsb2FkIG9uIHd3dy5mbGFnc3Rhci5jb20gbG9naW4g
cGFnZTwvcD4KKzxwPlRoaXMgdGVzdCBQQVNTRUQgaWYgUEFTU0VEIGlzIHdyaXR0ZW4gYmVsb3cg
KGFsdGVybmF0aXZlbHkgdGhlIG5leHQgbGluZSBzaG91bGQgaGF2ZSBhIEdSRUVOIGJhY2tncm91
bmQpLjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPkZBSUxFRDwvZGl2PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGVzaGVldC1lbmFibGUtc2Vj
b25kLWFsdGVybmF0ZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGVzaGVldC1lbmFi
bGUtc2Vjb25kLWFsdGVybmF0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAwZTVjMmMyMWRkNmY1YjU1MDA1
MTMyMjQwOWUzMzU3Nzc0ZjhhNmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1zZWNvbmQtYWx0ZXJuYXRlLmh0bWwKQEAgLTAsMCArMSwz
MSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0
bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL3JlZC5j
c3MiIG1lZGlhPSJhbGwiIHRpdGxlPSJEZWZhdWx0IFN0eWxlIFNoZWV0IiB0eXBlPSJ0ZXh0L2Nz
cyIgLz4KKzxsaW5rIHJlbD0iYWx0ZXJuYXRlIHN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy9y
ZWQuY3NzIiBtZWRpYT0iYWxsIiB0aXRsZT0iZ3JlZW4iIHR5cGU9InRleHQvY3NzIiAvPgorPGxp
bmsgcmVsPSJhbHRlcm5hdGUgc3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL2dyZWVuLmNzcyIg
bWVkaWE9ImFsbCIgdGl0bGU9ImdyZWVuIiB0eXBlPSJ0ZXh0L2NzcyIgLz4KKzxzY3JpcHQgdHlw
ZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICB2YXIg
cmVkID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxpbmsiKVswXTsKKyAgICByZWQu
ZGlzYWJsZWQgPSB0cnVlOworICAgIHZhciBncmVlbiA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJsaW5rIilbMl07CisgICAgZ3JlZW4uZGlzYWJsZWQgPSBmYWxzZTsKKworICAgIGZ1
bmN0aW9uIHRlc3QoKSB7CisgICAgICAgIHZhciBjb25zb2xlID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImNvbnNvbGUiKTsKKyAgICAgICAgaWYgKGdldENvbXB1dGVkU3R5bGUoY29uc29sZSwg
bnVsbCkuYmFja2dyb3VuZENvbG9yID09PSAicmdiKDAsIDEyOCwgMCkiKQorICAgICAgICAgICAg
Y29uc29sZS5pbm5lckhUTUwgPSAiUEFTU0VEIjsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
Y29uc29sZS5pbm5lckhUTUwgPSAiRkFJTEVELCBiYWNrZ3JvdW5kID0gIiArIGdldENvbXB1dGVk
U3R5bGUoY29uc29sZSwgbnVsbCkuYmFja2dyb3VuZENvbG9yOworICAgIH0KKyAgICB3aW5kb3cu
YWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIHRlc3QsIGZhbHNlKTsKKzwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8cD5UZXN0IGZvciA8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NjUxNDAiPjY1MTQwPC9hPjogUkVHUkVTU0lPTiAocjg0MzI3LXI4NDMy
OSk6IENTUyBzdHlsZXNoZWV0cyBmYWlsIHRvIGxvYWQgb24gd3d3LmZsYWdzdGFyLmNvbSBsb2dp
biBwYWdlPC9wPgorPHA+VGhpcyB0ZXN0IFBBU1NFRCBpZiBQQVNTRUQgaXMgd3JpdHRlbiBiZWxv
dyAoYWx0ZXJuYXRpdmVseSB0aGUgbmV4dCBsaW5lIHNob3VsZCBoYXZlIGEgR1JFRU4gYmFja2dy
b3VuZCkuPC9wPgorPGRpdiBpZD0iY29uc29sZSI+RkFJTEVEPC9kaXY+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nzcy9saW5rLWNzcy1kaXNh
YmxlZC12YWx1ZS13aXRoLXNsb3ctbG9hZGluZy1zaGVldC1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2Nzcy9saW5rLWNzcy1kaXNhYmxlZC12YWx1ZS13aXRoLXNsb3ctbG9h
ZGluZy1zaGVldC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjE0MDBhYWEwZWMwYTRlMjBjZmQ3
NmIwYTM1MjBiOTE3NGUzNjU0OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvY3NzL2xpbmstY3NzLWRpc2FibGVkLXZhbHVlLXdpdGgtc2xvdy1sb2FkaW5nLXNoZWV0
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE5IEBACitUZXN0IHRoYXQgSFRNTExpbmtFbGVtZW50
J3MgZGlzYWJsZWQgYXR0cmlidXRlIGlzIHByb3Blcmx5IGNhY2hlZCB3aGlsZSBzZXQgd2hlbiBs
b2FkaW5nIGEgc3R5bGVzaGVldC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1Rl
c3RpbmcgdmFsdWUgb2YgJ2Rpc2FibGVkJyBwcmlvciB0byBsb2FkIGp1c3QgYWZ0ZXIgc2V0dGlu
ZyB0aGVtCitQQVNTIG1haW5TaGVldExpbmsuc2hlZXQgaXMgbm9uLW51bGwuCitQQVNTIGFsdGVy
bmF0ZVNoZWV0TGluay5zaGVldCBpcyBudWxsCitQQVNTIG1haW5TaGVldExpbmsuZGlzYWJsZWQg
aXMgdHJ1ZQorUEFTUyBhbHRlcm5hdGVTaGVldExpbmsuZGlzYWJsZWQgaXMgZmFsc2UKK1Rlc3Rp
bmcgdGhlIHZhbHVlcyB3aGVuIHRoZSBhbHRlcm5hdGUgc2hlZXQgaXMgbG9hZGVkIChhcyB0aGlz
IGlzIHRoZSBvbmx5IG9uZSB0aGF0IGhhcyBzaGVldCgpID09PSBudWxsKQorUEFTUyBtYWluU2hl
ZXRMaW5rLnNoZWV0IGlzIG5vbi1udWxsLgorUEFTUyBhbHRlcm5hdGVTaGVldExpbmsuc2hlZXQg
aXMgbm9uLW51bGwuCitQQVNTIG1haW5TaGVldExpbmsuZGlzYWJsZWQgaXMgdHJ1ZQorUEFTUyBh
bHRlcm5hdGVTaGVldExpbmsuZGlzYWJsZWQgaXMgZmFsc2UKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2Nzcy9saW5rLWNzcy1kaXNhYmxlZC12YWx1ZS13aXRoLXNsb3ctbG9hZGluZy1z
aGVldC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jc3MvbGluay1jc3MtZGlzYWJsZWQt
dmFsdWUtd2l0aC1zbG93LWxvYWRpbmctc2hlZXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDc1NQpp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wN2ZmMmNjY2Ex
YjRmZTIxZWYxZDEyNTE5NWE2NjJmY2ZiMjg2NjBhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9jc3MvbGluay1jc3MtZGlzYWJsZWQtdmFsdWUtd2l0aC1zbG93LWxv
YWRpbmctc2hlZXQuaHRtbApAQCAtMCwwICsxLDE0IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMg
Ii0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvc2xvdy1sb2FkaW5nLXNoZWV0LnBocD9jb2xvcj1yZWQi
IG1lZGlhPSJhbGwiIHRpdGxlPSJEZWZhdWx0IFN0eWxlIFNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIg
Lz4KKzxsaW5rIHJlbD0iYWx0ZXJuYXRlIHN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy9zbG93
LWxvYWRpbmctc2hlZXQucGhwP2NvbG9yPWdyZWVuIiBtZWRpYT0iYWxsIiB0aXRsZT0iZ3JlZW4i
IHR5cGU9InRleHQvY3NzIiAvPgorPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlv
biI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L2xpbmstY3NzLWRpc2FibGVkLXZhbHVlLXdpdGgtc2xvdy1sb2FkaW5nLXNoZWV0LmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvY3NzL3Jlc291cmNlcy9saW5rLWNzcy1kaXNhYmxlZC12YWx1ZS13aXRoLXNsb3ctbG9h
ZGluZy1zaGVldC5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY3NzL3Jlc291cmNlcy9saW5r
LWNzcy1kaXNhYmxlZC12YWx1ZS13aXRoLXNsb3ctbG9hZGluZy1zaGVldC5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wNTg5ZjI3MzZhNjQ0ODk1NTU0ZTlkMDZkODBmZTViOWE4OTk3ZmYzCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jc3MvcmVzb3VyY2VzL2xpbmstY3NzLWRpc2Fi
bGVkLXZhbHVlLXdpdGgtc2xvdy1sb2FkaW5nLXNoZWV0LmpzCkBAIC0wLDAgKzEsNDUgQEAKK2Rl
c2NyaXB0aW9uKCJUZXN0IHRoYXQgSFRNTExpbmtFbGVtZW50J3MgZGlzYWJsZWQgYXR0cmlidXRl
IGlzIHByb3Blcmx5IGNhY2hlZCB3aGlsZSBzZXQgd2hlbiBsb2FkaW5nIGEgc3R5bGVzaGVldC4i
KTsKKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci53YWl0VW50aWxEb25lKCk7CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsK
KworbWFpblNoZWV0TGluayA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJsaW5rIilb
MF07CithbHRlcm5hdGVTaGVldExpbmsgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
bGluayIpWzFdOworCittYWluU2hlZXRMaW5rLmRpc2FibGVkID0gdHJ1ZTsKK2FsdGVybmF0ZVNo
ZWV0TGluay5kaXNhYmxlZCA9IGZhbHNlOworCitkZWJ1ZygiVGVzdGluZyB2YWx1ZSBvZiAnZGlz
YWJsZWQnIHByaW9yIHRvIGxvYWQganVzdCBhZnRlciBzZXR0aW5nIHRoZW0iKTsKK3Nob3VsZEJl
Tm9uTnVsbCgibWFpblNoZWV0TGluay5zaGVldCIpOworc2hvdWxkQmVOdWxsKCJhbHRlcm5hdGVT
aGVldExpbmsuc2hlZXQiKTsKK3Nob3VsZEJlVHJ1ZSgibWFpblNoZWV0TGluay5kaXNhYmxlZCIs
IHRydWUpOworc2hvdWxkQmVGYWxzZSgiYWx0ZXJuYXRlU2hlZXRMaW5rLmRpc2FibGVkIik7CisK
K2RlYnVnKCJUZXN0aW5nIHRoZSB2YWx1ZXMgd2hlbiB0aGUgYWx0ZXJuYXRlIHNoZWV0IGlzIGxv
YWRlZCAoYXMgdGhpcyBpcyB0aGUgb25seSBvbmUgdGhhdCBoYXMgc2hlZXQoKSA9PT0gbnVsbCki
KTsKKworZnVuY3Rpb24gb25TaGVldExvYWRlZChmLCBlbGVtLCBtYXh0aW1lKSB7CisgICAgaWYg
KGVsZW0uc2hlZXQgfHwgbWF4dGltZSA8PSAwKQorICAgICAgICBmKCk7CisgICAgZWxzZQorICAg
ICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgb25TaGVldExvYWRlZChmLCBlbGVtLCBtYXh0
aW1lIC0gMjUpO30sIDI1KTsKK30KKworZnVuY3Rpb24gdGVzdFdoZW5Mb2FkZWQoKSB7CisgICAg
ICAgIC8vIFRob3NlIG5leHQgMiBsaW5lcyBhcmUgYSBzYW5pdHkgY2hlY2suCisgICAgICAgIC8v
IElmIHRoZSBzZWNvbmQgY2hlY2sgZmFpbHMsIGl0IGlzIGxpa2VseSB0aGF0IHRoZSB0ZXN0IHRp
bWVkIG91dCBhbmQgdGh1cworICAgICAgICAvLyB5b3UgY2FuIGRpc2NhcmQgdGhlIHJlc3Qgb2Yg
cmVzdWx0cyBhcyBpdCBpcyBub3QgdGVzdGluZyB3aGF0IHdlIHdhbnQKKyAgICAgICAgLy8gKG5h
bWVseSB0aGF0IHRoZSBkaXNhYmxlZCB2YWx1ZSBpcyBwYXNzZWQgdG8gdGhlIGZpbmFsIHNoZWV0
KS4KKyAgICAgICAgc2hvdWxkQmVOb25OdWxsKCJtYWluU2hlZXRMaW5rLnNoZWV0Iik7CisgICAg
ICAgIHNob3VsZEJlTm9uTnVsbCgiYWx0ZXJuYXRlU2hlZXRMaW5rLnNoZWV0Iik7CisKKyAgICAg
ICAgc2hvdWxkQmVUcnVlKCJtYWluU2hlZXRMaW5rLmRpc2FibGVkIik7CisgICAgICAgIHNob3Vs
ZEJlRmFsc2UoImFsdGVybmF0ZVNoZWV0TGluay5kaXNhYmxlZCIpOworCisgICAgICAgIGZpbmlz
aEpTVGVzdCgpOworfQorCitvblNoZWV0TG9hZGVkKHRlc3RXaGVuTG9hZGVkLCBhbHRlcm5hdGVT
aGVldExpbmssIDUwMCk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jc3MvcmVzb3VyY2VzL3Nsb3ctbG9hZGluZy1z
aGVldC5waHAgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nzcy9yZXNvdXJjZXMvc2xvdy1sb2Fk
aW5nLXNoZWV0LnBocApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yODkzN2Q0MmFmODAzMDViZThjMzhjYzZmNmU5ZjAy
ZjAwYmY2ZGU5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jc3Mv
cmVzb3VyY2VzL3Nsb3ctbG9hZGluZy1zaGVldC5waHAKQEAgLTAsMCArMSwxNSBAQAorPD9waHAK
Ky8vIFdlIHNsZWVwIGhlcmUgc28gdGhhdCB3ZSBhcmUgaGF2ZSBlbm91Z2ggdGltZSB0byB0ZXN0
IHRoZSBkaWZmZXJlbnQgYXR0cmlidXRlcyBiZWZvcmUgdGhlIHN0eWxlc2hlZXQgaXMgZnVsbHkg
bG9hZGVkLgordXNsZWVwKDEwMCk7CisKK2hlYWRlcigiRXhwaXJlczogVGh1LCAwMSBEZWMgMjAw
MyAxNjowMDowMCBHTVQiKTsKK2hlYWRlcigiQ2FjaGUtQ29udHJvbDogbm8tY2FjaGUsIG5vLXN0
b3JlLCBtdXN0LXJldmFsaWRhdGUiKTsKK2hlYWRlcigiUHJhZ21hOiBuby1jYWNoZSIpOworaGVh
ZGVyKCJDb250ZW50LVR5cGU6IHRleHQvY3NzIik7CisKKyRjb2xvciA9ICRfR0VUWydjb2xvcidd
OworCitlY2hvICJoMSB7IGJhY2tncm91bmQtY29sb3I6ICRjb2xvciB9XG4iOworb2JfZmx1c2go
KTsKK2ZsdXNoKCk7Cis/PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0vdGVzdF9leHBlY3RhdGlvbnMudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0v
dGVzdF9leHBlY3RhdGlvbnMudHh0CmluZGV4IDJiNmE4NWI4NWU0NTgxM2NlODQ5YTQ2ZTQxOGVm
OTMzNmMwNmM0YTkuLjg3YTMwZjA4NzYxYWRjYmVmOGViODg2MTBkZDc2MDRmMzZiODFiMTEgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25z
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9u
cy50eHQKQEAgLTY0LDYgKzY0LDggQEAgQlVHV0s2NDQ5OCBTTE9XIERFQlVHIDogZmFzdC9lbmNv
ZGluZy9wYXJzZXItdGVzdHMtNDAuaHRtbCA9IFBBU1MKIEJVR1dLNjQ1MDIgU0xPVyBERUJVRyA6
IGZhc3QvZm9ybXMvZm9ybS1hc3NvY2lhdGVkLWVsZW1lbnQtY3Jhc2gzLmh0bWwgPSBQQVNTCiBX
T05URklYIFNMT1cgOiBmYXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWNsb25lLXJl
YWxseS1kZWVwLWFycmF5Lmh0bWwgPSBQQVNTCiAKK0JVR1dLNjUxNDAgU0xPVzogaHR0cC90ZXN0
cy9jc3MvbGluay1jc3MtZGlzYWJsZWQtdmFsdWUtd2l0aC1zbG93LWxvYWRpbmctc2hlZXQuaHRt
bCA9IFBBU1MKKwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vIFNLSVBQRUQgVEVTVFMKIC8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggZWQwMDYwNjRlODNkZTdlMWRkNmE3ZjMwMGIxZDVlZDc0NTc4MjgwYS4uZDVm
YmVlMzJkNDA4MzI0Yjk5NzFmODFiOTk5ODI3ODM5NDg0ODUzZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDQ4IEBACisyMDExLTA4LTE4ICBKdWxpZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJr
aXQub3JnPgorCisgICAgICAgIFJFR1JFU1NJT04gKHI4NDMyNy1yODQzMjkpOiBDU1Mgc3R5bGVz
aGVldHMgZmFpbCB0byBsb2FkIG9uIHd3dy5mbGFnc3Rhci5jb20gbG9naW4gcGFnZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjUxNDAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0czogZmFzdC9jc3Mv
c3R5bGVzaGVldC1lbmFibGUtZmlyc3QtYWx0ZXJuYXRlLW9uLWxvYWQuaHRtbAorICAgICAgICAg
ICAgICAgZmFzdC9jc3Mvc3R5bGVzaGVldC1lbmFibGUtZmlyc3QtYWx0ZXJuYXRlLmh0bWwKKyAg
ICAgICAgICAgICAgIGZhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxlLXNlY29uZC1hbHRlcm5hdGUt
b24tbG9hZC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1z
ZWNvbmQtYWx0ZXJuYXRlLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvY3NzL2xpbmst
Y3NzLWRpc2FibGVkLXZhbHVlLXdpdGgtc2xvdy1sb2FkaW5nLXNoZWV0Lmh0bWwKKworICAgICAg
ICBUaGUgZ2lzdCBvZiB0aGUgaXNzdWUgaXMgdGhhdCB3ZSB3ZXJlIGlnbm9yaW5nIGNhbGxzIHRv
IEhUTUxMaW5rRWxlbWVudDo6c2V0RGlzYWJsZWQgdGhhdCB3b3VsZCBlbmFibGUgYQorICAgICAg
ICBzdHlsZSBzaGVldCB3aGVuIHdlIHdlcmUgbG9hZGluZyBhIHN0eWxlc2hlZXQgKG1fc2hlZXQg
d2FzIDAgYW5kIHRodXMgaWdub3JlZCB0aGUgY2FsbCBwZXIgdGhlIHNwZWMpLgorCisgICAgICAg
IEZGIGdvZXMgYWdhaW5zdCB0aGUgQ1NTIE9NIHNwZWMgaW4gdGhpcyBjYXNlIGFuZCBhbHdheXMg
a2VlcCBhbiBhc3NvY2lhdGVkIHNoZWV0IGFzIGxvbmcgYXMgJ3JlbCcgaGludHMKKyAgICAgICAg
YXQgYSBzdHlsZXNoZWV0IGxpbmsgYW5kIGhyZWYgaXMgcHJlc2VudC4gSW5zdGVhZCBvZiBzaWRp
bmcgd2l0aCBGRiwgSSBjb250aW51ZWQgdG8gZm9sbG93IHRoZQorICAgICAgICBzcGVjaWZpY2F0
aW9uIGFuZCBzdG9yZSB0aGUgZW5hYmxlZCB2aWEgamF2YXNjcmlwdCBzdGF0ZSBpbnRvIG1fc2Ny
aXB0U3RhdGUgKHJlbmFtZWQgZnJvbQorICAgICAgICBtX2lzRW5hYmxlZFZpYVNjcmlwdCkuIFRo
aXMgaW5mb3JtYXRpb24gZ2V0cyBtZXJnZWQgYmFjayBpbnRvIHRoZSBzdHlsZSBzaGVldCBkaXNh
YmxlZCBzdGF0ZSB3aGVuIGl0IGlzCisgICAgICAgIGF2YWlsYWJsZS4KKworICAgICAgICBXaGls
ZSBkZWJ1Z2dpbmcgdGhlIGNhc2UgYXQgaGFuZCwgSSBmb3VuZCBzb21lIGNhc2VzIHRoYXQgd2Vy
ZSBub3QgcHJvcGVybHkgaGFuZGxlZCBhbmQgd2VyZSBmaXhlZCBhcworICAgICAgICBwYXJ0IG9m
IHRoaXMgY2hhbmdlLgorCisgICAgICAgICogaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50OjpIVE1MTGlua0VsZW1lbnQpOiBVcGRhdGVk
IGFmdGVyIG1faXNFbmFibGVkVmlhU2NyaXB0IHJlbmFtZS4KKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxMaW5rRWxlbWVudDo6c2V0RGlzYWJsZWQpOiBBbHdheXMgY2FsbCBzZXRJc0VuYWJsZWRWaWFT
Y3JpcHQgc28gdGhhdAorICAgICAgICB0aGUgaW5mb3JtYXRpb24gaXMgcHJvcGVybHkgc3RvcmVk
IChlaXRoZXIgZm9yIHJlY2FsY1N0eWxlU2VsZWN0b3Igb3IganVzdCB0byBzdG9yZQorICAgICAg
ICB0aGUgc3RhdGUgZHVyaW5nIGxvYWRpbmcpLgorCisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlu
a0VsZW1lbnQ6OnNoZWV0TG9hZGVkKTogTWVyZ2UgYmFjayB0aGUgc3RhdGUgZnJvbSBtX3Njcmlw
dFN0YXRlIHRvCisgICAgICAgIHRoZSBzaGVldCdzIGRpc2FibGVkIHN0YXRlLgorCisgICAgICAg
IChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OmRpc2FibGVkKTogQWNjb3VudCBmb3IgdGhlIHRl
bXBvcmFyeSBzdGF0ZSBhbmQgcmV0dXJuIHRoZQorICAgICAgICByaWdodCB2YWx1ZS4gSXQgbWF0
Y2hlcyBGRiBhbmQgd2hhdCBwZW9wbGUgd291bGQgZXhwZWN0LgorCisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTGlua0VsZW1lbnQ6OmNoZWNrRGlzYWJsZWRBbmRFbmFibGVkVmlhU2NyaXB0U3RhdGUp
OiBEZWJ1ZyBvbmx5IG1ldGhvZAorICAgICAgICB0aGF0IGNoZWNrcyB0aGF0IGRpc2FibGVkKCkg
YW5kIGlzRW5hYmxlZFZpYVNjcmlwdCgpIGFyZSBjb25zaXN0ZW50IHdpdGggZWFjaCBvdGhlcgor
ICAgICAgICAodW5kZXIgc29tZSBjaXJjdW1zdGFuY2VzKS4KKworICAgICAgICAqIGh0bWwvSFRN
TExpbmtFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OmlzRW5h
YmxlZFZpYVNjcmlwdCk6IFVwZGF0ZWQgYWZ0ZXIgbV9pc0VuYWJsZWRWaWFTY3JpcHQgcmVuYW1l
LgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50OjpzZXRJc0VuYWJsZWRWaWFTY3Jp
cHQpOiBBZGRlZCBzZXR0ZXIuCisKIDIwMTEtMDgtMTggIEFuZHJleSBLb3N5YWtvdiAgPGNhc2Vx
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBbRXh0ZW5zaW9ucyBBUEld
IHJlbmFtZSB3ZWJJbnNwZWN0b3IucmVzb3VyY2VzIHRvIHdlYkluc3BlY3Rvci5uZXR3b3JrCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKaW5kZXggNGJjNmU5MzNlY2QwZGYz
YmNlYzM5YjFjYzhjYTNmOThmOTc4ODlkMi4uNDNjMjk2NzZhYzUxMjNiZjhjNzFkYjE5MmRmMTI2
Yzg1NGU0MmI0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcApAQCAt
NTYsNyArNTYsNyBAQCBpbmxpbmUgSFRNTExpbmtFbGVtZW50OjpIVE1MTGlua0VsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqCiAgICAgLCBtX2xpbmtMb2FkZXIo
dGhpcykKICAgICAsIG1fc2l6ZXMoRE9NU2V0dGFibGVUb2tlbkxpc3Q6OmNyZWF0ZSgpKQogICAg
ICwgbV9sb2FkaW5nKGZhbHNlKQotICAgICwgbV9pc0VuYWJsZWRWaWFTY3JpcHQoZmFsc2UpCisg
ICAgLCBtX3NjcmlwdFN0YXRlKFVuc2V0KQogICAgICwgbV9jcmVhdGVkQnlQYXJzZXIoY3JlYXRl
ZEJ5UGFyc2VyKQogICAgICwgbV9pc0luU2hhZG93VHJlZShmYWxzZSkKICAgICAsIG1fcGVuZGlu
Z1NoZWV0VHlwZShOb25lKQpAQCAtODUsMTUgKzg1LDIwIEBAIEhUTUxMaW5rRWxlbWVudDo6fkhU
TUxMaW5rRWxlbWVudCgpCiAKIHZvaWQgSFRNTExpbmtFbGVtZW50OjpzZXREaXNhYmxlZChib29s
IGRpc2FibGVkKQogeworICAgIGJvb2wgd2FzRW5hYmxlZFZpYVNjcmlwdCA9IGlzRW5hYmxlZFZp
YVNjcmlwdCgpOworICAgIHNldElzRW5hYmxlZFZpYVNjcmlwdCghZGlzYWJsZWQpOworCiAgICAg
aWYgKCFtX3NoZWV0KQogICAgICAgICByZXR1cm47CiAKICAgICBib29sIHdhc0Rpc2FibGVkID0g
bV9zaGVldC0+ZGlzYWJsZWQoKTsKLSAgICBpZiAod2FzRGlzYWJsZWQgPT0gZGlzYWJsZWQpCisg
ICAgaWYgKHdhc0Rpc2FibGVkID09IGRpc2FibGVkKSB7CisgICAgICAgIGlmICh3YXNFbmFibGVk
VmlhU2NyaXB0ICE9IGlzRW5hYmxlZFZpYVNjcmlwdCgpKQorICAgICAgICAgICAgZG9jdW1lbnQo
KS0+c3R5bGVTZWxlY3RvckNoYW5nZWQoRGVmZXJSZWNhbGNTdHlsZSk7CiAgICAgICAgIHJldHVy
bjsKKyAgICB9CiAKICAgICBtX3NoZWV0LT5zZXREaXNhYmxlZChkaXNhYmxlZCk7Ci0gICAgbV9p
c0VuYWJsZWRWaWFTY3JpcHQgPSAhZGlzYWJsZWQ7CiAKICAgICAvLyBJZiB3ZSBjaGFuZ2UgdGhl
IGRpc2FibGVkIHN0YXRlIHdoaWxlIHRoZSBzaGVldCBpcyBzdGlsbCBsb2FkaW5nLCB0aGVuIHdl
IGhhdmUgdG8KICAgICAvLyBwZXJmb3JtIHRocmVlIGNoZWNrczoKQEAgLTEyMCw2ICsxMjUsOCBA
QCB2b2lkIEhUTUxMaW5rRWxlbWVudDo6c2V0RGlzYWJsZWQoYm9vbCBkaXNhYmxlZCkKIAogICAg
IGlmICghZGlzYWJsZWQpCiAgICAgICAgIHByb2Nlc3MoKTsKKworICAgIGNoZWNrRGlzYWJsZWRB
bmRFbmFibGVkVmlhU2NyaXB0U3RhdGUoKTsKIH0KIAogU3R5bGVTaGVldCogSFRNTExpbmtFbGVt
ZW50OjpzaGVldCgpIGNvbnN0CkBAIC0zNTksMTAgKzM2NiwyMCBAQCB2b2lkIEhUTUxMaW5rRWxl
bWVudDo6bGlua0xvYWRpbmdFcnJvcmVkKCkKIAogYm9vbCBIVE1MTGlua0VsZW1lbnQ6OnNoZWV0
TG9hZGVkKCkKIHsKKyAgICAvLyBNaWdyYXRlIHRoZSBkaXNhYmxlZCBpbmZvcm1hdGlvbiBiZWZv
cmUgcmVtb3ZlUGVuZGluZ1NoZWV0IGlzIGNhbGxlZAorICAgIC8vIGFzIGl0IHdpbGwgc3RhcnQg
YSByZWNhbFN0eWxlU2VsZWN0b3Igd2hpY2ggbmVlZHMgdGhpcyBpbmZvcm1hdGlvbi4KKyAgICBp
ZiAobV9zY3JpcHRTdGF0ZSAhPSBVbnNldCkgeworICAgICAgICBBU1NFUlQoIW1fbG9hZGluZyk7
CisgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgQVNTRVJUIHRoYXQgaXQgd2FzIHNldCBmb3Ig
c3R5bGVzaGVldHMgb25seSwgYnV0CisgICAgICAgIC8vIGN1cnJlbnRseSB3ZSBhbGxvdyBzZXRE
aXNhYmxlZCB0byBiZSBjYWxsZWQgcmVnYXJkbGVzcyBvZiB0aGUgPGxpbms+IHJlbC4KKyAgICAg
ICAgc2V0RGlzYWJsZWQobV9zY3JpcHRTdGF0ZSA9PSBEaXNhYmxlZFZpYVNjcmlwdCk7CisgICAg
fQorCiAgICAgaWYgKCFpc0xvYWRpbmcoKSkgewogICAgICAgICByZW1vdmVQZW5kaW5nU2hlZXQo
KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQorCiAgICAgcmV0dXJuIGZhbHNlOwogfQog
CkBAIC00NDUsNyArNDYyLDE5IEBAIHZvaWQgSFRNTExpbmtFbGVtZW50OjpyZW1vdmVQZW5kaW5n
U2hlZXQoKQogCiBib29sIEhUTUxMaW5rRWxlbWVudDo6ZGlzYWJsZWQoKSBjb25zdAogewotICAg
IHJldHVybiBtX3NoZWV0ICYmIG1fc2hlZXQtPmRpc2FibGVkKCk7CisgICAgY2hlY2tEaXNhYmxl
ZEFuZEVuYWJsZWRWaWFTY3JpcHRTdGF0ZSgpOworCisgICAgaWYgKCFtX3NoZWV0KSB7CisgICAg
ICAgIC8vIEZGIGRpc2FncmVlcyB3aXRoIHRoZSBDU1MgT00gc3BlYyBhbmQgYWx3YXlzIGhhcyBh
biBhc3NvY2lhdGVkIHN0eWxlc2hlZXQgZm9yIGFsdGVybmF0ZSBzaGVldCAocmVnYXJkbGVzcyBv
ZiB3aGV0aGVyCisgICAgICAgIC8vIHRoZSByZXNvdXJjZSBpcyBmZXRjaGVkKS4gQXMgd2Ugc3Rv
cmUgdGhlIGVuYWJsZWQgc3RhdGUgaW4gbV9zY3JpcHRTdGF0ZSB3aGlsZSBsb2FkaW5nLCByZXR1
cm4gdGhpcyBpbmZvcm1hdGlvbiB0byBiZQorICAgICAgICAvLyBjb25zaXN0ZW50IHdpdGggRkYu
CisgICAgICAgIGlmIChpc0xvYWRpbmcoKSAmJiBtX3NjcmlwdFN0YXRlICE9IFVuc2V0KQorICAg
ICAgICAgICAgcmV0dXJuIG1fc2NyaXB0U3RhdGUgPT0gRGlzYWJsZWRWaWFTY3JpcHQ7CisKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiBtX3NoZWV0LT5kaXNhYmxl
ZCgpOwogfQogCiBET01TZXR0YWJsZVRva2VuTGlzdCogSFRNTExpbmtFbGVtZW50OjpzaXplcygp
IGNvbnN0CkBAIC00NTgsNCArNDg3LDIzIEBAIHZvaWQgSFRNTExpbmtFbGVtZW50OjpzZXRTaXpl
cyhjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgIG1fc2l6ZXMtPnNldFZhbHVlKHZhbHVlKTsKIH0K
IAordm9pZCBIVE1MTGlua0VsZW1lbnQ6OmNoZWNrRGlzYWJsZWRBbmRFbmFibGVkVmlhU2NyaXB0
U3RhdGUoKSBjb25zdAoreworI2lmbmRlZiBOREVCVUcKKyAgICBpZiAoIW1fcmVsQXR0cmlidXRl
Lm1faXNTdHlsZVNoZWV0KQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBEdXJpbmcgbG9hZGlu
ZywgbV9zY3JpcHRTdGF0ZSBob2xkcyB0aGUgdGVtcG9yYXJ5IHZhbHVlIGZvciBzaGVldCgpLT5k
aXNhYmxlZCgpCisgICAgLy8gc28gaXQgY2FuIGhhdmUgYW55IHZhbHVlcyAoc2FtZSBmb3Igc2hl
ZXQoKS0+ZGlzYWJsZWQoKSkuCisgICAgaWYgKGlzTG9hZGluZygpKQorICAgICAgICByZXR1cm47
CisKKyAgICBpZiAobV9zY3JpcHRTdGF0ZSA9PSBVbnNldCkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgYm9vbCBpc0Rpc2FibGVkVmlhU2NyaXB0ID0gbV9zY3JpcHRTdGF0ZSA9PSBEaXNhYmxlZFZp
YVNjcmlwdDsKKyAgICBBU1NFUlQoaXNEaXNhYmxlZFZpYVNjcmlwdCA9PSBzaGVldCgpLT5kaXNh
YmxlZCgpKTsKKyNlbmRpZgorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTGlua0VsZW1lbnQuaAppbmRleCA4ZmVkZTAyZTVlN2Y5MmI3NDBmODU5MDkxM2U4
Yjc1OWE2ZDE1MTM4Li42NTVkNTA1YWFhOTI4YTFjNmUxNjcyMDk0ZTNmZTlkMTZjMTJmNzQzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVi
bGljOgogCiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIHJlbmFtZWQgaXNTdHlsZVNoZWV0
TG9hZGluZyBhcyB0aGlzIGlzIG9ubHkgdXNlZCBmb3Igc3R5bGVzaGVldHMuCiAgICAgYm9vbCBp
c0xvYWRpbmcoKSBjb25zdDsKLSAgICBib29sIGlzRW5hYmxlZFZpYVNjcmlwdCgpIGNvbnN0IHsg
cmV0dXJuIG1faXNFbmFibGVkVmlhU2NyaXB0OyB9CisgICAgYm9vbCBpc0VuYWJsZWRWaWFTY3Jp
cHQoKSBjb25zdCB7IHJldHVybiBtX3NjcmlwdFN0YXRlID09IEVuYWJsZWRWaWFTY3JpcHQ7IH0K
ICAgICBib29sIGRpc2FibGVkKCkgY29uc3Q7CiAgICAgdm9pZCBzZXREaXNhYmxlZChib29sKTsK
ICAgICB2b2lkIHNldFNpemVzKGNvbnN0IFN0cmluZyYpOwpAQCAtODUsNyArODUsNiBAQCBwcml2
YXRlOgogICAgIAogICAgIHZpcnR1YWwgYm9vbCBpc1VSTEF0dHJpYnV0ZShBdHRyaWJ1dGUqKSBj
b25zdDsKIAotcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgYWRkU3VicmVzb3VyY2VBdHRyaWJ1
dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JikgY29uc3Q7CiAKICAgICB2aXJ0dWFsIHZvaWQgZmlu
aXNoUGFyc2luZ0NoaWxkcmVuKCk7CkBAIC05Nyw2ICs5Niw5IEBAIHByaXZhdGU6CiBwcml2YXRl
OgogICAgIEhUTUxMaW5rRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqLCBi
b29sIGNyZWF0ZWRCeVBhcnNlcik7CiAKKyAgICB2b2lkIHNldElzRW5hYmxlZFZpYVNjcmlwdChi
b29sIGVuYWJsZWQpIHsgbV9zY3JpcHRTdGF0ZSA9IGVuYWJsZWQgPyBFbmFibGVkVmlhU2NyaXB0
IDogRGlzYWJsZWRWaWFTY3JpcHQ7IH0KKyAgICB2b2lkIGNoZWNrRGlzYWJsZWRBbmRFbmFibGVk
VmlhU2NyaXB0U3RhdGUoKSBjb25zdDsKKwogICAgIExpbmtMb2FkZXIgbV9saW5rTG9hZGVyOwog
ICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZENTU1N0eWxlU2hlZXQ+IG1fY2FjaGVkU2hl
ZXQ7CiAgICAgUmVmUHRyPENTU1N0eWxlU2hlZXQ+IG1fc2hlZXQ7CkBAIC0xMDYsMTAgKzEwOCwx
MSBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxET01TZXR0YWJsZVRva2VuTGlzdD4gbV9zaXplczsK
ICAgICBMaW5rUmVsQXR0cmlidXRlIG1fcmVsQXR0cmlidXRlOwogICAgIGJvb2wgbV9sb2FkaW5n
OwotICAgIGJvb2wgbV9pc0VuYWJsZWRWaWFTY3JpcHQ7CisgICAgZW51bSBFbmFibGVkVmlhU2Ny
aXB0U3RhdGUgeyBVbnNldCwgRW5hYmxlZFZpYVNjcmlwdCwgRGlzYWJsZWRWaWFTY3JpcHQgfTsK
KyAgICBFbmFibGVkVmlhU2NyaXB0U3RhdGUgbV9zY3JpcHRTdGF0ZTsKICAgICBib29sIG1fY3Jl
YXRlZEJ5UGFyc2VyOwogICAgIGJvb2wgbV9pc0luU2hhZG93VHJlZTsKLSAgICAKKwogICAgIFBl
bmRpbmdTaGVldFR5cGUgbV9wZW5kaW5nU2hlZXRUeXBlOwogfTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104520</attachid>
            <date>2011-08-19 10:14:57 -0700</date>
            <delta_ts>2011-08-19 10:52:41 -0700</delta_ts>
            <desc>New version 5: Tweaked the debug-only code + added testing for an alternate stylesheet in error.</desc>
            <filename>bug-65140-20110819101456.patch</filename>
            <type>text/plain</type>
            <size>32010</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTM0MjAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1YWVlNDM3MDUzZWUwNTY4MDkxMTI0
NjMwOGY3NjUwM2E4ZjBkZTliLi5jMWEwMzZjMGY3Zjk4ZmQ4Zjc2Y2EzNTVmODk3YjVhZGZkNDQw
M2Q3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMTEtMDgtMTkgIEp1bGllbiBDaGFmZnJhaXgg
IDxqY2hhZmZyYWl4QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUkVHUkVTU0lPTiAocjg0MzI3LXI4
NDMyOSk6IENTUyBzdHlsZXNoZWV0cyBmYWlsIHRvIGxvYWQgb24gd3d3LmZsYWdzdGFyLmNvbSBs
b2dpbiBwYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02NTE0MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vOTgzNTkwNT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvY3NzL2xpbmstZGlzYWJs
ZWQtYXR0ci1leHBlY3RlZC50eHQ6IFRoaXMgY2hhbmdlIGlzIGEgcHJvZ3Jlc3Npb24sIGJ1dCB3
ZSBhcmUgc3RpbGwKKyAgICAgICAgbm90IGhhbmRsaW5nIHVwZGF0ZXMgdG8gdGhlIHNlbGVjdGVk
IHN0eWxlIHNldCBwcm9wZXJseSAoYWxyZWFkeSBjb3ZlcmVkIGJ5IGJ1ZyA2MjQwNykuCisKKyAg
ICAgICAgKiBmYXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1maXJzdC1hbHRlcm5hdGUtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1maXJz
dC1hbHRlcm5hdGUtb24tbG9hZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
Y3NzL3N0eWxlc2hlZXQtZW5hYmxlLWZpcnN0LWFsdGVybmF0ZS1vbi1sb2FkLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxlLWZpcnN0LWFsdGVybmF0ZS5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1zZWNvbmQt
YWx0ZXJuYXRlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3Mvc3R5bGVz
aGVldC1lbmFibGUtc2Vjb25kLWFsdGVybmF0ZS1vbi1sb2FkLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZmFzdC9jc3Mvc3R5bGVzaGVldC1lbmFibGUtc2Vjb25kLWFsdGVybmF0ZS1v
bi1sb2FkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxl
LXNlY29uZC1hbHRlcm5hdGUuaHRtbDogQWRkZWQuCisgICAgICAgIFRob3NlIGFyZSBhIHZhcmlh
dGlvbiBvbiB0aGUgc2FtZSB0aGVtZTogd2UgZGlzYWJsZSBzb21lIHN0eWxlc2hlZXQgYW5kIGVu
YWJsZSBvdGhlcnMsCisgICAgICAgIGVpdGhlciBkaXJlY3RseSBvciBsYXRlci4KKworICAgICAg
ICAqIGh0dHAvdGVzdHMvY3NzL2xpbmstY3NzLWRpc2FibGVkLXZhbHVlLXdpdGgtc2xvdy1sb2Fk
aW5nLXNoZWV0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9jc3Mv
bGluay1jc3MtZGlzYWJsZWQtdmFsdWUtd2l0aC1zbG93LWxvYWRpbmctc2hlZXQtaW4tZXJyb3It
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2Nzcy9saW5rLWNzcy1k
aXNhYmxlZC12YWx1ZS13aXRoLXNsb3ctbG9hZGluZy1zaGVldC1pbi1lcnJvci5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2Nzcy9saW5rLWNzcy1kaXNhYmxlZC12YWx1ZS13aXRo
LXNsb3ctbG9hZGluZy1zaGVldC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2Nz
cy9yZXNvdXJjZXMvbGluay1jc3MtZGlzYWJsZWQtdmFsdWUtd2l0aC1zbG93LWxvYWRpbmctc2hl
ZXQtaW4tZXJyb3IuanM6IEFkZGVkLgorICAgICAgICAob25TaGVldExvYWRlZCk6CisgICAgICAg
ICh0ZXN0V2hlbkxvYWRlZCk6CisgICAgICAgICogaHR0cC90ZXN0cy9jc3MvcmVzb3VyY2VzL2xp
bmstY3NzLWRpc2FibGVkLXZhbHVlLXdpdGgtc2xvdy1sb2FkaW5nLXNoZWV0LmpzOiBBZGRlZC4K
KyAgICAgICAgKG9uU2hlZXRMb2FkZWQpOgorICAgICAgICAodGVzdFdoZW5Mb2FkZWQpOgorICAg
ICAgICAqIGh0dHAvdGVzdHMvY3NzL3Jlc291cmNlcy9zbG93LWxvYWRpbmctc2hlZXQtaW4tZXJy
b3IucGhwOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2Nzcy9yZXNvdXJjZXMvc2xvdy1s
b2FkaW5nLXNoZWV0LnBocDogQWRkZWQuCisgICAgICAgIFRob3NlIDIgdGVzdCBjYXNlcyByZWxp
ZXMgb24gYSBzbG93IGxvYWRpbmcgc3R5bGVzaGVldCBzbyB0aGF0IHdlIGNhbiB0ZXN0IHRoZSBk
aXNhYmxlZCgpIHZhbHVlIHdoaWxlIHRoZSBhbHRlcm5hdGUKKyAgICAgICAgc2hlZXQgaXMgYXN5
bmNocm9ub3VzbHkgbG9hZGluZyBhbmQgdGhlbiBjaGVjayB0aGVtIGFnYWluIG9uY2UgdGhlIHNo
ZWV0IGlzIGxvYWRlZC4KKwogMjAxMS0wOC0xOCAgUGF2ZWwgUG9kaXZpbG92ICA8cG9kaXZpbG92
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBleHRyYWN0IGJyZWFrcG9p
bnQgbWFuYWdlbWVudCBjb2RlIHRvIGEgc2VwYXJhdGUgY2xhc3MgYW5kIGFkZCB0ZXN0cy4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL2xpbmstZGlzYWJsZWQtYXR0ci1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9saW5rLWRpc2FibGVkLWF0dHItZXhwZWN0ZWQu
dHh0CmluZGV4IDU3MWFjYjI4ZDc3MjY2MGZjMmFkYjRjMjJmYTgyMGZjNTZhNmRmY2UuLmY0MTM3
MGExMjVmNDI5ODAzMGQ1YjY0MTBmNTk1YzVjYTEzMTNjZDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2Zhc3QvY3NzL2xpbmstZGlzYWJsZWQtYXR0ci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9jc3MvbGluay1kaXNhYmxlZC1hdHRyLWV4cGVjdGVkLnR4dApAQCAtMTUsMTEg
KzE1LDExIEBAIFBBU1MgZ2V0Q29tcHV0ZWRTdHlsZShjb25zb2xlKS53aGl0ZVNwYWNlIGlzICdw
cmUtd3JhcCcKIGFsdHNoZWV0CiBGQUlMIGxpbmsuZGlzYWJsZWQgc2hvdWxkIGJlIHRydWUuIFdh
cyBmYWxzZS4KIFBBU1MgbGluay5zaGVldCBpcyBub24tbnVsbC4KLUZBSUwgZ2V0Q29tcHV0ZWRT
dHlsZShjb25zb2xlKS5iYWNrZ3JvdW5kQ29sb3Igc2hvdWxkIGJlIHJnYigwLCAxMjgsIDApLiBX
YXMgcmdiYSgwLCAwLCAwLCAwKS4KK1BBU1MgZ2V0Q29tcHV0ZWRTdHlsZShjb25zb2xlKS5iYWNr
Z3JvdW5kQ29sb3IgaXMgJ3JnYigwLCAxMjgsIDApJwogRkFJTCBsaW5rLmRpc2FibGVkIHNob3Vs
ZCBiZSB0cnVlLiBXYXMgZmFsc2UuCi1QQVNTIGdldENvbXB1dGVkU3R5bGUoY29uc29sZSkuYmFj
a2dyb3VuZENvbG9yIGlzIG9yaWdpbmFsQkcKK0ZBSUwgZ2V0Q29tcHV0ZWRTdHlsZShjb25zb2xl
KS5iYWNrZ3JvdW5kQ29sb3Igc2hvdWxkIGJlIHJnYmEoMCwgMCwgMCwgMCkuIFdhcyByZ2IoMCwg
MTI4LCAwKS4KIFBBU1MgbGluay5kaXNhYmxlZCBpcyBmYWxzZQotRkFJTCBnZXRDb21wdXRlZFN0
eWxlKGNvbnNvbGUpLmJhY2tncm91bmRDb2xvciBzaG91bGQgYmUgcmdiKDAsIDEyOCwgMCkuIFdh
cyByZ2JhKDAsIDAsIDAsIDApLgorUEFTUyBnZXRDb21wdXRlZFN0eWxlKGNvbnNvbGUpLmJhY2tn
cm91bmRDb2xvciBpcyAncmdiKDAsIDEyOCwgMCknCiBQQVNTIGdldENvbXB1dGVkU3R5bGUoY29u
c29sZSkuYmFja2dyb3VuZENvbG9yIGlzIG9yaWdpbmFsQkcKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGVzaGVl
dC1lbmFibGUtZmlyc3QtYWx0ZXJuYXRlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qv
Y3NzL3N0eWxlc2hlZXQtZW5hYmxlLWZpcnN0LWFsdGVybmF0ZS1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYzA1MjhmYjc1OGE5MWQ3ZjMwNjgyMDcxMTE1MGY5OGE1ZDE3MDJjNAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxlLWZpcnN0LWFs
dGVybmF0ZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1IEBACitUZXN0IGZvciA2NTE0MDogUkVH
UkVTU0lPTiAocjg0MzI3LXI4NDMyOSk6IENTUyBzdHlsZXNoZWV0cyBmYWlsIHRvIGxvYWQgb24g
d3d3LmZsYWdzdGFyLmNvbSBsb2dpbiBwYWdlCisKK1RoaXMgdGVzdCBQQVNTRUQgaWYgUEFTU0VE
IGlzIHdyaXR0ZW4gYmVsb3cgKGFsdGVybmF0aXZlbHkgdGhlIG5leHQgbGluZSBzaG91bGQgaGF2
ZSBhIEdSRUVOIGJhY2tncm91bmQpLgorCitQQVNTRUQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxlLWZpcnN0LWFsdGVybmF0ZS1vbi1sb2FkLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxlLWZpcnN0LWFs
dGVybmF0ZS1vbi1sb2FkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMDUyOGZiNzU4YTkxZDdm
MzA2ODIwNzExMTUwZjk4YTVkMTcwMmM0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9jc3Mvc3R5bGVzaGVldC1lbmFibGUtZmlyc3QtYWx0ZXJuYXRlLW9uLWxvYWQtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorVGVzdCBmb3IgNjUxNDA6IFJFR1JFU1NJT04gKHI4NDMy
Ny1yODQzMjkpOiBDU1Mgc3R5bGVzaGVldHMgZmFpbCB0byBsb2FkIG9uIHd3dy5mbGFnc3Rhci5j
b20gbG9naW4gcGFnZQorCitUaGlzIHRlc3QgUEFTU0VEIGlmIFBBU1NFRCBpcyB3cml0dGVuIGJl
bG93IChhbHRlcm5hdGl2ZWx5IHRoZSBuZXh0IGxpbmUgc2hvdWxkIGhhdmUgYSBHUkVFTiBiYWNr
Z3JvdW5kKS4KKworUEFTU0VECmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHls
ZXNoZWV0LWVuYWJsZS1maXJzdC1hbHRlcm5hdGUtb24tbG9hZC5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9jc3Mvc3R5bGVzaGVldC1lbmFibGUtZmlyc3QtYWx0ZXJuYXRlLW9uLWxvYWQuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5hMjk1ZTQyZGMyNGY0MTI5YWEzYWI3OTI3ZjZlYTk2NDc4MWUwYmRkCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGVzaGVldC1lbmFibGUtZmly
c3QtYWx0ZXJuYXRlLW9uLWxvYWQuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IURPQ1RZUEUgSFRN
TCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvcmVkLmNzcyIgbWVkaWE9ImFsbCIgdGl0
bGU9IkRlZmF1bHQgU3R5bGUgU2hlZXQiIHR5cGU9InRleHQvY3NzIiAvPgorPGxpbmsgcmVsPSJh
bHRlcm5hdGUgc3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL2dyZWVuLmNzcyIgbWVkaWE9ImFs
bCIgdGl0bGU9ImdyZWVuIiB0eXBlPSJ0ZXh0L2NzcyIgLz4KKzxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0Ij4KKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICBmdW5jdGlvbiB0ZXN0
KCkgeworICAgICAgICB2YXIgcmVkID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxp
bmsiKVswXTsKKyAgICAgICAgcmVkLmRpc2FibGVkID0gdHJ1ZTsKKyAgICAgICAgdmFyIGdyZWVu
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxpbmsiKVsxXTsKKyAgICAgICAgZ3Jl
ZW4uZGlzYWJsZWQgPSB0cnVlOworICAgICAgICBncmVlbi5kaXNhYmxlZCA9IGZhbHNlOworCisg
ICAgICAgIHZhciBjb25zb2xlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKTsK
KyAgICAgICAgaWYgKGdldENvbXB1dGVkU3R5bGUoY29uc29sZSwgbnVsbCkuYmFja2dyb3VuZENv
bG9yID09PSAicmdiKDAsIDEyOCwgMCkiKQorICAgICAgICAgICAgY29uc29sZS5pbm5lckhUTUwg
PSAiUEFTU0VEIjsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY29uc29sZS5pbm5lckhUTUwg
PSAiRkFJTEVELCBiYWNrZ3JvdW5kID0gIiArIGdldENvbXB1dGVkU3R5bGUoY29uc29sZSwgbnVs
bCkuYmFja2dyb3VuZENvbG9yOworICAgIH0KKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigi
bG9hZCIsIHRlc3QsIGZhbHNlKTsKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cD5UZXN0
IGZvciA8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjUx
NDAiPjY1MTQwPC9hPjogUkVHUkVTU0lPTiAocjg0MzI3LXI4NDMyOSk6IENTUyBzdHlsZXNoZWV0
cyBmYWlsIHRvIGxvYWQgb24gd3d3LmZsYWdzdGFyLmNvbSBsb2dpbiBwYWdlPC9wPgorPHA+VGhp
cyB0ZXN0IFBBU1NFRCBpZiBQQVNTRUQgaXMgd3JpdHRlbiBiZWxvdyAoYWx0ZXJuYXRpdmVseSB0
aGUgbmV4dCBsaW5lIHNob3VsZCBoYXZlIGEgR1JFRU4gYmFja2dyb3VuZCkuPC9wPgorPGRpdiBp
ZD0iY29uc29sZSI+RkFJTEVEPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1maXJzdC1hbHRlcm5hdGUuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxlLWZpcnN0LWFsdGVybmF0
ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmY1NTkwNjNmOTFjMzIwY2I5N2I5NDQxYWFjM2Q2MWY1NTIyZTE1
MzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZXNoZWV0LWVu
YWJsZS1maXJzdC1hbHRlcm5hdGUuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IURPQ1RZUEUgSFRN
TCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvcmVkLmNzcyIgbWVkaWE9ImFsbCIgdGl0
bGU9IkRlZmF1bHQgU3R5bGUgU2hlZXQiIHR5cGU9InRleHQvY3NzIiAvPgorPGxpbmsgcmVsPSJh
bHRlcm5hdGUgc3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL2dyZWVuLmNzcyIgbWVkaWE9ImFs
bCIgdGl0bGU9ImdyZWVuIiB0eXBlPSJ0ZXh0L2NzcyIgLz4KKzxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0Ij4KKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICB2YXIgcmVkID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxpbmsiKVswXTsKKyAgICByZWQuZGlzYWJsZWQg
PSB0cnVlOworICAgIHZhciBncmVlbiA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJs
aW5rIilbMV07CisgICAgZ3JlZW4uZGlzYWJsZWQgPSB0cnVlOworICAgIGdyZWVuLmRpc2FibGVk
ID0gZmFsc2U7CisKKyAgICBmdW5jdGlvbiB0ZXN0KCkgeworICAgICAgICB2YXIgY29uc29sZSA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIik7CisgICAgICAgIGlmIChnZXRDb21w
dXRlZFN0eWxlKGNvbnNvbGUsIG51bGwpLmJhY2tncm91bmRDb2xvciA9PT0gInJnYigwLCAxMjgs
IDApIikKKyAgICAgICAgICAgIGNvbnNvbGUuaW5uZXJIVE1MID0gIlBBU1NFRCI7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIGNvbnNvbGUuaW5uZXJIVE1MID0gIkZBSUxFRCwgYmFja2dyb3Vu
ZCA9ICIgKyBnZXRDb21wdXRlZFN0eWxlKGNvbnNvbGUsIG51bGwpLmJhY2tncm91bmRDb2xvcjsK
KyAgICB9CisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCB0ZXN0LCBmYWxzZSk7
Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGVzdCBmb3IgPGEgaHJlZj0iaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1MTQwIj42NTE0MDwvYT46IFJFR1JF
U1NJT04gKHI4NDMyNy1yODQzMjkpOiBDU1Mgc3R5bGVzaGVldHMgZmFpbCB0byBsb2FkIG9uIHd3
dy5mbGFnc3Rhci5jb20gbG9naW4gcGFnZTwvcD4KKzxwPlRoaXMgdGVzdCBQQVNTRUQgaWYgUEFT
U0VEIGlzIHdyaXR0ZW4gYmVsb3cgKGFsdGVybmF0aXZlbHkgdGhlIG5leHQgbGluZSBzaG91bGQg
aGF2ZSBhIEdSRUVOIGJhY2tncm91bmQpLjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPkZBSUxFRDwv
ZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3Mv
c3R5bGVzaGVldC1lbmFibGUtc2Vjb25kLWFsdGVybmF0ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9mYXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1zZWNvbmQtYWx0ZXJuYXRlLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5jMDUyOGZiNzU4YTkxZDdmMzA2ODIwNzExMTUwZjk4YTVkMTcwMmM0
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGVzaGVldC1lbmFi
bGUtc2Vjb25kLWFsdGVybmF0ZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1IEBACitUZXN0IGZv
ciA2NTE0MDogUkVHUkVTU0lPTiAocjg0MzI3LXI4NDMyOSk6IENTUyBzdHlsZXNoZWV0cyBmYWls
IHRvIGxvYWQgb24gd3d3LmZsYWdzdGFyLmNvbSBsb2dpbiBwYWdlCisKK1RoaXMgdGVzdCBQQVNT
RUQgaWYgUEFTU0VEIGlzIHdyaXR0ZW4gYmVsb3cgKGFsdGVybmF0aXZlbHkgdGhlIG5leHQgbGlu
ZSBzaG91bGQgaGF2ZSBhIEdSRUVOIGJhY2tncm91bmQpLgorCitQQVNTRUQKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxlLXNlY29uZC1hbHRlcm5hdGUt
b24tbG9hZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZXNoZWV0LWVu
YWJsZS1zZWNvbmQtYWx0ZXJuYXRlLW9uLWxvYWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMw
NTI4ZmI3NThhOTFkN2YzMDY4MjA3MTExNTBmOThhNWQxNzAyYzQKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1zZWNvbmQtYWx0ZXJuYXRl
LW9uLWxvYWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorVGVzdCBmb3IgNjUxNDA6IFJF
R1JFU1NJT04gKHI4NDMyNy1yODQzMjkpOiBDU1Mgc3R5bGVzaGVldHMgZmFpbCB0byBsb2FkIG9u
IHd3dy5mbGFnc3Rhci5jb20gbG9naW4gcGFnZQorCitUaGlzIHRlc3QgUEFTU0VEIGlmIFBBU1NF
RCBpcyB3cml0dGVuIGJlbG93IChhbHRlcm5hdGl2ZWx5IHRoZSBuZXh0IGxpbmUgc2hvdWxkIGhh
dmUgYSBHUkVFTiBiYWNrZ3JvdW5kKS4KKworUEFTU0VECmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1zZWNvbmQtYWx0ZXJuYXRlLW9uLWxvYWQuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxlLXNlY29uZC1hbHRlcm5h
dGUtb24tbG9hZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNjODA4NmUwYjRhMjdjN2ZmZDgxYTMzYzBkMDI1
MzE1NTE0MmM2NmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHls
ZXNoZWV0LWVuYWJsZS1zZWNvbmQtYWx0ZXJuYXRlLW9uLWxvYWQuaHRtbApAQCAtMCwwICsxLDMx
IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRt
bD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvcmVkLmNz
cyIgbWVkaWE9ImFsbCIgdGl0bGU9IkRlZmF1bHQgU3R5bGUgU2hlZXQiIHR5cGU9InRleHQvY3Nz
IiAvPgorPGxpbmsgcmVsPSJhbHRlcm5hdGUgc3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL3Jl
ZC5jc3MiIG1lZGlhPSJhbGwiIHRpdGxlPSJncmVlbiIgdHlwZT0idGV4dC9jc3MiIC8+Cis8bGlu
ayByZWw9ImFsdGVybmF0ZSBzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvZ3JlZW4uY3NzIiBt
ZWRpYT0iYWxsIiB0aXRsZT0iZ3JlZW4iIHR5cGU9InRleHQvY3NzIiAvPgorPHNjcmlwdCB0eXBl
PSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgIGZ1bmN0
aW9uIHRlc3QoKSB7CisgICAgICAgIHZhciByZWQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgibGluayIpWzBdOworICAgICAgICByZWQuZGlzYWJsZWQgPSB0cnVlOworICAgICAgICB2
YXIgZ3JlZW4gPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGluayIpWzJdOworICAg
ICAgICBncmVlbi5kaXNhYmxlZCA9IGZhbHNlOworCisgICAgICAgIHZhciBjb25zb2xlID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKTsKKyAgICAgICAgaWYgKGdldENvbXB1dGVk
U3R5bGUoY29uc29sZSwgbnVsbCkuYmFja2dyb3VuZENvbG9yID09PSAicmdiKDAsIDEyOCwgMCki
KQorICAgICAgICAgICAgY29uc29sZS5pbm5lckhUTUwgPSAiUEFTU0VEIjsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgY29uc29sZS5pbm5lckhUTUwgPSAiRkFJTEVELCBiYWNrZ3JvdW5kID0g
IiArIGdldENvbXB1dGVkU3R5bGUoY29uc29sZSwgbnVsbCkuYmFja2dyb3VuZENvbG9yOworICAg
IH0KKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIHRlc3QsIGZhbHNlKTsKKzwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cD5UZXN0IGZvciA8YSBocmVmPSJodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjUxNDAiPjY1MTQwPC9hPjogUkVHUkVTU0lP
TiAocjg0MzI3LXI4NDMyOSk6IENTUyBzdHlsZXNoZWV0cyBmYWlsIHRvIGxvYWQgb24gd3d3LmZs
YWdzdGFyLmNvbSBsb2dpbiBwYWdlPC9wPgorPHA+VGhpcyB0ZXN0IFBBU1NFRCBpZiBQQVNTRUQg
aXMgd3JpdHRlbiBiZWxvdyAoYWx0ZXJuYXRpdmVseSB0aGUgbmV4dCBsaW5lIHNob3VsZCBoYXZl
IGEgR1JFRU4gYmFja2dyb3VuZCkuPC9wPgorPGRpdiBpZD0iY29uc29sZSI+RkFJTEVEPC9kaXY+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHls
ZXNoZWV0LWVuYWJsZS1zZWNvbmQtYWx0ZXJuYXRlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nz
cy9zdHlsZXNoZWV0LWVuYWJsZS1zZWNvbmQtYWx0ZXJuYXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDBl
NWMyYzIxZGQ2ZjViNTUwMDUxMzIyNDA5ZTMzNTc3NzRmOGE2ZAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxlLXNlY29uZC1hbHRlcm5hdGUu
aHRtbApAQCAtMCwwICsxLDMxIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RU
RCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSJyZXNvdXJjZXMvcmVkLmNzcyIgbWVkaWE9ImFsbCIgdGl0bGU9IkRlZmF1bHQgU3R5bGUgU2hl
ZXQiIHR5cGU9InRleHQvY3NzIiAvPgorPGxpbmsgcmVsPSJhbHRlcm5hdGUgc3R5bGVzaGVldCIg
aHJlZj0icmVzb3VyY2VzL3JlZC5jc3MiIG1lZGlhPSJhbGwiIHRpdGxlPSJncmVlbiIgdHlwZT0i
dGV4dC9jc3MiIC8+Cis8bGluayByZWw9ImFsdGVybmF0ZSBzdHlsZXNoZWV0IiBocmVmPSJyZXNv
dXJjZXMvZ3JlZW4uY3NzIiBtZWRpYT0iYWxsIiB0aXRsZT0iZ3JlZW4iIHR5cGU9InRleHQvY3Nz
IiAvPgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKKworICAgIHZhciByZWQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGlu
ayIpWzBdOworICAgIHJlZC5kaXNhYmxlZCA9IHRydWU7CisgICAgdmFyIGdyZWVuID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxpbmsiKVsyXTsKKyAgICBncmVlbi5kaXNhYmxlZCA9
IGZhbHNlOworCisgICAgZnVuY3Rpb24gdGVzdCgpIHsKKyAgICAgICAgdmFyIGNvbnNvbGUgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpOworICAgICAgICBpZiAoZ2V0Q29tcHV0
ZWRTdHlsZShjb25zb2xlLCBudWxsKS5iYWNrZ3JvdW5kQ29sb3IgPT09ICJyZ2IoMCwgMTI4LCAw
KSIpCisgICAgICAgICAgICBjb25zb2xlLmlubmVySFRNTCA9ICJQQVNTRUQiOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBjb25zb2xlLmlubmVySFRNTCA9ICJGQUlMRUQsIGJhY2tncm91bmQg
PSAiICsgZ2V0Q29tcHV0ZWRTdHlsZShjb25zb2xlLCBudWxsKS5iYWNrZ3JvdW5kQ29sb3I7Cisg
ICAgfQorICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgdGVzdCwgZmFsc2UpOwor
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRlc3QgZm9yIDxhIGhyZWY9Imh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTE0MCI+NjUxNDA8L2E+OiBSRUdSRVNT
SU9OIChyODQzMjctcjg0MzI5KTogQ1NTIHN0eWxlc2hlZXRzIGZhaWwgdG8gbG9hZCBvbiB3d3cu
ZmxhZ3N0YXIuY29tIGxvZ2luIHBhZ2U8L3A+Cis8cD5UaGlzIHRlc3QgUEFTU0VEIGlmIFBBU1NF
RCBpcyB3cml0dGVuIGJlbG93IChhbHRlcm5hdGl2ZWx5IHRoZSBuZXh0IGxpbmUgc2hvdWxkIGhh
dmUgYSBHUkVFTiBiYWNrZ3JvdW5kKS48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj5GQUlMRUQ8L2Rp
dj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
Y3NzL2xpbmstY3NzLWRpc2FibGVkLXZhbHVlLXdpdGgtc2xvdy1sb2FkaW5nLXNoZWV0LWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY3NzL2xpbmstY3NzLWRpc2FibGVkLXZh
bHVlLXdpdGgtc2xvdy1sb2FkaW5nLXNoZWV0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MTQw
MGFhYTBlYzBhNGUyMGNmZDc2YjBhMzUyMGI5MTc0ZTM2NTQ4Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jc3MvbGluay1jc3MtZGlzYWJsZWQtdmFsdWUtd2l0aC1z
bG93LWxvYWRpbmctc2hlZXQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTkgQEAKK1Rlc3QgdGhh
dCBIVE1MTGlua0VsZW1lbnQncyBkaXNhYmxlZCBhdHRyaWJ1dGUgaXMgcHJvcGVybHkgY2FjaGVk
IHdoaWxlIHNldCB3aGVuIGxvYWRpbmcgYSBzdHlsZXNoZWV0LgorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKKworVGVzdGluZyB2YWx1ZSBvZiAnZGlzYWJsZWQnIHByaW9yIHRvIGxvYWQg
anVzdCBhZnRlciBzZXR0aW5nIHRoZW0KK1BBU1MgbWFpblNoZWV0TGluay5zaGVldCBpcyBub24t
bnVsbC4KK1BBU1MgYWx0ZXJuYXRlU2hlZXRMaW5rLnNoZWV0IGlzIG51bGwKK1BBU1MgbWFpblNo
ZWV0TGluay5kaXNhYmxlZCBpcyB0cnVlCitQQVNTIGFsdGVybmF0ZVNoZWV0TGluay5kaXNhYmxl
ZCBpcyBmYWxzZQorVGVzdGluZyB0aGUgdmFsdWVzIHdoZW4gdGhlIGFsdGVybmF0ZSBzaGVldCBp
cyBsb2FkZWQgKGFzIHRoaXMgaXMgdGhlIG9ubHkgb25lIHRoYXQgaGFzIHNoZWV0KCkgPT09IG51
bGwpCitQQVNTIG1haW5TaGVldExpbmsuc2hlZXQgaXMgbm9uLW51bGwuCitQQVNTIGFsdGVybmF0
ZVNoZWV0TGluay5zaGVldCBpcyBub24tbnVsbC4KK1BBU1MgbWFpblNoZWV0TGluay5kaXNhYmxl
ZCBpcyB0cnVlCitQQVNTIGFsdGVybmF0ZVNoZWV0TGluay5kaXNhYmxlZCBpcyBmYWxzZQorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY3NzL2xpbmstY3NzLWRpc2FibGVkLXZhbHVlLXdp
dGgtc2xvdy1sb2FkaW5nLXNoZWV0LWluLWVycm9yLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvY3NzL2xpbmstY3NzLWRpc2FibGVkLXZhbHVlLXdpdGgtc2xvdy1sb2FkaW5n
LXNoZWV0LWluLWVycm9yLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MTQwMGFhYTBlYzBhNGUy
MGNmZDc2YjBhMzUyMGI5MTc0ZTM2NTQ4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9jc3MvbGluay1jc3MtZGlzYWJsZWQtdmFsdWUtd2l0aC1zbG93LWxvYWRpbmct
c2hlZXQtaW4tZXJyb3ItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTkgQEAKK1Rlc3QgdGhhdCBI
VE1MTGlua0VsZW1lbnQncyBkaXNhYmxlZCBhdHRyaWJ1dGUgaXMgcHJvcGVybHkgY2FjaGVkIHdo
aWxlIHNldCB3aGVuIGxvYWRpbmcgYSBzdHlsZXNoZWV0LgorCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKKworVGVzdGluZyB2YWx1ZSBvZiAnZGlzYWJsZWQnIHByaW9yIHRvIGxvYWQganVz
dCBhZnRlciBzZXR0aW5nIHRoZW0KK1BBU1MgbWFpblNoZWV0TGluay5zaGVldCBpcyBub24tbnVs
bC4KK1BBU1MgYWx0ZXJuYXRlU2hlZXRMaW5rLnNoZWV0IGlzIG51bGwKK1BBU1MgbWFpblNoZWV0
TGluay5kaXNhYmxlZCBpcyB0cnVlCitQQVNTIGFsdGVybmF0ZVNoZWV0TGluay5kaXNhYmxlZCBp
cyBmYWxzZQorVGVzdGluZyB0aGUgdmFsdWVzIHdoZW4gdGhlIGFsdGVybmF0ZSBzaGVldCBpcyBs
b2FkZWQgKGFzIHRoaXMgaXMgdGhlIG9ubHkgb25lIHRoYXQgaGFzIHNoZWV0KCkgPT09IG51bGwp
CitQQVNTIG1haW5TaGVldExpbmsuc2hlZXQgaXMgbm9uLW51bGwuCitQQVNTIGFsdGVybmF0ZVNo
ZWV0TGluay5zaGVldCBpcyBub24tbnVsbC4KK1BBU1MgbWFpblNoZWV0TGluay5kaXNhYmxlZCBp
cyB0cnVlCitQQVNTIGFsdGVybmF0ZVNoZWV0TGluay5kaXNhYmxlZCBpcyBmYWxzZQorUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY3NzL2xpbmstY3NzLWRpc2FibGVkLXZhbHVlLXdpdGgt
c2xvdy1sb2FkaW5nLXNoZWV0LWluLWVycm9yLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2Nzcy9saW5rLWNzcy1kaXNhYmxlZC12YWx1ZS13aXRoLXNsb3ctbG9hZGluZy1zaGVldC1pbi1l
cnJvci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQxNmM4M2QzY2NiYjkyY2MxMjQ5NTc3YjIzNWViMGNhNTY2
ODhjOTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nzcy9saW5r
LWNzcy1kaXNhYmxlZC12YWx1ZS13aXRoLXNsb3ctbG9hZGluZy1zaGVldC1pbi1lcnJvci5odG1s
CkBAIC0wLDAgKzEsMTQgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhU
TUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InJl
c291cmNlcy9zbG93LWxvYWRpbmctc2hlZXQucGhwP2NvbG9yPWdyZWVuIiBtZWRpYT0iYWxsIiB0
aXRsZT0iRGVmYXVsdCBTdHlsZSBTaGVldCIgdHlwZT0idGV4dC9jc3MiIC8+Cis8bGluayByZWw9
ImFsdGVybmF0ZSBzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvc2xvdy1sb2FkaW5nLXNoZWV0
LnBocC1pbi1lcnJvciIgbWVkaWE9ImFsbCIgdGl0bGU9ImdyZWVuIiB0eXBlPSJ0ZXh0L2NzcyIg
Lz4KKzxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9saW5rLWNzcy1kaXNhYmxl
ZC12YWx1ZS13aXRoLXNsb3ctbG9hZGluZy1zaGVldC1pbi1lcnJvci5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nz
cy9saW5rLWNzcy1kaXNhYmxlZC12YWx1ZS13aXRoLXNsb3ctbG9hZGluZy1zaGVldC5odG1sIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jc3MvbGluay1jc3MtZGlzYWJsZWQtdmFsdWUtd2l0aC1z
bG93LWxvYWRpbmctc2hlZXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wN2ZmMmNjY2ExYjRmZTIxZWYxZDEy
NTE5NWE2NjJmY2ZiMjg2NjBhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9jc3MvbGluay1jc3MtZGlzYWJsZWQtdmFsdWUtd2l0aC1zbG93LWxvYWRpbmctc2hlZXQu
aHRtbApAQCAtMCwwICsxLDE0IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RU
RCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSJyZXNvdXJjZXMvc2xvdy1sb2FkaW5nLXNoZWV0LnBocD9jb2xvcj1yZWQiIG1lZGlhPSJhbGwi
IHRpdGxlPSJEZWZhdWx0IFN0eWxlIFNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgLz4KKzxsaW5rIHJl
bD0iYWx0ZXJuYXRlIHN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy9zbG93LWxvYWRpbmctc2hl
ZXQucGhwP2NvbG9yPWdyZWVuIiBtZWRpYT0iYWxsIiB0aXRsZT0iZ3JlZW4iIHR5cGU9InRleHQv
Y3NzIiAvPgorPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2xpbmstY3NzLWRp
c2FibGVkLXZhbHVlLXdpdGgtc2xvdy1sb2FkaW5nLXNoZWV0LmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY3NzL3Jl
c291cmNlcy9saW5rLWNzcy1kaXNhYmxlZC12YWx1ZS13aXRoLXNsb3ctbG9hZGluZy1zaGVldC1p
bi1lcnJvci5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY3NzL3Jlc291cmNlcy9saW5rLWNz
cy1kaXNhYmxlZC12YWx1ZS13aXRoLXNsb3ctbG9hZGluZy1zaGVldC1pbi1lcnJvci5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4wNTg5ZjI3MzZhNjQ0ODk1NTU0ZTlkMDZkODBmZTViOWE4OTk3ZmYzCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jc3MvcmVzb3VyY2VzL2xpbmstY3Nz
LWRpc2FibGVkLXZhbHVlLXdpdGgtc2xvdy1sb2FkaW5nLXNoZWV0LWluLWVycm9yLmpzCkBAIC0w
LDAgKzEsNDUgQEAKK2Rlc2NyaXB0aW9uKCJUZXN0IHRoYXQgSFRNTExpbmtFbGVtZW50J3MgZGlz
YWJsZWQgYXR0cmlidXRlIGlzIHByb3Blcmx5IGNhY2hlZCB3aGlsZSBzZXQgd2hlbiBsb2FkaW5n
IGEgc3R5bGVzaGVldC4iKTsKKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisKK3dpbmRvdy5qc1Rlc3RJ
c0FzeW5jID0gdHJ1ZTsKKworbWFpblNoZWV0TGluayA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJsaW5rIilbMF07CithbHRlcm5hdGVTaGVldExpbmsgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgibGluayIpWzFdOworCittYWluU2hlZXRMaW5rLmRpc2FibGVkID0gdHJ1
ZTsKK2FsdGVybmF0ZVNoZWV0TGluay5kaXNhYmxlZCA9IGZhbHNlOworCitkZWJ1ZygiVGVzdGlu
ZyB2YWx1ZSBvZiAnZGlzYWJsZWQnIHByaW9yIHRvIGxvYWQganVzdCBhZnRlciBzZXR0aW5nIHRo
ZW0iKTsKK3Nob3VsZEJlTm9uTnVsbCgibWFpblNoZWV0TGluay5zaGVldCIpOworc2hvdWxkQmVO
dWxsKCJhbHRlcm5hdGVTaGVldExpbmsuc2hlZXQiKTsKK3Nob3VsZEJlVHJ1ZSgibWFpblNoZWV0
TGluay5kaXNhYmxlZCIsIHRydWUpOworc2hvdWxkQmVGYWxzZSgiYWx0ZXJuYXRlU2hlZXRMaW5r
LmRpc2FibGVkIik7CisKK2RlYnVnKCJUZXN0aW5nIHRoZSB2YWx1ZXMgd2hlbiB0aGUgYWx0ZXJu
YXRlIHNoZWV0IGlzIGxvYWRlZCAoYXMgdGhpcyBpcyB0aGUgb25seSBvbmUgdGhhdCBoYXMgc2hl
ZXQoKSA9PT0gbnVsbCkiKTsKKworZnVuY3Rpb24gb25TaGVldExvYWRlZChmLCBlbGVtLCBtYXh0
aW1lKSB7CisgICAgaWYgKGVsZW0uc2hlZXQgfHwgbWF4dGltZSA8PSAwKQorICAgICAgICBmKCk7
CisgICAgZWxzZQorICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgb25TaGVldExvYWRl
ZChmLCBlbGVtLCBtYXh0aW1lIC0gMjUpO30sIDI1KTsKK30KKworZnVuY3Rpb24gdGVzdFdoZW5M
b2FkZWQoKSB7CisgICAgICAgIC8vIFRob3NlIG5leHQgMiBsaW5lcyBhcmUgYSBzYW5pdHkgY2hl
Y2suCisgICAgICAgIC8vIElmIHRoZSBzZWNvbmQgY2hlY2sgZmFpbHMsIGl0IGlzIGxpa2VseSB0
aGF0IHRoZSB0ZXN0IHRpbWVkIG91dCBhbmQgdGh1cworICAgICAgICAvLyB5b3UgY2FuIGRpc2Nh
cmQgdGhlIHJlc3Qgb2YgcmVzdWx0cyBhcyBpdCBpcyBub3QgdGVzdGluZyB3aGF0IHdlIHdhbnQK
KyAgICAgICAgLy8gKG5hbWVseSB0aGF0IHRoZSBkaXNhYmxlZCB2YWx1ZSBpcyBwYXNzZWQgdG8g
dGhlIGZpbmFsIHNoZWV0KS4KKyAgICAgICAgc2hvdWxkQmVOb25OdWxsKCJtYWluU2hlZXRMaW5r
LnNoZWV0Iik7CisgICAgICAgIHNob3VsZEJlTm9uTnVsbCgiYWx0ZXJuYXRlU2hlZXRMaW5rLnNo
ZWV0Iik7CisKKyAgICAgICAgc2hvdWxkQmVUcnVlKCJtYWluU2hlZXRMaW5rLmRpc2FibGVkIik7
CisgICAgICAgIHNob3VsZEJlRmFsc2UoImFsdGVybmF0ZVNoZWV0TGluay5kaXNhYmxlZCIpOwor
CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworfQorCitvblNoZWV0TG9hZGVkKHRlc3RXaGVuTG9h
ZGVkLCBhbHRlcm5hdGVTaGVldExpbmssIDUwMCk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQg
PSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jc3MvcmVzb3VyY2Vz
L2xpbmstY3NzLWRpc2FibGVkLXZhbHVlLXdpdGgtc2xvdy1sb2FkaW5nLXNoZWV0LmpzIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9jc3MvcmVzb3VyY2VzL2xpbmstY3NzLWRpc2FibGVkLXZhbHVl
LXdpdGgtc2xvdy1sb2FkaW5nLXNoZWV0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ODlmMjczNmE2NDQ4OTU1
NTRlOWQwNmQ4MGZlNWI5YTg5OTdmZjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2Nzcy9yZXNvdXJjZXMvbGluay1jc3MtZGlzYWJsZWQtdmFsdWUtd2l0aC1zbG93
LWxvYWRpbmctc2hlZXQuanMKQEAgLTAsMCArMSw0NSBAQAorZGVzY3JpcHRpb24oIlRlc3QgdGhh
dCBIVE1MTGlua0VsZW1lbnQncyBkaXNhYmxlZCBhdHRyaWJ1dGUgaXMgcHJvcGVybHkgY2FjaGVk
IHdoaWxlIHNldCB3aGVuIGxvYWRpbmcgYSBzdHlsZXNoZWV0LiIpOworCitpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERv
bmUoKTsKKword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCittYWluU2hlZXRMaW5rID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxpbmsiKVswXTsKK2FsdGVybmF0ZVNoZWV0
TGluayA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJsaW5rIilbMV07CisKK21haW5T
aGVldExpbmsuZGlzYWJsZWQgPSB0cnVlOworYWx0ZXJuYXRlU2hlZXRMaW5rLmRpc2FibGVkID0g
ZmFsc2U7CisKK2RlYnVnKCJUZXN0aW5nIHZhbHVlIG9mICdkaXNhYmxlZCcgcHJpb3IgdG8gbG9h
ZCBqdXN0IGFmdGVyIHNldHRpbmcgdGhlbSIpOworc2hvdWxkQmVOb25OdWxsKCJtYWluU2hlZXRM
aW5rLnNoZWV0Iik7CitzaG91bGRCZU51bGwoImFsdGVybmF0ZVNoZWV0TGluay5zaGVldCIpOwor
c2hvdWxkQmVUcnVlKCJtYWluU2hlZXRMaW5rLmRpc2FibGVkIiwgdHJ1ZSk7CitzaG91bGRCZUZh
bHNlKCJhbHRlcm5hdGVTaGVldExpbmsuZGlzYWJsZWQiKTsKKworZGVidWcoIlRlc3RpbmcgdGhl
IHZhbHVlcyB3aGVuIHRoZSBhbHRlcm5hdGUgc2hlZXQgaXMgbG9hZGVkIChhcyB0aGlzIGlzIHRo
ZSBvbmx5IG9uZSB0aGF0IGhhcyBzaGVldCgpID09PSBudWxsKSIpOworCitmdW5jdGlvbiBvblNo
ZWV0TG9hZGVkKGYsIGVsZW0sIG1heHRpbWUpIHsKKyAgICBpZiAoZWxlbS5zaGVldCB8fCBtYXh0
aW1lIDw9IDApCisgICAgICAgIGYoKTsKKyAgICBlbHNlCisgICAgICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24gKCkgeyBvblNoZWV0TG9hZGVkKGYsIGVsZW0sIG1heHRpbWUgLSAyNSk7fSwgMjUpOwor
fQorCitmdW5jdGlvbiB0ZXN0V2hlbkxvYWRlZCgpIHsKKyAgICAgICAgLy8gVGhvc2UgbmV4dCAy
IGxpbmVzIGFyZSBhIHNhbml0eSBjaGVjay4KKyAgICAgICAgLy8gSWYgdGhlIHNlY29uZCBjaGVj
ayBmYWlscywgaXQgaXMgbGlrZWx5IHRoYXQgdGhlIHRlc3QgdGltZWQgb3V0IGFuZCB0aHVzCisg
ICAgICAgIC8vIHlvdSBjYW4gZGlzY2FyZCB0aGUgcmVzdCBvZiByZXN1bHRzIGFzIGl0IGlzIG5v
dCB0ZXN0aW5nIHdoYXQgd2Ugd2FudAorICAgICAgICAvLyAobmFtZWx5IHRoYXQgdGhlIGRpc2Fi
bGVkIHZhbHVlIGlzIHBhc3NlZCB0byB0aGUgZmluYWwgc2hlZXQpLgorICAgICAgICBzaG91bGRC
ZU5vbk51bGwoIm1haW5TaGVldExpbmsuc2hlZXQiKTsKKyAgICAgICAgc2hvdWxkQmVOb25OdWxs
KCJhbHRlcm5hdGVTaGVldExpbmsuc2hlZXQiKTsKKworICAgICAgICBzaG91bGRCZVRydWUoIm1h
aW5TaGVldExpbmsuZGlzYWJsZWQiKTsKKyAgICAgICAgc2hvdWxkQmVGYWxzZSgiYWx0ZXJuYXRl
U2hlZXRMaW5rLmRpc2FibGVkIik7CisKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK29u
U2hlZXRMb2FkZWQodGVzdFdoZW5Mb2FkZWQsIGFsdGVybmF0ZVNoZWV0TGluaywgNTAwKTsKKwor
dmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2Nzcy9yZXNvdXJjZXMvc2xvdy1sb2FkaW5nLXNoZWV0LWluLWVycm9yLnBocCBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY3NzL3Jlc291cmNlcy9zbG93LWxvYWRpbmctc2hlZXQt
aW4tZXJyb3IucGhwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRjZDE3ZjdmNzIxOTYxNDY4Nzk0MWNkZjg5NWMxMDdk
ZWFmN2Y1ZDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nzcy9y
ZXNvdXJjZXMvc2xvdy1sb2FkaW5nLXNoZWV0LWluLWVycm9yLnBocApAQCAtMCwwICsxLDEzIEBA
Cis8P3BocAorLy8gV2Ugc2xlZXAgaGVyZSBzbyB0aGF0IHdlIGFyZSBoYXZlIGVub3VnaCB0aW1l
IHRvIHRlc3QgdGhlIGRpZmZlcmVudCBhdHRyaWJ1dGVzIGJlZm9yZSB0aGUgc3R5bGVzaGVldCBp
cyBmdWxseSBsb2FkZWQuCit1c2xlZXAoMTAwKTsKKworaGVhZGVyKCJIVFRQLzEuMCA1MDAgSW50
ZXJuYWwgRXJyb3IiKTsKK2hlYWRlcigiRXhwaXJlczogVGh1LCAwMSBEZWMgMjAwMyAxNjowMDow
MCBHTVQiKTsKK2hlYWRlcigiQ2FjaGUtQ29udHJvbDogbm8tY2FjaGUsIG5vLXN0b3JlLCBtdXN0
LXJldmFsaWRhdGUiKTsKK2hlYWRlcigiUHJhZ21hOiBuby1jYWNoZSIpOworaGVhZGVyKCJDb250
ZW50LVR5cGU6IHRleHQvY3NzIik7CisKK29iX2ZsdXNoKCk7CitmbHVzaCgpOworPz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY3NzL3Jlc291cmNlcy9zbG93LWxvYWRpbmct
c2hlZXQucGhwIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jc3MvcmVzb3VyY2VzL3Nsb3ctbG9h
ZGluZy1zaGVldC5waHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjg5MzdkNDJhZjgwMzA1YmU4YzM4Y2M2ZjZlOWYw
MmYwMGJmNmRlOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY3Nz
L3Jlc291cmNlcy9zbG93LWxvYWRpbmctc2hlZXQucGhwCkBAIC0wLDAgKzEsMTUgQEAKKzw/cGhw
CisvLyBXZSBzbGVlcCBoZXJlIHNvIHRoYXQgd2UgYXJlIGhhdmUgZW5vdWdoIHRpbWUgdG8gdGVz
dCB0aGUgZGlmZmVyZW50IGF0dHJpYnV0ZXMgYmVmb3JlIHRoZSBzdHlsZXNoZWV0IGlzIGZ1bGx5
IGxvYWRlZC4KK3VzbGVlcCgxMDApOworCitoZWFkZXIoIkV4cGlyZXM6IFRodSwgMDEgRGVjIDIw
MDMgMTY6MDA6MDAgR01UIik7CitoZWFkZXIoIkNhY2hlLUNvbnRyb2w6IG5vLWNhY2hlLCBuby1z
dG9yZSwgbXVzdC1yZXZhbGlkYXRlIik7CitoZWFkZXIoIlByYWdtYTogbm8tY2FjaGUiKTsKK2hl
YWRlcigiQ29udGVudC1UeXBlOiB0ZXh0L2NzcyIpOworCiskY29sb3IgPSAkX0dFVFsnY29sb3In
XTsKKworZWNobyAiaDEgeyBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3IgfVxuIjsKK29iX2ZsdXNo
KCk7CitmbHVzaCgpOworPz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyMDkwZGJmYTNiMTRkNzNiOWZjNTc3ZTc2
NTYzNjM0OWUwOTRiODQ2Li45MDJkMDYyMDg5NjEzYTQ4Njk5Y2RlOTE4MDkzM2FkYzQ1MDcwMzAy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAgQEAKKzIwMTEtMDgtMTkgIEp1bGllbiBDaGFmZnJh
aXggIDxqY2hhZmZyYWl4QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUkVHUkVTU0lPTiAocjg0MzI3
LXI4NDMyOSk6IENTUyBzdHlsZXNoZWV0cyBmYWlsIHRvIGxvYWQgb24gd3d3LmZsYWdzdGFyLmNv
bSBsb2dpbiBwYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02NTE0MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vOTgzNTkwNT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0czogZmFzdC9jc3Mvc3R5
bGVzaGVldC1lbmFibGUtZmlyc3QtYWx0ZXJuYXRlLW9uLWxvYWQuaHRtbAorICAgICAgICAgICAg
ICAgZmFzdC9jc3Mvc3R5bGVzaGVldC1lbmFibGUtZmlyc3QtYWx0ZXJuYXRlLmh0bWwKKyAgICAg
ICAgICAgICAgIGZhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxlLXNlY29uZC1hbHRlcm5hdGUtb24t
bG9hZC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1zZWNv
bmQtYWx0ZXJuYXRlLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvY3NzL2xpbmstY3Nz
LWRpc2FibGVkLXZhbHVlLXdpdGgtc2xvdy1sb2FkaW5nLXNoZWV0LWluLWVycm9yLmh0bWwKKyAg
ICAgICAgICAgICAgIGh0dHAvdGVzdHMvY3NzL2xpbmstY3NzLWRpc2FibGVkLXZhbHVlLXdpdGgt
c2xvdy1sb2FkaW5nLXNoZWV0Lmh0bWwKKworICAgICAgICBUaGUgZ2lzdCBvZiB0aGUgaXNzdWUg
aXMgdGhhdCB3ZSB3ZXJlIGlnbm9yaW5nIGNhbGxzIHRvIEhUTUxMaW5rRWxlbWVudDo6c2V0RGlz
YWJsZWQgdGhhdCB3b3VsZCBlbmFibGUgYQorICAgICAgICBzdHlsZSBzaGVldCB3aGVuIHdlIHdl
cmUgbG9hZGluZyBhIHN0eWxlc2hlZXQgKG1fc2hlZXQgd2FzIDAgYW5kIHRodXMgaWdub3JlZCB0
aGUgY2FsbCBwZXIgdGhlIHNwZWMpLgorCisgICAgICAgIEZGIGdvZXMgYWdhaW5zdCB0aGUgQ1NT
IE9NIHNwZWMgaW4gdGhpcyBjYXNlIGFuZCBhbHdheXMga2VlcCBhbiBhc3NvY2lhdGVkIHNoZWV0
IGFzIGxvbmcgYXMgJ3JlbCcgaGludHMKKyAgICAgICAgYXQgYSBzdHlsZXNoZWV0IGxpbmsgYW5k
IGhyZWYgaXMgcHJlc2VudC4gSW5zdGVhZCBvZiBzaWRpbmcgd2l0aCBGRiwgSSBjb250aW51ZWQg
dG8gZm9sbG93IHRoZQorICAgICAgICBzcGVjaWZpY2F0aW9uIGFuZCBzdG9yZSB0aGUgZW5hYmxl
ZCB2aWEgamF2YXNjcmlwdCBzdGF0ZSBpbnRvIG1fc2NyaXB0U3RhdGUgKHJlbmFtZWQgZnJvbQor
ICAgICAgICBtX2lzRW5hYmxlZFZpYVNjcmlwdCkuIFRoaXMgaW5mb3JtYXRpb24gZ2V0cyBtZXJn
ZWQgYmFjayBpbnRvIHRoZSBzdHlsZSBzaGVldCBkaXNhYmxlZCBzdGF0ZSB3aGVuIGl0IGlzCisg
ICAgICAgIGF2YWlsYWJsZS4KKworICAgICAgICBXaGlsZSBkZWJ1Z2dpbmcgdGhlIGNhc2UgYXQg
aGFuZCwgSSBmb3VuZCBzb21lIGNhc2VzIHRoYXQgd2VyZSBub3QgcHJvcGVybHkgaGFuZGxlZCBh
bmQgd2VyZSBmaXhlZCBhcworICAgICAgICBwYXJ0IG9mIHRoaXMgY2hhbmdlLgorCisgICAgICAg
ICogaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtF
bGVtZW50OjpIVE1MTGlua0VsZW1lbnQpOiBVcGRhdGVkIGFmdGVyIG1faXNFbmFibGVkVmlhU2Ny
aXB0IHJlbmFtZS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudDo6c2V0RGlzYWJs
ZWQpOiBBbHdheXMgY2FsbCBzZXRJc0VuYWJsZWRWaWFTY3JpcHQgc28gdGhhdAorICAgICAgICB0
aGUgaW5mb3JtYXRpb24gaXMgcHJvcGVybHkgc3RvcmVkIChlaXRoZXIgZm9yIHJlY2FsY1N0eWxl
U2VsZWN0b3Igb3IganVzdCB0byBzdG9yZQorICAgICAgICB0aGUgc3RhdGUgZHVyaW5nIGxvYWRp
bmcpLgorCisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OnNoZWV0TG9hZGVkKTog
TWVyZ2UgYmFjayB0aGUgc3RhdGUgZnJvbSBtX3NjcmlwdFN0YXRlIHRvCisgICAgICAgIHRoZSBz
aGVldCdzIGRpc2FibGVkIHN0YXRlLgorCisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1l
bnQ6OmRpc2FibGVkKTogQWNjb3VudCBmb3IgdGhlIHRlbXBvcmFyeSBzdGF0ZSBhbmQgcmV0dXJu
IHRoZQorICAgICAgICByaWdodCB2YWx1ZS4gSXQgbWF0Y2hlcyBGRiBhbmQgd2hhdCBwZW9wbGUg
d291bGQgZXhwZWN0LgorCisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OmFyZURp
c2FibGVkQW5kU2NyaXB0U3RhdGVDb25zaXN0ZW50KTogRGVidWcgb25seSBtZXRob2QKKyAgICAg
ICAgdGhhdCBjaGVja3MgdGhhdCBkaXNhYmxlZCgpIGFuZCBpc0VuYWJsZWRWaWFTY3JpcHQoKSBh
cmUgY29uc2lzdGVudCB3aXRoIGVhY2ggb3RoZXIKKyAgICAgICAgKHVuZGVyIHNvbWUgY2lyY3Vt
c3RhbmNlcykuCisKKyAgICAgICAgKiBodG1sL0hUTUxMaW5rRWxlbWVudC5oOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTExpbmtFbGVtZW50Ojppc0VuYWJsZWRWaWFTY3JpcHQpOiBVcGRhdGVkIGFm
dGVyIG1faXNFbmFibGVkVmlhU2NyaXB0IHJlbmFtZS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxM
aW5rRWxlbWVudDo6c2V0SXNFbmFibGVkVmlhU2NyaXB0KTogQWRkZWQgc2V0dGVyLgorCiAyMDEx
LTA4LTE5ICBQYXZlbCBQb2Rpdmlsb3YgIDxwb2Rpdmlsb3ZAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IHVwZGF0ZSBzY29wZSB2YXJpYWJsZXMgdXBvbiB2YWx1ZSBjaGFu
Z2VzIHZpYSBjb25zb2xlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlu
a0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCmlu
ZGV4IDRiYzZlOTMzZWNkMGRmM2JjZWMzOWIxY2M4Y2EzZjk4Zjk3ODg5ZDIuLjVmNjdmNzlkZDc0
NTc2MTVkZTE2ZTJkMzVkMWIxYjhmN2VmYjJmMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxM
aW5rRWxlbWVudC5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgaW5saW5lIEhUTUxMaW5rRWxlbWVudDo6
SFRNTExpbmtFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50Kgog
ICAgICwgbV9saW5rTG9hZGVyKHRoaXMpCiAgICAgLCBtX3NpemVzKERPTVNldHRhYmxlVG9rZW5M
aXN0OjpjcmVhdGUoKSkKICAgICAsIG1fbG9hZGluZyhmYWxzZSkKLSAgICAsIG1faXNFbmFibGVk
VmlhU2NyaXB0KGZhbHNlKQorICAgICwgbV9zY3JpcHRTdGF0ZShVbnNldCkKICAgICAsIG1fY3Jl
YXRlZEJ5UGFyc2VyKGNyZWF0ZWRCeVBhcnNlcikKICAgICAsIG1faXNJblNoYWRvd1RyZWUoZmFs
c2UpCiAgICAgLCBtX3BlbmRpbmdTaGVldFR5cGUoTm9uZSkKQEAgLTg1LDE1ICs4NSwyMCBAQCBI
VE1MTGlua0VsZW1lbnQ6On5IVE1MTGlua0VsZW1lbnQoKQogCiB2b2lkIEhUTUxMaW5rRWxlbWVu
dDo6c2V0RGlzYWJsZWQoYm9vbCBkaXNhYmxlZCkKIHsKKyAgICBib29sIHdhc0VuYWJsZWRWaWFT
Y3JpcHQgPSBpc0VuYWJsZWRWaWFTY3JpcHQoKTsKKyAgICBzZXRJc0VuYWJsZWRWaWFTY3JpcHQo
IWRpc2FibGVkKTsKKwogICAgIGlmICghbV9zaGVldCkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
Ym9vbCB3YXNEaXNhYmxlZCA9IG1fc2hlZXQtPmRpc2FibGVkKCk7Ci0gICAgaWYgKHdhc0Rpc2Fi
bGVkID09IGRpc2FibGVkKQorICAgIGlmICh3YXNEaXNhYmxlZCA9PSBkaXNhYmxlZCkgeworICAg
ICAgICBpZiAod2FzRW5hYmxlZFZpYVNjcmlwdCAhPSBpc0VuYWJsZWRWaWFTY3JpcHQoKSkKKyAg
ICAgICAgICAgIGRvY3VtZW50KCktPnN0eWxlU2VsZWN0b3JDaGFuZ2VkKERlZmVyUmVjYWxjU3R5
bGUpOwogICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgbV9zaGVldC0+c2V0RGlzYWJsZWQo
ZGlzYWJsZWQpOwotICAgIG1faXNFbmFibGVkVmlhU2NyaXB0ID0gIWRpc2FibGVkOwogCiAgICAg
Ly8gSWYgd2UgY2hhbmdlIHRoZSBkaXNhYmxlZCBzdGF0ZSB3aGlsZSB0aGUgc2hlZXQgaXMgc3Rp
bGwgbG9hZGluZywgdGhlbiB3ZSBoYXZlIHRvCiAgICAgLy8gcGVyZm9ybSB0aHJlZSBjaGVja3M6
CkBAIC0xMjAsNiArMTI1LDggQEAgdm9pZCBIVE1MTGlua0VsZW1lbnQ6OnNldERpc2FibGVkKGJv
b2wgZGlzYWJsZWQpCiAKICAgICBpZiAoIWRpc2FibGVkKQogICAgICAgICBwcm9jZXNzKCk7CisK
KyAgICBBU1NFUlQoYXJlRGlzYWJsZWRBbmRTY3JpcHRTdGF0ZUNvbnNpc3RlbnQoKSk7CiB9CiAK
IFN0eWxlU2hlZXQqIEhUTUxMaW5rRWxlbWVudDo6c2hlZXQoKSBjb25zdApAQCAtMzU5LDEwICsz
NjYsMjAgQEAgdm9pZCBIVE1MTGlua0VsZW1lbnQ6OmxpbmtMb2FkaW5nRXJyb3JlZCgpCiAKIGJv
b2wgSFRNTExpbmtFbGVtZW50OjpzaGVldExvYWRlZCgpCiB7CisgICAgLy8gTWlncmF0ZSB0aGUg
ZGlzYWJsZWQgaW5mb3JtYXRpb24gYmVmb3JlIHJlbW92ZVBlbmRpbmdTaGVldCBpcyBjYWxsZWQK
KyAgICAvLyBhcyBpdCB3aWxsIHN0YXJ0IGEgcmVjYWxTdHlsZVNlbGVjdG9yIHdoaWNoIG5lZWRz
IHRoaXMgaW5mb3JtYXRpb24uCisgICAgaWYgKG1fc2NyaXB0U3RhdGUgIT0gVW5zZXQpIHsKKyAg
ICAgICAgQVNTRVJUKCFtX2xvYWRpbmcpOworICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIEFT
U0VSVCB0aGF0IGl0IHdhcyBzZXQgZm9yIHN0eWxlc2hlZXRzIG9ubHksIGJ1dAorICAgICAgICAv
LyBjdXJyZW50bHkgd2UgYWxsb3cgc2V0RGlzYWJsZWQgdG8gYmUgY2FsbGVkIHJlZ2FyZGxlc3Mg
b2YgdGhlIDxsaW5rPiByZWwuCisgICAgICAgIHNldERpc2FibGVkKG1fc2NyaXB0U3RhdGUgPT0g
RGlzYWJsZWRWaWFTY3JpcHQpOworICAgIH0KKwogICAgIGlmICghaXNMb2FkaW5nKCkpIHsKICAg
ICAgICAgcmVtb3ZlUGVuZGluZ1NoZWV0KCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
KwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtNDQ1LDcgKzQ2MiwyMCBAQCB2b2lkIEhUTUxM
aW5rRWxlbWVudDo6cmVtb3ZlUGVuZGluZ1NoZWV0KCkKIAogYm9vbCBIVE1MTGlua0VsZW1lbnQ6
OmRpc2FibGVkKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9zaGVldCAmJiBtX3NoZWV0LT5kaXNh
YmxlZCgpOworICAgIEFTU0VSVChhcmVEaXNhYmxlZEFuZFNjcmlwdFN0YXRlQ29uc2lzdGVudCgp
KTsKKworICAgIGlmICghbV9zaGVldCkgeworICAgICAgICAvLyBGRiBkaXNhZ3JlZXMgd2l0aCB0
aGUgQ1NTIE9NIHNwZWMgYW5kIGFsd2F5cyBoYXMgYW4gYXNzb2NpYXRlZCBzdHlsZXNoZWV0IGZv
ciBhbHRlcm5hdGUgc2hlZXQgKHJlZ2FyZGxlc3Mgb2Ygd2hldGhlcgorICAgICAgICAvLyB0aGUg
cmVzb3VyY2UgaXMgZmV0Y2hlZCkuIEFzIHdlIHN0b3JlIHRoZSBlbmFibGVkIHN0YXRlIGluIG1f
c2NyaXB0U3RhdGUgd2hpbGUgbG9hZGluZywgcmV0dXJuIHRoaXMgaW5mb3JtYXRpb24gdG8gYmUK
KyAgICAgICAgLy8gY29uc2lzdGVudCB3aXRoIEZGLiBzaGVldExvYWRlZCgpIGlzIGNhbGxlZCBh
dCB0aGUgZW5kIG9mIGFueSB0cmFuc2ZlciAod2hldGhlciBpdCB3YXMgaW4gZXJyb3Igb3Igbm90
KSBzbyBtX3NjcmlwdFN0YXRlCisgICAgICAgIC8vIHdpbGwgYmUgdHJhbnNmZXJlZCBiYWNrIGlu
dG8gb3VyIHN0eWxlc2hlZXQgYW5kIHRoZSBkaXNhYmxlZCgpIHZhbHVlIHNob3VsZCBhbHdheXMg
YmUgY29uc2lzdGVudC4KKyAgICAgICAgaWYgKGlzTG9hZGluZygpICYmIG1fc2NyaXB0U3RhdGUg
IT0gVW5zZXQpCisgICAgICAgICAgICByZXR1cm4gbV9zY3JpcHRTdGF0ZSA9PSBEaXNhYmxlZFZp
YVNjcmlwdDsKKworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIG1f
c2hlZXQtPmRpc2FibGVkKCk7CiB9CiAKIERPTVNldHRhYmxlVG9rZW5MaXN0KiBIVE1MTGlua0Vs
ZW1lbnQ6OnNpemVzKCkgY29uc3QKQEAgLTQ1OCw0ICs0ODgsMjMgQEAgdm9pZCBIVE1MTGlua0Vs
ZW1lbnQ6OnNldFNpemVzKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgbV9zaXplcy0+c2V0VmFs
dWUodmFsdWUpOwogfQogCisjaWZuZGVmIE5ERUJVRworYm9vbCBIVE1MTGlua0VsZW1lbnQ6OmFy
ZURpc2FibGVkQW5kU2NyaXB0U3RhdGVDb25zaXN0ZW50KCkgY29uc3QKK3sKKyAgICBpZiAoIW1f
cmVsQXR0cmlidXRlLm1faXNTdHlsZVNoZWV0KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAg
IC8vIER1cmluZyBsb2FkaW5nLCBtX3NjcmlwdFN0YXRlIGhvbGRzIHRoZSB0ZW1wb3JhcnkgdmFs
dWUgZm9yIHNoZWV0KCktPmRpc2FibGVkKCkKKyAgICAvLyBzbyBpdCBjYW4gaGF2ZSBhbnkgdmFs
dWVzIChzYW1lIGZvciBzaGVldCgpLT5kaXNhYmxlZCgpKS4KKyAgICBpZiAoaXNMb2FkaW5nKCkp
CisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKG1fc2NyaXB0U3RhdGUgPT0gVW5zZXQp
CisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgYm9vbCBpc0Rpc2FibGVkVmlhU2NyaXB0ID0g
bV9zY3JpcHRTdGF0ZSA9PSBEaXNhYmxlZFZpYVNjcmlwdDsKKyAgICByZXR1cm4gaXNEaXNhYmxl
ZFZpYVNjcmlwdCA9PSBzaGVldCgpLT5kaXNhYmxlZCgpOworfQorI2VuZGlmCisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oCmluZGV4IDhm
ZWRlMDJlNWU3ZjkyYjc0MGY4NTkwOTEzZThiNzU5YTZkMTUxMzguLmE4Y2FkNDJkM2YyYWJiZTZk
OThjNDYxZTdlNThhNjhlNGMzMDQ0ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTExpbmtFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1l
bnQuaApAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBGSVhNRTogVGhpcyBzaG91
bGQgYmUgcmVuYW1lZCBpc1N0eWxlU2hlZXRMb2FkaW5nIGFzIHRoaXMgaXMgb25seSB1c2VkIGZv
ciBzdHlsZXNoZWV0cy4KICAgICBib29sIGlzTG9hZGluZygpIGNvbnN0OwotICAgIGJvb2wgaXNF
bmFibGVkVmlhU2NyaXB0KCkgY29uc3QgeyByZXR1cm4gbV9pc0VuYWJsZWRWaWFTY3JpcHQ7IH0K
KyAgICBib29sIGlzRW5hYmxlZFZpYVNjcmlwdCgpIGNvbnN0IHsgcmV0dXJuIG1fc2NyaXB0U3Rh
dGUgPT0gRW5hYmxlZFZpYVNjcmlwdDsgfQogICAgIGJvb2wgZGlzYWJsZWQoKSBjb25zdDsKICAg
ICB2b2lkIHNldERpc2FibGVkKGJvb2wpOwogICAgIHZvaWQgc2V0U2l6ZXMoY29uc3QgU3RyaW5n
Jik7CkBAIC04NSw3ICs4NSw2IEBAIHByaXZhdGU6CiAgICAgCiAgICAgdmlydHVhbCBib29sIGlz
VVJMQXR0cmlidXRlKEF0dHJpYnV0ZSopIGNvbnN0OwogCi1wcml2YXRlOgogICAgIHZpcnR1YWwg
dm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mKSBjb25z
dDsKIAogICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hQYXJzaW5nQ2hpbGRyZW4oKTsKQEAgLTk3LDYg
Kzk2LDExIEBAIHByaXZhdGU6CiBwcml2YXRlOgogICAgIEhUTUxMaW5rRWxlbWVudChjb25zdCBR
dWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqLCBib29sIGNyZWF0ZWRCeVBhcnNlcik7CiAKKyAgICB2
b2lkIHNldElzRW5hYmxlZFZpYVNjcmlwdChib29sIGVuYWJsZWQpIHsgbV9zY3JpcHRTdGF0ZSA9
IGVuYWJsZWQgPyBFbmFibGVkVmlhU2NyaXB0IDogRGlzYWJsZWRWaWFTY3JpcHQ7IH0KKyNpZm5k
ZWYgTkRFQlVHCisgICAgYm9vbCBhcmVEaXNhYmxlZEFuZFNjcmlwdFN0YXRlQ29uc2lzdGVudCgp
IGNvbnN0OworI2VuZGlmCisKICAgICBMaW5rTG9hZGVyIG1fbGlua0xvYWRlcjsKICAgICBDYWNo
ZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRDU1NTdHlsZVNoZWV0PiBtX2NhY2hlZFNoZWV0OwogICAg
IFJlZlB0cjxDU1NTdHlsZVNoZWV0PiBtX3NoZWV0OwpAQCAtMTA2LDEwICsxMTAsMTEgQEAgcHJp
dmF0ZToKICAgICBSZWZQdHI8RE9NU2V0dGFibGVUb2tlbkxpc3Q+IG1fc2l6ZXM7CiAgICAgTGlu
a1JlbEF0dHJpYnV0ZSBtX3JlbEF0dHJpYnV0ZTsKICAgICBib29sIG1fbG9hZGluZzsKLSAgICBi
b29sIG1faXNFbmFibGVkVmlhU2NyaXB0OworICAgIGVudW0gRW5hYmxlZFZpYVNjcmlwdFN0YXRl
IHsgVW5zZXQsIEVuYWJsZWRWaWFTY3JpcHQsIERpc2FibGVkVmlhU2NyaXB0IH07CisgICAgRW5h
YmxlZFZpYVNjcmlwdFN0YXRlIG1fc2NyaXB0U3RhdGU7CiAgICAgYm9vbCBtX2NyZWF0ZWRCeVBh
cnNlcjsKICAgICBib29sIG1faXNJblNoYWRvd1RyZWU7Ci0gICAgCisKICAgICBQZW5kaW5nU2hl
ZXRUeXBlIG1fcGVuZGluZ1NoZWV0VHlwZTsKIH07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104526</attachid>
            <date>2011-08-19 10:52:45 -0700</date>
            <delta_ts>2011-08-19 20:01:22 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-65140-20110819105244.patch</filename>
            <type>text/plain</type>
            <size>32015</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTM0MjAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1YWVlNDM3MDUzZWUwNTY4MDkxMTI0
NjMwOGY3NjUwM2E4ZjBkZTliLi4xZGIxOTc1NDkzZTQ4MjBlNjlhMTMwODU0MTJjZjJmNmZjMDI0
NDRjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMTEtMDgtMTkgIEp1bGllbiBDaGFmZnJhaXgg
IDxqY2hhZmZyYWl4QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUkVHUkVTU0lPTiAocjg0MzI3LXI4
NDMyOSk6IENTUyBzdHlsZXNoZWV0cyBmYWlsIHRvIGxvYWQgb24gd3d3LmZsYWdzdGFyLmNvbSBs
b2dpbiBwYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02NTE0MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vOTgzNTkwNT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KKworICAgICAgICAqIGZhc3QvY3NzL2xpbmstZGlzYWJs
ZWQtYXR0ci1leHBlY3RlZC50eHQ6IFRoaXMgY2hhbmdlIGlzIGEgcHJvZ3Jlc3Npb24sIGJ1dCB3
ZSBhcmUgc3RpbGwKKyAgICAgICAgbm90IGhhbmRsaW5nIHVwZGF0ZXMgdG8gdGhlIHNlbGVjdGVk
IHN0eWxlIHNldCBwcm9wZXJseSAoYWxyZWFkeSBjb3ZlcmVkIGJ5IGJ1ZyA2MjQwNykuCisKKyAg
ICAgICAgKiBmYXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1maXJzdC1hbHRlcm5hdGUtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1maXJz
dC1hbHRlcm5hdGUtb24tbG9hZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
Y3NzL3N0eWxlc2hlZXQtZW5hYmxlLWZpcnN0LWFsdGVybmF0ZS1vbi1sb2FkLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxlLWZpcnN0LWFsdGVybmF0ZS5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1zZWNvbmQt
YWx0ZXJuYXRlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3Mvc3R5bGVz
aGVldC1lbmFibGUtc2Vjb25kLWFsdGVybmF0ZS1vbi1sb2FkLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZmFzdC9jc3Mvc3R5bGVzaGVldC1lbmFibGUtc2Vjb25kLWFsdGVybmF0ZS1v
bi1sb2FkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxl
LXNlY29uZC1hbHRlcm5hdGUuaHRtbDogQWRkZWQuCisgICAgICAgIFRob3NlIGFyZSBhIHZhcmlh
dGlvbiBvbiB0aGUgc2FtZSB0aGVtZTogd2UgZGlzYWJsZSBzb21lIHN0eWxlc2hlZXQgYW5kIGVu
YWJsZSBvdGhlcnMsCisgICAgICAgIGVpdGhlciBkaXJlY3RseSBvciBsYXRlci4KKworICAgICAg
ICAqIGh0dHAvdGVzdHMvY3NzL2xpbmstY3NzLWRpc2FibGVkLXZhbHVlLXdpdGgtc2xvdy1sb2Fk
aW5nLXNoZWV0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9jc3Mv
bGluay1jc3MtZGlzYWJsZWQtdmFsdWUtd2l0aC1zbG93LWxvYWRpbmctc2hlZXQtaW4tZXJyb3It
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2Nzcy9saW5rLWNzcy1k
aXNhYmxlZC12YWx1ZS13aXRoLXNsb3ctbG9hZGluZy1zaGVldC1pbi1lcnJvci5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2Nzcy9saW5rLWNzcy1kaXNhYmxlZC12YWx1ZS13aXRo
LXNsb3ctbG9hZGluZy1zaGVldC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2Nz
cy9yZXNvdXJjZXMvbGluay1jc3MtZGlzYWJsZWQtdmFsdWUtd2l0aC1zbG93LWxvYWRpbmctc2hl
ZXQtaW4tZXJyb3IuanM6IEFkZGVkLgorICAgICAgICAob25TaGVldExvYWRlZCk6CisgICAgICAg
ICh0ZXN0V2hlbkxvYWRlZCk6CisgICAgICAgICogaHR0cC90ZXN0cy9jc3MvcmVzb3VyY2VzL2xp
bmstY3NzLWRpc2FibGVkLXZhbHVlLXdpdGgtc2xvdy1sb2FkaW5nLXNoZWV0LmpzOiBBZGRlZC4K
KyAgICAgICAgKG9uU2hlZXRMb2FkZWQpOgorICAgICAgICAodGVzdFdoZW5Mb2FkZWQpOgorICAg
ICAgICAqIGh0dHAvdGVzdHMvY3NzL3Jlc291cmNlcy9zbG93LWxvYWRpbmctc2hlZXQtaW4tZXJy
b3IucGhwOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2Nzcy9yZXNvdXJjZXMvc2xvdy1s
b2FkaW5nLXNoZWV0LnBocDogQWRkZWQuCisgICAgICAgIFRob3NlIDIgdGVzdCBjYXNlcyByZWxp
ZXMgb24gYSBzbG93IGxvYWRpbmcgc3R5bGVzaGVldCBzbyB0aGF0IHdlIGNhbiB0ZXN0IHRoZSBk
aXNhYmxlZCgpIHZhbHVlIHdoaWxlIHRoZSBhbHRlcm5hdGUKKyAgICAgICAgc2hlZXQgaXMgYXN5
bmNocm9ub3VzbHkgbG9hZGluZyBhbmQgdGhlbiBjaGVjayB0aGVtIGFnYWluIG9uY2UgdGhlIHNo
ZWV0IGlzIGxvYWRlZC4KKwogMjAxMS0wOC0xOCAgUGF2ZWwgUG9kaXZpbG92ICA8cG9kaXZpbG92
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBleHRyYWN0IGJyZWFrcG9p
bnQgbWFuYWdlbWVudCBjb2RlIHRvIGEgc2VwYXJhdGUgY2xhc3MgYW5kIGFkZCB0ZXN0cy4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL2xpbmstZGlzYWJsZWQtYXR0ci1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9saW5rLWRpc2FibGVkLWF0dHItZXhwZWN0ZWQu
dHh0CmluZGV4IDU3MWFjYjI4ZDc3MjY2MGZjMmFkYjRjMjJmYTgyMGZjNTZhNmRmY2UuLmY0MTM3
MGExMjVmNDI5ODAzMGQ1YjY0MTBmNTk1YzVjYTEzMTNjZDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2Zhc3QvY3NzL2xpbmstZGlzYWJsZWQtYXR0ci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9jc3MvbGluay1kaXNhYmxlZC1hdHRyLWV4cGVjdGVkLnR4dApAQCAtMTUsMTEg
KzE1LDExIEBAIFBBU1MgZ2V0Q29tcHV0ZWRTdHlsZShjb25zb2xlKS53aGl0ZVNwYWNlIGlzICdw
cmUtd3JhcCcKIGFsdHNoZWV0CiBGQUlMIGxpbmsuZGlzYWJsZWQgc2hvdWxkIGJlIHRydWUuIFdh
cyBmYWxzZS4KIFBBU1MgbGluay5zaGVldCBpcyBub24tbnVsbC4KLUZBSUwgZ2V0Q29tcHV0ZWRT
dHlsZShjb25zb2xlKS5iYWNrZ3JvdW5kQ29sb3Igc2hvdWxkIGJlIHJnYigwLCAxMjgsIDApLiBX
YXMgcmdiYSgwLCAwLCAwLCAwKS4KK1BBU1MgZ2V0Q29tcHV0ZWRTdHlsZShjb25zb2xlKS5iYWNr
Z3JvdW5kQ29sb3IgaXMgJ3JnYigwLCAxMjgsIDApJwogRkFJTCBsaW5rLmRpc2FibGVkIHNob3Vs
ZCBiZSB0cnVlLiBXYXMgZmFsc2UuCi1QQVNTIGdldENvbXB1dGVkU3R5bGUoY29uc29sZSkuYmFj
a2dyb3VuZENvbG9yIGlzIG9yaWdpbmFsQkcKK0ZBSUwgZ2V0Q29tcHV0ZWRTdHlsZShjb25zb2xl
KS5iYWNrZ3JvdW5kQ29sb3Igc2hvdWxkIGJlIHJnYmEoMCwgMCwgMCwgMCkuIFdhcyByZ2IoMCwg
MTI4LCAwKS4KIFBBU1MgbGluay5kaXNhYmxlZCBpcyBmYWxzZQotRkFJTCBnZXRDb21wdXRlZFN0
eWxlKGNvbnNvbGUpLmJhY2tncm91bmRDb2xvciBzaG91bGQgYmUgcmdiKDAsIDEyOCwgMCkuIFdh
cyByZ2JhKDAsIDAsIDAsIDApLgorUEFTUyBnZXRDb21wdXRlZFN0eWxlKGNvbnNvbGUpLmJhY2tn
cm91bmRDb2xvciBpcyAncmdiKDAsIDEyOCwgMCknCiBQQVNTIGdldENvbXB1dGVkU3R5bGUoY29u
c29sZSkuYmFja2dyb3VuZENvbG9yIGlzIG9yaWdpbmFsQkcKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGVzaGVl
dC1lbmFibGUtZmlyc3QtYWx0ZXJuYXRlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qv
Y3NzL3N0eWxlc2hlZXQtZW5hYmxlLWZpcnN0LWFsdGVybmF0ZS1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYzA1MjhmYjc1OGE5MWQ3ZjMwNjgyMDcxMTE1MGY5OGE1ZDE3MDJjNAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxlLWZpcnN0LWFs
dGVybmF0ZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1IEBACitUZXN0IGZvciA2NTE0MDogUkVH
UkVTU0lPTiAocjg0MzI3LXI4NDMyOSk6IENTUyBzdHlsZXNoZWV0cyBmYWlsIHRvIGxvYWQgb24g
d3d3LmZsYWdzdGFyLmNvbSBsb2dpbiBwYWdlCisKK1RoaXMgdGVzdCBQQVNTRUQgaWYgUEFTU0VE
IGlzIHdyaXR0ZW4gYmVsb3cgKGFsdGVybmF0aXZlbHkgdGhlIG5leHQgbGluZSBzaG91bGQgaGF2
ZSBhIEdSRUVOIGJhY2tncm91bmQpLgorCitQQVNTRUQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxlLWZpcnN0LWFsdGVybmF0ZS1vbi1sb2FkLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxlLWZpcnN0LWFs
dGVybmF0ZS1vbi1sb2FkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMDUyOGZiNzU4YTkxZDdm
MzA2ODIwNzExMTUwZjk4YTVkMTcwMmM0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9jc3Mvc3R5bGVzaGVldC1lbmFibGUtZmlyc3QtYWx0ZXJuYXRlLW9uLWxvYWQtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorVGVzdCBmb3IgNjUxNDA6IFJFR1JFU1NJT04gKHI4NDMy
Ny1yODQzMjkpOiBDU1Mgc3R5bGVzaGVldHMgZmFpbCB0byBsb2FkIG9uIHd3dy5mbGFnc3Rhci5j
b20gbG9naW4gcGFnZQorCitUaGlzIHRlc3QgUEFTU0VEIGlmIFBBU1NFRCBpcyB3cml0dGVuIGJl
bG93IChhbHRlcm5hdGl2ZWx5IHRoZSBuZXh0IGxpbmUgc2hvdWxkIGhhdmUgYSBHUkVFTiBiYWNr
Z3JvdW5kKS4KKworUEFTU0VECmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHls
ZXNoZWV0LWVuYWJsZS1maXJzdC1hbHRlcm5hdGUtb24tbG9hZC5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9jc3Mvc3R5bGVzaGVldC1lbmFibGUtZmlyc3QtYWx0ZXJuYXRlLW9uLWxvYWQuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5hMjk1ZTQyZGMyNGY0MTI5YWEzYWI3OTI3ZjZlYTk2NDc4MWUwYmRkCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGVzaGVldC1lbmFibGUtZmly
c3QtYWx0ZXJuYXRlLW9uLWxvYWQuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IURPQ1RZUEUgSFRN
TCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvcmVkLmNzcyIgbWVkaWE9ImFsbCIgdGl0
bGU9IkRlZmF1bHQgU3R5bGUgU2hlZXQiIHR5cGU9InRleHQvY3NzIiAvPgorPGxpbmsgcmVsPSJh
bHRlcm5hdGUgc3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL2dyZWVuLmNzcyIgbWVkaWE9ImFs
bCIgdGl0bGU9ImdyZWVuIiB0eXBlPSJ0ZXh0L2NzcyIgLz4KKzxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0Ij4KKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICBmdW5jdGlvbiB0ZXN0
KCkgeworICAgICAgICB2YXIgcmVkID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxp
bmsiKVswXTsKKyAgICAgICAgcmVkLmRpc2FibGVkID0gdHJ1ZTsKKyAgICAgICAgdmFyIGdyZWVu
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxpbmsiKVsxXTsKKyAgICAgICAgZ3Jl
ZW4uZGlzYWJsZWQgPSB0cnVlOworICAgICAgICBncmVlbi5kaXNhYmxlZCA9IGZhbHNlOworCisg
ICAgICAgIHZhciBjb25zb2xlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKTsK
KyAgICAgICAgaWYgKGdldENvbXB1dGVkU3R5bGUoY29uc29sZSwgbnVsbCkuYmFja2dyb3VuZENv
bG9yID09PSAicmdiKDAsIDEyOCwgMCkiKQorICAgICAgICAgICAgY29uc29sZS5pbm5lckhUTUwg
PSAiUEFTU0VEIjsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY29uc29sZS5pbm5lckhUTUwg
PSAiRkFJTEVELCBiYWNrZ3JvdW5kID0gIiArIGdldENvbXB1dGVkU3R5bGUoY29uc29sZSwgbnVs
bCkuYmFja2dyb3VuZENvbG9yOworICAgIH0KKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigi
bG9hZCIsIHRlc3QsIGZhbHNlKTsKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cD5UZXN0
IGZvciA8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjUx
NDAiPjY1MTQwPC9hPjogUkVHUkVTU0lPTiAocjg0MzI3LXI4NDMyOSk6IENTUyBzdHlsZXNoZWV0
cyBmYWlsIHRvIGxvYWQgb24gd3d3LmZsYWdzdGFyLmNvbSBsb2dpbiBwYWdlPC9wPgorPHA+VGhp
cyB0ZXN0IFBBU1NFRCBpZiBQQVNTRUQgaXMgd3JpdHRlbiBiZWxvdyAoYWx0ZXJuYXRpdmVseSB0
aGUgbmV4dCBsaW5lIHNob3VsZCBoYXZlIGEgR1JFRU4gYmFja2dyb3VuZCkuPC9wPgorPGRpdiBp
ZD0iY29uc29sZSI+RkFJTEVEPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1maXJzdC1hbHRlcm5hdGUuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxlLWZpcnN0LWFsdGVybmF0
ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmY1NTkwNjNmOTFjMzIwY2I5N2I5NDQxYWFjM2Q2MWY1NTIyZTE1
MzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZXNoZWV0LWVu
YWJsZS1maXJzdC1hbHRlcm5hdGUuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IURPQ1RZUEUgSFRN
TCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvcmVkLmNzcyIgbWVkaWE9ImFsbCIgdGl0
bGU9IkRlZmF1bHQgU3R5bGUgU2hlZXQiIHR5cGU9InRleHQvY3NzIiAvPgorPGxpbmsgcmVsPSJh
bHRlcm5hdGUgc3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL2dyZWVuLmNzcyIgbWVkaWE9ImFs
bCIgdGl0bGU9ImdyZWVuIiB0eXBlPSJ0ZXh0L2NzcyIgLz4KKzxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0Ij4KKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICB2YXIgcmVkID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxpbmsiKVswXTsKKyAgICByZWQuZGlzYWJsZWQg
PSB0cnVlOworICAgIHZhciBncmVlbiA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJs
aW5rIilbMV07CisgICAgZ3JlZW4uZGlzYWJsZWQgPSB0cnVlOworICAgIGdyZWVuLmRpc2FibGVk
ID0gZmFsc2U7CisKKyAgICBmdW5jdGlvbiB0ZXN0KCkgeworICAgICAgICB2YXIgY29uc29sZSA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIik7CisgICAgICAgIGlmIChnZXRDb21w
dXRlZFN0eWxlKGNvbnNvbGUsIG51bGwpLmJhY2tncm91bmRDb2xvciA9PT0gInJnYigwLCAxMjgs
IDApIikKKyAgICAgICAgICAgIGNvbnNvbGUuaW5uZXJIVE1MID0gIlBBU1NFRCI7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIGNvbnNvbGUuaW5uZXJIVE1MID0gIkZBSUxFRCwgYmFja2dyb3Vu
ZCA9ICIgKyBnZXRDb21wdXRlZFN0eWxlKGNvbnNvbGUsIG51bGwpLmJhY2tncm91bmRDb2xvcjsK
KyAgICB9CisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCB0ZXN0LCBmYWxzZSk7
Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGVzdCBmb3IgPGEgaHJlZj0iaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1MTQwIj42NTE0MDwvYT46IFJFR1JF
U1NJT04gKHI4NDMyNy1yODQzMjkpOiBDU1Mgc3R5bGVzaGVldHMgZmFpbCB0byBsb2FkIG9uIHd3
dy5mbGFnc3Rhci5jb20gbG9naW4gcGFnZTwvcD4KKzxwPlRoaXMgdGVzdCBQQVNTRUQgaWYgUEFT
U0VEIGlzIHdyaXR0ZW4gYmVsb3cgKGFsdGVybmF0aXZlbHkgdGhlIG5leHQgbGluZSBzaG91bGQg
aGF2ZSBhIEdSRUVOIGJhY2tncm91bmQpLjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPkZBSUxFRDwv
ZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3Mv
c3R5bGVzaGVldC1lbmFibGUtc2Vjb25kLWFsdGVybmF0ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9mYXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1zZWNvbmQtYWx0ZXJuYXRlLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5jMDUyOGZiNzU4YTkxZDdmMzA2ODIwNzExMTUwZjk4YTVkMTcwMmM0
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGVzaGVldC1lbmFi
bGUtc2Vjb25kLWFsdGVybmF0ZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1IEBACitUZXN0IGZv
ciA2NTE0MDogUkVHUkVTU0lPTiAocjg0MzI3LXI4NDMyOSk6IENTUyBzdHlsZXNoZWV0cyBmYWls
IHRvIGxvYWQgb24gd3d3LmZsYWdzdGFyLmNvbSBsb2dpbiBwYWdlCisKK1RoaXMgdGVzdCBQQVNT
RUQgaWYgUEFTU0VEIGlzIHdyaXR0ZW4gYmVsb3cgKGFsdGVybmF0aXZlbHkgdGhlIG5leHQgbGlu
ZSBzaG91bGQgaGF2ZSBhIEdSRUVOIGJhY2tncm91bmQpLgorCitQQVNTRUQKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxlLXNlY29uZC1hbHRlcm5hdGUt
b24tbG9hZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZXNoZWV0LWVu
YWJsZS1zZWNvbmQtYWx0ZXJuYXRlLW9uLWxvYWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMw
NTI4ZmI3NThhOTFkN2YzMDY4MjA3MTExNTBmOThhNWQxNzAyYzQKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1zZWNvbmQtYWx0ZXJuYXRl
LW9uLWxvYWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorVGVzdCBmb3IgNjUxNDA6IFJF
R1JFU1NJT04gKHI4NDMyNy1yODQzMjkpOiBDU1Mgc3R5bGVzaGVldHMgZmFpbCB0byBsb2FkIG9u
IHd3dy5mbGFnc3Rhci5jb20gbG9naW4gcGFnZQorCitUaGlzIHRlc3QgUEFTU0VEIGlmIFBBU1NF
RCBpcyB3cml0dGVuIGJlbG93IChhbHRlcm5hdGl2ZWx5IHRoZSBuZXh0IGxpbmUgc2hvdWxkIGhh
dmUgYSBHUkVFTiBiYWNrZ3JvdW5kKS4KKworUEFTU0VECmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1zZWNvbmQtYWx0ZXJuYXRlLW9uLWxvYWQuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxlLXNlY29uZC1hbHRlcm5h
dGUtb24tbG9hZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNjODA4NmUwYjRhMjdjN2ZmZDgxYTMzYzBkMDI1
MzE1NTE0MmM2NmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHls
ZXNoZWV0LWVuYWJsZS1zZWNvbmQtYWx0ZXJuYXRlLW9uLWxvYWQuaHRtbApAQCAtMCwwICsxLDMx
IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRt
bD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvcmVkLmNz
cyIgbWVkaWE9ImFsbCIgdGl0bGU9IkRlZmF1bHQgU3R5bGUgU2hlZXQiIHR5cGU9InRleHQvY3Nz
IiAvPgorPGxpbmsgcmVsPSJhbHRlcm5hdGUgc3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL3Jl
ZC5jc3MiIG1lZGlhPSJhbGwiIHRpdGxlPSJncmVlbiIgdHlwZT0idGV4dC9jc3MiIC8+Cis8bGlu
ayByZWw9ImFsdGVybmF0ZSBzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvZ3JlZW4uY3NzIiBt
ZWRpYT0iYWxsIiB0aXRsZT0iZ3JlZW4iIHR5cGU9InRleHQvY3NzIiAvPgorPHNjcmlwdCB0eXBl
PSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgIGZ1bmN0
aW9uIHRlc3QoKSB7CisgICAgICAgIHZhciByZWQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgibGluayIpWzBdOworICAgICAgICByZWQuZGlzYWJsZWQgPSB0cnVlOworICAgICAgICB2
YXIgZ3JlZW4gPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGluayIpWzJdOworICAg
ICAgICBncmVlbi5kaXNhYmxlZCA9IGZhbHNlOworCisgICAgICAgIHZhciBjb25zb2xlID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKTsKKyAgICAgICAgaWYgKGdldENvbXB1dGVk
U3R5bGUoY29uc29sZSwgbnVsbCkuYmFja2dyb3VuZENvbG9yID09PSAicmdiKDAsIDEyOCwgMCki
KQorICAgICAgICAgICAgY29uc29sZS5pbm5lckhUTUwgPSAiUEFTU0VEIjsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgY29uc29sZS5pbm5lckhUTUwgPSAiRkFJTEVELCBiYWNrZ3JvdW5kID0g
IiArIGdldENvbXB1dGVkU3R5bGUoY29uc29sZSwgbnVsbCkuYmFja2dyb3VuZENvbG9yOworICAg
IH0KKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIHRlc3QsIGZhbHNlKTsKKzwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cD5UZXN0IGZvciA8YSBocmVmPSJodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjUxNDAiPjY1MTQwPC9hPjogUkVHUkVTU0lP
TiAocjg0MzI3LXI4NDMyOSk6IENTUyBzdHlsZXNoZWV0cyBmYWlsIHRvIGxvYWQgb24gd3d3LmZs
YWdzdGFyLmNvbSBsb2dpbiBwYWdlPC9wPgorPHA+VGhpcyB0ZXN0IFBBU1NFRCBpZiBQQVNTRUQg
aXMgd3JpdHRlbiBiZWxvdyAoYWx0ZXJuYXRpdmVseSB0aGUgbmV4dCBsaW5lIHNob3VsZCBoYXZl
IGEgR1JFRU4gYmFja2dyb3VuZCkuPC9wPgorPGRpdiBpZD0iY29uc29sZSI+RkFJTEVEPC9kaXY+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHls
ZXNoZWV0LWVuYWJsZS1zZWNvbmQtYWx0ZXJuYXRlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nz
cy9zdHlsZXNoZWV0LWVuYWJsZS1zZWNvbmQtYWx0ZXJuYXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDBl
NWMyYzIxZGQ2ZjViNTUwMDUxMzIyNDA5ZTMzNTc3NzRmOGE2ZAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxlLXNlY29uZC1hbHRlcm5hdGUu
aHRtbApAQCAtMCwwICsxLDMxIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RU
RCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSJyZXNvdXJjZXMvcmVkLmNzcyIgbWVkaWE9ImFsbCIgdGl0bGU9IkRlZmF1bHQgU3R5bGUgU2hl
ZXQiIHR5cGU9InRleHQvY3NzIiAvPgorPGxpbmsgcmVsPSJhbHRlcm5hdGUgc3R5bGVzaGVldCIg
aHJlZj0icmVzb3VyY2VzL3JlZC5jc3MiIG1lZGlhPSJhbGwiIHRpdGxlPSJncmVlbiIgdHlwZT0i
dGV4dC9jc3MiIC8+Cis8bGluayByZWw9ImFsdGVybmF0ZSBzdHlsZXNoZWV0IiBocmVmPSJyZXNv
dXJjZXMvZ3JlZW4uY3NzIiBtZWRpYT0iYWxsIiB0aXRsZT0iZ3JlZW4iIHR5cGU9InRleHQvY3Nz
IiAvPgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKKworICAgIHZhciByZWQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGlu
ayIpWzBdOworICAgIHJlZC5kaXNhYmxlZCA9IHRydWU7CisgICAgdmFyIGdyZWVuID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxpbmsiKVsyXTsKKyAgICBncmVlbi5kaXNhYmxlZCA9
IGZhbHNlOworCisgICAgZnVuY3Rpb24gdGVzdCgpIHsKKyAgICAgICAgdmFyIGNvbnNvbGUgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpOworICAgICAgICBpZiAoZ2V0Q29tcHV0
ZWRTdHlsZShjb25zb2xlLCBudWxsKS5iYWNrZ3JvdW5kQ29sb3IgPT09ICJyZ2IoMCwgMTI4LCAw
KSIpCisgICAgICAgICAgICBjb25zb2xlLmlubmVySFRNTCA9ICJQQVNTRUQiOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBjb25zb2xlLmlubmVySFRNTCA9ICJGQUlMRUQsIGJhY2tncm91bmQg
PSAiICsgZ2V0Q29tcHV0ZWRTdHlsZShjb25zb2xlLCBudWxsKS5iYWNrZ3JvdW5kQ29sb3I7Cisg
ICAgfQorICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgdGVzdCwgZmFsc2UpOwor
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRlc3QgZm9yIDxhIGhyZWY9Imh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTE0MCI+NjUxNDA8L2E+OiBSRUdSRVNT
SU9OIChyODQzMjctcjg0MzI5KTogQ1NTIHN0eWxlc2hlZXRzIGZhaWwgdG8gbG9hZCBvbiB3d3cu
ZmxhZ3N0YXIuY29tIGxvZ2luIHBhZ2U8L3A+Cis8cD5UaGlzIHRlc3QgUEFTU0VEIGlmIFBBU1NF
RCBpcyB3cml0dGVuIGJlbG93IChhbHRlcm5hdGl2ZWx5IHRoZSBuZXh0IGxpbmUgc2hvdWxkIGhh
dmUgYSBHUkVFTiBiYWNrZ3JvdW5kKS48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj5GQUlMRUQ8L2Rp
dj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
Y3NzL2xpbmstY3NzLWRpc2FibGVkLXZhbHVlLXdpdGgtc2xvdy1sb2FkaW5nLXNoZWV0LWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY3NzL2xpbmstY3NzLWRpc2FibGVkLXZh
bHVlLXdpdGgtc2xvdy1sb2FkaW5nLXNoZWV0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MTQw
MGFhYTBlYzBhNGUyMGNmZDc2YjBhMzUyMGI5MTc0ZTM2NTQ4Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jc3MvbGluay1jc3MtZGlzYWJsZWQtdmFsdWUtd2l0aC1z
bG93LWxvYWRpbmctc2hlZXQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTkgQEAKK1Rlc3QgdGhh
dCBIVE1MTGlua0VsZW1lbnQncyBkaXNhYmxlZCBhdHRyaWJ1dGUgaXMgcHJvcGVybHkgY2FjaGVk
IHdoaWxlIHNldCB3aGVuIGxvYWRpbmcgYSBzdHlsZXNoZWV0LgorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKKworVGVzdGluZyB2YWx1ZSBvZiAnZGlzYWJsZWQnIHByaW9yIHRvIGxvYWQg
anVzdCBhZnRlciBzZXR0aW5nIHRoZW0KK1BBU1MgbWFpblNoZWV0TGluay5zaGVldCBpcyBub24t
bnVsbC4KK1BBU1MgYWx0ZXJuYXRlU2hlZXRMaW5rLnNoZWV0IGlzIG51bGwKK1BBU1MgbWFpblNo
ZWV0TGluay5kaXNhYmxlZCBpcyB0cnVlCitQQVNTIGFsdGVybmF0ZVNoZWV0TGluay5kaXNhYmxl
ZCBpcyBmYWxzZQorVGVzdGluZyB0aGUgdmFsdWVzIHdoZW4gdGhlIGFsdGVybmF0ZSBzaGVldCBp
cyBsb2FkZWQgKGFzIHRoaXMgaXMgdGhlIG9ubHkgb25lIHRoYXQgaGFzIHNoZWV0KCkgPT09IG51
bGwpCitQQVNTIG1haW5TaGVldExpbmsuc2hlZXQgaXMgbm9uLW51bGwuCitQQVNTIGFsdGVybmF0
ZVNoZWV0TGluay5zaGVldCBpcyBub24tbnVsbC4KK1BBU1MgbWFpblNoZWV0TGluay5kaXNhYmxl
ZCBpcyB0cnVlCitQQVNTIGFsdGVybmF0ZVNoZWV0TGluay5kaXNhYmxlZCBpcyBmYWxzZQorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY3NzL2xpbmstY3NzLWRpc2FibGVkLXZhbHVlLXdp
dGgtc2xvdy1sb2FkaW5nLXNoZWV0LWluLWVycm9yLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvY3NzL2xpbmstY3NzLWRpc2FibGVkLXZhbHVlLXdpdGgtc2xvdy1sb2FkaW5n
LXNoZWV0LWluLWVycm9yLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MTQwMGFhYTBlYzBhNGUy
MGNmZDc2YjBhMzUyMGI5MTc0ZTM2NTQ4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9jc3MvbGluay1jc3MtZGlzYWJsZWQtdmFsdWUtd2l0aC1zbG93LWxvYWRpbmct
c2hlZXQtaW4tZXJyb3ItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTkgQEAKK1Rlc3QgdGhhdCBI
VE1MTGlua0VsZW1lbnQncyBkaXNhYmxlZCBhdHRyaWJ1dGUgaXMgcHJvcGVybHkgY2FjaGVkIHdo
aWxlIHNldCB3aGVuIGxvYWRpbmcgYSBzdHlsZXNoZWV0LgorCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKKworVGVzdGluZyB2YWx1ZSBvZiAnZGlzYWJsZWQnIHByaW9yIHRvIGxvYWQganVz
dCBhZnRlciBzZXR0aW5nIHRoZW0KK1BBU1MgbWFpblNoZWV0TGluay5zaGVldCBpcyBub24tbnVs
bC4KK1BBU1MgYWx0ZXJuYXRlU2hlZXRMaW5rLnNoZWV0IGlzIG51bGwKK1BBU1MgbWFpblNoZWV0
TGluay5kaXNhYmxlZCBpcyB0cnVlCitQQVNTIGFsdGVybmF0ZVNoZWV0TGluay5kaXNhYmxlZCBp
cyBmYWxzZQorVGVzdGluZyB0aGUgdmFsdWVzIHdoZW4gdGhlIGFsdGVybmF0ZSBzaGVldCBpcyBs
b2FkZWQgKGFzIHRoaXMgaXMgdGhlIG9ubHkgb25lIHRoYXQgaGFzIHNoZWV0KCkgPT09IG51bGwp
CitQQVNTIG1haW5TaGVldExpbmsuc2hlZXQgaXMgbm9uLW51bGwuCitQQVNTIGFsdGVybmF0ZVNo
ZWV0TGluay5zaGVldCBpcyBub24tbnVsbC4KK1BBU1MgbWFpblNoZWV0TGluay5kaXNhYmxlZCBp
cyB0cnVlCitQQVNTIGFsdGVybmF0ZVNoZWV0TGluay5kaXNhYmxlZCBpcyBmYWxzZQorUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY3NzL2xpbmstY3NzLWRpc2FibGVkLXZhbHVlLXdpdGgt
c2xvdy1sb2FkaW5nLXNoZWV0LWluLWVycm9yLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2Nzcy9saW5rLWNzcy1kaXNhYmxlZC12YWx1ZS13aXRoLXNsb3ctbG9hZGluZy1zaGVldC1pbi1l
cnJvci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQxNmM4M2QzY2NiYjkyY2MxMjQ5NTc3YjIzNWViMGNhNTY2
ODhjOTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nzcy9saW5r
LWNzcy1kaXNhYmxlZC12YWx1ZS13aXRoLXNsb3ctbG9hZGluZy1zaGVldC1pbi1lcnJvci5odG1s
CkBAIC0wLDAgKzEsMTQgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhU
TUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InJl
c291cmNlcy9zbG93LWxvYWRpbmctc2hlZXQucGhwP2NvbG9yPWdyZWVuIiBtZWRpYT0iYWxsIiB0
aXRsZT0iRGVmYXVsdCBTdHlsZSBTaGVldCIgdHlwZT0idGV4dC9jc3MiIC8+Cis8bGluayByZWw9
ImFsdGVybmF0ZSBzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvc2xvdy1sb2FkaW5nLXNoZWV0
LnBocC1pbi1lcnJvciIgbWVkaWE9ImFsbCIgdGl0bGU9ImdyZWVuIiB0eXBlPSJ0ZXh0L2NzcyIg
Lz4KKzxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9saW5rLWNzcy1kaXNhYmxl
ZC12YWx1ZS13aXRoLXNsb3ctbG9hZGluZy1zaGVldC1pbi1lcnJvci5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nz
cy9saW5rLWNzcy1kaXNhYmxlZC12YWx1ZS13aXRoLXNsb3ctbG9hZGluZy1zaGVldC5odG1sIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jc3MvbGluay1jc3MtZGlzYWJsZWQtdmFsdWUtd2l0aC1z
bG93LWxvYWRpbmctc2hlZXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wN2ZmMmNjY2ExYjRmZTIxZWYxZDEy
NTE5NWE2NjJmY2ZiMjg2NjBhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9jc3MvbGluay1jc3MtZGlzYWJsZWQtdmFsdWUtd2l0aC1zbG93LWxvYWRpbmctc2hlZXQu
aHRtbApAQCAtMCwwICsxLDE0IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RU
RCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSJyZXNvdXJjZXMvc2xvdy1sb2FkaW5nLXNoZWV0LnBocD9jb2xvcj1yZWQiIG1lZGlhPSJhbGwi
IHRpdGxlPSJEZWZhdWx0IFN0eWxlIFNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgLz4KKzxsaW5rIHJl
bD0iYWx0ZXJuYXRlIHN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy9zbG93LWxvYWRpbmctc2hl
ZXQucGhwP2NvbG9yPWdyZWVuIiBtZWRpYT0iYWxsIiB0aXRsZT0iZ3JlZW4iIHR5cGU9InRleHQv
Y3NzIiAvPgorPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2xpbmstY3NzLWRp
c2FibGVkLXZhbHVlLXdpdGgtc2xvdy1sb2FkaW5nLXNoZWV0LmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY3NzL3Jl
c291cmNlcy9saW5rLWNzcy1kaXNhYmxlZC12YWx1ZS13aXRoLXNsb3ctbG9hZGluZy1zaGVldC1p
bi1lcnJvci5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY3NzL3Jlc291cmNlcy9saW5rLWNz
cy1kaXNhYmxlZC12YWx1ZS13aXRoLXNsb3ctbG9hZGluZy1zaGVldC1pbi1lcnJvci5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4wNTg5ZjI3MzZhNjQ0ODk1NTU0ZTlkMDZkODBmZTViOWE4OTk3ZmYzCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jc3MvcmVzb3VyY2VzL2xpbmstY3Nz
LWRpc2FibGVkLXZhbHVlLXdpdGgtc2xvdy1sb2FkaW5nLXNoZWV0LWluLWVycm9yLmpzCkBAIC0w
LDAgKzEsNDUgQEAKK2Rlc2NyaXB0aW9uKCJUZXN0IHRoYXQgSFRNTExpbmtFbGVtZW50J3MgZGlz
YWJsZWQgYXR0cmlidXRlIGlzIHByb3Blcmx5IGNhY2hlZCB3aGlsZSBzZXQgd2hlbiBsb2FkaW5n
IGEgc3R5bGVzaGVldC4iKTsKKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisKK3dpbmRvdy5qc1Rlc3RJ
c0FzeW5jID0gdHJ1ZTsKKworbWFpblNoZWV0TGluayA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJsaW5rIilbMF07CithbHRlcm5hdGVTaGVldExpbmsgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgibGluayIpWzFdOworCittYWluU2hlZXRMaW5rLmRpc2FibGVkID0gdHJ1
ZTsKK2FsdGVybmF0ZVNoZWV0TGluay5kaXNhYmxlZCA9IGZhbHNlOworCitkZWJ1ZygiVGVzdGlu
ZyB2YWx1ZSBvZiAnZGlzYWJsZWQnIHByaW9yIHRvIGxvYWQganVzdCBhZnRlciBzZXR0aW5nIHRo
ZW0iKTsKK3Nob3VsZEJlTm9uTnVsbCgibWFpblNoZWV0TGluay5zaGVldCIpOworc2hvdWxkQmVO
dWxsKCJhbHRlcm5hdGVTaGVldExpbmsuc2hlZXQiKTsKK3Nob3VsZEJlVHJ1ZSgibWFpblNoZWV0
TGluay5kaXNhYmxlZCIsIHRydWUpOworc2hvdWxkQmVGYWxzZSgiYWx0ZXJuYXRlU2hlZXRMaW5r
LmRpc2FibGVkIik7CisKK2RlYnVnKCJUZXN0aW5nIHRoZSB2YWx1ZXMgd2hlbiB0aGUgYWx0ZXJu
YXRlIHNoZWV0IGlzIGxvYWRlZCAoYXMgdGhpcyBpcyB0aGUgb25seSBvbmUgdGhhdCBoYXMgc2hl
ZXQoKSA9PT0gbnVsbCkiKTsKKworZnVuY3Rpb24gb25TaGVldExvYWRlZChmLCBlbGVtLCBtYXh0
aW1lKSB7CisgICAgaWYgKGVsZW0uc2hlZXQgfHwgbWF4dGltZSA8PSAwKQorICAgICAgICBmKCk7
CisgICAgZWxzZQorICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgb25TaGVldExvYWRl
ZChmLCBlbGVtLCBtYXh0aW1lIC0gMjUpO30sIDI1KTsKK30KKworZnVuY3Rpb24gdGVzdFdoZW5M
b2FkZWQoKSB7CisgICAgICAgIC8vIFRob3NlIG5leHQgMiBsaW5lcyBhcmUgYSBzYW5pdHkgY2hl
Y2suCisgICAgICAgIC8vIElmIHRoZSBzZWNvbmQgY2hlY2sgZmFpbHMsIGl0IGlzIGxpa2VseSB0
aGF0IHRoZSB0ZXN0IHRpbWVkIG91dCBhbmQgdGh1cworICAgICAgICAvLyB5b3UgY2FuIGRpc2Nh
cmQgdGhlIHJlc3Qgb2YgcmVzdWx0cyBhcyBpdCBpcyBub3QgdGVzdGluZyB3aGF0IHdlIHdhbnQK
KyAgICAgICAgLy8gKG5hbWVseSB0aGF0IHRoZSBkaXNhYmxlZCB2YWx1ZSBpcyBwYXNzZWQgdG8g
dGhlIGZpbmFsIHNoZWV0KS4KKyAgICAgICAgc2hvdWxkQmVOb25OdWxsKCJtYWluU2hlZXRMaW5r
LnNoZWV0Iik7CisgICAgICAgIHNob3VsZEJlTm9uTnVsbCgiYWx0ZXJuYXRlU2hlZXRMaW5rLnNo
ZWV0Iik7CisKKyAgICAgICAgc2hvdWxkQmVUcnVlKCJtYWluU2hlZXRMaW5rLmRpc2FibGVkIik7
CisgICAgICAgIHNob3VsZEJlRmFsc2UoImFsdGVybmF0ZVNoZWV0TGluay5kaXNhYmxlZCIpOwor
CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworfQorCitvblNoZWV0TG9hZGVkKHRlc3RXaGVuTG9h
ZGVkLCBhbHRlcm5hdGVTaGVldExpbmssIDUwMCk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQg
PSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jc3MvcmVzb3VyY2Vz
L2xpbmstY3NzLWRpc2FibGVkLXZhbHVlLXdpdGgtc2xvdy1sb2FkaW5nLXNoZWV0LmpzIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9jc3MvcmVzb3VyY2VzL2xpbmstY3NzLWRpc2FibGVkLXZhbHVl
LXdpdGgtc2xvdy1sb2FkaW5nLXNoZWV0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ODlmMjczNmE2NDQ4OTU1
NTRlOWQwNmQ4MGZlNWI5YTg5OTdmZjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2Nzcy9yZXNvdXJjZXMvbGluay1jc3MtZGlzYWJsZWQtdmFsdWUtd2l0aC1zbG93
LWxvYWRpbmctc2hlZXQuanMKQEAgLTAsMCArMSw0NSBAQAorZGVzY3JpcHRpb24oIlRlc3QgdGhh
dCBIVE1MTGlua0VsZW1lbnQncyBkaXNhYmxlZCBhdHRyaWJ1dGUgaXMgcHJvcGVybHkgY2FjaGVk
IHdoaWxlIHNldCB3aGVuIGxvYWRpbmcgYSBzdHlsZXNoZWV0LiIpOworCitpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERv
bmUoKTsKKword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCittYWluU2hlZXRMaW5rID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxpbmsiKVswXTsKK2FsdGVybmF0ZVNoZWV0
TGluayA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJsaW5rIilbMV07CisKK21haW5T
aGVldExpbmsuZGlzYWJsZWQgPSB0cnVlOworYWx0ZXJuYXRlU2hlZXRMaW5rLmRpc2FibGVkID0g
ZmFsc2U7CisKK2RlYnVnKCJUZXN0aW5nIHZhbHVlIG9mICdkaXNhYmxlZCcgcHJpb3IgdG8gbG9h
ZCBqdXN0IGFmdGVyIHNldHRpbmcgdGhlbSIpOworc2hvdWxkQmVOb25OdWxsKCJtYWluU2hlZXRM
aW5rLnNoZWV0Iik7CitzaG91bGRCZU51bGwoImFsdGVybmF0ZVNoZWV0TGluay5zaGVldCIpOwor
c2hvdWxkQmVUcnVlKCJtYWluU2hlZXRMaW5rLmRpc2FibGVkIiwgdHJ1ZSk7CitzaG91bGRCZUZh
bHNlKCJhbHRlcm5hdGVTaGVldExpbmsuZGlzYWJsZWQiKTsKKworZGVidWcoIlRlc3RpbmcgdGhl
IHZhbHVlcyB3aGVuIHRoZSBhbHRlcm5hdGUgc2hlZXQgaXMgbG9hZGVkIChhcyB0aGlzIGlzIHRo
ZSBvbmx5IG9uZSB0aGF0IGhhcyBzaGVldCgpID09PSBudWxsKSIpOworCitmdW5jdGlvbiBvblNo
ZWV0TG9hZGVkKGYsIGVsZW0sIG1heHRpbWUpIHsKKyAgICBpZiAoZWxlbS5zaGVldCB8fCBtYXh0
aW1lIDw9IDApCisgICAgICAgIGYoKTsKKyAgICBlbHNlCisgICAgICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24gKCkgeyBvblNoZWV0TG9hZGVkKGYsIGVsZW0sIG1heHRpbWUgLSAyNSk7fSwgMjUpOwor
fQorCitmdW5jdGlvbiB0ZXN0V2hlbkxvYWRlZCgpIHsKKyAgICAgICAgLy8gVGhvc2UgbmV4dCAy
IGxpbmVzIGFyZSBhIHNhbml0eSBjaGVjay4KKyAgICAgICAgLy8gSWYgdGhlIHNlY29uZCBjaGVj
ayBmYWlscywgaXQgaXMgbGlrZWx5IHRoYXQgdGhlIHRlc3QgdGltZWQgb3V0IGFuZCB0aHVzCisg
ICAgICAgIC8vIHlvdSBjYW4gZGlzY2FyZCB0aGUgcmVzdCBvZiByZXN1bHRzIGFzIGl0IGlzIG5v
dCB0ZXN0aW5nIHdoYXQgd2Ugd2FudAorICAgICAgICAvLyAobmFtZWx5IHRoYXQgdGhlIGRpc2Fi
bGVkIHZhbHVlIGlzIHBhc3NlZCB0byB0aGUgZmluYWwgc2hlZXQpLgorICAgICAgICBzaG91bGRC
ZU5vbk51bGwoIm1haW5TaGVldExpbmsuc2hlZXQiKTsKKyAgICAgICAgc2hvdWxkQmVOb25OdWxs
KCJhbHRlcm5hdGVTaGVldExpbmsuc2hlZXQiKTsKKworICAgICAgICBzaG91bGRCZVRydWUoIm1h
aW5TaGVldExpbmsuZGlzYWJsZWQiKTsKKyAgICAgICAgc2hvdWxkQmVGYWxzZSgiYWx0ZXJuYXRl
U2hlZXRMaW5rLmRpc2FibGVkIik7CisKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK29u
U2hlZXRMb2FkZWQodGVzdFdoZW5Mb2FkZWQsIGFsdGVybmF0ZVNoZWV0TGluaywgNTAwKTsKKwor
dmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2Nzcy9yZXNvdXJjZXMvc2xvdy1sb2FkaW5nLXNoZWV0LWluLWVycm9yLnBocCBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY3NzL3Jlc291cmNlcy9zbG93LWxvYWRpbmctc2hlZXQt
aW4tZXJyb3IucGhwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRjZDE3ZjdmNzIxOTYxNDY4Nzk0MWNkZjg5NWMxMDdk
ZWFmN2Y1ZDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nzcy9y
ZXNvdXJjZXMvc2xvdy1sb2FkaW5nLXNoZWV0LWluLWVycm9yLnBocApAQCAtMCwwICsxLDEzIEBA
Cis8P3BocAorLy8gV2Ugc2xlZXAgaGVyZSBzbyB0aGF0IHdlIGFyZSBoYXZlIGVub3VnaCB0aW1l
IHRvIHRlc3QgdGhlIGRpZmZlcmVudCBhdHRyaWJ1dGVzIGJlZm9yZSB0aGUgc3R5bGVzaGVldCBp
cyBmdWxseSBsb2FkZWQuCit1c2xlZXAoMTAwKTsKKworaGVhZGVyKCJIVFRQLzEuMCA1MDAgSW50
ZXJuYWwgRXJyb3IiKTsKK2hlYWRlcigiRXhwaXJlczogVGh1LCAwMSBEZWMgMjAwMyAxNjowMDow
MCBHTVQiKTsKK2hlYWRlcigiQ2FjaGUtQ29udHJvbDogbm8tY2FjaGUsIG5vLXN0b3JlLCBtdXN0
LXJldmFsaWRhdGUiKTsKK2hlYWRlcigiUHJhZ21hOiBuby1jYWNoZSIpOworaGVhZGVyKCJDb250
ZW50LVR5cGU6IHRleHQvY3NzIik7CisKK29iX2ZsdXNoKCk7CitmbHVzaCgpOworPz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY3NzL3Jlc291cmNlcy9zbG93LWxvYWRpbmct
c2hlZXQucGhwIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jc3MvcmVzb3VyY2VzL3Nsb3ctbG9h
ZGluZy1zaGVldC5waHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjg5MzdkNDJhZjgwMzA1YmU4YzM4Y2M2ZjZlOWYw
MmYwMGJmNmRlOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY3Nz
L3Jlc291cmNlcy9zbG93LWxvYWRpbmctc2hlZXQucGhwCkBAIC0wLDAgKzEsMTUgQEAKKzw/cGhw
CisvLyBXZSBzbGVlcCBoZXJlIHNvIHRoYXQgd2UgYXJlIGhhdmUgZW5vdWdoIHRpbWUgdG8gdGVz
dCB0aGUgZGlmZmVyZW50IGF0dHJpYnV0ZXMgYmVmb3JlIHRoZSBzdHlsZXNoZWV0IGlzIGZ1bGx5
IGxvYWRlZC4KK3VzbGVlcCgxMDApOworCitoZWFkZXIoIkV4cGlyZXM6IFRodSwgMDEgRGVjIDIw
MDMgMTY6MDA6MDAgR01UIik7CitoZWFkZXIoIkNhY2hlLUNvbnRyb2w6IG5vLWNhY2hlLCBuby1z
dG9yZSwgbXVzdC1yZXZhbGlkYXRlIik7CitoZWFkZXIoIlByYWdtYTogbm8tY2FjaGUiKTsKK2hl
YWRlcigiQ29udGVudC1UeXBlOiB0ZXh0L2NzcyIpOworCiskY29sb3IgPSAkX0dFVFsnY29sb3In
XTsKKworZWNobyAiaDEgeyBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3IgfVxuIjsKK29iX2ZsdXNo
KCk7CitmbHVzaCgpOworPz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyMDkwZGJmYTNiMTRkNzNiOWZjNTc3ZTc2
NTYzNjM0OWUwOTRiODQ2Li5hZDg4OTQ5M2U3Zjg4NWE5NWI1MGFjNGI0ZTg5MmIzM2M3OTM4NTE3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAgQEAKKzIwMTEtMDgtMTkgIEp1bGllbiBDaGFmZnJh
aXggIDxqY2hhZmZyYWl4QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUkVHUkVTU0lPTiAocjg0MzI3
LXI4NDMyOSk6IENTUyBzdHlsZXNoZWV0cyBmYWlsIHRvIGxvYWQgb24gd3d3LmZsYWdzdGFyLmNv
bSBsb2dpbiBwYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02NTE0MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vOTgzNTkwNT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KKworICAgICAgICBUZXN0czogZmFzdC9jc3Mvc3R5
bGVzaGVldC1lbmFibGUtZmlyc3QtYWx0ZXJuYXRlLW9uLWxvYWQuaHRtbAorICAgICAgICAgICAg
ICAgZmFzdC9jc3Mvc3R5bGVzaGVldC1lbmFibGUtZmlyc3QtYWx0ZXJuYXRlLmh0bWwKKyAgICAg
ICAgICAgICAgIGZhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxlLXNlY29uZC1hbHRlcm5hdGUtb24t
bG9hZC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1zZWNv
bmQtYWx0ZXJuYXRlLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvY3NzL2xpbmstY3Nz
LWRpc2FibGVkLXZhbHVlLXdpdGgtc2xvdy1sb2FkaW5nLXNoZWV0LWluLWVycm9yLmh0bWwKKyAg
ICAgICAgICAgICAgIGh0dHAvdGVzdHMvY3NzL2xpbmstY3NzLWRpc2FibGVkLXZhbHVlLXdpdGgt
c2xvdy1sb2FkaW5nLXNoZWV0Lmh0bWwKKworICAgICAgICBUaGUgZ2lzdCBvZiB0aGUgaXNzdWUg
aXMgdGhhdCB3ZSB3ZXJlIGlnbm9yaW5nIGNhbGxzIHRvIEhUTUxMaW5rRWxlbWVudDo6c2V0RGlz
YWJsZWQgdGhhdCB3b3VsZCBlbmFibGUgYQorICAgICAgICBzdHlsZSBzaGVldCB3aGVuIHdlIHdl
cmUgbG9hZGluZyBhIHN0eWxlc2hlZXQgKG1fc2hlZXQgd2FzIDAgYW5kIHRodXMgaWdub3JlZCB0
aGUgY2FsbCBwZXIgdGhlIHNwZWMpLgorCisgICAgICAgIEZGIGdvZXMgYWdhaW5zdCB0aGUgQ1NT
IE9NIHNwZWMgaW4gdGhpcyBjYXNlIGFuZCBhbHdheXMga2VlcCBhbiBhc3NvY2lhdGVkIHNoZWV0
IGFzIGxvbmcgYXMgJ3JlbCcgaGludHMKKyAgICAgICAgYXQgYSBzdHlsZXNoZWV0IGxpbmsgYW5k
IGhyZWYgaXMgcHJlc2VudC4gSW5zdGVhZCBvZiBzaWRpbmcgd2l0aCBGRiwgSSBjb250aW51ZWQg
dG8gZm9sbG93IHRoZQorICAgICAgICBzcGVjaWZpY2F0aW9uIGFuZCBzdG9yZSB0aGUgZW5hYmxl
ZCB2aWEgamF2YXNjcmlwdCBzdGF0ZSBpbnRvIG1fc2NyaXB0U3RhdGUgKHJlbmFtZWQgZnJvbQor
ICAgICAgICBtX2lzRW5hYmxlZFZpYVNjcmlwdCkuIFRoaXMgaW5mb3JtYXRpb24gZ2V0cyBtZXJn
ZWQgYmFjayBpbnRvIHRoZSBzdHlsZSBzaGVldCBkaXNhYmxlZCBzdGF0ZSB3aGVuIGl0IGlzCisg
ICAgICAgIGF2YWlsYWJsZS4KKworICAgICAgICBXaGlsZSBkZWJ1Z2dpbmcgdGhlIGNhc2UgYXQg
aGFuZCwgSSBmb3VuZCBzb21lIGNhc2VzIHRoYXQgd2VyZSBub3QgcHJvcGVybHkgaGFuZGxlZCBh
bmQgd2VyZSBmaXhlZCBhcworICAgICAgICBwYXJ0IG9mIHRoaXMgY2hhbmdlLgorCisgICAgICAg
ICogaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtF
bGVtZW50OjpIVE1MTGlua0VsZW1lbnQpOiBVcGRhdGVkIGFmdGVyIG1faXNFbmFibGVkVmlhU2Ny
aXB0IHJlbmFtZS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudDo6c2V0RGlzYWJs
ZWQpOiBBbHdheXMgY2FsbCBzZXRJc0VuYWJsZWRWaWFTY3JpcHQgc28gdGhhdAorICAgICAgICB0
aGUgaW5mb3JtYXRpb24gaXMgcHJvcGVybHkgc3RvcmVkIChlaXRoZXIgZm9yIHJlY2FsY1N0eWxl
U2VsZWN0b3Igb3IganVzdCB0byBzdG9yZQorICAgICAgICB0aGUgc3RhdGUgZHVyaW5nIGxvYWRp
bmcpLgorCisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OnNoZWV0TG9hZGVkKTog
TWVyZ2UgYmFjayB0aGUgc3RhdGUgZnJvbSBtX3NjcmlwdFN0YXRlIHRvCisgICAgICAgIHRoZSBz
aGVldCdzIGRpc2FibGVkIHN0YXRlLgorCisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1l
bnQ6OmRpc2FibGVkKTogQWNjb3VudCBmb3IgdGhlIHRlbXBvcmFyeSBzdGF0ZSBhbmQgcmV0dXJu
IHRoZQorICAgICAgICByaWdodCB2YWx1ZS4gSXQgbWF0Y2hlcyBGRiBhbmQgd2hhdCBwZW9wbGUg
d291bGQgZXhwZWN0LgorCisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OmFyZURp
c2FibGVkQW5kU2NyaXB0U3RhdGVzQ29uc2lzdGVudCk6IERlYnVnIG9ubHkgbWV0aG9kCisgICAg
ICAgIHRoYXQgY2hlY2tzIHRoYXQgZGlzYWJsZWQoKSBhbmQgaXNFbmFibGVkVmlhU2NyaXB0KCkg
YXJlIGNvbnNpc3RlbnQgd2l0aCBlYWNoIG90aGVyCisgICAgICAgICh1bmRlciBzb21lIGNpcmN1
bXN0YW5jZXMpLgorCisgICAgICAgICogaHRtbC9IVE1MTGlua0VsZW1lbnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudDo6aXNFbmFibGVkVmlhU2NyaXB0KTogVXBkYXRlZCBh
ZnRlciBtX2lzRW5hYmxlZFZpYVNjcmlwdCByZW5hbWUuCisgICAgICAgIChXZWJDb3JlOjpIVE1M
TGlua0VsZW1lbnQ6OnNldElzRW5hYmxlZFZpYVNjcmlwdCk6IEFkZGVkIHNldHRlci4KKwogMjAx
MS0wOC0xOSAgUGF2ZWwgUG9kaXZpbG92ICA8cG9kaXZpbG92QGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBXZWIgSW5zcGVjdG9yOiB1cGRhdGUgc2NvcGUgdmFyaWFibGVzIHVwb24gdmFsdWUgY2hh
bmdlcyB2aWEgY29uc29sZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExp
bmtFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcApp
bmRleCA0YmM2ZTkzM2VjZDBkZjNiY2VjMzliMWNjOGNhM2Y5OGY5Nzg4OWQyLi40ZmE4MzQ2NmVj
ODllOTg1ZWVkM2Q0YzNlZTFjZTQxM2FkZjg5Y2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TGlua0VsZW1lbnQuY3BwCkBAIC01Niw3ICs1Niw3IEBAIGlubGluZSBIVE1MTGlua0VsZW1lbnQ6
OkhUTUxMaW5rRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCoK
ICAgICAsIG1fbGlua0xvYWRlcih0aGlzKQogICAgICwgbV9zaXplcyhET01TZXR0YWJsZVRva2Vu
TGlzdDo6Y3JlYXRlKCkpCiAgICAgLCBtX2xvYWRpbmcoZmFsc2UpCi0gICAgLCBtX2lzRW5hYmxl
ZFZpYVNjcmlwdChmYWxzZSkKKyAgICAsIG1fc2NyaXB0U3RhdGUoVW5zZXQpCiAgICAgLCBtX2Ny
ZWF0ZWRCeVBhcnNlcihjcmVhdGVkQnlQYXJzZXIpCiAgICAgLCBtX2lzSW5TaGFkb3dUcmVlKGZh
bHNlKQogICAgICwgbV9wZW5kaW5nU2hlZXRUeXBlKE5vbmUpCkBAIC04NSwxNSArODUsMjAgQEAg
SFRNTExpbmtFbGVtZW50Ojp+SFRNTExpbmtFbGVtZW50KCkKIAogdm9pZCBIVE1MTGlua0VsZW1l
bnQ6OnNldERpc2FibGVkKGJvb2wgZGlzYWJsZWQpCiB7CisgICAgYm9vbCB3YXNFbmFibGVkVmlh
U2NyaXB0ID0gaXNFbmFibGVkVmlhU2NyaXB0KCk7CisgICAgc2V0SXNFbmFibGVkVmlhU2NyaXB0
KCFkaXNhYmxlZCk7CisKICAgICBpZiAoIW1fc2hlZXQpCiAgICAgICAgIHJldHVybjsKIAogICAg
IGJvb2wgd2FzRGlzYWJsZWQgPSBtX3NoZWV0LT5kaXNhYmxlZCgpOwotICAgIGlmICh3YXNEaXNh
YmxlZCA9PSBkaXNhYmxlZCkKKyAgICBpZiAod2FzRGlzYWJsZWQgPT0gZGlzYWJsZWQpIHsKKyAg
ICAgICAgaWYgKHdhc0VuYWJsZWRWaWFTY3JpcHQgIT0gaXNFbmFibGVkVmlhU2NyaXB0KCkpCisg
ICAgICAgICAgICBkb2N1bWVudCgpLT5zdHlsZVNlbGVjdG9yQ2hhbmdlZChEZWZlclJlY2FsY1N0
eWxlKTsKICAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIG1fc2hlZXQtPnNldERpc2FibGVk
KGRpc2FibGVkKTsKLSAgICBtX2lzRW5hYmxlZFZpYVNjcmlwdCA9ICFkaXNhYmxlZDsKIAogICAg
IC8vIElmIHdlIGNoYW5nZSB0aGUgZGlzYWJsZWQgc3RhdGUgd2hpbGUgdGhlIHNoZWV0IGlzIHN0
aWxsIGxvYWRpbmcsIHRoZW4gd2UgaGF2ZSB0bwogICAgIC8vIHBlcmZvcm0gdGhyZWUgY2hlY2tz
OgpAQCAtMTIwLDYgKzEyNSw4IEBAIHZvaWQgSFRNTExpbmtFbGVtZW50OjpzZXREaXNhYmxlZChi
b29sIGRpc2FibGVkKQogCiAgICAgaWYgKCFkaXNhYmxlZCkKICAgICAgICAgcHJvY2VzcygpOwor
CisgICAgQVNTRVJUKGFyZURpc2FibGVkQW5kU2NyaXB0U3RhdGVzQ29uc2lzdGVudCgpKTsKIH0K
IAogU3R5bGVTaGVldCogSFRNTExpbmtFbGVtZW50OjpzaGVldCgpIGNvbnN0CkBAIC0zNTksMTAg
KzM2NiwyMCBAQCB2b2lkIEhUTUxMaW5rRWxlbWVudDo6bGlua0xvYWRpbmdFcnJvcmVkKCkKIAog
Ym9vbCBIVE1MTGlua0VsZW1lbnQ6OnNoZWV0TG9hZGVkKCkKIHsKKyAgICAvLyBNaWdyYXRlIHRo
ZSBkaXNhYmxlZCBpbmZvcm1hdGlvbiBiZWZvcmUgcmVtb3ZlUGVuZGluZ1NoZWV0IGlzIGNhbGxl
ZAorICAgIC8vIGFzIGl0IHdpbGwgc3RhcnQgYSByZWNhbFN0eWxlU2VsZWN0b3Igd2hpY2ggbmVl
ZHMgdGhpcyBpbmZvcm1hdGlvbi4KKyAgICBpZiAobV9zY3JpcHRTdGF0ZSAhPSBVbnNldCkgewor
ICAgICAgICBBU1NFUlQoIW1fbG9hZGluZyk7CisgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQg
QVNTRVJUIHRoYXQgaXQgd2FzIHNldCBmb3Igc3R5bGVzaGVldHMgb25seSwgYnV0CisgICAgICAg
IC8vIGN1cnJlbnRseSB3ZSBhbGxvdyBzZXREaXNhYmxlZCB0byBiZSBjYWxsZWQgcmVnYXJkbGVz
cyBvZiB0aGUgPGxpbms+IHJlbC4KKyAgICAgICAgc2V0RGlzYWJsZWQobV9zY3JpcHRTdGF0ZSA9
PSBEaXNhYmxlZFZpYVNjcmlwdCk7CisgICAgfQorCiAgICAgaWYgKCFpc0xvYWRpbmcoKSkgewog
ICAgICAgICByZW1vdmVQZW5kaW5nU2hlZXQoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQorCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC00NDUsNyArNDYyLDIwIEBAIHZvaWQgSFRN
TExpbmtFbGVtZW50OjpyZW1vdmVQZW5kaW5nU2hlZXQoKQogCiBib29sIEhUTUxMaW5rRWxlbWVu
dDo6ZGlzYWJsZWQoKSBjb25zdAogewotICAgIHJldHVybiBtX3NoZWV0ICYmIG1fc2hlZXQtPmRp
c2FibGVkKCk7CisgICAgQVNTRVJUKGFyZURpc2FibGVkQW5kU2NyaXB0U3RhdGVzQ29uc2lzdGVu
dCgpKTsKKworICAgIGlmICghbV9zaGVldCkgeworICAgICAgICAvLyBGRiBkaXNhZ3JlZXMgd2l0
aCB0aGUgQ1NTIE9NIHNwZWMgYW5kIGFsd2F5cyBoYXMgYW4gYXNzb2NpYXRlZCBzdHlsZXNoZWV0
IGZvciBhbHRlcm5hdGUgc2hlZXQgKHJlZ2FyZGxlc3Mgb2Ygd2hldGhlcgorICAgICAgICAvLyB0
aGUgcmVzb3VyY2UgaXMgZmV0Y2hlZCkuIEFzIHdlIHN0b3JlIHRoZSBlbmFibGVkIHN0YXRlIGlu
IG1fc2NyaXB0U3RhdGUgd2hpbGUgbG9hZGluZywgcmV0dXJuIHRoaXMgaW5mb3JtYXRpb24gdG8g
YmUKKyAgICAgICAgLy8gY29uc2lzdGVudCB3aXRoIEZGLiBzaGVldExvYWRlZCgpIGlzIGNhbGxl
ZCBhdCB0aGUgZW5kIG9mIGFueSB0cmFuc2ZlciAod2hldGhlciBpdCB3YXMgaW4gZXJyb3Igb3Ig
bm90KSBzbyBtX3NjcmlwdFN0YXRlCisgICAgICAgIC8vIHdpbGwgYmUgdHJhbnNmZXJlZCBiYWNr
IGludG8gb3VyIHN0eWxlc2hlZXQgYW5kIHRoZSBkaXNhYmxlZCgpIHZhbHVlIHNob3VsZCBhbHdh
eXMgYmUgY29uc2lzdGVudC4KKyAgICAgICAgaWYgKGlzTG9hZGluZygpICYmIG1fc2NyaXB0U3Rh
dGUgIT0gVW5zZXQpCisgICAgICAgICAgICByZXR1cm4gbV9zY3JpcHRTdGF0ZSA9PSBEaXNhYmxl
ZFZpYVNjcmlwdDsKKworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJu
IG1fc2hlZXQtPmRpc2FibGVkKCk7CiB9CiAKIERPTVNldHRhYmxlVG9rZW5MaXN0KiBIVE1MTGlu
a0VsZW1lbnQ6OnNpemVzKCkgY29uc3QKQEAgLTQ1OCw0ICs0ODgsMjMgQEAgdm9pZCBIVE1MTGlu
a0VsZW1lbnQ6OnNldFNpemVzKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgbV9zaXplcy0+c2V0
VmFsdWUodmFsdWUpOwogfQogCisjaWZuZGVmIE5ERUJVRworYm9vbCBIVE1MTGlua0VsZW1lbnQ6
OmFyZURpc2FibGVkQW5kU2NyaXB0U3RhdGVzQ29uc2lzdGVudCgpIGNvbnN0Cit7CisgICAgaWYg
KCFtX3JlbEF0dHJpYnV0ZS5tX2lzU3R5bGVTaGVldCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisK
KyAgICAvLyBEdXJpbmcgbG9hZGluZywgbV9zY3JpcHRTdGF0ZSBob2xkcyB0aGUgdGVtcG9yYXJ5
IHZhbHVlIGZvciBzaGVldCgpLT5kaXNhYmxlZCgpCisgICAgLy8gc28gaXQgY2FuIGhhdmUgYW55
IHZhbHVlcyAoc2FtZSBmb3Igc2hlZXQoKS0+ZGlzYWJsZWQoKSkuCisgICAgaWYgKGlzTG9hZGlu
ZygpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlmIChtX3NjcmlwdFN0YXRlID09IFVu
c2V0KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGJvb2wgaXNEaXNhYmxlZFZpYVNjcmlw
dCA9IG1fc2NyaXB0U3RhdGUgPT0gRGlzYWJsZWRWaWFTY3JpcHQ7CisgICAgcmV0dXJuIGlzRGlz
YWJsZWRWaWFTY3JpcHQgPT0gc2hlZXQoKS0+ZGlzYWJsZWQoKTsKK30KKyNlbmRpZgorCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxM
aW5rRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaAppbmRl
eCA4ZmVkZTAyZTVlN2Y5MmI3NDBmODU5MDkxM2U4Yjc1OWE2ZDE1MTM4Li5hYzUxOGQyOTJmYzQz
NTE0YzZhZWRlMjQ1MWY1ZGU4OWFjN2JmYmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxMaW5rRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtF
bGVtZW50LmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogCiAgICAgLy8gRklYTUU6IFRoaXMg
c2hvdWxkIGJlIHJlbmFtZWQgaXNTdHlsZVNoZWV0TG9hZGluZyBhcyB0aGlzIGlzIG9ubHkgdXNl
ZCBmb3Igc3R5bGVzaGVldHMuCiAgICAgYm9vbCBpc0xvYWRpbmcoKSBjb25zdDsKLSAgICBib29s
IGlzRW5hYmxlZFZpYVNjcmlwdCgpIGNvbnN0IHsgcmV0dXJuIG1faXNFbmFibGVkVmlhU2NyaXB0
OyB9CisgICAgYm9vbCBpc0VuYWJsZWRWaWFTY3JpcHQoKSBjb25zdCB7IHJldHVybiBtX3Njcmlw
dFN0YXRlID09IEVuYWJsZWRWaWFTY3JpcHQ7IH0KICAgICBib29sIGRpc2FibGVkKCkgY29uc3Q7
CiAgICAgdm9pZCBzZXREaXNhYmxlZChib29sKTsKICAgICB2b2lkIHNldFNpemVzKGNvbnN0IFN0
cmluZyYpOwpAQCAtODUsNyArODUsNiBAQCBwcml2YXRlOgogICAgIAogICAgIHZpcnR1YWwgYm9v
bCBpc1VSTEF0dHJpYnV0ZShBdHRyaWJ1dGUqKSBjb25zdDsKIAotcHJpdmF0ZToKICAgICB2aXJ0
dWFsIHZvaWQgYWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+Jikg
Y29uc3Q7CiAKICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoUGFyc2luZ0NoaWxkcmVuKCk7CkBAIC05
Nyw2ICs5NiwxMSBAQCBwcml2YXRlOgogcHJpdmF0ZToKICAgICBIVE1MTGlua0VsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50KiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpOwogCisg
ICAgdm9pZCBzZXRJc0VuYWJsZWRWaWFTY3JpcHQoYm9vbCBlbmFibGVkKSB7IG1fc2NyaXB0U3Rh
dGUgPSBlbmFibGVkID8gRW5hYmxlZFZpYVNjcmlwdCA6IERpc2FibGVkVmlhU2NyaXB0OyB9Cisj
aWZuZGVmIE5ERUJVRworICAgIGJvb2wgYXJlRGlzYWJsZWRBbmRTY3JpcHRTdGF0ZXNDb25zaXN0
ZW50KCkgY29uc3Q7CisjZW5kaWYKKwogICAgIExpbmtMb2FkZXIgbV9saW5rTG9hZGVyOwogICAg
IENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZENTU1N0eWxlU2hlZXQ+IG1fY2FjaGVkU2hlZXQ7
CiAgICAgUmVmUHRyPENTU1N0eWxlU2hlZXQ+IG1fc2hlZXQ7CkBAIC0xMDYsMTAgKzExMCwxMSBA
QCBwcml2YXRlOgogICAgIFJlZlB0cjxET01TZXR0YWJsZVRva2VuTGlzdD4gbV9zaXplczsKICAg
ICBMaW5rUmVsQXR0cmlidXRlIG1fcmVsQXR0cmlidXRlOwogICAgIGJvb2wgbV9sb2FkaW5nOwot
ICAgIGJvb2wgbV9pc0VuYWJsZWRWaWFTY3JpcHQ7CisgICAgZW51bSBFbmFibGVkVmlhU2NyaXB0
U3RhdGUgeyBVbnNldCwgRW5hYmxlZFZpYVNjcmlwdCwgRGlzYWJsZWRWaWFTY3JpcHQgfTsKKyAg
ICBFbmFibGVkVmlhU2NyaXB0U3RhdGUgbV9zY3JpcHRTdGF0ZTsKICAgICBib29sIG1fY3JlYXRl
ZEJ5UGFyc2VyOwogICAgIGJvb2wgbV9pc0luU2hhZG93VHJlZTsKLSAgICAKKwogICAgIFBlbmRp
bmdTaGVldFR5cGUgbV9wZW5kaW5nU2hlZXRUeXBlOwogfTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104613</attachid>
            <date>2011-08-19 20:01:26 -0700</date>
            <delta_ts>2011-08-22 09:58:36 -0700</delta_ts>
            <desc>Patch 6: Solve the valid ASSERT by adding a custom setter to |disabled| that forwards the information through the associated &lt;link&gt; (if any).</desc>
            <filename>bug-65140-20110819200125.patch</filename>
            <type>text/plain</type>
            <size>35750</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTM0NDYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0ZjkzYWZiMDU3NjY3NjVmNjhiZGQ2
YTA3NGFiNWU4NWUwMjk5NGMzLi4wZGE2NjcwMDU1YzkxNDM2MTFmMzg5ODA5Zjk5OTdjZGMzODhh
MDRmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMTEtMDgtMTkgIEp1bGllbiBDaGFmZnJhaXgg
IDxqY2hhZmZyYWl4QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUkVHUkVTU0lPTiAocjg0MzI3LXI4
NDMyOSk6IENTUyBzdHlsZXNoZWV0cyBmYWlsIHRvIGxvYWQgb24gd3d3LmZsYWdzdGFyLmNvbSBs
b2dpbiBwYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02NTE0MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vOTgzNTkwNT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KKworICAgICAgICAqIGZhc3QvY3NzL2xpbmstZGlzYWJs
ZWQtYXR0ci1leHBlY3RlZC50eHQ6IFRoaXMgY2hhbmdlIGlzIGEgcHJvZ3Jlc3Npb24sIGJ1dCB3
ZSBhcmUgc3RpbGwKKyAgICAgICAgbm90IGhhbmRsaW5nIHVwZGF0ZXMgdG8gdGhlIHNlbGVjdGVk
IHN0eWxlIHNldCBwcm9wZXJseSAoYWxyZWFkeSBjb3ZlcmVkIGJ5IGJ1ZyA2MjQwNykuCisKKyAg
ICAgICAgKiBmYXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1maXJzdC1hbHRlcm5hdGUtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1maXJz
dC1hbHRlcm5hdGUtb24tbG9hZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
Y3NzL3N0eWxlc2hlZXQtZW5hYmxlLWZpcnN0LWFsdGVybmF0ZS1vbi1sb2FkLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxlLWZpcnN0LWFsdGVybmF0ZS5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1zZWNvbmQt
YWx0ZXJuYXRlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3Mvc3R5bGVz
aGVldC1lbmFibGUtc2Vjb25kLWFsdGVybmF0ZS1vbi1sb2FkLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZmFzdC9jc3Mvc3R5bGVzaGVldC1lbmFibGUtc2Vjb25kLWFsdGVybmF0ZS1v
bi1sb2FkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxl
LXNlY29uZC1hbHRlcm5hdGUuaHRtbDogQWRkZWQuCisgICAgICAgIFRob3NlIGFyZSBhIHZhcmlh
dGlvbiBvbiB0aGUgc2FtZSB0aGVtZTogd2UgZGlzYWJsZSBzb21lIHN0eWxlc2hlZXQgYW5kIGVu
YWJsZSBvdGhlcnMsCisgICAgICAgIGVpdGhlciBkaXJlY3RseSBvciBsYXRlci4KKworICAgICAg
ICAqIGh0dHAvdGVzdHMvY3NzL2xpbmstY3NzLWRpc2FibGVkLXZhbHVlLXdpdGgtc2xvdy1sb2Fk
aW5nLXNoZWV0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9jc3Mv
bGluay1jc3MtZGlzYWJsZWQtdmFsdWUtd2l0aC1zbG93LWxvYWRpbmctc2hlZXQtaW4tZXJyb3It
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2Nzcy9saW5rLWNzcy1k
aXNhYmxlZC12YWx1ZS13aXRoLXNsb3ctbG9hZGluZy1zaGVldC1pbi1lcnJvci5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2Nzcy9saW5rLWNzcy1kaXNhYmxlZC12YWx1ZS13aXRo
LXNsb3ctbG9hZGluZy1zaGVldC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2Nz
cy9yZXNvdXJjZXMvbGluay1jc3MtZGlzYWJsZWQtdmFsdWUtd2l0aC1zbG93LWxvYWRpbmctc2hl
ZXQtaW4tZXJyb3IuanM6IEFkZGVkLgorICAgICAgICAob25TaGVldExvYWRlZCk6CisgICAgICAg
ICh0ZXN0V2hlbkxvYWRlZCk6CisgICAgICAgICogaHR0cC90ZXN0cy9jc3MvcmVzb3VyY2VzL2xp
bmstY3NzLWRpc2FibGVkLXZhbHVlLXdpdGgtc2xvdy1sb2FkaW5nLXNoZWV0LmpzOiBBZGRlZC4K
KyAgICAgICAgKG9uU2hlZXRMb2FkZWQpOgorICAgICAgICAodGVzdFdoZW5Mb2FkZWQpOgorICAg
ICAgICAqIGh0dHAvdGVzdHMvY3NzL3Jlc291cmNlcy9zbG93LWxvYWRpbmctc2hlZXQtaW4tZXJy
b3IucGhwOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2Nzcy9yZXNvdXJjZXMvc2xvdy1s
b2FkaW5nLXNoZWV0LnBocDogQWRkZWQuCisgICAgICAgIFRob3NlIDIgdGVzdCBjYXNlcyByZWxp
ZXMgb24gYSBzbG93IGxvYWRpbmcgc3R5bGVzaGVldCBzbyB0aGF0IHdlIGNhbiB0ZXN0IHRoZSBk
aXNhYmxlZCgpIHZhbHVlIHdoaWxlIHRoZSBhbHRlcm5hdGUKKyAgICAgICAgc2hlZXQgaXMgYXN5
bmNocm9ub3VzbHkgbG9hZGluZyBhbmQgdGhlbiBjaGVjayB0aGVtIGFnYWluIG9uY2UgdGhlIHNo
ZWV0IGlzIGxvYWRlZC4KKwogMjAxMS0wOC0xOSAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gVXBkYXRlIGNocm9taXVtIHRlc3QgZXhw
ZWN0YXRpb25zCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9saW5rLWRpc2FibGVk
LWF0dHItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvbGluay1kaXNhYmxlZC1h
dHRyLWV4cGVjdGVkLnR4dAppbmRleCA1NzFhY2IyOGQ3NzI2NjBmYzJhZGI0YzIyZmE4MjBmYzU2
YTZkZmNlLi5mNDEzNzBhMTI1ZjQyOTgwMzBkNWI2NDEwZjU5NWM1Y2ExMzEzY2Q5IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9saW5rLWRpc2FibGVkLWF0dHItZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL2xpbmstZGlzYWJsZWQtYXR0ci1leHBlY3RlZC50
eHQKQEAgLTE1LDExICsxNSwxMSBAQCBQQVNTIGdldENvbXB1dGVkU3R5bGUoY29uc29sZSkud2hp
dGVTcGFjZSBpcyAncHJlLXdyYXAnCiBhbHRzaGVldAogRkFJTCBsaW5rLmRpc2FibGVkIHNob3Vs
ZCBiZSB0cnVlLiBXYXMgZmFsc2UuCiBQQVNTIGxpbmsuc2hlZXQgaXMgbm9uLW51bGwuCi1GQUlM
IGdldENvbXB1dGVkU3R5bGUoY29uc29sZSkuYmFja2dyb3VuZENvbG9yIHNob3VsZCBiZSByZ2Io
MCwgMTI4LCAwKS4gV2FzIHJnYmEoMCwgMCwgMCwgMCkuCitQQVNTIGdldENvbXB1dGVkU3R5bGUo
Y29uc29sZSkuYmFja2dyb3VuZENvbG9yIGlzICdyZ2IoMCwgMTI4LCAwKScKIEZBSUwgbGluay5k
aXNhYmxlZCBzaG91bGQgYmUgdHJ1ZS4gV2FzIGZhbHNlLgotUEFTUyBnZXRDb21wdXRlZFN0eWxl
KGNvbnNvbGUpLmJhY2tncm91bmRDb2xvciBpcyBvcmlnaW5hbEJHCitGQUlMIGdldENvbXB1dGVk
U3R5bGUoY29uc29sZSkuYmFja2dyb3VuZENvbG9yIHNob3VsZCBiZSByZ2JhKDAsIDAsIDAsIDAp
LiBXYXMgcmdiKDAsIDEyOCwgMCkuCiBQQVNTIGxpbmsuZGlzYWJsZWQgaXMgZmFsc2UKLUZBSUwg
Z2V0Q29tcHV0ZWRTdHlsZShjb25zb2xlKS5iYWNrZ3JvdW5kQ29sb3Igc2hvdWxkIGJlIHJnYigw
LCAxMjgsIDApLiBXYXMgcmdiYSgwLCAwLCAwLCAwKS4KK1BBU1MgZ2V0Q29tcHV0ZWRTdHlsZShj
b25zb2xlKS5iYWNrZ3JvdW5kQ29sb3IgaXMgJ3JnYigwLCAxMjgsIDApJwogUEFTUyBnZXRDb21w
dXRlZFN0eWxlKGNvbnNvbGUpLmJhY2tncm91bmRDb2xvciBpcyBvcmlnaW5hbEJHCiBQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
Y3NzL3N0eWxlc2hlZXQtZW5hYmxlLWZpcnN0LWFsdGVybmF0ZS1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9mYXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1maXJzdC1hbHRlcm5hdGUtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmMwNTI4ZmI3NThhOTFkN2YzMDY4MjA3MTExNTBmOThhNWQxNzAy
YzQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZXNoZWV0LWVu
YWJsZS1maXJzdC1hbHRlcm5hdGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorVGVzdCBm
b3IgNjUxNDA6IFJFR1JFU1NJT04gKHI4NDMyNy1yODQzMjkpOiBDU1Mgc3R5bGVzaGVldHMgZmFp
bCB0byBsb2FkIG9uIHd3dy5mbGFnc3Rhci5jb20gbG9naW4gcGFnZQorCitUaGlzIHRlc3QgUEFT
U0VEIGlmIFBBU1NFRCBpcyB3cml0dGVuIGJlbG93IChhbHRlcm5hdGl2ZWx5IHRoZSBuZXh0IGxp
bmUgc2hvdWxkIGhhdmUgYSBHUkVFTiBiYWNrZ3JvdW5kKS4KKworUEFTU0VECmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1maXJzdC1hbHRlcm5hdGUt
b24tbG9hZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZXNoZWV0LWVu
YWJsZS1maXJzdC1hbHRlcm5hdGUtb24tbG9hZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzA1
MjhmYjc1OGE5MWQ3ZjMwNjgyMDcxMTE1MGY5OGE1ZDE3MDJjNAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxlLWZpcnN0LWFsdGVybmF0ZS1v
bi1sb2FkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAKK1Rlc3QgZm9yIDY1MTQwOiBSRUdS
RVNTSU9OIChyODQzMjctcjg0MzI5KTogQ1NTIHN0eWxlc2hlZXRzIGZhaWwgdG8gbG9hZCBvbiB3
d3cuZmxhZ3N0YXIuY29tIGxvZ2luIHBhZ2UKKworVGhpcyB0ZXN0IFBBU1NFRCBpZiBQQVNTRUQg
aXMgd3JpdHRlbiBiZWxvdyAoYWx0ZXJuYXRpdmVseSB0aGUgbmV4dCBsaW5lIHNob3VsZCBoYXZl
IGEgR1JFRU4gYmFja2dyb3VuZCkuCisKK1BBU1NFRApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9jc3Mvc3R5bGVzaGVldC1lbmFibGUtZmlyc3QtYWx0ZXJuYXRlLW9uLWxvYWQuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxlLWZpcnN0LWFsdGVybmF0ZS1v
bi1sb2FkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTI5NWU0MmRjMjRmNDEyOWFhM2FiNzkyN2Y2ZWE5NjQ3
ODFlMGJkZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlc2hl
ZXQtZW5hYmxlLWZpcnN0LWFsdGVybmF0ZS1vbi1sb2FkLmh0bWwKQEAgLTAsMCArMSwzMSBAQAor
PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8
aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL3JlZC5jc3MiIG1l
ZGlhPSJhbGwiIHRpdGxlPSJEZWZhdWx0IFN0eWxlIFNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgLz4K
KzxsaW5rIHJlbD0iYWx0ZXJuYXRlIHN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy9ncmVlbi5j
c3MiIG1lZGlhPSJhbGwiIHRpdGxlPSJncmVlbiIgdHlwZT0idGV4dC9jc3MiIC8+Cis8c2NyaXB0
IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAg
ZnVuY3Rpb24gdGVzdCgpIHsKKyAgICAgICAgdmFyIHJlZCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJsaW5rIilbMF07CisgICAgICAgIHJlZC5kaXNhYmxlZCA9IHRydWU7CisgICAg
ICAgIHZhciBncmVlbiA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJsaW5rIilbMV07
CisgICAgICAgIGdyZWVuLmRpc2FibGVkID0gdHJ1ZTsKKyAgICAgICAgZ3JlZW4uZGlzYWJsZWQg
PSBmYWxzZTsKKworICAgICAgICB2YXIgY29uc29sZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJjb25zb2xlIik7CisgICAgICAgIGlmIChnZXRDb21wdXRlZFN0eWxlKGNvbnNvbGUsIG51bGwp
LmJhY2tncm91bmRDb2xvciA9PT0gInJnYigwLCAxMjgsIDApIikKKyAgICAgICAgICAgIGNvbnNv
bGUuaW5uZXJIVE1MID0gIlBBU1NFRCI7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvbnNv
bGUuaW5uZXJIVE1MID0gIkZBSUxFRCwgYmFja2dyb3VuZCA9ICIgKyBnZXRDb21wdXRlZFN0eWxl
KGNvbnNvbGUsIG51bGwpLmJhY2tncm91bmRDb2xvcjsKKyAgICB9CisgICAgd2luZG93LmFkZEV2
ZW50TGlzdGVuZXIoImxvYWQiLCB0ZXN0LCBmYWxzZSk7Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPHA+VGVzdCBmb3IgPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTY1MTQwIj42NTE0MDwvYT46IFJFR1JFU1NJT04gKHI4NDMyNy1yODQzMjkpOiBD
U1Mgc3R5bGVzaGVldHMgZmFpbCB0byBsb2FkIG9uIHd3dy5mbGFnc3Rhci5jb20gbG9naW4gcGFn
ZTwvcD4KKzxwPlRoaXMgdGVzdCBQQVNTRUQgaWYgUEFTU0VEIGlzIHdyaXR0ZW4gYmVsb3cgKGFs
dGVybmF0aXZlbHkgdGhlIG5leHQgbGluZSBzaG91bGQgaGF2ZSBhIEdSRUVOIGJhY2tncm91bmQp
LjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPkZBSUxFRDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGVzaGVldC1lbmFibGUtZmlyc3Qt
YWx0ZXJuYXRlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1m
aXJzdC1hbHRlcm5hdGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNTU5MDYzZjkxYzMyMGNiOTdiOTQ0MWFh
YzNkNjFmNTUyMmUxNTMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mv
c3R5bGVzaGVldC1lbmFibGUtZmlyc3QtYWx0ZXJuYXRlLmh0bWwKQEAgLTAsMCArMSwzMSBAQAor
PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8
aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL3JlZC5jc3MiIG1l
ZGlhPSJhbGwiIHRpdGxlPSJEZWZhdWx0IFN0eWxlIFNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgLz4K
KzxsaW5rIHJlbD0iYWx0ZXJuYXRlIHN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy9ncmVlbi5j
c3MiIG1lZGlhPSJhbGwiIHRpdGxlPSJncmVlbiIgdHlwZT0idGV4dC9jc3MiIC8+Cis8c2NyaXB0
IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAg
dmFyIHJlZCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJsaW5rIilbMF07CisgICAg
cmVkLmRpc2FibGVkID0gdHJ1ZTsKKyAgICB2YXIgZ3JlZW4gPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgibGluayIpWzFdOworICAgIGdyZWVuLmRpc2FibGVkID0gdHJ1ZTsKKyAgICBn
cmVlbi5kaXNhYmxlZCA9IGZhbHNlOworCisgICAgZnVuY3Rpb24gdGVzdCgpIHsKKyAgICAgICAg
dmFyIGNvbnNvbGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpOworICAgICAg
ICBpZiAoZ2V0Q29tcHV0ZWRTdHlsZShjb25zb2xlLCBudWxsKS5iYWNrZ3JvdW5kQ29sb3IgPT09
ICJyZ2IoMCwgMTI4LCAwKSIpCisgICAgICAgICAgICBjb25zb2xlLmlubmVySFRNTCA9ICJQQVNT
RUQiOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjb25zb2xlLmlubmVySFRNTCA9ICJGQUlM
RUQsIGJhY2tncm91bmQgPSAiICsgZ2V0Q29tcHV0ZWRTdHlsZShjb25zb2xlLCBudWxsKS5iYWNr
Z3JvdW5kQ29sb3I7CisgICAgfQorICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwg
dGVzdCwgZmFsc2UpOworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRlc3QgZm9yIDxh
IGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTE0MCI+NjUx
NDA8L2E+OiBSRUdSRVNTSU9OIChyODQzMjctcjg0MzI5KTogQ1NTIHN0eWxlc2hlZXRzIGZhaWwg
dG8gbG9hZCBvbiB3d3cuZmxhZ3N0YXIuY29tIGxvZ2luIHBhZ2U8L3A+Cis8cD5UaGlzIHRlc3Qg
UEFTU0VEIGlmIFBBU1NFRCBpcyB3cml0dGVuIGJlbG93IChhbHRlcm5hdGl2ZWx5IHRoZSBuZXh0
IGxpbmUgc2hvdWxkIGhhdmUgYSBHUkVFTiBiYWNrZ3JvdW5kKS48L3A+Cis8ZGl2IGlkPSJjb25z
b2xlIj5GQUlMRUQ8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxlLXNlY29uZC1hbHRlcm5hdGUtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGVzaGVldC1lbmFibGUtc2Vjb25kLWFsdGVy
bmF0ZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzA1MjhmYjc1OGE5MWQ3ZjMwNjgyMDcxMTE1
MGY5OGE1ZDE3MDJjNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0
eWxlc2hlZXQtZW5hYmxlLXNlY29uZC1hbHRlcm5hdGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
NSBAQAorVGVzdCBmb3IgNjUxNDA6IFJFR1JFU1NJT04gKHI4NDMyNy1yODQzMjkpOiBDU1Mgc3R5
bGVzaGVldHMgZmFpbCB0byBsb2FkIG9uIHd3dy5mbGFnc3Rhci5jb20gbG9naW4gcGFnZQorCitU
aGlzIHRlc3QgUEFTU0VEIGlmIFBBU1NFRCBpcyB3cml0dGVuIGJlbG93IChhbHRlcm5hdGl2ZWx5
IHRoZSBuZXh0IGxpbmUgc2hvdWxkIGhhdmUgYSBHUkVFTiBiYWNrZ3JvdW5kKS4KKworUEFTU0VE
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1zZWNv
bmQtYWx0ZXJuYXRlLW9uLWxvYWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mv
c3R5bGVzaGVldC1lbmFibGUtc2Vjb25kLWFsdGVybmF0ZS1vbi1sb2FkLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5jMDUyOGZiNzU4YTkxZDdmMzA2ODIwNzExMTUwZjk4YTVkMTcwMmM0Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGVzaGVldC1lbmFibGUtc2Vj
b25kLWFsdGVybmF0ZS1vbi1sb2FkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAKK1Rlc3Qg
Zm9yIDY1MTQwOiBSRUdSRVNTSU9OIChyODQzMjctcjg0MzI5KTogQ1NTIHN0eWxlc2hlZXRzIGZh
aWwgdG8gbG9hZCBvbiB3d3cuZmxhZ3N0YXIuY29tIGxvZ2luIHBhZ2UKKworVGhpcyB0ZXN0IFBB
U1NFRCBpZiBQQVNTRUQgaXMgd3JpdHRlbiBiZWxvdyAoYWx0ZXJuYXRpdmVseSB0aGUgbmV4dCBs
aW5lIHNob3VsZCBoYXZlIGEgR1JFRU4gYmFja2dyb3VuZCkuCisKK1BBU1NFRApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGVzaGVldC1lbmFibGUtc2Vjb25kLWFsdGVybmF0
ZS1vbi1sb2FkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1z
ZWNvbmQtYWx0ZXJuYXRlLW9uLWxvYWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYzgwODZlMGI0YTI3Yzdm
ZmQ4MWEzM2MwZDAyNTMxNTUxNDJjNjZkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9jc3Mvc3R5bGVzaGVldC1lbmFibGUtc2Vjb25kLWFsdGVybmF0ZS1vbi1sb2FkLmh0bWwK
QEAgLTAsMCArMSwzMSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRN
TC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0icmVz
b3VyY2VzL3JlZC5jc3MiIG1lZGlhPSJhbGwiIHRpdGxlPSJEZWZhdWx0IFN0eWxlIFNoZWV0IiB0
eXBlPSJ0ZXh0L2NzcyIgLz4KKzxsaW5rIHJlbD0iYWx0ZXJuYXRlIHN0eWxlc2hlZXQiIGhyZWY9
InJlc291cmNlcy9yZWQuY3NzIiBtZWRpYT0iYWxsIiB0aXRsZT0iZ3JlZW4iIHR5cGU9InRleHQv
Y3NzIiAvPgorPGxpbmsgcmVsPSJhbHRlcm5hdGUgc3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2Vz
L2dyZWVuLmNzcyIgbWVkaWE9ImFsbCIgdGl0bGU9ImdyZWVuIiB0eXBlPSJ0ZXh0L2NzcyIgLz4K
KzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CisKKyAgICBmdW5jdGlvbiB0ZXN0KCkgeworICAgICAgICB2YXIgcmVkID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoImxpbmsiKVswXTsKKyAgICAgICAgcmVkLmRpc2FibGVkID0gdHJ1
ZTsKKyAgICAgICAgdmFyIGdyZWVuID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxp
bmsiKVsyXTsKKyAgICAgICAgZ3JlZW4uZGlzYWJsZWQgPSBmYWxzZTsKKworICAgICAgICB2YXIg
Y29uc29sZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIik7CisgICAgICAgIGlm
IChnZXRDb21wdXRlZFN0eWxlKGNvbnNvbGUsIG51bGwpLmJhY2tncm91bmRDb2xvciA9PT0gInJn
YigwLCAxMjgsIDApIikKKyAgICAgICAgICAgIGNvbnNvbGUuaW5uZXJIVE1MID0gIlBBU1NFRCI7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvbnNvbGUuaW5uZXJIVE1MID0gIkZBSUxFRCwg
YmFja2dyb3VuZCA9ICIgKyBnZXRDb21wdXRlZFN0eWxlKGNvbnNvbGUsIG51bGwpLmJhY2tncm91
bmRDb2xvcjsKKyAgICB9CisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCB0ZXN0
LCBmYWxzZSk7Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGVzdCBmb3IgPGEgaHJl
Zj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1MTQwIj42NTE0MDwv
YT46IFJFR1JFU1NJT04gKHI4NDMyNy1yODQzMjkpOiBDU1Mgc3R5bGVzaGVldHMgZmFpbCB0byBs
b2FkIG9uIHd3dy5mbGFnc3Rhci5jb20gbG9naW4gcGFnZTwvcD4KKzxwPlRoaXMgdGVzdCBQQVNT
RUQgaWYgUEFTU0VEIGlzIHdyaXR0ZW4gYmVsb3cgKGFsdGVybmF0aXZlbHkgdGhlIG5leHQgbGlu
ZSBzaG91bGQgaGF2ZSBhIEdSRUVOIGJhY2tncm91bmQpLjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUi
PkZBSUxFRDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9jc3Mvc3R5bGVzaGVldC1lbmFibGUtc2Vjb25kLWFsdGVybmF0ZS5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9jc3Mvc3R5bGVzaGVldC1lbmFibGUtc2Vjb25kLWFsdGVybmF0ZS5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjAwZTVjMmMyMWRkNmY1YjU1MDA1MTMyMjQwOWUzMzU3Nzc0ZjhhNmQKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1zZWNv
bmQtYWx0ZXJuYXRlLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElD
ICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL3JlZC5jc3MiIG1lZGlhPSJhbGwiIHRpdGxlPSJEZWZh
dWx0IFN0eWxlIFNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgLz4KKzxsaW5rIHJlbD0iYWx0ZXJuYXRl
IHN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy9yZWQuY3NzIiBtZWRpYT0iYWxsIiB0aXRsZT0i
Z3JlZW4iIHR5cGU9InRleHQvY3NzIiAvPgorPGxpbmsgcmVsPSJhbHRlcm5hdGUgc3R5bGVzaGVl
dCIgaHJlZj0icmVzb3VyY2VzL2dyZWVuLmNzcyIgbWVkaWE9ImFsbCIgdGl0bGU9ImdyZWVuIiB0
eXBlPSJ0ZXh0L2NzcyIgLz4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICB2YXIgcmVkID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoImxpbmsiKVswXTsKKyAgICByZWQuZGlzYWJsZWQgPSB0cnVlOworICAgIHZhciBn
cmVlbiA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJsaW5rIilbMl07CisgICAgZ3Jl
ZW4uZGlzYWJsZWQgPSBmYWxzZTsKKworICAgIGZ1bmN0aW9uIHRlc3QoKSB7CisgICAgICAgIHZh
ciBjb25zb2xlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKTsKKyAgICAgICAg
aWYgKGdldENvbXB1dGVkU3R5bGUoY29uc29sZSwgbnVsbCkuYmFja2dyb3VuZENvbG9yID09PSAi
cmdiKDAsIDEyOCwgMCkiKQorICAgICAgICAgICAgY29uc29sZS5pbm5lckhUTUwgPSAiUEFTU0VE
IjsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY29uc29sZS5pbm5lckhUTUwgPSAiRkFJTEVE
LCBiYWNrZ3JvdW5kID0gIiArIGdldENvbXB1dGVkU3R5bGUoY29uc29sZSwgbnVsbCkuYmFja2dy
b3VuZENvbG9yOworICAgIH0KKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIHRl
c3QsIGZhbHNlKTsKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cD5UZXN0IGZvciA8YSBo
cmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjUxNDAiPjY1MTQw
PC9hPjogUkVHUkVTU0lPTiAocjg0MzI3LXI4NDMyOSk6IENTUyBzdHlsZXNoZWV0cyBmYWlsIHRv
IGxvYWQgb24gd3d3LmZsYWdzdGFyLmNvbSBsb2dpbiBwYWdlPC9wPgorPHA+VGhpcyB0ZXN0IFBB
U1NFRCBpZiBQQVNTRUQgaXMgd3JpdHRlbiBiZWxvdyAoYWx0ZXJuYXRpdmVseSB0aGUgbmV4dCBs
aW5lIHNob3VsZCBoYXZlIGEgR1JFRU4gYmFja2dyb3VuZCkuPC9wPgorPGRpdiBpZD0iY29uc29s
ZSI+RkFJTEVEPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2Nzcy9saW5rLWNzcy1kaXNhYmxlZC12YWx1ZS13aXRoLXNsb3ctbG9hZGlu
Zy1zaGVldC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nzcy9saW5rLWNz
cy1kaXNhYmxlZC12YWx1ZS13aXRoLXNsb3ctbG9hZGluZy1zaGVldC1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNjE0MDBhYWEwZWMwYTRlMjBjZmQ3NmIwYTM1MjBiOTE3NGUzNjU0OAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY3NzL2xpbmstY3NzLWRpc2FibGVk
LXZhbHVlLXdpdGgtc2xvdy1sb2FkaW5nLXNoZWV0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE5
IEBACitUZXN0IHRoYXQgSFRNTExpbmtFbGVtZW50J3MgZGlzYWJsZWQgYXR0cmlidXRlIGlzIHBy
b3Blcmx5IGNhY2hlZCB3aGlsZSBzZXQgd2hlbiBsb2FkaW5nIGEgc3R5bGVzaGVldC4KKworT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1Rlc3RpbmcgdmFsdWUgb2YgJ2Rpc2FibGVkJyBw
cmlvciB0byBsb2FkIGp1c3QgYWZ0ZXIgc2V0dGluZyB0aGVtCitQQVNTIG1haW5TaGVldExpbmsu
c2hlZXQgaXMgbm9uLW51bGwuCitQQVNTIGFsdGVybmF0ZVNoZWV0TGluay5zaGVldCBpcyBudWxs
CitQQVNTIG1haW5TaGVldExpbmsuZGlzYWJsZWQgaXMgdHJ1ZQorUEFTUyBhbHRlcm5hdGVTaGVl
dExpbmsuZGlzYWJsZWQgaXMgZmFsc2UKK1Rlc3RpbmcgdGhlIHZhbHVlcyB3aGVuIHRoZSBhbHRl
cm5hdGUgc2hlZXQgaXMgbG9hZGVkIChhcyB0aGlzIGlzIHRoZSBvbmx5IG9uZSB0aGF0IGhhcyBz
aGVldCgpID09PSBudWxsKQorUEFTUyBtYWluU2hlZXRMaW5rLnNoZWV0IGlzIG5vbi1udWxsLgor
UEFTUyBhbHRlcm5hdGVTaGVldExpbmsuc2hlZXQgaXMgbm9uLW51bGwuCitQQVNTIG1haW5TaGVl
dExpbmsuZGlzYWJsZWQgaXMgdHJ1ZQorUEFTUyBhbHRlcm5hdGVTaGVldExpbmsuZGlzYWJsZWQg
aXMgZmFsc2UKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nzcy9saW5rLWNzcy1kaXNh
YmxlZC12YWx1ZS13aXRoLXNsb3ctbG9hZGluZy1zaGVldC1pbi1lcnJvci1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nzcy9saW5rLWNzcy1kaXNhYmxlZC12YWx1ZS13aXRo
LXNsb3ctbG9hZGluZy1zaGVldC1pbi1lcnJvci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjE0
MDBhYWEwZWMwYTRlMjBjZmQ3NmIwYTM1MjBiOTE3NGUzNjU0OAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY3NzL2xpbmstY3NzLWRpc2FibGVkLXZhbHVlLXdpdGgt
c2xvdy1sb2FkaW5nLXNoZWV0LWluLWVycm9yLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE5IEBA
CitUZXN0IHRoYXQgSFRNTExpbmtFbGVtZW50J3MgZGlzYWJsZWQgYXR0cmlidXRlIGlzIHByb3Bl
cmx5IGNhY2hlZCB3aGlsZSBzZXQgd2hlbiBsb2FkaW5nIGEgc3R5bGVzaGVldC4KKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1Rlc3RpbmcgdmFsdWUgb2YgJ2Rpc2FibGVkJyBwcmlv
ciB0byBsb2FkIGp1c3QgYWZ0ZXIgc2V0dGluZyB0aGVtCitQQVNTIG1haW5TaGVldExpbmsuc2hl
ZXQgaXMgbm9uLW51bGwuCitQQVNTIGFsdGVybmF0ZVNoZWV0TGluay5zaGVldCBpcyBudWxsCitQ
QVNTIG1haW5TaGVldExpbmsuZGlzYWJsZWQgaXMgdHJ1ZQorUEFTUyBhbHRlcm5hdGVTaGVldExp
bmsuZGlzYWJsZWQgaXMgZmFsc2UKK1Rlc3RpbmcgdGhlIHZhbHVlcyB3aGVuIHRoZSBhbHRlcm5h
dGUgc2hlZXQgaXMgbG9hZGVkIChhcyB0aGlzIGlzIHRoZSBvbmx5IG9uZSB0aGF0IGhhcyBzaGVl
dCgpID09PSBudWxsKQorUEFTUyBtYWluU2hlZXRMaW5rLnNoZWV0IGlzIG5vbi1udWxsLgorUEFT
UyBhbHRlcm5hdGVTaGVldExpbmsuc2hlZXQgaXMgbm9uLW51bGwuCitQQVNTIG1haW5TaGVldExp
bmsuZGlzYWJsZWQgaXMgdHJ1ZQorUEFTUyBhbHRlcm5hdGVTaGVldExpbmsuZGlzYWJsZWQgaXMg
ZmFsc2UKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nzcy9saW5rLWNzcy1kaXNhYmxl
ZC12YWx1ZS13aXRoLXNsb3ctbG9hZGluZy1zaGVldC1pbi1lcnJvci5odG1sIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9jc3MvbGluay1jc3MtZGlzYWJsZWQtdmFsdWUtd2l0aC1zbG93LWxvYWRp
bmctc2hlZXQtaW4tZXJyb3IuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMTZjODNkM2NjYmI5MmNjMTI0OTU3
N2IyMzVlYjBjYTU2Njg4YzkwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9jc3MvbGluay1jc3MtZGlzYWJsZWQtdmFsdWUtd2l0aC1zbG93LWxvYWRpbmctc2hlZXQt
aW4tZXJyb3IuaHRtbApAQCAtMCwwICsxLDE0IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0v
L0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSJyZXNvdXJjZXMvc2xvdy1sb2FkaW5nLXNoZWV0LnBocD9jb2xvcj1ncmVlbiIg
bWVkaWE9ImFsbCIgdGl0bGU9IkRlZmF1bHQgU3R5bGUgU2hlZXQiIHR5cGU9InRleHQvY3NzIiAv
PgorPGxpbmsgcmVsPSJhbHRlcm5hdGUgc3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL3Nsb3ct
bG9hZGluZy1zaGVldC5waHAtaW4tZXJyb3IiIG1lZGlhPSJhbGwiIHRpdGxlPSJncmVlbiIgdHlw
ZT0idGV4dC9jc3MiIC8+Cis8c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48
L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvbGlu
ay1jc3MtZGlzYWJsZWQtdmFsdWUtd2l0aC1zbG93LWxvYWRpbmctc2hlZXQtaW4tZXJyb3IuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9jc3MvbGluay1jc3MtZGlzYWJsZWQtdmFsdWUtd2l0aC1zbG93LWxvYWRpbmct
c2hlZXQuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY3NzL2xpbmstY3NzLWRpc2FibGVk
LXZhbHVlLXdpdGgtc2xvdy1sb2FkaW5nLXNoZWV0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA3NTUK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDdmZjJjY2Nh
MWI0ZmUyMWVmMWQxMjUxOTVhNjYyZmNmYjI4NjYwYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvY3NzL2xpbmstY3NzLWRpc2FibGVkLXZhbHVlLXdpdGgtc2xvdy1s
b2FkaW5nLXNoZWV0Lmh0bWwKQEAgLTAsMCArMSwxNCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElD
ICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL3Nsb3ctbG9hZGluZy1zaGVldC5waHA/Y29sb3I9cmVk
IiBtZWRpYT0iYWxsIiB0aXRsZT0iRGVmYXVsdCBTdHlsZSBTaGVldCIgdHlwZT0idGV4dC9jc3Mi
IC8+Cis8bGluayByZWw9ImFsdGVybmF0ZSBzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvc2xv
dy1sb2FkaW5nLXNoZWV0LnBocD9jb2xvcj1ncmVlbiIgbWVkaWE9ImFsbCIgdGl0bGU9ImdyZWVu
IiB0eXBlPSJ0ZXh0L2NzcyIgLz4KKzxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRp
b24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InJlc291cmNl
cy9saW5rLWNzcy1kaXNhYmxlZC12YWx1ZS13aXRoLXNsb3ctbG9hZGluZy1zaGVldC5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2Nzcy9yZXNvdXJjZXMvbGluay1jc3MtZGlzYWJsZWQtdmFsdWUtd2l0aC1zbG93LWxv
YWRpbmctc2hlZXQtaW4tZXJyb3IuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nzcy9yZXNv
dXJjZXMvbGluay1jc3MtZGlzYWJsZWQtdmFsdWUtd2l0aC1zbG93LWxvYWRpbmctc2hlZXQtaW4t
ZXJyb3IuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMDU4OWYyNzM2YTY0NDg5NTU1NGU5ZDA2ZDgwZmU1YjlhODk5
N2ZmMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY3NzL3Jlc291
cmNlcy9saW5rLWNzcy1kaXNhYmxlZC12YWx1ZS13aXRoLXNsb3ctbG9hZGluZy1zaGVldC1pbi1l
cnJvci5qcwpAQCAtMCwwICsxLDQ1IEBACitkZXNjcmlwdGlvbigiVGVzdCB0aGF0IEhUTUxMaW5r
RWxlbWVudCdzIGRpc2FibGVkIGF0dHJpYnV0ZSBpcyBwcm9wZXJseSBjYWNoZWQgd2hpbGUgc2V0
IHdoZW4gbG9hZGluZyBhIHN0eWxlc2hlZXQuIik7CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworCit3
aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKK21haW5TaGVldExpbmsgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgibGluayIpWzBdOworYWx0ZXJuYXRlU2hlZXRMaW5rID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxpbmsiKVsxXTsKKworbWFpblNoZWV0TGluay5k
aXNhYmxlZCA9IHRydWU7CithbHRlcm5hdGVTaGVldExpbmsuZGlzYWJsZWQgPSBmYWxzZTsKKwor
ZGVidWcoIlRlc3RpbmcgdmFsdWUgb2YgJ2Rpc2FibGVkJyBwcmlvciB0byBsb2FkIGp1c3QgYWZ0
ZXIgc2V0dGluZyB0aGVtIik7CitzaG91bGRCZU5vbk51bGwoIm1haW5TaGVldExpbmsuc2hlZXQi
KTsKK3Nob3VsZEJlTnVsbCgiYWx0ZXJuYXRlU2hlZXRMaW5rLnNoZWV0Iik7CitzaG91bGRCZVRy
dWUoIm1haW5TaGVldExpbmsuZGlzYWJsZWQiLCB0cnVlKTsKK3Nob3VsZEJlRmFsc2UoImFsdGVy
bmF0ZVNoZWV0TGluay5kaXNhYmxlZCIpOworCitkZWJ1ZygiVGVzdGluZyB0aGUgdmFsdWVzIHdo
ZW4gdGhlIGFsdGVybmF0ZSBzaGVldCBpcyBsb2FkZWQgKGFzIHRoaXMgaXMgdGhlIG9ubHkgb25l
IHRoYXQgaGFzIHNoZWV0KCkgPT09IG51bGwpIik7CisKK2Z1bmN0aW9uIG9uU2hlZXRMb2FkZWQo
ZiwgZWxlbSwgbWF4dGltZSkgeworICAgIGlmIChlbGVtLnNoZWV0IHx8IG1heHRpbWUgPD0gMCkK
KyAgICAgICAgZigpOworICAgIGVsc2UKKyAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7
IG9uU2hlZXRMb2FkZWQoZiwgZWxlbSwgbWF4dGltZSAtIDI1KTt9LCAyNSk7Cit9CisKK2Z1bmN0
aW9uIHRlc3RXaGVuTG9hZGVkKCkgeworICAgICAgICAvLyBUaG9zZSBuZXh0IDIgbGluZXMgYXJl
IGEgc2FuaXR5IGNoZWNrLgorICAgICAgICAvLyBJZiB0aGUgc2Vjb25kIGNoZWNrIGZhaWxzLCBp
dCBpcyBsaWtlbHkgdGhhdCB0aGUgdGVzdCB0aW1lZCBvdXQgYW5kIHRodXMKKyAgICAgICAgLy8g
eW91IGNhbiBkaXNjYXJkIHRoZSByZXN0IG9mIHJlc3VsdHMgYXMgaXQgaXMgbm90IHRlc3Rpbmcg
d2hhdCB3ZSB3YW50CisgICAgICAgIC8vIChuYW1lbHkgdGhhdCB0aGUgZGlzYWJsZWQgdmFsdWUg
aXMgcGFzc2VkIHRvIHRoZSBmaW5hbCBzaGVldCkuCisgICAgICAgIHNob3VsZEJlTm9uTnVsbCgi
bWFpblNoZWV0TGluay5zaGVldCIpOworICAgICAgICBzaG91bGRCZU5vbk51bGwoImFsdGVybmF0
ZVNoZWV0TGluay5zaGVldCIpOworCisgICAgICAgIHNob3VsZEJlVHJ1ZSgibWFpblNoZWV0TGlu
ay5kaXNhYmxlZCIpOworICAgICAgICBzaG91bGRCZUZhbHNlKCJhbHRlcm5hdGVTaGVldExpbmsu
ZGlzYWJsZWQiKTsKKworICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKworb25TaGVldExvYWRl
ZCh0ZXN0V2hlbkxvYWRlZCwgYWx0ZXJuYXRlU2hlZXRMaW5rLCA1MDApOworCit2YXIgc3VjY2Vz
c2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
Y3NzL3Jlc291cmNlcy9saW5rLWNzcy1kaXNhYmxlZC12YWx1ZS13aXRoLXNsb3ctbG9hZGluZy1z
aGVldC5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY3NzL3Jlc291cmNlcy9saW5rLWNzcy1k
aXNhYmxlZC12YWx1ZS13aXRoLXNsb3ctbG9hZGluZy1zaGVldC5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNTg5
ZjI3MzZhNjQ0ODk1NTU0ZTlkMDZkODBmZTViOWE4OTk3ZmYzCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jc3MvcmVzb3VyY2VzL2xpbmstY3NzLWRpc2FibGVkLXZh
bHVlLXdpdGgtc2xvdy1sb2FkaW5nLXNoZWV0LmpzCkBAIC0wLDAgKzEsNDUgQEAKK2Rlc2NyaXB0
aW9uKCJUZXN0IHRoYXQgSFRNTExpbmtFbGVtZW50J3MgZGlzYWJsZWQgYXR0cmlidXRlIGlzIHBy
b3Blcmx5IGNhY2hlZCB3aGlsZSBzZXQgd2hlbiBsb2FkaW5nIGEgc3R5bGVzaGVldC4iKTsKKwor
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci53YWl0VW50aWxEb25lKCk7CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworbWFp
blNoZWV0TGluayA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJsaW5rIilbMF07Cith
bHRlcm5hdGVTaGVldExpbmsgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGluayIp
WzFdOworCittYWluU2hlZXRMaW5rLmRpc2FibGVkID0gdHJ1ZTsKK2FsdGVybmF0ZVNoZWV0TGlu
ay5kaXNhYmxlZCA9IGZhbHNlOworCitkZWJ1ZygiVGVzdGluZyB2YWx1ZSBvZiAnZGlzYWJsZWQn
IHByaW9yIHRvIGxvYWQganVzdCBhZnRlciBzZXR0aW5nIHRoZW0iKTsKK3Nob3VsZEJlTm9uTnVs
bCgibWFpblNoZWV0TGluay5zaGVldCIpOworc2hvdWxkQmVOdWxsKCJhbHRlcm5hdGVTaGVldExp
bmsuc2hlZXQiKTsKK3Nob3VsZEJlVHJ1ZSgibWFpblNoZWV0TGluay5kaXNhYmxlZCIsIHRydWUp
Oworc2hvdWxkQmVGYWxzZSgiYWx0ZXJuYXRlU2hlZXRMaW5rLmRpc2FibGVkIik7CisKK2RlYnVn
KCJUZXN0aW5nIHRoZSB2YWx1ZXMgd2hlbiB0aGUgYWx0ZXJuYXRlIHNoZWV0IGlzIGxvYWRlZCAo
YXMgdGhpcyBpcyB0aGUgb25seSBvbmUgdGhhdCBoYXMgc2hlZXQoKSA9PT0gbnVsbCkiKTsKKwor
ZnVuY3Rpb24gb25TaGVldExvYWRlZChmLCBlbGVtLCBtYXh0aW1lKSB7CisgICAgaWYgKGVsZW0u
c2hlZXQgfHwgbWF4dGltZSA8PSAwKQorICAgICAgICBmKCk7CisgICAgZWxzZQorICAgICAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgb25TaGVldExvYWRlZChmLCBlbGVtLCBtYXh0aW1lIC0g
MjUpO30sIDI1KTsKK30KKworZnVuY3Rpb24gdGVzdFdoZW5Mb2FkZWQoKSB7CisgICAgICAgIC8v
IFRob3NlIG5leHQgMiBsaW5lcyBhcmUgYSBzYW5pdHkgY2hlY2suCisgICAgICAgIC8vIElmIHRo
ZSBzZWNvbmQgY2hlY2sgZmFpbHMsIGl0IGlzIGxpa2VseSB0aGF0IHRoZSB0ZXN0IHRpbWVkIG91
dCBhbmQgdGh1cworICAgICAgICAvLyB5b3UgY2FuIGRpc2NhcmQgdGhlIHJlc3Qgb2YgcmVzdWx0
cyBhcyBpdCBpcyBub3QgdGVzdGluZyB3aGF0IHdlIHdhbnQKKyAgICAgICAgLy8gKG5hbWVseSB0
aGF0IHRoZSBkaXNhYmxlZCB2YWx1ZSBpcyBwYXNzZWQgdG8gdGhlIGZpbmFsIHNoZWV0KS4KKyAg
ICAgICAgc2hvdWxkQmVOb25OdWxsKCJtYWluU2hlZXRMaW5rLnNoZWV0Iik7CisgICAgICAgIHNo
b3VsZEJlTm9uTnVsbCgiYWx0ZXJuYXRlU2hlZXRMaW5rLnNoZWV0Iik7CisKKyAgICAgICAgc2hv
dWxkQmVUcnVlKCJtYWluU2hlZXRMaW5rLmRpc2FibGVkIik7CisgICAgICAgIHNob3VsZEJlRmFs
c2UoImFsdGVybmF0ZVNoZWV0TGluay5kaXNhYmxlZCIpOworCisgICAgICAgIGZpbmlzaEpTVGVz
dCgpOworfQorCitvblNoZWV0TG9hZGVkKHRlc3RXaGVuTG9hZGVkLCBhbHRlcm5hdGVTaGVldExp
bmssIDUwMCk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jc3MvcmVzb3VyY2VzL3Nsb3ctbG9hZGluZy1zaGVldC1p
bi1lcnJvci5waHAgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nzcy9yZXNvdXJjZXMvc2xvdy1s
b2FkaW5nLXNoZWV0LWluLWVycm9yLnBocApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kY2QxN2Y3ZjcyMTk2MTQ2ODc5
NDFjZGY4OTVjMTA3ZGVhZjdmNWQ0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9jc3MvcmVzb3VyY2VzL3Nsb3ctbG9hZGluZy1zaGVldC1pbi1lcnJvci5waHAKQEAg
LTAsMCArMSwxMyBAQAorPD9waHAKKy8vIFdlIHNsZWVwIGhlcmUgc28gdGhhdCB3ZSBhcmUgaGF2
ZSBlbm91Z2ggdGltZSB0byB0ZXN0IHRoZSBkaWZmZXJlbnQgYXR0cmlidXRlcyBiZWZvcmUgdGhl
IHN0eWxlc2hlZXQgaXMgZnVsbHkgbG9hZGVkLgordXNsZWVwKDEwMCk7CisKK2hlYWRlcigiSFRU
UC8xLjAgNTAwIEludGVybmFsIEVycm9yIik7CitoZWFkZXIoIkV4cGlyZXM6IFRodSwgMDEgRGVj
IDIwMDMgMTY6MDA6MDAgR01UIik7CitoZWFkZXIoIkNhY2hlLUNvbnRyb2w6IG5vLWNhY2hlLCBu
by1zdG9yZSwgbXVzdC1yZXZhbGlkYXRlIik7CitoZWFkZXIoIlByYWdtYTogbm8tY2FjaGUiKTsK
K2hlYWRlcigiQ29udGVudC1UeXBlOiB0ZXh0L2NzcyIpOworCitvYl9mbHVzaCgpOworZmx1c2go
KTsKKz8+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nzcy9yZXNvdXJjZXMv
c2xvdy1sb2FkaW5nLXNoZWV0LnBocCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY3NzL3Jlc291
cmNlcy9zbG93LWxvYWRpbmctc2hlZXQucGhwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI4OTM3ZDQyYWY4MDMwNWJl
OGMzOGNjNmY2ZTlmMDJmMDBiZjZkZTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2Nzcy9yZXNvdXJjZXMvc2xvdy1sb2FkaW5nLXNoZWV0LnBocApAQCAtMCwwICsx
LDE1IEBACis8P3BocAorLy8gV2Ugc2xlZXAgaGVyZSBzbyB0aGF0IHdlIGFyZSBoYXZlIGVub3Vn
aCB0aW1lIHRvIHRlc3QgdGhlIGRpZmZlcmVudCBhdHRyaWJ1dGVzIGJlZm9yZSB0aGUgc3R5bGVz
aGVldCBpcyBmdWxseSBsb2FkZWQuCit1c2xlZXAoMTAwKTsKKworaGVhZGVyKCJFeHBpcmVzOiBU
aHUsIDAxIERlYyAyMDAzIDE2OjAwOjAwIEdNVCIpOworaGVhZGVyKCJDYWNoZS1Db250cm9sOiBu
by1jYWNoZSwgbm8tc3RvcmUsIG11c3QtcmV2YWxpZGF0ZSIpOworaGVhZGVyKCJQcmFnbWE6IG5v
LWNhY2hlIik7CitoZWFkZXIoIkNvbnRlbnQtVHlwZTogdGV4dC9jc3MiKTsKKworJGNvbG9yID0g
JF9HRVRbJ2NvbG9yJ107CisKK2VjaG8gImgxIHsgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yIH1c
biI7CitvYl9mbHVzaCgpOworZmx1c2goKTsKKz8+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2MxYThkOTUxMWJk
OTVlYWM5NDAwMDQzMzUwZmQxMzc2YTg1MjBlOS4uNzMyYzNiN2YxMzhiZDZhMjc0OWE4YmVmZjc1
MWQ5NTQ5NWUwNGM4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDExLTA4LTE5ICBK
dWxpZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgorCisgICAgICAgIFJFR1JF
U1NJT04gKHI4NDMyNy1yODQzMjkpOiBDU1Mgc3R5bGVzaGVldHMgZmFpbCB0byBsb2FkIG9uIHd3
dy5mbGFnc3Rhci5jb20gbG9naW4gcGFnZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NjUxNDAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzk4MzU5MDU+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW50dGkgS29pdmlzdG8uCisKKyAgICAgICAgVGVzdHM6
IGZhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxlLWZpcnN0LWFsdGVybmF0ZS1vbi1sb2FkLmh0bWwK
KyAgICAgICAgICAgICAgIGZhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxlLWZpcnN0LWFsdGVybmF0
ZS5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1zZWNvbmQt
YWx0ZXJuYXRlLW9uLWxvYWQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9jc3Mvc3R5bGVzaGVl
dC1lbmFibGUtc2Vjb25kLWFsdGVybmF0ZS5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3Rz
L2Nzcy9saW5rLWNzcy1kaXNhYmxlZC12YWx1ZS13aXRoLXNsb3ctbG9hZGluZy1zaGVldC1pbi1l
cnJvci5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL2Nzcy9saW5rLWNzcy1kaXNhYmxl
ZC12YWx1ZS13aXRoLXNsb3ctbG9hZGluZy1zaGVldC5odG1sCisKKyAgICAgICAgVGhlIGdpc3Qg
b2YgdGhlIGlzc3VlIGlzIHRoYXQgd2Ugd2VyZSBpZ25vcmluZyBjYWxscyB0byBIVE1MTGlua0Vs
ZW1lbnQ6OnNldERpc2FibGVkIHRoYXQgd291bGQgZW5hYmxlIGEKKyAgICAgICAgc3R5bGUgc2hl
ZXQgd2hlbiB3ZSB3ZXJlIGxvYWRpbmcgYSBzdHlsZXNoZWV0IChtX3NoZWV0IHdhcyAwIGFuZCB0
aHVzIGlnbm9yZWQgdGhlIGNhbGwgcGVyIHRoZSBzcGVjKS4KKworICAgICAgICBGRiBnb2VzIGFn
YWluc3QgdGhlIENTUyBPTSBzcGVjIGluIHRoaXMgY2FzZSBhbmQgYWx3YXlzIGtlZXAgYW4gYXNz
b2NpYXRlZCBzaGVldCBhcyBsb25nIGFzICdyZWwnIGhpbnRzCisgICAgICAgIGF0IGEgc3R5bGVz
aGVldCBsaW5rIGFuZCBocmVmIGlzIHByZXNlbnQuIEluc3RlYWQgb2Ygc2lkaW5nIHdpdGggRkYs
IEkgY29udGludWVkIHRvIGZvbGxvdyB0aGUKKyAgICAgICAgc3BlY2lmaWNhdGlvbiBhbmQgc3Rv
cmUgdGhlIGVuYWJsZWQgdmlhIGphdmFzY3JpcHQgc3RhdGUgaW50byBtX3NjcmlwdFN0YXRlIChy
ZW5hbWVkIGZyb20KKyAgICAgICAgbV9pc0VuYWJsZWRWaWFTY3JpcHQpLiBUaGlzIGluZm9ybWF0
aW9uIGdldHMgbWVyZ2VkIGJhY2sgaW50byB0aGUgc3R5bGUgc2hlZXQgZGlzYWJsZWQgc3RhdGUg
d2hlbiBpdCBpcworICAgICAgICBhdmFpbGFibGUuCisKKyAgICAgICAgV2hpbGUgZGVidWdnaW5n
IHRoZSBjYXNlIGF0IGhhbmQsIEkgZm91bmQgc29tZSBjYXNlcyB0aGF0IHdlcmUgbm90IHByb3Bl
cmx5IGhhbmRsZWQgYW5kIHdlcmUgZml4ZWQgYXMKKyAgICAgICAgcGFydCBvZiB0aGlzIGNoYW5n
ZS4KKworICAgICAgICAqIGNzcy9TdHlsZVNoZWV0LmlkbDoKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU1N0eWxlU2hlZXRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNTdHlsZVNoZWV0
OjpzZXREaXNhYmxlZCk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4U3R5bGVTaGVl
dEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFN0eWxlU2hlZXQ6OmRpc2FibGVkQWNj
ZXNzb3JTZXR0ZXIpOgorICAgICAgICBNYWRlIHxkaXNhYmxlZHwgc2V0dGVyIGN1c3RvbSBiaW5k
aW5nIHNvIHRoYXQgd2UgY2FuIGZvcndhcmQgYW55IHJlcXVlc3QgdGhyb3VnaCBvdXIgYXNzb2Np
YXRlZAorICAgICAgICA8bGluaz4gZWxlbWVudCAoaWYgd2UgaGF2ZSBvbmUpLiBUaGlzIGlzIHRo
ZSBtb3N0IHNhbmUgb3B0aW9uIGFzIHRoaXMgbWFrZXMgc3VyZSB0aGF0IG1fc2NyaXB0U3RhdGUK
KyAgICAgICAgYW5kIG1fc2hlZXQtPmRpc2FibGVkKCkgYXJlIGFsd2F5cyBpbiBzeW5jIHdoaWxl
IGVuc3VyaW5nIHRoYXQgbV9zY3JpcHRTdGF0ZSBpcyBuZXZlciBlbmFibGVkIHdoZW4gSlMKKyAg
ICAgICAgd2FzIG5vdCB0aGUgY2FsbGVyLgorCisgICAgICAgICogaHRtbC9IVE1MTGlua0VsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50OjpIVE1MTGlua0VsZW1l
bnQpOiBVcGRhdGVkIGFmdGVyIG1faXNFbmFibGVkVmlhU2NyaXB0IHJlbmFtZS4KKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudDo6c2V0RGlzYWJsZWQpOiBBbHdheXMgY2FsbCBzZXRJ
c0VuYWJsZWRWaWFTY3JpcHQgc28gdGhhdAorICAgICAgICB0aGUgaW5mb3JtYXRpb24gaXMgcHJv
cGVybHkgc3RvcmVkIChlaXRoZXIgZm9yIHJlY2FsY1N0eWxlU2VsZWN0b3Igb3IganVzdCB0byBz
dG9yZQorICAgICAgICB0aGUgc3RhdGUgZHVyaW5nIGxvYWRpbmcpLgorCisgICAgICAgIChXZWJD
b3JlOjpIVE1MTGlua0VsZW1lbnQ6OnNoZWV0TG9hZGVkKTogTWVyZ2UgYmFjayB0aGUgc3RhdGUg
ZnJvbSBtX3NjcmlwdFN0YXRlIHRvCisgICAgICAgIHRoZSBzaGVldCdzIGRpc2FibGVkIHN0YXRl
LgorCisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OmRpc2FibGVkKTogQWNjb3Vu
dCBmb3IgdGhlIHRlbXBvcmFyeSBzdGF0ZSBhbmQgcmV0dXJuIHRoZQorICAgICAgICByaWdodCB2
YWx1ZS4gSXQgbWF0Y2hlcyBGRiBhbmQgd2hhdCBwZW9wbGUgd291bGQgZXhwZWN0LgorCisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OmFyZURpc2FibGVkQW5kU2NyaXB0U3RhdGVz
Q29uc2lzdGVudCk6IERlYnVnIG9ubHkgbWV0aG9kCisgICAgICAgIHRoYXQgY2hlY2tzIHRoYXQg
ZGlzYWJsZWQoKSBhbmQgaXNFbmFibGVkVmlhU2NyaXB0KCkgYXJlIGNvbnNpc3RlbnQgd2l0aCBl
YWNoIG90aGVyCisgICAgICAgICh1bmRlciBzb21lIGNpcmN1bXN0YW5jZXMpLgorCisgICAgICAg
ICogaHRtbC9IVE1MTGlua0VsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxl
bWVudDo6aXNFbmFibGVkVmlhU2NyaXB0KTogVXBkYXRlZCBhZnRlciBtX2lzRW5hYmxlZFZpYVNj
cmlwdCByZW5hbWUuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OnNldElzRW5h
YmxlZFZpYVNjcmlwdCk6IEFkZGVkIHNldHRlci4KKwogMjAxMS0wOC0xOSAgQmV0aCBEYWtpbiAg
PGJkYWtpbkBhcHBsZS5jb20+CiAKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTY2NTkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1N0eWxlU2hlZXRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNT
dHlsZVNoZWV0Q3VzdG9tLmNwcAppbmRleCAyMWUwMGIxNjhjMjI1NDExODExNGQyYTQ5MWUxZTRl
MjA1MTFjNmU2Li41MWRjMzUwNjYwZmEwN2RhNjE1MmZlODA5OWQ4YjQwYzU1NjVmMmRhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0eWxlU2hlZXRDdXN0b20uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3R5bGVTaGVldEN1c3RvbS5jcHAK
QEAgLTI3LDkgKzI3LDExIEBACiAjaW5jbHVkZSAiSlNTdHlsZVNoZWV0LmgiCiAKICNpbmNsdWRl
ICJDU1NTdHlsZVNoZWV0LmgiCi0jaW5jbHVkZSAiTm9kZS5oIgorI2luY2x1ZGUgIkhUTUxMaW5r
RWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkpTQ1NTU3R5bGVT
aGVldC5oIgogI2luY2x1ZGUgIkpTTm9kZS5oIgorI2luY2x1ZGUgIk5vZGUuaCIKIAogdXNpbmcg
bmFtZXNwYWNlIEpTQzsKIApAQCAtNjEsNCArNjMsMTUgQEAgSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0
ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3R5bGVTaGVldCogc3R5
bGUKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIAordm9pZCBKU1N0eWxlU2hlZXQ6OnNldERpc2Fi
bGVkKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBTdHlsZVNoZWV0KiBz
dHlsZVNoZWV0ID0gc3RhdGljX2Nhc3Q8U3R5bGVTaGVldCo+KGltcGwoKSk7CisgICAgYm9vbCBk
aXNhYmxlZCA9IHZhbHVlLnRvQm9vbGVhbihleGVjKTsKKyAgICBpZiAoc3R5bGVTaGVldC0+b3du
ZXJOb2RlKCkgJiYgc3R5bGVTaGVldC0+b3duZXJOb2RlKCktPmhhc1RhZ05hbWUoSFRNTE5hbWVz
OjpsaW5rVGFnKSkgeworICAgICAgICBIVE1MTGlua0VsZW1lbnQqIGxpbmtFbGVtZW50ID0gc3Rh
dGljX2Nhc3Q8SFRNTExpbmtFbGVtZW50Kj4oc3R5bGVTaGVldC0+b3duZXJOb2RlKCkpOworICAg
ICAgICBsaW5rRWxlbWVudC0+c2V0RGlzYWJsZWQoZGlzYWJsZWQpOworICAgIH0gZWxzZQorICAg
ICAgICBzdHlsZVNoZWV0LT5zZXREaXNhYmxlZChkaXNhYmxlZCk7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOFN0eWxlU2hlZXRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4U3R5bGVTaGVldEN1c3RvbS5jcHAKaW5kZXggMGZlNmFmODUwYWQzMzkzODM1MGRiNmZh
YmZiZDAzYWExZDc3ZjlhZC4uZDc4MjA3ODllMGExMmQ4YTQ1MzUzM2VhOTgyOGRlZjY5MjZhYjhi
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U3R5bGVT
aGVldEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
U3R5bGVTaGVldEN1c3RvbS5jcHAKQEAgLTMxLDkgKzMxLDEyIEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiVjhTdHlsZVNoZWV0LmgiCiAKKyNpbmNsdWRlICJIVE1MTGlua0VsZW1l
bnQuaCIKKyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJWOERPTVdyYXBwZXIuaCIK
ICNpbmNsdWRlICJWOENTU1N0eWxlU2hlZXQuaCIKICNpbmNsdWRlICJWOE5vZGUuaCIKKyNpbmNs
dWRlICJWOFByb3h5LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTEsNCArNTQsMTcg
QEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoU3R5bGVTaGVldCogaW1wbCkKICAgICByZXR1
cm4gd3JhcHBlcjsKIH0KIAordm9pZCBWOFN0eWxlU2hlZXQ6OmRpc2FibGVkQWNjZXNzb3JTZXR0
ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVl
LCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIElOQ19TVEFUUygiRE9NLlN0
eWxlU2hlZXQuZGlzYWJsZWQuX3NldCIpOworICAgIFN0eWxlU2hlZXQqIGltcCA9IFY4U3R5bGVT
aGVldDo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgYm9vbCBkaXNhYmxlZCA9IHZhbHVl
LT5Cb29sZWFuVmFsdWUoKTsKKyAgICBpZiAoaW1wLT5vd25lck5vZGUoKSAmJiBpbXAtPm93bmVy
Tm9kZSgpLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6bGlua1RhZykpIHsKKyAgICAgICAgSFRNTExp
bmtFbGVtZW50KiBsaW5rRWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxMaW5rRWxlbWVudCo+KGlt
cC0+b3duZXJOb2RlKCkpOworICAgICAgICBsaW5rRWxlbWVudC0+c2V0RGlzYWJsZWQoZGlzYWJs
ZWQpOworICAgIH0gZWxzZQorICAgICAgICBpbXAtPnNldERpc2FibGVkKGRpc2FibGVkKTsKKyAg
ICByZXR1cm47Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNo
ZWV0LmlkbAppbmRleCA2ZDVkZjgwNzY1OGQxM2ViMjFhODY5MDQ5Yzc4NjliZGQ2MTMzYjgyLi5k
NmIwYjgwZjJjZDU1OGU4MzEzODBkNjUzMDc2YjQyNTlkODE4Y2Y5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlU2hlZXQuaWRsCkBAIC0yOSw3ICsyOSw3IEBAIG1vZHVsZSBzdHlsZXNoZWV0cyB7CiAgICAg
ICAgIFY4RGVwZW5kZW50TGlmZXRpbWUKICAgICBdIFN0eWxlU2hlZXQgewogICAgICAgICByZWFk
b25seSBhdHRyaWJ1dGUgW0NvbnZlcnROdWxsU3RyaW5nVG89TnVsbF0gRE9NU3RyaW5nICAgICAg
ICB0eXBlOwotICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgYm9vbGVhbiAgICAgICAgICBkaXNh
YmxlZDsKKyAgICAgICAgICAgICAgICAgYXR0cmlidXRlIFtDdXN0b21TZXR0ZXJdIGJvb2xlYW4g
ZGlzYWJsZWQ7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBOb2RlICAgICAgICAgICAgIG93
bmVyTm9kZTsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFN0eWxlU2hlZXQgICAgICAgcGFy
ZW50U3R5bGVTaGVldDsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFN0
cmluZ1RvPU51bGxdIERPTVN0cmluZyAgICAgICAgaHJlZjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TExpbmtFbGVtZW50LmNwcAppbmRleCA0YmM2ZTkzM2VjZDBkZjNiY2VjMzliMWNjOGNhM2Y5OGY5
Nzg4OWQyLi5lYWIyZDQxMjg3NzE1OTZlNDRiNmE0NjgxNmFlMmRiZTI3NjVjMmQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCkBAIC01Niw3ICs1Niw3IEBAIGlubGlu
ZSBIVE1MTGlua0VsZW1lbnQ6OkhUTUxMaW5rRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdOYW1lLCBEb2N1bWVudCoKICAgICAsIG1fbGlua0xvYWRlcih0aGlzKQogICAgICwgbV9zaXpl
cyhET01TZXR0YWJsZVRva2VuTGlzdDo6Y3JlYXRlKCkpCiAgICAgLCBtX2xvYWRpbmcoZmFsc2Up
Ci0gICAgLCBtX2lzRW5hYmxlZFZpYVNjcmlwdChmYWxzZSkKKyAgICAsIG1fc2NyaXB0U3RhdGUo
VW5zZXQpCiAgICAgLCBtX2NyZWF0ZWRCeVBhcnNlcihjcmVhdGVkQnlQYXJzZXIpCiAgICAgLCBt
X2lzSW5TaGFkb3dUcmVlKGZhbHNlKQogICAgICwgbV9wZW5kaW5nU2hlZXRUeXBlKE5vbmUpCkBA
IC04NSwxNSArODUsMjAgQEAgSFRNTExpbmtFbGVtZW50Ojp+SFRNTExpbmtFbGVtZW50KCkKIAog
dm9pZCBIVE1MTGlua0VsZW1lbnQ6OnNldERpc2FibGVkKGJvb2wgZGlzYWJsZWQpCiB7CisgICAg
Ym9vbCB3YXNFbmFibGVkVmlhU2NyaXB0ID0gaXNFbmFibGVkVmlhU2NyaXB0KCk7CisgICAgc2V0
SXNFbmFibGVkVmlhU2NyaXB0KCFkaXNhYmxlZCk7CisKICAgICBpZiAoIW1fc2hlZXQpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIGJvb2wgd2FzRGlzYWJsZWQgPSBtX3NoZWV0LT5kaXNhYmxlZCgp
OwotICAgIGlmICh3YXNEaXNhYmxlZCA9PSBkaXNhYmxlZCkKKyAgICBpZiAod2FzRGlzYWJsZWQg
PT0gZGlzYWJsZWQpIHsKKyAgICAgICAgaWYgKHdhc0VuYWJsZWRWaWFTY3JpcHQgIT0gaXNFbmFi
bGVkVmlhU2NyaXB0KCkpCisgICAgICAgICAgICBkb2N1bWVudCgpLT5zdHlsZVNlbGVjdG9yQ2hh
bmdlZChEZWZlclJlY2FsY1N0eWxlKTsKICAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIG1f
c2hlZXQtPnNldERpc2FibGVkKGRpc2FibGVkKTsKLSAgICBtX2lzRW5hYmxlZFZpYVNjcmlwdCA9
ICFkaXNhYmxlZDsKIAogICAgIC8vIElmIHdlIGNoYW5nZSB0aGUgZGlzYWJsZWQgc3RhdGUgd2hp
bGUgdGhlIHNoZWV0IGlzIHN0aWxsIGxvYWRpbmcsIHRoZW4gd2UgaGF2ZSB0bwogICAgIC8vIHBl
cmZvcm0gdGhyZWUgY2hlY2tzOgpAQCAtMTIwLDYgKzEyNSw4IEBAIHZvaWQgSFRNTExpbmtFbGVt
ZW50OjpzZXREaXNhYmxlZChib29sIGRpc2FibGVkKQogCiAgICAgaWYgKCFkaXNhYmxlZCkKICAg
ICAgICAgcHJvY2VzcygpOworCisgICAgQVNTRVJUKGFyZURpc2FibGVkQW5kU2NyaXB0U3RhdGVz
Q29uc2lzdGVudCgpKTsKIH0KIAogU3R5bGVTaGVldCogSFRNTExpbmtFbGVtZW50OjpzaGVldCgp
IGNvbnN0CkBAIC0zNTksMTAgKzM2NiwyMCBAQCB2b2lkIEhUTUxMaW5rRWxlbWVudDo6bGlua0xv
YWRpbmdFcnJvcmVkKCkKIAogYm9vbCBIVE1MTGlua0VsZW1lbnQ6OnNoZWV0TG9hZGVkKCkKIHsK
KyAgICAvLyBNaWdyYXRlIHRoZSBkaXNhYmxlZCBpbmZvcm1hdGlvbiBiZWZvcmUgcmVtb3ZlUGVu
ZGluZ1NoZWV0IGlzIGNhbGxlZAorICAgIC8vIGFzIGl0IHdpbGwgc3RhcnQgYSByZWNhbFN0eWxl
U2VsZWN0b3Igd2hpY2ggbmVlZHMgdGhpcyBpbmZvcm1hdGlvbi4KKyAgICBpZiAobV9zY3JpcHRT
dGF0ZSAhPSBVbnNldCkgeworICAgICAgICBBU1NFUlQoIW1fbG9hZGluZyk7CisgICAgICAgIC8v
IEZJWE1FOiBXZSBzaG91bGQgQVNTRVJUIHRoYXQgaXQgd2FzIHNldCBmb3Igc3R5bGVzaGVldHMg
b25seSwgYnV0CisgICAgICAgIC8vIGN1cnJlbnRseSB3ZSBhbGxvdyBzZXREaXNhYmxlZCB0byBi
ZSBjYWxsZWQgcmVnYXJkbGVzcyBvZiB0aGUgPGxpbms+IHJlbC4KKyAgICAgICAgc2V0RGlzYWJs
ZWQobV9zY3JpcHRTdGF0ZSA9PSBEaXNhYmxlZFZpYVNjcmlwdCk7CisgICAgfQorCiAgICAgaWYg
KCFpc0xvYWRpbmcoKSkgewogICAgICAgICByZW1vdmVQZW5kaW5nU2hlZXQoKTsKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQorCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC00NDUsNyAr
NDYyLDIwIEBAIHZvaWQgSFRNTExpbmtFbGVtZW50OjpyZW1vdmVQZW5kaW5nU2hlZXQoKQogCiBi
b29sIEhUTUxMaW5rRWxlbWVudDo6ZGlzYWJsZWQoKSBjb25zdAogewotICAgIHJldHVybiBtX3No
ZWV0ICYmIG1fc2hlZXQtPmRpc2FibGVkKCk7CisgICAgQVNTRVJUKGFyZURpc2FibGVkQW5kU2Ny
aXB0U3RhdGVzQ29uc2lzdGVudCgpKTsKKworICAgIGlmICghbV9zaGVldCkgeworICAgICAgICAv
LyBGRiBkaXNhZ3JlZXMgd2l0aCB0aGUgQ1NTIE9NIHNwZWMgYW5kIGFsd2F5cyBoYXMgYW4gYXNz
b2NpYXRlZCBzdHlsZXNoZWV0IGZvciBhbHRlcm5hdGUgc2hlZXQgKHJlZ2FyZGxlc3Mgb2Ygd2hl
dGhlcgorICAgICAgICAvLyB0aGUgcmVzb3VyY2UgaXMgZmV0Y2hlZCkuIEFzIHdlIHN0b3JlIHRo
ZSBlbmFibGVkIHN0YXRlIGluIG1fc2NyaXB0U3RhdGUgd2hpbGUgbG9hZGluZywgcmV0dXJuIHRo
aXMgaW5mb3JtYXRpb24gdG8gYmUKKyAgICAgICAgLy8gY29uc2lzdGVudCB3aXRoIEZGLiBzaGVl
dExvYWRlZCgpIGlzIGNhbGxlZCBhdCB0aGUgZW5kIG9mIGFueSB0cmFuc2ZlciAod2hldGhlciBp
dCB3YXMgaW4gZXJyb3Igb3Igbm90KSBzbyBtX3NjcmlwdFN0YXRlCisgICAgICAgIC8vIHdpbGwg
YmUgdHJhbnNmZXJlZCBiYWNrIGludG8gb3VyIHN0eWxlc2hlZXQgYW5kIHRoZSBkaXNhYmxlZCgp
IHZhbHVlIHNob3VsZCBhbHdheXMgYmUgY29uc2lzdGVudC4KKyAgICAgICAgaWYgKGlzTG9hZGlu
ZygpICYmIG1fc2NyaXB0U3RhdGUgIT0gVW5zZXQpCisgICAgICAgICAgICByZXR1cm4gbV9zY3Jp
cHRTdGF0ZSA9PSBEaXNhYmxlZFZpYVNjcmlwdDsKKworICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorCisgICAgcmV0dXJuIG1fc2hlZXQtPmRpc2FibGVkKCk7CiB9CiAKIERPTVNldHRhYmxl
VG9rZW5MaXN0KiBIVE1MTGlua0VsZW1lbnQ6OnNpemVzKCkgY29uc3QKQEAgLTQ1OCw0ICs0ODgs
MjMgQEAgdm9pZCBIVE1MTGlua0VsZW1lbnQ6OnNldFNpemVzKGNvbnN0IFN0cmluZyYgdmFsdWUp
CiAgICAgbV9zaXplcy0+c2V0VmFsdWUodmFsdWUpOwogfQogCisjaWZuZGVmIE5ERUJVRworYm9v
bCBIVE1MTGlua0VsZW1lbnQ6OmFyZURpc2FibGVkQW5kU2NyaXB0U3RhdGVzQ29uc2lzdGVudCgp
IGNvbnN0Cit7CisgICAgaWYgKCFtX3JlbEF0dHJpYnV0ZS5tX2lzU3R5bGVTaGVldCkKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisKKyAgICAvLyBEdXJpbmcgbG9hZGluZywgbV9zY3JpcHRTdGF0ZSBo
b2xkcyB0aGUgdGVtcG9yYXJ5IHZhbHVlIGZvciBzaGVldCgpLT5kaXNhYmxlZCgpCisgICAgLy8g
c28gaXQgY2FuIGhhdmUgYW55IHZhbHVlcyAoc2FtZSBmb3Igc2hlZXQoKS0+ZGlzYWJsZWQoKSku
CisgICAgaWYgKGlzTG9hZGluZygpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlmICgh
c2hlZXQoKSB8fCBtX3NjcmlwdFN0YXRlID09IFVuc2V0KQorICAgICAgICByZXR1cm4gdHJ1ZTsK
KworICAgIGJvb2wgaXNEaXNhYmxlZFZpYVNjcmlwdCA9IG1fc2NyaXB0U3RhdGUgPT0gRGlzYWJs
ZWRWaWFTY3JpcHQ7CisgICAgcmV0dXJuIGlzRGlzYWJsZWRWaWFTY3JpcHQgPT0gc2hlZXQoKS0+
ZGlzYWJsZWQoKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaAppbmRleCA4ZmVkZTAyZTVlN2Y5MmI3NDBmODU5MDkx
M2U4Yjc1OWE2ZDE1MTM4Li5hYzUxOGQyOTJmYzQzNTE0YzZhZWRlMjQ1MWY1ZGU4OWFjN2JmYmEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmgKQEAgLTU3LDcgKzU3LDcgQEAg
cHVibGljOgogCiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIHJlbmFtZWQgaXNTdHlsZVNo
ZWV0TG9hZGluZyBhcyB0aGlzIGlzIG9ubHkgdXNlZCBmb3Igc3R5bGVzaGVldHMuCiAgICAgYm9v
bCBpc0xvYWRpbmcoKSBjb25zdDsKLSAgICBib29sIGlzRW5hYmxlZFZpYVNjcmlwdCgpIGNvbnN0
IHsgcmV0dXJuIG1faXNFbmFibGVkVmlhU2NyaXB0OyB9CisgICAgYm9vbCBpc0VuYWJsZWRWaWFT
Y3JpcHQoKSBjb25zdCB7IHJldHVybiBtX3NjcmlwdFN0YXRlID09IEVuYWJsZWRWaWFTY3JpcHQ7
IH0KICAgICBib29sIGRpc2FibGVkKCkgY29uc3Q7CiAgICAgdm9pZCBzZXREaXNhYmxlZChib29s
KTsKICAgICB2b2lkIHNldFNpemVzKGNvbnN0IFN0cmluZyYpOwpAQCAtODUsNyArODUsNiBAQCBw
cml2YXRlOgogICAgIAogICAgIHZpcnR1YWwgYm9vbCBpc1VSTEF0dHJpYnV0ZShBdHRyaWJ1dGUq
KSBjb25zdDsKIAotcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgYWRkU3VicmVzb3VyY2VBdHRy
aWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JikgY29uc3Q7CiAKICAgICB2aXJ0dWFsIHZvaWQg
ZmluaXNoUGFyc2luZ0NoaWxkcmVuKCk7CkBAIC05Nyw2ICs5NiwxMSBAQCBwcml2YXRlOgogcHJp
dmF0ZToKICAgICBIVE1MTGlua0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50
KiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpOwogCisgICAgdm9pZCBzZXRJc0VuYWJsZWRWaWFTY3Jp
cHQoYm9vbCBlbmFibGVkKSB7IG1fc2NyaXB0U3RhdGUgPSBlbmFibGVkID8gRW5hYmxlZFZpYVNj
cmlwdCA6IERpc2FibGVkVmlhU2NyaXB0OyB9CisjaWZuZGVmIE5ERUJVRworICAgIGJvb2wgYXJl
RGlzYWJsZWRBbmRTY3JpcHRTdGF0ZXNDb25zaXN0ZW50KCkgY29uc3Q7CisjZW5kaWYKKwogICAg
IExpbmtMb2FkZXIgbV9saW5rTG9hZGVyOwogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hl
ZENTU1N0eWxlU2hlZXQ+IG1fY2FjaGVkU2hlZXQ7CiAgICAgUmVmUHRyPENTU1N0eWxlU2hlZXQ+
IG1fc2hlZXQ7CkBAIC0xMDYsMTAgKzExMCwxMSBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxET01T
ZXR0YWJsZVRva2VuTGlzdD4gbV9zaXplczsKICAgICBMaW5rUmVsQXR0cmlidXRlIG1fcmVsQXR0
cmlidXRlOwogICAgIGJvb2wgbV9sb2FkaW5nOwotICAgIGJvb2wgbV9pc0VuYWJsZWRWaWFTY3Jp
cHQ7CisgICAgZW51bSBFbmFibGVkVmlhU2NyaXB0U3RhdGUgeyBVbnNldCwgRW5hYmxlZFZpYVNj
cmlwdCwgRGlzYWJsZWRWaWFTY3JpcHQgfTsKKyAgICBFbmFibGVkVmlhU2NyaXB0U3RhdGUgbV9z
Y3JpcHRTdGF0ZTsKICAgICBib29sIG1fY3JlYXRlZEJ5UGFyc2VyOwogICAgIGJvb2wgbV9pc0lu
U2hhZG93VHJlZTsKLSAgICAKKwogICAgIFBlbmRpbmdTaGVldFR5cGUgbV9wZW5kaW5nU2hlZXRU
eXBlOwogfTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104686</attachid>
            <date>2011-08-22 09:58:41 -0700</date>
            <delta_ts>2011-09-01 14:20:32 -0700</delta_ts>
            <desc>Patch 7: Same as previously but with more testing for the sheet.disabled() case.</desc>
            <filename>bug-65140-20110822095840.patch</filename>
            <type>text/plain</type>
            <size>41394</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTM0NDYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0ZjkzYWZiMDU3NjY3NjVmNjhiZGQ2
YTA3NGFiNWU4NWUwMjk5NGMzLi45MWE1MTZkYjEyMzZhNTZiMjUwMmRjNjkyM2Y4ZDQ4ODY5ZGM1
MjJiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMTEtMDgtMjIgIEp1bGllbiBDaGFmZnJhaXgg
IDxqY2hhZmZyYWl4QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUkVHUkVTU0lPTiAocjg0MzI3LXI4
NDMyOSk6IENTUyBzdHlsZXNoZWV0cyBmYWlsIHRvIGxvYWQgb24gd3d3LmZsYWdzdGFyLmNvbSBs
b2dpbiBwYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02NTE0MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vOTgzNTkwNT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvY3NzL2xpbmstZGlzYWJs
ZWQtYXR0ci1leHBlY3RlZC50eHQ6IFRoaXMgY2hhbmdlIGlzIGEgcHJvZ3Jlc3Npb24sIGJ1dCB3
ZSBhcmUgc3RpbGwKKyAgICAgICAgbm90IGhhbmRsaW5nIHVwZGF0ZXMgdG8gdGhlIHNlbGVjdGVk
IHN0eWxlIHNldCBwcm9wZXJseSAoYWxyZWFkeSBjb3ZlcmVkIGJ5IGJ1ZyA2MjQwNykuCisKKyAg
ICAgICAgKiBmYXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1maXJzdC1hbHRlcm5hdGUtbGluay1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxl
LWZpcnN0LWFsdGVybmF0ZS1saW5rLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL3N0
eWxlc2hlZXQtZW5hYmxlLWZpcnN0LWFsdGVybmF0ZS1vbi1sb2FkLWxpbmstZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1maXJzdC1hbHRl
cm5hdGUtb24tbG9hZC1saW5rLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL3N0eWxl
c2hlZXQtZW5hYmxlLWZpcnN0LWFsdGVybmF0ZS1vbi1sb2FkLXNoZWV0LWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZmFzdC9jc3Mvc3R5bGVzaGVldC1lbmFibGUtZmlyc3QtYWx0ZXJu
YXRlLW9uLWxvYWQtc2hlZXQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3Mvc3R5bGVz
aGVldC1lbmFibGUtc2Vjb25kLWFsdGVybmF0ZS1saW5rLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9jc3Mvc3R5bGVzaGVldC1lbmFibGUtc2Vjb25kLWFsdGVybmF0ZS1saW5r
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxlLXNlY29u
ZC1hbHRlcm5hdGUtb24tbG9hZC1saW5rLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9jc3Mvc3R5bGVzaGVldC1lbmFibGUtc2Vjb25kLWFsdGVybmF0ZS1vbi1sb2FkLWxpbmsu
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3Mvc3R5bGVzaGVldC1lbmFibGUtc2Vjb25k
LWFsdGVybmF0ZS1vbi1sb2FkLXNoZWV0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9jc3Mvc3R5bGVzaGVldC1lbmFibGUtc2Vjb25kLWFsdGVybmF0ZS1vbi1sb2FkLXNoZWV0
Lmh0bWw6IEFkZGVkLgorICAgICAgICBUaG9zZSBhcmUgYSB2YXJpYXRpb24gb24gdGhlIHNhbWUg
dGhlbWU6IHdlIGRpc2FibGUgc29tZSBzdHlsZXNoZWV0IGFuZCBlbmFibGUgb3RoZXJzLgorICAg
ICAgICBXZSB2YXJpZXMgdGhlIHRpbWluZyBiZXR3ZWVuIHRoZSAyIGFuZCB3aGV0aGVyIGl0IGlz
IGRvbmUgdGhyb3VnaHQgdGhlIHN0eWxlc2hlZXQgb3IgdGhlCisgICAgICAgIGFzc29jaWF0ZWQg
PGxpbms+LgorCisgICAgICAgICogaHR0cC90ZXN0cy9jc3MvbGluay1jc3MtZGlzYWJsZWQtdmFs
dWUtd2l0aC1zbG93LWxvYWRpbmctc2hlZXQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBodHRwL3Rlc3RzL2Nzcy9saW5rLWNzcy1kaXNhYmxlZC12YWx1ZS13aXRoLXNsb3ctbG9hZGlu
Zy1zaGVldC1pbi1lcnJvci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVz
dHMvY3NzL2xpbmstY3NzLWRpc2FibGVkLXZhbHVlLXdpdGgtc2xvdy1sb2FkaW5nLXNoZWV0LWlu
LWVycm9yLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvY3NzL2xpbmstY3NzLWRp
c2FibGVkLXZhbHVlLXdpdGgtc2xvdy1sb2FkaW5nLXNoZWV0Lmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGh0dHAvdGVzdHMvY3NzL3Jlc291cmNlcy9saW5rLWNzcy1kaXNhYmxlZC12YWx1ZS13aXRo
LXNsb3ctbG9hZGluZy1zaGVldC1pbi1lcnJvci5qczogQWRkZWQuCisgICAgICAgIChvblNoZWV0
TG9hZGVkKToKKyAgICAgICAgKHRlc3RXaGVuTG9hZGVkKToKKyAgICAgICAgKiBodHRwL3Rlc3Rz
L2Nzcy9yZXNvdXJjZXMvbGluay1jc3MtZGlzYWJsZWQtdmFsdWUtd2l0aC1zbG93LWxvYWRpbmct
c2hlZXQuanM6IEFkZGVkLgorICAgICAgICAob25TaGVldExvYWRlZCk6CisgICAgICAgICh0ZXN0
V2hlbkxvYWRlZCk6CisgICAgICAgICogaHR0cC90ZXN0cy9jc3MvcmVzb3VyY2VzL3Nsb3ctbG9h
ZGluZy1zaGVldC1pbi1lcnJvci5waHA6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvY3Nz
L3Jlc291cmNlcy9zbG93LWxvYWRpbmctc2hlZXQucGhwOiBBZGRlZC4KKyAgICAgICAgVGhvc2Ug
MiB0ZXN0IGNhc2VzIHJlbGllcyBvbiBhIHNsb3cgbG9hZGluZyBzdHlsZXNoZWV0IHNvIHRoYXQg
d2UgY2FuIHRlc3QgdGhlIGRpc2FibGVkKCkgdmFsdWUgd2hpbGUgdGhlIGFsdGVybmF0ZQorICAg
ICAgICBzaGVldCBpcyBhc3luY2hyb25vdXNseSBsb2FkaW5nIGFuZCB0aGVuIGNoZWNrIHRoZW0g
YWdhaW4gb25jZSB0aGUgc2hlZXQgaXMgbG9hZGVkLgorCiAyMDExLTA4LTE5ICBKYW1lcyBSb2Jp
bnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBVcGRhdGUg
Y2hyb21pdW0gdGVzdCBleHBlY3RhdGlvbnMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
Y3NzL2xpbmstZGlzYWJsZWQtYXR0ci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Nz
cy9saW5rLWRpc2FibGVkLWF0dHItZXhwZWN0ZWQudHh0CmluZGV4IDU3MWFjYjI4ZDc3MjY2MGZj
MmFkYjRjMjJmYTgyMGZjNTZhNmRmY2UuLmY0MTM3MGExMjVmNDI5ODAzMGQ1YjY0MTBmNTk1YzVj
YTEzMTNjZDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL2xpbmstZGlzYWJsZWQt
YXR0ci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvbGluay1kaXNhYmxl
ZC1hdHRyLWV4cGVjdGVkLnR4dApAQCAtMTUsMTEgKzE1LDExIEBAIFBBU1MgZ2V0Q29tcHV0ZWRT
dHlsZShjb25zb2xlKS53aGl0ZVNwYWNlIGlzICdwcmUtd3JhcCcKIGFsdHNoZWV0CiBGQUlMIGxp
bmsuZGlzYWJsZWQgc2hvdWxkIGJlIHRydWUuIFdhcyBmYWxzZS4KIFBBU1MgbGluay5zaGVldCBp
cyBub24tbnVsbC4KLUZBSUwgZ2V0Q29tcHV0ZWRTdHlsZShjb25zb2xlKS5iYWNrZ3JvdW5kQ29s
b3Igc2hvdWxkIGJlIHJnYigwLCAxMjgsIDApLiBXYXMgcmdiYSgwLCAwLCAwLCAwKS4KK1BBU1Mg
Z2V0Q29tcHV0ZWRTdHlsZShjb25zb2xlKS5iYWNrZ3JvdW5kQ29sb3IgaXMgJ3JnYigwLCAxMjgs
IDApJwogRkFJTCBsaW5rLmRpc2FibGVkIHNob3VsZCBiZSB0cnVlLiBXYXMgZmFsc2UuCi1QQVNT
IGdldENvbXB1dGVkU3R5bGUoY29uc29sZSkuYmFja2dyb3VuZENvbG9yIGlzIG9yaWdpbmFsQkcK
K0ZBSUwgZ2V0Q29tcHV0ZWRTdHlsZShjb25zb2xlKS5iYWNrZ3JvdW5kQ29sb3Igc2hvdWxkIGJl
IHJnYmEoMCwgMCwgMCwgMCkuIFdhcyByZ2IoMCwgMTI4LCAwKS4KIFBBU1MgbGluay5kaXNhYmxl
ZCBpcyBmYWxzZQotRkFJTCBnZXRDb21wdXRlZFN0eWxlKGNvbnNvbGUpLmJhY2tncm91bmRDb2xv
ciBzaG91bGQgYmUgcmdiKDAsIDEyOCwgMCkuIFdhcyByZ2JhKDAsIDAsIDAsIDApLgorUEFTUyBn
ZXRDb21wdXRlZFN0eWxlKGNvbnNvbGUpLmJhY2tncm91bmRDb2xvciBpcyAncmdiKDAsIDEyOCwg
MCknCiBQQVNTIGdldENvbXB1dGVkU3R5bGUoY29uc29sZSkuYmFja2dyb3VuZENvbG9yIGlzIG9y
aWdpbmFsQkcKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGVzaGVldC1lbmFibGUtZmlyc3QtYWx0ZXJuYXRlLWxp
bmstZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGVzaGVldC1lbmFibGUt
Zmlyc3QtYWx0ZXJuYXRlLWxpbmstZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMwNTI4ZmI3NThh
OTFkN2YzMDY4MjA3MTExNTBmOThhNWQxNzAyYzQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1maXJzdC1hbHRlcm5hdGUtbGluay1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSw1IEBACitUZXN0IGZvciA2NTE0MDogUkVHUkVTU0lPTiAocjg0
MzI3LXI4NDMyOSk6IENTUyBzdHlsZXNoZWV0cyBmYWlsIHRvIGxvYWQgb24gd3d3LmZsYWdzdGFy
LmNvbSBsb2dpbiBwYWdlCisKK1RoaXMgdGVzdCBQQVNTRUQgaWYgUEFTU0VEIGlzIHdyaXR0ZW4g
YmVsb3cgKGFsdGVybmF0aXZlbHkgdGhlIG5leHQgbGluZSBzaG91bGQgaGF2ZSBhIEdSRUVOIGJh
Y2tncm91bmQpLgorCitQQVNTRUQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0
eWxlc2hlZXQtZW5hYmxlLWZpcnN0LWFsdGVybmF0ZS1saW5rLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1maXJzdC1hbHRlcm5hdGUtbGluay5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmY1NTkwNjNmOTFjMzIwY2I5N2I5NDQxYWFjM2Q2MWY1NTIyZTE1MzMKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1maXJzdC1h
bHRlcm5hdGUtbGluay5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJ
QyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy9yZWQuY3NzIiBtZWRpYT0iYWxsIiB0aXRsZT0iRGVm
YXVsdCBTdHlsZSBTaGVldCIgdHlwZT0idGV4dC9jc3MiIC8+Cis8bGluayByZWw9ImFsdGVybmF0
ZSBzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvZ3JlZW4uY3NzIiBtZWRpYT0iYWxsIiB0aXRs
ZT0iZ3JlZW4iIHR5cGU9InRleHQvY3NzIiAvPgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiPgorICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgIHZhciByZWQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgibGluayIpWzBdOworICAgIHJlZC5kaXNhYmxlZCA9IHRydWU7
CisgICAgdmFyIGdyZWVuID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxpbmsiKVsx
XTsKKyAgICBncmVlbi5kaXNhYmxlZCA9IHRydWU7CisgICAgZ3JlZW4uZGlzYWJsZWQgPSBmYWxz
ZTsKKworICAgIGZ1bmN0aW9uIHRlc3QoKSB7CisgICAgICAgIHZhciBjb25zb2xlID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKTsKKyAgICAgICAgaWYgKGdldENvbXB1dGVkU3R5
bGUoY29uc29sZSwgbnVsbCkuYmFja2dyb3VuZENvbG9yID09PSAicmdiKDAsIDEyOCwgMCkiKQor
ICAgICAgICAgICAgY29uc29sZS5pbm5lckhUTUwgPSAiUEFTU0VEIjsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgY29uc29sZS5pbm5lckhUTUwgPSAiRkFJTEVELCBiYWNrZ3JvdW5kID0gIiAr
IGdldENvbXB1dGVkU3R5bGUoY29uc29sZSwgbnVsbCkuYmFja2dyb3VuZENvbG9yOworICAgIH0K
KyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIHRlc3QsIGZhbHNlKTsKKzwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cD5UZXN0IGZvciA8YSBocmVmPSJodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjUxNDAiPjY1MTQwPC9hPjogUkVHUkVTU0lPTiAo
cjg0MzI3LXI4NDMyOSk6IENTUyBzdHlsZXNoZWV0cyBmYWlsIHRvIGxvYWQgb24gd3d3LmZsYWdz
dGFyLmNvbSBsb2dpbiBwYWdlPC9wPgorPHA+VGhpcyB0ZXN0IFBBU1NFRCBpZiBQQVNTRUQgaXMg
d3JpdHRlbiBiZWxvdyAoYWx0ZXJuYXRpdmVseSB0aGUgbmV4dCBsaW5lIHNob3VsZCBoYXZlIGEg
R1JFRU4gYmFja2dyb3VuZCkuPC9wPgorPGRpdiBpZD0iY29uc29sZSI+RkFJTEVEPC9kaXY+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZXNo
ZWV0LWVuYWJsZS1maXJzdC1hbHRlcm5hdGUtb24tbG9hZC1saW5rLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxlLWZpcnN0LWFsdGVybmF0ZS1vbi1s
b2FkLWxpbmstZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMwNTI4ZmI3NThhOTFkN2YzMDY4MjA3
MTExNTBmOThhNWQxNzAyYzQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nz
cy9zdHlsZXNoZWV0LWVuYWJsZS1maXJzdC1hbHRlcm5hdGUtb24tbG9hZC1saW5rLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDUgQEAKK1Rlc3QgZm9yIDY1MTQwOiBSRUdSRVNTSU9OIChyODQzMjct
cjg0MzI5KTogQ1NTIHN0eWxlc2hlZXRzIGZhaWwgdG8gbG9hZCBvbiB3d3cuZmxhZ3N0YXIuY29t
IGxvZ2luIHBhZ2UKKworVGhpcyB0ZXN0IFBBU1NFRCBpZiBQQVNTRUQgaXMgd3JpdHRlbiBiZWxv
dyAoYWx0ZXJuYXRpdmVseSB0aGUgbmV4dCBsaW5lIHNob3VsZCBoYXZlIGEgR1JFRU4gYmFja2dy
b3VuZCkuCisKK1BBU1NFRApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGVz
aGVldC1lbmFibGUtZmlyc3QtYWx0ZXJuYXRlLW9uLWxvYWQtbGluay5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC9jc3Mvc3R5bGVzaGVldC1lbmFibGUtZmlyc3QtYWx0ZXJuYXRlLW9uLWxvYWQtbGlu
ay5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmEyOTVlNDJkYzI0ZjQxMjlhYTNhYjc5MjdmNmVhOTY0NzgxZTBi
ZGQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZXNoZWV0LWVu
YWJsZS1maXJzdC1hbHRlcm5hdGUtb24tbG9hZC1saW5rLmh0bWwKQEAgLTAsMCArMSwzMSBAQAor
PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8
aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL3JlZC5jc3MiIG1l
ZGlhPSJhbGwiIHRpdGxlPSJEZWZhdWx0IFN0eWxlIFNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgLz4K
KzxsaW5rIHJlbD0iYWx0ZXJuYXRlIHN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy9ncmVlbi5j
c3MiIG1lZGlhPSJhbGwiIHRpdGxlPSJncmVlbiIgdHlwZT0idGV4dC9jc3MiIC8+Cis8c2NyaXB0
IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAg
ZnVuY3Rpb24gdGVzdCgpIHsKKyAgICAgICAgdmFyIHJlZCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJsaW5rIilbMF07CisgICAgICAgIHJlZC5kaXNhYmxlZCA9IHRydWU7CisgICAg
ICAgIHZhciBncmVlbiA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJsaW5rIilbMV07
CisgICAgICAgIGdyZWVuLmRpc2FibGVkID0gdHJ1ZTsKKyAgICAgICAgZ3JlZW4uZGlzYWJsZWQg
PSBmYWxzZTsKKworICAgICAgICB2YXIgY29uc29sZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJjb25zb2xlIik7CisgICAgICAgIGlmIChnZXRDb21wdXRlZFN0eWxlKGNvbnNvbGUsIG51bGwp
LmJhY2tncm91bmRDb2xvciA9PT0gInJnYigwLCAxMjgsIDApIikKKyAgICAgICAgICAgIGNvbnNv
bGUuaW5uZXJIVE1MID0gIlBBU1NFRCI7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvbnNv
bGUuaW5uZXJIVE1MID0gIkZBSUxFRCwgYmFja2dyb3VuZCA9ICIgKyBnZXRDb21wdXRlZFN0eWxl
KGNvbnNvbGUsIG51bGwpLmJhY2tncm91bmRDb2xvcjsKKyAgICB9CisgICAgd2luZG93LmFkZEV2
ZW50TGlzdGVuZXIoImxvYWQiLCB0ZXN0LCBmYWxzZSk7Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPHA+VGVzdCBmb3IgPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTY1MTQwIj42NTE0MDwvYT46IFJFR1JFU1NJT04gKHI4NDMyNy1yODQzMjkpOiBD
U1Mgc3R5bGVzaGVldHMgZmFpbCB0byBsb2FkIG9uIHd3dy5mbGFnc3Rhci5jb20gbG9naW4gcGFn
ZTwvcD4KKzxwPlRoaXMgdGVzdCBQQVNTRUQgaWYgUEFTU0VEIGlzIHdyaXR0ZW4gYmVsb3cgKGFs
dGVybmF0aXZlbHkgdGhlIG5leHQgbGluZSBzaG91bGQgaGF2ZSBhIEdSRUVOIGJhY2tncm91bmQp
LjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPkZBSUxFRDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGVzaGVldC1lbmFibGUtZmlyc3Qt
YWx0ZXJuYXRlLW9uLWxvYWQtc2hlZXQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9j
c3Mvc3R5bGVzaGVldC1lbmFibGUtZmlyc3QtYWx0ZXJuYXRlLW9uLWxvYWQtc2hlZXQtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmMwNTI4ZmI3NThhOTFkN2YzMDY4MjA3MTExNTBmOThhNWQxNzAy
YzQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZXNoZWV0LWVu
YWJsZS1maXJzdC1hbHRlcm5hdGUtb24tbG9hZC1zaGVldC1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSw1IEBACitUZXN0IGZvciA2NTE0MDogUkVHUkVTU0lPTiAocjg0MzI3LXI4NDMyOSk6IENTUyBz
dHlsZXNoZWV0cyBmYWlsIHRvIGxvYWQgb24gd3d3LmZsYWdzdGFyLmNvbSBsb2dpbiBwYWdlCisK
K1RoaXMgdGVzdCBQQVNTRUQgaWYgUEFTU0VEIGlzIHdyaXR0ZW4gYmVsb3cgKGFsdGVybmF0aXZl
bHkgdGhlIG5leHQgbGluZSBzaG91bGQgaGF2ZSBhIEdSRUVOIGJhY2tncm91bmQpLgorCitQQVNT
RUQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxlLWZp
cnN0LWFsdGVybmF0ZS1vbi1sb2FkLXNoZWV0Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9z
dHlsZXNoZWV0LWVuYWJsZS1maXJzdC1hbHRlcm5hdGUtb24tbG9hZC1zaGVldC5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmMxN2FhZDQ3NzExN2NlMTIzMjY1MGFiMTFkMGE1ZWM2ZjNhZDRiNzMKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1maXJzdC1h
bHRlcm5hdGUtb24tbG9hZC1zaGVldC5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhRE9DVFlQRSBI
VE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy9yZWQuY3NzIiBtZWRpYT0iYWxsIiB0
aXRsZT0iRGVmYXVsdCBTdHlsZSBTaGVldCIgdHlwZT0idGV4dC9jc3MiIC8+Cis8bGluayByZWw9
ImFsdGVybmF0ZSBzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvZ3JlZW4uY3NzIiBtZWRpYT0i
YWxsIiB0aXRsZT0iZ3JlZW4iIHR5cGU9InRleHQvY3NzIiAvPgorPHNjcmlwdCB0eXBlPSJ0ZXh0
L2phdmFzY3JpcHQiPgorICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgIGZ1bmN0aW9uIHRl
c3QoKSB7CisgICAgICAgIHZhciByZWQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
bGluayIpWzBdOworICAgICAgICByZWQuc2hlZXQuZGlzYWJsZWQgPSB0cnVlOworICAgICAgICB2
YXIgZ3JlZW4gPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGluayIpWzFdOworICAg
ICAgICBncmVlbi5zaGVldC5kaXNhYmxlZCA9IHRydWU7CisgICAgICAgIGdyZWVuLnNoZWV0LmRp
c2FibGVkID0gZmFsc2U7CisKKyAgICAgICAgdmFyIGNvbnNvbGUgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiY29uc29sZSIpOworICAgICAgICBpZiAoZ2V0Q29tcHV0ZWRTdHlsZShjb25zb2xl
LCBudWxsKS5iYWNrZ3JvdW5kQ29sb3IgPT09ICJyZ2IoMCwgMTI4LCAwKSIpCisgICAgICAgICAg
ICBjb25zb2xlLmlubmVySFRNTCA9ICJQQVNTRUQiOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBjb25zb2xlLmlubmVySFRNTCA9ICJGQUlMRUQsIGJhY2tncm91bmQgPSAiICsgZ2V0Q29tcHV0
ZWRTdHlsZShjb25zb2xlLCBudWxsKS5iYWNrZ3JvdW5kQ29sb3I7CisgICAgfQorICAgIHdpbmRv
dy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgdGVzdCwgZmFsc2UpOworPC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxwPlRlc3QgZm9yIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02NTE0MCI+NjUxNDA8L2E+OiBSRUdSRVNTSU9OIChyODQzMjctcjg0
MzI5KTogQ1NTIHN0eWxlc2hlZXRzIGZhaWwgdG8gbG9hZCBvbiB3d3cuZmxhZ3N0YXIuY29tIGxv
Z2luIHBhZ2U8L3A+Cis8cD5UaGlzIHRlc3QgUEFTU0VEIGlmIFBBU1NFRCBpcyB3cml0dGVuIGJl
bG93IChhbHRlcm5hdGl2ZWx5IHRoZSBuZXh0IGxpbmUgc2hvdWxkIGhhdmUgYSBHUkVFTiBiYWNr
Z3JvdW5kKS48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj5GQUlMRUQ8L2Rpdj4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxl
LXNlY29uZC1hbHRlcm5hdGUtbGluay1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Nz
cy9zdHlsZXNoZWV0LWVuYWJsZS1zZWNvbmQtYWx0ZXJuYXRlLWxpbmstZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmMwNTI4ZmI3NThhOTFkN2YzMDY4MjA3MTExNTBmOThhNWQxNzAyYzQKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1zZWNv
bmQtYWx0ZXJuYXRlLWxpbmstZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorVGVzdCBmb3Ig
NjUxNDA6IFJFR1JFU1NJT04gKHI4NDMyNy1yODQzMjkpOiBDU1Mgc3R5bGVzaGVldHMgZmFpbCB0
byBsb2FkIG9uIHd3dy5mbGFnc3Rhci5jb20gbG9naW4gcGFnZQorCitUaGlzIHRlc3QgUEFTU0VE
IGlmIFBBU1NFRCBpcyB3cml0dGVuIGJlbG93IChhbHRlcm5hdGl2ZWx5IHRoZSBuZXh0IGxpbmUg
c2hvdWxkIGhhdmUgYSBHUkVFTiBiYWNrZ3JvdW5kKS4KKworUEFTU0VECmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1zZWNvbmQtYWx0ZXJuYXRlLWxp
bmsuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxlLXNlY29uZC1h
bHRlcm5hdGUtbGluay5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAwZTVjMmMyMWRkNmY1YjU1MDA1MTMyMjQw
OWUzMzU3Nzc0ZjhhNmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9z
dHlsZXNoZWV0LWVuYWJsZS1zZWNvbmQtYWx0ZXJuYXRlLWxpbmsuaHRtbApAQCAtMCwwICsxLDMx
IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRt
bD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvcmVkLmNz
cyIgbWVkaWE9ImFsbCIgdGl0bGU9IkRlZmF1bHQgU3R5bGUgU2hlZXQiIHR5cGU9InRleHQvY3Nz
IiAvPgorPGxpbmsgcmVsPSJhbHRlcm5hdGUgc3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL3Jl
ZC5jc3MiIG1lZGlhPSJhbGwiIHRpdGxlPSJncmVlbiIgdHlwZT0idGV4dC9jc3MiIC8+Cis8bGlu
ayByZWw9ImFsdGVybmF0ZSBzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvZ3JlZW4uY3NzIiBt
ZWRpYT0iYWxsIiB0aXRsZT0iZ3JlZW4iIHR5cGU9InRleHQvY3NzIiAvPgorPHNjcmlwdCB0eXBl
PSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgIHZhciBy
ZWQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGluayIpWzBdOworICAgIHJlZC5k
aXNhYmxlZCA9IHRydWU7CisgICAgdmFyIGdyZWVuID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoImxpbmsiKVsyXTsKKyAgICBncmVlbi5kaXNhYmxlZCA9IGZhbHNlOworCisgICAgZnVu
Y3Rpb24gdGVzdCgpIHsKKyAgICAgICAgdmFyIGNvbnNvbGUgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiY29uc29sZSIpOworICAgICAgICBpZiAoZ2V0Q29tcHV0ZWRTdHlsZShjb25zb2xlLCBu
dWxsKS5iYWNrZ3JvdW5kQ29sb3IgPT09ICJyZ2IoMCwgMTI4LCAwKSIpCisgICAgICAgICAgICBj
b25zb2xlLmlubmVySFRNTCA9ICJQQVNTRUQiOworICAgICAgICBlbHNlCisgICAgICAgICAgICBj
b25zb2xlLmlubmVySFRNTCA9ICJGQUlMRUQsIGJhY2tncm91bmQgPSAiICsgZ2V0Q29tcHV0ZWRT
dHlsZShjb25zb2xlLCBudWxsKS5iYWNrZ3JvdW5kQ29sb3I7CisgICAgfQorICAgIHdpbmRvdy5h
ZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgdGVzdCwgZmFsc2UpOworPC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxwPlRlc3QgZm9yIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD02NTE0MCI+NjUxNDA8L2E+OiBSRUdSRVNTSU9OIChyODQzMjctcjg0MzI5
KTogQ1NTIHN0eWxlc2hlZXRzIGZhaWwgdG8gbG9hZCBvbiB3d3cuZmxhZ3N0YXIuY29tIGxvZ2lu
IHBhZ2U8L3A+Cis8cD5UaGlzIHRlc3QgUEFTU0VEIGlmIFBBU1NFRCBpcyB3cml0dGVuIGJlbG93
IChhbHRlcm5hdGl2ZWx5IHRoZSBuZXh0IGxpbmUgc2hvdWxkIGhhdmUgYSBHUkVFTiBiYWNrZ3Jv
dW5kKS48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj5GQUlMRUQ8L2Rpdj4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxlLXNl
Y29uZC1hbHRlcm5hdGUtb24tbG9hZC1saW5rLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zh
c3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxlLXNlY29uZC1hbHRlcm5hdGUtb24tbG9hZC1saW5rLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMDUyOGZiNzU4YTkxZDdmMzA2ODIwNzExMTUwZjk4YTVk
MTcwMmM0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGVzaGVl
dC1lbmFibGUtc2Vjb25kLWFsdGVybmF0ZS1vbi1sb2FkLWxpbmstZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsNSBAQAorVGVzdCBmb3IgNjUxNDA6IFJFR1JFU1NJT04gKHI4NDMyNy1yODQzMjkpOiBD
U1Mgc3R5bGVzaGVldHMgZmFpbCB0byBsb2FkIG9uIHd3dy5mbGFnc3Rhci5jb20gbG9naW4gcGFn
ZQorCitUaGlzIHRlc3QgUEFTU0VEIGlmIFBBU1NFRCBpcyB3cml0dGVuIGJlbG93IChhbHRlcm5h
dGl2ZWx5IHRoZSBuZXh0IGxpbmUgc2hvdWxkIGhhdmUgYSBHUkVFTiBiYWNrZ3JvdW5kKS4KKwor
UEFTU0VECmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJs
ZS1zZWNvbmQtYWx0ZXJuYXRlLW9uLWxvYWQtbGluay5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9j
c3Mvc3R5bGVzaGVldC1lbmFibGUtc2Vjb25kLWFsdGVybmF0ZS1vbi1sb2FkLWxpbmsuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5jYzgwODZlMGI0YTI3YzdmZmQ4MWEzM2MwZDAyNTMxNTUxNDJjNjZkCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGVzaGVldC1lbmFibGUtc2Vj
b25kLWFsdGVybmF0ZS1vbi1sb2FkLWxpbmsuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IURPQ1RZ
UEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgor
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvcmVkLmNzcyIgbWVkaWE9ImFs
bCIgdGl0bGU9IkRlZmF1bHQgU3R5bGUgU2hlZXQiIHR5cGU9InRleHQvY3NzIiAvPgorPGxpbmsg
cmVsPSJhbHRlcm5hdGUgc3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL3JlZC5jc3MiIG1lZGlh
PSJhbGwiIHRpdGxlPSJncmVlbiIgdHlwZT0idGV4dC9jc3MiIC8+Cis8bGluayByZWw9ImFsdGVy
bmF0ZSBzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvZ3JlZW4uY3NzIiBtZWRpYT0iYWxsIiB0
aXRsZT0iZ3JlZW4iIHR5cGU9InRleHQvY3NzIiAvPgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFz
Y3JpcHQiPgorICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgIGZ1bmN0aW9uIHRlc3QoKSB7
CisgICAgICAgIHZhciByZWQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGluayIp
WzBdOworICAgICAgICByZWQuZGlzYWJsZWQgPSB0cnVlOworICAgICAgICB2YXIgZ3JlZW4gPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGluayIpWzJdOworICAgICAgICBncmVlbi5k
aXNhYmxlZCA9IGZhbHNlOworCisgICAgICAgIHZhciBjb25zb2xlID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImNvbnNvbGUiKTsKKyAgICAgICAgaWYgKGdldENvbXB1dGVkU3R5bGUoY29uc29s
ZSwgbnVsbCkuYmFja2dyb3VuZENvbG9yID09PSAicmdiKDAsIDEyOCwgMCkiKQorICAgICAgICAg
ICAgY29uc29sZS5pbm5lckhUTUwgPSAiUEFTU0VEIjsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgY29uc29sZS5pbm5lckhUTUwgPSAiRkFJTEVELCBiYWNrZ3JvdW5kID0gIiArIGdldENvbXB1
dGVkU3R5bGUoY29uc29sZSwgbnVsbCkuYmFja2dyb3VuZENvbG9yOworICAgIH0KKyAgICB3aW5k
b3cuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIHRlc3QsIGZhbHNlKTsKKzwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8cD5UZXN0IGZvciA8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NjUxNDAiPjY1MTQwPC9hPjogUkVHUkVTU0lPTiAocjg0MzI3LXI4
NDMyOSk6IENTUyBzdHlsZXNoZWV0cyBmYWlsIHRvIGxvYWQgb24gd3d3LmZsYWdzdGFyLmNvbSBs
b2dpbiBwYWdlPC9wPgorPHA+VGhpcyB0ZXN0IFBBU1NFRCBpZiBQQVNTRUQgaXMgd3JpdHRlbiBi
ZWxvdyAoYWx0ZXJuYXRpdmVseSB0aGUgbmV4dCBsaW5lIHNob3VsZCBoYXZlIGEgR1JFRU4gYmFj
a2dyb3VuZCkuPC9wPgorPGRpdiBpZD0iY29uc29sZSI+RkFJTEVEPC9kaXY+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJs
ZS1zZWNvbmQtYWx0ZXJuYXRlLW9uLWxvYWQtc2hlZXQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZmFzdC9jc3Mvc3R5bGVzaGVldC1lbmFibGUtc2Vjb25kLWFsdGVybmF0ZS1vbi1sb2FkLXNo
ZWV0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMDUyOGZiNzU4YTkxZDdmMzA2ODIwNzExMTUw
Zjk4YTVkMTcwMmM0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5
bGVzaGVldC1lbmFibGUtc2Vjb25kLWFsdGVybmF0ZS1vbi1sb2FkLXNoZWV0LWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDUgQEAKK1Rlc3QgZm9yIDY1MTQwOiBSRUdSRVNTSU9OIChyODQzMjctcjg0
MzI5KTogQ1NTIHN0eWxlc2hlZXRzIGZhaWwgdG8gbG9hZCBvbiB3d3cuZmxhZ3N0YXIuY29tIGxv
Z2luIHBhZ2UKKworVGhpcyB0ZXN0IFBBU1NFRCBpZiBQQVNTRUQgaXMgd3JpdHRlbiBiZWxvdyAo
YWx0ZXJuYXRpdmVseSB0aGUgbmV4dCBsaW5lIHNob3VsZCBoYXZlIGEgR1JFRU4gYmFja2dyb3Vu
ZCkuCisKK1BBU1NFRApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGVzaGVl
dC1lbmFibGUtc2Vjb25kLWFsdGVybmF0ZS1vbi1sb2FkLXNoZWV0Lmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1zZWNvbmQtYWx0ZXJuYXRlLW9uLWxvYWQtc2hl
ZXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi43YmJiMzk3MDRjZTQ3OThjMmI0MDlmZDBkYjUxNDk2OWI4YTUx
NzhmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGVzaGVldC1l
bmFibGUtc2Vjb25kLWFsdGVybmF0ZS1vbi1sb2FkLXNoZWV0Lmh0bWwKQEAgLTAsMCArMSwzMSBA
QAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+
Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL3JlZC5jc3Mi
IG1lZGlhPSJhbGwiIHRpdGxlPSJEZWZhdWx0IFN0eWxlIFNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIg
Lz4KKzxsaW5rIHJlbD0iYWx0ZXJuYXRlIHN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy9yZWQu
Y3NzIiBtZWRpYT0iYWxsIiB0aXRsZT0iZ3JlZW4iIHR5cGU9InRleHQvY3NzIiAvPgorPGxpbmsg
cmVsPSJhbHRlcm5hdGUgc3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL2dyZWVuLmNzcyIgbWVk
aWE9ImFsbCIgdGl0bGU9ImdyZWVuIiB0eXBlPSJ0ZXh0L2NzcyIgLz4KKzxzY3JpcHQgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0Ij4KKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQor
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICBmdW5jdGlv
biB0ZXN0KCkgeworICAgICAgICB2YXIgcmVkID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoImxpbmsiKVswXTsKKyAgICAgICAgcmVkLnNoZWV0LmRpc2FibGVkID0gdHJ1ZTsKKyAgICAg
ICAgdmFyIGdyZWVuID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxpbmsiKVsyXTsK
KyAgICAgICAgZ3JlZW4uc2hlZXQuZGlzYWJsZWQgPSBmYWxzZTsKKworICAgICAgICB2YXIgY29u
c29sZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIik7CisgICAgICAgIGlmIChn
ZXRDb21wdXRlZFN0eWxlKGNvbnNvbGUsIG51bGwpLmJhY2tncm91bmRDb2xvciA9PT0gInJnYigw
LCAxMjgsIDApIikKKyAgICAgICAgICAgIGNvbnNvbGUuaW5uZXJIVE1MID0gIlBBU1NFRCI7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvbnNvbGUuaW5uZXJIVE1MID0gIkZBSUxFRCwgYmFj
a2dyb3VuZCA9ICIgKyBnZXRDb21wdXRlZFN0eWxlKGNvbnNvbGUsIG51bGwpLmJhY2tncm91bmRD
b2xvcjsKKyAgICB9CisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCB0ZXN0LCBm
YWxzZSk7Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGVzdCBmb3IgPGEgaHJlZj0i
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1MTQwIj42NTE0MDwvYT46
IFJFR1JFU1NJT04gKHI4NDMyNy1yODQzMjkpOiBDU1Mgc3R5bGVzaGVldHMgZmFpbCB0byBsb2Fk
IG9uIHd3dy5mbGFnc3Rhci5jb20gbG9naW4gcGFnZTwvcD4KKzxwPlRoaXMgdGVzdCBQQVNTRUQg
aWYgUEFTU0VEIGlzIHdyaXR0ZW4gYmVsb3cgKGFsdGVybmF0aXZlbHkgdGhlIG5leHQgbGluZSBz
aG91bGQgaGF2ZSBhIEdSRUVOIGJhY2tncm91bmQpLjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPkZB
SUxFRDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9jc3MvbGluay1jc3MtZGlzYWJsZWQtdmFsdWUtd2l0aC1zbG93LWxvYWRpbmctc2hl
ZXQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jc3MvbGluay1jc3MtZGlz
YWJsZWQtdmFsdWUtd2l0aC1zbG93LWxvYWRpbmctc2hlZXQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjYxNDAwYWFhMGVjMGE0ZTIwY2ZkNzZiMGEzNTIwYjkxNzRlMzY1NDgKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nzcy9saW5rLWNzcy1kaXNhYmxlZC12YWx1
ZS13aXRoLXNsb3ctbG9hZGluZy1zaGVldC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxOSBAQAor
VGVzdCB0aGF0IEhUTUxMaW5rRWxlbWVudCdzIGRpc2FibGVkIGF0dHJpYnV0ZSBpcyBwcm9wZXJs
eSBjYWNoZWQgd2hpbGUgc2V0IHdoZW4gbG9hZGluZyBhIHN0eWxlc2hlZXQuCisKK09uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KKworCitUZXN0aW5nIHZhbHVlIG9mICdkaXNhYmxlZCcgcHJpb3Ig
dG8gbG9hZCBqdXN0IGFmdGVyIHNldHRpbmcgdGhlbQorUEFTUyBtYWluU2hlZXRMaW5rLnNoZWV0
IGlzIG5vbi1udWxsLgorUEFTUyBhbHRlcm5hdGVTaGVldExpbmsuc2hlZXQgaXMgbnVsbAorUEFT
UyBtYWluU2hlZXRMaW5rLmRpc2FibGVkIGlzIHRydWUKK1BBU1MgYWx0ZXJuYXRlU2hlZXRMaW5r
LmRpc2FibGVkIGlzIGZhbHNlCitUZXN0aW5nIHRoZSB2YWx1ZXMgd2hlbiB0aGUgYWx0ZXJuYXRl
IHNoZWV0IGlzIGxvYWRlZCAoYXMgdGhpcyBpcyB0aGUgb25seSBvbmUgdGhhdCBoYXMgc2hlZXQo
KSA9PT0gbnVsbCkKK1BBU1MgbWFpblNoZWV0TGluay5zaGVldCBpcyBub24tbnVsbC4KK1BBU1Mg
YWx0ZXJuYXRlU2hlZXRMaW5rLnNoZWV0IGlzIG5vbi1udWxsLgorUEFTUyBtYWluU2hlZXRMaW5r
LmRpc2FibGVkIGlzIHRydWUKK1BBU1MgYWx0ZXJuYXRlU2hlZXRMaW5rLmRpc2FibGVkIGlzIGZh
bHNlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jc3MvbGluay1jc3MtZGlzYWJsZWQt
dmFsdWUtd2l0aC1zbG93LWxvYWRpbmctc2hlZXQtaW4tZXJyb3ItZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9jc3MvbGluay1jc3MtZGlzYWJsZWQtdmFsdWUtd2l0aC1zbG93
LWxvYWRpbmctc2hlZXQtaW4tZXJyb3ItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYxNDAwYWFh
MGVjMGE0ZTIwY2ZkNzZiMGEzNTIwYjkxNzRlMzY1NDgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2Nzcy9saW5rLWNzcy1kaXNhYmxlZC12YWx1ZS13aXRoLXNsb3ct
bG9hZGluZy1zaGVldC1pbi1lcnJvci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxOSBAQAorVGVz
dCB0aGF0IEhUTUxMaW5rRWxlbWVudCdzIGRpc2FibGVkIGF0dHJpYnV0ZSBpcyBwcm9wZXJseSBj
YWNoZWQgd2hpbGUgc2V0IHdoZW4gbG9hZGluZyBhIHN0eWxlc2hlZXQuCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworCitUZXN0aW5nIHZhbHVlIG9mICdkaXNhYmxlZCcgcHJpb3IgdG8g
bG9hZCBqdXN0IGFmdGVyIHNldHRpbmcgdGhlbQorUEFTUyBtYWluU2hlZXRMaW5rLnNoZWV0IGlz
IG5vbi1udWxsLgorUEFTUyBhbHRlcm5hdGVTaGVldExpbmsuc2hlZXQgaXMgbnVsbAorUEFTUyBt
YWluU2hlZXRMaW5rLmRpc2FibGVkIGlzIHRydWUKK1BBU1MgYWx0ZXJuYXRlU2hlZXRMaW5rLmRp
c2FibGVkIGlzIGZhbHNlCitUZXN0aW5nIHRoZSB2YWx1ZXMgd2hlbiB0aGUgYWx0ZXJuYXRlIHNo
ZWV0IGlzIGxvYWRlZCAoYXMgdGhpcyBpcyB0aGUgb25seSBvbmUgdGhhdCBoYXMgc2hlZXQoKSA9
PT0gbnVsbCkKK1BBU1MgbWFpblNoZWV0TGluay5zaGVldCBpcyBub24tbnVsbC4KK1BBU1MgYWx0
ZXJuYXRlU2hlZXRMaW5rLnNoZWV0IGlzIG5vbi1udWxsLgorUEFTUyBtYWluU2hlZXRMaW5rLmRp
c2FibGVkIGlzIHRydWUKK1BBU1MgYWx0ZXJuYXRlU2hlZXRMaW5rLmRpc2FibGVkIGlzIGZhbHNl
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jc3MvbGluay1jc3MtZGlzYWJsZWQtdmFs
dWUtd2l0aC1zbG93LWxvYWRpbmctc2hlZXQtaW4tZXJyb3IuaHRtbCBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvY3NzL2xpbmstY3NzLWRpc2FibGVkLXZhbHVlLXdpdGgtc2xvdy1sb2FkaW5nLXNo
ZWV0LWluLWVycm9yLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDE2YzgzZDNjY2JiOTJjYzEyNDk1NzdiMjM1
ZWIwY2E1NjY4OGM5MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
Y3NzL2xpbmstY3NzLWRpc2FibGVkLXZhbHVlLXdpdGgtc2xvdy1sb2FkaW5nLXNoZWV0LWluLWVy
cm9yLmh0bWwKQEAgLTAsMCArMSwxNCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRG
Ly9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0icmVzb3VyY2VzL3Nsb3ctbG9hZGluZy1zaGVldC5waHA/Y29sb3I9Z3JlZW4iIG1lZGlh
PSJhbGwiIHRpdGxlPSJEZWZhdWx0IFN0eWxlIFNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgLz4KKzxs
aW5rIHJlbD0iYWx0ZXJuYXRlIHN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy9zbG93LWxvYWRp
bmctc2hlZXQucGhwLWluLWVycm9yIiBtZWRpYT0iYWxsIiB0aXRsZT0iZ3JlZW4iIHR5cGU9InRl
eHQvY3NzIiAvPgorPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgor
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2xpbmstY3Nz
LWRpc2FibGVkLXZhbHVlLXdpdGgtc2xvdy1sb2FkaW5nLXNoZWV0LWluLWVycm9yLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvY3NzL2xpbmstY3NzLWRpc2FibGVkLXZhbHVlLXdpdGgtc2xvdy1sb2FkaW5nLXNoZWV0
Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nzcy9saW5rLWNzcy1kaXNhYmxlZC12YWx1
ZS13aXRoLXNsb3ctbG9hZGluZy1zaGVldC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA3ZmYyY2NjYTFiNGZl
MjFlZjFkMTI1MTk1YTY2MmZjZmIyODY2MGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2Nzcy9saW5rLWNzcy1kaXNhYmxlZC12YWx1ZS13aXRoLXNsb3ctbG9hZGlu
Zy1zaGVldC5odG1sCkBAIC0wLDAgKzEsMTQgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8v
SUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9InJlc291cmNlcy9zbG93LWxvYWRpbmctc2hlZXQucGhwP2NvbG9yPXJlZCIgbWVk
aWE9ImFsbCIgdGl0bGU9IkRlZmF1bHQgU3R5bGUgU2hlZXQiIHR5cGU9InRleHQvY3NzIiAvPgor
PGxpbmsgcmVsPSJhbHRlcm5hdGUgc3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL3Nsb3ctbG9h
ZGluZy1zaGVldC5waHA/Y29sb3I9Z3JlZW4iIG1lZGlhPSJhbGwiIHRpdGxlPSJncmVlbiIgdHlw
ZT0idGV4dC9jc3MiIC8+Cis8c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48
L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvbGlu
ay1jc3MtZGlzYWJsZWQtdmFsdWUtd2l0aC1zbG93LWxvYWRpbmctc2hlZXQuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9jc3MvcmVzb3VyY2VzL2xpbmstY3NzLWRpc2FibGVkLXZhbHVlLXdpdGgtc2xvdy1sb2FkaW5n
LXNoZWV0LWluLWVycm9yLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jc3MvcmVzb3VyY2Vz
L2xpbmstY3NzLWRpc2FibGVkLXZhbHVlLXdpdGgtc2xvdy1sb2FkaW5nLXNoZWV0LWluLWVycm9y
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjA1ODlmMjczNmE2NDQ4OTU1NTRlOWQwNmQ4MGZlNWI5YTg5OTdmZjMK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nzcy9yZXNvdXJjZXMv
bGluay1jc3MtZGlzYWJsZWQtdmFsdWUtd2l0aC1zbG93LWxvYWRpbmctc2hlZXQtaW4tZXJyb3Iu
anMKQEAgLTAsMCArMSw0NSBAQAorZGVzY3JpcHRpb24oIlRlc3QgdGhhdCBIVE1MTGlua0VsZW1l
bnQncyBkaXNhYmxlZCBhdHRyaWJ1dGUgaXMgcHJvcGVybHkgY2FjaGVkIHdoaWxlIHNldCB3aGVu
IGxvYWRpbmcgYSBzdHlsZXNoZWV0LiIpOworCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKword2luZG93
LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCittYWluU2hlZXRMaW5rID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoImxpbmsiKVswXTsKK2FsdGVybmF0ZVNoZWV0TGluayA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJsaW5rIilbMV07CisKK21haW5TaGVldExpbmsuZGlzYWJs
ZWQgPSB0cnVlOworYWx0ZXJuYXRlU2hlZXRMaW5rLmRpc2FibGVkID0gZmFsc2U7CisKK2RlYnVn
KCJUZXN0aW5nIHZhbHVlIG9mICdkaXNhYmxlZCcgcHJpb3IgdG8gbG9hZCBqdXN0IGFmdGVyIHNl
dHRpbmcgdGhlbSIpOworc2hvdWxkQmVOb25OdWxsKCJtYWluU2hlZXRMaW5rLnNoZWV0Iik7Citz
aG91bGRCZU51bGwoImFsdGVybmF0ZVNoZWV0TGluay5zaGVldCIpOworc2hvdWxkQmVUcnVlKCJt
YWluU2hlZXRMaW5rLmRpc2FibGVkIiwgdHJ1ZSk7CitzaG91bGRCZUZhbHNlKCJhbHRlcm5hdGVT
aGVldExpbmsuZGlzYWJsZWQiKTsKKworZGVidWcoIlRlc3RpbmcgdGhlIHZhbHVlcyB3aGVuIHRo
ZSBhbHRlcm5hdGUgc2hlZXQgaXMgbG9hZGVkIChhcyB0aGlzIGlzIHRoZSBvbmx5IG9uZSB0aGF0
IGhhcyBzaGVldCgpID09PSBudWxsKSIpOworCitmdW5jdGlvbiBvblNoZWV0TG9hZGVkKGYsIGVs
ZW0sIG1heHRpbWUpIHsKKyAgICBpZiAoZWxlbS5zaGVldCB8fCBtYXh0aW1lIDw9IDApCisgICAg
ICAgIGYoKTsKKyAgICBlbHNlCisgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyBvblNo
ZWV0TG9hZGVkKGYsIGVsZW0sIG1heHRpbWUgLSAyNSk7fSwgMjUpOworfQorCitmdW5jdGlvbiB0
ZXN0V2hlbkxvYWRlZCgpIHsKKyAgICAgICAgLy8gVGhvc2UgbmV4dCAyIGxpbmVzIGFyZSBhIHNh
bml0eSBjaGVjay4KKyAgICAgICAgLy8gSWYgdGhlIHNlY29uZCBjaGVjayBmYWlscywgaXQgaXMg
bGlrZWx5IHRoYXQgdGhlIHRlc3QgdGltZWQgb3V0IGFuZCB0aHVzCisgICAgICAgIC8vIHlvdSBj
YW4gZGlzY2FyZCB0aGUgcmVzdCBvZiByZXN1bHRzIGFzIGl0IGlzIG5vdCB0ZXN0aW5nIHdoYXQg
d2Ugd2FudAorICAgICAgICAvLyAobmFtZWx5IHRoYXQgdGhlIGRpc2FibGVkIHZhbHVlIGlzIHBh
c3NlZCB0byB0aGUgZmluYWwgc2hlZXQpLgorICAgICAgICBzaG91bGRCZU5vbk51bGwoIm1haW5T
aGVldExpbmsuc2hlZXQiKTsKKyAgICAgICAgc2hvdWxkQmVOb25OdWxsKCJhbHRlcm5hdGVTaGVl
dExpbmsuc2hlZXQiKTsKKworICAgICAgICBzaG91bGRCZVRydWUoIm1haW5TaGVldExpbmsuZGlz
YWJsZWQiKTsKKyAgICAgICAgc2hvdWxkQmVGYWxzZSgiYWx0ZXJuYXRlU2hlZXRMaW5rLmRpc2Fi
bGVkIik7CisKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK29uU2hlZXRMb2FkZWQodGVz
dFdoZW5Mb2FkZWQsIGFsdGVybmF0ZVNoZWV0TGluaywgNTAwKTsKKwordmFyIHN1Y2Nlc3NmdWxs
eVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nzcy9y
ZXNvdXJjZXMvbGluay1jc3MtZGlzYWJsZWQtdmFsdWUtd2l0aC1zbG93LWxvYWRpbmctc2hlZXQu
anMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nzcy9yZXNvdXJjZXMvbGluay1jc3MtZGlzYWJs
ZWQtdmFsdWUtd2l0aC1zbG93LWxvYWRpbmctc2hlZXQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDU4OWYyNzM2
YTY0NDg5NTU1NGU5ZDA2ZDgwZmU1YjlhODk5N2ZmMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvY3NzL3Jlc291cmNlcy9saW5rLWNzcy1kaXNhYmxlZC12YWx1ZS13
aXRoLXNsb3ctbG9hZGluZy1zaGVldC5qcwpAQCAtMCwwICsxLDQ1IEBACitkZXNjcmlwdGlvbigi
VGVzdCB0aGF0IEhUTUxMaW5rRWxlbWVudCdzIGRpc2FibGVkIGF0dHJpYnV0ZSBpcyBwcm9wZXJs
eSBjYWNoZWQgd2hpbGUgc2V0IHdoZW4gbG9hZGluZyBhIHN0eWxlc2hlZXQuIik7CisKK2lmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2Fp
dFVudGlsRG9uZSgpOworCit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKK21haW5TaGVl
dExpbmsgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGluayIpWzBdOworYWx0ZXJu
YXRlU2hlZXRMaW5rID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxpbmsiKVsxXTsK
KworbWFpblNoZWV0TGluay5kaXNhYmxlZCA9IHRydWU7CithbHRlcm5hdGVTaGVldExpbmsuZGlz
YWJsZWQgPSBmYWxzZTsKKworZGVidWcoIlRlc3RpbmcgdmFsdWUgb2YgJ2Rpc2FibGVkJyBwcmlv
ciB0byBsb2FkIGp1c3QgYWZ0ZXIgc2V0dGluZyB0aGVtIik7CitzaG91bGRCZU5vbk51bGwoIm1h
aW5TaGVldExpbmsuc2hlZXQiKTsKK3Nob3VsZEJlTnVsbCgiYWx0ZXJuYXRlU2hlZXRMaW5rLnNo
ZWV0Iik7CitzaG91bGRCZVRydWUoIm1haW5TaGVldExpbmsuZGlzYWJsZWQiLCB0cnVlKTsKK3No
b3VsZEJlRmFsc2UoImFsdGVybmF0ZVNoZWV0TGluay5kaXNhYmxlZCIpOworCitkZWJ1ZygiVGVz
dGluZyB0aGUgdmFsdWVzIHdoZW4gdGhlIGFsdGVybmF0ZSBzaGVldCBpcyBsb2FkZWQgKGFzIHRo
aXMgaXMgdGhlIG9ubHkgb25lIHRoYXQgaGFzIHNoZWV0KCkgPT09IG51bGwpIik7CisKK2Z1bmN0
aW9uIG9uU2hlZXRMb2FkZWQoZiwgZWxlbSwgbWF4dGltZSkgeworICAgIGlmIChlbGVtLnNoZWV0
IHx8IG1heHRpbWUgPD0gMCkKKyAgICAgICAgZigpOworICAgIGVsc2UKKyAgICAgICAgc2V0VGlt
ZW91dChmdW5jdGlvbiAoKSB7IG9uU2hlZXRMb2FkZWQoZiwgZWxlbSwgbWF4dGltZSAtIDI1KTt9
LCAyNSk7Cit9CisKK2Z1bmN0aW9uIHRlc3RXaGVuTG9hZGVkKCkgeworICAgICAgICAvLyBUaG9z
ZSBuZXh0IDIgbGluZXMgYXJlIGEgc2FuaXR5IGNoZWNrLgorICAgICAgICAvLyBJZiB0aGUgc2Vj
b25kIGNoZWNrIGZhaWxzLCBpdCBpcyBsaWtlbHkgdGhhdCB0aGUgdGVzdCB0aW1lZCBvdXQgYW5k
IHRodXMKKyAgICAgICAgLy8geW91IGNhbiBkaXNjYXJkIHRoZSByZXN0IG9mIHJlc3VsdHMgYXMg
aXQgaXMgbm90IHRlc3Rpbmcgd2hhdCB3ZSB3YW50CisgICAgICAgIC8vIChuYW1lbHkgdGhhdCB0
aGUgZGlzYWJsZWQgdmFsdWUgaXMgcGFzc2VkIHRvIHRoZSBmaW5hbCBzaGVldCkuCisgICAgICAg
IHNob3VsZEJlTm9uTnVsbCgibWFpblNoZWV0TGluay5zaGVldCIpOworICAgICAgICBzaG91bGRC
ZU5vbk51bGwoImFsdGVybmF0ZVNoZWV0TGluay5zaGVldCIpOworCisgICAgICAgIHNob3VsZEJl
VHJ1ZSgibWFpblNoZWV0TGluay5kaXNhYmxlZCIpOworICAgICAgICBzaG91bGRCZUZhbHNlKCJh
bHRlcm5hdGVTaGVldExpbmsuZGlzYWJsZWQiKTsKKworICAgICAgICBmaW5pc2hKU1Rlc3QoKTsK
K30KKworb25TaGVldExvYWRlZCh0ZXN0V2hlbkxvYWRlZCwgYWx0ZXJuYXRlU2hlZXRMaW5rLCA1
MDApOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvY3NzL3Jlc291cmNlcy9zbG93LWxvYWRpbmctc2hlZXQtaW4tZXJy
b3IucGhwIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jc3MvcmVzb3VyY2VzL3Nsb3ctbG9hZGlu
Zy1zaGVldC1pbi1lcnJvci5waHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGNkMTdmN2Y3MjE5NjE0Njg3OTQxY2Rm
ODk1YzEwN2RlYWY3ZjVkNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvY3NzL3Jlc291cmNlcy9zbG93LWxvYWRpbmctc2hlZXQtaW4tZXJyb3IucGhwCkBAIC0wLDAg
KzEsMTMgQEAKKzw/cGhwCisvLyBXZSBzbGVlcCBoZXJlIHNvIHRoYXQgd2UgYXJlIGhhdmUgZW5v
dWdoIHRpbWUgdG8gdGVzdCB0aGUgZGlmZmVyZW50IGF0dHJpYnV0ZXMgYmVmb3JlIHRoZSBzdHls
ZXNoZWV0IGlzIGZ1bGx5IGxvYWRlZC4KK3VzbGVlcCgxMDApOworCitoZWFkZXIoIkhUVFAvMS4w
IDUwMCBJbnRlcm5hbCBFcnJvciIpOworaGVhZGVyKCJFeHBpcmVzOiBUaHUsIDAxIERlYyAyMDAz
IDE2OjAwOjAwIEdNVCIpOworaGVhZGVyKCJDYWNoZS1Db250cm9sOiBuby1jYWNoZSwgbm8tc3Rv
cmUsIG11c3QtcmV2YWxpZGF0ZSIpOworaGVhZGVyKCJQcmFnbWE6IG5vLWNhY2hlIik7CitoZWFk
ZXIoIkNvbnRlbnQtVHlwZTogdGV4dC9jc3MiKTsKKworb2JfZmx1c2goKTsKK2ZsdXNoKCk7Cis/
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jc3MvcmVzb3VyY2VzL3Nsb3ct
bG9hZGluZy1zaGVldC5waHAgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nzcy9yZXNvdXJjZXMv
c2xvdy1sb2FkaW5nLXNoZWV0LnBocApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yODkzN2Q0MmFmODAzMDViZThjMzhj
YzZmNmU5ZjAyZjAwYmY2ZGU5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9jc3MvcmVzb3VyY2VzL3Nsb3ctbG9hZGluZy1zaGVldC5waHAKQEAgLTAsMCArMSwxNSBA
QAorPD9waHAKKy8vIFdlIHNsZWVwIGhlcmUgc28gdGhhdCB3ZSBhcmUgaGF2ZSBlbm91Z2ggdGlt
ZSB0byB0ZXN0IHRoZSBkaWZmZXJlbnQgYXR0cmlidXRlcyBiZWZvcmUgdGhlIHN0eWxlc2hlZXQg
aXMgZnVsbHkgbG9hZGVkLgordXNsZWVwKDEwMCk7CisKK2hlYWRlcigiRXhwaXJlczogVGh1LCAw
MSBEZWMgMjAwMyAxNjowMDowMCBHTVQiKTsKK2hlYWRlcigiQ2FjaGUtQ29udHJvbDogbm8tY2Fj
aGUsIG5vLXN0b3JlLCBtdXN0LXJldmFsaWRhdGUiKTsKK2hlYWRlcigiUHJhZ21hOiBuby1jYWNo
ZSIpOworaGVhZGVyKCJDb250ZW50LVR5cGU6IHRleHQvY3NzIik7CisKKyRjb2xvciA9ICRfR0VU
Wydjb2xvciddOworCitlY2hvICJoMSB7IGJhY2tncm91bmQtY29sb3I6ICRjb2xvciB9XG4iOwor
b2JfZmx1c2goKTsKK2ZsdXNoKCk7Cis/PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDdjMWE4ZDk1MTFiZDk1ZWFj
OTQwMDA0MzM1MGZkMTM3NmE4NTIwZTkuLmRlNzkyODEwMzIwYzY1YmRjYTIwOWJiNTY0YjAxYmFm
ZGIxMmQ1MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MiBAQAorMjAxMS0wOC0yMiAgSnVsaWVu
IENoYWZmcmFpeCAgPGpjaGFmZnJhaXhAd2Via2l0Lm9yZz4KKworICAgICAgICBSRUdSRVNTSU9O
IChyODQzMjctcjg0MzI5KTogQ1NTIHN0eWxlc2hlZXRzIGZhaWwgdG8gbG9hZCBvbiB3d3cuZmxh
Z3N0YXIuY29tIGxvZ2luIHBhZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTY1MTQwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS85ODM1OTA1PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzOiBmYXN0
L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1maXJzdC1hbHRlcm5hdGUtbGluay5odG1sCisgICAgICAg
ICAgICAgICBmYXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1maXJzdC1hbHRlcm5hdGUtb24tbG9h
ZC1saW5rLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxlLWZp
cnN0LWFsdGVybmF0ZS1vbi1sb2FkLXNoZWV0Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvY3Nz
L3N0eWxlc2hlZXQtZW5hYmxlLXNlY29uZC1hbHRlcm5hdGUtbGluay5odG1sCisgICAgICAgICAg
ICAgICBmYXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1zZWNvbmQtYWx0ZXJuYXRlLW9uLWxvYWQt
bGluay5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1zZWNv
bmQtYWx0ZXJuYXRlLW9uLWxvYWQtc2hlZXQuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0
cy9jc3MvbGluay1jc3MtZGlzYWJsZWQtdmFsdWUtd2l0aC1zbG93LWxvYWRpbmctc2hlZXQtaW4t
ZXJyb3IuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9jc3MvbGluay1jc3MtZGlzYWJs
ZWQtdmFsdWUtd2l0aC1zbG93LWxvYWRpbmctc2hlZXQuaHRtbAorCisgICAgICAgIFRoZSBnaXN0
IG9mIHRoZSBpc3N1ZSBpcyB0aGF0IHdlIHdlcmUgaWdub3JpbmcgY2FsbHMgdG8gSFRNTExpbmtF
bGVtZW50OjpzZXREaXNhYmxlZCB0aGF0IHdvdWxkIGVuYWJsZSBhCisgICAgICAgIHN0eWxlIHNo
ZWV0IHdoZW4gd2Ugd2VyZSBsb2FkaW5nIGEgc3R5bGVzaGVldCAobV9zaGVldCB3YXMgMCBhbmQg
dGh1cyBpZ25vcmVkIHRoZSBjYWxsIHBlciB0aGUgc3BlYykuCisKKyAgICAgICAgRkYgZ29lcyBh
Z2FpbnN0IHRoZSBDU1MgT00gc3BlYyBpbiB0aGlzIGNhc2UgYW5kIGFsd2F5cyBrZWVwIGFuIGFz
c29jaWF0ZWQgc2hlZXQgYXMgbG9uZyBhcyAncmVsJyBoaW50cworICAgICAgICBhdCBhIHN0eWxl
c2hlZXQgbGluayBhbmQgaHJlZiBpcyBwcmVzZW50LiBJbnN0ZWFkIG9mIHNpZGluZyB3aXRoIEZG
LCBJIGNvbnRpbnVlZCB0byBmb2xsb3cgdGhlCisgICAgICAgIHNwZWNpZmljYXRpb24gYW5kIHN0
b3JlIHRoZSBlbmFibGVkIHZpYSBqYXZhc2NyaXB0IHN0YXRlIGludG8gbV9zY3JpcHRTdGF0ZSAo
cmVuYW1lZCBmcm9tCisgICAgICAgIG1faXNFbmFibGVkVmlhU2NyaXB0KS4gVGhpcyBpbmZvcm1h
dGlvbiBnZXRzIG1lcmdlZCBiYWNrIGludG8gdGhlIHN0eWxlIHNoZWV0IGRpc2FibGVkIHN0YXRl
IHdoZW4gaXQgaXMKKyAgICAgICAgYXZhaWxhYmxlLgorCisgICAgICAgIFdoaWxlIGRlYnVnZ2lu
ZyB0aGUgY2FzZSBhdCBoYW5kLCBJIGZvdW5kIHNvbWUgY2FzZXMgdGhhdCB3ZXJlIG5vdCBwcm9w
ZXJseSBoYW5kbGVkIGFuZCB3ZXJlIGZpeGVkIGFzCisgICAgICAgIHBhcnQgb2YgdGhpcyBjaGFu
Z2UuCisKKyAgICAgICAgKiBjc3MvU3R5bGVTaGVldC5pZGw6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNTdHlsZVNoZWV0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTU3R5bGVTaGVl
dDo6c2V0RGlzYWJsZWQpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFN0eWxlU2hl
ZXRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhTdHlsZVNoZWV0OjpkaXNhYmxlZEFj
Y2Vzc29yU2V0dGVyKToKKyAgICAgICAgTWFkZSB8ZGlzYWJsZWR8IHNldHRlciBjdXN0b20gYmlu
ZGluZyBzbyB0aGF0IHdlIGNhbiBmb3J3YXJkIGFueSByZXF1ZXN0IHRocm91Z2ggb3VyIGFzc29j
aWF0ZWQKKyAgICAgICAgPGxpbms+IGVsZW1lbnQgKGlmIHdlIGhhdmUgb25lKS4gVGhpcyBpcyB0
aGUgbW9zdCBzYW5lIG9wdGlvbiBhcyB0aGlzIG1ha2VzIHN1cmUgdGhhdCBtX3NjcmlwdFN0YXRl
CisgICAgICAgIGFuZCBtX3NoZWV0LT5kaXNhYmxlZCgpIGFyZSBhbHdheXMgaW4gc3luYyB3aGls
ZSBlbnN1cmluZyB0aGF0IG1fc2NyaXB0U3RhdGUgaXMgbmV2ZXIgZW5hYmxlZCB3aGVuIEpTCisg
ICAgICAgIHdhcyBub3QgdGhlIGNhbGxlci4KKworICAgICAgICAqIGh0bWwvSFRNTExpbmtFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudDo6SFRNTExpbmtFbGVt
ZW50KTogVXBkYXRlZCBhZnRlciBtX2lzRW5hYmxlZFZpYVNjcmlwdCByZW5hbWUuCisgICAgICAg
IChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OnNldERpc2FibGVkKTogQWx3YXlzIGNhbGwgc2V0
SXNFbmFibGVkVmlhU2NyaXB0IHNvIHRoYXQKKyAgICAgICAgdGhlIGluZm9ybWF0aW9uIGlzIHBy
b3Blcmx5IHN0b3JlZCAoZWl0aGVyIGZvciByZWNhbGNTdHlsZVNlbGVjdG9yIG9yIGp1c3QgdG8g
c3RvcmUKKyAgICAgICAgdGhlIHN0YXRlIGR1cmluZyBsb2FkaW5nKS4KKworICAgICAgICAoV2Vi
Q29yZTo6SFRNTExpbmtFbGVtZW50OjpzaGVldExvYWRlZCk6IE1lcmdlIGJhY2sgdGhlIHN0YXRl
IGZyb20gbV9zY3JpcHRTdGF0ZSB0bworICAgICAgICB0aGUgc2hlZXQncyBkaXNhYmxlZCBzdGF0
ZS4KKworICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50OjpkaXNhYmxlZCk6IEFjY291
bnQgZm9yIHRoZSB0ZW1wb3Jhcnkgc3RhdGUgYW5kIHJldHVybiB0aGUKKyAgICAgICAgcmlnaHQg
dmFsdWUuIEl0IG1hdGNoZXMgRkYgYW5kIHdoYXQgcGVvcGxlIHdvdWxkIGV4cGVjdC4KKworICAg
ICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50OjphcmVEaXNhYmxlZEFuZFNjcmlwdFN0YXRl
c0NvbnNpc3RlbnQpOiBEZWJ1ZyBvbmx5IG1ldGhvZAorICAgICAgICB0aGF0IGNoZWNrcyB0aGF0
IGRpc2FibGVkKCkgYW5kIGlzRW5hYmxlZFZpYVNjcmlwdCgpIGFyZSBjb25zaXN0ZW50IHdpdGgg
ZWFjaCBvdGhlcgorICAgICAgICAodW5kZXIgc29tZSBjaXJjdW1zdGFuY2VzKS4KKworICAgICAg
ICAqIGh0bWwvSFRNTExpbmtFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0Vs
ZW1lbnQ6OmlzRW5hYmxlZFZpYVNjcmlwdCk6IFVwZGF0ZWQgYWZ0ZXIgbV9pc0VuYWJsZWRWaWFT
Y3JpcHQgcmVuYW1lLgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50OjpzZXRJc0Vu
YWJsZWRWaWFTY3JpcHQpOiBBZGRlZCBzZXR0ZXIuCisKIDIwMTEtMDgtMTkgIEJldGggRGFraW4g
IDxiZGFraW5AYXBwbGUuY29tPgogCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD02NjU5MApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNTdHlsZVNoZWV0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
U3R5bGVTaGVldEN1c3RvbS5jcHAKaW5kZXggMjFlMDBiMTY4YzIyNTQxMTgxMTRkMmE0OTFlMWU0
ZTIwNTExYzZlNi4uNTFkYzM1MDY2MGZhMDdkYTYxNTJmZTgwOTlkOGI0MGM1NTY1ZjJkYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdHlsZVNoZWV0Q3VzdG9tLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0eWxlU2hlZXRDdXN0b20uY3Bw
CkBAIC0yNyw5ICsyNywxMSBAQAogI2luY2x1ZGUgIkpTU3R5bGVTaGVldC5oIgogCiAjaW5jbHVk
ZSAiQ1NTU3R5bGVTaGVldC5oIgotI2luY2x1ZGUgIk5vZGUuaCIKKyNpbmNsdWRlICJIVE1MTGlu
a0VsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJKU0NTU1N0eWxl
U2hlZXQuaCIKICNpbmNsdWRlICJKU05vZGUuaCIKKyNpbmNsdWRlICJOb2RlLmgiCiAKIHVzaW5n
IG5hbWVzcGFjZSBKU0M7CiAKQEAgLTYxLDQgKzYzLDE1IEBAIEpTVmFsdWUgdG9KUyhFeGVjU3Rh
dGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0eWxlU2hlZXQqIHN0
eWxlCiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiAKK3ZvaWQgSlNTdHlsZVNoZWV0OjpzZXREaXNh
YmxlZChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgU3R5bGVTaGVldCog
c3R5bGVTaGVldCA9IHN0YXRpY19jYXN0PFN0eWxlU2hlZXQqPihpbXBsKCkpOworICAgIGJvb2wg
ZGlzYWJsZWQgPSB2YWx1ZS50b0Jvb2xlYW4oZXhlYyk7CisgICAgaWYgKHN0eWxlU2hlZXQtPm93
bmVyTm9kZSgpICYmIHN0eWxlU2hlZXQtPm93bmVyTm9kZSgpLT5oYXNUYWdOYW1lKEhUTUxOYW1l
czo6bGlua1RhZykpIHsKKyAgICAgICAgSFRNTExpbmtFbGVtZW50KiBsaW5rRWxlbWVudCA9IHN0
YXRpY19jYXN0PEhUTUxMaW5rRWxlbWVudCo+KHN0eWxlU2hlZXQtPm93bmVyTm9kZSgpKTsKKyAg
ICAgICAgbGlua0VsZW1lbnQtPnNldERpc2FibGVkKGRpc2FibGVkKTsKKyAgICB9IGVsc2UKKyAg
ICAgICAgc3R5bGVTaGVldC0+c2V0RGlzYWJsZWQoZGlzYWJsZWQpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhTdHlsZVNoZWV0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOFN0eWxlU2hlZXRDdXN0b20uY3BwCmluZGV4IDBmZTZhZjg1MGFkMzM5MzgzNTBkYjZm
YWJmYmQwM2FhMWQ3N2Y5YWQuLmQ3ODIwNzg5ZTBhMTJkOGE0NTM1MzNlYTk4MjhkZWY2OTI2YWI4
YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFN0eWxl
U2hlZXRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OFN0eWxlU2hlZXRDdXN0b20uY3BwCkBAIC0zMSw5ICszMSwxMiBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIlY4U3R5bGVTaGVldC5oIgogCisjaW5jbHVkZSAiSFRNTExpbmtFbGVt
ZW50LmgiCisjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiVjhET01XcmFwcGVyLmgi
CiAjaW5jbHVkZSAiVjhDU1NTdHlsZVNoZWV0LmgiCiAjaW5jbHVkZSAiVjhOb2RlLmgiCisjaW5j
bHVkZSAiVjhQcm94eS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTUxLDQgKzU0LDE3
IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KFN0eWxlU2hlZXQqIGltcGwpCiAgICAgcmV0
dXJuIHdyYXBwZXI7CiB9CiAKK3ZvaWQgVjhTdHlsZVNoZWV0OjpkaXNhYmxlZEFjY2Vzc29yU2V0
dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1
ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5T
dHlsZVNoZWV0LmRpc2FibGVkLl9zZXQiKTsKKyAgICBTdHlsZVNoZWV0KiBpbXAgPSBWOFN0eWxl
U2hlZXQ6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIGJvb2wgZGlzYWJsZWQgPSB2YWx1
ZS0+Qm9vbGVhblZhbHVlKCk7CisgICAgaWYgKGltcC0+b3duZXJOb2RlKCkgJiYgaW1wLT5vd25l
ck5vZGUoKS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OmxpbmtUYWcpKSB7CisgICAgICAgIEhUTUxM
aW5rRWxlbWVudCogbGlua0VsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MTGlua0VsZW1lbnQqPihp
bXAtPm93bmVyTm9kZSgpKTsKKyAgICAgICAgbGlua0VsZW1lbnQtPnNldERpc2FibGVkKGRpc2Fi
bGVkKTsKKyAgICB9IGVsc2UKKyAgICAgICAgaW1wLT5zZXREaXNhYmxlZChkaXNhYmxlZCk7Cisg
ICAgcmV0dXJuOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVT
aGVldC5pZGwKaW5kZXggNmQ1ZGY4MDc2NThkMTNlYjIxYTg2OTA0OWM3ODY5YmRkNjEzM2I4Mi4u
ZDZiMGI4MGYyY2Q1NThlODMxMzgwZDY1MzA3NmI0MjU5ZDgxOGNmOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVNoZWV0LmlkbApAQCAtMjksNyArMjksNyBAQCBtb2R1bGUgc3R5bGVzaGVldHMgewogICAg
ICAgICBWOERlcGVuZGVudExpZmV0aW1lCiAgICAgXSBTdHlsZVNoZWV0IHsKICAgICAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFN0cmluZ1RvPU51bGxdIERPTVN0cmluZyAgICAg
ICAgdHlwZTsKLSAgICAgICAgICAgICAgICAgYXR0cmlidXRlIGJvb2xlYW4gICAgICAgICAgZGlz
YWJsZWQ7CisgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBbQ3VzdG9tU2V0dGVyXSBib29sZWFu
IGRpc2FibGVkOwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgTm9kZSAgICAgICAgICAgICBv
d25lck5vZGU7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTdHlsZVNoZWV0ICAgICAgIHBh
cmVudFN0eWxlU2hlZXQ7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbQ29udmVydE51bGxT
dHJpbmdUbz1OdWxsXSBET01TdHJpbmcgICAgICAgIGhyZWY7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxMaW5rRWxlbWVudC5jcHAKaW5kZXggNGJjNmU5MzNlY2QwZGYzYmNlYzM5YjFjYzhjYTNmOThm
OTc4ODlkMi4uZWFiMmQ0MTI4NzcxNTk2ZTQ0YjZhNDY4MTZhZTJkYmUyNzY1YzJkNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcApAQCAtNTYsNyArNTYsNyBAQCBpbmxp
bmUgSFRNTExpbmtFbGVtZW50OjpIVE1MTGlua0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQqCiAgICAgLCBtX2xpbmtMb2FkZXIodGhpcykKICAgICAsIG1fc2l6
ZXMoRE9NU2V0dGFibGVUb2tlbkxpc3Q6OmNyZWF0ZSgpKQogICAgICwgbV9sb2FkaW5nKGZhbHNl
KQotICAgICwgbV9pc0VuYWJsZWRWaWFTY3JpcHQoZmFsc2UpCisgICAgLCBtX3NjcmlwdFN0YXRl
KFVuc2V0KQogICAgICwgbV9jcmVhdGVkQnlQYXJzZXIoY3JlYXRlZEJ5UGFyc2VyKQogICAgICwg
bV9pc0luU2hhZG93VHJlZShmYWxzZSkKICAgICAsIG1fcGVuZGluZ1NoZWV0VHlwZShOb25lKQpA
QCAtODUsMTUgKzg1LDIwIEBAIEhUTUxMaW5rRWxlbWVudDo6fkhUTUxMaW5rRWxlbWVudCgpCiAK
IHZvaWQgSFRNTExpbmtFbGVtZW50OjpzZXREaXNhYmxlZChib29sIGRpc2FibGVkKQogeworICAg
IGJvb2wgd2FzRW5hYmxlZFZpYVNjcmlwdCA9IGlzRW5hYmxlZFZpYVNjcmlwdCgpOworICAgIHNl
dElzRW5hYmxlZFZpYVNjcmlwdCghZGlzYWJsZWQpOworCiAgICAgaWYgKCFtX3NoZWV0KQogICAg
ICAgICByZXR1cm47CiAKICAgICBib29sIHdhc0Rpc2FibGVkID0gbV9zaGVldC0+ZGlzYWJsZWQo
KTsKLSAgICBpZiAod2FzRGlzYWJsZWQgPT0gZGlzYWJsZWQpCisgICAgaWYgKHdhc0Rpc2FibGVk
ID09IGRpc2FibGVkKSB7CisgICAgICAgIGlmICh3YXNFbmFibGVkVmlhU2NyaXB0ICE9IGlzRW5h
YmxlZFZpYVNjcmlwdCgpKQorICAgICAgICAgICAgZG9jdW1lbnQoKS0+c3R5bGVTZWxlY3RvckNo
YW5nZWQoRGVmZXJSZWNhbGNTdHlsZSk7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBt
X3NoZWV0LT5zZXREaXNhYmxlZChkaXNhYmxlZCk7Ci0gICAgbV9pc0VuYWJsZWRWaWFTY3JpcHQg
PSAhZGlzYWJsZWQ7CiAKICAgICAvLyBJZiB3ZSBjaGFuZ2UgdGhlIGRpc2FibGVkIHN0YXRlIHdo
aWxlIHRoZSBzaGVldCBpcyBzdGlsbCBsb2FkaW5nLCB0aGVuIHdlIGhhdmUgdG8KICAgICAvLyBw
ZXJmb3JtIHRocmVlIGNoZWNrczoKQEAgLTEyMCw2ICsxMjUsOCBAQCB2b2lkIEhUTUxMaW5rRWxl
bWVudDo6c2V0RGlzYWJsZWQoYm9vbCBkaXNhYmxlZCkKIAogICAgIGlmICghZGlzYWJsZWQpCiAg
ICAgICAgIHByb2Nlc3MoKTsKKworICAgIEFTU0VSVChhcmVEaXNhYmxlZEFuZFNjcmlwdFN0YXRl
c0NvbnNpc3RlbnQoKSk7CiB9CiAKIFN0eWxlU2hlZXQqIEhUTUxMaW5rRWxlbWVudDo6c2hlZXQo
KSBjb25zdApAQCAtMzU5LDEwICszNjYsMjAgQEAgdm9pZCBIVE1MTGlua0VsZW1lbnQ6OmxpbmtM
b2FkaW5nRXJyb3JlZCgpCiAKIGJvb2wgSFRNTExpbmtFbGVtZW50OjpzaGVldExvYWRlZCgpCiB7
CisgICAgLy8gTWlncmF0ZSB0aGUgZGlzYWJsZWQgaW5mb3JtYXRpb24gYmVmb3JlIHJlbW92ZVBl
bmRpbmdTaGVldCBpcyBjYWxsZWQKKyAgICAvLyBhcyBpdCB3aWxsIHN0YXJ0IGEgcmVjYWxTdHls
ZVNlbGVjdG9yIHdoaWNoIG5lZWRzIHRoaXMgaW5mb3JtYXRpb24uCisgICAgaWYgKG1fc2NyaXB0
U3RhdGUgIT0gVW5zZXQpIHsKKyAgICAgICAgQVNTRVJUKCFtX2xvYWRpbmcpOworICAgICAgICAv
LyBGSVhNRTogV2Ugc2hvdWxkIEFTU0VSVCB0aGF0IGl0IHdhcyBzZXQgZm9yIHN0eWxlc2hlZXRz
IG9ubHksIGJ1dAorICAgICAgICAvLyBjdXJyZW50bHkgd2UgYWxsb3cgc2V0RGlzYWJsZWQgdG8g
YmUgY2FsbGVkIHJlZ2FyZGxlc3Mgb2YgdGhlIDxsaW5rPiByZWwuCisgICAgICAgIHNldERpc2Fi
bGVkKG1fc2NyaXB0U3RhdGUgPT0gRGlzYWJsZWRWaWFTY3JpcHQpOworICAgIH0KKwogICAgIGlm
ICghaXNMb2FkaW5nKCkpIHsKICAgICAgICAgcmVtb3ZlUGVuZGluZ1NoZWV0KCk7CiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KKwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtNDQ1LDcg
KzQ2MiwyMCBAQCB2b2lkIEhUTUxMaW5rRWxlbWVudDo6cmVtb3ZlUGVuZGluZ1NoZWV0KCkKIAog
Ym9vbCBIVE1MTGlua0VsZW1lbnQ6OmRpc2FibGVkKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9z
aGVldCAmJiBtX3NoZWV0LT5kaXNhYmxlZCgpOworICAgIEFTU0VSVChhcmVEaXNhYmxlZEFuZFNj
cmlwdFN0YXRlc0NvbnNpc3RlbnQoKSk7CisKKyAgICBpZiAoIW1fc2hlZXQpIHsKKyAgICAgICAg
Ly8gRkYgZGlzYWdyZWVzIHdpdGggdGhlIENTUyBPTSBzcGVjIGFuZCBhbHdheXMgaGFzIGFuIGFz
c29jaWF0ZWQgc3R5bGVzaGVldCBmb3IgYWx0ZXJuYXRlIHNoZWV0IChyZWdhcmRsZXNzIG9mIHdo
ZXRoZXIKKyAgICAgICAgLy8gdGhlIHJlc291cmNlIGlzIGZldGNoZWQpLiBBcyB3ZSBzdG9yZSB0
aGUgZW5hYmxlZCBzdGF0ZSBpbiBtX3NjcmlwdFN0YXRlIHdoaWxlIGxvYWRpbmcsIHJldHVybiB0
aGlzIGluZm9ybWF0aW9uIHRvIGJlCisgICAgICAgIC8vIGNvbnNpc3RlbnQgd2l0aCBGRi4gc2hl
ZXRMb2FkZWQoKSBpcyBjYWxsZWQgYXQgdGhlIGVuZCBvZiBhbnkgdHJhbnNmZXIgKHdoZXRoZXIg
aXQgd2FzIGluIGVycm9yIG9yIG5vdCkgc28gbV9zY3JpcHRTdGF0ZQorICAgICAgICAvLyB3aWxs
IGJlIHRyYW5zZmVyZWQgYmFjayBpbnRvIG91ciBzdHlsZXNoZWV0IGFuZCB0aGUgZGlzYWJsZWQo
KSB2YWx1ZSBzaG91bGQgYWx3YXlzIGJlIGNvbnNpc3RlbnQuCisgICAgICAgIGlmIChpc0xvYWRp
bmcoKSAmJiBtX3NjcmlwdFN0YXRlICE9IFVuc2V0KQorICAgICAgICAgICAgcmV0dXJuIG1fc2Ny
aXB0U3RhdGUgPT0gRGlzYWJsZWRWaWFTY3JpcHQ7CisKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKworICAgIHJldHVybiBtX3NoZWV0LT5kaXNhYmxlZCgpOwogfQogCiBET01TZXR0YWJs
ZVRva2VuTGlzdCogSFRNTExpbmtFbGVtZW50OjpzaXplcygpIGNvbnN0CkBAIC00NTgsNCArNDg4
LDIzIEBAIHZvaWQgSFRNTExpbmtFbGVtZW50OjpzZXRTaXplcyhjb25zdCBTdHJpbmcmIHZhbHVl
KQogICAgIG1fc2l6ZXMtPnNldFZhbHVlKHZhbHVlKTsKIH0KIAorI2lmbmRlZiBOREVCVUcKK2Jv
b2wgSFRNTExpbmtFbGVtZW50OjphcmVEaXNhYmxlZEFuZFNjcmlwdFN0YXRlc0NvbnNpc3RlbnQo
KSBjb25zdAoreworICAgIGlmICghbV9yZWxBdHRyaWJ1dGUubV9pc1N0eWxlU2hlZXQpCisgICAg
ICAgIHJldHVybiB0cnVlOworCisgICAgLy8gRHVyaW5nIGxvYWRpbmcsIG1fc2NyaXB0U3RhdGUg
aG9sZHMgdGhlIHRlbXBvcmFyeSB2YWx1ZSBmb3Igc2hlZXQoKS0+ZGlzYWJsZWQoKQorICAgIC8v
IHNvIGl0IGNhbiBoYXZlIGFueSB2YWx1ZXMgKHNhbWUgZm9yIHNoZWV0KCktPmRpc2FibGVkKCkp
LgorICAgIGlmIChpc0xvYWRpbmcoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAo
IXNoZWV0KCkgfHwgbV9zY3JpcHRTdGF0ZSA9PSBVbnNldCkKKyAgICAgICAgcmV0dXJuIHRydWU7
CisKKyAgICBib29sIGlzRGlzYWJsZWRWaWFTY3JpcHQgPSBtX3NjcmlwdFN0YXRlID09IERpc2Fi
bGVkVmlhU2NyaXB0OworICAgIHJldHVybiBpc0Rpc2FibGVkVmlhU2NyaXB0ID09IHNoZWV0KCkt
PmRpc2FibGVkKCk7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmgKaW5kZXggOGZlZGUwMmU1ZTdmOTJiNzQwZjg1OTA5
MTNlOGI3NTlhNmQxNTEzOC4uYWM1MThkMjkyZmM0MzUxNGM2YWVkZTI0NTFmNWRlODlhYzdiZmJh
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oCkBAIC01Nyw3ICs1Nyw3IEBA
IHB1YmxpYzoKIAogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSByZW5hbWVkIGlzU3R5bGVT
aGVldExvYWRpbmcgYXMgdGhpcyBpcyBvbmx5IHVzZWQgZm9yIHN0eWxlc2hlZXRzLgogICAgIGJv
b2wgaXNMb2FkaW5nKCkgY29uc3Q7Ci0gICAgYm9vbCBpc0VuYWJsZWRWaWFTY3JpcHQoKSBjb25z
dCB7IHJldHVybiBtX2lzRW5hYmxlZFZpYVNjcmlwdDsgfQorICAgIGJvb2wgaXNFbmFibGVkVmlh
U2NyaXB0KCkgY29uc3QgeyByZXR1cm4gbV9zY3JpcHRTdGF0ZSA9PSBFbmFibGVkVmlhU2NyaXB0
OyB9CiAgICAgYm9vbCBkaXNhYmxlZCgpIGNvbnN0OwogICAgIHZvaWQgc2V0RGlzYWJsZWQoYm9v
bCk7CiAgICAgdm9pZCBzZXRTaXplcyhjb25zdCBTdHJpbmcmKTsKQEAgLTg1LDcgKzg1LDYgQEAg
cHJpdmF0ZToKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgaXNVUkxBdHRyaWJ1dGUoQXR0cmlidXRl
KikgY29uc3Q7CiAKLXByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGFkZFN1YnJlc291cmNlQXR0
cmlidXRlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYpIGNvbnN0OwogCiAgICAgdmlydHVhbCB2b2lk
IGZpbmlzaFBhcnNpbmdDaGlsZHJlbigpOwpAQCAtOTcsNiArOTYsMTEgQEAgcHJpdmF0ZToKIHBy
aXZhdGU6CiAgICAgSFRNTExpbmtFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVu
dCosIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKTsKIAorICAgIHZvaWQgc2V0SXNFbmFibGVkVmlhU2Ny
aXB0KGJvb2wgZW5hYmxlZCkgeyBtX3NjcmlwdFN0YXRlID0gZW5hYmxlZCA/IEVuYWJsZWRWaWFT
Y3JpcHQgOiBEaXNhYmxlZFZpYVNjcmlwdDsgfQorI2lmbmRlZiBOREVCVUcKKyAgICBib29sIGFy
ZURpc2FibGVkQW5kU2NyaXB0U3RhdGVzQ29uc2lzdGVudCgpIGNvbnN0OworI2VuZGlmCisKICAg
ICBMaW5rTG9hZGVyIG1fbGlua0xvYWRlcjsKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNo
ZWRDU1NTdHlsZVNoZWV0PiBtX2NhY2hlZFNoZWV0OwogICAgIFJlZlB0cjxDU1NTdHlsZVNoZWV0
PiBtX3NoZWV0OwpAQCAtMTA2LDEwICsxMTAsMTEgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8RE9N
U2V0dGFibGVUb2tlbkxpc3Q+IG1fc2l6ZXM7CiAgICAgTGlua1JlbEF0dHJpYnV0ZSBtX3JlbEF0
dHJpYnV0ZTsKICAgICBib29sIG1fbG9hZGluZzsKLSAgICBib29sIG1faXNFbmFibGVkVmlhU2Ny
aXB0OworICAgIGVudW0gRW5hYmxlZFZpYVNjcmlwdFN0YXRlIHsgVW5zZXQsIEVuYWJsZWRWaWFT
Y3JpcHQsIERpc2FibGVkVmlhU2NyaXB0IH07CisgICAgRW5hYmxlZFZpYVNjcmlwdFN0YXRlIG1f
c2NyaXB0U3RhdGU7CiAgICAgYm9vbCBtX2NyZWF0ZWRCeVBhcnNlcjsKICAgICBib29sIG1faXNJ
blNoYWRvd1RyZWU7Ci0gICAgCisKICAgICBQZW5kaW5nU2hlZXRUeXBlIG1fcGVuZGluZ1NoZWV0
VHlwZTsKIH07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106028</attachid>
            <date>2011-09-01 14:20:36 -0700</date>
            <delta_ts>2011-09-01 17:17:24 -0700</delta_ts>
            <desc>Patch 8: Revert the 2 previous changes, keeping the test cases developped (covered by 67436).</desc>
            <filename>bug-65140-20110901142035.patch</filename>
            <type>text/plain</type>
            <size>42297</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTI3MjkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBiYjVkYmNhMDZhNzhhODQ2YTczMDVk
YzUzZWQ1OTc1NGNjMmM3YmI5Li44MzFhODRmNGE4NTRmYTM2N2Y1YTc3YWIwZWU2YjAyZjI3Yzg3
NjFjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNDYgQEAKKzIwMTEtMDktMDEgIEp1bGllbiBDaGFmZnJhaXgg
IDxqY2hhZmZyYWl4QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUkVHUkVTU0lPTiAocjg0MzI3LXI4
NDMyOSk6IENTUyBzdHlsZXNoZWV0cyBmYWlsIHRvIGxvYWQgb24gd3d3LmZsYWdzdGFyLmNvbSBs
b2dpbiBwYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02NTE0MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogZmFzdC9jc3Mvc3R5bGVzaGVldC1lbmFibGUtZmlyc3QtYWx0ZXJuYXRlLWxpbmstZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1maXJz
dC1hbHRlcm5hdGUtbGluay5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9zdHlsZXNo
ZWV0LWVuYWJsZS1maXJzdC1hbHRlcm5hdGUtb24tbG9hZC1saW5rLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9jc3Mvc3R5bGVzaGVldC1lbmFibGUtZmlyc3QtYWx0ZXJuYXRl
LW9uLWxvYWQtbGluay5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9zdHlsZXNoZWV0
LWVuYWJsZS1maXJzdC1hbHRlcm5hdGUtb24tbG9hZC1zaGVldC1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxlLWZpcnN0LWFsdGVybmF0ZS1v
bi1sb2FkLXNoZWV0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL3N0eWxlc2hlZXQt
ZW5hYmxlLXNlY29uZC1hbHRlcm5hdGUtbGluay1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxlLXNlY29uZC1hbHRlcm5hdGUtbGluay5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1zZWNvbmQtYWx0
ZXJuYXRlLW9uLWxvYWQtbGluay1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
Y3NzL3N0eWxlc2hlZXQtZW5hYmxlLXNlY29uZC1hbHRlcm5hdGUtb24tbG9hZC1saW5rLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxlLXNlY29uZC1hbHRl
cm5hdGUtb24tbG9hZC1zaGVldC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
Y3NzL3N0eWxlc2hlZXQtZW5hYmxlLXNlY29uZC1hbHRlcm5hdGUtb24tbG9hZC1zaGVldC5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2Nzcy9saW5rLWNzcy1kaXNhYmxlZC12YWx1
ZS13aXRoLXNsb3ctbG9hZGluZy1zaGVldC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGh0dHAvdGVzdHMvY3NzL2xpbmstY3NzLWRpc2FibGVkLXZhbHVlLXdpdGgtc2xvdy1sb2FkaW5n
LXNoZWV0LWluLWVycm9yLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0
cy9jc3MvbGluay1jc3MtZGlzYWJsZWQtdmFsdWUtd2l0aC1zbG93LWxvYWRpbmctc2hlZXQtaW4t
ZXJyb3IuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9jc3MvbGluay1jc3MtZGlz
YWJsZWQtdmFsdWUtd2l0aC1zbG93LWxvYWRpbmctc2hlZXQuaHRtbDogQWRkZWQuCisgICAgICAg
ICogaHR0cC90ZXN0cy9jc3MvcmVzb3VyY2VzL2xpbmstY3NzLWRpc2FibGVkLXZhbHVlLXdpdGgt
c2xvdy1sb2FkaW5nLXNoZWV0LWluLWVycm9yLmpzOiBBZGRlZC4KKyAgICAgICAgKG9uU2hlZXRM
b2FkZWQpOgorICAgICAgICAodGVzdFdoZW5Mb2FkZWQpOgorICAgICAgICAqIGh0dHAvdGVzdHMv
Y3NzL3Jlc291cmNlcy9saW5rLWNzcy1kaXNhYmxlZC12YWx1ZS13aXRoLXNsb3ctbG9hZGluZy1z
aGVldC5qczogQWRkZWQuCisgICAgICAgIChvblNoZWV0TG9hZGVkKToKKyAgICAgICAgKHRlc3RX
aGVuTG9hZGVkKToKKyAgICAgICAgKiBodHRwL3Rlc3RzL2Nzcy9yZXNvdXJjZXMvc2xvdy1sb2Fk
aW5nLXNoZWV0LWluLWVycm9yLnBocDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9jc3Mv
cmVzb3VyY2VzL3Nsb3ctbG9hZGluZy1zaGVldC5waHA6IEFkZGVkLgorICAgICAgICBOZXcgdGVz
dHMgZGV2ZWxvcHBlZCBmb3IgNjUxNDAuIFRoZSBiYXNlbGluZXMgbWF0Y2hlcyB3aGF0IEZGIGFu
ZCBPcGVyYSBhcmUgZG9pbmcgKElFIGRvZXMgbm90IHN1cHBvcnQKKyAgICAgICAgbGluay5zaGVl
dCBhdCB0aGUgbW9tZW50KS4gVGhvc2UgZmFpbHVyZXMgYXJlIGNvdmVyZWQgYnkgYnVnIDY3NDM2
LgorCisgICAgICAgICogZmFzdC9jc3MvbGluay1kaXNhYmxlZC1hdHRyLWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgKiBmYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvZGlzYWJsZWQtYXR0cmlidXRlLWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgRml4ZWQgdGhlIGJhc2VsaW5lIHRvIG1hdGNoIG91ciBiZWhh
dmlvci4gVGhlIEZBSUwgYXJlIG91ciBjdXJyZW50IGRldmlhdGlvbiBmcm9tIHRoZSBzcGVjLiBU
aG9zZQorICAgICAgICBmYWlsdXJlcyBhcmUgY292ZXJlZCBieSBidWcgNjc0MzYuCisKKyAgICAg
ICAgKiBmYXN0L2RvbS9ib29sZWFuLWF0dHJpYnV0ZS1yZWZsZWN0aW9uLWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgKiBmYXN0L2RvbS9zY3JpcHQtdGVzdHMvYm9vbGVhbi1hdHRyaWJ1dGUtcmVmbGVj
dGlvbi5qczoKKyAgICAgICAgUmUtYWRkZWQgbGluay5kaXNhYmxlZCBhcyBhIHJlZmxlY3RlZCBh
dHRyaWJ1dGUuCisKIDIwMTEtMDgtMDkgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIE1vdmUgPGlucHV0IHR5cGU9bW9udGg+IHRlc3RzIHRvIGZhc3QvZm9ybXMv
bW9udGgvCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9saW5rLWRpc2FibGVkLWF0
dHItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvbGluay1kaXNhYmxlZC1hdHRy
LWV4cGVjdGVkLnR4dAppbmRleCA1NzFhY2IyOGQ3NzI2NjBmYzJhZGI0YzIyZmE4MjBmYzU2YTZk
ZmNlLi5jZDY5MGNlMjZmZjQ1NWJiZTUzMTcxMDJmMDVkZTg0MDE4MGVhYzYyIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9saW5rLWRpc2FibGVkLWF0dHItZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL2xpbmstZGlzYWJsZWQtYXR0ci1leHBlY3RlZC50eHQK
QEAgLTMsMTUgKzMsMTUgQEAgVGVzdCBmb3IgYnVnIDYxNDAwOiBSRUdSRVNTSU9OKDg0MzI5KTog
U3R5bGVzaGVldHMgb24gc29tZSBwYWdlcyBkbyBub3QgbG9hZAogCiBub3RzaGVldAogUEFTUyBs
aW5rLnNoZWV0IGlzIG51bGwKLVBBU1MgbGluay5kaXNhYmxlZCBpcyBmYWxzZQorRkFJTCBsaW5r
LmRpc2FibGVkIHNob3VsZCBiZSBmYWxzZS4gV2FzIHRydWUuCiBzaGVldAogUEFTUyBsaW5rLnNo
ZWV0IGlzIG5vbi1udWxsLgotUEFTUyBsaW5rLmRpc2FibGVkIGlzIHRydWUKK0ZBSUwgbGluay5k
aXNhYmxlZCBzaG91bGQgYmUgdHJ1ZS4gV2FzIGZhbHNlLgogUEFTUyBsaW5rLnNoZWV0LmRpc2Fi
bGVkIGlzIHRydWUKIFBBU1MgZ2V0Q29tcHV0ZWRTdHlsZShjb25zb2xlKS53aGl0ZVNwYWNlIGlz
ICdub3JtYWwnCiBQQVNTIGxpbmsuZGlzYWJsZWQgaXMgZmFsc2UKLVBBU1MgbGluay5zaGVldC5k
aXNhYmxlZCBpcyBmYWxzZQotUEFTUyBnZXRDb21wdXRlZFN0eWxlKGNvbnNvbGUpLndoaXRlU3Bh
Y2UgaXMgJ3ByZS13cmFwJworRkFJTCBsaW5rLnNoZWV0LmRpc2FibGVkIHNob3VsZCBiZSBmYWxz
ZS4gV2FzIHRydWUuCitGQUlMIGdldENvbXB1dGVkU3R5bGUoY29uc29sZSkud2hpdGVTcGFjZSBz
aG91bGQgYmUgcHJlLXdyYXAuIFdhcyBub3JtYWwuCiBhbHRzaGVldAogRkFJTCBsaW5rLmRpc2Fi
bGVkIHNob3VsZCBiZSB0cnVlLiBXYXMgZmFsc2UuCiBQQVNTIGxpbmsuc2hlZXQgaXMgbm9uLW51
bGwuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1m
aXJzdC1hbHRlcm5hdGUtbGluay1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9z
dHlsZXNoZWV0LWVuYWJsZS1maXJzdC1hbHRlcm5hdGUtbGluay1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYzA1MjhmYjc1OGE5MWQ3ZjMwNjgyMDcxMTE1MGY5OGE1ZDE3MDJjNAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxlLWZpcnN0LWFs
dGVybmF0ZS1saW5rLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAKK1Rlc3QgZm9yIDY1MTQw
OiBSRUdSRVNTSU9OIChyODQzMjctcjg0MzI5KTogQ1NTIHN0eWxlc2hlZXRzIGZhaWwgdG8gbG9h
ZCBvbiB3d3cuZmxhZ3N0YXIuY29tIGxvZ2luIHBhZ2UKKworVGhpcyB0ZXN0IFBBU1NFRCBpZiBQ
QVNTRUQgaXMgd3JpdHRlbiBiZWxvdyAoYWx0ZXJuYXRpdmVseSB0aGUgbmV4dCBsaW5lIHNob3Vs
ZCBoYXZlIGEgR1JFRU4gYmFja2dyb3VuZCkuCisKK1BBU1NFRApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9jc3Mvc3R5bGVzaGVldC1lbmFibGUtZmlyc3QtYWx0ZXJuYXRlLWxpbmsuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxlLWZpcnN0LWFsdGVybmF0
ZS1saW5rLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjU1OTA2M2Y5MWMzMjBjYjk3Yjk0NDFhYWMzZDYxZjU1
MjJlMTUzMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlc2hl
ZXQtZW5hYmxlLWZpcnN0LWFsdGVybmF0ZS1saW5rLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCFE
T0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVh
ZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL3JlZC5jc3MiIG1lZGlh
PSJhbGwiIHRpdGxlPSJEZWZhdWx0IFN0eWxlIFNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgLz4KKzxs
aW5rIHJlbD0iYWx0ZXJuYXRlIHN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy9ncmVlbi5jc3Mi
IG1lZGlhPSJhbGwiIHRpdGxlPSJncmVlbiIgdHlwZT0idGV4dC9jc3MiIC8+Cis8c2NyaXB0IHR5
cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgdmFy
IHJlZCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJsaW5rIilbMF07CisgICAgcmVk
LmRpc2FibGVkID0gdHJ1ZTsKKyAgICB2YXIgZ3JlZW4gPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgibGluayIpWzFdOworICAgIGdyZWVuLmRpc2FibGVkID0gdHJ1ZTsKKyAgICBncmVl
bi5kaXNhYmxlZCA9IGZhbHNlOworCisgICAgZnVuY3Rpb24gdGVzdCgpIHsKKyAgICAgICAgdmFy
IGNvbnNvbGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpOworICAgICAgICBp
ZiAoZ2V0Q29tcHV0ZWRTdHlsZShjb25zb2xlLCBudWxsKS5iYWNrZ3JvdW5kQ29sb3IgPT09ICJy
Z2IoMCwgMTI4LCAwKSIpCisgICAgICAgICAgICBjb25zb2xlLmlubmVySFRNTCA9ICJQQVNTRUQi
OworICAgICAgICBlbHNlCisgICAgICAgICAgICBjb25zb2xlLmlubmVySFRNTCA9ICJGQUlMRUQs
IGJhY2tncm91bmQgPSAiICsgZ2V0Q29tcHV0ZWRTdHlsZShjb25zb2xlLCBudWxsKS5iYWNrZ3Jv
dW5kQ29sb3I7CisgICAgfQorICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgdGVz
dCwgZmFsc2UpOworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRlc3QgZm9yIDxhIGhy
ZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTE0MCI+NjUxNDA8
L2E+OiBSRUdSRVNTSU9OIChyODQzMjctcjg0MzI5KTogQ1NTIHN0eWxlc2hlZXRzIGZhaWwgdG8g
bG9hZCBvbiB3d3cuZmxhZ3N0YXIuY29tIGxvZ2luIHBhZ2U8L3A+Cis8cD5UaGlzIHRlc3QgUEFT
U0VEIGlmIFBBU1NFRCBpcyB3cml0dGVuIGJlbG93IChhbHRlcm5hdGl2ZWx5IHRoZSBuZXh0IGxp
bmUgc2hvdWxkIGhhdmUgYSBHUkVFTiBiYWNrZ3JvdW5kKS48L3A+Cis8ZGl2IGlkPSJjb25zb2xl
Ij5GQUlMRUQ8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxlLWZpcnN0LWFsdGVybmF0ZS1vbi1sb2FkLWxpbmst
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGVzaGVldC1lbmFibGUtZmly
c3QtYWx0ZXJuYXRlLW9uLWxvYWQtbGluay1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzA1Mjhm
Yjc1OGE5MWQ3ZjMwNjgyMDcxMTE1MGY5OGE1ZDE3MDJjNAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxlLWZpcnN0LWFsdGVybmF0ZS1vbi1s
b2FkLWxpbmstZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorVGVzdCBmb3IgNjUxNDA6IFJF
R1JFU1NJT04gKHI4NDMyNy1yODQzMjkpOiBDU1Mgc3R5bGVzaGVldHMgZmFpbCB0byBsb2FkIG9u
IHd3dy5mbGFnc3Rhci5jb20gbG9naW4gcGFnZQorCitUaGlzIHRlc3QgUEFTU0VEIGlmIFBBU1NF
RCBpcyB3cml0dGVuIGJlbG93IChhbHRlcm5hdGl2ZWx5IHRoZSBuZXh0IGxpbmUgc2hvdWxkIGhh
dmUgYSBHUkVFTiBiYWNrZ3JvdW5kKS4KKworUEFTU0VECmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1maXJzdC1hbHRlcm5hdGUtb24tbG9hZC1saW5r
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1maXJzdC1hbHRl
cm5hdGUtb24tbG9hZC1saW5rLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTI5NWU0MmRjMjRmNDEyOWFhM2Fi
NzkyN2Y2ZWE5NjQ3ODFlMGJkZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
Y3NzL3N0eWxlc2hlZXQtZW5hYmxlLWZpcnN0LWFsdGVybmF0ZS1vbi1sb2FkLWxpbmsuaHRtbApA
QCAtMCwwICsxLDMxIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1M
Ly9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZXNv
dXJjZXMvcmVkLmNzcyIgbWVkaWE9ImFsbCIgdGl0bGU9IkRlZmF1bHQgU3R5bGUgU2hlZXQiIHR5
cGU9InRleHQvY3NzIiAvPgorPGxpbmsgcmVsPSJhbHRlcm5hdGUgc3R5bGVzaGVldCIgaHJlZj0i
cmVzb3VyY2VzL2dyZWVuLmNzcyIgbWVkaWE9ImFsbCIgdGl0bGU9ImdyZWVuIiB0eXBlPSJ0ZXh0
L2NzcyIgLz4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7CisKKyAgICBmdW5jdGlvbiB0ZXN0KCkgeworICAgICAgICB2YXIgcmVkID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxpbmsiKVswXTsKKyAgICAgICAgcmVkLmRpc2Fi
bGVkID0gdHJ1ZTsKKyAgICAgICAgdmFyIGdyZWVuID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoImxpbmsiKVsxXTsKKyAgICAgICAgZ3JlZW4uZGlzYWJsZWQgPSB0cnVlOworICAgICAg
ICBncmVlbi5kaXNhYmxlZCA9IGZhbHNlOworCisgICAgICAgIHZhciBjb25zb2xlID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKTsKKyAgICAgICAgaWYgKGdldENvbXB1dGVkU3R5
bGUoY29uc29sZSwgbnVsbCkuYmFja2dyb3VuZENvbG9yID09PSAicmdiKDAsIDEyOCwgMCkiKQor
ICAgICAgICAgICAgY29uc29sZS5pbm5lckhUTUwgPSAiUEFTU0VEIjsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgY29uc29sZS5pbm5lckhUTUwgPSAiRkFJTEVELCBiYWNrZ3JvdW5kID0gIiAr
IGdldENvbXB1dGVkU3R5bGUoY29uc29sZSwgbnVsbCkuYmFja2dyb3VuZENvbG9yOworICAgIH0K
KyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIHRlc3QsIGZhbHNlKTsKKzwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cD5UZXN0IGZvciA8YSBocmVmPSJodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjUxNDAiPjY1MTQwPC9hPjogUkVHUkVTU0lPTiAo
cjg0MzI3LXI4NDMyOSk6IENTUyBzdHlsZXNoZWV0cyBmYWlsIHRvIGxvYWQgb24gd3d3LmZsYWdz
dGFyLmNvbSBsb2dpbiBwYWdlPC9wPgorPHA+VGhpcyB0ZXN0IFBBU1NFRCBpZiBQQVNTRUQgaXMg
d3JpdHRlbiBiZWxvdyAoYWx0ZXJuYXRpdmVseSB0aGUgbmV4dCBsaW5lIHNob3VsZCBoYXZlIGEg
R1JFRU4gYmFja2dyb3VuZCkuPC9wPgorPGRpdiBpZD0iY29uc29sZSI+RkFJTEVEPC9kaXY+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZXNo
ZWV0LWVuYWJsZS1maXJzdC1hbHRlcm5hdGUtb24tbG9hZC1zaGVldC1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1maXJzdC1hbHRlcm5hdGUtb24t
bG9hZC1zaGVldC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWU1YjVjODM4MGM5MDczZTc5MWFi
NjdmNWQ2ZDdkNWUxMTlkOWRiYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
Y3NzL3N0eWxlc2hlZXQtZW5hYmxlLWZpcnN0LWFsdGVybmF0ZS1vbi1sb2FkLXNoZWV0LWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDUgQEAKK1Rlc3QgZm9yIDY1MTQwOiBSRUdSRVNTSU9OIChyODQz
Mjctcjg0MzI5KTogQ1NTIHN0eWxlc2hlZXRzIGZhaWwgdG8gbG9hZCBvbiB3d3cuZmxhZ3N0YXIu
Y29tIGxvZ2luIHBhZ2UKKworVGhpcyB0ZXN0IFBBU1NFRCBpZiBQQVNTRUQgaXMgd3JpdHRlbiBi
ZWxvdyAoYWx0ZXJuYXRpdmVseSB0aGUgbmV4dCBsaW5lIHNob3VsZCBoYXZlIGEgR1JFRU4gYmFj
a2dyb3VuZCkuCisKK0ZBSUxFRCwgYmFja2dyb3VuZCA9IHJnYmEoMCwgMCwgMCwgMCkKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxlLWZpcnN0LWFsdGVy
bmF0ZS1vbi1sb2FkLXNoZWV0Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZXNoZWV0
LWVuYWJsZS1maXJzdC1hbHRlcm5hdGUtb24tbG9hZC1zaGVldC5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMx
N2FhZDQ3NzExN2NlMTIzMjY1MGFiMTFkMGE1ZWM2ZjNhZDRiNzMKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1maXJzdC1hbHRlcm5hdGUt
b24tbG9hZC1zaGVldC5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJ
QyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy9yZWQuY3NzIiBtZWRpYT0iYWxsIiB0aXRsZT0iRGVm
YXVsdCBTdHlsZSBTaGVldCIgdHlwZT0idGV4dC9jc3MiIC8+Cis8bGluayByZWw9ImFsdGVybmF0
ZSBzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvZ3JlZW4uY3NzIiBtZWRpYT0iYWxsIiB0aXRs
ZT0iZ3JlZW4iIHR5cGU9InRleHQvY3NzIiAvPgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiPgorICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgIGZ1bmN0aW9uIHRlc3QoKSB7Cisg
ICAgICAgIHZhciByZWQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGluayIpWzBd
OworICAgICAgICByZWQuc2hlZXQuZGlzYWJsZWQgPSB0cnVlOworICAgICAgICB2YXIgZ3JlZW4g
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGluayIpWzFdOworICAgICAgICBncmVl
bi5zaGVldC5kaXNhYmxlZCA9IHRydWU7CisgICAgICAgIGdyZWVuLnNoZWV0LmRpc2FibGVkID0g
ZmFsc2U7CisKKyAgICAgICAgdmFyIGNvbnNvbGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
Y29uc29sZSIpOworICAgICAgICBpZiAoZ2V0Q29tcHV0ZWRTdHlsZShjb25zb2xlLCBudWxsKS5i
YWNrZ3JvdW5kQ29sb3IgPT09ICJyZ2IoMCwgMTI4LCAwKSIpCisgICAgICAgICAgICBjb25zb2xl
LmlubmVySFRNTCA9ICJQQVNTRUQiOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjb25zb2xl
LmlubmVySFRNTCA9ICJGQUlMRUQsIGJhY2tncm91bmQgPSAiICsgZ2V0Q29tcHV0ZWRTdHlsZShj
b25zb2xlLCBudWxsKS5iYWNrZ3JvdW5kQ29sb3I7CisgICAgfQorICAgIHdpbmRvdy5hZGRFdmVu
dExpc3RlbmVyKCJsb2FkIiwgdGVzdCwgZmFsc2UpOworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxwPlRlc3QgZm9yIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD02NTE0MCI+NjUxNDA8L2E+OiBSRUdSRVNTSU9OIChyODQzMjctcjg0MzI5KTogQ1NT
IHN0eWxlc2hlZXRzIGZhaWwgdG8gbG9hZCBvbiB3d3cuZmxhZ3N0YXIuY29tIGxvZ2luIHBhZ2U8
L3A+Cis8cD5UaGlzIHRlc3QgUEFTU0VEIGlmIFBBU1NFRCBpcyB3cml0dGVuIGJlbG93IChhbHRl
cm5hdGl2ZWx5IHRoZSBuZXh0IGxpbmUgc2hvdWxkIGhhdmUgYSBHUkVFTiBiYWNrZ3JvdW5kKS48
L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj5GQUlMRUQ8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxlLXNlY29uZC1h
bHRlcm5hdGUtbGluay1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZXNo
ZWV0LWVuYWJsZS1zZWNvbmQtYWx0ZXJuYXRlLWxpbmstZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmVlNWI1YzgzODBjOTA3M2U3OTFhYjY3ZjVkNmQ3ZDVlMTE5ZDlkYmEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1zZWNvbmQtYWx0ZXJu
YXRlLWxpbmstZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorVGVzdCBmb3IgNjUxNDA6IFJF
R1JFU1NJT04gKHI4NDMyNy1yODQzMjkpOiBDU1Mgc3R5bGVzaGVldHMgZmFpbCB0byBsb2FkIG9u
IHd3dy5mbGFnc3Rhci5jb20gbG9naW4gcGFnZQorCitUaGlzIHRlc3QgUEFTU0VEIGlmIFBBU1NF
RCBpcyB3cml0dGVuIGJlbG93IChhbHRlcm5hdGl2ZWx5IHRoZSBuZXh0IGxpbmUgc2hvdWxkIGhh
dmUgYSBHUkVFTiBiYWNrZ3JvdW5kKS4KKworRkFJTEVELCBiYWNrZ3JvdW5kID0gcmdiYSgwLCAw
LCAwLCAwKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGVzaGVldC1lbmFi
bGUtc2Vjb25kLWFsdGVybmF0ZS1saW5rLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHls
ZXNoZWV0LWVuYWJsZS1zZWNvbmQtYWx0ZXJuYXRlLWxpbmsuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMGU1
YzJjMjFkZDZmNWI1NTAwNTEzMjI0MDllMzM1Nzc3NGY4YTZkCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGVzaGVldC1lbmFibGUtc2Vjb25kLWFsdGVybmF0ZS1s
aW5rLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRG
Ly9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0icmVzb3VyY2VzL3JlZC5jc3MiIG1lZGlhPSJhbGwiIHRpdGxlPSJEZWZhdWx0IFN0eWxl
IFNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgLz4KKzxsaW5rIHJlbD0iYWx0ZXJuYXRlIHN0eWxlc2hl
ZXQiIGhyZWY9InJlc291cmNlcy9yZWQuY3NzIiBtZWRpYT0iYWxsIiB0aXRsZT0iZ3JlZW4iIHR5
cGU9InRleHQvY3NzIiAvPgorPGxpbmsgcmVsPSJhbHRlcm5hdGUgc3R5bGVzaGVldCIgaHJlZj0i
cmVzb3VyY2VzL2dyZWVuLmNzcyIgbWVkaWE9ImFsbCIgdGl0bGU9ImdyZWVuIiB0eXBlPSJ0ZXh0
L2NzcyIgLz4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7CisKKyAgICB2YXIgcmVkID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
ImxpbmsiKVswXTsKKyAgICByZWQuZGlzYWJsZWQgPSB0cnVlOworICAgIHZhciBncmVlbiA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJsaW5rIilbMl07CisgICAgZ3JlZW4uZGlzYWJs
ZWQgPSBmYWxzZTsKKworICAgIGZ1bmN0aW9uIHRlc3QoKSB7CisgICAgICAgIHZhciBjb25zb2xl
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKTsKKyAgICAgICAgaWYgKGdldENv
bXB1dGVkU3R5bGUoY29uc29sZSwgbnVsbCkuYmFja2dyb3VuZENvbG9yID09PSAicmdiKDAsIDEy
OCwgMCkiKQorICAgICAgICAgICAgY29uc29sZS5pbm5lckhUTUwgPSAiUEFTU0VEIjsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgY29uc29sZS5pbm5lckhUTUwgPSAiRkFJTEVELCBiYWNrZ3Jv
dW5kID0gIiArIGdldENvbXB1dGVkU3R5bGUoY29uc29sZSwgbnVsbCkuYmFja2dyb3VuZENvbG9y
OworICAgIH0KKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIHRlc3QsIGZhbHNl
KTsKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cD5UZXN0IGZvciA8YSBocmVmPSJodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjUxNDAiPjY1MTQwPC9hPjogUkVH
UkVTU0lPTiAocjg0MzI3LXI4NDMyOSk6IENTUyBzdHlsZXNoZWV0cyBmYWlsIHRvIGxvYWQgb24g
d3d3LmZsYWdzdGFyLmNvbSBsb2dpbiBwYWdlPC9wPgorPHA+VGhpcyB0ZXN0IFBBU1NFRCBpZiBQ
QVNTRUQgaXMgd3JpdHRlbiBiZWxvdyAoYWx0ZXJuYXRpdmVseSB0aGUgbmV4dCBsaW5lIHNob3Vs
ZCBoYXZlIGEgR1JFRU4gYmFja2dyb3VuZCkuPC9wPgorPGRpdiBpZD0iY29uc29sZSI+RkFJTEVE
PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nz
cy9zdHlsZXNoZWV0LWVuYWJsZS1zZWNvbmQtYWx0ZXJuYXRlLW9uLWxvYWQtbGluay1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1zZWNvbmQtYWx0
ZXJuYXRlLW9uLWxvYWQtbGluay1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWU1YjVjODM4MGM5
MDczZTc5MWFiNjdmNWQ2ZDdkNWUxMTlkOWRiYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxlLXNlY29uZC1hbHRlcm5hdGUtb24tbG9hZC1s
aW5rLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAKK1Rlc3QgZm9yIDY1MTQwOiBSRUdSRVNT
SU9OIChyODQzMjctcjg0MzI5KTogQ1NTIHN0eWxlc2hlZXRzIGZhaWwgdG8gbG9hZCBvbiB3d3cu
ZmxhZ3N0YXIuY29tIGxvZ2luIHBhZ2UKKworVGhpcyB0ZXN0IFBBU1NFRCBpZiBQQVNTRUQgaXMg
d3JpdHRlbiBiZWxvdyAoYWx0ZXJuYXRpdmVseSB0aGUgbmV4dCBsaW5lIHNob3VsZCBoYXZlIGEg
R1JFRU4gYmFja2dyb3VuZCkuCisKK0ZBSUxFRCwgYmFja2dyb3VuZCA9IHJnYmEoMCwgMCwgMCwg
MCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxlLXNl
Y29uZC1hbHRlcm5hdGUtb24tbG9hZC1saW5rLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9z
dHlsZXNoZWV0LWVuYWJsZS1zZWNvbmQtYWx0ZXJuYXRlLW9uLWxvYWQtbGluay5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmNjODA4NmUwYjRhMjdjN2ZmZDgxYTMzYzBkMDI1MzE1NTE0MmM2NmQKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1zZWNvbmQt
YWx0ZXJuYXRlLW9uLWxvYWQtbGluay5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhRE9DVFlQRSBI
VE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy9yZWQuY3NzIiBtZWRpYT0iYWxsIiB0
aXRsZT0iRGVmYXVsdCBTdHlsZSBTaGVldCIgdHlwZT0idGV4dC9jc3MiIC8+Cis8bGluayByZWw9
ImFsdGVybmF0ZSBzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvcmVkLmNzcyIgbWVkaWE9ImFs
bCIgdGl0bGU9ImdyZWVuIiB0eXBlPSJ0ZXh0L2NzcyIgLz4KKzxsaW5rIHJlbD0iYWx0ZXJuYXRl
IHN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy9ncmVlbi5jc3MiIG1lZGlhPSJhbGwiIHRpdGxl
PSJncmVlbiIgdHlwZT0idGV4dC9jc3MiIC8+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlw
dCI+CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgZnVuY3Rpb24gdGVzdCgpIHsKKyAg
ICAgICAgdmFyIHJlZCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJsaW5rIilbMF07
CisgICAgICAgIHJlZC5kaXNhYmxlZCA9IHRydWU7CisgICAgICAgIHZhciBncmVlbiA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJsaW5rIilbMl07CisgICAgICAgIGdyZWVuLmRpc2Fi
bGVkID0gZmFsc2U7CisKKyAgICAgICAgdmFyIGNvbnNvbGUgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiY29uc29sZSIpOworICAgICAgICBpZiAoZ2V0Q29tcHV0ZWRTdHlsZShjb25zb2xlLCBu
dWxsKS5iYWNrZ3JvdW5kQ29sb3IgPT09ICJyZ2IoMCwgMTI4LCAwKSIpCisgICAgICAgICAgICBj
b25zb2xlLmlubmVySFRNTCA9ICJQQVNTRUQiOworICAgICAgICBlbHNlCisgICAgICAgICAgICBj
b25zb2xlLmlubmVySFRNTCA9ICJGQUlMRUQsIGJhY2tncm91bmQgPSAiICsgZ2V0Q29tcHV0ZWRT
dHlsZShjb25zb2xlLCBudWxsKS5iYWNrZ3JvdW5kQ29sb3I7CisgICAgfQorICAgIHdpbmRvdy5h
ZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgdGVzdCwgZmFsc2UpOworPC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxwPlRlc3QgZm9yIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD02NTE0MCI+NjUxNDA8L2E+OiBSRUdSRVNTSU9OIChyODQzMjctcjg0MzI5
KTogQ1NTIHN0eWxlc2hlZXRzIGZhaWwgdG8gbG9hZCBvbiB3d3cuZmxhZ3N0YXIuY29tIGxvZ2lu
IHBhZ2U8L3A+Cis8cD5UaGlzIHRlc3QgUEFTU0VEIGlmIFBBU1NFRCBpcyB3cml0dGVuIGJlbG93
IChhbHRlcm5hdGl2ZWx5IHRoZSBuZXh0IGxpbmUgc2hvdWxkIGhhdmUgYSBHUkVFTiBiYWNrZ3Jv
dW5kKS48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj5GQUlMRUQ8L2Rpdj4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxlLXNl
Y29uZC1hbHRlcm5hdGUtb24tbG9hZC1zaGVldC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9m
YXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1zZWNvbmQtYWx0ZXJuYXRlLW9uLWxvYWQtc2hlZXQt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVlNWI1YzgzODBjOTA3M2U3OTFhYjY3ZjVkNmQ3ZDVl
MTE5ZDlkYmEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZXNo
ZWV0LWVuYWJsZS1zZWNvbmQtYWx0ZXJuYXRlLW9uLWxvYWQtc2hlZXQtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsNSBAQAorVGVzdCBmb3IgNjUxNDA6IFJFR1JFU1NJT04gKHI4NDMyNy1yODQzMjkp
OiBDU1Mgc3R5bGVzaGVldHMgZmFpbCB0byBsb2FkIG9uIHd3dy5mbGFnc3Rhci5jb20gbG9naW4g
cGFnZQorCitUaGlzIHRlc3QgUEFTU0VEIGlmIFBBU1NFRCBpcyB3cml0dGVuIGJlbG93IChhbHRl
cm5hdGl2ZWx5IHRoZSBuZXh0IGxpbmUgc2hvdWxkIGhhdmUgYSBHUkVFTiBiYWNrZ3JvdW5kKS4K
KworRkFJTEVELCBiYWNrZ3JvdW5kID0gcmdiYSgwLCAwLCAwLCAwKQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGVzaGVldC1lbmFibGUtc2Vjb25kLWFsdGVybmF0ZS1vbi1s
b2FkLXNoZWV0Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1z
ZWNvbmQtYWx0ZXJuYXRlLW9uLWxvYWQtc2hlZXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDc1NQpp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YmJiMzk3MDRj
ZTQ3OThjMmI0MDlmZDBkYjUxNDk2OWI4YTUxNzhmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9jc3Mvc3R5bGVzaGVldC1lbmFibGUtc2Vjb25kLWFsdGVybmF0ZS1vbi1sb2Fk
LXNoZWV0Lmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9J
RVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0icmVzb3VyY2VzL3JlZC5jc3MiIG1lZGlhPSJhbGwiIHRpdGxlPSJEZWZhdWx0IFN0
eWxlIFNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgLz4KKzxsaW5rIHJlbD0iYWx0ZXJuYXRlIHN0eWxl
c2hlZXQiIGhyZWY9InJlc291cmNlcy9yZWQuY3NzIiBtZWRpYT0iYWxsIiB0aXRsZT0iZ3JlZW4i
IHR5cGU9InRleHQvY3NzIiAvPgorPGxpbmsgcmVsPSJhbHRlcm5hdGUgc3R5bGVzaGVldCIgaHJl
Zj0icmVzb3VyY2VzL2dyZWVuLmNzcyIgbWVkaWE9ImFsbCIgdGl0bGU9ImdyZWVuIiB0eXBlPSJ0
ZXh0L2NzcyIgLz4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7CisKKyAgICBmdW5jdGlvbiB0ZXN0KCkgeworICAgICAgICB2YXIgcmVkID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxpbmsiKVswXTsKKyAgICAgICAgcmVkLnNo
ZWV0LmRpc2FibGVkID0gdHJ1ZTsKKyAgICAgICAgdmFyIGdyZWVuID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoImxpbmsiKVsyXTsKKyAgICAgICAgZ3JlZW4uc2hlZXQuZGlzYWJsZWQg
PSBmYWxzZTsKKworICAgICAgICB2YXIgY29uc29sZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJjb25zb2xlIik7CisgICAgICAgIGlmIChnZXRDb21wdXRlZFN0eWxlKGNvbnNvbGUsIG51bGwp
LmJhY2tncm91bmRDb2xvciA9PT0gInJnYigwLCAxMjgsIDApIikKKyAgICAgICAgICAgIGNvbnNv
bGUuaW5uZXJIVE1MID0gIlBBU1NFRCI7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvbnNv
bGUuaW5uZXJIVE1MID0gIkZBSUxFRCwgYmFja2dyb3VuZCA9ICIgKyBnZXRDb21wdXRlZFN0eWxl
KGNvbnNvbGUsIG51bGwpLmJhY2tncm91bmRDb2xvcjsKKyAgICB9CisgICAgd2luZG93LmFkZEV2
ZW50TGlzdGVuZXIoImxvYWQiLCB0ZXN0LCBmYWxzZSk7Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPHA+VGVzdCBmb3IgPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTY1MTQwIj42NTE0MDwvYT46IFJFR1JFU1NJT04gKHI4NDMyNy1yODQzMjkpOiBD
U1Mgc3R5bGVzaGVldHMgZmFpbCB0byBsb2FkIG9uIHd3dy5mbGFnc3Rhci5jb20gbG9naW4gcGFn
ZTwvcD4KKzxwPlRoaXMgdGVzdCBQQVNTRUQgaWYgUEFTU0VEIGlzIHdyaXR0ZW4gYmVsb3cgKGFs
dGVybmF0aXZlbHkgdGhlIG5leHQgbGluZSBzaG91bGQgaGF2ZSBhIEdSRUVOIGJhY2tncm91bmQp
LjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPkZBSUxFRDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L2Rpc2FibGVk
LWF0dHJpYnV0ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0Vs
ZW1lbnQvZGlzYWJsZWQtYXR0cmlidXRlLWV4cGVjdGVkLnR4dAppbmRleCAyMTQwYzhjOWZkZmI4
MTkwMjU4NmE1MjFmOGFjMjkxNmMxMWIwODg1Li5jZGY2Y2NmM2FiZjA1ZWRhYTc4NDE2YzQ1OGZk
YzIzNWYxMzAyZmY5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0Vs
ZW1lbnQvZGlzYWJsZWQtYXR0cmlidXRlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvZGlzYWJsZWQtYXR0cmlidXRlLWV4cGVjdGVkLnR4dApA
QCAtNSwxNCArNSwxNCBAQCBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURQogCiBQQVNTIHRlc3QuZGlz
YWJsZWQgaXMgZmFsc2UKIFBBU1MgdGVzdC5kaXNhYmxlZCBpcyB0cnVlCi1QQVNTIHRlc3Quc2hl
ZXQuZGlzYWJsZWQgaXMgdHJ1ZQorRkFJTCB0ZXN0LnNoZWV0LmRpc2FibGVkIHNob3VsZCBiZSB0
cnVlLiBXYXMgZmFsc2UuCiBQQVNTIHRlc3Quc2hlZXQuZGlzYWJsZWQgaXMgZmFsc2UKLVBBU1Mg
dGVzdC5kaXNhYmxlZCBpcyBmYWxzZQorRkFJTCB0ZXN0LmRpc2FibGVkIHNob3VsZCBiZSBmYWxz
ZS4gV2FzIHRydWUuCiAKIAogUEFTUyB0ZXN0X25vc3R5bGUuc2hlZXQgaXMgbnVsbAogUEFTUyB0
ZXN0X25vc3R5bGUuZGlzYWJsZWQgaXMgZmFsc2UKLVBBU1MgdGVzdF9ub3N0eWxlLmRpc2FibGVk
IGlzIGZhbHNlCitGQUlMIHRlc3Rfbm9zdHlsZS5kaXNhYmxlZCBzaG91bGQgYmUgZmFsc2UuIFdh
cyB0cnVlLgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRF
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9ib29sZWFuLWF0dHJpYnV0ZS1yZWZs
ZWN0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2Jvb2xlYW4tYXR0cmli
dXRlLXJlZmxlY3Rpb24tZXhwZWN0ZWQudHh0CmluZGV4IDRiYTVhMmMyYzYyN2FmNjE3ZmQ4MDRj
ZjllZmNlZDNkYzUwNGRiNDAuLmM1MGViNmYyZGZiNGM0NmUxMjJhZjlmNmUzZjA1YTdlNmRjODAy
OTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2Jvb2xlYW4tYXR0cmlidXRlLXJl
ZmxlY3Rpb24tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2Jvb2xlYW4t
YXR0cmlidXRlLXJlZmxlY3Rpb24tZXhwZWN0ZWQudHh0CkBAIC01OSw2ICs1OSwxMCBAQCBQQVNT
IGUgPSBtYWtlKCdpbnB1dCcpOyBlLnJlbW92ZUF0dHJpYnV0ZSgncmVxdWlyZWQnKTsgZS5yZXF1
aXJlZCBpcyBmYWxzZQogUEFTUyBlID0gbWFrZSgnaW5wdXQnKTsgZS5zZXRBdHRyaWJ1dGUoJ3Jl
cXVpcmVkJywgJycpOyBlLnJlcXVpcmVkIGlzIHRydWUKIFBBU1MgZSA9IG1ha2UoJ2lucHV0Jyk7
IGUuc2V0QXR0cmlidXRlKCdyZXF1aXJlZCcsICd4Jyk7IGUucmVxdWlyZWQgPSBmYWxzZTsgZS5n
ZXRBdHRyaWJ1dGUoJ3JlcXVpcmVkJykgaXMgbnVsbAogUEFTUyBlID0gbWFrZSgnaW5wdXQnKTsg
ZS5zZXRBdHRyaWJ1dGUoJ3JlcXVpcmVkJywgJ3gnKTsgZS5yZXF1aXJlZCA9IHRydWU7IGUuZ2V0
QXR0cmlidXRlKCdyZXF1aXJlZCcpIGlzICcnCitQQVNTIGUgPSBtYWtlKCdsaW5rJyk7IGUucmVt
b3ZlQXR0cmlidXRlKCdkaXNhYmxlZCcpOyBlLmRpc2FibGVkIGlzIGZhbHNlCitQQVNTIGUgPSBt
YWtlKCdsaW5rJyk7IGUuc2V0QXR0cmlidXRlKCdkaXNhYmxlZCcsICcnKTsgZS5kaXNhYmxlZCBp
cyB0cnVlCitQQVNTIGUgPSBtYWtlKCdsaW5rJyk7IGUuc2V0QXR0cmlidXRlKCdkaXNhYmxlZCcs
ICd4Jyk7IGUuZGlzYWJsZWQgPSBmYWxzZTsgZS5nZXRBdHRyaWJ1dGUoJ2Rpc2FibGVkJykgaXMg
bnVsbAorUEFTUyBlID0gbWFrZSgnbGluaycpOyBlLnNldEF0dHJpYnV0ZSgnZGlzYWJsZWQnLCAn
eCcpOyBlLmRpc2FibGVkID0gdHJ1ZTsgZS5nZXRBdHRyaWJ1dGUoJ2Rpc2FibGVkJykgaXMgJycK
IFBBU1MgZSA9IG1ha2UoJ21lbnUnKTsgZS5yZW1vdmVBdHRyaWJ1dGUoJ2NvbXBhY3QnKTsgZS5j
b21wYWN0IGlzIGZhbHNlCiBQQVNTIGUgPSBtYWtlKCdtZW51Jyk7IGUuc2V0QXR0cmlidXRlKCdj
b21wYWN0JywgJycpOyBlLmNvbXBhY3QgaXMgdHJ1ZQogUEFTUyBlID0gbWFrZSgnbWVudScpOyBl
LnNldEF0dHJpYnV0ZSgnY29tcGFjdCcsICd4Jyk7IGUuY29tcGFjdCA9IGZhbHNlOyBlLmdldEF0
dHJpYnV0ZSgnY29tcGFjdCcpIGlzIG51bGwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL3NjcmlwdC10ZXN0cy9ib29sZWFuLWF0dHJpYnV0ZS1yZWZsZWN0aW9uLmpzIGIvTGF5b3V0
VGVzdHMvZmFzdC9kb20vc2NyaXB0LXRlc3RzL2Jvb2xlYW4tYXR0cmlidXRlLXJlZmxlY3Rpb24u
anMKaW5kZXggMTBiMjI5ZmE4NjQzMWVlMTRmM2JkYWI5Zjk5ZWVjMTFkMGNjZDAxMi4uYzI1Mjdm
MDI2YmYxYTI4ZjU5MzVmMDY3OTE3YTIzODI2MmM2YWQ3YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvZmFzdC9kb20vc2NyaXB0LXRlc3RzL2Jvb2xlYW4tYXR0cmlidXRlLXJlZmxlY3Rpb24uanMK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2NyaXB0LXRlc3RzL2Jvb2xlYW4tYXR0cmlidXRl
LXJlZmxlY3Rpb24uanMKQEAgLTE1LDYgKzE1LDcgQEAgdmFyIGF0dHJpYnV0ZXMgPSBbCiAgICAg
WyAiaW5wdXQiLCAibXVsdGlwbGUiIF0sCiAgICAgWyAiaW5wdXQiLCAicmVhZE9ubHkiIF0sCiAg
ICAgWyAiaW5wdXQiLCAicmVxdWlyZWQiIF0sCisgICAgWyAibGluayIsICJkaXNhYmxlZCIgXSwK
ICAgICBbICJtZW51IiwgImNvbXBhY3QiIF0sCiAgICAgWyAib2JqZWN0IiwgImRlY2xhcmUiIF0s
CiAgICAgWyAib2wiLCAiY29tcGFjdCIgXSwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvY3NzL2xpbmstY3NzLWRpc2FibGVkLXZhbHVlLXdpdGgtc2xvdy1sb2FkaW5nLXNoZWV0
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY3NzL2xpbmstY3NzLWRpc2Fi
bGVkLXZhbHVlLXdpdGgtc2xvdy1sb2FkaW5nLXNoZWV0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42MTQwMGFhYTBlYzBhNGUyMGNmZDc2YjBhMzUyMGI5MTc0ZTM2NTQ4Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jc3MvbGluay1jc3MtZGlzYWJsZWQtdmFsdWUt
d2l0aC1zbG93LWxvYWRpbmctc2hlZXQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTkgQEAKK1Rl
c3QgdGhhdCBIVE1MTGlua0VsZW1lbnQncyBkaXNhYmxlZCBhdHRyaWJ1dGUgaXMgcHJvcGVybHkg
Y2FjaGVkIHdoaWxlIHNldCB3aGVuIGxvYWRpbmcgYSBzdHlsZXNoZWV0LgorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKKworVGVzdGluZyB2YWx1ZSBvZiAnZGlzYWJsZWQnIHByaW9yIHRv
IGxvYWQganVzdCBhZnRlciBzZXR0aW5nIHRoZW0KK1BBU1MgbWFpblNoZWV0TGluay5zaGVldCBp
cyBub24tbnVsbC4KK1BBU1MgYWx0ZXJuYXRlU2hlZXRMaW5rLnNoZWV0IGlzIG51bGwKK1BBU1Mg
bWFpblNoZWV0TGluay5kaXNhYmxlZCBpcyB0cnVlCitQQVNTIGFsdGVybmF0ZVNoZWV0TGluay5k
aXNhYmxlZCBpcyBmYWxzZQorVGVzdGluZyB0aGUgdmFsdWVzIHdoZW4gdGhlIGFsdGVybmF0ZSBz
aGVldCBpcyBsb2FkZWQgKGFzIHRoaXMgaXMgdGhlIG9ubHkgb25lIHRoYXQgaGFzIHNoZWV0KCkg
PT09IG51bGwpCitQQVNTIG1haW5TaGVldExpbmsuc2hlZXQgaXMgbm9uLW51bGwuCitQQVNTIGFs
dGVybmF0ZVNoZWV0TGluay5zaGVldCBpcyBub24tbnVsbC4KK1BBU1MgbWFpblNoZWV0TGluay5k
aXNhYmxlZCBpcyB0cnVlCitQQVNTIGFsdGVybmF0ZVNoZWV0TGluay5kaXNhYmxlZCBpcyBmYWxz
ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY3NzL2xpbmstY3NzLWRpc2FibGVkLXZh
bHVlLXdpdGgtc2xvdy1sb2FkaW5nLXNoZWV0LWluLWVycm9yLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvY3NzL2xpbmstY3NzLWRpc2FibGVkLXZhbHVlLXdpdGgtc2xvdy1s
b2FkaW5nLXNoZWV0LWluLWVycm9yLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MTQwMGFhYTBl
YzBhNGUyMGNmZDc2YjBhMzUyMGI5MTc0ZTM2NTQ4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9jc3MvbGluay1jc3MtZGlzYWJsZWQtdmFsdWUtd2l0aC1zbG93LWxv
YWRpbmctc2hlZXQtaW4tZXJyb3ItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTkgQEAKK1Rlc3Qg
dGhhdCBIVE1MTGlua0VsZW1lbnQncyBkaXNhYmxlZCBhdHRyaWJ1dGUgaXMgcHJvcGVybHkgY2Fj
aGVkIHdoaWxlIHNldCB3aGVuIGxvYWRpbmcgYSBzdHlsZXNoZWV0LgorCitPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCisKKworVGVzdGluZyB2YWx1ZSBvZiAnZGlzYWJsZWQnIHByaW9yIHRvIGxv
YWQganVzdCBhZnRlciBzZXR0aW5nIHRoZW0KK1BBU1MgbWFpblNoZWV0TGluay5zaGVldCBpcyBu
b24tbnVsbC4KK1BBU1MgYWx0ZXJuYXRlU2hlZXRMaW5rLnNoZWV0IGlzIG51bGwKK1BBU1MgbWFp
blNoZWV0TGluay5kaXNhYmxlZCBpcyB0cnVlCitQQVNTIGFsdGVybmF0ZVNoZWV0TGluay5kaXNh
YmxlZCBpcyBmYWxzZQorVGVzdGluZyB0aGUgdmFsdWVzIHdoZW4gdGhlIGFsdGVybmF0ZSBzaGVl
dCBpcyBsb2FkZWQgKGFzIHRoaXMgaXMgdGhlIG9ubHkgb25lIHRoYXQgaGFzIHNoZWV0KCkgPT09
IG51bGwpCitQQVNTIG1haW5TaGVldExpbmsuc2hlZXQgaXMgbm9uLW51bGwuCitQQVNTIGFsdGVy
bmF0ZVNoZWV0TGluay5zaGVldCBpcyBub24tbnVsbC4KK1BBU1MgbWFpblNoZWV0TGluay5kaXNh
YmxlZCBpcyB0cnVlCitQQVNTIGFsdGVybmF0ZVNoZWV0TGluay5kaXNhYmxlZCBpcyBmYWxzZQor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY3NzL2xpbmstY3NzLWRpc2FibGVkLXZhbHVl
LXdpdGgtc2xvdy1sb2FkaW5nLXNoZWV0LWluLWVycm9yLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2Nzcy9saW5rLWNzcy1kaXNhYmxlZC12YWx1ZS13aXRoLXNsb3ctbG9hZGluZy1zaGVl
dC1pbi1lcnJvci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQxNmM4M2QzY2NiYjkyY2MxMjQ5NTc3YjIzNWVi
MGNhNTY2ODhjOTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nz
cy9saW5rLWNzcy1kaXNhYmxlZC12YWx1ZS13aXRoLXNsb3ctbG9hZGluZy1zaGVldC1pbi1lcnJv
ci5odG1sCkBAIC0wLDAgKzEsMTQgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8v
RFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9InJlc291cmNlcy9zbG93LWxvYWRpbmctc2hlZXQucGhwP2NvbG9yPWdyZWVuIiBtZWRpYT0i
YWxsIiB0aXRsZT0iRGVmYXVsdCBTdHlsZSBTaGVldCIgdHlwZT0idGV4dC9jc3MiIC8+Cis8bGlu
ayByZWw9ImFsdGVybmF0ZSBzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvc2xvdy1sb2FkaW5n
LXNoZWV0LnBocC1pbi1lcnJvciIgbWVkaWE9ImFsbCIgdGl0bGU9ImdyZWVuIiB0eXBlPSJ0ZXh0
L2NzcyIgLz4KKzxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9saW5rLWNzcy1k
aXNhYmxlZC12YWx1ZS13aXRoLXNsb3ctbG9hZGluZy1zaGVldC1pbi1lcnJvci5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2Nzcy9saW5rLWNzcy1kaXNhYmxlZC12YWx1ZS13aXRoLXNsb3ctbG9hZGluZy1zaGVldC5o
dG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jc3MvbGluay1jc3MtZGlzYWJsZWQtdmFsdWUt
d2l0aC1zbG93LWxvYWRpbmctc2hlZXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wN2ZmMmNjY2ExYjRmZTIx
ZWYxZDEyNTE5NWE2NjJmY2ZiMjg2NjBhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9jc3MvbGluay1jc3MtZGlzYWJsZWQtdmFsdWUtd2l0aC1zbG93LWxvYWRpbmct
c2hlZXQuaHRtbApAQCAtMCwwICsxLDE0IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lF
VEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSJyZXNvdXJjZXMvc2xvdy1sb2FkaW5nLXNoZWV0LnBocD9jb2xvcj1yZWQiIG1lZGlh
PSJhbGwiIHRpdGxlPSJEZWZhdWx0IFN0eWxlIFNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgLz4KKzxs
aW5rIHJlbD0iYWx0ZXJuYXRlIHN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy9zbG93LWxvYWRp
bmctc2hlZXQucGhwP2NvbG9yPWdyZWVuIiBtZWRpYT0iYWxsIiB0aXRsZT0iZ3JlZW4iIHR5cGU9
InRleHQvY3NzIiAvPgorPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9w
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2xpbmst
Y3NzLWRpc2FibGVkLXZhbHVlLXdpdGgtc2xvdy1sb2FkaW5nLXNoZWV0LmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
Y3NzL3Jlc291cmNlcy9saW5rLWNzcy1kaXNhYmxlZC12YWx1ZS13aXRoLXNsb3ctbG9hZGluZy1z
aGVldC1pbi1lcnJvci5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY3NzL3Jlc291cmNlcy9s
aW5rLWNzcy1kaXNhYmxlZC12YWx1ZS13aXRoLXNsb3ctbG9hZGluZy1zaGVldC1pbi1lcnJvci5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wNTg5ZjI3MzZhNjQ0ODk1NTU0ZTlkMDZkODBmZTViOWE4OTk3ZmYzCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jc3MvcmVzb3VyY2VzL2xp
bmstY3NzLWRpc2FibGVkLXZhbHVlLXdpdGgtc2xvdy1sb2FkaW5nLXNoZWV0LWluLWVycm9yLmpz
CkBAIC0wLDAgKzEsNDUgQEAKK2Rlc2NyaXB0aW9uKCJUZXN0IHRoYXQgSFRNTExpbmtFbGVtZW50
J3MgZGlzYWJsZWQgYXR0cmlidXRlIGlzIHByb3Blcmx5IGNhY2hlZCB3aGlsZSBzZXQgd2hlbiBs
b2FkaW5nIGEgc3R5bGVzaGVldC4iKTsKKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisKK3dpbmRvdy5q
c1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworbWFpblNoZWV0TGluayA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJsaW5rIilbMF07CithbHRlcm5hdGVTaGVldExpbmsgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgibGluayIpWzFdOworCittYWluU2hlZXRMaW5rLmRpc2FibGVk
ID0gdHJ1ZTsKK2FsdGVybmF0ZVNoZWV0TGluay5kaXNhYmxlZCA9IGZhbHNlOworCitkZWJ1Zygi
VGVzdGluZyB2YWx1ZSBvZiAnZGlzYWJsZWQnIHByaW9yIHRvIGxvYWQganVzdCBhZnRlciBzZXR0
aW5nIHRoZW0iKTsKK3Nob3VsZEJlTm9uTnVsbCgibWFpblNoZWV0TGluay5zaGVldCIpOworc2hv
dWxkQmVOdWxsKCJhbHRlcm5hdGVTaGVldExpbmsuc2hlZXQiKTsKK3Nob3VsZEJlVHJ1ZSgibWFp
blNoZWV0TGluay5kaXNhYmxlZCIsIHRydWUpOworc2hvdWxkQmVGYWxzZSgiYWx0ZXJuYXRlU2hl
ZXRMaW5rLmRpc2FibGVkIik7CisKK2RlYnVnKCJUZXN0aW5nIHRoZSB2YWx1ZXMgd2hlbiB0aGUg
YWx0ZXJuYXRlIHNoZWV0IGlzIGxvYWRlZCAoYXMgdGhpcyBpcyB0aGUgb25seSBvbmUgdGhhdCBo
YXMgc2hlZXQoKSA9PT0gbnVsbCkiKTsKKworZnVuY3Rpb24gb25TaGVldExvYWRlZChmLCBlbGVt
LCBtYXh0aW1lKSB7CisgICAgaWYgKGVsZW0uc2hlZXQgfHwgbWF4dGltZSA8PSAwKQorICAgICAg
ICBmKCk7CisgICAgZWxzZQorICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgb25TaGVl
dExvYWRlZChmLCBlbGVtLCBtYXh0aW1lIC0gMjUpO30sIDI1KTsKK30KKworZnVuY3Rpb24gdGVz
dFdoZW5Mb2FkZWQoKSB7CisgICAgICAgIC8vIFRob3NlIG5leHQgMiBsaW5lcyBhcmUgYSBzYW5p
dHkgY2hlY2suCisgICAgICAgIC8vIElmIHRoZSBzZWNvbmQgY2hlY2sgZmFpbHMsIGl0IGlzIGxp
a2VseSB0aGF0IHRoZSB0ZXN0IHRpbWVkIG91dCBhbmQgdGh1cworICAgICAgICAvLyB5b3UgY2Fu
IGRpc2NhcmQgdGhlIHJlc3Qgb2YgcmVzdWx0cyBhcyBpdCBpcyBub3QgdGVzdGluZyB3aGF0IHdl
IHdhbnQKKyAgICAgICAgLy8gKG5hbWVseSB0aGF0IHRoZSBkaXNhYmxlZCB2YWx1ZSBpcyBwYXNz
ZWQgdG8gdGhlIGZpbmFsIHNoZWV0KS4KKyAgICAgICAgc2hvdWxkQmVOb25OdWxsKCJtYWluU2hl
ZXRMaW5rLnNoZWV0Iik7CisgICAgICAgIHNob3VsZEJlTm9uTnVsbCgiYWx0ZXJuYXRlU2hlZXRM
aW5rLnNoZWV0Iik7CisKKyAgICAgICAgc2hvdWxkQmVUcnVlKCJtYWluU2hlZXRMaW5rLmRpc2Fi
bGVkIik7CisgICAgICAgIHNob3VsZEJlRmFsc2UoImFsdGVybmF0ZVNoZWV0TGluay5kaXNhYmxl
ZCIpOworCisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworfQorCitvblNoZWV0TG9hZGVkKHRlc3RX
aGVuTG9hZGVkLCBhbHRlcm5hdGVTaGVldExpbmssIDUwMCk7CisKK3ZhciBzdWNjZXNzZnVsbHlQ
YXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jc3MvcmVz
b3VyY2VzL2xpbmstY3NzLWRpc2FibGVkLXZhbHVlLXdpdGgtc2xvdy1sb2FkaW5nLXNoZWV0Lmpz
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jc3MvcmVzb3VyY2VzL2xpbmstY3NzLWRpc2FibGVk
LXZhbHVlLXdpdGgtc2xvdy1sb2FkaW5nLXNoZWV0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ODlmMjczNmE2
NDQ4OTU1NTRlOWQwNmQ4MGZlNWI5YTg5OTdmZjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2Nzcy9yZXNvdXJjZXMvbGluay1jc3MtZGlzYWJsZWQtdmFsdWUtd2l0
aC1zbG93LWxvYWRpbmctc2hlZXQuanMKQEAgLTAsMCArMSw0NSBAQAorZGVzY3JpcHRpb24oIlRl
c3QgdGhhdCBIVE1MTGlua0VsZW1lbnQncyBkaXNhYmxlZCBhdHRyaWJ1dGUgaXMgcHJvcGVybHkg
Y2FjaGVkIHdoaWxlIHNldCB3aGVuIGxvYWRpbmcgYSBzdHlsZXNoZWV0LiIpOworCitpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRV
bnRpbERvbmUoKTsKKword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCittYWluU2hlZXRM
aW5rID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxpbmsiKVswXTsKK2FsdGVybmF0
ZVNoZWV0TGluayA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJsaW5rIilbMV07CisK
K21haW5TaGVldExpbmsuZGlzYWJsZWQgPSB0cnVlOworYWx0ZXJuYXRlU2hlZXRMaW5rLmRpc2Fi
bGVkID0gZmFsc2U7CisKK2RlYnVnKCJUZXN0aW5nIHZhbHVlIG9mICdkaXNhYmxlZCcgcHJpb3Ig
dG8gbG9hZCBqdXN0IGFmdGVyIHNldHRpbmcgdGhlbSIpOworc2hvdWxkQmVOb25OdWxsKCJtYWlu
U2hlZXRMaW5rLnNoZWV0Iik7CitzaG91bGRCZU51bGwoImFsdGVybmF0ZVNoZWV0TGluay5zaGVl
dCIpOworc2hvdWxkQmVUcnVlKCJtYWluU2hlZXRMaW5rLmRpc2FibGVkIiwgdHJ1ZSk7CitzaG91
bGRCZUZhbHNlKCJhbHRlcm5hdGVTaGVldExpbmsuZGlzYWJsZWQiKTsKKworZGVidWcoIlRlc3Rp
bmcgdGhlIHZhbHVlcyB3aGVuIHRoZSBhbHRlcm5hdGUgc2hlZXQgaXMgbG9hZGVkIChhcyB0aGlz
IGlzIHRoZSBvbmx5IG9uZSB0aGF0IGhhcyBzaGVldCgpID09PSBudWxsKSIpOworCitmdW5jdGlv
biBvblNoZWV0TG9hZGVkKGYsIGVsZW0sIG1heHRpbWUpIHsKKyAgICBpZiAoZWxlbS5zaGVldCB8
fCBtYXh0aW1lIDw9IDApCisgICAgICAgIGYoKTsKKyAgICBlbHNlCisgICAgICAgIHNldFRpbWVv
dXQoZnVuY3Rpb24gKCkgeyBvblNoZWV0TG9hZGVkKGYsIGVsZW0sIG1heHRpbWUgLSAyNSk7fSwg
MjUpOworfQorCitmdW5jdGlvbiB0ZXN0V2hlbkxvYWRlZCgpIHsKKyAgICAgICAgLy8gVGhvc2Ug
bmV4dCAyIGxpbmVzIGFyZSBhIHNhbml0eSBjaGVjay4KKyAgICAgICAgLy8gSWYgdGhlIHNlY29u
ZCBjaGVjayBmYWlscywgaXQgaXMgbGlrZWx5IHRoYXQgdGhlIHRlc3QgdGltZWQgb3V0IGFuZCB0
aHVzCisgICAgICAgIC8vIHlvdSBjYW4gZGlzY2FyZCB0aGUgcmVzdCBvZiByZXN1bHRzIGFzIGl0
IGlzIG5vdCB0ZXN0aW5nIHdoYXQgd2Ugd2FudAorICAgICAgICAvLyAobmFtZWx5IHRoYXQgdGhl
IGRpc2FibGVkIHZhbHVlIGlzIHBhc3NlZCB0byB0aGUgZmluYWwgc2hlZXQpLgorICAgICAgICBz
aG91bGRCZU5vbk51bGwoIm1haW5TaGVldExpbmsuc2hlZXQiKTsKKyAgICAgICAgc2hvdWxkQmVO
b25OdWxsKCJhbHRlcm5hdGVTaGVldExpbmsuc2hlZXQiKTsKKworICAgICAgICBzaG91bGRCZVRy
dWUoIm1haW5TaGVldExpbmsuZGlzYWJsZWQiKTsKKyAgICAgICAgc2hvdWxkQmVGYWxzZSgiYWx0
ZXJuYXRlU2hlZXRMaW5rLmRpc2FibGVkIik7CisKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7Cit9
CisKK29uU2hlZXRMb2FkZWQodGVzdFdoZW5Mb2FkZWQsIGFsdGVybmF0ZVNoZWV0TGluaywgNTAw
KTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2Nzcy9yZXNvdXJjZXMvc2xvdy1sb2FkaW5nLXNoZWV0LWluLWVycm9y
LnBocCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY3NzL3Jlc291cmNlcy9zbG93LWxvYWRpbmct
c2hlZXQtaW4tZXJyb3IucGhwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRjZDE3ZjdmNzIxOTYxNDY4Nzk0MWNkZjg5
NWMxMDdkZWFmN2Y1ZDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2Nzcy9yZXNvdXJjZXMvc2xvdy1sb2FkaW5nLXNoZWV0LWluLWVycm9yLnBocApAQCAtMCwwICsx
LDEzIEBACis8P3BocAorLy8gV2Ugc2xlZXAgaGVyZSBzbyB0aGF0IHdlIGFyZSBoYXZlIGVub3Vn
aCB0aW1lIHRvIHRlc3QgdGhlIGRpZmZlcmVudCBhdHRyaWJ1dGVzIGJlZm9yZSB0aGUgc3R5bGVz
aGVldCBpcyBmdWxseSBsb2FkZWQuCit1c2xlZXAoMTAwKTsKKworaGVhZGVyKCJIVFRQLzEuMCA1
MDAgSW50ZXJuYWwgRXJyb3IiKTsKK2hlYWRlcigiRXhwaXJlczogVGh1LCAwMSBEZWMgMjAwMyAx
NjowMDowMCBHTVQiKTsKK2hlYWRlcigiQ2FjaGUtQ29udHJvbDogbm8tY2FjaGUsIG5vLXN0b3Jl
LCBtdXN0LXJldmFsaWRhdGUiKTsKK2hlYWRlcigiUHJhZ21hOiBuby1jYWNoZSIpOworaGVhZGVy
KCJDb250ZW50LVR5cGU6IHRleHQvY3NzIik7CisKK29iX2ZsdXNoKCk7CitmbHVzaCgpOworPz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY3NzL3Jlc291cmNlcy9zbG93LWxv
YWRpbmctc2hlZXQucGhwIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jc3MvcmVzb3VyY2VzL3Ns
b3ctbG9hZGluZy1zaGVldC5waHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjg5MzdkNDJhZjgwMzA1YmU4YzM4Y2M2
ZjZlOWYwMmYwMGJmNmRlOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvY3NzL3Jlc291cmNlcy9zbG93LWxvYWRpbmctc2hlZXQucGhwCkBAIC0wLDAgKzEsMTUgQEAK
Kzw/cGhwCisvLyBXZSBzbGVlcCBoZXJlIHNvIHRoYXQgd2UgYXJlIGhhdmUgZW5vdWdoIHRpbWUg
dG8gdGVzdCB0aGUgZGlmZmVyZW50IGF0dHJpYnV0ZXMgYmVmb3JlIHRoZSBzdHlsZXNoZWV0IGlz
IGZ1bGx5IGxvYWRlZC4KK3VzbGVlcCgxMDApOworCitoZWFkZXIoIkV4cGlyZXM6IFRodSwgMDEg
RGVjIDIwMDMgMTY6MDA6MDAgR01UIik7CitoZWFkZXIoIkNhY2hlLUNvbnRyb2w6IG5vLWNhY2hl
LCBuby1zdG9yZSwgbXVzdC1yZXZhbGlkYXRlIik7CitoZWFkZXIoIlByYWdtYTogbm8tY2FjaGUi
KTsKK2hlYWRlcigiQ29udGVudC1UeXBlOiB0ZXh0L2NzcyIpOworCiskY29sb3IgPSAkX0dFVFsn
Y29sb3InXTsKKworZWNobyAiaDEgeyBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3IgfVxuIjsKK29i
X2ZsdXNoKCk7CitmbHVzaCgpOworPz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyNjUzZTcyMjAxMTBjMGUwY2M2
ZTY4MDI5NTBlYWI1YjZhY2EzZjg1Li5iODIyYzk3MmVjMzdiYjU3Yzk3ZGY1NWY1ZjM5NmFhZTNh
MDY0ZWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMgQEAKKzIwMTEtMDktMDEgIEp1bGllbiBD
aGFmZnJhaXggIDxqY2hhZmZyYWl4QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUkVHUkVTU0lPTiAo
cjg0MzI3LXI4NDMyOSk6IENTUyBzdHlsZXNoZWV0cyBmYWlsIHRvIGxvYWQgb24gd3d3LmZsYWdz
dGFyLmNvbSBsb2dpbiBwYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD02NTE0MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRlc3RzOiBmYXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1maXJzdC1hbHRlcm5h
dGUtbGluay5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1m
aXJzdC1hbHRlcm5hdGUtb24tbG9hZC1saW5rLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvY3Nz
L3N0eWxlc2hlZXQtZW5hYmxlLWZpcnN0LWFsdGVybmF0ZS1vbi1sb2FkLXNoZWV0Lmh0bWwKKyAg
ICAgICAgICAgICAgIGZhc3QvY3NzL3N0eWxlc2hlZXQtZW5hYmxlLXNlY29uZC1hbHRlcm5hdGUt
bGluay5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Nzcy9zdHlsZXNoZWV0LWVuYWJsZS1zZWNv
bmQtYWx0ZXJuYXRlLW9uLWxvYWQtbGluay5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Nzcy9z
dHlsZXNoZWV0LWVuYWJsZS1zZWNvbmQtYWx0ZXJuYXRlLW9uLWxvYWQtc2hlZXQuaHRtbAorICAg
ICAgICAgICAgICAgaHR0cC90ZXN0cy9jc3MvbGluay1jc3MtZGlzYWJsZWQtdmFsdWUtd2l0aC1z
bG93LWxvYWRpbmctc2hlZXQtaW4tZXJyb3IuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0
cy9jc3MvbGluay1jc3MtZGlzYWJsZWQtdmFsdWUtd2l0aC1zbG93LWxvYWRpbmctc2hlZXQuaHRt
bAorCisgICAgICAgIFRoaXMgcGF0Y2ggYmFzaWNhbGx5IHJldmVydHMgODg0NzkgYW5kIDg0MzI5
IHdoaWxlIGtlZXBpbmcgdGhlIHRlc3RzCisgICAgICAgIHdlIGRldmVsb3BwZWQgZHVyaW5nIHRo
ZSBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICBGb2xsb3dpbmcgZGlzY3Vzc2lvbiwgaXQgbG9v
a3MgbGlrZSBIVE1MNSB3aWxsIG5lZWQgdG8gYmUgYW1lbmRlZC4KKyAgICAgICAgSW4gdGhlIG1l
YW50aW1lLCB3ZSB3aWxsIGp1c3QgcmV2ZXJ0IHRoZSBjaGFuZ2VzIHNvIHRoYXQgd2UgY2FuIGNv
bWUKKyAgICAgICAgdXAgd2l0aCBhIGJldHRlciBjaGFuZ2UuCisKKyAgICAgICAgKiBkb20vRG9j
dW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlY2FsY1N0eWxlU2VsZWN0
b3IpOgorICAgICAgICAqIGh0bWwvSFRNTExpbmtFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxMaW5rRWxlbWVudDo6SFRNTExpbmtFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxMaW5rRWxlbWVudDo6c2V0RGlzYWJsZWRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTGlua0VsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxMaW5rRWxlbWVudDo6cHJvY2Vzcyk6CisgICAgICAgIFJldmVydCB0aG9zZSBtZXRob2Qg
dG8gdGhlaXIgb3JpZ2luYWwgY29udGVudC4KKworICAgICAgICAqIGh0bWwvSFRNTExpbmtFbGVt
ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OmlzRGlzYWJsZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50Ojppc0VuYWJsZWRWaWFTY3JpcHQpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50Ojppc0FsdGVybmF0ZSk6CisgICAgICAg
IFJlLWludHJvZHVjZWQgdGhlIERpc2FibGVkU3RhdGUgZW51bS4KKworICAgICAgICAqIGh0bWwv
SFRNTExpbmtFbGVtZW50LmlkbDogfGRpc2FibGVkfCBpcyBSZWZsZWN0J2VkIGFnYWluLgorCiAy
MDExLTA4LTA5ICBFbWlsIEEgRWtsdW5kICA8ZWFlQGNocm9taXVtLm9yZz4KIAogICAgICAgICBT
d2l0Y2ggUmVuZGVyQmxvY2sgdG8gdG8gbmV3IGxheW91dCB0eXBlcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAKaW5kZXggZmQyODg2ZTllZWFjNzNkMmFjMjRiYjNjZjgwYWE0YjVmY2ExZTE5My4uMGFm
YzU3YmQ2Y2QwNzU4YWRmN2NiZTUzOGVmMjcyMTI0MzI0OWYxZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCkBAIC0yOTYzLDcgKzI5NjMsNyBAQCB2b2lkIERvY3VtZW50OjpyZWNhbGNTdHlsZVNl
bGVjdG9yKCkKICAgICAgICAgICAgIGlmIChlLT5oYXNMb2NhbE5hbWUobGlua1RhZykpIHsKICAg
ICAgICAgICAgICAgICAvLyA8TElOSz4gZWxlbWVudAogICAgICAgICAgICAgICAgIEhUTUxMaW5r
RWxlbWVudCogbGlua0VsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MTGlua0VsZW1lbnQqPihuKTsK
LSAgICAgICAgICAgICAgICBpZiAobGlua0VsZW1lbnQtPmRpc2FibGVkKCkpCisgICAgICAgICAg
ICAgICAgaWYgKGxpbmtFbGVtZW50LT5pc0Rpc2FibGVkKCkpCiAgICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIGVuYWJsZWRWaWFTY3JpcHQgPSBsaW5rRWxlbWVu
dC0+aXNFbmFibGVkVmlhU2NyaXB0KCk7CiAgICAgICAgICAgICAgICAgaWYgKGxpbmtFbGVtZW50
LT5pc0xvYWRpbmcoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlu
a0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCmlu
ZGV4IGM0ZDk0MzFmMDVhM2E2ODE3M2U2YzQ3ZGQ4MzZlNzM3MjhmNDMwZWYuLmZkM2EwZjdhMjBl
MTNkYjE1Nzg5MTc1NTE1NmRhYmZhYzRmOTY0NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxM
aW5rRWxlbWVudC5jcHAKQEAgLTU1LDggKzU1LDggQEAgaW5saW5lIEhUTUxMaW5rRWxlbWVudDo6
SFRNTExpbmtFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50Kgog
ICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiAgICAgLCBtX2xpbmtMb2FkZXIo
dGhpcykKICAgICAsIG1fc2l6ZXMoRE9NU2V0dGFibGVUb2tlbkxpc3Q6OmNyZWF0ZSgpKQorICAg
ICwgbV9kaXNhYmxlZFN0YXRlKFVuc2V0KQogICAgICwgbV9sb2FkaW5nKGZhbHNlKQotICAgICwg
bV9pc0VuYWJsZWRWaWFTY3JpcHQoZmFsc2UpCiAgICAgLCBtX2NyZWF0ZWRCeVBhcnNlcihjcmVh
dGVkQnlQYXJzZXIpCiAgICAgLCBtX2lzSW5TaGFkb3dUcmVlKGZhbHNlKQogICAgICwgbV9wZW5k
aW5nU2hlZXRUeXBlKE5vbmUpCkBAIC04MCw0MyArODAsNDAgQEAgSFRNTExpbmtFbGVtZW50Ojp+
SFRNTExpbmtFbGVtZW50KCkKICAgICB9CiB9CiAKLXZvaWQgSFRNTExpbmtFbGVtZW50OjpzZXRE
aXNhYmxlZChib29sIGRpc2FibGVkKQordm9pZCBIVE1MTGlua0VsZW1lbnQ6OnNldERpc2FibGVk
U3RhdGUoYm9vbCBkaXNhYmxlZCkKIHsKLSAgICBpZiAoIW1fc2hlZXQpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGJvb2wgd2FzRGlzYWJsZWQgPSBtX3NoZWV0LT5kaXNhYmxlZCgpOwotICAgIGlm
ICh3YXNEaXNhYmxlZCA9PSBkaXNhYmxlZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9zaGVl
dC0+c2V0RGlzYWJsZWQoZGlzYWJsZWQpOwotICAgIG1faXNFbmFibGVkVmlhU2NyaXB0ID0gIWRp
c2FibGVkOwotCi0gICAgLy8gSWYgd2UgY2hhbmdlIHRoZSBkaXNhYmxlZCBzdGF0ZSB3aGlsZSB0
aGUgc2hlZXQgaXMgc3RpbGwgbG9hZGluZywgdGhlbiB3ZSBoYXZlIHRvCi0gICAgLy8gcGVyZm9y
bSB0aHJlZSBjaGVja3M6Ci0gICAgaWYgKGlzTG9hZGluZygpKSB7Ci0gICAgICAgIC8vIENoZWNr
ICMxOiBUaGUgc2hlZXQgYmVjb21lcyBkaXNhYmxlZCB3aGlsZSBsb2FkaW5nLgotICAgICAgICBp
ZiAoZGlzYWJsZWQpCi0gICAgICAgICAgICByZW1vdmVQZW5kaW5nU2hlZXQoKTsKLQotICAgICAg
ICAvLyBDaGVjayAjMjogQW4gYWx0ZXJuYXRlIHNoZWV0IGJlY29tZXMgZW5hYmxlZCB3aGlsZSBp
dCBpcyBzdGlsbCBsb2FkaW5nLgotICAgICAgICBpZiAobV9yZWxBdHRyaWJ1dGUubV9pc0FsdGVy
bmF0ZSAmJiAhZGlzYWJsZWQpCi0gICAgICAgICAgICBhZGRQZW5kaW5nU2hlZXQoQmxvY2tpbmcp
OwotCi0gICAgICAgIC8vIENoZWNrICMzOiBBIG1haW4gc2hlZXQgYmVjb21lcyBlbmFibGVkIHdo
aWxlIGl0IHdhcyBzdGlsbCBsb2FkaW5nIGFuZAotICAgICAgICAvLyBhZnRlciBpdCB3YXMgZGlz
YWJsZWQgdmlhIHNjcmlwdC4gSXQgdGFrZXMgcmVhbGx5IHRlcnJpYmxlIGNvZGUgdG8gbWFrZSB0
aGlzCi0gICAgICAgIC8vIGhhcHBlbiAoYSBkb3VibGUgdG9nZ2xlIGZvciBubyByZWFzb24gZXNz
ZW50aWFsbHkpLiBUaGlzIGhhcHBlbnMgb24KLSAgICAgICAgLy8gdmlydHVhbHBsYXN0aWMubmV0
LCB3aGljaCBtYW5hZ2VzIHRvIGRvIGFib3V0IDEyIGVuYWJsZS9kaXNhYmxlcyBvbiBvbmx5IDMK
LSAgICAgICAgLy8gc2hlZXRzLiA6KQotICAgICAgICBpZiAoIW1fcmVsQXR0cmlidXRlLm1faXNB
bHRlcm5hdGUgJiYgIWRpc2FibGVkICYmIHdhc0Rpc2FibGVkKQotICAgICAgICAgICAgYWRkUGVu
ZGluZ1NoZWV0KEJsb2NraW5nKTsKKyAgICBEaXNhYmxlZFN0YXRlIG9sZERpc2FibGVkU3RhdGUg
PSBtX2Rpc2FibGVkU3RhdGU7CisgICAgbV9kaXNhYmxlZFN0YXRlID0gZGlzYWJsZWQgPyBEaXNh
YmxlZCA6IEVuYWJsZWRWaWFTY3JpcHQ7CisgICAgaWYgKG9sZERpc2FibGVkU3RhdGUgIT0gbV9k
aXNhYmxlZFN0YXRlKSB7CisgICAgICAgIC8vIElmIHdlIGNoYW5nZSB0aGUgZGlzYWJsZWQgc3Rh
dGUgd2hpbGUgdGhlIHNoZWV0IGlzIHN0aWxsIGxvYWRpbmcsIHRoZW4gd2UgaGF2ZSB0bworICAg
ICAgICAvLyBwZXJmb3JtIHRocmVlIGNoZWNrczoKKyAgICAgICAgaWYgKGlzTG9hZGluZygpKSB7
CisgICAgICAgICAgICAvLyBDaGVjayAjMTogVGhlIHNoZWV0IGJlY29tZXMgZGlzYWJsZWQgd2hp
bGUgbG9hZGluZy4KKyAgICAgICAgICAgIGlmIChtX2Rpc2FibGVkU3RhdGUgPT0gRGlzYWJsZWQp
CisgICAgICAgICAgICAgICAgcmVtb3ZlUGVuZGluZ1NoZWV0KCk7CisKKyAgICAgICAgICAgIC8v
IENoZWNrICMyOiBBbiBhbHRlcm5hdGUgc2hlZXQgYmVjb21lcyBlbmFibGVkIHdoaWxlIGl0IGlz
IHN0aWxsIGxvYWRpbmcuCisgICAgICAgICAgICBpZiAobV9yZWxBdHRyaWJ1dGUubV9pc0FsdGVy
bmF0ZSAmJiBtX2Rpc2FibGVkU3RhdGUgPT0gRW5hYmxlZFZpYVNjcmlwdCkKKyAgICAgICAgICAg
ICAgICBhZGRQZW5kaW5nU2hlZXQoQmxvY2tpbmcpOworCisgICAgICAgICAgICAvLyBDaGVjayAj
MzogQSBtYWluIHNoZWV0IGJlY29tZXMgZW5hYmxlZCB3aGlsZSBpdCB3YXMgc3RpbGwgbG9hZGlu
ZyBhbmQKKyAgICAgICAgICAgIC8vIGFmdGVyIGl0IHdhcyBkaXNhYmxlZCB2aWEgc2NyaXB0LiBJ
dCB0YWtlcyByZWFsbHkgdGVycmlibGUgY29kZSB0byBtYWtlIHRoaXMKKyAgICAgICAgICAgIC8v
IGhhcHBlbiAoYSBkb3VibGUgdG9nZ2xlIGZvciBubyByZWFzb24gZXNzZW50aWFsbHkpLiBUaGlz
IGhhcHBlbnMgb24KKyAgICAgICAgICAgIC8vIHZpcnR1YWxwbGFzdGljLm5ldCwgd2hpY2ggbWFu
YWdlcyB0byBkbyBhYm91dCAxMiBlbmFibGUvZGlzYWJsZXMgb24gb25seSAzCisgICAgICAgICAg
ICAvLyBzaGVldHMuIDopCisgICAgICAgICAgICBpZiAoIW1fcmVsQXR0cmlidXRlLm1faXNBbHRl
cm5hdGUgJiYgbV9kaXNhYmxlZFN0YXRlID09IEVuYWJsZWRWaWFTY3JpcHQgJiYgb2xkRGlzYWJs
ZWRTdGF0ZSA9PSBEaXNhYmxlZCkKKyAgICAgICAgICAgICAgICBhZGRQZW5kaW5nU2hlZXQoQmxv
Y2tpbmcpOworCisgICAgICAgICAgICAvLyBJZiB0aGUgc2hlZXQgaXMgYWxyZWFkeSBsb2FkaW5n
IGp1c3QgYmFpbC4KKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogCi0gICAgICAgIC8v
IElmIHRoZSBzaGVldCBpcyBhbHJlYWR5IGxvYWRpbmcganVzdCBiYWlsLgotICAgICAgICByZXR1
cm47CisgICAgICAgIC8vIExvYWQgdGhlIHNoZWV0LCBzaW5jZSBpdCdzIG5ldmVyIGJlZW4gbG9h
ZGVkIGJlZm9yZS4KKyAgICAgICAgaWYgKCFtX3NoZWV0ICYmIG1fZGlzYWJsZWRTdGF0ZSA9PSBF
bmFibGVkVmlhU2NyaXB0KQorICAgICAgICAgICAgcHJvY2VzcygpOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBkb2N1bWVudCgpLT5zdHlsZVNlbGVjdG9yQ2hhbmdlZChEZWZlclJlY2FsY1N0
eWxlKTsgLy8gVXBkYXRlIHRoZSBzdHlsZSBzZWxlY3Rvci4KICAgICB9Ci0KLSAgICBpZiAoIWRp
c2FibGVkKQotICAgICAgICBwcm9jZXNzKCk7CiB9CiAKIFN0eWxlU2hlZXQqIEhUTUxMaW5rRWxl
bWVudDo6c2hlZXQoKSBjb25zdApAQCAtMTQxLDcgKzEzOCw5IEBAIHZvaWQgSFRNTExpbmtFbGVt
ZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiAgICAgfSBlbHNlIGlm
IChhdHRyLT5uYW1lKCkgPT0gbWVkaWFBdHRyKSB7CiAgICAgICAgIG1fbWVkaWEgPSBhdHRyLT52
YWx1ZSgpLnN0cmluZygpLmxvd2VyKCk7CiAgICAgICAgIHByb2Nlc3MoKTsKLSAgICB9IGVsc2Ug
aWYgKGF0dHItPm5hbWUoKSA9PSBvbmJlZm9yZWxvYWRBdHRyKQorICAgIH0gZWxzZSBpZiAoYXR0
ci0+bmFtZSgpID09IGRpc2FibGVkQXR0cikKKyAgICAgICAgc2V0RGlzYWJsZWRTdGF0ZSghYXR0
ci0+aXNOdWxsKCkpOworICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBvbmJlZm9yZWxvYWRB
dHRyKQogICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5iZWZv
cmVsb2FkRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgYXR0cikpOwog
I2lmIEVOQUJMRShMSU5LX1BSRUZFVENIKQogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBv
bmxvYWRBdHRyKQpAQCAtMTgxLDcgKzE4MCw3IEBAIHZvaWQgSFRNTExpbmtFbGVtZW50Ojpwcm9j
ZXNzKCkKIAogICAgIGJvb2wgYWNjZXB0SWZUeXBlQ29udGFpbnNUZXh0Q1NTID0gZG9jdW1lbnQo
KS0+cGFnZSgpICYmIGRvY3VtZW50KCktPnBhZ2UoKS0+c2V0dGluZ3MoKSAmJiBkb2N1bWVudCgp
LT5wYWdlKCktPnNldHRpbmdzKCktPnRyZWF0c0FueVRleHRDU1NMaW5rQXNTdHlsZXNoZWV0KCk7
CiAKLSAgICBpZiAoIWRpc2FibGVkKCkgJiYgKG1fcmVsQXR0cmlidXRlLm1faXNTdHlsZVNoZWV0
IHx8IChhY2NlcHRJZlR5cGVDb250YWluc1RleHRDU1MgJiYgdHlwZS5jb250YWlucygidGV4dC9j
c3MiKSkpCisgICAgaWYgKG1fZGlzYWJsZWRTdGF0ZSAhPSBEaXNhYmxlZCAmJiAobV9yZWxBdHRy
aWJ1dGUubV9pc1N0eWxlU2hlZXQgfHwgKGFjY2VwdElmVHlwZUNvbnRhaW5zVGV4dENTUyAmJiB0
eXBlLmNvbnRhaW5zKCJ0ZXh0L2NzcyIpKSkKICAgICAgICAgJiYgZG9jdW1lbnQoKS0+ZnJhbWUo
KSAmJiBtX3VybC5pc1ZhbGlkKCkpIHsKICAgICAgICAgCiAgICAgICAgIFN0cmluZyBjaGFyc2V0
ID0gZ2V0QXR0cmlidXRlKGNoYXJzZXRBdHRyKTsKQEAgLTQ0MCwxMSArNDM5LDYgQEAgdm9pZCBI
VE1MTGlua0VsZW1lbnQ6OnJlbW92ZVBlbmRpbmdTaGVldCgpCiAgICAgZG9jdW1lbnQoKS0+cmVt
b3ZlUGVuZGluZ1NoZWV0KCk7CiB9CiAKLWJvb2wgSFRNTExpbmtFbGVtZW50OjpkaXNhYmxlZCgp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc2hlZXQgJiYgbV9zaGVldC0+ZGlzYWJsZWQoKTsKLX0K
LQogRE9NU2V0dGFibGVUb2tlbkxpc3QqIEhUTUxMaW5rRWxlbWVudDo6c2l6ZXMoKSBjb25zdAog
ewogICAgIHJldHVybiBtX3NpemVzLmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTGlua0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVt
ZW50LmgKaW5kZXggOGZlZGUwMmU1ZTdmOTJiNzQwZjg1OTA5MTNlOGI3NTlhNmQxNTEzOC4uZDIz
YjUwYjc5ZGUzYTViNTgzMmJiZmMxYzdmZjg4OTFjYTAxODY4MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxMaW5rRWxlbWVudC5oCkBAIC01Nyw5ICs1Nyw5IEBAIHB1YmxpYzoKIAogICAgIC8vIEZJ
WE1FOiBUaGlzIHNob3VsZCBiZSByZW5hbWVkIGlzU3R5bGVTaGVldExvYWRpbmcgYXMgdGhpcyBp
cyBvbmx5IHVzZWQgZm9yIHN0eWxlc2hlZXRzLgogICAgIGJvb2wgaXNMb2FkaW5nKCkgY29uc3Q7
Ci0gICAgYm9vbCBpc0VuYWJsZWRWaWFTY3JpcHQoKSBjb25zdCB7IHJldHVybiBtX2lzRW5hYmxl
ZFZpYVNjcmlwdDsgfQotICAgIGJvb2wgZGlzYWJsZWQoKSBjb25zdDsKLSAgICB2b2lkIHNldERp
c2FibGVkKGJvb2wpOworCisgICAgYm9vbCBpc0Rpc2FibGVkKCkgY29uc3QgeyByZXR1cm4gbV9k
aXNhYmxlZFN0YXRlID09IERpc2FibGVkOyB9CisgICAgYm9vbCBpc0VuYWJsZWRWaWFTY3JpcHQo
KSBjb25zdCB7IHJldHVybiBtX2Rpc2FibGVkU3RhdGUgPT0gRW5hYmxlZFZpYVNjcmlwdDsgfQog
ICAgIHZvaWQgc2V0U2l6ZXMoY29uc3QgU3RyaW5nJik7CiAgICAgRE9NU2V0dGFibGVUb2tlbkxp
c3QqIHNpemVzKCkgY29uc3Q7CiAKQEAgLTgxLDggKzgxLDEwIEBAIHByaXZhdGU6CiAgICAgdmly
dHVhbCB2b2lkIGxpbmtMb2FkZWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgbGlua0xvYWRpbmdFcnJv
cmVkKCk7CiAKLSAgICBib29sIGlzQWx0ZXJuYXRlKCkgY29uc3QgeyByZXR1cm4gbV9yZWxBdHRy
aWJ1dGUubV9pc0FsdGVybmF0ZTsgfQorICAgIGJvb2wgaXNBbHRlcm5hdGUoKSBjb25zdCB7IHJl
dHVybiBtX2Rpc2FibGVkU3RhdGUgPT0gVW5zZXQgJiYgbV9yZWxBdHRyaWJ1dGUubV9pc0FsdGVy
bmF0ZTsgfQogICAgIAorICAgIHZvaWQgc2V0RGlzYWJsZWRTdGF0ZShib29sKTsKKwogICAgIHZp
cnR1YWwgYm9vbCBpc1VSTEF0dHJpYnV0ZShBdHRyaWJ1dGUqKSBjb25zdDsKIAogcHJpdmF0ZToK
QEAgLTEwMCwxMyArMTAyLDE5IEBAIHByaXZhdGU6CiAgICAgTGlua0xvYWRlciBtX2xpbmtMb2Fk
ZXI7CiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkQ1NTU3R5bGVTaGVldD4gbV9jYWNo
ZWRTaGVldDsKICAgICBSZWZQdHI8Q1NTU3R5bGVTaGVldD4gbV9zaGVldDsKKyAgICBlbnVtIERp
c2FibGVkU3RhdGUgeworICAgICAgICBVbnNldCwKKyAgICAgICAgRW5hYmxlZFZpYVNjcmlwdCwK
KyAgICAgICAgRGlzYWJsZWQKKyAgICB9OworCiAgICAgS1VSTCBtX3VybDsKICAgICBTdHJpbmcg
bV90eXBlOwogICAgIFN0cmluZyBtX21lZGlhOwogICAgIFJlZlB0cjxET01TZXR0YWJsZVRva2Vu
TGlzdD4gbV9zaXplczsKKyAgICBEaXNhYmxlZFN0YXRlIG1fZGlzYWJsZWRTdGF0ZTsKICAgICBM
aW5rUmVsQXR0cmlidXRlIG1fcmVsQXR0cmlidXRlOwogICAgIGJvb2wgbV9sb2FkaW5nOwotICAg
IGJvb2wgbV9pc0VuYWJsZWRWaWFTY3JpcHQ7CiAgICAgYm9vbCBtX2NyZWF0ZWRCeVBhcnNlcjsK
ICAgICBib29sIG1faXNJblNoYWRvd1RyZWU7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxM
aW5rRWxlbWVudC5pZGwKaW5kZXggN2Y0OGE3Mjc0MGI0MGY0MjE2ZTUyZDU2N2ZmODIwOGE4MDRj
OTEwZi4uOGQxNmYyNWU4ODUxNGRmNjdhZTI4NzgxOGFlODQ2MjMzYmExMjQ5NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmlkbApAQCAtMjIsNyArMjIsNyBAQAogbW9kdWxl
IGh0bWwgewogCiAgICAgaW50ZXJmYWNlIEhUTUxMaW5rRWxlbWVudCA6IEhUTUxFbGVtZW50IHsK
LSAgICAgICAgYXR0cmlidXRlIGJvb2xlYW4gZGlzYWJsZWQ7CisgICAgICAgIGF0dHJpYnV0ZSBb
UmVmbGVjdF0gYm9vbGVhbiBkaXNhYmxlZDsKICAgICAgICAgYXR0cmlidXRlIFtSZWZsZWN0XSBE
T01TdHJpbmcgY2hhcnNldDsKICAgICAgICAgYXR0cmlidXRlIFtSZWZsZWN0LCBVUkxdIERPTVN0
cmluZyBocmVmOwogICAgICAgICBhdHRyaWJ1dGUgW1JlZmxlY3RdIERPTVN0cmluZyBocmVmbGFu
ZzsK
</data>

          </attachment>
      

    </bug>

</bugzilla>