<?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>25551</bug_id>
          <alias>H5F-RequiredAttr</alias>
          <creation_ts>2009-05-04 13:24:32 -0700</creation_ts>
          <short_desc>Support for HTML5 Forms &quot;required&quot; attribute</short_desc>
          <delta_ts>2012-08-06 23:40:02 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Forms</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://www.whatwg.org/specs/web-apps/current-work/multipage/forms.html#attr-input-required</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>19562</dependson>
          <blocked>19264</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Michelangelo De Simone">michelangelo</reporter>
          <assigned_to name="Michelangelo De Simone">michelangelo</assigned_to>
          <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>ian</cc>
    
    <cc>mike</cc>
    
    <cc>oliver</cc>
    
    <cc>pkasting</cc>
    
    <cc>roger_fong</cc>
    
    <cc>tkent</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>119869</commentid>
    <comment_count>0</comment_count>
    <who name="Michelangelo De Simone">michelangelo</who>
    <bug_when>2009-05-04 13:24:32 -0700</bug_when>
    <thetext>WebKit should support this attribute as per WHATWG specs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123184</commentid>
    <comment_count>1</comment_count>
      <attachid>30679</attachid>
    <who name="Michelangelo De Simone">michelangelo</who>
    <bug_when>2009-05-26 14:02:47 -0700</bug_when>
    <thetext>Created attachment 30679
Early, test-free and incomplete patch

Waiting for comments on this early patch which is still test-free. Obviously no r? asked.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123193</commentid>
    <comment_count>2</comment_count>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2009-05-26 14:21:10 -0700</bug_when>
    <thetext>I&apos;m not a reviewer, but here are my drive-by comments.

* Lines should not have only whitespace in them (some added lines have spaces in them).  Use a linter.

* I wouldn&apos;t bother with FIXMEs and TODOs for &quot;add support for more input types&quot; in these functions as whenever more input types are added it will be clear they need to be handled everywhere the existing types are.  Since we don&apos;t yet have the enum values for these this just decreases clarity.

* &quot;Leads us to understand whether or not a form control could potentially be a required form control.&quot; is incredibly verbose and vague at the same time.  Either don&apos;t comment or say something like &quot;True if this control supports the &apos;required&apos; attribute for form validation.&quot;

* Add tests (as you noted).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125203</commentid>
    <comment_count>3</comment_count>
      <attachid>31139</attachid>
    <who name="Michelangelo De Simone">michelangelo</who>
    <bug_when>2009-06-10 13:37:29 -0700</bug_when>
    <thetext>Created attachment 31139
Final patch

Added &quot;semi&quot;-final patch, waiting for comments to ask for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125205</commentid>
    <comment_count>4</comment_count>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2009-06-10 13:48:21 -0700</bug_when>
    <thetext>The patch doesn&apos;t actually include the new tests, just the ChangeLog for them.

TELEPHONE is already in the codebase?  Wow.

If you include the tests I think you should go ahead and r? your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125208</commentid>
    <comment_count>5</comment_count>
      <attachid>31141</attachid>
    <who name="Michelangelo De Simone">michelangelo</who>
    <bug_when>2009-06-10 13:52:36 -0700</bug_when>
    <thetext>Created attachment 31141
Final patch, corrected</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125209</commentid>
    <comment_count>6</comment_count>
    <who name="Michelangelo De Simone">michelangelo</who>
    <bug_when>2009-06-10 13:53:08 -0700</bug_when>
    <thetext>(In reply to comment #4)

&gt; The patch doesn&apos;t actually include the new tests, just the ChangeLog for them.

LOL, mistake.:)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>126681</commentid>
    <comment_count>7</comment_count>
      <attachid>31141</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-06-18 01:48:47 -0700</bug_when>
    <thetext>Comment on attachment 31141
Final patch, corrected

I&apos;m concerned by the absence of tests for validity (i realise they&apos;re dependent on bug #19562, but i think in that case we probably want to make this bug depend on that one).  I actually believe that hasMissingValue is wrong for CHECKBOX and RADIO as it appears to imply that a checked radio button or checkbox is missing its value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>126687</commentid>
    <comment_count>8</comment_count>
    <who name="Michelangelo De Simone">michelangelo</who>
    <bug_when>2009-06-18 03:03:42 -0700</bug_when>
    <thetext>(In reply to comment #7)

&gt; I&apos;m concerned by the absence of tests for validity (i realise they&apos;re dependent
&gt; on bug #19562, but i think in that case we probably want to make this bug
&gt; depend on that one).  I actually believe that hasMissingValue is wrong for

I definitely agree on that. Updated and clean patch for #19562 in on its way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>131108</commentid>
    <comment_count>9</comment_count>
    <who name="Michelangelo De Simone">michelangelo</who>
    <bug_when>2009-07-11 04:43:44 -0700</bug_when>
    <thetext>#19562 has been landed; working to adapt required attribute code to ValidityState.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132015</commentid>
    <comment_count>10</comment_count>
      <attachid>32803</attachid>
    <who name="Michelangelo De Simone">michelangelo</who>
    <bug_when>2009-07-15 13:43:40 -0700</bug_when>
    <thetext>Created attachment 32803
Propopsed patch, rev. 2

This patch include support for the valueMissing flag as well as new tests for the ValidityState object.
Waiting for comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132023</commentid>
    <comment_count>11</comment_count>
      <attachid>32803</attachid>
    <who name="Michelangelo De Simone">michelangelo</who>
    <bug_when>2009-07-15 13:51:52 -0700</bug_when>
    <thetext>Comment on attachment 32803
Propopsed patch, rev. 2

This patch lacks the support for &quot;:required&quot; and &quot;:optional&quot; CSS pseudoclasses, I&apos;m working to include it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132037</commentid>
    <comment_count>12</comment_count>
    <who name="Michelangelo De Simone">michelangelo</who>
    <bug_when>2009-07-15 14:22:27 -0700</bug_when>
    <thetext>I must point out conditions for these pseudoclasses to be applied to elements are quite dark to me, from http://www.w3.org/TR/html5/interactive-elements.html:

***
:required
The :required pseudo-class must match the following elements:
input elements that are required
textarea elements that have a required attribute
***

This means that INPUT elements, potentially suffering of being missed (= NO disabled, NO readonly, NO button, etc..) can have this pseudoclasses on them (this means I can use the validity().isControlRequired() checke found in the latest patch of mine.)

On the other hand, textareas just have to be marked as required, what about readonly attribute on such elements? This seems quite inconsistent to me.
Anyone quite clearer ideas?

Same deal with the optional pseudoclass:
***
:optional
The :optional pseudo-class must match the following elements:
button elements
input elements that are not required
select elements
textarea elements that do not have a required attribute
***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132047</commentid>
    <comment_count>13</comment_count>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2009-07-15 14:47:40 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; I must point out conditions for these pseudoclasses to be applied to elements
&gt; are quite dark to me

I&apos;m not clear what your objection is.  Do you worry about the practical effect on users of having an element that is both required and readonly (and given no initial value)?  If you think that&apos;s a case the spec should cover you should bring that up on the whatwg mailing list, or at least ask Hixie in IRC.

Otherwise it seems pretty clear to me that an element matches :required iff it is marked &quot;required&quot;, without regard to whether it&apos;s possible for a user to edit the value therein.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132084</commentid>
    <comment_count>14</comment_count>
    <who name="Michelangelo De Simone">michelangelo</who>
    <bug_when>2009-07-15 16:25:15 -0700</bug_when>
    <thetext>(In reply to comment #13)

&gt; Otherwise it seems pretty clear to me that an element matches :required iff it
&gt; is marked &quot;required&quot;, without regard to whether it&apos;s possible for a user to
&gt; edit the value therein.

It seemed quite weird to me because the required attribute applies and it&apos;s &quot;honourable&quot; only on mutable inputs and mutable textareas. Anyway, I&apos;ve written the code that adds these new pseudoclasses and I&apos;ve been writing another TS to check&apos;em out.

In the meantime, except for the CSS stuff, how does the code look? What are your opinions?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132087</commentid>
    <comment_count>15</comment_count>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2009-07-15 16:37:16 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; It seemed quite weird to me because the required attribute applies and it&apos;s
&gt; &quot;honourable&quot; only on mutable inputs and mutable textareas.

A careful reading of 4.10.4.2.5 seems to make this clear:
&quot;The required attribute is a boolean attribute. When specified, the element is required.

Constraint validation: If the element is required, and its value DOM attribute applies and is in the mode value, and the element is mutable, and the element&apos;s value is the empty string, then the element is suffering from being missing.&quot;

When combined with the relevant bit on :required:
&quot;The :required pseudo-class must match the following elements:

* input elements that are required
* textarea elements that have a required attribute&quot;

The result is:
:required matches input elements that are required.  Input elements are required if they have the boolean &quot;required&quot; attribute specified.  Input element only fail constraint validation if they&apos;re required _and_ they&apos;re mutable _and_ they&apos;re empty and some other stuff.

Thus, it&apos;s possible for an element to be required (and thus be matched by :required) and yet not fail constraint validation when empty.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132090</commentid>
    <comment_count>16</comment_count>
    <who name="Ian &apos;Hixie&apos; Hickson">ian</who>
    <bug_when>2009-07-15 16:50:13 -0700</bug_when>
    <thetext>Almost.

Input elements are required if they have the boolean &quot;required&quot; attribute specified *and the attribute applies*. So for example, :required won&apos;t match this element:

   &lt;input required type=submit&gt;

This is because of the following text:

# These attributes only apply to an input element if its type attribute
# is in a state whose definition declares that the attribute applies.
# When an attribute doesn&apos;t apply to an input element, user agents
# must ignore the attribute.
 -- http://www.whatwg.org/specs/web-apps/current-work/#common-input-element-attributes

But you are correct in that :required will match this element, despite this element not preventing form submission:

   &lt;input required type=text disabled&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132091</commentid>
    <comment_count>17</comment_count>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2009-07-15 16:52:18 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; In the meantime, except for the CSS stuff, how does the code look? What are
&gt; your opinions?

Based on Hixie&apos;s and my comments, I think if you move some things like disabled/readonly checking from isControlRequired() into the valueMissing() code, then you can use isControlRequired() to implement :required.

Some of the layout tests&apos; language is a little unclear, but perhaps that&apos;s not a problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132092</commentid>
    <comment_count>18</comment_count>
    <who name="Michelangelo De Simone">michelangelo</who>
    <bug_when>2009-07-15 16:53:27 -0700</bug_when>
    <thetext>(In reply to comment #15)

&gt; Thus, it&apos;s possible for an element to be required (and thus be matched by
&gt; :required) and yet not fail constraint validation when empty.

Uhmmm, I&apos;m quite doubtful about the semantic of the specs:

input elements that are required -&gt; inputs that have requiredAttr set AND required applies (mutable)
textarea elements that have a required attribute -&gt; textareas that have requiredAttr set, whenever or not they are mutable.

In my opinion (for what it&apos;s worth:)), if that spec meant something such as &quot;:required applies only to inputs and textareas with requiredAttr set, whatever state they&apos;re in&quot;, they should have stated in another manner:

input elements that have a required ATTRIBUTE &lt;- 
textarea elements that have a required attribute

This may sound academic, I know.:)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132093</commentid>
    <comment_count>19</comment_count>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2009-07-15 16:56:19 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; Uhmmm, I&apos;m quite doubtful about the semantic of the specs:
&gt; 
&gt; input elements that are required -&gt; inputs that have requiredAttr set AND
&gt; required applies (mutable)

No, you&apos;ve mistaken what &quot;required applies&quot; means.  &quot;mutable&quot; is a separate precondition for constraint validation than &quot;required applies&quot;.  &quot;required applies&quot; means &quot;input element is a type that supports required&quot;.  To fail constraint validation, the element must be required, required must apply, the element must be mutable, and the element must be empty; those are all separate points.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132375</commentid>
    <comment_count>20</comment_count>
      <attachid>32898</attachid>
    <who name="Michelangelo De Simone">michelangelo</who>
    <bug_when>2009-07-16 15:37:41 -0700</bug_when>
    <thetext>Created attachment 32898
Proposed patch, rev.3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132426</commentid>
    <comment_count>21</comment_count>
      <attachid>32898</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-07-16 17:40:04 -0700</bug_when>
    <thetext>Comment on attachment 32898
Proposed patch, rev.3

Looks good. Two questions.

&gt; +            case CSSSelector::PseudoOptional: {
&gt; +                if (!e || !e-&gt;isFormControlElement())
&gt; +                    return false;
&gt; +
&gt; +                if (e-&gt;hasTagName(buttonTag) || e-&gt;hasTagName(selectTag))
&gt; +                    return true;
&gt; +                else if (e-&gt;hasTagName(inputTag))
&gt; +                    return !static_cast&lt;HTMLInputElement*&gt;(e)-&gt;validity()-&gt;isControlRequired();
&gt; +                else if (e-&gt;hasTagName(textareaTag))
&gt; +                    return !static_cast&lt;HTMLTextAreaElement*&gt;(e)-&gt;required();
&gt; +
&gt; +                break;
&gt; +            }

Can we add a virtual function for this instead of all this per-element code in the style selector?

&gt; +            case CSSSelector::PseudoRequired: {
&gt; +                if (!e || !e-&gt;isFormControlElement())
&gt; +                    return false;
&gt; +
&gt; +                if (e-&gt;hasTagName(inputTag))
&gt; +                    return static_cast&lt;HTMLInputElement*&gt;(e)-&gt;validity()-&gt;isControlRequired();
&gt; +                else if (e-&gt;hasTagName(textareaTag))
&gt; +                    return static_cast&lt;HTMLTextAreaElement*&gt;(e)-&gt;required();
&gt; +
&gt; +                break;
&gt; +            }

Ditto.

&gt; +    virtual bool required() const;

Why is this virtual? Any polymorphic callers?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132569</commentid>
    <comment_count>22</comment_count>
    <who name="Michelangelo De Simone">michelangelo</who>
    <bug_when>2009-07-17 07:35:06 -0700</bug_when>
    <thetext>(In reply to comment #21)

&gt; Can we add a virtual function for this instead of all this per-element code in
&gt; the style selector?

Good observation, I&apos;ll move validity() definition up to Element.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132592</commentid>
    <comment_count>23</comment_count>
      <attachid>32945</attachid>
    <who name="Michelangelo De Simone">michelangelo</who>
    <bug_when>2009-07-17 09:20:51 -0700</bug_when>
    <thetext>Created attachment 32945
Proposed patch, rev. 4

Modified according to observations:

+ virtual isOptionalFormControl
+ virtual isRequiredFormControl</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132606</commentid>
    <comment_count>24</comment_count>
      <attachid>32950</attachid>
    <who name="Michelangelo De Simone">michelangelo</who>
    <bug_when>2009-07-17 09:52:25 -0700</bug_when>
    <thetext>Created attachment 32950
Proposed patch, rev. 4b

In Rev.4 there was an unecessary inclusion of ValidityState.h in CSSStyleSelector.cpp, cleaned up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132663</commentid>
    <comment_count>25</comment_count>
      <attachid>32950</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-07-17 12:32:42 -0700</bug_when>
    <thetext>Comment on attachment 32950
Proposed patch, rev. 4b

&gt; +            case CSSSelector::PseudoOptional: {
&gt; +                if (!e || !e-&gt;isFormControlElement())
&gt; +                    return false;
&gt; +
&gt; +                return e-&gt;isOptionalFormControl();
&gt; +            }

No braces needed here.

Since you put isOptionalFormControl into Element, you don&apos;t need so much code. Just:

    case CSSSelector::PseudoOptional:
        return e &amp;&amp; e-&gt;isOptionalFormControl();

Same for PseudoRequired.

&gt; +    virtual bool isOptionalFormControl() const { return true; }

I prefer to make such virtual function overrides in the private: section of a class. If anyone calls this on a button element it means they made a programming mistake and I think it&apos;s best if the code fails to compile in such cases that can easily be caught. Making the virtual function override private accomplishes that.

&gt; +bool HTMLInputElement::isRequiredFormControl() const
&gt; +{
&gt; +    if (!required())
&gt; +        return false;
&gt; +
&gt; +    switch (inputType()) {
&gt; +        case HTMLInputElement::HIDDEN:
&gt; +        case HTMLInputElement::RANGE:
&gt; +        case HTMLInputElement::SUBMIT:
&gt; +        case HTMLInputElement::IMAGE:
&gt; +        case HTMLInputElement::RESET:
&gt; +        case HTMLInputElement::BUTTON:
&gt; +            return false;
&gt; +        default:
&gt; +            return true;
&gt; +    }
&gt; +
&gt; +    return false;
&gt; +}

There is no need to have that &quot;return false&quot; statement there if there is no exit from the switch statement, and in fact I believe this will fail to compile with some compilers due to the unreachable code.

The enum values don&apos;t need to be qualified by the HTMLInputElement class name, because this is already a member function. For maintenance I prefer to have all the values of the enum listed. If you do that and omit the default from the switch, then the gcc compiler will catch you if you add a new enum value without modifying this function.

If you remove the default, then you will need the return after the switch, though, although you can do an ASSERT_NOT_REACHED. The saveForMControlState function uses the preferred style.

&gt; +    virtual bool isOptionalFormControl() const { return !isRequiredFormControl(); }
&gt; +    virtual bool isRequiredFormControl() const;

Same thought about making these private.

&gt; +    virtual bool isOptionalFormControl() const { return true; }

Ditto.

&gt; +    virtual bool isOptionalFormControl() const { return !isRequiredFormControl(); }
&gt; +    virtual bool isRequiredFormControl() const { return required(); }

Ditto.

&gt; +        switch (i-&gt;inputType()) {
&gt; +            case HTMLInputElement::TEXT:
&gt; +            case HTMLInputElement::SEARCH:
&gt; +            case HTMLInputElement::URL:
&gt; +            case HTMLInputElement::TELEPHONE:
&gt; +            case HTMLInputElement::EMAIL:
&gt; +            case HTMLInputElement::PASSWORD:
&gt; +            case HTMLInputElement::NUMBER:
&gt; +                return i-&gt;value().isEmpty();
&gt; +            case HTMLInputElement::FILE:
&gt; +                return i-&gt;files()-&gt;isEmpty();
&gt; +            case HTMLInputElement::CHECKBOX:
&gt; +                return !i-&gt;checked();
&gt; +            case HTMLInputElement::RADIO:
&gt; +                return !i-&gt;document()-&gt;checkedRadioButtons().checkedButtonForGroup(i-&gt;name());
&gt; +            default:
&gt; +                return false;

Same thought about omitting the default case from this.

Again, would this be done better with code in the various element classes and a virtual function rather than all this code specific per-type here in the ValidityState class?

I think those are enough comments that I&apos;ll say review- and give you a chance to consider the comments. I think all the comments I made are optional, so please do use your own best judgement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132667</commentid>
    <comment_count>26</comment_count>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2009-07-17 12:37:36 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; For maintenance I prefer to have all
&gt; the values of the enum listed. If you do that and omit the default from the
&gt; switch, then the gcc compiler will catch you if you add a new enum value
&gt; without modifying this function.

FWIW (which is not very much), I prefer the &quot;use-default&quot; route as the code is now, because it&apos;s more compact (and thus more readable IMO), and it makes adding future values easier when the default is well-chosen.

However, Darin&apos;s points are reasonable, so use your judgment.

&gt; If you remove the default, then you will need the return after the switch,
&gt; though, although you can do an ASSERT_NOT_REACHED.

Personally I would s/can/should/.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132680</commentid>
    <comment_count>27</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-07-17 13:41:08 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; (In reply to comment #25)
&gt; &gt; For maintenance I prefer to have all
&gt; &gt; the values of the enum listed. If you do that and omit the default from the
&gt; &gt; switch, then the gcc compiler will catch you if you add a new enum value
&gt; &gt; without modifying this function.
&gt; 
&gt; FWIW (which is not very much), I prefer the &quot;use-default&quot; route as the code is
&gt; now, because it&apos;s more compact (and thus more readable IMO), and it makes
&gt; adding future values easier when the default is well-chosen.

This is predicated on a “well-chosen default”, but what would that be in a function like the one added here? If the new value is a variant on type=text we&apos;d need one default, but if it’s a variant on type=button we’d need another.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132682</commentid>
    <comment_count>28</comment_count>
    <who name="Michelangelo De Simone">michelangelo</who>
    <bug_when>2009-07-17 13:46:41 -0700</bug_when>
    <thetext>(In reply to comment #25)

&lt;...big snip...&gt;
&gt; &gt; +    virtual bool isOptionalFormControl() const { return true; }
&gt; I prefer to make such virtual function overrides in the private: section of a
&gt; class. If anyone calls this on a button element it means they made a
&gt; programming mistake and I think it&apos;s best if the code fails to compile in such
&gt; cases that can easily be caught. Making the virtual function override private
&gt; accomplishes that.

Uhmmm, I honestly fail to understand this: speaking conceptually an HTMLButtonElement is an optional form control element so I wonder what could be wrong in calling something such as myHTMLButtonIstance-&gt;isOptionalFormControl() [always true] or someChildOfElement-&gt;isRequiredFormControl(); [false].

[ValidityState::valueMissing(), checks on real name]
&gt; Again, would this be done better with code in the various element classes and a
&gt; virtual function rather than all this code specific per-type here in the
&gt; ValidityState class?

IMO, checks for validation are not elements&apos; responsability, I mean: a given element could be required or optional (it&apos;s its own property/status), but validation checks are made through external routines that are conceptually separated from element&apos;s abstraction: it&apos;s not priceless, indeed (those two ifs/casts).

Always IMO: it&apos;s someElement.validity.valueMissing, not someElement.valueMissing.

Obviously your wise commens are most welcome, it&apos;s just some opinion of mine; you have the final word on those.:)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132685</commentid>
    <comment_count>29</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-07-17 13:53:17 -0700</bug_when>
    <thetext>(In reply to comment #28)
&gt; Uhmmm, I honestly fail to understand this: speaking conceptually an
&gt; HTMLButtonElement is an optional form control element so I wonder what could be
&gt; wrong in calling something such as myHTMLButtonIstance-&gt;isOptionalFormControl()
&gt; [always true] or someChildOfElement-&gt;isRequiredFormControl(); [false].

It&apos;s inefficient to make a virtual function call for something that&apos;s known at compile time. That&apos;s all. And in the past I usually find that when someone calls one of these it&apos;s because they made a programming mistake.

It&apos;s not a conceptual error to ask if a &lt;button&gt; is optional, but it&apos;s a clue that the programmer may be confused, since every &lt;button&gt; is so there&apos;s no need to make a function call.

&gt; [ValidityState::valueMissing(), checks on real name]
&gt; &gt; Again, would this be done better with code in the various element classes and a
&gt; &gt; virtual function rather than all this code specific per-type here in the
&gt; &gt; ValidityState class?
&gt; 
&gt; IMO, checks for validation are not elements&apos; responsibility

OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132686</commentid>
    <comment_count>30</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-07-17 13:54:07 -0700</bug_when>
    <thetext>(In reply to comment #29)
&gt; It&apos;s inefficient to make a virtual function call for something that&apos;s known at
&gt; compile time. That&apos;s all. And in the past I usually find that when someone
&gt; calls one of these it&apos;s because they made a programming mistake.

The principle is to start everything as private as possible, and only make things public as needed, and also to not make an override public just because it&apos;s public in the base class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132689</commentid>
    <comment_count>31</comment_count>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2009-07-17 14:03:39 -0700</bug_when>
    <thetext>(In reply to comment #29)
&gt; It&apos;s inefficient to make a virtual function call for something that&apos;s known at
&gt; compile time. That&apos;s all. And in the past I usually find that when someone
&gt; calls one of these it&apos;s because they made a programming mistake.
&gt; 
&gt; It&apos;s not a conceptual error to ask if a &lt;button&gt; is optional, but it&apos;s a clue
&gt; that the programmer may be confused, since every &lt;button&gt; is so there&apos;s no need
&gt; to make a function call.

True, but that seems a little less obvious on the other cases, where the implementation calls another function rather than simply returning true.  And it seems less future-proof if we think there would ever be a reason we&apos;d make a simple &quot;return true&quot; depend on anything else.

But those are minor.  I think your comment about making things as private as possible is probably a clearer argument.  Although I still don&apos;t really see any harm in making these public either :)

&gt; &gt; [ValidityState::valueMissing(), checks on real name]
&gt; &gt; &gt; Again, would this be done better with code in the various element classes and a
&gt; &gt; &gt; virtual function rather than all this code specific per-type here in the
&gt; &gt; &gt; ValidityState class?
&gt; &gt; 
&gt; &gt; IMO, checks for validation are not elements&apos; responsibility
&gt; 
&gt; OK.

FWIW, I agree with Darin&apos;s original comment here.  I think it is clearer and better to implement these checks on the elements themselves.  Just because &quot;validity&quot; is some collection of attributes does not mean that the actual implementation of those attributes is somehow divorced from the element they&apos;re on.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132693</commentid>
    <comment_count>32</comment_count>
    <who name="Michelangelo De Simone">michelangelo</who>
    <bug_when>2009-07-17 14:11:33 -0700</bug_when>
    <thetext>(In reply to comment #31)

&gt; FWIW, I agree with Darin&apos;s original comment here.  I think it is clearer and

...it&apos;s worth, it&apos;s worth...:-)
Ok, changes in progress:

- moving isRequired/OptionalFormControl() in private section of Element&apos;s subclasses;
- moving validation code to form control elements.

&gt; better to implement these checks on the elements themselves.  Just because
&gt; &quot;validity&quot; is some collection of attributes does not mean that the actual
&gt; implementation of those attributes is somehow divorced from the element they&apos;re
&gt; on.

I can&apos;t say I totally agree but you made your point.:-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132725</commentid>
    <comment_count>33</comment_count>
      <attachid>32975</attachid>
    <who name="Michelangelo De Simone">michelangelo</who>
    <bug_when>2009-07-17 15:05:48 -0700</bug_when>
    <thetext>Created attachment 32975
Proposed patch, rev.5

Modified according to comments from Darin and Peter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132729</commentid>
    <comment_count>34</comment_count>
      <attachid>32975</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-07-17 15:15:21 -0700</bug_when>
    <thetext>Comment on attachment 32975
Proposed patch, rev.5

&gt; +    switch (inputType()) {
&gt; +        case TEXT:
&gt; +        case SEARCH:
&gt; +        case URL:
&gt; +        case TELEPHONE:
&gt; +        case EMAIL:
&gt; +        case PASSWORD:
&gt; +        case NUMBER:
&gt; +        case FILE:
&gt; +            return value().isEmpty();
&gt; +        case CHECKBOX:
&gt; +            return !checked();
&gt; +        case RADIO:
&gt; +            return !document()-&gt;checkedRadioButtons().checkedButtonForGroup(name());
&gt; +        case HIDDEN:
&gt; +        case RANGE:
&gt; +        case SUBMIT:
&gt; +        case IMAGE:
&gt; +        case RESET:
&gt; +        case BUTTON:
&gt; +        case ISINDEX:
&gt; +            ASSERT_NOT_REACHED();
&gt; +    }
&gt; +
&gt; +    return false;

Could also use an assertion outside the switch statement, since that should not be reached either. I suggest replacing the ASSERT_NOT_REACHED with a break and moving the ASSERT_NOT_REACHED outside the switch.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132731</commentid>
    <comment_count>35</comment_count>
      <attachid>32979</attachid>
    <who name="Michelangelo De Simone">michelangelo</who>
    <bug_when>2009-07-17 15:17:40 -0700</bug_when>
    <thetext>Created attachment 32979
Proposed patch, rev. 5b

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132739</commentid>
    <comment_count>36</comment_count>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2009-07-17 15:38:06 -0700</bug_when>
    <thetext>Landed patch in r46062.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687657</commentid>
    <comment_count>37</comment_count>
    <who name="Roger Fong">roger_fong</who>
    <bug_when>2012-08-05 14:29:33 -0700</bug_when>
    <thetext>Associated radar:
&lt;rdar://problem/119655018&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688470</commentid>
    <comment_count>38</comment_count>
    <who name="Roger Fong">roger_fong</who>
    <bug_when>2012-08-06 15:31:37 -0700</bug_when>
    <thetext>Does anyone know whether or not this worked on safari at one point?
Because it definitely doesn&apos;t now...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688557</commentid>
    <comment_count>39</comment_count>
    <who name="Roger Fong">roger_fong</who>
    <bug_when>2012-08-06 16:43:36 -0700</bug_when>
    <thetext>It didn&apos;t.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688874</commentid>
    <comment_count>40</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-08-06 23:40:02 -0700</bug_when>
    <thetext>(In reply to comment #38)
&gt; Does anyone know whether or not this worked on safari at one point?
&gt; Because it definitely doesn&apos;t now...

I haven&apos;t tried Safari 6 yet, but I guess it support :required.  e.g. &lt;input required value=&quot;&quot;&gt; matches :invalid CSS selector.
Safari 6 might have no interactive validation feature.  See Bug 59019.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30679</attachid>
            <date>2009-05-26 14:02:47 -0700</date>
            <delta_ts>2009-06-10 13:37:29 -0700</delta_ts>
            <desc>Early, test-free and incomplete patch</desc>
            <filename>requiredAttribute-20090526.patch</filename>
            <type>text/plain</type>
            <size>6586</size>
            <attacher name="Michelangelo De Simone">michelangelo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4gYi9XZWJDb3Jl
L2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCmluZGV4IDU1NTgxM2QuLjUxZTI5M2MgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4KKysrIGIvV2ViQ29yZS9o
dG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgpAQCAtMTYzLDYgKzE2Myw3IEBAIHByb2ZpbGUKIHBy
b21wdAogcmVhZG9ubHkKIHJlbAorcmVxdWlyZWQKIHJlc3VsdHMKIHJldgogcm9sZQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwIGIvV2ViQ29yZS9o
dG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCmluZGV4IDM2ZDIwYWMuLjkyNzk2ZTAgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcAorKysgYi9X
ZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAgLTE5Miw2ICsxOTIsMTYg
QEAgdm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpzZXRBdXRvZm9jdXMoYm9vbCBiKQogewog
ICAgIHNldEF0dHJpYnV0ZShhdXRvZm9jdXNBdHRyLCBiID8gImF1dG9mb2N1cyIgOiAwKTsKIH0K
KyAgICAKK2Jvb2wgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6cmVxdWlyZWQoKSBjb25zdAorewor
ICAgIHJldHVybiBoYXNBdHRyaWJ1dGUocmVxdWlyZWRBdHRyKTsKK30KKwordm9pZCBIVE1MRm9y
bUNvbnRyb2xFbGVtZW50OjpzZXRSZXF1aXJlZChib29sIGIpCit7CisgICAgc2V0QXR0cmlidXRl
KHJlcXVpcmVkQXR0ciwgYiA/ICJyZXF1aXJlZCIgOiAwKTsKK30KIAogdm9pZCBIVE1MRm9ybUNv
bnRyb2xFbGVtZW50OjpyZWNhbGNTdHlsZShTdHlsZUNoYW5nZSBjaGFuZ2UpCiB7CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oIGIvV2ViQ29yZS9odG1s
L0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaAppbmRleCAwYTdiYmQxLi41MWM5NzFmIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oCisrKyBiL1dlYkNvcmUv
aHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKQEAgLTcxLDcgKzcxLDE1IEBAIHB1YmxpYzoK
ICAgICAvLyBEZXRlcm1pbmVzIHdoZXRoZXIgb3Igbm90IGEgY29udHJvbCB3aWxsIGJlIGF1dG9t
YXRpY2FsbHkgZm9jdXNlZAogICAgIHZpcnR1YWwgYm9vbCBhdXRvZm9jdXMoKSBjb25zdDsKICAg
ICB2b2lkIHNldEF1dG9mb2N1cyhib29sKTsKLQorICAgIAorICAgIC8vIExlYWRzIHVzIHRvIHVu
ZGVyc3RhbmQgd2hldGhlciBvciBub3QgYSBmb3JtIGNvbnRyb2wgY291bGQgcG90ZW50aWFsbHkg
YmUKKyAgICAvLyBhIHJlcXVpcmVkIGZvcm0gY29udHJvbC4KKyAgICB2aXJ0dWFsIGJvb2wgc3Vw
cG9ydHNSZXF1aXJlZEF0dHJpYnV0ZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmly
dHVhbCBib29sIGhhc1ZhbHVlTWlzc2luZygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisKKyAg
ICB2aXJ0dWFsIGJvb2wgcmVxdWlyZWQoKSBjb25zdDsKKyAgICB2b2lkIHNldFJlcXVpcmVkKGJv
b2wpOworICAgIAogICAgIHZpcnR1YWwgdm9pZCByZWNhbGNTdHlsZShTdHlsZUNoYW5nZSk7CiAK
ICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgZm9ybUNvbnRyb2xOYW1lKCkgY29uc3Q7
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAgYi9XZWJDb3Jl
L2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXggYmE2NTMwNS4uZDMxZjBhNSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRt
bC9IVE1MSW5wdXRFbGVtZW50LmNwcApAQCAtMTY0MSw0ICsxNjQxLDU4IEBAIGJvb2wgSFRNTElu
cHV0RWxlbWVudDo6cGxhY2Vob2xkZXJTaG91bGRCZVZpc2libGUoKSBjb25zdAogICAgIHJldHVy
biBtX2RhdGEucGxhY2Vob2xkZXJTaG91bGRCZVZpc2libGUoKTsKIH0KIAorLy8gRklYTUU6IFRo
aXMgc2hvdWxkIGNoZWNrIGFnYWluc3QgdGhlICJjYXNlIENPTE9SIiBpbnB1dCB0eXBlIQorLy8g
SWYgaW5wdXRUeXBlKCkgPT0gQ09MT1IsIHJldHVybiBmYWxzZS4KK2Jvb2wgSFRNTElucHV0RWxl
bWVudDo6c3VwcG9ydHNSZXF1aXJlZEF0dHJpYnV0ZSgpIGNvbnN0Cit7CisgICAgLy8gUmVxdWly
ZWQgYXR0cmlidXRlIGFwcGxpZXMgdG8gbWFueSBpbnB1dCB0eXBlcywgc28gd2UganVzdCBjaGVj
aworICAgIC8vIHdoZXRoZXIgaXQgRE9FUyBOT1QgYXBwbHkKKyAgICBzd2l0Y2ggKGlucHV0VHlw
ZSgpKSB7CisgICAgICAgIGNhc2UgSElEREVOOgorICAgICAgICBjYXNlIFJBTkdFOgorLy8gICAg
ICAgIGNhc2UgQ09MT1I6CisgICAgICAgIGNhc2UgU1VCTUlUOgorICAgICAgICBjYXNlIElNQUdF
OgorICAgICAgICBjYXNlIFJFU0VUOgorICAgICAgICBjYXNlIEJVVFRPTjoKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKworLy8gRklYTUU6IFRoaXMgc2hvdWxk
IGJlIG1vZGlmaWVkIGluIG9yZGVyIHRvIHN1cHBvcnQgbmV3IGlucHV0IHR5cGVzCitib29sIEhU
TUxJbnB1dEVsZW1lbnQ6Omhhc1ZhbHVlTWlzc2luZygpIGNvbnN0Cit7CisgICAgaWYgKHJlcXVp
cmVkKCkgJiYgc3VwcG9ydHNSZXF1aXJlZEF0dHJpYnV0ZSgpKSB7CisgICAgICAgIHN3aXRjaCAo
aW5wdXRUeXBlKCkpIHsKKyAgICAgICAgICAgIGNhc2UgVEVYVDoKKyAgICAgICAgICAgIGNhc2Ug
U0VBUkNIOgorICAgICAgICAgICAgY2FzZSBVUkw6CisgICAgICAgICAgICBjYXNlIFRFTEVQSE9O
RToKKyAgICAgICAgICAgIGNhc2UgRU1BSUw6CisgICAgICAgICAgICBjYXNlIFBBU1NXT1JEOgor
Ly8gICAgICAgICAgICBjYXNlIERBVEVUSU1FOgorLy8gICAgICAgICAgICBjYXNlIERBVEU6Cisv
LyAgICAgICAgICAgIGNhc2UgTU9OVEg6CisvLyAgICAgICAgICAgIGNhc2UgV0VFSzoKKy8vICAg
ICAgICAgICAgY2FzZSBUSU1FOgorLy8gICAgICAgICAgICBjYXNlIExPQ0FMREFURVRJTUU6Cisv
LyAgICAgICAgICAgIGNhc2UgTE9DQUxEQVRFOgorICAgICAgICAgICAgY2FzZSBOVU1CRVI6Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlKCkuaXNFbXB0eSgpOworICAgICAgICAgICAgY2Fz
ZSBDSEVDS0JPWDoKKyAgICAgICAgICAgICAgICByZXR1cm4gY2hlY2tlZCgpOworICAgICAgICAg
ICAgY2FzZSBSQURJTzoKKyAgICAgICAgICAgICAgICByZXR1cm4gY2hlY2tlZCgpIHx8IGNoZWNr
ZWRSYWRpb0J1dHRvbnModGhpcykuY2hlY2tlZEJ1dHRvbkZvckdyb3VwKG5hbWUoKSk7CisgICAg
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
fQorICAgIH0KKyAgICAKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIH0gLy8gbmFtZXNwYWNlCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oIGIvV2ViQ29yZS9odG1s
L0hUTUxJbnB1dEVsZW1lbnQuaAppbmRleCA2YzI1YzZlLi40NjUyNmVmIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MSW5w
dXRFbGVtZW50LmgKQEAgLTk2LDYgKzk2LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBp
c1NlYXJjaEZpZWxkKCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IFNFQVJDSDsgfQogICAgIHZp
cnR1YWwgYm9vbCBpc0lucHV0VHlwZUhpZGRlbigpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBI
SURERU47IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNQYXNzd29yZEZpZWxkKCkgY29uc3QgeyByZXR1
cm4gbV90eXBlID09IFBBU1NXT1JEOyB9CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzUmVxdWly
ZWRBdHRyaWJ1dGUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzVmFsdWVNaXNzaW5nKCkg
Y29uc3Q7CiAKICAgICBib29sIGNoZWNrZWQoKSBjb25zdCB7IHJldHVybiBtX2NoZWNrZWQ7IH0K
ICAgICB2b2lkIHNldENoZWNrZWQoYm9vbCwgYm9vbCBzZW5kQ2hhbmdlRXZlbnQgPSBmYWxzZSk7
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5pZGwgYi9XZWJDb3Jl
L2h0bWwvSFRNTElucHV0RWxlbWVudC5pZGwKaW5kZXggNTUzNjczMy4uY2RiZWM3ZiAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaWRsCisrKyBiL1dlYkNvcmUvaHRt
bC9IVE1MSW5wdXRFbGVtZW50LmlkbApAQCAtNDAsNiArNDAsNyBAQCBtb2R1bGUgaHRtbCB7CiAg
ICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0
cmluZyBuYW1lOwogICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nICAgICAgIHBs
YWNlaG9sZGVyOwogICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgYm9vbGVhbiAgICAgICAgIHJl
YWRPbmx5OworICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgYm9vbGVhbiAgICAgICAgIHJlcXVp
cmVkOwogI2lmIGRlZmluZWQoTEFOR1VBR0VfT0JKRUNUSVZFX0MpICYmIExBTkdVQUdFX09CSkVD
VElWRV9DCiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBbQ29udmVydFRvU3RyaW5nXSBET01T
dHJpbmcgc2l6ZTsgLy8gRE9NIGxldmVsIDIgY2hhbmdlZCB0aGlzIHRvIGEgbG9uZywgYnV0IG91
ciBleGlzdGluZyBBUEkgaXMgYSBzdHJpbmcKICNlbHNlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0
bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxl
bWVudC5jcHAKaW5kZXggZTE5YWMwYS4uNWFjZmFkZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1s
L0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFF
bGVtZW50LmNwcApAQCAtMzk1LDQgKzM5NSwxNCBAQCBib29sIEhUTUxUZXh0QXJlYUVsZW1lbnQ6
OnNob3VsZFVzZUlucHV0TWV0aG9kKCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorYm9v
bCBIVE1MVGV4dEFyZWFFbGVtZW50OjpzdXBwb3J0c1JlcXVpcmVkQXR0cmlidXRlKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gIWRpc2FibGVkKCkgJiYgIXJlYWRPbmx5KCk7Cit9CisKK2Jvb2wgSFRN
TFRleHRBcmVhRWxlbWVudDo6aGFzVmFsdWVNaXNzaW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
cmVxdWlyZWQoKSAmJiBzdXBwb3J0c1JlcXVpcmVkQXR0cmlidXRlKCkgJiYgdmFsdWUoKS5pc0Vt
cHR5KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRN
TFRleHRBcmVhRWxlbWVudC5oIGIvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaApp
bmRleCBlMjJiNWQ1Li5mNjFkYmYzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTFRleHRB
cmVhRWxlbWVudC5oCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmgKQEAg
LTUxLDYgKzUxLDkgQEAgcHVibGljOgogICAgIGJvb2wgcmVhZE9ubHkoKSBjb25zdCB7IHJldHVy
biBpc1JlYWRPbmx5Rm9ybUNvbnRyb2woKTsgfQogCiAgICAgdmlydHVhbCBib29sIGlzVGV4dEZv
cm1Db250cm9sKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIAorICAgIHZpcnR1YWwgYm9v
bCBzdXBwb3J0c1JlcXVpcmVkQXR0cmlidXRlKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGhh
c1ZhbHVlTWlzc2luZygpIGNvbnN0OwogCiAgICAgaW50IHNlbGVjdGlvblN0YXJ0KCk7CiAgICAg
aW50IHNlbGVjdGlvbkVuZCgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJl
YUVsZW1lbnQuaWRsIGIvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaWRsCmluZGV4
IGM0ZjE0NGIuLjYzODNjZWUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFF
bGVtZW50LmlkbAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5pZGwKQEAg
LTMzLDYgKzMzLDcgQEAgbW9kdWxlIGh0bWwgewogICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUg
IGJvb2xlYW4gICAgICAgICAgICAgIGF1dG9mb2N1czsKICAgICAgICAgICAgICAgICAgYXR0cmli
dXRlICBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyAgICAgICAgICAgIG5hbWU7
CiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSAgYm9vbGVhbiAgICAgICAgICAgICAgcmVhZE9u
bHk7CisgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSAgYm9vbGVhbiAgICAgICAgICAgICAgcmVx
dWlyZWQ7CiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSAgbG9uZyAgICAgICAgICAgICAgICAg
cm93czsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlICBET01TdHJpbmcgICAgICAgICAgICB0
eXBlOwogICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmlu
Z10gRE9NU3RyaW5nICAgICAgICAgICAgdmFsdWU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31139</attachid>
            <date>2009-06-10 13:37:29 -0700</date>
            <delta_ts>2009-06-10 13:52:36 -0700</delta_ts>
            <desc>Final patch</desc>
            <filename>required-attribute-20090610.patch</filename>
            <type>text/plain</type>
            <size>8928</size>
            <attacher name="Michelangelo De Simone">michelangelo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhNjk2YTUzLi42NjE1YzFkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMDktMDYt
MTAgIE1pY2hlbGFuZ2VsbyBEZSBTaW1vbmUgIDxtaWNkZXNpbUBnbWFpbC5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1NTUxCisKKyAgICAgICAgQmFzaWMgdGVzdHMgZm9y
IHRoZSAicmVxdWlyZWQiIGF0dHJpYnV0ZSwgdmFsaWRhdGlvbiB0ZXN0cyBzb29uIHRvIGJlCisg
ICAgICAgIGFkZGVkIChkZXBlbmRpbmcgb24gVmFsaWRpdHlTdGF0ZSwgIzE5NTYyKS4KKworICAg
ICAgICAqIGZhc3QvZm9ybXMvcmVxdWlyZWQtYXR0cmlidXRlLTAwMS1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvcmVxdWlyZWQtYXR0cmlidXRlLTAwMS5odG1sOiBB
ZGRlZC4gQ2hlY2tzIGZvciByZXF1aXJlZAorICAgICAgICBhdHRyaWJ1dGUgZXhpc3RlbmNlLgor
ICAgICAgICAqIGZhc3QvZm9ybXMvcmVxdWlyZWQtYXR0cmlidXRlLTAwMi1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvcmVxdWlyZWQtYXR0cmlidXRlLTAwMi5odG1s
OiBBZGRlZC4gQ2hlY2tzIHdoZXRoZXIgcmVxdWlyZWQKKyAgICAgICAgYXR0cmlidXRlIGNhbiBi
ZSBtb2RpZmllZCBmcm9tIEpTLgorCiAyMDA5LTA1LTI2ICBEaW1pdHJpIEdsYXprb3YgIDxkZ2xh
emtvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFjaWVqIFN0YWNob3dp
YWsuCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IDRjZTk4ZjEuLjc4MWQxMGEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMDktMDYtMTAgIE1pY2hlbGFu
Z2VsbyBEZSBTaW1vbmUgIDxtaWNkZXNpbUBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTI1NTUxCisKKyAgICAgICAgQmFzZSBpbXBsZW1lbnRhdGlvbiBmb3IgdGhl
IHJlcXVpcmVkIGF0dHJpYnV0ZSBhcyBwZXIgSFRNTDUgRm9ybXMgc3BlYy4KKyAgICAgICAgVmFs
aWRhdGlvbiBiZWhhdmlvciBzb29uIHRvIGJlIGltcGxlbWVudGVkIGluIFZhbGlkaXR5U3RhdGUg
Y2xhc3MgYW5kCisgICAgICAgIHJlbGF0ZWQgc3R1ZmYgKCMxOTU2MikuCisKKyAgICAgICAgVGVz
dHM6IGZhc3QvZm9ybXMvcmVxdWlyZWQtYXR0cmlidXRlLTAwMS5odG1sCisgICAgICAgICAgICAg
ICBmYXN0L2Zvcm1zL3JlcXVpcmVkLWF0dHJpYnV0ZS0wMDIuaHRtbAorCisgICAgICAgICogaHRt
bC9IVE1MQXR0cmlidXRlTmFtZXMuaW46IGFkZGVkICJyZXF1aXJlZCIgYXR0cmlidXRlLgorICAg
ICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpyZXF1aXJlZCk6IHJlcXVpcmVkQXR0ciBnZXR0ZXIu
CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpzZXRSZXF1aXJlZCk6
IHJlcXVpcmVkQXR0ciBzZXR0ZXIuCisgICAgICAgICogaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVt
ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpzdXBwb3J0
c1JlcXVpcmVkQXR0cmlidXRlKTogY2hlY2tzCisgICAgICAgIHdoZXRoZXIgb3Igbm90IHJlcXVp
cmVkQXR0ciBzaG91bGQgYmUgaG9ub3VyZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNv
bnRyb2xFbGVtZW50OjpoYXNWYWx1ZU1pc3NpbmcpOiBlYXN5IGZ1bmN0aW9uIHRvCisgICAgICAg
IGNoZWNrIGlmIGEgaG9ub3VyYWJsZSByZXF1aXJlZCBjb250cm9sIHN1ZmZlcnMgZnJvbSBiZWlu
ZyBtaXNzZWQuCisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnN1cHBvcnRzUmVxdWlyZWRBdHRyaWJ1dGUpOiBh
cyBhYm92ZSwKKyAgICAgICAgc3BlY2lhbGl6ZWQgcm91dGluZS4KKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxJbnB1dEVsZW1lbnQ6Omhhc1ZhbHVlTWlzc2luZyk6IGFzIGFib3ZlLCBzcGVjaWFsaXpl
ZAorICAgICAgICByb3V0aW5lLgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5oOgor
ICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5pZGw6ICJyZXF1aXJlZCIgRE9NIGF0dHJp
YnV0ZS4KKyAgICAgICAgKiBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFRleHRBcmVhRWxlbWVudDo6c3VwcG9ydHNSZXF1aXJlZEF0dHJpYnV0ZSk6
IGFzIGFib3ZlLAorICAgICAgICBzcGVjaWFsaXplZCByb3V0aW5lLgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFRleHRBcmVhRWxlbWVudDo6aGFzVmFsdWVNaXNzaW5nKTogYXMgYWJvdmUsIHNwZWNp
YWxpemVkCisgICAgICAgIHJvdXRpbmUuCisgICAgICAgICogaHRtbC9IVE1MVGV4dEFyZWFFbGVt
ZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmlkbDogInJlcXVpcmVk
IiBET00gYXR0cmlidXRlLgorCiAyMDA5LTA1LTI2ICBEaW1pdHJpIEdsYXprb3YgIDxkZ2xhemtv
dkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFjaWVqIFN0YWNob3dpYWsu
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluIGIvV2ViQ29y
ZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgppbmRleCA1NTU4MTNkLi41MWUyOTNjIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCisrKyBiL1dlYkNvcmUv
aHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4KQEAgLTE2Myw2ICsxNjMsNyBAQCBwcm9maWxlCiBw
cm9tcHQKIHJlYWRvbmx5CiByZWwKK3JlcXVpcmVkCiByZXN1bHRzCiByZXYKIHJvbGUKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcCBiL1dlYkNvcmUv
aHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcAppbmRleCAzNmQyMGFjLi41MTNjNGZmIDEw
MDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKKysrIGIv
V2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCkBAIC0xOTMsNiArMTkzLDE2
IEBAIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6c2V0QXV0b2ZvY3VzKGJvb2wgYikKICAg
ICBzZXRBdHRyaWJ1dGUoYXV0b2ZvY3VzQXR0ciwgYiA/ICJhdXRvZm9jdXMiIDogMCk7CiB9CiAK
K2Jvb2wgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6cmVxdWlyZWQoKSBjb25zdAoreworICAgIHJl
dHVybiBoYXNBdHRyaWJ1dGUocmVxdWlyZWRBdHRyKTsKK30KKwordm9pZCBIVE1MRm9ybUNvbnRy
b2xFbGVtZW50OjpzZXRSZXF1aXJlZChib29sIGIpCit7CisgICAgc2V0QXR0cmlidXRlKHJlcXVp
cmVkQXR0ciwgYiA/ICJyZXF1aXJlZCIgOiAwKTsKK30KKwogdm9pZCBIVE1MRm9ybUNvbnRyb2xF
bGVtZW50OjpyZWNhbGNTdHlsZShTdHlsZUNoYW5nZSBjaGFuZ2UpCiB7CiAgICAgSFRNTEVsZW1l
bnQ6OnJlY2FsY1N0eWxlKGNoYW5nZSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTEZv
cm1Db250cm9sRWxlbWVudC5oIGIvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQu
aAppbmRleCAwYTdiYmQxLi5mYjRjMWYzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTEZv
cm1Db250cm9sRWxlbWVudC5oCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVt
ZW50LmgKQEAgLTcyLDYgKzcyLDEyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgYXV0b2Zv
Y3VzKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRBdXRvZm9jdXMoYm9vbCk7CiAKKyAgICB2aXJ0dWFs
IGJvb2wgc3VwcG9ydHNSZXF1aXJlZEF0dHJpYnV0ZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgdmlydHVhbCBib29sIGhhc1ZhbHVlTWlzc2luZygpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZWQoKSBjb25zdDsKKyAgICB2b2lkIHNldFJl
cXVpcmVkKGJvb2wpOworCiAgICAgdmlydHVhbCB2b2lkIHJlY2FsY1N0eWxlKFN0eWxlQ2hhbmdl
KTsKIAogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBmb3JtQ29udHJvbE5hbWUoKSBj
b25zdDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1dl
YkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCBiYTY1MzA1Li40MTcxYWFiIDEw
MDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKKysrIGIvV2ViQ29y
ZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC0xNjQxLDQgKzE2NDEsNDggQEAgYm9vbCBI
VE1MSW5wdXRFbGVtZW50OjpwbGFjZWhvbGRlclNob3VsZEJlVmlzaWJsZSgpIGNvbnN0CiAgICAg
cmV0dXJuIG1fZGF0YS5wbGFjZWhvbGRlclNob3VsZEJlVmlzaWJsZSgpOwogfQogCitib29sIEhU
TUxJbnB1dEVsZW1lbnQ6OnN1cHBvcnRzUmVxdWlyZWRBdHRyaWJ1dGUoKSBjb25zdAoreworICAg
IC8vIEZJWE1FOiByZXF1aXJlZCBhdHRyaWJ1dGUgRE9FUyAqTk9UKiBhcHBseSB0byBjb2xvciB0
eXBlIGFzIHdlbGwuCisgICAgLy8gUmVxdWlyZWQgYXR0cmlidXRlIGFwcGxpZXMgdG8gbWFueSBp
bnB1dCB0eXBlcywgc28gd2UganVzdCBjaGVjaworICAgIC8vIHdoZXRoZXIgaXQgRE9FUyBOT1Qg
YXBwbHkKKyAgICBzd2l0Y2ggKGlucHV0VHlwZSgpKSB7CisgICAgICAgIGNhc2UgSElEREVOOgor
ICAgICAgICBjYXNlIFJBTkdFOgorICAgICAgICBjYXNlIFNVQk1JVDoKKyAgICAgICAgY2FzZSBJ
TUFHRToKKyAgICAgICAgY2FzZSBSRVNFVDoKKyAgICAgICAgY2FzZSBCVVRUT046CisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgSFRNTElucHV0RWxl
bWVudDo6aGFzVmFsdWVNaXNzaW5nKCkgY29uc3QKK3sKKyAgICBpZiAocmVxdWlyZWQoKSAmJiBz
dXBwb3J0c1JlcXVpcmVkQXR0cmlidXRlKCkpIHsKKyAgICAgICAgc3dpdGNoIChpbnB1dFR5cGUo
KSkgeworICAgICAgICAgICAgY2FzZSBURVhUOgorICAgICAgICAgICAgY2FzZSBTRUFSQ0g6Cisg
ICAgICAgICAgICBjYXNlIFVSTDoKKyAgICAgICAgICAgIGNhc2UgVEVMRVBIT05FOgorICAgICAg
ICAgICAgY2FzZSBFTUFJTDoKKyAgICAgICAgICAgIGNhc2UgUEFTU1dPUkQ6CisgICAgICAgICAg
ICBjYXNlIE5VTUJFUjoKKyAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUoKS5pc0VtcHR5KCk7
CisgICAgICAgICAgICBjYXNlIENIRUNLQk9YOgorICAgICAgICAgICAgICAgIHJldHVybiBjaGVj
a2VkKCk7CisgICAgICAgICAgICBjYXNlIFJBRElPOgorICAgICAgICAgICAgICAgIHJldHVybiBj
aGVja2VkKCkgfHwgY2hlY2tlZFJhZGlvQnV0dG9ucyh0aGlzKS5jaGVja2VkQnV0dG9uRm9yR3Jv
dXAobmFtZSgpKTsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCiB9IC8v
IG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaCBi
L1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKaW5kZXggNmMyNWM2ZS4uNDY1MjZlZiAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAorKysgYi9XZWJDb3Jl
L2h0bWwvSFRNTElucHV0RWxlbWVudC5oCkBAIC05Niw2ICs5Niw4IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIGJvb2wgaXNTZWFyY2hGaWVsZCgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBTRUFS
Q0g7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNJbnB1dFR5cGVIaWRkZW4oKSBjb25zdCB7IHJldHVy
biBtX3R5cGUgPT0gSElEREVOOyB9CiAgICAgdmlydHVhbCBib29sIGlzUGFzc3dvcmRGaWVsZCgp
IGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBQQVNTV09SRDsgfQorICAgIHZpcnR1YWwgYm9vbCBz
dXBwb3J0c1JlcXVpcmVkQXR0cmlidXRlKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGhhc1Zh
bHVlTWlzc2luZygpIGNvbnN0OwogCiAgICAgYm9vbCBjaGVja2VkKCkgY29uc3QgeyByZXR1cm4g
bV9jaGVja2VkOyB9CiAgICAgdm9pZCBzZXRDaGVja2VkKGJvb2wsIGJvb2wgc2VuZENoYW5nZUV2
ZW50ID0gZmFsc2UpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQu
aWRsIGIvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaWRsCmluZGV4IDU1MzY3MzMuLmNk
YmVjN2YgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmlkbAorKysg
Yi9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5pZGwKQEAgLTQwLDYgKzQwLDcgQEAgbW9k
dWxlIGh0bWwgewogICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgW0NvbnZlcnROdWxsVG9OdWxs
U3RyaW5nXSBET01TdHJpbmcgbmFtZTsKICAgICAgICAgICAgICAgICAgYXR0cmlidXRlIERPTVN0
cmluZyAgICAgICBwbGFjZWhvbGRlcjsKICAgICAgICAgICAgICAgICAgYXR0cmlidXRlIGJvb2xl
YW4gICAgICAgICByZWFkT25seTsKKyAgICAgICAgICAgICAgICAgYXR0cmlidXRlIGJvb2xlYW4g
ICAgICAgICByZXF1aXJlZDsKICNpZiBkZWZpbmVkKExBTkdVQUdFX09CSkVDVElWRV9DKSAmJiBM
QU5HVUFHRV9PQkpFQ1RJVkVfQwogICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgW0NvbnZlcnRU
b1N0cmluZ10gRE9NU3RyaW5nIHNpemU7IC8vIERPTSBsZXZlbCAyIGNoYW5nZWQgdGhpcyB0byBh
IGxvbmcsIGJ1dCBvdXIgZXhpc3RpbmcgQVBJIGlzIGEgc3RyaW5nCiAjZWxzZQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hU
TUxUZXh0QXJlYUVsZW1lbnQuY3BwCmluZGV4IGUxOWFjMGEuLjVhY2ZhZGUgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwv
SFRNTFRleHRBcmVhRWxlbWVudC5jcHAKQEAgLTM5NSw0ICszOTUsMTQgQEAgYm9vbCBIVE1MVGV4
dEFyZWFFbGVtZW50OjpzaG91bGRVc2VJbnB1dE1ldGhvZCgpIGNvbnN0CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKK2Jvb2wgSFRNTFRleHRBcmVhRWxlbWVudDo6c3VwcG9ydHNSZXF1aXJlZEF0dHJp
YnV0ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuICFkaXNhYmxlZCgpICYmICFyZWFkT25seSgpOwor
fQorCitib29sIEhUTUxUZXh0QXJlYUVsZW1lbnQ6Omhhc1ZhbHVlTWlzc2luZygpIGNvbnN0Cit7
CisgICAgcmV0dXJuIHJlcXVpcmVkKCkgJiYgc3VwcG9ydHNSZXF1aXJlZEF0dHJpYnV0ZSgpICYm
IHZhbHVlKCkuaXNFbXB0eSgpOworfQorCiB9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaCBiL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFy
ZWFFbGVtZW50LmgKaW5kZXggZTIyYjVkNS4uNmI5M2Y4ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9o
dG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVh
RWxlbWVudC5oCkBAIC01Miw2ICs1Miw5IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBp
c1RleHRGb3JtQ29udHJvbCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAorICAgIHZpcnR1YWwg
Ym9vbCBzdXBwb3J0c1JlcXVpcmVkQXR0cmlidXRlKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29s
IGhhc1ZhbHVlTWlzc2luZygpIGNvbnN0OworCiAgICAgaW50IHNlbGVjdGlvblN0YXJ0KCk7CiAg
ICAgaW50IHNlbGVjdGlvbkVuZCgpOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTFRl
eHRBcmVhRWxlbWVudC5pZGwgYi9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5pZGwK
aW5kZXggYzRmMTQ0Yi4uNjM4M2NlZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxUZXh0
QXJlYUVsZW1lbnQuaWRsCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50Lmlk
bApAQCAtMzMsNiArMzMsNyBAQCBtb2R1bGUgaHRtbCB7CiAgICAgICAgICAgICAgICAgIGF0dHJp
YnV0ZSAgYm9vbGVhbiAgICAgICAgICAgICAgYXV0b2ZvY3VzOwogICAgICAgICAgICAgICAgICBh
dHRyaWJ1dGUgIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nICAgICAgICAgICAg
bmFtZTsKICAgICAgICAgICAgICAgICAgYXR0cmlidXRlICBib29sZWFuICAgICAgICAgICAgICBy
ZWFkT25seTsKKyAgICAgICAgICAgICAgICAgYXR0cmlidXRlICBib29sZWFuICAgICAgICAgICAg
ICByZXF1aXJlZDsKICAgICAgICAgICAgICAgICAgYXR0cmlidXRlICBsb25nICAgICAgICAgICAg
ICAgICByb3dzOwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgIERPTVN0cmluZyAgICAgICAg
ICAgIHR5cGU7CiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSAgW0NvbnZlcnROdWxsVG9OdWxs
U3RyaW5nXSBET01TdHJpbmcgICAgICAgICAgICB2YWx1ZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31141</attachid>
            <date>2009-06-10 13:52:36 -0700</date>
            <delta_ts>2009-07-15 13:43:40 -0700</delta_ts>
            <desc>Final patch, corrected</desc>
            <filename>required-attribute-20090610.patch</filename>
            <type>text/plain</type>
            <size>11709</size>
            <attacher name="Michelangelo De Simone">michelangelo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhNjk2YTUzLi42NjE1YzFkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMDktMDYt
MTAgIE1pY2hlbGFuZ2VsbyBEZSBTaW1vbmUgIDxtaWNkZXNpbUBnbWFpbC5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1NTUxCisKKyAgICAgICAgQmFzaWMgdGVzdHMgZm9y
IHRoZSAicmVxdWlyZWQiIGF0dHJpYnV0ZSwgdmFsaWRhdGlvbiB0ZXN0cyBzb29uIHRvIGJlCisg
ICAgICAgIGFkZGVkIChkZXBlbmRpbmcgb24gVmFsaWRpdHlTdGF0ZSwgIzE5NTYyKS4KKworICAg
ICAgICAqIGZhc3QvZm9ybXMvcmVxdWlyZWQtYXR0cmlidXRlLTAwMS1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvcmVxdWlyZWQtYXR0cmlidXRlLTAwMS5odG1sOiBB
ZGRlZC4gQ2hlY2tzIGZvciByZXF1aXJlZAorICAgICAgICBhdHRyaWJ1dGUgZXhpc3RlbmNlLgor
ICAgICAgICAqIGZhc3QvZm9ybXMvcmVxdWlyZWQtYXR0cmlidXRlLTAwMi1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvcmVxdWlyZWQtYXR0cmlidXRlLTAwMi5odG1s
OiBBZGRlZC4gQ2hlY2tzIHdoZXRoZXIgcmVxdWlyZWQKKyAgICAgICAgYXR0cmlidXRlIGNhbiBi
ZSBtb2RpZmllZCBmcm9tIEpTLgorCiAyMDA5LTA1LTI2ICBEaW1pdHJpIEdsYXprb3YgIDxkZ2xh
emtvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFjaWVqIFN0YWNob3dp
YWsuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3JlcXVpcmVkLWF0dHJpYnV0
ZS0wMDEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yZXF1aXJlZC1hdHRy
aWJ1dGUtMDAxLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li5iNmM2NmYzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yZXF1
aXJlZC1hdHRyaWJ1dGUtMDAxLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKK1RoZXJlIGFy
ZSB0d28gZm9ybSBjb250cm9scywgYm90aCByZXF1aXJlZC4KKworIAorUEFTUwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yZXF1aXJlZC1hdHRyaWJ1dGUtMDAxLmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3JlcXVpcmVkLWF0dHJpYnV0ZS0wMDEuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOTI1OTJmCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yZXF1aXJlZC1hdHRyaWJ1dGUtMDAxLmh0bWwKQEAgLTAs
MCArMSwyOSBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5yZXF1aXJlZCBhdHRyaWJ1dGUgdGVz
dDwvdGl0bGU+Cis8c2NyaXB0IGxhbmd1YWdlPSJKYXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFz
Y3JpcHQiPgorICAgIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKSB7CisgICAgICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJjb25zb2xlIikuaW5uZXJIVE1MICs9ICI8bGk+IittZXNzYWdlKyI8L2xp
PiI7CisgICAgfQorCisgICAgZnVuY3Rpb24gdGVzdCgpIHsKKyAgICAgICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKKworICAgICAgICBpID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm9uZSIp
OworICAgICAgICB0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInR3byIpOworICAgICAgICBp
ZiAoaS5yZXF1aXJlZCAmJiB0LnJlcXVpcmVkKQorICAgICAgICAgICAgbG9nKCJQQVNTIik7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIGxvZygiRkFJTCIpOworICAgIH0KKzwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgorPHA+VGhlcmUgYXJlIHR3byBmb3JtIGNv
bnRyb2xzLCBib3RoIHJlcXVpcmVkLjwvcD4KKzxpbnB1dCBpZD0ib25lIiByZXF1aXJlZC8+Cis8
dGV4dGFyZWEgaWQ9InR3byIgcmVxdWlyZWQ+PC90ZXh0YXJlYT4KKzxocj4KKzxvbCBpZD0iY29u
c29sZSI+PC9vbD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvZm9ybXMvcmVxdWlyZWQtYXR0cmlidXRlLTAwMi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL3JlcXVpcmVkLWF0dHJpYnV0ZS0wMDItZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI2YzY2ZjMKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3JlcXVpcmVkLWF0dHJpYnV0ZS0wMDItZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsNCBAQAorVGhlcmUgYXJlIHR3byBmb3JtIGNvbnRyb2xzLCBib3RoIHJlcXVp
cmVkLgorCisgCitQQVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3JlcXVp
cmVkLWF0dHJpYnV0ZS0wMDIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmVxdWlyZWQt
YXR0cmlidXRlLTAwMi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk1
MWM1M2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3JlcXVpcmVk
LWF0dHJpYnV0ZS0wMDIuaHRtbApAQCAtMCwwICsxLDMyIEBACis8aHRtbD4KKzxoZWFkPgorPHRp
dGxlPnJlcXVpcmVkIGF0dHJpYnV0ZSBET00gdGVzdDwvdGl0bGU+Cis8c2NyaXB0IGxhbmd1YWdl
PSJKYXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgIGZ1bmN0aW9uIGxvZyht
ZXNzYWdlKSB7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuaW5u
ZXJIVE1MICs9ICI8bGk+IittZXNzYWdlKyI8L2xpPiI7CisgICAgfQorCisgICAgZnVuY3Rpb24g
dGVzdCgpIHsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgICAgICBpID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm9uZSIpOworICAgICAgICB0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInR3byIpOworICAgICAgICBpZiAoIWkucmVxdWlyZWQgJiYgIXQucmVxdWly
ZWQpIHsKKyAgICAgICAgICAgIGkucmVxdWlyZWQgPSB0cnVlOworICAgICAgICAgICAgdC5yZXF1
aXJlZCA9IHRydWU7CisgICAgICAgICAgICAoaS5yZXF1aXJlZCAmJiB0LnJlcXVpcmVkKSA/IGxv
ZygiUEFTUyIpIDogbG9nKCJGQUlMIikKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAg
ICAgICBsb2coIkZBSUwiKTsKKyAgICB9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9h
ZD0idGVzdCgpIj4KKzxwPlRoZXJlIGFyZSB0d28gZm9ybSBjb250cm9scywgYm90aCByZXF1aXJl
ZC48L3A+Cis8aW5wdXQgaWQ9Im9uZSIvPgorPHRleHRhcmVhIGlkPSJ0d28iPjwvdGV4dGFyZWE+
Cis8aHI+Cis8b2wgaWQ9ImNvbnNvbGUiPjwvb2w+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDRjZTk4ZjEu
Ljc4MWQxMGEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMDktMDYtMTAgIE1pY2hlbGFuZ2VsbyBEZSBTaW1v
bmUgIDxtaWNkZXNpbUBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTI1NTUxCisKKyAgICAgICAgQmFzZSBpbXBsZW1lbnRhdGlvbiBmb3IgdGhlIHJlcXVpcmVkIGF0
dHJpYnV0ZSBhcyBwZXIgSFRNTDUgRm9ybXMgc3BlYy4KKyAgICAgICAgVmFsaWRhdGlvbiBiZWhh
dmlvciBzb29uIHRvIGJlIGltcGxlbWVudGVkIGluIFZhbGlkaXR5U3RhdGUgY2xhc3MgYW5kCisg
ICAgICAgIHJlbGF0ZWQgc3R1ZmYgKCMxOTU2MikuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvZm9y
bXMvcmVxdWlyZWQtYXR0cmlidXRlLTAwMS5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Zvcm1z
L3JlcXVpcmVkLWF0dHJpYnV0ZS0wMDIuaHRtbAorCisgICAgICAgICogaHRtbC9IVE1MQXR0cmli
dXRlTmFtZXMuaW46IGFkZGVkICJyZXF1aXJlZCIgYXR0cmlidXRlLgorICAgICAgICAqIGh0bWwv
SFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNv
bnRyb2xFbGVtZW50OjpyZXF1aXJlZCk6IHJlcXVpcmVkQXR0ciBnZXR0ZXIuCisgICAgICAgIChX
ZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpzZXRSZXF1aXJlZCk6IHJlcXVpcmVkQXR0
ciBzZXR0ZXIuCisgICAgICAgICogaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpzdXBwb3J0c1JlcXVpcmVkQXR0
cmlidXRlKTogY2hlY2tzCisgICAgICAgIHdoZXRoZXIgb3Igbm90IHJlcXVpcmVkQXR0ciBzaG91
bGQgYmUgaG9ub3VyZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50
OjpoYXNWYWx1ZU1pc3NpbmcpOiBlYXN5IGZ1bmN0aW9uIHRvCisgICAgICAgIGNoZWNrIGlmIGEg
aG9ub3VyYWJsZSByZXF1aXJlZCBjb250cm9sIHN1ZmZlcnMgZnJvbSBiZWluZyBtaXNzZWQuCisg
ICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxJbnB1dEVsZW1lbnQ6OnN1cHBvcnRzUmVxdWlyZWRBdHRyaWJ1dGUpOiBhcyBhYm92ZSwKKyAg
ICAgICAgc3BlY2lhbGl6ZWQgcm91dGluZS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVs
ZW1lbnQ6Omhhc1ZhbHVlTWlzc2luZyk6IGFzIGFib3ZlLCBzcGVjaWFsaXplZAorICAgICAgICBy
b3V0aW5lLgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5oOgorICAgICAgICAqIGh0
bWwvSFRNTElucHV0RWxlbWVudC5pZGw6ICJyZXF1aXJlZCIgRE9NIGF0dHJpYnV0ZS4KKyAgICAg
ICAgKiBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFRleHRBcmVhRWxlbWVudDo6c3VwcG9ydHNSZXF1aXJlZEF0dHJpYnV0ZSk6IGFzIGFib3ZlLAor
ICAgICAgICBzcGVjaWFsaXplZCByb3V0aW5lLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRB
cmVhRWxlbWVudDo6aGFzVmFsdWVNaXNzaW5nKTogYXMgYWJvdmUsIHNwZWNpYWxpemVkCisgICAg
ICAgIHJvdXRpbmUuCisgICAgICAgICogaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50Lmg6CisgICAg
ICAgICogaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmlkbDogInJlcXVpcmVkIiBET00gYXR0cmli
dXRlLgorCiAyMDA5LTA1LTI2ICBEaW1pdHJpIEdsYXprb3YgIDxkZ2xhemtvdkBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFjaWVqIFN0YWNob3dpYWsuCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluIGIvV2ViQ29yZS9odG1sL0hUTUxB
dHRyaWJ1dGVOYW1lcy5pbgppbmRleCA1NTU4MTNkLi41MWUyOTNjIDEwMDY0NAotLS0gYS9XZWJD
b3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MQXR0
cmlidXRlTmFtZXMuaW4KQEAgLTE2Myw2ICsxNjMsNyBAQCBwcm9maWxlCiBwcm9tcHQKIHJlYWRv
bmx5CiByZWwKK3JlcXVpcmVkCiByZXN1bHRzCiByZXYKIHJvbGUKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MRm9y
bUNvbnRyb2xFbGVtZW50LmNwcAppbmRleCAzNmQyMGFjLi41MTNjNGZmIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1s
L0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCkBAIC0xOTMsNiArMTkzLDE2IEBAIHZvaWQgSFRN
TEZvcm1Db250cm9sRWxlbWVudDo6c2V0QXV0b2ZvY3VzKGJvb2wgYikKICAgICBzZXRBdHRyaWJ1
dGUoYXV0b2ZvY3VzQXR0ciwgYiA/ICJhdXRvZm9jdXMiIDogMCk7CiB9CiAKK2Jvb2wgSFRNTEZv
cm1Db250cm9sRWxlbWVudDo6cmVxdWlyZWQoKSBjb25zdAoreworICAgIHJldHVybiBoYXNBdHRy
aWJ1dGUocmVxdWlyZWRBdHRyKTsKK30KKwordm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojpz
ZXRSZXF1aXJlZChib29sIGIpCit7CisgICAgc2V0QXR0cmlidXRlKHJlcXVpcmVkQXR0ciwgYiA/
ICJyZXF1aXJlZCIgOiAwKTsKK30KKwogdm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpyZWNh
bGNTdHlsZShTdHlsZUNoYW5nZSBjaGFuZ2UpCiB7CiAgICAgSFRNTEVsZW1lbnQ6OnJlY2FsY1N0
eWxlKGNoYW5nZSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxl
bWVudC5oIGIvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaAppbmRleCAwYTdi
YmQxLi5mYjRjMWYzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxl
bWVudC5oCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKQEAgLTcy
LDYgKzcyLDEyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgYXV0b2ZvY3VzKCkgY29uc3Q7
CiAgICAgdm9pZCBzZXRBdXRvZm9jdXMoYm9vbCk7CiAKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9y
dHNSZXF1aXJlZEF0dHJpYnV0ZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVh
bCBib29sIGhhc1ZhbHVlTWlzc2luZygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICB2
aXJ0dWFsIGJvb2wgcmVxdWlyZWQoKSBjb25zdDsKKyAgICB2b2lkIHNldFJlcXVpcmVkKGJvb2wp
OworCiAgICAgdmlydHVhbCB2b2lkIHJlY2FsY1N0eWxlKFN0eWxlQ2hhbmdlKTsKIAogICAgIHZp
cnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBmb3JtQ29udHJvbE5hbWUoKSBjb25zdDsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9I
VE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCBiYTY1MzA1Li40MTcxYWFiIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxJ
bnB1dEVsZW1lbnQuY3BwCkBAIC0xNjQxLDQgKzE2NDEsNDggQEAgYm9vbCBIVE1MSW5wdXRFbGVt
ZW50OjpwbGFjZWhvbGRlclNob3VsZEJlVmlzaWJsZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGF0
YS5wbGFjZWhvbGRlclNob3VsZEJlVmlzaWJsZSgpOwogfQogCitib29sIEhUTUxJbnB1dEVsZW1l
bnQ6OnN1cHBvcnRzUmVxdWlyZWRBdHRyaWJ1dGUoKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBy
ZXF1aXJlZCBhdHRyaWJ1dGUgRE9FUyAqTk9UKiBhcHBseSB0byBjb2xvciB0eXBlIGFzIHdlbGwu
CisgICAgLy8gUmVxdWlyZWQgYXR0cmlidXRlIGFwcGxpZXMgdG8gbWFueSBpbnB1dCB0eXBlcywg
c28gd2UganVzdCBjaGVjaworICAgIC8vIHdoZXRoZXIgaXQgRE9FUyBOT1QgYXBwbHkKKyAgICBz
d2l0Y2ggKGlucHV0VHlwZSgpKSB7CisgICAgICAgIGNhc2UgSElEREVOOgorICAgICAgICBjYXNl
IFJBTkdFOgorICAgICAgICBjYXNlIFNVQk1JVDoKKyAgICAgICAgY2FzZSBJTUFHRToKKyAgICAg
ICAgY2FzZSBSRVNFVDoKKyAgICAgICAgY2FzZSBCVVRUT046CisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgSFRNTElucHV0RWxlbWVudDo6aGFzVmFs
dWVNaXNzaW5nKCkgY29uc3QKK3sKKyAgICBpZiAocmVxdWlyZWQoKSAmJiBzdXBwb3J0c1JlcXVp
cmVkQXR0cmlidXRlKCkpIHsKKyAgICAgICAgc3dpdGNoIChpbnB1dFR5cGUoKSkgeworICAgICAg
ICAgICAgY2FzZSBURVhUOgorICAgICAgICAgICAgY2FzZSBTRUFSQ0g6CisgICAgICAgICAgICBj
YXNlIFVSTDoKKyAgICAgICAgICAgIGNhc2UgVEVMRVBIT05FOgorICAgICAgICAgICAgY2FzZSBF
TUFJTDoKKyAgICAgICAgICAgIGNhc2UgUEFTU1dPUkQ6CisgICAgICAgICAgICBjYXNlIE5VTUJF
UjoKKyAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUoKS5pc0VtcHR5KCk7CisgICAgICAgICAg
ICBjYXNlIENIRUNLQk9YOgorICAgICAgICAgICAgICAgIHJldHVybiBjaGVja2VkKCk7CisgICAg
ICAgICAgICBjYXNlIFJBRElPOgorICAgICAgICAgICAgICAgIHJldHVybiBjaGVja2VkKCkgfHwg
Y2hlY2tlZFJhZGlvQnV0dG9ucyh0aGlzKS5jaGVja2VkQnV0dG9uRm9yR3JvdXAobmFtZSgpKTsK
KyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCiB9IC8vIG5hbWVzcGFjZQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaCBiL1dlYkNvcmUvaHRt
bC9IVE1MSW5wdXRFbGVtZW50LmgKaW5kZXggNmMyNWM2ZS4uNDY1MjZlZiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTElu
cHV0RWxlbWVudC5oCkBAIC05Niw2ICs5Niw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wg
aXNTZWFyY2hGaWVsZCgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBTRUFSQ0g7IH0KICAgICB2
aXJ0dWFsIGJvb2wgaXNJbnB1dFR5cGVIaWRkZW4oKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0g
SElEREVOOyB9CiAgICAgdmlydHVhbCBib29sIGlzUGFzc3dvcmRGaWVsZCgpIGNvbnN0IHsgcmV0
dXJuIG1fdHlwZSA9PSBQQVNTV09SRDsgfQorICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1JlcXVp
cmVkQXR0cmlidXRlKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGhhc1ZhbHVlTWlzc2luZygp
IGNvbnN0OwogCiAgICAgYm9vbCBjaGVja2VkKCkgY29uc3QgeyByZXR1cm4gbV9jaGVja2VkOyB9
CiAgICAgdm9pZCBzZXRDaGVja2VkKGJvb2wsIGJvb2wgc2VuZENoYW5nZUV2ZW50ID0gZmFsc2Up
OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaWRsIGIvV2ViQ29y
ZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaWRsCmluZGV4IDU1MzY3MzMuLmNkYmVjN2YgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmlkbAorKysgYi9XZWJDb3JlL2h0
bWwvSFRNTElucHV0RWxlbWVudC5pZGwKQEAgLTQwLDYgKzQwLDcgQEAgbW9kdWxlIGh0bWwgewog
ICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nXSBET01T
dHJpbmcgbmFtZTsKICAgICAgICAgICAgICAgICAgYXR0cmlidXRlIERPTVN0cmluZyAgICAgICBw
bGFjZWhvbGRlcjsKICAgICAgICAgICAgICAgICAgYXR0cmlidXRlIGJvb2xlYW4gICAgICAgICBy
ZWFkT25seTsKKyAgICAgICAgICAgICAgICAgYXR0cmlidXRlIGJvb2xlYW4gICAgICAgICByZXF1
aXJlZDsKICNpZiBkZWZpbmVkKExBTkdVQUdFX09CSkVDVElWRV9DKSAmJiBMQU5HVUFHRV9PQkpF
Q1RJVkVfQwogICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgW0NvbnZlcnRUb1N0cmluZ10gRE9N
U3RyaW5nIHNpemU7IC8vIERPTSBsZXZlbCAyIGNoYW5nZWQgdGhpcyB0byBhIGxvbmcsIGJ1dCBv
dXIgZXhpc3RpbmcgQVBJIGlzIGEgc3RyaW5nCiAjZWxzZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9o
dG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVs
ZW1lbnQuY3BwCmluZGV4IGUxOWFjMGEuLjVhY2ZhZGUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRt
bC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVh
RWxlbWVudC5jcHAKQEAgLTM5NSw0ICszOTUsMTQgQEAgYm9vbCBIVE1MVGV4dEFyZWFFbGVtZW50
OjpzaG91bGRVc2VJbnB1dE1ldGhvZCgpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jv
b2wgSFRNTFRleHRBcmVhRWxlbWVudDo6c3VwcG9ydHNSZXF1aXJlZEF0dHJpYnV0ZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuICFkaXNhYmxlZCgpICYmICFyZWFkT25seSgpOworfQorCitib29sIEhU
TUxUZXh0QXJlYUVsZW1lbnQ6Omhhc1ZhbHVlTWlzc2luZygpIGNvbnN0Cit7CisgICAgcmV0dXJu
IHJlcXVpcmVkKCkgJiYgc3VwcG9ydHNSZXF1aXJlZEF0dHJpYnV0ZSgpICYmIHZhbHVlKCkuaXNF
bXB0eSgpOworfQorCiB9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hU
TUxUZXh0QXJlYUVsZW1lbnQuaCBiL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmgK
aW5kZXggZTIyYjVkNS4uNmI5M2Y4ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxUZXh0
QXJlYUVsZW1lbnQuaAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oCkBA
IC01Miw2ICs1Miw5IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBpc1RleHRGb3JtQ29u
dHJvbCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAorICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0
c1JlcXVpcmVkQXR0cmlidXRlKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGhhc1ZhbHVlTWlz
c2luZygpIGNvbnN0OworCiAgICAgaW50IHNlbGVjdGlvblN0YXJ0KCk7CiAgICAgaW50IHNlbGVj
dGlvbkVuZCgpOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVu
dC5pZGwgYi9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5pZGwKaW5kZXggYzRmMTQ0
Yi4uNjM4M2NlZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQu
aWRsCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmlkbApAQCAtMzMsNiAr
MzMsNyBAQCBtb2R1bGUgaHRtbCB7CiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSAgYm9vbGVh
biAgICAgICAgICAgICAgYXV0b2ZvY3VzOwogICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgIFtD
b252ZXJ0TnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nICAgICAgICAgICAgbmFtZTsKICAgICAg
ICAgICAgICAgICAgYXR0cmlidXRlICBib29sZWFuICAgICAgICAgICAgICByZWFkT25seTsKKyAg
ICAgICAgICAgICAgICAgYXR0cmlidXRlICBib29sZWFuICAgICAgICAgICAgICByZXF1aXJlZDsK
ICAgICAgICAgICAgICAgICAgYXR0cmlidXRlICBsb25nICAgICAgICAgICAgICAgICByb3dzOwog
ICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgIERPTVN0cmluZyAgICAgICAgICAgIHR5cGU7CiAg
ICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSAgW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nXSBET01T
dHJpbmcgICAgICAgICAgICB2YWx1ZTsK
</data>
<flag name="review"
          id="15872"
          type_id="1"
          status="-"
          setter="oliver"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>32803</attachid>
            <date>2009-07-15 13:43:40 -0700</date>
            <delta_ts>2009-07-16 15:37:41 -0700</delta_ts>
            <desc>Propopsed patch, rev. 2</desc>
            <filename>requiredAttribute-valueMissing.patch</filename>
            <type>text/plain</type>
            <size>23762</size>
            <attacher name="Michelangelo De Simone">michelangelo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyYTQ1NDk1Li5hOTVlMGQ1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMDktMDct
MTUgIE1pY2hlbGFuZ2VsbyBEZSBTaW1vbmUgIDxtaWNkZXNpbUBnbWFpbC5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1NTUxCisgICAgICAgIFRlc3Qgc3VpdGUgZm9yIHRo
ZSByZXF1aXJlZCBhdHRyaWJ1dGUgYW5kIHRoZSB2YWx1ZU1pc3NpbmcgZmxhZywKKyAgICAgICAg
cGFydCBvZiB0aGUgSFRNTDUgc2VjLiBGb3Jtcy4KKyAgICAgICAgaHR0cDovL3d3dy53aGF0d2cu
b3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2UvZm9ybXMuaHRtbCNhdHRy
LWlucHV0LXJlcXVpcmVkCisKKyAgICAgICAgKiBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFs
dWVNaXNzaW5nLTAwMS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMv
VmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3NpbmctMDAxLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3NpbmctMDAyLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2luZy0wMDIu
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlz
c2luZy0wMDMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL1ZhbGlk
aXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwMy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zv
cm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwNC1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3NpbmctMDA0Lmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3Npbmct
MDA1LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9WYWxpZGl0eVN0
YXRlLXZhbHVlTWlzc2luZy0wMDUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9W
YWxpZGl0eVN0YXRlLXZhbHVlTWlzc2luZy0wMDYtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwNi5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwNy1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12
YWx1ZU1pc3NpbmctMDA3Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvcmVxdWly
ZWQtYXR0cmlidXRlLTAwMS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9y
bXMvcmVxdWlyZWQtYXR0cmlidXRlLTAwMS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zv
cm1zL3JlcXVpcmVkLWF0dHJpYnV0ZS0wMDItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2Zvcm1zL3JlcXVpcmVkLWF0dHJpYnV0ZS0wMDIuaHRtbDogQWRkZWQuCisKIDIwMDkt
MDctMTUgIFl1em8gRnVqaXNoaW1hICA8eXV6b0Bnb29nbGUuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IERhcmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9W
YWxpZGl0eVN0YXRlLXZhbHVlTWlzc2luZy0wMDEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
ZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2luZy0wMDEtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc2MWM1NDcKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAw
MS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACitUaGVyZSdyZSB0d28gZm9ybSBjb250cm9s
IGVsZW1lbnRzIGJlbG93LCBib3RoIHJlcXVpcmVkIGFuZCBibGFuazogdmFsaWRpdHkudmFsdWVN
aXNzaW5nIHNob3VsZCBiZSB0cnVlIGluIGJvdGggY2FzZXMuCisKKyAKK1NVQ0NFU1MKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3Npbmct
MDAxLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNz
aW5nLTAwMS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0MDA3NGQK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUt
dmFsdWVNaXNzaW5nLTAwMS5odG1sCkBAIC0wLDAgKzEsMjcgQEAKKzxodG1sPgorPGhlYWQ+Cis8
dGl0bGU+cmVxdWlyZWQgYW5kIGJhc2ljIHZhbHVlTWlzc2luZzwvdGl0bGU+Cis8c2NyaXB0IGxh
bmd1YWdlPSJKYXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgIGZ1bmN0aW9u
IGxvZyhtZXNzYWdlKSB7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xl
IikuaW5uZXJIVE1MICs9ICI8bGk+IittZXNzYWdlKyI8L2xpPiI7CisgICAgfQorCisgICAgZnVu
Y3Rpb24gdGVzdCgpIHsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
KyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgICAg
ICB2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoInZpY3RpbSIpOworCisgICAgICAgIGxv
ZygodlswXS52YWxpZGl0eS52YWx1ZU1pc3NpbmcgJiYgdlsxXS52YWxpZGl0eS52YWx1ZU1pc3Np
bmcpID8gIlNVQ0NFU1MiIDogIkZBSUxVUkUiKTsKKyAgICB9Cis8L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5IG9ubG9hZD0idGVzdCgpIj4KKzxwPlRoZXJlJ3JlIHR3byBmb3JtIGNvbnRyb2wgZWxl
bWVudHMgYmVsb3csIGJvdGggcmVxdWlyZWQgYW5kIGJsYW5rOgordmFsaWRpdHkudmFsdWVNaXNz
aW5nIHNob3VsZCBiZSB0cnVlIGluIGJvdGggY2FzZXMuPC9wPgorPGlucHV0IG5hbWU9InZpY3Rp
bSIgcmVxdWlyZWQvPgorPHRleHRhcmVhIG5hbWU9InZpY3RpbSIgcmVxdWlyZWQ+PC90ZXh0YXJl
YT4KKzxocj4KKzxvbCBpZD0iY29uc29sZSI+PC9vbD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3Npbmct
MDAyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12
YWx1ZU1pc3NpbmctMDAyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi5lZTQyNjVjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2luZy0wMDItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
NCBAQAorVGhlcmUncmUgdHdvIGZvcm0gY29udHJvbCBlbGVtZW50cyBiZWxvdywgYm90aCByZXF1
aXJlZCBhbmQgZmlsbGVkOiB2YWxpZGl0eS52YWx1ZU1pc3Npbmcgc2hvdWxkIGJlIGZhbHNlIGlu
IGJvdGggY2FzZXMuCisKKyAKK1NVQ0NFU1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3NpbmctMDAyLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwMi5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5YTQ1ZGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwMi5odG1sCkBA
IC0wLDAgKzEsMjcgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+cmVxdWlyZWQgYW5kIGJhc2lj
IHZhbHVlTWlzc2luZyAyPC90aXRsZT4KKzxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQiIHR5
cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpIHsKKyAgICAg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5pbm5lckhUTUwgKz0gIjxsaT4i
K21lc3NhZ2UrIjwvbGk+IjsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0KCkgeworICAgICAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgICAgIHYgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5TmFtZSgidmljdGltIik7CisKKyAgICAgICAgbG9nKCghdlswXS52YWxpZGl0eS52YWx1
ZU1pc3NpbmcgJiYgIXZbMV0udmFsaWRpdHkudmFsdWVNaXNzaW5nKSA/ICJTVUNDRVNTIiA6ICJG
QUlMVVJFIik7CisgICAgfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InRlc3Qo
KSI+Cis8cD5UaGVyZSdyZSB0d28gZm9ybSBjb250cm9sIGVsZW1lbnRzIGJlbG93LCBib3RoIHJl
cXVpcmVkIGFuZCBmaWxsZWQ6Cit2YWxpZGl0eS52YWx1ZU1pc3Npbmcgc2hvdWxkIGJlIGZhbHNl
IGluIGJvdGggY2FzZXMuPC9wPgorPGlucHV0IG5hbWU9InZpY3RpbSIgdmFsdWU9InNvbWV0aGlu
ZyIgcmVxdWlyZWQvPgorPHRleHRhcmVhIG5hbWU9InZpY3RpbSIgcmVxdWlyZWQ+c29tZXRoaW5n
PC90ZXh0YXJlYT4KKzxocj4KKzxvbCBpZD0iY29uc29sZSI+PC9vbD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1
ZU1pc3NpbmctMDAzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRp
dHlTdGF0ZS12YWx1ZU1pc3NpbmctMDAzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi41ZjFiMmI4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2luZy0wMDMtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsNCBAQAorVGhlcmUncmUgdHdvIGRpc2FibGVkIGZvcm0gY29udHJvbCBlbGVtZW50
cyBiZWxvdywgYm90aCByZXF1aXJlZCBhbmQgZmlsbGVkOiB2YWxpZGl0eS52YWx1ZU1pc3Npbmcg
c2hvdWxkIGJlIGZhbHNlIGluIGJvdGggY2FzZXMuCisKKyAKK1NVQ0NFU1MKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3NpbmctMDAzLmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAw
My5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxM2JmYjcKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVN
aXNzaW5nLTAwMy5odG1sCkBAIC0wLDAgKzEsMjcgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+
cmVxdWlyZWQgYW5kIHZhbHVlTWlzc2luZyBvbiBkaXNhYmxlZCBlbGVtZW50czwvdGl0bGU+Cis8
c2NyaXB0IGxhbmd1YWdlPSJKYXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAg
IGZ1bmN0aW9uIGxvZyhtZXNzYWdlKSB7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJjb25zb2xlIikuaW5uZXJIVE1MICs9ICI8bGk+IittZXNzYWdlKyI8L2xpPiI7CisgICAgfQor
CisgICAgZnVuY3Rpb24gdGVzdCgpIHsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
KworICAgICAgICB2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoInZpY3RpbSIpOworCisg
ICAgICAgIGxvZygoIXZbMF0udmFsaWRpdHkudmFsdWVNaXNzaW5nICYmICF2WzFdLnZhbGlkaXR5
LnZhbHVlTWlzc2luZykgPyAiU1VDQ0VTUyIgOiAiRkFJTFVSRSIpOworICAgIH0KKzwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgorPHA+VGhlcmUncmUgdHdvIGRpc2Fi
bGVkIGZvcm0gY29udHJvbCBlbGVtZW50cyBiZWxvdywgYm90aCByZXF1aXJlZCBhbmQgZmlsbGVk
OgordmFsaWRpdHkudmFsdWVNaXNzaW5nIHNob3VsZCBiZSBmYWxzZSBpbiBib3RoIGNhc2VzLjwv
cD4KKzxpbnB1dCBuYW1lPSJ2aWN0aW0iIGRpc2FibGVkIHJlcXVpcmVkIC8+Cis8dGV4dGFyZWEg
bmFtZT0idmljdGltIiBkaXNhYmxlZCByZXF1aXJlZD48L3RleHRhcmVhPgorPGhyPgorPG9sIGlk
PSJjb25zb2xlIj48L29sPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2luZy0wMDQtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2luZy0wMDQt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5ZmE3NjQK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUt
dmFsdWVNaXNzaW5nLTAwNC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACitUaGVyZSdyZSB0
d28gcmVhZG9ubHkgZm9ybSBjb250cm9sIGVsZW1lbnRzIGJlbG93LCBib3RoIHJlcXVpcmVkIGFu
ZCBmaWxsZWQ6IHZhbGlkaXR5LnZhbHVlTWlzc2luZyBzaG91bGQgYmUgZmFsc2UgaW4gYm90aCBj
YXNlcy4KKworIAorU1VDQ0VTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9W
YWxpZGl0eVN0YXRlLXZhbHVlTWlzc2luZy0wMDQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9y
bXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3NpbmctMDA0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uNDllMWVlYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3NpbmctMDA0Lmh0bWwKQEAgLTAsMCAr
MSwyNyBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5yZXF1aXJlZCBhbmQgdmFsdWVNaXNzaW5n
IG9uIHJlYWRvbmx5IGVsZW1lbnRzPC90aXRsZT4KKzxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3Jp
cHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpIHsK
KyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5pbm5lckhUTUwgKz0g
IjxsaT4iK21lc3NhZ2UrIjwvbGk+IjsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0KCkgewor
ICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgICAgIHYgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5TmFtZSgidmljdGltIik7CisKKyAgICAgICAgbG9nKCghdlswXS52YWxpZGl0
eS52YWx1ZU1pc3NpbmcgJiYgIXZbMV0udmFsaWRpdHkudmFsdWVNaXNzaW5nKSA/ICJTVUNDRVNT
IiA6ICJGQUlMVVJFIik7CisgICAgfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9
InRlc3QoKSI+Cis8cD5UaGVyZSdyZSB0d28gcmVhZG9ubHkgZm9ybSBjb250cm9sIGVsZW1lbnRz
IGJlbG93LCBib3RoIHJlcXVpcmVkIGFuZCBmaWxsZWQ6Cit2YWxpZGl0eS52YWx1ZU1pc3Npbmcg
c2hvdWxkIGJlIGZhbHNlIGluIGJvdGggY2FzZXMuPC9wPgorPGlucHV0IG5hbWU9InZpY3RpbSIg
cmVhZG9ubHkgcmVxdWlyZWQgLz4KKzx0ZXh0YXJlYSBuYW1lPSJ2aWN0aW0iIHJlYWRvbmx5IHJl
cXVpcmVkPjwvdGV4dGFyZWE+Cis8aHI+Cis8b2wgaWQ9ImNvbnNvbGUiPjwvb2w+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3Rh
dGUtdmFsdWVNaXNzaW5nLTAwNS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwNS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2IyYzVhYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3NpbmctMDA1LWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDkgQEAKK1RoZXJlJ3JlIHBsZW50eSBvZiBmb3JtIGNvbnRyb2wgZWxl
bWVudHMgYmVsb3csIGVhY2ggb25lIG9mIHRoZW0gaXMgdW5hY2NlcHRlZDogdmFsaWRpdHkudmFs
dWVNaXNzaW5nIHNob3VsZCBiZSBhbHdheXMgZmFsc2UuCisKKyAgICAKK1NVQ0NFU1MKK1NVQ0NF
U1MKK1NVQ0NFU1MKK1NVQ0NFU1MKK1NVQ0NFU1MKK1NVQ0NFU1MKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3NpbmctMDA1Lmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwNS5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcyYTE2MDIKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5n
LTAwNS5odG1sCkBAIC0wLDAgKzEsMzIgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+cmVxdWly
ZWQgYW5kIHZhbHVlTWlzc2luZyBvbiB1bmFjY2VwdGVkIGlucHV0IHR5cGVzPC90aXRsZT4KKzxz
Y3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAg
ZnVuY3Rpb24gbG9nKG1lc3NhZ2UpIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImNvbnNvbGUiKS5pbm5lckhUTUwgKz0gIjxsaT4iK21lc3NhZ2UrIjwvbGk+IjsKKyAgICB9CisK
KyAgICBmdW5jdGlvbiB0ZXN0KCkgeworICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQorICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwor
CisgICAgICAgIHYgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgidmljdGltIik7CisKKyAg
ICAgICAgZm9yIChpID0gMDsgaSA8IHYubGVuZ3RoOyBpKyspCisgICAgICAgICAgICBsb2coIXZb
aV0udmFsaWRpdHkudmFsdWVNaXNzaW5nID8gIlNVQ0NFU1MiIDogIkZBSUxVUkUiKTsKKyAgICB9
Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0idGVzdCgpIj4KKzxwPlRoZXJlJ3Jl
IHBsZW50eSBvZiBmb3JtIGNvbnRyb2wgZWxlbWVudHMgYmVsb3csIGVhY2ggb25lIG9mIHRoZW0g
aXMgdW5hY2NlcHRlZDoKK3ZhbGlkaXR5LnZhbHVlTWlzc2luZyBzaG91bGQgYmUgYWx3YXlzIGZh
bHNlLjwvcD4KKzxpbnB1dCBuYW1lPSJ2aWN0aW0iIHR5cGU9ImhpZGRlbiIgcmVxdWlyZWQgLz4K
KzxpbnB1dCBuYW1lPSJ2aWN0aW0iIHR5cGU9InJhbmdlIiByZXF1aXJlZCAvPgorPGlucHV0IG5h
bWU9InZpY3RpbSIgdHlwZT0iaW1hZ2UiIHJlcXVpcmVkIC8+Cis8aW5wdXQgbmFtZT0idmljdGlt
IiB0eXBlPSJyZXNldCIgcmVxdWlyZWQgLz4KKzxpbnB1dCBuYW1lPSJ2aWN0aW0iIHR5cGU9ImJ1
dHRvbiIgcmVxdWlyZWQgLz4KKzxpbnB1dCBuYW1lPSJ2aWN0aW0iIHR5cGU9InN1Ym1pdCIgcmVx
dWlyZWQgLz4KKzxocj4KKzxvbCBpZD0iY29uc29sZSI+PC9vbD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1p
c3NpbmctMDA2LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlT
dGF0ZS12YWx1ZU1pc3NpbmctMDA2LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi5lYzQ4Mzg4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2luZy0wMDYtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsNCBAQAorVGhlcmUncmUgdHdvIGNoZWNrYm94ZXMgYmVsb3csIGJvdGggYXJlIHJlcXVp
cmVkLCBvbmx5IG9uZSBpcyBjaGVja2VkLgorCisgCitTVUNDRVNTCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwNi5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2luZy0wMDYuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MTkyNDhkCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2lu
Zy0wMDYuaHRtbApAQCAtMCwwICsxLDI2IEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPnJlcXVp
cmVkIGFuZCB2YWx1ZU1pc3Npbmcgb24gY2hlY2tib3hlczwvdGl0bGU+Cis8c2NyaXB0IGxhbmd1
YWdlPSJKYXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgIGZ1bmN0aW9uIGxv
ZyhtZXNzYWdlKSB7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIiku
aW5uZXJIVE1MICs9ICI8bGk+IittZXNzYWdlKyI8L2xpPiI7CisgICAgfQorCisgICAgZnVuY3Rp
b24gdGVzdCgpIHsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAg
ICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgICAgICB2
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoInZpY3RpbSIpOworCisgICAgICAgIGxvZygh
dlswXS52YWxpZGl0eS52YWx1ZU1pc3NpbmcgJiYgdlsxXS52YWxpZGl0eS52YWx1ZU1pc3Npbmcg
PyAiU1VDQ0VTUyIgOiAiRkFJTFVSRSIpOworICAgIH0KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHkgb25sb2FkPSJ0ZXN0KCkiPgorPHA+VGhlcmUncmUgdHdvIGNoZWNrYm94ZXMgYmVsb3csIGJv
dGggYXJlIHJlcXVpcmVkLCBvbmx5IG9uZSBpcyBjaGVja2VkLjwvcD4KKzxpbnB1dCBuYW1lPSJ2
aWN0aW0iIHR5cGU9ImNoZWNrYm94IiByZXF1aXJlZCBjaGVja2VkLz4KKzxpbnB1dCBuYW1lPSJ2
aWN0aW0iIHR5cGU9ImNoZWNrYm94IiByZXF1aXJlZCAvPgorPGhyPgorPG9sIGlkPSJjb25zb2xl
Ij48L29sPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9m
b3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2luZy0wMDctZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2luZy0wMDctZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjYjFlN2YKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNz
aW5nLTAwNy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACitUaGVyZSdyZSB0d28gcmFkaW8g
YnV0dG9ucyBiZWxvdyB3aXRoIHRoZSBzYW1lIG5hbWUsIG9ubHkgb25lIGlzIHJlcXVpcmVkLCB0
aGUgb3RoZXIgb25lIGlzIGNoZWNrZWQuCisKKyAKK1NVQ0NFU1MKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3NpbmctMDA3Lmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwNy5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY3MTllOTQKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5n
LTAwNy5odG1sCkBAIC0wLDAgKzEsMjcgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+cmVxdWly
ZWQgYW5kIHZhbHVlTWlzc2luZyBvbiByYWRpbzwvdGl0bGU+Cis8c2NyaXB0IGxhbmd1YWdlPSJK
YXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgIGZ1bmN0aW9uIGxvZyhtZXNz
YWdlKSB7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuaW5uZXJI
VE1MICs9ICI8bGk+IittZXNzYWdlKyI8L2xpPiI7CisgICAgfQorCisgICAgZnVuY3Rpb24gdGVz
dCgpIHsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgICAgICB2ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoInZpY3RpbSIpOworCisgICAgICAgIGxvZyghdlswXS52
YWxpZGl0eS52YWx1ZU1pc3NpbmcgPyAiU1VDQ0VTUyIgOiAiRkFJTFVSRSIpOworICAgIH0KKzwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgorPHA+VGhlcmUncmUgdHdv
IHJhZGlvIGJ1dHRvbnMgYmVsb3cgd2l0aCB0aGUgc2FtZSBuYW1lLCBvbmx5IG9uZSBpcyByZXF1
aXJlZCwgCit0aGUgb3RoZXIgb25lIGlzIGNoZWNrZWQuPC9wPgorPGlucHV0IG5hbWU9InZpY3Rp
bSIgdHlwZT0icmFkaW8iIHJlcXVpcmVkLz4KKzxpbnB1dCBuYW1lPSJ2aWN0aW0iIHR5cGU9InJh
ZGlvIiBjaGVja2VkLz4KKzxocj4KKzxvbCBpZD0iY29uc29sZSI+PC9vbD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmVxdWlyZWQtYXR0cmli
dXRlLTAwMS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3JlcXVpcmVkLWF0
dHJpYnV0ZS0wMDEtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjdjN2Q1YjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Jl
cXVpcmVkLWF0dHJpYnV0ZS0wMDEtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorVGhlcmUn
cmUgdHdvIGZvcm0gY29udHJvbCBlbGVtZW50cyBiZWxvdywgYm90aCByZXF1aXJlZC4KKworIAor
U1VDQ0VTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yZXF1aXJlZC1hdHRy
aWJ1dGUtMDAxLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3JlcXVpcmVkLWF0dHJpYnV0
ZS0wMDEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hODJjODZhCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yZXF1aXJlZC1hdHRyaWJ1
dGUtMDAxLmh0bWwKQEAgLTAsMCArMSwyNiBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5yZXF1
aXJlZCBhdHRyaWJ1dGUgcHJlc2VuY2UgdGVzdDwvdGl0bGU+Cis8c2NyaXB0IGxhbmd1YWdlPSJK
YXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgIGZ1bmN0aW9uIGxvZyhtZXNz
YWdlKSB7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuaW5uZXJI
VE1MICs9ICI8bGk+IittZXNzYWdlKyI8L2xpPiI7CisgICAgfQorCisgICAgZnVuY3Rpb24gdGVz
dCgpIHsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgICAgICB2ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoInZpY3RpbSIpOworCisgICAgICAgIGxvZygodlswXS5y
ZXF1aXJlZCAmJiB2WzFdLnJlcXVpcmVkKSA/ICJTVUNDRVNTIiA6ICJGQUlMVVJFIik7CisgICAg
fQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InRlc3QoKSI+Cis8cD5UaGVyZSdy
ZSB0d28gZm9ybSBjb250cm9sIGVsZW1lbnRzIGJlbG93LCBib3RoIHJlcXVpcmVkLjwvcD4KKzxp
bnB1dCBuYW1lPSJ2aWN0aW0iIHJlcXVpcmVkIC8+Cis8dGV4dGFyZWEgbmFtZT0idmljdGltIiBy
ZXF1aXJlZD48L3RleHRhcmVhPgorPGhyPgorPG9sIGlkPSJjb25zb2xlIj48L29sPgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yZXF1aXJlZC1h
dHRyaWJ1dGUtMDAyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmVxdWly
ZWQtYXR0cmlidXRlLTAwMi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uNjMyODAzNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9y
bXMvcmVxdWlyZWQtYXR0cmlidXRlLTAwMi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACitU
aGVyZSdyZSB0d28gZm9ybSBjb250cm9sIGVsZW1lbnRzIGJlbG93LCBib3RoIG9wdGlvbmFsLiBP
bmNlIGxvYWRlZCB0aGV5J3JlIHNldCBhcyByZXF1aXJlZC4KKworIAorU1VDQ0VTUwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yZXF1aXJlZC1hdHRyaWJ1dGUtMDAyLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3JlcXVpcmVkLWF0dHJpYnV0ZS0wMDIuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZWVhM2UwCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yZXF1aXJlZC1hdHRyaWJ1dGUtMDAyLmh0bWwKQEAg
LTAsMCArMSwzMyBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5yZXF1aXJlZCBhdHRyaWJ1dGUg
SlMgc2V0PC90aXRsZT4KKzxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQiIHR5cGU9InRleHQv
amF2YXNjcmlwdCI+CisgICAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpIHsKKyAgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5pbm5lckhUTUwgKz0gIjxsaT4iK21lc3NhZ2Ur
IjwvbGk+IjsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0KCkgeworICAgICAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOworCisgICAgICAgIHYgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFt
ZSgidmljdGltIik7CisKKyAgICAgICAgaWYgKHZbMF0ucmVxdWlyZWQgPT0gZmFsc2UgJiYgdlsx
XS5yZXF1aXJlZCA9PSBmYWxzZSkgeworICAgICAgICAgICAgdlswXS5yZXF1aXJlZCA9IHRydWU7
CisgICAgICAgICAgICB2WzFdLnJlcXVpcmVkID0gdHJ1ZTsKKyAgICAgICAgICAgIGxvZyAoKHZb
MF0ucmVxdWlyZWQgJiYgdlsxXS5yZXF1aXJlZCkgPyAiU1VDQ0VTUyIgOiAiRkFJTFVSRSIpOwor
ICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGxvZygiRkFJTFVSRSIpOworICAg
IH0KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgorPHA+VGhlcmUn
cmUgdHdvIGZvcm0gY29udHJvbCBlbGVtZW50cyBiZWxvdywgYm90aCBvcHRpb25hbC4gT25jZSBs
b2FkZWQgdGhleSdyZQorc2V0IGFzIHJlcXVpcmVkLjwvcD4KKzxpbnB1dCBuYW1lPSJ2aWN0aW0i
IC8+Cis8dGV4dGFyZWEgbmFtZT0idmljdGltIj48L3RleHRhcmVhPgorPGhyPgorPG9sIGlkPSJj
b25zb2xlIj48L29sPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFu
Z2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwNmU0MWQyLi44YThlZTEwIDEwMDY0NAot
LS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDM2IEBACisyMDA5LTA3LTE1ICBNaWNoZWxhbmdlbG8gRGUgU2ltb25lICA8bWljZGVzaW1AZ21h
aWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTU1MQorICAgICAgICBB
ZGRlZCBzdXBwb3J0IGZvciB0aGUgInJlcXVpcmVkIiBhdHRyaWJ1dGUgYW5kIHRoZSB2YWx1ZU1p
c3NpbmcgZmxhZworICAgICAgICB0byB0aGUgVmFsaWRpdHlTdGF0ZSBvYmplY3QsIGJvdGggcGFy
dCBvZiBIVE1MNSBzZWMuIEZvcm1zIHNwZWNzLgorICAgICAgICBodHRwOi8vd3d3LndoYXR3Zy5v
cmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS9mb3Jtcy5odG1sI2F0dHIt
aW5wdXQtcmVxdWlyZWQKKworICAgICAgICBUZXN0czogZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRl
LXZhbHVlTWlzc2luZy0wMDEuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9mb3Jtcy9WYWxpZGl0
eVN0YXRlLXZhbHVlTWlzc2luZy0wMDIuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9mb3Jtcy9W
YWxpZGl0eVN0YXRlLXZhbHVlTWlzc2luZy0wMDMuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9m
b3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2luZy0wMDQuaHRtbAorICAgICAgICAgICAgICAg
ZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2luZy0wMDUuaHRtbAorICAgICAgICAg
ICAgICAgZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2luZy0wMDYuaHRtbAorICAg
ICAgICAgICAgICAgZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2luZy0wMDcuaHRt
bAorICAgICAgICAgICAgICAgZmFzdC9mb3Jtcy9yZXF1aXJlZC1hdHRyaWJ1dGUtMDAxLmh0bWwK
KyAgICAgICAgICAgICAgIGZhc3QvZm9ybXMvcmVxdWlyZWQtYXR0cmlidXRlLTAwMi5odG1sCisK
KyAgICAgICAgKiBodG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbjogYWRkZWQgcmVxdWlyZWQgYXR0
cmlidXRlCisgICAgICAgICogaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnJlcXVpcmVkKTogcmVxdWlyZWRB
dHRyIGdldHRlcgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6c2V0
UmVxdWlyZWQpOiByZXF1aXJlZEF0dHIgc2V0dGVyCisgICAgICAgICogaHRtbC9IVE1MRm9ybUNv
bnRyb2xFbGVtZW50Lmg6IHJlcXVpcmVkQXR0ciBnZXQvc2V0dGVyIGRlZmluaXRpb24KKyAgICAg
ICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuaWRsOiByZXF1aXJlZCBhdHRyaWJ1dGUKKyAgICAg
ICAgKiBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaWRsOiByZXF1aXJlZCBhdHRyaWJ1dGUKKyAg
ICAgICAgKiBodG1sL1ZhbGlkaXR5U3RhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VmFsaWRp
dHlTdGF0ZTo6aXNDb250cm9sUmVxdWlyZWQpOiBjaGVja3MgdG8gZGV0ZXJtaW5lCisgICAgICAg
IHdoZXRoZXIgb3Igbm90IGhvbm91ciByZXF1aXJlZCBhdHRyaWJ1dGUKKyAgICAgICAgKFdlYkNv
cmU6OlZhbGlkaXR5U3RhdGU6OnZhbHVlTWlzc2luZyk6IGNoZWNrcyB0byBkZXRlcm1pbmUgd2hl
dGhlciBvcgorICAgICAgICBub3QgdGhlIGNvbnRyb2wgc3VmZmVycyBmcm9tIGJlaW5nIG1pc3Nl
ZAorICAgICAgICAqIGh0bWwvVmFsaWRpdHlTdGF0ZS5oOiBtZXRob2QgZGVmaW5pdGlvbnMKKwog
MjAwOS0wNy0xNSAgWXV6byBGdWppc2hpbWEgIDx5dXpvQGdvb2dsZS5jb20+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTEF0
dHJpYnV0ZU5hbWVzLmluIGIvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgppbmRl
eCBiZDM3Yjk2Li42ZDRkM2NiIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0
ZU5hbWVzLmluCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4KQEAgLTE5
NSw2ICsxOTUsNyBAQCBwcm9ncmVzcwogcHJvbXB0CiByZWFkb25seQogcmVsCityZXF1aXJlZAog
cmVzdWx0cwogcmV2CiByb2xlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250
cm9sRWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAK
aW5kZXggODc5MzhhYy4uZTkwYTZlMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxGb3Jt
Q29udHJvbEVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVt
ZW50LmNwcApAQCAtMjA0LDYgKzIwNCwxNiBAQCB2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6
OnNldEF1dG9mb2N1cyhib29sIGIpCiAgICAgc2V0QXR0cmlidXRlKGF1dG9mb2N1c0F0dHIsIGIg
PyAiYXV0b2ZvY3VzIiA6IDApOwogfQogCitib29sIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnJl
cXVpcmVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gaGFzQXR0cmlidXRlKHJlcXVpcmVkQXR0cik7
Cit9CisKK3ZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6c2V0UmVxdWlyZWQoYm9vbCBiKQor
eworICAgIHNldEF0dHJpYnV0ZShyZXF1aXJlZEF0dHIsIGIgPyAicmVxdWlyZWQiIDogMCk7Cit9
CisKIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6cmVjYWxjU3R5bGUoU3R5bGVDaGFuZ2Ug
Y2hhbmdlKQogewogICAgIEhUTUxFbGVtZW50OjpyZWNhbGNTdHlsZShjaGFuZ2UpOwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaCBiL1dlYkNvcmUvaHRt
bC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKaW5kZXggYTAzZWIxYS4uOGY0ODhkMSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaAorKysgYi9XZWJDb3Jl
L2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oCkBAIC03NCw2ICs3NCw5IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIGJvb2wgYXV0b2ZvY3VzKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRBdXRvZm9j
dXMoYm9vbCk7CiAKKyAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZWQoKSBjb25zdDsKKyAgICB2b2lk
IHNldFJlcXVpcmVkKGJvb2wpOworCiAgICAgdmlydHVhbCB2b2lkIHJlY2FsY1N0eWxlKFN0eWxl
Q2hhbmdlKTsKIAogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBmb3JtQ29udHJvbE5h
bWUoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50Lmlk
bCBiL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmlkbAppbmRleCA3Y2Q5MWIwLi4zYTQx
MGRmIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5pZGwKKysrIGIv
V2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaWRsCkBAIC00Myw2ICs0Myw3IEBAIG1vZHVs
ZSBodG1sIHsKICAgICAgICAgICAgICAgICAgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFRvTnVsbFN0
cmluZ10gRE9NU3RyaW5nIG5hbWU7CiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBET01TdHJp
bmcgICAgICAgcGxhY2Vob2xkZXI7CiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBib29sZWFu
ICAgICAgICAgcmVhZE9ubHk7CisgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBib29sZWFuICAg
ICAgICAgcmVxdWlyZWQ7CiAjaWYgZGVmaW5lZChMQU5HVUFHRV9PQkpFQ1RJVkVfQykgJiYgTEFO
R1VBR0VfT0JKRUNUSVZFX0MKICAgICAgICAgICAgICAgICAgYXR0cmlidXRlIFtDb252ZXJ0VG9T
dHJpbmddIERPTVN0cmluZyBzaXplOyAvLyBET00gbGV2ZWwgMiBjaGFuZ2VkIHRoaXMgdG8gYSBs
b25nLCBidXQgb3VyIGV4aXN0aW5nIEFQSSBpcyBhIHN0cmluZwogI2Vsc2UKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmlkbCBiL1dlYkNvcmUvaHRtbC9IVE1M
VGV4dEFyZWFFbGVtZW50LmlkbAppbmRleCBmNmFjMDVhLi5iYThhMDYyIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5pZGwKKysrIGIvV2ViQ29yZS9odG1sL0hU
TUxUZXh0QXJlYUVsZW1lbnQuaWRsCkBAIC0zNiw2ICszNiw3IEBAIG1vZHVsZSBodG1sIHsKICAg
ICAgICAgICAgICAgICAgYXR0cmlidXRlICBib29sZWFuICAgICAgICAgICAgICBhdXRvZm9jdXM7
CiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSAgW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nXSBE
T01TdHJpbmcgICAgICAgICAgICBuYW1lOwogICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgIGJv
b2xlYW4gICAgICAgICAgICAgIHJlYWRPbmx5OworICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUg
IGJvb2xlYW4gICAgICAgICAgICAgIHJlcXVpcmVkOwogICAgICAgICAgICAgICAgICBhdHRyaWJ1
dGUgIGxvbmcgICAgICAgICAgICAgICAgIHJvd3M7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSAgRE9NU3RyaW5nICAgICAgICAgICAgdHlwZTsKICAgICAgICAgICAgICAgICAgYXR0cmlidXRl
ICBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyAgICAgICAgICAgIHZhbHVlOwpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL1ZhbGlkaXR5U3RhdGUuY3BwIGIvV2ViQ29yZS9odG1s
L1ZhbGlkaXR5U3RhdGUuY3BwCmluZGV4IDhmZjYyOWMuLmVlYjQ4ZmQgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvaHRtbC9WYWxpZGl0eVN0YXRlLmNwcAorKysgYi9XZWJDb3JlL2h0bWwvVmFsaWRpdHlT
dGF0ZS5jcHAKQEAgLTIyLDE2ICsyMiw4NyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiVmFsaWRpdHlTdGF0ZS5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAi
SFRNTEZvcm1Db250cm9sRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIK
KyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJIVE1MVGV4dEFyZWFFbGVtZW50Lmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAordXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKKwog
VmFsaWRpdHlTdGF0ZTo6VmFsaWRpdHlTdGF0ZShIVE1MRm9ybUNvbnRyb2xFbGVtZW50KiBwYXJl
bnQpCiAgICAgOiBtX2NvbnRyb2wocGFyZW50KQogewogICAgIEFTU0VSVChwYXJlbnQpOwogfQog
Citib29sIFZhbGlkaXR5U3RhdGU6OmlzQ29udHJvbFJlcXVpcmVkKCkKK3sKKyAgICBpZiAoIWNv
bnRyb2woKS0+cmVxdWlyZWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGNv
bnRyb2woKS0+aGFzVGFnTmFtZShpbnB1dFRhZykpIHsKKyAgICAgICAgSFRNTElucHV0RWxlbWVu
dCogaW5wdXQgPSBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4oY29udHJvbCgpKTsKKwor
ICAgICAgICBpZiAoaW5wdXQtPmRpc2FibGVkKCkgfHwgaW5wdXQtPnJlYWRPbmx5KCkpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgc3dpdGNoIChpbnB1dC0+aW5wdXRUeXBl
KCkpIHsKKyAgICAgICAgICAgIGNhc2UgSFRNTElucHV0RWxlbWVudDo6SElEREVOOgorICAgICAg
ICAgICAgY2FzZSBIVE1MSW5wdXRFbGVtZW50OjpSQU5HRToKKyAgICAgICAgICAgIGNhc2UgSFRN
TElucHV0RWxlbWVudDo6U1VCTUlUOgorICAgICAgICAgICAgY2FzZSBIVE1MSW5wdXRFbGVtZW50
OjpJTUFHRToKKyAgICAgICAgICAgIGNhc2UgSFRNTElucHV0RWxlbWVudDo6UkVTRVQ6CisgICAg
ICAgICAgICBjYXNlIEhUTUxJbnB1dEVsZW1lbnQ6OkJVVFRPTjoKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGNvbnRyb2woKS0+aGFzVGFnTmFt
ZSh0ZXh0YXJlYVRhZykpIHsKKyAgICAgICAgSFRNTFRleHRBcmVhRWxlbWVudCogdGV4dGFyZWEg
PSBzdGF0aWNfY2FzdDxIVE1MVGV4dEFyZWFFbGVtZW50Kj4oY29udHJvbCgpKTsKKworICAgICAg
ICByZXR1cm4gIXRleHRhcmVhLT5kaXNhYmxlZCgpICYmICF0ZXh0YXJlYS0+cmVhZE9ubHkoKTsK
KyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgVmFsaWRpdHlTdGF0ZTo6dmFs
dWVNaXNzaW5nKCkKK3sKKyAgICBpZiAoIWlzQ29udHJvbFJlcXVpcmVkKCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIGlmIChjb250cm9sKCktPmhhc1RhZ05hbWUoaW5wdXRUYWcpKSB7
CisgICAgICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0ID0gc3RhdGljX2Nhc3Q8SFRNTElucHV0
RWxlbWVudCo+KGNvbnRyb2woKSk7CisKKyAgICAgICAgc3dpdGNoIChpbnB1dC0+aW5wdXRUeXBl
KCkpIHsKKyAgICAgICAgICAgIGNhc2UgSFRNTElucHV0RWxlbWVudDo6VEVYVDoKKyAgICAgICAg
ICAgIGNhc2UgSFRNTElucHV0RWxlbWVudDo6U0VBUkNIOgorICAgICAgICAgICAgY2FzZSBIVE1M
SW5wdXRFbGVtZW50OjpVUkw6CisgICAgICAgICAgICBjYXNlIEhUTUxJbnB1dEVsZW1lbnQ6OlRF
TEVQSE9ORToKKyAgICAgICAgICAgIGNhc2UgSFRNTElucHV0RWxlbWVudDo6RU1BSUw6CisgICAg
ICAgICAgICBjYXNlIEhUTUxJbnB1dEVsZW1lbnQ6OlBBU1NXT1JEOgorICAgICAgICAgICAgY2Fz
ZSBIVE1MSW5wdXRFbGVtZW50OjpOVU1CRVI6CisgICAgICAgICAgICAgICAgcmV0dXJuIGlucHV0
LT52YWx1ZSgpLmlzRW1wdHkoKTsKKyAgICAgICAgICAgIGNhc2UgSFRNTElucHV0RWxlbWVudDo6
Q0hFQ0tCT1g6CisgICAgICAgICAgICAgICAgcmV0dXJuICFpbnB1dC0+Y2hlY2tlZCgpOworICAg
ICAgICAgICAgY2FzZSBIVE1MSW5wdXRFbGVtZW50OjpSQURJTzoKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gIWlucHV0LT5kb2N1bWVudCgpLT5jaGVja2VkUmFkaW9CdXR0b25zKCkuY2hlY2tlZEJ1
dHRvbkZvckdyb3VwKGlucHV0LT5uYW1lKCkpOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoY29u
dHJvbCgpLT5oYXNUYWdOYW1lKHRleHRhcmVhVGFnKSkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PEhUTUxUZXh0QXJlYUVsZW1lbnQqPihjb250cm9sKCkpLT52YWx1ZSgpLmlzRW1wdHkoKTsK
KworICAgIHJldHVybiBmYWxzZTsKK30KKwogYm9vbCBWYWxpZGl0eVN0YXRlOjp2YWxpZCgpCiB7
CiAgICAgYm9vbCBzb21lRXJyb3IgPSB0eXBlTWlzbWF0Y2goKSB8fCBzdGVwTWlzbWF0Y2goKSB8
fCByYW5nZVVuZGVyZmxvdygpIHx8IHJhbmdlT3ZlcmZsb3coKSB8fApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9odG1sL1ZhbGlkaXR5U3RhdGUuaCBiL1dlYkNvcmUvaHRtbC9WYWxpZGl0eVN0YXRlLmgK
aW5kZXggYTAxMWY3YS4uNDYzNzg1MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL1ZhbGlkaXR5
U3RhdGUuaAorKysgYi9XZWJDb3JlL2h0bWwvVmFsaWRpdHlTdGF0ZS5oCkBAIC0zOSw3ICszOSwx
MSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgSFRNTEZvcm1Db250cm9sRWxlbWVu
dCogY29udHJvbCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udHJvbDsgfQogCi0gICAgICAgIGJvb2wg
dmFsdWVNaXNzaW5nKCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAgICAgLy8gQ2hlY2tzIGlmIHRo
ZSBjb250cm9sIGhhcyB0byBob25vdXIgaXRzIHJlcXVpcmVkIGF0dHJpYnV0ZSwKKyAgICAgICAg
Ly8gaWYgcHJlc2VudC4KKyAgICAgICAgYm9vbCBpc0NvbnRyb2xSZXF1aXJlZCgpOworCisgICAg
ICAgIGJvb2wgdmFsdWVNaXNzaW5nKCk7CiAgICAgICAgIGJvb2wgdHlwZU1pc21hdGNoKCkgeyBy
ZXR1cm4gZmFsc2U7IH0KICAgICAgICAgYm9vbCBwYXR0ZXJuTWlzbWF0Y2goKSB7IHJldHVybiBm
YWxzZTsgfQogICAgICAgICBib29sIHRvb0xvbmcoKSB7IHJldHVybiBmYWxzZTsgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>32898</attachid>
            <date>2009-07-16 15:37:41 -0700</date>
            <delta_ts>2009-07-17 09:20:51 -0700</delta_ts>
            <desc>Proposed patch, rev.3</desc>
            <filename>required-valueMissing.patch</filename>
            <type>text/plain</type>
            <size>43866</size>
            <attacher name="Michelangelo De Simone">michelangelo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2NTcwMjM4Li40ODNiYWNhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDggQEAKKzIwMDktMDct
MTYgIE1pY2hlbGFuZ2VsbyBEZSBTaW1vbmUgIDxtaWNkZXNpbUBnbWFpbC5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1NTUxCisgICAgICAgIFRlc3Qgc3VpdGUgZm9yIHRo
ZSByZXF1aXJlZCBhdHRyaWJ1dGUsIHRoZSB2YWx1ZU1pc3NpbmcgZmxhZyBhbmQgbmV3CisgICAg
ICAgIDpyZXF1aXJlZCBhbmQgOm9wdGlvbmFsIENTUyBwc2V1ZG9jbGFzc2VzLgorICAgICAgICBQ
YXJ0IG9mIHRoZSBIVE1MNSBzZWMuIEZvcm1zLgorICAgICAgICBodHRwOi8vd3d3LndoYXR3Zy5v
cmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS9mb3Jtcy5odG1sI2F0dHIt
aW5wdXQtcmVxdWlyZWQKKworICAgICAgICAqIGZhc3QvY3NzL3BzZXVkby1yZXF1aXJlZC1vcHRp
b25hbC0wMDEtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9wc2V1ZG8t
cmVxdWlyZWQtb3B0aW9uYWwtMDAxLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL3Bz
ZXVkby1yZXF1aXJlZC1vcHRpb25hbC0wMDItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2Nzcy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9uYWwtMDAyLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvY3NzL3BzZXVkby1yZXF1aXJlZC1vcHRpb25hbC0wMDMtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9uYWwtMDAz
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL3BzZXVkby1yZXF1aXJlZC1vcHRpb25h
bC0wMDQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9wc2V1ZG8tcmVx
dWlyZWQtb3B0aW9uYWwtMDA0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL3BzZXVk
by1yZXF1aXJlZC1vcHRpb25hbC0wMDUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2Nzcy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9uYWwtMDA1Lmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvY3NzL3BzZXVkby1yZXF1aXJlZC1vcHRpb25hbC0wMDYtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9uYWwtMDA2Lmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3Np
bmctMDAxLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9WYWxpZGl0
eVN0YXRlLXZhbHVlTWlzc2luZy0wMDEuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jt
cy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2luZy0wMDItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwMi5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAw
My1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvVmFsaWRpdHlTdGF0
ZS12YWx1ZU1pc3NpbmctMDAzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvVmFs
aWRpdHlTdGF0ZS12YWx1ZU1pc3NpbmctMDA0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2luZy0wMDQuaHRtbDogQWRkZWQu
CisgICAgICAgICogZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2luZy0wMDUtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFs
dWVNaXNzaW5nLTAwNS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL1ZhbGlkaXR5
U3RhdGUtdmFsdWVNaXNzaW5nLTAwNi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3NpbmctMDA2Lmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3NpbmctMDA3LWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlz
c2luZy0wMDcuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRl
LXZhbHVlTWlzc2luZy0wMDgtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zv
cm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwOC5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwOS1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3Npbmct
MDA5Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvcmVxdWlyZWQtYXR0cmlidXRl
LTAwMS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvcmVxdWlyZWQt
YXR0cmlidXRlLTAwMS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL3JlcXVpcmVk
LWF0dHJpYnV0ZS0wMDItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1z
L3JlcXVpcmVkLWF0dHJpYnV0ZS0wMDIuaHRtbDogQWRkZWQuCisKIDIwMDktMDctMTYgIFNoaW5p
Y2hpcm8gSGFtYWppICA8aGFtYWppQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBPbGl2ZXIgSHVudC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL3BzZXVkby1y
ZXF1aXJlZC1vcHRpb25hbC0wMDEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mv
cHNldWRvLXJlcXVpcmVkLW9wdGlvbmFsLTAwMS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uZTk2OTNjMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvY3NzL3BzZXVkby1yZXF1aXJlZC1vcHRpb25hbC0wMDEtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsNSBAQAorQWxsIGNvbnRyb2xzIHNob3VsZCBoYXZlIGEgZ3JlZW4gYmFja2dyb3Vu
ZC4KKworIAorU1VDQ0VTUworU1VDQ0VTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9j
c3MvcHNldWRvLXJlcXVpcmVkLW9wdGlvbmFsLTAwMS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9j
c3MvcHNldWRvLXJlcXVpcmVkLW9wdGlvbmFsLTAwMS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjk4ODIwOTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2Nzcy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9uYWwtMDAxLmh0bWwKQEAgLTAsMCArMSwzOCBA
QAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5yZXF1aXJlZC9vcHRpb25hbCBDU1MgcHNldWRvY2xh
c3NlczwvdGl0bGU+Cis8c3R5bGU+CisgaW5wdXQ6cmVxdWlyZWQgeyBiYWNrZ3JvdW5kOiBsaW1l
OyB9CisgdGV4dGFyZWE6cmVxdWlyZWQgeyBiYWNrZ3JvdW5kOiBsaW1lOyB9CisgaW5wdXQgeyBi
YWNrZ3JvdW5kOiByZWQ7IH0KKyB0ZXh0YXJlYSB7IGJhY2tncm91bmQ6IHJlZDsgfQorIGlucHV0
Om9wdGlvbmFsIHsgYmFja2dyb3VuZDogcmVkOyB9CisgdGV4dGFyZWE6b3B0aW9uYWwgeyBiYWNr
Z3JvdW5kOiByZWQ7IH0KKzwvc3R5bGU+Cis8c2NyaXB0IGxhbmd1YWdlPSJKYXZhU2NyaXB0IiB0
eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKSB7CisgICAg
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuaW5uZXJIVE1MICs9ICI8bGk+
IittZXNzYWdlKyI8L2xpPiI7CisgICAgfQorCisgICAgZnVuY3Rpb24gdGVzdCgpIHsKKyAgICAg
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgICAgICB2ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeU5hbWUoInZpY3RpbSIpOworCisgICAgICAgIGZvciAoaSA9IDA7IGkgPCB2Lmxlbmd0
aDsgaSsrKQorICAgICAgICAgICAgaWYgKGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVk
U3R5bGUodltpXSwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYmFja2dyb3VuZC1jb2xvcicpID09
ICJyZ2IoMCwgMjU1LCAwKSIpCisgICAgICAgICAgICAgICAgbG9nKCJTVUNDRVNTIik7CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbG9nKCJGQUlMVVJFIik7CisgICAgfQorPC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InRlc3QoKSI+Cis8cD5BbGwgY29udHJvbHMg
c2hvdWxkIGhhdmUgYSBncmVlbiBiYWNrZ3JvdW5kLjwvcD4KKzxpbnB1dCBuYW1lPSJ2aWN0aW0i
IHJlcXVpcmVkIC8+Cis8dGV4dGFyZWEgbmFtZT0idmljdGltIiByZXF1aXJlZCAvPjwvdGV4dGFy
ZWE+Cis8aHI+Cis8b2wgaWQ9ImNvbnNvbGUiPjwvb2w+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9uYWwtMDAy
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3BzZXVkby1yZXF1aXJlZC1vcHRp
b25hbC0wMDItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LmU5NjkzYzIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9wc2V1ZG8t
cmVxdWlyZWQtb3B0aW9uYWwtMDAyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAKK0FsbCBj
b250cm9scyBzaG91bGQgaGF2ZSBhIGdyZWVuIGJhY2tncm91bmQuCisKKyAKK1NVQ0NFU1MKK1NV
Q0NFU1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL3BzZXVkby1yZXF1aXJlZC1v
cHRpb25hbC0wMDIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3BzZXVkby1yZXF1aXJlZC1v
cHRpb25hbC0wMDIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MTM2
MDQwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvcHNldWRvLXJlcXVp
cmVkLW9wdGlvbmFsLTAwMi5odG1sCkBAIC0wLDAgKzEsMzYgQEAKKzxodG1sPgorPGhlYWQ+Cis8
dGl0bGU+cmVxdWlyZWQvb3B0aW9uYWwgQ1NTIHBzZXVkb2NsYXNzZXMgcGFydCAyPC90aXRsZT4K
KzxzdHlsZT4KKyBpbnB1dDpvcHRpb25hbCB7IGJhY2tncm91bmQ6IGxpbWU7IH0KKyB0ZXh0YXJl
YTpvcHRpb25hbCB7IGJhY2tncm91bmQ6IGxpbWU7IH0KKyBpbnB1dCB7IGJhY2tncm91bmQ6IHJl
ZDsgfQorIHRleHRhcmVhIHsgYmFja2dyb3VuZDogcmVkOyB9Cis8L3N0eWxlPgorPHNjcmlwdCBs
YW5ndWFnZT0iSmF2YVNjcmlwdCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICBmdW5jdGlv
biBsb2cobWVzc2FnZSkgeworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29s
ZSIpLmlubmVySFRNTCArPSAiPGxpPiIrbWVzc2FnZSsiPC9saT4iOworICAgIH0KKworICAgIGZ1
bmN0aW9uIHRlc3QoKSB7CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
CisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICAg
ICAgdiA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKCJ2aWN0aW0iKTsKKworICAgICAgICBm
b3IgKGkgPSAwOyBpIDwgdi5sZW5ndGg7IGkrKykKKyAgICAgICAgICAgIGlmIChkb2N1bWVudC5k
ZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHZbaV0sIG51bGwpLmdldFByb3BlcnR5VmFsdWUo
J2JhY2tncm91bmQtY29sb3InKSA9PSAicmdiKDAsIDI1NSwgMCkiKQorICAgICAgICAgICAgICAg
IGxvZygiU1VDQ0VTUyIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGxvZygi
RkFJTFVSRSIpOworICAgIH0KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJ0ZXN0
KCkiPgorPHA+QWxsIGNvbnRyb2xzIHNob3VsZCBoYXZlIGEgZ3JlZW4gYmFja2dyb3VuZC48L3A+
Cis8aW5wdXQgbmFtZT0idmljdGltIi8+Cis8dGV4dGFyZWEgbmFtZT0idmljdGltIiAvPjwvdGV4
dGFyZWE+Cis8aHI+Cis8b2wgaWQ9ImNvbnNvbGUiPjwvb2w+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9uYWwt
MDAzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3BzZXVkby1yZXF1aXJlZC1v
cHRpb25hbC0wMDMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjUwZGVmZjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9wc2V1
ZG8tcmVxdWlyZWQtb3B0aW9uYWwtMDAzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDYgQEAKK0Fs
bCBjb250cm9scyBzaG91bGQgaGF2ZSBhIGdyZWVuIGJhY2tncm91bmQuCisKKyAgCitTVUNDRVNT
CitTVUNDRVNTCitTVUNDRVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9wc2V1
ZG8tcmVxdWlyZWQtb3B0aW9uYWwtMDAzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9wc2V1
ZG8tcmVxdWlyZWQtb3B0aW9uYWwtMDAzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uYTk3YjFhMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3Nz
L3BzZXVkby1yZXF1aXJlZC1vcHRpb25hbC0wMDMuaHRtbApAQCAtMCwwICsxLDM3IEBACis8aHRt
bD4KKzxoZWFkPgorPHRpdGxlPnJlcXVpcmVkL29wdGlvbmFsIENTUyBwc2V1ZG9jbGFzc2VzIHBh
cnQgMzwvdGl0bGU+Cis8c3R5bGU+CisgaW5wdXQ6cmVxdWlyZWQgeyBiYWNrZ3JvdW5kOiBsaW1l
OyB9CisgdGV4dGFyZWE6cmVxdWlyZWQgeyBiYWNrZ3JvdW5kOiBsaW1lOyB9CisgaW5wdXQgeyBi
YWNrZ3JvdW5kOiByZWQ7IH0KKyB0ZXh0YXJlYSB7IGJhY2tncm91bmQ6IHJlZDsgfQorPC9zdHls
ZT4KKzxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+
CisgICAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImNvbnNvbGUiKS5pbm5lckhUTUwgKz0gIjxsaT4iK21lc3NhZ2UrIjwvbGk+IjsKKyAg
ICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0KCkgeworICAgICAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQorICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOworCisgICAgICAgIHYgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgidmljdGltIik7
CisKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IHYubGVuZ3RoOyBpKyspCisgICAgICAgICAgICBp
ZiAoZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZSh2W2ldLCBudWxsKS5nZXRQ
cm9wZXJ0eVZhbHVlKCdiYWNrZ3JvdW5kLWNvbG9yJykgPT0gInJnYigwLCAyNTUsIDApIikKKyAg
ICAgICAgICAgICAgICBsb2coIlNVQ0NFU1MiKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICBsb2coIkZBSUxVUkUiKTsKKyAgICB9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
IG9ubG9hZD0idGVzdCgpIj4KKzxwPkFsbCBjb250cm9scyBzaG91bGQgaGF2ZSBhIGdyZWVuIGJh
Y2tncm91bmQuPC9wPgorPGlucHV0IG5hbWU9InZpY3RpbSIgcmVxdWlyZWQgLz4KKzx0ZXh0YXJl
YSBuYW1lPSJ2aWN0aW0iIHJlcXVpcmVkIGRpc2FibGVkLz48L3RleHRhcmVhPgorPHRleHRhcmVh
IG5hbWU9InZpY3RpbSIgcmVxdWlyZWQgcmVhZG9ubHkvPjwvdGV4dGFyZWE+Cis8aHI+Cis8b2wg
aWQ9ImNvbnNvbGUiPjwvb2w+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2Nzcy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9uYWwtMDA0LWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2Zhc3QvY3NzL3BzZXVkby1yZXF1aXJlZC1vcHRpb25hbC0wMDQtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2MWQxMzQKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9u
YWwtMDA0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDggQEAKK0FsbCBjb250cm9scyBzaG91bGQg
aGF2ZSBhIGdyZWVuIGJhY2tncm91bmQuCisKK0xvcmVtIGlwc3VtICAgIAorU1VDQ0VTUworU1VD
Q0VTUworU1VDQ0VTUworU1VDQ0VTUworU1VDQ0VTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9jc3MvcHNldWRvLXJlcXVpcmVkLW9wdGlvbmFsLTAwNC5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9jc3MvcHNldWRvLXJlcXVpcmVkLW9wdGlvbmFsLTAwNC5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2NWEyNWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2Nzcy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9uYWwtMDA0Lmh0bWwKQEAgLTAsMCAr
MSw0NyBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5yZXF1aXJlZC9vcHRpb25hbCBDU1MgcHNl
dWRvY2xhc3NlcyBwYXJ0IDQ8L3RpdGxlPgorPHN0eWxlPgorIGJ1dHRvbjpvcHRpb25hbCB7IGJh
Y2tncm91bmQ6IGxpbWU7IH0KKyBpbnB1dDpvcHRpb25hbCB7IGJhY2tncm91bmQ6IGxpbWU7IH0K
KyBzZWxlY3Q6b3B0aW9uYWwgeyBiYWNrZ3JvdW5kOiBsaW1lOyB9CisgdGV4dGFyZWE6b3B0aW9u
YWwgeyBiYWNrZ3JvdW5kOiBsaW1lOyB9CisgYnV0dG9uIHsgYmFja2dyb3VuZDogcmVkOyB9Cisg
aW5wdXQgeyBiYWNrZ3JvdW5kOiByZWQ7IH0KKyBzZWxlY3QgeyBiYWNrZ3JvdW5kOiByZWQ7IH0K
KyB0ZXh0YXJlYSB7IGJhY2tncm91bmQ6IHJlZDsgfQorIGJ1dHRvbjpyZXF1aXJlZCB7IGJhY2tn
cm91bmQ6IHJlZDsgfQorIGlucHV0OnJlcXVpcmVkIHsgYmFja2dyb3VuZDogcmVkOyB9Cisgc2Vs
ZWN0OnJlcXVpcmVkIHsgYmFja2dyb3VuZDogcmVkOyB9CisgdGV4dGFyZWE6cmVxdWlyZWQgeyBi
YWNrZ3JvdW5kOiByZWQ7IH0KKzwvc3R5bGU+Cis8c2NyaXB0IGxhbmd1YWdlPSJKYXZhU2NyaXB0
IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKSB7Cisg
ICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuaW5uZXJIVE1MICs9ICI8
bGk+IittZXNzYWdlKyI8L2xpPiI7CisgICAgfQorCisgICAgZnVuY3Rpb24gdGVzdCgpIHsKKyAg
ICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgICAgICB2ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeU5hbWUoInZpY3RpbSIpOworCisgICAgICAgIGZvciAoaSA9IDA7IGkgPCB2Lmxl
bmd0aDsgaSsrKQorICAgICAgICAgICAgaWYgKGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1
dGVkU3R5bGUodltpXSwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYmFja2dyb3VuZC1jb2xvcicp
ID09ICJyZ2IoMCwgMjU1LCAwKSIpCisgICAgICAgICAgICAgICAgbG9nKCJTVUNDRVNTIik7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbG9nKCJGQUlMVVJFIik7CisgICAgfQor
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InRlc3QoKSI+Cis8cD5BbGwgY29udHJv
bHMgc2hvdWxkIGhhdmUgYSBncmVlbiBiYWNrZ3JvdW5kLjwvcD4KKzxidXR0b24gdHlwZT0iYnV0
dG9uIiBuYW1lPSJ2aWN0aW0iPkxvcmVtIGlwc3VtPC9idXR0b24+Cis8aW5wdXQgbmFtZT0idmlj
dGltIiBkaXNhYmxlZC8+Cis8aW5wdXQgdHlwZT0iYnV0dG9uIiBuYW1lPSJ2aWN0aW0iLz4KKzxz
ZWxlY3QgbmFtZT0idmljdGltIj48L3NlbGVjdD4KKzx0ZXh0YXJlYSBuYW1lPSJ2aWN0aW0iPjwv
dGV4dGFyZWE+Cis8aHI+Cis8b2wgaWQ9ImNvbnNvbGUiPjwvb2w+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9u
YWwtMDA1LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3BzZXVkby1yZXF1aXJl
ZC1vcHRpb25hbC0wMDUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjEzZjM2NGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9w
c2V1ZG8tcmVxdWlyZWQtb3B0aW9uYWwtMDA1LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDggQEAK
K0FsbCBjb250cm9scyBzaG91bGQgaGF2ZSBhIGdyZWVuIGJhY2tncm91bmQuCisKKyAgICAKK1NV
Q0NFU1MKK1NVQ0NFU1MKK1NVQ0NFU1MKK1NVQ0NFU1MKK1NVQ0NFU1MKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvY3NzL3BzZXVkby1yZXF1aXJlZC1vcHRpb25hbC0wMDUuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvY3NzL3BzZXVkby1yZXF1aXJlZC1vcHRpb25hbC0wMDUuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNWFiNDQ1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvcHNldWRvLXJlcXVpcmVkLW9wdGlvbmFsLTAwNS5odG1s
CkBAIC0wLDAgKzEsMzggQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+cmVxdWlyZWQvb3B0aW9u
YWwgQ1NTIHBzZXVkb2NsYXNzZXMgcGFydCA1PC90aXRsZT4KKzxzdHlsZT4KKyBpbnB1dDpvcHRp
b25hbCB7IGJhY2tncm91bmQ6IGxpbWU7IH0KKyBpbnB1dCB7IGJhY2tncm91bmQ6IHJlZDsgfQor
IGlucHV0OnJlcXVpcmVkIHsgYmFja2dyb3VuZDogcmVkOyB9Cis8L3N0eWxlPgorPHNjcmlwdCBs
YW5ndWFnZT0iSmF2YVNjcmlwdCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICBmdW5jdGlv
biBsb2cobWVzc2FnZSkgeworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29s
ZSIpLmlubmVySFRNTCArPSAiPGxpPiIrbWVzc2FnZSsiPC9saT4iOworICAgIH0KKworICAgIGZ1
bmN0aW9uIHRlc3QoKSB7CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
CisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICAg
ICAgdiA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKCJ2aWN0aW0iKTsKKworICAgICAgICBm
b3IgKGkgPSAwOyBpIDwgdi5sZW5ndGg7IGkrKykKKyAgICAgICAgICAgIGlmIChkb2N1bWVudC5k
ZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHZbaV0sIG51bGwpLmdldFByb3BlcnR5VmFsdWUo
J2JhY2tncm91bmQtY29sb3InKSA9PSAicmdiKDAsIDI1NSwgMCkiKQorICAgICAgICAgICAgICAg
IGxvZygiU1VDQ0VTUyIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGxvZygi
RkFJTFVSRSIpOworICAgIH0KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJ0ZXN0
KCkiPgorPHA+QWxsIGNvbnRyb2xzIHNob3VsZCBoYXZlIGEgZ3JlZW4gYmFja2dyb3VuZC48L3A+
Cis8aW5wdXQgdHlwZT0icmFuZ2UiIG5hbWU9InZpY3RpbSIgcmVxdWlyZWQvPgorPGlucHV0IHR5
cGU9InN1Ym1pdCIgbmFtZT0idmljdGltIiByZXF1aXJlZC8+Cis8aW5wdXQgdHlwZT0iaW1hZ2Ui
IG5hbWU9InZpY3RpbSIgcmVxdWlyZWQvPgorPGlucHV0IHR5cGU9InJlc2V0IiBuYW1lPSJ2aWN0
aW0iIHJlcXVpcmVkLz4KKzxpbnB1dCB0eXBlPSJidXR0b24iIG5hbWU9InZpY3RpbSIgcmVxdWly
ZWQvPgorPGhyPgorPG9sIGlkPSJjb25zb2xlIj48L29sPgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvcHNldWRvLXJlcXVpcmVkLW9wdGlvbmFsLTAw
Ni1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9wc2V1ZG8tcmVxdWlyZWQtb3B0
aW9uYWwtMDA2LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li4xMzg4MzdlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvcHNldWRv
LXJlcXVpcmVkLW9wdGlvbmFsLTAwNi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMyBAQAorQWxs
IGNvbnRyb2xzIHNob3VsZCBoYXZlIGEgZ3JlZW4gYmFja2dyb3VuZC4KKworICAgICAgICAgCitT
VUNDRVNTCitTVUNDRVNTCitTVUNDRVNTCitTVUNDRVNTCitTVUNDRVNTCitTVUNDRVNTCitTVUND
RVNTCitTVUNDRVNTCitTVUNDRVNTCitTVUNDRVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2Nzcy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9uYWwtMDA2Lmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L2Nzcy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9uYWwtMDA2Lmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uZjNjY2VmYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvY3NzL3BzZXVkby1yZXF1aXJlZC1vcHRpb25hbC0wMDYuaHRtbApAQCAtMCwwICsx
LDQ0IEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPnJlcXVpcmVkL29wdGlvbmFsIENTUyBwc2V1
ZG9jbGFzc2VzIHBhcnQgNjwvdGl0bGU+Cis8c3R5bGU+CisgaW5wdXQ6b3B0aW9uYWwgeyBiYWNr
Z3JvdW5kOiByZWQ7IH0KKyBpbnB1dCB7IGJhY2tncm91bmQ6IHJlZDsgfQorIGlucHV0OnJlcXVp
cmVkIHsgYmFja2dyb3VuZDogbGltZTsgfQorPC9zdHlsZT4KKzxzY3JpcHQgbGFuZ3VhZ2U9Ikph
dmFTY3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgZnVuY3Rpb24gbG9nKG1lc3Nh
Z2UpIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5pbm5lckhU
TUwgKz0gIjxsaT4iK21lc3NhZ2UrIjwvbGk+IjsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0
KCkgeworICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgICAgIHYgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5TmFtZSgidmljdGltIik7CisKKyAgICAgICAgZm9yIChpID0gMDsg
aSA8IHYubGVuZ3RoOyBpKyspCisgICAgICAgICAgICBpZiAoZG9jdW1lbnQuZGVmYXVsdFZpZXcu
Z2V0Q29tcHV0ZWRTdHlsZSh2W2ldLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdiYWNrZ3JvdW5k
LWNvbG9yJykgPT0gInJnYigwLCAyNTUsIDApIikKKyAgICAgICAgICAgICAgICBsb2coIlNVQ0NF
U1MiKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBsb2coIkZBSUxVUkUiKTsK
KyAgICB9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0idGVzdCgpIj4KKzxwPkFs
bCBjb250cm9scyBzaG91bGQgaGF2ZSBhIGdyZWVuIGJhY2tncm91bmQuPC9wPgorPGlucHV0IHR5
cGU9InRleHQiIG5hbWU9InZpY3RpbSIgcmVxdWlyZWQvPgorPGlucHV0IHR5cGU9InBhc3N3b3Jk
IiBuYW1lPSJ2aWN0aW0iIHJlcXVpcmVkLz4KKzxpbnB1dCB0eXBlPSJzZWFyY2giIG5hbWU9InZp
Y3RpbSIgcmVxdWlyZWQvPgorPGlucHV0IHR5cGU9InVybCIgbmFtZT0idmljdGltIiByZXF1aXJl
ZC8+Cis8aW5wdXQgdHlwZT0idGVsZXBob25lIiBuYW1lPSJ2aWN0aW0iIHJlcXVpcmVkLz4KKzxp
bnB1dCB0eXBlPSJlbWFpbCIgbmFtZT0idmljdGltIiByZXF1aXJlZC8+Cis8aW5wdXQgdHlwZT0i
bnVtYmVyIiBuYW1lPSJ2aWN0aW0iIHJlcXVpcmVkLz4KKzxpbnB1dCB0eXBlPSJjaGVja2JveCIg
bmFtZT0idmljdGltIiByZXF1aXJlZC8+Cis8aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9InZpY3Rp
bSIgcmVxdWlyZWQvPgorPGlucHV0IHR5cGU9ImZpbGUiIG5hbWU9InZpY3RpbSIgcmVxdWlyZWQv
PgorCis8aHI+Cis8b2wgaWQ9ImNvbnNvbGUiPjwvb2w+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5n
LTAwMS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUt
dmFsdWVNaXNzaW5nLTAwMS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uYjA2OWE3NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9y
bXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3NpbmctMDAxLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDQgQEAKK1RoZXJlIGFyZSB0d28gZm9ybSBjb250cm9sIGVsZW1lbnRzIGJlbG93LCBib3RoIHJl
cXVpcmVkIGFuZCBibGFuazogdmFsaWRpdHkudmFsdWVNaXNzaW5nIHNob3VsZCBiZSB0cnVlIGlu
IGJvdGggY2FzZXMuCisKKyAKK1NVQ0NFU1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3NpbmctMDAxLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwMS5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRjODg4NzkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwMS5odG1sCkBA
IC0wLDAgKzEsMjcgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+cmVxdWlyZWQgYW5kIGJhc2lj
IHZhbHVlTWlzc2luZzwvdGl0bGU+Cis8c2NyaXB0IGxhbmd1YWdlPSJKYXZhU2NyaXB0IiB0eXBl
PSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKSB7CisgICAgICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuaW5uZXJIVE1MICs9ICI8bGk+Iitt
ZXNzYWdlKyI8L2xpPiI7CisgICAgfQorCisgICAgZnVuY3Rpb24gdGVzdCgpIHsKKyAgICAgICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgICAgICB2ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeU5hbWUoInZpY3RpbSIpOworCisgICAgICAgIGxvZygodlswXS52YWxpZGl0eS52YWx1ZU1p
c3NpbmcgJiYgdlsxXS52YWxpZGl0eS52YWx1ZU1pc3NpbmcpID8gIlNVQ0NFU1MiIDogIkZBSUxV
UkUiKTsKKyAgICB9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0idGVzdCgpIj4K
KzxwPlRoZXJlIGFyZSB0d28gZm9ybSBjb250cm9sIGVsZW1lbnRzIGJlbG93LCBib3RoIHJlcXVp
cmVkIGFuZCBibGFuazoKK3ZhbGlkaXR5LnZhbHVlTWlzc2luZyBzaG91bGQgYmUgdHJ1ZSBpbiBi
b3RoIGNhc2VzLjwvcD4KKzxpbnB1dCBuYW1lPSJ2aWN0aW0iIHJlcXVpcmVkLz4KKzx0ZXh0YXJl
YSBuYW1lPSJ2aWN0aW0iIHJlcXVpcmVkPjwvdGV4dGFyZWE+Cis8aHI+Cis8b2wgaWQ9ImNvbnNv
bGUiPjwvb2w+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwMi1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwMi1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzYwNjliOAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1p
c3NpbmctMDAyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKK1RoZXJlIGFyZSB0d28gZm9y
bSBjb250cm9sIGVsZW1lbnRzIGJlbG93LCBib3RoIHJlcXVpcmVkIGFuZCB3aXRoIHNvbWUgdmFs
dWU6IHZhbGlkaXR5LnZhbHVlTWlzc2luZyBzaG91bGQgYmUgZmFsc2UgaW4gYm90aCBjYXNlcy4K
KworIAorU1VDQ0VTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0
eVN0YXRlLXZhbHVlTWlzc2luZy0wMDIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFs
aWRpdHlTdGF0ZS12YWx1ZU1pc3NpbmctMDAyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uNmYwNmY5ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3NpbmctMDAyLmh0bWwKQEAgLTAsMCArMSwyNyBA
QAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5yZXF1aXJlZCBhbmQgYmFzaWMgdmFsdWVNaXNzaW5n
IDI8L3RpdGxlPgorPHNjcmlwdCBsYW5ndWFnZT0iSmF2YVNjcmlwdCIgdHlwZT0idGV4dC9qYXZh
c2NyaXB0Ij4KKyAgICBmdW5jdGlvbiBsb2cobWVzc2FnZSkgeworICAgICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmlubmVySFRNTCArPSAiPGxpPiIrbWVzc2FnZSsiPC9s
aT4iOworICAgIH0KKworICAgIGZ1bmN0aW9uIHRlc3QoKSB7CisgICAgICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7CisKKyAgICAgICAgdiA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKCJ2
aWN0aW0iKTsKKworICAgICAgICBsb2coKCF2WzBdLnZhbGlkaXR5LnZhbHVlTWlzc2luZyAmJiAh
dlsxXS52YWxpZGl0eS52YWx1ZU1pc3NpbmcpID8gIlNVQ0NFU1MiIDogIkZBSUxVUkUiKTsKKyAg
ICB9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0idGVzdCgpIj4KKzxwPlRoZXJl
IGFyZSB0d28gZm9ybSBjb250cm9sIGVsZW1lbnRzIGJlbG93LCBib3RoIHJlcXVpcmVkIGFuZCB3
aXRoIHNvbWUgdmFsdWU6Cit2YWxpZGl0eS52YWx1ZU1pc3Npbmcgc2hvdWxkIGJlIGZhbHNlIGlu
IGJvdGggY2FzZXMuPC9wPgorPGlucHV0IG5hbWU9InZpY3RpbSIgdmFsdWU9InNvbWV0aGluZyIg
cmVxdWlyZWQvPgorPHRleHRhcmVhIG5hbWU9InZpY3RpbSIgcmVxdWlyZWQ+c29tZXRoaW5nPC90
ZXh0YXJlYT4KKzxocj4KKzxvbCBpZD0iY29uc29sZSI+PC9vbD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1p
c3NpbmctMDAzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlT
dGF0ZS12YWx1ZU1pc3NpbmctMDAzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi5kZmUzMzk4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2luZy0wMDMtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsNCBAQAorVGhlcmUgYXJlIHR3byBkaXNhYmxlZCBmb3JtIGNvbnRyb2wgZWxlbWVudHMg
YmVsb3csIGJvdGggcmVxdWlyZWQgYW5kIHdpdGggc29tZSB2YWx1ZTogdmFsaWRpdHkudmFsdWVN
aXNzaW5nIHNob3VsZCBiZSBmYWxzZSBpbiBib3RoIGNhc2VzLgorCisgCitTVUNDRVNTCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5n
LTAwMy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlz
c2luZy0wMDMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZDkyZmZi
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRl
LXZhbHVlTWlzc2luZy0wMDMuaHRtbApAQCAtMCwwICsxLDI3IEBACis8aHRtbD4KKzxoZWFkPgor
PHRpdGxlPnJlcXVpcmVkIGFuZCB2YWx1ZU1pc3Npbmcgb24gZGlzYWJsZWQgZWxlbWVudHM8L3Rp
dGxlPgorPHNjcmlwdCBsYW5ndWFnZT0iSmF2YVNjcmlwdCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0
Ij4KKyAgICBmdW5jdGlvbiBsb2cobWVzc2FnZSkgeworICAgICAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiY29uc29sZSIpLmlubmVySFRNTCArPSAiPGxpPiIrbWVzc2FnZSsiPC9saT4iOwor
ICAgIH0KKworICAgIGZ1bmN0aW9uIHRlc3QoKSB7CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7CisKKyAgICAgICAgdiA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKCJ2aWN0aW0i
KTsKKworICAgICAgICBsb2coKCF2WzBdLnZhbGlkaXR5LnZhbHVlTWlzc2luZyAmJiAhdlsxXS52
YWxpZGl0eS52YWx1ZU1pc3NpbmcpID8gIlNVQ0NFU1MiIDogIkZBSUxVUkUiKTsKKyAgICB9Cis8
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0idGVzdCgpIj4KKzxwPlRoZXJlIGFyZSB0
d28gZGlzYWJsZWQgZm9ybSBjb250cm9sIGVsZW1lbnRzIGJlbG93LCBib3RoIHJlcXVpcmVkIGFu
ZCB3aXRoIHNvbWUgdmFsdWU6Cit2YWxpZGl0eS52YWx1ZU1pc3Npbmcgc2hvdWxkIGJlIGZhbHNl
IGluIGJvdGggY2FzZXMuPC9wPgorPGlucHV0IG5hbWU9InZpY3RpbSIgZGlzYWJsZWQgcmVxdWly
ZWQgLz4KKzx0ZXh0YXJlYSBuYW1lPSJ2aWN0aW0iIGRpc2FibGVkIHJlcXVpcmVkPjwvdGV4dGFy
ZWE+Cis8aHI+Cis8b2wgaWQ9ImNvbnNvbGUiPjwvb2w+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5n
LTAwNC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUt
dmFsdWVNaXNzaW5nLTAwNC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uMzEyN2NkZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9y
bXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3NpbmctMDA0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDQgQEAKK1RoZXJlIGFyZSB0d28gcmVhZG9ubHkgZm9ybSBjb250cm9sIGVsZW1lbnRzIGJlbG93
LCBib3RoIHJlcXVpcmVkIGFuZCB3aXRoIHNvbWUgdmFsdWU6IHZhbGlkaXR5LnZhbHVlTWlzc2lu
ZyBzaG91bGQgYmUgZmFsc2UgaW4gYm90aCBjYXNlcy4KKworIAorU1VDQ0VTUwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2luZy0wMDQu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3Npbmct
MDA0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTM2OWM1NAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1
ZU1pc3NpbmctMDA0Lmh0bWwKQEAgLTAsMCArMSwyNyBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRs
ZT5yZXF1aXJlZCBhbmQgdmFsdWVNaXNzaW5nIG9uIHJlYWRvbmx5IGVsZW1lbnRzPC90aXRsZT4K
KzxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Cisg
ICAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImNvbnNvbGUiKS5pbm5lckhUTUwgKz0gIjxsaT4iK21lc3NhZ2UrIjwvbGk+IjsKKyAgICB9
CisKKyAgICBmdW5jdGlvbiB0ZXN0KCkgeworICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQorICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OworCisgICAgICAgIHYgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgidmljdGltIik7CisK
KyAgICAgICAgbG9nKCghdlswXS52YWxpZGl0eS52YWx1ZU1pc3NpbmcgJiYgIXZbMV0udmFsaWRp
dHkudmFsdWVNaXNzaW5nKSA/ICJTVUNDRVNTIiA6ICJGQUlMVVJFIik7CisgICAgfQorPC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InRlc3QoKSI+Cis8cD5UaGVyZSBhcmUgdHdvIHJl
YWRvbmx5IGZvcm0gY29udHJvbCBlbGVtZW50cyBiZWxvdywgYm90aCByZXF1aXJlZCBhbmQgd2l0
aCBzb21lIHZhbHVlOgordmFsaWRpdHkudmFsdWVNaXNzaW5nIHNob3VsZCBiZSBmYWxzZSBpbiBi
b3RoIGNhc2VzLjwvcD4KKzxpbnB1dCBuYW1lPSJ2aWN0aW0iIHJlYWRvbmx5IHJlcXVpcmVkIC8+
Cis8dGV4dGFyZWEgbmFtZT0idmljdGltIiByZWFkb25seSByZXF1aXJlZD48L3RleHRhcmVhPgor
PGhyPgorPG9sIGlkPSJjb25zb2xlIj48L29sPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2luZy0wMDUt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVl
TWlzc2luZy0wMDUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjg4ODM4NWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1Zh
bGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwNS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw5IEBA
CitUaGVyZSdzIGEgbGlzdCBvZiBmb3JtIGNvbnRyb2wgZWxlbWVudHMgYmVsb3csIHJlcXVpcmVk
IGF0dHJpYnV0ZSBkb2VzIG5vdCBhcHBseSB0byB0aGVtOiB2YWxpZGl0eS52YWx1ZU1pc3Npbmcg
c2hvdWxkIGJlIGZhbHNlLgorCisgICAgCitTVUNDRVNTCitTVUNDRVNTCitTVUNDRVNTCitTVUND
RVNTCitTVUNDRVNTCitTVUNDRVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwNS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9m
b3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2luZy0wMDUuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi4wMWM1ZDIwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2luZy0wMDUuaHRtbApAQCAtMCww
ICsxLDMyIEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPnJlcXVpcmVkIGFuZCB2YWx1ZU1pc3Np
bmcgb24gdW5hY2NlcHRlZCBpbnB1dCB0eXBlczwvdGl0bGU+Cis8c2NyaXB0IGxhbmd1YWdlPSJK
YXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgIGZ1bmN0aW9uIGxvZyhtZXNz
YWdlKSB7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuaW5uZXJI
VE1MICs9ICI8bGk+IittZXNzYWdlKyI8L2xpPiI7CisgICAgfQorCisgICAgZnVuY3Rpb24gdGVz
dCgpIHsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgICAgICB2ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoInZpY3RpbSIpOworCisgICAgICAgIGZvciAoaSA9IDA7
IGkgPCB2Lmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgbG9nKCF2W2ldLnZhbGlkaXR5LnZhbHVl
TWlzc2luZyA/ICJTVUNDRVNTIiA6ICJGQUlMVVJFIik7CisgICAgfQorPC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keSBvbmxvYWQ9InRlc3QoKSI+Cis8cD5UaGVyZSdzIGEgbGlzdCBvZiBmb3JtIGNv
bnRyb2wgZWxlbWVudHMgYmVsb3csIHJlcXVpcmVkIGF0dHJpYnV0ZSBkb2VzIG5vdCBhcHBseSB0
byB0aGVtOgordmFsaWRpdHkudmFsdWVNaXNzaW5nIHNob3VsZCBiZSBmYWxzZS48L3A+Cis8aW5w
dXQgbmFtZT0idmljdGltIiB0eXBlPSJoaWRkZW4iIHJlcXVpcmVkIC8+Cis8aW5wdXQgbmFtZT0i
dmljdGltIiB0eXBlPSJyYW5nZSIgcmVxdWlyZWQgLz4KKzxpbnB1dCBuYW1lPSJ2aWN0aW0iIHR5
cGU9ImltYWdlIiByZXF1aXJlZCAvPgorPGlucHV0IG5hbWU9InZpY3RpbSIgdHlwZT0icmVzZXQi
IHJlcXVpcmVkIC8+Cis8aW5wdXQgbmFtZT0idmljdGltIiB0eXBlPSJidXR0b24iIHJlcXVpcmVk
IC8+Cis8aW5wdXQgbmFtZT0idmljdGltIiB0eXBlPSJzdWJtaXQiIHJlcXVpcmVkIC8+Cis8aHI+
Cis8b2wgaWQ9ImNvbnNvbGUiPjwvb2w+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwNi1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNz
aW5nLTAwNi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
OGQ1ZDI0OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRp
dHlTdGF0ZS12YWx1ZU1pc3NpbmctMDA2LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKK1Ro
ZXJlIGFyZSB0d28gY2hlY2tib3hlcyBiZWxvdywgYm90aCBhcmUgcmVxdWlyZWQsIG9ubHkgb25l
IGlzIGNoZWNrZWQuCisKKyAKK1NVQ0NFU1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3NpbmctMDA2Lmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwNi5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3NWQ4OWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwNi5odG1sCkBA
IC0wLDAgKzEsMjYgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+cmVxdWlyZWQgYW5kIHZhbHVl
TWlzc2luZyBvbiBjaGVja2JveGVzPC90aXRsZT4KKzxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3Jp
cHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpIHsK
KyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5pbm5lckhUTUwgKz0g
IjxsaT4iK21lc3NhZ2UrIjwvbGk+IjsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0KCkgewor
ICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgICAgIHYgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5TmFtZSgidmljdGltIik7CisKKyAgICAgICAgbG9nKCF2WzBdLnZhbGlkaXR5
LnZhbHVlTWlzc2luZyAmJiB2WzFdLnZhbGlkaXR5LnZhbHVlTWlzc2luZyA/ICJTVUNDRVNTIiA6
ICJGQUlMVVJFIik7CisgICAgfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InRl
c3QoKSI+Cis8cD5UaGVyZSBhcmUgdHdvIGNoZWNrYm94ZXMgYmVsb3csIGJvdGggYXJlIHJlcXVp
cmVkLCBvbmx5IG9uZSBpcyBjaGVja2VkLjwvcD4KKzxpbnB1dCBuYW1lPSJ2aWN0aW0iIHR5cGU9
ImNoZWNrYm94IiByZXF1aXJlZCBjaGVja2VkLz4KKzxpbnB1dCBuYW1lPSJ2aWN0aW0iIHR5cGU9
ImNoZWNrYm94IiByZXF1aXJlZCAvPgorPGhyPgorPG9sIGlkPSJjb25zb2xlIj48L29sPgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0
eVN0YXRlLXZhbHVlTWlzc2luZy0wMDctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9m
b3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2luZy0wMDctZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5ODZjNWMKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwNy1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSw0IEBACitUaGVyZSBhcmUgdHdvIHJhZGlvIGJ1dHRvbnMgYmVs
b3cgd2l0aCB0aGUgc2FtZSBuYW1lLCBvbmx5IG9uZSBpcyByZXF1aXJlZCAod2hpY2ggbWVhbnMg
dGhlIHdob2xlIGdyb3VwIGlzIHJlcXVpcmVkKSwgdGhlIG90aGVyIG9uZSBpcyBjaGVja2VkIGFu
ZCBsZWFkcyB0aGUgcmVxdWlyZWQgYXR0cmlidXRlIHRvIGJlIHNhdGlzZmllZDogbm8gbWlzc2lu
ZyB2YWx1ZS4KKworIAorU1VDQ0VTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2luZy0wMDcuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3NpbmctMDA3Lmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uMGJkNDRmYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3NpbmctMDA3Lmh0bWwKQEAgLTAs
MCArMSwyNiBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5yZXF1aXJlZCBhbmQgdmFsdWVNaXNz
aW5nIG9uIHJhZGlvPC90aXRsZT4KKzxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQiIHR5cGU9
InRleHQvamF2YXNjcmlwdCI+CisgICAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpIHsKKyAgICAgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5pbm5lckhUTUwgKz0gIjxsaT4iK21l
c3NhZ2UrIjwvbGk+IjsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0KCkgeworICAgICAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgICAgIHYgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5TmFtZSgidmljdGltIik7CisKKyAgICAgICAgbG9nKCF2WzBdLnZhbGlkaXR5LnZhbHVlTWlz
c2luZyA/ICJTVUNDRVNTIiA6ICJGQUlMVVJFIik7CisgICAgfQorPC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keSBvbmxvYWQ9InRlc3QoKSI+Cis8cD5UaGVyZSBhcmUgdHdvIHJhZGlvIGJ1dHRvbnMg
YmVsb3cgd2l0aCB0aGUgc2FtZSBuYW1lLCBvbmx5IG9uZSBpcyByZXF1aXJlZCAod2hpY2ggbWVh
bnMgdGhlIHdob2xlIGdyb3VwIGlzIHJlcXVpcmVkKSwgdGhlIG90aGVyIG9uZSBpcyBjaGVja2Vk
IGFuZCBsZWFkcyB0aGUgcmVxdWlyZWQgYXR0cmlidXRlIHRvIGJlIHNhdGlzZmllZDogbm8gbWlz
c2luZyB2YWx1ZS48L3A+Cis8aW5wdXQgbmFtZT0idmljdGltIiB0eXBlPSJyYWRpbyIgcmVxdWly
ZWQvPgorPGlucHV0IG5hbWU9InZpY3RpbSIgdHlwZT0icmFkaW8iIGNoZWNrZWQvPgorPGhyPgor
PG9sIGlkPSJjb25zb2xlIj48L29sPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2luZy0wMDgtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2lu
Zy0wMDgtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4
YzQ5MGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5
U3RhdGUtdmFsdWVNaXNzaW5nLTAwOC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACitUaGVy
ZSdzIGEgdXBsb2FkIGNvbnRyb2wgYmVsb3csIHdpdGggbm8gZmlsZSBzZWxlY3RlZDogbWlzc2lu
ZyB2YWx1ZS4KKworCitTVUNDRVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwOC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9m
b3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2luZy0wMDguaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi5mZWQyNGQ2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2luZy0wMDguaHRtbApAQCAtMCww
ICsxLDI1IEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPnJlcXVpcmVkIGFuZCB2YWx1ZU1pc3Np
bmcgb24gZmlsZSBjb250cm9sPC90aXRsZT4KKzxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQi
IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpIHsKKyAg
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5pbm5lckhUTUwgKz0gIjxs
aT4iK21lc3NhZ2UrIjwvbGk+IjsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0KCkgeworICAg
ICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgICAgIHYgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5TmFtZSgidmljdGltIik7CisKKyAgICAgICAgbG9nKHZbMF0udmFsaWRpdHkudmFs
dWVNaXNzaW5nID8gIlNVQ0NFU1MiIDogIkZBSUxVUkUiKTsKKyAgICB9Cis8L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5IG9ubG9hZD0idGVzdCgpIj4KKzxwPlRoZXJlJ3MgYSB1cGxvYWQgY29udHJv
bCBiZWxvdywgd2l0aCBubyBmaWxlIHNlbGVjdGVkOiBtaXNzaW5nIHZhbHVlLjwvcD4KKzxpbnB1
dCBuYW1lPSJ2aWN0aW0iIHR5cGU9ImZpbGUiIHJlcXVpcmVkLz4KKzxocj4KKzxvbCBpZD0iY29u
c29sZSI+PC9vbD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3NpbmctMDA5LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3NpbmctMDA5LWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYWNhY2RhCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVl
TWlzc2luZy0wMDktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1RoZXJlJ3MgYSBsaXN0
IG9mIGZvcm0gY29udHJvbCBlbGVtZW50cyBiZWxvdywgcmVxdWlyZWQgYXR0cmlidXRlIGFwcGxp
ZXMgdG8gdGhlbSBidXQgdGhleSdyZSBlbXB0eTogdmFsaWRpdHkudmFsdWVNaXNzaW5nIHNob3Vs
ZCBiZSB0cnVlLgorCisgICAgICAKK1NVQ0NFU1MKK1NVQ0NFU1MKK1NVQ0NFU1MKK1NVQ0NFU1MK
K1NVQ0NFU1MKK1NVQ0NFU1MKK1NVQ0NFU1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3NpbmctMDA5Lmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwOS5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkOTA1YTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwOS5odG1sCkBA
IC0wLDAgKzEsMzMgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+cmVxdWlyZWQgYW5kIHZhbHVl
TWlzc2luZyBvbiBuZXcgaW5wdXQgdHlwZXM8L3RpdGxlPgorPHNjcmlwdCBsYW5ndWFnZT0iSmF2
YVNjcmlwdCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICBmdW5jdGlvbiBsb2cobWVzc2Fn
ZSkgeworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmlubmVySFRN
TCArPSAiPGxpPiIrbWVzc2FnZSsiPC9saT4iOworICAgIH0KKworICAgIGZ1bmN0aW9uIHRlc3Qo
KSB7CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICAgICAgdiA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlOYW1lKCJ2aWN0aW0iKTsKKworICAgICAgICBmb3IgKGkgPSAwOyBp
IDwgdi5sZW5ndGg7IGkrKykKKyAgICAgICAgICAgIGxvZyh2W2ldLnZhbGlkaXR5LnZhbHVlTWlz
c2luZyA/ICJTVUNDRVNTIiA6ICJGQUlMVVJFIik7CisgICAgfQorPC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keSBvbmxvYWQ9InRlc3QoKSI+Cis8cD5UaGVyZSdzIGEgbGlzdCBvZiBmb3JtIGNvbnRy
b2wgZWxlbWVudHMgYmVsb3csIHJlcXVpcmVkIGF0dHJpYnV0ZSBhcHBsaWVzIHRvIHRoZW0gYnV0
IHRoZXkncmUgZW1wdHk6Cit2YWxpZGl0eS52YWx1ZU1pc3Npbmcgc2hvdWxkIGJlIHRydWUuPC9w
PgorPGlucHV0IG5hbWU9InZpY3RpbSIgdHlwZT0idGV4dCIgcmVxdWlyZWQgLz4KKzxpbnB1dCBu
YW1lPSJ2aWN0aW0iIHR5cGU9InNlYXJjaCIgcmVxdWlyZWQgLz4KKzxpbnB1dCBuYW1lPSJ2aWN0
aW0iIHR5cGU9InVybCIgcmVxdWlyZWQgLz4KKzxpbnB1dCBuYW1lPSJ2aWN0aW0iIHR5cGU9InRl
bGVwaG9uZSIgcmVxdWlyZWQgLz4KKzxpbnB1dCBuYW1lPSJ2aWN0aW0iIHR5cGU9ImVtYWlsIiBy
ZXF1aXJlZCAvPgorPGlucHV0IG5hbWU9InZpY3RpbSIgdHlwZT0icGFzc3dvcmQiIHJlcXVpcmVk
IC8+Cis8aW5wdXQgbmFtZT0idmljdGltIiB0eXBlPSJudW1iZXIiIHJlcXVpcmVkIC8+Cis8aHI+
Cis8b2wgaWQ9ImNvbnNvbGUiPjwvb2w+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3JlcXVpcmVkLWF0dHJpYnV0ZS0wMDEtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yZXF1aXJlZC1hdHRyaWJ1dGUtMDAxLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YjIwMTQzCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yZXF1aXJlZC1hdHRyaWJ1dGUtMDAx
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKK1RoZXJlIGFyZSB0d28gZm9ybSBjb250cm9s
IGVsZW1lbnRzIGJlbG93LCBib3RoIHJlcXVpcmVkLgorCisgCitTVUNDRVNTCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3JlcXVpcmVkLWF0dHJpYnV0ZS0wMDEuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvcmVxdWlyZWQtYXR0cmlidXRlLTAwMS5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJmMzRjMTYKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3JlcXVpcmVkLWF0dHJpYnV0ZS0wMDEuaHRtbApAQCAtMCww
ICsxLDI2IEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPnJlcXVpcmVkIGF0dHJpYnV0ZSBwcmVz
ZW5jZSB0ZXN0PC90aXRsZT4KKzxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQiIHR5cGU9InRl
eHQvamF2YXNjcmlwdCI+CisgICAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpIHsKKyAgICAgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5pbm5lckhUTUwgKz0gIjxsaT4iK21lc3Nh
Z2UrIjwvbGk+IjsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0KCkgeworICAgICAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgICAgIHYgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
TmFtZSgidmljdGltIik7CisKKyAgICAgICAgbG9nKCh2WzBdLnJlcXVpcmVkICYmIHZbMV0ucmVx
dWlyZWQpID8gIlNVQ0NFU1MiIDogIkZBSUxVUkUiKTsKKyAgICB9Cis8L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5IG9ubG9hZD0idGVzdCgpIj4KKzxwPlRoZXJlIGFyZSB0d28gZm9ybSBjb250cm9s
IGVsZW1lbnRzIGJlbG93LCBib3RoIHJlcXVpcmVkLjwvcD4KKzxpbnB1dCBuYW1lPSJ2aWN0aW0i
IHJlcXVpcmVkIC8+Cis8dGV4dGFyZWEgbmFtZT0idmljdGltIiByZXF1aXJlZD48L3RleHRhcmVh
PgorPGhyPgorPG9sIGlkPSJjb25zb2xlIj48L29sPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yZXF1aXJlZC1hdHRyaWJ1dGUtMDAyLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmVxdWlyZWQtYXR0cmlidXRlLTAwMi1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWM1YzBmZgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmVxdWlyZWQtYXR0cmli
dXRlLTAwMi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACitUaGVyZSBhcmUgdHdvIGZvcm0g
Y29udHJvbCBlbGVtZW50cyBiZWxvdywgYm90aCBvcHRpb25hbC4gVGhleSdyZSBzZXQgYXMgcmVx
dWlyZWQgdmlhIHJlcXVpcmVkIERPTSBhdHRyaWJ1dGUuCisKKyAKK1NVQ0NFU1MKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmVxdWlyZWQtYXR0cmlidXRlLTAwMi5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yZXF1aXJlZC1hdHRyaWJ1dGUtMDAyLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWE4NWU4OQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmVxdWlyZWQtYXR0cmlidXRlLTAwMi5odG1sCkBAIC0w
LDAgKzEsMzIgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+cmVxdWlyZWQgYXR0cmlidXRlIEpT
IHNldDwvdGl0bGU+Cis8c2NyaXB0IGxhbmd1YWdlPSJKYXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L2ph
dmFzY3JpcHQiPgorICAgIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKSB7CisgICAgICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuaW5uZXJIVE1MICs9ICI8bGk+IittZXNzYWdlKyI8
L2xpPiI7CisgICAgfQorCisgICAgZnVuY3Rpb24gdGVzdCgpIHsKKyAgICAgICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKKworICAgICAgICB2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUo
InZpY3RpbSIpOworCisgICAgICAgIGlmICh2WzBdLnJlcXVpcmVkID09IGZhbHNlICYmIHZbMV0u
cmVxdWlyZWQgPT0gZmFsc2UpIHsKKyAgICAgICAgICAgIHZbMF0ucmVxdWlyZWQgPSB0cnVlOwor
ICAgICAgICAgICAgdlsxXS5yZXF1aXJlZCA9IHRydWU7CisgICAgICAgICAgICBsb2cgKCh2WzBd
LnJlcXVpcmVkICYmIHZbMV0ucmVxdWlyZWQpID8gIlNVQ0NFU1MiIDogIkZBSUxVUkUiKTsKKyAg
ICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgICAgICBsb2coIkZBSUxVUkUiKTsKKyAgICB9
Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0idGVzdCgpIj4KKzxwPlRoZXJlIGFy
ZSB0d28gZm9ybSBjb250cm9sIGVsZW1lbnRzIGJlbG93LCBib3RoIG9wdGlvbmFsLiBUaGV5J3Jl
IHNldCBhcyByZXF1aXJlZCB2aWEgcmVxdWlyZWQgRE9NIGF0dHJpYnV0ZS48L3A+Cis8aW5wdXQg
bmFtZT0idmljdGltIiAvPgorPHRleHRhcmVhIG5hbWU9InZpY3RpbSI+PC90ZXh0YXJlYT4KKzxo
cj4KKzxvbCBpZD0iY29uc29sZSI+PC9vbD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODYxOWMyMS4uYmU5
ZDI4ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw1MCBAQAorMjAwOS0wNy0xNiAgTWljaGVsYW5nZWxvIERlIFNpbW9uZSAg
PG1pY2Rlc2ltQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU1
NTEKKyAgICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgdGhlICJyZXF1aXJlZCIgYXR0cmlidXRlLCB0
aGUgdmFsdWVNaXNzaW5nIGZsYWcKKyAgICAgICAgdG8gdGhlIFZhbGlkaXR5U3RhdGUgb2JqZWN0
IGFuZCA6cmVxdWlyZWQvOm9wdGlvbmFsIENTUyBwc2V1ZG9jbGFzc2VzLgorICAgICAgICBQYXJ0
IG9mIEhUTUw1IHNlYy4gRm9ybXMgc3BlY3MuCisgICAgICAgIGh0dHA6Ly93d3cud2hhdHdnLm9y
Zy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvbXVsdGlwYWdlL2Zvcm1zLmh0bWwjYXR0ci1p
bnB1dC1yZXF1aXJlZAorCisgICAgICAgIFRlc3RzOiBmYXN0L2Nzcy9wc2V1ZG8tcmVxdWlyZWQt
b3B0aW9uYWwtMDAxLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvY3NzL3BzZXVkby1yZXF1aXJl
ZC1vcHRpb25hbC0wMDIuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9jc3MvcHNldWRvLXJlcXVp
cmVkLW9wdGlvbmFsLTAwMy5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Nzcy9wc2V1ZG8tcmVx
dWlyZWQtb3B0aW9uYWwtMDA0Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvY3NzL3BzZXVkby1y
ZXF1aXJlZC1vcHRpb25hbC0wMDUuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9jc3MvcHNldWRv
LXJlcXVpcmVkLW9wdGlvbmFsLTAwNi5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Zvcm1zL1Zh
bGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwMS5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Zv
cm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwMi5odG1sCisgICAgICAgICAgICAgICBm
YXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwMy5odG1sCisgICAgICAgICAg
ICAgICBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwNC5odG1sCisgICAg
ICAgICAgICAgICBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwNS5odG1s
CisgICAgICAgICAgICAgICBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAw
Ni5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNz
aW5nLTAwNy5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFs
dWVNaXNzaW5nLTAwOC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3Rh
dGUtdmFsdWVNaXNzaW5nLTAwOS5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Zvcm1zL3JlcXVp
cmVkLWF0dHJpYnV0ZS0wMDEuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9mb3Jtcy9yZXF1aXJl
ZC1hdHRyaWJ1dGUtMDAyLmh0bWwKKworICAgICAgICAqIGNzcy9DU1NTZWxlY3Rvci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6ZXh0cmFjdFBzZXVkb1R5cGUpOiBwc2V1ZG9S
ZXF1aXJlZCwgcHNldWRvT3B0aW9uYWwKKyAgICAgICAgKiBjc3MvQ1NTU2VsZWN0b3IuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjopOiBkaXR0bworICAgICAgICAqIGNzcy9DU1NT
dHlsZVNlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OlNl
bGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rvcik6IGRpdHRvCisgICAgICAgICogaHRtbC9I
VE1MQXR0cmlidXRlTmFtZXMuaW46IG5ldyByZXF1aXJlZCBhdHRyaWJ1dGUKKyAgICAgICAgKiBo
dG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZv
cm1Db250cm9sRWxlbWVudDo6cmVxdWlyZWQpOiByZXF1aXJlZCBnZXR0ZXIKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnNldFJlcXVpcmVkKTogcmVxdWlyZWQgc2V0
dGVyCisgICAgICAgICogaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50Lmg6IG5ldyBtZXRob2Rz
IChnZXQvc2V0KSBkZWZpbml0aW9uCisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50Lmlk
bDogcmVxdWlyZWQgRE9NIGF0dHJpYnV0ZQorICAgICAgICAqIGh0bWwvSFRNTFRleHRBcmVhRWxl
bWVudC5pZGw6IGRpdHRvCisgICAgICAgICogaHRtbC9WYWxpZGl0eVN0YXRlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlZhbGlkaXR5U3RhdGU6OmlzQ29udHJvbFJlcXVpcmVkKTogY2hlY2tzIGlm
IGZvcm0gY29udHJvbHMKKyAgICAgICAgYXJlIHJlcXVpcmVkIChyZXF1aXJlZCBhcHBsaWVzKQor
ICAgICAgICAoV2ViQ29yZTo6VmFsaWRpdHlTdGF0ZTo6dmFsdWVNaXNzaW5nKTogdmFsaWRhdGlv
biBmbGFnCisgICAgICAgICogaHRtbC9WYWxpZGl0eVN0YXRlLmg6IG1ldGhvZHMgZGVmaW5pdGlv
bgorCiAyMDA5LTA3LTE2ICBTaGluaWNoaXJvIEhhbWFqaSAgPGhhbWFqaUBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgT2xpdmVyIEh1bnQuCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2Nzcy9DU1NTZWxlY3Rvci5jcHAgYi9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAKaW5kZXgg
NTQyOWMxNi4uODA5MTBhNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3Bw
CisrKyBiL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcApAQCAtMTE3LDYgKzExNyw4IEBAIHZv
aWQgQ1NTU2VsZWN0b3I6OmV4dHJhY3RQc2V1ZG9UeXBlKCkgY29uc3QKICAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKEF0b21pY1N0cmluZywgbm90U3RyLCAoIm5vdCgiKSk7CiAgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG9ubHlDaGlsZCwgKCJvbmx5LWNoaWxkIikpOwogICAg
IERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBvbmx5T2ZUeXBlLCAoIm9ubHktb2Yt
dHlwZSIpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgb3B0aW9uYWws
ICgib3B0aW9uYWwiKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHJl
cXVpcmVkLCAoInJlcXVpcmVkIikpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3Ry
aW5nLCByZXNpemVyLCAoIi13ZWJraXQtcmVzaXplciIpKTsKICAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKEF0b21pY1N0cmluZywgcm9vdCwgKCJyb290IikpOwogICAgIERFRklORV9TVEFUSUNfTE9D
QUwoQXRvbWljU3RyaW5nLCBzY3JvbGxiYXIsICgiLXdlYmtpdC1zY3JvbGxiYXIiKSk7CkBAIC0y
ODYsNiArMjg4LDEwIEBAIHZvaWQgQ1NTU2VsZWN0b3I6OmV4dHJhY3RQc2V1ZG9UeXBlKCkgY29u
c3QKICAgICAgICAgbV9wc2V1ZG9UeXBlID0gUHNldWRvU2luZ2xlQnV0dG9uOwogICAgIGVsc2Ug
aWYgKG1fdmFsdWUgPT0gbm9CdXR0b24pCiAgICAgICAgIG1fcHNldWRvVHlwZSA9IFBzZXVkb05v
QnV0dG9uOworICAgIGVsc2UgaWYgKG1fdmFsdWUgPT0gb3B0aW9uYWwpCisgICAgICAgIG1fcHNl
dWRvVHlwZSA9IFBzZXVkb09wdGlvbmFsOworICAgIGVsc2UgaWYgKG1fdmFsdWUgPT0gcmVxdWly
ZWQpCisgICAgICAgIG1fcHNldWRvVHlwZSA9IFBzZXVkb1JlcXVpcmVkOwogICAgIGVsc2UgaWYg
KG1fdmFsdWUgPT0gc2Nyb2xsYmFyQ29ybmVyKSB7CiAgICAgICAgIGVsZW1lbnQgPSB0cnVlOwog
ICAgICAgICBtX3BzZXVkb1R5cGUgPSBQc2V1ZG9TY3JvbGxiYXJDb3JuZXI7CmRpZmYgLS1naXQg
YS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oIGIvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaApp
bmRleCA1YjdmOWZhLi4xODI1MWZkIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rv
ci5oCisrKyBiL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmgKQEAgLTEyOCw2ICsxMjgsOCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBQc2V1ZG9GdWxsUGFnZU1lZGlhLAogICAg
ICAgICAgICAgUHNldWRvRGlzYWJsZWQsCiAgICAgICAgICAgICBQc2V1ZG9JbnB1dFBsYWNlaG9s
ZGVyLAorICAgICAgICAgICAgUHNldWRvT3B0aW9uYWwsCisgICAgICAgICAgICBQc2V1ZG9SZXF1
aXJlZCwKICAgICAgICAgICAgIFBzZXVkb1JlYWRPbmx5LAogICAgICAgICAgICAgUHNldWRvUmVh
ZFdyaXRlLAogICAgICAgICAgICAgUHNldWRvSW5kZXRlcm1pbmF0ZSwKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwIGIvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxl
Y3Rvci5jcHAKaW5kZXggNzgwNTg4My4uMWY1YzNiMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3Mv
Q1NTU3R5bGVTZWxlY3Rvci5jcHAKKysrIGIvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5j
cHAKQEAgLTkwLDYgKzkwLDcgQEAKICNpbmNsdWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgog
I2luY2x1ZGUgIlRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIlVzZXJB
Z2VudFN0eWxlU2hlZXRzLmgiCisjaW5jbHVkZSAiVmFsaWRpdHlTdGF0ZS5oIgogI2luY2x1ZGUg
IldlYktpdENTU0tleWZyYW1lUnVsZS5oIgogI2luY2x1ZGUgIldlYktpdENTU0tleWZyYW1lc1J1
bGUuaCIKICNpbmNsdWRlICJXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5oIgpAQCAtMjM3NSw2ICsy
Mzc2LDMwIEBAIGJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjpjaGVja09u
ZVNlbGVjdG9yKENTU1NlbGVjdG9yKiBzZWwsIEVsZW1lCiAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICByZXR1cm4gZS0+aXNUZXh0Rm9ybUNvbnRyb2wo
KSAmJiAhZS0+aXNSZWFkT25seUZvcm1Db250cm9sKCk7CiAgICAgICAgICAgICB9CisgICAgICAg
ICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9PcHRpb25hbDogeworICAgICAgICAgICAgICAg
IGlmICghZSB8fCAhZS0+aXNGb3JtQ29udHJvbEVsZW1lbnQoKSkKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICAgICAgaWYgKGUtPmhhc1RhZ05hbWUoYnV0
dG9uVGFnKSB8fCBlLT5oYXNUYWdOYW1lKHNlbGVjdFRhZykpCisgICAgICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKGUtPmhhc1RhZ05hbWUoaW5w
dXRUYWcpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gIXN0YXRpY19jYXN0PEhUTUxJbnB1
dEVsZW1lbnQqPihlKS0+dmFsaWRpdHkoKS0+aXNDb250cm9sUmVxdWlyZWQoKTsKKyAgICAgICAg
ICAgICAgICBlbHNlIGlmIChlLT5oYXNUYWdOYW1lKHRleHRhcmVhVGFnKSkKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuICFzdGF0aWNfY2FzdDxIVE1MVGV4dEFyZWFFbGVtZW50Kj4oZSktPnJl
cXVpcmVkKCk7CisKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb1JlcXVpcmVkOiB7CisgICAgICAgICAgICAg
ICAgaWYgKCFlIHx8ICFlLT5pc0Zvcm1Db250cm9sRWxlbWVudCgpKQorICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgICAgICBpZiAoZS0+aGFzVGFnTmFtZShp
bnB1dFRhZykpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MSW5w
dXRFbGVtZW50Kj4oZSktPnZhbGlkaXR5KCktPmlzQ29udHJvbFJlcXVpcmVkKCk7CisgICAgICAg
ICAgICAgICAgZWxzZSBpZiAoZS0+aGFzVGFnTmFtZSh0ZXh0YXJlYVRhZykpCisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MVGV4dEFyZWFFbGVtZW50Kj4oZSktPnJl
cXVpcmVkKCk7CisKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NoZWNrZWQ6IHsKICAgICAgICAgICAgICAg
ICBpZiAoIWUgfHwgIWUtPmlzRm9ybUNvbnRyb2xFbGVtZW50KCkpCiAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5p
biBiL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4KaW5kZXggYmQzN2I5Ni4uNmQ0
ZDNjYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgorKysg
Yi9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCkBAIC0xOTUsNiArMTk1LDcgQEAg
cHJvZ3Jlc3MKIHByb21wdAogcmVhZG9ubHkKIHJlbAorcmVxdWlyZWQKIHJlc3VsdHMKIHJldgog
cm9sZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3Bw
IGIvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCmluZGV4IDg3OTM4YWMu
LmU5MGE2ZTAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50
LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAgLTIw
NCw2ICsyMDQsMTYgQEAgdm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpzZXRBdXRvZm9jdXMo
Ym9vbCBiKQogICAgIHNldEF0dHJpYnV0ZShhdXRvZm9jdXNBdHRyLCBiID8gImF1dG9mb2N1cyIg
OiAwKTsKIH0KIAorYm9vbCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpyZXF1aXJlZCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIGhhc0F0dHJpYnV0ZShyZXF1aXJlZEF0dHIpOworfQorCit2b2lkIEhU
TUxGb3JtQ29udHJvbEVsZW1lbnQ6OnNldFJlcXVpcmVkKGJvb2wgYikKK3sKKyAgICBzZXRBdHRy
aWJ1dGUocmVxdWlyZWRBdHRyLCBiID8gInJlcXVpcmVkIiA6IDApOworfQorCiB2b2lkIEhUTUxG
b3JtQ29udHJvbEVsZW1lbnQ6OnJlY2FsY1N0eWxlKFN0eWxlQ2hhbmdlIGNoYW5nZSkKIHsKICAg
ICBIVE1MRWxlbWVudDo6cmVjYWxjU3R5bGUoY2hhbmdlKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
aHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmggYi9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250
cm9sRWxlbWVudC5oCmluZGV4IGEwM2ViMWEuLjhmNDg4ZDEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
aHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxGb3Jt
Q29udHJvbEVsZW1lbnQuaApAQCAtNzQsNiArNzQsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBi
b29sIGF1dG9mb2N1cygpIGNvbnN0OwogICAgIHZvaWQgc2V0QXV0b2ZvY3VzKGJvb2wpOwogCisg
ICAgdmlydHVhbCBib29sIHJlcXVpcmVkKCkgY29uc3Q7CisgICAgdm9pZCBzZXRSZXF1aXJlZChi
b29sKTsKKwogICAgIHZpcnR1YWwgdm9pZCByZWNhbGNTdHlsZShTdHlsZUNoYW5nZSk7CiAKICAg
ICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgZm9ybUNvbnRyb2xOYW1lKCkgY29uc3Q7CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5pZGwgYi9XZWJDb3JlL2h0
bWwvSFRNTElucHV0RWxlbWVudC5pZGwKaW5kZXggN2NkOTFiMC4uM2E0MTBkZiAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaWRsCisrKyBiL1dlYkNvcmUvaHRtbC9I
VE1MSW5wdXRFbGVtZW50LmlkbApAQCAtNDMsNiArNDMsNyBAQCBtb2R1bGUgaHRtbCB7CiAgICAg
ICAgICAgICAgICAgIGF0dHJpYnV0ZSBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmlu
ZyBuYW1lOwogICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nICAgICAgIHBsYWNl
aG9sZGVyOwogICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgYm9vbGVhbiAgICAgICAgIHJlYWRP
bmx5OworICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgYm9vbGVhbiAgICAgICAgIHJlcXVpcmVk
OwogI2lmIGRlZmluZWQoTEFOR1VBR0VfT0JKRUNUSVZFX0MpICYmIExBTkdVQUdFX09CSkVDVElW
RV9DCiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBbQ29udmVydFRvU3RyaW5nXSBET01TdHJp
bmcgc2l6ZTsgLy8gRE9NIGxldmVsIDIgY2hhbmdlZCB0aGlzIHRvIGEgbG9uZywgYnV0IG91ciBl
eGlzdGluZyBBUEkgaXMgYSBzdHJpbmcKICNlbHNlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwv
SFRNTFRleHRBcmVhRWxlbWVudC5pZGwgYi9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVu
dC5pZGwKaW5kZXggZjZhYzA1YS4uYmE4YTA2MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hU
TUxUZXh0QXJlYUVsZW1lbnQuaWRsCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVt
ZW50LmlkbApAQCAtMzYsNiArMzYsNyBAQCBtb2R1bGUgaHRtbCB7CiAgICAgICAgICAgICAgICAg
IGF0dHJpYnV0ZSAgYm9vbGVhbiAgICAgICAgICAgICAgYXV0b2ZvY3VzOwogICAgICAgICAgICAg
ICAgICBhdHRyaWJ1dGUgIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nICAgICAg
ICAgICAgbmFtZTsKICAgICAgICAgICAgICAgICAgYXR0cmlidXRlICBib29sZWFuICAgICAgICAg
ICAgICByZWFkT25seTsKKyAgICAgICAgICAgICAgICAgYXR0cmlidXRlICBib29sZWFuICAgICAg
ICAgICAgICByZXF1aXJlZDsKICAgICAgICAgICAgICAgICAgYXR0cmlidXRlICBsb25nICAgICAg
ICAgICAgICAgICByb3dzOwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgIERPTVN0cmluZyAg
ICAgICAgICAgIHR5cGU7CiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSAgW0NvbnZlcnROdWxs
VG9OdWxsU3RyaW5nXSBET01TdHJpbmcgICAgICAgICAgICB2YWx1ZTsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvaHRtbC9WYWxpZGl0eVN0YXRlLmNwcCBiL1dlYkNvcmUvaHRtbC9WYWxpZGl0eVN0YXRl
LmNwcAppbmRleCA4ZmY2MjljLi5iNjNjOTJhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvVmFs
aWRpdHlTdGF0ZS5jcHAKKysrIGIvV2ViQ29yZS9odG1sL1ZhbGlkaXR5U3RhdGUuY3BwCkBAIC0y
MiwxNiArMjIsODYgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlZhbGlkaXR5
U3RhdGUuaCIKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkZpbGVMaXN0LmgiCiAj
aW5jbHVkZSAiSFRNTEZvcm1Db250cm9sRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxJbnB1dEVs
ZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJIVE1MVGV4dEFyZWFF
bGVtZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAordXNpbmcgbmFtZXNwYWNlIEhUTUxO
YW1lczsKKwogVmFsaWRpdHlTdGF0ZTo6VmFsaWRpdHlTdGF0ZShIVE1MRm9ybUNvbnRyb2xFbGVt
ZW50KiBwYXJlbnQpCiAgICAgOiBtX2NvbnRyb2wocGFyZW50KQogewogICAgIEFTU0VSVChwYXJl
bnQpOwogfQogCitib29sIFZhbGlkaXR5U3RhdGU6OmlzQ29udHJvbFJlcXVpcmVkKCkKK3sKKyAg
ICBpZiAoIWNvbnRyb2woKS0+cmVxdWlyZWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgaWYgKGNvbnRyb2woKS0+aGFzVGFnTmFtZSh0ZXh0YXJlYVRhZykpCisgICAgICAgIHJldHVy
biB0cnVlOworCisgICAgaWYgKGNvbnRyb2woKS0+aGFzVGFnTmFtZShpbnB1dFRhZykpCisgICAg
ICAgIHN3aXRjaCAoc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KGNvbnRyb2woKSktPmlu
cHV0VHlwZSgpKSB7CisgICAgICAgICAgICBjYXNlIEhUTUxJbnB1dEVsZW1lbnQ6OkhJRERFTjoK
KyAgICAgICAgICAgIGNhc2UgSFRNTElucHV0RWxlbWVudDo6UkFOR0U6CisgICAgICAgICAgICBj
YXNlIEhUTUxJbnB1dEVsZW1lbnQ6OlNVQk1JVDoKKyAgICAgICAgICAgIGNhc2UgSFRNTElucHV0
RWxlbWVudDo6SU1BR0U6CisgICAgICAgICAgICBjYXNlIEhUTUxJbnB1dEVsZW1lbnQ6OlJFU0VU
OgorICAgICAgICAgICAgY2FzZSBIVE1MSW5wdXRFbGVtZW50OjpCVVRUT046CisgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29s
IFZhbGlkaXR5U3RhdGU6OnZhbHVlTWlzc2luZygpCit7CisgICAgaWYgKCFpc0NvbnRyb2xSZXF1
aXJlZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoY29udHJvbCgpLT5oYXNU
YWdOYW1lKGlucHV0VGFnKSkgeworICAgICAgICBIVE1MSW5wdXRFbGVtZW50KiBpID0gc3RhdGlj
X2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KGNvbnRyb2woKSk7CisKKyAgICAgICAgaWYgKGktPmRp
c2FibGVkKCkgfHwgaS0+cmVhZE9ubHkoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgICAgICBzd2l0Y2ggKGktPmlucHV0VHlwZSgpKSB7CisgICAgICAgICAgICBjYXNlIEhUTUxJ
bnB1dEVsZW1lbnQ6OlRFWFQ6CisgICAgICAgICAgICBjYXNlIEhUTUxJbnB1dEVsZW1lbnQ6OlNF
QVJDSDoKKyAgICAgICAgICAgIGNhc2UgSFRNTElucHV0RWxlbWVudDo6VVJMOgorICAgICAgICAg
ICAgY2FzZSBIVE1MSW5wdXRFbGVtZW50OjpURUxFUEhPTkU6CisgICAgICAgICAgICBjYXNlIEhU
TUxJbnB1dEVsZW1lbnQ6OkVNQUlMOgorICAgICAgICAgICAgY2FzZSBIVE1MSW5wdXRFbGVtZW50
OjpQQVNTV09SRDoKKyAgICAgICAgICAgIGNhc2UgSFRNTElucHV0RWxlbWVudDo6TlVNQkVSOgor
ICAgICAgICAgICAgICAgIHJldHVybiBpLT52YWx1ZSgpLmlzRW1wdHkoKTsKKyAgICAgICAgICAg
IGNhc2UgSFRNTElucHV0RWxlbWVudDo6RklMRToKKyAgICAgICAgICAgICAgICByZXR1cm4gaS0+
ZmlsZXMoKS0+aXNFbXB0eSgpOworICAgICAgICAgICAgY2FzZSBIVE1MSW5wdXRFbGVtZW50OjpD
SEVDS0JPWDoKKyAgICAgICAgICAgICAgICByZXR1cm4gIWktPmNoZWNrZWQoKTsKKyAgICAgICAg
ICAgIGNhc2UgSFRNTElucHV0RWxlbWVudDo6UkFESU86CisgICAgICAgICAgICAgICAgcmV0dXJu
ICFpLT5kb2N1bWVudCgpLT5jaGVja2VkUmFkaW9CdXR0b25zKCkuY2hlY2tlZEJ1dHRvbkZvckdy
b3VwKGktPm5hbWUoKSk7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChjb250cm9sKCktPmhhc1Rh
Z05hbWUodGV4dGFyZWFUYWcpKSB7CisgICAgICAgIEhUTUxUZXh0QXJlYUVsZW1lbnQqIHQgPSBz
dGF0aWNfY2FzdDxIVE1MVGV4dEFyZWFFbGVtZW50Kj4oY29udHJvbCgpKTsKKyAgICAgICAgcmV0
dXJuIHQtPnZhbHVlKCkuaXNFbXB0eSgpICYmICF0LT5kaXNhYmxlZCgpICYmICF0LT5yZWFkT25s
eSgpOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKwogYm9vbCBWYWxpZGl0eVN0YXRl
Ojp2YWxpZCgpCiB7CiAgICAgYm9vbCBzb21lRXJyb3IgPSB0eXBlTWlzbWF0Y2goKSB8fCBzdGVw
TWlzbWF0Y2goKSB8fCByYW5nZVVuZGVyZmxvdygpIHx8IHJhbmdlT3ZlcmZsb3coKSB8fApkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9odG1sL1ZhbGlkaXR5U3RhdGUuaCBiL1dlYkNvcmUvaHRtbC9WYWxp
ZGl0eVN0YXRlLmgKaW5kZXggYTAxMWY3YS4uMTU0MTVhNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9o
dG1sL1ZhbGlkaXR5U3RhdGUuaAorKysgYi9XZWJDb3JlL2h0bWwvVmFsaWRpdHlTdGF0ZS5oCkBA
IC0zOSw3ICszOSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgSFRNTEZvcm1D
b250cm9sRWxlbWVudCogY29udHJvbCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udHJvbDsgfQogCi0g
ICAgICAgIGJvb2wgdmFsdWVNaXNzaW5nKCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAgICAgLy8g
Q2hlY2tzIGlmIHRoZSByZXF1aXJlZCBhdHRyaWJ1dGUgKmFwcGxpZXMqIHRvIGNvbnRyb2wuCisg
ICAgICAgIGJvb2wgaXNDb250cm9sUmVxdWlyZWQoKTsKKworICAgICAgICBib29sIHZhbHVlTWlz
c2luZygpOwogICAgICAgICBib29sIHR5cGVNaXNtYXRjaCgpIHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgICAgIGJvb2wgcGF0dGVybk1pc21hdGNoKCkgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAg
Ym9vbCB0b29Mb25nKCkgeyByZXR1cm4gZmFsc2U7IH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>32945</attachid>
            <date>2009-07-17 09:20:51 -0700</date>
            <delta_ts>2009-07-17 09:52:25 -0700</delta_ts>
            <desc>Proposed patch, rev. 4</desc>
            <filename>25551.patch</filename>
            <type>text/plain</type>
            <size>46634</size>
            <attacher name="Michelangelo De Simone">michelangelo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2MzdiZGQzLi41MzhmOWJlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDggQEAKKzIwMDktMDct
MTcgIE1pY2hlbGFuZ2VsbyBEZSBTaW1vbmUgIDxtaWNkZXNpbUBnbWFpbC5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1NTUxCisgICAgICAgIFRlc3Qgc3VpdGUgZm9yIHRo
ZSByZXF1aXJlZCBhdHRyaWJ1dGUsIHRoZSB2YWx1ZU1pc3NpbmcgZmxhZyBhbmQgbmV3CisgICAg
ICAgIDpyZXF1aXJlZCBhbmQgOm9wdGlvbmFsIENTUyBwc2V1ZG9jbGFzc2VzLgorICAgICAgICBQ
YXJ0IG9mIHRoZSBIVE1MNSBzZWMuIEZvcm1zLgorICAgICAgICBodHRwOi8vd3d3LndoYXR3Zy5v
cmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS9mb3Jtcy5odG1sI2F0dHIt
aW5wdXQtcmVxdWlyZWQKKworICAgICAgICAqIGZhc3QvY3NzL3BzZXVkby1yZXF1aXJlZC1vcHRp
b25hbC0wMDEtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9wc2V1ZG8t
cmVxdWlyZWQtb3B0aW9uYWwtMDAxLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL3Bz
ZXVkby1yZXF1aXJlZC1vcHRpb25hbC0wMDItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2Nzcy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9uYWwtMDAyLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvY3NzL3BzZXVkby1yZXF1aXJlZC1vcHRpb25hbC0wMDMtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9uYWwtMDAz
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL3BzZXVkby1yZXF1aXJlZC1vcHRpb25h
bC0wMDQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9wc2V1ZG8tcmVx
dWlyZWQtb3B0aW9uYWwtMDA0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL3BzZXVk
by1yZXF1aXJlZC1vcHRpb25hbC0wMDUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2Nzcy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9uYWwtMDA1Lmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvY3NzL3BzZXVkby1yZXF1aXJlZC1vcHRpb25hbC0wMDYtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9uYWwtMDA2Lmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3Np
bmctMDAxLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9WYWxpZGl0
eVN0YXRlLXZhbHVlTWlzc2luZy0wMDEuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jt
cy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2luZy0wMDItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwMi5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAw
My1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvVmFsaWRpdHlTdGF0
ZS12YWx1ZU1pc3NpbmctMDAzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvVmFs
aWRpdHlTdGF0ZS12YWx1ZU1pc3NpbmctMDA0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2luZy0wMDQuaHRtbDogQWRkZWQu
CisgICAgICAgICogZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2luZy0wMDUtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFs
dWVNaXNzaW5nLTAwNS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL1ZhbGlkaXR5
U3RhdGUtdmFsdWVNaXNzaW5nLTAwNi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3NpbmctMDA2Lmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3NpbmctMDA3LWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlz
c2luZy0wMDcuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRl
LXZhbHVlTWlzc2luZy0wMDgtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zv
cm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwOC5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwOS1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3Npbmct
MDA5Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvcmVxdWlyZWQtYXR0cmlidXRl
LTAwMS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvcmVxdWlyZWQt
YXR0cmlidXRlLTAwMS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL3JlcXVpcmVk
LWF0dHJpYnV0ZS0wMDItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1z
L3JlcXVpcmVkLWF0dHJpYnV0ZS0wMDIuaHRtbDogQWRkZWQuCisKIDIwMDktMDctMTcgIEtlbm5l
dGggUm9oZGUgQ2hyaXN0aWFuc2VuICA8a2VubmV0aC5jaHJpc3RpYW5zZW5Ab3BlbmJvc3NhLm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvY3NzL3BzZXVkby1yZXF1aXJlZC1vcHRpb25hbC0wMDEtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvcHNldWRvLXJlcXVpcmVkLW9wdGlvbmFsLTAwMS1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTk2OTNjMgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3BzZXVkby1yZXF1aXJlZC1v
cHRpb25hbC0wMDEtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorQWxsIGNvbnRyb2xzIHNo
b3VsZCBoYXZlIGEgZ3JlZW4gYmFja2dyb3VuZC4KKworIAorU1VDQ0VTUworU1VDQ0VTUwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvcHNldWRvLXJlcXVpcmVkLW9wdGlvbmFsLTAw
MS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvcHNldWRvLXJlcXVpcmVkLW9wdGlvbmFsLTAw
MS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4ODIwOTUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9u
YWwtMDAxLmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5yZXF1
aXJlZC9vcHRpb25hbCBDU1MgcHNldWRvY2xhc3NlczwvdGl0bGU+Cis8c3R5bGU+CisgaW5wdXQ6
cmVxdWlyZWQgeyBiYWNrZ3JvdW5kOiBsaW1lOyB9CisgdGV4dGFyZWE6cmVxdWlyZWQgeyBiYWNr
Z3JvdW5kOiBsaW1lOyB9CisgaW5wdXQgeyBiYWNrZ3JvdW5kOiByZWQ7IH0KKyB0ZXh0YXJlYSB7
IGJhY2tncm91bmQ6IHJlZDsgfQorIGlucHV0Om9wdGlvbmFsIHsgYmFja2dyb3VuZDogcmVkOyB9
CisgdGV4dGFyZWE6b3B0aW9uYWwgeyBiYWNrZ3JvdW5kOiByZWQ7IH0KKzwvc3R5bGU+Cis8c2Ny
aXB0IGxhbmd1YWdlPSJKYXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgIGZ1
bmN0aW9uIGxvZyhtZXNzYWdlKSB7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJj
b25zb2xlIikuaW5uZXJIVE1MICs9ICI8bGk+IittZXNzYWdlKyI8L2xpPiI7CisgICAgfQorCisg
ICAgZnVuY3Rpb24gdGVzdCgpIHsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKwor
ICAgICAgICB2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoInZpY3RpbSIpOworCisgICAg
ICAgIGZvciAoaSA9IDA7IGkgPCB2Lmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgaWYgKGRvY3Vt
ZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUodltpXSwgbnVsbCkuZ2V0UHJvcGVydHlW
YWx1ZSgnYmFja2dyb3VuZC1jb2xvcicpID09ICJyZ2IoMCwgMjU1LCAwKSIpCisgICAgICAgICAg
ICAgICAgbG9nKCJTVUNDRVNTIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
bG9nKCJGQUlMVVJFIik7CisgICAgfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9
InRlc3QoKSI+Cis8cD5BbGwgY29udHJvbHMgc2hvdWxkIGhhdmUgYSBncmVlbiBiYWNrZ3JvdW5k
LjwvcD4KKzxpbnB1dCBuYW1lPSJ2aWN0aW0iIHJlcXVpcmVkIC8+Cis8dGV4dGFyZWEgbmFtZT0i
dmljdGltIiByZXF1aXJlZCAvPjwvdGV4dGFyZWE+Cis8aHI+Cis8b2wgaWQ9ImNvbnNvbGUiPjwv
b2w+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9w
c2V1ZG8tcmVxdWlyZWQtb3B0aW9uYWwtMDAyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zh
c3QvY3NzL3BzZXVkby1yZXF1aXJlZC1vcHRpb25hbC0wMDItZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5NjkzYzIKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2Nzcy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9uYWwtMDAyLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDUgQEAKK0FsbCBjb250cm9scyBzaG91bGQgaGF2ZSBhIGdyZWVuIGJh
Y2tncm91bmQuCisKKyAKK1NVQ0NFU1MKK1NVQ0NFU1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvY3NzL3BzZXVkby1yZXF1aXJlZC1vcHRpb25hbC0wMDIuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvY3NzL3BzZXVkby1yZXF1aXJlZC1vcHRpb25hbC0wMDIuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi40MTM2MDQwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9jc3MvcHNldWRvLXJlcXVpcmVkLW9wdGlvbmFsLTAwMi5odG1sCkBAIC0wLDAg
KzEsMzYgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+cmVxdWlyZWQvb3B0aW9uYWwgQ1NTIHBz
ZXVkb2NsYXNzZXMgcGFydCAyPC90aXRsZT4KKzxzdHlsZT4KKyBpbnB1dDpvcHRpb25hbCB7IGJh
Y2tncm91bmQ6IGxpbWU7IH0KKyB0ZXh0YXJlYTpvcHRpb25hbCB7IGJhY2tncm91bmQ6IGxpbWU7
IH0KKyBpbnB1dCB7IGJhY2tncm91bmQ6IHJlZDsgfQorIHRleHRhcmVhIHsgYmFja2dyb3VuZDog
cmVkOyB9Cis8L3N0eWxlPgorPHNjcmlwdCBsYW5ndWFnZT0iSmF2YVNjcmlwdCIgdHlwZT0idGV4
dC9qYXZhc2NyaXB0Ij4KKyAgICBmdW5jdGlvbiBsb2cobWVzc2FnZSkgeworICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmlubmVySFRNTCArPSAiPGxpPiIrbWVzc2Fn
ZSsiPC9saT4iOworICAgIH0KKworICAgIGZ1bmN0aW9uIHRlc3QoKSB7CisgICAgICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICAgICAgdiA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlO
YW1lKCJ2aWN0aW0iKTsKKworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdi5sZW5ndGg7IGkrKykK
KyAgICAgICAgICAgIGlmIChkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHZb
aV0sIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JhY2tncm91bmQtY29sb3InKSA9PSAicmdiKDAs
IDI1NSwgMCkiKQorICAgICAgICAgICAgICAgIGxvZygiU1VDQ0VTUyIpOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIGxvZygiRkFJTFVSRSIpOworICAgIH0KKzwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgorPHA+QWxsIGNvbnRyb2xzIHNob3VsZCBo
YXZlIGEgZ3JlZW4gYmFja2dyb3VuZC48L3A+Cis8aW5wdXQgbmFtZT0idmljdGltIi8+Cis8dGV4
dGFyZWEgbmFtZT0idmljdGltIiAvPjwvdGV4dGFyZWE+Cis8aHI+Cis8b2wgaWQ9ImNvbnNvbGUi
Pjwvb2w+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nz
cy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9uYWwtMDAzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2Zhc3QvY3NzL3BzZXVkby1yZXF1aXJlZC1vcHRpb25hbC0wMDMtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwZGVmZjAKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9uYWwtMDAzLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDYgQEAKK0FsbCBjb250cm9scyBzaG91bGQgaGF2ZSBhIGdyZWVu
IGJhY2tncm91bmQuCisKKyAgCitTVUNDRVNTCitTVUNDRVNTCitTVUNDRVNTCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9uYWwtMDAzLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9uYWwtMDAzLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTk3YjFhMwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3BzZXVkby1yZXF1aXJlZC1vcHRpb25hbC0wMDMu
aHRtbApAQCAtMCwwICsxLDM3IEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPnJlcXVpcmVkL29w
dGlvbmFsIENTUyBwc2V1ZG9jbGFzc2VzIHBhcnQgMzwvdGl0bGU+Cis8c3R5bGU+CisgaW5wdXQ6
cmVxdWlyZWQgeyBiYWNrZ3JvdW5kOiBsaW1lOyB9CisgdGV4dGFyZWE6cmVxdWlyZWQgeyBiYWNr
Z3JvdW5kOiBsaW1lOyB9CisgaW5wdXQgeyBiYWNrZ3JvdW5kOiByZWQ7IH0KKyB0ZXh0YXJlYSB7
IGJhY2tncm91bmQ6IHJlZDsgfQorPC9zdHlsZT4KKzxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3Jp
cHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpIHsK
KyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5pbm5lckhUTUwgKz0g
IjxsaT4iK21lc3NhZ2UrIjwvbGk+IjsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0KCkgewor
ICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgICAgIHYgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5TmFtZSgidmljdGltIik7CisKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IHYu
bGVuZ3RoOyBpKyspCisgICAgICAgICAgICBpZiAoZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29t
cHV0ZWRTdHlsZSh2W2ldLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdiYWNrZ3JvdW5kLWNvbG9y
JykgPT0gInJnYigwLCAyNTUsIDApIikKKyAgICAgICAgICAgICAgICBsb2coIlNVQ0NFU1MiKTsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBsb2coIkZBSUxVUkUiKTsKKyAgICB9
Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0idGVzdCgpIj4KKzxwPkFsbCBjb250
cm9scyBzaG91bGQgaGF2ZSBhIGdyZWVuIGJhY2tncm91bmQuPC9wPgorPGlucHV0IG5hbWU9InZp
Y3RpbSIgcmVxdWlyZWQgLz4KKzx0ZXh0YXJlYSBuYW1lPSJ2aWN0aW0iIHJlcXVpcmVkIGRpc2Fi
bGVkLz48L3RleHRhcmVhPgorPHRleHRhcmVhIG5hbWU9InZpY3RpbSIgcmVxdWlyZWQgcmVhZG9u
bHkvPjwvdGV4dGFyZWE+Cis8aHI+Cis8b2wgaWQ9ImNvbnNvbGUiPjwvb2w+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9wc2V1ZG8tcmVxdWlyZWQt
b3B0aW9uYWwtMDA0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3BzZXVkby1y
ZXF1aXJlZC1vcHRpb25hbC0wMDQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLmE2MWQxMzQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2Nzcy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9uYWwtMDA0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDggQEAKK0FsbCBjb250cm9scyBzaG91bGQgaGF2ZSBhIGdyZWVuIGJhY2tncm91bmQuCisKK0xv
cmVtIGlwc3VtICAgIAorU1VDQ0VTUworU1VDQ0VTUworU1VDQ0VTUworU1VDQ0VTUworU1VDQ0VT
UwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvcHNldWRvLXJlcXVpcmVkLW9wdGlv
bmFsLTAwNC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvcHNldWRvLXJlcXVpcmVkLW9wdGlv
bmFsLTAwNC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2NWEyNWQK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9wc2V1ZG8tcmVxdWlyZWQt
b3B0aW9uYWwtMDA0Lmh0bWwKQEAgLTAsMCArMSw0NyBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRs
ZT5yZXF1aXJlZC9vcHRpb25hbCBDU1MgcHNldWRvY2xhc3NlcyBwYXJ0IDQ8L3RpdGxlPgorPHN0
eWxlPgorIGJ1dHRvbjpvcHRpb25hbCB7IGJhY2tncm91bmQ6IGxpbWU7IH0KKyBpbnB1dDpvcHRp
b25hbCB7IGJhY2tncm91bmQ6IGxpbWU7IH0KKyBzZWxlY3Q6b3B0aW9uYWwgeyBiYWNrZ3JvdW5k
OiBsaW1lOyB9CisgdGV4dGFyZWE6b3B0aW9uYWwgeyBiYWNrZ3JvdW5kOiBsaW1lOyB9CisgYnV0
dG9uIHsgYmFja2dyb3VuZDogcmVkOyB9CisgaW5wdXQgeyBiYWNrZ3JvdW5kOiByZWQ7IH0KKyBz
ZWxlY3QgeyBiYWNrZ3JvdW5kOiByZWQ7IH0KKyB0ZXh0YXJlYSB7IGJhY2tncm91bmQ6IHJlZDsg
fQorIGJ1dHRvbjpyZXF1aXJlZCB7IGJhY2tncm91bmQ6IHJlZDsgfQorIGlucHV0OnJlcXVpcmVk
IHsgYmFja2dyb3VuZDogcmVkOyB9Cisgc2VsZWN0OnJlcXVpcmVkIHsgYmFja2dyb3VuZDogcmVk
OyB9CisgdGV4dGFyZWE6cmVxdWlyZWQgeyBiYWNrZ3JvdW5kOiByZWQ7IH0KKzwvc3R5bGU+Cis8
c2NyaXB0IGxhbmd1YWdlPSJKYXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAg
IGZ1bmN0aW9uIGxvZyhtZXNzYWdlKSB7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJjb25zb2xlIikuaW5uZXJIVE1MICs9ICI8bGk+IittZXNzYWdlKyI8L2xpPiI7CisgICAgfQor
CisgICAgZnVuY3Rpb24gdGVzdCgpIHsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
KworICAgICAgICB2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoInZpY3RpbSIpOworCisg
ICAgICAgIGZvciAoaSA9IDA7IGkgPCB2Lmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgaWYgKGRv
Y3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUodltpXSwgbnVsbCkuZ2V0UHJvcGVy
dHlWYWx1ZSgnYmFja2dyb3VuZC1jb2xvcicpID09ICJyZ2IoMCwgMjU1LCAwKSIpCisgICAgICAg
ICAgICAgICAgbG9nKCJTVUNDRVNTIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgbG9nKCJGQUlMVVJFIik7CisgICAgfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxv
YWQ9InRlc3QoKSI+Cis8cD5BbGwgY29udHJvbHMgc2hvdWxkIGhhdmUgYSBncmVlbiBiYWNrZ3Jv
dW5kLjwvcD4KKzxidXR0b24gdHlwZT0iYnV0dG9uIiBuYW1lPSJ2aWN0aW0iPkxvcmVtIGlwc3Vt
PC9idXR0b24+Cis8aW5wdXQgbmFtZT0idmljdGltIiBkaXNhYmxlZC8+Cis8aW5wdXQgdHlwZT0i
YnV0dG9uIiBuYW1lPSJ2aWN0aW0iLz4KKzxzZWxlY3QgbmFtZT0idmljdGltIj48L3NlbGVjdD4K
Kzx0ZXh0YXJlYSBuYW1lPSJ2aWN0aW0iPjwvdGV4dGFyZWE+Cis8aHI+Cis8b2wgaWQ9ImNvbnNv
bGUiPjwvb2w+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2Nzcy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9uYWwtMDA1LWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2Zhc3QvY3NzL3BzZXVkby1yZXF1aXJlZC1vcHRpb25hbC0wMDUtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzZjM2NGMKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9uYWwtMDA1LWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDggQEAKK0FsbCBjb250cm9scyBzaG91bGQgaGF2ZSBhIGdy
ZWVuIGJhY2tncm91bmQuCisKKyAgICAKK1NVQ0NFU1MKK1NVQ0NFU1MKK1NVQ0NFU1MKK1NVQ0NF
U1MKK1NVQ0NFU1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL3BzZXVkby1yZXF1
aXJlZC1vcHRpb25hbC0wMDUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3BzZXVkby1yZXF1
aXJlZC1vcHRpb25hbC0wMDUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li4yNWFiNDQ1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvcHNldWRv
LXJlcXVpcmVkLW9wdGlvbmFsLTAwNS5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzxodG1sPgorPGhl
YWQ+Cis8dGl0bGU+cmVxdWlyZWQvb3B0aW9uYWwgQ1NTIHBzZXVkb2NsYXNzZXMgcGFydCA1PC90
aXRsZT4KKzxzdHlsZT4KKyBpbnB1dDpvcHRpb25hbCB7IGJhY2tncm91bmQ6IGxpbWU7IH0KKyBp
bnB1dCB7IGJhY2tncm91bmQ6IHJlZDsgfQorIGlucHV0OnJlcXVpcmVkIHsgYmFja2dyb3VuZDog
cmVkOyB9Cis8L3N0eWxlPgorPHNjcmlwdCBsYW5ndWFnZT0iSmF2YVNjcmlwdCIgdHlwZT0idGV4
dC9qYXZhc2NyaXB0Ij4KKyAgICBmdW5jdGlvbiBsb2cobWVzc2FnZSkgeworICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmlubmVySFRNTCArPSAiPGxpPiIrbWVzc2Fn
ZSsiPC9saT4iOworICAgIH0KKworICAgIGZ1bmN0aW9uIHRlc3QoKSB7CisgICAgICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICAgICAgdiA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlO
YW1lKCJ2aWN0aW0iKTsKKworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdi5sZW5ndGg7IGkrKykK
KyAgICAgICAgICAgIGlmIChkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHZb
aV0sIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JhY2tncm91bmQtY29sb3InKSA9PSAicmdiKDAs
IDI1NSwgMCkiKQorICAgICAgICAgICAgICAgIGxvZygiU1VDQ0VTUyIpOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIGxvZygiRkFJTFVSRSIpOworICAgIH0KKzwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgorPHA+QWxsIGNvbnRyb2xzIHNob3VsZCBo
YXZlIGEgZ3JlZW4gYmFja2dyb3VuZC48L3A+Cis8aW5wdXQgdHlwZT0icmFuZ2UiIG5hbWU9InZp
Y3RpbSIgcmVxdWlyZWQvPgorPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0idmljdGltIiByZXF1
aXJlZC8+Cis8aW5wdXQgdHlwZT0iaW1hZ2UiIG5hbWU9InZpY3RpbSIgcmVxdWlyZWQvPgorPGlu
cHV0IHR5cGU9InJlc2V0IiBuYW1lPSJ2aWN0aW0iIHJlcXVpcmVkLz4KKzxpbnB1dCB0eXBlPSJi
dXR0b24iIG5hbWU9InZpY3RpbSIgcmVxdWlyZWQvPgorPGhyPgorPG9sIGlkPSJjb25zb2xlIj48
L29sPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3Mv
cHNldWRvLXJlcXVpcmVkLW9wdGlvbmFsLTAwNi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9m
YXN0L2Nzcy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9uYWwtMDA2LWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMzg4MzdlCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9jc3MvcHNldWRvLXJlcXVpcmVkLW9wdGlvbmFsLTAwNi1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxMyBAQAorQWxsIGNvbnRyb2xzIHNob3VsZCBoYXZlIGEgZ3JlZW4g
YmFja2dyb3VuZC4KKworICAgICAgICAgCitTVUNDRVNTCitTVUNDRVNTCitTVUNDRVNTCitTVUND
RVNTCitTVUNDRVNTCitTVUNDRVNTCitTVUNDRVNTCitTVUNDRVNTCitTVUNDRVNTCitTVUNDRVNT
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9u
YWwtMDA2Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9u
YWwtMDA2Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjNjY2VmYwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3BzZXVkby1yZXF1aXJlZC1v
cHRpb25hbC0wMDYuaHRtbApAQCAtMCwwICsxLDQ0IEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxl
PnJlcXVpcmVkL29wdGlvbmFsIENTUyBwc2V1ZG9jbGFzc2VzIHBhcnQgNjwvdGl0bGU+Cis8c3R5
bGU+CisgaW5wdXQ6b3B0aW9uYWwgeyBiYWNrZ3JvdW5kOiByZWQ7IH0KKyBpbnB1dCB7IGJhY2tn
cm91bmQ6IHJlZDsgfQorIGlucHV0OnJlcXVpcmVkIHsgYmFja2dyb3VuZDogbGltZTsgfQorPC9z
dHlsZT4KKzxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlw
dCI+CisgICAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImNvbnNvbGUiKS5pbm5lckhUTUwgKz0gIjxsaT4iK21lc3NhZ2UrIjwvbGk+IjsK
KyAgICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0KCkgeworICAgICAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOworCisgICAgICAgIHYgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgidmljdGlt
Iik7CisKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IHYubGVuZ3RoOyBpKyspCisgICAgICAgICAg
ICBpZiAoZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZSh2W2ldLCBudWxsKS5n
ZXRQcm9wZXJ0eVZhbHVlKCdiYWNrZ3JvdW5kLWNvbG9yJykgPT0gInJnYigwLCAyNTUsIDApIikK
KyAgICAgICAgICAgICAgICBsb2coIlNVQ0NFU1MiKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICBsb2coIkZBSUxVUkUiKTsKKyAgICB9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5IG9ubG9hZD0idGVzdCgpIj4KKzxwPkFsbCBjb250cm9scyBzaG91bGQgaGF2ZSBhIGdyZWVu
IGJhY2tncm91bmQuPC9wPgorPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InZpY3RpbSIgcmVxdWly
ZWQvPgorPGlucHV0IHR5cGU9InBhc3N3b3JkIiBuYW1lPSJ2aWN0aW0iIHJlcXVpcmVkLz4KKzxp
bnB1dCB0eXBlPSJzZWFyY2giIG5hbWU9InZpY3RpbSIgcmVxdWlyZWQvPgorPGlucHV0IHR5cGU9
InVybCIgbmFtZT0idmljdGltIiByZXF1aXJlZC8+Cis8aW5wdXQgdHlwZT0idGVsZXBob25lIiBu
YW1lPSJ2aWN0aW0iIHJlcXVpcmVkLz4KKzxpbnB1dCB0eXBlPSJlbWFpbCIgbmFtZT0idmljdGlt
IiByZXF1aXJlZC8+Cis8aW5wdXQgdHlwZT0ibnVtYmVyIiBuYW1lPSJ2aWN0aW0iIHJlcXVpcmVk
Lz4KKzxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0idmljdGltIiByZXF1aXJlZC8+Cis8aW5w
dXQgdHlwZT0icmFkaW8iIG5hbWU9InZpY3RpbSIgcmVxdWlyZWQvPgorPGlucHV0IHR5cGU9ImZp
bGUiIG5hbWU9InZpY3RpbSIgcmVxdWlyZWQvPgorCis8aHI+Cis8b2wgaWQ9ImNvbnNvbGUiPjwv
b2w+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwMS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwMS1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjA2OWE3NAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3Npbmct
MDAxLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKK1RoZXJlIGFyZSB0d28gZm9ybSBjb250
cm9sIGVsZW1lbnRzIGJlbG93LCBib3RoIHJlcXVpcmVkIGFuZCBibGFuazogdmFsaWRpdHkudmFs
dWVNaXNzaW5nIHNob3VsZCBiZSB0cnVlIGluIGJvdGggY2FzZXMuCisKKyAKK1NVQ0NFU1MKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3Np
bmctMDAxLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVN
aXNzaW5nLTAwMS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRjODg4
NzkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3Rh
dGUtdmFsdWVNaXNzaW5nLTAwMS5odG1sCkBAIC0wLDAgKzEsMjcgQEAKKzxodG1sPgorPGhlYWQ+
Cis8dGl0bGU+cmVxdWlyZWQgYW5kIGJhc2ljIHZhbHVlTWlzc2luZzwvdGl0bGU+Cis8c2NyaXB0
IGxhbmd1YWdlPSJKYXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgIGZ1bmN0
aW9uIGxvZyhtZXNzYWdlKSB7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25z
b2xlIikuaW5uZXJIVE1MICs9ICI8bGk+IittZXNzYWdlKyI8L2xpPiI7CisgICAgfQorCisgICAg
ZnVuY3Rpb24gdGVzdCgpIHsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAg
ICAgICB2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoInZpY3RpbSIpOworCisgICAgICAg
IGxvZygodlswXS52YWxpZGl0eS52YWx1ZU1pc3NpbmcgJiYgdlsxXS52YWxpZGl0eS52YWx1ZU1p
c3NpbmcpID8gIlNVQ0NFU1MiIDogIkZBSUxVUkUiKTsKKyAgICB9Cis8L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5IG9ubG9hZD0idGVzdCgpIj4KKzxwPlRoZXJlIGFyZSB0d28gZm9ybSBjb250cm9s
IGVsZW1lbnRzIGJlbG93LCBib3RoIHJlcXVpcmVkIGFuZCBibGFuazoKK3ZhbGlkaXR5LnZhbHVl
TWlzc2luZyBzaG91bGQgYmUgdHJ1ZSBpbiBib3RoIGNhc2VzLjwvcD4KKzxpbnB1dCBuYW1lPSJ2
aWN0aW0iIHJlcXVpcmVkLz4KKzx0ZXh0YXJlYSBuYW1lPSJ2aWN0aW0iIHJlcXVpcmVkPjwvdGV4
dGFyZWE+Cis8aHI+Cis8b2wgaWQ9ImNvbnNvbGUiPjwvb2w+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNz
aW5nLTAwMi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3Rh
dGUtdmFsdWVNaXNzaW5nLTAwMi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uMzYwNjliOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3NpbmctMDAyLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDQgQEAKK1RoZXJlIGFyZSB0d28gZm9ybSBjb250cm9sIGVsZW1lbnRzIGJlbG93LCBib3Ro
IHJlcXVpcmVkIGFuZCB3aXRoIHNvbWUgdmFsdWU6IHZhbGlkaXR5LnZhbHVlTWlzc2luZyBzaG91
bGQgYmUgZmFsc2UgaW4gYm90aCBjYXNlcy4KKworIAorU1VDQ0VTUwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2luZy0wMDIuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3NpbmctMDAyLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmYwNmY5ZgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3Np
bmctMDAyLmh0bWwKQEAgLTAsMCArMSwyNyBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5yZXF1
aXJlZCBhbmQgYmFzaWMgdmFsdWVNaXNzaW5nIDI8L3RpdGxlPgorPHNjcmlwdCBsYW5ndWFnZT0i
SmF2YVNjcmlwdCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICBmdW5jdGlvbiBsb2cobWVz
c2FnZSkgeworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmlubmVy
SFRNTCArPSAiPGxpPiIrbWVzc2FnZSsiPC9saT4iOworICAgIH0KKworICAgIGZ1bmN0aW9uIHRl
c3QoKSB7CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICAgICAgdiA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKCJ2aWN0aW0iKTsKKworICAgICAgICBsb2coKCF2WzBd
LnZhbGlkaXR5LnZhbHVlTWlzc2luZyAmJiAhdlsxXS52YWxpZGl0eS52YWx1ZU1pc3NpbmcpID8g
IlNVQ0NFU1MiIDogIkZBSUxVUkUiKTsKKyAgICB9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
IG9ubG9hZD0idGVzdCgpIj4KKzxwPlRoZXJlIGFyZSB0d28gZm9ybSBjb250cm9sIGVsZW1lbnRz
IGJlbG93LCBib3RoIHJlcXVpcmVkIGFuZCB3aXRoIHNvbWUgdmFsdWU6Cit2YWxpZGl0eS52YWx1
ZU1pc3Npbmcgc2hvdWxkIGJlIGZhbHNlIGluIGJvdGggY2FzZXMuPC9wPgorPGlucHV0IG5hbWU9
InZpY3RpbSIgdmFsdWU9InNvbWV0aGluZyIgcmVxdWlyZWQvPgorPHRleHRhcmVhIG5hbWU9InZp
Y3RpbSIgcmVxdWlyZWQ+c29tZXRoaW5nPC90ZXh0YXJlYT4KKzxocj4KKzxvbCBpZD0iY29uc29s
ZSI+PC9vbD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3NpbmctMDAzLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3NpbmctMDAzLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZmUzMzk4Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlz
c2luZy0wMDMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorVGhlcmUgYXJlIHR3byBkaXNh
YmxlZCBmb3JtIGNvbnRyb2wgZWxlbWVudHMgYmVsb3csIGJvdGggcmVxdWlyZWQgYW5kIHdpdGgg
c29tZSB2YWx1ZTogdmFsaWRpdHkudmFsdWVNaXNzaW5nIHNob3VsZCBiZSBmYWxzZSBpbiBib3Ro
IGNhc2VzLgorCisgCitTVUNDRVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwMy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9m
b3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2luZy0wMDMuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi45ZDkyZmZiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2luZy0wMDMuaHRtbApAQCAtMCww
ICsxLDI3IEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPnJlcXVpcmVkIGFuZCB2YWx1ZU1pc3Np
bmcgb24gZGlzYWJsZWQgZWxlbWVudHM8L3RpdGxlPgorPHNjcmlwdCBsYW5ndWFnZT0iSmF2YVNj
cmlwdCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICBmdW5jdGlvbiBsb2cobWVzc2FnZSkg
eworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmlubmVySFRNTCAr
PSAiPGxpPiIrbWVzc2FnZSsiPC9saT4iOworICAgIH0KKworICAgIGZ1bmN0aW9uIHRlc3QoKSB7
CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICAgICAgdiA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlOYW1lKCJ2aWN0aW0iKTsKKworICAgICAgICBsb2coKCF2WzBdLnZhbGlk
aXR5LnZhbHVlTWlzc2luZyAmJiAhdlsxXS52YWxpZGl0eS52YWx1ZU1pc3NpbmcpID8gIlNVQ0NF
U1MiIDogIkZBSUxVUkUiKTsKKyAgICB9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9h
ZD0idGVzdCgpIj4KKzxwPlRoZXJlIGFyZSB0d28gZGlzYWJsZWQgZm9ybSBjb250cm9sIGVsZW1l
bnRzIGJlbG93LCBib3RoIHJlcXVpcmVkIGFuZCB3aXRoIHNvbWUgdmFsdWU6Cit2YWxpZGl0eS52
YWx1ZU1pc3Npbmcgc2hvdWxkIGJlIGZhbHNlIGluIGJvdGggY2FzZXMuPC9wPgorPGlucHV0IG5h
bWU9InZpY3RpbSIgZGlzYWJsZWQgcmVxdWlyZWQgLz4KKzx0ZXh0YXJlYSBuYW1lPSJ2aWN0aW0i
IGRpc2FibGVkIHJlcXVpcmVkPjwvdGV4dGFyZWE+Cis8aHI+Cis8b2wgaWQ9ImNvbnNvbGUiPjwv
b2w+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwNC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwNC1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzEyN2NkZQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3Npbmct
MDA0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKK1RoZXJlIGFyZSB0d28gcmVhZG9ubHkg
Zm9ybSBjb250cm9sIGVsZW1lbnRzIGJlbG93LCBib3RoIHJlcXVpcmVkIGFuZCB3aXRoIHNvbWUg
dmFsdWU6IHZhbGlkaXR5LnZhbHVlTWlzc2luZyBzaG91bGQgYmUgZmFsc2UgaW4gYm90aCBjYXNl
cy4KKworIAorU1VDQ0VTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxp
ZGl0eVN0YXRlLXZhbHVlTWlzc2luZy0wMDQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMv
VmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3NpbmctMDA0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uZTM2OWM1NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3NpbmctMDA0Lmh0bWwKQEAgLTAsMCArMSwy
NyBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5yZXF1aXJlZCBhbmQgdmFsdWVNaXNzaW5nIG9u
IHJlYWRvbmx5IGVsZW1lbnRzPC90aXRsZT4KKzxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQi
IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpIHsKKyAg
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5pbm5lckhUTUwgKz0gIjxs
aT4iK21lc3NhZ2UrIjwvbGk+IjsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0KCkgeworICAg
ICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgICAgIHYgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5TmFtZSgidmljdGltIik7CisKKyAgICAgICAgbG9nKCghdlswXS52YWxpZGl0eS52
YWx1ZU1pc3NpbmcgJiYgIXZbMV0udmFsaWRpdHkudmFsdWVNaXNzaW5nKSA/ICJTVUNDRVNTIiA6
ICJGQUlMVVJFIik7CisgICAgfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InRl
c3QoKSI+Cis8cD5UaGVyZSBhcmUgdHdvIHJlYWRvbmx5IGZvcm0gY29udHJvbCBlbGVtZW50cyBi
ZWxvdywgYm90aCByZXF1aXJlZCBhbmQgd2l0aCBzb21lIHZhbHVlOgordmFsaWRpdHkudmFsdWVN
aXNzaW5nIHNob3VsZCBiZSBmYWxzZSBpbiBib3RoIGNhc2VzLjwvcD4KKzxpbnB1dCBuYW1lPSJ2
aWN0aW0iIHJlYWRvbmx5IHJlcXVpcmVkIC8+Cis8dGV4dGFyZWEgbmFtZT0idmljdGltIiByZWFk
b25seSByZXF1aXJlZD48L3RleHRhcmVhPgorPGhyPgorPG9sIGlkPSJjb25zb2xlIj48L29sPgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxp
ZGl0eVN0YXRlLXZhbHVlTWlzc2luZy0wMDUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2luZy0wMDUtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4ODM4NWQKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwNS1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSw5IEBACitUaGVyZSdzIGEgbGlzdCBvZiBmb3JtIGNvbnRy
b2wgZWxlbWVudHMgYmVsb3csIHJlcXVpcmVkIGF0dHJpYnV0ZSBkb2VzIG5vdCBhcHBseSB0byB0
aGVtOiB2YWxpZGl0eS52YWx1ZU1pc3Npbmcgc2hvdWxkIGJlIGZhbHNlLgorCisgICAgCitTVUND
RVNTCitTVUNDRVNTCitTVUNDRVNTCitTVUNDRVNTCitTVUNDRVNTCitTVUNDRVNTCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAw
NS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2lu
Zy0wMDUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMWM1ZDIwCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZh
bHVlTWlzc2luZy0wMDUuaHRtbApAQCAtMCwwICsxLDMyIEBACis8aHRtbD4KKzxoZWFkPgorPHRp
dGxlPnJlcXVpcmVkIGFuZCB2YWx1ZU1pc3Npbmcgb24gdW5hY2NlcHRlZCBpbnB1dCB0eXBlczwv
dGl0bGU+Cis8c2NyaXB0IGxhbmd1YWdlPSJKYXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiPgorICAgIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKSB7CisgICAgICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJjb25zb2xlIikuaW5uZXJIVE1MICs9ICI8bGk+IittZXNzYWdlKyI8L2xpPiI7
CisgICAgfQorCisgICAgZnVuY3Rpb24gdGVzdCgpIHsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKKworICAgICAgICB2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoInZpY3Rp
bSIpOworCisgICAgICAgIGZvciAoaSA9IDA7IGkgPCB2Lmxlbmd0aDsgaSsrKQorICAgICAgICAg
ICAgbG9nKCF2W2ldLnZhbGlkaXR5LnZhbHVlTWlzc2luZyA/ICJTVUNDRVNTIiA6ICJGQUlMVVJF
Iik7CisgICAgfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InRlc3QoKSI+Cis8
cD5UaGVyZSdzIGEgbGlzdCBvZiBmb3JtIGNvbnRyb2wgZWxlbWVudHMgYmVsb3csIHJlcXVpcmVk
IGF0dHJpYnV0ZSBkb2VzIG5vdCBhcHBseSB0byB0aGVtOgordmFsaWRpdHkudmFsdWVNaXNzaW5n
IHNob3VsZCBiZSBmYWxzZS48L3A+Cis8aW5wdXQgbmFtZT0idmljdGltIiB0eXBlPSJoaWRkZW4i
IHJlcXVpcmVkIC8+Cis8aW5wdXQgbmFtZT0idmljdGltIiB0eXBlPSJyYW5nZSIgcmVxdWlyZWQg
Lz4KKzxpbnB1dCBuYW1lPSJ2aWN0aW0iIHR5cGU9ImltYWdlIiByZXF1aXJlZCAvPgorPGlucHV0
IG5hbWU9InZpY3RpbSIgdHlwZT0icmVzZXQiIHJlcXVpcmVkIC8+Cis8aW5wdXQgbmFtZT0idmlj
dGltIiB0eXBlPSJidXR0b24iIHJlcXVpcmVkIC8+Cis8aW5wdXQgbmFtZT0idmljdGltIiB0eXBl
PSJzdWJtaXQiIHJlcXVpcmVkIC8+Cis8aHI+Cis8b2wgaWQ9ImNvbnNvbGUiPjwvb2w+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5
U3RhdGUtdmFsdWVNaXNzaW5nLTAwNi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwNi1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGQ1ZDI0OAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3NpbmctMDA2LWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDQgQEAKK1RoZXJlIGFyZSB0d28gY2hlY2tib3hlcyBiZWxvdywg
Ym90aCBhcmUgcmVxdWlyZWQsIG9ubHkgb25lIGlzIGNoZWNrZWQuCisKKyAKK1NVQ0NFU1MKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3Np
bmctMDA2Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVN
aXNzaW5nLTAwNi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3NWQ4
OWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3Rh
dGUtdmFsdWVNaXNzaW5nLTAwNi5odG1sCkBAIC0wLDAgKzEsMjYgQEAKKzxodG1sPgorPGhlYWQ+
Cis8dGl0bGU+cmVxdWlyZWQgYW5kIHZhbHVlTWlzc2luZyBvbiBjaGVja2JveGVzPC90aXRsZT4K
KzxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Cisg
ICAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImNvbnNvbGUiKS5pbm5lckhUTUwgKz0gIjxsaT4iK21lc3NhZ2UrIjwvbGk+IjsKKyAgICB9
CisKKyAgICBmdW5jdGlvbiB0ZXN0KCkgeworICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQorICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OworCisgICAgICAgIHYgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgidmljdGltIik7CisK
KyAgICAgICAgbG9nKCF2WzBdLnZhbGlkaXR5LnZhbHVlTWlzc2luZyAmJiB2WzFdLnZhbGlkaXR5
LnZhbHVlTWlzc2luZyA/ICJTVUNDRVNTIiA6ICJGQUlMVVJFIik7CisgICAgfQorPC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InRlc3QoKSI+Cis8cD5UaGVyZSBhcmUgdHdvIGNoZWNr
Ym94ZXMgYmVsb3csIGJvdGggYXJlIHJlcXVpcmVkLCBvbmx5IG9uZSBpcyBjaGVja2VkLjwvcD4K
KzxpbnB1dCBuYW1lPSJ2aWN0aW0iIHR5cGU9ImNoZWNrYm94IiByZXF1aXJlZCBjaGVja2VkLz4K
KzxpbnB1dCBuYW1lPSJ2aWN0aW0iIHR5cGU9ImNoZWNrYm94IiByZXF1aXJlZCAvPgorPGhyPgor
PG9sIGlkPSJjb25zb2xlIj48L29sPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2luZy0wMDctZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2lu
Zy0wMDctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5
ODZjNWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5
U3RhdGUtdmFsdWVNaXNzaW5nLTAwNy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACitUaGVy
ZSBhcmUgdHdvIHJhZGlvIGJ1dHRvbnMgYmVsb3cgd2l0aCB0aGUgc2FtZSBuYW1lLCBvbmx5IG9u
ZSBpcyByZXF1aXJlZCAod2hpY2ggbWVhbnMgdGhlIHdob2xlIGdyb3VwIGlzIHJlcXVpcmVkKSwg
dGhlIG90aGVyIG9uZSBpcyBjaGVja2VkIGFuZCBsZWFkcyB0aGUgcmVxdWlyZWQgYXR0cmlidXRl
IHRvIGJlIHNhdGlzZmllZDogbm8gbWlzc2luZyB2YWx1ZS4KKworIAorU1VDQ0VTUwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2luZy0w
MDcuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3Np
bmctMDA3Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGJkNDRmYwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12
YWx1ZU1pc3NpbmctMDA3Lmh0bWwKQEAgLTAsMCArMSwyNiBAQAorPGh0bWw+Cis8aGVhZD4KKzx0
aXRsZT5yZXF1aXJlZCBhbmQgdmFsdWVNaXNzaW5nIG9uIHJhZGlvPC90aXRsZT4KKzxzY3JpcHQg
bGFuZ3VhZ2U9IkphdmFTY3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgZnVuY3Rp
b24gbG9nKG1lc3NhZ2UpIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNv
bGUiKS5pbm5lckhUTUwgKz0gIjxsaT4iK21lc3NhZ2UrIjwvbGk+IjsKKyAgICB9CisKKyAgICBm
dW5jdGlvbiB0ZXN0KCkgeworICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQorICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAg
ICAgIHYgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgidmljdGltIik7CisKKyAgICAgICAg
bG9nKCF2WzBdLnZhbGlkaXR5LnZhbHVlTWlzc2luZyA/ICJTVUNDRVNTIiA6ICJGQUlMVVJFIik7
CisgICAgfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InRlc3QoKSI+Cis8cD5U
aGVyZSBhcmUgdHdvIHJhZGlvIGJ1dHRvbnMgYmVsb3cgd2l0aCB0aGUgc2FtZSBuYW1lLCBvbmx5
IG9uZSBpcyByZXF1aXJlZCAod2hpY2ggbWVhbnMgdGhlIHdob2xlIGdyb3VwIGlzIHJlcXVpcmVk
KSwgdGhlIG90aGVyIG9uZSBpcyBjaGVja2VkIGFuZCBsZWFkcyB0aGUgcmVxdWlyZWQgYXR0cmli
dXRlIHRvIGJlIHNhdGlzZmllZDogbm8gbWlzc2luZyB2YWx1ZS48L3A+Cis8aW5wdXQgbmFtZT0i
dmljdGltIiB0eXBlPSJyYWRpbyIgcmVxdWlyZWQvPgorPGlucHV0IG5hbWU9InZpY3RpbSIgdHlw
ZT0icmFkaW8iIGNoZWNrZWQvPgorPGhyPgorPG9sIGlkPSJjb25zb2xlIj48L29sPgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0
YXRlLXZhbHVlTWlzc2luZy0wMDgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2luZy0wMDgtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4YzQ5MGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwOC1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSw0IEBACitUaGVyZSdzIGEgdXBsb2FkIGNvbnRyb2wgYmVsb3csIHdp
dGggbm8gZmlsZSBzZWxlY3RlZDogbWlzc2luZyB2YWx1ZS4KKworCitTVUNDRVNTCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAw
OC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2lu
Zy0wMDguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZWQyNGQ2Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZh
bHVlTWlzc2luZy0wMDguaHRtbApAQCAtMCwwICsxLDI1IEBACis8aHRtbD4KKzxoZWFkPgorPHRp
dGxlPnJlcXVpcmVkIGFuZCB2YWx1ZU1pc3Npbmcgb24gZmlsZSBjb250cm9sPC90aXRsZT4KKzxz
Y3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAg
ZnVuY3Rpb24gbG9nKG1lc3NhZ2UpIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImNvbnNvbGUiKS5pbm5lckhUTUwgKz0gIjxsaT4iK21lc3NhZ2UrIjwvbGk+IjsKKyAgICB9CisK
KyAgICBmdW5jdGlvbiB0ZXN0KCkgeworICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQorICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwor
CisgICAgICAgIHYgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgidmljdGltIik7CisKKyAg
ICAgICAgbG9nKHZbMF0udmFsaWRpdHkudmFsdWVNaXNzaW5nID8gIlNVQ0NFU1MiIDogIkZBSUxV
UkUiKTsKKyAgICB9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0idGVzdCgpIj4K
KzxwPlRoZXJlJ3MgYSB1cGxvYWQgY29udHJvbCBiZWxvdywgd2l0aCBubyBmaWxlIHNlbGVjdGVk
OiBtaXNzaW5nIHZhbHVlLjwvcD4KKzxpbnB1dCBuYW1lPSJ2aWN0aW0iIHR5cGU9ImZpbGUiIHJl
cXVpcmVkLz4KKzxocj4KKzxvbCBpZD0iY29uc29sZSI+PC9vbD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1p
c3NpbmctMDA5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlT
dGF0ZS12YWx1ZU1pc3NpbmctMDA5LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi4xYWNhY2RhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2luZy0wMDktZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMTAgQEAKK1RoZXJlJ3MgYSBsaXN0IG9mIGZvcm0gY29udHJvbCBlbGVtZW50cyBiZWxv
dywgcmVxdWlyZWQgYXR0cmlidXRlIGFwcGxpZXMgdG8gdGhlbSBidXQgdGhleSdyZSBlbXB0eTog
dmFsaWRpdHkudmFsdWVNaXNzaW5nIHNob3VsZCBiZSB0cnVlLgorCisgICAgICAKK1NVQ0NFU1MK
K1NVQ0NFU1MKK1NVQ0NFU1MKK1NVQ0NFU1MKK1NVQ0NFU1MKK1NVQ0NFU1MKK1NVQ0NFU1MKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3Np
bmctMDA5Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVN
aXNzaW5nLTAwOS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkOTA1
YTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3Rh
dGUtdmFsdWVNaXNzaW5nLTAwOS5odG1sCkBAIC0wLDAgKzEsMzMgQEAKKzxodG1sPgorPGhlYWQ+
Cis8dGl0bGU+cmVxdWlyZWQgYW5kIHZhbHVlTWlzc2luZyBvbiBuZXcgaW5wdXQgdHlwZXM8L3Rp
dGxlPgorPHNjcmlwdCBsYW5ndWFnZT0iSmF2YVNjcmlwdCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0
Ij4KKyAgICBmdW5jdGlvbiBsb2cobWVzc2FnZSkgeworICAgICAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiY29uc29sZSIpLmlubmVySFRNTCArPSAiPGxpPiIrbWVzc2FnZSsiPC9saT4iOwor
ICAgIH0KKworICAgIGZ1bmN0aW9uIHRlc3QoKSB7CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7CisKKyAgICAgICAgdiA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKCJ2aWN0aW0i
KTsKKworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdi5sZW5ndGg7IGkrKykKKyAgICAgICAgICAg
IGxvZyh2W2ldLnZhbGlkaXR5LnZhbHVlTWlzc2luZyA/ICJTVUNDRVNTIiA6ICJGQUlMVVJFIik7
CisgICAgfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InRlc3QoKSI+Cis8cD5U
aGVyZSdzIGEgbGlzdCBvZiBmb3JtIGNvbnRyb2wgZWxlbWVudHMgYmVsb3csIHJlcXVpcmVkIGF0
dHJpYnV0ZSBhcHBsaWVzIHRvIHRoZW0gYnV0IHRoZXkncmUgZW1wdHk6Cit2YWxpZGl0eS52YWx1
ZU1pc3Npbmcgc2hvdWxkIGJlIHRydWUuPC9wPgorPGlucHV0IG5hbWU9InZpY3RpbSIgdHlwZT0i
dGV4dCIgcmVxdWlyZWQgLz4KKzxpbnB1dCBuYW1lPSJ2aWN0aW0iIHR5cGU9InNlYXJjaCIgcmVx
dWlyZWQgLz4KKzxpbnB1dCBuYW1lPSJ2aWN0aW0iIHR5cGU9InVybCIgcmVxdWlyZWQgLz4KKzxp
bnB1dCBuYW1lPSJ2aWN0aW0iIHR5cGU9InRlbGVwaG9uZSIgcmVxdWlyZWQgLz4KKzxpbnB1dCBu
YW1lPSJ2aWN0aW0iIHR5cGU9ImVtYWlsIiByZXF1aXJlZCAvPgorPGlucHV0IG5hbWU9InZpY3Rp
bSIgdHlwZT0icGFzc3dvcmQiIHJlcXVpcmVkIC8+Cis8aW5wdXQgbmFtZT0idmljdGltIiB0eXBl
PSJudW1iZXIiIHJlcXVpcmVkIC8+Cis8aHI+Cis8b2wgaWQ9ImNvbnNvbGUiPjwvb2w+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3JlcXVpcmVk
LWF0dHJpYnV0ZS0wMDEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yZXF1
aXJlZC1hdHRyaWJ1dGUtMDAxLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi45YjIwMTQzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9m
b3Jtcy9yZXF1aXJlZC1hdHRyaWJ1dGUtMDAxLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAK
K1RoZXJlIGFyZSB0d28gZm9ybSBjb250cm9sIGVsZW1lbnRzIGJlbG93LCBib3RoIHJlcXVpcmVk
LgorCisgCitTVUNDRVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3JlcXVp
cmVkLWF0dHJpYnV0ZS0wMDEuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmVxdWlyZWQt
YXR0cmlidXRlLTAwMS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJm
MzRjMTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3JlcXVpcmVk
LWF0dHJpYnV0ZS0wMDEuaHRtbApAQCAtMCwwICsxLDI2IEBACis8aHRtbD4KKzxoZWFkPgorPHRp
dGxlPnJlcXVpcmVkIGF0dHJpYnV0ZSBwcmVzZW5jZSB0ZXN0PC90aXRsZT4KKzxzY3JpcHQgbGFu
Z3VhZ2U9IkphdmFTY3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgZnVuY3Rpb24g
bG9nKG1lc3NhZ2UpIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUi
KS5pbm5lckhUTUwgKz0gIjxsaT4iK21lc3NhZ2UrIjwvbGk+IjsKKyAgICB9CisKKyAgICBmdW5j
dGlvbiB0ZXN0KCkgeworICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQor
ICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgICAg
IHYgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgidmljdGltIik7CisKKyAgICAgICAgbG9n
KCh2WzBdLnJlcXVpcmVkICYmIHZbMV0ucmVxdWlyZWQpID8gIlNVQ0NFU1MiIDogIkZBSUxVUkUi
KTsKKyAgICB9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0idGVzdCgpIj4KKzxw
PlRoZXJlIGFyZSB0d28gZm9ybSBjb250cm9sIGVsZW1lbnRzIGJlbG93LCBib3RoIHJlcXVpcmVk
LjwvcD4KKzxpbnB1dCBuYW1lPSJ2aWN0aW0iIHJlcXVpcmVkIC8+Cis8dGV4dGFyZWEgbmFtZT0i
dmljdGltIiByZXF1aXJlZD48L3RleHRhcmVhPgorPGhyPgorPG9sIGlkPSJjb25zb2xlIj48L29s
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9y
ZXF1aXJlZC1hdHRyaWJ1dGUtMDAyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZm9y
bXMvcmVxdWlyZWQtYXR0cmlidXRlLTAwMi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uYWM1YzBmZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvcmVxdWlyZWQtYXR0cmlidXRlLTAwMi1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSw0IEBACitUaGVyZSBhcmUgdHdvIGZvcm0gY29udHJvbCBlbGVtZW50cyBiZWxvdywgYm90aCBv
cHRpb25hbC4gVGhleSdyZSBzZXQgYXMgcmVxdWlyZWQgdmlhIHJlcXVpcmVkIERPTSBhdHRyaWJ1
dGUuCisKKyAKK1NVQ0NFU1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmVx
dWlyZWQtYXR0cmlidXRlLTAwMi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yZXF1aXJl
ZC1hdHRyaWJ1dGUtMDAyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
YWE4NWU4OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmVxdWly
ZWQtYXR0cmlidXRlLTAwMi5odG1sCkBAIC0wLDAgKzEsMzIgQEAKKzxodG1sPgorPGhlYWQ+Cis8
dGl0bGU+cmVxdWlyZWQgYXR0cmlidXRlIEpTIHNldDwvdGl0bGU+Cis8c2NyaXB0IGxhbmd1YWdl
PSJKYXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgIGZ1bmN0aW9uIGxvZyht
ZXNzYWdlKSB7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuaW5u
ZXJIVE1MICs9ICI8bGk+IittZXNzYWdlKyI8L2xpPiI7CisgICAgfQorCisgICAgZnVuY3Rpb24g
dGVzdCgpIHsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgICAgICB2ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoInZpY3RpbSIpOworCisgICAgICAgIGlmICh2WzBd
LnJlcXVpcmVkID09IGZhbHNlICYmIHZbMV0ucmVxdWlyZWQgPT0gZmFsc2UpIHsKKyAgICAgICAg
ICAgIHZbMF0ucmVxdWlyZWQgPSB0cnVlOworICAgICAgICAgICAgdlsxXS5yZXF1aXJlZCA9IHRy
dWU7CisgICAgICAgICAgICBsb2cgKCh2WzBdLnJlcXVpcmVkICYmIHZbMV0ucmVxdWlyZWQpID8g
IlNVQ0NFU1MiIDogIkZBSUxVUkUiKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAg
ICAgICBsb2coIkZBSUxVUkUiKTsKKyAgICB9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9u
bG9hZD0idGVzdCgpIj4KKzxwPlRoZXJlIGFyZSB0d28gZm9ybSBjb250cm9sIGVsZW1lbnRzIGJl
bG93LCBib3RoIG9wdGlvbmFsLiBUaGV5J3JlIHNldCBhcyByZXF1aXJlZCB2aWEgcmVxdWlyZWQg
RE9NIGF0dHJpYnV0ZS48L3A+Cis8aW5wdXQgbmFtZT0idmljdGltIiAvPgorPHRleHRhcmVhIG5h
bWU9InZpY3RpbSI+PC90ZXh0YXJlYT4KKzxocj4KKzxvbCBpZD0iY29uc29sZSI+PC9vbD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggZWVkMzhmOC4uZTU1YTU4MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MiBAQAorMjAwOS0wNy0x
NyAgTWljaGVsYW5nZWxvIERlIFNpbW9uZSAgPG1pY2Rlc2ltQGdtYWlsLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU1NTEKKyAgICAgICAgQWRkZWQgc3VwcG9ydCBmb3Ig
dGhlICJyZXF1aXJlZCIgYXR0cmlidXRlLCB0aGUgdmFsdWVNaXNzaW5nIGZsYWcKKyAgICAgICAg
dG8gdGhlIFZhbGlkaXR5U3RhdGUgb2JqZWN0IGFuZCA6cmVxdWlyZWQvOm9wdGlvbmFsIENTUyBw
c2V1ZG9jbGFzc2VzLgorICAgICAgICBQYXJ0IG9mIEhUTUw1IHNlYy4gRm9ybXMgc3BlY3MuCisg
ICAgICAgIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsv
bXVsdGlwYWdlL2Zvcm1zLmh0bWwjYXR0ci1pbnB1dC1yZXF1aXJlZAorCisgICAgICAgIFRlc3Rz
OiBmYXN0L2Nzcy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9uYWwtMDAxLmh0bWwKKyAgICAgICAgICAg
ICAgIGZhc3QvY3NzL3BzZXVkby1yZXF1aXJlZC1vcHRpb25hbC0wMDIuaHRtbAorICAgICAgICAg
ICAgICAgZmFzdC9jc3MvcHNldWRvLXJlcXVpcmVkLW9wdGlvbmFsLTAwMy5odG1sCisgICAgICAg
ICAgICAgICBmYXN0L2Nzcy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9uYWwtMDA0Lmh0bWwKKyAgICAg
ICAgICAgICAgIGZhc3QvY3NzL3BzZXVkby1yZXF1aXJlZC1vcHRpb25hbC0wMDUuaHRtbAorICAg
ICAgICAgICAgICAgZmFzdC9jc3MvcHNldWRvLXJlcXVpcmVkLW9wdGlvbmFsLTAwNi5odG1sCisg
ICAgICAgICAgICAgICBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwMS5o
dG1sCisgICAgICAgICAgICAgICBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5n
LTAwMi5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVN
aXNzaW5nLTAwMy5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUt
dmFsdWVNaXNzaW5nLTAwNC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Zvcm1zL1ZhbGlkaXR5
U3RhdGUtdmFsdWVNaXNzaW5nLTAwNS5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Zvcm1zL1Zh
bGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwNi5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Zv
cm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwNy5odG1sCisgICAgICAgICAgICAgICBm
YXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwOC5odG1sCisgICAgICAgICAg
ICAgICBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwOS5odG1sCisgICAg
ICAgICAgICAgICBmYXN0L2Zvcm1zL3JlcXVpcmVkLWF0dHJpYnV0ZS0wMDEuaHRtbAorICAgICAg
ICAgICAgICAgZmFzdC9mb3Jtcy9yZXF1aXJlZC1hdHRyaWJ1dGUtMDAyLmh0bWwKKworICAgICAg
ICAqIGNzcy9DU1NTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6
ZXh0cmFjdFBzZXVkb1R5cGUpOiBwc2V1ZG9SZXF1aXJlZCwgcHNldWRvT3B0aW9uYWwKKyAgICAg
ICAgKiBjc3MvQ1NTU2VsZWN0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjop
OiBkaXR0bworICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rv
cik6IGRpdHRvCisgICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnQ6OmlzT3B0aW9uYWxGb3JtQ29udHJvbCk6IGNoZWNrIGZvciBvcHRpb25hbCBjb250cm9s
cworICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6aXNSZXF1aXJlZEZvcm1Db250cm9sKTogY2hl
Y2sgZm9yIHJlcXVpcmVkIGNvbnRyb2xzCisgICAgICAgICogaHRtbC9IVE1MQXR0cmlidXRlTmFt
ZXMuaW46IHJlcXVpcmVkIGF0dHJpYnV0ZQorICAgICAgICAqIGh0bWwvSFRNTEJ1dHRvbkVsZW1l
bnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxCdXR0b25FbGVtZW50Ojppc09wdGlvbmFsRm9y
bUNvbnRyb2wpOiBkaXR0bworICAgICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpyZXF1aXJlZCk6
IHJlcXVpcmVkIGF0dHJpYnV0ZSBnZXR0ZXIKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29u
dHJvbEVsZW1lbnQ6OnNldFJlcXVpcmVkKTogcmVxdWlyZWQgYXR0ciBzZXR0ZXIKKyAgICAgICAg
KiBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaDogcmVxdWlyZWQvc2V0UmVxdWlyZWQgZGVm
aW5pdGlvbgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50Ojppc1JlcXVpcmVkRm9ybUNvbnRyb2wpOiBkaXR0bwor
ICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TElucHV0RWxlbWVudDo6aXNPcHRpb25hbEZvcm1Db250cm9sKTogZGl0dG8KKyAgICAgICAgKiBo
dG1sL0hUTUxJbnB1dEVsZW1lbnQuaWRsOiByZXF1aXJlZCBET00gYXR0cmlidXRlCisgICAgICAg
ICogaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVj
dEVsZW1lbnQ6OmlzT3B0aW9uYWxGb3JtQ29udHJvbCk6IGRpdHRvCisgICAgICAgICogaHRtbC9I
VE1MVGV4dEFyZWFFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVt
ZW50Ojppc09wdGlvbmFsRm9ybUNvbnRyb2wpOiBkaXR0bworICAgICAgICAoV2ViQ29yZTo6SFRN
TFRleHRBcmVhRWxlbWVudDo6aXNSZXF1aXJlZEZvcm1Db250cm9sKTogZGl0dG8KKyAgICAgICAg
KiBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaWRsOiByZXF1aXJlZCBET00gYXR0cmlidXRlCisg
ICAgICAgICogaHRtbC9WYWxpZGl0eVN0YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZhbGlk
aXR5U3RhdGU6OnZhbHVlTWlzc2luZyk6IHZhbGlkYXRpb24gZmxhZworICAgICAgICAqIGh0bWwv
VmFsaWRpdHlTdGF0ZS5oOgorCiAyMDA5LTA3LTE3ICBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhl
ciAgPHplY2tlQHNlbGZpc2gub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEd1c3Rhdm8gTm9y
b25oYS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcCBiL1dlYkNvcmUv
Y3NzL0NTU1NlbGVjdG9yLmNwcAppbmRleCA1NDI5YzE2Li44MDkxMGE3IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAKKysrIGIvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3Iu
Y3BwCkBAIC0xMTcsNiArMTE3LDggQEAgdm9pZCBDU1NTZWxlY3Rvcjo6ZXh0cmFjdFBzZXVkb1R5
cGUoKSBjb25zdAogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBub3RTdHIs
ICgibm90KCIpKTsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgb25seUNo
aWxkLCAoIm9ubHktY2hpbGQiKSk7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJp
bmcsIG9ubHlPZlR5cGUsICgib25seS1vZi10eXBlIikpOworICAgIERFRklORV9TVEFUSUNfTE9D
QUwoQXRvbWljU3RyaW5nLCBvcHRpb25hbCwgKCJvcHRpb25hbCIpKTsKKyAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKEF0b21pY1N0cmluZywgcmVxdWlyZWQsICgicmVxdWlyZWQiKSk7CiAgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHJlc2l6ZXIsICgiLXdlYmtpdC1yZXNpemVy
IikpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCByb290LCAoInJvb3Qi
KSk7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHNjcm9sbGJhciwgKCIt
d2Via2l0LXNjcm9sbGJhciIpKTsKQEAgLTI4Niw2ICsyODgsMTAgQEAgdm9pZCBDU1NTZWxlY3Rv
cjo6ZXh0cmFjdFBzZXVkb1R5cGUoKSBjb25zdAogICAgICAgICBtX3BzZXVkb1R5cGUgPSBQc2V1
ZG9TaW5nbGVCdXR0b247CiAgICAgZWxzZSBpZiAobV92YWx1ZSA9PSBub0J1dHRvbikKICAgICAg
ICAgbV9wc2V1ZG9UeXBlID0gUHNldWRvTm9CdXR0b247CisgICAgZWxzZSBpZiAobV92YWx1ZSA9
PSBvcHRpb25hbCkKKyAgICAgICAgbV9wc2V1ZG9UeXBlID0gUHNldWRvT3B0aW9uYWw7CisgICAg
ZWxzZSBpZiAobV92YWx1ZSA9PSByZXF1aXJlZCkKKyAgICAgICAgbV9wc2V1ZG9UeXBlID0gUHNl
dWRvUmVxdWlyZWQ7CiAgICAgZWxzZSBpZiAobV92YWx1ZSA9PSBzY3JvbGxiYXJDb3JuZXIpIHsK
ICAgICAgICAgZWxlbWVudCA9IHRydWU7CiAgICAgICAgIG1fcHNldWRvVHlwZSA9IFBzZXVkb1Nj
cm9sbGJhckNvcm5lcjsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmggYi9X
ZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oCmluZGV4IDViN2Y5ZmEuLjE4MjUxZmQgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmgKKysrIGIvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0
b3IuaApAQCAtMTI4LDYgKzEyOCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAg
IFBzZXVkb0Z1bGxQYWdlTWVkaWEsCiAgICAgICAgICAgICBQc2V1ZG9EaXNhYmxlZCwKICAgICAg
ICAgICAgIFBzZXVkb0lucHV0UGxhY2Vob2xkZXIsCisgICAgICAgICAgICBQc2V1ZG9PcHRpb25h
bCwKKyAgICAgICAgICAgIFBzZXVkb1JlcXVpcmVkLAogICAgICAgICAgICAgUHNldWRvUmVhZE9u
bHksCiAgICAgICAgICAgICBQc2V1ZG9SZWFkV3JpdGUsCiAgICAgICAgICAgICBQc2V1ZG9JbmRl
dGVybWluYXRlLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAg
Yi9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAppbmRleCA3ODA1ODgzLi5mZGFiNjhl
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAorKysgYi9XZWJD
b3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcApAQCAtOTAsNiArOTAsNyBAQAogI2luY2x1ZGUg
IlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCiAjaW5jbHVkZSAiVHJhbnNsYXRlVHJhbnNmb3JtT3Bl
cmF0aW9uLmgiCiAjaW5jbHVkZSAiVXNlckFnZW50U3R5bGVTaGVldHMuaCIKKyNpbmNsdWRlICJW
YWxpZGl0eVN0YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlLmgiCiAjaW5j
bHVkZSAiV2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZS5oIgogI2luY2x1ZGUgIldlYktpdENTU1RyYW5z
Zm9ybVZhbHVlLmgiCkBAIC0yMzc1LDYgKzIzNzYsMTggQEAgYm9vbCBDU1NTdHlsZVNlbGVjdG9y
OjpTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IoQ1NTU2VsZWN0b3IqIHNlbCwgRWxl
bWUKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgIHJl
dHVybiBlLT5pc1RleHRGb3JtQ29udHJvbCgpICYmICFlLT5pc1JlYWRPbmx5Rm9ybUNvbnRyb2wo
KTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb09w
dGlvbmFsOiB7CisgICAgICAgICAgICAgICAgaWYgKCFlIHx8ICFlLT5pc0Zvcm1Db250cm9sRWxl
bWVudCgpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZS0+aXNPcHRpb25hbEZvcm1Db250cm9sKCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9SZXF1aXJlZDogeworICAgICAgICAg
ICAgICAgIGlmICghZSB8fCAhZS0+aXNGb3JtQ29udHJvbEVsZW1lbnQoKSkKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICAgICAgcmV0dXJuIGUtPmlzUmVx
dWlyZWRGb3JtQ29udHJvbCgpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSBDU1NT
ZWxlY3Rvcjo6UHNldWRvQ2hlY2tlZDogewogICAgICAgICAgICAgICAgIGlmICghZSB8fCAhZS0+
aXNGb3JtQ29udHJvbEVsZW1lbnQoKSkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CmRpZmYg
LS1naXQgYS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5k
ZXggZDFlZjNiMi4uMGZmMmVkMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vRWxlbWVudC5oCisr
KyBiL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtMjEyLDYgKzIxMiw4IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIGJvb2wgaXNFbmFibGVkRm9ybUNvbnRyb2woKSBjb25zdCB7IHJldHVybiB0cnVl
OyB9CiAgICAgdmlydHVhbCBib29sIGlzUmVhZE9ubHlGb3JtQ29udHJvbCgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzVGV4dEZvcm1Db250cm9sKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNPcHRpb25hbEZvcm1Db250cm9s
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNSZXF1aXJlZEZv
cm1Db250cm9sKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBm
b3JtQ29udHJvbFZhbHVlTWF0Y2hlc1JlbmRlcmVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgc2V0Rm9ybUNvbnRyb2xWYWx1ZU1hdGNoZXNSZW5kZXJlcihib29s
KSB7IH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4gYi9X
ZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCmluZGV4IGJkMzdiOTYuLjZkNGQzY2Ig
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4KKysrIGIvV2Vi
Q29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgpAQCAtMTk1LDYgKzE5NSw3IEBAIHByb2dy
ZXNzCiBwcm9tcHQKIHJlYWRvbmx5CiByZWwKK3JlcXVpcmVkCiByZXN1bHRzCiByZXYKIHJvbGUK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5oIGIvV2ViQ29yZS9o
dG1sL0hUTUxCdXR0b25FbGVtZW50LmgKaW5kZXggYjFkNzQ0Yy4uYTZjMDM0NiAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9odG1sL0hUTUxCdXR0b25FbGVtZW50LmgKKysrIGIvV2ViQ29yZS9odG1sL0hU
TUxCdXR0b25FbGVtZW50LmgKQEAgLTU3LDYgKzU3LDcgQEAgcHVibGljOgogICAgIFN0cmluZyB2
YWx1ZSgpIGNvbnN0OwogICAgIHZvaWQgc2V0VmFsdWUoY29uc3QgU3RyaW5nJik7CiAKKyAgICB2
aXJ0dWFsIGJvb2wgaXNPcHRpb25hbEZvcm1Db250cm9sKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsg
fQogICAgIHZpcnR1YWwgYm9vbCB3aWxsVmFsaWRhdGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQogICAgIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRy
b2xFbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcApp
bmRleCA4NzkzOGFjLi5lOTBhNmUwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1D
b250cm9sRWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1l
bnQuY3BwCkBAIC0yMDQsNiArMjA0LDE2IEBAIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6
c2V0QXV0b2ZvY3VzKGJvb2wgYikKICAgICBzZXRBdHRyaWJ1dGUoYXV0b2ZvY3VzQXR0ciwgYiA/
ICJhdXRvZm9jdXMiIDogMCk7CiB9CiAKK2Jvb2wgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6cmVx
dWlyZWQoKSBjb25zdAoreworICAgIHJldHVybiBoYXNBdHRyaWJ1dGUocmVxdWlyZWRBdHRyKTsK
K30KKwordm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpzZXRSZXF1aXJlZChib29sIGIpCit7
CisgICAgc2V0QXR0cmlidXRlKHJlcXVpcmVkQXR0ciwgYiA/ICJyZXF1aXJlZCIgOiAwKTsKK30K
Kwogdm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpyZWNhbGNTdHlsZShTdHlsZUNoYW5nZSBj
aGFuZ2UpCiB7CiAgICAgSFRNTEVsZW1lbnQ6OnJlY2FsY1N0eWxlKGNoYW5nZSk7CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oIGIvV2ViQ29yZS9odG1s
L0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaAppbmRleCBhMDNlYjFhLi4xMTNkYzRlIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oCisrKyBiL1dlYkNvcmUv
aHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKQEAgLTc0LDYgKzc0LDkgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgYm9vbCBhdXRvZm9jdXMoKSBjb25zdDsKICAgICB2b2lkIHNldEF1dG9mb2N1
cyhib29sKTsKIAorICAgIGJvb2wgcmVxdWlyZWQoKSBjb25zdDsKKyAgICB2b2lkIHNldFJlcXVp
cmVkKGJvb2wpOworCiAgICAgdmlydHVhbCB2b2lkIHJlY2FsY1N0eWxlKFN0eWxlQ2hhbmdlKTsK
IAogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBmb3JtQ29udHJvbE5hbWUoKSBjb25z
dDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1dlYkNv
cmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCA5ODY5OGZhLi4xNTg3YzNkIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9o
dG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC0xMTQsNiArMTE0LDI2IEBAIGJvb2wgSFRNTElu
cHV0RWxlbWVudDo6YXV0b0NvbXBsZXRlKCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAor
Ym9vbCBIVE1MSW5wdXRFbGVtZW50Ojppc1JlcXVpcmVkRm9ybUNvbnRyb2woKSBjb25zdAorewor
ICAgIGlmICghcmVxdWlyZWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgc3dpdGNo
IChpbnB1dFR5cGUoKSkgeworICAgICAgICBjYXNlIEhUTUxJbnB1dEVsZW1lbnQ6OkhJRERFTjoK
KyAgICAgICAgY2FzZSBIVE1MSW5wdXRFbGVtZW50OjpSQU5HRToKKyAgICAgICAgY2FzZSBIVE1M
SW5wdXRFbGVtZW50OjpTVUJNSVQ6CisgICAgICAgIGNhc2UgSFRNTElucHV0RWxlbWVudDo6SU1B
R0U6CisgICAgICAgIGNhc2UgSFRNTElucHV0RWxlbWVudDo6UkVTRVQ6CisgICAgICAgIGNhc2Ug
SFRNTElucHV0RWxlbWVudDo6QlVUVE9OOgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcmV0
dXJuIGZhbHNlOworfQorCiBzdGF0aWMgaW5saW5lIENoZWNrZWRSYWRpb0J1dHRvbnMmIGNoZWNr
ZWRSYWRpb0J1dHRvbnMoY29uc3QgSFRNTElucHV0RWxlbWVudCAqZWxlbWVudCkKIHsKICAgICBp
ZiAoSFRNTEZvcm1FbGVtZW50KiBmb3JtID0gZWxlbWVudC0+Zm9ybSgpKQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaCBiL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRF
bGVtZW50LmgKaW5kZXggYmUyYjRmNC4uMmU2MzdlNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1s
L0hUTUxJbnB1dEVsZW1lbnQuaAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5o
CkBAIC04OSw2ICs4OSw5IEBAIHB1YmxpYzoKICAgICBib29sIHJlYWRPbmx5KCkgY29uc3QgeyBy
ZXR1cm4gaXNSZWFkT25seUZvcm1Db250cm9sKCk7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBpc1Rl
eHRGb3JtQ29udHJvbCgpIGNvbnN0IHsgcmV0dXJuIGlzVGV4dEZpZWxkKCk7IH0KKyAgICB2aXJ0
dWFsIGJvb2wgaXNPcHRpb25hbEZvcm1Db250cm9sKCkgY29uc3QgeyByZXR1cm4gIWlzUmVxdWly
ZWRGb3JtQ29udHJvbCgpOyB9CisgICAgdmlydHVhbCBib29sIGlzUmVxdWlyZWRGb3JtQ29udHJv
bCgpIGNvbnN0OworCiAKICAgICBib29sIGlzVGV4dEJ1dHRvbigpIGNvbnN0IHsgcmV0dXJuIG1f
dHlwZSA9PSBTVUJNSVQgfHwgbV90eXBlID09IFJFU0VUIHx8IG1fdHlwZSA9PSBCVVRUT047IH0K
ICAgICB2aXJ0dWFsIGJvb2wgaXNSYWRpb0J1dHRvbigpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9
PSBSQURJTzsgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaWRs
IGIvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaWRsCmluZGV4IDdjZDkxYjAuLjNhNDEw
ZGYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmlkbAorKysgYi9X
ZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5pZGwKQEAgLTQzLDYgKzQzLDcgQEAgbW9kdWxl
IGh0bWwgewogICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgW0NvbnZlcnROdWxsVG9OdWxsU3Ry
aW5nXSBET01TdHJpbmcgbmFtZTsKICAgICAgICAgICAgICAgICAgYXR0cmlidXRlIERPTVN0cmlu
ZyAgICAgICBwbGFjZWhvbGRlcjsKICAgICAgICAgICAgICAgICAgYXR0cmlidXRlIGJvb2xlYW4g
ICAgICAgICByZWFkT25seTsKKyAgICAgICAgICAgICAgICAgYXR0cmlidXRlIGJvb2xlYW4gICAg
ICAgICByZXF1aXJlZDsKICNpZiBkZWZpbmVkKExBTkdVQUdFX09CSkVDVElWRV9DKSAmJiBMQU5H
VUFHRV9PQkpFQ1RJVkVfQwogICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgW0NvbnZlcnRUb1N0
cmluZ10gRE9NU3RyaW5nIHNpemU7IC8vIERPTSBsZXZlbCAyIGNoYW5nZWQgdGhpcyB0byBhIGxv
bmcsIGJ1dCBvdXIgZXhpc3RpbmcgQVBJIGlzIGEgc3RyaW5nCiAjZWxzZQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmggYi9XZWJDb3JlL2h0bWwvSFRNTFNlbGVj
dEVsZW1lbnQuaAppbmRleCBlNTIzNjQxLi4yZGY0ZWVmIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0
bWwvSFRNTFNlbGVjdEVsZW1lbnQuaAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1l
bnQuaApAQCAtNzgsNiArNzgsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNjcm9sbFRvU2VsZWN0
aW9uKCk7CiAKKyAgICB2aXJ0dWFsIGJvb2wgaXNPcHRpb25hbEZvcm1Db250cm9sKCkgY29uc3Qg
eyByZXR1cm4gdHJ1ZTsgfQorCiBwcml2YXRlOgogICAgIHZpcnR1YWwgaW50IHRhZ1ByaW9yaXR5
KCkgY29uc3QgeyByZXR1cm4gNjsgfQogICAgIHZpcnR1YWwgYm9vbCBjaGVja0RURChjb25zdCBO
b2RlKiBuZXdDaGlsZCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxl
bWVudC5oIGIvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaAppbmRleCBlMjJiNWQ1
Li5mOTg5M2FlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5o
CisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmgKQEAgLTUyLDYgKzUyLDkg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGlzVGV4dEZvcm1Db250cm9sKCkgY29uc3Qg
eyByZXR1cm4gdHJ1ZTsgfQogCisgICAgdmlydHVhbCBib29sIGlzT3B0aW9uYWxGb3JtQ29udHJv
bCgpIGNvbnN0IHsgcmV0dXJuICFpc1JlcXVpcmVkRm9ybUNvbnRyb2woKTsgfQorICAgIHZpcnR1
YWwgYm9vbCBpc1JlcXVpcmVkRm9ybUNvbnRyb2woKSBjb25zdCB7IHJldHVybiByZXF1aXJlZCgp
OyB9CisKICAgICBpbnQgc2VsZWN0aW9uU3RhcnQoKTsKICAgICBpbnQgc2VsZWN0aW9uRW5kKCk7
CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmlkbCBiL1dl
YkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmlkbAppbmRleCBmNmFjMDVhLi5iYThhMDYy
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5pZGwKKysrIGIv
V2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaWRsCkBAIC0zNiw2ICszNiw3IEBAIG1v
ZHVsZSBodG1sIHsKICAgICAgICAgICAgICAgICAgYXR0cmlidXRlICBib29sZWFuICAgICAgICAg
ICAgICBhdXRvZm9jdXM7CiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSAgW0NvbnZlcnROdWxs
VG9OdWxsU3RyaW5nXSBET01TdHJpbmcgICAgICAgICAgICBuYW1lOwogICAgICAgICAgICAgICAg
ICBhdHRyaWJ1dGUgIGJvb2xlYW4gICAgICAgICAgICAgIHJlYWRPbmx5OworICAgICAgICAgICAg
ICAgICBhdHRyaWJ1dGUgIGJvb2xlYW4gICAgICAgICAgICAgIHJlcXVpcmVkOwogICAgICAgICAg
ICAgICAgICBhdHRyaWJ1dGUgIGxvbmcgICAgICAgICAgICAgICAgIHJvd3M7CiAgICAgICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSAgRE9NU3RyaW5nICAgICAgICAgICAgdHlwZTsKICAgICAgICAgICAg
ICAgICAgYXR0cmlidXRlICBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyAgICAg
ICAgICAgIHZhbHVlOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL1ZhbGlkaXR5U3RhdGUuY3Bw
IGIvV2ViQ29yZS9odG1sL1ZhbGlkaXR5U3RhdGUuY3BwCmluZGV4IDhmZjYyOWMuLmZjYzZlMDUg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9WYWxpZGl0eVN0YXRlLmNwcAorKysgYi9XZWJDb3Jl
L2h0bWwvVmFsaWRpdHlTdGF0ZS5jcHAKQEAgLTIyLDE2ICsyMiw1NyBAQAogCiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiVmFsaWRpdHlTdGF0ZS5oIgorI2luY2x1ZGUgIkRvY3VtZW50
LmgiCisjaW5jbHVkZSAiRmlsZUxpc3QuaCIKICNpbmNsdWRlICJIVE1MRm9ybUNvbnRyb2xFbGVt
ZW50LmgiCisjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxOYW1l
cy5oIgorI2luY2x1ZGUgIkhUTUxUZXh0QXJlYUVsZW1lbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCit1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOworCiBWYWxpZGl0eVN0YXRlOjpWYWxp
ZGl0eVN0YXRlKEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqIHBhcmVudCkKICAgICA6IG1fY29udHJv
bChwYXJlbnQpCiB7CiAgICAgQVNTRVJUKHBhcmVudCk7CiB9CiAKK2Jvb2wgVmFsaWRpdHlTdGF0
ZTo6dmFsdWVNaXNzaW5nKCkKK3sKKyAgICBpZiAoIWNvbnRyb2woKS0+aXNSZXF1aXJlZEZvcm1D
b250cm9sKCkgfHwgY29udHJvbCgpLT5kaXNhYmxlZCgpIHx8IGNvbnRyb2woKS0+aXNSZWFkT25s
eUZvcm1Db250cm9sKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChjb250cm9s
KCktPmhhc1RhZ05hbWUoaW5wdXRUYWcpKSB7CisgICAgICAgIEhUTUxJbnB1dEVsZW1lbnQqIGkg
PSBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4oY29udHJvbCgpKTsKKworICAgICAgICBz
d2l0Y2ggKGktPmlucHV0VHlwZSgpKSB7CisgICAgICAgICAgICBjYXNlIEhUTUxJbnB1dEVsZW1l
bnQ6OlRFWFQ6CisgICAgICAgICAgICBjYXNlIEhUTUxJbnB1dEVsZW1lbnQ6OlNFQVJDSDoKKyAg
ICAgICAgICAgIGNhc2UgSFRNTElucHV0RWxlbWVudDo6VVJMOgorICAgICAgICAgICAgY2FzZSBI
VE1MSW5wdXRFbGVtZW50OjpURUxFUEhPTkU6CisgICAgICAgICAgICBjYXNlIEhUTUxJbnB1dEVs
ZW1lbnQ6OkVNQUlMOgorICAgICAgICAgICAgY2FzZSBIVE1MSW5wdXRFbGVtZW50OjpQQVNTV09S
RDoKKyAgICAgICAgICAgIGNhc2UgSFRNTElucHV0RWxlbWVudDo6TlVNQkVSOgorICAgICAgICAg
ICAgICAgIHJldHVybiBpLT52YWx1ZSgpLmlzRW1wdHkoKTsKKyAgICAgICAgICAgIGNhc2UgSFRN
TElucHV0RWxlbWVudDo6RklMRToKKyAgICAgICAgICAgICAgICByZXR1cm4gaS0+ZmlsZXMoKS0+
aXNFbXB0eSgpOworICAgICAgICAgICAgY2FzZSBIVE1MSW5wdXRFbGVtZW50OjpDSEVDS0JPWDoK
KyAgICAgICAgICAgICAgICByZXR1cm4gIWktPmNoZWNrZWQoKTsKKyAgICAgICAgICAgIGNhc2Ug
SFRNTElucHV0RWxlbWVudDo6UkFESU86CisgICAgICAgICAgICAgICAgcmV0dXJuICFpLT5kb2N1
bWVudCgpLT5jaGVja2VkUmFkaW9CdXR0b25zKCkuY2hlY2tlZEJ1dHRvbkZvckdyb3VwKGktPm5h
bWUoKSk7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChjb250cm9sKCktPmhhc1RhZ05hbWUodGV4
dGFyZWFUYWcpKQorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTFRleHRBcmVhRWxlbWVu
dCo+KGNvbnRyb2woKSktPnZhbHVlKCkuaXNFbXB0eSgpOworCisgICAgcmV0dXJuIGZhbHNlOwor
fQorCiBib29sIFZhbGlkaXR5U3RhdGU6OnZhbGlkKCkKIHsKICAgICBib29sIHNvbWVFcnJvciA9
IHR5cGVNaXNtYXRjaCgpIHx8IHN0ZXBNaXNtYXRjaCgpIHx8IHJhbmdlVW5kZXJmbG93KCkgfHwg
cmFuZ2VPdmVyZmxvdygpIHx8CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvVmFsaWRpdHlTdGF0
ZS5oIGIvV2ViQ29yZS9odG1sL1ZhbGlkaXR5U3RhdGUuaAppbmRleCBhMDExZjdhLi45MDAwODAw
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvVmFsaWRpdHlTdGF0ZS5oCisrKyBiL1dlYkNvcmUv
aHRtbC9WYWxpZGl0eVN0YXRlLmgKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiAgICAgICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqIGNvbnRyb2woKSBjb25zdCB7IHJl
dHVybiBtX2NvbnRyb2w7IH0KIAotICAgICAgICBib29sIHZhbHVlTWlzc2luZygpIHsgcmV0dXJu
IGZhbHNlOyB9CisgICAgICAgIGJvb2wgdmFsdWVNaXNzaW5nKCk7CiAgICAgICAgIGJvb2wgdHlw
ZU1pc21hdGNoKCkgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgYm9vbCBwYXR0ZXJuTWlzbWF0
Y2goKSB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICBib29sIHRvb0xvbmcoKSB7IHJldHVybiBm
YWxzZTsgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>32950</attachid>
            <date>2009-07-17 09:52:25 -0700</date>
            <delta_ts>2009-07-17 15:05:48 -0700</delta_ts>
            <desc>Proposed patch, rev. 4b</desc>
            <filename>25551.patch</filename>
            <type>text/plain</type>
            <size>46365</size>
            <attacher name="Michelangelo De Simone">michelangelo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2MzdiZGQzLi41MzhmOWJlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDggQEAKKzIwMDktMDct
MTcgIE1pY2hlbGFuZ2VsbyBEZSBTaW1vbmUgIDxtaWNkZXNpbUBnbWFpbC5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1NTUxCisgICAgICAgIFRlc3Qgc3VpdGUgZm9yIHRo
ZSByZXF1aXJlZCBhdHRyaWJ1dGUsIHRoZSB2YWx1ZU1pc3NpbmcgZmxhZyBhbmQgbmV3CisgICAg
ICAgIDpyZXF1aXJlZCBhbmQgOm9wdGlvbmFsIENTUyBwc2V1ZG9jbGFzc2VzLgorICAgICAgICBQ
YXJ0IG9mIHRoZSBIVE1MNSBzZWMuIEZvcm1zLgorICAgICAgICBodHRwOi8vd3d3LndoYXR3Zy5v
cmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS9mb3Jtcy5odG1sI2F0dHIt
aW5wdXQtcmVxdWlyZWQKKworICAgICAgICAqIGZhc3QvY3NzL3BzZXVkby1yZXF1aXJlZC1vcHRp
b25hbC0wMDEtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9wc2V1ZG8t
cmVxdWlyZWQtb3B0aW9uYWwtMDAxLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL3Bz
ZXVkby1yZXF1aXJlZC1vcHRpb25hbC0wMDItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2Nzcy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9uYWwtMDAyLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvY3NzL3BzZXVkby1yZXF1aXJlZC1vcHRpb25hbC0wMDMtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9uYWwtMDAz
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL3BzZXVkby1yZXF1aXJlZC1vcHRpb25h
bC0wMDQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9wc2V1ZG8tcmVx
dWlyZWQtb3B0aW9uYWwtMDA0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL3BzZXVk
by1yZXF1aXJlZC1vcHRpb25hbC0wMDUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2Nzcy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9uYWwtMDA1Lmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvY3NzL3BzZXVkby1yZXF1aXJlZC1vcHRpb25hbC0wMDYtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9uYWwtMDA2Lmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3Np
bmctMDAxLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9WYWxpZGl0
eVN0YXRlLXZhbHVlTWlzc2luZy0wMDEuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jt
cy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2luZy0wMDItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwMi5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAw
My1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvVmFsaWRpdHlTdGF0
ZS12YWx1ZU1pc3NpbmctMDAzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvVmFs
aWRpdHlTdGF0ZS12YWx1ZU1pc3NpbmctMDA0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2luZy0wMDQuaHRtbDogQWRkZWQu
CisgICAgICAgICogZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2luZy0wMDUtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFs
dWVNaXNzaW5nLTAwNS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL1ZhbGlkaXR5
U3RhdGUtdmFsdWVNaXNzaW5nLTAwNi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3NpbmctMDA2Lmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3NpbmctMDA3LWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlz
c2luZy0wMDcuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRl
LXZhbHVlTWlzc2luZy0wMDgtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zv
cm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwOC5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwOS1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3Npbmct
MDA5Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvcmVxdWlyZWQtYXR0cmlidXRl
LTAwMS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvcmVxdWlyZWQt
YXR0cmlidXRlLTAwMS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL3JlcXVpcmVk
LWF0dHJpYnV0ZS0wMDItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1z
L3JlcXVpcmVkLWF0dHJpYnV0ZS0wMDIuaHRtbDogQWRkZWQuCisKIDIwMDktMDctMTcgIEtlbm5l
dGggUm9oZGUgQ2hyaXN0aWFuc2VuICA8a2VubmV0aC5jaHJpc3RpYW5zZW5Ab3BlbmJvc3NhLm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvY3NzL3BzZXVkby1yZXF1aXJlZC1vcHRpb25hbC0wMDEtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvcHNldWRvLXJlcXVpcmVkLW9wdGlvbmFsLTAwMS1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTk2OTNjMgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3BzZXVkby1yZXF1aXJlZC1v
cHRpb25hbC0wMDEtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorQWxsIGNvbnRyb2xzIHNo
b3VsZCBoYXZlIGEgZ3JlZW4gYmFja2dyb3VuZC4KKworIAorU1VDQ0VTUworU1VDQ0VTUwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvcHNldWRvLXJlcXVpcmVkLW9wdGlvbmFsLTAw
MS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvcHNldWRvLXJlcXVpcmVkLW9wdGlvbmFsLTAw
MS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4ODIwOTUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9u
YWwtMDAxLmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5yZXF1
aXJlZC9vcHRpb25hbCBDU1MgcHNldWRvY2xhc3NlczwvdGl0bGU+Cis8c3R5bGU+CisgaW5wdXQ6
cmVxdWlyZWQgeyBiYWNrZ3JvdW5kOiBsaW1lOyB9CisgdGV4dGFyZWE6cmVxdWlyZWQgeyBiYWNr
Z3JvdW5kOiBsaW1lOyB9CisgaW5wdXQgeyBiYWNrZ3JvdW5kOiByZWQ7IH0KKyB0ZXh0YXJlYSB7
IGJhY2tncm91bmQ6IHJlZDsgfQorIGlucHV0Om9wdGlvbmFsIHsgYmFja2dyb3VuZDogcmVkOyB9
CisgdGV4dGFyZWE6b3B0aW9uYWwgeyBiYWNrZ3JvdW5kOiByZWQ7IH0KKzwvc3R5bGU+Cis8c2Ny
aXB0IGxhbmd1YWdlPSJKYXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgIGZ1
bmN0aW9uIGxvZyhtZXNzYWdlKSB7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJj
b25zb2xlIikuaW5uZXJIVE1MICs9ICI8bGk+IittZXNzYWdlKyI8L2xpPiI7CisgICAgfQorCisg
ICAgZnVuY3Rpb24gdGVzdCgpIHsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKwor
ICAgICAgICB2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoInZpY3RpbSIpOworCisgICAg
ICAgIGZvciAoaSA9IDA7IGkgPCB2Lmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgaWYgKGRvY3Vt
ZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUodltpXSwgbnVsbCkuZ2V0UHJvcGVydHlW
YWx1ZSgnYmFja2dyb3VuZC1jb2xvcicpID09ICJyZ2IoMCwgMjU1LCAwKSIpCisgICAgICAgICAg
ICAgICAgbG9nKCJTVUNDRVNTIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
bG9nKCJGQUlMVVJFIik7CisgICAgfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9
InRlc3QoKSI+Cis8cD5BbGwgY29udHJvbHMgc2hvdWxkIGhhdmUgYSBncmVlbiBiYWNrZ3JvdW5k
LjwvcD4KKzxpbnB1dCBuYW1lPSJ2aWN0aW0iIHJlcXVpcmVkIC8+Cis8dGV4dGFyZWEgbmFtZT0i
dmljdGltIiByZXF1aXJlZCAvPjwvdGV4dGFyZWE+Cis8aHI+Cis8b2wgaWQ9ImNvbnNvbGUiPjwv
b2w+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9w
c2V1ZG8tcmVxdWlyZWQtb3B0aW9uYWwtMDAyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zh
c3QvY3NzL3BzZXVkby1yZXF1aXJlZC1vcHRpb25hbC0wMDItZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5NjkzYzIKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2Nzcy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9uYWwtMDAyLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDUgQEAKK0FsbCBjb250cm9scyBzaG91bGQgaGF2ZSBhIGdyZWVuIGJh
Y2tncm91bmQuCisKKyAKK1NVQ0NFU1MKK1NVQ0NFU1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvY3NzL3BzZXVkby1yZXF1aXJlZC1vcHRpb25hbC0wMDIuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvY3NzL3BzZXVkby1yZXF1aXJlZC1vcHRpb25hbC0wMDIuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi40MTM2MDQwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9jc3MvcHNldWRvLXJlcXVpcmVkLW9wdGlvbmFsLTAwMi5odG1sCkBAIC0wLDAg
KzEsMzYgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+cmVxdWlyZWQvb3B0aW9uYWwgQ1NTIHBz
ZXVkb2NsYXNzZXMgcGFydCAyPC90aXRsZT4KKzxzdHlsZT4KKyBpbnB1dDpvcHRpb25hbCB7IGJh
Y2tncm91bmQ6IGxpbWU7IH0KKyB0ZXh0YXJlYTpvcHRpb25hbCB7IGJhY2tncm91bmQ6IGxpbWU7
IH0KKyBpbnB1dCB7IGJhY2tncm91bmQ6IHJlZDsgfQorIHRleHRhcmVhIHsgYmFja2dyb3VuZDog
cmVkOyB9Cis8L3N0eWxlPgorPHNjcmlwdCBsYW5ndWFnZT0iSmF2YVNjcmlwdCIgdHlwZT0idGV4
dC9qYXZhc2NyaXB0Ij4KKyAgICBmdW5jdGlvbiBsb2cobWVzc2FnZSkgeworICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmlubmVySFRNTCArPSAiPGxpPiIrbWVzc2Fn
ZSsiPC9saT4iOworICAgIH0KKworICAgIGZ1bmN0aW9uIHRlc3QoKSB7CisgICAgICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICAgICAgdiA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlO
YW1lKCJ2aWN0aW0iKTsKKworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdi5sZW5ndGg7IGkrKykK
KyAgICAgICAgICAgIGlmIChkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHZb
aV0sIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JhY2tncm91bmQtY29sb3InKSA9PSAicmdiKDAs
IDI1NSwgMCkiKQorICAgICAgICAgICAgICAgIGxvZygiU1VDQ0VTUyIpOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIGxvZygiRkFJTFVSRSIpOworICAgIH0KKzwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgorPHA+QWxsIGNvbnRyb2xzIHNob3VsZCBo
YXZlIGEgZ3JlZW4gYmFja2dyb3VuZC48L3A+Cis8aW5wdXQgbmFtZT0idmljdGltIi8+Cis8dGV4
dGFyZWEgbmFtZT0idmljdGltIiAvPjwvdGV4dGFyZWE+Cis8aHI+Cis8b2wgaWQ9ImNvbnNvbGUi
Pjwvb2w+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nz
cy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9uYWwtMDAzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2Zhc3QvY3NzL3BzZXVkby1yZXF1aXJlZC1vcHRpb25hbC0wMDMtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwZGVmZjAKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9uYWwtMDAzLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDYgQEAKK0FsbCBjb250cm9scyBzaG91bGQgaGF2ZSBhIGdyZWVu
IGJhY2tncm91bmQuCisKKyAgCitTVUNDRVNTCitTVUNDRVNTCitTVUNDRVNTCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9uYWwtMDAzLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9uYWwtMDAzLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTk3YjFhMwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3BzZXVkby1yZXF1aXJlZC1vcHRpb25hbC0wMDMu
aHRtbApAQCAtMCwwICsxLDM3IEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPnJlcXVpcmVkL29w
dGlvbmFsIENTUyBwc2V1ZG9jbGFzc2VzIHBhcnQgMzwvdGl0bGU+Cis8c3R5bGU+CisgaW5wdXQ6
cmVxdWlyZWQgeyBiYWNrZ3JvdW5kOiBsaW1lOyB9CisgdGV4dGFyZWE6cmVxdWlyZWQgeyBiYWNr
Z3JvdW5kOiBsaW1lOyB9CisgaW5wdXQgeyBiYWNrZ3JvdW5kOiByZWQ7IH0KKyB0ZXh0YXJlYSB7
IGJhY2tncm91bmQ6IHJlZDsgfQorPC9zdHlsZT4KKzxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3Jp
cHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpIHsK
KyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5pbm5lckhUTUwgKz0g
IjxsaT4iK21lc3NhZ2UrIjwvbGk+IjsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0KCkgewor
ICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgICAgIHYgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5TmFtZSgidmljdGltIik7CisKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IHYu
bGVuZ3RoOyBpKyspCisgICAgICAgICAgICBpZiAoZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29t
cHV0ZWRTdHlsZSh2W2ldLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdiYWNrZ3JvdW5kLWNvbG9y
JykgPT0gInJnYigwLCAyNTUsIDApIikKKyAgICAgICAgICAgICAgICBsb2coIlNVQ0NFU1MiKTsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBsb2coIkZBSUxVUkUiKTsKKyAgICB9
Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0idGVzdCgpIj4KKzxwPkFsbCBjb250
cm9scyBzaG91bGQgaGF2ZSBhIGdyZWVuIGJhY2tncm91bmQuPC9wPgorPGlucHV0IG5hbWU9InZp
Y3RpbSIgcmVxdWlyZWQgLz4KKzx0ZXh0YXJlYSBuYW1lPSJ2aWN0aW0iIHJlcXVpcmVkIGRpc2Fi
bGVkLz48L3RleHRhcmVhPgorPHRleHRhcmVhIG5hbWU9InZpY3RpbSIgcmVxdWlyZWQgcmVhZG9u
bHkvPjwvdGV4dGFyZWE+Cis8aHI+Cis8b2wgaWQ9ImNvbnNvbGUiPjwvb2w+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9wc2V1ZG8tcmVxdWlyZWQt
b3B0aW9uYWwtMDA0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3BzZXVkby1y
ZXF1aXJlZC1vcHRpb25hbC0wMDQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLmE2MWQxMzQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2Nzcy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9uYWwtMDA0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDggQEAKK0FsbCBjb250cm9scyBzaG91bGQgaGF2ZSBhIGdyZWVuIGJhY2tncm91bmQuCisKK0xv
cmVtIGlwc3VtICAgIAorU1VDQ0VTUworU1VDQ0VTUworU1VDQ0VTUworU1VDQ0VTUworU1VDQ0VT
UwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvcHNldWRvLXJlcXVpcmVkLW9wdGlv
bmFsLTAwNC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvcHNldWRvLXJlcXVpcmVkLW9wdGlv
bmFsLTAwNC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2NWEyNWQK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9wc2V1ZG8tcmVxdWlyZWQt
b3B0aW9uYWwtMDA0Lmh0bWwKQEAgLTAsMCArMSw0NyBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRs
ZT5yZXF1aXJlZC9vcHRpb25hbCBDU1MgcHNldWRvY2xhc3NlcyBwYXJ0IDQ8L3RpdGxlPgorPHN0
eWxlPgorIGJ1dHRvbjpvcHRpb25hbCB7IGJhY2tncm91bmQ6IGxpbWU7IH0KKyBpbnB1dDpvcHRp
b25hbCB7IGJhY2tncm91bmQ6IGxpbWU7IH0KKyBzZWxlY3Q6b3B0aW9uYWwgeyBiYWNrZ3JvdW5k
OiBsaW1lOyB9CisgdGV4dGFyZWE6b3B0aW9uYWwgeyBiYWNrZ3JvdW5kOiBsaW1lOyB9CisgYnV0
dG9uIHsgYmFja2dyb3VuZDogcmVkOyB9CisgaW5wdXQgeyBiYWNrZ3JvdW5kOiByZWQ7IH0KKyBz
ZWxlY3QgeyBiYWNrZ3JvdW5kOiByZWQ7IH0KKyB0ZXh0YXJlYSB7IGJhY2tncm91bmQ6IHJlZDsg
fQorIGJ1dHRvbjpyZXF1aXJlZCB7IGJhY2tncm91bmQ6IHJlZDsgfQorIGlucHV0OnJlcXVpcmVk
IHsgYmFja2dyb3VuZDogcmVkOyB9Cisgc2VsZWN0OnJlcXVpcmVkIHsgYmFja2dyb3VuZDogcmVk
OyB9CisgdGV4dGFyZWE6cmVxdWlyZWQgeyBiYWNrZ3JvdW5kOiByZWQ7IH0KKzwvc3R5bGU+Cis8
c2NyaXB0IGxhbmd1YWdlPSJKYXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAg
IGZ1bmN0aW9uIGxvZyhtZXNzYWdlKSB7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJjb25zb2xlIikuaW5uZXJIVE1MICs9ICI8bGk+IittZXNzYWdlKyI8L2xpPiI7CisgICAgfQor
CisgICAgZnVuY3Rpb24gdGVzdCgpIHsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
KworICAgICAgICB2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoInZpY3RpbSIpOworCisg
ICAgICAgIGZvciAoaSA9IDA7IGkgPCB2Lmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgaWYgKGRv
Y3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUodltpXSwgbnVsbCkuZ2V0UHJvcGVy
dHlWYWx1ZSgnYmFja2dyb3VuZC1jb2xvcicpID09ICJyZ2IoMCwgMjU1LCAwKSIpCisgICAgICAg
ICAgICAgICAgbG9nKCJTVUNDRVNTIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgbG9nKCJGQUlMVVJFIik7CisgICAgfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxv
YWQ9InRlc3QoKSI+Cis8cD5BbGwgY29udHJvbHMgc2hvdWxkIGhhdmUgYSBncmVlbiBiYWNrZ3Jv
dW5kLjwvcD4KKzxidXR0b24gdHlwZT0iYnV0dG9uIiBuYW1lPSJ2aWN0aW0iPkxvcmVtIGlwc3Vt
PC9idXR0b24+Cis8aW5wdXQgbmFtZT0idmljdGltIiBkaXNhYmxlZC8+Cis8aW5wdXQgdHlwZT0i
YnV0dG9uIiBuYW1lPSJ2aWN0aW0iLz4KKzxzZWxlY3QgbmFtZT0idmljdGltIj48L3NlbGVjdD4K
Kzx0ZXh0YXJlYSBuYW1lPSJ2aWN0aW0iPjwvdGV4dGFyZWE+Cis8aHI+Cis8b2wgaWQ9ImNvbnNv
bGUiPjwvb2w+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2Nzcy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9uYWwtMDA1LWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2Zhc3QvY3NzL3BzZXVkby1yZXF1aXJlZC1vcHRpb25hbC0wMDUtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzZjM2NGMKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9uYWwtMDA1LWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDggQEAKK0FsbCBjb250cm9scyBzaG91bGQgaGF2ZSBhIGdy
ZWVuIGJhY2tncm91bmQuCisKKyAgICAKK1NVQ0NFU1MKK1NVQ0NFU1MKK1NVQ0NFU1MKK1NVQ0NF
U1MKK1NVQ0NFU1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL3BzZXVkby1yZXF1
aXJlZC1vcHRpb25hbC0wMDUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3BzZXVkby1yZXF1
aXJlZC1vcHRpb25hbC0wMDUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li4yNWFiNDQ1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvcHNldWRv
LXJlcXVpcmVkLW9wdGlvbmFsLTAwNS5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzxodG1sPgorPGhl
YWQ+Cis8dGl0bGU+cmVxdWlyZWQvb3B0aW9uYWwgQ1NTIHBzZXVkb2NsYXNzZXMgcGFydCA1PC90
aXRsZT4KKzxzdHlsZT4KKyBpbnB1dDpvcHRpb25hbCB7IGJhY2tncm91bmQ6IGxpbWU7IH0KKyBp
bnB1dCB7IGJhY2tncm91bmQ6IHJlZDsgfQorIGlucHV0OnJlcXVpcmVkIHsgYmFja2dyb3VuZDog
cmVkOyB9Cis8L3N0eWxlPgorPHNjcmlwdCBsYW5ndWFnZT0iSmF2YVNjcmlwdCIgdHlwZT0idGV4
dC9qYXZhc2NyaXB0Ij4KKyAgICBmdW5jdGlvbiBsb2cobWVzc2FnZSkgeworICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmlubmVySFRNTCArPSAiPGxpPiIrbWVzc2Fn
ZSsiPC9saT4iOworICAgIH0KKworICAgIGZ1bmN0aW9uIHRlc3QoKSB7CisgICAgICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICAgICAgdiA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlO
YW1lKCJ2aWN0aW0iKTsKKworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdi5sZW5ndGg7IGkrKykK
KyAgICAgICAgICAgIGlmIChkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHZb
aV0sIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JhY2tncm91bmQtY29sb3InKSA9PSAicmdiKDAs
IDI1NSwgMCkiKQorICAgICAgICAgICAgICAgIGxvZygiU1VDQ0VTUyIpOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIGxvZygiRkFJTFVSRSIpOworICAgIH0KKzwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgorPHA+QWxsIGNvbnRyb2xzIHNob3VsZCBo
YXZlIGEgZ3JlZW4gYmFja2dyb3VuZC48L3A+Cis8aW5wdXQgdHlwZT0icmFuZ2UiIG5hbWU9InZp
Y3RpbSIgcmVxdWlyZWQvPgorPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0idmljdGltIiByZXF1
aXJlZC8+Cis8aW5wdXQgdHlwZT0iaW1hZ2UiIG5hbWU9InZpY3RpbSIgcmVxdWlyZWQvPgorPGlu
cHV0IHR5cGU9InJlc2V0IiBuYW1lPSJ2aWN0aW0iIHJlcXVpcmVkLz4KKzxpbnB1dCB0eXBlPSJi
dXR0b24iIG5hbWU9InZpY3RpbSIgcmVxdWlyZWQvPgorPGhyPgorPG9sIGlkPSJjb25zb2xlIj48
L29sPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3Mv
cHNldWRvLXJlcXVpcmVkLW9wdGlvbmFsLTAwNi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9m
YXN0L2Nzcy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9uYWwtMDA2LWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMzg4MzdlCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9jc3MvcHNldWRvLXJlcXVpcmVkLW9wdGlvbmFsLTAwNi1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxMyBAQAorQWxsIGNvbnRyb2xzIHNob3VsZCBoYXZlIGEgZ3JlZW4g
YmFja2dyb3VuZC4KKworICAgICAgICAgCitTVUNDRVNTCitTVUNDRVNTCitTVUNDRVNTCitTVUND
RVNTCitTVUNDRVNTCitTVUNDRVNTCitTVUNDRVNTCitTVUNDRVNTCitTVUNDRVNTCitTVUNDRVNT
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9u
YWwtMDA2Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9u
YWwtMDA2Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjNjY2VmYwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3BzZXVkby1yZXF1aXJlZC1v
cHRpb25hbC0wMDYuaHRtbApAQCAtMCwwICsxLDQ0IEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxl
PnJlcXVpcmVkL29wdGlvbmFsIENTUyBwc2V1ZG9jbGFzc2VzIHBhcnQgNjwvdGl0bGU+Cis8c3R5
bGU+CisgaW5wdXQ6b3B0aW9uYWwgeyBiYWNrZ3JvdW5kOiByZWQ7IH0KKyBpbnB1dCB7IGJhY2tn
cm91bmQ6IHJlZDsgfQorIGlucHV0OnJlcXVpcmVkIHsgYmFja2dyb3VuZDogbGltZTsgfQorPC9z
dHlsZT4KKzxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlw
dCI+CisgICAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImNvbnNvbGUiKS5pbm5lckhUTUwgKz0gIjxsaT4iK21lc3NhZ2UrIjwvbGk+IjsK
KyAgICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0KCkgeworICAgICAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOworCisgICAgICAgIHYgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgidmljdGlt
Iik7CisKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IHYubGVuZ3RoOyBpKyspCisgICAgICAgICAg
ICBpZiAoZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZSh2W2ldLCBudWxsKS5n
ZXRQcm9wZXJ0eVZhbHVlKCdiYWNrZ3JvdW5kLWNvbG9yJykgPT0gInJnYigwLCAyNTUsIDApIikK
KyAgICAgICAgICAgICAgICBsb2coIlNVQ0NFU1MiKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICBsb2coIkZBSUxVUkUiKTsKKyAgICB9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5IG9ubG9hZD0idGVzdCgpIj4KKzxwPkFsbCBjb250cm9scyBzaG91bGQgaGF2ZSBhIGdyZWVu
IGJhY2tncm91bmQuPC9wPgorPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InZpY3RpbSIgcmVxdWly
ZWQvPgorPGlucHV0IHR5cGU9InBhc3N3b3JkIiBuYW1lPSJ2aWN0aW0iIHJlcXVpcmVkLz4KKzxp
bnB1dCB0eXBlPSJzZWFyY2giIG5hbWU9InZpY3RpbSIgcmVxdWlyZWQvPgorPGlucHV0IHR5cGU9
InVybCIgbmFtZT0idmljdGltIiByZXF1aXJlZC8+Cis8aW5wdXQgdHlwZT0idGVsZXBob25lIiBu
YW1lPSJ2aWN0aW0iIHJlcXVpcmVkLz4KKzxpbnB1dCB0eXBlPSJlbWFpbCIgbmFtZT0idmljdGlt
IiByZXF1aXJlZC8+Cis8aW5wdXQgdHlwZT0ibnVtYmVyIiBuYW1lPSJ2aWN0aW0iIHJlcXVpcmVk
Lz4KKzxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0idmljdGltIiByZXF1aXJlZC8+Cis8aW5w
dXQgdHlwZT0icmFkaW8iIG5hbWU9InZpY3RpbSIgcmVxdWlyZWQvPgorPGlucHV0IHR5cGU9ImZp
bGUiIG5hbWU9InZpY3RpbSIgcmVxdWlyZWQvPgorCis8aHI+Cis8b2wgaWQ9ImNvbnNvbGUiPjwv
b2w+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwMS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwMS1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjA2OWE3NAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3Npbmct
MDAxLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKK1RoZXJlIGFyZSB0d28gZm9ybSBjb250
cm9sIGVsZW1lbnRzIGJlbG93LCBib3RoIHJlcXVpcmVkIGFuZCBibGFuazogdmFsaWRpdHkudmFs
dWVNaXNzaW5nIHNob3VsZCBiZSB0cnVlIGluIGJvdGggY2FzZXMuCisKKyAKK1NVQ0NFU1MKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3Np
bmctMDAxLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVN
aXNzaW5nLTAwMS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRjODg4
NzkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3Rh
dGUtdmFsdWVNaXNzaW5nLTAwMS5odG1sCkBAIC0wLDAgKzEsMjcgQEAKKzxodG1sPgorPGhlYWQ+
Cis8dGl0bGU+cmVxdWlyZWQgYW5kIGJhc2ljIHZhbHVlTWlzc2luZzwvdGl0bGU+Cis8c2NyaXB0
IGxhbmd1YWdlPSJKYXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgIGZ1bmN0
aW9uIGxvZyhtZXNzYWdlKSB7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25z
b2xlIikuaW5uZXJIVE1MICs9ICI8bGk+IittZXNzYWdlKyI8L2xpPiI7CisgICAgfQorCisgICAg
ZnVuY3Rpb24gdGVzdCgpIHsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAg
ICAgICB2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoInZpY3RpbSIpOworCisgICAgICAg
IGxvZygodlswXS52YWxpZGl0eS52YWx1ZU1pc3NpbmcgJiYgdlsxXS52YWxpZGl0eS52YWx1ZU1p
c3NpbmcpID8gIlNVQ0NFU1MiIDogIkZBSUxVUkUiKTsKKyAgICB9Cis8L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5IG9ubG9hZD0idGVzdCgpIj4KKzxwPlRoZXJlIGFyZSB0d28gZm9ybSBjb250cm9s
IGVsZW1lbnRzIGJlbG93LCBib3RoIHJlcXVpcmVkIGFuZCBibGFuazoKK3ZhbGlkaXR5LnZhbHVl
TWlzc2luZyBzaG91bGQgYmUgdHJ1ZSBpbiBib3RoIGNhc2VzLjwvcD4KKzxpbnB1dCBuYW1lPSJ2
aWN0aW0iIHJlcXVpcmVkLz4KKzx0ZXh0YXJlYSBuYW1lPSJ2aWN0aW0iIHJlcXVpcmVkPjwvdGV4
dGFyZWE+Cis8aHI+Cis8b2wgaWQ9ImNvbnNvbGUiPjwvb2w+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNz
aW5nLTAwMi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3Rh
dGUtdmFsdWVNaXNzaW5nLTAwMi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uMzYwNjliOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3NpbmctMDAyLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDQgQEAKK1RoZXJlIGFyZSB0d28gZm9ybSBjb250cm9sIGVsZW1lbnRzIGJlbG93LCBib3Ro
IHJlcXVpcmVkIGFuZCB3aXRoIHNvbWUgdmFsdWU6IHZhbGlkaXR5LnZhbHVlTWlzc2luZyBzaG91
bGQgYmUgZmFsc2UgaW4gYm90aCBjYXNlcy4KKworIAorU1VDQ0VTUwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2luZy0wMDIuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3NpbmctMDAyLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmYwNmY5ZgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3Np
bmctMDAyLmh0bWwKQEAgLTAsMCArMSwyNyBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5yZXF1
aXJlZCBhbmQgYmFzaWMgdmFsdWVNaXNzaW5nIDI8L3RpdGxlPgorPHNjcmlwdCBsYW5ndWFnZT0i
SmF2YVNjcmlwdCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICBmdW5jdGlvbiBsb2cobWVz
c2FnZSkgeworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmlubmVy
SFRNTCArPSAiPGxpPiIrbWVzc2FnZSsiPC9saT4iOworICAgIH0KKworICAgIGZ1bmN0aW9uIHRl
c3QoKSB7CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICAgICAgdiA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKCJ2aWN0aW0iKTsKKworICAgICAgICBsb2coKCF2WzBd
LnZhbGlkaXR5LnZhbHVlTWlzc2luZyAmJiAhdlsxXS52YWxpZGl0eS52YWx1ZU1pc3NpbmcpID8g
IlNVQ0NFU1MiIDogIkZBSUxVUkUiKTsKKyAgICB9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
IG9ubG9hZD0idGVzdCgpIj4KKzxwPlRoZXJlIGFyZSB0d28gZm9ybSBjb250cm9sIGVsZW1lbnRz
IGJlbG93LCBib3RoIHJlcXVpcmVkIGFuZCB3aXRoIHNvbWUgdmFsdWU6Cit2YWxpZGl0eS52YWx1
ZU1pc3Npbmcgc2hvdWxkIGJlIGZhbHNlIGluIGJvdGggY2FzZXMuPC9wPgorPGlucHV0IG5hbWU9
InZpY3RpbSIgdmFsdWU9InNvbWV0aGluZyIgcmVxdWlyZWQvPgorPHRleHRhcmVhIG5hbWU9InZp
Y3RpbSIgcmVxdWlyZWQ+c29tZXRoaW5nPC90ZXh0YXJlYT4KKzxocj4KKzxvbCBpZD0iY29uc29s
ZSI+PC9vbD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3NpbmctMDAzLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3NpbmctMDAzLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZmUzMzk4Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlz
c2luZy0wMDMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorVGhlcmUgYXJlIHR3byBkaXNh
YmxlZCBmb3JtIGNvbnRyb2wgZWxlbWVudHMgYmVsb3csIGJvdGggcmVxdWlyZWQgYW5kIHdpdGgg
c29tZSB2YWx1ZTogdmFsaWRpdHkudmFsdWVNaXNzaW5nIHNob3VsZCBiZSBmYWxzZSBpbiBib3Ro
IGNhc2VzLgorCisgCitTVUNDRVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwMy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9m
b3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2luZy0wMDMuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi45ZDkyZmZiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2luZy0wMDMuaHRtbApAQCAtMCww
ICsxLDI3IEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPnJlcXVpcmVkIGFuZCB2YWx1ZU1pc3Np
bmcgb24gZGlzYWJsZWQgZWxlbWVudHM8L3RpdGxlPgorPHNjcmlwdCBsYW5ndWFnZT0iSmF2YVNj
cmlwdCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICBmdW5jdGlvbiBsb2cobWVzc2FnZSkg
eworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmlubmVySFRNTCAr
PSAiPGxpPiIrbWVzc2FnZSsiPC9saT4iOworICAgIH0KKworICAgIGZ1bmN0aW9uIHRlc3QoKSB7
CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICAgICAgdiA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlOYW1lKCJ2aWN0aW0iKTsKKworICAgICAgICBsb2coKCF2WzBdLnZhbGlk
aXR5LnZhbHVlTWlzc2luZyAmJiAhdlsxXS52YWxpZGl0eS52YWx1ZU1pc3NpbmcpID8gIlNVQ0NF
U1MiIDogIkZBSUxVUkUiKTsKKyAgICB9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9h
ZD0idGVzdCgpIj4KKzxwPlRoZXJlIGFyZSB0d28gZGlzYWJsZWQgZm9ybSBjb250cm9sIGVsZW1l
bnRzIGJlbG93LCBib3RoIHJlcXVpcmVkIGFuZCB3aXRoIHNvbWUgdmFsdWU6Cit2YWxpZGl0eS52
YWx1ZU1pc3Npbmcgc2hvdWxkIGJlIGZhbHNlIGluIGJvdGggY2FzZXMuPC9wPgorPGlucHV0IG5h
bWU9InZpY3RpbSIgZGlzYWJsZWQgcmVxdWlyZWQgLz4KKzx0ZXh0YXJlYSBuYW1lPSJ2aWN0aW0i
IGRpc2FibGVkIHJlcXVpcmVkPjwvdGV4dGFyZWE+Cis8aHI+Cis8b2wgaWQ9ImNvbnNvbGUiPjwv
b2w+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwNC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwNC1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzEyN2NkZQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3Npbmct
MDA0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKK1RoZXJlIGFyZSB0d28gcmVhZG9ubHkg
Zm9ybSBjb250cm9sIGVsZW1lbnRzIGJlbG93LCBib3RoIHJlcXVpcmVkIGFuZCB3aXRoIHNvbWUg
dmFsdWU6IHZhbGlkaXR5LnZhbHVlTWlzc2luZyBzaG91bGQgYmUgZmFsc2UgaW4gYm90aCBjYXNl
cy4KKworIAorU1VDQ0VTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxp
ZGl0eVN0YXRlLXZhbHVlTWlzc2luZy0wMDQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMv
VmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3NpbmctMDA0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uZTM2OWM1NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3NpbmctMDA0Lmh0bWwKQEAgLTAsMCArMSwy
NyBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5yZXF1aXJlZCBhbmQgdmFsdWVNaXNzaW5nIG9u
IHJlYWRvbmx5IGVsZW1lbnRzPC90aXRsZT4KKzxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQi
IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpIHsKKyAg
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5pbm5lckhUTUwgKz0gIjxs
aT4iK21lc3NhZ2UrIjwvbGk+IjsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0KCkgeworICAg
ICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgICAgIHYgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5TmFtZSgidmljdGltIik7CisKKyAgICAgICAgbG9nKCghdlswXS52YWxpZGl0eS52
YWx1ZU1pc3NpbmcgJiYgIXZbMV0udmFsaWRpdHkudmFsdWVNaXNzaW5nKSA/ICJTVUNDRVNTIiA6
ICJGQUlMVVJFIik7CisgICAgfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InRl
c3QoKSI+Cis8cD5UaGVyZSBhcmUgdHdvIHJlYWRvbmx5IGZvcm0gY29udHJvbCBlbGVtZW50cyBi
ZWxvdywgYm90aCByZXF1aXJlZCBhbmQgd2l0aCBzb21lIHZhbHVlOgordmFsaWRpdHkudmFsdWVN
aXNzaW5nIHNob3VsZCBiZSBmYWxzZSBpbiBib3RoIGNhc2VzLjwvcD4KKzxpbnB1dCBuYW1lPSJ2
aWN0aW0iIHJlYWRvbmx5IHJlcXVpcmVkIC8+Cis8dGV4dGFyZWEgbmFtZT0idmljdGltIiByZWFk
b25seSByZXF1aXJlZD48L3RleHRhcmVhPgorPGhyPgorPG9sIGlkPSJjb25zb2xlIj48L29sPgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxp
ZGl0eVN0YXRlLXZhbHVlTWlzc2luZy0wMDUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2luZy0wMDUtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4ODM4NWQKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwNS1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSw5IEBACitUaGVyZSdzIGEgbGlzdCBvZiBmb3JtIGNvbnRy
b2wgZWxlbWVudHMgYmVsb3csIHJlcXVpcmVkIGF0dHJpYnV0ZSBkb2VzIG5vdCBhcHBseSB0byB0
aGVtOiB2YWxpZGl0eS52YWx1ZU1pc3Npbmcgc2hvdWxkIGJlIGZhbHNlLgorCisgICAgCitTVUND
RVNTCitTVUNDRVNTCitTVUNDRVNTCitTVUNDRVNTCitTVUNDRVNTCitTVUNDRVNTCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAw
NS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2lu
Zy0wMDUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMWM1ZDIwCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZh
bHVlTWlzc2luZy0wMDUuaHRtbApAQCAtMCwwICsxLDMyIEBACis8aHRtbD4KKzxoZWFkPgorPHRp
dGxlPnJlcXVpcmVkIGFuZCB2YWx1ZU1pc3Npbmcgb24gdW5hY2NlcHRlZCBpbnB1dCB0eXBlczwv
dGl0bGU+Cis8c2NyaXB0IGxhbmd1YWdlPSJKYXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiPgorICAgIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKSB7CisgICAgICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJjb25zb2xlIikuaW5uZXJIVE1MICs9ICI8bGk+IittZXNzYWdlKyI8L2xpPiI7
CisgICAgfQorCisgICAgZnVuY3Rpb24gdGVzdCgpIHsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKKworICAgICAgICB2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoInZpY3Rp
bSIpOworCisgICAgICAgIGZvciAoaSA9IDA7IGkgPCB2Lmxlbmd0aDsgaSsrKQorICAgICAgICAg
ICAgbG9nKCF2W2ldLnZhbGlkaXR5LnZhbHVlTWlzc2luZyA/ICJTVUNDRVNTIiA6ICJGQUlMVVJF
Iik7CisgICAgfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InRlc3QoKSI+Cis8
cD5UaGVyZSdzIGEgbGlzdCBvZiBmb3JtIGNvbnRyb2wgZWxlbWVudHMgYmVsb3csIHJlcXVpcmVk
IGF0dHJpYnV0ZSBkb2VzIG5vdCBhcHBseSB0byB0aGVtOgordmFsaWRpdHkudmFsdWVNaXNzaW5n
IHNob3VsZCBiZSBmYWxzZS48L3A+Cis8aW5wdXQgbmFtZT0idmljdGltIiB0eXBlPSJoaWRkZW4i
IHJlcXVpcmVkIC8+Cis8aW5wdXQgbmFtZT0idmljdGltIiB0eXBlPSJyYW5nZSIgcmVxdWlyZWQg
Lz4KKzxpbnB1dCBuYW1lPSJ2aWN0aW0iIHR5cGU9ImltYWdlIiByZXF1aXJlZCAvPgorPGlucHV0
IG5hbWU9InZpY3RpbSIgdHlwZT0icmVzZXQiIHJlcXVpcmVkIC8+Cis8aW5wdXQgbmFtZT0idmlj
dGltIiB0eXBlPSJidXR0b24iIHJlcXVpcmVkIC8+Cis8aW5wdXQgbmFtZT0idmljdGltIiB0eXBl
PSJzdWJtaXQiIHJlcXVpcmVkIC8+Cis8aHI+Cis8b2wgaWQ9ImNvbnNvbGUiPjwvb2w+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5
U3RhdGUtdmFsdWVNaXNzaW5nLTAwNi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwNi1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGQ1ZDI0OAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3NpbmctMDA2LWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDQgQEAKK1RoZXJlIGFyZSB0d28gY2hlY2tib3hlcyBiZWxvdywg
Ym90aCBhcmUgcmVxdWlyZWQsIG9ubHkgb25lIGlzIGNoZWNrZWQuCisKKyAKK1NVQ0NFU1MKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3Np
bmctMDA2Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVN
aXNzaW5nLTAwNi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3NWQ4
OWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3Rh
dGUtdmFsdWVNaXNzaW5nLTAwNi5odG1sCkBAIC0wLDAgKzEsMjYgQEAKKzxodG1sPgorPGhlYWQ+
Cis8dGl0bGU+cmVxdWlyZWQgYW5kIHZhbHVlTWlzc2luZyBvbiBjaGVja2JveGVzPC90aXRsZT4K
KzxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Cisg
ICAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImNvbnNvbGUiKS5pbm5lckhUTUwgKz0gIjxsaT4iK21lc3NhZ2UrIjwvbGk+IjsKKyAgICB9
CisKKyAgICBmdW5jdGlvbiB0ZXN0KCkgeworICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQorICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OworCisgICAgICAgIHYgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgidmljdGltIik7CisK
KyAgICAgICAgbG9nKCF2WzBdLnZhbGlkaXR5LnZhbHVlTWlzc2luZyAmJiB2WzFdLnZhbGlkaXR5
LnZhbHVlTWlzc2luZyA/ICJTVUNDRVNTIiA6ICJGQUlMVVJFIik7CisgICAgfQorPC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InRlc3QoKSI+Cis8cD5UaGVyZSBhcmUgdHdvIGNoZWNr
Ym94ZXMgYmVsb3csIGJvdGggYXJlIHJlcXVpcmVkLCBvbmx5IG9uZSBpcyBjaGVja2VkLjwvcD4K
KzxpbnB1dCBuYW1lPSJ2aWN0aW0iIHR5cGU9ImNoZWNrYm94IiByZXF1aXJlZCBjaGVja2VkLz4K
KzxpbnB1dCBuYW1lPSJ2aWN0aW0iIHR5cGU9ImNoZWNrYm94IiByZXF1aXJlZCAvPgorPGhyPgor
PG9sIGlkPSJjb25zb2xlIj48L29sPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2luZy0wMDctZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2lu
Zy0wMDctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5
ODZjNWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5
U3RhdGUtdmFsdWVNaXNzaW5nLTAwNy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACitUaGVy
ZSBhcmUgdHdvIHJhZGlvIGJ1dHRvbnMgYmVsb3cgd2l0aCB0aGUgc2FtZSBuYW1lLCBvbmx5IG9u
ZSBpcyByZXF1aXJlZCAod2hpY2ggbWVhbnMgdGhlIHdob2xlIGdyb3VwIGlzIHJlcXVpcmVkKSwg
dGhlIG90aGVyIG9uZSBpcyBjaGVja2VkIGFuZCBsZWFkcyB0aGUgcmVxdWlyZWQgYXR0cmlidXRl
IHRvIGJlIHNhdGlzZmllZDogbm8gbWlzc2luZyB2YWx1ZS4KKworIAorU1VDQ0VTUwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2luZy0w
MDcuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3Np
bmctMDA3Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGJkNDRmYwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12
YWx1ZU1pc3NpbmctMDA3Lmh0bWwKQEAgLTAsMCArMSwyNiBAQAorPGh0bWw+Cis8aGVhZD4KKzx0
aXRsZT5yZXF1aXJlZCBhbmQgdmFsdWVNaXNzaW5nIG9uIHJhZGlvPC90aXRsZT4KKzxzY3JpcHQg
bGFuZ3VhZ2U9IkphdmFTY3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgZnVuY3Rp
b24gbG9nKG1lc3NhZ2UpIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNv
bGUiKS5pbm5lckhUTUwgKz0gIjxsaT4iK21lc3NhZ2UrIjwvbGk+IjsKKyAgICB9CisKKyAgICBm
dW5jdGlvbiB0ZXN0KCkgeworICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQorICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAg
ICAgIHYgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgidmljdGltIik7CisKKyAgICAgICAg
bG9nKCF2WzBdLnZhbGlkaXR5LnZhbHVlTWlzc2luZyA/ICJTVUNDRVNTIiA6ICJGQUlMVVJFIik7
CisgICAgfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InRlc3QoKSI+Cis8cD5U
aGVyZSBhcmUgdHdvIHJhZGlvIGJ1dHRvbnMgYmVsb3cgd2l0aCB0aGUgc2FtZSBuYW1lLCBvbmx5
IG9uZSBpcyByZXF1aXJlZCAod2hpY2ggbWVhbnMgdGhlIHdob2xlIGdyb3VwIGlzIHJlcXVpcmVk
KSwgdGhlIG90aGVyIG9uZSBpcyBjaGVja2VkIGFuZCBsZWFkcyB0aGUgcmVxdWlyZWQgYXR0cmli
dXRlIHRvIGJlIHNhdGlzZmllZDogbm8gbWlzc2luZyB2YWx1ZS48L3A+Cis8aW5wdXQgbmFtZT0i
dmljdGltIiB0eXBlPSJyYWRpbyIgcmVxdWlyZWQvPgorPGlucHV0IG5hbWU9InZpY3RpbSIgdHlw
ZT0icmFkaW8iIGNoZWNrZWQvPgorPGhyPgorPG9sIGlkPSJjb25zb2xlIj48L29sPgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0
YXRlLXZhbHVlTWlzc2luZy0wMDgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2luZy0wMDgtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4YzQ5MGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwOC1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSw0IEBACitUaGVyZSdzIGEgdXBsb2FkIGNvbnRyb2wgYmVsb3csIHdp
dGggbm8gZmlsZSBzZWxlY3RlZDogbWlzc2luZyB2YWx1ZS4KKworCitTVUNDRVNTCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAw
OC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2lu
Zy0wMDguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZWQyNGQ2Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZh
bHVlTWlzc2luZy0wMDguaHRtbApAQCAtMCwwICsxLDI1IEBACis8aHRtbD4KKzxoZWFkPgorPHRp
dGxlPnJlcXVpcmVkIGFuZCB2YWx1ZU1pc3Npbmcgb24gZmlsZSBjb250cm9sPC90aXRsZT4KKzxz
Y3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAg
ZnVuY3Rpb24gbG9nKG1lc3NhZ2UpIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImNvbnNvbGUiKS5pbm5lckhUTUwgKz0gIjxsaT4iK21lc3NhZ2UrIjwvbGk+IjsKKyAgICB9CisK
KyAgICBmdW5jdGlvbiB0ZXN0KCkgeworICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQorICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwor
CisgICAgICAgIHYgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgidmljdGltIik7CisKKyAg
ICAgICAgbG9nKHZbMF0udmFsaWRpdHkudmFsdWVNaXNzaW5nID8gIlNVQ0NFU1MiIDogIkZBSUxV
UkUiKTsKKyAgICB9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0idGVzdCgpIj4K
KzxwPlRoZXJlJ3MgYSB1cGxvYWQgY29udHJvbCBiZWxvdywgd2l0aCBubyBmaWxlIHNlbGVjdGVk
OiBtaXNzaW5nIHZhbHVlLjwvcD4KKzxpbnB1dCBuYW1lPSJ2aWN0aW0iIHR5cGU9ImZpbGUiIHJl
cXVpcmVkLz4KKzxocj4KKzxvbCBpZD0iY29uc29sZSI+PC9vbD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1p
c3NpbmctMDA5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlT
dGF0ZS12YWx1ZU1pc3NpbmctMDA5LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi4xYWNhY2RhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2luZy0wMDktZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMTAgQEAKK1RoZXJlJ3MgYSBsaXN0IG9mIGZvcm0gY29udHJvbCBlbGVtZW50cyBiZWxv
dywgcmVxdWlyZWQgYXR0cmlidXRlIGFwcGxpZXMgdG8gdGhlbSBidXQgdGhleSdyZSBlbXB0eTog
dmFsaWRpdHkudmFsdWVNaXNzaW5nIHNob3VsZCBiZSB0cnVlLgorCisgICAgICAKK1NVQ0NFU1MK
K1NVQ0NFU1MKK1NVQ0NFU1MKK1NVQ0NFU1MKK1NVQ0NFU1MKK1NVQ0NFU1MKK1NVQ0NFU1MKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3Np
bmctMDA5Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVN
aXNzaW5nLTAwOS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkOTA1
YTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3Rh
dGUtdmFsdWVNaXNzaW5nLTAwOS5odG1sCkBAIC0wLDAgKzEsMzMgQEAKKzxodG1sPgorPGhlYWQ+
Cis8dGl0bGU+cmVxdWlyZWQgYW5kIHZhbHVlTWlzc2luZyBvbiBuZXcgaW5wdXQgdHlwZXM8L3Rp
dGxlPgorPHNjcmlwdCBsYW5ndWFnZT0iSmF2YVNjcmlwdCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0
Ij4KKyAgICBmdW5jdGlvbiBsb2cobWVzc2FnZSkgeworICAgICAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiY29uc29sZSIpLmlubmVySFRNTCArPSAiPGxpPiIrbWVzc2FnZSsiPC9saT4iOwor
ICAgIH0KKworICAgIGZ1bmN0aW9uIHRlc3QoKSB7CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7CisKKyAgICAgICAgdiA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKCJ2aWN0aW0i
KTsKKworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdi5sZW5ndGg7IGkrKykKKyAgICAgICAgICAg
IGxvZyh2W2ldLnZhbGlkaXR5LnZhbHVlTWlzc2luZyA/ICJTVUNDRVNTIiA6ICJGQUlMVVJFIik7
CisgICAgfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InRlc3QoKSI+Cis8cD5U
aGVyZSdzIGEgbGlzdCBvZiBmb3JtIGNvbnRyb2wgZWxlbWVudHMgYmVsb3csIHJlcXVpcmVkIGF0
dHJpYnV0ZSBhcHBsaWVzIHRvIHRoZW0gYnV0IHRoZXkncmUgZW1wdHk6Cit2YWxpZGl0eS52YWx1
ZU1pc3Npbmcgc2hvdWxkIGJlIHRydWUuPC9wPgorPGlucHV0IG5hbWU9InZpY3RpbSIgdHlwZT0i
dGV4dCIgcmVxdWlyZWQgLz4KKzxpbnB1dCBuYW1lPSJ2aWN0aW0iIHR5cGU9InNlYXJjaCIgcmVx
dWlyZWQgLz4KKzxpbnB1dCBuYW1lPSJ2aWN0aW0iIHR5cGU9InVybCIgcmVxdWlyZWQgLz4KKzxp
bnB1dCBuYW1lPSJ2aWN0aW0iIHR5cGU9InRlbGVwaG9uZSIgcmVxdWlyZWQgLz4KKzxpbnB1dCBu
YW1lPSJ2aWN0aW0iIHR5cGU9ImVtYWlsIiByZXF1aXJlZCAvPgorPGlucHV0IG5hbWU9InZpY3Rp
bSIgdHlwZT0icGFzc3dvcmQiIHJlcXVpcmVkIC8+Cis8aW5wdXQgbmFtZT0idmljdGltIiB0eXBl
PSJudW1iZXIiIHJlcXVpcmVkIC8+Cis8aHI+Cis8b2wgaWQ9ImNvbnNvbGUiPjwvb2w+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3JlcXVpcmVk
LWF0dHJpYnV0ZS0wMDEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yZXF1
aXJlZC1hdHRyaWJ1dGUtMDAxLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi45YjIwMTQzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9m
b3Jtcy9yZXF1aXJlZC1hdHRyaWJ1dGUtMDAxLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAK
K1RoZXJlIGFyZSB0d28gZm9ybSBjb250cm9sIGVsZW1lbnRzIGJlbG93LCBib3RoIHJlcXVpcmVk
LgorCisgCitTVUNDRVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3JlcXVp
cmVkLWF0dHJpYnV0ZS0wMDEuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmVxdWlyZWQt
YXR0cmlidXRlLTAwMS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJm
MzRjMTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3JlcXVpcmVk
LWF0dHJpYnV0ZS0wMDEuaHRtbApAQCAtMCwwICsxLDI2IEBACis8aHRtbD4KKzxoZWFkPgorPHRp
dGxlPnJlcXVpcmVkIGF0dHJpYnV0ZSBwcmVzZW5jZSB0ZXN0PC90aXRsZT4KKzxzY3JpcHQgbGFu
Z3VhZ2U9IkphdmFTY3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgZnVuY3Rpb24g
bG9nKG1lc3NhZ2UpIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUi
KS5pbm5lckhUTUwgKz0gIjxsaT4iK21lc3NhZ2UrIjwvbGk+IjsKKyAgICB9CisKKyAgICBmdW5j
dGlvbiB0ZXN0KCkgeworICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQor
ICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgICAg
IHYgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgidmljdGltIik7CisKKyAgICAgICAgbG9n
KCh2WzBdLnJlcXVpcmVkICYmIHZbMV0ucmVxdWlyZWQpID8gIlNVQ0NFU1MiIDogIkZBSUxVUkUi
KTsKKyAgICB9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0idGVzdCgpIj4KKzxw
PlRoZXJlIGFyZSB0d28gZm9ybSBjb250cm9sIGVsZW1lbnRzIGJlbG93LCBib3RoIHJlcXVpcmVk
LjwvcD4KKzxpbnB1dCBuYW1lPSJ2aWN0aW0iIHJlcXVpcmVkIC8+Cis8dGV4dGFyZWEgbmFtZT0i
dmljdGltIiByZXF1aXJlZD48L3RleHRhcmVhPgorPGhyPgorPG9sIGlkPSJjb25zb2xlIj48L29s
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9y
ZXF1aXJlZC1hdHRyaWJ1dGUtMDAyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZm9y
bXMvcmVxdWlyZWQtYXR0cmlidXRlLTAwMi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uYWM1YzBmZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvcmVxdWlyZWQtYXR0cmlidXRlLTAwMi1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSw0IEBACitUaGVyZSBhcmUgdHdvIGZvcm0gY29udHJvbCBlbGVtZW50cyBiZWxvdywgYm90aCBv
cHRpb25hbC4gVGhleSdyZSBzZXQgYXMgcmVxdWlyZWQgdmlhIHJlcXVpcmVkIERPTSBhdHRyaWJ1
dGUuCisKKyAKK1NVQ0NFU1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmVx
dWlyZWQtYXR0cmlidXRlLTAwMi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yZXF1aXJl
ZC1hdHRyaWJ1dGUtMDAyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
YWE4NWU4OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmVxdWly
ZWQtYXR0cmlidXRlLTAwMi5odG1sCkBAIC0wLDAgKzEsMzIgQEAKKzxodG1sPgorPGhlYWQ+Cis8
dGl0bGU+cmVxdWlyZWQgYXR0cmlidXRlIEpTIHNldDwvdGl0bGU+Cis8c2NyaXB0IGxhbmd1YWdl
PSJKYXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgIGZ1bmN0aW9uIGxvZyht
ZXNzYWdlKSB7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuaW5u
ZXJIVE1MICs9ICI8bGk+IittZXNzYWdlKyI8L2xpPiI7CisgICAgfQorCisgICAgZnVuY3Rpb24g
dGVzdCgpIHsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgICAgICB2ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoInZpY3RpbSIpOworCisgICAgICAgIGlmICh2WzBd
LnJlcXVpcmVkID09IGZhbHNlICYmIHZbMV0ucmVxdWlyZWQgPT0gZmFsc2UpIHsKKyAgICAgICAg
ICAgIHZbMF0ucmVxdWlyZWQgPSB0cnVlOworICAgICAgICAgICAgdlsxXS5yZXF1aXJlZCA9IHRy
dWU7CisgICAgICAgICAgICBsb2cgKCh2WzBdLnJlcXVpcmVkICYmIHZbMV0ucmVxdWlyZWQpID8g
IlNVQ0NFU1MiIDogIkZBSUxVUkUiKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAg
ICAgICBsb2coIkZBSUxVUkUiKTsKKyAgICB9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9u
bG9hZD0idGVzdCgpIj4KKzxwPlRoZXJlIGFyZSB0d28gZm9ybSBjb250cm9sIGVsZW1lbnRzIGJl
bG93LCBib3RoIG9wdGlvbmFsLiBUaGV5J3JlIHNldCBhcyByZXF1aXJlZCB2aWEgcmVxdWlyZWQg
RE9NIGF0dHJpYnV0ZS48L3A+Cis8aW5wdXQgbmFtZT0idmljdGltIiAvPgorPHRleHRhcmVhIG5h
bWU9InZpY3RpbSI+PC90ZXh0YXJlYT4KKzxocj4KKzxvbCBpZD0iY29uc29sZSI+PC9vbD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggZWVkMzhmOC4uZTU1YTU4MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MiBAQAorMjAwOS0wNy0x
NyAgTWljaGVsYW5nZWxvIERlIFNpbW9uZSAgPG1pY2Rlc2ltQGdtYWlsLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU1NTEKKyAgICAgICAgQWRkZWQgc3VwcG9ydCBmb3Ig
dGhlICJyZXF1aXJlZCIgYXR0cmlidXRlLCB0aGUgdmFsdWVNaXNzaW5nIGZsYWcKKyAgICAgICAg
dG8gdGhlIFZhbGlkaXR5U3RhdGUgb2JqZWN0IGFuZCA6cmVxdWlyZWQvOm9wdGlvbmFsIENTUyBw
c2V1ZG9jbGFzc2VzLgorICAgICAgICBQYXJ0IG9mIEhUTUw1IHNlYy4gRm9ybXMgc3BlY3MuCisg
ICAgICAgIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsv
bXVsdGlwYWdlL2Zvcm1zLmh0bWwjYXR0ci1pbnB1dC1yZXF1aXJlZAorCisgICAgICAgIFRlc3Rz
OiBmYXN0L2Nzcy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9uYWwtMDAxLmh0bWwKKyAgICAgICAgICAg
ICAgIGZhc3QvY3NzL3BzZXVkby1yZXF1aXJlZC1vcHRpb25hbC0wMDIuaHRtbAorICAgICAgICAg
ICAgICAgZmFzdC9jc3MvcHNldWRvLXJlcXVpcmVkLW9wdGlvbmFsLTAwMy5odG1sCisgICAgICAg
ICAgICAgICBmYXN0L2Nzcy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9uYWwtMDA0Lmh0bWwKKyAgICAg
ICAgICAgICAgIGZhc3QvY3NzL3BzZXVkby1yZXF1aXJlZC1vcHRpb25hbC0wMDUuaHRtbAorICAg
ICAgICAgICAgICAgZmFzdC9jc3MvcHNldWRvLXJlcXVpcmVkLW9wdGlvbmFsLTAwNi5odG1sCisg
ICAgICAgICAgICAgICBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwMS5o
dG1sCisgICAgICAgICAgICAgICBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5n
LTAwMi5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVN
aXNzaW5nLTAwMy5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUt
dmFsdWVNaXNzaW5nLTAwNC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Zvcm1zL1ZhbGlkaXR5
U3RhdGUtdmFsdWVNaXNzaW5nLTAwNS5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Zvcm1zL1Zh
bGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwNi5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Zv
cm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwNy5odG1sCisgICAgICAgICAgICAgICBm
YXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwOC5odG1sCisgICAgICAgICAg
ICAgICBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwOS5odG1sCisgICAg
ICAgICAgICAgICBmYXN0L2Zvcm1zL3JlcXVpcmVkLWF0dHJpYnV0ZS0wMDEuaHRtbAorICAgICAg
ICAgICAgICAgZmFzdC9mb3Jtcy9yZXF1aXJlZC1hdHRyaWJ1dGUtMDAyLmh0bWwKKworICAgICAg
ICAqIGNzcy9DU1NTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6
ZXh0cmFjdFBzZXVkb1R5cGUpOiBwc2V1ZG9SZXF1aXJlZCwgcHNldWRvT3B0aW9uYWwKKyAgICAg
ICAgKiBjc3MvQ1NTU2VsZWN0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjop
OiBkaXR0bworICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rv
cik6IGRpdHRvCisgICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnQ6OmlzT3B0aW9uYWxGb3JtQ29udHJvbCk6IGNoZWNrIGZvciBvcHRpb25hbCBjb250cm9s
cworICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6aXNSZXF1aXJlZEZvcm1Db250cm9sKTogY2hl
Y2sgZm9yIHJlcXVpcmVkIGNvbnRyb2xzCisgICAgICAgICogaHRtbC9IVE1MQXR0cmlidXRlTmFt
ZXMuaW46IHJlcXVpcmVkIGF0dHJpYnV0ZQorICAgICAgICAqIGh0bWwvSFRNTEJ1dHRvbkVsZW1l
bnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxCdXR0b25FbGVtZW50Ojppc09wdGlvbmFsRm9y
bUNvbnRyb2wpOiBkaXR0bworICAgICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpyZXF1aXJlZCk6
IHJlcXVpcmVkIGF0dHJpYnV0ZSBnZXR0ZXIKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29u
dHJvbEVsZW1lbnQ6OnNldFJlcXVpcmVkKTogcmVxdWlyZWQgYXR0ciBzZXR0ZXIKKyAgICAgICAg
KiBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaDogcmVxdWlyZWQvc2V0UmVxdWlyZWQgZGVm
aW5pdGlvbgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50Ojppc1JlcXVpcmVkRm9ybUNvbnRyb2wpOiBkaXR0bwor
ICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TElucHV0RWxlbWVudDo6aXNPcHRpb25hbEZvcm1Db250cm9sKTogZGl0dG8KKyAgICAgICAgKiBo
dG1sL0hUTUxJbnB1dEVsZW1lbnQuaWRsOiByZXF1aXJlZCBET00gYXR0cmlidXRlCisgICAgICAg
ICogaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVj
dEVsZW1lbnQ6OmlzT3B0aW9uYWxGb3JtQ29udHJvbCk6IGRpdHRvCisgICAgICAgICogaHRtbC9I
VE1MVGV4dEFyZWFFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVt
ZW50Ojppc09wdGlvbmFsRm9ybUNvbnRyb2wpOiBkaXR0bworICAgICAgICAoV2ViQ29yZTo6SFRN
TFRleHRBcmVhRWxlbWVudDo6aXNSZXF1aXJlZEZvcm1Db250cm9sKTogZGl0dG8KKyAgICAgICAg
KiBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaWRsOiByZXF1aXJlZCBET00gYXR0cmlidXRlCisg
ICAgICAgICogaHRtbC9WYWxpZGl0eVN0YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZhbGlk
aXR5U3RhdGU6OnZhbHVlTWlzc2luZyk6IHZhbGlkYXRpb24gZmxhZworICAgICAgICAqIGh0bWwv
VmFsaWRpdHlTdGF0ZS5oOgorCiAyMDA5LTA3LTE3ICBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhl
ciAgPHplY2tlQHNlbGZpc2gub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEd1c3Rhdm8gTm9y
b25oYS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcCBiL1dlYkNvcmUv
Y3NzL0NTU1NlbGVjdG9yLmNwcAppbmRleCA1NDI5YzE2Li44MDkxMGE3IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAKKysrIGIvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3Iu
Y3BwCkBAIC0xMTcsNiArMTE3LDggQEAgdm9pZCBDU1NTZWxlY3Rvcjo6ZXh0cmFjdFBzZXVkb1R5
cGUoKSBjb25zdAogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBub3RTdHIs
ICgibm90KCIpKTsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgb25seUNo
aWxkLCAoIm9ubHktY2hpbGQiKSk7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJp
bmcsIG9ubHlPZlR5cGUsICgib25seS1vZi10eXBlIikpOworICAgIERFRklORV9TVEFUSUNfTE9D
QUwoQXRvbWljU3RyaW5nLCBvcHRpb25hbCwgKCJvcHRpb25hbCIpKTsKKyAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKEF0b21pY1N0cmluZywgcmVxdWlyZWQsICgicmVxdWlyZWQiKSk7CiAgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHJlc2l6ZXIsICgiLXdlYmtpdC1yZXNpemVy
IikpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCByb290LCAoInJvb3Qi
KSk7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHNjcm9sbGJhciwgKCIt
d2Via2l0LXNjcm9sbGJhciIpKTsKQEAgLTI4Niw2ICsyODgsMTAgQEAgdm9pZCBDU1NTZWxlY3Rv
cjo6ZXh0cmFjdFBzZXVkb1R5cGUoKSBjb25zdAogICAgICAgICBtX3BzZXVkb1R5cGUgPSBQc2V1
ZG9TaW5nbGVCdXR0b247CiAgICAgZWxzZSBpZiAobV92YWx1ZSA9PSBub0J1dHRvbikKICAgICAg
ICAgbV9wc2V1ZG9UeXBlID0gUHNldWRvTm9CdXR0b247CisgICAgZWxzZSBpZiAobV92YWx1ZSA9
PSBvcHRpb25hbCkKKyAgICAgICAgbV9wc2V1ZG9UeXBlID0gUHNldWRvT3B0aW9uYWw7CisgICAg
ZWxzZSBpZiAobV92YWx1ZSA9PSByZXF1aXJlZCkKKyAgICAgICAgbV9wc2V1ZG9UeXBlID0gUHNl
dWRvUmVxdWlyZWQ7CiAgICAgZWxzZSBpZiAobV92YWx1ZSA9PSBzY3JvbGxiYXJDb3JuZXIpIHsK
ICAgICAgICAgZWxlbWVudCA9IHRydWU7CiAgICAgICAgIG1fcHNldWRvVHlwZSA9IFBzZXVkb1Nj
cm9sbGJhckNvcm5lcjsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmggYi9X
ZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oCmluZGV4IDViN2Y5ZmEuLjE4MjUxZmQgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmgKKysrIGIvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0
b3IuaApAQCAtMTI4LDYgKzEyOCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAg
IFBzZXVkb0Z1bGxQYWdlTWVkaWEsCiAgICAgICAgICAgICBQc2V1ZG9EaXNhYmxlZCwKICAgICAg
ICAgICAgIFBzZXVkb0lucHV0UGxhY2Vob2xkZXIsCisgICAgICAgICAgICBQc2V1ZG9PcHRpb25h
bCwKKyAgICAgICAgICAgIFBzZXVkb1JlcXVpcmVkLAogICAgICAgICAgICAgUHNldWRvUmVhZE9u
bHksCiAgICAgICAgICAgICBQc2V1ZG9SZWFkV3JpdGUsCiAgICAgICAgICAgICBQc2V1ZG9JbmRl
dGVybWluYXRlLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAg
Yi9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAppbmRleCA3ODA1ODgzLi43N2IxMDJi
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAorKysgYi9XZWJD
b3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcApAQCAtMjM3NSw2ICsyMzc1LDE4IEBAIGJvb2wg
Q1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9yKENTU1Nl
bGVjdG9yKiBzZWwsIEVsZW1lCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgICAgICAgICByZXR1cm4gZS0+aXNUZXh0Rm9ybUNvbnRyb2woKSAmJiAhZS0+aXNSZWFk
T25seUZvcm1Db250cm9sKCk7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIENTU1Nl
bGVjdG9yOjpQc2V1ZG9PcHRpb25hbDogeworICAgICAgICAgICAgICAgIGlmICghZSB8fCAhZS0+
aXNGb3JtQ29udHJvbEVsZW1lbnQoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgICAgICAgICAgICAgcmV0dXJuIGUtPmlzT3B0aW9uYWxGb3JtQ29udHJvbCgpOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvUmVxdWly
ZWQ6IHsKKyAgICAgICAgICAgICAgICBpZiAoIWUgfHwgIWUtPmlzRm9ybUNvbnRyb2xFbGVtZW50
KCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAgICAg
IHJldHVybiBlLT5pc1JlcXVpcmVkRm9ybUNvbnRyb2woKTsKKyAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NoZWNrZWQ6IHsKICAgICAgICAgICAgICAg
ICBpZiAoIWUgfHwgIWUtPmlzRm9ybUNvbnRyb2xFbGVtZW50KCkpCiAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIvV2ViQ29yZS9k
b20vRWxlbWVudC5oCmluZGV4IGQxZWYzYjIuLjBmZjJlZDEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuaAorKysgYi9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTIxMiw2ICsyMTIs
OCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzRW5hYmxlZEZvcm1Db250cm9sKCkgY29u
c3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1JlYWRPbmx5Rm9ybUNvbnRy
b2woKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1RleHRGb3Jt
Q29udHJvbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzT3B0
aW9uYWxGb3JtQ29udHJvbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBi
b29sIGlzUmVxdWlyZWRGb3JtQ29udHJvbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAg
ICB2aXJ0dWFsIGJvb2wgZm9ybUNvbnRyb2xWYWx1ZU1hdGNoZXNSZW5kZXJlcigpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIHNldEZvcm1Db250cm9sVmFsdWVNYXRj
aGVzUmVuZGVyZXIoYm9vbCkgeyB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTEF0dHJp
YnV0ZU5hbWVzLmluIGIvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgppbmRleCBi
ZDM3Yjk2Li42ZDRkM2NiIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5h
bWVzLmluCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4KQEAgLTE5NSw2
ICsxOTUsNyBAQCBwcm9ncmVzcwogcHJvbXB0CiByZWFkb25seQogcmVsCityZXF1aXJlZAogcmVz
dWx0cwogcmV2CiByb2xlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1l
bnQuaCBiL1dlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5oCmluZGV4IGIxZDc0NGMuLmE2
YzAzNDYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5oCisrKyBi
L1dlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5oCkBAIC01Nyw2ICs1Nyw3IEBAIHB1Ymxp
YzoKICAgICBTdHJpbmcgdmFsdWUoKSBjb25zdDsKICAgICB2b2lkIHNldFZhbHVlKGNvbnN0IFN0
cmluZyYpOwogCisgICAgdmlydHVhbCBib29sIGlzT3B0aW9uYWxGb3JtQ29udHJvbCgpIGNvbnN0
IHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGJvb2wgd2lsbFZhbGlkYXRlKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KICAgICAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0
bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250
cm9sRWxlbWVudC5jcHAKaW5kZXggODc5MzhhYy4uZTkwYTZlMCAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1M
Rm9ybUNvbnRyb2xFbGVtZW50LmNwcApAQCAtMjA0LDYgKzIwNCwxNiBAQCB2b2lkIEhUTUxGb3Jt
Q29udHJvbEVsZW1lbnQ6OnNldEF1dG9mb2N1cyhib29sIGIpCiAgICAgc2V0QXR0cmlidXRlKGF1
dG9mb2N1c0F0dHIsIGIgPyAiYXV0b2ZvY3VzIiA6IDApOwogfQogCitib29sIEhUTUxGb3JtQ29u
dHJvbEVsZW1lbnQ6OnJlcXVpcmVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gaGFzQXR0cmlidXRl
KHJlcXVpcmVkQXR0cik7Cit9CisKK3ZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6c2V0UmVx
dWlyZWQoYm9vbCBiKQoreworICAgIHNldEF0dHJpYnV0ZShyZXF1aXJlZEF0dHIsIGIgPyAicmVx
dWlyZWQiIDogMCk7Cit9CisKIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6cmVjYWxjU3R5
bGUoU3R5bGVDaGFuZ2UgY2hhbmdlKQogewogICAgIEhUTUxFbGVtZW50OjpyZWNhbGNTdHlsZShj
aGFuZ2UpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQu
aCBiL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKaW5kZXggYTAzZWIxYS4u
MTEzZGM0ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQu
aAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oCkBAIC03NCw2ICs3
NCw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgYXV0b2ZvY3VzKCkgY29uc3Q7CiAgICAg
dm9pZCBzZXRBdXRvZm9jdXMoYm9vbCk7CiAKKyAgICBib29sIHJlcXVpcmVkKCkgY29uc3Q7Cisg
ICAgdm9pZCBzZXRSZXF1aXJlZChib29sKTsKKwogICAgIHZpcnR1YWwgdm9pZCByZWNhbGNTdHls
ZShTdHlsZUNoYW5nZSk7CiAKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgZm9ybUNv
bnRyb2xOYW1lKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxl
bWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXggOTg2OThm
YS4uMTU4N2MzZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3Bw
CisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcApAQCAtMTE0LDYgKzExNCwy
NiBAQCBib29sIEhUTUxJbnB1dEVsZW1lbnQ6OmF1dG9Db21wbGV0ZSgpIGNvbnN0CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKK2Jvb2wgSFRNTElucHV0RWxlbWVudDo6aXNSZXF1aXJlZEZvcm1Db250
cm9sKCkgY29uc3QKK3sKKyAgICBpZiAoIXJlcXVpcmVkKCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIHN3aXRjaCAoaW5wdXRUeXBlKCkpIHsKKyAgICAgICAgY2FzZSBIVE1MSW5wdXRF
bGVtZW50OjpISURERU46CisgICAgICAgIGNhc2UgSFRNTElucHV0RWxlbWVudDo6UkFOR0U6Cisg
ICAgICAgIGNhc2UgSFRNTElucHV0RWxlbWVudDo6U1VCTUlUOgorICAgICAgICBjYXNlIEhUTUxJ
bnB1dEVsZW1lbnQ6OklNQUdFOgorICAgICAgICBjYXNlIEhUTUxJbnB1dEVsZW1lbnQ6OlJFU0VU
OgorICAgICAgICBjYXNlIEhUTUxJbnB1dEVsZW1lbnQ6OkJVVFRPTjoKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKwogc3RhdGljIGlubGluZSBDaGVja2VkUmFk
aW9CdXR0b25zJiBjaGVja2VkUmFkaW9CdXR0b25zKGNvbnN0IEhUTUxJbnB1dEVsZW1lbnQgKmVs
ZW1lbnQpCiB7CiAgICAgaWYgKEhUTUxGb3JtRWxlbWVudCogZm9ybSA9IGVsZW1lbnQtPmZvcm0o
KSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmggYi9XZWJDb3Jl
L2h0bWwvSFRNTElucHV0RWxlbWVudC5oCmluZGV4IGJlMmI0ZjQuLjJlNjM3ZTQgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKKysrIGIvV2ViQ29yZS9odG1sL0hU
TUxJbnB1dEVsZW1lbnQuaApAQCAtODksNiArODksOSBAQCBwdWJsaWM6CiAgICAgYm9vbCByZWFk
T25seSgpIGNvbnN0IHsgcmV0dXJuIGlzUmVhZE9ubHlGb3JtQ29udHJvbCgpOyB9CiAKICAgICB2
aXJ0dWFsIGJvb2wgaXNUZXh0Rm9ybUNvbnRyb2woKSBjb25zdCB7IHJldHVybiBpc1RleHRGaWVs
ZCgpOyB9CisgICAgdmlydHVhbCBib29sIGlzT3B0aW9uYWxGb3JtQ29udHJvbCgpIGNvbnN0IHsg
cmV0dXJuICFpc1JlcXVpcmVkRm9ybUNvbnRyb2woKTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1Jl
cXVpcmVkRm9ybUNvbnRyb2woKSBjb25zdDsKKwogCiAgICAgYm9vbCBpc1RleHRCdXR0b24oKSBj
b25zdCB7IHJldHVybiBtX3R5cGUgPT0gU1VCTUlUIHx8IG1fdHlwZSA9PSBSRVNFVCB8fCBtX3R5
cGUgPT0gQlVUVE9OOyB9CiAgICAgdmlydHVhbCBib29sIGlzUmFkaW9CdXR0b24oKSBjb25zdCB7
IHJldHVybiBtX3R5cGUgPT0gUkFESU87IH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1M
SW5wdXRFbGVtZW50LmlkbCBiL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmlkbAppbmRl
eCA3Y2Q5MWIwLi4zYTQxMGRmIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxl
bWVudC5pZGwKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaWRsCkBAIC00Myw2
ICs0Myw3IEBAIG1vZHVsZSBodG1sIHsKICAgICAgICAgICAgICAgICAgYXR0cmlidXRlIFtDb252
ZXJ0TnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nIG5hbWU7CiAgICAgICAgICAgICAgICAgIGF0
dHJpYnV0ZSBET01TdHJpbmcgICAgICAgcGxhY2Vob2xkZXI7CiAgICAgICAgICAgICAgICAgIGF0
dHJpYnV0ZSBib29sZWFuICAgICAgICAgcmVhZE9ubHk7CisgICAgICAgICAgICAgICAgIGF0dHJp
YnV0ZSBib29sZWFuICAgICAgICAgcmVxdWlyZWQ7CiAjaWYgZGVmaW5lZChMQU5HVUFHRV9PQkpF
Q1RJVkVfQykgJiYgTEFOR1VBR0VfT0JKRUNUSVZFX0MKICAgICAgICAgICAgICAgICAgYXR0cmli
dXRlIFtDb252ZXJ0VG9TdHJpbmddIERPTVN0cmluZyBzaXplOyAvLyBET00gbGV2ZWwgMiBjaGFu
Z2VkIHRoaXMgdG8gYSBsb25nLCBidXQgb3VyIGV4aXN0aW5nIEFQSSBpcyBhIHN0cmluZwogI2Vs
c2UKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5oIGIvV2ViQ29y
ZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmgKaW5kZXggZTUyMzY0MS4uMmRmNGVlZiAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmgKKysrIGIvV2ViQ29yZS9odG1s
L0hUTUxTZWxlY3RFbGVtZW50LmgKQEAgLTc4LDYgKzc4LDggQEAgcHVibGljOgogCiAgICAgdm9p
ZCBzY3JvbGxUb1NlbGVjdGlvbigpOwogCisgICAgdmlydHVhbCBib29sIGlzT3B0aW9uYWxGb3Jt
Q29udHJvbCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKwogcHJpdmF0ZToKICAgICB2aXJ0dWFs
IGludCB0YWdQcmlvcml0eSgpIGNvbnN0IHsgcmV0dXJuIDY7IH0KICAgICB2aXJ0dWFsIGJvb2wg
Y2hlY2tEVEQoY29uc3QgTm9kZSogbmV3Q2hpbGQpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1s
L0hUTUxUZXh0QXJlYUVsZW1lbnQuaCBiL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50
LmgKaW5kZXggZTIyYjVkNS4uZjk4OTNhZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxU
ZXh0QXJlYUVsZW1lbnQuaAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5o
CkBAIC01Miw2ICs1Miw5IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBpc1RleHRGb3Jt
Q29udHJvbCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAorICAgIHZpcnR1YWwgYm9vbCBpc09w
dGlvbmFsRm9ybUNvbnRyb2woKSBjb25zdCB7IHJldHVybiAhaXNSZXF1aXJlZEZvcm1Db250cm9s
KCk7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNSZXF1aXJlZEZvcm1Db250cm9sKCkgY29uc3QgeyBy
ZXR1cm4gcmVxdWlyZWQoKTsgfQorCiAgICAgaW50IHNlbGVjdGlvblN0YXJ0KCk7CiAgICAgaW50
IHNlbGVjdGlvbkVuZCgpOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVh
RWxlbWVudC5pZGwgYi9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5pZGwKaW5kZXgg
ZjZhYzA1YS4uYmE4YTA2MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVs
ZW1lbnQuaWRsCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmlkbApAQCAt
MzYsNiArMzYsNyBAQCBtb2R1bGUgaHRtbCB7CiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSAg
Ym9vbGVhbiAgICAgICAgICAgICAgYXV0b2ZvY3VzOwogICAgICAgICAgICAgICAgICBhdHRyaWJ1
dGUgIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nICAgICAgICAgICAgbmFtZTsK
ICAgICAgICAgICAgICAgICAgYXR0cmlidXRlICBib29sZWFuICAgICAgICAgICAgICByZWFkT25s
eTsKKyAgICAgICAgICAgICAgICAgYXR0cmlidXRlICBib29sZWFuICAgICAgICAgICAgICByZXF1
aXJlZDsKICAgICAgICAgICAgICAgICAgYXR0cmlidXRlICBsb25nICAgICAgICAgICAgICAgICBy
b3dzOwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgIERPTVN0cmluZyAgICAgICAgICAgIHR5
cGU7CiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSAgW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5n
XSBET01TdHJpbmcgICAgICAgICAgICB2YWx1ZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9W
YWxpZGl0eVN0YXRlLmNwcCBiL1dlYkNvcmUvaHRtbC9WYWxpZGl0eVN0YXRlLmNwcAppbmRleCA4
ZmY2MjljLi5mY2M2ZTA1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvVmFsaWRpdHlTdGF0ZS5j
cHAKKysrIGIvV2ViQ29yZS9odG1sL1ZhbGlkaXR5U3RhdGUuY3BwCkBAIC0yMiwxNiArMjIsNTcg
QEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlZhbGlkaXR5U3RhdGUuaCIKKyNp
bmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkZpbGVMaXN0LmgiCiAjaW5jbHVkZSAiSFRN
TEZvcm1Db250cm9sRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKKyNp
bmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJIVE1MVGV4dEFyZWFFbGVtZW50LmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAordXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKKwogVmFs
aWRpdHlTdGF0ZTo6VmFsaWRpdHlTdGF0ZShIVE1MRm9ybUNvbnRyb2xFbGVtZW50KiBwYXJlbnQp
CiAgICAgOiBtX2NvbnRyb2wocGFyZW50KQogewogICAgIEFTU0VSVChwYXJlbnQpOwogfQogCiti
b29sIFZhbGlkaXR5U3RhdGU6OnZhbHVlTWlzc2luZygpCit7CisgICAgaWYgKCFjb250cm9sKCkt
PmlzUmVxdWlyZWRGb3JtQ29udHJvbCgpIHx8IGNvbnRyb2woKS0+ZGlzYWJsZWQoKSB8fCBjb250
cm9sKCktPmlzUmVhZE9ubHlGb3JtQ29udHJvbCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBpZiAoY29udHJvbCgpLT5oYXNUYWdOYW1lKGlucHV0VGFnKSkgeworICAgICAgICBIVE1M
SW5wdXRFbGVtZW50KiBpID0gc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KGNvbnRyb2wo
KSk7CisKKyAgICAgICAgc3dpdGNoIChpLT5pbnB1dFR5cGUoKSkgeworICAgICAgICAgICAgY2Fz
ZSBIVE1MSW5wdXRFbGVtZW50OjpURVhUOgorICAgICAgICAgICAgY2FzZSBIVE1MSW5wdXRFbGVt
ZW50OjpTRUFSQ0g6CisgICAgICAgICAgICBjYXNlIEhUTUxJbnB1dEVsZW1lbnQ6OlVSTDoKKyAg
ICAgICAgICAgIGNhc2UgSFRNTElucHV0RWxlbWVudDo6VEVMRVBIT05FOgorICAgICAgICAgICAg
Y2FzZSBIVE1MSW5wdXRFbGVtZW50OjpFTUFJTDoKKyAgICAgICAgICAgIGNhc2UgSFRNTElucHV0
RWxlbWVudDo6UEFTU1dPUkQ6CisgICAgICAgICAgICBjYXNlIEhUTUxJbnB1dEVsZW1lbnQ6Ok5V
TUJFUjoKKyAgICAgICAgICAgICAgICByZXR1cm4gaS0+dmFsdWUoKS5pc0VtcHR5KCk7CisgICAg
ICAgICAgICBjYXNlIEhUTUxJbnB1dEVsZW1lbnQ6OkZJTEU6CisgICAgICAgICAgICAgICAgcmV0
dXJuIGktPmZpbGVzKCktPmlzRW1wdHkoKTsKKyAgICAgICAgICAgIGNhc2UgSFRNTElucHV0RWxl
bWVudDo6Q0hFQ0tCT1g6CisgICAgICAgICAgICAgICAgcmV0dXJuICFpLT5jaGVja2VkKCk7Cisg
ICAgICAgICAgICBjYXNlIEhUTUxJbnB1dEVsZW1lbnQ6OlJBRElPOgorICAgICAgICAgICAgICAg
IHJldHVybiAhaS0+ZG9jdW1lbnQoKS0+Y2hlY2tlZFJhZGlvQnV0dG9ucygpLmNoZWNrZWRCdXR0
b25Gb3JHcm91cChpLT5uYW1lKCkpOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoY29udHJvbCgp
LT5oYXNUYWdOYW1lKHRleHRhcmVhVGFnKSkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEhU
TUxUZXh0QXJlYUVsZW1lbnQqPihjb250cm9sKCkpLT52YWx1ZSgpLmlzRW1wdHkoKTsKKworICAg
IHJldHVybiBmYWxzZTsKK30KKwogYm9vbCBWYWxpZGl0eVN0YXRlOjp2YWxpZCgpCiB7CiAgICAg
Ym9vbCBzb21lRXJyb3IgPSB0eXBlTWlzbWF0Y2goKSB8fCBzdGVwTWlzbWF0Y2goKSB8fCByYW5n
ZVVuZGVyZmxvdygpIHx8IHJhbmdlT3ZlcmZsb3coKSB8fApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9o
dG1sL1ZhbGlkaXR5U3RhdGUuaCBiL1dlYkNvcmUvaHRtbC9WYWxpZGl0eVN0YXRlLmgKaW5kZXgg
YTAxMWY3YS4uOTAwMDgwMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL1ZhbGlkaXR5U3RhdGUu
aAorKysgYi9XZWJDb3JlL2h0bWwvVmFsaWRpdHlTdGF0ZS5oCkBAIC0zOSw3ICszOSw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50KiBjb250
cm9sKCkgY29uc3QgeyByZXR1cm4gbV9jb250cm9sOyB9CiAKLSAgICAgICAgYm9vbCB2YWx1ZU1p
c3NpbmcoKSB7IHJldHVybiBmYWxzZTsgfQorICAgICAgICBib29sIHZhbHVlTWlzc2luZygpOwog
ICAgICAgICBib29sIHR5cGVNaXNtYXRjaCgpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIGJv
b2wgcGF0dGVybk1pc21hdGNoKCkgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgYm9vbCB0b29M
b25nKCkgeyByZXR1cm4gZmFsc2U7IH0K
</data>
<flag name="review"
          id="17294"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>32975</attachid>
            <date>2009-07-17 15:05:48 -0700</date>
            <delta_ts>2009-07-17 15:17:40 -0700</delta_ts>
            <desc>Proposed patch, rev.5</desc>
            <filename>25551.patch</filename>
            <type>text/plain</type>
            <size>46928</size>
            <attacher name="Michelangelo De Simone">michelangelo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2MzdiZGQzLi41MzhmOWJlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDggQEAKKzIwMDktMDct
MTcgIE1pY2hlbGFuZ2VsbyBEZSBTaW1vbmUgIDxtaWNkZXNpbUBnbWFpbC5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1NTUxCisgICAgICAgIFRlc3Qgc3VpdGUgZm9yIHRo
ZSByZXF1aXJlZCBhdHRyaWJ1dGUsIHRoZSB2YWx1ZU1pc3NpbmcgZmxhZyBhbmQgbmV3CisgICAg
ICAgIDpyZXF1aXJlZCBhbmQgOm9wdGlvbmFsIENTUyBwc2V1ZG9jbGFzc2VzLgorICAgICAgICBQ
YXJ0IG9mIHRoZSBIVE1MNSBzZWMuIEZvcm1zLgorICAgICAgICBodHRwOi8vd3d3LndoYXR3Zy5v
cmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS9mb3Jtcy5odG1sI2F0dHIt
aW5wdXQtcmVxdWlyZWQKKworICAgICAgICAqIGZhc3QvY3NzL3BzZXVkby1yZXF1aXJlZC1vcHRp
b25hbC0wMDEtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9wc2V1ZG8t
cmVxdWlyZWQtb3B0aW9uYWwtMDAxLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL3Bz
ZXVkby1yZXF1aXJlZC1vcHRpb25hbC0wMDItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2Nzcy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9uYWwtMDAyLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvY3NzL3BzZXVkby1yZXF1aXJlZC1vcHRpb25hbC0wMDMtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9uYWwtMDAz
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL3BzZXVkby1yZXF1aXJlZC1vcHRpb25h
bC0wMDQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9wc2V1ZG8tcmVx
dWlyZWQtb3B0aW9uYWwtMDA0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL3BzZXVk
by1yZXF1aXJlZC1vcHRpb25hbC0wMDUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2Nzcy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9uYWwtMDA1Lmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvY3NzL3BzZXVkby1yZXF1aXJlZC1vcHRpb25hbC0wMDYtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9uYWwtMDA2Lmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3Np
bmctMDAxLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9WYWxpZGl0
eVN0YXRlLXZhbHVlTWlzc2luZy0wMDEuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jt
cy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2luZy0wMDItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwMi5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAw
My1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvVmFsaWRpdHlTdGF0
ZS12YWx1ZU1pc3NpbmctMDAzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvVmFs
aWRpdHlTdGF0ZS12YWx1ZU1pc3NpbmctMDA0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2luZy0wMDQuaHRtbDogQWRkZWQu
CisgICAgICAgICogZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2luZy0wMDUtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFs
dWVNaXNzaW5nLTAwNS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL1ZhbGlkaXR5
U3RhdGUtdmFsdWVNaXNzaW5nLTAwNi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3NpbmctMDA2Lmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3NpbmctMDA3LWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlz
c2luZy0wMDcuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRl
LXZhbHVlTWlzc2luZy0wMDgtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zv
cm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwOC5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwOS1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3Npbmct
MDA5Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvcmVxdWlyZWQtYXR0cmlidXRl
LTAwMS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvcmVxdWlyZWQt
YXR0cmlidXRlLTAwMS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL3JlcXVpcmVk
LWF0dHJpYnV0ZS0wMDItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1z
L3JlcXVpcmVkLWF0dHJpYnV0ZS0wMDIuaHRtbDogQWRkZWQuCisKIDIwMDktMDctMTcgIEtlbm5l
dGggUm9oZGUgQ2hyaXN0aWFuc2VuICA8a2VubmV0aC5jaHJpc3RpYW5zZW5Ab3BlbmJvc3NhLm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvY3NzL3BzZXVkby1yZXF1aXJlZC1vcHRpb25hbC0wMDEtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvcHNldWRvLXJlcXVpcmVkLW9wdGlvbmFsLTAwMS1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTk2OTNjMgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3BzZXVkby1yZXF1aXJlZC1v
cHRpb25hbC0wMDEtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorQWxsIGNvbnRyb2xzIHNo
b3VsZCBoYXZlIGEgZ3JlZW4gYmFja2dyb3VuZC4KKworIAorU1VDQ0VTUworU1VDQ0VTUwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvcHNldWRvLXJlcXVpcmVkLW9wdGlvbmFsLTAw
MS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvcHNldWRvLXJlcXVpcmVkLW9wdGlvbmFsLTAw
MS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4ODIwOTUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9u
YWwtMDAxLmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5yZXF1
aXJlZC9vcHRpb25hbCBDU1MgcHNldWRvY2xhc3NlczwvdGl0bGU+Cis8c3R5bGU+CisgaW5wdXQ6
cmVxdWlyZWQgeyBiYWNrZ3JvdW5kOiBsaW1lOyB9CisgdGV4dGFyZWE6cmVxdWlyZWQgeyBiYWNr
Z3JvdW5kOiBsaW1lOyB9CisgaW5wdXQgeyBiYWNrZ3JvdW5kOiByZWQ7IH0KKyB0ZXh0YXJlYSB7
IGJhY2tncm91bmQ6IHJlZDsgfQorIGlucHV0Om9wdGlvbmFsIHsgYmFja2dyb3VuZDogcmVkOyB9
CisgdGV4dGFyZWE6b3B0aW9uYWwgeyBiYWNrZ3JvdW5kOiByZWQ7IH0KKzwvc3R5bGU+Cis8c2Ny
aXB0IGxhbmd1YWdlPSJKYXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgIGZ1
bmN0aW9uIGxvZyhtZXNzYWdlKSB7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJj
b25zb2xlIikuaW5uZXJIVE1MICs9ICI8bGk+IittZXNzYWdlKyI8L2xpPiI7CisgICAgfQorCisg
ICAgZnVuY3Rpb24gdGVzdCgpIHsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKwor
ICAgICAgICB2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoInZpY3RpbSIpOworCisgICAg
ICAgIGZvciAoaSA9IDA7IGkgPCB2Lmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgaWYgKGRvY3Vt
ZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUodltpXSwgbnVsbCkuZ2V0UHJvcGVydHlW
YWx1ZSgnYmFja2dyb3VuZC1jb2xvcicpID09ICJyZ2IoMCwgMjU1LCAwKSIpCisgICAgICAgICAg
ICAgICAgbG9nKCJTVUNDRVNTIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
bG9nKCJGQUlMVVJFIik7CisgICAgfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9
InRlc3QoKSI+Cis8cD5BbGwgY29udHJvbHMgc2hvdWxkIGhhdmUgYSBncmVlbiBiYWNrZ3JvdW5k
LjwvcD4KKzxpbnB1dCBuYW1lPSJ2aWN0aW0iIHJlcXVpcmVkIC8+Cis8dGV4dGFyZWEgbmFtZT0i
dmljdGltIiByZXF1aXJlZCAvPjwvdGV4dGFyZWE+Cis8aHI+Cis8b2wgaWQ9ImNvbnNvbGUiPjwv
b2w+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9w
c2V1ZG8tcmVxdWlyZWQtb3B0aW9uYWwtMDAyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zh
c3QvY3NzL3BzZXVkby1yZXF1aXJlZC1vcHRpb25hbC0wMDItZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5NjkzYzIKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2Nzcy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9uYWwtMDAyLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDUgQEAKK0FsbCBjb250cm9scyBzaG91bGQgaGF2ZSBhIGdyZWVuIGJh
Y2tncm91bmQuCisKKyAKK1NVQ0NFU1MKK1NVQ0NFU1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvY3NzL3BzZXVkby1yZXF1aXJlZC1vcHRpb25hbC0wMDIuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvY3NzL3BzZXVkby1yZXF1aXJlZC1vcHRpb25hbC0wMDIuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi40MTM2MDQwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9jc3MvcHNldWRvLXJlcXVpcmVkLW9wdGlvbmFsLTAwMi5odG1sCkBAIC0wLDAg
KzEsMzYgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+cmVxdWlyZWQvb3B0aW9uYWwgQ1NTIHBz
ZXVkb2NsYXNzZXMgcGFydCAyPC90aXRsZT4KKzxzdHlsZT4KKyBpbnB1dDpvcHRpb25hbCB7IGJh
Y2tncm91bmQ6IGxpbWU7IH0KKyB0ZXh0YXJlYTpvcHRpb25hbCB7IGJhY2tncm91bmQ6IGxpbWU7
IH0KKyBpbnB1dCB7IGJhY2tncm91bmQ6IHJlZDsgfQorIHRleHRhcmVhIHsgYmFja2dyb3VuZDog
cmVkOyB9Cis8L3N0eWxlPgorPHNjcmlwdCBsYW5ndWFnZT0iSmF2YVNjcmlwdCIgdHlwZT0idGV4
dC9qYXZhc2NyaXB0Ij4KKyAgICBmdW5jdGlvbiBsb2cobWVzc2FnZSkgeworICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmlubmVySFRNTCArPSAiPGxpPiIrbWVzc2Fn
ZSsiPC9saT4iOworICAgIH0KKworICAgIGZ1bmN0aW9uIHRlc3QoKSB7CisgICAgICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICAgICAgdiA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlO
YW1lKCJ2aWN0aW0iKTsKKworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdi5sZW5ndGg7IGkrKykK
KyAgICAgICAgICAgIGlmIChkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHZb
aV0sIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JhY2tncm91bmQtY29sb3InKSA9PSAicmdiKDAs
IDI1NSwgMCkiKQorICAgICAgICAgICAgICAgIGxvZygiU1VDQ0VTUyIpOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIGxvZygiRkFJTFVSRSIpOworICAgIH0KKzwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgorPHA+QWxsIGNvbnRyb2xzIHNob3VsZCBo
YXZlIGEgZ3JlZW4gYmFja2dyb3VuZC48L3A+Cis8aW5wdXQgbmFtZT0idmljdGltIi8+Cis8dGV4
dGFyZWEgbmFtZT0idmljdGltIiAvPjwvdGV4dGFyZWE+Cis8aHI+Cis8b2wgaWQ9ImNvbnNvbGUi
Pjwvb2w+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nz
cy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9uYWwtMDAzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2Zhc3QvY3NzL3BzZXVkby1yZXF1aXJlZC1vcHRpb25hbC0wMDMtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwZGVmZjAKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9uYWwtMDAzLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDYgQEAKK0FsbCBjb250cm9scyBzaG91bGQgaGF2ZSBhIGdyZWVu
IGJhY2tncm91bmQuCisKKyAgCitTVUNDRVNTCitTVUNDRVNTCitTVUNDRVNTCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9uYWwtMDAzLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9uYWwtMDAzLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTk3YjFhMwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3BzZXVkby1yZXF1aXJlZC1vcHRpb25hbC0wMDMu
aHRtbApAQCAtMCwwICsxLDM3IEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPnJlcXVpcmVkL29w
dGlvbmFsIENTUyBwc2V1ZG9jbGFzc2VzIHBhcnQgMzwvdGl0bGU+Cis8c3R5bGU+CisgaW5wdXQ6
cmVxdWlyZWQgeyBiYWNrZ3JvdW5kOiBsaW1lOyB9CisgdGV4dGFyZWE6cmVxdWlyZWQgeyBiYWNr
Z3JvdW5kOiBsaW1lOyB9CisgaW5wdXQgeyBiYWNrZ3JvdW5kOiByZWQ7IH0KKyB0ZXh0YXJlYSB7
IGJhY2tncm91bmQ6IHJlZDsgfQorPC9zdHlsZT4KKzxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3Jp
cHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpIHsK
KyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5pbm5lckhUTUwgKz0g
IjxsaT4iK21lc3NhZ2UrIjwvbGk+IjsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0KCkgewor
ICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgICAgIHYgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5TmFtZSgidmljdGltIik7CisKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IHYu
bGVuZ3RoOyBpKyspCisgICAgICAgICAgICBpZiAoZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29t
cHV0ZWRTdHlsZSh2W2ldLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdiYWNrZ3JvdW5kLWNvbG9y
JykgPT0gInJnYigwLCAyNTUsIDApIikKKyAgICAgICAgICAgICAgICBsb2coIlNVQ0NFU1MiKTsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBsb2coIkZBSUxVUkUiKTsKKyAgICB9
Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0idGVzdCgpIj4KKzxwPkFsbCBjb250
cm9scyBzaG91bGQgaGF2ZSBhIGdyZWVuIGJhY2tncm91bmQuPC9wPgorPGlucHV0IG5hbWU9InZp
Y3RpbSIgcmVxdWlyZWQgLz4KKzx0ZXh0YXJlYSBuYW1lPSJ2aWN0aW0iIHJlcXVpcmVkIGRpc2Fi
bGVkLz48L3RleHRhcmVhPgorPHRleHRhcmVhIG5hbWU9InZpY3RpbSIgcmVxdWlyZWQgcmVhZG9u
bHkvPjwvdGV4dGFyZWE+Cis8aHI+Cis8b2wgaWQ9ImNvbnNvbGUiPjwvb2w+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9wc2V1ZG8tcmVxdWlyZWQt
b3B0aW9uYWwtMDA0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3BzZXVkby1y
ZXF1aXJlZC1vcHRpb25hbC0wMDQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLmE2MWQxMzQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2Nzcy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9uYWwtMDA0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDggQEAKK0FsbCBjb250cm9scyBzaG91bGQgaGF2ZSBhIGdyZWVuIGJhY2tncm91bmQuCisKK0xv
cmVtIGlwc3VtICAgIAorU1VDQ0VTUworU1VDQ0VTUworU1VDQ0VTUworU1VDQ0VTUworU1VDQ0VT
UwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvcHNldWRvLXJlcXVpcmVkLW9wdGlv
bmFsLTAwNC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvcHNldWRvLXJlcXVpcmVkLW9wdGlv
bmFsLTAwNC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2NWEyNWQK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9wc2V1ZG8tcmVxdWlyZWQt
b3B0aW9uYWwtMDA0Lmh0bWwKQEAgLTAsMCArMSw0NyBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRs
ZT5yZXF1aXJlZC9vcHRpb25hbCBDU1MgcHNldWRvY2xhc3NlcyBwYXJ0IDQ8L3RpdGxlPgorPHN0
eWxlPgorIGJ1dHRvbjpvcHRpb25hbCB7IGJhY2tncm91bmQ6IGxpbWU7IH0KKyBpbnB1dDpvcHRp
b25hbCB7IGJhY2tncm91bmQ6IGxpbWU7IH0KKyBzZWxlY3Q6b3B0aW9uYWwgeyBiYWNrZ3JvdW5k
OiBsaW1lOyB9CisgdGV4dGFyZWE6b3B0aW9uYWwgeyBiYWNrZ3JvdW5kOiBsaW1lOyB9CisgYnV0
dG9uIHsgYmFja2dyb3VuZDogcmVkOyB9CisgaW5wdXQgeyBiYWNrZ3JvdW5kOiByZWQ7IH0KKyBz
ZWxlY3QgeyBiYWNrZ3JvdW5kOiByZWQ7IH0KKyB0ZXh0YXJlYSB7IGJhY2tncm91bmQ6IHJlZDsg
fQorIGJ1dHRvbjpyZXF1aXJlZCB7IGJhY2tncm91bmQ6IHJlZDsgfQorIGlucHV0OnJlcXVpcmVk
IHsgYmFja2dyb3VuZDogcmVkOyB9Cisgc2VsZWN0OnJlcXVpcmVkIHsgYmFja2dyb3VuZDogcmVk
OyB9CisgdGV4dGFyZWE6cmVxdWlyZWQgeyBiYWNrZ3JvdW5kOiByZWQ7IH0KKzwvc3R5bGU+Cis8
c2NyaXB0IGxhbmd1YWdlPSJKYXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAg
IGZ1bmN0aW9uIGxvZyhtZXNzYWdlKSB7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJjb25zb2xlIikuaW5uZXJIVE1MICs9ICI8bGk+IittZXNzYWdlKyI8L2xpPiI7CisgICAgfQor
CisgICAgZnVuY3Rpb24gdGVzdCgpIHsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
KworICAgICAgICB2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoInZpY3RpbSIpOworCisg
ICAgICAgIGZvciAoaSA9IDA7IGkgPCB2Lmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgaWYgKGRv
Y3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUodltpXSwgbnVsbCkuZ2V0UHJvcGVy
dHlWYWx1ZSgnYmFja2dyb3VuZC1jb2xvcicpID09ICJyZ2IoMCwgMjU1LCAwKSIpCisgICAgICAg
ICAgICAgICAgbG9nKCJTVUNDRVNTIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgbG9nKCJGQUlMVVJFIik7CisgICAgfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxv
YWQ9InRlc3QoKSI+Cis8cD5BbGwgY29udHJvbHMgc2hvdWxkIGhhdmUgYSBncmVlbiBiYWNrZ3Jv
dW5kLjwvcD4KKzxidXR0b24gdHlwZT0iYnV0dG9uIiBuYW1lPSJ2aWN0aW0iPkxvcmVtIGlwc3Vt
PC9idXR0b24+Cis8aW5wdXQgbmFtZT0idmljdGltIiBkaXNhYmxlZC8+Cis8aW5wdXQgdHlwZT0i
YnV0dG9uIiBuYW1lPSJ2aWN0aW0iLz4KKzxzZWxlY3QgbmFtZT0idmljdGltIj48L3NlbGVjdD4K
Kzx0ZXh0YXJlYSBuYW1lPSJ2aWN0aW0iPjwvdGV4dGFyZWE+Cis8aHI+Cis8b2wgaWQ9ImNvbnNv
bGUiPjwvb2w+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2Nzcy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9uYWwtMDA1LWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2Zhc3QvY3NzL3BzZXVkby1yZXF1aXJlZC1vcHRpb25hbC0wMDUtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzZjM2NGMKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9uYWwtMDA1LWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDggQEAKK0FsbCBjb250cm9scyBzaG91bGQgaGF2ZSBhIGdy
ZWVuIGJhY2tncm91bmQuCisKKyAgICAKK1NVQ0NFU1MKK1NVQ0NFU1MKK1NVQ0NFU1MKK1NVQ0NF
U1MKK1NVQ0NFU1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL3BzZXVkby1yZXF1
aXJlZC1vcHRpb25hbC0wMDUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3BzZXVkby1yZXF1
aXJlZC1vcHRpb25hbC0wMDUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li4yNWFiNDQ1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvcHNldWRv
LXJlcXVpcmVkLW9wdGlvbmFsLTAwNS5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzxodG1sPgorPGhl
YWQ+Cis8dGl0bGU+cmVxdWlyZWQvb3B0aW9uYWwgQ1NTIHBzZXVkb2NsYXNzZXMgcGFydCA1PC90
aXRsZT4KKzxzdHlsZT4KKyBpbnB1dDpvcHRpb25hbCB7IGJhY2tncm91bmQ6IGxpbWU7IH0KKyBp
bnB1dCB7IGJhY2tncm91bmQ6IHJlZDsgfQorIGlucHV0OnJlcXVpcmVkIHsgYmFja2dyb3VuZDog
cmVkOyB9Cis8L3N0eWxlPgorPHNjcmlwdCBsYW5ndWFnZT0iSmF2YVNjcmlwdCIgdHlwZT0idGV4
dC9qYXZhc2NyaXB0Ij4KKyAgICBmdW5jdGlvbiBsb2cobWVzc2FnZSkgeworICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmlubmVySFRNTCArPSAiPGxpPiIrbWVzc2Fn
ZSsiPC9saT4iOworICAgIH0KKworICAgIGZ1bmN0aW9uIHRlc3QoKSB7CisgICAgICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICAgICAgdiA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlO
YW1lKCJ2aWN0aW0iKTsKKworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdi5sZW5ndGg7IGkrKykK
KyAgICAgICAgICAgIGlmIChkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHZb
aV0sIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JhY2tncm91bmQtY29sb3InKSA9PSAicmdiKDAs
IDI1NSwgMCkiKQorICAgICAgICAgICAgICAgIGxvZygiU1VDQ0VTUyIpOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIGxvZygiRkFJTFVSRSIpOworICAgIH0KKzwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgorPHA+QWxsIGNvbnRyb2xzIHNob3VsZCBo
YXZlIGEgZ3JlZW4gYmFja2dyb3VuZC48L3A+Cis8aW5wdXQgdHlwZT0icmFuZ2UiIG5hbWU9InZp
Y3RpbSIgcmVxdWlyZWQvPgorPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0idmljdGltIiByZXF1
aXJlZC8+Cis8aW5wdXQgdHlwZT0iaW1hZ2UiIG5hbWU9InZpY3RpbSIgcmVxdWlyZWQvPgorPGlu
cHV0IHR5cGU9InJlc2V0IiBuYW1lPSJ2aWN0aW0iIHJlcXVpcmVkLz4KKzxpbnB1dCB0eXBlPSJi
dXR0b24iIG5hbWU9InZpY3RpbSIgcmVxdWlyZWQvPgorPGhyPgorPG9sIGlkPSJjb25zb2xlIj48
L29sPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3Mv
cHNldWRvLXJlcXVpcmVkLW9wdGlvbmFsLTAwNi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9m
YXN0L2Nzcy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9uYWwtMDA2LWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMzg4MzdlCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9jc3MvcHNldWRvLXJlcXVpcmVkLW9wdGlvbmFsLTAwNi1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxMyBAQAorQWxsIGNvbnRyb2xzIHNob3VsZCBoYXZlIGEgZ3JlZW4g
YmFja2dyb3VuZC4KKworICAgICAgICAgCitTVUNDRVNTCitTVUNDRVNTCitTVUNDRVNTCitTVUND
RVNTCitTVUNDRVNTCitTVUNDRVNTCitTVUNDRVNTCitTVUNDRVNTCitTVUNDRVNTCitTVUNDRVNT
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9u
YWwtMDA2Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9u
YWwtMDA2Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjNjY2VmYwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3BzZXVkby1yZXF1aXJlZC1v
cHRpb25hbC0wMDYuaHRtbApAQCAtMCwwICsxLDQ0IEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxl
PnJlcXVpcmVkL29wdGlvbmFsIENTUyBwc2V1ZG9jbGFzc2VzIHBhcnQgNjwvdGl0bGU+Cis8c3R5
bGU+CisgaW5wdXQ6b3B0aW9uYWwgeyBiYWNrZ3JvdW5kOiByZWQ7IH0KKyBpbnB1dCB7IGJhY2tn
cm91bmQ6IHJlZDsgfQorIGlucHV0OnJlcXVpcmVkIHsgYmFja2dyb3VuZDogbGltZTsgfQorPC9z
dHlsZT4KKzxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlw
dCI+CisgICAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImNvbnNvbGUiKS5pbm5lckhUTUwgKz0gIjxsaT4iK21lc3NhZ2UrIjwvbGk+IjsK
KyAgICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0KCkgeworICAgICAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOworCisgICAgICAgIHYgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgidmljdGlt
Iik7CisKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IHYubGVuZ3RoOyBpKyspCisgICAgICAgICAg
ICBpZiAoZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZSh2W2ldLCBudWxsKS5n
ZXRQcm9wZXJ0eVZhbHVlKCdiYWNrZ3JvdW5kLWNvbG9yJykgPT0gInJnYigwLCAyNTUsIDApIikK
KyAgICAgICAgICAgICAgICBsb2coIlNVQ0NFU1MiKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICBsb2coIkZBSUxVUkUiKTsKKyAgICB9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5IG9ubG9hZD0idGVzdCgpIj4KKzxwPkFsbCBjb250cm9scyBzaG91bGQgaGF2ZSBhIGdyZWVu
IGJhY2tncm91bmQuPC9wPgorPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InZpY3RpbSIgcmVxdWly
ZWQvPgorPGlucHV0IHR5cGU9InBhc3N3b3JkIiBuYW1lPSJ2aWN0aW0iIHJlcXVpcmVkLz4KKzxp
bnB1dCB0eXBlPSJzZWFyY2giIG5hbWU9InZpY3RpbSIgcmVxdWlyZWQvPgorPGlucHV0IHR5cGU9
InVybCIgbmFtZT0idmljdGltIiByZXF1aXJlZC8+Cis8aW5wdXQgdHlwZT0idGVsZXBob25lIiBu
YW1lPSJ2aWN0aW0iIHJlcXVpcmVkLz4KKzxpbnB1dCB0eXBlPSJlbWFpbCIgbmFtZT0idmljdGlt
IiByZXF1aXJlZC8+Cis8aW5wdXQgdHlwZT0ibnVtYmVyIiBuYW1lPSJ2aWN0aW0iIHJlcXVpcmVk
Lz4KKzxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0idmljdGltIiByZXF1aXJlZC8+Cis8aW5w
dXQgdHlwZT0icmFkaW8iIG5hbWU9InZpY3RpbSIgcmVxdWlyZWQvPgorPGlucHV0IHR5cGU9ImZp
bGUiIG5hbWU9InZpY3RpbSIgcmVxdWlyZWQvPgorCis8aHI+Cis8b2wgaWQ9ImNvbnNvbGUiPjwv
b2w+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwMS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwMS1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjA2OWE3NAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3Npbmct
MDAxLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKK1RoZXJlIGFyZSB0d28gZm9ybSBjb250
cm9sIGVsZW1lbnRzIGJlbG93LCBib3RoIHJlcXVpcmVkIGFuZCBibGFuazogdmFsaWRpdHkudmFs
dWVNaXNzaW5nIHNob3VsZCBiZSB0cnVlIGluIGJvdGggY2FzZXMuCisKKyAKK1NVQ0NFU1MKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3Np
bmctMDAxLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVN
aXNzaW5nLTAwMS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRjODg4
NzkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3Rh
dGUtdmFsdWVNaXNzaW5nLTAwMS5odG1sCkBAIC0wLDAgKzEsMjcgQEAKKzxodG1sPgorPGhlYWQ+
Cis8dGl0bGU+cmVxdWlyZWQgYW5kIGJhc2ljIHZhbHVlTWlzc2luZzwvdGl0bGU+Cis8c2NyaXB0
IGxhbmd1YWdlPSJKYXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgIGZ1bmN0
aW9uIGxvZyhtZXNzYWdlKSB7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25z
b2xlIikuaW5uZXJIVE1MICs9ICI8bGk+IittZXNzYWdlKyI8L2xpPiI7CisgICAgfQorCisgICAg
ZnVuY3Rpb24gdGVzdCgpIHsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAg
ICAgICB2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoInZpY3RpbSIpOworCisgICAgICAg
IGxvZygodlswXS52YWxpZGl0eS52YWx1ZU1pc3NpbmcgJiYgdlsxXS52YWxpZGl0eS52YWx1ZU1p
c3NpbmcpID8gIlNVQ0NFU1MiIDogIkZBSUxVUkUiKTsKKyAgICB9Cis8L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5IG9ubG9hZD0idGVzdCgpIj4KKzxwPlRoZXJlIGFyZSB0d28gZm9ybSBjb250cm9s
IGVsZW1lbnRzIGJlbG93LCBib3RoIHJlcXVpcmVkIGFuZCBibGFuazoKK3ZhbGlkaXR5LnZhbHVl
TWlzc2luZyBzaG91bGQgYmUgdHJ1ZSBpbiBib3RoIGNhc2VzLjwvcD4KKzxpbnB1dCBuYW1lPSJ2
aWN0aW0iIHJlcXVpcmVkLz4KKzx0ZXh0YXJlYSBuYW1lPSJ2aWN0aW0iIHJlcXVpcmVkPjwvdGV4
dGFyZWE+Cis8aHI+Cis8b2wgaWQ9ImNvbnNvbGUiPjwvb2w+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNz
aW5nLTAwMi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3Rh
dGUtdmFsdWVNaXNzaW5nLTAwMi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uMzYwNjliOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3NpbmctMDAyLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDQgQEAKK1RoZXJlIGFyZSB0d28gZm9ybSBjb250cm9sIGVsZW1lbnRzIGJlbG93LCBib3Ro
IHJlcXVpcmVkIGFuZCB3aXRoIHNvbWUgdmFsdWU6IHZhbGlkaXR5LnZhbHVlTWlzc2luZyBzaG91
bGQgYmUgZmFsc2UgaW4gYm90aCBjYXNlcy4KKworIAorU1VDQ0VTUwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2luZy0wMDIuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3NpbmctMDAyLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmYwNmY5ZgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3Np
bmctMDAyLmh0bWwKQEAgLTAsMCArMSwyNyBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5yZXF1
aXJlZCBhbmQgYmFzaWMgdmFsdWVNaXNzaW5nIDI8L3RpdGxlPgorPHNjcmlwdCBsYW5ndWFnZT0i
SmF2YVNjcmlwdCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICBmdW5jdGlvbiBsb2cobWVz
c2FnZSkgeworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmlubmVy
SFRNTCArPSAiPGxpPiIrbWVzc2FnZSsiPC9saT4iOworICAgIH0KKworICAgIGZ1bmN0aW9uIHRl
c3QoKSB7CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICAgICAgdiA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKCJ2aWN0aW0iKTsKKworICAgICAgICBsb2coKCF2WzBd
LnZhbGlkaXR5LnZhbHVlTWlzc2luZyAmJiAhdlsxXS52YWxpZGl0eS52YWx1ZU1pc3NpbmcpID8g
IlNVQ0NFU1MiIDogIkZBSUxVUkUiKTsKKyAgICB9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
IG9ubG9hZD0idGVzdCgpIj4KKzxwPlRoZXJlIGFyZSB0d28gZm9ybSBjb250cm9sIGVsZW1lbnRz
IGJlbG93LCBib3RoIHJlcXVpcmVkIGFuZCB3aXRoIHNvbWUgdmFsdWU6Cit2YWxpZGl0eS52YWx1
ZU1pc3Npbmcgc2hvdWxkIGJlIGZhbHNlIGluIGJvdGggY2FzZXMuPC9wPgorPGlucHV0IG5hbWU9
InZpY3RpbSIgdmFsdWU9InNvbWV0aGluZyIgcmVxdWlyZWQvPgorPHRleHRhcmVhIG5hbWU9InZp
Y3RpbSIgcmVxdWlyZWQ+c29tZXRoaW5nPC90ZXh0YXJlYT4KKzxocj4KKzxvbCBpZD0iY29uc29s
ZSI+PC9vbD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3NpbmctMDAzLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3NpbmctMDAzLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZmUzMzk4Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlz
c2luZy0wMDMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorVGhlcmUgYXJlIHR3byBkaXNh
YmxlZCBmb3JtIGNvbnRyb2wgZWxlbWVudHMgYmVsb3csIGJvdGggcmVxdWlyZWQgYW5kIHdpdGgg
c29tZSB2YWx1ZTogdmFsaWRpdHkudmFsdWVNaXNzaW5nIHNob3VsZCBiZSBmYWxzZSBpbiBib3Ro
IGNhc2VzLgorCisgCitTVUNDRVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwMy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9m
b3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2luZy0wMDMuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi45ZDkyZmZiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2luZy0wMDMuaHRtbApAQCAtMCww
ICsxLDI3IEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPnJlcXVpcmVkIGFuZCB2YWx1ZU1pc3Np
bmcgb24gZGlzYWJsZWQgZWxlbWVudHM8L3RpdGxlPgorPHNjcmlwdCBsYW5ndWFnZT0iSmF2YVNj
cmlwdCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICBmdW5jdGlvbiBsb2cobWVzc2FnZSkg
eworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmlubmVySFRNTCAr
PSAiPGxpPiIrbWVzc2FnZSsiPC9saT4iOworICAgIH0KKworICAgIGZ1bmN0aW9uIHRlc3QoKSB7
CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICAgICAgdiA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlOYW1lKCJ2aWN0aW0iKTsKKworICAgICAgICBsb2coKCF2WzBdLnZhbGlk
aXR5LnZhbHVlTWlzc2luZyAmJiAhdlsxXS52YWxpZGl0eS52YWx1ZU1pc3NpbmcpID8gIlNVQ0NF
U1MiIDogIkZBSUxVUkUiKTsKKyAgICB9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9h
ZD0idGVzdCgpIj4KKzxwPlRoZXJlIGFyZSB0d28gZGlzYWJsZWQgZm9ybSBjb250cm9sIGVsZW1l
bnRzIGJlbG93LCBib3RoIHJlcXVpcmVkIGFuZCB3aXRoIHNvbWUgdmFsdWU6Cit2YWxpZGl0eS52
YWx1ZU1pc3Npbmcgc2hvdWxkIGJlIGZhbHNlIGluIGJvdGggY2FzZXMuPC9wPgorPGlucHV0IG5h
bWU9InZpY3RpbSIgZGlzYWJsZWQgcmVxdWlyZWQgLz4KKzx0ZXh0YXJlYSBuYW1lPSJ2aWN0aW0i
IGRpc2FibGVkIHJlcXVpcmVkPjwvdGV4dGFyZWE+Cis8aHI+Cis8b2wgaWQ9ImNvbnNvbGUiPjwv
b2w+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwNC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwNC1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzEyN2NkZQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3Npbmct
MDA0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKK1RoZXJlIGFyZSB0d28gcmVhZG9ubHkg
Zm9ybSBjb250cm9sIGVsZW1lbnRzIGJlbG93LCBib3RoIHJlcXVpcmVkIGFuZCB3aXRoIHNvbWUg
dmFsdWU6IHZhbGlkaXR5LnZhbHVlTWlzc2luZyBzaG91bGQgYmUgZmFsc2UgaW4gYm90aCBjYXNl
cy4KKworIAorU1VDQ0VTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxp
ZGl0eVN0YXRlLXZhbHVlTWlzc2luZy0wMDQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMv
VmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3NpbmctMDA0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uZTM2OWM1NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3NpbmctMDA0Lmh0bWwKQEAgLTAsMCArMSwy
NyBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5yZXF1aXJlZCBhbmQgdmFsdWVNaXNzaW5nIG9u
IHJlYWRvbmx5IGVsZW1lbnRzPC90aXRsZT4KKzxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQi
IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpIHsKKyAg
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5pbm5lckhUTUwgKz0gIjxs
aT4iK21lc3NhZ2UrIjwvbGk+IjsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0KCkgeworICAg
ICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgICAgIHYgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5TmFtZSgidmljdGltIik7CisKKyAgICAgICAgbG9nKCghdlswXS52YWxpZGl0eS52
YWx1ZU1pc3NpbmcgJiYgIXZbMV0udmFsaWRpdHkudmFsdWVNaXNzaW5nKSA/ICJTVUNDRVNTIiA6
ICJGQUlMVVJFIik7CisgICAgfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InRl
c3QoKSI+Cis8cD5UaGVyZSBhcmUgdHdvIHJlYWRvbmx5IGZvcm0gY29udHJvbCBlbGVtZW50cyBi
ZWxvdywgYm90aCByZXF1aXJlZCBhbmQgd2l0aCBzb21lIHZhbHVlOgordmFsaWRpdHkudmFsdWVN
aXNzaW5nIHNob3VsZCBiZSBmYWxzZSBpbiBib3RoIGNhc2VzLjwvcD4KKzxpbnB1dCBuYW1lPSJ2
aWN0aW0iIHJlYWRvbmx5IHJlcXVpcmVkIC8+Cis8dGV4dGFyZWEgbmFtZT0idmljdGltIiByZWFk
b25seSByZXF1aXJlZD48L3RleHRhcmVhPgorPGhyPgorPG9sIGlkPSJjb25zb2xlIj48L29sPgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxp
ZGl0eVN0YXRlLXZhbHVlTWlzc2luZy0wMDUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2luZy0wMDUtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4ODM4NWQKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwNS1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSw5IEBACitUaGVyZSdzIGEgbGlzdCBvZiBmb3JtIGNvbnRy
b2wgZWxlbWVudHMgYmVsb3csIHJlcXVpcmVkIGF0dHJpYnV0ZSBkb2VzIG5vdCBhcHBseSB0byB0
aGVtOiB2YWxpZGl0eS52YWx1ZU1pc3Npbmcgc2hvdWxkIGJlIGZhbHNlLgorCisgICAgCitTVUND
RVNTCitTVUNDRVNTCitTVUNDRVNTCitTVUNDRVNTCitTVUNDRVNTCitTVUNDRVNTCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAw
NS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2lu
Zy0wMDUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMWM1ZDIwCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZh
bHVlTWlzc2luZy0wMDUuaHRtbApAQCAtMCwwICsxLDMyIEBACis8aHRtbD4KKzxoZWFkPgorPHRp
dGxlPnJlcXVpcmVkIGFuZCB2YWx1ZU1pc3Npbmcgb24gdW5hY2NlcHRlZCBpbnB1dCB0eXBlczwv
dGl0bGU+Cis8c2NyaXB0IGxhbmd1YWdlPSJKYXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiPgorICAgIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKSB7CisgICAgICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJjb25zb2xlIikuaW5uZXJIVE1MICs9ICI8bGk+IittZXNzYWdlKyI8L2xpPiI7
CisgICAgfQorCisgICAgZnVuY3Rpb24gdGVzdCgpIHsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKKworICAgICAgICB2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoInZpY3Rp
bSIpOworCisgICAgICAgIGZvciAoaSA9IDA7IGkgPCB2Lmxlbmd0aDsgaSsrKQorICAgICAgICAg
ICAgbG9nKCF2W2ldLnZhbGlkaXR5LnZhbHVlTWlzc2luZyA/ICJTVUNDRVNTIiA6ICJGQUlMVVJF
Iik7CisgICAgfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InRlc3QoKSI+Cis8
cD5UaGVyZSdzIGEgbGlzdCBvZiBmb3JtIGNvbnRyb2wgZWxlbWVudHMgYmVsb3csIHJlcXVpcmVk
IGF0dHJpYnV0ZSBkb2VzIG5vdCBhcHBseSB0byB0aGVtOgordmFsaWRpdHkudmFsdWVNaXNzaW5n
IHNob3VsZCBiZSBmYWxzZS48L3A+Cis8aW5wdXQgbmFtZT0idmljdGltIiB0eXBlPSJoaWRkZW4i
IHJlcXVpcmVkIC8+Cis8aW5wdXQgbmFtZT0idmljdGltIiB0eXBlPSJyYW5nZSIgcmVxdWlyZWQg
Lz4KKzxpbnB1dCBuYW1lPSJ2aWN0aW0iIHR5cGU9ImltYWdlIiByZXF1aXJlZCAvPgorPGlucHV0
IG5hbWU9InZpY3RpbSIgdHlwZT0icmVzZXQiIHJlcXVpcmVkIC8+Cis8aW5wdXQgbmFtZT0idmlj
dGltIiB0eXBlPSJidXR0b24iIHJlcXVpcmVkIC8+Cis8aW5wdXQgbmFtZT0idmljdGltIiB0eXBl
PSJzdWJtaXQiIHJlcXVpcmVkIC8+Cis8aHI+Cis8b2wgaWQ9ImNvbnNvbGUiPjwvb2w+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5
U3RhdGUtdmFsdWVNaXNzaW5nLTAwNi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwNi1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGQ1ZDI0OAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3NpbmctMDA2LWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDQgQEAKK1RoZXJlIGFyZSB0d28gY2hlY2tib3hlcyBiZWxvdywg
Ym90aCBhcmUgcmVxdWlyZWQsIG9ubHkgb25lIGlzIGNoZWNrZWQuCisKKyAKK1NVQ0NFU1MKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3Np
bmctMDA2Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVN
aXNzaW5nLTAwNi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3NWQ4
OWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3Rh
dGUtdmFsdWVNaXNzaW5nLTAwNi5odG1sCkBAIC0wLDAgKzEsMjYgQEAKKzxodG1sPgorPGhlYWQ+
Cis8dGl0bGU+cmVxdWlyZWQgYW5kIHZhbHVlTWlzc2luZyBvbiBjaGVja2JveGVzPC90aXRsZT4K
KzxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Cisg
ICAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImNvbnNvbGUiKS5pbm5lckhUTUwgKz0gIjxsaT4iK21lc3NhZ2UrIjwvbGk+IjsKKyAgICB9
CisKKyAgICBmdW5jdGlvbiB0ZXN0KCkgeworICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQorICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OworCisgICAgICAgIHYgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgidmljdGltIik7CisK
KyAgICAgICAgbG9nKCF2WzBdLnZhbGlkaXR5LnZhbHVlTWlzc2luZyAmJiB2WzFdLnZhbGlkaXR5
LnZhbHVlTWlzc2luZyA/ICJTVUNDRVNTIiA6ICJGQUlMVVJFIik7CisgICAgfQorPC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InRlc3QoKSI+Cis8cD5UaGVyZSBhcmUgdHdvIGNoZWNr
Ym94ZXMgYmVsb3csIGJvdGggYXJlIHJlcXVpcmVkLCBvbmx5IG9uZSBpcyBjaGVja2VkLjwvcD4K
KzxpbnB1dCBuYW1lPSJ2aWN0aW0iIHR5cGU9ImNoZWNrYm94IiByZXF1aXJlZCBjaGVja2VkLz4K
KzxpbnB1dCBuYW1lPSJ2aWN0aW0iIHR5cGU9ImNoZWNrYm94IiByZXF1aXJlZCAvPgorPGhyPgor
PG9sIGlkPSJjb25zb2xlIj48L29sPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2luZy0wMDctZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2lu
Zy0wMDctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5
ODZjNWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5
U3RhdGUtdmFsdWVNaXNzaW5nLTAwNy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACitUaGVy
ZSBhcmUgdHdvIHJhZGlvIGJ1dHRvbnMgYmVsb3cgd2l0aCB0aGUgc2FtZSBuYW1lLCBvbmx5IG9u
ZSBpcyByZXF1aXJlZCAod2hpY2ggbWVhbnMgdGhlIHdob2xlIGdyb3VwIGlzIHJlcXVpcmVkKSwg
dGhlIG90aGVyIG9uZSBpcyBjaGVja2VkIGFuZCBsZWFkcyB0aGUgcmVxdWlyZWQgYXR0cmlidXRl
IHRvIGJlIHNhdGlzZmllZDogbm8gbWlzc2luZyB2YWx1ZS4KKworIAorU1VDQ0VTUwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2luZy0w
MDcuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3Np
bmctMDA3Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGJkNDRmYwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12
YWx1ZU1pc3NpbmctMDA3Lmh0bWwKQEAgLTAsMCArMSwyNiBAQAorPGh0bWw+Cis8aGVhZD4KKzx0
aXRsZT5yZXF1aXJlZCBhbmQgdmFsdWVNaXNzaW5nIG9uIHJhZGlvPC90aXRsZT4KKzxzY3JpcHQg
bGFuZ3VhZ2U9IkphdmFTY3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgZnVuY3Rp
b24gbG9nKG1lc3NhZ2UpIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNv
bGUiKS5pbm5lckhUTUwgKz0gIjxsaT4iK21lc3NhZ2UrIjwvbGk+IjsKKyAgICB9CisKKyAgICBm
dW5jdGlvbiB0ZXN0KCkgeworICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQorICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAg
ICAgIHYgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgidmljdGltIik7CisKKyAgICAgICAg
bG9nKCF2WzBdLnZhbGlkaXR5LnZhbHVlTWlzc2luZyA/ICJTVUNDRVNTIiA6ICJGQUlMVVJFIik7
CisgICAgfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InRlc3QoKSI+Cis8cD5U
aGVyZSBhcmUgdHdvIHJhZGlvIGJ1dHRvbnMgYmVsb3cgd2l0aCB0aGUgc2FtZSBuYW1lLCBvbmx5
IG9uZSBpcyByZXF1aXJlZCAod2hpY2ggbWVhbnMgdGhlIHdob2xlIGdyb3VwIGlzIHJlcXVpcmVk
KSwgdGhlIG90aGVyIG9uZSBpcyBjaGVja2VkIGFuZCBsZWFkcyB0aGUgcmVxdWlyZWQgYXR0cmli
dXRlIHRvIGJlIHNhdGlzZmllZDogbm8gbWlzc2luZyB2YWx1ZS48L3A+Cis8aW5wdXQgbmFtZT0i
dmljdGltIiB0eXBlPSJyYWRpbyIgcmVxdWlyZWQvPgorPGlucHV0IG5hbWU9InZpY3RpbSIgdHlw
ZT0icmFkaW8iIGNoZWNrZWQvPgorPGhyPgorPG9sIGlkPSJjb25zb2xlIj48L29sPgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0
YXRlLXZhbHVlTWlzc2luZy0wMDgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2luZy0wMDgtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4YzQ5MGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwOC1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSw0IEBACitUaGVyZSdzIGEgdXBsb2FkIGNvbnRyb2wgYmVsb3csIHdp
dGggbm8gZmlsZSBzZWxlY3RlZDogbWlzc2luZyB2YWx1ZS4KKworCitTVUNDRVNTCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAw
OC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2lu
Zy0wMDguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZWQyNGQ2Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZh
bHVlTWlzc2luZy0wMDguaHRtbApAQCAtMCwwICsxLDI1IEBACis8aHRtbD4KKzxoZWFkPgorPHRp
dGxlPnJlcXVpcmVkIGFuZCB2YWx1ZU1pc3Npbmcgb24gZmlsZSBjb250cm9sPC90aXRsZT4KKzxz
Y3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAg
ZnVuY3Rpb24gbG9nKG1lc3NhZ2UpIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImNvbnNvbGUiKS5pbm5lckhUTUwgKz0gIjxsaT4iK21lc3NhZ2UrIjwvbGk+IjsKKyAgICB9CisK
KyAgICBmdW5jdGlvbiB0ZXN0KCkgeworICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQorICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwor
CisgICAgICAgIHYgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgidmljdGltIik7CisKKyAg
ICAgICAgbG9nKHZbMF0udmFsaWRpdHkudmFsdWVNaXNzaW5nID8gIlNVQ0NFU1MiIDogIkZBSUxV
UkUiKTsKKyAgICB9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0idGVzdCgpIj4K
KzxwPlRoZXJlJ3MgYSB1cGxvYWQgY29udHJvbCBiZWxvdywgd2l0aCBubyBmaWxlIHNlbGVjdGVk
OiBtaXNzaW5nIHZhbHVlLjwvcD4KKzxpbnB1dCBuYW1lPSJ2aWN0aW0iIHR5cGU9ImZpbGUiIHJl
cXVpcmVkLz4KKzxocj4KKzxvbCBpZD0iY29uc29sZSI+PC9vbD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1p
c3NpbmctMDA5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlT
dGF0ZS12YWx1ZU1pc3NpbmctMDA5LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi4xYWNhY2RhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2luZy0wMDktZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMTAgQEAKK1RoZXJlJ3MgYSBsaXN0IG9mIGZvcm0gY29udHJvbCBlbGVtZW50cyBiZWxv
dywgcmVxdWlyZWQgYXR0cmlidXRlIGFwcGxpZXMgdG8gdGhlbSBidXQgdGhleSdyZSBlbXB0eTog
dmFsaWRpdHkudmFsdWVNaXNzaW5nIHNob3VsZCBiZSB0cnVlLgorCisgICAgICAKK1NVQ0NFU1MK
K1NVQ0NFU1MKK1NVQ0NFU1MKK1NVQ0NFU1MKK1NVQ0NFU1MKK1NVQ0NFU1MKK1NVQ0NFU1MKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3Np
bmctMDA5Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVN
aXNzaW5nLTAwOS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkOTA1
YTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3Rh
dGUtdmFsdWVNaXNzaW5nLTAwOS5odG1sCkBAIC0wLDAgKzEsMzMgQEAKKzxodG1sPgorPGhlYWQ+
Cis8dGl0bGU+cmVxdWlyZWQgYW5kIHZhbHVlTWlzc2luZyBvbiBuZXcgaW5wdXQgdHlwZXM8L3Rp
dGxlPgorPHNjcmlwdCBsYW5ndWFnZT0iSmF2YVNjcmlwdCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0
Ij4KKyAgICBmdW5jdGlvbiBsb2cobWVzc2FnZSkgeworICAgICAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiY29uc29sZSIpLmlubmVySFRNTCArPSAiPGxpPiIrbWVzc2FnZSsiPC9saT4iOwor
ICAgIH0KKworICAgIGZ1bmN0aW9uIHRlc3QoKSB7CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7CisKKyAgICAgICAgdiA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKCJ2aWN0aW0i
KTsKKworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdi5sZW5ndGg7IGkrKykKKyAgICAgICAgICAg
IGxvZyh2W2ldLnZhbGlkaXR5LnZhbHVlTWlzc2luZyA/ICJTVUNDRVNTIiA6ICJGQUlMVVJFIik7
CisgICAgfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InRlc3QoKSI+Cis8cD5U
aGVyZSdzIGEgbGlzdCBvZiBmb3JtIGNvbnRyb2wgZWxlbWVudHMgYmVsb3csIHJlcXVpcmVkIGF0
dHJpYnV0ZSBhcHBsaWVzIHRvIHRoZW0gYnV0IHRoZXkncmUgZW1wdHk6Cit2YWxpZGl0eS52YWx1
ZU1pc3Npbmcgc2hvdWxkIGJlIHRydWUuPC9wPgorPGlucHV0IG5hbWU9InZpY3RpbSIgdHlwZT0i
dGV4dCIgcmVxdWlyZWQgLz4KKzxpbnB1dCBuYW1lPSJ2aWN0aW0iIHR5cGU9InNlYXJjaCIgcmVx
dWlyZWQgLz4KKzxpbnB1dCBuYW1lPSJ2aWN0aW0iIHR5cGU9InVybCIgcmVxdWlyZWQgLz4KKzxp
bnB1dCBuYW1lPSJ2aWN0aW0iIHR5cGU9InRlbGVwaG9uZSIgcmVxdWlyZWQgLz4KKzxpbnB1dCBu
YW1lPSJ2aWN0aW0iIHR5cGU9ImVtYWlsIiByZXF1aXJlZCAvPgorPGlucHV0IG5hbWU9InZpY3Rp
bSIgdHlwZT0icGFzc3dvcmQiIHJlcXVpcmVkIC8+Cis8aW5wdXQgbmFtZT0idmljdGltIiB0eXBl
PSJudW1iZXIiIHJlcXVpcmVkIC8+Cis8aHI+Cis8b2wgaWQ9ImNvbnNvbGUiPjwvb2w+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3JlcXVpcmVk
LWF0dHJpYnV0ZS0wMDEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yZXF1
aXJlZC1hdHRyaWJ1dGUtMDAxLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi45YjIwMTQzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9m
b3Jtcy9yZXF1aXJlZC1hdHRyaWJ1dGUtMDAxLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAK
K1RoZXJlIGFyZSB0d28gZm9ybSBjb250cm9sIGVsZW1lbnRzIGJlbG93LCBib3RoIHJlcXVpcmVk
LgorCisgCitTVUNDRVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3JlcXVp
cmVkLWF0dHJpYnV0ZS0wMDEuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmVxdWlyZWQt
YXR0cmlidXRlLTAwMS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJm
MzRjMTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3JlcXVpcmVk
LWF0dHJpYnV0ZS0wMDEuaHRtbApAQCAtMCwwICsxLDI2IEBACis8aHRtbD4KKzxoZWFkPgorPHRp
dGxlPnJlcXVpcmVkIGF0dHJpYnV0ZSBwcmVzZW5jZSB0ZXN0PC90aXRsZT4KKzxzY3JpcHQgbGFu
Z3VhZ2U9IkphdmFTY3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgZnVuY3Rpb24g
bG9nKG1lc3NhZ2UpIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUi
KS5pbm5lckhUTUwgKz0gIjxsaT4iK21lc3NhZ2UrIjwvbGk+IjsKKyAgICB9CisKKyAgICBmdW5j
dGlvbiB0ZXN0KCkgeworICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQor
ICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgICAg
IHYgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgidmljdGltIik7CisKKyAgICAgICAgbG9n
KCh2WzBdLnJlcXVpcmVkICYmIHZbMV0ucmVxdWlyZWQpID8gIlNVQ0NFU1MiIDogIkZBSUxVUkUi
KTsKKyAgICB9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0idGVzdCgpIj4KKzxw
PlRoZXJlIGFyZSB0d28gZm9ybSBjb250cm9sIGVsZW1lbnRzIGJlbG93LCBib3RoIHJlcXVpcmVk
LjwvcD4KKzxpbnB1dCBuYW1lPSJ2aWN0aW0iIHJlcXVpcmVkIC8+Cis8dGV4dGFyZWEgbmFtZT0i
dmljdGltIiByZXF1aXJlZD48L3RleHRhcmVhPgorPGhyPgorPG9sIGlkPSJjb25zb2xlIj48L29s
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9y
ZXF1aXJlZC1hdHRyaWJ1dGUtMDAyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZm9y
bXMvcmVxdWlyZWQtYXR0cmlidXRlLTAwMi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uYWM1YzBmZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvcmVxdWlyZWQtYXR0cmlidXRlLTAwMi1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSw0IEBACitUaGVyZSBhcmUgdHdvIGZvcm0gY29udHJvbCBlbGVtZW50cyBiZWxvdywgYm90aCBv
cHRpb25hbC4gVGhleSdyZSBzZXQgYXMgcmVxdWlyZWQgdmlhIHJlcXVpcmVkIERPTSBhdHRyaWJ1
dGUuCisKKyAKK1NVQ0NFU1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmVx
dWlyZWQtYXR0cmlidXRlLTAwMi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yZXF1aXJl
ZC1hdHRyaWJ1dGUtMDAyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
YWE4NWU4OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmVxdWly
ZWQtYXR0cmlidXRlLTAwMi5odG1sCkBAIC0wLDAgKzEsMzIgQEAKKzxodG1sPgorPGhlYWQ+Cis8
dGl0bGU+cmVxdWlyZWQgYXR0cmlidXRlIEpTIHNldDwvdGl0bGU+Cis8c2NyaXB0IGxhbmd1YWdl
PSJKYXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgIGZ1bmN0aW9uIGxvZyht
ZXNzYWdlKSB7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuaW5u
ZXJIVE1MICs9ICI8bGk+IittZXNzYWdlKyI8L2xpPiI7CisgICAgfQorCisgICAgZnVuY3Rpb24g
dGVzdCgpIHsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgICAgICB2ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoInZpY3RpbSIpOworCisgICAgICAgIGlmICh2WzBd
LnJlcXVpcmVkID09IGZhbHNlICYmIHZbMV0ucmVxdWlyZWQgPT0gZmFsc2UpIHsKKyAgICAgICAg
ICAgIHZbMF0ucmVxdWlyZWQgPSB0cnVlOworICAgICAgICAgICAgdlsxXS5yZXF1aXJlZCA9IHRy
dWU7CisgICAgICAgICAgICBsb2cgKCh2WzBdLnJlcXVpcmVkICYmIHZbMV0ucmVxdWlyZWQpID8g
IlNVQ0NFU1MiIDogIkZBSUxVUkUiKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAg
ICAgICBsb2coIkZBSUxVUkUiKTsKKyAgICB9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9u
bG9hZD0idGVzdCgpIj4KKzxwPlRoZXJlIGFyZSB0d28gZm9ybSBjb250cm9sIGVsZW1lbnRzIGJl
bG93LCBib3RoIG9wdGlvbmFsLiBUaGV5J3JlIHNldCBhcyByZXF1aXJlZCB2aWEgcmVxdWlyZWQg
RE9NIGF0dHJpYnV0ZS48L3A+Cis8aW5wdXQgbmFtZT0idmljdGltIiAvPgorPHRleHRhcmVhIG5h
bWU9InZpY3RpbSI+PC90ZXh0YXJlYT4KKzxocj4KKzxvbCBpZD0iY29uc29sZSI+PC9vbD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggZWVkMzhmOC4uMzI2ZDU5OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NSBAQAorMjAwOS0wNy0x
NyAgTWljaGVsYW5nZWxvIERlIFNpbW9uZSAgPG1pY2Rlc2ltQGdtYWlsLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU1NTEKKyAgICAgICAgQWRkZWQgc3VwcG9ydCBmb3Ig
dGhlICJyZXF1aXJlZCIgYXR0cmlidXRlLCB0aGUgdmFsdWVNaXNzaW5nIGZsYWcKKyAgICAgICAg
dG8gdGhlIFZhbGlkaXR5U3RhdGUgb2JqZWN0IGFuZCA6cmVxdWlyZWQvOm9wdGlvbmFsIENTUyBw
c2V1ZG9jbGFzc2VzLgorICAgICAgICBQYXJ0IG9mIEhUTUw1IHNlYy4gRm9ybXMgc3BlY3MuCisg
ICAgICAgIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsv
bXVsdGlwYWdlL2Zvcm1zLmh0bWwjYXR0ci1pbnB1dC1yZXF1aXJlZAorCisgICAgICAgIFRlc3Rz
OiBmYXN0L2Nzcy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9uYWwtMDAxLmh0bWwKKyAgICAgICAgICAg
ICAgIGZhc3QvY3NzL3BzZXVkby1yZXF1aXJlZC1vcHRpb25hbC0wMDIuaHRtbAorICAgICAgICAg
ICAgICAgZmFzdC9jc3MvcHNldWRvLXJlcXVpcmVkLW9wdGlvbmFsLTAwMy5odG1sCisgICAgICAg
ICAgICAgICBmYXN0L2Nzcy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9uYWwtMDA0Lmh0bWwKKyAgICAg
ICAgICAgICAgIGZhc3QvY3NzL3BzZXVkby1yZXF1aXJlZC1vcHRpb25hbC0wMDUuaHRtbAorICAg
ICAgICAgICAgICAgZmFzdC9jc3MvcHNldWRvLXJlcXVpcmVkLW9wdGlvbmFsLTAwNi5odG1sCisg
ICAgICAgICAgICAgICBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwMS5o
dG1sCisgICAgICAgICAgICAgICBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5n
LTAwMi5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVN
aXNzaW5nLTAwMy5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUt
dmFsdWVNaXNzaW5nLTAwNC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Zvcm1zL1ZhbGlkaXR5
U3RhdGUtdmFsdWVNaXNzaW5nLTAwNS5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Zvcm1zL1Zh
bGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwNi5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Zv
cm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwNy5odG1sCisgICAgICAgICAgICAgICBm
YXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwOC5odG1sCisgICAgICAgICAg
ICAgICBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwOS5odG1sCisgICAg
ICAgICAgICAgICBmYXN0L2Zvcm1zL3JlcXVpcmVkLWF0dHJpYnV0ZS0wMDEuaHRtbAorICAgICAg
ICAgICAgICAgZmFzdC9mb3Jtcy9yZXF1aXJlZC1hdHRyaWJ1dGUtMDAyLmh0bWwKKworICAgICAg
ICAqIGNzcy9DU1NTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6
ZXh0cmFjdFBzZXVkb1R5cGUpOiBwc2V1ZG9SZXF1aXJlZC9wc2V1ZG9PcHRpb25hbAorICAgICAg
ICAqIGNzcy9DU1NTZWxlY3Rvci5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6Oik6
IGRpdHRvCisgICAgICAgICogY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9y
KTogZGl0dG8KKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RWxl
bWVudDo6aXNPcHRpb25hbEZvcm1Db250cm9sKTogY2hlY2sgZm9yIG9wdGlvbmFsIGNvbnRyb2xz
CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojppc1JlcXVpcmVkRm9ybUNvbnRyb2wpOiBjaGVj
ayBmb3IgcmVxdWlyZWQgY29udHJvbHMKKyAgICAgICAgKiBodG1sL0hUTUxBdHRyaWJ1dGVOYW1l
cy5pbjogcmVxdWlyZWQgYXR0cmlidXRlCisgICAgICAgICogaHRtbC9IVE1MQnV0dG9uRWxlbWVu
dC5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEJ1dHRvbkVsZW1lbnQ6OmlzT3B0aW9uYWxGb3Jt
Q29udHJvbCk6IGRpdHRvCisgICAgICAgICogaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnJlcXVpcmVkKTog
cmVxdWlyZWRBdHRyIGdldHRlcgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxl
bWVudDo6c2V0UmVxdWlyZWQpOiByZXF1aXJlZEF0dHIgc2V0dGVyCisgICAgICAgICogaHRtbC9I
VE1MRm9ybUNvbnRyb2xFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRy
b2xFbGVtZW50Ojp2YWx1ZU1pc3NpbmcpOiBtZXRob2QgZGVmaW5pdGlvbgorICAgICAgICAqIGh0
bWwvSFRNTElucHV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVt
ZW50Ojp2YWx1ZU1pc3NpbmcpOiB2YWxpZGF0aW9uIGNvZGUKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxJbnB1dEVsZW1lbnQ6OmlzUmVxdWlyZWRGb3JtQ29udHJvbCk6IGRpdHRvCisgICAgICAgICog
aHRtbC9IVE1MSW5wdXRFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVt
ZW50Ojppc09wdGlvbmFsRm9ybUNvbnRyb2wpOiBkaXR0bworICAgICAgICAqIGh0bWwvSFRNTElu
cHV0RWxlbWVudC5pZGw6IHJlcXVpcmVkIERPTSBhdHRyaWJ1dGUKKyAgICAgICAgKiBodG1sL0hU
TUxTZWxlY3RFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6
aXNPcHRpb25hbEZvcm1Db250cm9sKTogZGl0dG8KKyAgICAgICAgKiBodG1sL0hUTUxUZXh0QXJl
YUVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQ6OnZhbHVl
TWlzc2luZyk6IHZhbGlkYXRpb24gY29kZQorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRBcmVh
RWxlbWVudDo6aXNPcHRpb25hbEZvcm1Db250cm9sKTogZGl0dG8KKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxUZXh0QXJlYUVsZW1lbnQ6OmlzUmVxdWlyZWRGb3JtQ29udHJvbCk6IGRpdHRvCisgICAg
ICAgICogaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmlkbDogcmVxdWlyZWQgRE9NIGF0dHJpYnV0
ZQorICAgICAgICAqIGh0bWwvVmFsaWRpdHlTdGF0ZS5jcHA6CisgICAgICAgICogaHRtbC9WYWxp
ZGl0eVN0YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpWYWxpZGl0eVN0YXRlOjp2YWx1ZU1pc3Np
bmcpOiB2YWxpZGF0aW9uIGZsYWcKKwogMjAwOS0wNy0xNyAgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJl
eXRoZXIgIDx6ZWNrZUBzZWxmaXNoLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBHdXN0YXZv
IE5vcm9uaGEuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAgYi9XZWJD
b3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAKaW5kZXggNTQyOWMxNi4uODA5MTBhNyAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCisrKyBiL1dlYkNvcmUvY3NzL0NTU1NlbGVj
dG9yLmNwcApAQCAtMTE3LDYgKzExNyw4IEBAIHZvaWQgQ1NTU2VsZWN0b3I6OmV4dHJhY3RQc2V1
ZG9UeXBlKCkgY29uc3QKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbm90
U3RyLCAoIm5vdCgiKSk7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG9u
bHlDaGlsZCwgKCJvbmx5LWNoaWxkIikpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWlj
U3RyaW5nLCBvbmx5T2ZUeXBlLCAoIm9ubHktb2YtdHlwZSIpKTsKKyAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKEF0b21pY1N0cmluZywgb3B0aW9uYWwsICgib3B0aW9uYWwiKSk7CisgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHJlcXVpcmVkLCAoInJlcXVpcmVkIikpOwogICAg
IERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCByZXNpemVyLCAoIi13ZWJraXQtcmVz
aXplciIpKTsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgcm9vdCwgKCJy
b290IikpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBzY3JvbGxiYXIs
ICgiLXdlYmtpdC1zY3JvbGxiYXIiKSk7CkBAIC0yODYsNiArMjg4LDEwIEBAIHZvaWQgQ1NTU2Vs
ZWN0b3I6OmV4dHJhY3RQc2V1ZG9UeXBlKCkgY29uc3QKICAgICAgICAgbV9wc2V1ZG9UeXBlID0g
UHNldWRvU2luZ2xlQnV0dG9uOwogICAgIGVsc2UgaWYgKG1fdmFsdWUgPT0gbm9CdXR0b24pCiAg
ICAgICAgIG1fcHNldWRvVHlwZSA9IFBzZXVkb05vQnV0dG9uOworICAgIGVsc2UgaWYgKG1fdmFs
dWUgPT0gb3B0aW9uYWwpCisgICAgICAgIG1fcHNldWRvVHlwZSA9IFBzZXVkb09wdGlvbmFsOwor
ICAgIGVsc2UgaWYgKG1fdmFsdWUgPT0gcmVxdWlyZWQpCisgICAgICAgIG1fcHNldWRvVHlwZSA9
IFBzZXVkb1JlcXVpcmVkOwogICAgIGVsc2UgaWYgKG1fdmFsdWUgPT0gc2Nyb2xsYmFyQ29ybmVy
KSB7CiAgICAgICAgIGVsZW1lbnQgPSB0cnVlOwogICAgICAgICBtX3BzZXVkb1R5cGUgPSBQc2V1
ZG9TY3JvbGxiYXJDb3JuZXI7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5o
IGIvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaAppbmRleCA1YjdmOWZhLi4xODI1MWZkIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oCisrKyBiL1dlYkNvcmUvY3NzL0NTU1Nl
bGVjdG9yLmgKQEAgLTEyOCw2ICsxMjgsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
ICAgICBQc2V1ZG9GdWxsUGFnZU1lZGlhLAogICAgICAgICAgICAgUHNldWRvRGlzYWJsZWQsCiAg
ICAgICAgICAgICBQc2V1ZG9JbnB1dFBsYWNlaG9sZGVyLAorICAgICAgICAgICAgUHNldWRvT3B0
aW9uYWwsCisgICAgICAgICAgICBQc2V1ZG9SZXF1aXJlZCwKICAgICAgICAgICAgIFBzZXVkb1Jl
YWRPbmx5LAogICAgICAgICAgICAgUHNldWRvUmVhZFdyaXRlLAogICAgICAgICAgICAgUHNldWRv
SW5kZXRlcm1pbmF0ZSwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3Iu
Y3BwIGIvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKaW5kZXggNzgwNTg4My4uMDM3
YjQyYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKKysrIGIv
V2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKQEAgLTIzNzUsNiArMjM3NSwxMCBAQCBi
b29sIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3RvcihD
U1NTZWxlY3Rvciogc2VsLCBFbGVtZQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgICAgICAgICAgcmV0dXJuIGUtPmlzVGV4dEZvcm1Db250cm9sKCkgJiYgIWUtPmlz
UmVhZE9ubHlGb3JtQ29udHJvbCgpOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FzZSBD
U1NTZWxlY3Rvcjo6UHNldWRvT3B0aW9uYWw6CisgICAgICAgICAgICAgICAgcmV0dXJuIGUgJiYg
ZS0+aXNPcHRpb25hbEZvcm1Db250cm9sKCk7CisgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9y
OjpQc2V1ZG9SZXF1aXJlZDoKKyAgICAgICAgICAgICAgICByZXR1cm4gZSAmJiBlLT5pc1JlcXVp
cmVkRm9ybUNvbnRyb2woKTsKICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0No
ZWNrZWQ6IHsKICAgICAgICAgICAgICAgICBpZiAoIWUgfHwgIWUtPmlzRm9ybUNvbnRyb2xFbGVt
ZW50KCkpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9k
b20vRWxlbWVudC5oIGIvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IGQxZWYzYjIuLjBmZjJl
ZDEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9XZWJDb3JlL2RvbS9F
bGVtZW50LmgKQEAgLTIxMiw2ICsyMTIsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlz
RW5hYmxlZEZvcm1Db250cm9sKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwg
Ym9vbCBpc1JlYWRPbmx5Rm9ybUNvbnRyb2woKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAg
IHZpcnR1YWwgYm9vbCBpc1RleHRGb3JtQ29udHJvbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgdmlydHVhbCBib29sIGlzT3B0aW9uYWxGb3JtQ29udHJvbCgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzUmVxdWlyZWRGb3JtQ29udHJvbCgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgZm9ybUNvbnRyb2xWYWx1ZU1h
dGNoZXNSZW5kZXJlcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lk
IHNldEZvcm1Db250cm9sVmFsdWVNYXRjaGVzUmVuZGVyZXIoYm9vbCkgeyB9CmRpZmYgLS1naXQg
YS9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluIGIvV2ViQ29yZS9odG1sL0hUTUxB
dHRyaWJ1dGVOYW1lcy5pbgppbmRleCBiZDM3Yjk2Li42ZDRkM2NiIDEwMDY0NAotLS0gYS9XZWJD
b3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MQXR0
cmlidXRlTmFtZXMuaW4KQEAgLTE5NSw2ICsxOTUsNyBAQCBwcm9ncmVzcwogcHJvbXB0CiByZWFk
b25seQogcmVsCityZXF1aXJlZAogcmVzdWx0cwogcmV2CiByb2xlCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuaCBiL1dlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxl
bWVudC5oCmluZGV4IGIxZDc0NGMuLmY1YjliNjIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9I
VE1MQnV0dG9uRWxlbWVudC5oCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5o
CkBAIC02MSw2ICs2MSw3IEBAIHB1YmxpYzoKICAgICAKIHByaXZhdGU6CiAgICAgZW51bSBUeXBl
IHsgU1VCTUlULCBSRVNFVCwgQlVUVE9OIH07CisgICAgdmlydHVhbCBib29sIGlzT3B0aW9uYWxG
b3JtQ29udHJvbCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAogICAgIFR5cGUgbV90eXBlOwog
ICAgIGJvb2wgbV9hY3RpdmVTdWJtaXQ7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTEZv
cm1Db250cm9sRWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVu
dC5jcHAKaW5kZXggODc5MzhhYy4uZTkwYTZlMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hU
TUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRy
b2xFbGVtZW50LmNwcApAQCAtMjA0LDYgKzIwNCwxNiBAQCB2b2lkIEhUTUxGb3JtQ29udHJvbEVs
ZW1lbnQ6OnNldEF1dG9mb2N1cyhib29sIGIpCiAgICAgc2V0QXR0cmlidXRlKGF1dG9mb2N1c0F0
dHIsIGIgPyAiYXV0b2ZvY3VzIiA6IDApOwogfQogCitib29sIEhUTUxGb3JtQ29udHJvbEVsZW1l
bnQ6OnJlcXVpcmVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gaGFzQXR0cmlidXRlKHJlcXVpcmVk
QXR0cik7Cit9CisKK3ZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6c2V0UmVxdWlyZWQoYm9v
bCBiKQoreworICAgIHNldEF0dHJpYnV0ZShyZXF1aXJlZEF0dHIsIGIgPyAicmVxdWlyZWQiIDog
MCk7Cit9CisKIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6cmVjYWxjU3R5bGUoU3R5bGVD
aGFuZ2UgY2hhbmdlKQogewogICAgIEhUTUxFbGVtZW50OjpyZWNhbGNTdHlsZShjaGFuZ2UpOwpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaCBiL1dlYkNv
cmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKaW5kZXggYTAzZWIxYS4uZmIwZGEyOSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaAorKysgYi9X
ZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oCkBAIC03NCw2ICs3NCwxMSBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBib29sIGF1dG9mb2N1cygpIGNvbnN0OwogICAgIHZvaWQgc2V0
QXV0b2ZvY3VzKGJvb2wpOwogCisgICAgYm9vbCByZXF1aXJlZCgpIGNvbnN0OworICAgIHZvaWQg
c2V0UmVxdWlyZWQoYm9vbCk7CisKKyAgICB2aXJ0dWFsIGJvb2wgdmFsdWVNaXNzaW5nKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KKwogICAgIHZpcnR1YWwgdm9pZCByZWNhbGNTdHlsZShTdHls
ZUNoYW5nZSk7CiAKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgZm9ybUNvbnRyb2xO
YW1lKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5j
cHAgYi9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXggOTg2OThmYS4uZjJh
Yjk4OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBi
L1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcApAQCAtMTE0LDYgKzExNCwzOCBAQCBi
b29sIEhUTUxJbnB1dEVsZW1lbnQ6OmF1dG9Db21wbGV0ZSgpIGNvbnN0CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKK2Jvb2wgSFRNTElucHV0RWxlbWVudDo6dmFsdWVNaXNzaW5nKCkgY29uc3QKK3sK
KyAgICBpZiAoIWlzUmVxdWlyZWRGb3JtQ29udHJvbCgpIHx8IHJlYWRPbmx5KCkgfHwgZGlzYWJs
ZWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgc3dpdGNoIChpbnB1dFR5cGUoKSkg
eworICAgICAgICBjYXNlIFRFWFQ6CisgICAgICAgIGNhc2UgU0VBUkNIOgorICAgICAgICBjYXNl
IFVSTDoKKyAgICAgICAgY2FzZSBURUxFUEhPTkU6CisgICAgICAgIGNhc2UgRU1BSUw6CisgICAg
ICAgIGNhc2UgUEFTU1dPUkQ6CisgICAgICAgIGNhc2UgTlVNQkVSOgorICAgICAgICBjYXNlIEZJ
TEU6CisgICAgICAgICAgICByZXR1cm4gdmFsdWUoKS5pc0VtcHR5KCk7CisgICAgICAgIGNhc2Ug
Q0hFQ0tCT1g6CisgICAgICAgICAgICByZXR1cm4gIWNoZWNrZWQoKTsKKyAgICAgICAgY2FzZSBS
QURJTzoKKyAgICAgICAgICAgIHJldHVybiAhZG9jdW1lbnQoKS0+Y2hlY2tlZFJhZGlvQnV0dG9u
cygpLmNoZWNrZWRCdXR0b25Gb3JHcm91cChuYW1lKCkpOworICAgICAgICBjYXNlIEhJRERFTjoK
KyAgICAgICAgY2FzZSBSQU5HRToKKyAgICAgICAgY2FzZSBTVUJNSVQ6CisgICAgICAgIGNhc2Ug
SU1BR0U6CisgICAgICAgIGNhc2UgUkVTRVQ6CisgICAgICAgIGNhc2UgQlVUVE9OOgorICAgICAg
ICBjYXNlIElTSU5ERVg6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9
CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIHN0YXRpYyBpbmxpbmUgQ2hlY2tlZFJhZGlvQnV0
dG9ucyYgY2hlY2tlZFJhZGlvQnV0dG9ucyhjb25zdCBIVE1MSW5wdXRFbGVtZW50ICplbGVtZW50
KQogewogICAgIGlmIChIVE1MRm9ybUVsZW1lbnQqIGZvcm0gPSBlbGVtZW50LT5mb3JtKCkpCkBA
IC0xNTc5LDYgKzE2MTEsMzcgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50Ojp1bnJlZ2lzdGVyRm9y
QWN0aXZhdGlvbkNhbGxiYWNrSWZOZWVkZWQoKQogICAgICAgICBkb2N1bWVudCgpLT51bnJlZ2lz
dGVyRm9yRG9jdW1lbnRBY3RpdmF0aW9uQ2FsbGJhY2tzKHRoaXMpOwogfQogCitib29sIEhUTUxJ
bnB1dEVsZW1lbnQ6OmlzUmVxdWlyZWRGb3JtQ29udHJvbCgpIGNvbnN0Cit7CisgICAgaWYgKCFy
ZXF1aXJlZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBzd2l0Y2ggKGlucHV0VHlw
ZSgpKSB7CisgICAgICAgIGNhc2UgVEVYVDoKKyAgICAgICAgY2FzZSBTRUFSQ0g6CisgICAgICAg
IGNhc2UgVVJMOgorICAgICAgICBjYXNlIFRFTEVQSE9ORToKKyAgICAgICAgY2FzZSBFTUFJTDoK
KyAgICAgICAgY2FzZSBQQVNTV09SRDoKKyAgICAgICAgY2FzZSBOVU1CRVI6CisgICAgICAgIGNh
c2UgQ0hFQ0tCT1g6CisgICAgICAgIGNhc2UgUkFESU86CisgICAgICAgIGNhc2UgRklMRToKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBjYXNlIEhJRERFTjoKKyAgICAgICAgY2Fz
ZSBSQU5HRToKKyAgICAgICAgY2FzZSBTVUJNSVQ6CisgICAgICAgIGNhc2UgSU1BR0U6CisgICAg
ICAgIGNhc2UgUkVTRVQ6CisgICAgICAgIGNhc2UgQlVUVE9OOgorICAgICAgICBjYXNlIElTSU5E
RVg6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6
OmNhY2hlU2VsZWN0aW9uKGludCBzdGFydCwgaW50IGVuZCkKIHsKICAgICBtX2RhdGEuc2V0Q2Fj
aGVkU2VsZWN0aW9uU3RhcnQoc3RhcnQpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxJ
bnB1dEVsZW1lbnQuaCBiL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKaW5kZXggYmUy
YjRmNC4uNmFlZDgyMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQu
aAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCkBAIC05MCw2ICs5MCw4IEBA
IHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBpc1RleHRGb3JtQ29udHJvbCgpIGNvbnN0IHsg
cmV0dXJuIGlzVGV4dEZpZWxkKCk7IH0KIAorICAgIHZpcnR1YWwgYm9vbCB2YWx1ZU1pc3Npbmco
KSBjb25zdDsKKwogICAgIGJvb2wgaXNUZXh0QnV0dG9uKCkgY29uc3QgeyByZXR1cm4gbV90eXBl
ID09IFNVQk1JVCB8fCBtX3R5cGUgPT0gUkVTRVQgfHwgbV90eXBlID09IEJVVFRPTjsgfQogICAg
IHZpcnR1YWwgYm9vbCBpc1JhZGlvQnV0dG9uKCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IFJB
RElPOyB9CiAgICAgdmlydHVhbCBib29sIGlzVGV4dEZpZWxkKCkgY29uc3QgeyByZXR1cm4gbV90
eXBlID09IFRFWFQgfHwgbV90eXBlID09IFBBU1NXT1JEIHx8IG1fdHlwZSA9PSBTRUFSQ0ggfHwg
bV90eXBlID09IElTSU5ERVggfHwgbV90eXBlID09IEVNQUlMIHx8IG1fdHlwZSA9PSBOVU1CRVIg
fHwgbV90eXBlID09IFRFTEVQSE9ORSB8fCBtX3R5cGUgPT0gVVJMOyB9CkBAIC0yMzcsNiArMjM5
LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZ2lzdGVyRm9yQWN0aXZhdGlvbkNhbGxiYWNrSWZO
ZWVkZWQoKTsKICAgICB2b2lkIHVucmVnaXN0ZXJGb3JBY3RpdmF0aW9uQ2FsbGJhY2tJZk5lZWRl
ZCgpOwogCisgICAgdmlydHVhbCBib29sIGlzT3B0aW9uYWxGb3JtQ29udHJvbCgpIGNvbnN0IHsg
cmV0dXJuICFpc1JlcXVpcmVkRm9ybUNvbnRyb2woKTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1Jl
cXVpcmVkRm9ybUNvbnRyb2woKSBjb25zdDsKKwogICAgIElucHV0RWxlbWVudERhdGEgbV9kYXRh
OwogICAgIGludCBtX3hQb3M7CiAgICAgaW50IG1feVBvczsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
aHRtbC9IVE1MSW5wdXRFbGVtZW50LmlkbCBiL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50
LmlkbAppbmRleCA3Y2Q5MWIwLi4zYTQxMGRmIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRN
TElucHV0RWxlbWVudC5pZGwKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaWRs
CkBAIC00Myw2ICs0Myw3IEBAIG1vZHVsZSBodG1sIHsKICAgICAgICAgICAgICAgICAgYXR0cmli
dXRlIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nIG5hbWU7CiAgICAgICAgICAg
ICAgICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgICAgICAgcGxhY2Vob2xkZXI7CiAgICAgICAgICAg
ICAgICAgIGF0dHJpYnV0ZSBib29sZWFuICAgICAgICAgcmVhZE9ubHk7CisgICAgICAgICAgICAg
ICAgIGF0dHJpYnV0ZSBib29sZWFuICAgICAgICAgcmVxdWlyZWQ7CiAjaWYgZGVmaW5lZChMQU5H
VUFHRV9PQkpFQ1RJVkVfQykgJiYgTEFOR1VBR0VfT0JKRUNUSVZFX0MKICAgICAgICAgICAgICAg
ICAgYXR0cmlidXRlIFtDb252ZXJ0VG9TdHJpbmddIERPTVN0cmluZyBzaXplOyAvLyBET00gbGV2
ZWwgMiBjaGFuZ2VkIHRoaXMgdG8gYSBsb25nLCBidXQgb3VyIGV4aXN0aW5nIEFQSSBpcyBhIHN0
cmluZwogI2Vsc2UKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5o
IGIvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmgKaW5kZXggZTUyMzY0MS4uOGY1NzVk
MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmgKKysrIGIvV2Vi
Q29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmgKQEAgLTEzMCw2ICsxMzAsOCBAQCBwcml2YXRl
OgogCiAgICAgdmlydHVhbCB2b2lkIGluc2VydGVkSW50b1RyZWUoYm9vbCk7CiAKKyAgICB2aXJ0
dWFsIGJvb2wgaXNPcHRpb25hbEZvcm1Db250cm9sKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQor
CiAgICAgU2VsZWN0RWxlbWVudERhdGEgbV9kYXRhOwogICAgIENvbGxlY3Rpb25DYWNoZSBtX2Nv
bGxlY3Rpb25JbmZvOwogfTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFF
bGVtZW50LmggYi9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oCmluZGV4IGUyMmI1
ZDUuLjVlZjhlNTUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50
LmgKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaApAQCAtNTIsNiArNTIs
OCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNUZXh0Rm9ybUNvbnRyb2woKSBjb25z
dCB7IHJldHVybiB0cnVlOyB9CiAKKyAgICB2aXJ0dWFsIGJvb2wgdmFsdWVNaXNzaW5nKCkgY29u
c3QgeyByZXR1cm4gaXNSZXF1aXJlZEZvcm1Db250cm9sKCkgJiYgIWRpc2FibGVkKCkgJiYgIXJl
YWRPbmx5KCkgJiYgdmFsdWUoKS5pc0VtcHR5KCk7IH0KKwogICAgIGludCBzZWxlY3Rpb25TdGFy
dCgpOwogICAgIGludCBzZWxlY3Rpb25FbmQoKTsKIApAQCAtOTYsNiArOTgsOSBAQCBwcml2YXRl
OgogCiAgICAgdm9pZCB1cGRhdGVWYWx1ZSgpIGNvbnN0OwogCisgICAgdmlydHVhbCBib29sIGlz
T3B0aW9uYWxGb3JtQ29udHJvbCgpIGNvbnN0IHsgcmV0dXJuICFpc1JlcXVpcmVkRm9ybUNvbnRy
b2woKTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1JlcXVpcmVkRm9ybUNvbnRyb2woKSBjb25zdCB7
IHJldHVybiByZXF1aXJlZCgpOyB9CisKICAgICBpbnQgbV9yb3dzOwogICAgIGludCBtX2NvbHM7
CiAgICAgV3JhcE1ldGhvZCBtX3dyYXA7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTFRl
eHRBcmVhRWxlbWVudC5pZGwgYi9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5pZGwK
aW5kZXggZjZhYzA1YS4uYmE4YTA2MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxUZXh0
QXJlYUVsZW1lbnQuaWRsCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50Lmlk
bApAQCAtMzYsNiArMzYsNyBAQCBtb2R1bGUgaHRtbCB7CiAgICAgICAgICAgICAgICAgIGF0dHJp
YnV0ZSAgYm9vbGVhbiAgICAgICAgICAgICAgYXV0b2ZvY3VzOwogICAgICAgICAgICAgICAgICBh
dHRyaWJ1dGUgIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nICAgICAgICAgICAg
bmFtZTsKICAgICAgICAgICAgICAgICAgYXR0cmlidXRlICBib29sZWFuICAgICAgICAgICAgICBy
ZWFkT25seTsKKyAgICAgICAgICAgICAgICAgYXR0cmlidXRlICBib29sZWFuICAgICAgICAgICAg
ICByZXF1aXJlZDsKICAgICAgICAgICAgICAgICAgYXR0cmlidXRlICBsb25nICAgICAgICAgICAg
ICAgICByb3dzOwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgIERPTVN0cmluZyAgICAgICAg
ICAgIHR5cGU7CiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSAgW0NvbnZlcnROdWxsVG9OdWxs
U3RyaW5nXSBET01TdHJpbmcgICAgICAgICAgICB2YWx1ZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
aHRtbC9WYWxpZGl0eVN0YXRlLmNwcCBiL1dlYkNvcmUvaHRtbC9WYWxpZGl0eVN0YXRlLmNwcApp
bmRleCA4ZmY2MjljLi44NjIyN2Q0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvVmFsaWRpdHlT
dGF0ZS5jcHAKKysrIGIvV2ViQ29yZS9odG1sL1ZhbGlkaXR5U3RhdGUuY3BwCkBAIC0yMiw3ICsy
Miw2IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJWYWxpZGl0eVN0YXRlLmgi
Ci0jaW5jbHVkZSAiSFRNTEZvcm1Db250cm9sRWxlbWVudC5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9WYWxpZGl0eVN0YXRlLmggYi9XZWJDb3Jl
L2h0bWwvVmFsaWRpdHlTdGF0ZS5oCmluZGV4IGEwMTFmN2EuLjYwYzBkYzYgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvaHRtbC9WYWxpZGl0eVN0YXRlLmgKKysrIGIvV2ViQ29yZS9odG1sL1ZhbGlkaXR5
U3RhdGUuaApAQCAtMjMsMTMgKzIzLDEyIEBACiAjaWZuZGVmIFZhbGlkaXR5U3RhdGVfaAogI2Rl
ZmluZSBWYWxpZGl0eVN0YXRlX2gKIAorI2luY2x1ZGUgIkhUTUxGb3JtQ29udHJvbEVsZW1lbnQu
aCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAgIGNsYXNzIEhUTUxGb3JtQ29udHJvbEVs
ZW1lbnQ7Ci0KICAgICBjbGFzcyBWYWxpZGl0eVN0YXRlIDogcHVibGljIFJlZkNvdW50ZWQ8VmFs
aWRpdHlTdGF0ZT4gewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8VmFs
aWRpdHlTdGF0ZT4gY3JlYXRlKEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqIG93bmVyKQpAQCAtMzks
NyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgSFRNTEZvcm1Db250cm9s
RWxlbWVudCogY29udHJvbCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udHJvbDsgfQogCi0gICAgICAg
IGJvb2wgdmFsdWVNaXNzaW5nKCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAgICAgYm9vbCB2YWx1
ZU1pc3NpbmcoKSB7IHJldHVybiBjb250cm9sKCktPnZhbHVlTWlzc2luZygpOyB9CiAgICAgICAg
IGJvb2wgdHlwZU1pc21hdGNoKCkgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgYm9vbCBwYXR0
ZXJuTWlzbWF0Y2goKSB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICBib29sIHRvb0xvbmcoKSB7
IHJldHVybiBmYWxzZTsgfQo=
</data>
<flag name="review"
          id="17317"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>32979</attachid>
            <date>2009-07-17 15:17:40 -0700</date>
            <delta_ts>2009-07-17 15:18:39 -0700</delta_ts>
            <desc>Proposed patch, rev. 5b</desc>
            <filename>25551.patch</filename>
            <type>text/plain</type>
            <size>46940</size>
            <attacher name="Michelangelo De Simone">michelangelo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2MzdiZGQzLi41MzhmOWJlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDggQEAKKzIwMDktMDct
MTcgIE1pY2hlbGFuZ2VsbyBEZSBTaW1vbmUgIDxtaWNkZXNpbUBnbWFpbC5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1NTUxCisgICAgICAgIFRlc3Qgc3VpdGUgZm9yIHRo
ZSByZXF1aXJlZCBhdHRyaWJ1dGUsIHRoZSB2YWx1ZU1pc3NpbmcgZmxhZyBhbmQgbmV3CisgICAg
ICAgIDpyZXF1aXJlZCBhbmQgOm9wdGlvbmFsIENTUyBwc2V1ZG9jbGFzc2VzLgorICAgICAgICBQ
YXJ0IG9mIHRoZSBIVE1MNSBzZWMuIEZvcm1zLgorICAgICAgICBodHRwOi8vd3d3LndoYXR3Zy5v
cmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS9mb3Jtcy5odG1sI2F0dHIt
aW5wdXQtcmVxdWlyZWQKKworICAgICAgICAqIGZhc3QvY3NzL3BzZXVkby1yZXF1aXJlZC1vcHRp
b25hbC0wMDEtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9wc2V1ZG8t
cmVxdWlyZWQtb3B0aW9uYWwtMDAxLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL3Bz
ZXVkby1yZXF1aXJlZC1vcHRpb25hbC0wMDItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2Nzcy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9uYWwtMDAyLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvY3NzL3BzZXVkby1yZXF1aXJlZC1vcHRpb25hbC0wMDMtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9uYWwtMDAz
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL3BzZXVkby1yZXF1aXJlZC1vcHRpb25h
bC0wMDQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9wc2V1ZG8tcmVx
dWlyZWQtb3B0aW9uYWwtMDA0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL3BzZXVk
by1yZXF1aXJlZC1vcHRpb25hbC0wMDUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2Nzcy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9uYWwtMDA1Lmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvY3NzL3BzZXVkby1yZXF1aXJlZC1vcHRpb25hbC0wMDYtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9uYWwtMDA2Lmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3Np
bmctMDAxLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9WYWxpZGl0
eVN0YXRlLXZhbHVlTWlzc2luZy0wMDEuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jt
cy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2luZy0wMDItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwMi5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAw
My1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvVmFsaWRpdHlTdGF0
ZS12YWx1ZU1pc3NpbmctMDAzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvVmFs
aWRpdHlTdGF0ZS12YWx1ZU1pc3NpbmctMDA0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2luZy0wMDQuaHRtbDogQWRkZWQu
CisgICAgICAgICogZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2luZy0wMDUtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFs
dWVNaXNzaW5nLTAwNS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL1ZhbGlkaXR5
U3RhdGUtdmFsdWVNaXNzaW5nLTAwNi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3NpbmctMDA2Lmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3NpbmctMDA3LWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlz
c2luZy0wMDcuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRl
LXZhbHVlTWlzc2luZy0wMDgtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zv
cm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwOC5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwOS1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3Npbmct
MDA5Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvcmVxdWlyZWQtYXR0cmlidXRl
LTAwMS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvcmVxdWlyZWQt
YXR0cmlidXRlLTAwMS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL3JlcXVpcmVk
LWF0dHJpYnV0ZS0wMDItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1z
L3JlcXVpcmVkLWF0dHJpYnV0ZS0wMDIuaHRtbDogQWRkZWQuCisKIDIwMDktMDctMTcgIEtlbm5l
dGggUm9oZGUgQ2hyaXN0aWFuc2VuICA8a2VubmV0aC5jaHJpc3RpYW5zZW5Ab3BlbmJvc3NhLm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvY3NzL3BzZXVkby1yZXF1aXJlZC1vcHRpb25hbC0wMDEtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvcHNldWRvLXJlcXVpcmVkLW9wdGlvbmFsLTAwMS1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTk2OTNjMgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3BzZXVkby1yZXF1aXJlZC1v
cHRpb25hbC0wMDEtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorQWxsIGNvbnRyb2xzIHNo
b3VsZCBoYXZlIGEgZ3JlZW4gYmFja2dyb3VuZC4KKworIAorU1VDQ0VTUworU1VDQ0VTUwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvcHNldWRvLXJlcXVpcmVkLW9wdGlvbmFsLTAw
MS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvcHNldWRvLXJlcXVpcmVkLW9wdGlvbmFsLTAw
MS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4ODIwOTUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9u
YWwtMDAxLmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5yZXF1
aXJlZC9vcHRpb25hbCBDU1MgcHNldWRvY2xhc3NlczwvdGl0bGU+Cis8c3R5bGU+CisgaW5wdXQ6
cmVxdWlyZWQgeyBiYWNrZ3JvdW5kOiBsaW1lOyB9CisgdGV4dGFyZWE6cmVxdWlyZWQgeyBiYWNr
Z3JvdW5kOiBsaW1lOyB9CisgaW5wdXQgeyBiYWNrZ3JvdW5kOiByZWQ7IH0KKyB0ZXh0YXJlYSB7
IGJhY2tncm91bmQ6IHJlZDsgfQorIGlucHV0Om9wdGlvbmFsIHsgYmFja2dyb3VuZDogcmVkOyB9
CisgdGV4dGFyZWE6b3B0aW9uYWwgeyBiYWNrZ3JvdW5kOiByZWQ7IH0KKzwvc3R5bGU+Cis8c2Ny
aXB0IGxhbmd1YWdlPSJKYXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgIGZ1
bmN0aW9uIGxvZyhtZXNzYWdlKSB7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJj
b25zb2xlIikuaW5uZXJIVE1MICs9ICI8bGk+IittZXNzYWdlKyI8L2xpPiI7CisgICAgfQorCisg
ICAgZnVuY3Rpb24gdGVzdCgpIHsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKwor
ICAgICAgICB2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoInZpY3RpbSIpOworCisgICAg
ICAgIGZvciAoaSA9IDA7IGkgPCB2Lmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgaWYgKGRvY3Vt
ZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUodltpXSwgbnVsbCkuZ2V0UHJvcGVydHlW
YWx1ZSgnYmFja2dyb3VuZC1jb2xvcicpID09ICJyZ2IoMCwgMjU1LCAwKSIpCisgICAgICAgICAg
ICAgICAgbG9nKCJTVUNDRVNTIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
bG9nKCJGQUlMVVJFIik7CisgICAgfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9
InRlc3QoKSI+Cis8cD5BbGwgY29udHJvbHMgc2hvdWxkIGhhdmUgYSBncmVlbiBiYWNrZ3JvdW5k
LjwvcD4KKzxpbnB1dCBuYW1lPSJ2aWN0aW0iIHJlcXVpcmVkIC8+Cis8dGV4dGFyZWEgbmFtZT0i
dmljdGltIiByZXF1aXJlZCAvPjwvdGV4dGFyZWE+Cis8aHI+Cis8b2wgaWQ9ImNvbnNvbGUiPjwv
b2w+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9w
c2V1ZG8tcmVxdWlyZWQtb3B0aW9uYWwtMDAyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zh
c3QvY3NzL3BzZXVkby1yZXF1aXJlZC1vcHRpb25hbC0wMDItZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5NjkzYzIKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2Nzcy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9uYWwtMDAyLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDUgQEAKK0FsbCBjb250cm9scyBzaG91bGQgaGF2ZSBhIGdyZWVuIGJh
Y2tncm91bmQuCisKKyAKK1NVQ0NFU1MKK1NVQ0NFU1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvY3NzL3BzZXVkby1yZXF1aXJlZC1vcHRpb25hbC0wMDIuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvY3NzL3BzZXVkby1yZXF1aXJlZC1vcHRpb25hbC0wMDIuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi40MTM2MDQwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9jc3MvcHNldWRvLXJlcXVpcmVkLW9wdGlvbmFsLTAwMi5odG1sCkBAIC0wLDAg
KzEsMzYgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+cmVxdWlyZWQvb3B0aW9uYWwgQ1NTIHBz
ZXVkb2NsYXNzZXMgcGFydCAyPC90aXRsZT4KKzxzdHlsZT4KKyBpbnB1dDpvcHRpb25hbCB7IGJh
Y2tncm91bmQ6IGxpbWU7IH0KKyB0ZXh0YXJlYTpvcHRpb25hbCB7IGJhY2tncm91bmQ6IGxpbWU7
IH0KKyBpbnB1dCB7IGJhY2tncm91bmQ6IHJlZDsgfQorIHRleHRhcmVhIHsgYmFja2dyb3VuZDog
cmVkOyB9Cis8L3N0eWxlPgorPHNjcmlwdCBsYW5ndWFnZT0iSmF2YVNjcmlwdCIgdHlwZT0idGV4
dC9qYXZhc2NyaXB0Ij4KKyAgICBmdW5jdGlvbiBsb2cobWVzc2FnZSkgeworICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmlubmVySFRNTCArPSAiPGxpPiIrbWVzc2Fn
ZSsiPC9saT4iOworICAgIH0KKworICAgIGZ1bmN0aW9uIHRlc3QoKSB7CisgICAgICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICAgICAgdiA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlO
YW1lKCJ2aWN0aW0iKTsKKworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdi5sZW5ndGg7IGkrKykK
KyAgICAgICAgICAgIGlmIChkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHZb
aV0sIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JhY2tncm91bmQtY29sb3InKSA9PSAicmdiKDAs
IDI1NSwgMCkiKQorICAgICAgICAgICAgICAgIGxvZygiU1VDQ0VTUyIpOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIGxvZygiRkFJTFVSRSIpOworICAgIH0KKzwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgorPHA+QWxsIGNvbnRyb2xzIHNob3VsZCBo
YXZlIGEgZ3JlZW4gYmFja2dyb3VuZC48L3A+Cis8aW5wdXQgbmFtZT0idmljdGltIi8+Cis8dGV4
dGFyZWEgbmFtZT0idmljdGltIiAvPjwvdGV4dGFyZWE+Cis8aHI+Cis8b2wgaWQ9ImNvbnNvbGUi
Pjwvb2w+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nz
cy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9uYWwtMDAzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2Zhc3QvY3NzL3BzZXVkby1yZXF1aXJlZC1vcHRpb25hbC0wMDMtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwZGVmZjAKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9uYWwtMDAzLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDYgQEAKK0FsbCBjb250cm9scyBzaG91bGQgaGF2ZSBhIGdyZWVu
IGJhY2tncm91bmQuCisKKyAgCitTVUNDRVNTCitTVUNDRVNTCitTVUNDRVNTCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9uYWwtMDAzLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9uYWwtMDAzLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTk3YjFhMwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3BzZXVkby1yZXF1aXJlZC1vcHRpb25hbC0wMDMu
aHRtbApAQCAtMCwwICsxLDM3IEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPnJlcXVpcmVkL29w
dGlvbmFsIENTUyBwc2V1ZG9jbGFzc2VzIHBhcnQgMzwvdGl0bGU+Cis8c3R5bGU+CisgaW5wdXQ6
cmVxdWlyZWQgeyBiYWNrZ3JvdW5kOiBsaW1lOyB9CisgdGV4dGFyZWE6cmVxdWlyZWQgeyBiYWNr
Z3JvdW5kOiBsaW1lOyB9CisgaW5wdXQgeyBiYWNrZ3JvdW5kOiByZWQ7IH0KKyB0ZXh0YXJlYSB7
IGJhY2tncm91bmQ6IHJlZDsgfQorPC9zdHlsZT4KKzxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3Jp
cHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpIHsK
KyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5pbm5lckhUTUwgKz0g
IjxsaT4iK21lc3NhZ2UrIjwvbGk+IjsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0KCkgewor
ICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgICAgIHYgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5TmFtZSgidmljdGltIik7CisKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IHYu
bGVuZ3RoOyBpKyspCisgICAgICAgICAgICBpZiAoZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29t
cHV0ZWRTdHlsZSh2W2ldLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdiYWNrZ3JvdW5kLWNvbG9y
JykgPT0gInJnYigwLCAyNTUsIDApIikKKyAgICAgICAgICAgICAgICBsb2coIlNVQ0NFU1MiKTsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBsb2coIkZBSUxVUkUiKTsKKyAgICB9
Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0idGVzdCgpIj4KKzxwPkFsbCBjb250
cm9scyBzaG91bGQgaGF2ZSBhIGdyZWVuIGJhY2tncm91bmQuPC9wPgorPGlucHV0IG5hbWU9InZp
Y3RpbSIgcmVxdWlyZWQgLz4KKzx0ZXh0YXJlYSBuYW1lPSJ2aWN0aW0iIHJlcXVpcmVkIGRpc2Fi
bGVkLz48L3RleHRhcmVhPgorPHRleHRhcmVhIG5hbWU9InZpY3RpbSIgcmVxdWlyZWQgcmVhZG9u
bHkvPjwvdGV4dGFyZWE+Cis8aHI+Cis8b2wgaWQ9ImNvbnNvbGUiPjwvb2w+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9wc2V1ZG8tcmVxdWlyZWQt
b3B0aW9uYWwtMDA0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3BzZXVkby1y
ZXF1aXJlZC1vcHRpb25hbC0wMDQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLmE2MWQxMzQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2Nzcy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9uYWwtMDA0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDggQEAKK0FsbCBjb250cm9scyBzaG91bGQgaGF2ZSBhIGdyZWVuIGJhY2tncm91bmQuCisKK0xv
cmVtIGlwc3VtICAgIAorU1VDQ0VTUworU1VDQ0VTUworU1VDQ0VTUworU1VDQ0VTUworU1VDQ0VT
UwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvcHNldWRvLXJlcXVpcmVkLW9wdGlv
bmFsLTAwNC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvcHNldWRvLXJlcXVpcmVkLW9wdGlv
bmFsLTAwNC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2NWEyNWQK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9wc2V1ZG8tcmVxdWlyZWQt
b3B0aW9uYWwtMDA0Lmh0bWwKQEAgLTAsMCArMSw0NyBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRs
ZT5yZXF1aXJlZC9vcHRpb25hbCBDU1MgcHNldWRvY2xhc3NlcyBwYXJ0IDQ8L3RpdGxlPgorPHN0
eWxlPgorIGJ1dHRvbjpvcHRpb25hbCB7IGJhY2tncm91bmQ6IGxpbWU7IH0KKyBpbnB1dDpvcHRp
b25hbCB7IGJhY2tncm91bmQ6IGxpbWU7IH0KKyBzZWxlY3Q6b3B0aW9uYWwgeyBiYWNrZ3JvdW5k
OiBsaW1lOyB9CisgdGV4dGFyZWE6b3B0aW9uYWwgeyBiYWNrZ3JvdW5kOiBsaW1lOyB9CisgYnV0
dG9uIHsgYmFja2dyb3VuZDogcmVkOyB9CisgaW5wdXQgeyBiYWNrZ3JvdW5kOiByZWQ7IH0KKyBz
ZWxlY3QgeyBiYWNrZ3JvdW5kOiByZWQ7IH0KKyB0ZXh0YXJlYSB7IGJhY2tncm91bmQ6IHJlZDsg
fQorIGJ1dHRvbjpyZXF1aXJlZCB7IGJhY2tncm91bmQ6IHJlZDsgfQorIGlucHV0OnJlcXVpcmVk
IHsgYmFja2dyb3VuZDogcmVkOyB9Cisgc2VsZWN0OnJlcXVpcmVkIHsgYmFja2dyb3VuZDogcmVk
OyB9CisgdGV4dGFyZWE6cmVxdWlyZWQgeyBiYWNrZ3JvdW5kOiByZWQ7IH0KKzwvc3R5bGU+Cis8
c2NyaXB0IGxhbmd1YWdlPSJKYXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAg
IGZ1bmN0aW9uIGxvZyhtZXNzYWdlKSB7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJjb25zb2xlIikuaW5uZXJIVE1MICs9ICI8bGk+IittZXNzYWdlKyI8L2xpPiI7CisgICAgfQor
CisgICAgZnVuY3Rpb24gdGVzdCgpIHsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
KworICAgICAgICB2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoInZpY3RpbSIpOworCisg
ICAgICAgIGZvciAoaSA9IDA7IGkgPCB2Lmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgaWYgKGRv
Y3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUodltpXSwgbnVsbCkuZ2V0UHJvcGVy
dHlWYWx1ZSgnYmFja2dyb3VuZC1jb2xvcicpID09ICJyZ2IoMCwgMjU1LCAwKSIpCisgICAgICAg
ICAgICAgICAgbG9nKCJTVUNDRVNTIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgbG9nKCJGQUlMVVJFIik7CisgICAgfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxv
YWQ9InRlc3QoKSI+Cis8cD5BbGwgY29udHJvbHMgc2hvdWxkIGhhdmUgYSBncmVlbiBiYWNrZ3Jv
dW5kLjwvcD4KKzxidXR0b24gdHlwZT0iYnV0dG9uIiBuYW1lPSJ2aWN0aW0iPkxvcmVtIGlwc3Vt
PC9idXR0b24+Cis8aW5wdXQgbmFtZT0idmljdGltIiBkaXNhYmxlZC8+Cis8aW5wdXQgdHlwZT0i
YnV0dG9uIiBuYW1lPSJ2aWN0aW0iLz4KKzxzZWxlY3QgbmFtZT0idmljdGltIj48L3NlbGVjdD4K
Kzx0ZXh0YXJlYSBuYW1lPSJ2aWN0aW0iPjwvdGV4dGFyZWE+Cis8aHI+Cis8b2wgaWQ9ImNvbnNv
bGUiPjwvb2w+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2Nzcy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9uYWwtMDA1LWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2Zhc3QvY3NzL3BzZXVkby1yZXF1aXJlZC1vcHRpb25hbC0wMDUtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzZjM2NGMKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9uYWwtMDA1LWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDggQEAKK0FsbCBjb250cm9scyBzaG91bGQgaGF2ZSBhIGdy
ZWVuIGJhY2tncm91bmQuCisKKyAgICAKK1NVQ0NFU1MKK1NVQ0NFU1MKK1NVQ0NFU1MKK1NVQ0NF
U1MKK1NVQ0NFU1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL3BzZXVkby1yZXF1
aXJlZC1vcHRpb25hbC0wMDUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3BzZXVkby1yZXF1
aXJlZC1vcHRpb25hbC0wMDUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li4yNWFiNDQ1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvcHNldWRv
LXJlcXVpcmVkLW9wdGlvbmFsLTAwNS5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzxodG1sPgorPGhl
YWQ+Cis8dGl0bGU+cmVxdWlyZWQvb3B0aW9uYWwgQ1NTIHBzZXVkb2NsYXNzZXMgcGFydCA1PC90
aXRsZT4KKzxzdHlsZT4KKyBpbnB1dDpvcHRpb25hbCB7IGJhY2tncm91bmQ6IGxpbWU7IH0KKyBp
bnB1dCB7IGJhY2tncm91bmQ6IHJlZDsgfQorIGlucHV0OnJlcXVpcmVkIHsgYmFja2dyb3VuZDog
cmVkOyB9Cis8L3N0eWxlPgorPHNjcmlwdCBsYW5ndWFnZT0iSmF2YVNjcmlwdCIgdHlwZT0idGV4
dC9qYXZhc2NyaXB0Ij4KKyAgICBmdW5jdGlvbiBsb2cobWVzc2FnZSkgeworICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmlubmVySFRNTCArPSAiPGxpPiIrbWVzc2Fn
ZSsiPC9saT4iOworICAgIH0KKworICAgIGZ1bmN0aW9uIHRlc3QoKSB7CisgICAgICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICAgICAgdiA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlO
YW1lKCJ2aWN0aW0iKTsKKworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdi5sZW5ndGg7IGkrKykK
KyAgICAgICAgICAgIGlmIChkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHZb
aV0sIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JhY2tncm91bmQtY29sb3InKSA9PSAicmdiKDAs
IDI1NSwgMCkiKQorICAgICAgICAgICAgICAgIGxvZygiU1VDQ0VTUyIpOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIGxvZygiRkFJTFVSRSIpOworICAgIH0KKzwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgorPHA+QWxsIGNvbnRyb2xzIHNob3VsZCBo
YXZlIGEgZ3JlZW4gYmFja2dyb3VuZC48L3A+Cis8aW5wdXQgdHlwZT0icmFuZ2UiIG5hbWU9InZp
Y3RpbSIgcmVxdWlyZWQvPgorPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0idmljdGltIiByZXF1
aXJlZC8+Cis8aW5wdXQgdHlwZT0iaW1hZ2UiIG5hbWU9InZpY3RpbSIgcmVxdWlyZWQvPgorPGlu
cHV0IHR5cGU9InJlc2V0IiBuYW1lPSJ2aWN0aW0iIHJlcXVpcmVkLz4KKzxpbnB1dCB0eXBlPSJi
dXR0b24iIG5hbWU9InZpY3RpbSIgcmVxdWlyZWQvPgorPGhyPgorPG9sIGlkPSJjb25zb2xlIj48
L29sPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3Mv
cHNldWRvLXJlcXVpcmVkLW9wdGlvbmFsLTAwNi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9m
YXN0L2Nzcy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9uYWwtMDA2LWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMzg4MzdlCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9jc3MvcHNldWRvLXJlcXVpcmVkLW9wdGlvbmFsLTAwNi1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxMyBAQAorQWxsIGNvbnRyb2xzIHNob3VsZCBoYXZlIGEgZ3JlZW4g
YmFja2dyb3VuZC4KKworICAgICAgICAgCitTVUNDRVNTCitTVUNDRVNTCitTVUNDRVNTCitTVUND
RVNTCitTVUNDRVNTCitTVUNDRVNTCitTVUNDRVNTCitTVUNDRVNTCitTVUNDRVNTCitTVUNDRVNT
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9u
YWwtMDA2Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9u
YWwtMDA2Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjNjY2VmYwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3BzZXVkby1yZXF1aXJlZC1v
cHRpb25hbC0wMDYuaHRtbApAQCAtMCwwICsxLDQ0IEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxl
PnJlcXVpcmVkL29wdGlvbmFsIENTUyBwc2V1ZG9jbGFzc2VzIHBhcnQgNjwvdGl0bGU+Cis8c3R5
bGU+CisgaW5wdXQ6b3B0aW9uYWwgeyBiYWNrZ3JvdW5kOiByZWQ7IH0KKyBpbnB1dCB7IGJhY2tn
cm91bmQ6IHJlZDsgfQorIGlucHV0OnJlcXVpcmVkIHsgYmFja2dyb3VuZDogbGltZTsgfQorPC9z
dHlsZT4KKzxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlw
dCI+CisgICAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImNvbnNvbGUiKS5pbm5lckhUTUwgKz0gIjxsaT4iK21lc3NhZ2UrIjwvbGk+IjsK
KyAgICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0KCkgeworICAgICAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOworCisgICAgICAgIHYgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgidmljdGlt
Iik7CisKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IHYubGVuZ3RoOyBpKyspCisgICAgICAgICAg
ICBpZiAoZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZSh2W2ldLCBudWxsKS5n
ZXRQcm9wZXJ0eVZhbHVlKCdiYWNrZ3JvdW5kLWNvbG9yJykgPT0gInJnYigwLCAyNTUsIDApIikK
KyAgICAgICAgICAgICAgICBsb2coIlNVQ0NFU1MiKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICBsb2coIkZBSUxVUkUiKTsKKyAgICB9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5IG9ubG9hZD0idGVzdCgpIj4KKzxwPkFsbCBjb250cm9scyBzaG91bGQgaGF2ZSBhIGdyZWVu
IGJhY2tncm91bmQuPC9wPgorPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InZpY3RpbSIgcmVxdWly
ZWQvPgorPGlucHV0IHR5cGU9InBhc3N3b3JkIiBuYW1lPSJ2aWN0aW0iIHJlcXVpcmVkLz4KKzxp
bnB1dCB0eXBlPSJzZWFyY2giIG5hbWU9InZpY3RpbSIgcmVxdWlyZWQvPgorPGlucHV0IHR5cGU9
InVybCIgbmFtZT0idmljdGltIiByZXF1aXJlZC8+Cis8aW5wdXQgdHlwZT0idGVsZXBob25lIiBu
YW1lPSJ2aWN0aW0iIHJlcXVpcmVkLz4KKzxpbnB1dCB0eXBlPSJlbWFpbCIgbmFtZT0idmljdGlt
IiByZXF1aXJlZC8+Cis8aW5wdXQgdHlwZT0ibnVtYmVyIiBuYW1lPSJ2aWN0aW0iIHJlcXVpcmVk
Lz4KKzxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0idmljdGltIiByZXF1aXJlZC8+Cis8aW5w
dXQgdHlwZT0icmFkaW8iIG5hbWU9InZpY3RpbSIgcmVxdWlyZWQvPgorPGlucHV0IHR5cGU9ImZp
bGUiIG5hbWU9InZpY3RpbSIgcmVxdWlyZWQvPgorCis8aHI+Cis8b2wgaWQ9ImNvbnNvbGUiPjwv
b2w+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwMS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwMS1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjA2OWE3NAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3Npbmct
MDAxLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKK1RoZXJlIGFyZSB0d28gZm9ybSBjb250
cm9sIGVsZW1lbnRzIGJlbG93LCBib3RoIHJlcXVpcmVkIGFuZCBibGFuazogdmFsaWRpdHkudmFs
dWVNaXNzaW5nIHNob3VsZCBiZSB0cnVlIGluIGJvdGggY2FzZXMuCisKKyAKK1NVQ0NFU1MKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3Np
bmctMDAxLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVN
aXNzaW5nLTAwMS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRjODg4
NzkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3Rh
dGUtdmFsdWVNaXNzaW5nLTAwMS5odG1sCkBAIC0wLDAgKzEsMjcgQEAKKzxodG1sPgorPGhlYWQ+
Cis8dGl0bGU+cmVxdWlyZWQgYW5kIGJhc2ljIHZhbHVlTWlzc2luZzwvdGl0bGU+Cis8c2NyaXB0
IGxhbmd1YWdlPSJKYXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgIGZ1bmN0
aW9uIGxvZyhtZXNzYWdlKSB7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25z
b2xlIikuaW5uZXJIVE1MICs9ICI8bGk+IittZXNzYWdlKyI8L2xpPiI7CisgICAgfQorCisgICAg
ZnVuY3Rpb24gdGVzdCgpIHsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAg
ICAgICB2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoInZpY3RpbSIpOworCisgICAgICAg
IGxvZygodlswXS52YWxpZGl0eS52YWx1ZU1pc3NpbmcgJiYgdlsxXS52YWxpZGl0eS52YWx1ZU1p
c3NpbmcpID8gIlNVQ0NFU1MiIDogIkZBSUxVUkUiKTsKKyAgICB9Cis8L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5IG9ubG9hZD0idGVzdCgpIj4KKzxwPlRoZXJlIGFyZSB0d28gZm9ybSBjb250cm9s
IGVsZW1lbnRzIGJlbG93LCBib3RoIHJlcXVpcmVkIGFuZCBibGFuazoKK3ZhbGlkaXR5LnZhbHVl
TWlzc2luZyBzaG91bGQgYmUgdHJ1ZSBpbiBib3RoIGNhc2VzLjwvcD4KKzxpbnB1dCBuYW1lPSJ2
aWN0aW0iIHJlcXVpcmVkLz4KKzx0ZXh0YXJlYSBuYW1lPSJ2aWN0aW0iIHJlcXVpcmVkPjwvdGV4
dGFyZWE+Cis8aHI+Cis8b2wgaWQ9ImNvbnNvbGUiPjwvb2w+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNz
aW5nLTAwMi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3Rh
dGUtdmFsdWVNaXNzaW5nLTAwMi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uMzYwNjliOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3NpbmctMDAyLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDQgQEAKK1RoZXJlIGFyZSB0d28gZm9ybSBjb250cm9sIGVsZW1lbnRzIGJlbG93LCBib3Ro
IHJlcXVpcmVkIGFuZCB3aXRoIHNvbWUgdmFsdWU6IHZhbGlkaXR5LnZhbHVlTWlzc2luZyBzaG91
bGQgYmUgZmFsc2UgaW4gYm90aCBjYXNlcy4KKworIAorU1VDQ0VTUwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2luZy0wMDIuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3NpbmctMDAyLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmYwNmY5ZgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3Np
bmctMDAyLmh0bWwKQEAgLTAsMCArMSwyNyBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5yZXF1
aXJlZCBhbmQgYmFzaWMgdmFsdWVNaXNzaW5nIDI8L3RpdGxlPgorPHNjcmlwdCBsYW5ndWFnZT0i
SmF2YVNjcmlwdCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICBmdW5jdGlvbiBsb2cobWVz
c2FnZSkgeworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmlubmVy
SFRNTCArPSAiPGxpPiIrbWVzc2FnZSsiPC9saT4iOworICAgIH0KKworICAgIGZ1bmN0aW9uIHRl
c3QoKSB7CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICAgICAgdiA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKCJ2aWN0aW0iKTsKKworICAgICAgICBsb2coKCF2WzBd
LnZhbGlkaXR5LnZhbHVlTWlzc2luZyAmJiAhdlsxXS52YWxpZGl0eS52YWx1ZU1pc3NpbmcpID8g
IlNVQ0NFU1MiIDogIkZBSUxVUkUiKTsKKyAgICB9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
IG9ubG9hZD0idGVzdCgpIj4KKzxwPlRoZXJlIGFyZSB0d28gZm9ybSBjb250cm9sIGVsZW1lbnRz
IGJlbG93LCBib3RoIHJlcXVpcmVkIGFuZCB3aXRoIHNvbWUgdmFsdWU6Cit2YWxpZGl0eS52YWx1
ZU1pc3Npbmcgc2hvdWxkIGJlIGZhbHNlIGluIGJvdGggY2FzZXMuPC9wPgorPGlucHV0IG5hbWU9
InZpY3RpbSIgdmFsdWU9InNvbWV0aGluZyIgcmVxdWlyZWQvPgorPHRleHRhcmVhIG5hbWU9InZp
Y3RpbSIgcmVxdWlyZWQ+c29tZXRoaW5nPC90ZXh0YXJlYT4KKzxocj4KKzxvbCBpZD0iY29uc29s
ZSI+PC9vbD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3NpbmctMDAzLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3NpbmctMDAzLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZmUzMzk4Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlz
c2luZy0wMDMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorVGhlcmUgYXJlIHR3byBkaXNh
YmxlZCBmb3JtIGNvbnRyb2wgZWxlbWVudHMgYmVsb3csIGJvdGggcmVxdWlyZWQgYW5kIHdpdGgg
c29tZSB2YWx1ZTogdmFsaWRpdHkudmFsdWVNaXNzaW5nIHNob3VsZCBiZSBmYWxzZSBpbiBib3Ro
IGNhc2VzLgorCisgCitTVUNDRVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwMy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9m
b3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2luZy0wMDMuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi45ZDkyZmZiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2luZy0wMDMuaHRtbApAQCAtMCww
ICsxLDI3IEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPnJlcXVpcmVkIGFuZCB2YWx1ZU1pc3Np
bmcgb24gZGlzYWJsZWQgZWxlbWVudHM8L3RpdGxlPgorPHNjcmlwdCBsYW5ndWFnZT0iSmF2YVNj
cmlwdCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICBmdW5jdGlvbiBsb2cobWVzc2FnZSkg
eworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmlubmVySFRNTCAr
PSAiPGxpPiIrbWVzc2FnZSsiPC9saT4iOworICAgIH0KKworICAgIGZ1bmN0aW9uIHRlc3QoKSB7
CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICAgICAgdiA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlOYW1lKCJ2aWN0aW0iKTsKKworICAgICAgICBsb2coKCF2WzBdLnZhbGlk
aXR5LnZhbHVlTWlzc2luZyAmJiAhdlsxXS52YWxpZGl0eS52YWx1ZU1pc3NpbmcpID8gIlNVQ0NF
U1MiIDogIkZBSUxVUkUiKTsKKyAgICB9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9h
ZD0idGVzdCgpIj4KKzxwPlRoZXJlIGFyZSB0d28gZGlzYWJsZWQgZm9ybSBjb250cm9sIGVsZW1l
bnRzIGJlbG93LCBib3RoIHJlcXVpcmVkIGFuZCB3aXRoIHNvbWUgdmFsdWU6Cit2YWxpZGl0eS52
YWx1ZU1pc3Npbmcgc2hvdWxkIGJlIGZhbHNlIGluIGJvdGggY2FzZXMuPC9wPgorPGlucHV0IG5h
bWU9InZpY3RpbSIgZGlzYWJsZWQgcmVxdWlyZWQgLz4KKzx0ZXh0YXJlYSBuYW1lPSJ2aWN0aW0i
IGRpc2FibGVkIHJlcXVpcmVkPjwvdGV4dGFyZWE+Cis8aHI+Cis8b2wgaWQ9ImNvbnNvbGUiPjwv
b2w+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwNC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwNC1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzEyN2NkZQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3Npbmct
MDA0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKK1RoZXJlIGFyZSB0d28gcmVhZG9ubHkg
Zm9ybSBjb250cm9sIGVsZW1lbnRzIGJlbG93LCBib3RoIHJlcXVpcmVkIGFuZCB3aXRoIHNvbWUg
dmFsdWU6IHZhbGlkaXR5LnZhbHVlTWlzc2luZyBzaG91bGQgYmUgZmFsc2UgaW4gYm90aCBjYXNl
cy4KKworIAorU1VDQ0VTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxp
ZGl0eVN0YXRlLXZhbHVlTWlzc2luZy0wMDQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMv
VmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3NpbmctMDA0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uZTM2OWM1NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3NpbmctMDA0Lmh0bWwKQEAgLTAsMCArMSwy
NyBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5yZXF1aXJlZCBhbmQgdmFsdWVNaXNzaW5nIG9u
IHJlYWRvbmx5IGVsZW1lbnRzPC90aXRsZT4KKzxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQi
IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpIHsKKyAg
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5pbm5lckhUTUwgKz0gIjxs
aT4iK21lc3NhZ2UrIjwvbGk+IjsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0KCkgeworICAg
ICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgICAgIHYgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5TmFtZSgidmljdGltIik7CisKKyAgICAgICAgbG9nKCghdlswXS52YWxpZGl0eS52
YWx1ZU1pc3NpbmcgJiYgIXZbMV0udmFsaWRpdHkudmFsdWVNaXNzaW5nKSA/ICJTVUNDRVNTIiA6
ICJGQUlMVVJFIik7CisgICAgfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InRl
c3QoKSI+Cis8cD5UaGVyZSBhcmUgdHdvIHJlYWRvbmx5IGZvcm0gY29udHJvbCBlbGVtZW50cyBi
ZWxvdywgYm90aCByZXF1aXJlZCBhbmQgd2l0aCBzb21lIHZhbHVlOgordmFsaWRpdHkudmFsdWVN
aXNzaW5nIHNob3VsZCBiZSBmYWxzZSBpbiBib3RoIGNhc2VzLjwvcD4KKzxpbnB1dCBuYW1lPSJ2
aWN0aW0iIHJlYWRvbmx5IHJlcXVpcmVkIC8+Cis8dGV4dGFyZWEgbmFtZT0idmljdGltIiByZWFk
b25seSByZXF1aXJlZD48L3RleHRhcmVhPgorPGhyPgorPG9sIGlkPSJjb25zb2xlIj48L29sPgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxp
ZGl0eVN0YXRlLXZhbHVlTWlzc2luZy0wMDUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2luZy0wMDUtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4ODM4NWQKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwNS1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSw5IEBACitUaGVyZSdzIGEgbGlzdCBvZiBmb3JtIGNvbnRy
b2wgZWxlbWVudHMgYmVsb3csIHJlcXVpcmVkIGF0dHJpYnV0ZSBkb2VzIG5vdCBhcHBseSB0byB0
aGVtOiB2YWxpZGl0eS52YWx1ZU1pc3Npbmcgc2hvdWxkIGJlIGZhbHNlLgorCisgICAgCitTVUND
RVNTCitTVUNDRVNTCitTVUNDRVNTCitTVUNDRVNTCitTVUNDRVNTCitTVUNDRVNTCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAw
NS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2lu
Zy0wMDUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMWM1ZDIwCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZh
bHVlTWlzc2luZy0wMDUuaHRtbApAQCAtMCwwICsxLDMyIEBACis8aHRtbD4KKzxoZWFkPgorPHRp
dGxlPnJlcXVpcmVkIGFuZCB2YWx1ZU1pc3Npbmcgb24gdW5hY2NlcHRlZCBpbnB1dCB0eXBlczwv
dGl0bGU+Cis8c2NyaXB0IGxhbmd1YWdlPSJKYXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiPgorICAgIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKSB7CisgICAgICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJjb25zb2xlIikuaW5uZXJIVE1MICs9ICI8bGk+IittZXNzYWdlKyI8L2xpPiI7
CisgICAgfQorCisgICAgZnVuY3Rpb24gdGVzdCgpIHsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKKworICAgICAgICB2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoInZpY3Rp
bSIpOworCisgICAgICAgIGZvciAoaSA9IDA7IGkgPCB2Lmxlbmd0aDsgaSsrKQorICAgICAgICAg
ICAgbG9nKCF2W2ldLnZhbGlkaXR5LnZhbHVlTWlzc2luZyA/ICJTVUNDRVNTIiA6ICJGQUlMVVJF
Iik7CisgICAgfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InRlc3QoKSI+Cis8
cD5UaGVyZSdzIGEgbGlzdCBvZiBmb3JtIGNvbnRyb2wgZWxlbWVudHMgYmVsb3csIHJlcXVpcmVk
IGF0dHJpYnV0ZSBkb2VzIG5vdCBhcHBseSB0byB0aGVtOgordmFsaWRpdHkudmFsdWVNaXNzaW5n
IHNob3VsZCBiZSBmYWxzZS48L3A+Cis8aW5wdXQgbmFtZT0idmljdGltIiB0eXBlPSJoaWRkZW4i
IHJlcXVpcmVkIC8+Cis8aW5wdXQgbmFtZT0idmljdGltIiB0eXBlPSJyYW5nZSIgcmVxdWlyZWQg
Lz4KKzxpbnB1dCBuYW1lPSJ2aWN0aW0iIHR5cGU9ImltYWdlIiByZXF1aXJlZCAvPgorPGlucHV0
IG5hbWU9InZpY3RpbSIgdHlwZT0icmVzZXQiIHJlcXVpcmVkIC8+Cis8aW5wdXQgbmFtZT0idmlj
dGltIiB0eXBlPSJidXR0b24iIHJlcXVpcmVkIC8+Cis8aW5wdXQgbmFtZT0idmljdGltIiB0eXBl
PSJzdWJtaXQiIHJlcXVpcmVkIC8+Cis8aHI+Cis8b2wgaWQ9ImNvbnNvbGUiPjwvb2w+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5
U3RhdGUtdmFsdWVNaXNzaW5nLTAwNi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwNi1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGQ1ZDI0OAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3NpbmctMDA2LWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDQgQEAKK1RoZXJlIGFyZSB0d28gY2hlY2tib3hlcyBiZWxvdywg
Ym90aCBhcmUgcmVxdWlyZWQsIG9ubHkgb25lIGlzIGNoZWNrZWQuCisKKyAKK1NVQ0NFU1MKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3Np
bmctMDA2Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVN
aXNzaW5nLTAwNi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3NWQ4
OWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3Rh
dGUtdmFsdWVNaXNzaW5nLTAwNi5odG1sCkBAIC0wLDAgKzEsMjYgQEAKKzxodG1sPgorPGhlYWQ+
Cis8dGl0bGU+cmVxdWlyZWQgYW5kIHZhbHVlTWlzc2luZyBvbiBjaGVja2JveGVzPC90aXRsZT4K
KzxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Cisg
ICAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImNvbnNvbGUiKS5pbm5lckhUTUwgKz0gIjxsaT4iK21lc3NhZ2UrIjwvbGk+IjsKKyAgICB9
CisKKyAgICBmdW5jdGlvbiB0ZXN0KCkgeworICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQorICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OworCisgICAgICAgIHYgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgidmljdGltIik7CisK
KyAgICAgICAgbG9nKCF2WzBdLnZhbGlkaXR5LnZhbHVlTWlzc2luZyAmJiB2WzFdLnZhbGlkaXR5
LnZhbHVlTWlzc2luZyA/ICJTVUNDRVNTIiA6ICJGQUlMVVJFIik7CisgICAgfQorPC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InRlc3QoKSI+Cis8cD5UaGVyZSBhcmUgdHdvIGNoZWNr
Ym94ZXMgYmVsb3csIGJvdGggYXJlIHJlcXVpcmVkLCBvbmx5IG9uZSBpcyBjaGVja2VkLjwvcD4K
KzxpbnB1dCBuYW1lPSJ2aWN0aW0iIHR5cGU9ImNoZWNrYm94IiByZXF1aXJlZCBjaGVja2VkLz4K
KzxpbnB1dCBuYW1lPSJ2aWN0aW0iIHR5cGU9ImNoZWNrYm94IiByZXF1aXJlZCAvPgorPGhyPgor
PG9sIGlkPSJjb25zb2xlIj48L29sPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2luZy0wMDctZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2lu
Zy0wMDctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5
ODZjNWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5
U3RhdGUtdmFsdWVNaXNzaW5nLTAwNy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACitUaGVy
ZSBhcmUgdHdvIHJhZGlvIGJ1dHRvbnMgYmVsb3cgd2l0aCB0aGUgc2FtZSBuYW1lLCBvbmx5IG9u
ZSBpcyByZXF1aXJlZCAod2hpY2ggbWVhbnMgdGhlIHdob2xlIGdyb3VwIGlzIHJlcXVpcmVkKSwg
dGhlIG90aGVyIG9uZSBpcyBjaGVja2VkIGFuZCBsZWFkcyB0aGUgcmVxdWlyZWQgYXR0cmlidXRl
IHRvIGJlIHNhdGlzZmllZDogbm8gbWlzc2luZyB2YWx1ZS4KKworIAorU1VDQ0VTUwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2luZy0w
MDcuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3Np
bmctMDA3Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGJkNDRmYwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12
YWx1ZU1pc3NpbmctMDA3Lmh0bWwKQEAgLTAsMCArMSwyNiBAQAorPGh0bWw+Cis8aGVhZD4KKzx0
aXRsZT5yZXF1aXJlZCBhbmQgdmFsdWVNaXNzaW5nIG9uIHJhZGlvPC90aXRsZT4KKzxzY3JpcHQg
bGFuZ3VhZ2U9IkphdmFTY3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgZnVuY3Rp
b24gbG9nKG1lc3NhZ2UpIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNv
bGUiKS5pbm5lckhUTUwgKz0gIjxsaT4iK21lc3NhZ2UrIjwvbGk+IjsKKyAgICB9CisKKyAgICBm
dW5jdGlvbiB0ZXN0KCkgeworICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQorICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAg
ICAgIHYgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgidmljdGltIik7CisKKyAgICAgICAg
bG9nKCF2WzBdLnZhbGlkaXR5LnZhbHVlTWlzc2luZyA/ICJTVUNDRVNTIiA6ICJGQUlMVVJFIik7
CisgICAgfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InRlc3QoKSI+Cis8cD5U
aGVyZSBhcmUgdHdvIHJhZGlvIGJ1dHRvbnMgYmVsb3cgd2l0aCB0aGUgc2FtZSBuYW1lLCBvbmx5
IG9uZSBpcyByZXF1aXJlZCAod2hpY2ggbWVhbnMgdGhlIHdob2xlIGdyb3VwIGlzIHJlcXVpcmVk
KSwgdGhlIG90aGVyIG9uZSBpcyBjaGVja2VkIGFuZCBsZWFkcyB0aGUgcmVxdWlyZWQgYXR0cmli
dXRlIHRvIGJlIHNhdGlzZmllZDogbm8gbWlzc2luZyB2YWx1ZS48L3A+Cis8aW5wdXQgbmFtZT0i
dmljdGltIiB0eXBlPSJyYWRpbyIgcmVxdWlyZWQvPgorPGlucHV0IG5hbWU9InZpY3RpbSIgdHlw
ZT0icmFkaW8iIGNoZWNrZWQvPgorPGhyPgorPG9sIGlkPSJjb25zb2xlIj48L29sPgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0
YXRlLXZhbHVlTWlzc2luZy0wMDgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2luZy0wMDgtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4YzQ5MGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwOC1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSw0IEBACitUaGVyZSdzIGEgdXBsb2FkIGNvbnRyb2wgYmVsb3csIHdp
dGggbm8gZmlsZSBzZWxlY3RlZDogbWlzc2luZyB2YWx1ZS4KKworCitTVUNDRVNTCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAw
OC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2lu
Zy0wMDguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZWQyNGQ2Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZh
bHVlTWlzc2luZy0wMDguaHRtbApAQCAtMCwwICsxLDI1IEBACis8aHRtbD4KKzxoZWFkPgorPHRp
dGxlPnJlcXVpcmVkIGFuZCB2YWx1ZU1pc3Npbmcgb24gZmlsZSBjb250cm9sPC90aXRsZT4KKzxz
Y3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAg
ZnVuY3Rpb24gbG9nKG1lc3NhZ2UpIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImNvbnNvbGUiKS5pbm5lckhUTUwgKz0gIjxsaT4iK21lc3NhZ2UrIjwvbGk+IjsKKyAgICB9CisK
KyAgICBmdW5jdGlvbiB0ZXN0KCkgeworICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQorICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwor
CisgICAgICAgIHYgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgidmljdGltIik7CisKKyAg
ICAgICAgbG9nKHZbMF0udmFsaWRpdHkudmFsdWVNaXNzaW5nID8gIlNVQ0NFU1MiIDogIkZBSUxV
UkUiKTsKKyAgICB9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0idGVzdCgpIj4K
KzxwPlRoZXJlJ3MgYSB1cGxvYWQgY29udHJvbCBiZWxvdywgd2l0aCBubyBmaWxlIHNlbGVjdGVk
OiBtaXNzaW5nIHZhbHVlLjwvcD4KKzxpbnB1dCBuYW1lPSJ2aWN0aW0iIHR5cGU9ImZpbGUiIHJl
cXVpcmVkLz4KKzxocj4KKzxvbCBpZD0iY29uc29sZSI+PC9vbD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1p
c3NpbmctMDA5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlT
dGF0ZS12YWx1ZU1pc3NpbmctMDA5LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi4xYWNhY2RhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2luZy0wMDktZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMTAgQEAKK1RoZXJlJ3MgYSBsaXN0IG9mIGZvcm0gY29udHJvbCBlbGVtZW50cyBiZWxv
dywgcmVxdWlyZWQgYXR0cmlidXRlIGFwcGxpZXMgdG8gdGhlbSBidXQgdGhleSdyZSBlbXB0eTog
dmFsaWRpdHkudmFsdWVNaXNzaW5nIHNob3VsZCBiZSB0cnVlLgorCisgICAgICAKK1NVQ0NFU1MK
K1NVQ0NFU1MKK1NVQ0NFU1MKK1NVQ0NFU1MKK1NVQ0NFU1MKK1NVQ0NFU1MKK1NVQ0NFU1MKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3Np
bmctMDA5Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVN
aXNzaW5nLTAwOS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkOTA1
YTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3Rh
dGUtdmFsdWVNaXNzaW5nLTAwOS5odG1sCkBAIC0wLDAgKzEsMzMgQEAKKzxodG1sPgorPGhlYWQ+
Cis8dGl0bGU+cmVxdWlyZWQgYW5kIHZhbHVlTWlzc2luZyBvbiBuZXcgaW5wdXQgdHlwZXM8L3Rp
dGxlPgorPHNjcmlwdCBsYW5ndWFnZT0iSmF2YVNjcmlwdCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0
Ij4KKyAgICBmdW5jdGlvbiBsb2cobWVzc2FnZSkgeworICAgICAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiY29uc29sZSIpLmlubmVySFRNTCArPSAiPGxpPiIrbWVzc2FnZSsiPC9saT4iOwor
ICAgIH0KKworICAgIGZ1bmN0aW9uIHRlc3QoKSB7CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7CisKKyAgICAgICAgdiA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKCJ2aWN0aW0i
KTsKKworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdi5sZW5ndGg7IGkrKykKKyAgICAgICAgICAg
IGxvZyh2W2ldLnZhbGlkaXR5LnZhbHVlTWlzc2luZyA/ICJTVUNDRVNTIiA6ICJGQUlMVVJFIik7
CisgICAgfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InRlc3QoKSI+Cis8cD5U
aGVyZSdzIGEgbGlzdCBvZiBmb3JtIGNvbnRyb2wgZWxlbWVudHMgYmVsb3csIHJlcXVpcmVkIGF0
dHJpYnV0ZSBhcHBsaWVzIHRvIHRoZW0gYnV0IHRoZXkncmUgZW1wdHk6Cit2YWxpZGl0eS52YWx1
ZU1pc3Npbmcgc2hvdWxkIGJlIHRydWUuPC9wPgorPGlucHV0IG5hbWU9InZpY3RpbSIgdHlwZT0i
dGV4dCIgcmVxdWlyZWQgLz4KKzxpbnB1dCBuYW1lPSJ2aWN0aW0iIHR5cGU9InNlYXJjaCIgcmVx
dWlyZWQgLz4KKzxpbnB1dCBuYW1lPSJ2aWN0aW0iIHR5cGU9InVybCIgcmVxdWlyZWQgLz4KKzxp
bnB1dCBuYW1lPSJ2aWN0aW0iIHR5cGU9InRlbGVwaG9uZSIgcmVxdWlyZWQgLz4KKzxpbnB1dCBu
YW1lPSJ2aWN0aW0iIHR5cGU9ImVtYWlsIiByZXF1aXJlZCAvPgorPGlucHV0IG5hbWU9InZpY3Rp
bSIgdHlwZT0icGFzc3dvcmQiIHJlcXVpcmVkIC8+Cis8aW5wdXQgbmFtZT0idmljdGltIiB0eXBl
PSJudW1iZXIiIHJlcXVpcmVkIC8+Cis8aHI+Cis8b2wgaWQ9ImNvbnNvbGUiPjwvb2w+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3JlcXVpcmVk
LWF0dHJpYnV0ZS0wMDEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yZXF1
aXJlZC1hdHRyaWJ1dGUtMDAxLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi45YjIwMTQzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9m
b3Jtcy9yZXF1aXJlZC1hdHRyaWJ1dGUtMDAxLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAK
K1RoZXJlIGFyZSB0d28gZm9ybSBjb250cm9sIGVsZW1lbnRzIGJlbG93LCBib3RoIHJlcXVpcmVk
LgorCisgCitTVUNDRVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3JlcXVp
cmVkLWF0dHJpYnV0ZS0wMDEuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmVxdWlyZWQt
YXR0cmlidXRlLTAwMS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJm
MzRjMTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3JlcXVpcmVk
LWF0dHJpYnV0ZS0wMDEuaHRtbApAQCAtMCwwICsxLDI2IEBACis8aHRtbD4KKzxoZWFkPgorPHRp
dGxlPnJlcXVpcmVkIGF0dHJpYnV0ZSBwcmVzZW5jZSB0ZXN0PC90aXRsZT4KKzxzY3JpcHQgbGFu
Z3VhZ2U9IkphdmFTY3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgZnVuY3Rpb24g
bG9nKG1lc3NhZ2UpIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUi
KS5pbm5lckhUTUwgKz0gIjxsaT4iK21lc3NhZ2UrIjwvbGk+IjsKKyAgICB9CisKKyAgICBmdW5j
dGlvbiB0ZXN0KCkgeworICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQor
ICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgICAg
IHYgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgidmljdGltIik7CisKKyAgICAgICAgbG9n
KCh2WzBdLnJlcXVpcmVkICYmIHZbMV0ucmVxdWlyZWQpID8gIlNVQ0NFU1MiIDogIkZBSUxVUkUi
KTsKKyAgICB9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0idGVzdCgpIj4KKzxw
PlRoZXJlIGFyZSB0d28gZm9ybSBjb250cm9sIGVsZW1lbnRzIGJlbG93LCBib3RoIHJlcXVpcmVk
LjwvcD4KKzxpbnB1dCBuYW1lPSJ2aWN0aW0iIHJlcXVpcmVkIC8+Cis8dGV4dGFyZWEgbmFtZT0i
dmljdGltIiByZXF1aXJlZD48L3RleHRhcmVhPgorPGhyPgorPG9sIGlkPSJjb25zb2xlIj48L29s
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9y
ZXF1aXJlZC1hdHRyaWJ1dGUtMDAyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZm9y
bXMvcmVxdWlyZWQtYXR0cmlidXRlLTAwMi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uYWM1YzBmZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvcmVxdWlyZWQtYXR0cmlidXRlLTAwMi1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSw0IEBACitUaGVyZSBhcmUgdHdvIGZvcm0gY29udHJvbCBlbGVtZW50cyBiZWxvdywgYm90aCBv
cHRpb25hbC4gVGhleSdyZSBzZXQgYXMgcmVxdWlyZWQgdmlhIHJlcXVpcmVkIERPTSBhdHRyaWJ1
dGUuCisKKyAKK1NVQ0NFU1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmVx
dWlyZWQtYXR0cmlidXRlLTAwMi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yZXF1aXJl
ZC1hdHRyaWJ1dGUtMDAyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
YWE4NWU4OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmVxdWly
ZWQtYXR0cmlidXRlLTAwMi5odG1sCkBAIC0wLDAgKzEsMzIgQEAKKzxodG1sPgorPGhlYWQ+Cis8
dGl0bGU+cmVxdWlyZWQgYXR0cmlidXRlIEpTIHNldDwvdGl0bGU+Cis8c2NyaXB0IGxhbmd1YWdl
PSJKYXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgIGZ1bmN0aW9uIGxvZyht
ZXNzYWdlKSB7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuaW5u
ZXJIVE1MICs9ICI8bGk+IittZXNzYWdlKyI8L2xpPiI7CisgICAgfQorCisgICAgZnVuY3Rpb24g
dGVzdCgpIHsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgICAgICB2ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoInZpY3RpbSIpOworCisgICAgICAgIGlmICh2WzBd
LnJlcXVpcmVkID09IGZhbHNlICYmIHZbMV0ucmVxdWlyZWQgPT0gZmFsc2UpIHsKKyAgICAgICAg
ICAgIHZbMF0ucmVxdWlyZWQgPSB0cnVlOworICAgICAgICAgICAgdlsxXS5yZXF1aXJlZCA9IHRy
dWU7CisgICAgICAgICAgICBsb2cgKCh2WzBdLnJlcXVpcmVkICYmIHZbMV0ucmVxdWlyZWQpID8g
IlNVQ0NFU1MiIDogIkZBSUxVUkUiKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAg
ICAgICBsb2coIkZBSUxVUkUiKTsKKyAgICB9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9u
bG9hZD0idGVzdCgpIj4KKzxwPlRoZXJlIGFyZSB0d28gZm9ybSBjb250cm9sIGVsZW1lbnRzIGJl
bG93LCBib3RoIG9wdGlvbmFsLiBUaGV5J3JlIHNldCBhcyByZXF1aXJlZCB2aWEgcmVxdWlyZWQg
RE9NIGF0dHJpYnV0ZS48L3A+Cis8aW5wdXQgbmFtZT0idmljdGltIiAvPgorPHRleHRhcmVhIG5h
bWU9InZpY3RpbSI+PC90ZXh0YXJlYT4KKzxocj4KKzxvbCBpZD0iY29uc29sZSI+PC9vbD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggZWVkMzhmOC4uMzI2ZDU5OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NSBAQAorMjAwOS0wNy0x
NyAgTWljaGVsYW5nZWxvIERlIFNpbW9uZSAgPG1pY2Rlc2ltQGdtYWlsLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU1NTEKKyAgICAgICAgQWRkZWQgc3VwcG9ydCBmb3Ig
dGhlICJyZXF1aXJlZCIgYXR0cmlidXRlLCB0aGUgdmFsdWVNaXNzaW5nIGZsYWcKKyAgICAgICAg
dG8gdGhlIFZhbGlkaXR5U3RhdGUgb2JqZWN0IGFuZCA6cmVxdWlyZWQvOm9wdGlvbmFsIENTUyBw
c2V1ZG9jbGFzc2VzLgorICAgICAgICBQYXJ0IG9mIEhUTUw1IHNlYy4gRm9ybXMgc3BlY3MuCisg
ICAgICAgIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsv
bXVsdGlwYWdlL2Zvcm1zLmh0bWwjYXR0ci1pbnB1dC1yZXF1aXJlZAorCisgICAgICAgIFRlc3Rz
OiBmYXN0L2Nzcy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9uYWwtMDAxLmh0bWwKKyAgICAgICAgICAg
ICAgIGZhc3QvY3NzL3BzZXVkby1yZXF1aXJlZC1vcHRpb25hbC0wMDIuaHRtbAorICAgICAgICAg
ICAgICAgZmFzdC9jc3MvcHNldWRvLXJlcXVpcmVkLW9wdGlvbmFsLTAwMy5odG1sCisgICAgICAg
ICAgICAgICBmYXN0L2Nzcy9wc2V1ZG8tcmVxdWlyZWQtb3B0aW9uYWwtMDA0Lmh0bWwKKyAgICAg
ICAgICAgICAgIGZhc3QvY3NzL3BzZXVkby1yZXF1aXJlZC1vcHRpb25hbC0wMDUuaHRtbAorICAg
ICAgICAgICAgICAgZmFzdC9jc3MvcHNldWRvLXJlcXVpcmVkLW9wdGlvbmFsLTAwNi5odG1sCisg
ICAgICAgICAgICAgICBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwMS5o
dG1sCisgICAgICAgICAgICAgICBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5n
LTAwMi5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVN
aXNzaW5nLTAwMy5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUt
dmFsdWVNaXNzaW5nLTAwNC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Zvcm1zL1ZhbGlkaXR5
U3RhdGUtdmFsdWVNaXNzaW5nLTAwNS5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Zvcm1zL1Zh
bGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwNi5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Zv
cm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwNy5odG1sCisgICAgICAgICAgICAgICBm
YXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwOC5odG1sCisgICAgICAgICAg
ICAgICBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwOS5odG1sCisgICAg
ICAgICAgICAgICBmYXN0L2Zvcm1zL3JlcXVpcmVkLWF0dHJpYnV0ZS0wMDEuaHRtbAorICAgICAg
ICAgICAgICAgZmFzdC9mb3Jtcy9yZXF1aXJlZC1hdHRyaWJ1dGUtMDAyLmh0bWwKKworICAgICAg
ICAqIGNzcy9DU1NTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6
ZXh0cmFjdFBzZXVkb1R5cGUpOiBwc2V1ZG9SZXF1aXJlZC9wc2V1ZG9PcHRpb25hbAorICAgICAg
ICAqIGNzcy9DU1NTZWxlY3Rvci5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6Oik6
IGRpdHRvCisgICAgICAgICogY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9y
KTogZGl0dG8KKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RWxl
bWVudDo6aXNPcHRpb25hbEZvcm1Db250cm9sKTogY2hlY2sgZm9yIG9wdGlvbmFsIGNvbnRyb2xz
CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojppc1JlcXVpcmVkRm9ybUNvbnRyb2wpOiBjaGVj
ayBmb3IgcmVxdWlyZWQgY29udHJvbHMKKyAgICAgICAgKiBodG1sL0hUTUxBdHRyaWJ1dGVOYW1l
cy5pbjogcmVxdWlyZWQgYXR0cmlidXRlCisgICAgICAgICogaHRtbC9IVE1MQnV0dG9uRWxlbWVu
dC5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEJ1dHRvbkVsZW1lbnQ6OmlzT3B0aW9uYWxGb3Jt
Q29udHJvbCk6IGRpdHRvCisgICAgICAgICogaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnJlcXVpcmVkKTog
cmVxdWlyZWRBdHRyIGdldHRlcgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxl
bWVudDo6c2V0UmVxdWlyZWQpOiByZXF1aXJlZEF0dHIgc2V0dGVyCisgICAgICAgICogaHRtbC9I
VE1MRm9ybUNvbnRyb2xFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRy
b2xFbGVtZW50Ojp2YWx1ZU1pc3NpbmcpOiBtZXRob2QgZGVmaW5pdGlvbgorICAgICAgICAqIGh0
bWwvSFRNTElucHV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVt
ZW50Ojp2YWx1ZU1pc3NpbmcpOiB2YWxpZGF0aW9uIGNvZGUKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxJbnB1dEVsZW1lbnQ6OmlzUmVxdWlyZWRGb3JtQ29udHJvbCk6IGRpdHRvCisgICAgICAgICog
aHRtbC9IVE1MSW5wdXRFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVt
ZW50Ojppc09wdGlvbmFsRm9ybUNvbnRyb2wpOiBkaXR0bworICAgICAgICAqIGh0bWwvSFRNTElu
cHV0RWxlbWVudC5pZGw6IHJlcXVpcmVkIERPTSBhdHRyaWJ1dGUKKyAgICAgICAgKiBodG1sL0hU
TUxTZWxlY3RFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6
aXNPcHRpb25hbEZvcm1Db250cm9sKTogZGl0dG8KKyAgICAgICAgKiBodG1sL0hUTUxUZXh0QXJl
YUVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQ6OnZhbHVl
TWlzc2luZyk6IHZhbGlkYXRpb24gY29kZQorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRBcmVh
RWxlbWVudDo6aXNPcHRpb25hbEZvcm1Db250cm9sKTogZGl0dG8KKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxUZXh0QXJlYUVsZW1lbnQ6OmlzUmVxdWlyZWRGb3JtQ29udHJvbCk6IGRpdHRvCisgICAg
ICAgICogaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmlkbDogcmVxdWlyZWQgRE9NIGF0dHJpYnV0
ZQorICAgICAgICAqIGh0bWwvVmFsaWRpdHlTdGF0ZS5jcHA6CisgICAgICAgICogaHRtbC9WYWxp
ZGl0eVN0YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpWYWxpZGl0eVN0YXRlOjp2YWx1ZU1pc3Np
bmcpOiB2YWxpZGF0aW9uIGZsYWcKKwogMjAwOS0wNy0xNyAgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJl
eXRoZXIgIDx6ZWNrZUBzZWxmaXNoLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBHdXN0YXZv
IE5vcm9uaGEuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAgYi9XZWJD
b3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAKaW5kZXggNTQyOWMxNi4uODA5MTBhNyAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCisrKyBiL1dlYkNvcmUvY3NzL0NTU1NlbGVj
dG9yLmNwcApAQCAtMTE3LDYgKzExNyw4IEBAIHZvaWQgQ1NTU2VsZWN0b3I6OmV4dHJhY3RQc2V1
ZG9UeXBlKCkgY29uc3QKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbm90
U3RyLCAoIm5vdCgiKSk7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG9u
bHlDaGlsZCwgKCJvbmx5LWNoaWxkIikpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWlj
U3RyaW5nLCBvbmx5T2ZUeXBlLCAoIm9ubHktb2YtdHlwZSIpKTsKKyAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKEF0b21pY1N0cmluZywgb3B0aW9uYWwsICgib3B0aW9uYWwiKSk7CisgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHJlcXVpcmVkLCAoInJlcXVpcmVkIikpOwogICAg
IERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCByZXNpemVyLCAoIi13ZWJraXQtcmVz
aXplciIpKTsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgcm9vdCwgKCJy
b290IikpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBzY3JvbGxiYXIs
ICgiLXdlYmtpdC1zY3JvbGxiYXIiKSk7CkBAIC0yODYsNiArMjg4LDEwIEBAIHZvaWQgQ1NTU2Vs
ZWN0b3I6OmV4dHJhY3RQc2V1ZG9UeXBlKCkgY29uc3QKICAgICAgICAgbV9wc2V1ZG9UeXBlID0g
UHNldWRvU2luZ2xlQnV0dG9uOwogICAgIGVsc2UgaWYgKG1fdmFsdWUgPT0gbm9CdXR0b24pCiAg
ICAgICAgIG1fcHNldWRvVHlwZSA9IFBzZXVkb05vQnV0dG9uOworICAgIGVsc2UgaWYgKG1fdmFs
dWUgPT0gb3B0aW9uYWwpCisgICAgICAgIG1fcHNldWRvVHlwZSA9IFBzZXVkb09wdGlvbmFsOwor
ICAgIGVsc2UgaWYgKG1fdmFsdWUgPT0gcmVxdWlyZWQpCisgICAgICAgIG1fcHNldWRvVHlwZSA9
IFBzZXVkb1JlcXVpcmVkOwogICAgIGVsc2UgaWYgKG1fdmFsdWUgPT0gc2Nyb2xsYmFyQ29ybmVy
KSB7CiAgICAgICAgIGVsZW1lbnQgPSB0cnVlOwogICAgICAgICBtX3BzZXVkb1R5cGUgPSBQc2V1
ZG9TY3JvbGxiYXJDb3JuZXI7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5o
IGIvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaAppbmRleCA1YjdmOWZhLi4xODI1MWZkIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oCisrKyBiL1dlYkNvcmUvY3NzL0NTU1Nl
bGVjdG9yLmgKQEAgLTEyOCw2ICsxMjgsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
ICAgICBQc2V1ZG9GdWxsUGFnZU1lZGlhLAogICAgICAgICAgICAgUHNldWRvRGlzYWJsZWQsCiAg
ICAgICAgICAgICBQc2V1ZG9JbnB1dFBsYWNlaG9sZGVyLAorICAgICAgICAgICAgUHNldWRvT3B0
aW9uYWwsCisgICAgICAgICAgICBQc2V1ZG9SZXF1aXJlZCwKICAgICAgICAgICAgIFBzZXVkb1Jl
YWRPbmx5LAogICAgICAgICAgICAgUHNldWRvUmVhZFdyaXRlLAogICAgICAgICAgICAgUHNldWRv
SW5kZXRlcm1pbmF0ZSwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3Iu
Y3BwIGIvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKaW5kZXggNzgwNTg4My4uMDM3
YjQyYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKKysrIGIv
V2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKQEAgLTIzNzUsNiArMjM3NSwxMCBAQCBi
b29sIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3RvcihD
U1NTZWxlY3Rvciogc2VsLCBFbGVtZQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgICAgICAgICAgcmV0dXJuIGUtPmlzVGV4dEZvcm1Db250cm9sKCkgJiYgIWUtPmlz
UmVhZE9ubHlGb3JtQ29udHJvbCgpOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FzZSBD
U1NTZWxlY3Rvcjo6UHNldWRvT3B0aW9uYWw6CisgICAgICAgICAgICAgICAgcmV0dXJuIGUgJiYg
ZS0+aXNPcHRpb25hbEZvcm1Db250cm9sKCk7CisgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9y
OjpQc2V1ZG9SZXF1aXJlZDoKKyAgICAgICAgICAgICAgICByZXR1cm4gZSAmJiBlLT5pc1JlcXVp
cmVkRm9ybUNvbnRyb2woKTsKICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0No
ZWNrZWQ6IHsKICAgICAgICAgICAgICAgICBpZiAoIWUgfHwgIWUtPmlzRm9ybUNvbnRyb2xFbGVt
ZW50KCkpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9k
b20vRWxlbWVudC5oIGIvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IGQxZWYzYjIuLjBmZjJl
ZDEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9XZWJDb3JlL2RvbS9F
bGVtZW50LmgKQEAgLTIxMiw2ICsyMTIsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlz
RW5hYmxlZEZvcm1Db250cm9sKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwg
Ym9vbCBpc1JlYWRPbmx5Rm9ybUNvbnRyb2woKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAg
IHZpcnR1YWwgYm9vbCBpc1RleHRGb3JtQ29udHJvbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgdmlydHVhbCBib29sIGlzT3B0aW9uYWxGb3JtQ29udHJvbCgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzUmVxdWlyZWRGb3JtQ29udHJvbCgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgZm9ybUNvbnRyb2xWYWx1ZU1h
dGNoZXNSZW5kZXJlcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lk
IHNldEZvcm1Db250cm9sVmFsdWVNYXRjaGVzUmVuZGVyZXIoYm9vbCkgeyB9CmRpZmYgLS1naXQg
YS9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluIGIvV2ViQ29yZS9odG1sL0hUTUxB
dHRyaWJ1dGVOYW1lcy5pbgppbmRleCBiZDM3Yjk2Li42ZDRkM2NiIDEwMDY0NAotLS0gYS9XZWJD
b3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MQXR0
cmlidXRlTmFtZXMuaW4KQEAgLTE5NSw2ICsxOTUsNyBAQCBwcm9ncmVzcwogcHJvbXB0CiByZWFk
b25seQogcmVsCityZXF1aXJlZAogcmVzdWx0cwogcmV2CiByb2xlCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuaCBiL1dlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxl
bWVudC5oCmluZGV4IGIxZDc0NGMuLmY1YjliNjIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9I
VE1MQnV0dG9uRWxlbWVudC5oCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5o
CkBAIC02MSw2ICs2MSw3IEBAIHB1YmxpYzoKICAgICAKIHByaXZhdGU6CiAgICAgZW51bSBUeXBl
IHsgU1VCTUlULCBSRVNFVCwgQlVUVE9OIH07CisgICAgdmlydHVhbCBib29sIGlzT3B0aW9uYWxG
b3JtQ29udHJvbCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAogICAgIFR5cGUgbV90eXBlOwog
ICAgIGJvb2wgbV9hY3RpdmVTdWJtaXQ7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTEZv
cm1Db250cm9sRWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVu
dC5jcHAKaW5kZXggODc5MzhhYy4uZTkwYTZlMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hU
TUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRy
b2xFbGVtZW50LmNwcApAQCAtMjA0LDYgKzIwNCwxNiBAQCB2b2lkIEhUTUxGb3JtQ29udHJvbEVs
ZW1lbnQ6OnNldEF1dG9mb2N1cyhib29sIGIpCiAgICAgc2V0QXR0cmlidXRlKGF1dG9mb2N1c0F0
dHIsIGIgPyAiYXV0b2ZvY3VzIiA6IDApOwogfQogCitib29sIEhUTUxGb3JtQ29udHJvbEVsZW1l
bnQ6OnJlcXVpcmVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gaGFzQXR0cmlidXRlKHJlcXVpcmVk
QXR0cik7Cit9CisKK3ZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6c2V0UmVxdWlyZWQoYm9v
bCBiKQoreworICAgIHNldEF0dHJpYnV0ZShyZXF1aXJlZEF0dHIsIGIgPyAicmVxdWlyZWQiIDog
MCk7Cit9CisKIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6cmVjYWxjU3R5bGUoU3R5bGVD
aGFuZ2UgY2hhbmdlKQogewogICAgIEhUTUxFbGVtZW50OjpyZWNhbGNTdHlsZShjaGFuZ2UpOwpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaCBiL1dlYkNv
cmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKaW5kZXggYTAzZWIxYS4uZmIwZGEyOSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaAorKysgYi9X
ZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oCkBAIC03NCw2ICs3NCwxMSBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBib29sIGF1dG9mb2N1cygpIGNvbnN0OwogICAgIHZvaWQgc2V0
QXV0b2ZvY3VzKGJvb2wpOwogCisgICAgYm9vbCByZXF1aXJlZCgpIGNvbnN0OworICAgIHZvaWQg
c2V0UmVxdWlyZWQoYm9vbCk7CisKKyAgICB2aXJ0dWFsIGJvb2wgdmFsdWVNaXNzaW5nKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KKwogICAgIHZpcnR1YWwgdm9pZCByZWNhbGNTdHlsZShTdHls
ZUNoYW5nZSk7CiAKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgZm9ybUNvbnRyb2xO
YW1lKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5j
cHAgYi9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXggOTg2OThmYS4uZjRj
NDY2YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBi
L1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcApAQCAtMTE0LDYgKzExNCwzOSBAQCBi
b29sIEhUTUxJbnB1dEVsZW1lbnQ6OmF1dG9Db21wbGV0ZSgpIGNvbnN0CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKK2Jvb2wgSFRNTElucHV0RWxlbWVudDo6dmFsdWVNaXNzaW5nKCkgY29uc3QKK3sK
KyAgICBpZiAoIWlzUmVxdWlyZWRGb3JtQ29udHJvbCgpIHx8IHJlYWRPbmx5KCkgfHwgZGlzYWJs
ZWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgc3dpdGNoIChpbnB1dFR5cGUoKSkg
eworICAgICAgICBjYXNlIFRFWFQ6CisgICAgICAgIGNhc2UgU0VBUkNIOgorICAgICAgICBjYXNl
IFVSTDoKKyAgICAgICAgY2FzZSBURUxFUEhPTkU6CisgICAgICAgIGNhc2UgRU1BSUw6CisgICAg
ICAgIGNhc2UgUEFTU1dPUkQ6CisgICAgICAgIGNhc2UgTlVNQkVSOgorICAgICAgICBjYXNlIEZJ
TEU6CisgICAgICAgICAgICByZXR1cm4gdmFsdWUoKS5pc0VtcHR5KCk7CisgICAgICAgIGNhc2Ug
Q0hFQ0tCT1g6CisgICAgICAgICAgICByZXR1cm4gIWNoZWNrZWQoKTsKKyAgICAgICAgY2FzZSBS
QURJTzoKKyAgICAgICAgICAgIHJldHVybiAhZG9jdW1lbnQoKS0+Y2hlY2tlZFJhZGlvQnV0dG9u
cygpLmNoZWNrZWRCdXR0b25Gb3JHcm91cChuYW1lKCkpOworICAgICAgICBjYXNlIEhJRERFTjoK
KyAgICAgICAgY2FzZSBSQU5HRToKKyAgICAgICAgY2FzZSBTVUJNSVQ6CisgICAgICAgIGNhc2Ug
SU1BR0U6CisgICAgICAgIGNhc2UgUkVTRVQ6CisgICAgICAgIGNhc2UgQlVUVE9OOgorICAgICAg
ICBjYXNlIElTSU5ERVg6CisgICAgICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIHN0YXRpYyBpbmxpbmUgQ2hl
Y2tlZFJhZGlvQnV0dG9ucyYgY2hlY2tlZFJhZGlvQnV0dG9ucyhjb25zdCBIVE1MSW5wdXRFbGVt
ZW50ICplbGVtZW50KQogewogICAgIGlmIChIVE1MRm9ybUVsZW1lbnQqIGZvcm0gPSBlbGVtZW50
LT5mb3JtKCkpCkBAIC0xNTc5LDYgKzE2MTIsMzcgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50Ojp1
bnJlZ2lzdGVyRm9yQWN0aXZhdGlvbkNhbGxiYWNrSWZOZWVkZWQoKQogICAgICAgICBkb2N1bWVu
dCgpLT51bnJlZ2lzdGVyRm9yRG9jdW1lbnRBY3RpdmF0aW9uQ2FsbGJhY2tzKHRoaXMpOwogfQog
Citib29sIEhUTUxJbnB1dEVsZW1lbnQ6OmlzUmVxdWlyZWRGb3JtQ29udHJvbCgpIGNvbnN0Cit7
CisgICAgaWYgKCFyZXF1aXJlZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBzd2l0
Y2ggKGlucHV0VHlwZSgpKSB7CisgICAgICAgIGNhc2UgVEVYVDoKKyAgICAgICAgY2FzZSBTRUFS
Q0g6CisgICAgICAgIGNhc2UgVVJMOgorICAgICAgICBjYXNlIFRFTEVQSE9ORToKKyAgICAgICAg
Y2FzZSBFTUFJTDoKKyAgICAgICAgY2FzZSBQQVNTV09SRDoKKyAgICAgICAgY2FzZSBOVU1CRVI6
CisgICAgICAgIGNhc2UgQ0hFQ0tCT1g6CisgICAgICAgIGNhc2UgUkFESU86CisgICAgICAgIGNh
c2UgRklMRToKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBjYXNlIEhJRERFTjoK
KyAgICAgICAgY2FzZSBSQU5HRToKKyAgICAgICAgY2FzZSBTVUJNSVQ6CisgICAgICAgIGNhc2Ug
SU1BR0U6CisgICAgICAgIGNhc2UgUkVTRVQ6CisgICAgICAgIGNhc2UgQlVUVE9OOgorICAgICAg
ICBjYXNlIElTSU5ERVg6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiB2b2lkIEhUTUxJ
bnB1dEVsZW1lbnQ6OmNhY2hlU2VsZWN0aW9uKGludCBzdGFydCwgaW50IGVuZCkKIHsKICAgICBt
X2RhdGEuc2V0Q2FjaGVkU2VsZWN0aW9uU3RhcnQoc3RhcnQpOwpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaCBiL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50
LmgKaW5kZXggYmUyYjRmNC4uNmFlZDgyMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxJ
bnB1dEVsZW1lbnQuaAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCkBAIC05
MCw2ICs5MCw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBpc1RleHRGb3JtQ29udHJv
bCgpIGNvbnN0IHsgcmV0dXJuIGlzVGV4dEZpZWxkKCk7IH0KIAorICAgIHZpcnR1YWwgYm9vbCB2
YWx1ZU1pc3NpbmcoKSBjb25zdDsKKwogICAgIGJvb2wgaXNUZXh0QnV0dG9uKCkgY29uc3QgeyBy
ZXR1cm4gbV90eXBlID09IFNVQk1JVCB8fCBtX3R5cGUgPT0gUkVTRVQgfHwgbV90eXBlID09IEJV
VFRPTjsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1JhZGlvQnV0dG9uKCkgY29uc3QgeyByZXR1cm4g
bV90eXBlID09IFJBRElPOyB9CiAgICAgdmlydHVhbCBib29sIGlzVGV4dEZpZWxkKCkgY29uc3Qg
eyByZXR1cm4gbV90eXBlID09IFRFWFQgfHwgbV90eXBlID09IFBBU1NXT1JEIHx8IG1fdHlwZSA9
PSBTRUFSQ0ggfHwgbV90eXBlID09IElTSU5ERVggfHwgbV90eXBlID09IEVNQUlMIHx8IG1fdHlw
ZSA9PSBOVU1CRVIgfHwgbV90eXBlID09IFRFTEVQSE9ORSB8fCBtX3R5cGUgPT0gVVJMOyB9CkBA
IC0yMzcsNiArMjM5LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZ2lzdGVyRm9yQWN0aXZhdGlv
bkNhbGxiYWNrSWZOZWVkZWQoKTsKICAgICB2b2lkIHVucmVnaXN0ZXJGb3JBY3RpdmF0aW9uQ2Fs
bGJhY2tJZk5lZWRlZCgpOwogCisgICAgdmlydHVhbCBib29sIGlzT3B0aW9uYWxGb3JtQ29udHJv
bCgpIGNvbnN0IHsgcmV0dXJuICFpc1JlcXVpcmVkRm9ybUNvbnRyb2woKTsgfQorICAgIHZpcnR1
YWwgYm9vbCBpc1JlcXVpcmVkRm9ybUNvbnRyb2woKSBjb25zdDsKKwogICAgIElucHV0RWxlbWVu
dERhdGEgbV9kYXRhOwogICAgIGludCBtX3hQb3M7CiAgICAgaW50IG1feVBvczsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmlkbCBiL1dlYkNvcmUvaHRtbC9IVE1M
SW5wdXRFbGVtZW50LmlkbAppbmRleCA3Y2Q5MWIwLi4zYTQxMGRmIDEwMDY0NAotLS0gYS9XZWJD
b3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5pZGwKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxJbnB1
dEVsZW1lbnQuaWRsCkBAIC00Myw2ICs0Myw3IEBAIG1vZHVsZSBodG1sIHsKICAgICAgICAgICAg
ICAgICAgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nIG5hbWU7
CiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgICAgICAgcGxhY2Vob2xkZXI7
CiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBib29sZWFuICAgICAgICAgcmVhZE9ubHk7Cisg
ICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBib29sZWFuICAgICAgICAgcmVxdWlyZWQ7CiAjaWYg
ZGVmaW5lZChMQU5HVUFHRV9PQkpFQ1RJVkVfQykgJiYgTEFOR1VBR0VfT0JKRUNUSVZFX0MKICAg
ICAgICAgICAgICAgICAgYXR0cmlidXRlIFtDb252ZXJ0VG9TdHJpbmddIERPTVN0cmluZyBzaXpl
OyAvLyBET00gbGV2ZWwgMiBjaGFuZ2VkIHRoaXMgdG8gYSBsb25nLCBidXQgb3VyIGV4aXN0aW5n
IEFQSSBpcyBhIHN0cmluZwogI2Vsc2UKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MU2Vs
ZWN0RWxlbWVudC5oIGIvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmgKaW5kZXggZTUy
MzY0MS4uOGY1NzVkMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50
LmgKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmgKQEAgLTEzMCw2ICsxMzAs
OCBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIGluc2VydGVkSW50b1RyZWUoYm9vbCk7
CiAKKyAgICB2aXJ0dWFsIGJvb2wgaXNPcHRpb25hbEZvcm1Db250cm9sKCkgY29uc3QgeyByZXR1
cm4gdHJ1ZTsgfQorCiAgICAgU2VsZWN0RWxlbWVudERhdGEgbV9kYXRhOwogICAgIENvbGxlY3Rp
b25DYWNoZSBtX2NvbGxlY3Rpb25JbmZvOwogfTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9I
VE1MVGV4dEFyZWFFbGVtZW50LmggYi9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5o
CmluZGV4IGUyMmI1ZDUuLjVlZjhlNTUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MVGV4
dEFyZWFFbGVtZW50LmgKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaApA
QCAtNTIsNiArNTIsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNUZXh0Rm9ybUNv
bnRyb2woKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKKyAgICB2aXJ0dWFsIGJvb2wgdmFsdWVN
aXNzaW5nKCkgY29uc3QgeyByZXR1cm4gaXNSZXF1aXJlZEZvcm1Db250cm9sKCkgJiYgIWRpc2Fi
bGVkKCkgJiYgIXJlYWRPbmx5KCkgJiYgdmFsdWUoKS5pc0VtcHR5KCk7IH0KKwogICAgIGludCBz
ZWxlY3Rpb25TdGFydCgpOwogICAgIGludCBzZWxlY3Rpb25FbmQoKTsKIApAQCAtOTYsNiArOTgs
OSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCB1cGRhdGVWYWx1ZSgpIGNvbnN0OwogCisgICAgdmly
dHVhbCBib29sIGlzT3B0aW9uYWxGb3JtQ29udHJvbCgpIGNvbnN0IHsgcmV0dXJuICFpc1JlcXVp
cmVkRm9ybUNvbnRyb2woKTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1JlcXVpcmVkRm9ybUNvbnRy
b2woKSBjb25zdCB7IHJldHVybiByZXF1aXJlZCgpOyB9CisKICAgICBpbnQgbV9yb3dzOwogICAg
IGludCBtX2NvbHM7CiAgICAgV3JhcE1ldGhvZCBtX3dyYXA7CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5pZGwgYi9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVh
RWxlbWVudC5pZGwKaW5kZXggZjZhYzA1YS4uYmE4YTA2MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9o
dG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaWRsCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFy
ZWFFbGVtZW50LmlkbApAQCAtMzYsNiArMzYsNyBAQCBtb2R1bGUgaHRtbCB7CiAgICAgICAgICAg
ICAgICAgIGF0dHJpYnV0ZSAgYm9vbGVhbiAgICAgICAgICAgICAgYXV0b2ZvY3VzOwogICAgICAg
ICAgICAgICAgICBhdHRyaWJ1dGUgIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5n
ICAgICAgICAgICAgbmFtZTsKICAgICAgICAgICAgICAgICAgYXR0cmlidXRlICBib29sZWFuICAg
ICAgICAgICAgICByZWFkT25seTsKKyAgICAgICAgICAgICAgICAgYXR0cmlidXRlICBib29sZWFu
ICAgICAgICAgICAgICByZXF1aXJlZDsKICAgICAgICAgICAgICAgICAgYXR0cmlidXRlICBsb25n
ICAgICAgICAgICAgICAgICByb3dzOwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgIERPTVN0
cmluZyAgICAgICAgICAgIHR5cGU7CiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSAgW0NvbnZl
cnROdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgICAgICAgICAgICB2YWx1ZTsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvaHRtbC9WYWxpZGl0eVN0YXRlLmNwcCBiL1dlYkNvcmUvaHRtbC9WYWxpZGl0
eVN0YXRlLmNwcAppbmRleCA4ZmY2MjljLi44NjIyN2Q0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0
bWwvVmFsaWRpdHlTdGF0ZS5jcHAKKysrIGIvV2ViQ29yZS9odG1sL1ZhbGlkaXR5U3RhdGUuY3Bw
CkBAIC0yMiw3ICsyMiw2IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJWYWxp
ZGl0eVN0YXRlLmgiCi0jaW5jbHVkZSAiSFRNTEZvcm1Db250cm9sRWxlbWVudC5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9WYWxpZGl0eVN0YXRl
LmggYi9XZWJDb3JlL2h0bWwvVmFsaWRpdHlTdGF0ZS5oCmluZGV4IGEwMTFmN2EuLjYwYzBkYzYg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9WYWxpZGl0eVN0YXRlLmgKKysrIGIvV2ViQ29yZS9o
dG1sL1ZhbGlkaXR5U3RhdGUuaApAQCAtMjMsMTMgKzIzLDEyIEBACiAjaWZuZGVmIFZhbGlkaXR5
U3RhdGVfaAogI2RlZmluZSBWYWxpZGl0eVN0YXRlX2gKIAorI2luY2x1ZGUgIkhUTUxGb3JtQ29u
dHJvbEVsZW1lbnQuaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAgIGNsYXNzIEhUTUxG
b3JtQ29udHJvbEVsZW1lbnQ7Ci0KICAgICBjbGFzcyBWYWxpZGl0eVN0YXRlIDogcHVibGljIFJl
ZkNvdW50ZWQ8VmFsaWRpdHlTdGF0ZT4gewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIFBh
c3NSZWZQdHI8VmFsaWRpdHlTdGF0ZT4gY3JlYXRlKEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqIG93
bmVyKQpAQCAtMzksNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgSFRN
TEZvcm1Db250cm9sRWxlbWVudCogY29udHJvbCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udHJvbDsg
fQogCi0gICAgICAgIGJvb2wgdmFsdWVNaXNzaW5nKCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAg
ICAgYm9vbCB2YWx1ZU1pc3NpbmcoKSB7IHJldHVybiBjb250cm9sKCktPnZhbHVlTWlzc2luZygp
OyB9CiAgICAgICAgIGJvb2wgdHlwZU1pc21hdGNoKCkgeyByZXR1cm4gZmFsc2U7IH0KICAgICAg
ICAgYm9vbCBwYXR0ZXJuTWlzbWF0Y2goKSB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICBib29s
IHRvb0xvbmcoKSB7IHJldHVybiBmYWxzZTsgfQo=
</data>
<flag name="review"
          id="17321"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>