<?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>25552</bug_id>
          <alias>H5F-PatternAttr</alias>
          <creation_ts>2009-05-04 13:27:51 -0700</creation_ts>
          <short_desc>Support for HTML5 Forms &quot;pattern&quot; attribute</short_desc>
          <delta_ts>2009-07-27 13:22:42 -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-pattern</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>mike</cc>
    
    <cc>pkasting</cc>
    
    <cc>tkent</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>119870</commentid>
    <comment_count>0</comment_count>
    <who name="Michelangelo De Simone">michelangelo</who>
    <bug_when>2009-05-04 13:27:51 -0700</bug_when>
    <thetext>WebKit should support this attribute as per WHATWG specs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133290</commentid>
    <comment_count>1</comment_count>
      <attachid>33122</attachid>
    <who name="Michelangelo De Simone">michelangelo</who>
    <bug_when>2009-07-20 16:29:14 -0700</bug_when>
    <thetext>Created attachment 33122
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133295</commentid>
    <comment_count>2</comment_count>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2009-07-20 16:40:27 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; Created an attachment (id=33122) [details]
&gt; Proposed patch

As mentioned on IRC, before this lands you should probably add tests that set patterns with mismatched ()s (e.g. &quot;...) ... (...&quot; and trailing \s, in order to demonstrate that the implementation doesn&apos;t actually prepend &quot;^(?:&quot; and append &quot;$)&quot; as mentioned on the spec.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133299</commentid>
    <comment_count>3</comment_count>
      <attachid>33122</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-07-20 16:55:24 -0700</bug_when>
    <thetext>Comment on attachment 33122
Proposed patch

&gt; +            RegularExpression patternRegExp(pattern(), TextCaseSensitive);
&gt; +            return patternRegExp.match(value()) != 0;

If you are trying to determine if the regular expression matches the entire string you need to do more work. You need to create a test where there is a regular expression that matches the beginning of a string but there are extra characters in the value. I believe that test would fail.

This code also recompiles the regular expression pattern every time you do the match. I suppose that&apos;s intentional. If you remove pattern() as I request below, then you&apos;ll instead do getAttribute(patternAttr) and put it into a local variable of type const AtomicString&amp; at the top of the function.

&gt; +String HTMLInputElement::pattern() const
&gt; +{
&gt; +    return getAttribute(patternAttr);
&gt; +}

For new code, we try to avoid having this kind of function. Instead we put [Reflect] in the .idl file and let the function be automatically generated. If you were going to write it by hand there are some issues about using String vs. AtomicString.

&gt; +void HTMLInputElement::setPattern(const String&amp; p)
&gt; +{
&gt; +    if (p.isEmpty()) {
&gt; +        int exccode;
&gt; +        removeAttribute(patternAttr, exccode);
&gt; +    } else
&gt; +        setAttribute(patternAttr, p);
&gt; +}

Are you sure this does the right thing for the empty string? I recommend just using [Reflect] in the .idl file and not writing custom code for this. I think it&apos;s unlikely this has a rule different from all other attributes.

I&apos;d like to see some tests about how this works with all the special characters for regular expressions, especially ones like &quot;$&quot; and &quot;^&quot;.

review- mainly because of the &quot;matches the entire string&quot; issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133831</commentid>
    <comment_count>4</comment_count>
    <who name="Michelangelo De Simone">michelangelo</who>
    <bug_when>2009-07-22 12:01:01 -0700</bug_when>
    <thetext>(In reply to comment #3)

&gt; If you are trying to determine if the regular expression matches the entire
&gt; string you need to do more work. You need to create a test where there is a
&gt; regular expression that matches the beginning of a string but there are extra
&gt; characters in the value. I believe that test would fail.

I&apos;ve been testing this approach:
            if (value().isEmpty())
                return true; // &lt;- patternMismatch = true if there&apos;s a pattern but no value.

            RegularExpression patternRegExp(String(&quot;^(?:&quot;) + l_pattern + &quot;)$&quot;, TextCaseSensitive);
            return patternRegExp.match(value()) != 0;

As far as I undestood RegularExpression::match returns 0 if its parameter matches the whole pattern, -1 otherwise. Is that correct?

&gt; This code also recompiles the regular expression pattern every time you do the
&gt; match. I suppose that&apos;s intentional. If you remove pattern() as I request

Yes, honestly I don&apos;t like much the way I&apos;ve been using RegularExpression; I&apos;d like to allocate-use -deallocate it on the heap, is there any reasonable approach to this?

&gt; For new code, we try to avoid having this kind of function. Instead we put
&gt; [Reflect] in the .idl file and let the function be automatically generated. If

Ok.

&gt; I&apos;d like to see some tests about how this works with all the special characters
&gt; for regular expressions, especially ones like &quot;$&quot; and &quot;^&quot;.

I&apos;d appreciate if you could provide some regular expression as reference, this patch is quite &quot;peculiar&quot; so it shall be tested deeply.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133847</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-07-22 12:39:53 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; As far as I undestood RegularExpression::match returns 0 if its parameter
&gt; matches the whole pattern, -1 otherwise. Is that correct?

No. The match function returns the position within its parameter that the regular expression matches. So if it matches at the beginning of the parameter it returns 0, and if it matches 1 character into the parameter it returns 1.

It does not check if the regular expression matches the entire parameter, which is what you want here.

&gt; &gt; This code also recompiles the regular expression pattern every time you do the
&gt; &gt; match. I suppose that&apos;s intentional. If you remove pattern() as I request
&gt; 
&gt; Yes, honestly I don&apos;t like much the way I&apos;ve been using RegularExpression; I&apos;d
&gt; like to allocate-use -deallocate it on the heap, is there any reasonable
&gt; approach to this?

I don’t think the heap would be better than the stack for this.

&gt; &gt; I&apos;d like to see some tests about how this works with all the special characters
&gt; &gt; for regular expressions, especially ones like &quot;$&quot; and &quot;^&quot;.
&gt; 
&gt; I&apos;d appreciate if you could provide some regular expression as reference, this
&gt; patch is quite &quot;peculiar&quot; so it shall be tested deeply.

For the substring issue, if the string is &quot;ab&quot; then you should have a regular expression &quot;a&quot; which should not match, a regular expression &quot;b&quot; which should not match and a regular expression &quot;ab&quot; that should match. The expression &quot;^ab&quot; should also match, but &quot;^a&quot; should not nor should &quot;^b&quot;, and similarly &quot;ab$&quot; should match, etc.

There are tons of special characters in regular expressions, so providing examples that test all the various special characters is not something I can easily do. The ECMAScript standard &lt;http://www.ecma-international.org/publications/standards/Ecma-262.htm&gt; lists the special characters you can use in regular expressions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134168</commentid>
    <comment_count>6</comment_count>
    <who name="Michelangelo De Simone">michelangelo</who>
    <bug_when>2009-07-23 11:36:25 -0700</bug_when>
    <thetext>(In reply to comment #5)

&gt; No. The match function returns the position within its parameter that the
&gt; regular expression matches. So if it matches at the beginning of the parameter
&gt; it returns 0, and if it matches 1 character into the parameter it returns 1.
&gt; 
&gt; It does not check if the regular expression matches the entire parameter, which
&gt; is what you want here.

I&apos;ve modified it in this way:

            RegularExpression patternRegExp(String(&quot;^(?:&quot; + l_pattern + &quot;)$&quot;), TextCaseSensitive);
            int matchLength = 0;
            int matchOffset = patternRegExp.match(value(), 0, &amp;matchLength);
            bool fullMatch = (matchOffset == 0 &amp;&amp; matchLength == (int)value().length());

            return !fullMatch;

I guess this should solve the issue: ^(?: and )$ force the string to be matched entirely; in the return statement the value() should match from its beginning and for its whole length.

Anyway I&apos;m writing more tests to ensure this is right.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134173</commentid>
    <comment_count>7</comment_count>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2009-07-23 11:41:29 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt;             bool fullMatch = (matchOffset == 0 &amp;&amp; matchLength ==
&gt; (int)value().length());
&gt; 
&gt;             return !fullMatch;

Two preemptive nits:
* Go ahead and return the comparison result directory, you don&apos;t need a temp.
* Use static_cast&lt;int&gt;() instead of (int).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134175</commentid>
    <comment_count>8</comment_count>
    <who name="Michelangelo De Simone">michelangelo</who>
    <bug_when>2009-07-23 11:43:19 -0700</bug_when>
    <thetext>(In reply to comment #7)

&gt; Two preemptive nits:
&gt; * Go ahead and return the comparison result directory, you don&apos;t need a temp.
&gt; * Use static_cast&lt;int&gt;() instead of (int).

Absolutely, they were just for my debug purposes...:-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134251</commentid>
    <comment_count>9</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-07-23 14:14:15 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; I&apos;ve modified it in this way:
&gt; 
&gt;             RegularExpression patternRegExp(String(&quot;^(?:&quot; + l_pattern + &quot;)$&quot;),
&gt; TextCaseSensitive);
&gt;             int matchLength = 0;
&gt;             int matchOffset = patternRegExp.match(value(), 0, &amp;matchLength);
&gt;             bool fullMatch = (matchOffset == 0 &amp;&amp; matchLength ==
&gt; (int)value().length());
&gt; 
&gt;             return !fullMatch;
&gt; 
&gt; I guess this should solve the issue: ^(?: and )$ force the string to be matched
&gt; entirely; in the return statement the value() should match from its beginning
&gt; and for its whole length.

Will this work properly for strings that have &quot;^&quot; or &quot;$&quot; or &quot;(&quot; or &quot;)&quot; characters in them? I think the fullMatch test alone probably solves the problem without the change to the regular expression change.

The typecast to int is unfortunate. I suggest putting value().length() into a local variable of type int to avoid the cast.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134255</commentid>
    <comment_count>10</comment_count>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2009-07-23 14:21:14 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; Will this work properly for strings that have &quot;^&quot; or &quot;$&quot; or &quot;(&quot; or &quot;)&quot;
&gt; characters in them? I think the fullMatch test alone probably solves the
&gt; problem without the change to the regular expression change.

I agree. Prepending/appending to the supplied pattern won&apos;t fly (discussed w/Hixie on IRC the other day, I&apos;m surprised this has reappeared; consider expressions with a trailing \, or that look like &quot;...) ... (...&quot;).

&gt; The typecast to int is unfortunate. I suggest putting value().length() into a
&gt; local variable of type int to avoid the cast.

Both options cast.  Making the cast explicit seems better to me;

int foo = (some size_t);
if (foo == (some int)) ...

...is more subtle than:

if (static_cast&lt;int&gt;(foo) == (some int))

...if there is ever a potential problem (e.g. overflow).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134271</commentid>
    <comment_count>11</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-07-23 14:59:32 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Both options cast.  Making the cast explicit seems better to me

I don&apos;t agree that those are both the same.

WebKit has lots of the implicit integer type conversions using assignment, and those only work for integer conversion. On the other hand, the (int) syntax can convert anything into an int.

If we had a numeric-only cast, then I would agree that the both options were equivalent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134276</commentid>
    <comment_count>12</comment_count>
    <who name="Michelangelo De Simone">michelangelo</who>
    <bug_when>2009-07-23 15:11:12 -0700</bug_when>
    <thetext>(In reply to comment #11)

&gt; If we had a numeric-only cast, then I would agree that the both options were
&gt; equivalent.

This is the snippet of the code I&apos;m gonna attach to this bug:

            if (value().isEmpty())
                return true;

            RegularExpression patternRegExp(l_pattern, TextCaseSensitive);
            int matchLength = 0;
            int valueLength = value().length();
            int matchOffset = patternRegExp.match(value(), 0, &amp;matchLength);

            return matchOffset != 0 || matchLength != valueLength;

On http://paste.lisp.org/display/84099 I&apos;ve temporarily pasted some new negative and positive test to check the code against special chars.

Waiting for comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134277</commentid>
    <comment_count>13</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-07-23 15:13:09 -0700</bug_when>
    <thetext>Looks to me like you&apos;re on the right track now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134281</commentid>
    <comment_count>14</comment_count>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2009-07-23 15:16:33 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #10)
&gt; I don&apos;t agree that those are both the same.
&gt; 
&gt; WebKit has lots of the implicit integer type conversions using assignment, and
&gt; those only work for integer conversion. On the other hand, the (int) syntax can
&gt; convert anything into an int.

I explicitly suggested static_cast&lt;int&gt;(), which is much narrower than (int).  I agree that (int), or reinterpret_cast&lt;int&gt;(), would be poor choices.

My memory of the ANSI spec is not good enough to recall whether static_cast&lt;&gt;() allows (without warning) conversions that initialization does not allow.  I don&apos;t think it does, but I could be wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134285</commentid>
    <comment_count>15</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-07-23 15:17:41 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; My memory of the ANSI spec is not good enough to recall whether
&gt; static_cast&lt;&gt;()  allows (without warning) conversions that initialization
&gt; does not allow. I don&apos;t think it does, but I could be wrong.

It does.

For example, a cast from void* to char*.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134287</commentid>
    <comment_count>16</comment_count>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2009-07-23 15:21:56 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (In reply to comment #14)
&gt; &gt; My memory of the ANSI spec is not good enough to recall whether
&gt; &gt; static_cast&lt;&gt;()  allows (without warning) conversions that initialization
&gt; &gt; does not allow. I don&apos;t think it does, but I could be wrong.
&gt; 
&gt; It does.
&gt; 
&gt; For example, a cast from void* to char*.

Sorry; I was thinking only of static_cast&lt;int&gt;().  I think that one ought to be OK?

It&apos;s clearly not a huge deal; I&apos;m mostly discussing in hopes of determining the &quot;canonical best way&quot; so that I do the right thing in my own future patches.  I tend to eschew temporaries and make all type conversions as explicit as possible, so this would be a notable change in direction for me.

(Sorry, Michelangelo, for hijacking your bug :) )</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134302</commentid>
    <comment_count>17</comment_count>
      <attachid>33389</attachid>
    <who name="Michelangelo De Simone">michelangelo</who>
    <bug_when>2009-07-23 16:11:06 -0700</bug_when>
    <thetext>Created attachment 33389
Proposed patch, rev. 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134306</commentid>
    <comment_count>18</comment_count>
      <attachid>33389</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-07-23 16:22:08 -0700</bug_when>
    <thetext>Comment on attachment 33389
Proposed patch, rev. 2

&gt; +    const AtomicString&amp; l_pattern = getAttribute(patternAttr);

What&apos;s the &quot;l_&quot; prefix here? We don&apos;t use underscores in variable names. You can just name this local variable pattern, I believe. It will shadow the pattern() function, but that should be fine; you can always use this-&gt;pattern() if you need to get at the pattern function.

&gt; +    if (l_pattern.isEmpty() || value().isEmpty())

This function calls value(), a virtual function, three times. I would suggest doing this at the start of the function:

    String value = this-&gt;value();

And then use the local value throughout.

I&apos;m going to say r=me, but we probably do want to fix the l_pattern variable name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134309</commentid>
    <comment_count>19</comment_count>
      <attachid>33393</attachid>
    <who name="Michelangelo De Simone">michelangelo</who>
    <bug_when>2009-07-23 16:49:49 -0700</bug_when>
    <thetext>Created attachment 33393
Proposed patch, rev. 2b</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134312</commentid>
    <comment_count>20</comment_count>
      <attachid>33393</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-07-23 17:01:35 -0700</bug_when>
    <thetext>Comment on attachment 33393
Proposed patch, rev. 2b

r=me

I did have a few more thoughts, but probably not ones that have to be resolved during review.

The code to get the pattern and value could moved inside the switch so we wouldn&apos;t waste any time getting the pattern or value for input types that don&apos;t support pattern. You might also be able to remove one or both special cases, since I think compiling an empty regular expression will fail and return false.

Is it really true that an empty value can never mismatch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134315</commentid>
    <comment_count>21</comment_count>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2009-07-23 17:11:00 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; (From update of attachment 33393 [details])
&gt; Is it really true that an empty value can never mismatch?

Yes.  I thought this was wacky at first too.  The relevant text in HTML5 4.10.4.2.8 is:

&quot;If the element&apos;s value is not the empty string, and ...(more conditions)..., then the element is suffering from a pattern mismatch.&quot;

I think the use case is: As specified, pattern allows you to check that input in optional fields is valid.  If you want to enforce that a field is filled, you can also specify &quot;required&quot;.  This way, you can have &quot;Enter your city and state, OR your zip&quot; form fields, and check the zip with pattern.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134317</commentid>
    <comment_count>22</comment_count>
    <who name="Michelangelo De Simone">michelangelo</who>
    <bug_when>2009-07-23 17:14:26 -0700</bug_when>
    <thetext>(In reply to comment #20)

&gt; The code to get the pattern and value could moved inside the switch so we
&gt; wouldn&apos;t waste any time getting the pattern or value for input types that don&apos;t
&gt; support pattern. You might also be able to remove one or both special cases,
&gt; since I think compiling an empty regular expression will fail and return false.

This was deliberate, I tought that most of the times developers ask for patternMismatch (through valid()) when no pattern attribute is specified, I tried to avoid entering into the &quot;switch&quot; for its higher overhead.

On the other hand I should have coded something such as:

if ((pattern.isEmpty() || value.isEmpty() || inputType == HIDDEN || inputType == FILE...etc...) return false;

But that would have been too much a shame.:-) Anyway, you tell me... I&apos;m available to move these checks down in the switch/case if you think that it would be wiser.

&gt; Is it really true that an empty value can never mismatch?

I know, it&apos;s strange, but it&apos;s OK. Peter and I checked this reading specs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134318</commentid>
    <comment_count>23</comment_count>
    <who name="Michelangelo De Simone">michelangelo</who>
    <bug_when>2009-07-23 17:15:48 -0700</bug_when>
    <thetext>(In reply to comment #22)

&gt; On the other hand I should have coded something such as:

s/should/could</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134319</commentid>
    <comment_count>24</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-07-23 17:16:05 -0700</bug_when>
    <thetext>Sounds like we&apos;re good to go then.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134321</commentid>
    <comment_count>25</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-07-23 17:18:00 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; Sorry; I was thinking only of static_cast&lt;int&gt;().  I think that one ought to be
&gt; OK?

Peter, I was working on a reply to this, with some examples and comments about what my style preference is and rationale for sometimes preferring to have local variables, and accidentally lost it. I&apos;ll probably get back to this soon, but I didn&apos;t want to just leave you hanging.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134322</commentid>
    <comment_count>26</comment_count>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2009-07-23 17:26:25 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; (In reply to comment #16)
&gt; &gt; Sorry; I was thinking only of static_cast&lt;int&gt;().  I think that one ought to be
&gt; &gt; OK?
&gt; 
&gt; Peter, I was working on a reply to this, with some examples and comments about
&gt; what my style preference is and rationale for sometimes preferring to have
&gt; local variables, and accidentally lost it. I&apos;ll probably get back to this soon,
&gt; but I didn&apos;t want to just leave you hanging.

No worries :)

Out of curiosity I asked a fewer of the Chromium developers (a tech lead and an ex-chief architect of something or other) what their preferred style would be, and they suggested using static_cast&lt;&gt;().  One commented that the presence of (ugly) static_casts could serve as eventual impetus to go modify the code design to do less casting, which I hadn&apos;t thought of.  However, I doubt that the world will end either way people write the code; it&apos;s a pretty minor distinction.

Feel free to toss something up on the WK style guide or on IRC anytime!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134323</commentid>
    <comment_count>27</comment_count>
      <attachid>33395</attachid>
    <who name="Michelangelo De Simone">michelangelo</who>
    <bug_when>2009-07-23 17:28:33 -0700</bug_when>
    <thetext>Created attachment 33395
Proposed Patch, rev. 2c</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134754</commentid>
    <comment_count>28</comment_count>
    <who name="Michelangelo De Simone">michelangelo</who>
    <bug_when>2009-07-25 10:02:39 -0700</bug_when>
    <thetext>Does the patch 2c conform with Darin&apos;s comments?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134789</commentid>
    <comment_count>29</comment_count>
      <attachid>33395</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-07-25 19:56:42 -0700</bug_when>
    <thetext>Comment on attachment 33395
Proposed Patch, rev. 2c

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134990</commentid>
    <comment_count>30</comment_count>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2009-07-27 13:22:42 -0700</bug_when>
    <thetext>Fixed in r46423.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33122</attachid>
            <date>2009-07-20 16:29:14 -0700</date>
            <delta_ts>2009-07-23 16:11:06 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>25552-1.patch</filename>
            <type>text/plain</type>
            <size>24048</size>
            <attacher name="Michelangelo De Simone">michelangelo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBkMjRiY2ZkLi45YmVkOTE2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMDktMDct
MjAgIE1pY2hlbGFuZ2VsbyBEZSBTaW1vbmUgIDxtaWNkZXNpbUBnbWFpbC5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1NTUyCisgICAgICAgIEZpcnN0IHNlcmllcyBvZiB0
ZXN0cyBmb3IgdGhlICJwYXR0ZXJuIiBhdHRyaWJ1dGUgYW5kIHJlbGF0ZWQgdmFsaWRhdGlvbgor
ICAgICAgICBjb2RlCisKKyAgICAgICAgKiBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtMDAyLWV4
cGVjdGVkLnR4dDogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy93aWxsdmFsaWRh
dGUtMDAxLWV4cGVjdGVkLnR4dC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUt
MDAyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS1wYXR0
ZXJuTWlzbWF0Y2gtMDAxLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jt
cy9WYWxpZGl0eVN0YXRlLXBhdHRlcm5NaXNtYXRjaC0wMDEuaHRtbDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXBhdHRlcm5NaXNtYXRjaC0wMDItZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtcGF0dGVybk1p
c21hdGNoLTAwMi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3Rh
dGUtcGF0dGVybk1pc21hdGNoLTAwMy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS1wYXR0ZXJuTWlzbWF0Y2gtMDAzLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS1wYXR0ZXJuTWlzbWF0Y2gtMDA0LWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXBh
dHRlcm5NaXNtYXRjaC0wMDQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9WYWxp
ZGl0eVN0YXRlLXBhdHRlcm5NaXNtYXRjaC0wMDUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtcGF0dGVybk1pc21hdGNoLTAwNS5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtcGF0dGVybk1pc21hdGNo
LTAwNi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvVmFsaWRpdHlT
dGF0ZS1wYXR0ZXJuTWlzbWF0Y2gtMDA2Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9y
bXMvVmFsaWRpdHlTdGF0ZS1wYXR0ZXJuTWlzbWF0Y2gtMDA3LWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXBhdHRlcm5NaXNtYXRjaC0wMDcu
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9wYXR0ZXJuLWF0dHJpYnV0ZS0wMDEt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL3BhdHRlcm4tYXR0cmli
dXRlLTAwMS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL3BhdHRlcm4tYXR0cmli
dXRlLTAwMi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvcGF0dGVy
bi1hdHRyaWJ1dGUtMDAyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvcGF0dGVy
bi1hdHRyaWJ1dGUtMDAzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jt
cy9wYXR0ZXJuLWF0dHJpYnV0ZS0wMDMuaHRtbDogQWRkZWQuCisKIDIwMDktMDctMTkgIFNpbW9u
IEhhdXNtYW5uICA8aGF1c21hbm5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSdWJiZXItc3RhbXBl
ZCBieSBYYW4gTG9wZXouCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlk
aXR5U3RhdGUtMDAyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRp
dHlTdGF0ZS0wMDItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmMxZGNlY2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1Zh
bGlkaXR5U3RhdGUtMDAyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIgQEAKKworU1VDQ0VTUwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLTAwMi5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLTAwMi5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM1OWJlMDIKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtMDAyLmh0bWwKQEAgLTAsMCArMSwy
NCBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5wYXR0ZXJuTWlzbWF0Y2ggYW5kIHZhbHVlTWlz
c2luZzwvdGl0bGU+Cis8c2NyaXB0IGxhbmd1YWdlPSJKYXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L2ph
dmFzY3JpcHQiPgorICAgIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKSB7CisgICAgICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuaW5uZXJIVE1MICs9ICI8bGk+IittZXNzYWdlKyI8
L2xpPiI7CisgICAgfQorCisgICAgZnVuY3Rpb24gdGVzdCgpIHsKKyAgICAgICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKKworICAgICAgICB2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUo
InZpY3RpbSIpOworCisgICAgICAgIGxvZyh2WzBdLnZhbGlkaXR5LnBhdHRlcm5NaXNtYXRjaCAm
JiB2WzBdLnZhbGlkaXR5LnZhbHVlTWlzc2luZyA/ICJTVUNDRVNTIiA6ICJGQUlMVVJFIik7Cisg
ICAgfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InRlc3QoKSI+Cis8aW5wdXQg
bmFtZT0idmljdGltIiB0eXBlPSJ0ZXh0IiBwYXR0ZXJuPSJbMC05XVtBLVpdezN9IiByZXF1aXJl
ZC8+Cis8aHI+Cis8b2wgaWQ9ImNvbnNvbGUiPjwvb2w+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtcGF0dGVybk1pc21h
dGNoLTAwMS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3Rh
dGUtcGF0dGVybk1pc21hdGNoLTAwMS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uNDIzZTRmYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS1wYXR0ZXJuTWlzbWF0Y2gtMDAxLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDQgQEAKK1RoZXJlIGlzIGFuIGlucHV0IHR5cGUgdGV4dCB3aXRoIHBhdHRlcm4g
YXR0cmlidXRlIHNldCB0byBbMC05XVtBLVpdezN9LCBjaGVja2luZyBpdHMgdmFsaWRpdHkucGF0
dGVybk1pc21hdGNoIGZsYWcuCisKKworU1VDQ0VTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXBhdHRlcm5NaXNtYXRjaC0wMDEuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS1wYXR0ZXJuTWlzbWF0Y2gtMDAxLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzdjNGE5ZAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS1wYXR0ZXJuTWlzbWF0
Y2gtMDAxLmh0bWwKQEAgLTAsMCArMSwyNCBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5iYXNp
YyBwYXR0ZXJuTWlzbWF0Y2ggdGVzdDwvdGl0bGU+Cis8c2NyaXB0IGxhbmd1YWdlPSJKYXZhU2Ny
aXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKSB7
CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuaW5uZXJIVE1MICs9
ICI8bGk+IittZXNzYWdlKyI8L2xpPiI7CisgICAgfQorCisgICAgZnVuY3Rpb24gdGVzdCgpIHsK
KyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgICAgICB2ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeU5hbWUoInZpY3RpbSIpOworICAgICAgICBsb2coIXZbMF0udmFsaWRpdHku
cGF0dGVybk1pc21hdGNoID8gIlNVQ0NFU1MiIDogIkZBSUxVUkUiKTsKKyAgICB9Cis8L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0idGVzdCgpIj4KKzxwPlRoZXJlIGlzIGFuIGlucHV0
IHR5cGUgdGV4dCB3aXRoIHBhdHRlcm4gYXR0cmlidXRlIHNldCB0byBbMC05XVtBLVpdezN9LCBj
aGVja2luZyBpdHMgdmFsaWRpdHkucGF0dGVybk1pc21hdGNoIGZsYWcuPC9wPgorPGlucHV0IG5h
bWU9InZpY3RpbSIgcGF0dGVybj0iWzAtOV1bQS1aXXszfSIgdmFsdWU9IjBBQUEiLz4KKzxocj4K
KzxvbCBpZD0iY29uc29sZSI+PC9vbD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS1wYXR0ZXJuTWlzbWF0Y2gtMDAyLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS1wYXR0ZXJu
TWlzbWF0Y2gtMDAyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi5kMTYyNDg0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9W
YWxpZGl0eVN0YXRlLXBhdHRlcm5NaXNtYXRjaC0wMDItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
NCBAQAorVGhlcmUgaXMgYW4gaW5wdXQgdHlwZSB0ZXh0IHdpdGggbm8gcGF0dGVybiBhdHRyaWJ1
dGUuCisKKworU1VDQ0VTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxp
ZGl0eVN0YXRlLXBhdHRlcm5NaXNtYXRjaC0wMDIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9y
bXMvVmFsaWRpdHlTdGF0ZS1wYXR0ZXJuTWlzbWF0Y2gtMDAyLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uYTYwNzFjMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS1wYXR0ZXJuTWlzbWF0Y2gtMDAyLmh0bWwKQEAg
LTAsMCArMSwyNCBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5iYXNpYyBwYXR0ZXJuTWlzbWF0
Y2ggdGVzdCAyPC90aXRsZT4KKzxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQiIHR5cGU9InRl
eHQvamF2YXNjcmlwdCI+CisgICAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpIHsKKyAgICAgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5pbm5lckhUTUwgKz0gIjxsaT4iK21lc3Nh
Z2UrIjwvbGk+IjsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0KCkgeworICAgICAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgICAgIHYgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
TmFtZSgidmljdGltIik7CisgICAgICAgIGxvZyghdlswXS52YWxpZGl0eS5wYXR0ZXJuTWlzbWF0
Y2ggPyAiU1VDQ0VTUyIgOiAiRkFJTFVSRSIpOworICAgIH0KKzwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgorPHA+VGhlcmUgaXMgYW4gaW5wdXQgdHlwZSB0ZXh0IHdp
dGggbm8gcGF0dGVybiBhdHRyaWJ1dGUuPC9wPgorPGlucHV0IG5hbWU9InZpY3RpbSIgLz4KKzxo
cj4KKzxvbCBpZD0iY29uc29sZSI+PC9vbD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS1wYXR0ZXJuTWlzbWF0Y2gtMDAz
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS1wYXR0
ZXJuTWlzbWF0Y2gtMDAzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi4wMzE2ZGQ1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9WYWxpZGl0eVN0YXRlLXBhdHRlcm5NaXNtYXRjaC0wMDMtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsNiBAQAorU29tZSBjb21wbGV4IHBhdHRlcm4uCisKK0lQIEFkZHJlc3M6ICBFbWFpbCBhZGRy
ZXNzOiAgCitTVUNDRVNTCitTVUNDRVNTCitTVUNDRVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtcGF0dGVybk1pc21hdGNoLTAwMy5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXBhdHRlcm5NaXNtYXRjaC0wMDMuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMDY1ZDU1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXBhdHRlcm5NaXNt
YXRjaC0wMDMuaHRtbApAQCAtMCwwICsxLDI5IEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPmJh
c2ljIHBhdHRlcm5NaXNtYXRjaCB0ZXN0IDM8L3RpdGxlPgorPHNjcmlwdCBsYW5ndWFnZT0iSmF2
YVNjcmlwdCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICBmdW5jdGlvbiBsb2cobWVzc2Fn
ZSkgeworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmlubmVySFRN
TCArPSAiPGxpPiIrbWVzc2FnZSsiPC9saT4iOworICAgIH0KKworICAgIGZ1bmN0aW9uIHRlc3Qo
KSB7CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICAgICAgdiA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlOYW1lKCJ2aWN0aW0iKTsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8
IHYubGVuZ3RoOyBpKyspCisgICAgICAgICAgICBsb2coIXZbaV0udmFsaWRpdHkucGF0dGVybk1p
c21hdGNoID8gIlNVQ0NFU1MiIDogIkZBSUxVUkUiKTsKKyAgICB9Cis8L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5IG9ubG9hZD0idGVzdCgpIj4KKzxwPlNvbWUgY29tcGxleCBwYXR0ZXJuLjwvcD4K
K0lQIEFkZHJlc3M6Cis8aW5wdXQgbmFtZT0idmljdGltIiB0eXBlPSJ0ZXh0IiBwYXR0ZXJuPSJc
YigyNVswLTVdfDJbMC00XVswLTldfFswMV0/WzAtOV1bMC05XT8pXC4oMjVbMC01XXwyWzAtNF1b
MC05XXxbMDFdP1swLTldWzAtOV0/KVwuKDI1WzAtNV18MlswLTRdWzAtOV18WzAxXT9bMC05XVsw
LTldPylcLigyNVswLTVdfDJbMC00XVswLTldfFswMV0/WzAtOV1bMC05XT8pXGIiIHZhbHVlPSIx
MjcuMC4wLjEiIC8+CitFbWFpbCBhZGRyZXNzOgorPGlucHV0IG5hbWU9InZpY3RpbSIgdHlwZT0i
dGV4dCIgcGF0dGVybj0iW2EtejAtOSEjJCUmJyorLz0/Xl9ge3x9fi1dKyg/OlwuW2EtejAtOSEj
JCUmJyorLz0/Xl9ge3x9fi1dKykqQCg/OlthLXowLTldKD86W2EtejAtOS1dKlthLXowLTldKT9c
LikrW2EtejAtOV0oPzpbYS16MC05LV0qW2EtejAtOV0pPyIgdmFsdWU9InNvbWVvbmVAc29tZXdo
ZXJlLmNvbSIgLz4KKzxpbnB1dCBuYW1lPSJ2aWN0aW0iIHR5cGU9InRleHQiIHBhdHRlcm49Ilxi
KHdvcmQxfHdvcmQyfHdvcmQzKSg/OlxXK1x3Kyl7MSw2fT9cVysod29yZDF8d29yZDJ8d29yZDMp
XGIiIHZhbHVlPSJ3b3JkMSBuZWFyIHdvcmQyIiAvPgorPGhyPgorPG9sIGlkPSJjb25zb2xlIj48
L29sPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9WYWxpZGl0eVN0YXRlLXBhdHRlcm5NaXNtYXRjaC0wMDQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXBhdHRlcm5NaXNtYXRjaC0wMDQtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRmYTBhMzYKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtcGF0dGVy
bk1pc21hdGNoLTAwNC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACisKK1NVQ0NFU1MKK1NV
Q0NFU1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS1w
YXR0ZXJuTWlzbWF0Y2gtMDA0Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5
U3RhdGUtcGF0dGVybk1pc21hdGNoLTAwNC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjE0ZmNmMWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL1ZhbGlkaXR5U3RhdGUtcGF0dGVybk1pc21hdGNoLTAwNC5odG1sCkBAIC0wLDAgKzEsMjYg
QEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+YmFzaWMgcGF0dGVybk1pc21hdGNoIHRlc3QgNDwv
dGl0bGU+Cis8c2NyaXB0IGxhbmd1YWdlPSJKYXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiPgorICAgIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKSB7CisgICAgICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJjb25zb2xlIikuaW5uZXJIVE1MICs9ICI8bGk+IittZXNzYWdlKyI8L2xpPiI7
CisgICAgfQorCisgICAgZnVuY3Rpb24gdGVzdCgpIHsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKKworICAgICAgICB2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoInZpY3Rp
bSIpOworCisgICAgICAgIGxvZyh2WzBdLnZhbGlkaXR5LnBhdHRlcm5NaXNtYXRjaCA/ICJTVUND
RVNTIiA6ICJGQUlMVVJFIik7CisgICAgICAgIHZbMF0udmFsdWUgPSAic29tZW9uZUBzb21ld2hl
cmUuY29tIjsKKyAgICAgICAgbG9nKCF2WzBdLnZhbGlkaXR5LnBhdHRlcm5NaXNtYXRjaCA/ICJT
VUNDRVNTIiA6ICJGQUlMVVJFIik7CisgICAgfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBv
bmxvYWQ9InRlc3QoKSI+Cis8aW5wdXQgbmFtZT0idmljdGltIiB0eXBlPSJ0ZXh0IiBwYXR0ZXJu
PSJbYS16MC05ISMkJSYnKisvPT9eX2B7fH1+LV0rKD86XC5bYS16MC05ISMkJSYnKisvPT9eX2B7
fH1+LV0rKSpAKD86W2EtejAtOV0oPzpbYS16MC05LV0qW2EtejAtOV0pP1wuKStbYS16MC05XSg/
OlthLXowLTktXSpbYS16MC05XSk/IiB2YWx1ZT0iV3JvbmchIi8+Cis8aHI+Cis8b2wgaWQ9ImNv
bnNvbGUiPjwvb2w+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtcGF0dGVybk1pc21hdGNoLTAwNS1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtcGF0dGVybk1pc21hdGNoLTAw
NS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmQ3NjYz
MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0
ZS1wYXR0ZXJuTWlzbWF0Y2gtMDA1LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAKKworU1VD
Q0VTUworU1VDQ0VTUworU1VDQ0VTUworU1VDQ0VTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXBhdHRlcm5NaXNtYXRjaC0wMDUuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS1wYXR0ZXJuTWlzbWF0Y2gtMDA1Lmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDg1MWI0MAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS1wYXR0ZXJuTWlzbWF0
Y2gtMDA1Lmh0bWwKQEAgLTAsMCArMSwzMCBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5iYXNp
YyBwYXR0ZXJuTWlzbWF0Y2ggdGVzdCA1PC90aXRsZT4KKzxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFT
Y3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgZnVuY3Rpb24gbG9nKG1lc3NhZ2Up
IHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5pbm5lckhUTUwg
Kz0gIjxsaT4iK21lc3NhZ2UrIjwvbGk+IjsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0KCkg
eworICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgICAgIHYgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5TmFtZSgidmljdGltIik7CisKKyAgICAgICAgbG9nKHZbMF0udmFsaWRp
dHkucGF0dGVybk1pc21hdGNoID8gIlNVQ0NFU1MiIDogIkZBSUxVUkUiKTsKKyAgICAgICAgdlsw
XS52YWx1ZSA9ICJncmF5IjsKKyAgICAgICAgbG9nKCF2WzBdLnZhbGlkaXR5LnBhdHRlcm5NaXNt
YXRjaCA/ICJTVUNDRVNTIiA6ICJGQUlMVVJFIik7CisgICAgICAgIHZbMF0udmFsdWUgPSAiZ3Jl
eSI7CisgICAgICAgIGxvZyghdlswXS52YWxpZGl0eS5wYXR0ZXJuTWlzbWF0Y2ggPyAiU1VDQ0VT
UyIgOiAiRkFJTFVSRSIpOworICAgICAgICB2WzBdLnZhbHVlID0gIiI7CisgICAgICAgIGxvZyh2
WzBdLnZhbGlkaXR5LnBhdHRlcm5NaXNtYXRjaCA/ICJTVUNDRVNTIiA6ICJGQUlMVVJFIik7Cisg
ICAgfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InRlc3QoKSI+Cis8aW5wdXQg
bmFtZT0idmljdGltIiB0eXBlPSJ0ZXh0IiBwYXR0ZXJuPSJnclthZV15IiB2YWx1ZT0iV3Jvbmch
Ii8+Cis8aHI+Cis8b2wgaWQ9ImNvbnNvbGUiPjwvb2w+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtcGF0dGVybk1pc21h
dGNoLTAwNi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3Rh
dGUtcGF0dGVybk1pc21hdGNoLTAwNi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uNWZmYTk1YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS1wYXR0ZXJuTWlzbWF0Y2gtMDA2LWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDQgQEAKKyAgCitTVUNDRVNTCitTVUNDRVNTCitTVUNDRVNTCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtcGF0dGVybk1pc21hdGNoLTAw
Ni5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXBhdHRlcm5NaXNt
YXRjaC0wMDYuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYzhjNjAy
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRl
LXBhdHRlcm5NaXNtYXRjaC0wMDYuaHRtbApAQCAtMCwwICsxLDI2IEBACis8aHRtbD4KKzxoZWFk
PgorPHRpdGxlPmJhc2ljIHBhdHRlcm5NaXNtYXRjaCB0ZXN0IDY8L3RpdGxlPgorPHNjcmlwdCBs
YW5ndWFnZT0iSmF2YVNjcmlwdCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICBmdW5jdGlv
biBsb2cobWVzc2FnZSkgeworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29s
ZSIpLmlubmVySFRNTCArPSAiPGxpPiIrbWVzc2FnZSsiPC9saT4iOworICAgIH0KKworICAgIGZ1
bmN0aW9uIHRlc3QoKSB7CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
CisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICAg
ICAgdiA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKCJ2aWN0aW0iKTsKKyAgICAgICAgZm9y
IChpID0gMDsgaSA8IHYubGVuZ3RoOyBpKyspCisgICAgICAgICAgICBsb2codltpXS52YWxpZGl0
eS5wYXR0ZXJuTWlzbWF0Y2ggPyAiU1VDQ0VTUyIgOiAiRkFJTFVSRSIpOworICAgIH0KKzwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgorPGlucHV0IG5hbWU9InZpY3Rp
bSIgdHlwZT0idGV4dCIgcGF0dGVybj0iKCg0XC5bMC0zXSl8KDJcLlswLTNdKSkiIHZhbHVlPSJT
b21ldGhpbmcgNC4wIi8+Cis8aW5wdXQgbmFtZT0idmljdGltIiB0eXBlPSJ0ZXh0IiBwYXR0ZXJu
PSJcdyIgdmFsdWU9IioiLz4KKzxpbnB1dCBuYW1lPSJ2aWN0aW0iIHR5cGU9ImVtYWlsIiBwYXR0
ZXJuPSJbMC05XSIgdmFsdWU9InNvbWV0aGluZyIvPgorPGhyPgorPG9sIGlkPSJjb25zb2xlIj48
L29sPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9WYWxpZGl0eVN0YXRlLXBhdHRlcm5NaXNtYXRjaC0wMDctZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXBhdHRlcm5NaXNtYXRjaC0wMDctZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxZGNlY2MKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtcGF0dGVy
bk1pc21hdGNoLTAwNy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyIEBACisKK1NVQ0NFU1MKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS1wYXR0ZXJuTWlz
bWF0Y2gtMDA3Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtcGF0
dGVybk1pc21hdGNoLTAwNy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LmQ4YzdlZjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlk
aXR5U3RhdGUtcGF0dGVybk1pc21hdGNoLTAwNy5odG1sCkBAIC0wLDAgKzEsMjQgQEAKKzxodG1s
PgorPGhlYWQ+Cis8dGl0bGU+YmFzaWMgcGF0dGVybk1pc21hdGNoIHRlc3QgNzwvdGl0bGU+Cis8
c2NyaXB0IGxhbmd1YWdlPSJKYXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAg
IGZ1bmN0aW9uIGxvZyhtZXNzYWdlKSB7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJjb25zb2xlIikuaW5uZXJIVE1MICs9ICI8bGk+IittZXNzYWdlKyI8L2xpPiI7CisgICAgfQor
CisgICAgZnVuY3Rpb24gdGVzdCgpIHsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
KworICAgICAgICB2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoInZpY3RpbSIpOworCisg
ICAgICAgIGxvZyghdlswXS52YWxpZGl0eS5wYXR0ZXJuTWlzbWF0Y2ggPyAiU1VDQ0VTUyIgOiAi
RkFJTFVSRSIpOworICAgIH0KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJ0ZXN0
KCkiPgorPGlucHV0IG5hbWU9InZpY3RpbSIgdHlwZT0idGV4dCIgcGF0dGVybj0iIiB2YWx1ZT0i
TG9yZW0gSXBzdW0iLz4KKzxocj4KKzxvbCBpZD0iY29uc29sZSI+PC9vbD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvcGF0dGVybi1hdHRyaWJ1
dGUtMDAxLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvcGF0dGVybi1hdHRy
aWJ1dGUtMDAxLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li5hZGUzYTlhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9wYXR0
ZXJuLWF0dHJpYnV0ZS0wMDEtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorVGhlcmUgYW4g
aW5wdXQgZWxlbWVudCB3aXRoIHRoZSBwYXR0ZXJuIGF0dHJpYnV0ZSBzZXQuCisKKworU1VDQ0VT
UwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9wYXR0ZXJuLWF0dHJpYnV0ZS0w
MDEuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvcGF0dGVybi1hdHRyaWJ1dGUtMDAxLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWYwNzgyOAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvcGF0dGVybi1hdHRyaWJ1dGUtMDAxLmh0
bWwKQEAgLTAsMCArMSwyNSBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5wYXR0ZXJuIGF0dHJp
YnV0ZSBwcmVzZW5jZSB0ZXN0PC90aXRsZT4KKzxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQi
IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpIHsKKyAg
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5pbm5lckhUTUwgKz0gIjxs
aT4iK21lc3NhZ2UrIjwvbGk+IjsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0KCkgeworICAg
ICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgICAgIHYgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5TmFtZSgidmljdGltIik7CisKKyAgICAgICAgbG9nKHZbMF0ucGF0dGVybiA/ICJT
VUNDRVNTIiA6ICJGQUlMVVJFIik7CisgICAgfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBv
bmxvYWQ9InRlc3QoKSI+Cis8cD5UaGVyZSBhbiBpbnB1dCBlbGVtZW50IHdpdGggdGhlIHBhdHRl
cm4gYXR0cmlidXRlIHNldC48L3A+Cis8aW5wdXQgbmFtZT0idmljdGltIiBwYXR0ZXJuPSJzb21l
dGhpbmciIC8+Cis8aHI+Cis8b2wgaWQ9ImNvbnNvbGUiPjwvb2w+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3BhdHRlcm4tYXR0cmlidXRlLTAw
Mi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3BhdHRlcm4tYXR0cmlidXRl
LTAwMi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2Ey
ZDk1ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvcGF0dGVybi1h
dHRyaWJ1dGUtMDAyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKK1RoZXJlIGFuIGlucHV0
IGVsZW1lbnQgd2l0aCB0aGUgcGF0dGVybiBhdHRyaWJ1dGUgbm90IHNldC4KKworCitTVUNDRVNT
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3BhdHRlcm4tYXR0cmlidXRlLTAw
Mi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9wYXR0ZXJuLWF0dHJpYnV0ZS0wMDIuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOWRiNDI4Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9wYXR0ZXJuLWF0dHJpYnV0ZS0wMDIuaHRt
bApAQCAtMCwwICsxLDI1IEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPnBhdHRlcm4gYXR0cmli
dXRlIHNldC9nZXQgdGVzdDwvdGl0bGU+Cis8c2NyaXB0IGxhbmd1YWdlPSJKYXZhU2NyaXB0IiB0
eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKSB7CisgICAg
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuaW5uZXJIVE1MICs9ICI8bGk+
IittZXNzYWdlKyI8L2xpPiI7CisgICAgfQorCisgICAgZnVuY3Rpb24gdGVzdCgpIHsKKyAgICAg
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgICAgICB2ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeU5hbWUoInZpY3RpbSIpOworICAgICAgICB2WzBdLnBhdHRlcm4gPSAic29tZXRoaW5n
IjsKKyAgICAgICAgbG9nKHZbMF0ucGF0dGVybiA9PSAic29tZXRoaW5nIiA/ICJTVUNDRVNTIiA6
ICJGQUlMVVJFIik7CisgICAgfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InRl
c3QoKSI+Cis8cD5UaGVyZSBhbiBpbnB1dCBlbGVtZW50IHdpdGggdGhlIHBhdHRlcm4gYXR0cmli
dXRlIG5vdCBzZXQuPC9wPgorPGlucHV0IG5hbWU9InZpY3RpbSIgLz4KKzxocj4KKzxvbCBpZD0i
Y29uc29sZSI+PC9vbD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvcGF0dGVybi1hdHRyaWJ1dGUtMDAzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2Zhc3QvZm9ybXMvcGF0dGVybi1hdHRyaWJ1dGUtMDAzLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZGUzYTlhCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9wYXR0ZXJuLWF0dHJpYnV0ZS0wMDMtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsNCBAQAorVGhlcmUgYW4gaW5wdXQgZWxlbWVudCB3aXRoIHRoZSBwYXR0ZXJu
IGF0dHJpYnV0ZSBzZXQuCisKKworU1VDQ0VTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy9wYXR0ZXJuLWF0dHJpYnV0ZS0wMDMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9y
bXMvcGF0dGVybi1hdHRyaWJ1dGUtMDAzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uM2VlYTZmNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9y
bXMvcGF0dGVybi1hdHRyaWJ1dGUtMDAzLmh0bWwKQEAgLTAsMCArMSwyNSBAQAorPGh0bWw+Cis8
aGVhZD4KKzx0aXRsZT5wYXR0ZXJuIGF0dHJpYnV0ZSBzZXQgdGVzdDwvdGl0bGU+Cis8c2NyaXB0
IGxhbmd1YWdlPSJKYXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgIGZ1bmN0
aW9uIGxvZyhtZXNzYWdlKSB7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25z
b2xlIikuaW5uZXJIVE1MICs9ICI8bGk+IittZXNzYWdlKyI8L2xpPiI7CisgICAgfQorCisgICAg
ZnVuY3Rpb24gdGVzdCgpIHsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAg
ICAgICB2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoInZpY3RpbSIpOworICAgICAgICB2
WzBdLnBhdHRlcm4gKz0gIiBlbHNlIjsKKyAgICAgICAgbG9nKHZbMF0ucGF0dGVybiA9PSAic29t
ZXRoaW5nIGVsc2UiID8gIlNVQ0NFU1MiIDogIkZBSUxVUkUiKTsKKyAgICB9Cis8L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5IG9ubG9hZD0idGVzdCgpIj4KKzxwPlRoZXJlIGFuIGlucHV0IGVsZW1l
bnQgd2l0aCB0aGUgcGF0dGVybiBhdHRyaWJ1dGUgc2V0LjwvcD4KKzxpbnB1dCBuYW1lPSJ2aWN0
aW0iIHBhdHRlcm49InNvbWV0aGluZyIgLz4KKzxocj4KKzxvbCBpZD0iY29uc29sZSI+PC9vbD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggNzkyZjEzOS4uMmUyNDFmMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAwOS0w
Ny0yMCAgTWljaGVsYW5nZWxvIERlIFNpbW9uZSAgPG1pY2Rlc2ltQGdtYWlsLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU1NTIKKyAgICAgICAgQWRkZWQgbmV3ICJwYXR0
ZXJuIiBhdHRyaWJ1dGUgdG8gSFRNTElucHV0RWxlbWVudCBhbmQgdmFsaWRhdGlvbiBjb2RlCisg
ICAgICAgICh2YWxpZGl0eS5wYXR0ZXJuTWlzbWF0Y2gpIGFzIHBlciBIVE1MNSBzcGVjcy4KKyAg
ICAgICAgaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9t
dWx0aXBhZ2UvZm9ybXMuaHRtbCNhdHRyLWlucHV0LXBhdHRlcm4KKworICAgICAgICBUZXN0czog
ZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLTAwMi5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Zv
cm1zL1ZhbGlkaXR5U3RhdGUtcGF0dGVybk1pc21hdGNoLTAwMS5odG1sCisgICAgICAgICAgICAg
ICBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtcGF0dGVybk1pc21hdGNoLTAwMi5odG1sCisgICAg
ICAgICAgICAgICBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtcGF0dGVybk1pc21hdGNoLTAwMy5o
dG1sCisgICAgICAgICAgICAgICBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtcGF0dGVybk1pc21h
dGNoLTAwNC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtcGF0
dGVybk1pc21hdGNoLTAwNS5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Zvcm1zL1ZhbGlkaXR5
U3RhdGUtcGF0dGVybk1pc21hdGNoLTAwNi5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Zvcm1z
L1ZhbGlkaXR5U3RhdGUtcGF0dGVybk1pc21hdGNoLTAwNy5odG1sCisgICAgICAgICAgICAgICBm
YXN0L2Zvcm1zL3BhdHRlcm4tYXR0cmlidXRlLTAwMS5odG1sCisgICAgICAgICAgICAgICBmYXN0
L2Zvcm1zL3BhdHRlcm4tYXR0cmlidXRlLTAwMi5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Zv
cm1zL3BhdHRlcm4tYXR0cmlidXRlLTAwMy5odG1sCisKKyAgICAgICAgKiBodG1sL0hUTUxBdHRy
aWJ1dGVOYW1lcy5pbjogcGF0dGVybiBhdHRyaWJ1dGUKKyAgICAgICAgKiBodG1sL0hUTUxGb3Jt
Q29udHJvbEVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1l
bnQ6OnBhdHRlcm5NaXNtYXRjaCk6IG1ldGhvZCBkZWZpbml0aW9uCisgICAgICAgICogaHRtbC9I
VE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6
OnBhdHRlcm5NaXNtYXRjaCk6IHZhbGlkYXRpb24gbWV0aG9kCisgICAgICAgIChXZWJDb3JlOjpI
VE1MSW5wdXRFbGVtZW50OjpwYXR0ZXJuKTogcGF0dGVybkF0dHIgZ2V0dGVyCisgICAgICAgIChX
ZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpzZXRQYXR0ZXJuKTogcGF0dGVybkF0dHIgc2V0dGVy
CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1M
SW5wdXRFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL1ZhbGlkaXR5U3RhdGUuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlZhbGlkaXR5U3RhdGU6OnBhdHRlcm5NaXNtYXRjaCk6IHZhbGlkYXRpb24g
ZmxhZworCiAyMDA5LTA3LTIwICBCYWxhenMgS2VsZW1lbiAgPGtlbGVtZW4uYmFsYXpzLjNAc3R1
ZC51LXN6ZWdlZC5odT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4gYi9XZWJDb3JlL2h0
bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCmluZGV4IDZkNGQzY2IuLjE1ZGIzZTkgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4KKysrIGIvV2ViQ29yZS9odG1s
L0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgpAQCAtMTg1LDYgKzE4NSw3IEBAIG9ud2Via2l0YW5pbWF0
aW9uc3RhcnQKIG9ud2Via2l0YW5pbWF0aW9uaXRlcmF0aW9uCiBvbndlYmtpdGFuaW1hdGlvbmVu
ZAogb253ZWJraXR0cmFuc2l0aW9uZW5kCitwYXR0ZXJuCiBwbGFjZWhvbGRlcgogcGx1Z2ludXJs
CiBwb3N0ZXIKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50
LmggYi9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oCmluZGV4IGZiMGRhMjku
LmQzZGQ2MGYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50
LmgKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaApAQCAtMTA1LDYg
KzEwNSw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCB3aWxsVmFsaWRhdGUoKSBjb25z
dDsKIAorICAgIHZpcnR1YWwgYm9vbCBwYXR0ZXJuTWlzbWF0Y2goKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQorCiAgICAgdm9pZCBmb3JtRGVzdHJveWVkKCkgeyBtX2Zvcm0gPSAwOyB9CiAKICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hGb2N1c0V2ZW50KCk7CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVu
dC5jcHAKaW5kZXggZjRjNDY2Yy4uODE3ZDBiNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hU
TUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNw
cApAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgIk1hcHBlZEF0dHJpYnV0ZS5oIgogI2luY2x1
ZGUgIk1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUmVndWxhckV4
cHJlc3Npb24uaCIKICNpbmNsdWRlICJSZW5kZXJCdXR0b24uaCIKICNpbmNsdWRlICJSZW5kZXJG
aWxlVXBsb2FkQ29udHJvbC5oIgogI2luY2x1ZGUgIlJlbmRlckltYWdlLmgiCkBAIC0xNDcsNiAr
MTQ4LDM4IEBAIGJvb2wgSFRNTElucHV0RWxlbWVudDo6dmFsdWVNaXNzaW5nKCkgY29uc3QKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKK2Jvb2wgSFRNTElucHV0RWxlbWVudDo6cGF0dGVybk1pc21h
dGNoKCkgY29uc3QKK3sKKyAgICBpZiAocGF0dGVybigpLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgc3dpdGNoIChpbnB1dFR5cGUoKSkgeworICAgICAgICBjYXNlIElT
SU5ERVg6CisgICAgICAgIGNhc2UgQ0hFQ0tCT1g6CisgICAgICAgIGNhc2UgUkFESU86CisgICAg
ICAgIGNhc2UgU1VCTUlUOgorICAgICAgICBjYXNlIFJFU0VUOgorICAgICAgICBjYXNlIEZJTEU6
CisgICAgICAgIGNhc2UgSElEREVOOgorICAgICAgICBjYXNlIElNQUdFOgorICAgICAgICBjYXNl
IEJVVFRPTjoKKyAgICAgICAgY2FzZSBSQU5HRToKKyAgICAgICAgY2FzZSBOVU1CRVI6CisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGNhc2UgVEVYVDoKKyAgICAgICAgY2FzZSBT
RUFSQ0g6CisgICAgICAgIGNhc2UgVVJMOgorICAgICAgICBjYXNlIFRFTEVQSE9ORToKKyAgICAg
ICAgY2FzZSBFTUFJTDoKKyAgICAgICAgY2FzZSBQQVNTV09SRDoKKyAgICAgICAgICAgIFJlZ3Vs
YXJFeHByZXNzaW9uIHBhdHRlcm5SZWdFeHAocGF0dGVybigpLCBUZXh0Q2FzZVNlbnNpdGl2ZSk7
CisgICAgICAgICAgICByZXR1cm4gcGF0dGVyblJlZ0V4cC5tYXRjaCh2YWx1ZSgpKSAhPSAwOwor
ICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30K
Kwogc3RhdGljIGlubGluZSBDaGVja2VkUmFkaW9CdXR0b25zJiBjaGVja2VkUmFkaW9CdXR0b25z
KGNvbnN0IEhUTUxJbnB1dEVsZW1lbnQgKmVsZW1lbnQpCiB7CiAgICAgaWYgKEhUTUxGb3JtRWxl
bWVudCogZm9ybSA9IGVsZW1lbnQtPmZvcm0oKSkKQEAgLTk4OSw2ICsxMDIyLDIwIEBAIFN0cmlu
ZyBIVE1MSW5wdXRFbGVtZW50Ojp2YWx1ZSgpIGNvbnN0CiAgICAgcmV0dXJuIHZhbHVlOwogfQog
CitTdHJpbmcgSFRNTElucHV0RWxlbWVudDo6cGF0dGVybigpIGNvbnN0Cit7CisgICAgcmV0dXJu
IGdldEF0dHJpYnV0ZShwYXR0ZXJuQXR0cik7Cit9CisKK3ZvaWQgSFRNTElucHV0RWxlbWVudDo6
c2V0UGF0dGVybihjb25zdCBTdHJpbmcmIHApCit7CisgICAgaWYgKHAuaXNFbXB0eSgpKSB7Cisg
ICAgICAgIGludCBleGNjb2RlOworICAgICAgICByZW1vdmVBdHRyaWJ1dGUocGF0dGVybkF0dHIs
IGV4Y2NvZGUpOworICAgIH0gZWxzZQorICAgICAgICBzZXRBdHRyaWJ1dGUocGF0dGVybkF0dHIs
IHApOworfQorCiBTdHJpbmcgSFRNTElucHV0RWxlbWVudDo6dmFsdWVXaXRoRGVmYXVsdCgpIGNv
bnN0CiB7CiAgICAgU3RyaW5nIHYgPSB2YWx1ZSgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1s
L0hUTUxJbnB1dEVsZW1lbnQuaCBiL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKaW5k
ZXggNmFlZDgyMy4uMmIwZmJkZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVs
ZW1lbnQuaAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCkBAIC05MSw2ICs5
MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNUZXh0Rm9ybUNvbnRyb2woKSBjb25z
dCB7IHJldHVybiBpc1RleHRGaWVsZCgpOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgdmFsdWVNaXNz
aW5nKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIHBhdHRlcm5NaXNtYXRjaCgpIGNvbnN0Owog
CiAgICAgYm9vbCBpc1RleHRCdXR0b24oKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gU1VCTUlU
IHx8IG1fdHlwZSA9PSBSRVNFVCB8fCBtX3R5cGUgPT0gQlVUVE9OOyB9CiAgICAgdmlydHVhbCBi
b29sIGlzUmFkaW9CdXR0b24oKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gUkFESU87IH0KQEAg
LTExMCw2ICsxMTEsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgdmFsdWUoKSBjb25z
dDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWUoY29uc3QgU3RyaW5nJik7CiAKKyAgICBTdHJp
bmcgcGF0dGVybigpIGNvbnN0OworICAgIHZvaWQgc2V0UGF0dGVybihjb25zdCBTdHJpbmcmKTsK
KwogICAgIHZpcnR1YWwgU3RyaW5nIHBsYWNlaG9sZGVyKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2
b2lkIHNldFBsYWNlaG9sZGVyKGNvbnN0IFN0cmluZyYpOwogCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2h0bWwvSFRNTElucHV0RWxlbWVudC5pZGwgYi9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVu
dC5pZGwKaW5kZXggM2E0MTBkZi4uY2YwOTdkYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hU
TUxJbnB1dEVsZW1lbnQuaWRsCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50Lmlk
bApAQCAtNDEsNiArNDEsNyBAQCBtb2R1bGUgaHRtbCB7CiAgICAgICAgICAgICAgICAgIGF0dHJp
YnV0ZSBsb25nICAgICAgICAgICAgbWF4TGVuZ3RoOwogICAgICAgICAgICAgICAgICBhdHRyaWJ1
dGUgYm9vbGVhbiAgICAgICAgIG11bHRpcGxlOwogICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUg
W0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgbmFtZTsKKyAgICAgICAgICAgICAg
ICAgYXR0cmlidXRlIERPTVN0cmluZyAgICAgICBwYXR0ZXJuOwogICAgICAgICAgICAgICAgICBh
dHRyaWJ1dGUgRE9NU3RyaW5nICAgICAgIHBsYWNlaG9sZGVyOwogICAgICAgICAgICAgICAgICBh
dHRyaWJ1dGUgYm9vbGVhbiAgICAgICAgIHJlYWRPbmx5OwogICAgICAgICAgICAgICAgICBhdHRy
aWJ1dGUgYm9vbGVhbiAgICAgICAgIHJlcXVpcmVkOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1s
L1ZhbGlkaXR5U3RhdGUuaCBiL1dlYkNvcmUvaHRtbC9WYWxpZGl0eVN0YXRlLmgKaW5kZXggNjBj
MGRjNi4uNGIyZjAyMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL1ZhbGlkaXR5U3RhdGUuaAor
KysgYi9XZWJDb3JlL2h0bWwvVmFsaWRpdHlTdGF0ZS5oCkBAIC00MCw3ICs0MCw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBib29sIHZhbHVlTWlzc2luZygpIHsgcmV0dXJuIGNv
bnRyb2woKS0+dmFsdWVNaXNzaW5nKCk7IH0KICAgICAgICAgYm9vbCB0eXBlTWlzbWF0Y2goKSB7
IHJldHVybiBmYWxzZTsgfQotICAgICAgICBib29sIHBhdHRlcm5NaXNtYXRjaCgpIHsgcmV0dXJu
IGZhbHNlOyB9CisgICAgICAgIGJvb2wgcGF0dGVybk1pc21hdGNoKCkgeyByZXR1cm4gY29udHJv
bCgpLT5wYXR0ZXJuTWlzbWF0Y2goKTsgfQogICAgICAgICBib29sIHRvb0xvbmcoKSB7IHJldHVy
biBmYWxzZTsgfQogICAgICAgICBib29sIHJhbmdlVW5kZXJmbG93KCkgeyByZXR1cm4gZmFsc2U7
IH0KICAgICAgICAgYm9vbCByYW5nZU92ZXJmbG93KCkgeyByZXR1cm4gZmFsc2U7IH0K
</data>
<flag name="review"
          id="17447"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33389</attachid>
            <date>2009-07-23 16:11:06 -0700</date>
            <delta_ts>2009-07-23 16:49:49 -0700</delta_ts>
            <desc>Proposed patch, rev. 2</desc>
            <filename>25552-2.patch</filename>
            <type>text/plain</type>
            <size>25901</size>
            <attacher name="Michelangelo De Simone">michelangelo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBkMjRiY2ZkLi5kNTNkMDRhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMDktMDct
MjQgIE1pY2hlbGFuZ2VsbyBEZSBTaW1vbmUgIDxtaWNkZXNpbUBnbWFpbC5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1NTUyCisgICAgICAgIE5ldyB0ZXN0cyBmb3IgdGhl
ICJwYXR0ZXJuIiBhdHRyaWJ1dGUgYW5kIHJlbGF0ZWQgdmFsaWRhdGlvbiBjb2RlLgorCisgICAg
ICAgICogZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLTAwMi1leHBlY3RlZC50eHQ6IENvcGllZCBm
cm9tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvd2lsbHZhbGlkYXRlLTAwMS1leHBlY3RlZC50eHQu
CisgICAgICAgICogZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLTAwMi5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtcGF0dGVybk1pc21hdGNoLTAwMS1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS1wYXR0
ZXJuTWlzbWF0Y2gtMDAxLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvVmFsaWRp
dHlTdGF0ZS1wYXR0ZXJuTWlzbWF0Y2gtMDAyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXBhdHRlcm5NaXNtYXRjaC0wMDIuaHRtbDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXBhdHRlcm5NaXNtYXRjaC0w
MDMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3Rh
dGUtcGF0dGVybk1pc21hdGNoLTAwMy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1z
L1ZhbGlkaXR5U3RhdGUtcGF0dGVybk1pc21hdGNoLTAwNC1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS1wYXR0ZXJuTWlzbWF0Y2gtMDA0Lmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS1wYXR0ZXJuTWlz
bWF0Y2gtMDA1LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9WYWxp
ZGl0eVN0YXRlLXBhdHRlcm5NaXNtYXRjaC0wMDUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXBhdHRlcm5NaXNtYXRjaC0wMDYtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtcGF0dGVybk1pc21hdGNo
LTAwNi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtcGF0
dGVybk1pc21hdGNoLTAwNy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9y
bXMvVmFsaWRpdHlTdGF0ZS1wYXR0ZXJuTWlzbWF0Y2gtMDA3Lmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvZm9ybXMvcGF0dGVybi1hdHRyaWJ1dGUtMDAxLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZmFzdC9mb3Jtcy9wYXR0ZXJuLWF0dHJpYnV0ZS0wMDEuaHRtbDogQWRkZWQu
CisgICAgICAgICogZmFzdC9mb3Jtcy9wYXR0ZXJuLWF0dHJpYnV0ZS0wMDItZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL3BhdHRlcm4tYXR0cmlidXRlLTAwMi5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL3BhdHRlcm4tYXR0cmlidXRlLTAwMy1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvcGF0dGVybi1hdHRyaWJ1dGUt
MDAzLmh0bWw6IEFkZGVkLgorCiAyMDA5LTA3LTE5ICBTaW1vbiBIYXVzbWFubiAgPGhhdXNtYW5u
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUnViYmVyLXN0YW1wZWQgYnkgWGFuIExvcGV6LgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLTAwMi1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtMDAyLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMWRjZWNjCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLTAwMi1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwyIEBACisKK1NVQ0NFU1MKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS0wMDIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvVmFsaWRpdHlTdGF0ZS0wMDIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi5kYjNhZTE2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9WYWxpZGl0eVN0YXRlLTAwMi5odG1sCkBAIC0wLDAgKzEsMjQgQEAKKzxodG1sPgorPGhlYWQ+
Cis8dGl0bGU+cGF0dGVybk1pc21hdGNoIGFuZCB2YWx1ZU1pc3Npbmc8L3RpdGxlPgorPHNjcmlw
dCBsYW5ndWFnZT0iSmF2YVNjcmlwdCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICBmdW5j
dGlvbiBsb2cobWVzc2FnZSkgeworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29u
c29sZSIpLmlubmVySFRNTCArPSAiPGxpPiIrbWVzc2FnZSsiPC9saT4iOworICAgIH0KKworICAg
IGZ1bmN0aW9uIHRlc3QoKSB7CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAg
ICAgICAgdiA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKCJ2aWN0aW0iKTsKKworICAgICAg
ICBsb2coIXZbMF0udmFsaWRpdHkucGF0dGVybk1pc21hdGNoICYmIHZbMF0udmFsaWRpdHkudmFs
dWVNaXNzaW5nID8gIlNVQ0NFU1MiIDogIkZBSUxVUkUiKTsKKyAgICB9Cis8L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5IG9ubG9hZD0idGVzdCgpIj4KKzxpbnB1dCBuYW1lPSJ2aWN0aW0iIHR5cGU9
InRleHQiIHBhdHRlcm49IlswLTldW0EtWl17M30iIHJlcXVpcmVkLz4KKzxocj4KKzxvbCBpZD0i
Y29uc29sZSI+PC9vbD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS1wYXR0ZXJuTWlzbWF0Y2gtMDAxLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS1wYXR0ZXJuTWlzbWF0Y2gt
MDAxLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MjNl
NGZjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0
YXRlLXBhdHRlcm5NaXNtYXRjaC0wMDEtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorVGhl
cmUgaXMgYW4gaW5wdXQgdHlwZSB0ZXh0IHdpdGggcGF0dGVybiBhdHRyaWJ1dGUgc2V0IHRvIFsw
LTldW0EtWl17M30sIGNoZWNraW5nIGl0cyB2YWxpZGl0eS5wYXR0ZXJuTWlzbWF0Y2ggZmxhZy4K
KworCitTVUNDRVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5
U3RhdGUtcGF0dGVybk1pc21hdGNoLTAwMS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9W
YWxpZGl0eVN0YXRlLXBhdHRlcm5NaXNtYXRjaC0wMDEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi4zN2M0YTlkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXBhdHRlcm5NaXNtYXRjaC0wMDEuaHRtbApAQCAtMCww
ICsxLDI0IEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPmJhc2ljIHBhdHRlcm5NaXNtYXRjaCB0
ZXN0PC90aXRsZT4KKzxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQiIHR5cGU9InRleHQvamF2
YXNjcmlwdCI+CisgICAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpIHsKKyAgICAgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5pbm5lckhUTUwgKz0gIjxsaT4iK21lc3NhZ2UrIjwv
bGk+IjsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0KCkgeworICAgICAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOworCisgICAgICAgIHYgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgi
dmljdGltIik7CisgICAgICAgIGxvZyghdlswXS52YWxpZGl0eS5wYXR0ZXJuTWlzbWF0Y2ggPyAi
U1VDQ0VTUyIgOiAiRkFJTFVSRSIpOworICAgIH0KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkg
b25sb2FkPSJ0ZXN0KCkiPgorPHA+VGhlcmUgaXMgYW4gaW5wdXQgdHlwZSB0ZXh0IHdpdGggcGF0
dGVybiBhdHRyaWJ1dGUgc2V0IHRvIFswLTldW0EtWl17M30sIGNoZWNraW5nIGl0cyB2YWxpZGl0
eS5wYXR0ZXJuTWlzbWF0Y2ggZmxhZy48L3A+Cis8aW5wdXQgbmFtZT0idmljdGltIiBwYXR0ZXJu
PSJbMC05XVtBLVpdezN9IiB2YWx1ZT0iMEFBQSIvPgorPGhyPgorPG9sIGlkPSJjb25zb2xlIj48
L29sPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9WYWxpZGl0eVN0YXRlLXBhdHRlcm5NaXNtYXRjaC0wMDItZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXBhdHRlcm5NaXNtYXRjaC0wMDItZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxNjI0ODQKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtcGF0dGVy
bk1pc21hdGNoLTAwMi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACitUaGVyZSBpcyBhbiBp
bnB1dCB0eXBlIHRleHQgd2l0aCBubyBwYXR0ZXJuIGF0dHJpYnV0ZS4KKworCitTVUNDRVNTCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtcGF0dGVybk1p
c21hdGNoLTAwMi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXBh
dHRlcm5NaXNtYXRjaC0wMDIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li5hNjA3MWMyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxp
ZGl0eVN0YXRlLXBhdHRlcm5NaXNtYXRjaC0wMDIuaHRtbApAQCAtMCwwICsxLDI0IEBACis8aHRt
bD4KKzxoZWFkPgorPHRpdGxlPmJhc2ljIHBhdHRlcm5NaXNtYXRjaCB0ZXN0IDI8L3RpdGxlPgor
PHNjcmlwdCBsYW5ndWFnZT0iSmF2YVNjcmlwdCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAg
ICBmdW5jdGlvbiBsb2cobWVzc2FnZSkgeworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgiY29uc29sZSIpLmlubmVySFRNTCArPSAiPGxpPiIrbWVzc2FnZSsiPC9saT4iOworICAgIH0K
KworICAgIGZ1bmN0aW9uIHRlc3QoKSB7CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CisKKyAgICAgICAgdiA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKCJ2aWN0aW0iKTsKKyAg
ICAgICAgbG9nKCF2WzBdLnZhbGlkaXR5LnBhdHRlcm5NaXNtYXRjaCA/ICJTVUNDRVNTIiA6ICJG
QUlMVVJFIik7CisgICAgfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InRlc3Qo
KSI+Cis8cD5UaGVyZSBpcyBhbiBpbnB1dCB0eXBlIHRleHQgd2l0aCBubyBwYXR0ZXJuIGF0dHJp
YnV0ZS48L3A+Cis8aW5wdXQgbmFtZT0idmljdGltIiAvPgorPGhyPgorPG9sIGlkPSJjb25zb2xl
Ij48L29sPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9m
b3Jtcy9WYWxpZGl0eVN0YXRlLXBhdHRlcm5NaXNtYXRjaC0wMDMtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXBhdHRlcm5NaXNtYXRjaC0wMDMtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhMTE0OTUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtcGF0
dGVybk1pc21hdGNoLTAwMy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMCBAQAorSVAgQWRkcmVz
czogIEVtYWlsIGFkZHJlc3M6ICAgICAgICAgICAgICAgICAgCitTVUNDRVNTCitTVUNDRVNTCitT
VUNDRVNTCitTVUNDRVNTCitTVUNDRVNTCitTVUNDRVNTCitTVUNDRVNTCitTVUNDRVNTCitTVUND
RVNTCitTVUNDRVNTCitTVUNDRVNTCitTVUNDRVNTCitTVUNDRVNTCitTVUNDRVNTCitTVUNDRVNT
CitTVUNDRVNTCitTVUNDRVNTCitTVUNDRVNTCitTVUNDRVNTCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtcGF0dGVybk1pc21hdGNoLTAwMy5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXBhdHRlcm5NaXNtYXRjaC0wMDMu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNTgxMjhmCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXBhdHRlcm5N
aXNtYXRjaC0wMDMuaHRtbApAQCAtMCwwICsxLDQ0IEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxl
PmJhc2ljIHBhdHRlcm5NaXNtYXRjaCB0ZXN0IDM8L3RpdGxlPgorPHNjcmlwdCBsYW5ndWFnZT0i
SmF2YVNjcmlwdCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICBmdW5jdGlvbiBsb2cobWVz
c2FnZSkgeworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmlubmVy
SFRNTCArPSAiPGxpPiIrbWVzc2FnZSsiPC9saT4iOworICAgIH0KKworICAgIGZ1bmN0aW9uIHRl
c3QoKSB7CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICAgICAgdiA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKCJ2aWN0aW0iKTsKKyAgICAgICAgZm9yIChpID0gMDsg
aSA8IHYubGVuZ3RoOyBpKyspCisgICAgICAgICAgICBsb2coIXZbaV0udmFsaWRpdHkucGF0dGVy
bk1pc21hdGNoID8gIlNVQ0NFU1MiIDogIkZBSUxVUkUiKTsKKyAgICB9Cis8L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5IG9ubG9hZD0idGVzdCgpIj4KK0lQIEFkZHJlc3M6Cis8aW5wdXQgbmFtZT0i
dmljdGltIiB0eXBlPSJ0ZXh0IiBwYXR0ZXJuPSJcYigyNVswLTVdfDJbMC00XVswLTldfFswMV0/
WzAtOV1bMC05XT8pXC4oMjVbMC01XXwyWzAtNF1bMC05XXxbMDFdP1swLTldWzAtOV0/KVwuKDI1
WzAtNV18MlswLTRdWzAtOV18WzAxXT9bMC05XVswLTldPylcLigyNVswLTVdfDJbMC00XVswLTld
fFswMV0/WzAtOV1bMC05XT8pXGIiIHZhbHVlPSIxMjcuMC4wLjEiIC8+CitFbWFpbCBhZGRyZXNz
OgorPGlucHV0IG5hbWU9InZpY3RpbSIgdHlwZT0idGV4dCIgcGF0dGVybj0iW2EtejAtOSEjJCUm
JyorLz0/Xl9ge3x9fi1dKyg/OlwuW2EtejAtOSEjJCUmJyorLz0/Xl9ge3x9fi1dKykqQCg/Olth
LXowLTldKD86W2EtejAtOS1dKlthLXowLTldKT9cLikrW2EtejAtOV0oPzpbYS16MC05LV0qW2Et
ejAtOV0pPyIgdmFsdWU9InNvbWVvbmVAc29tZXdoZXJlLmNvbSIgLz4KKzxpbnB1dCBuYW1lPSJ2
aWN0aW0iIHR5cGU9InRleHQiIHBhdHRlcm49IlxiKHdvcmQxfHdvcmQyfHdvcmQzKSg/OlxXK1x3
Kyl7MSw2fT9cVysod29yZDF8d29yZDJ8d29yZDMpXGIiIHZhbHVlPSJ3b3JkMSBuZWFyIHdvcmQy
IiAvPgorPGlucHV0IG5hbWU9InZpY3RpbSIgdHlwZT0idGV4dCIgcGF0dGVybj0iLns1LH0iIHZh
bHVlPSIxMjM0NSIgLz4KKzxpbnB1dCBuYW1lPSJ2aWN0aW0iIHR5cGU9InRleHQiIHBhdHRlcm49
Ii57NSx9IiB2YWx1ZT0iKihAJCEiIC8+Cis8aW5wdXQgbmFtZT0idmljdGltIiB0eXBlPSJ0ZXh0
IiBwYXR0ZXJuPSIuezUsfSIgdmFsdWU9IiooQF4kISIgLz4KKzxpbnB1dCBuYW1lPSJ2aWN0aW0i
IHR5cGU9InRleHQiIHBhdHRlcm49IjB8MXwyfDN8NHw1fDZ8N3w4fCIgdmFsdWU9IjMiIC8+Cis8
aW5wdXQgbmFtZT0idmljdGltIiB0eXBlPSJ0ZXh0IiBwYXR0ZXJuPSJeKGZvbykuKiIgdmFsdWU9
ImZvbyIvPgorPGlucHV0IG5hbWU9InZpY3RpbSIgdHlwZT0idGV4dCIgcGF0dGVybj0iXihmb28p
LioiIHZhbHVlPSJmb29vIi8+Cis8aW5wdXQgbmFtZT0idmljdGltIiB0eXBlPSJ0ZXh0IiBwYXR0
ZXJuPSJcdyIgdmFsdWU9ImYiLz4KKzxpbnB1dCBuYW1lPSJ2aWN0aW0iIHR5cGU9InRleHQiIHBh
dHRlcm49IlwuIiB2YWx1ZT0iLiIvPgorPGlucHV0IG5hbWU9InZpY3RpbSIgdHlwZT0idGV4dCIg
cGF0dGVybj0iXClcKCIgdmFsdWU9IikoIi8+Cis8aW5wdXQgbmFtZT0idmljdGltIiB0eXBlPSJ0
ZXh0IiBwYXR0ZXJuPSJhYiIgdmFsdWU9ImFiIi8+Cis8aW5wdXQgbmFtZT0idmljdGltIiB0eXBl
PSJ0ZXh0IiBwYXR0ZXJuPSJeYWIiIHZhbHVlPSJhYiIvPgorPGlucHV0IG5hbWU9InZpY3RpbSIg
dHlwZT0idGV4dCIgcGF0dGVybj0iXlwoIiB2YWx1ZT0iKCIvPgorPGlucHV0IG5hbWU9InZpY3Rp
bSIgdHlwZT0idGV4dCIgcGF0dGVybj0iLi4uXClcKC4uLiIgdmFsdWU9ImFhYSkoYmJiIi8+Cis8
aW5wdXQgbmFtZT0idmljdGltIiB0eXBlPSJ0ZXh0IiBwYXR0ZXJuPSJeIiB2YWx1ZT0iIi8+Cis8
aW5wdXQgbmFtZT0idmljdGltIiB0eXBlPSJ0ZXh0IiBwYXR0ZXJuPSIkIiB2YWx1ZT0iIi8+Cis8
aW5wdXQgbmFtZT0idmljdGltIiB0eXBlPSJ0ZXh0IiBwYXR0ZXJuPSJmb29iYXIiIHZhbHVlPSIi
Lz4KKzxocj4KKzxvbCBpZD0iY29uc29sZSI+PC9vbD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS1wYXR0ZXJuTWlzbWF0
Y2gtMDA0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0
ZS1wYXR0ZXJuTWlzbWF0Y2gtMDA0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi5kZmEwYTM2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXBhdHRlcm5NaXNtYXRjaC0wMDQtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMyBAQAorCitTVUNDRVNTCitTVUNDRVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtcGF0dGVybk1pc21hdGNoLTAwNC5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXBhdHRlcm5NaXNtYXRjaC0wMDQuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNGZjZjFiCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXBhdHRlcm5NaXNt
YXRjaC0wMDQuaHRtbApAQCAtMCwwICsxLDI2IEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPmJh
c2ljIHBhdHRlcm5NaXNtYXRjaCB0ZXN0IDQ8L3RpdGxlPgorPHNjcmlwdCBsYW5ndWFnZT0iSmF2
YVNjcmlwdCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICBmdW5jdGlvbiBsb2cobWVzc2Fn
ZSkgeworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmlubmVySFRN
TCArPSAiPGxpPiIrbWVzc2FnZSsiPC9saT4iOworICAgIH0KKworICAgIGZ1bmN0aW9uIHRlc3Qo
KSB7CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICAgICAgdiA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlOYW1lKCJ2aWN0aW0iKTsKKworICAgICAgICBsb2codlswXS52YWxp
ZGl0eS5wYXR0ZXJuTWlzbWF0Y2ggPyAiU1VDQ0VTUyIgOiAiRkFJTFVSRSIpOworICAgICAgICB2
WzBdLnZhbHVlID0gInNvbWVvbmVAc29tZXdoZXJlLmNvbSI7CisgICAgICAgIGxvZyghdlswXS52
YWxpZGl0eS5wYXR0ZXJuTWlzbWF0Y2ggPyAiU1VDQ0VTUyIgOiAiRkFJTFVSRSIpOworICAgIH0K
Kzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgorPGlucHV0IG5hbWU9
InZpY3RpbSIgdHlwZT0idGV4dCIgcGF0dGVybj0iW2EtejAtOSEjJCUmJyorLz0/Xl9ge3x9fi1d
Kyg/OlwuW2EtejAtOSEjJCUmJyorLz0/Xl9ge3x9fi1dKykqQCg/OlthLXowLTldKD86W2EtejAt
OS1dKlthLXowLTldKT9cLikrW2EtejAtOV0oPzpbYS16MC05LV0qW2EtejAtOV0pPyIgdmFsdWU9
Ildyb25nISIvPgorPGhyPgorPG9sIGlkPSJjb25zb2xlIj48L29sPgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXBhdHRl
cm5NaXNtYXRjaC0wMDUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxp
ZGl0eVN0YXRlLXBhdHRlcm5NaXNtYXRjaC0wMDUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZkNzY2MzAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtcGF0dGVybk1pc21hdGNoLTAwNS1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSw1IEBACisKK1NVQ0NFU1MKK1NVQ0NFU1MKK1NVQ0NFU1MKK1NVQ0NF
U1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS1wYXR0
ZXJuTWlzbWF0Y2gtMDA1Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3Rh
dGUtcGF0dGVybk1pc21hdGNoLTAwNS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmUyZGEwYjkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L1ZhbGlkaXR5U3RhdGUtcGF0dGVybk1pc21hdGNoLTAwNS5odG1sCkBAIC0wLDAgKzEsMzAgQEAK
KzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+YmFzaWMgcGF0dGVybk1pc21hdGNoIHRlc3QgNTwvdGl0
bGU+Cis8c2NyaXB0IGxhbmd1YWdlPSJKYXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
PgorICAgIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKSB7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJjb25zb2xlIikuaW5uZXJIVE1MICs9ICI8bGk+IittZXNzYWdlKyI8L2xpPiI7Cisg
ICAgfQorCisgICAgZnVuY3Rpb24gdGVzdCgpIHsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKKworICAgICAgICB2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoInZpY3RpbSIp
OworCisgICAgICAgIGxvZyh2WzBdLnZhbGlkaXR5LnBhdHRlcm5NaXNtYXRjaCA/ICJTVUNDRVNT
IiA6ICJGQUlMVVJFIik7CisgICAgICAgIHZbMF0udmFsdWUgPSAiZ3JheSI7CisgICAgICAgIGxv
ZyghdlswXS52YWxpZGl0eS5wYXR0ZXJuTWlzbWF0Y2ggPyAiU1VDQ0VTUyIgOiAiRkFJTFVSRSIp
OworICAgICAgICB2WzBdLnZhbHVlID0gImdyZXkiOworICAgICAgICBsb2coIXZbMF0udmFsaWRp
dHkucGF0dGVybk1pc21hdGNoID8gIlNVQ0NFU1MiIDogIkZBSUxVUkUiKTsKKyAgICAgICAgdlsw
XS52YWx1ZSA9ICIiOworICAgICAgICBsb2coIXZbMF0udmFsaWRpdHkucGF0dGVybk1pc21hdGNo
ID8gIlNVQ0NFU1MiIDogIkZBSUxVUkUiKTsKKyAgICB9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5IG9ubG9hZD0idGVzdCgpIj4KKzxpbnB1dCBuYW1lPSJ2aWN0aW0iIHR5cGU9InRleHQiIHBh
dHRlcm49ImdyW2FlXXkiIHZhbHVlPSJXcm9uZyEiLz4KKzxocj4KKzxvbCBpZD0iY29uc29sZSI+
PC9vbD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9y
bXMvVmFsaWRpdHlTdGF0ZS1wYXR0ZXJuTWlzbWF0Y2gtMDA2LWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS1wYXR0ZXJuTWlzbWF0Y2gtMDA2LWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MzkwY2RjCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXBhdHRl
cm5NaXNtYXRjaC0wMDYtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjEgQEAKKyAgICAgICAgICAg
ICAgICAgICAKK1NVQ0NFU1MKK1NVQ0NFU1MKK1NVQ0NFU1MKK1NVQ0NFU1MKK1NVQ0NFU1MKK1NV
Q0NFU1MKK1NVQ0NFU1MKK1NVQ0NFU1MKK1NVQ0NFU1MKK1NVQ0NFU1MKK1NVQ0NFU1MKK1NVQ0NF
U1MKK1NVQ0NFU1MKK1NVQ0NFU1MKK1NVQ0NFU1MKK1NVQ0NFU1MKK1NVQ0NFU1MKK1NVQ0NFU1MK
K1NVQ0NFU1MKK1NVQ0NFU1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFs
aWRpdHlTdGF0ZS1wYXR0ZXJuTWlzbWF0Y2gtMDA2Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL1ZhbGlkaXR5U3RhdGUtcGF0dGVybk1pc21hdGNoLTAwNi5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjZmRhZjgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtcGF0dGVybk1pc21hdGNoLTAwNi5odG1sCkBA
IC0wLDAgKzEsNDMgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+YmFzaWMgcGF0dGVybk1pc21h
dGNoIHRlc3QgNjwvdGl0bGU+Cis8c2NyaXB0IGxhbmd1YWdlPSJKYXZhU2NyaXB0IiB0eXBlPSJ0
ZXh0L2phdmFzY3JpcHQiPgorICAgIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKSB7CisgICAgICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuaW5uZXJIVE1MICs9ICI8bGk+IittZXNz
YWdlKyI8L2xpPiI7CisgICAgfQorCisgICAgZnVuY3Rpb24gdGVzdCgpIHsKKyAgICAgICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgICAgICB2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eU5hbWUoInZpY3RpbSIpOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdi5sZW5ndGg7IGkrKykK
KyAgICAgICAgICAgIGxvZyh2W2ldLnZhbGlkaXR5LnBhdHRlcm5NaXNtYXRjaCA/ICJTVUNDRVNT
IiA6ICJGQUlMVVJFIik7CisgICAgfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9
InRlc3QoKSI+Cis8aW5wdXQgbmFtZT0idmljdGltIiB0eXBlPSJ0ZXh0IiBwYXR0ZXJuPSIoKDRc
LlswLTNdKXwoMlwuWzAtM10pKSIgdmFsdWU9IlNvbWV0aGluZyA0LjAiLz4KKzxpbnB1dCBuYW1l
PSJ2aWN0aW0iIHR5cGU9InRleHQiIHBhdHRlcm49Ilx3IiB2YWx1ZT0iKiIvPgorPGlucHV0IG5h
bWU9InZpY3RpbSIgdHlwZT0iZW1haWwiIHBhdHRlcm49IlswLTldIiB2YWx1ZT0ic29tZXRoaW5n
Ii8+Cis8aW5wdXQgbmFtZT0idmljdGltIiB0eXBlPSJ0ZXh0IiBwYXR0ZXJuPSIuezUsfSIgdmFs
dWU9IjEyMzQiIC8+Cis8aW5wdXQgbmFtZT0idmljdGltIiB0eXBlPSJ0ZXh0IiBwYXR0ZXJuPSIu
ezUsfSIgdmFsdWU9IiopJCEiIC8+Cis8aW5wdXQgbmFtZT0idmljdGltIiB0eXBlPSJ0ZXh0IiBw
YXR0ZXJuPSIuezUsfSIgdmFsdWU9IiheJCEiIC8+Cis8aW5wdXQgbmFtZT0idmljdGltIiB0eXBl
PSJ0ZXh0IiBwYXR0ZXJuPSIwfDF8MnwzfDR8NXw2fDd8OHwiIHZhbHVlPSJhIiAvPgorPGlucHV0
IG5hbWU9InZpY3RpbSIgdHlwZT0idGV4dCIgcGF0dGVybj0iXihmb28pLioiIHZhbHVlPSJhIGZv
byIvPgorPGlucHV0IG5hbWU9InZpY3RpbSIgdHlwZT0idGV4dCIgcGF0dGVybj0iXHciIHZhbHVl
PSIxMzQiLz4KKzxpbnB1dCBuYW1lPSJ2aWN0aW0iIHR5cGU9InRleHQiIHBhdHRlcm49IlwuIiB2
YWx1ZT0iXC4iLz4KKzxpbnB1dCBuYW1lPSJ2aWN0aW0iIHR5cGU9InRleHQiIHBhdHRlcm49Ilwp
XCgiIHZhbHVlPSIpICgiLz4KKzxpbnB1dCBuYW1lPSJ2aWN0aW0iIHR5cGU9InRleHQiIHBhdHRl
cm49ImFiIiB2YWx1ZT0iYSIvPgorPGlucHV0IG5hbWU9InZpY3RpbSIgdHlwZT0idGV4dCIgcGF0
dGVybj0iYWIiIHZhbHVlPSJiIi8+Cis8aW5wdXQgbmFtZT0idmljdGltIiB0eXBlPSJ0ZXh0IiBw
YXR0ZXJuPSJeYWIiIHZhbHVlPSJhYmMiLz4KKzxpbnB1dCBuYW1lPSJ2aWN0aW0iIHR5cGU9InRl
eHQiIHBhdHRlcm49Il5cKCIgdmFsdWU9Iihzb21ldGhpbmciLz4KKzxpbnB1dCBuYW1lPSJ2aWN0
aW0iIHR5cGU9InRleHQiIHBhdHRlcm49IlwpXFwiIHZhbHVlPSJzb21ldGhpbmcpXCIvPgorPGlu
cHV0IG5hbWU9InZpY3RpbSIgdHlwZT0idGV4dCIgcGF0dGVybj0iLi4uXClcKFtiXXszfSIgdmFs
dWU9ImFkZikoYmJiVEVTVCIvPgorPGlucHV0IG5hbWU9InZpY3RpbSIgdHlwZT0idGV4dCIgcGF0
dGVybj0iZm9vXFwiIHZhbHVlPSJmb29kIi8+Cis8aW5wdXQgbmFtZT0idmljdGltIiB0eXBlPSJ0
ZXh0IiBwYXR0ZXJuPSJeIiB2YWx1ZT0id3JvbmciLz4KKzxpbnB1dCBuYW1lPSJ2aWN0aW0iIHR5
cGU9InRleHQiIHBhdHRlcm49IiQiIHZhbHVlPSJ3cm9uZyIvPgorPGhyPgorPG9sIGlkPSJjb25z
b2xlIj48L29sPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXBhdHRlcm5NaXNtYXRjaC0wMDctZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXBhdHRlcm5NaXNtYXRjaC0wMDct
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxZGNlY2MK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUt
cGF0dGVybk1pc21hdGNoLTAwNy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyIEBACisKK1NVQ0NF
U1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS1wYXR0
ZXJuTWlzbWF0Y2gtMDA3Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3Rh
dGUtcGF0dGVybk1pc21hdGNoLTAwNy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmQ4YzdlZjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L1ZhbGlkaXR5U3RhdGUtcGF0dGVybk1pc21hdGNoLTAwNy5odG1sCkBAIC0wLDAgKzEsMjQgQEAK
KzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+YmFzaWMgcGF0dGVybk1pc21hdGNoIHRlc3QgNzwvdGl0
bGU+Cis8c2NyaXB0IGxhbmd1YWdlPSJKYXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
PgorICAgIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKSB7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJjb25zb2xlIikuaW5uZXJIVE1MICs9ICI8bGk+IittZXNzYWdlKyI8L2xpPiI7Cisg
ICAgfQorCisgICAgZnVuY3Rpb24gdGVzdCgpIHsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKKworICAgICAgICB2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoInZpY3RpbSIp
OworCisgICAgICAgIGxvZyghdlswXS52YWxpZGl0eS5wYXR0ZXJuTWlzbWF0Y2ggPyAiU1VDQ0VT
UyIgOiAiRkFJTFVSRSIpOworICAgIH0KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2Fk
PSJ0ZXN0KCkiPgorPGlucHV0IG5hbWU9InZpY3RpbSIgdHlwZT0idGV4dCIgcGF0dGVybj0iIiB2
YWx1ZT0iTG9yZW0gSXBzdW0iLz4KKzxocj4KKzxvbCBpZD0iY29uc29sZSI+PC9vbD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvcGF0dGVybi1h
dHRyaWJ1dGUtMDAxLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvcGF0dGVy
bi1hdHRyaWJ1dGUtMDAxLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi5hZGUzYTlhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9wYXR0ZXJuLWF0dHJpYnV0ZS0wMDEtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorVGhl
cmUgYW4gaW5wdXQgZWxlbWVudCB3aXRoIHRoZSBwYXR0ZXJuIGF0dHJpYnV0ZSBzZXQuCisKKwor
U1VDQ0VTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9wYXR0ZXJuLWF0dHJp
YnV0ZS0wMDEuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvcGF0dGVybi1hdHRyaWJ1dGUt
MDAxLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWYwNzgyOAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvcGF0dGVybi1hdHRyaWJ1dGUt
MDAxLmh0bWwKQEAgLTAsMCArMSwyNSBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5wYXR0ZXJu
IGF0dHJpYnV0ZSBwcmVzZW5jZSB0ZXN0PC90aXRsZT4KKzxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFT
Y3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgZnVuY3Rpb24gbG9nKG1lc3NhZ2Up
IHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5pbm5lckhUTUwg
Kz0gIjxsaT4iK21lc3NhZ2UrIjwvbGk+IjsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0KCkg
eworICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgICAgIHYgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5TmFtZSgidmljdGltIik7CisKKyAgICAgICAgbG9nKHZbMF0ucGF0dGVy
biA/ICJTVUNDRVNTIiA6ICJGQUlMVVJFIik7CisgICAgfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keSBvbmxvYWQ9InRlc3QoKSI+Cis8cD5UaGVyZSBhbiBpbnB1dCBlbGVtZW50IHdpdGggdGhl
IHBhdHRlcm4gYXR0cmlidXRlIHNldC48L3A+Cis8aW5wdXQgbmFtZT0idmljdGltIiBwYXR0ZXJu
PSJzb21ldGhpbmciIC8+Cis8aHI+Cis8b2wgaWQ9ImNvbnNvbGUiPjwvb2w+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3BhdHRlcm4tYXR0cmli
dXRlLTAwMi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3BhdHRlcm4tYXR0
cmlidXRlLTAwMi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uN2EyZDk1ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvcGF0
dGVybi1hdHRyaWJ1dGUtMDAyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKK1RoZXJlIGFu
IGlucHV0IGVsZW1lbnQgd2l0aCB0aGUgcGF0dGVybiBhdHRyaWJ1dGUgbm90IHNldC4KKworCitT
VUNDRVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3BhdHRlcm4tYXR0cmli
dXRlLTAwMi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9wYXR0ZXJuLWF0dHJpYnV0ZS0w
MDIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOWRiNDI4Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9wYXR0ZXJuLWF0dHJpYnV0ZS0w
MDIuaHRtbApAQCAtMCwwICsxLDI1IEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPnBhdHRlcm4g
YXR0cmlidXRlIHNldC9nZXQgdGVzdDwvdGl0bGU+Cis8c2NyaXB0IGxhbmd1YWdlPSJKYXZhU2Ny
aXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKSB7
CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuaW5uZXJIVE1MICs9
ICI8bGk+IittZXNzYWdlKyI8L2xpPiI7CisgICAgfQorCisgICAgZnVuY3Rpb24gdGVzdCgpIHsK
KyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgICAgICB2ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeU5hbWUoInZpY3RpbSIpOworICAgICAgICB2WzBdLnBhdHRlcm4gPSAic29t
ZXRoaW5nIjsKKyAgICAgICAgbG9nKHZbMF0ucGF0dGVybiA9PSAic29tZXRoaW5nIiA/ICJTVUND
RVNTIiA6ICJGQUlMVVJFIik7CisgICAgfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxv
YWQ9InRlc3QoKSI+Cis8cD5UaGVyZSBhbiBpbnB1dCBlbGVtZW50IHdpdGggdGhlIHBhdHRlcm4g
YXR0cmlidXRlIG5vdCBzZXQuPC9wPgorPGlucHV0IG5hbWU9InZpY3RpbSIgLz4KKzxocj4KKzxv
bCBpZD0iY29uc29sZSI+PC9vbD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvZm9ybXMvcGF0dGVybi1hdHRyaWJ1dGUtMDAzLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvcGF0dGVybi1hdHRyaWJ1dGUtMDAzLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZGUzYTlhCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9wYXR0ZXJuLWF0dHJpYnV0ZS0wMDMtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorVGhlcmUgYW4gaW5wdXQgZWxlbWVudCB3aXRoIHRoZSBw
YXR0ZXJuIGF0dHJpYnV0ZSBzZXQuCisKKworU1VDQ0VTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9wYXR0ZXJuLWF0dHJpYnV0ZS0wMDMuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvZm9ybXMvcGF0dGVybi1hdHRyaWJ1dGUtMDAzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uM2VlYTZmNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvZm9ybXMvcGF0dGVybi1hdHRyaWJ1dGUtMDAzLmh0bWwKQEAgLTAsMCArMSwyNSBAQAorPGh0
bWw+Cis8aGVhZD4KKzx0aXRsZT5wYXR0ZXJuIGF0dHJpYnV0ZSBzZXQgdGVzdDwvdGl0bGU+Cis8
c2NyaXB0IGxhbmd1YWdlPSJKYXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAg
IGZ1bmN0aW9uIGxvZyhtZXNzYWdlKSB7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJjb25zb2xlIikuaW5uZXJIVE1MICs9ICI8bGk+IittZXNzYWdlKyI8L2xpPiI7CisgICAgfQor
CisgICAgZnVuY3Rpb24gdGVzdCgpIHsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
KworICAgICAgICB2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoInZpY3RpbSIpOworICAg
ICAgICB2WzBdLnBhdHRlcm4gKz0gIiBlbHNlIjsKKyAgICAgICAgbG9nKHZbMF0ucGF0dGVybiA9
PSAic29tZXRoaW5nIGVsc2UiID8gIlNVQ0NFU1MiIDogIkZBSUxVUkUiKTsKKyAgICB9Cis8L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0idGVzdCgpIj4KKzxwPlRoZXJlIGFuIGlucHV0
IGVsZW1lbnQgd2l0aCB0aGUgcGF0dGVybiBhdHRyaWJ1dGUgc2V0LjwvcD4KKzxpbnB1dCBuYW1l
PSJ2aWN0aW0iIHBhdHRlcm49InNvbWV0aGluZyIgLz4KKzxocj4KKzxvbCBpZD0iY29uc29sZSI+
PC9vbD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
V2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzkyZjEzOS4uZGMwMDI2OSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNCBAQAor
MjAwOS0wNy0yNCAgTWljaGVsYW5nZWxvIERlIFNpbW9uZSAgPG1pY2Rlc2ltQGdtYWlsLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU1NTIKKyAgICAgICAgQWRkZWQgbmV3
ICJwYXR0ZXJuIiBhdHRyaWJ1dGUgdG8gSFRNTElucHV0RWxlbWVudCBhbmQgdmFsaWRhdGlvbiBj
b2RlCisgICAgICAgICh2YWxpZGl0eS5wYXR0ZXJuTWlzbWF0Y2gpIGFzIHBlciBIVE1MNSBzcGVj
cy4KKyAgICAgICAgaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQt
d29yay9tdWx0aXBhZ2UvZm9ybXMuaHRtbCNhdHRyLWlucHV0LXBhdHRlcm4KKworICAgICAgICBU
ZXN0czogZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLTAwMi5odG1sCisgICAgICAgICAgICAgICBm
YXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtcGF0dGVybk1pc21hdGNoLTAwMS5odG1sCisgICAgICAg
ICAgICAgICBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtcGF0dGVybk1pc21hdGNoLTAwMi5odG1s
CisgICAgICAgICAgICAgICBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtcGF0dGVybk1pc21hdGNo
LTAwMy5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtcGF0dGVy
bk1pc21hdGNoLTAwNC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3Rh
dGUtcGF0dGVybk1pc21hdGNoLTAwNS5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Zvcm1zL1Zh
bGlkaXR5U3RhdGUtcGF0dGVybk1pc21hdGNoLTAwNi5odG1sCisgICAgICAgICAgICAgICBmYXN0
L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtcGF0dGVybk1pc21hdGNoLTAwNy5odG1sCisgICAgICAgICAg
ICAgICBmYXN0L2Zvcm1zL3BhdHRlcm4tYXR0cmlidXRlLTAwMS5odG1sCisgICAgICAgICAgICAg
ICBmYXN0L2Zvcm1zL3BhdHRlcm4tYXR0cmlidXRlLTAwMi5odG1sCisgICAgICAgICAgICAgICBm
YXN0L2Zvcm1zL3BhdHRlcm4tYXR0cmlidXRlLTAwMy5odG1sCisKKyAgICAgICAgKiBodG1sL0hU
TUxBdHRyaWJ1dGVOYW1lcy5pbjogcGF0dGVybiBhdHRyaWJ1dGUKKyAgICAgICAgKiBodG1sL0hU
TUxGb3JtQ29udHJvbEVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJv
bEVsZW1lbnQ6OnBhdHRlcm5NaXNtYXRjaCk6IG1ldGhvZCBkZWZpbml0aW9uCisgICAgICAgICog
aHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVs
ZW1lbnQ6OnBhdHRlcm5NaXNtYXRjaCk6IHZhbGlkYXRpb24gbWV0aG9kCisgICAgICAgICogaHRt
bC9IVE1MSW5wdXRFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50Lmlk
bDoKKyAgICAgICAgKiBodG1sL1ZhbGlkaXR5U3RhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlZh
bGlkaXR5U3RhdGU6OnBhdHRlcm5NaXNtYXRjaCk6IHZhbGlkYXRpb24gZmxhZworCiAyMDA5LTA3
LTIwICBCYWxhenMgS2VsZW1lbiAgPGtlbGVtZW4uYmFsYXpzLjNAc3R1ZC51LXN6ZWdlZC5odT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KZGlmZiAtLWdpdCBhL1dlYkNv
cmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4gYi9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0
ZU5hbWVzLmluCmluZGV4IDZkNGQzY2IuLjE1ZGIzZTkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRt
bC9IVE1MQXR0cmlidXRlTmFtZXMuaW4KKysrIGIvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVO
YW1lcy5pbgpAQCAtMTg1LDYgKzE4NSw3IEBAIG9ud2Via2l0YW5pbWF0aW9uc3RhcnQKIG9ud2Vi
a2l0YW5pbWF0aW9uaXRlcmF0aW9uCiBvbndlYmtpdGFuaW1hdGlvbmVuZAogb253ZWJraXR0cmFu
c2l0aW9uZW5kCitwYXR0ZXJuCiBwbGFjZWhvbGRlcgogcGx1Z2ludXJsCiBwb3N0ZXIKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmggYi9XZWJDb3JlL2h0
bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oCmluZGV4IGZiMGRhMjkuLmQzZGQ2MGYgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKKysrIGIvV2ViQ29y
ZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaApAQCAtMTA1LDYgKzEwNSw4IEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgYm9vbCB3aWxsVmFsaWRhdGUoKSBjb25zdDsKIAorICAgIHZpcnR1
YWwgYm9vbCBwYXR0ZXJuTWlzbWF0Y2goKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorCiAgICAg
dm9pZCBmb3JtRGVzdHJveWVkKCkgeyBtX2Zvcm0gPSAwOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hGb2N1c0V2ZW50KCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTElucHV0
RWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXggZjRj
NDY2Yy4uMmI2ZTAzOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQu
Y3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcApAQCAtNDcsNiArNDcs
NyBAQAogI2luY2x1ZGUgIk1hcHBlZEF0dHJpYnV0ZS5oIgogI2luY2x1ZGUgIk1vdXNlRXZlbnQu
aCIKICNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUmVndWxhckV4cHJlc3Npb24uaCIKICNp
bmNsdWRlICJSZW5kZXJCdXR0b24uaCIKICNpbmNsdWRlICJSZW5kZXJGaWxlVXBsb2FkQ29udHJv
bC5oIgogI2luY2x1ZGUgIlJlbmRlckltYWdlLmgiCkBAIC0xNDcsNiArMTQ4LDQ1IEBAIGJvb2wg
SFRNTElucHV0RWxlbWVudDo6dmFsdWVNaXNzaW5nKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKK2Jvb2wgSFRNTElucHV0RWxlbWVudDo6cGF0dGVybk1pc21hdGNoKCkgY29uc3QKK3sK
KyAgICBjb25zdCBBdG9taWNTdHJpbmcmIGxfcGF0dGVybiA9IGdldEF0dHJpYnV0ZShwYXR0ZXJu
QXR0cik7CisKKyAgICAvLyBFbXB0eSB2YWx1ZXMgY2FuJ3QgYmUgbWlzbWF0Y2hlZAorICAgIGlm
IChsX3BhdHRlcm4uaXNFbXB0eSgpIHx8IHZhbHVlKCkuaXNFbXB0eSgpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBzd2l0Y2ggKGlucHV0VHlwZSgpKSB7CisgICAgICAgIGNhc2UgSVNJ
TkRFWDoKKyAgICAgICAgY2FzZSBDSEVDS0JPWDoKKyAgICAgICAgY2FzZSBSQURJTzoKKyAgICAg
ICAgY2FzZSBTVUJNSVQ6CisgICAgICAgIGNhc2UgUkVTRVQ6CisgICAgICAgIGNhc2UgRklMRToK
KyAgICAgICAgY2FzZSBISURERU46CisgICAgICAgIGNhc2UgSU1BR0U6CisgICAgICAgIGNhc2Ug
QlVUVE9OOgorICAgICAgICBjYXNlIFJBTkdFOgorICAgICAgICBjYXNlIE5VTUJFUjoKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgY2FzZSBURVhUOgorICAgICAgICBjYXNlIFNF
QVJDSDoKKyAgICAgICAgY2FzZSBVUkw6CisgICAgICAgIGNhc2UgVEVMRVBIT05FOgorICAgICAg
ICBjYXNlIEVNQUlMOgorICAgICAgICBjYXNlIFBBU1NXT1JEOgorICAgICAgICAgICAgUmVndWxh
ckV4cHJlc3Npb24gcGF0dGVyblJlZ0V4cChsX3BhdHRlcm4sIFRleHRDYXNlU2Vuc2l0aXZlKTsK
KyAgICAgICAgICAgIGludCBtYXRjaExlbmd0aCA9IDA7CisgICAgICAgICAgICBpbnQgdmFsdWVM
ZW5ndGggPSB2YWx1ZSgpLmxlbmd0aCgpOworICAgICAgICAgICAgaW50IG1hdGNoT2Zmc2V0ID0g
cGF0dGVyblJlZ0V4cC5tYXRjaCh2YWx1ZSgpLCAwLCAmbWF0Y2hMZW5ndGgpOworCisgICAgICAg
ICAgICByZXR1cm4gbWF0Y2hPZmZzZXQgIT0gMCB8fCBtYXRjaExlbmd0aCAhPSB2YWx1ZUxlbmd0
aDsKKyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKIHN0YXRpYyBpbmxpbmUgQ2hlY2tlZFJhZGlvQnV0dG9ucyYgY2hlY2tlZFJhZGlvQnV0
dG9ucyhjb25zdCBIVE1MSW5wdXRFbGVtZW50ICplbGVtZW50KQogewogICAgIGlmIChIVE1MRm9y
bUVsZW1lbnQqIGZvcm0gPSBlbGVtZW50LT5mb3JtKCkpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0
bWwvSFRNTElucHV0RWxlbWVudC5oIGIvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaApp
bmRleCA2YWVkODIzLi40ZDg4N2YzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTElucHV0
RWxlbWVudC5oCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKQEAgLTkxLDYg
KzkxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc1RleHRGb3JtQ29udHJvbCgpIGNv
bnN0IHsgcmV0dXJuIGlzVGV4dEZpZWxkKCk7IH0KIAogICAgIHZpcnR1YWwgYm9vbCB2YWx1ZU1p
c3NpbmcoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgcGF0dGVybk1pc21hdGNoKCkgY29uc3Q7
CiAKICAgICBib29sIGlzVGV4dEJ1dHRvbigpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBTVUJN
SVQgfHwgbV90eXBlID09IFJFU0VUIHx8IG1fdHlwZSA9PSBCVVRUT047IH0KICAgICB2aXJ0dWFs
IGJvb2wgaXNSYWRpb0J1dHRvbigpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBSQURJTzsgfQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaWRsIGIvV2ViQ29yZS9o
dG1sL0hUTUxJbnB1dEVsZW1lbnQuaWRsCmluZGV4IDNhNDEwZGYuLmUxOWIzMGUgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmlkbAorKysgYi9XZWJDb3JlL2h0bWwv
SFRNTElucHV0RWxlbWVudC5pZGwKQEAgLTQxLDYgKzQxLDcgQEAgbW9kdWxlIGh0bWwgewogICAg
ICAgICAgICAgICAgICBhdHRyaWJ1dGUgbG9uZyAgICAgICAgICAgIG1heExlbmd0aDsKICAgICAg
ICAgICAgICAgICAgYXR0cmlidXRlIGJvb2xlYW4gICAgICAgICBtdWx0aXBsZTsKICAgICAgICAg
ICAgICAgICAgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nIG5h
bWU7CisgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBbUmVmbGVjdF0gRE9NU3RyaW5nICAgICAg
IHBhdHRlcm47CiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgICAgICAgcGxh
Y2Vob2xkZXI7CiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBib29sZWFuICAgICAgICAgcmVh
ZE9ubHk7CiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBib29sZWFuICAgICAgICAgcmVxdWly
ZWQ7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvVmFsaWRpdHlTdGF0ZS5oIGIvV2ViQ29yZS9o
dG1sL1ZhbGlkaXR5U3RhdGUuaAppbmRleCA2MGMwZGM2Li40YjJmMDIyIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2h0bWwvVmFsaWRpdHlTdGF0ZS5oCisrKyBiL1dlYkNvcmUvaHRtbC9WYWxpZGl0eVN0
YXRlLmgKQEAgLTQwLDcgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIGJv
b2wgdmFsdWVNaXNzaW5nKCkgeyByZXR1cm4gY29udHJvbCgpLT52YWx1ZU1pc3NpbmcoKTsgfQog
ICAgICAgICBib29sIHR5cGVNaXNtYXRjaCgpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgICAgIGJv
b2wgcGF0dGVybk1pc21hdGNoKCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAgICAgYm9vbCBwYXR0
ZXJuTWlzbWF0Y2goKSB7IHJldHVybiBjb250cm9sKCktPnBhdHRlcm5NaXNtYXRjaCgpOyB9CiAg
ICAgICAgIGJvb2wgdG9vTG9uZygpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIGJvb2wgcmFu
Z2VVbmRlcmZsb3coKSB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICBib29sIHJhbmdlT3ZlcmZs
b3coKSB7IHJldHVybiBmYWxzZTsgfQo=
</data>
<flag name="review"
          id="17683"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33393</attachid>
            <date>2009-07-23 16:49:49 -0700</date>
            <delta_ts>2009-07-23 17:28:33 -0700</delta_ts>
            <desc>Proposed patch, rev. 2b</desc>
            <filename>25552-2.patch</filename>
            <type>text/plain</type>
            <size>25944</size>
            <attacher name="Michelangelo De Simone">michelangelo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBkMjRiY2ZkLi5kNTNkMDRhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMDktMDct
MjQgIE1pY2hlbGFuZ2VsbyBEZSBTaW1vbmUgIDxtaWNkZXNpbUBnbWFpbC5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1NTUyCisgICAgICAgIEZpcnN0IHNlcmllcyBvZiB0
ZXN0cyBmb3IgdGhlICJwYXR0ZXJuIiBhdHRyaWJ1dGUgYW5kIHJlbGF0ZWQgdmFsaWRhdGlvbgor
ICAgICAgICBjb2RlCisKKyAgICAgICAgKiBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtMDAyLWV4
cGVjdGVkLnR4dDogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy93aWxsdmFsaWRh
dGUtMDAxLWV4cGVjdGVkLnR4dC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUt
MDAyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS1wYXR0
ZXJuTWlzbWF0Y2gtMDAxLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jt
cy9WYWxpZGl0eVN0YXRlLXBhdHRlcm5NaXNtYXRjaC0wMDEuaHRtbDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXBhdHRlcm5NaXNtYXRjaC0wMDItZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtcGF0dGVybk1p
c21hdGNoLTAwMi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3Rh
dGUtcGF0dGVybk1pc21hdGNoLTAwMy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS1wYXR0ZXJuTWlzbWF0Y2gtMDAzLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS1wYXR0ZXJuTWlzbWF0Y2gtMDA0LWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXBh
dHRlcm5NaXNtYXRjaC0wMDQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9WYWxp
ZGl0eVN0YXRlLXBhdHRlcm5NaXNtYXRjaC0wMDUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtcGF0dGVybk1pc21hdGNoLTAwNS5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtcGF0dGVybk1pc21hdGNo
LTAwNi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvVmFsaWRpdHlT
dGF0ZS1wYXR0ZXJuTWlzbWF0Y2gtMDA2Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9y
bXMvVmFsaWRpdHlTdGF0ZS1wYXR0ZXJuTWlzbWF0Y2gtMDA3LWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXBhdHRlcm5NaXNtYXRjaC0wMDcu
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9wYXR0ZXJuLWF0dHJpYnV0ZS0wMDEt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL3BhdHRlcm4tYXR0cmli
dXRlLTAwMS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL3BhdHRlcm4tYXR0cmli
dXRlLTAwMi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvcGF0dGVy
bi1hdHRyaWJ1dGUtMDAyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvcGF0dGVy
bi1hdHRyaWJ1dGUtMDAzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jt
cy9wYXR0ZXJuLWF0dHJpYnV0ZS0wMDMuaHRtbDogQWRkZWQuCisKIDIwMDktMDctMTkgIFNpbW9u
IEhhdXNtYW5uICA8aGF1c21hbm5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSdWJiZXItc3RhbXBl
ZCBieSBYYW4gTG9wZXouCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlk
aXR5U3RhdGUtMDAyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRp
dHlTdGF0ZS0wMDItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmMxZGNlY2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1Zh
bGlkaXR5U3RhdGUtMDAyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIgQEAKKworU1VDQ0VTUwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLTAwMi5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLTAwMi5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRiM2FlMTYKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtMDAyLmh0bWwKQEAgLTAsMCArMSwy
NCBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5wYXR0ZXJuTWlzbWF0Y2ggYW5kIHZhbHVlTWlz
c2luZzwvdGl0bGU+Cis8c2NyaXB0IGxhbmd1YWdlPSJKYXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L2ph
dmFzY3JpcHQiPgorICAgIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKSB7CisgICAgICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuaW5uZXJIVE1MICs9ICI8bGk+IittZXNzYWdlKyI8
L2xpPiI7CisgICAgfQorCisgICAgZnVuY3Rpb24gdGVzdCgpIHsKKyAgICAgICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKKworICAgICAgICB2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUo
InZpY3RpbSIpOworCisgICAgICAgIGxvZyghdlswXS52YWxpZGl0eS5wYXR0ZXJuTWlzbWF0Y2gg
JiYgdlswXS52YWxpZGl0eS52YWx1ZU1pc3NpbmcgPyAiU1VDQ0VTUyIgOiAiRkFJTFVSRSIpOwor
ICAgIH0KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgorPGlucHV0
IG5hbWU9InZpY3RpbSIgdHlwZT0idGV4dCIgcGF0dGVybj0iWzAtOV1bQS1aXXszfSIgcmVxdWly
ZWQvPgorPGhyPgorPG9sIGlkPSJjb25zb2xlIj48L29sPgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXBhdHRlcm5NaXNt
YXRjaC0wMDEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0
YXRlLXBhdHRlcm5NaXNtYXRjaC0wMDEtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjQyM2U0ZmMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtcGF0dGVybk1pc21hdGNoLTAwMS1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSw0IEBACitUaGVyZSBpcyBhbiBpbnB1dCB0eXBlIHRleHQgd2l0aCBwYXR0ZXJu
IGF0dHJpYnV0ZSBzZXQgdG8gWzAtOV1bQS1aXXszfSwgY2hlY2tpbmcgaXRzIHZhbGlkaXR5LnBh
dHRlcm5NaXNtYXRjaCBmbGFnLgorCisKK1NVQ0NFU1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS1wYXR0ZXJuTWlzbWF0Y2gtMDAxLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtcGF0dGVybk1pc21hdGNoLTAwMS5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM3YzRhOWQKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtcGF0dGVybk1pc21h
dGNoLTAwMS5odG1sCkBAIC0wLDAgKzEsMjQgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+YmFz
aWMgcGF0dGVybk1pc21hdGNoIHRlc3Q8L3RpdGxlPgorPHNjcmlwdCBsYW5ndWFnZT0iSmF2YVNj
cmlwdCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICBmdW5jdGlvbiBsb2cobWVzc2FnZSkg
eworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmlubmVySFRNTCAr
PSAiPGxpPiIrbWVzc2FnZSsiPC9saT4iOworICAgIH0KKworICAgIGZ1bmN0aW9uIHRlc3QoKSB7
CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICAgICAgdiA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlOYW1lKCJ2aWN0aW0iKTsKKyAgICAgICAgbG9nKCF2WzBdLnZhbGlkaXR5
LnBhdHRlcm5NaXNtYXRjaCA/ICJTVUNDRVNTIiA6ICJGQUlMVVJFIik7CisgICAgfQorPC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InRlc3QoKSI+Cis8cD5UaGVyZSBpcyBhbiBpbnB1
dCB0eXBlIHRleHQgd2l0aCBwYXR0ZXJuIGF0dHJpYnV0ZSBzZXQgdG8gWzAtOV1bQS1aXXszfSwg
Y2hlY2tpbmcgaXRzIHZhbGlkaXR5LnBhdHRlcm5NaXNtYXRjaCBmbGFnLjwvcD4KKzxpbnB1dCBu
YW1lPSJ2aWN0aW0iIHBhdHRlcm49IlswLTldW0EtWl17M30iIHZhbHVlPSIwQUFBIi8+Cis8aHI+
Cis8b2wgaWQ9ImNvbnNvbGUiPjwvb2w+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtcGF0dGVybk1pc21hdGNoLTAwMi1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtcGF0dGVy
bk1pc21hdGNoLTAwMi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uZDE2MjQ4NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMv
VmFsaWRpdHlTdGF0ZS1wYXR0ZXJuTWlzbWF0Y2gtMDAyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDQgQEAKK1RoZXJlIGlzIGFuIGlucHV0IHR5cGUgdGV4dCB3aXRoIG5vIHBhdHRlcm4gYXR0cmli
dXRlLgorCisKK1NVQ0NFU1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFs
aWRpdHlTdGF0ZS1wYXR0ZXJuTWlzbWF0Y2gtMDAyLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL1ZhbGlkaXR5U3RhdGUtcGF0dGVybk1pc21hdGNoLTAwMi5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2MDcxYzIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtcGF0dGVybk1pc21hdGNoLTAwMi5odG1sCkBA
IC0wLDAgKzEsMjQgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+YmFzaWMgcGF0dGVybk1pc21h
dGNoIHRlc3QgMjwvdGl0bGU+Cis8c2NyaXB0IGxhbmd1YWdlPSJKYXZhU2NyaXB0IiB0eXBlPSJ0
ZXh0L2phdmFzY3JpcHQiPgorICAgIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKSB7CisgICAgICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuaW5uZXJIVE1MICs9ICI8bGk+IittZXNz
YWdlKyI8L2xpPiI7CisgICAgfQorCisgICAgZnVuY3Rpb24gdGVzdCgpIHsKKyAgICAgICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgICAgICB2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eU5hbWUoInZpY3RpbSIpOworICAgICAgICBsb2coIXZbMF0udmFsaWRpdHkucGF0dGVybk1pc21h
dGNoID8gIlNVQ0NFU1MiIDogIkZBSUxVUkUiKTsKKyAgICB9Cis8L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5IG9ubG9hZD0idGVzdCgpIj4KKzxwPlRoZXJlIGlzIGFuIGlucHV0IHR5cGUgdGV4dCB3
aXRoIG5vIHBhdHRlcm4gYXR0cmlidXRlLjwvcD4KKzxpbnB1dCBuYW1lPSJ2aWN0aW0iIC8+Cis8
aHI+Cis8b2wgaWQ9ImNvbnNvbGUiPjwvb2w+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtcGF0dGVybk1pc21hdGNoLTAw
My1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtcGF0
dGVybk1pc21hdGNoLTAwMy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uOWExMTQ5NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9y
bXMvVmFsaWRpdHlTdGF0ZS1wYXR0ZXJuTWlzbWF0Y2gtMDAzLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDIwIEBACitJUCBBZGRyZXNzOiAgRW1haWwgYWRkcmVzczogICAgICAgICAgICAgICAgICAK
K1NVQ0NFU1MKK1NVQ0NFU1MKK1NVQ0NFU1MKK1NVQ0NFU1MKK1NVQ0NFU1MKK1NVQ0NFU1MKK1NV
Q0NFU1MKK1NVQ0NFU1MKK1NVQ0NFU1MKK1NVQ0NFU1MKK1NVQ0NFU1MKK1NVQ0NFU1MKK1NVQ0NF
U1MKK1NVQ0NFU1MKK1NVQ0NFU1MKK1NVQ0NFU1MKK1NVQ0NFU1MKK1NVQ0NFU1MKK1NVQ0NFU1MK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS1wYXR0ZXJu
TWlzbWF0Y2gtMDAzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUt
cGF0dGVybk1pc21hdGNoLTAwMy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjM1ODEyOGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1Zh
bGlkaXR5U3RhdGUtcGF0dGVybk1pc21hdGNoLTAwMy5odG1sCkBAIC0wLDAgKzEsNDQgQEAKKzxo
dG1sPgorPGhlYWQ+Cis8dGl0bGU+YmFzaWMgcGF0dGVybk1pc21hdGNoIHRlc3QgMzwvdGl0bGU+
Cis8c2NyaXB0IGxhbmd1YWdlPSJKYXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgor
ICAgIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKSB7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJjb25zb2xlIikuaW5uZXJIVE1MICs9ICI8bGk+IittZXNzYWdlKyI8L2xpPiI7CisgICAg
fQorCisgICAgZnVuY3Rpb24gdGVzdCgpIHsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKKworICAgICAgICB2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoInZpY3RpbSIpOwor
ICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdi5sZW5ndGg7IGkrKykKKyAgICAgICAgICAgIGxvZygh
dltpXS52YWxpZGl0eS5wYXR0ZXJuTWlzbWF0Y2ggPyAiU1VDQ0VTUyIgOiAiRkFJTFVSRSIpOwor
ICAgIH0KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgorSVAgQWRk
cmVzczoKKzxpbnB1dCBuYW1lPSJ2aWN0aW0iIHR5cGU9InRleHQiIHBhdHRlcm49IlxiKDI1WzAt
NV18MlswLTRdWzAtOV18WzAxXT9bMC05XVswLTldPylcLigyNVswLTVdfDJbMC00XVswLTldfFsw
MV0/WzAtOV1bMC05XT8pXC4oMjVbMC01XXwyWzAtNF1bMC05XXxbMDFdP1swLTldWzAtOV0/KVwu
KDI1WzAtNV18MlswLTRdWzAtOV18WzAxXT9bMC05XVswLTldPylcYiIgdmFsdWU9IjEyNy4wLjAu
MSIgLz4KK0VtYWlsIGFkZHJlc3M6Cis8aW5wdXQgbmFtZT0idmljdGltIiB0eXBlPSJ0ZXh0IiBw
YXR0ZXJuPSJbYS16MC05ISMkJSYnKisvPT9eX2B7fH1+LV0rKD86XC5bYS16MC05ISMkJSYnKisv
PT9eX2B7fH1+LV0rKSpAKD86W2EtejAtOV0oPzpbYS16MC05LV0qW2EtejAtOV0pP1wuKStbYS16
MC05XSg/OlthLXowLTktXSpbYS16MC05XSk/IiB2YWx1ZT0ic29tZW9uZUBzb21ld2hlcmUuY29t
IiAvPgorPGlucHV0IG5hbWU9InZpY3RpbSIgdHlwZT0idGV4dCIgcGF0dGVybj0iXGIod29yZDF8
d29yZDJ8d29yZDMpKD86XFcrXHcrKXsxLDZ9P1xXKyh3b3JkMXx3b3JkMnx3b3JkMylcYiIgdmFs
dWU9IndvcmQxIG5lYXIgd29yZDIiIC8+Cis8aW5wdXQgbmFtZT0idmljdGltIiB0eXBlPSJ0ZXh0
IiBwYXR0ZXJuPSIuezUsfSIgdmFsdWU9IjEyMzQ1IiAvPgorPGlucHV0IG5hbWU9InZpY3RpbSIg
dHlwZT0idGV4dCIgcGF0dGVybj0iLns1LH0iIHZhbHVlPSIqKEAkISIgLz4KKzxpbnB1dCBuYW1l
PSJ2aWN0aW0iIHR5cGU9InRleHQiIHBhdHRlcm49Ii57NSx9IiB2YWx1ZT0iKihAXiQhIiAvPgor
PGlucHV0IG5hbWU9InZpY3RpbSIgdHlwZT0idGV4dCIgcGF0dGVybj0iMHwxfDJ8M3w0fDV8Nnw3
fDh8IiB2YWx1ZT0iMyIgLz4KKzxpbnB1dCBuYW1lPSJ2aWN0aW0iIHR5cGU9InRleHQiIHBhdHRl
cm49Il4oZm9vKS4qIiB2YWx1ZT0iZm9vIi8+Cis8aW5wdXQgbmFtZT0idmljdGltIiB0eXBlPSJ0
ZXh0IiBwYXR0ZXJuPSJeKGZvbykuKiIgdmFsdWU9ImZvb28iLz4KKzxpbnB1dCBuYW1lPSJ2aWN0
aW0iIHR5cGU9InRleHQiIHBhdHRlcm49Ilx3IiB2YWx1ZT0iZiIvPgorPGlucHV0IG5hbWU9InZp
Y3RpbSIgdHlwZT0idGV4dCIgcGF0dGVybj0iXC4iIHZhbHVlPSIuIi8+Cis8aW5wdXQgbmFtZT0i
dmljdGltIiB0eXBlPSJ0ZXh0IiBwYXR0ZXJuPSJcKVwoIiB2YWx1ZT0iKSgiLz4KKzxpbnB1dCBu
YW1lPSJ2aWN0aW0iIHR5cGU9InRleHQiIHBhdHRlcm49ImFiIiB2YWx1ZT0iYWIiLz4KKzxpbnB1
dCBuYW1lPSJ2aWN0aW0iIHR5cGU9InRleHQiIHBhdHRlcm49Il5hYiIgdmFsdWU9ImFiIi8+Cis8
aW5wdXQgbmFtZT0idmljdGltIiB0eXBlPSJ0ZXh0IiBwYXR0ZXJuPSJeXCgiIHZhbHVlPSIoIi8+
Cis8aW5wdXQgbmFtZT0idmljdGltIiB0eXBlPSJ0ZXh0IiBwYXR0ZXJuPSIuLi5cKVwoLi4uIiB2
YWx1ZT0iYWFhKShiYmIiLz4KKzxpbnB1dCBuYW1lPSJ2aWN0aW0iIHR5cGU9InRleHQiIHBhdHRl
cm49Il4iIHZhbHVlPSIiLz4KKzxpbnB1dCBuYW1lPSJ2aWN0aW0iIHR5cGU9InRleHQiIHBhdHRl
cm49IiQiIHZhbHVlPSIiLz4KKzxpbnB1dCBuYW1lPSJ2aWN0aW0iIHR5cGU9InRleHQiIHBhdHRl
cm49ImZvb2JhciIgdmFsdWU9IiIvPgorPGhyPgorPG9sIGlkPSJjb25zb2xlIj48L29sPgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0
eVN0YXRlLXBhdHRlcm5NaXNtYXRjaC0wMDQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXBhdHRlcm5NaXNtYXRjaC0wMDQtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRmYTBhMzYKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtcGF0dGVybk1pc21hdGNo
LTAwNC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACisKK1NVQ0NFU1MKK1NVQ0NFU1MKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS1wYXR0ZXJuTWlz
bWF0Y2gtMDA0Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtcGF0
dGVybk1pc21hdGNoLTAwNC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjE0ZmNmMWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlk
aXR5U3RhdGUtcGF0dGVybk1pc21hdGNoLTAwNC5odG1sCkBAIC0wLDAgKzEsMjYgQEAKKzxodG1s
PgorPGhlYWQ+Cis8dGl0bGU+YmFzaWMgcGF0dGVybk1pc21hdGNoIHRlc3QgNDwvdGl0bGU+Cis8
c2NyaXB0IGxhbmd1YWdlPSJKYXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAg
IGZ1bmN0aW9uIGxvZyhtZXNzYWdlKSB7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJjb25zb2xlIikuaW5uZXJIVE1MICs9ICI8bGk+IittZXNzYWdlKyI8L2xpPiI7CisgICAgfQor
CisgICAgZnVuY3Rpb24gdGVzdCgpIHsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
KworICAgICAgICB2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoInZpY3RpbSIpOworCisg
ICAgICAgIGxvZyh2WzBdLnZhbGlkaXR5LnBhdHRlcm5NaXNtYXRjaCA/ICJTVUNDRVNTIiA6ICJG
QUlMVVJFIik7CisgICAgICAgIHZbMF0udmFsdWUgPSAic29tZW9uZUBzb21ld2hlcmUuY29tIjsK
KyAgICAgICAgbG9nKCF2WzBdLnZhbGlkaXR5LnBhdHRlcm5NaXNtYXRjaCA/ICJTVUNDRVNTIiA6
ICJGQUlMVVJFIik7CisgICAgfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InRl
c3QoKSI+Cis8aW5wdXQgbmFtZT0idmljdGltIiB0eXBlPSJ0ZXh0IiBwYXR0ZXJuPSJbYS16MC05
ISMkJSYnKisvPT9eX2B7fH1+LV0rKD86XC5bYS16MC05ISMkJSYnKisvPT9eX2B7fH1+LV0rKSpA
KD86W2EtejAtOV0oPzpbYS16MC05LV0qW2EtejAtOV0pP1wuKStbYS16MC05XSg/OlthLXowLTkt
XSpbYS16MC05XSk/IiB2YWx1ZT0iV3JvbmchIi8+Cis8aHI+Cis8b2wgaWQ9ImNvbnNvbGUiPjwv
b2w+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L1ZhbGlkaXR5U3RhdGUtcGF0dGVybk1pc21hdGNoLTAwNS1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtcGF0dGVybk1pc21hdGNoLTAwNS1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmQ3NjYzMAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS1wYXR0ZXJu
TWlzbWF0Y2gtMDA1LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAKKworU1VDQ0VTUworU1VD
Q0VTUworU1VDQ0VTUworU1VDQ0VTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9WYWxpZGl0eVN0YXRlLXBhdHRlcm5NaXNtYXRjaC0wMDUuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS1wYXR0ZXJuTWlzbWF0Y2gtMDA1Lmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTJkYTBiOQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS1wYXR0ZXJuTWlzbWF0Y2gtMDA1Lmh0
bWwKQEAgLTAsMCArMSwzMCBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5iYXNpYyBwYXR0ZXJu
TWlzbWF0Y2ggdGVzdCA1PC90aXRsZT4KKzxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQiIHR5
cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpIHsKKyAgICAg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5pbm5lckhUTUwgKz0gIjxsaT4i
K21lc3NhZ2UrIjwvbGk+IjsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0KCkgeworICAgICAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgICAgIHYgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5TmFtZSgidmljdGltIik7CisKKyAgICAgICAgbG9nKHZbMF0udmFsaWRpdHkucGF0dGVy
bk1pc21hdGNoID8gIlNVQ0NFU1MiIDogIkZBSUxVUkUiKTsKKyAgICAgICAgdlswXS52YWx1ZSA9
ICJncmF5IjsKKyAgICAgICAgbG9nKCF2WzBdLnZhbGlkaXR5LnBhdHRlcm5NaXNtYXRjaCA/ICJT
VUNDRVNTIiA6ICJGQUlMVVJFIik7CisgICAgICAgIHZbMF0udmFsdWUgPSAiZ3JleSI7CisgICAg
ICAgIGxvZyghdlswXS52YWxpZGl0eS5wYXR0ZXJuTWlzbWF0Y2ggPyAiU1VDQ0VTUyIgOiAiRkFJ
TFVSRSIpOworICAgICAgICB2WzBdLnZhbHVlID0gIiI7CisgICAgICAgIGxvZyghdlswXS52YWxp
ZGl0eS5wYXR0ZXJuTWlzbWF0Y2ggPyAiU1VDQ0VTUyIgOiAiRkFJTFVSRSIpOworICAgIH0KKzwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgorPGlucHV0IG5hbWU9InZp
Y3RpbSIgdHlwZT0idGV4dCIgcGF0dGVybj0iZ3JbYWVdeSIgdmFsdWU9Ildyb25nISIvPgorPGhy
PgorPG9sIGlkPSJjb25zb2xlIj48L29sPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXBhdHRlcm5NaXNtYXRjaC0wMDYt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXBhdHRl
cm5NaXNtYXRjaC0wMDYtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjYzOTBjZGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L1ZhbGlkaXR5U3RhdGUtcGF0dGVybk1pc21hdGNoLTAwNi1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwyMSBAQAorICAgICAgICAgICAgICAgICAgIAorU1VDQ0VTUworU1VDQ0VTUworU1VDQ0VTUwor
U1VDQ0VTUworU1VDQ0VTUworU1VDQ0VTUworU1VDQ0VTUworU1VDQ0VTUworU1VDQ0VTUworU1VD
Q0VTUworU1VDQ0VTUworU1VDQ0VTUworU1VDQ0VTUworU1VDQ0VTUworU1VDQ0VTUworU1VDQ0VT
UworU1VDQ0VTUworU1VDQ0VTUworU1VDQ0VTUworU1VDQ0VTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXBhdHRlcm5NaXNtYXRjaC0wMDYuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS1wYXR0ZXJuTWlzbWF0Y2gtMDA2
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWNmZGFmOAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS1wYXR0ZXJu
TWlzbWF0Y2gtMDA2Lmh0bWwKQEAgLTAsMCArMSw0MyBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRs
ZT5iYXNpYyBwYXR0ZXJuTWlzbWF0Y2ggdGVzdCA2PC90aXRsZT4KKzxzY3JpcHQgbGFuZ3VhZ2U9
IkphdmFTY3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgZnVuY3Rpb24gbG9nKG1l
c3NhZ2UpIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5pbm5l
ckhUTUwgKz0gIjxsaT4iK21lc3NhZ2UrIjwvbGk+IjsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB0
ZXN0KCkgeworICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgICAgIHYgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgidmljdGltIik7CisgICAgICAgIGZvciAoaSA9IDA7
IGkgPCB2Lmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgbG9nKHZbaV0udmFsaWRpdHkucGF0dGVy
bk1pc21hdGNoID8gIlNVQ0NFU1MiIDogIkZBSUxVUkUiKTsKKyAgICB9Cis8L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5IG9ubG9hZD0idGVzdCgpIj4KKzxpbnB1dCBuYW1lPSJ2aWN0aW0iIHR5cGU9
InRleHQiIHBhdHRlcm49IigoNFwuWzAtM10pfCgyXC5bMC0zXSkpIiB2YWx1ZT0iU29tZXRoaW5n
IDQuMCIvPgorPGlucHV0IG5hbWU9InZpY3RpbSIgdHlwZT0idGV4dCIgcGF0dGVybj0iXHciIHZh
bHVlPSIqIi8+Cis8aW5wdXQgbmFtZT0idmljdGltIiB0eXBlPSJlbWFpbCIgcGF0dGVybj0iWzAt
OV0iIHZhbHVlPSJzb21ldGhpbmciLz4KKzxpbnB1dCBuYW1lPSJ2aWN0aW0iIHR5cGU9InRleHQi
IHBhdHRlcm49Ii57NSx9IiB2YWx1ZT0iMTIzNCIgLz4KKzxpbnB1dCBuYW1lPSJ2aWN0aW0iIHR5
cGU9InRleHQiIHBhdHRlcm49Ii57NSx9IiB2YWx1ZT0iKikkISIgLz4KKzxpbnB1dCBuYW1lPSJ2
aWN0aW0iIHR5cGU9InRleHQiIHBhdHRlcm49Ii57NSx9IiB2YWx1ZT0iKF4kISIgLz4KKzxpbnB1
dCBuYW1lPSJ2aWN0aW0iIHR5cGU9InRleHQiIHBhdHRlcm49IjB8MXwyfDN8NHw1fDZ8N3w4fCIg
dmFsdWU9ImEiIC8+Cis8aW5wdXQgbmFtZT0idmljdGltIiB0eXBlPSJ0ZXh0IiBwYXR0ZXJuPSJe
KGZvbykuKiIgdmFsdWU9ImEgZm9vIi8+Cis8aW5wdXQgbmFtZT0idmljdGltIiB0eXBlPSJ0ZXh0
IiBwYXR0ZXJuPSJcdyIgdmFsdWU9IjEzNCIvPgorPGlucHV0IG5hbWU9InZpY3RpbSIgdHlwZT0i
dGV4dCIgcGF0dGVybj0iXC4iIHZhbHVlPSJcLiIvPgorPGlucHV0IG5hbWU9InZpY3RpbSIgdHlw
ZT0idGV4dCIgcGF0dGVybj0iXClcKCIgdmFsdWU9IikgKCIvPgorPGlucHV0IG5hbWU9InZpY3Rp
bSIgdHlwZT0idGV4dCIgcGF0dGVybj0iYWIiIHZhbHVlPSJhIi8+Cis8aW5wdXQgbmFtZT0idmlj
dGltIiB0eXBlPSJ0ZXh0IiBwYXR0ZXJuPSJhYiIgdmFsdWU9ImIiLz4KKzxpbnB1dCBuYW1lPSJ2
aWN0aW0iIHR5cGU9InRleHQiIHBhdHRlcm49Il5hYiIgdmFsdWU9ImFiYyIvPgorPGlucHV0IG5h
bWU9InZpY3RpbSIgdHlwZT0idGV4dCIgcGF0dGVybj0iXlwoIiB2YWx1ZT0iKHNvbWV0aGluZyIv
PgorPGlucHV0IG5hbWU9InZpY3RpbSIgdHlwZT0idGV4dCIgcGF0dGVybj0iXClcXCIgdmFsdWU9
InNvbWV0aGluZylcIi8+Cis8aW5wdXQgbmFtZT0idmljdGltIiB0eXBlPSJ0ZXh0IiBwYXR0ZXJu
PSIuLi5cKVwoW2JdezN9IiB2YWx1ZT0iYWRmKShiYmJURVNUIi8+Cis8aW5wdXQgbmFtZT0idmlj
dGltIiB0eXBlPSJ0ZXh0IiBwYXR0ZXJuPSJmb29cXCIgdmFsdWU9ImZvb2QiLz4KKzxpbnB1dCBu
YW1lPSJ2aWN0aW0iIHR5cGU9InRleHQiIHBhdHRlcm49Il4iIHZhbHVlPSJ3cm9uZyIvPgorPGlu
cHV0IG5hbWU9InZpY3RpbSIgdHlwZT0idGV4dCIgcGF0dGVybj0iJCIgdmFsdWU9Indyb25nIi8+
Cis8aHI+Cis8b2wgaWQ9ImNvbnNvbGUiPjwvb2w+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtcGF0dGVybk1pc21hdGNo
LTAwNy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUt
cGF0dGVybk1pc21hdGNoLTAwNy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uYzFkY2VjYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvVmFsaWRpdHlTdGF0ZS1wYXR0ZXJuTWlzbWF0Y2gtMDA3LWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDIgQEAKKworU1VDQ0VTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9WYWxpZGl0eVN0YXRlLXBhdHRlcm5NaXNtYXRjaC0wMDcuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS1wYXR0ZXJuTWlzbWF0Y2gtMDA3Lmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDhjN2VmNgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS1wYXR0ZXJuTWlzbWF0Y2gtMDA3Lmh0
bWwKQEAgLTAsMCArMSwyNCBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5iYXNpYyBwYXR0ZXJu
TWlzbWF0Y2ggdGVzdCA3PC90aXRsZT4KKzxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQiIHR5
cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpIHsKKyAgICAg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5pbm5lckhUTUwgKz0gIjxsaT4i
K21lc3NhZ2UrIjwvbGk+IjsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0KCkgeworICAgICAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgICAgIHYgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5TmFtZSgidmljdGltIik7CisKKyAgICAgICAgbG9nKCF2WzBdLnZhbGlkaXR5LnBhdHRl
cm5NaXNtYXRjaCA/ICJTVUNDRVNTIiA6ICJGQUlMVVJFIik7CisgICAgfQorPC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InRlc3QoKSI+Cis8aW5wdXQgbmFtZT0idmljdGltIiB0eXBl
PSJ0ZXh0IiBwYXR0ZXJuPSIiIHZhbHVlPSJMb3JlbSBJcHN1bSIvPgorPGhyPgorPG9sIGlkPSJj
b25zb2xlIj48L29sPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9mb3Jtcy9wYXR0ZXJuLWF0dHJpYnV0ZS0wMDEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9wYXR0ZXJuLWF0dHJpYnV0ZS0wMDEtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFkZTNhOWEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3BhdHRlcm4tYXR0cmlidXRlLTAwMS1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSw0IEBACitUaGVyZSBhbiBpbnB1dCBlbGVtZW50IHdpdGggdGhlIHBhdHRlcm4g
YXR0cmlidXRlIHNldC4KKworCitTVUNDRVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL3BhdHRlcm4tYXR0cmlidXRlLTAwMS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9wYXR0ZXJuLWF0dHJpYnV0ZS0wMDEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi4xZjA3ODI4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9wYXR0ZXJuLWF0dHJpYnV0ZS0wMDEuaHRtbApAQCAtMCwwICsxLDI1IEBACis8aHRtbD4KKzxo
ZWFkPgorPHRpdGxlPnBhdHRlcm4gYXR0cmlidXRlIHByZXNlbmNlIHRlc3Q8L3RpdGxlPgorPHNj
cmlwdCBsYW5ndWFnZT0iSmF2YVNjcmlwdCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICBm
dW5jdGlvbiBsb2cobWVzc2FnZSkgeworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
Y29uc29sZSIpLmlubmVySFRNTCArPSAiPGxpPiIrbWVzc2FnZSsiPC9saT4iOworICAgIH0KKwor
ICAgIGZ1bmN0aW9uIHRlc3QoKSB7CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisK
KyAgICAgICAgdiA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKCJ2aWN0aW0iKTsKKworICAg
ICAgICBsb2codlswXS5wYXR0ZXJuID8gIlNVQ0NFU1MiIDogIkZBSUxVUkUiKTsKKyAgICB9Cis8
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0idGVzdCgpIj4KKzxwPlRoZXJlIGFuIGlu
cHV0IGVsZW1lbnQgd2l0aCB0aGUgcGF0dGVybiBhdHRyaWJ1dGUgc2V0LjwvcD4KKzxpbnB1dCBu
YW1lPSJ2aWN0aW0iIHBhdHRlcm49InNvbWV0aGluZyIgLz4KKzxocj4KKzxvbCBpZD0iY29uc29s
ZSI+PC9vbD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvcGF0dGVybi1hdHRyaWJ1dGUtMDAyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zh
c3QvZm9ybXMvcGF0dGVybi1hdHRyaWJ1dGUtMDAyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi43YTJkOTVmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy9wYXR0ZXJuLWF0dHJpYnV0ZS0wMDItZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsNCBAQAorVGhlcmUgYW4gaW5wdXQgZWxlbWVudCB3aXRoIHRoZSBwYXR0ZXJuIGF0dHJp
YnV0ZSBub3Qgc2V0LgorCisKK1NVQ0NFU1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvcGF0dGVybi1hdHRyaWJ1dGUtMDAyLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L3BhdHRlcm4tYXR0cmlidXRlLTAwMi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmU5ZGI0MjgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L3BhdHRlcm4tYXR0cmlidXRlLTAwMi5odG1sCkBAIC0wLDAgKzEsMjUgQEAKKzxodG1sPgorPGhl
YWQ+Cis8dGl0bGU+cGF0dGVybiBhdHRyaWJ1dGUgc2V0L2dldCB0ZXN0PC90aXRsZT4KKzxzY3Jp
cHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgZnVu
Y3Rpb24gbG9nKG1lc3NhZ2UpIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNv
bnNvbGUiKS5pbm5lckhUTUwgKz0gIjxsaT4iK21lc3NhZ2UrIjwvbGk+IjsKKyAgICB9CisKKyAg
ICBmdW5jdGlvbiB0ZXN0KCkgeworICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQorICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisg
ICAgICAgIHYgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgidmljdGltIik7CisgICAgICAg
IHZbMF0ucGF0dGVybiA9ICJzb21ldGhpbmciOworICAgICAgICBsb2codlswXS5wYXR0ZXJuID09
ICJzb21ldGhpbmciID8gIlNVQ0NFU1MiIDogIkZBSUxVUkUiKTsKKyAgICB9Cis8L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5IG9ubG9hZD0idGVzdCgpIj4KKzxwPlRoZXJlIGFuIGlucHV0IGVsZW1l
bnQgd2l0aCB0aGUgcGF0dGVybiBhdHRyaWJ1dGUgbm90IHNldC48L3A+Cis8aW5wdXQgbmFtZT0i
dmljdGltIiAvPgorPGhyPgorPG9sIGlkPSJjb25zb2xlIj48L29sPgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9wYXR0ZXJuLWF0dHJpYnV0ZS0w
MDMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9wYXR0ZXJuLWF0dHJpYnV0
ZS0wMDMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFk
ZTNhOWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3BhdHRlcm4t
YXR0cmlidXRlLTAwMy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACitUaGVyZSBhbiBpbnB1
dCBlbGVtZW50IHdpdGggdGhlIHBhdHRlcm4gYXR0cmlidXRlIHNldC4KKworCitTVUNDRVNTCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3BhdHRlcm4tYXR0cmlidXRlLTAwMy5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9wYXR0ZXJuLWF0dHJpYnV0ZS0wMDMuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZWVhNmY1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9wYXR0ZXJuLWF0dHJpYnV0ZS0wMDMuaHRtbApA
QCAtMCwwICsxLDI1IEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPnBhdHRlcm4gYXR0cmlidXRl
IHNldCB0ZXN0PC90aXRsZT4KKzxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQiIHR5cGU9InRl
eHQvamF2YXNjcmlwdCI+CisgICAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpIHsKKyAgICAgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5pbm5lckhUTUwgKz0gIjxsaT4iK21lc3Nh
Z2UrIjwvbGk+IjsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0KCkgeworICAgICAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgICAgIHYgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
TmFtZSgidmljdGltIik7CisgICAgICAgIHZbMF0ucGF0dGVybiArPSAiIGVsc2UiOworICAgICAg
ICBsb2codlswXS5wYXR0ZXJuID09ICJzb21ldGhpbmcgZWxzZSIgPyAiU1VDQ0VTUyIgOiAiRkFJ
TFVSRSIpOworICAgIH0KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJ0ZXN0KCki
PgorPHA+VGhlcmUgYW4gaW5wdXQgZWxlbWVudCB3aXRoIHRoZSBwYXR0ZXJuIGF0dHJpYnV0ZSBz
ZXQuPC9wPgorPGlucHV0IG5hbWU9InZpY3RpbSIgcGF0dGVybj0ic29tZXRoaW5nIiAvPgorPGhy
PgorPG9sIGlkPSJjb25zb2xlIj48L29sPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3OTJmMTM5Li5kYzAw
MjY5IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDM0IEBACisyMDA5LTA3LTI0ICBNaWNoZWxhbmdlbG8gRGUgU2ltb25lICA8
bWljZGVzaW1AZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTU1
MgorICAgICAgICBBZGRlZCBuZXcgInBhdHRlcm4iIGF0dHJpYnV0ZSB0byBIVE1MSW5wdXRFbGVt
ZW50IGFuZCB2YWxpZGF0aW9uIGNvZGUKKyAgICAgICAgKHZhbGlkaXR5LnBhdHRlcm5NaXNtYXRj
aCkgYXMgcGVyIEhUTUw1IHNwZWNzLgorICAgICAgICBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3Bl
Y3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS9mb3Jtcy5odG1sI2F0dHItaW5wdXQt
cGF0dGVybgorCisgICAgICAgIFRlc3RzOiBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtMDAyLmh0
bWwKKyAgICAgICAgICAgICAgIGZhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS1wYXR0ZXJuTWlzbWF0
Y2gtMDAxLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS1wYXR0
ZXJuTWlzbWF0Y2gtMDAyLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZm9ybXMvVmFsaWRpdHlT
dGF0ZS1wYXR0ZXJuTWlzbWF0Y2gtMDAzLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZm9ybXMv
VmFsaWRpdHlTdGF0ZS1wYXR0ZXJuTWlzbWF0Y2gtMDA0Lmh0bWwKKyAgICAgICAgICAgICAgIGZh
c3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS1wYXR0ZXJuTWlzbWF0Y2gtMDA1Lmh0bWwKKyAgICAgICAg
ICAgICAgIGZhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS1wYXR0ZXJuTWlzbWF0Y2gtMDA2Lmh0bWwK
KyAgICAgICAgICAgICAgIGZhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS1wYXR0ZXJuTWlzbWF0Y2gt
MDA3Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZm9ybXMvcGF0dGVybi1hdHRyaWJ1dGUtMDAx
Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZm9ybXMvcGF0dGVybi1hdHRyaWJ1dGUtMDAyLmh0
bWwKKyAgICAgICAgICAgICAgIGZhc3QvZm9ybXMvcGF0dGVybi1hdHRyaWJ1dGUtMDAzLmh0bWwK
KworICAgICAgICAqIGh0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluOiBwYXR0ZXJuIGF0dHJpYnV0
ZQorICAgICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6cGF0dGVybk1pc21hdGNoKTogbWV0aG9kIGRl
ZmluaXRpb24KKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6cGF0dGVybk1pc21hdGNoKTogdmFsaWRhdGlvbiBt
ZXRob2QKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1s
L0hUTUxJbnB1dEVsZW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwvVmFsaWRpdHlTdGF0ZS5oOgor
ICAgICAgICAoV2ViQ29yZTo6VmFsaWRpdHlTdGF0ZTo6cGF0dGVybk1pc21hdGNoKTogdmFsaWRh
dGlvbiBmbGFnCisKIDIwMDktMDctMjAgIEJhbGF6cyBLZWxlbWVuICA8a2VsZW1lbi5iYWxhenMu
M0BzdHVkLnUtc3plZ2VkLmh1PgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5u
LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbiBiL1dlYkNv
cmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4KaW5kZXggNmQ0ZDNjYi4uMTVkYjNlOSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgorKysgYi9XZWJDb3Jl
L2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCkBAIC0xODUsNiArMTg1LDcgQEAgb253ZWJraXRh
bmltYXRpb25zdGFydAogb253ZWJraXRhbmltYXRpb25pdGVyYXRpb24KIG9ud2Via2l0YW5pbWF0
aW9uZW5kCiBvbndlYmtpdHRyYW5zaXRpb25lbmQKK3BhdHRlcm4KIHBsYWNlaG9sZGVyCiBwbHVn
aW51cmwKIHBvc3RlcgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVs
ZW1lbnQuaCBiL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKaW5kZXggZmIw
ZGEyOS4uZDNkZDYwZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVs
ZW1lbnQuaAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oCkBAIC0x
MDUsNiArMTA1LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIHdpbGxWYWxpZGF0ZSgp
IGNvbnN0OwogCisgICAgdmlydHVhbCBib29sIHBhdHRlcm5NaXNtYXRjaCgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CisKICAgICB2b2lkIGZvcm1EZXN0cm95ZWQoKSB7IG1fZm9ybSA9IDA7IH0K
IAogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaEZvY3VzRXZlbnQoKTsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRF
bGVtZW50LmNwcAppbmRleCBmNGM0NjZjLi5mYTIzODY4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0
bWwvSFRNTElucHV0RWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1l
bnQuY3BwCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSAiTWFwcGVkQXR0cmlidXRlLmgiCiAj
aW5jbHVkZSAiTW91c2VFdmVudC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJSZWd1
bGFyRXhwcmVzc2lvbi5oIgogI2luY2x1ZGUgIlJlbmRlckJ1dHRvbi5oIgogI2luY2x1ZGUgIlJl
bmRlckZpbGVVcGxvYWRDb250cm9sLmgiCiAjaW5jbHVkZSAiUmVuZGVySW1hZ2UuaCIKQEAgLTE0
Nyw2ICsxNDgsNDYgQEAgYm9vbCBIVE1MSW5wdXRFbGVtZW50Ojp2YWx1ZU1pc3NpbmcoKSBjb25z
dAogICAgIHJldHVybiBmYWxzZTsKIH0KIAorYm9vbCBIVE1MSW5wdXRFbGVtZW50OjpwYXR0ZXJu
TWlzbWF0Y2goKSBjb25zdAoreworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgcGF0dGVybiA9IGdl
dEF0dHJpYnV0ZShwYXR0ZXJuQXR0cik7CisgICAgU3RyaW5nIHZhbHVlID0gdGhpcy0+dmFsdWUo
KTsKKworICAgIC8vIEVtcHR5IHZhbHVlcyBjYW4ndCBiZSBtaXNtYXRjaGVkCisgICAgaWYgKHBh
dHRlcm4uaXNFbXB0eSgpIHx8IHZhbHVlLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgc3dpdGNoIChpbnB1dFR5cGUoKSkgeworICAgICAgICBjYXNlIElTSU5ERVg6Cisg
ICAgICAgIGNhc2UgQ0hFQ0tCT1g6CisgICAgICAgIGNhc2UgUkFESU86CisgICAgICAgIGNhc2Ug
U1VCTUlUOgorICAgICAgICBjYXNlIFJFU0VUOgorICAgICAgICBjYXNlIEZJTEU6CisgICAgICAg
IGNhc2UgSElEREVOOgorICAgICAgICBjYXNlIElNQUdFOgorICAgICAgICBjYXNlIEJVVFRPTjoK
KyAgICAgICAgY2FzZSBSQU5HRToKKyAgICAgICAgY2FzZSBOVU1CRVI6CisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIGNhc2UgVEVYVDoKKyAgICAgICAgY2FzZSBTRUFSQ0g6Cisg
ICAgICAgIGNhc2UgVVJMOgorICAgICAgICBjYXNlIFRFTEVQSE9ORToKKyAgICAgICAgY2FzZSBF
TUFJTDoKKyAgICAgICAgY2FzZSBQQVNTV09SRDoKKyAgICAgICAgICAgIFJlZ3VsYXJFeHByZXNz
aW9uIHBhdHRlcm5SZWdFeHAocGF0dGVybiwgVGV4dENhc2VTZW5zaXRpdmUpOworICAgICAgICAg
ICAgaW50IG1hdGNoTGVuZ3RoID0gMDsKKyAgICAgICAgICAgIGludCB2YWx1ZUxlbmd0aCA9IHZh
bHVlLmxlbmd0aCgpOworICAgICAgICAgICAgaW50IG1hdGNoT2Zmc2V0ID0gcGF0dGVyblJlZ0V4
cC5tYXRjaCh2YWx1ZSwgMCwgJm1hdGNoTGVuZ3RoKTsKKworICAgICAgICAgICAgcmV0dXJuIG1h
dGNoT2Zmc2V0ICE9IDAgfHwgbWF0Y2hMZW5ndGggIT0gdmFsdWVMZW5ndGg7CisgICAgfQorCisg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiBzdGF0aWMg
aW5saW5lIENoZWNrZWRSYWRpb0J1dHRvbnMmIGNoZWNrZWRSYWRpb0J1dHRvbnMoY29uc3QgSFRN
TElucHV0RWxlbWVudCAqZWxlbWVudCkKIHsKICAgICBpZiAoSFRNTEZvcm1FbGVtZW50KiBmb3Jt
ID0gZWxlbWVudC0+Zm9ybSgpKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVs
ZW1lbnQuaCBiL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKaW5kZXggNmFlZDgyMy4u
NGQ4ODdmMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAorKysg
Yi9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCkBAIC05MSw2ICs5MSw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIGJvb2wgaXNUZXh0Rm9ybUNvbnRyb2woKSBjb25zdCB7IHJldHVybiBp
c1RleHRGaWVsZCgpOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgdmFsdWVNaXNzaW5nKCkgY29uc3Q7
CisgICAgdmlydHVhbCBib29sIHBhdHRlcm5NaXNtYXRjaCgpIGNvbnN0OwogCiAgICAgYm9vbCBp
c1RleHRCdXR0b24oKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gU1VCTUlUIHx8IG1fdHlwZSA9
PSBSRVNFVCB8fCBtX3R5cGUgPT0gQlVUVE9OOyB9CiAgICAgdmlydHVhbCBib29sIGlzUmFkaW9C
dXR0b24oKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gUkFESU87IH0KZGlmZiAtLWdpdCBhL1dl
YkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmlkbCBiL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRF
bGVtZW50LmlkbAppbmRleCAzYTQxMGRmLi5lMTliMzBlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0
bWwvSFRNTElucHV0RWxlbWVudC5pZGwKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1l
bnQuaWRsCkBAIC00MSw2ICs0MSw3IEBAIG1vZHVsZSBodG1sIHsKICAgICAgICAgICAgICAgICAg
YXR0cmlidXRlIGxvbmcgICAgICAgICAgICBtYXhMZW5ndGg7CiAgICAgICAgICAgICAgICAgIGF0
dHJpYnV0ZSBib29sZWFuICAgICAgICAgbXVsdGlwbGU7CiAgICAgICAgICAgICAgICAgIGF0dHJp
YnV0ZSBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyBuYW1lOworICAgICAgICAg
ICAgICAgICBhdHRyaWJ1dGUgW1JlZmxlY3RdIERPTVN0cmluZyAgICAgICBwYXR0ZXJuOwogICAg
ICAgICAgICAgICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nICAgICAgIHBsYWNlaG9sZGVyOwogICAg
ICAgICAgICAgICAgICBhdHRyaWJ1dGUgYm9vbGVhbiAgICAgICAgIHJlYWRPbmx5OwogICAgICAg
ICAgICAgICAgICBhdHRyaWJ1dGUgYm9vbGVhbiAgICAgICAgIHJlcXVpcmVkOwpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9odG1sL1ZhbGlkaXR5U3RhdGUuaCBiL1dlYkNvcmUvaHRtbC9WYWxpZGl0eVN0
YXRlLmgKaW5kZXggNjBjMGRjNi4uNGIyZjAyMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL1Zh
bGlkaXR5U3RhdGUuaAorKysgYi9XZWJDb3JlL2h0bWwvVmFsaWRpdHlTdGF0ZS5oCkBAIC00MCw3
ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBib29sIHZhbHVlTWlzc2lu
ZygpIHsgcmV0dXJuIGNvbnRyb2woKS0+dmFsdWVNaXNzaW5nKCk7IH0KICAgICAgICAgYm9vbCB0
eXBlTWlzbWF0Y2goKSB7IHJldHVybiBmYWxzZTsgfQotICAgICAgICBib29sIHBhdHRlcm5NaXNt
YXRjaCgpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgICAgIGJvb2wgcGF0dGVybk1pc21hdGNoKCkg
eyByZXR1cm4gY29udHJvbCgpLT5wYXR0ZXJuTWlzbWF0Y2goKTsgfQogICAgICAgICBib29sIHRv
b0xvbmcoKSB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICBib29sIHJhbmdlVW5kZXJmbG93KCkg
eyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgYm9vbCByYW5nZU92ZXJmbG93KCkgeyByZXR1cm4g
ZmFsc2U7IH0K
</data>
<flag name="review"
          id="17684"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33395</attachid>
            <date>2009-07-23 17:28:33 -0700</date>
            <delta_ts>2009-07-25 19:56:41 -0700</delta_ts>
            <desc>Proposed Patch, rev. 2c</desc>
            <filename>25552-2.patch</filename>
            <type>text/plain</type>
            <size>25984</size>
            <attacher name="Michelangelo De Simone">michelangelo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBkMjRiY2ZkLi5kNTNkMDRhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMDktMDct
MjQgIE1pY2hlbGFuZ2VsbyBEZSBTaW1vbmUgIDxtaWNkZXNpbUBnbWFpbC5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1NTUyCisgICAgICAgIEZpcnN0IHNlcmllcyBvZiB0
ZXN0cyBmb3IgdGhlICJwYXR0ZXJuIiBhdHRyaWJ1dGUgYW5kIHJlbGF0ZWQgdmFsaWRhdGlvbgor
ICAgICAgICBjb2RlCisKKyAgICAgICAgKiBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtMDAyLWV4
cGVjdGVkLnR4dDogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy93aWxsdmFsaWRh
dGUtMDAxLWV4cGVjdGVkLnR4dC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUt
MDAyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS1wYXR0
ZXJuTWlzbWF0Y2gtMDAxLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jt
cy9WYWxpZGl0eVN0YXRlLXBhdHRlcm5NaXNtYXRjaC0wMDEuaHRtbDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXBhdHRlcm5NaXNtYXRjaC0wMDItZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtcGF0dGVybk1p
c21hdGNoLTAwMi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3Rh
dGUtcGF0dGVybk1pc21hdGNoLTAwMy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS1wYXR0ZXJuTWlzbWF0Y2gtMDAzLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS1wYXR0ZXJuTWlzbWF0Y2gtMDA0LWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXBh
dHRlcm5NaXNtYXRjaC0wMDQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9WYWxp
ZGl0eVN0YXRlLXBhdHRlcm5NaXNtYXRjaC0wMDUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtcGF0dGVybk1pc21hdGNoLTAwNS5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtcGF0dGVybk1pc21hdGNo
LTAwNi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvVmFsaWRpdHlT
dGF0ZS1wYXR0ZXJuTWlzbWF0Y2gtMDA2Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9y
bXMvVmFsaWRpdHlTdGF0ZS1wYXR0ZXJuTWlzbWF0Y2gtMDA3LWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXBhdHRlcm5NaXNtYXRjaC0wMDcu
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9wYXR0ZXJuLWF0dHJpYnV0ZS0wMDEt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL3BhdHRlcm4tYXR0cmli
dXRlLTAwMS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL3BhdHRlcm4tYXR0cmli
dXRlLTAwMi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvcGF0dGVy
bi1hdHRyaWJ1dGUtMDAyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvcGF0dGVy
bi1hdHRyaWJ1dGUtMDAzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jt
cy9wYXR0ZXJuLWF0dHJpYnV0ZS0wMDMuaHRtbDogQWRkZWQuCisKIDIwMDktMDctMTkgIFNpbW9u
IEhhdXNtYW5uICA8aGF1c21hbm5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSdWJiZXItc3RhbXBl
ZCBieSBYYW4gTG9wZXouCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlk
aXR5U3RhdGUtMDAyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRp
dHlTdGF0ZS0wMDItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmMxZGNlY2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1Zh
bGlkaXR5U3RhdGUtMDAyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIgQEAKKworU1VDQ0VTUwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLTAwMi5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLTAwMi5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRiM2FlMTYKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtMDAyLmh0bWwKQEAgLTAsMCArMSwy
NCBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5wYXR0ZXJuTWlzbWF0Y2ggYW5kIHZhbHVlTWlz
c2luZzwvdGl0bGU+Cis8c2NyaXB0IGxhbmd1YWdlPSJKYXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L2ph
dmFzY3JpcHQiPgorICAgIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKSB7CisgICAgICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuaW5uZXJIVE1MICs9ICI8bGk+IittZXNzYWdlKyI8
L2xpPiI7CisgICAgfQorCisgICAgZnVuY3Rpb24gdGVzdCgpIHsKKyAgICAgICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKKworICAgICAgICB2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUo
InZpY3RpbSIpOworCisgICAgICAgIGxvZyghdlswXS52YWxpZGl0eS5wYXR0ZXJuTWlzbWF0Y2gg
JiYgdlswXS52YWxpZGl0eS52YWx1ZU1pc3NpbmcgPyAiU1VDQ0VTUyIgOiAiRkFJTFVSRSIpOwor
ICAgIH0KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgorPGlucHV0
IG5hbWU9InZpY3RpbSIgdHlwZT0idGV4dCIgcGF0dGVybj0iWzAtOV1bQS1aXXszfSIgcmVxdWly
ZWQvPgorPGhyPgorPG9sIGlkPSJjb25zb2xlIj48L29sPgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXBhdHRlcm5NaXNt
YXRjaC0wMDEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0
YXRlLXBhdHRlcm5NaXNtYXRjaC0wMDEtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjQyM2U0ZmMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtcGF0dGVybk1pc21hdGNoLTAwMS1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSw0IEBACitUaGVyZSBpcyBhbiBpbnB1dCB0eXBlIHRleHQgd2l0aCBwYXR0ZXJu
IGF0dHJpYnV0ZSBzZXQgdG8gWzAtOV1bQS1aXXszfSwgY2hlY2tpbmcgaXRzIHZhbGlkaXR5LnBh
dHRlcm5NaXNtYXRjaCBmbGFnLgorCisKK1NVQ0NFU1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS1wYXR0ZXJuTWlzbWF0Y2gtMDAxLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtcGF0dGVybk1pc21hdGNoLTAwMS5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM3YzRhOWQKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtcGF0dGVybk1pc21h
dGNoLTAwMS5odG1sCkBAIC0wLDAgKzEsMjQgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+YmFz
aWMgcGF0dGVybk1pc21hdGNoIHRlc3Q8L3RpdGxlPgorPHNjcmlwdCBsYW5ndWFnZT0iSmF2YVNj
cmlwdCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICBmdW5jdGlvbiBsb2cobWVzc2FnZSkg
eworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmlubmVySFRNTCAr
PSAiPGxpPiIrbWVzc2FnZSsiPC9saT4iOworICAgIH0KKworICAgIGZ1bmN0aW9uIHRlc3QoKSB7
CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICAgICAgdiA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlOYW1lKCJ2aWN0aW0iKTsKKyAgICAgICAgbG9nKCF2WzBdLnZhbGlkaXR5
LnBhdHRlcm5NaXNtYXRjaCA/ICJTVUNDRVNTIiA6ICJGQUlMVVJFIik7CisgICAgfQorPC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InRlc3QoKSI+Cis8cD5UaGVyZSBpcyBhbiBpbnB1
dCB0eXBlIHRleHQgd2l0aCBwYXR0ZXJuIGF0dHJpYnV0ZSBzZXQgdG8gWzAtOV1bQS1aXXszfSwg
Y2hlY2tpbmcgaXRzIHZhbGlkaXR5LnBhdHRlcm5NaXNtYXRjaCBmbGFnLjwvcD4KKzxpbnB1dCBu
YW1lPSJ2aWN0aW0iIHBhdHRlcm49IlswLTldW0EtWl17M30iIHZhbHVlPSIwQUFBIi8+Cis8aHI+
Cis8b2wgaWQ9ImNvbnNvbGUiPjwvb2w+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtcGF0dGVybk1pc21hdGNoLTAwMi1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtcGF0dGVy
bk1pc21hdGNoLTAwMi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uZDE2MjQ4NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMv
VmFsaWRpdHlTdGF0ZS1wYXR0ZXJuTWlzbWF0Y2gtMDAyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDQgQEAKK1RoZXJlIGlzIGFuIGlucHV0IHR5cGUgdGV4dCB3aXRoIG5vIHBhdHRlcm4gYXR0cmli
dXRlLgorCisKK1NVQ0NFU1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFs
aWRpdHlTdGF0ZS1wYXR0ZXJuTWlzbWF0Y2gtMDAyLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL1ZhbGlkaXR5U3RhdGUtcGF0dGVybk1pc21hdGNoLTAwMi5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2MDcxYzIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtcGF0dGVybk1pc21hdGNoLTAwMi5odG1sCkBA
IC0wLDAgKzEsMjQgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+YmFzaWMgcGF0dGVybk1pc21h
dGNoIHRlc3QgMjwvdGl0bGU+Cis8c2NyaXB0IGxhbmd1YWdlPSJKYXZhU2NyaXB0IiB0eXBlPSJ0
ZXh0L2phdmFzY3JpcHQiPgorICAgIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKSB7CisgICAgICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuaW5uZXJIVE1MICs9ICI8bGk+IittZXNz
YWdlKyI8L2xpPiI7CisgICAgfQorCisgICAgZnVuY3Rpb24gdGVzdCgpIHsKKyAgICAgICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgICAgICB2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eU5hbWUoInZpY3RpbSIpOworICAgICAgICBsb2coIXZbMF0udmFsaWRpdHkucGF0dGVybk1pc21h
dGNoID8gIlNVQ0NFU1MiIDogIkZBSUxVUkUiKTsKKyAgICB9Cis8L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5IG9ubG9hZD0idGVzdCgpIj4KKzxwPlRoZXJlIGlzIGFuIGlucHV0IHR5cGUgdGV4dCB3
aXRoIG5vIHBhdHRlcm4gYXR0cmlidXRlLjwvcD4KKzxpbnB1dCBuYW1lPSJ2aWN0aW0iIC8+Cis8
aHI+Cis8b2wgaWQ9ImNvbnNvbGUiPjwvb2w+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtcGF0dGVybk1pc21hdGNoLTAw
My1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtcGF0
dGVybk1pc21hdGNoLTAwMy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uOWExMTQ5NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9y
bXMvVmFsaWRpdHlTdGF0ZS1wYXR0ZXJuTWlzbWF0Y2gtMDAzLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDIwIEBACitJUCBBZGRyZXNzOiAgRW1haWwgYWRkcmVzczogICAgICAgICAgICAgICAgICAK
K1NVQ0NFU1MKK1NVQ0NFU1MKK1NVQ0NFU1MKK1NVQ0NFU1MKK1NVQ0NFU1MKK1NVQ0NFU1MKK1NV
Q0NFU1MKK1NVQ0NFU1MKK1NVQ0NFU1MKK1NVQ0NFU1MKK1NVQ0NFU1MKK1NVQ0NFU1MKK1NVQ0NF
U1MKK1NVQ0NFU1MKK1NVQ0NFU1MKK1NVQ0NFU1MKK1NVQ0NFU1MKK1NVQ0NFU1MKK1NVQ0NFU1MK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS1wYXR0ZXJu
TWlzbWF0Y2gtMDAzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUt
cGF0dGVybk1pc21hdGNoLTAwMy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjM1ODEyOGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1Zh
bGlkaXR5U3RhdGUtcGF0dGVybk1pc21hdGNoLTAwMy5odG1sCkBAIC0wLDAgKzEsNDQgQEAKKzxo
dG1sPgorPGhlYWQ+Cis8dGl0bGU+YmFzaWMgcGF0dGVybk1pc21hdGNoIHRlc3QgMzwvdGl0bGU+
Cis8c2NyaXB0IGxhbmd1YWdlPSJKYXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgor
ICAgIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKSB7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJjb25zb2xlIikuaW5uZXJIVE1MICs9ICI8bGk+IittZXNzYWdlKyI8L2xpPiI7CisgICAg
fQorCisgICAgZnVuY3Rpb24gdGVzdCgpIHsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKKworICAgICAgICB2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoInZpY3RpbSIpOwor
ICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdi5sZW5ndGg7IGkrKykKKyAgICAgICAgICAgIGxvZygh
dltpXS52YWxpZGl0eS5wYXR0ZXJuTWlzbWF0Y2ggPyAiU1VDQ0VTUyIgOiAiRkFJTFVSRSIpOwor
ICAgIH0KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgorSVAgQWRk
cmVzczoKKzxpbnB1dCBuYW1lPSJ2aWN0aW0iIHR5cGU9InRleHQiIHBhdHRlcm49IlxiKDI1WzAt
NV18MlswLTRdWzAtOV18WzAxXT9bMC05XVswLTldPylcLigyNVswLTVdfDJbMC00XVswLTldfFsw
MV0/WzAtOV1bMC05XT8pXC4oMjVbMC01XXwyWzAtNF1bMC05XXxbMDFdP1swLTldWzAtOV0/KVwu
KDI1WzAtNV18MlswLTRdWzAtOV18WzAxXT9bMC05XVswLTldPylcYiIgdmFsdWU9IjEyNy4wLjAu
MSIgLz4KK0VtYWlsIGFkZHJlc3M6Cis8aW5wdXQgbmFtZT0idmljdGltIiB0eXBlPSJ0ZXh0IiBw
YXR0ZXJuPSJbYS16MC05ISMkJSYnKisvPT9eX2B7fH1+LV0rKD86XC5bYS16MC05ISMkJSYnKisv
PT9eX2B7fH1+LV0rKSpAKD86W2EtejAtOV0oPzpbYS16MC05LV0qW2EtejAtOV0pP1wuKStbYS16
MC05XSg/OlthLXowLTktXSpbYS16MC05XSk/IiB2YWx1ZT0ic29tZW9uZUBzb21ld2hlcmUuY29t
IiAvPgorPGlucHV0IG5hbWU9InZpY3RpbSIgdHlwZT0idGV4dCIgcGF0dGVybj0iXGIod29yZDF8
d29yZDJ8d29yZDMpKD86XFcrXHcrKXsxLDZ9P1xXKyh3b3JkMXx3b3JkMnx3b3JkMylcYiIgdmFs
dWU9IndvcmQxIG5lYXIgd29yZDIiIC8+Cis8aW5wdXQgbmFtZT0idmljdGltIiB0eXBlPSJ0ZXh0
IiBwYXR0ZXJuPSIuezUsfSIgdmFsdWU9IjEyMzQ1IiAvPgorPGlucHV0IG5hbWU9InZpY3RpbSIg
dHlwZT0idGV4dCIgcGF0dGVybj0iLns1LH0iIHZhbHVlPSIqKEAkISIgLz4KKzxpbnB1dCBuYW1l
PSJ2aWN0aW0iIHR5cGU9InRleHQiIHBhdHRlcm49Ii57NSx9IiB2YWx1ZT0iKihAXiQhIiAvPgor
PGlucHV0IG5hbWU9InZpY3RpbSIgdHlwZT0idGV4dCIgcGF0dGVybj0iMHwxfDJ8M3w0fDV8Nnw3
fDh8IiB2YWx1ZT0iMyIgLz4KKzxpbnB1dCBuYW1lPSJ2aWN0aW0iIHR5cGU9InRleHQiIHBhdHRl
cm49Il4oZm9vKS4qIiB2YWx1ZT0iZm9vIi8+Cis8aW5wdXQgbmFtZT0idmljdGltIiB0eXBlPSJ0
ZXh0IiBwYXR0ZXJuPSJeKGZvbykuKiIgdmFsdWU9ImZvb28iLz4KKzxpbnB1dCBuYW1lPSJ2aWN0
aW0iIHR5cGU9InRleHQiIHBhdHRlcm49Ilx3IiB2YWx1ZT0iZiIvPgorPGlucHV0IG5hbWU9InZp
Y3RpbSIgdHlwZT0idGV4dCIgcGF0dGVybj0iXC4iIHZhbHVlPSIuIi8+Cis8aW5wdXQgbmFtZT0i
dmljdGltIiB0eXBlPSJ0ZXh0IiBwYXR0ZXJuPSJcKVwoIiB2YWx1ZT0iKSgiLz4KKzxpbnB1dCBu
YW1lPSJ2aWN0aW0iIHR5cGU9InRleHQiIHBhdHRlcm49ImFiIiB2YWx1ZT0iYWIiLz4KKzxpbnB1
dCBuYW1lPSJ2aWN0aW0iIHR5cGU9InRleHQiIHBhdHRlcm49Il5hYiIgdmFsdWU9ImFiIi8+Cis8
aW5wdXQgbmFtZT0idmljdGltIiB0eXBlPSJ0ZXh0IiBwYXR0ZXJuPSJeXCgiIHZhbHVlPSIoIi8+
Cis8aW5wdXQgbmFtZT0idmljdGltIiB0eXBlPSJ0ZXh0IiBwYXR0ZXJuPSIuLi5cKVwoLi4uIiB2
YWx1ZT0iYWFhKShiYmIiLz4KKzxpbnB1dCBuYW1lPSJ2aWN0aW0iIHR5cGU9InRleHQiIHBhdHRl
cm49Il4iIHZhbHVlPSIiLz4KKzxpbnB1dCBuYW1lPSJ2aWN0aW0iIHR5cGU9InRleHQiIHBhdHRl
cm49IiQiIHZhbHVlPSIiLz4KKzxpbnB1dCBuYW1lPSJ2aWN0aW0iIHR5cGU9InRleHQiIHBhdHRl
cm49ImZvb2JhciIgdmFsdWU9IiIvPgorPGhyPgorPG9sIGlkPSJjb25zb2xlIj48L29sPgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0
eVN0YXRlLXBhdHRlcm5NaXNtYXRjaC0wMDQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXBhdHRlcm5NaXNtYXRjaC0wMDQtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRmYTBhMzYKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtcGF0dGVybk1pc21hdGNo
LTAwNC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACisKK1NVQ0NFU1MKK1NVQ0NFU1MKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS1wYXR0ZXJuTWlz
bWF0Y2gtMDA0Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtcGF0
dGVybk1pc21hdGNoLTAwNC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjE0ZmNmMWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlk
aXR5U3RhdGUtcGF0dGVybk1pc21hdGNoLTAwNC5odG1sCkBAIC0wLDAgKzEsMjYgQEAKKzxodG1s
PgorPGhlYWQ+Cis8dGl0bGU+YmFzaWMgcGF0dGVybk1pc21hdGNoIHRlc3QgNDwvdGl0bGU+Cis8
c2NyaXB0IGxhbmd1YWdlPSJKYXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAg
IGZ1bmN0aW9uIGxvZyhtZXNzYWdlKSB7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJjb25zb2xlIikuaW5uZXJIVE1MICs9ICI8bGk+IittZXNzYWdlKyI8L2xpPiI7CisgICAgfQor
CisgICAgZnVuY3Rpb24gdGVzdCgpIHsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
KworICAgICAgICB2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoInZpY3RpbSIpOworCisg
ICAgICAgIGxvZyh2WzBdLnZhbGlkaXR5LnBhdHRlcm5NaXNtYXRjaCA/ICJTVUNDRVNTIiA6ICJG
QUlMVVJFIik7CisgICAgICAgIHZbMF0udmFsdWUgPSAic29tZW9uZUBzb21ld2hlcmUuY29tIjsK
KyAgICAgICAgbG9nKCF2WzBdLnZhbGlkaXR5LnBhdHRlcm5NaXNtYXRjaCA/ICJTVUNDRVNTIiA6
ICJGQUlMVVJFIik7CisgICAgfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InRl
c3QoKSI+Cis8aW5wdXQgbmFtZT0idmljdGltIiB0eXBlPSJ0ZXh0IiBwYXR0ZXJuPSJbYS16MC05
ISMkJSYnKisvPT9eX2B7fH1+LV0rKD86XC5bYS16MC05ISMkJSYnKisvPT9eX2B7fH1+LV0rKSpA
KD86W2EtejAtOV0oPzpbYS16MC05LV0qW2EtejAtOV0pP1wuKStbYS16MC05XSg/OlthLXowLTkt
XSpbYS16MC05XSk/IiB2YWx1ZT0iV3JvbmchIi8+Cis8aHI+Cis8b2wgaWQ9ImNvbnNvbGUiPjwv
b2w+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L1ZhbGlkaXR5U3RhdGUtcGF0dGVybk1pc21hdGNoLTAwNS1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtcGF0dGVybk1pc21hdGNoLTAwNS1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmQ3NjYzMAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS1wYXR0ZXJu
TWlzbWF0Y2gtMDA1LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAKKworU1VDQ0VTUworU1VD
Q0VTUworU1VDQ0VTUworU1VDQ0VTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9WYWxpZGl0eVN0YXRlLXBhdHRlcm5NaXNtYXRjaC0wMDUuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS1wYXR0ZXJuTWlzbWF0Y2gtMDA1Lmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTJkYTBiOQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS1wYXR0ZXJuTWlzbWF0Y2gtMDA1Lmh0
bWwKQEAgLTAsMCArMSwzMCBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5iYXNpYyBwYXR0ZXJu
TWlzbWF0Y2ggdGVzdCA1PC90aXRsZT4KKzxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQiIHR5
cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpIHsKKyAgICAg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5pbm5lckhUTUwgKz0gIjxsaT4i
K21lc3NhZ2UrIjwvbGk+IjsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0KCkgeworICAgICAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgICAgIHYgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5TmFtZSgidmljdGltIik7CisKKyAgICAgICAgbG9nKHZbMF0udmFsaWRpdHkucGF0dGVy
bk1pc21hdGNoID8gIlNVQ0NFU1MiIDogIkZBSUxVUkUiKTsKKyAgICAgICAgdlswXS52YWx1ZSA9
ICJncmF5IjsKKyAgICAgICAgbG9nKCF2WzBdLnZhbGlkaXR5LnBhdHRlcm5NaXNtYXRjaCA/ICJT
VUNDRVNTIiA6ICJGQUlMVVJFIik7CisgICAgICAgIHZbMF0udmFsdWUgPSAiZ3JleSI7CisgICAg
ICAgIGxvZyghdlswXS52YWxpZGl0eS5wYXR0ZXJuTWlzbWF0Y2ggPyAiU1VDQ0VTUyIgOiAiRkFJ
TFVSRSIpOworICAgICAgICB2WzBdLnZhbHVlID0gIiI7CisgICAgICAgIGxvZyghdlswXS52YWxp
ZGl0eS5wYXR0ZXJuTWlzbWF0Y2ggPyAiU1VDQ0VTUyIgOiAiRkFJTFVSRSIpOworICAgIH0KKzwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgorPGlucHV0IG5hbWU9InZp
Y3RpbSIgdHlwZT0idGV4dCIgcGF0dGVybj0iZ3JbYWVdeSIgdmFsdWU9Ildyb25nISIvPgorPGhy
PgorPG9sIGlkPSJjb25zb2xlIj48L29sPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXBhdHRlcm5NaXNtYXRjaC0wMDYt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXBhdHRl
cm5NaXNtYXRjaC0wMDYtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjYzOTBjZGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L1ZhbGlkaXR5U3RhdGUtcGF0dGVybk1pc21hdGNoLTAwNi1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwyMSBAQAorICAgICAgICAgICAgICAgICAgIAorU1VDQ0VTUworU1VDQ0VTUworU1VDQ0VTUwor
U1VDQ0VTUworU1VDQ0VTUworU1VDQ0VTUworU1VDQ0VTUworU1VDQ0VTUworU1VDQ0VTUworU1VD
Q0VTUworU1VDQ0VTUworU1VDQ0VTUworU1VDQ0VTUworU1VDQ0VTUworU1VDQ0VTUworU1VDQ0VT
UworU1VDQ0VTUworU1VDQ0VTUworU1VDQ0VTUworU1VDQ0VTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXBhdHRlcm5NaXNtYXRjaC0wMDYuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS1wYXR0ZXJuTWlzbWF0Y2gtMDA2
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWNmZGFmOAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS1wYXR0ZXJu
TWlzbWF0Y2gtMDA2Lmh0bWwKQEAgLTAsMCArMSw0MyBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRs
ZT5iYXNpYyBwYXR0ZXJuTWlzbWF0Y2ggdGVzdCA2PC90aXRsZT4KKzxzY3JpcHQgbGFuZ3VhZ2U9
IkphdmFTY3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgZnVuY3Rpb24gbG9nKG1l
c3NhZ2UpIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5pbm5l
ckhUTUwgKz0gIjxsaT4iK21lc3NhZ2UrIjwvbGk+IjsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB0
ZXN0KCkgeworICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgICAgIHYgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgidmljdGltIik7CisgICAgICAgIGZvciAoaSA9IDA7
IGkgPCB2Lmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgbG9nKHZbaV0udmFsaWRpdHkucGF0dGVy
bk1pc21hdGNoID8gIlNVQ0NFU1MiIDogIkZBSUxVUkUiKTsKKyAgICB9Cis8L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5IG9ubG9hZD0idGVzdCgpIj4KKzxpbnB1dCBuYW1lPSJ2aWN0aW0iIHR5cGU9
InRleHQiIHBhdHRlcm49IigoNFwuWzAtM10pfCgyXC5bMC0zXSkpIiB2YWx1ZT0iU29tZXRoaW5n
IDQuMCIvPgorPGlucHV0IG5hbWU9InZpY3RpbSIgdHlwZT0idGV4dCIgcGF0dGVybj0iXHciIHZh
bHVlPSIqIi8+Cis8aW5wdXQgbmFtZT0idmljdGltIiB0eXBlPSJlbWFpbCIgcGF0dGVybj0iWzAt
OV0iIHZhbHVlPSJzb21ldGhpbmciLz4KKzxpbnB1dCBuYW1lPSJ2aWN0aW0iIHR5cGU9InRleHQi
IHBhdHRlcm49Ii57NSx9IiB2YWx1ZT0iMTIzNCIgLz4KKzxpbnB1dCBuYW1lPSJ2aWN0aW0iIHR5
cGU9InRleHQiIHBhdHRlcm49Ii57NSx9IiB2YWx1ZT0iKikkISIgLz4KKzxpbnB1dCBuYW1lPSJ2
aWN0aW0iIHR5cGU9InRleHQiIHBhdHRlcm49Ii57NSx9IiB2YWx1ZT0iKF4kISIgLz4KKzxpbnB1
dCBuYW1lPSJ2aWN0aW0iIHR5cGU9InRleHQiIHBhdHRlcm49IjB8MXwyfDN8NHw1fDZ8N3w4fCIg
dmFsdWU9ImEiIC8+Cis8aW5wdXQgbmFtZT0idmljdGltIiB0eXBlPSJ0ZXh0IiBwYXR0ZXJuPSJe
KGZvbykuKiIgdmFsdWU9ImEgZm9vIi8+Cis8aW5wdXQgbmFtZT0idmljdGltIiB0eXBlPSJ0ZXh0
IiBwYXR0ZXJuPSJcdyIgdmFsdWU9IjEzNCIvPgorPGlucHV0IG5hbWU9InZpY3RpbSIgdHlwZT0i
dGV4dCIgcGF0dGVybj0iXC4iIHZhbHVlPSJcLiIvPgorPGlucHV0IG5hbWU9InZpY3RpbSIgdHlw
ZT0idGV4dCIgcGF0dGVybj0iXClcKCIgdmFsdWU9IikgKCIvPgorPGlucHV0IG5hbWU9InZpY3Rp
bSIgdHlwZT0idGV4dCIgcGF0dGVybj0iYWIiIHZhbHVlPSJhIi8+Cis8aW5wdXQgbmFtZT0idmlj
dGltIiB0eXBlPSJ0ZXh0IiBwYXR0ZXJuPSJhYiIgdmFsdWU9ImIiLz4KKzxpbnB1dCBuYW1lPSJ2
aWN0aW0iIHR5cGU9InRleHQiIHBhdHRlcm49Il5hYiIgdmFsdWU9ImFiYyIvPgorPGlucHV0IG5h
bWU9InZpY3RpbSIgdHlwZT0idGV4dCIgcGF0dGVybj0iXlwoIiB2YWx1ZT0iKHNvbWV0aGluZyIv
PgorPGlucHV0IG5hbWU9InZpY3RpbSIgdHlwZT0idGV4dCIgcGF0dGVybj0iXClcXCIgdmFsdWU9
InNvbWV0aGluZylcIi8+Cis8aW5wdXQgbmFtZT0idmljdGltIiB0eXBlPSJ0ZXh0IiBwYXR0ZXJu
PSIuLi5cKVwoW2JdezN9IiB2YWx1ZT0iYWRmKShiYmJURVNUIi8+Cis8aW5wdXQgbmFtZT0idmlj
dGltIiB0eXBlPSJ0ZXh0IiBwYXR0ZXJuPSJmb29cXCIgdmFsdWU9ImZvb2QiLz4KKzxpbnB1dCBu
YW1lPSJ2aWN0aW0iIHR5cGU9InRleHQiIHBhdHRlcm49Il4iIHZhbHVlPSJ3cm9uZyIvPgorPGlu
cHV0IG5hbWU9InZpY3RpbSIgdHlwZT0idGV4dCIgcGF0dGVybj0iJCIgdmFsdWU9Indyb25nIi8+
Cis8aHI+Cis8b2wgaWQ9ImNvbnNvbGUiPjwvb2w+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtcGF0dGVybk1pc21hdGNo
LTAwNy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUt
cGF0dGVybk1pc21hdGNoLTAwNy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uYzFkY2VjYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvVmFsaWRpdHlTdGF0ZS1wYXR0ZXJuTWlzbWF0Y2gtMDA3LWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDIgQEAKKworU1VDQ0VTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9WYWxpZGl0eVN0YXRlLXBhdHRlcm5NaXNtYXRjaC0wMDcuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS1wYXR0ZXJuTWlzbWF0Y2gtMDA3Lmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDhjN2VmNgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS1wYXR0ZXJuTWlzbWF0Y2gtMDA3Lmh0
bWwKQEAgLTAsMCArMSwyNCBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5iYXNpYyBwYXR0ZXJu
TWlzbWF0Y2ggdGVzdCA3PC90aXRsZT4KKzxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQiIHR5
cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpIHsKKyAgICAg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5pbm5lckhUTUwgKz0gIjxsaT4i
K21lc3NhZ2UrIjwvbGk+IjsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0KCkgeworICAgICAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgICAgIHYgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5TmFtZSgidmljdGltIik7CisKKyAgICAgICAgbG9nKCF2WzBdLnZhbGlkaXR5LnBhdHRl
cm5NaXNtYXRjaCA/ICJTVUNDRVNTIiA6ICJGQUlMVVJFIik7CisgICAgfQorPC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InRlc3QoKSI+Cis8aW5wdXQgbmFtZT0idmljdGltIiB0eXBl
PSJ0ZXh0IiBwYXR0ZXJuPSIiIHZhbHVlPSJMb3JlbSBJcHN1bSIvPgorPGhyPgorPG9sIGlkPSJj
b25zb2xlIj48L29sPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9mb3Jtcy9wYXR0ZXJuLWF0dHJpYnV0ZS0wMDEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9wYXR0ZXJuLWF0dHJpYnV0ZS0wMDEtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFkZTNhOWEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3BhdHRlcm4tYXR0cmlidXRlLTAwMS1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSw0IEBACitUaGVyZSBhbiBpbnB1dCBlbGVtZW50IHdpdGggdGhlIHBhdHRlcm4g
YXR0cmlidXRlIHNldC4KKworCitTVUNDRVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL3BhdHRlcm4tYXR0cmlidXRlLTAwMS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9wYXR0ZXJuLWF0dHJpYnV0ZS0wMDEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi4xZjA3ODI4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9wYXR0ZXJuLWF0dHJpYnV0ZS0wMDEuaHRtbApAQCAtMCwwICsxLDI1IEBACis8aHRtbD4KKzxo
ZWFkPgorPHRpdGxlPnBhdHRlcm4gYXR0cmlidXRlIHByZXNlbmNlIHRlc3Q8L3RpdGxlPgorPHNj
cmlwdCBsYW5ndWFnZT0iSmF2YVNjcmlwdCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICBm
dW5jdGlvbiBsb2cobWVzc2FnZSkgeworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
Y29uc29sZSIpLmlubmVySFRNTCArPSAiPGxpPiIrbWVzc2FnZSsiPC9saT4iOworICAgIH0KKwor
ICAgIGZ1bmN0aW9uIHRlc3QoKSB7CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisK
KyAgICAgICAgdiA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKCJ2aWN0aW0iKTsKKworICAg
ICAgICBsb2codlswXS5wYXR0ZXJuID8gIlNVQ0NFU1MiIDogIkZBSUxVUkUiKTsKKyAgICB9Cis8
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0idGVzdCgpIj4KKzxwPlRoZXJlIGFuIGlu
cHV0IGVsZW1lbnQgd2l0aCB0aGUgcGF0dGVybiBhdHRyaWJ1dGUgc2V0LjwvcD4KKzxpbnB1dCBu
YW1lPSJ2aWN0aW0iIHBhdHRlcm49InNvbWV0aGluZyIgLz4KKzxocj4KKzxvbCBpZD0iY29uc29s
ZSI+PC9vbD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvcGF0dGVybi1hdHRyaWJ1dGUtMDAyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zh
c3QvZm9ybXMvcGF0dGVybi1hdHRyaWJ1dGUtMDAyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi43YTJkOTVmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy9wYXR0ZXJuLWF0dHJpYnV0ZS0wMDItZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsNCBAQAorVGhlcmUgYW4gaW5wdXQgZWxlbWVudCB3aXRoIHRoZSBwYXR0ZXJuIGF0dHJp
YnV0ZSBub3Qgc2V0LgorCisKK1NVQ0NFU1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvcGF0dGVybi1hdHRyaWJ1dGUtMDAyLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L3BhdHRlcm4tYXR0cmlidXRlLTAwMi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmU5ZGI0MjgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L3BhdHRlcm4tYXR0cmlidXRlLTAwMi5odG1sCkBAIC0wLDAgKzEsMjUgQEAKKzxodG1sPgorPGhl
YWQ+Cis8dGl0bGU+cGF0dGVybiBhdHRyaWJ1dGUgc2V0L2dldCB0ZXN0PC90aXRsZT4KKzxzY3Jp
cHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgZnVu
Y3Rpb24gbG9nKG1lc3NhZ2UpIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNv
bnNvbGUiKS5pbm5lckhUTUwgKz0gIjxsaT4iK21lc3NhZ2UrIjwvbGk+IjsKKyAgICB9CisKKyAg
ICBmdW5jdGlvbiB0ZXN0KCkgeworICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQorICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisg
ICAgICAgIHYgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgidmljdGltIik7CisgICAgICAg
IHZbMF0ucGF0dGVybiA9ICJzb21ldGhpbmciOworICAgICAgICBsb2codlswXS5wYXR0ZXJuID09
ICJzb21ldGhpbmciID8gIlNVQ0NFU1MiIDogIkZBSUxVUkUiKTsKKyAgICB9Cis8L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5IG9ubG9hZD0idGVzdCgpIj4KKzxwPlRoZXJlIGFuIGlucHV0IGVsZW1l
bnQgd2l0aCB0aGUgcGF0dGVybiBhdHRyaWJ1dGUgbm90IHNldC48L3A+Cis8aW5wdXQgbmFtZT0i
dmljdGltIiAvPgorPGhyPgorPG9sIGlkPSJjb25zb2xlIj48L29sPgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9wYXR0ZXJuLWF0dHJpYnV0ZS0w
MDMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9wYXR0ZXJuLWF0dHJpYnV0
ZS0wMDMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFk
ZTNhOWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3BhdHRlcm4t
YXR0cmlidXRlLTAwMy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACitUaGVyZSBhbiBpbnB1
dCBlbGVtZW50IHdpdGggdGhlIHBhdHRlcm4gYXR0cmlidXRlIHNldC4KKworCitTVUNDRVNTCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3BhdHRlcm4tYXR0cmlidXRlLTAwMy5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9wYXR0ZXJuLWF0dHJpYnV0ZS0wMDMuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZWVhNmY1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9wYXR0ZXJuLWF0dHJpYnV0ZS0wMDMuaHRtbApA
QCAtMCwwICsxLDI1IEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPnBhdHRlcm4gYXR0cmlidXRl
IHNldCB0ZXN0PC90aXRsZT4KKzxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQiIHR5cGU9InRl
eHQvamF2YXNjcmlwdCI+CisgICAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpIHsKKyAgICAgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5pbm5lckhUTUwgKz0gIjxsaT4iK21lc3Nh
Z2UrIjwvbGk+IjsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0KCkgeworICAgICAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgICAgIHYgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
TmFtZSgidmljdGltIik7CisgICAgICAgIHZbMF0ucGF0dGVybiArPSAiIGVsc2UiOworICAgICAg
ICBsb2codlswXS5wYXR0ZXJuID09ICJzb21ldGhpbmcgZWxzZSIgPyAiU1VDQ0VTUyIgOiAiRkFJ
TFVSRSIpOworICAgIH0KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJ0ZXN0KCki
PgorPHA+VGhlcmUgYW4gaW5wdXQgZWxlbWVudCB3aXRoIHRoZSBwYXR0ZXJuIGF0dHJpYnV0ZSBz
ZXQuPC9wPgorPGlucHV0IG5hbWU9InZpY3RpbSIgcGF0dGVybj0ic29tZXRoaW5nIiAvPgorPGhy
PgorPG9sIGlkPSJjb25zb2xlIj48L29sPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3OTJmMTM5Li5kYzAw
MjY5IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDM0IEBACisyMDA5LTA3LTI0ICBNaWNoZWxhbmdlbG8gRGUgU2ltb25lICA8
bWljZGVzaW1AZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTU1
MgorICAgICAgICBBZGRlZCBuZXcgInBhdHRlcm4iIGF0dHJpYnV0ZSB0byBIVE1MSW5wdXRFbGVt
ZW50IGFuZCB2YWxpZGF0aW9uIGNvZGUKKyAgICAgICAgKHZhbGlkaXR5LnBhdHRlcm5NaXNtYXRj
aCkgYXMgcGVyIEhUTUw1IHNwZWNzLgorICAgICAgICBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3Bl
Y3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS9mb3Jtcy5odG1sI2F0dHItaW5wdXQt
cGF0dGVybgorCisgICAgICAgIFRlc3RzOiBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtMDAyLmh0
bWwKKyAgICAgICAgICAgICAgIGZhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS1wYXR0ZXJuTWlzbWF0
Y2gtMDAxLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS1wYXR0
ZXJuTWlzbWF0Y2gtMDAyLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZm9ybXMvVmFsaWRpdHlT
dGF0ZS1wYXR0ZXJuTWlzbWF0Y2gtMDAzLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZm9ybXMv
VmFsaWRpdHlTdGF0ZS1wYXR0ZXJuTWlzbWF0Y2gtMDA0Lmh0bWwKKyAgICAgICAgICAgICAgIGZh
c3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS1wYXR0ZXJuTWlzbWF0Y2gtMDA1Lmh0bWwKKyAgICAgICAg
ICAgICAgIGZhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS1wYXR0ZXJuTWlzbWF0Y2gtMDA2Lmh0bWwK
KyAgICAgICAgICAgICAgIGZhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS1wYXR0ZXJuTWlzbWF0Y2gt
MDA3Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZm9ybXMvcGF0dGVybi1hdHRyaWJ1dGUtMDAx
Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZm9ybXMvcGF0dGVybi1hdHRyaWJ1dGUtMDAyLmh0
bWwKKyAgICAgICAgICAgICAgIGZhc3QvZm9ybXMvcGF0dGVybi1hdHRyaWJ1dGUtMDAzLmh0bWwK
KworICAgICAgICAqIGh0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluOiBwYXR0ZXJuIGF0dHJpYnV0
ZQorICAgICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6cGF0dGVybk1pc21hdGNoKTogbWV0aG9kIGRl
ZmluaXRpb24KKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6cGF0dGVybk1pc21hdGNoKTogdmFsaWRhdGlvbiBt
ZXRob2QKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1s
L0hUTUxJbnB1dEVsZW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwvVmFsaWRpdHlTdGF0ZS5oOgor
ICAgICAgICAoV2ViQ29yZTo6VmFsaWRpdHlTdGF0ZTo6cGF0dGVybk1pc21hdGNoKTogdmFsaWRh
dGlvbiBmbGFnCisKIDIwMDktMDctMjAgIEJhbGF6cyBLZWxlbWVuICA8a2VsZW1lbi5iYWxhenMu
M0BzdHVkLnUtc3plZ2VkLmh1PgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5u
LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbiBiL1dlYkNv
cmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4KaW5kZXggNmQ0ZDNjYi4uMTVkYjNlOSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgorKysgYi9XZWJDb3Jl
L2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCkBAIC0xODUsNiArMTg1LDcgQEAgb253ZWJraXRh
bmltYXRpb25zdGFydAogb253ZWJraXRhbmltYXRpb25pdGVyYXRpb24KIG9ud2Via2l0YW5pbWF0
aW9uZW5kCiBvbndlYmtpdHRyYW5zaXRpb25lbmQKK3BhdHRlcm4KIHBsYWNlaG9sZGVyCiBwbHVn
aW51cmwKIHBvc3RlcgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVs
ZW1lbnQuaCBiL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKaW5kZXggZmIw
ZGEyOS4uZDNkZDYwZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVs
ZW1lbnQuaAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oCkBAIC0x
MDUsNiArMTA1LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIHdpbGxWYWxpZGF0ZSgp
IGNvbnN0OwogCisgICAgdmlydHVhbCBib29sIHBhdHRlcm5NaXNtYXRjaCgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CisKICAgICB2b2lkIGZvcm1EZXN0cm95ZWQoKSB7IG1fZm9ybSA9IDA7IH0K
IAogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaEZvY3VzRXZlbnQoKTsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRF
bGVtZW50LmNwcAppbmRleCBmNGM0NjZjLi4yZmM0ZWZkIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0
bWwvSFRNTElucHV0RWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1l
bnQuY3BwCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSAiTWFwcGVkQXR0cmlidXRlLmgiCiAj
aW5jbHVkZSAiTW91c2VFdmVudC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJSZWd1
bGFyRXhwcmVzc2lvbi5oIgogI2luY2x1ZGUgIlJlbmRlckJ1dHRvbi5oIgogI2luY2x1ZGUgIlJl
bmRlckZpbGVVcGxvYWRDb250cm9sLmgiCiAjaW5jbHVkZSAiUmVuZGVySW1hZ2UuaCIKQEAgLTE0
Nyw2ICsxNDgsNDYgQEAgYm9vbCBIVE1MSW5wdXRFbGVtZW50Ojp2YWx1ZU1pc3NpbmcoKSBjb25z
dAogICAgIHJldHVybiBmYWxzZTsKIH0KIAorYm9vbCBIVE1MSW5wdXRFbGVtZW50OjpwYXR0ZXJu
TWlzbWF0Y2goKSBjb25zdAoreworICAgIHN3aXRjaCAoaW5wdXRUeXBlKCkpIHsKKyAgICAgICAg
Y2FzZSBJU0lOREVYOgorICAgICAgICBjYXNlIENIRUNLQk9YOgorICAgICAgICBjYXNlIFJBRElP
OgorICAgICAgICBjYXNlIFNVQk1JVDoKKyAgICAgICAgY2FzZSBSRVNFVDoKKyAgICAgICAgY2Fz
ZSBGSUxFOgorICAgICAgICBjYXNlIEhJRERFTjoKKyAgICAgICAgY2FzZSBJTUFHRToKKyAgICAg
ICAgY2FzZSBCVVRUT046CisgICAgICAgIGNhc2UgUkFOR0U6CisgICAgICAgIGNhc2UgTlVNQkVS
OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBjYXNlIFRFWFQ6CisgICAgICAg
IGNhc2UgU0VBUkNIOgorICAgICAgICBjYXNlIFVSTDoKKyAgICAgICAgY2FzZSBURUxFUEhPTkU6
CisgICAgICAgIGNhc2UgRU1BSUw6CisgICAgICAgIGNhc2UgUEFTU1dPUkQ6CisgICAgICAgICAg
ICBjb25zdCBBdG9taWNTdHJpbmcmIHBhdHRlcm4gPSBnZXRBdHRyaWJ1dGUocGF0dGVybkF0dHIp
OworICAgICAgICAgICAgU3RyaW5nIHZhbHVlID0gdGhpcy0+dmFsdWUoKTsKKworICAgICAgICAg
ICAgLy8gRW1wdHkgdmFsdWVzIGNhbid0IGJlIG1pc21hdGNoZWQKKyAgICAgICAgICAgIGlmIChw
YXR0ZXJuLmlzRW1wdHkoKSB8fCB2YWx1ZS5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgICAgICAgICBSZWd1bGFyRXhwcmVzc2lvbiBwYXR0ZXJuUmVnRXhw
KHBhdHRlcm4sIFRleHRDYXNlU2Vuc2l0aXZlKTsKKyAgICAgICAgICAgIGludCBtYXRjaExlbmd0
aCA9IDA7CisgICAgICAgICAgICBpbnQgdmFsdWVMZW5ndGggPSB2YWx1ZS5sZW5ndGgoKTsKKyAg
ICAgICAgICAgIGludCBtYXRjaE9mZnNldCA9IHBhdHRlcm5SZWdFeHAubWF0Y2godmFsdWUsIDAs
ICZtYXRjaExlbmd0aCk7CisKKyAgICAgICAgICAgIHJldHVybiBtYXRjaE9mZnNldCAhPSAwIHx8
IG1hdGNoTGVuZ3RoICE9IHZhbHVlTGVuZ3RoOworICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwogc3RhdGljIGlubGluZSBDaGVja2VkUmFk
aW9CdXR0b25zJiBjaGVja2VkUmFkaW9CdXR0b25zKGNvbnN0IEhUTUxJbnB1dEVsZW1lbnQgKmVs
ZW1lbnQpCiB7CiAgICAgaWYgKEhUTUxGb3JtRWxlbWVudCogZm9ybSA9IGVsZW1lbnQtPmZvcm0o
KSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmggYi9XZWJDb3Jl
L2h0bWwvSFRNTElucHV0RWxlbWVudC5oCmluZGV4IDZhZWQ4MjMuLjRkODg3ZjMgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKKysrIGIvV2ViQ29yZS9odG1sL0hU
TUxJbnB1dEVsZW1lbnQuaApAQCAtOTEsNiArOTEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBi
b29sIGlzVGV4dEZvcm1Db250cm9sKCkgY29uc3QgeyByZXR1cm4gaXNUZXh0RmllbGQoKTsgfQog
CiAgICAgdmlydHVhbCBib29sIHZhbHVlTWlzc2luZygpIGNvbnN0OworICAgIHZpcnR1YWwgYm9v
bCBwYXR0ZXJuTWlzbWF0Y2goKSBjb25zdDsKIAogICAgIGJvb2wgaXNUZXh0QnV0dG9uKCkgY29u
c3QgeyByZXR1cm4gbV90eXBlID09IFNVQk1JVCB8fCBtX3R5cGUgPT0gUkVTRVQgfHwgbV90eXBl
ID09IEJVVFRPTjsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1JhZGlvQnV0dG9uKCkgY29uc3QgeyBy
ZXR1cm4gbV90eXBlID09IFJBRElPOyB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTElu
cHV0RWxlbWVudC5pZGwgYi9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5pZGwKaW5kZXgg
M2E0MTBkZi4uZTE5YjMwZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1l
bnQuaWRsCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmlkbApAQCAtNDEsNiAr
NDEsNyBAQCBtb2R1bGUgaHRtbCB7CiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBsb25nICAg
ICAgICAgICAgbWF4TGVuZ3RoOwogICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgYm9vbGVhbiAg
ICAgICAgIG11bHRpcGxlOwogICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgW0NvbnZlcnROdWxs
VG9OdWxsU3RyaW5nXSBET01TdHJpbmcgbmFtZTsKKyAgICAgICAgICAgICAgICAgYXR0cmlidXRl
IFtSZWZsZWN0XSBET01TdHJpbmcgICAgICAgcGF0dGVybjsKICAgICAgICAgICAgICAgICAgYXR0
cmlidXRlIERPTVN0cmluZyAgICAgICBwbGFjZWhvbGRlcjsKICAgICAgICAgICAgICAgICAgYXR0
cmlidXRlIGJvb2xlYW4gICAgICAgICByZWFkT25seTsKICAgICAgICAgICAgICAgICAgYXR0cmli
dXRlIGJvb2xlYW4gICAgICAgICByZXF1aXJlZDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9W
YWxpZGl0eVN0YXRlLmggYi9XZWJDb3JlL2h0bWwvVmFsaWRpdHlTdGF0ZS5oCmluZGV4IDYwYzBk
YzYuLjRiMmYwMjIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9WYWxpZGl0eVN0YXRlLmgKKysr
IGIvV2ViQ29yZS9odG1sL1ZhbGlkaXR5U3RhdGUuaApAQCAtNDAsNyArNDAsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKICAgICAgICAgYm9vbCB2YWx1ZU1pc3NpbmcoKSB7IHJldHVybiBjb250
cm9sKCktPnZhbHVlTWlzc2luZygpOyB9CiAgICAgICAgIGJvb2wgdHlwZU1pc21hdGNoKCkgeyBy
ZXR1cm4gZmFsc2U7IH0KLSAgICAgICAgYm9vbCBwYXR0ZXJuTWlzbWF0Y2goKSB7IHJldHVybiBm
YWxzZTsgfQorICAgICAgICBib29sIHBhdHRlcm5NaXNtYXRjaCgpIHsgcmV0dXJuIGNvbnRyb2wo
KS0+cGF0dGVybk1pc21hdGNoKCk7IH0KICAgICAgICAgYm9vbCB0b29Mb25nKCkgeyByZXR1cm4g
ZmFsc2U7IH0KICAgICAgICAgYm9vbCByYW5nZVVuZGVyZmxvdygpIHsgcmV0dXJuIGZhbHNlOyB9
CiAgICAgICAgIGJvb2wgcmFuZ2VPdmVyZmxvdygpIHsgcmV0dXJuIGZhbHNlOyB9Cg==
</data>
<flag name="review"
          id="17686"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>