<?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>65542</bug_id>
          
          <creation_ts>2011-08-02 08:14:20 -0700</creation_ts>
          <short_desc>Need support for dirname attribute</short_desc>
          <delta_ts>2012-01-21 01:59:40 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>72003</dependson>
          <blocked>50910</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Aharon (Vladimir) Lanin">aharon</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>adele</cc>
    
    <cc>aharon</cc>
    
    <cc>amir.aharoni</cc>
    
    <cc>code.vineet</cc>
    
    <cc>donggwan.kim</cc>
    
    <cc>dwim79</cc>
    
    <cc>eric</cc>
    
    <cc>leviw</cc>
    
    <cc>mdwajahatali.siddiqui</cc>
    
    <cc>mifenton</cc>
    
    <cc>mitz</cc>
    
    <cc>ojan</cc>
    
    <cc>playmobil</cc>
    
    <cc>rakeshchaitan</cc>
    
    <cc>rniwa</cc>
    
    <cc>tkent</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xji</cc>
    
    <cc>yael</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>445272</commentid>
    <comment_count>0</comment_count>
      <attachid>102654</attachid>
    <who name="Aharon (Vladimir) Lanin">aharon</who>
    <bug_when>2011-08-02 08:14:20 -0700</bug_when>
    <thetext>Created attachment 102654
test case

HTML5 added a new attribute for &lt;input&gt; and &lt;textarea&gt;, dirname (http://dev.w3.org/html5/spec/Overview.html#the-dirname-attribute):

&quot;A form control dirname attribute on a form control element enables the submission of the directionality of the element, and gives the name of the field that contains this value during form submission. If such an attribute is specified, its value must not be the empty string.&quot;

Please note that the directionality is always either &quot;ltr&quot; or &quot;rtl&quot;. It is never &quot;auto&quot; or &quot;&quot; or null.

Example:

&lt;form action=&quot;addcomment.cgi&quot; method=post&gt;
 &lt;p&gt;&lt;label&gt;Comment: &lt;input type=text name=&quot;comment&quot; dirname=&quot;comment.dir&quot; required&gt;&lt;/label&gt;&lt;/p&gt;
 &lt;p&gt;&lt;button name=&quot;mode&quot; type=submit value=&quot;add&quot;&gt;Post Comment&lt;/button&gt;&lt;/p&gt;
&lt;/form&gt;
When the user submits the form, the user agent includes three fields, one called &quot;comment&quot;, one called &quot;comment.dir&quot;, and one called &quot;mode&quot;; so if the user types &quot;Hello&quot;, the submission body might be something like:

comment=Hello&amp;comment.dir=ltr&amp;mode=add
If the user manually switches to a right-to-left writing direction and enters &quot;مرحبًا&quot;, the submission body might be something like:

comment=%D9%85%D8%B1%D8%AD%D8%A8%D9%8B%D8%A7&amp;comment.dir=rtl&amp;mode=add</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471334</commentid>
    <comment_count>1</comment_count>
    <who name="Dongwoo Joshua Im">dwim79</who>
    <bug_when>2011-09-21 20:56:46 -0700</bug_when>
    <thetext>This feature is still not supported. Is there anyone who have plan to implement this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485031</commentid>
    <comment_count>2</comment_count>
      <attachid>111237</attachid>
    <who name="Rakesh">rakeshchaitan</who>
    <bug_when>2011-10-17 03:32:10 -0700</bug_when>
    <thetext>Created attachment 111237
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485039</commentid>
    <comment_count>3</comment_count>
      <attachid>111237</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-10-17 03:51:13 -0700</bug_when>
    <thetext>Comment on attachment 111237
Proposed patch

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

&gt; Source/WebCore/ChangeLog:24
&gt; +        * html/HTMLAttributeNames.in:
&gt; +        * html/HTMLInputElement.cpp:
&gt; +        (WebCore::HTMLInputElement::parseMappedAttribute):
&gt; +        (WebCore::HTMLInputElement::appendFormData):
&gt; +        * html/HTMLInputElement.idl:
&gt; +        * html/HTMLTextAreaElement.cpp:
&gt; +        (WebCore::HTMLTextAreaElement::appendFormData):
&gt; +        * html/HTMLTextAreaElement.idl:
&gt; +        * html/HTMLTextFormControlElement.cpp:
&gt; +        (WebCore::HTMLTextFormControlElement::parseMappedAttribute):
&gt; +        (WebCore::enclosingTextFormControl):
&gt; +        (WebCore::HTMLTextFormControlElement::appendFormData):
&gt; +        * html/HTMLTextFormControlElement.h:

Please write what you changed for each of files/functions.

&gt; Source/WebCore/html/HTMLInputElement.cpp:825
&gt; +    } else if (attr-&gt;name() == dirnameAttr) {
&gt; +        HTMLTextFormControlElement::parseMappedAttribute(attr);

This should be removed.
We call HTMLTextFormControlElement::parseMappedAttribute(attr) at the bottom of the function.

&gt; Source/WebCore/html/HTMLInputElement.cpp:941
&gt; +    if (result &amp;&amp; fastHasAttribute(dirnameAttr) &amp;&amp; (isTextField() || isSearchField()))
&gt; +        result = HTMLTextFormControlElement::appendFormData(encoding, multipart);
&gt; +    return result;

* isSearchField() is redundant because isTextField() is always true if isSearchField() is true.
* This code should be in TextFieldInputType::appendFormData().
  Having dirname processing in HTMLTextFormControlElement::appendFormData() is very strange.
  So, I think we had better add a public helper function to HTMLTextFormControlElement, and it is called from TextFieldInputType::appendFormData() and HTMLTextAreaElemet::appendFormData().

&gt; Source/WebCore/html/HTMLTextFormControlElement.cpp:434
&gt; +    else if (attr-&gt;name() == dirnameAttr)
&gt; +        m_dirName = attr-&gt;value();

m_dirName is not needed.

&gt; Source/WebCore/html/HTMLTextFormControlElement.cpp:585
&gt; +    else if (hasAttribute(dirAttr))
&gt; +        dir = getAttribute(dirAttr).string();

Should use fastHasAttribute() and fastGetAttribute().

&gt; Source/WebCore/html/HTMLTextFormControlElement.cpp:589
&gt; +    list.appendData(m_dirName.string(), dir);

We can use fastGetAttribute(dirnameAttr)

&gt; LayoutTests/fast/forms/form-dirname-attribute.html:18
&gt; +var input = document.createElement(&apos;input&apos;);
&gt; +input.setAttribute(&apos;dirName&apos;, &quot;Hello&quot;);
&gt; +shouldBeEqualToString(&apos;input.dirName&apos;, &quot;Hello&quot;);
&gt; +
&gt; +var textArea = document.createElement(&apos;textarea&apos;);
&gt; +textArea.setAttribute(&apos;dirName&apos;, &quot;Hello&quot;);
&gt; +shouldBeEqualToString(&apos;textArea.dirName&apos;, &quot;Hello&quot;);

Need tests of form submission with dirname attribute.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485821</commentid>
    <comment_count>4</comment_count>
      <attachid>111386</attachid>
    <who name="Rakesh">rakeshchaitan</who>
    <bug_when>2011-10-17 22:54:58 -0700</bug_when>
    <thetext>Created attachment 111386
Updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485822</commentid>
    <comment_count>5</comment_count>
    <who name="Rakesh">rakeshchaitan</who>
    <bug_when>2011-10-17 22:57:17 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 111237 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=111237&amp;action=review
&gt; 
Thanks for your inputs, made necessary changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488074</commentid>
    <comment_count>6</comment_count>
      <attachid>111386</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-10-20 18:39:58 -0700</bug_when>
    <thetext>Comment on attachment 111386
Updated patch

r- because of test coverage.


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

&gt; Source/WebCore/html/HTMLTextFormControlElement.cpp:584
&gt; +    TextDirection textDirection = directionalityIfhasDirAutoAttribute(isAuto);
&gt; +    if (isAuto)
&gt; +        dir = String(textDirection == RTL ? &quot;rtl&quot; : &quot;ltr&quot;);
&gt; +    else if (hasAttribute(dirAttr))
&gt; +        dir = getAttribute(dirAttr).string();
&gt; +    else
&gt; +        dir = String(&quot;ltr&quot;);

I don&apos;t know this is a right code to detect direction of the value.
Does any WebKit RTL expert have comment on this?

&gt; Source/WebCore/html/HTMLTextFormControlElement.h:82
&gt; +    String dirNameAttributeFormData() const;

I think the function name is not reasonable.  How about formDataDirection(), or directionForFormData()?

&gt; LayoutTests/fast/forms/submit-form-with-dirname-attribute.html:16
&gt; +&lt;form action=&quot;#action&quot; method=&quot;GET&quot; name=&quot;f&quot;&gt;
&gt; +    &lt;p&gt;&lt;label&gt;Comment: &lt;input type=text name=&quot;comment&quot; dirname=&quot;comment.dir&quot; required&gt;&lt;/label&gt;&lt;/p&gt;
&gt; +    &lt;p&gt;&lt;button name=&quot;mode&quot; type=submit value=&quot;add&quot;&gt;Post Comment&lt;/button&gt;&lt;/p&gt;
&gt; +&lt;/form&gt;

The test coverage is too low.  We need to test
* &lt;input&gt; and &lt;textarea&gt;
* The target element has no dir attribute, dir=rtl, dir=ltr, dir=invalid.
* The target element has no dir attribute but an ancestor element has dir= attribute.
* The target element has RTL value, and LTR value with/without dir= attribtue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488170</commentid>
    <comment_count>7</comment_count>
    <who name="Rakesh">rakeshchaitan</who>
    <bug_when>2011-10-20 22:57:44 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 111386 [details])
&gt; r- because of test coverage.
&gt; 
&gt; 
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=111386&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/html/HTMLTextFormControlElement.cpp:584
&gt; &gt; +    TextDirection textDirection = directionalityIfhasDirAutoAttribute(isAuto);
&gt; &gt; +    if (isAuto)
&gt; &gt; +        dir = String(textDirection == RTL ? &quot;rtl&quot; : &quot;ltr&quot;);
&gt; &gt; +    else if (hasAttribute(dirAttr))
&gt; &gt; +        dir = getAttribute(dirAttr).string();
&gt; &gt; +    else
&gt; &gt; +        dir = String(&quot;ltr&quot;);
&gt; 
&gt; I don&apos;t know this is a right code to detect direction of the value.
&gt; Does any WebKit RTL expert have comment on this?
&gt; 
Yes, RTL expert can comment on this.

&gt; &gt; Source/WebCore/html/HTMLTextFormControlElement.h:82
&gt; &gt; +    String dirNameAttributeFormData() const;
&gt; 
&gt; I think the function name is not reasonable.  How about formDataDirection(), or directionForFormData()?

directionForFormData() looks better to me.

&gt; The test coverage is too low.  We need to test
&gt; * &lt;input&gt; and &lt;textarea&gt;
&gt; * The target element has no dir attribute, dir=rtl, dir=ltr, dir=invalid.
&gt; * The target element has no dir attribute but an ancestor element has dir= attribute.
&gt; * The target element has RTL value, and LTR value with/without dir= attribtue.

Ok, will cover this tests too.

Thanks for taking time to review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>493493</commentid>
    <comment_count>8</comment_count>
      <attachid>111386</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-10-31 14:17:41 -0700</bug_when>
    <thetext>Comment on attachment 111386
Updated patch

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

&gt; Source/WebCore/html/HTMLTextFormControlElement.cpp:580
&gt; +        dir = String(textDirection == RTL ? &quot;rtl&quot; : &quot;ltr&quot;);

Why are you doing these explicit string conversions?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>493496</commentid>
    <comment_count>9</comment_count>
      <attachid>111386</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-10-31 14:21:26 -0700</bug_when>
    <thetext>Comment on attachment 111386
Updated patch

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

&gt; Source/WebCore/html/HTMLTextAreaElement.cpp:177
&gt; +    if (fastHasAttribute(dirnameAttr))

is fastHasAttribute correct to use?  What&apos;s the difference between fast and normal hasAttribute?

&gt; Source/WebCore/html/HTMLTextAreaElement.cpp:178
&gt; +        encoding.appendData(fastGetAttribute(dirnameAttr).string(), dirNameAttributeFormData());

Why do we need the explicit .string() call?  AtomicStings and Strings convert implicitly jsut fine.

&gt; Source/WebCore/html/HTMLTextFormControlElement.cpp:575
&gt; +    String dir;

No need for a local, just return once you know the value.

&gt; Source/WebCore/html/HTMLTextFormControlElement.cpp:578
&gt; +    TextDirection textDirection = directionalityIfhasDirAutoAttribute(isAuto);

Ifhas?  Bad caps?

&gt; LayoutTests/fast/forms/form-dirname-attribute-expected.txt:4
&gt; +PASS input.dirName is &quot;Hello&quot;
&gt; +PASS textArea.dirName is &quot;Hello&quot;

We&apos;re suppose to ignore values other than rtl/ltr, correct?  Do we do that at submission time or at parse time?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>493828</commentid>
    <comment_count>10</comment_count>
      <attachid>111386</attachid>
    <who name="Jeremy Moskovich">playmobil</who>
    <bug_when>2011-11-01 03:17:15 -0700</bug_when>
    <thetext>Comment on attachment 111386
Updated patch

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

disclaimer: I&apos;m not  a WK reviewer

&gt;&gt;&gt; Source/WebCore/html/HTMLTextFormControlElement.cpp:584
&gt;&gt;&gt; +        dir = String(&quot;ltr&quot;);
&gt;&gt; 
&gt;&gt; I don&apos;t know this is a right code to detect direction of the value.
&gt;&gt; Does any WebKit RTL expert have comment on this?
&gt; 
&gt; Yes, RTL expert can comment on this.

Seems really wrong that you&apos;re resolving the style yourself here, then again that might be the right way of doing it.
Would  computedStyle()-&gt;direction() work?

&gt;&gt; LayoutTests/fast/forms/submit-form-with-dirname-attribute.html:16
&gt;&gt; +&lt;/form&gt;
&gt; 
&gt; The test coverage is too low.  We need to test
&gt; * &lt;input&gt; and &lt;textarea&gt;
&gt; * The target element has no dir attribute, dir=rtl, dir=ltr, dir=invalid.
&gt; * The target element has no dir attribute but an ancestor element has dir= attribute.
&gt; * The target element has RTL value, and LTR value with/without dir= attribtue.

Seconded, esp. the &quot;ancestor element with dir= attribute&quot; case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>493875</commentid>
    <comment_count>11</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2011-11-01 06:33:49 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 111386 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=111386&amp;action=review
&gt; 
&gt; disclaimer: I&apos;m not  a WK reviewer
&gt; 
&gt; &gt;&gt;&gt; Source/WebCore/html/HTMLTextFormControlElement.cpp:584
&gt; &gt;&gt;&gt; +        dir = String(&quot;ltr&quot;);
&gt; &gt;&gt; 
&gt; &gt;&gt; I don&apos;t know this is a right code to detect direction of the value.
&gt; &gt;&gt; Does any WebKit RTL expert have comment on this?
&gt; &gt; 
&gt; &gt; Yes, RTL expert can comment on this.
&gt; 
&gt; Seems really wrong that you&apos;re resolving the style yourself here, then again that might be the right way of doing it.
&gt; Would  computedStyle()-&gt;direction() work?
&gt; 
My understanding of the spec is that we need to consider only &quot;dir&quot; attribute and not css style &quot;direction&quot;. Perhaps Aharon can confirm that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>493987</commentid>
    <comment_count>12</comment_count>
    <who name="Aharon (Vladimir) Lanin">aharon</who>
    <bug_when>2011-11-01 10:19:16 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #10)
&gt; &gt; (From update of attachment 111386 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=111386&amp;action=review
&gt; &gt; 
&gt; &gt; disclaimer: I&apos;m not  a WK reviewer
&gt; &gt; 
&gt; &gt; &gt;&gt;&gt; Source/WebCore/html/HTMLTextFormControlElement.cpp:584
&gt; &gt; &gt;&gt;&gt; +        dir = String(&quot;ltr&quot;);
&gt; &gt; &gt;&gt; 
&gt; &gt; &gt;&gt; I don&apos;t know this is a right code to detect direction of the value.
&gt; &gt; &gt;&gt; Does any WebKit RTL expert have comment on this?
&gt; &gt; &gt; 
&gt; &gt; &gt; Yes, RTL expert can comment on this.
&gt; &gt; 
&gt; &gt; Seems really wrong that you&apos;re resolving the style yourself here, then again that might be the right way of doing it.
&gt; &gt; Would  computedStyle()-&gt;direction() work?
&gt; &gt; 
&gt; My understanding of the spec is that we need to consider only &quot;dir&quot; attribute and not css style &quot;direction&quot;. Perhaps Aharon can confirm that?

The HTML spec says that the value has to have &quot;the directionality&quot; of the element, i.e. http://dev.w3.org/html5/spec/Overview.html#the-directionality. This, indeed, is not a function of CSS, but only of the element&apos;s (or an ancestor&apos;s) dir attribute - and the element&apos;s value, if the dir value is auto. (The dirname control&apos;s value is always either &quot;ltr&quot; or &quot;rtl&quot; - never &quot;auto&quot;.)

When I filed a bug on the HTML spec (http://www.w3.org/Bugs/Public/show_bug.cgi?id=10809) requesting this feature, I had asked for the computed direction style to be reported. Others had also expected this to be the outcome. However, when the HTML spec editor finally agreed to put in the feature (or a version of it that he liked), he formulated it to use the directionality, not the computed direction style. There may have been weighty reasons for that; I did not ask. It does seem a bit backwards to have an HTML feature be dependent on CSS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494464</commentid>
    <comment_count>13</comment_count>
    <who name="Rakesh">rakeshchaitan</who>
    <bug_when>2011-11-02 00:19:32 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 111386 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=111386&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/html/HTMLTextAreaElement.cpp:177
&gt; &gt; +    if (fastHasAttribute(dirnameAttr))
&gt; 
&gt; is fastHasAttribute correct to use?  What&apos;s the difference between fast and normal hasAttribute?

As per comment in Element.h, 
// Call this to get the value of an attribute that is known not to be the style
// attribute or one of the SVG animatable attributes.
as dirname is not an style attribute, used fastHasAttribute.

&gt; 
&gt; &gt; Source/WebCore/html/HTMLTextAreaElement.cpp:178
&gt; &gt; +        encoding.appendData(fastGetAttribute(dirnameAttr).string(), dirNameAttributeFormData());
&gt; 
&gt; Why do we need the explicit .string() call?  AtomicStings and Strings convert implicitly jsut fine.
&gt; 

Agreed.

&gt; &gt; Source/WebCore/html/HTMLTextFormControlElement.cpp:575
&gt; &gt; +    String dir;
&gt; 
&gt; No need for a local, just return once you know the value.
&gt; 

Agreed.

&gt; &gt; Source/WebCore/html/HTMLTextFormControlElement.cpp:578
&gt; &gt; +    TextDirection textDirection = directionalityIfhasDirAutoAttribute(isAuto);
&gt; 
&gt; Ifhas?  Bad caps?
&gt; 

directionalityIfhasDirAutoAttribute is an existing api, it would be better if that change happens through another patch.  

&gt; &gt; LayoutTests/fast/forms/form-dirname-attribute-expected.txt:4
&gt; &gt; +PASS input.dirName is &quot;Hello&quot;
&gt; &gt; +PASS textArea.dirName is &quot;Hello&quot;
&gt; 
&gt; We&apos;re suppose to ignore values other than rtl/ltr, correct?  Do we do that at submission time or at parse time?

I think that code can be added at HTMLTextFormControlElement::dirNameAttributeFormData(), please let me know if this is not the right place to do.

Thanks for taking time to review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494467</commentid>
    <comment_count>14</comment_count>
    <who name="Rakesh">rakeshchaitan</who>
    <bug_when>2011-11-02 00:23:21 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 111386 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=111386&amp;action=review

&gt; &gt; Yes, RTL expert can comment on this.
&gt; 
&gt; Seems really wrong that you&apos;re resolving the style yourself here, then again that might be the right way of doing it.
&gt; Would  computedStyle()-&gt;direction() work?
&gt; 

Yes, that would have taken care of even a wrong dir value other that rtl/ltr/auto case also but as suggested in the comment#11 and 12, dir attribute is needed as per spec.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494519</commentid>
    <comment_count>15</comment_count>
    <who name="Rakesh">rakeshchaitan</who>
    <bug_when>2011-11-02 02:38:38 -0700</bug_when>
    <thetext>Please suggest if following code for finding directionality is correct?

if (fastHasAttribute(dirAttr)) {
    AtomicString dirAttributeValue = fastGetAttribute(dirAttr);
    if (equalIgnoringCase(dirAttributeValue, &quot;rtl&quot;) || equalIgnoringCase(dirAttributeValue, &quot;ltr&quot;))
        return dirAttributeValue;             
  
    if (equalIgnoringCase(dirAttributeValue, &quot;auto&quot;)) {
        bool isAuto;
        TextDirection textDirection = directionalityIfhasDirAutoAttribute(isAuto);
        return textDirection == RTL ? &quot;rtl&quot; : &quot;ltr&quot;;             
    }                                   
}                      
    
return &quot;ltr&quot;;

I think &apos;return &quot;ltr&quot;;&apos; should be &apos;return directionality() == RTL ? &quot;rtl&quot; : &quot;ltr&quot;;&apos;
but directionality() is private in HTMLElement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495099</commentid>
    <comment_count>16</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2011-11-02 17:37:10 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; Please suggest if following code for finding directionality is correct?
&gt; 
&gt; if (fastHasAttribute(dirAttr)) {
&gt;     AtomicString dirAttributeValue = fastGetAttribute(dirAttr);
&gt;     if (equalIgnoringCase(dirAttributeValue, &quot;rtl&quot;) || equalIgnoringCase(dirAttributeValue, &quot;ltr&quot;))
&gt;         return dirAttributeValue;             
&gt; 
&gt;     if (equalIgnoringCase(dirAttributeValue, &quot;auto&quot;)) {
&gt;         bool isAuto;
&gt;         TextDirection textDirection = directionalityIfhasDirAutoAttribute(isAuto);
&gt;         return textDirection == RTL ? &quot;rtl&quot; : &quot;ltr&quot;;             
&gt;     }                                   
&gt; }                      
&gt; 
&gt; return &quot;ltr&quot;;
&gt; 
&gt; I think &apos;return &quot;ltr&quot;;&apos; should be &apos;return directionality() == RTL ? &quot;rtl&quot; : &quot;ltr&quot;;&apos;
&gt; but directionality() is private in HTMLElement.

If an element does not have a dir attribute, the default should be &quot;ltr&quot; . 
return &quot;ltr&quot; is the right thing to do here. Directionality should be checked only when there is a dir attribute and its value is &quot;auto&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495109</commentid>
    <comment_count>17</comment_count>
    <who name="Aharon (Vladimir) Lanin">aharon</who>
    <bug_when>2011-11-02 17:57:20 -0700</bug_when>
    <thetext>&gt; If an element does not have a dir attribute, the default should be &quot;ltr&quot; . 
&gt; return &quot;ltr&quot; is the right thing to do here. Directionality should be checked
&gt; only when there is a dir attribute and its value is &quot;auto&quot;.

Just making sure that there is no confusion. If an element does not have a dir attribute, one has to look for the closest ancestor that does. If no ancestor has it either, then it&apos;s &quot;ltr&quot;. If the element (or the closest ancestor) has &quot;auto&quot;, one has to check that element&apos;s directionality.

Thus:

&lt;html&gt;&lt;input dirname=foo&gt;&lt;/html&gt; -&gt; ltr (No ancestor has dir).
&lt;html&gt;&lt;input dirname=foo dir=rtl&gt;&lt;/html&gt; -&gt; rtl
&lt;html dir=rtl&gt;&lt;input dirname=foo&gt;&lt;/html&gt; -&gt; rtl (Closest ancestor has dir=rtl)
&lt;html&gt;&lt;div dir=auto&gt;&lt;input dirname=foo value=&quot;שלום&quot;&gt; hello&lt;/div&gt;&lt;/html&gt; -&gt; ltr (Closest ancestor has dir=auto, and its first strong content is LTR (&quot;hello&quot;), so it winds up being LTR, and the input inherits that. The input&apos;s value is not included in the ancestor text content for the purposes of the ancestor dir=auto estimation, per usual dir=auto rules.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495334</commentid>
    <comment_count>18</comment_count>
      <attachid>113458</attachid>
    <who name="Rakesh">rakeshchaitan</who>
    <bug_when>2011-11-03 04:10:37 -0700</bug_when>
    <thetext>Created attachment 113458
Updated patch

Added more test converage, changes for finding direction as per commnet#16 and 17 and review comments incorporated</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495335</commentid>
    <comment_count>19</comment_count>
    <who name="Rakesh">rakeshchaitan</who>
    <bug_when>2011-11-03 04:12:10 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; &gt; If an element does not have a dir attribute, the default should be &quot;ltr&quot; . 
&gt; &gt; return &quot;ltr&quot; is the right thing to do here. Directionality should be checked
&gt; &gt; only when there is a dir attribute and its value is &quot;auto&quot;.
&gt; 
&gt; Just making sure that there is no confusion. If an element does not have a dir attribute, one has to look for the closest ancestor that does. If no ancestor has it either, then it&apos;s &quot;ltr&quot;. If the element (or the closest ancestor) has &quot;auto&quot;, one has to check that element&apos;s directionality.
&gt; 
&gt; Thus:
&gt; 
&gt; &lt;html&gt;&lt;input dirname=foo&gt;&lt;/html&gt; -&gt; ltr (No ancestor has dir).
&gt; &lt;html&gt;&lt;input dirname=foo dir=rtl&gt;&lt;/html&gt; -&gt; rtl
&gt; &lt;html dir=rtl&gt;&lt;input dirname=foo&gt;&lt;/html&gt; -&gt; rtl (Closest ancestor has dir=rtl)
&gt; &lt;html&gt;&lt;div dir=auto&gt;&lt;input dirname=foo value=&quot;שלום&quot;&gt; hello&lt;/div&gt;&lt;/html&gt; -&gt; ltr (Closest ancestor has dir=auto, and its first strong content is LTR (&quot;hello&quot;), so it winds up being LTR, and the input inherits that. The input&apos;s value is not included in the ancestor text content for the purposes of the ancestor dir=auto estimation, per usual dir=auto rules.)

Thanks Yael and Aharon for the detailed inputs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495606</commentid>
    <comment_count>20</comment_count>
      <attachid>113458</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-11-03 10:27:47 -0700</bug_when>
    <thetext>Comment on attachment 113458
Updated patch

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

&gt; Source/WebCore/html/HTMLTextAreaElement.cpp:178
&gt; +    if (fastHasAttribute(dirnameAttr))
&gt; +        encoding.appendData(fastGetAttribute(dirnameAttr), directionForFormData());

This is less efficient than it could be. The right way to write it is:

    const AtomicString&amp; dirname = fastGetAttribute(dirnameAttr);
    if (!dirname.isNull())
        encoding.appendData(dirname, directionForFormData());

&gt; Source/WebCore/html/HTMLTextFormControlElement.cpp:576
&gt; +    const Element* element = this;
&gt; +    while (element) {

This should be written as a for loop, not a while loop.

&gt; Source/WebCore/html/HTMLTextFormControlElement.cpp:578
&gt; +        if (element-&gt;fastHasAttribute(dirAttr)) {
&gt; +            AtomicString dirAttributeValue(element-&gt;fastGetAttribute(dirAttr));

Not as efficient as it could be. Should be written like this:

    const AtomicString&amp; dirAttributeValue = element-&gt;fastGetAttribute(dirAttr);
    if (dirAttributeValue.isNull())
        continue;
    ...

Note that we use “early continue” style instead of nesting the entire loop in an if statement.

&gt; Source/WebCore/html/HTMLTextFormControlElement.cpp:584
&gt; +                TextDirection textDirection = static_cast&lt;const HTMLElement*&gt;(element)-&gt;directionalityIfhasDirAutoAttribute(isAuto);

This cast to an HTMLElement can be a bad cast. Webpages can put an HTML element inside a non-HTML element, such as an SVG element. If we want to assume it’s an HTMLElement we need to actually check isHTMLElement. A bad cast can cause crashes, in some cases crashes that are exploitable security vulnerabilities.

&gt; Source/WebCore/html/TextFieldInputType.cpp:375
&gt; +    if (element()-&gt;fastHasAttribute(dirnameAttr))
&gt; +        list.appendData(element()-&gt;fastGetAttribute(dirnameAttr), element()-&gt;directionForFormData());

Same point about a more efficient idiom as I mentioned above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>496086</commentid>
    <comment_count>21</comment_count>
    <who name="Rakesh">rakeshchaitan</who>
    <bug_when>2011-11-04 00:32:08 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; (From update of attachment 113458 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=113458&amp;action=review
&gt; 

Thanks for the inputs, will upload a patch with suggested changes.

&gt; &gt; Source/WebCore/html/HTMLTextFormControlElement.cpp:584
&gt; &gt; +                TextDirection textDirection = static_cast&lt;const HTMLElement*&gt;(element)-&gt;directionalityIfhasDirAutoAttribute(isAuto);
&gt; 
&gt; This cast to an HTMLElement can be a bad cast. Webpages can put an HTML element inside a non-HTML element, such as an SVG element. If we want to assume it’s an HTMLElement we need to actually check isHTMLElement. A bad cast can cause crashes, in some cases crashes that are exploitable security vulnerabilities.

Yes, having a isHTMLElement check can avoid crashes. For me to have a better understanding, can non HTML elements have dir attribute? Spec specifies as &quot;If the element&apos;s dir attribute is in the auto state&quot;, so should &apos;directionalityIfhasDirAutoAttribute&apos; be an Element&apos;s function?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>496099</commentid>
    <comment_count>22</comment_count>
      <attachid>113632</attachid>
    <who name="Rakesh">rakeshchaitan</who>
    <bug_when>2011-11-04 01:07:40 -0700</bug_when>
    <thetext>Created attachment 113632
Updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>496240</commentid>
    <comment_count>23</comment_count>
      <attachid>113632</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-11-04 09:49:51 -0700</bug_when>
    <thetext>Comment on attachment 113632
Updated patch

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

review+ because I think we could land just like this

but I didn’t set commit-queue+ because I think you may want to make some improvements based on the comments below

&gt; Source/WebCore/html/HTMLTextFormControlElement.cpp:576
&gt; +        const AtomicString&amp; dirAttributeValue = element-&gt;fastGetAttribute(dirAttr);

I think the non-HTMLElement coding here is not quite right. Is it right to do anything for a &quot;dir&quot; attribute on an element that is not an HTML element? I think we probably should just have:

    if (!element-&gt;isHTMLElement())
        continue;

at the start of the function, before we do anything with the dir attribute. It would be good to have some test cases for this edge case.

&gt; Source/WebCore/html/HTMLTextFormControlElement.cpp:587
&gt; +        if (equalIgnoringCase(dirAttributeValue, &quot;auto&quot;) &amp;&amp; element-&gt;isHTMLElement()) {
&gt; +            bool isAuto;
&gt; +            TextDirection textDirection = static_cast&lt;const HTMLElement*&gt;(element)-&gt;directionalityIfhasDirAutoAttribute(isAuto);
&gt; +            return textDirection == RTL ? &quot;rtl&quot; : &quot;ltr&quot;;
&gt; +        }

It’s good that the bad cast is now gone. But I’m not sure this does the right thing when &quot;auto&quot; is specified on an element and the element is not an HTML element. It seems strange to look at the value of a dir attribute, respect it if it’s &quot;rtl&quot; or &quot;ltr&quot;, but then continue looking at ancestors if it is “auto”. If this attribute is really specific to HTML elements, then I think we should filter out non-HTML elements earlier as I suggested above.

In fact, we could even write a parentHTMLElement function (not a member function) and use that and not deal with non-HTMLElement objects at all here.

&gt; Source/WebCore/html/TextFieldInputType.h:39
&gt;  class SpinButtonElement;
&gt; +class FormDataList; 

We keep lists like this alphabetical. This is not alphabetical.

&gt; Source/WebCore/html/TextFieldInputType.h:60
&gt; +    virtual bool appendFormData(FormDataList&amp;, bool multipart) const;

This should be protected or private, not public.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>497775</commentid>
    <comment_count>24</comment_count>
      <attachid>113999</attachid>
    <who name="Rakesh">rakeshchaitan</who>
    <bug_when>2011-11-07 23:27:52 -0800</bug_when>
    <thetext>Created attachment 113999
Updated patch

Changes as per Comment #23</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499518</commentid>
    <comment_count>25</comment_count>
      <attachid>113999</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-11-09 17:33:18 -0800</bug_when>
    <thetext>Comment on attachment 113999
Updated patch

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

Seems reasonable.

&gt; Source/WebCore/html/HTMLTextAreaElement.cpp:178
&gt; +    if (!dirnameAttrValue.isNull())

Does AtomicString have a bool operator?  Can this just be !dirnameAttrValue ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499587</commentid>
    <comment_count>26</comment_count>
      <attachid>113999</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-09 18:56:57 -0800</bug_when>
    <thetext>Comment on attachment 113999
Updated patch

Rejecting attachment 113999 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
n/master/.rev_map.268f45cc-cd09-0410-ab3c-d52691b4dbfc
First, rewinding head to replay your work on top of it...
Fast-forwarded master to refs/remotes/origin/master.
Updating chromium port dependencies using gclient...

________ running &apos;/usr/bin/python tools/clang/scripts/update.py --mac-only&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;

________ running &apos;/usr/bin/python gyp_webkit&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;
Updating webkit projects from gyp files...

Full output: http://queues.webkit.org/results/10394190</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499630</commentid>
    <comment_count>27</comment_count>
    <who name="Rakesh">rakeshchaitan</who>
    <bug_when>2011-11-09 21:35:02 -0800</bug_when>
    <thetext>(In reply to comment #25)
&gt; (From update of attachment 113999 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=113999&amp;action=review
&gt; 
&gt; Seems reasonable.
&gt; 

Thanks for taking time to review.

&gt; &gt; Source/WebCore/html/HTMLTextAreaElement.cpp:178
&gt; &gt; +    if (!dirnameAttrValue.isNull())
&gt; 
&gt; Does AtomicString have a bool operator?  Can this just be !dirnameAttrValue ?

No, AtomicString does not have a bool operator.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499665</commentid>
    <comment_count>28</comment_count>
      <attachid>113999</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-09 22:50:53 -0800</bug_when>
    <thetext>Comment on attachment 113999
Updated patch

Clearing flags on attachment: 113999

Committed r99816: &lt;http://trac.webkit.org/changeset/99816&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499666</commentid>
    <comment_count>29</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-09 22:51:06 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499795</commentid>
    <comment_count>30</comment_count>
      <attachid>114473</attachid>
    <who name="Rakesh">rakeshchaitan</who>
    <bug_when>2011-11-10 04:26:44 -0800</bug_when>
    <thetext>Created attachment 114473
Compilation fix for mac</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501240</commentid>
    <comment_count>31</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-11-11 17:07:36 -0800</bug_when>
    <thetext>Reopen because the patch was rolled out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501552</commentid>
    <comment_count>32</comment_count>
      <attachid>114473</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-11-13 15:03:01 -0800</bug_when>
    <thetext>Comment on attachment 114473
Compilation fix for mac

Please upload a new one which properly applies on the EWSes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501720</commentid>
    <comment_count>33</comment_count>
      <attachid>114899</attachid>
    <who name="Rakesh">rakeshchaitan</who>
    <bug_when>2011-11-14 01:31:15 -0800</bug_when>
    <thetext>Created attachment 114899
Compilation fix for mac</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>503207</commentid>
    <comment_count>34</comment_count>
      <attachid>114899</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-11-15 13:35:19 -0800</bug_when>
    <thetext>Comment on attachment 114899
Compilation fix for mac

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

What changed from teh previous patch?

&gt; Source/WebCore/ChangeLog:1
&gt; +2011-11-14  Rakesh KN  &lt;rakesh.kn@motorola.com&gt;

Normally we put our full names on this line (I&apos;m assuming your family name is not KN, but maybe I&apos;m wrong?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>503596</commentid>
    <comment_count>35</comment_count>
    <who name="Rakesh">rakeshchaitan</who>
    <bug_when>2011-11-15 22:28:30 -0800</bug_when>
    <thetext>(In reply to comment #34)
&gt; (From update of attachment 114899 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=114899&amp;action=review
&gt; 
&gt; What changed from teh previous patch?
&gt; 
The function parentHTMLElement in Source/WebCore/html/HTMLTextFormControlElement.cpp is now static.

&gt; &gt; Source/WebCore/ChangeLog:1
&gt; &gt; +2011-11-14  Rakesh KN  &lt;rakesh.kn@motorola.com&gt;
&gt; 
&gt; Normally we put our full names on this line (I&apos;m assuming your family name is not KN, but maybe I&apos;m wrong?)

We generally use initials as full name is 4 words long, also I already committed couple of patches with this name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507189</commentid>
    <comment_count>36</comment_count>
      <attachid>114899</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-11-21 13:50:34 -0800</bug_when>
    <thetext>Comment on attachment 114899
Compilation fix for mac

OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507264</commentid>
    <comment_count>37</comment_count>
      <attachid>114899</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-21 15:13:15 -0800</bug_when>
    <thetext>Comment on attachment 114899
Compilation fix for mac

Clearing flags on attachment: 114899

Committed r100965: &lt;http://trac.webkit.org/changeset/100965&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507265</commentid>
    <comment_count>38</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-21 15:13:23 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540109</commentid>
    <comment_count>39</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-01-21 01:59:40 -0800</bug_when>
    <thetext>*** Bug 76766 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>102654</attachid>
            <date>2011-08-02 08:14:20 -0700</date>
            <delta_ts>2011-08-02 08:14:20 -0700</delta_ts>
            <desc>test case</desc>
            <filename>dirname.html</filename>
            <type>text/html</type>
            <size>386</size>
            <attacher name="Aharon (Vladimir) Lanin">aharon</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIEhUTUw+DQo8aHRtbD48aGVhZD4NCjx0aXRsZT5kaXJuYW1lPC90aXRsZT4NCjxz
dHlsZT4NCjwvc3R5bGU+DQo8L2hlYWQ+PGJvZHk+DQo8Zm9ybSBpZD0iZiIgYWN0aW9uPSIjIj4N
CkFmdGVyIHlvdSBjbGljayBvbiB0aGUgU3VibWl0IGJ1dHRvbiwNCnRoZSBVUkwgaW4gdGhlIGJy
b3dzZXIncyBhZGRyZXNzIGJhciBzaG91bGQgZW5kIHdpdGg6ID9hPSZhZGlyPWx0ciZiPSZiZGly
PXJ0bCMNCg0KPGlucHV0IG5hbWU9ImEiIGRpcj0iYXV0byIgZGlybmFtZT0iYWRpciIgLz4NCjx0
ZXh0YXJlYSBuYW1lPSJiIiBkaXI9InJ0bCIgZGlybmFtZT0iYmRpciI+PC90ZXh0YXJlYT4NCjxp
bnB1dCB0eXBlPXN1Ym1pdD4NCjwvZm9ybT4NCjwvYm9keT48L2h0bWw+DQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111237</attachid>
            <date>2011-10-17 03:32:10 -0700</date>
            <delta_ts>2011-10-17 22:54:27 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>bug-65542-20111017155809.patch</filename>
            <type>text/plain</type>
            <size>9604</size>
            <attacher name="Rakesh">rakeshchaitan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk3NjAxKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjggQEAKKzIwMTEtMTAtMTcgIFJha2VzaCBL
TiAgPHJha2VzaC5rbkBtb3Rvcm9sYS5jb20+CisKKyAgICAgICAgTmVlZCBzdXBwb3J0IGZvciBk
aXJuYW1lIGF0dHJpYnV0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NjU1NDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBJbXBsZW1lbnRlZCAiZGlybmFtZSIgYXR0cmlidXRlCisKKyAgICAgICAgVGVzdDog
ZmFzdC9mb3Jtcy9mb3JtLWRpcm5hbWUtYXR0cmlidXRlLmh0bWwKKworICAgICAgICAqIGh0bWwv
SFRNTEF0dHJpYnV0ZU5hbWVzLmluOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJp
YnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjphcHBlbmRGb3JtRGF0
YSk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1s
L0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRBcmVh
RWxlbWVudDo6YXBwZW5kRm9ybURhdGEpOgorICAgICAgICAqIGh0bWwvSFRNTFRleHRBcmVhRWxl
bWVudC5pZGw6CisgICAgICAgICogaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6cGFyc2VNYXBw
ZWRBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6ZW5jbG9zaW5nVGV4dEZvcm1Db250cm9s
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjphcHBlbmRG
b3JtRGF0YSk6CisgICAgICAgICogaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oOgor
CiAyMDExLTEwLTE3ICBSb3NlbiBEYXNoICA8cm9zZW4uZGFzaEBtb3Rvcm9sYS5jb20+CiAKICAg
ICAgICAgd2hlbiBDU1MgcHNldWRvIHNlbGVjdG9ycyBhcmUgYXBwbGllZCAoOmJlZm9yZSBhbmQg
OmFmdGVyKSB0aGUgKi1vZi1saW5lIGtleWJvYXJkIG5hdmlnYXRpb24gZG9lcyBub3Qgd29yawpJ
bmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4JKHJldmlzaW9u
IDk3MjM2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4JKHdv
cmtpbmcgY29weSkKQEAgLTkwLDYgKzkwLDcgQEAgZGVmYXVsdAogZGVmZXIKIGRpcgogZGlyZWN0
aW9uCitkaXJuYW1lCiBkaXNhYmxlZAogZG93bmxvYWQKIGRyYWdnYWJsZQpJbmRleDogU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCShyZXZpc2lvbiA5NzIzNikKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTgyMSw2ICs4MjEsOCBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmli
CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gcmVhZG9ubHlBdHRyKSB7CiAgICAgICAg
IG1faW5wdXRUeXBlLT5yZWFkb25seUF0dHJpYnV0ZUNoYW5nZWQoKTsKICAgICAgICAgSFRNTFRl
eHRGb3JtQ29udHJvbEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpOworICAgIH0g
ZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGRpcm5hbWVBdHRyKSB7CisgICAgICAgIEhUTUxUZXh0
Rm9ybUNvbnRyb2xFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKICAgICB9CiAj
aWYgRU5BQkxFKERBVEFMSVNUKQogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBsaXN0QXR0
cikKQEAgLTkzMiw3ICs5MzQsMTEgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpzZXRBY3RpdmF0
ZWRTdWJtaQogCiBib29sIEhUTUxJbnB1dEVsZW1lbnQ6OmFwcGVuZEZvcm1EYXRhKEZvcm1EYXRh
TGlzdCYgZW5jb2RpbmcsIGJvb2wgbXVsdGlwYXJ0KQogewotICAgIHJldHVybiBtX2lucHV0VHlw
ZS0+aXNGb3JtRGF0YUFwcGVuZGFibGUoKSAmJiBtX2lucHV0VHlwZS0+YXBwZW5kRm9ybURhdGEo
ZW5jb2RpbmcsIG11bHRpcGFydCk7CisgICAgYm9vbCByZXN1bHQ7CisgICAgcmVzdWx0ID0gIG1f
aW5wdXRUeXBlLT5pc0Zvcm1EYXRhQXBwZW5kYWJsZSgpICYmIG1faW5wdXRUeXBlLT5hcHBlbmRG
b3JtRGF0YShlbmNvZGluZywgbXVsdGlwYXJ0KTsKKyAgICBpZiAocmVzdWx0ICYmIGZhc3RIYXNB
dHRyaWJ1dGUoZGlybmFtZUF0dHIpICYmIChpc1RleHRGaWVsZCgpIHx8IGlzU2VhcmNoRmllbGQo
KSkpCisgICAgICAgIHJlc3VsdCA9IEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjphcHBlbmRG
b3JtRGF0YShlbmNvZGluZywgbXVsdGlwYXJ0KTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiB2
b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnJlc2V0KCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTElucHV0RWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSW5wdXRFbGVtZW50LmlkbAkocmV2aXNpb24gOTcyMzYpCisrKyBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxJbnB1dEVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw2ICsyMyw3IEBA
IG1vZHVsZSBodG1sIHsKICAgICBpbnRlcmZhY2UgSFRNTElucHV0RWxlbWVudCA6IEhUTUxFbGVt
ZW50IHsKICAgICAgICAgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZ10gRE9NU3Ry
aW5nIGRlZmF1bHRWYWx1ZTsKICAgICAgICAgYXR0cmlidXRlIFtSZWZsZWN0PWNoZWNrZWRdIGJv
b2xlYW4gZGVmYXVsdENoZWNrZWQ7CisgICAgICAgIGF0dHJpYnV0ZSBbUmVmbGVjdF0gRE9NU3Ry
aW5nIGRpck5hbWU7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBIVE1MRm9ybUVsZW1lbnQg
Zm9ybTsKICAgICAgICAgYXR0cmlidXRlIFtSZWZsZWN0LCBVUkxdIERPTVN0cmluZyBmb3JtQWN0
aW9uOwogICAgICAgICBhdHRyaWJ1dGUgW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nXSBET01TdHJp
bmcgZm9ybUVuY3R5cGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVh
RWxlbWVudC5jcHAJKHJldmlzaW9uIDk3MjM2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGV4dEFyZWFFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY0LDcgKzE2NCw3IEBAIFJl
bmRlck9iamVjdCogSFRNTFRleHRBcmVhRWxlbWVudDo6Y3JlYXQKICAgICByZXR1cm4gbmV3IChh
cmVuYSkgUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUodGhpcyk7CiB9CiAKLWJvb2wgSFRNTFRl
eHRBcmVhRWxlbWVudDo6YXBwZW5kRm9ybURhdGEoRm9ybURhdGFMaXN0JiBlbmNvZGluZywgYm9v
bCkKK2Jvb2wgSFRNTFRleHRBcmVhRWxlbWVudDo6YXBwZW5kRm9ybURhdGEoRm9ybURhdGFMaXN0
JiBlbmNvZGluZywgYm9vbCBtdWx0aXBhcnQpCiB7CiAgICAgaWYgKG5hbWUoKS5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE3Myw3ICsxNzMsNyBAQCBib29sIEhUTUxUZXh0
QXJlYUVsZW1lbnQ6OmFwcGVuZEZvcm1EYXRhCiAKICAgICBjb25zdCBTdHJpbmcmIHRleHQgPSAo
bV93cmFwID09IEhhcmRXcmFwKSA/IHZhbHVlV2l0aEhhcmRMaW5lQnJlYWtzKCkgOiB2YWx1ZSgp
OwogICAgIGVuY29kaW5nLmFwcGVuZERhdGEobmFtZSgpLCB0ZXh0KTsKLSAgICByZXR1cm4gdHJ1
ZTsKKyAgICByZXR1cm4gZmFzdEhhc0F0dHJpYnV0ZShkaXJuYW1lQXR0cikgPyBIVE1MVGV4dEZv
cm1Db250cm9sRWxlbWVudDo6YXBwZW5kRm9ybURhdGEoZW5jb2RpbmcsIG11bHRpcGFydCkgOiB0
cnVlOwogfQogCiB2b2lkIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OnJlc2V0KCkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmlkbAkocmV2aXNpb24gOTcyMzYp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaWRsCSh3b3JraW5n
IGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBAIG1vZHVsZSBodG1sIHsKICAgICAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIFZhbGlkaXR5U3RhdGUgdmFsaWRpdHk7CiAgICAgICAgIGF0dHJpYnV0ZSBbUmVm
bGVjdF0gRE9NU3RyaW5nIGFjY2Vzc0tleTsKICAgICAgICAgYXR0cmlidXRlIGxvbmcgY29sczsK
KyAgICAgICAgYXR0cmlidXRlIFtSZWZsZWN0XSBET01TdHJpbmcgZGlyTmFtZTsKICAgICAgICAg
YXR0cmlidXRlIFtSZWZsZWN0XSBib29sZWFuIGRpc2FibGVkOwogICAgICAgICBhdHRyaWJ1dGUg
W1JlZmxlY3RdIGJvb2xlYW4gYXV0b2ZvY3VzOwogICAgICAgICBhdHRyaWJ1dGUgbG9uZyBtYXhM
ZW5ndGggc2V0dGVyIHJhaXNlcyhET01FeGNlcHRpb24pOwpJbmRleDogU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAJKHJldmlzaW9uIDk3
MjM2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJEb2N1bWVudC5o
IgogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgorI2luY2x1ZGUg
IkZvcm1EYXRhTGlzdC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSFRNTEJSRWxl
bWVudC5oIgogI2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgpAQCAtNDI5LDYgKzQzMCw4IEBA
IHZvaWQgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnBhcnNlTWEKICAgICAgICAgc2V0QXR0
cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuc2VsZWN0RXZlbnQsIGNyZWF0ZUF0dHJp
YnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgYXR0cikpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUo
KSA9PSBvbmNoYW5nZUF0dHIpCiAgICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZl
bnROYW1lcygpLmNoYW5nZUV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMs
IGF0dHIpKTsKKyAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gZGlybmFtZUF0dHIpCisgICAg
ICAgIG1fZGlyTmFtZSA9IGF0dHItPnZhbHVlKCk7CiAgICAgZWxzZQogICAgICAgICBIVE1MRm9y
bUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKIH0K
QEAgLTU3MCw0ICs1NzMsMjEgQEAgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQqIGVuY2xvc2lu
Z1RleAogICAgIHJldHVybiBhbmNlc3RvciAhPSBjb250YWluZXIgPyB0b1RleHRGb3JtQ29udHJv
bChhbmNlc3RvcikgOiAwOwogfQogCitib29sIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Ojph
cHBlbmRGb3JtRGF0YShGb3JtRGF0YUxpc3QmIGxpc3QsIGJvb2wpCit7CisgICAgU3RyaW5nIGRp
cjsKKyAgICBib29sIGlzQXV0bzsKKworICAgIFRleHREaXJlY3Rpb24gdGV4dERpcmVjdGlvbiA9
IGRpcmVjdGlvbmFsaXR5SWZoYXNEaXJBdXRvQXR0cmlidXRlKGlzQXV0byk7CisgICAgaWYgKGlz
QXV0bykKKyAgICAgICAgZGlyID0gU3RyaW5nKHRleHREaXJlY3Rpb24gPT0gUlRMID8gInJ0bCIg
OiAibHRyIik7CisgICAgZWxzZSBpZiAoaGFzQXR0cmlidXRlKGRpckF0dHIpKQorICAgICAgICBk
aXIgPSBnZXRBdHRyaWJ1dGUoZGlyQXR0cikuc3RyaW5nKCk7CisgICAgZWxzZQorICAgICAgICBk
aXIgPSBTdHJpbmcoImx0ciIpOworCisgICAgbGlzdC5hcHBlbmREYXRhKG1fZGlyTmFtZS5zdHJp
bmcoKSwgZGlyKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViY29y
ZQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVs
ZW1lbnQuaAkocmV2aXNpb24gOTcyMzYpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0
Rm9ybUNvbnRyb2xFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTc5LDYgKzc5LDggQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0SW5uZXJUZXh0VmFsdWUoY29uc3QgU3RyaW5nJik7CiAgICAgU3Ry
aW5nIGlubmVyVGV4dFZhbHVlKCkgY29uc3Q7CiAKKyAgICB2aXJ0dWFsIGJvb2wgYXBwZW5kRm9y
bURhdGEoRm9ybURhdGFMaXN0JiwgYm9vbCk7CisKIHByb3RlY3RlZDoKICAgICBIVE1MVGV4dEZv
cm1Db250cm9sRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqLCBIVE1MRm9y
bUVsZW1lbnQqKTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUGxhY2Vob2xkZXJUZXh0KCkgPSAw
OwpAQCAtMTMxLDYgKzEzMyw3IEBAIHByaXZhdGU6CiAgICAgaW50IG1fY2FjaGVkU2VsZWN0aW9u
U3RhcnQ7CiAgICAgaW50IG1fY2FjaGVkU2VsZWN0aW9uRW5kOwogICAgIFRleHRGaWVsZFNlbGVj
dGlvbkRpcmVjdGlvbiBtX2NhY2hlZFNlbGVjdGlvbkRpcmVjdGlvbjsKKyAgICBBdG9taWNTdHJp
bmcgbV9kaXJOYW1lOwogfTsKIAogLy8gVGhpcyBmdW5jdGlvbiByZXR1cm5zIDAgd2hlbiBub2Rl
IGlzIGFuIGlucHV0IGVsZW1lbnQgYW5kIG5vdCBhIHRleHQgZmllbGQuCkluZGV4OiBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZp
c2lvbiA5NzYwMSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDE1IEBACisyMDExLTEwLTE3ICBSYWtlc2ggS04gIDxyYWtlc2gua25AbW90b3JvbGEu
Y29tPgorCisgICAgICAgIE5lZWQgc3VwcG9ydCBmb3IgZGlybmFtZSBhdHRyaWJ1dGUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1NTQyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50ZWQgImRp
cm5hbWUiIGF0dHJpYnV0ZQorCisgICAgICAgICogZmFzdC9mb3Jtcy9mb3JtLWRpcm5hbWUtYXR0
cmlidXRlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9mb3JtLWRp
cm5hbWUtYXR0cmlidXRlLmh0bWw6IEFkZGVkLgorCiAyMDExLTEwLTE3ICBDc2FiYSBPc3p0cm9n
b27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1F0XSBVbnJldmlld2VkIGdhcmRl
bmluZyBhZnRlciByOTc1OTguIFJlbW92ZSBvYnNvbGV0ZSBRdCA0Ljggc3BlY2lmaWMgZXhwZWN0
ZWQgcmVzdWx0cy4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvZm9ybS1kaXJuYW1lLWF0
dHJpYnV0ZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9mb3JtLWRpcm5hbWUtYXR0cmlidXRlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvZm9ybS1kaXJuYW1lLWF0dHJpYnV0ZS1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOCBAQAorImRpcm5hbWUiIGF0dHJpYnV0ZQorCitQQVNT
IGlucHV0LmRpck5hbWUgaXMgIkhlbGxvIgorUEFTUyB0ZXh0QXJlYS5kaXJOYW1lIGlzICJIZWxs
byIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2Zvcm0tZGlybmFtZS1hdHRyaWJ1dGUuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2Zvcm0tZGlybmFtZS1hdHRyaWJ1
dGUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvZm9ybS1kaXJu
YW1lLWF0dHJpYnV0ZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIzIEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+
Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj4gPC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPiJkaXJuYW1lIiBhdHRyaWJ1dGU8L3A+Cis8cHJlIGlkPSJj
b25zb2xlIj48L3ByZT4KKzxzY3JpcHQ+Cit2YXIgaW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdpbnB1dCcpOworaW5wdXQuc2V0QXR0cmlidXRlKCdkaXJOYW1lJywgIkhlbGxvIik7Citz
aG91bGRCZUVxdWFsVG9TdHJpbmcoJ2lucHV0LmRpck5hbWUnLCAiSGVsbG8iKTsKKwordmFyIHRl
eHRBcmVhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGV4dGFyZWEnKTsKK3RleHRBcmVhLnNl
dEF0dHJpYnV0ZSgnZGlyTmFtZScsICJIZWxsbyIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCd0
ZXh0QXJlYS5kaXJOYW1lJywgIkhlbGxvIik7CitzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwor
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111386</attachid>
            <date>2011-10-17 22:54:58 -0700</date>
            <delta_ts>2011-11-03 04:10:06 -0700</delta_ts>
            <desc>Updated patch</desc>
            <filename>bug-65542-20111018112102.patch</filename>
            <type>text/plain</type>
            <size>11379</size>
            <attacher name="Rakesh">rakeshchaitan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk3NzIwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTEtMTAtMTcgIFJha2VzaCBL
TiAgPHJha2VzaC5rbkBtb3Rvcm9sYS5jb20+CisKKyAgICAgICAgTmVlZCBzdXBwb3J0IGZvciBk
aXJuYW1lIGF0dHJpYnV0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NjU1NDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBJbXBsZW1lbnRlZCAnZGlybmFtZScgZm9ybSBhdHRyaWJ1dGUuCisKKyAgICAgICAg
VGVzdHM6IGZhc3QvZm9ybXMvZm9ybS1kaXJuYW1lLWF0dHJpYnV0ZS5odG1sCisgICAgICAgICAg
ICAgICBmYXN0L2Zvcm1zL3N1Ym1pdC1mb3JtLXdpdGgtZGlybmFtZS1hdHRyaWJ1dGUuaHRtbAor
CisgICAgICAgICogaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW46CisgICAgICAgIEFkZGVkICJk
aXJuYW1lIiBhdHRyaWJ1dGUuCisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmlkbDoK
KyAgICAgICAgQWRkICJkaXJOYW1lIiBwcm9wZXJ0eSB0byBIVE1MSW5wdXRFbGVtZW50IGludGVy
ZmFjZS4KKyAgICAgICAgKiBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFRleHRBcmVhRWxlbWVudDo6YXBwZW5kRm9ybURhdGEpOgorICAgICAgICBB
cHBlbmQgZGlybmFtZSBmb3JtIGRhdGEuCisgICAgICAgICogaHRtbC9IVE1MVGV4dEFyZWFFbGVt
ZW50LmlkbDoKKyAgICAgICAgQWRkICJkaXJOYW1lIiBwcm9wZXJ0eSB0byBIVE1MVGV4dEFyZWFF
bGVtZW50IGludGVyZmFjZS4KKyAgICAgICAgKiBodG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Ojpk
aXJOYW1lQXR0cmlidXRlRm9ybURhdGEpOgorICAgICAgICBIZWxwZXIgZnVuY3Rpb24gZm9yIGRp
cmVjdGlvbmFsaXR5IG9mIHRoZSBFbGVtZW50LgorICAgICAgICAqIGh0bWwvSFRNTFRleHRGb3Jt
Q29udHJvbEVsZW1lbnQuaDoKKyAgICAgICAgSGVscGVyIGZ1bmN0aW9uIGZvciBkaXJlY3Rpb25h
bGl0eSBvZiB0aGUgRWxlbWVudC4KKyAgICAgICAgKiBodG1sL1RleHRGaWVsZElucHV0VHlwZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGRJbnB1dFR5cGU6OmFwcGVuZEZvcm1EYXRh
KToKKyAgICAgICAgQXBwZW5kIGRpcm5hbWUgZm9ybSBkYXRhLgorICAgICAgICAqIGh0bWwvVGV4
dEZpZWxkSW5wdXRUeXBlLmg6CisgICAgICAgIEFwcGVuZCBkaXJuYW1lIGZvcm0gZGF0YS4KKwog
MjAxMS0xMC0xNyAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
UmVtb3ZlIE9wdGlvbkdyb3VwRWxlbWVudApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QXR0cmlidXRlTmFtZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QXR0cmlidXRlTmFtZXMuaW4JKHJldmlzaW9uIDk3MjM2KQorKysgU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQXR0cmlidXRlTmFtZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTkwLDYgKzkwLDcgQEAg
ZGVmYXVsdAogZGVmZXIKIGRpcgogZGlyZWN0aW9uCitkaXJuYW1lCiBkaXNhYmxlZAogZG93bmxv
YWQKIGRyYWdnYWJsZQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50
LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQu
aWRsCShyZXZpc2lvbiA5NzIzNikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxl
bWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTIzLDYgKzIzLDcgQEAgbW9kdWxlIGh0bWwgewog
ICAgIGludGVyZmFjZSBIVE1MSW5wdXRFbGVtZW50IDogSFRNTEVsZW1lbnQgewogICAgICAgICBh
dHRyaWJ1dGUgW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgZGVmYXVsdFZhbHVl
OwogICAgICAgICBhdHRyaWJ1dGUgW1JlZmxlY3Q9Y2hlY2tlZF0gYm9vbGVhbiBkZWZhdWx0Q2hl
Y2tlZDsKKyAgICAgICAgYXR0cmlidXRlIFtSZWZsZWN0XSBET01TdHJpbmcgZGlyTmFtZTsKICAg
ICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEhUTUxGb3JtRWxlbWVudCBmb3JtOwogICAgICAgICBh
dHRyaWJ1dGUgW1JlZmxlY3QsIFVSTF0gRE9NU3RyaW5nIGZvcm1BY3Rpb247CiAgICAgICAgIGF0
dHJpYnV0ZSBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyBmb3JtRW5jdHlwZTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAkocmV2
aXNpb24gOTcyMzYpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjQsNyArMTY0LDcgQEAgUmVuZGVyT2JqZWN0KiBIVE1M
VGV4dEFyZWFFbGVtZW50OjpjcmVhdAogICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJUZXh0
Q29udHJvbE11bHRpTGluZSh0aGlzKTsKIH0KIAotYm9vbCBIVE1MVGV4dEFyZWFFbGVtZW50Ojph
cHBlbmRGb3JtRGF0YShGb3JtRGF0YUxpc3QmIGVuY29kaW5nLCBib29sKQorYm9vbCBIVE1MVGV4
dEFyZWFFbGVtZW50OjphcHBlbmRGb3JtRGF0YShGb3JtRGF0YUxpc3QmIGVuY29kaW5nLCBib29s
IG11bHRpcGFydCkKIHsKICAgICBpZiAobmFtZSgpLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtMTczLDcgKzE3MywxMCBAQCBib29sIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OmFw
cGVuZEZvcm1EYXRhCiAKICAgICBjb25zdCBTdHJpbmcmIHRleHQgPSAobV93cmFwID09IEhhcmRX
cmFwKSA/IHZhbHVlV2l0aEhhcmRMaW5lQnJlYWtzKCkgOiB2YWx1ZSgpOwogICAgIGVuY29kaW5n
LmFwcGVuZERhdGEobmFtZSgpLCB0ZXh0KTsKLSAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlmIChm
YXN0SGFzQXR0cmlidXRlKGRpcm5hbWVBdHRyKSkKKyAgICAgICAgZW5jb2RpbmcuYXBwZW5kRGF0
YShmYXN0R2V0QXR0cmlidXRlKGRpcm5hbWVBdHRyKS5zdHJpbmcoKSwgZGlyTmFtZUF0dHJpYnV0
ZUZvcm1EYXRhKCkpOworICAgIHJldHVybiB0cnVlOyAgICAKIH0KIAogdm9pZCBIVE1MVGV4dEFy
ZWFFbGVtZW50OjpyZXNldCgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJl
YUVsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRB
cmVhRWxlbWVudC5pZGwJKHJldmlzaW9uIDk3MjM2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVGV4dEFyZWFFbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQCBt
b2R1bGUgaHRtbCB7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBWYWxpZGl0eVN0YXRlIHZh
bGlkaXR5OwogICAgICAgICBhdHRyaWJ1dGUgW1JlZmxlY3RdIERPTVN0cmluZyBhY2Nlc3NLZXk7
CiAgICAgICAgIGF0dHJpYnV0ZSBsb25nIGNvbHM7CisgICAgICAgIGF0dHJpYnV0ZSBbUmVmbGVj
dF0gRE9NU3RyaW5nIGRpck5hbWU7CiAgICAgICAgIGF0dHJpYnV0ZSBbUmVmbGVjdF0gYm9vbGVh
biBkaXNhYmxlZDsKICAgICAgICAgYXR0cmlidXRlIFtSZWZsZWN0XSBib29sZWFuIGF1dG9mb2N1
czsKICAgICAgICAgYXR0cmlidXRlIGxvbmcgbWF4TGVuZ3RoIHNldHRlciByYWlzZXMoRE9NRXhj
ZXB0aW9uKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3Jt
Q29udHJvbEVsZW1lbnQuY3BwCShyZXZpc2lvbiA5NzIzNikKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NzAs
NCArNTcwLDIwIEBAIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50KiBlbmNsb3NpbmdUZXgKICAg
ICByZXR1cm4gYW5jZXN0b3IgIT0gY29udGFpbmVyID8gdG9UZXh0Rm9ybUNvbnRyb2woYW5jZXN0
b3IpIDogMDsKIH0KIAorU3RyaW5nIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpkaXJOYW1l
QXR0cmlidXRlRm9ybURhdGEoKSBjb25zdAoreworICAgIFN0cmluZyBkaXI7CisgICAgYm9vbCBp
c0F1dG87CisKKyAgICBUZXh0RGlyZWN0aW9uIHRleHREaXJlY3Rpb24gPSBkaXJlY3Rpb25hbGl0
eUlmaGFzRGlyQXV0b0F0dHJpYnV0ZShpc0F1dG8pOworICAgIGlmIChpc0F1dG8pCisgICAgICAg
IGRpciA9IFN0cmluZyh0ZXh0RGlyZWN0aW9uID09IFJUTCA/ICJydGwiIDogImx0ciIpOworICAg
IGVsc2UgaWYgKGhhc0F0dHJpYnV0ZShkaXJBdHRyKSkKKyAgICAgICAgZGlyID0gZ2V0QXR0cmli
dXRlKGRpckF0dHIpLnN0cmluZygpOworICAgIGVsc2UKKyAgICAgICAgZGlyID0gU3RyaW5nKCJs
dHIiKTsKKworICAgIHJldHVybiBkaXI7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYmNvcmUKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50
LmgJKHJldmlzaW9uIDk3MjM2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1D
b250cm9sRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC03OSw2ICs3OSw4IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldElubmVyVGV4dFZhbHVlKGNvbnN0IFN0cmluZyYpOwogICAgIFN0cmluZyBp
bm5lclRleHRWYWx1ZSgpIGNvbnN0OwogCisgICAgU3RyaW5nIGRpck5hbWVBdHRyaWJ1dGVGb3Jt
RGF0YSgpIGNvbnN0OworCiBwcm90ZWN0ZWQ6CiAgICAgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1l
bnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50KiwgSFRNTEZvcm1FbGVtZW50Kik7CiAg
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZVBsYWNlaG9sZGVyVGV4dCgpID0gMDsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAJKHJldmlzaW9uIDk3MjM2KQor
KysgU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMyw4ICszMywxMCBAQAogI2luY2x1ZGUgIlRleHRGaWVsZElucHV0VHlwZS5oIgog
CiAjaW5jbHVkZSAiQmVmb3JlVGV4dEluc2VydGVkRXZlbnQuaCIKKyNpbmNsdWRlICJGb3JtRGF0
YUxpc3QuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQu
aCIKKyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJLZXlib2FyZEV2ZW50LmgiCiAj
aW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCkBAIC00OSw2ICs1MSw4
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAordXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsK
KwogVGV4dEZpZWxkSW5wdXRUeXBlOjpUZXh0RmllbGRJbnB1dFR5cGUoSFRNTElucHV0RWxlbWVu
dCogZWxlbWVudCkKICAgICA6IElucHV0VHlwZShlbGVtZW50KQogewpAQCAtMzY0LDQgKzM2OCwx
MiBAQCB2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6dXBkYXRlUGxhY2Vob2xkCiAgICAgQVNTRVJU
KCFlYyk7CiB9CiAKK2Jvb2wgVGV4dEZpZWxkSW5wdXRUeXBlOjphcHBlbmRGb3JtRGF0YShGb3Jt
RGF0YUxpc3QmIGxpc3QsIGJvb2wgbXVsdGlwYXJ0KSBjb25zdAoreworICAgIElucHV0VHlwZTo6
YXBwZW5kRm9ybURhdGEobGlzdCwgbXVsdGlwYXJ0KTsKKyAgICBpZiAoZWxlbWVudCgpLT5mYXN0
SGFzQXR0cmlidXRlKGRpcm5hbWVBdHRyKSkKKyAgICAgICAgbGlzdC5hcHBlbmREYXRhKGVsZW1l
bnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShkaXJuYW1lQXR0cikuc3RyaW5nKCksIGVsZW1lbnQoKS0+
ZGlyTmFtZUF0dHJpYnV0ZUZvcm1EYXRhKCkpOworICAgIHJldHVybiB0cnVlOyAgICAKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0Rmll
bGRJbnB1dFR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVs
ZElucHV0VHlwZS5oCShyZXZpc2lvbiA5NzIzNikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvVGV4
dEZpZWxkSW5wdXRUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU3BpbkJ1dHRvbkVsZW1lbnQ7CitjbGFzcyBGb3JtRGF0
YUxpc3Q7IAogCiAvLyBUaGUgY2xhc3MgcmVwcmVzZW50cyB0eXBlcyBvZiB3aGljaCBVSSBjb250
YWluIHRleHQgZmllbGRzLgogLy8gSXQgc3VwcG9ydHMgbm90IG9ubHkgdGhlIHR5cGVzIGZvciBC
YXNlVGV4dElucHV0VHlwZSBidXQgYWxzbyB0eXBlPW51bWJlci4KQEAgLTU2LDYgKzU3LDggQEAg
cHJvdGVjdGVkOgogICAgIHZpcnR1YWwgSFRNTEVsZW1lbnQqIHNwZWVjaEJ1dHRvbkVsZW1lbnQo
KSBjb25zdDsKICNlbmRpZgogCisgICAgdmlydHVhbCBib29sIGFwcGVuZEZvcm1EYXRhKEZvcm1E
YXRhTGlzdCYsIGJvb2wgbXVsdGlwYXJ0KSBjb25zdDsKKwogcHJvdGVjdGVkOgogICAgIHZpcnR1
YWwgYm9vbCBuZWVkc0NvbnRhaW5lcigpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVT
aGFkb3dTdWJ0cmVlKCk7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA5NzcyMCkKKysrIExheW91dFRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDExLTEwLTE3ICBS
YWtlc2ggS04gIDxyYWtlc2gua25AbW90b3JvbGEuY29tPgorCisgICAgICAgIE5lZWQgc3VwcG9y
dCBmb3IgZGlybmFtZSBhdHRyaWJ1dGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTY1NTQyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgSW1wbGVtZW50ZWQgJ2Rpcm5hbWUnIGZvcm0gYXR0cmlidXRlLgorCisg
ICAgICAgICogZmFzdC9mb3Jtcy9mb3JtLWRpcm5hbWUtYXR0cmlidXRlLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9mb3JtLWRpcm5hbWUtYXR0cmlidXRlLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvc3VibWl0LWZvcm0td2l0aC1kaXJuYW1lLWF0
dHJpYnV0ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvc3VibWl0
LWZvcm0td2l0aC1kaXJuYW1lLWF0dHJpYnV0ZS5odG1sOiBBZGRlZC4KKwogMjAxMS0xMC0xNyAg
R2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2
ZXJ0ZWQgcjk5NzcwOSwgdGhpcyBjYXVzZWQgdGVzdCBmYWlsdXJlcy4KSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZm9ybXMvZm9ybS1kaXJuYW1lLWF0dHJpYnV0ZS1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9mb3JtLWRpcm5hbWUtYXR0cmlidXRlLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvZm9ybS1k
aXJuYW1lLWF0dHJpYnV0ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOCBA
QAorImRpcm5hbWUiIGF0dHJpYnV0ZQorCitQQVNTIGlucHV0LmRpck5hbWUgaXMgIkhlbGxvIgor
UEFTUyB0ZXh0QXJlYS5kaXJOYW1lIGlzICJIZWxsbyIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L2Zvcm0tZGlybmFtZS1hdHRyaWJ1dGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL2Zvcm0tZGlybmFtZS1hdHRyaWJ1dGUuaHRtbAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvZm9ybS1kaXJuYW1lLWF0dHJpYnV0ZS5odG1sCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDIzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8
bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2pz
L3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj4gPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPiJkaXJu
YW1lIiBhdHRyaWJ1dGU8L3A+Cis8cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KKzxzY3JpcHQ+Cit2
YXIgaW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpOworaW5wdXQuc2V0QXR0
cmlidXRlKCdkaXJOYW1lJywgIkhlbGxvIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2lucHV0
LmRpck5hbWUnLCAiSGVsbG8iKTsKKwordmFyIHRleHRBcmVhID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgndGV4dGFyZWEnKTsKK3RleHRBcmVhLnNldEF0dHJpYnV0ZSgnZGlyTmFtZScsICJIZWxs
byIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCd0ZXh0QXJlYS5kaXJOYW1lJywgIkhlbGxvIik7
CitzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
anMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3N1Ym1pdC1mb3JtLXdpdGgtZGlybmFtZS1h
dHRyaWJ1dGUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9y
bXMvc3VibWl0LWZvcm0td2l0aC1kaXJuYW1lLWF0dHJpYnV0ZS1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3N1Ym1pdC1mb3JtLXdpdGgtZGlybmFt
ZS1hdHRyaWJ1dGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExIEBACitU
ZXN0IHRoYXQgd2hlbiBkaXJuYW1lIGF0dHJpYnV0ZSBpcyBzcGVjaWZpZWQgdGhlbiBpdCBpcyBh
ZGRlZCBpbiBzdWJtaXNzaW9uIGJvZHkuCisKK0NvbW1lbnQ6IAorCitQb3N0IENvbW1lbnQKKwor
UEFTUyBkb2N1bWVudC5sb2NhdGlvbi5zZWFyY2guaW5kZXhPZigiY29tbWVudC5kaXI9bHRyIikg
IT0gLTEgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvc3VibWl0LWZvcm0td2l0aC1k
aXJuYW1lLWF0dHJpYnV0ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9y
bXMvc3VibWl0LWZvcm0td2l0aC1kaXJuYW1lLWF0dHJpYnV0ZS5odG1sCShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zdWJtaXQtZm9ybS13aXRoLWRpcm5hbWUtYXR0cmli
dXRlLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzEgQEAKKzxodG1sPgorPHNjcmlwdCBz
cmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+IDwvc2NyaXB0PgorPHNjcmlwdD4K
K3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworZnVuY3Rpb24gdGVzdCgpIHsKKyAgICBk
b2N1bWVudC5mb3Jtcy5mLnN1Ym1pdCgpOworfQorPC9zY3JpcHQ+Cis8Ym9keSBvbmxvYWQ9InRl
c3QoKSI+Cis8cD5UZXN0IHRoYXQgd2hlbiBkaXJuYW1lIGF0dHJpYnV0ZSBpcyBzcGVjaWZpZWQg
dGhlbiBpdCBpcyBhZGRlZCBpbiBzdWJtaXNzaW9uIGJvZHkuPC9wPgorCis8Zm9ybSBhY3Rpb249
IiNhY3Rpb24iIG1ldGhvZD0iR0VUIiBuYW1lPSJmIj4KKyAgICA8cD48bGFiZWw+Q29tbWVudDog
PGlucHV0IHR5cGU9dGV4dCBuYW1lPSJjb21tZW50IiBkaXJuYW1lPSJjb21tZW50LmRpciIgcmVx
dWlyZWQ+PC9sYWJlbD48L3A+CisgICAgPHA+PGJ1dHRvbiBuYW1lPSJtb2RlIiB0eXBlPXN1Ym1p
dCB2YWx1ZT0iYWRkIj5Qb3N0IENvbW1lbnQ8L2J1dHRvbj48L3A+Cis8L2Zvcm0+CisKKzxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorPGRpdiBpZD0iYWN0aW9uIj4KKzxzY3JpcHQ+CitpZiAoZG9j
dW1lbnQubG9jYXRpb24uaHJlZi5tYXRjaCgnXFw/JykpIHsKKyAgICBzaG91bGRCZVRydWUoJ2Rv
Y3VtZW50LmxvY2F0aW9uLnNlYXJjaC5pbmRleE9mKCJjb21tZW50LmRpcj1sdHIiKSAhPSAtMScp
OworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCitzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwor
PC9zY3JpcHQ+Cis8L2Rpdj4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113458</attachid>
            <date>2011-11-03 04:10:37 -0700</date>
            <delta_ts>2011-11-04 01:07:23 -0700</delta_ts>
            <desc>Updated patch</desc>
            <filename>bug-65542-20111103163544.patch</filename>
            <type>text/plain</type>
            <size>15309</size>
            <attacher name="Rakesh">rakeshchaitan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk5MTYzKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTEtMTEtMDMgIFJha2VzaCBL
TiAgPHJha2VzaC5rbkBtb3Rvcm9sYS5jb20+CisKKyAgICAgICAgTmVlZCBzdXBwb3J0IGZvciBk
aXJuYW1lIGF0dHJpYnV0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NjU1NDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBJbXBsZW1lbnRlZCAnZGlybmFtZScgZm9ybSBhdHRyaWJ1dGUuCisKKyAgICAgICAg
VGVzdHM6IGZhc3QvZm9ybXMvZm9ybS1kaXJuYW1lLWF0dHJpYnV0ZS5odG1sCisgICAgICAgICAg
ICAgICBmYXN0L2Zvcm1zL3N1Ym1pdC1mb3JtLXdpdGgtZGlybmFtZS1hdHRyaWJ1dGUtd2l0aC1h
bmNlc3Rvci1kaXItYXR0cmlidXRlLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZm9ybXMvc3Vi
bWl0LWZvcm0td2l0aC1kaXJuYW1lLWF0dHJpYnV0ZS5odG1sCisKKyAgICAgICAgKiBodG1sL0hU
TUxBdHRyaWJ1dGVOYW1lcy5pbjoKKyAgICAgICAgQWRkZWQgImRpcm5hbWUiIGF0dHJpYnV0ZS4K
KyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuaWRsOgorICAgICAgICBBZGQgImRpck5h
bWUiIHByb3BlcnR5IHRvIEhUTUxJbnB1dEVsZW1lbnQgaW50ZXJmYWNlLgorICAgICAgICAqIGh0
bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEFy
ZWFFbGVtZW50OjphcHBlbmRGb3JtRGF0YSk6CisgICAgICAgIEFwcGVuZCBkaXJuYW1lIGZvcm0g
ZGF0YS4KKyAgICAgICAgKiBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaWRsOgorICAgICAgICBB
ZGQgImRpck5hbWUiIHByb3BlcnR5IHRvIEhUTUxUZXh0QXJlYUVsZW1lbnQgaW50ZXJmYWNlLgor
ICAgICAgICAqIGh0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmRpcmVjdGlvbkZvckZvcm1EYXRh
KToKKyAgICAgICAgSGVscGVyIGZ1bmN0aW9uIGZvciBmaW5kaW5nIGRpcmVjdGlvbmFsaXR5IG9m
IHRoZSBFbGVtZW50LgorICAgICAgICAqIGh0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQu
aDoKKyAgICAgICAgSGVscGVyIGZ1bmN0aW9uIGZvciBmaW5kaW5nIGRpcmVjdGlvbmFsaXR5IG9m
IHRoZSBFbGVtZW50LgorICAgICAgICAqIGh0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6YXBwZW5kRm9ybURhdGEpOgorICAg
ICAgICBBcHBlbmQgZGlybmFtZSBmb3JtIGRhdGEuCisgICAgICAgICogaHRtbC9UZXh0RmllbGRJ
bnB1dFR5cGUuaDoKKyAgICAgICAgQXBwZW5kIGRpcm5hbWUgZm9ybSBkYXRhLgorCiAyMDExLTEx
LTAzICBCYWxhenMgS2VsZW1lbiAgPGtiYWxhenNAd2Via2l0Lm9yZz4KIAogICAgICAgICBbUXRd
IFgxMSBwbHVnaW5zIG5lZWQgdG8gYmUgcmV3b3JrZWQgZm9yIFF0NQpJbmRleDogU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4JKHJldmlzaW9uIDk5MDU0KQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4JKHdvcmtpbmcgY29weSkKQEAg
LTkwLDYgKzkwLDcgQEAgZGVmYXVsdAogZGVmZXIKIGRpcgogZGlyZWN0aW9uCitkaXJuYW1lCiBk
aXNhYmxlZAogZG93bmxvYWQKIGRyYWdnYWJsZQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSW5wdXRFbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxJbnB1dEVsZW1lbnQuaWRsCShyZXZpc2lvbiA5OTA1NCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTElucHV0RWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTIzLDYgKzIzLDcgQEAg
bW9kdWxlIGh0bWwgewogICAgIGludGVyZmFjZSBIVE1MSW5wdXRFbGVtZW50IDogSFRNTEVsZW1l
bnQgewogICAgICAgICBhdHRyaWJ1dGUgW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nXSBET01TdHJp
bmcgZGVmYXVsdFZhbHVlOwogICAgICAgICBhdHRyaWJ1dGUgW1JlZmxlY3Q9Y2hlY2tlZF0gYm9v
bGVhbiBkZWZhdWx0Q2hlY2tlZDsKKyAgICAgICAgYXR0cmlidXRlIFtSZWZsZWN0XSBET01TdHJp
bmcgZGlyTmFtZTsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEhUTUxGb3JtRWxlbWVudCBm
b3JtOwogICAgICAgICBhdHRyaWJ1dGUgW1JlZmxlY3QsIFVSTF0gRE9NU3RyaW5nIGZvcm1BY3Rp
b247CiAgICAgICAgIGF0dHJpYnV0ZSBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmlu
ZyBmb3JtRW5jdHlwZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFF
bGVtZW50LmNwcAkocmV2aXNpb24gOTkwNTQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
ZXh0QXJlYUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzMsNyArMTczLDEwIEBAIGJv
b2wgSFRNTFRleHRBcmVhRWxlbWVudDo6YXBwZW5kRm9ybURhdGEKIAogICAgIGNvbnN0IFN0cmlu
ZyYgdGV4dCA9IChtX3dyYXAgPT0gSGFyZFdyYXApID8gdmFsdWVXaXRoSGFyZExpbmVCcmVha3Mo
KSA6IHZhbHVlKCk7CiAgICAgZW5jb2RpbmcuYXBwZW5kRGF0YShuYW1lKCksIHRleHQpOwotICAg
IHJldHVybiB0cnVlOworCisgICAgaWYgKGZhc3RIYXNBdHRyaWJ1dGUoZGlybmFtZUF0dHIpKQor
ICAgICAgICBlbmNvZGluZy5hcHBlbmREYXRhKGZhc3RHZXRBdHRyaWJ1dGUoZGlybmFtZUF0dHIp
LCBkaXJlY3Rpb25Gb3JGb3JtRGF0YSgpKTsKKyAgICByZXR1cm4gdHJ1ZTsgICAgCiB9CiAKIHZv
aWQgSFRNTFRleHRBcmVhRWxlbWVudDo6cmVzZXQoKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGV4dEFyZWFFbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaWRsCShyZXZpc2lvbiA5OTA1NCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI3
LDYgKzI3LDcgQEAgbW9kdWxlIGh0bWwgewogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgVmFs
aWRpdHlTdGF0ZSB2YWxpZGl0eTsKICAgICAgICAgYXR0cmlidXRlIFtSZWZsZWN0XSBET01TdHJp
bmcgYWNjZXNzS2V5OwogICAgICAgICBhdHRyaWJ1dGUgbG9uZyBjb2xzOworICAgICAgICBhdHRy
aWJ1dGUgW1JlZmxlY3RdIERPTVN0cmluZyBkaXJOYW1lOwogICAgICAgICBhdHRyaWJ1dGUgW1Jl
ZmxlY3RdIGJvb2xlYW4gZGlzYWJsZWQ7CiAgICAgICAgIGF0dHJpYnV0ZSBbUmVmbGVjdF0gYm9v
bGVhbiBhdXRvZm9jdXM7CiAgICAgICAgIGF0dHJpYnV0ZSBsb25nIG1heExlbmd0aCBzZXR0ZXIg
cmFpc2VzKERPTUV4Y2VwdGlvbik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0
Rm9ybUNvbnRyb2xFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcAkocmV2aXNpb24gOTkwNTQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTcwLDQgKzU3MCwyNSBAQCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCogZW5j
bG9zaW5nVGV4CiAgICAgcmV0dXJuIGFuY2VzdG9yICE9IGNvbnRhaW5lciA/IHRvVGV4dEZvcm1D
b250cm9sKGFuY2VzdG9yKSA6IDA7CiB9CiAKK1N0cmluZyBIVE1MVGV4dEZvcm1Db250cm9sRWxl
bWVudDo6ZGlyZWN0aW9uRm9yRm9ybURhdGEoKSBjb25zdAoreworICAgIGNvbnN0IEVsZW1lbnQq
IGVsZW1lbnQgPSB0aGlzOworICAgIHdoaWxlIChlbGVtZW50KSB7CisgICAgICAgIGlmIChlbGVt
ZW50LT5mYXN0SGFzQXR0cmlidXRlKGRpckF0dHIpKSB7CisgICAgICAgICAgICBBdG9taWNTdHJp
bmcgZGlyQXR0cmlidXRlVmFsdWUoZWxlbWVudC0+ZmFzdEdldEF0dHJpYnV0ZShkaXJBdHRyKSk7
CisgICAgICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZGlyQXR0cmlidXRlVmFsdWUsICJy
dGwiKSB8fCBlcXVhbElnbm9yaW5nQ2FzZShkaXJBdHRyaWJ1dGVWYWx1ZSwgImx0ciIpKQorICAg
ICAgICAgICAgICAgIHJldHVybiBkaXJBdHRyaWJ1dGVWYWx1ZTsKKworICAgICAgICAgICAgaWYg
KGVxdWFsSWdub3JpbmdDYXNlKGRpckF0dHJpYnV0ZVZhbHVlLCAiYXV0byIpKSB7CisgICAgICAg
ICAgICAgICAgYm9vbCBpc0F1dG87CisgICAgICAgICAgICAgICAgVGV4dERpcmVjdGlvbiB0ZXh0
RGlyZWN0aW9uID0gc3RhdGljX2Nhc3Q8Y29uc3QgSFRNTEVsZW1lbnQqPihlbGVtZW50KS0+ZGly
ZWN0aW9uYWxpdHlJZmhhc0RpckF1dG9BdHRyaWJ1dGUoaXNBdXRvKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gdGV4dERpcmVjdGlvbiA9PSBSVEwgPyAicnRsIiA6ICJsdHIiOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50LT5wYXJlbnRFbGVtZW50
KCk7CisgICAgfQorCisgICAgcmV0dXJuICJsdHIiOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJj
b3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9s
RWxlbWVudC5oCShyZXZpc2lvbiA5OTA1NCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRl
eHRGb3JtQ29udHJvbEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNzksNiArNzksOCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRJbm5lclRleHRWYWx1ZShjb25zdCBTdHJpbmcmKTsKICAgICBT
dHJpbmcgaW5uZXJUZXh0VmFsdWUoKSBjb25zdDsKIAorICAgIFN0cmluZyBkaXJlY3Rpb25Gb3JG
b3JtRGF0YSgpIGNvbnN0OworCiBwcm90ZWN0ZWQ6CiAgICAgSFRNTFRleHRGb3JtQ29udHJvbEVs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50KiwgSFRNTEZvcm1FbGVtZW50Kik7
CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVBsYWNlaG9sZGVyVGV4dCgpID0gMDsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAJKHJldmlzaW9uIDk5MDU0
KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMyw4ICszMywxMCBAQAogI2luY2x1ZGUgIlRleHRGaWVsZElucHV0VHlwZS5o
IgogCiAjaW5jbHVkZSAiQmVmb3JlVGV4dEluc2VydGVkRXZlbnQuaCIKKyNpbmNsdWRlICJGb3Jt
RGF0YUxpc3QuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1l
bnQuaCIKKyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJLZXlib2FyZEV2ZW50Lmgi
CiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCkBAIC00OSw2ICs1
MSw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAordXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1l
czsKKwogVGV4dEZpZWxkSW5wdXRUeXBlOjpUZXh0RmllbGRJbnB1dFR5cGUoSFRNTElucHV0RWxl
bWVudCogZWxlbWVudCkKICAgICA6IElucHV0VHlwZShlbGVtZW50KQogewpAQCAtMzY0LDQgKzM2
OCwxMiBAQCB2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6dXBkYXRlUGxhY2Vob2xkCiAgICAgQVNT
RVJUKCFlYyk7CiB9CiAKK2Jvb2wgVGV4dEZpZWxkSW5wdXRUeXBlOjphcHBlbmRGb3JtRGF0YShG
b3JtRGF0YUxpc3QmIGxpc3QsIGJvb2wgbXVsdGlwYXJ0KSBjb25zdAoreworICAgIElucHV0VHlw
ZTo6YXBwZW5kRm9ybURhdGEobGlzdCwgbXVsdGlwYXJ0KTsKKyAgICBpZiAoZWxlbWVudCgpLT5m
YXN0SGFzQXR0cmlidXRlKGRpcm5hbWVBdHRyKSkKKyAgICAgICAgbGlzdC5hcHBlbmREYXRhKGVs
ZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShkaXJuYW1lQXR0ciksIGVsZW1lbnQoKS0+ZGlyZWN0
aW9uRm9yRm9ybURhdGEoKSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuaAko
cmV2aXNpb24gOTkwNTQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlw
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIFNwaW5CdXR0b25FbGVtZW50OworY2xhc3MgRm9ybURhdGFMaXN0OyAKIAogLy8g
VGhlIGNsYXNzIHJlcHJlc2VudHMgdHlwZXMgb2Ygd2hpY2ggVUkgY29udGFpbiB0ZXh0IGZpZWxk
cy4KIC8vIEl0IHN1cHBvcnRzIG5vdCBvbmx5IHRoZSB0eXBlcyBmb3IgQmFzZVRleHRJbnB1dFR5
cGUgYnV0IGFsc28gdHlwZT1udW1iZXIuCkBAIC01Niw2ICs1Nyw4IEBAIHByb3RlY3RlZDoKICAg
ICB2aXJ0dWFsIEhUTUxFbGVtZW50KiBzcGVlY2hCdXR0b25FbGVtZW50KCkgY29uc3Q7CiAjZW5k
aWYKIAorICAgIHZpcnR1YWwgYm9vbCBhcHBlbmRGb3JtRGF0YShGb3JtRGF0YUxpc3QmLCBib29s
IG11bHRpcGFydCkgY29uc3Q7CisKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIGJvb2wgbmVlZHND
b250YWluZXIoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlU2hhZG93U3VidHJlZSgp
OwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L0NoYW5nZUxvZwkocmV2aXNpb24gOTkxNjMpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBAQAorMjAxMS0xMS0wMyAgUmFrZXNoIEtOICA8cmFr
ZXNoLmtuQG1vdG9yb2xhLmNvbT4KKworICAgICAgICBOZWVkIHN1cHBvcnQgZm9yIGRpcm5hbWUg
YXR0cmlidXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02NTU0MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEltcGxlbWVudGVkICdkaXJuYW1lJyBmb3JtIGF0dHJpYnV0ZS4KKworICAgICAgICAqIGZhc3Qv
Zm9ybXMvZm9ybS1kaXJuYW1lLWF0dHJpYnV0ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvZm9ybXMvZm9ybS1kaXJuYW1lLWF0dHJpYnV0ZS5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2Zvcm1zL3N1Ym1pdC1mb3JtLXdpdGgtZGlybmFtZS1hdHRyaWJ1dGUtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL3N1Ym1pdC1mb3JtLXdpdGgtZGly
bmFtZS1hdHRyaWJ1dGUtd2l0aC1hbmNlc3Rvci1kaXItYXR0cmlidXRlLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9zdWJtaXQtZm9ybS13aXRoLWRpcm5hbWUtYXR0
cmlidXRlLXdpdGgtYW5jZXN0b3ItZGlyLWF0dHJpYnV0ZS5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2Zvcm1zL3N1Ym1pdC1mb3JtLXdpdGgtZGlybmFtZS1hdHRyaWJ1dGUuaHRtbDogQWRk
ZWQuCisKIDIwMTEtMTEtMDMgIEJhbGF6cyBLZWxlbWVuICA8a2JhbGF6c0B3ZWJraXQub3JnPgog
CiAgICAgICAgIFtRdF0gWDExIHBsdWdpbnMgbmVlZCB0byBiZSByZXdvcmtlZCBmb3IgUXQ1Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2Zvcm0tZGlybmFtZS1hdHRyaWJ1dGUtZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvZm9ybS1kaXJuYW1l
LWF0dHJpYnV0ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL2Zvcm0tZGlybmFtZS1hdHRyaWJ1dGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDggQEAKKyJkaXJuYW1lIiBhdHRyaWJ1dGUKKworUEFTUyBpbnB1dC5kaXJOYW1l
IGlzICJIZWxsbyIKK1BBU1MgdGV4dEFyZWEuZGlyTmFtZSBpcyAiSGVsbG8iCitQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9mb3JtLWRpcm5hbWUtYXR0cmlidXRlLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9mb3JtLWRpcm5hbWUtYXR0cmlidXRlLmh0bWwJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2Zvcm0tZGlybmFtZS1hdHRyaWJ1dGUu
aHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9
Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+IDwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8cD4iZGlybmFtZSIgYXR0cmlidXRlPC9wPgorPHByZSBpZD0iY29uc29sZSI+PC9wcmU+
Cis8c2NyaXB0PgordmFyIGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTsK
K2lucHV0LnNldEF0dHJpYnV0ZSgnZGlyTmFtZScsICJIZWxsbyIpOworc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCdpbnB1dC5kaXJOYW1lJywgIkhlbGxvIik7CisKK3ZhciB0ZXh0QXJlYSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ3RleHRhcmVhJyk7Cit0ZXh0QXJlYS5zZXRBdHRyaWJ1dGUoJ2Rp
ck5hbWUnLCAiSGVsbG8iKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygndGV4dEFyZWEuZGlyTmFt
ZScsICJIZWxsbyIpOworc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zdWJtaXQtZm9ybS13
aXRoLWRpcm5hbWUtYXR0cmlidXRlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL3N1Ym1pdC1mb3JtLXdpdGgtZGlybmFtZS1hdHRyaWJ1dGUtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zdWJtaXQtZm9y
bS13aXRoLWRpcm5hbWUtYXR0cmlidXRlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwyMyBAQAorVGVzdCB0aGF0IHdoZW4gZGlybmFtZSBhdHRyaWJ1dGUgaXMgc3BlY2lmaWVk
IHRoZW4gaXQgaXMgYWRkZWQgaW4gc3VibWlzc2lvbiBib2R5LgorCitDb21tZW50OiAKKworV2l0
aFJUTERpcjogCisKK1dpdGhMVFJEaXI6IAorCitXaXRoSW52YWxpZERpcjogCisKK1dpdGhSVExW
YWx1ZTogCisKK1Bvc3QgQ29tbWVudAorCitQQVNTIGRvY3VtZW50LmxvY2F0aW9uLnNlYXJjaC5p
bmRleE9mKCJjb21tZW50LmRpcj1sdHIiKSAhPSAtMSBpcyB0cnVlCitQQVNTIGRvY3VtZW50Lmxv
Y2F0aW9uLnNlYXJjaC5pbmRleE9mKCJ0eHRhcmVhUlRMLmRpcj1ydGwiKSAhPSAtMSBpcyB0cnVl
CitQQVNTIGRvY3VtZW50LmxvY2F0aW9uLnNlYXJjaC5pbmRleE9mKCJ0eHRhcmVhTFRSLmRpcj1s
dHIiKSAhPSAtMSBpcyB0cnVlCitQQVNTIGRvY3VtZW50LmxvY2F0aW9uLnNlYXJjaC5pbmRleE9m
KCJ0eHRhcmVhSW52YWxpZC5kaXI9bHRyIikgIT0gLTEgaXMgdHJ1ZQorUEFTUyBkb2N1bWVudC5s
b2NhdGlvbi5zZWFyY2guaW5kZXhPZigiaW5wdXRSVEx2YWx1ZS5kaXI9bHRyIikgIT0gLTEgaXMg
dHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvc3VibWl0LWZvcm0td2l0aC1kaXJuYW1lLWF0
dHJpYnV0ZS13aXRoLWFuY2VzdG9yLWRpci1hdHRyaWJ1dGUtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvc3VibWl0LWZvcm0td2l0aC1kaXJuYW1lLWF0
dHJpYnV0ZS13aXRoLWFuY2VzdG9yLWRpci1hdHRyaWJ1dGUtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zdWJtaXQtZm9ybS13aXRoLWRpcm5hbWUt
YXR0cmlidXRlLXdpdGgtYW5jZXN0b3ItZGlyLWF0dHJpYnV0ZS1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMTMgQEAKK1Rlc3QgdGhhdCB3aGVuIGRpcm5hbWUgYXR0cmlidXRl
IGlzIHNwZWNpZmllZCB0aGVuIGl0IGlzIGFkZGVkIGluIHN1Ym1pc3Npb24gYm9keS4KKworCisK
K1Bvc3QgQ29tbWVudAorCitIZWxsbworUEFTUyBkb2N1bWVudC5sb2NhdGlvbi5zZWFyY2guaW5k
ZXhPZigicnRsQW5jZXN0b3IuZGlyPXJ0bCIpICE9IC0xIGlzIHRydWUKK1BBU1MgZG9jdW1lbnQu
bG9jYXRpb24uc2VhcmNoLmluZGV4T2YoImF1dG9BbmNlc3Rvci5kaXI9bHRyIikgIT0gLTEgaXMg
dHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvc3VibWl0LWZvcm0td2l0aC1kaXJuYW1lLWF0
dHJpYnV0ZS13aXRoLWFuY2VzdG9yLWRpci1hdHRyaWJ1dGUuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3N1Ym1pdC1mb3JtLXdpdGgtZGlybmFtZS1hdHRyaWJ1dGUt
d2l0aC1hbmNlc3Rvci1kaXItYXR0cmlidXRlLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL3N1Ym1pdC1mb3JtLXdpdGgtZGlybmFtZS1hdHRyaWJ1dGUtd2l0aC1h
bmNlc3Rvci1kaXItYXR0cmlidXRlLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDAgQEAK
KzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJjb250ZW50LXR5cGUiIGNvbnRlbnQ9
InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Cis8L2hlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj4gPC9zY3JpcHQ+Cis8c2NyaXB0Pgord2luZG93Lmpz
VGVzdElzQXN5bmMgPSB0cnVlOworCitmdW5jdGlvbiB0ZXN0KCkgeworICAgIGRvY3VtZW50LmZv
cm1zLmYuc3VibWl0KCk7Cit9Cis8L3NjcmlwdD4KKzxib2R5IG9ubG9hZD0idGVzdCgpIj4KKzxw
PlRlc3QgdGhhdCB3aGVuIGRpcm5hbWUgYXR0cmlidXRlIGlzIHNwZWNpZmllZCB0aGVuIGl0IGlz
IGFkZGVkIGluIHN1Ym1pc3Npb24gYm9keS48L3A+Cis8ZGl2IGRpcj0iYXV0byI+CisgICAgPGZv
cm0gYWN0aW9uPSIjYWN0aW9uIiBtZXRob2Q9IkdFVCIgbmFtZT0iZiI+CisgICAgICAgIDxkaXYg
ZGlyPSJydGwiPiAKKyAgICAgICAgICAgIDxpbnB1dCB0eXBlPXRleHQgbmFtZT0iY29tbWVudCIg
ZGlybmFtZT0icnRsQW5jZXN0b3IuZGlyIiByZXF1aXJlZD4KKyAgICAgICAgPC9kaXY+CisgICAg
ICAgIDxpbnB1dCB0eXBlPXRleHQgbmFtZT0iYXV0b0FuY2VzdG9yIiBkaXJuYW1lPSJhdXRvQW5j
ZXN0b3IuZGlyIiB2YWx1ZT0i16nXnNeV150iPgorICAgICAgICA8cD48YnV0dG9uIG5hbWU9Im1v
ZGUiIHR5cGU9c3VibWl0IHZhbHVlPSJhZGQiPlBvc3QgQ29tbWVudDwvYnV0dG9uPjwvcD4KKyAg
ICA8L2Zvcm0+CisgICAgSGVsbG8KKzwvZGl2PgorCis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KzxkaXYgaWQ9ImFjdGlvbiI+Cis8c2NyaXB0PgoraWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYu
bWF0Y2goJ1xcPycpKSB7CisgICAgc2hvdWxkQmVUcnVlKCdkb2N1bWVudC5sb2NhdGlvbi5zZWFy
Y2guaW5kZXhPZigicnRsQW5jZXN0b3IuZGlyPXJ0bCIpICE9IC0xJyk7CisgICAgc2hvdWxkQmVU
cnVlKCdkb2N1bWVudC5sb2NhdGlvbi5zZWFyY2guaW5kZXhPZigiYXV0b0FuY2VzdG9yLmRpcj1s
dHIiKSAhPSAtMScpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCitzdWNjZXNzZnVsbHlQYXJz
ZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2Rpdj4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvc3VibWl0LWZvcm0td2l0aC1kaXJuYW1lLWF0dHJpYnV0ZS5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvc3VibWl0LWZvcm0td2l0
aC1kaXJuYW1lLWF0dHJpYnV0ZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy9zdWJtaXQtZm9ybS13aXRoLWRpcm5hbWUtYXR0cmlidXRlLmh0bWwJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNDIgQEAKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJj
b250ZW50LXR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Cis8L2hlYWQ+
Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj4gPC9zY3JpcHQ+
Cis8c2NyaXB0Pgord2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCitmdW5jdGlvbiB0ZXN0
KCkgeworICAgIGRvY3VtZW50LmZvcm1zLmYuc3VibWl0KCk7Cit9Cis8L3NjcmlwdD4KKzxib2R5
IG9ubG9hZD0idGVzdCgpIj4KKzxwPlRlc3QgdGhhdCB3aGVuIGRpcm5hbWUgYXR0cmlidXRlIGlz
IHNwZWNpZmllZCB0aGVuIGl0IGlzIGFkZGVkIGluIHN1Ym1pc3Npb24gYm9keS48L3A+CisKKzxm
b3JtIGFjdGlvbj0iI2FjdGlvbiIgbmFtZT0iZiI+CisgICAgPHA+PGxhYmVsPkNvbW1lbnQ6IDxp
bnB1dCB0eXBlPXRleHQgbmFtZT0iY29tbWVudCIgZGlybmFtZT0iY29tbWVudC5kaXIiIHJlcXVp
cmVkPjwvbGFiZWw+PC9wPgorICAgIDxwPjxsYWJlbD5XaXRoUlRMRGlyOiA8dGV4dGFyZWEgbmFt
ZT0idHh0YXJlYSIgZGlyPSJydGwiIGRpcm5hbWU9InR4dGFyZWFSVEwuZGlyIj48L3RleHRhcmVh
PjwvbGFiZWw+PC9wPgorICAgIDxwPjxsYWJlbD5XaXRoTFRSRGlyOiA8dGV4dGFyZWEgbmFtZT0i
dHh0YXJlYTEiIGRpcj0ibHRyIiBkaXJuYW1lPSJ0eHRhcmVhTFRSLmRpciI+PC90ZXh0YXJlYT48
L2xhYmVsPjwvcD4KKyAgICA8cD48bGFiZWw+V2l0aEludmFsaWREaXI6IDx0ZXh0YXJlYSBuYW1l
PSJ0eHRhcmVhMiIgZGlyPSJpbnZhbGlkIiBkaXJuYW1lPSJ0eHRhcmVhSW52YWxpZC5kaXIiPjwv
dGV4dGFyZWE+PC9sYWJlbD48L3A+CisgICAgPHA+PGxhYmVsPldpdGhSVExWYWx1ZTogPGlucHV0
IG5hbWU9ImlucHV0IiBkaXJuYW1lPSJpbnB1dFJUTHZhbHVlLmRpciIgdmFsdWU9ItmF2LHYrdio
2YvYpyI+PC9sYWJlbD48L3A+CisgICAgPHA+PGJ1dHRvbiBuYW1lPSJtb2RlIiB0eXBlPXN1Ym1p
dCB2YWx1ZT0iYWRkIj5Qb3N0IENvbW1lbnQ8L2J1dHRvbj48L3A+Cis8L2Zvcm0+CisKKzxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorPGRpdiBpZD0iYWN0aW9uIj4KKzxzY3JpcHQ+CitpZiAoZG9j
dW1lbnQubG9jYXRpb24uaHJlZi5tYXRjaCgnXFw/JykpIHsKKyAgICBzaG91bGRCZVRydWUoJ2Rv
Y3VtZW50LmxvY2F0aW9uLnNlYXJjaC5pbmRleE9mKCJjb21tZW50LmRpcj1sdHIiKSAhPSAtMScp
OworICAgIHNob3VsZEJlVHJ1ZSgnZG9jdW1lbnQubG9jYXRpb24uc2VhcmNoLmluZGV4T2YoInR4
dGFyZWFSVEwuZGlyPXJ0bCIpICE9IC0xJyk7CisgICAgc2hvdWxkQmVUcnVlKCdkb2N1bWVudC5s
b2NhdGlvbi5zZWFyY2guaW5kZXhPZigidHh0YXJlYUxUUi5kaXI9bHRyIikgIT0gLTEnKTsKKyAg
ICBzaG91bGRCZVRydWUoJ2RvY3VtZW50LmxvY2F0aW9uLnNlYXJjaC5pbmRleE9mKCJ0eHRhcmVh
SW52YWxpZC5kaXI9bHRyIikgIT0gLTEnKTsKKyAgICBzaG91bGRCZVRydWUoJ2RvY3VtZW50Lmxv
Y2F0aW9uLnNlYXJjaC5pbmRleE9mKCJpbnB1dFJUTHZhbHVlLmRpcj1sdHIiKSAhPSAtMScpOwor
ICAgIGZpbmlzaEpTVGVzdCgpOworfQorCitzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9z
Y3JpcHQ+Cis8L2Rpdj4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113632</attachid>
            <date>2011-11-04 01:07:40 -0700</date>
            <delta_ts>2011-11-07 23:27:35 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>bug-65542-20111104133246.patch</filename>
            <type>text/plain</type>
            <size>15425</size>
            <attacher name="Rakesh">rakeshchaitan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk5MjY1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTEtMTEtMDQgIFJha2VzaCBL
TiAgPHJha2VzaC5rbkBtb3Rvcm9sYS5jb20+CisKKyAgICAgICAgTmVlZCBzdXBwb3J0IGZvciBk
aXJuYW1lIGF0dHJpYnV0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NjU1NDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBJbXBsZW1lbnRlZCAnZGlybmFtZScgZm9ybSBhdHRyaWJ1dGUuCisKKyAgICAgICAg
VGVzdHM6IGZhc3QvZm9ybXMvZm9ybS1kaXJuYW1lLWF0dHJpYnV0ZS5odG1sCisgICAgICAgICAg
ICAgICBmYXN0L2Zvcm1zL3N1Ym1pdC1mb3JtLXdpdGgtZGlybmFtZS1hdHRyaWJ1dGUtd2l0aC1h
bmNlc3Rvci1kaXItYXR0cmlidXRlLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZm9ybXMvc3Vi
bWl0LWZvcm0td2l0aC1kaXJuYW1lLWF0dHJpYnV0ZS5odG1sCisKKyAgICAgICAgKiBodG1sL0hU
TUxBdHRyaWJ1dGVOYW1lcy5pbjoKKyAgICAgICAgQWRkZWQgImRpcm5hbWUiIGF0dHJpYnV0ZS4K
KyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuaWRsOgorICAgICAgICBBZGQgImRpck5h
bWUiIHByb3BlcnR5IHRvIEhUTUxJbnB1dEVsZW1lbnQgaW50ZXJmYWNlLgorICAgICAgICAqIGh0
bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEFy
ZWFFbGVtZW50OjphcHBlbmRGb3JtRGF0YSk6CisgICAgICAgIEFwcGVuZCBkaXJuYW1lIGZvcm0g
ZGF0YS4KKyAgICAgICAgKiBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaWRsOgorICAgICAgICBB
ZGQgImRpck5hbWUiIHByb3BlcnR5IHRvIEhUTUxUZXh0QXJlYUVsZW1lbnQgaW50ZXJmYWNlLgor
ICAgICAgICAqIGh0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmRpcmVjdGlvbkZvckZvcm1EYXRh
KToKKyAgICAgICAgSGVscGVyIGZ1bmN0aW9uIGZvciBmaW5kaW5nIGRpcmVjdGlvbmFsaXR5IG9m
IHRoZSBFbGVtZW50LgorICAgICAgICAqIGh0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQu
aDoKKyAgICAgICAgSGVscGVyIGZ1bmN0aW9uIGZvciBmaW5kaW5nIGRpcmVjdGlvbmFsaXR5IG9m
IHRoZSBFbGVtZW50LgorICAgICAgICAqIGh0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6YXBwZW5kRm9ybURhdGEpOgorICAg
ICAgICBBcHBlbmQgZGlybmFtZSBmb3JtIGRhdGEuCisgICAgICAgICogaHRtbC9UZXh0RmllbGRJ
bnB1dFR5cGUuaDoKKyAgICAgICAgQXBwZW5kIGRpcm5hbWUgZm9ybSBkYXRhLgorCiAyMDExLTEx
LTAzICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJFR1JFU1NJ
T04gKHI5OTA3Nik6IFBhc3RpbmcgaW50byBwYXNzd29yZCBmaWVsZHMgaXMgYnJva2VuCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgkocmV2aXNpb24gOTkw
NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgkod29ya2lu
ZyBjb3B5KQpAQCAtOTAsNiArOTAsNyBAQCBkZWZhdWx0CiBkZWZlcgogZGlyCiBkaXJlY3Rpb24K
K2Rpcm5hbWUKIGRpc2FibGVkCiBkb3dubG9hZAogZHJhZ2dhYmxlCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5pZGwJKHJldmlzaW9uIDk5MDU0KQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjMs
NiArMjMsNyBAQCBtb2R1bGUgaHRtbCB7CiAgICAgaW50ZXJmYWNlIEhUTUxJbnB1dEVsZW1lbnQg
OiBIVE1MRWxlbWVudCB7CiAgICAgICAgIGF0dHJpYnV0ZSBbQ29udmVydE51bGxUb051bGxTdHJp
bmddIERPTVN0cmluZyBkZWZhdWx0VmFsdWU7CiAgICAgICAgIGF0dHJpYnV0ZSBbUmVmbGVjdD1j
aGVja2VkXSBib29sZWFuIGRlZmF1bHRDaGVja2VkOworICAgICAgICBhdHRyaWJ1dGUgW1JlZmxl
Y3RdIERPTVN0cmluZyBkaXJOYW1lOwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgSFRNTEZv
cm1FbGVtZW50IGZvcm07CiAgICAgICAgIGF0dHJpYnV0ZSBbUmVmbGVjdCwgVVJMXSBET01TdHJp
bmcgZm9ybUFjdGlvbjsKICAgICAgICAgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmlu
Z10gRE9NU3RyaW5nIGZvcm1FbmN0eXBlOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGV4dEFyZWFFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUZXh0QXJlYUVsZW1lbnQuY3BwCShyZXZpc2lvbiA5OTA1NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3Myw3ICsx
NzMsMTEgQEAgYm9vbCBIVE1MVGV4dEFyZWFFbGVtZW50OjphcHBlbmRGb3JtRGF0YQogCiAgICAg
Y29uc3QgU3RyaW5nJiB0ZXh0ID0gKG1fd3JhcCA9PSBIYXJkV3JhcCkgPyB2YWx1ZVdpdGhIYXJk
TGluZUJyZWFrcygpIDogdmFsdWUoKTsKICAgICBlbmNvZGluZy5hcHBlbmREYXRhKG5hbWUoKSwg
dGV4dCk7Ci0gICAgcmV0dXJuIHRydWU7CisKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIGRpcm5h
bWVBdHRyVmFsdWUgPSBmYXN0R2V0QXR0cmlidXRlKGRpcm5hbWVBdHRyKTsKKyAgICBpZiAoIWRp
cm5hbWVBdHRyVmFsdWUuaXNOdWxsKCkpCisgICAgICAgIGVuY29kaW5nLmFwcGVuZERhdGEoZGly
bmFtZUF0dHJWYWx1ZSwgZGlyZWN0aW9uRm9yRm9ybURhdGEoKSk7CisgICAgcmV0dXJuIHRydWU7
ICAgIAogfQogCiB2b2lkIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OnJlc2V0KCkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmlkbAkocmV2aXNpb24gOTkwNTQp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaWRsCSh3b3JraW5n
IGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBAIG1vZHVsZSBodG1sIHsKICAgICAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIFZhbGlkaXR5U3RhdGUgdmFsaWRpdHk7CiAgICAgICAgIGF0dHJpYnV0ZSBbUmVm
bGVjdF0gRE9NU3RyaW5nIGFjY2Vzc0tleTsKICAgICAgICAgYXR0cmlidXRlIGxvbmcgY29sczsK
KyAgICAgICAgYXR0cmlidXRlIFtSZWZsZWN0XSBET01TdHJpbmcgZGlyTmFtZTsKICAgICAgICAg
YXR0cmlidXRlIFtSZWZsZWN0XSBib29sZWFuIGRpc2FibGVkOwogICAgICAgICBhdHRyaWJ1dGUg
W1JlZmxlY3RdIGJvb2xlYW4gYXV0b2ZvY3VzOwogICAgICAgICBhdHRyaWJ1dGUgbG9uZyBtYXhM
ZW5ndGggc2V0dGVyIHJhaXNlcyhET01FeGNlcHRpb24pOwpJbmRleDogU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAJKHJldmlzaW9uIDk5
MDU0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTU3MCw0ICs1NzAsMjQgQEAgSFRNTFRleHRGb3JtQ29udHJv
bEVsZW1lbnQqIGVuY2xvc2luZ1RleAogICAgIHJldHVybiBhbmNlc3RvciAhPSBjb250YWluZXIg
PyB0b1RleHRGb3JtQ29udHJvbChhbmNlc3RvcikgOiAwOwogfQogCitTdHJpbmcgSFRNTFRleHRG
b3JtQ29udHJvbEVsZW1lbnQ6OmRpcmVjdGlvbkZvckZvcm1EYXRhKCkgY29uc3QKK3sKKyAgICBm
b3IgKGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQgPSB0aGlzOyBlbGVtZW50OyBlbGVtZW50ID0gZWxl
bWVudC0+cGFyZW50RWxlbWVudCgpKSB7CisgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgZGly
QXR0cmlidXRlVmFsdWUgPSBlbGVtZW50LT5mYXN0R2V0QXR0cmlidXRlKGRpckF0dHIpOworICAg
ICAgICBpZiAoZGlyQXR0cmlidXRlVmFsdWUuaXNOdWxsKCkpCisgICAgICAgICAgICBjb250aW51
ZTsKKworICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZGlyQXR0cmlidXRlVmFsdWUsICJy
dGwiKSB8fCBlcXVhbElnbm9yaW5nQ2FzZShkaXJBdHRyaWJ1dGVWYWx1ZSwgImx0ciIpKQorICAg
ICAgICAgICAgcmV0dXJuIGRpckF0dHJpYnV0ZVZhbHVlOworCisgICAgICAgIGlmIChlcXVhbEln
bm9yaW5nQ2FzZShkaXJBdHRyaWJ1dGVWYWx1ZSwgImF1dG8iKSAmJiBlbGVtZW50LT5pc0hUTUxF
bGVtZW50KCkpIHsKKyAgICAgICAgICAgIGJvb2wgaXNBdXRvOworICAgICAgICAgICAgVGV4dERp
cmVjdGlvbiB0ZXh0RGlyZWN0aW9uID0gc3RhdGljX2Nhc3Q8Y29uc3QgSFRNTEVsZW1lbnQqPihl
bGVtZW50KS0+ZGlyZWN0aW9uYWxpdHlJZmhhc0RpckF1dG9BdHRyaWJ1dGUoaXNBdXRvKTsKKyAg
ICAgICAgICAgIHJldHVybiB0ZXh0RGlyZWN0aW9uID09IFJUTCA/ICJydGwiIDogImx0ciI7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gImx0ciI7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYmNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVs
ZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNv
bnRyb2xFbGVtZW50LmgJKHJldmlzaW9uIDk5MDU0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC03OSw2ICs3OSw4
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldElubmVyVGV4dFZhbHVlKGNvbnN0IFN0cmluZyYpOwog
ICAgIFN0cmluZyBpbm5lclRleHRWYWx1ZSgpIGNvbnN0OwogCisgICAgU3RyaW5nIGRpcmVjdGlv
bkZvckZvcm1EYXRhKCkgY29uc3Q7CisKIHByb3RlY3RlZDoKICAgICBIVE1MVGV4dEZvcm1Db250
cm9sRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqLCBIVE1MRm9ybUVsZW1l
bnQqKTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUGxhY2Vob2xkZXJUZXh0KCkgPSAwOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcAkocmV2aXNpb24g
OTkwNTQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMzLDggKzMzLDEwIEBACiAjaW5jbHVkZSAiVGV4dEZpZWxkSW5wdXRU
eXBlLmgiCiAKICNpbmNsdWRlICJCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudC5oIgorI2luY2x1ZGUg
IkZvcm1EYXRhTGlzdC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSFRNTElucHV0
RWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIktleWJvYXJkRXZl
bnQuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKQEAgLTQ5
LDYgKzUxLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCit1c2luZyBuYW1lc3BhY2UgSFRN
TE5hbWVzOworCiBUZXh0RmllbGRJbnB1dFR5cGU6OlRleHRGaWVsZElucHV0VHlwZShIVE1MSW5w
dXRFbGVtZW50KiBlbGVtZW50KQogICAgIDogSW5wdXRUeXBlKGVsZW1lbnQpCiB7CkBAIC0zNjQs
NCArMzY4LDEzIEBAIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjp1cGRhdGVQbGFjZWhvbGQKICAg
ICBBU1NFUlQoIWVjKTsKIH0KIAorYm9vbCBUZXh0RmllbGRJbnB1dFR5cGU6OmFwcGVuZEZvcm1E
YXRhKEZvcm1EYXRhTGlzdCYgbGlzdCwgYm9vbCBtdWx0aXBhcnQpIGNvbnN0Cit7CisgICAgSW5w
dXRUeXBlOjphcHBlbmRGb3JtRGF0YShsaXN0LCBtdWx0aXBhcnQpOworICAgIGNvbnN0IEF0b21p
Y1N0cmluZyYgZGlybmFtZUF0dHJWYWx1ZSA9IGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShk
aXJuYW1lQXR0cik7CisgICAgaWYgKCFkaXJuYW1lQXR0clZhbHVlLmlzTnVsbCgpKQorICAgICAg
ICBsaXN0LmFwcGVuZERhdGEoZGlybmFtZUF0dHJWYWx1ZSwgZWxlbWVudCgpLT5kaXJlY3Rpb25G
b3JGb3JtRGF0YSgpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5oCShyZXZp
c2lvbiA5OTA1NCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgU3BpbkJ1dHRvbkVsZW1lbnQ7CitjbGFzcyBGb3JtRGF0YUxpc3Q7IAogCiAvLyBUaGUg
Y2xhc3MgcmVwcmVzZW50cyB0eXBlcyBvZiB3aGljaCBVSSBjb250YWluIHRleHQgZmllbGRzLgog
Ly8gSXQgc3VwcG9ydHMgbm90IG9ubHkgdGhlIHR5cGVzIGZvciBCYXNlVGV4dElucHV0VHlwZSBi
dXQgYWxzbyB0eXBlPW51bWJlci4KQEAgLTU2LDYgKzU3LDggQEAgcHJvdGVjdGVkOgogICAgIHZp
cnR1YWwgSFRNTEVsZW1lbnQqIHNwZWVjaEJ1dHRvbkVsZW1lbnQoKSBjb25zdDsKICNlbmRpZgog
CisgICAgdmlydHVhbCBib29sIGFwcGVuZEZvcm1EYXRhKEZvcm1EYXRhTGlzdCYsIGJvb2wgbXVs
dGlwYXJ0KSBjb25zdDsKKwogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgYm9vbCBuZWVkc0NvbnRh
aW5lcigpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVTaGFkb3dTdWJ0cmVlKCk7Cklu
ZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCShyZXZpc2lvbiA5OTI2NSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDExLTExLTA0ICBSYWtlc2ggS04gIDxyYWtlc2gu
a25AbW90b3JvbGEuY29tPgorCisgICAgICAgIE5lZWQgc3VwcG9ydCBmb3IgZGlybmFtZSBhdHRy
aWJ1dGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1
NTQyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1w
bGVtZW50ZWQgJ2Rpcm5hbWUnIGZvcm0gYXR0cmlidXRlLgorCisgICAgICAgICogZmFzdC9mb3Jt
cy9mb3JtLWRpcm5hbWUtYXR0cmlidXRlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9mb3Jtcy9mb3JtLWRpcm5hbWUtYXR0cmlidXRlLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvZm9ybXMvc3VibWl0LWZvcm0td2l0aC1kaXJuYW1lLWF0dHJpYnV0ZS1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvc3VibWl0LWZvcm0td2l0aC1kaXJuYW1l
LWF0dHJpYnV0ZS13aXRoLWFuY2VzdG9yLWRpci1hdHRyaWJ1dGUtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL3N1Ym1pdC1mb3JtLXdpdGgtZGlybmFtZS1hdHRyaWJ1
dGUtd2l0aC1hbmNlc3Rvci1kaXItYXR0cmlidXRlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZm9ybXMvc3VibWl0LWZvcm0td2l0aC1kaXJuYW1lLWF0dHJpYnV0ZS5odG1sOiBBZGRlZC4K
KwogMjAxMS0xMS0wMyAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAog
ICAgICAgICBVbnJldmlld2VkLCBmb3Jnb3QgdG8gc2tpcCBhIG5ldyB0ZXN0IGluIHI5OTI2MS4K
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvZm9ybS1kaXJuYW1lLWF0dHJpYnV0ZS1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9mb3JtLWRpcm5h
bWUtYXR0cmlidXRlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zh
c3QvZm9ybXMvZm9ybS1kaXJuYW1lLWF0dHJpYnV0ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsOCBAQAorImRpcm5hbWUiIGF0dHJpYnV0ZQorCitQQVNTIGlucHV0LmRpck5h
bWUgaXMgIkhlbGxvIgorUEFTUyB0ZXh0QXJlYS5kaXJOYW1lIGlzICJIZWxsbyIKK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL2Zvcm0tZGlybmFtZS1hdHRyaWJ1dGUuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2Zvcm0tZGlybmFtZS1hdHRyaWJ1dGUuaHRtbAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvZm9ybS1kaXJuYW1lLWF0dHJpYnV0
ZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNy
Yz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj4gPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxwPiJkaXJuYW1lIiBhdHRyaWJ1dGU8L3A+Cis8cHJlIGlkPSJjb25zb2xlIj48L3By
ZT4KKzxzY3JpcHQ+Cit2YXIgaW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcp
OworaW5wdXQuc2V0QXR0cmlidXRlKCdkaXJOYW1lJywgIkhlbGxvIik7CitzaG91bGRCZUVxdWFs
VG9TdHJpbmcoJ2lucHV0LmRpck5hbWUnLCAiSGVsbG8iKTsKKwordmFyIHRleHRBcmVhID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgndGV4dGFyZWEnKTsKK3RleHRBcmVhLnNldEF0dHJpYnV0ZSgn
ZGlyTmFtZScsICJIZWxsbyIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCd0ZXh0QXJlYS5kaXJO
YW1lJywgIkhlbGxvIik7CitzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3N1Ym1pdC1mb3Jt
LXdpdGgtZGlybmFtZS1hdHRyaWJ1dGUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZm9ybXMvc3VibWl0LWZvcm0td2l0aC1kaXJuYW1lLWF0dHJpYnV0ZS1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3N1Ym1pdC1m
b3JtLXdpdGgtZGlybmFtZS1hdHRyaWJ1dGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDIzIEBACitUZXN0IHRoYXQgd2hlbiBkaXJuYW1lIGF0dHJpYnV0ZSBpcyBzcGVjaWZp
ZWQgdGhlbiBpdCBpcyBhZGRlZCBpbiBzdWJtaXNzaW9uIGJvZHkuCisKK0NvbW1lbnQ6IAorCitX
aXRoUlRMRGlyOiAKKworV2l0aExUUkRpcjogCisKK1dpdGhJbnZhbGlkRGlyOiAKKworV2l0aFJU
TFZhbHVlOiAKKworUG9zdCBDb21tZW50CisKK1BBU1MgZG9jdW1lbnQubG9jYXRpb24uc2VhcmNo
LmluZGV4T2YoImNvbW1lbnQuZGlyPWx0ciIpICE9IC0xIGlzIHRydWUKK1BBU1MgZG9jdW1lbnQu
bG9jYXRpb24uc2VhcmNoLmluZGV4T2YoInR4dGFyZWFSVEwuZGlyPXJ0bCIpICE9IC0xIGlzIHRy
dWUKK1BBU1MgZG9jdW1lbnQubG9jYXRpb24uc2VhcmNoLmluZGV4T2YoInR4dGFyZWFMVFIuZGly
PWx0ciIpICE9IC0xIGlzIHRydWUKK1BBU1MgZG9jdW1lbnQubG9jYXRpb24uc2VhcmNoLmluZGV4
T2YoInR4dGFyZWFJbnZhbGlkLmRpcj1sdHIiKSAhPSAtMSBpcyB0cnVlCitQQVNTIGRvY3VtZW50
LmxvY2F0aW9uLnNlYXJjaC5pbmRleE9mKCJpbnB1dFJUTHZhbHVlLmRpcj1sdHIiKSAhPSAtMSBp
cyB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zdWJtaXQtZm9ybS13aXRoLWRpcm5hbWUt
YXR0cmlidXRlLXdpdGgtYW5jZXN0b3ItZGlyLWF0dHJpYnV0ZS1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zdWJtaXQtZm9ybS13aXRoLWRpcm5hbWUt
YXR0cmlidXRlLXdpdGgtYW5jZXN0b3ItZGlyLWF0dHJpYnV0ZS1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3N1Ym1pdC1mb3JtLXdpdGgtZGlybmFt
ZS1hdHRyaWJ1dGUtd2l0aC1hbmNlc3Rvci1kaXItYXR0cmlidXRlLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwxMyBAQAorVGVzdCB0aGF0IHdoZW4gZGlybmFtZSBhdHRyaWJ1
dGUgaXMgc3BlY2lmaWVkIHRoZW4gaXQgaXMgYWRkZWQgaW4gc3VibWlzc2lvbiBib2R5LgorCisK
KworUG9zdCBDb21tZW50CisKK0hlbGxvCitQQVNTIGRvY3VtZW50LmxvY2F0aW9uLnNlYXJjaC5p
bmRleE9mKCJydGxBbmNlc3Rvci5kaXI9cnRsIikgIT0gLTEgaXMgdHJ1ZQorUEFTUyBkb2N1bWVu
dC5sb2NhdGlvbi5zZWFyY2guaW5kZXhPZigiYXV0b0FuY2VzdG9yLmRpcj1sdHIiKSAhPSAtMSBp
cyB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zdWJtaXQtZm9ybS13aXRoLWRpcm5hbWUt
YXR0cmlidXRlLXdpdGgtYW5jZXN0b3ItZGlyLWF0dHJpYnV0ZS5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvc3VibWl0LWZvcm0td2l0aC1kaXJuYW1lLWF0dHJpYnV0
ZS13aXRoLWFuY2VzdG9yLWRpci1hdHRyaWJ1dGUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2Zhc3QvZm9ybXMvc3VibWl0LWZvcm0td2l0aC1kaXJuYW1lLWF0dHJpYnV0ZS13aXRo
LWFuY2VzdG9yLWRpci1hdHRyaWJ1dGUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0MCBA
QAorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVu
dD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KKzwvaGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPiA8L3NjcmlwdD4KKzxzY3JpcHQ+Cit3aW5kb3cu
anNUZXN0SXNBc3luYyA9IHRydWU7CisKK2Z1bmN0aW9uIHRlc3QoKSB7CisgICAgZG9jdW1lbnQu
Zm9ybXMuZi5zdWJtaXQoKTsKK30KKzwvc2NyaXB0PgorPGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgor
PHA+VGVzdCB0aGF0IHdoZW4gZGlybmFtZSBhdHRyaWJ1dGUgaXMgc3BlY2lmaWVkIHRoZW4gaXQg
aXMgYWRkZWQgaW4gc3VibWlzc2lvbiBib2R5LjwvcD4KKzxkaXYgZGlyPSJhdXRvIj4KKyAgICA8
Zm9ybSBhY3Rpb249IiNhY3Rpb24iIG1ldGhvZD0iR0VUIiBuYW1lPSJmIj4KKyAgICAgICAgPGRp
diBkaXI9InJ0bCI+IAorICAgICAgICAgICAgPGlucHV0IHR5cGU9dGV4dCBuYW1lPSJjb21tZW50
IiBkaXJuYW1lPSJydGxBbmNlc3Rvci5kaXIiIHJlcXVpcmVkPgorICAgICAgICA8L2Rpdj4KKyAg
ICAgICAgPGlucHV0IHR5cGU9dGV4dCBuYW1lPSJhdXRvQW5jZXN0b3IiIGRpcm5hbWU9ImF1dG9B
bmNlc3Rvci5kaXIiIHZhbHVlPSLXqdec15XXnSI+CisgICAgICAgIDxwPjxidXR0b24gbmFtZT0i
bW9kZSIgdHlwZT1zdWJtaXQgdmFsdWU9ImFkZCI+UG9zdCBDb21tZW50PC9idXR0b24+PC9wPgor
ICAgIDwvZm9ybT4KKyAgICBIZWxsbworPC9kaXY+CisKKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorPGRpdiBpZD0iYWN0aW9uIj4KKzxzY3JpcHQ+CitpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJl
Zi5tYXRjaCgnXFw/JykpIHsKKyAgICBzaG91bGRCZVRydWUoJ2RvY3VtZW50LmxvY2F0aW9uLnNl
YXJjaC5pbmRleE9mKCJydGxBbmNlc3Rvci5kaXI9cnRsIikgIT0gLTEnKTsKKyAgICBzaG91bGRC
ZVRydWUoJ2RvY3VtZW50LmxvY2F0aW9uLnNlYXJjaC5pbmRleE9mKCJhdXRvQW5jZXN0b3IuZGly
PWx0ciIpICE9IC0xJyk7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3N1Y2Nlc3NmdWxseVBh
cnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzwvZGl2PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zdWJtaXQtZm9ybS13aXRoLWRpcm5hbWUtYXR0cmlidXRl
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zdWJtaXQtZm9ybS13
aXRoLWRpcm5hbWUtYXR0cmlidXRlLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL3N1Ym1pdC1mb3JtLXdpdGgtZGlybmFtZS1hdHRyaWJ1dGUuaHRtbAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw0MiBAQAorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9
ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KKzwvaGVh
ZD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPiA8L3Njcmlw
dD4KKzxzY3JpcHQ+Cit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKK2Z1bmN0aW9uIHRl
c3QoKSB7CisgICAgZG9jdW1lbnQuZm9ybXMuZi5zdWJtaXQoKTsKK30KKzwvc2NyaXB0PgorPGJv
ZHkgb25sb2FkPSJ0ZXN0KCkiPgorPHA+VGVzdCB0aGF0IHdoZW4gZGlybmFtZSBhdHRyaWJ1dGUg
aXMgc3BlY2lmaWVkIHRoZW4gaXQgaXMgYWRkZWQgaW4gc3VibWlzc2lvbiBib2R5LjwvcD4KKwor
PGZvcm0gYWN0aW9uPSIjYWN0aW9uIiBuYW1lPSJmIj4KKyAgICA8cD48bGFiZWw+Q29tbWVudDog
PGlucHV0IHR5cGU9dGV4dCBuYW1lPSJjb21tZW50IiBkaXJuYW1lPSJjb21tZW50LmRpciIgcmVx
dWlyZWQ+PC9sYWJlbD48L3A+CisgICAgPHA+PGxhYmVsPldpdGhSVExEaXI6IDx0ZXh0YXJlYSBu
YW1lPSJ0eHRhcmVhIiBkaXI9InJ0bCIgZGlybmFtZT0idHh0YXJlYVJUTC5kaXIiPjwvdGV4dGFy
ZWE+PC9sYWJlbD48L3A+CisgICAgPHA+PGxhYmVsPldpdGhMVFJEaXI6IDx0ZXh0YXJlYSBuYW1l
PSJ0eHRhcmVhMSIgZGlyPSJsdHIiIGRpcm5hbWU9InR4dGFyZWFMVFIuZGlyIj48L3RleHRhcmVh
PjwvbGFiZWw+PC9wPgorICAgIDxwPjxsYWJlbD5XaXRoSW52YWxpZERpcjogPHRleHRhcmVhIG5h
bWU9InR4dGFyZWEyIiBkaXI9ImludmFsaWQiIGRpcm5hbWU9InR4dGFyZWFJbnZhbGlkLmRpciI+
PC90ZXh0YXJlYT48L2xhYmVsPjwvcD4KKyAgICA8cD48bGFiZWw+V2l0aFJUTFZhbHVlOiA8aW5w
dXQgbmFtZT0iaW5wdXQiIGRpcm5hbWU9ImlucHV0UlRMdmFsdWUuZGlyIiB2YWx1ZT0i2YXYsdit
2KjZi9inIj48L2xhYmVsPjwvcD4KKyAgICA8cD48YnV0dG9uIG5hbWU9Im1vZGUiIHR5cGU9c3Vi
bWl0IHZhbHVlPSJhZGQiPlBvc3QgQ29tbWVudDwvYnV0dG9uPjwvcD4KKzwvZm9ybT4KKworPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+Cis8ZGl2IGlkPSJhY3Rpb24iPgorPHNjcmlwdD4KK2lmIChk
b2N1bWVudC5sb2NhdGlvbi5ocmVmLm1hdGNoKCdcXD8nKSkgeworICAgIHNob3VsZEJlVHJ1ZSgn
ZG9jdW1lbnQubG9jYXRpb24uc2VhcmNoLmluZGV4T2YoImNvbW1lbnQuZGlyPWx0ciIpICE9IC0x
Jyk7CisgICAgc2hvdWxkQmVUcnVlKCdkb2N1bWVudC5sb2NhdGlvbi5zZWFyY2guaW5kZXhPZigi
dHh0YXJlYVJUTC5kaXI9cnRsIikgIT0gLTEnKTsKKyAgICBzaG91bGRCZVRydWUoJ2RvY3VtZW50
LmxvY2F0aW9uLnNlYXJjaC5pbmRleE9mKCJ0eHRhcmVhTFRSLmRpcj1sdHIiKSAhPSAtMScpOwor
ICAgIHNob3VsZEJlVHJ1ZSgnZG9jdW1lbnQubG9jYXRpb24uc2VhcmNoLmluZGV4T2YoInR4dGFy
ZWFJbnZhbGlkLmRpcj1sdHIiKSAhPSAtMScpOworICAgIHNob3VsZEJlVHJ1ZSgnZG9jdW1lbnQu
bG9jYXRpb24uc2VhcmNoLmluZGV4T2YoImlucHV0UlRMdmFsdWUuZGlyPWx0ciIpICE9IC0xJyk7
CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3N1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8
L3NjcmlwdD4KKzwvZGl2PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113999</attachid>
            <date>2011-11-07 23:27:52 -0800</date>
            <delta_ts>2011-11-10 04:26:19 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>bug-65542-20111108125245.patch</filename>
            <type>text/plain</type>
            <size>18237</size>
            <attacher name="Rakesh">rakeshchaitan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk5NTI1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTEtMTEtMDcgIFJha2VzaCBL
TiAgPHJha2VzaC5rbkBtb3Rvcm9sYS5jb20+CisKKyAgICAgICAgTmVlZCBzdXBwb3J0IGZvciBk
aXJuYW1lIGF0dHJpYnV0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NjU1NDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBJbXBsZW1lbnRlZCAnZGlybmFtZScgZm9ybSBhdHRyaWJ1dGUuCisKKyAgICAgICAg
VGVzdHM6IGZhc3QvZm9ybXMvZm9ybS1kaXJuYW1lLWF0dHJpYnV0ZS5odG1sCisgICAgICAgICAg
ICAgICBmYXN0L2Zvcm1zL3N1Ym1pdC1mb3JtLXdpdGgtZGlybmFtZS1hdHRyaWJ1dGUtd2l0aC1h
bmNlc3Rvci1kaXItYXR0cmlidXRlLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZm9ybXMvc3Vi
bWl0LWZvcm0td2l0aC1kaXJuYW1lLWF0dHJpYnV0ZS13aXRoLW5vbmh0bWwtYW5jZXN0b3IuaHRt
bAorICAgICAgICAgICAgICAgZmFzdC9mb3Jtcy9zdWJtaXQtZm9ybS13aXRoLWRpcm5hbWUtYXR0
cmlidXRlLmh0bWwKKworICAgICAgICAqIGh0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluOgorICAg
ICAgICBBZGRlZCAiZGlybmFtZSIgYXR0cmlidXRlLgorICAgICAgICAqIGh0bWwvSFRNTElucHV0
RWxlbWVudC5pZGw6CisgICAgICAgIEFkZCAiZGlyTmFtZSIgcHJvcGVydHkgdG8gSFRNTElucHV0
RWxlbWVudCBpbnRlcmZhY2UuCisgICAgICAgICogaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQ6OmFwcGVuZEZvcm1EYXRh
KToKKyAgICAgICAgQXBwZW5kIGRpcm5hbWUgZm9ybSBkYXRhLgorICAgICAgICAqIGh0bWwvSFRN
TFRleHRBcmVhRWxlbWVudC5pZGw6CisgICAgICAgIEFkZCAiZGlyTmFtZSIgcHJvcGVydHkgdG8g
SFRNTFRleHRBcmVhRWxlbWVudCBpbnRlcmZhY2UuCisgICAgICAgICogaHRtbC9IVE1MVGV4dEZv
cm1Db250cm9sRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJlbnRIVE1MRWxlbWVu
dCk6CisgICAgICAgIEhlbHBlciBmdW5jdGlvbiB3aGljaCByZXR1cm5zIG9ubHkgSFRNTCBwYXJl
bnQgZWxlbWVudC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50
OjpkaXJlY3Rpb25Gb3JGb3JtRGF0YSk6CisgICAgICAgIEhlbHBlciBmdW5jdGlvbiBmb3IgZmlu
ZGluZyBkaXJlY3Rpb25hbGl0eSBvZiB0aGUgRWxlbWVudC4KKyAgICAgICAgKiBodG1sL0hUTUxU
ZXh0Rm9ybUNvbnRyb2xFbGVtZW50Lmg6CisgICAgICAgIEhlbHBlciBmdW5jdGlvbiBmb3IgZmlu
ZGluZyBkaXJlY3Rpb25hbGl0eSBvZiB0aGUgRWxlbWVudC4KKyAgICAgICAgKiBodG1sL1RleHRG
aWVsZElucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGRJbnB1dFR5cGU6
OmFwcGVuZEZvcm1EYXRhKToKKyAgICAgICAgQXBwZW5kIGRpcm5hbWUgZm9ybSBkYXRhLgorICAg
ICAgICAqIGh0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmg6CisgICAgICAgIEFwcGVuZCBkaXJuYW1l
IGZvcm0gZGF0YS4KKwogMjAxMS0xMS0wNyAgRGFuaWVsIEJhdGVzICA8ZGJhdGVzQHJpbS5jb20+
CiAKICAgICAgICAgQWRkIENyZWRlbnRpYWxTdG9yYWdlLmNwcCB0byBXZWJDb3JlL0NNYWtlTGlz
dHMudHh0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgko
cmV2aXNpb24gOTkwNTQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1l
cy5pbgkod29ya2luZyBjb3B5KQpAQCAtOTAsNiArOTAsNyBAQCBkZWZhdWx0CiBkZWZlcgogZGly
CiBkaXJlY3Rpb24KK2Rpcm5hbWUKIGRpc2FibGVkCiBkb3dubG9hZAogZHJhZ2dhYmxlCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5pZGwJKHJldmlzaW9uIDk5MDU0
KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmlkbAkod29ya2luZyBj
b3B5KQpAQCAtMjMsNiArMjMsNyBAQCBtb2R1bGUgaHRtbCB7CiAgICAgaW50ZXJmYWNlIEhUTUxJ
bnB1dEVsZW1lbnQgOiBIVE1MRWxlbWVudCB7CiAgICAgICAgIGF0dHJpYnV0ZSBbQ29udmVydE51
bGxUb051bGxTdHJpbmddIERPTVN0cmluZyBkZWZhdWx0VmFsdWU7CiAgICAgICAgIGF0dHJpYnV0
ZSBbUmVmbGVjdD1jaGVja2VkXSBib29sZWFuIGRlZmF1bHRDaGVja2VkOworICAgICAgICBhdHRy
aWJ1dGUgW1JlZmxlY3RdIERPTVN0cmluZyBkaXJOYW1lOwogICAgICAgICByZWFkb25seSBhdHRy
aWJ1dGUgSFRNTEZvcm1FbGVtZW50IGZvcm07CiAgICAgICAgIGF0dHJpYnV0ZSBbUmVmbGVjdCwg
VVJMXSBET01TdHJpbmcgZm9ybUFjdGlvbjsKICAgICAgICAgYXR0cmlidXRlIFtDb252ZXJ0TnVs
bFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nIGZvcm1FbmN0eXBlOwpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCShyZXZpc2lvbiA5OTA1NCkKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE3Myw3ICsxNzMsMTEgQEAgYm9vbCBIVE1MVGV4dEFyZWFFbGVtZW50OjphcHBlbmRGb3Jt
RGF0YQogCiAgICAgY29uc3QgU3RyaW5nJiB0ZXh0ID0gKG1fd3JhcCA9PSBIYXJkV3JhcCkgPyB2
YWx1ZVdpdGhIYXJkTGluZUJyZWFrcygpIDogdmFsdWUoKTsKICAgICBlbmNvZGluZy5hcHBlbmRE
YXRhKG5hbWUoKSwgdGV4dCk7Ci0gICAgcmV0dXJuIHRydWU7CisKKyAgICBjb25zdCBBdG9taWNT
dHJpbmcmIGRpcm5hbWVBdHRyVmFsdWUgPSBmYXN0R2V0QXR0cmlidXRlKGRpcm5hbWVBdHRyKTsK
KyAgICBpZiAoIWRpcm5hbWVBdHRyVmFsdWUuaXNOdWxsKCkpCisgICAgICAgIGVuY29kaW5nLmFw
cGVuZERhdGEoZGlybmFtZUF0dHJWYWx1ZSwgZGlyZWN0aW9uRm9yRm9ybURhdGEoKSk7CisgICAg
cmV0dXJuIHRydWU7ICAgIAogfQogCiB2b2lkIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OnJlc2V0KCkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmlkbAkocmV2
aXNpb24gOTkwNTQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQu
aWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBAIG1vZHVsZSBodG1sIHsKICAgICAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIFZhbGlkaXR5U3RhdGUgdmFsaWRpdHk7CiAgICAgICAgIGF0
dHJpYnV0ZSBbUmVmbGVjdF0gRE9NU3RyaW5nIGFjY2Vzc0tleTsKICAgICAgICAgYXR0cmlidXRl
IGxvbmcgY29sczsKKyAgICAgICAgYXR0cmlidXRlIFtSZWZsZWN0XSBET01TdHJpbmcgZGlyTmFt
ZTsKICAgICAgICAgYXR0cmlidXRlIFtSZWZsZWN0XSBib29sZWFuIGRpc2FibGVkOwogICAgICAg
ICBhdHRyaWJ1dGUgW1JlZmxlY3RdIGJvb2xlYW4gYXV0b2ZvY3VzOwogICAgICAgICBhdHRyaWJ1
dGUgbG9uZyBtYXhMZW5ndGggc2V0dGVyIHJhaXNlcyhET01FeGNlcHRpb24pOwpJbmRleDogU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDk5MDU0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250
cm9sRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3MCw0ICs1NzAsMzQgQEAgSFRNTFRl
eHRGb3JtQ29udHJvbEVsZW1lbnQqIGVuY2xvc2luZ1RleAogICAgIHJldHVybiBhbmNlc3RvciAh
PSBjb250YWluZXIgPyB0b1RleHRGb3JtQ29udHJvbChhbmNlc3RvcikgOiAwOwogfQogCitjb25z
dCBFbGVtZW50KiBwYXJlbnRIVE1MRWxlbWVudChjb25zdCBFbGVtZW50KiBlbGVtZW50KQorewor
ICAgIHdoaWxlIChlbGVtZW50KSB7CisgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50LT5wYXJlbnRF
bGVtZW50KCk7CisgICAgICAgIGlmIChlbGVtZW50ICYmIGVsZW1lbnQtPmlzSFRNTEVsZW1lbnQo
KSkKKyAgICAgICAgICAgIHJldHVybiBlbGVtZW50OworICAgIH0KKyAgICByZXR1cm4gMDsKK30K
KworU3RyaW5nIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpkaXJlY3Rpb25Gb3JGb3JtRGF0
YSgpIGNvbnN0Cit7CisgICAgZm9yIChjb25zdCBFbGVtZW50KiBlbGVtZW50ID0gdGhpczsgZWxl
bWVudDsgZWxlbWVudCA9IHBhcmVudEhUTUxFbGVtZW50KGVsZW1lbnQpKSB7CisgICAgICAgIGNv
bnN0IEF0b21pY1N0cmluZyYgZGlyQXR0cmlidXRlVmFsdWUgPSBlbGVtZW50LT5mYXN0R2V0QXR0
cmlidXRlKGRpckF0dHIpOworICAgICAgICBpZiAoZGlyQXR0cmlidXRlVmFsdWUuaXNOdWxsKCkp
CisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uo
ZGlyQXR0cmlidXRlVmFsdWUsICJydGwiKSB8fCBlcXVhbElnbm9yaW5nQ2FzZShkaXJBdHRyaWJ1
dGVWYWx1ZSwgImx0ciIpKQorICAgICAgICAgICAgcmV0dXJuIGRpckF0dHJpYnV0ZVZhbHVlOwor
CisgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShkaXJBdHRyaWJ1dGVWYWx1ZSwgImF1dG8i
KSkgeworICAgICAgICAgICAgYm9vbCBpc0F1dG87CisgICAgICAgICAgICBUZXh0RGlyZWN0aW9u
IHRleHREaXJlY3Rpb24gPSBzdGF0aWNfY2FzdDxjb25zdCBIVE1MRWxlbWVudCo+KGVsZW1lbnQp
LT5kaXJlY3Rpb25hbGl0eUlmaGFzRGlyQXV0b0F0dHJpYnV0ZShpc0F1dG8pOworICAgICAgICAg
ICAgcmV0dXJuIHRleHREaXJlY3Rpb24gPT0gUlRMID8gInJ0bCIgOiAibHRyIjsKKyAgICAgICAg
fQorICAgIH0KKworICAgIHJldHVybiAibHRyIjsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViY29y
ZQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVs
ZW1lbnQuaAkocmV2aXNpb24gOTkwNTQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0
Rm9ybUNvbnRyb2xFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTc5LDYgKzc5LDggQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0SW5uZXJUZXh0VmFsdWUoY29uc3QgU3RyaW5nJik7CiAgICAgU3Ry
aW5nIGlubmVyVGV4dFZhbHVlKCkgY29uc3Q7CiAKKyAgICBTdHJpbmcgZGlyZWN0aW9uRm9yRm9y
bURhdGEoKSBjb25zdDsKKwogcHJvdGVjdGVkOgogICAgIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVt
ZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCosIEhUTUxGb3JtRWxlbWVudCopOwog
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVQbGFjZWhvbGRlclRleHQoKSA9IDA7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCShyZXZpc2lvbiA5OTA1NCkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzMsOCArMzMsMTAgQEAKICNpbmNsdWRlICJUZXh0RmllbGRJbnB1dFR5cGUuaCIK
IAogI2luY2x1ZGUgIkJlZm9yZVRleHRJbnNlcnRlZEV2ZW50LmgiCisjaW5jbHVkZSAiRm9ybURh
dGFMaXN0LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50
LmgiCisjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiS2V5Ym9hcmRFdmVudC5oIgog
I2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgpAQCAtNDksNiArNTEs
OCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3VzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7
CisKIFRleHRGaWVsZElucHV0VHlwZTo6VGV4dEZpZWxkSW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1l
bnQqIGVsZW1lbnQpCiAgICAgOiBJbnB1dFR5cGUoZWxlbWVudCkKIHsKQEAgLTM2NCw0ICszNjgs
MTMgQEAgdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OnVwZGF0ZVBsYWNlaG9sZAogICAgIEFTU0VS
VCghZWMpOwogfQogCitib29sIFRleHRGaWVsZElucHV0VHlwZTo6YXBwZW5kRm9ybURhdGEoRm9y
bURhdGFMaXN0JiBsaXN0LCBib29sIG11bHRpcGFydCkgY29uc3QKK3sKKyAgICBJbnB1dFR5cGU6
OmFwcGVuZEZvcm1EYXRhKGxpc3QsIG11bHRpcGFydCk7CisgICAgY29uc3QgQXRvbWljU3RyaW5n
JiBkaXJuYW1lQXR0clZhbHVlID0gZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKGRpcm5hbWVB
dHRyKTsKKyAgICBpZiAoIWRpcm5hbWVBdHRyVmFsdWUuaXNOdWxsKCkpCisgICAgICAgIGxpc3Qu
YXBwZW5kRGF0YShkaXJuYW1lQXR0clZhbHVlLCBlbGVtZW50KCktPmRpcmVjdGlvbkZvckZvcm1E
YXRhKCkpOworICAgIHJldHVybiB0cnVlOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmgJKHJldmlzaW9uIDk5
MDU0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNz
IEZvcm1EYXRhTGlzdDsgCiBjbGFzcyBTcGluQnV0dG9uRWxlbWVudDsKIAogLy8gVGhlIGNsYXNz
IHJlcHJlc2VudHMgdHlwZXMgb2Ygd2hpY2ggVUkgY29udGFpbiB0ZXh0IGZpZWxkcy4KQEAgLTc3
LDYgKzc4LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUmVzcGVjdExpc3RB
dHRyaWJ1dGUoKTsKICAgICB2aXJ0dWFsIEhUTUxFbGVtZW50KiBwbGFjZWhvbGRlckVsZW1lbnQo
KSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUGxhY2Vob2xkZXJUZXh0KCk7CisgICAg
dmlydHVhbCBib29sIGFwcGVuZEZvcm1EYXRhKEZvcm1EYXRhTGlzdCYsIGJvb2wgbXVsdGlwYXJ0
KSBjb25zdDsKIAogICAgIFJlZlB0cjxIVE1MRWxlbWVudD4gbV9jb250YWluZXI7CiAgICAgUmVm
UHRyPEhUTUxFbGVtZW50PiBtX2lubmVyQmxvY2s7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA5OTUyNSkK
KysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBA
CisyMDExLTExLTA3ICBSYWtlc2ggS04gIDxyYWtlc2gua25AbW90b3JvbGEuY29tPgorCisgICAg
ICAgIE5lZWQgc3VwcG9ydCBmb3IgZGlybmFtZSBhdHRyaWJ1dGUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1NTQyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50ZWQgJ2Rpcm5hbWUnIGZvcm0g
YXR0cmlidXRlLgorCisgICAgICAgICogZmFzdC9mb3Jtcy9mb3JtLWRpcm5hbWUtYXR0cmlidXRl
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9mb3JtLWRpcm5hbWUt
YXR0cmlidXRlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvc3VibWl0LWZvcm0t
d2l0aC1kaXJuYW1lLWF0dHJpYnV0ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZm9ybXMvc3VibWl0LWZvcm0td2l0aC1kaXJuYW1lLWF0dHJpYnV0ZS13aXRoLWFuY2VzdG9y
LWRpci1hdHRyaWJ1dGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1z
L3N1Ym1pdC1mb3JtLXdpdGgtZGlybmFtZS1hdHRyaWJ1dGUtd2l0aC1hbmNlc3Rvci1kaXItYXR0
cmlidXRlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvc3VibWl0LWZvcm0td2l0
aC1kaXJuYW1lLWF0dHJpYnV0ZS13aXRoLW5vbmh0bWwtYW5jZXN0b3ItZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL3N1Ym1pdC1mb3JtLXdpdGgtZGlybmFtZS1hdHRy
aWJ1dGUtd2l0aC1ub25odG1sLWFuY2VzdG9yLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
Zm9ybXMvc3VibWl0LWZvcm0td2l0aC1kaXJuYW1lLWF0dHJpYnV0ZS5odG1sOiBBZGRlZC4KKwog
MjAxMS0xMS0wNyAgS2VuaWNoaSBJc2hpYmFzaGkgIDxiYXNoaUBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgW0Nocm9taXVtXSBMYXlvdXQgVGVzdCBwbGF0Zm9ybS9jaHJvbWl1bS1jZy1tYWMvZWRp
dGluZy9pbnB1dC9pbWUtY2FuZGlkYXRlLXdpbmRvdy1wb3NpdGlvbi5odG1sIGlzIGZsYWt5Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2Zvcm0tZGlybmFtZS1hdHRyaWJ1dGUtZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvZm9ybS1kaXJuYW1l
LWF0dHJpYnV0ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL2Zvcm0tZGlybmFtZS1hdHRyaWJ1dGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDggQEAKKyJkaXJuYW1lIiBhdHRyaWJ1dGUKKworUEFTUyBpbnB1dC5kaXJOYW1l
IGlzICJIZWxsbyIKK1BBU1MgdGV4dEFyZWEuZGlyTmFtZSBpcyAiSGVsbG8iCitQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9mb3JtLWRpcm5hbWUtYXR0cmlidXRlLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9mb3JtLWRpcm5hbWUtYXR0cmlidXRlLmh0bWwJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2Zvcm0tZGlybmFtZS1hdHRyaWJ1dGUu
aHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9
Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+IDwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8cD4iZGlybmFtZSIgYXR0cmlidXRlPC9wPgorPHByZSBpZD0iY29uc29sZSI+PC9wcmU+
Cis8c2NyaXB0PgordmFyIGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTsK
K2lucHV0LnNldEF0dHJpYnV0ZSgnZGlyTmFtZScsICJIZWxsbyIpOworc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCdpbnB1dC5kaXJOYW1lJywgIkhlbGxvIik7CisKK3ZhciB0ZXh0QXJlYSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ3RleHRhcmVhJyk7Cit0ZXh0QXJlYS5zZXRBdHRyaWJ1dGUoJ2Rp
ck5hbWUnLCAiSGVsbG8iKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygndGV4dEFyZWEuZGlyTmFt
ZScsICJIZWxsbyIpOworc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zdWJtaXQtZm9ybS13
aXRoLWRpcm5hbWUtYXR0cmlidXRlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL3N1Ym1pdC1mb3JtLXdpdGgtZGlybmFtZS1hdHRyaWJ1dGUtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zdWJtaXQtZm9y
bS13aXRoLWRpcm5hbWUtYXR0cmlidXRlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwyMyBAQAorVGVzdCB0aGF0IHdoZW4gZGlybmFtZSBhdHRyaWJ1dGUgaXMgc3BlY2lmaWVk
IHRoZW4gaXQgaXMgYWRkZWQgaW4gc3VibWlzc2lvbiBib2R5LgorCitDb21tZW50OiAKKworV2l0
aFJUTERpcjogCisKK1dpdGhMVFJEaXI6IAorCitXaXRoSW52YWxpZERpcjogCisKK1dpdGhSVExW
YWx1ZTogCisKK1Bvc3QgQ29tbWVudAorCitQQVNTIGRvY3VtZW50LmxvY2F0aW9uLnNlYXJjaC5p
bmRleE9mKCJjb21tZW50LmRpcj1sdHIiKSAhPSAtMSBpcyB0cnVlCitQQVNTIGRvY3VtZW50Lmxv
Y2F0aW9uLnNlYXJjaC5pbmRleE9mKCJ0eHRhcmVhUlRMLmRpcj1ydGwiKSAhPSAtMSBpcyB0cnVl
CitQQVNTIGRvY3VtZW50LmxvY2F0aW9uLnNlYXJjaC5pbmRleE9mKCJ0eHRhcmVhTFRSLmRpcj1s
dHIiKSAhPSAtMSBpcyB0cnVlCitQQVNTIGRvY3VtZW50LmxvY2F0aW9uLnNlYXJjaC5pbmRleE9m
KCJ0eHRhcmVhSW52YWxpZC5kaXI9bHRyIikgIT0gLTEgaXMgdHJ1ZQorUEFTUyBkb2N1bWVudC5s
b2NhdGlvbi5zZWFyY2guaW5kZXhPZigiaW5wdXRSVEx2YWx1ZS5kaXI9bHRyIikgIT0gLTEgaXMg
dHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvc3VibWl0LWZvcm0td2l0aC1kaXJuYW1lLWF0
dHJpYnV0ZS13aXRoLWFuY2VzdG9yLWRpci1hdHRyaWJ1dGUtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvc3VibWl0LWZvcm0td2l0aC1kaXJuYW1lLWF0
dHJpYnV0ZS13aXRoLWFuY2VzdG9yLWRpci1hdHRyaWJ1dGUtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zdWJtaXQtZm9ybS13aXRoLWRpcm5hbWUt
YXR0cmlidXRlLXdpdGgtYW5jZXN0b3ItZGlyLWF0dHJpYnV0ZS1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMTMgQEAKK1Rlc3QgdGhhdCB3aGVuIGRpcm5hbWUgYXR0cmlidXRl
IGlzIHNwZWNpZmllZCB0aGVuIGl0IGlzIGFkZGVkIGluIHN1Ym1pc3Npb24gYm9keS4KKworCisK
K1Bvc3QgQ29tbWVudAorCitIZWxsbworUEFTUyBkb2N1bWVudC5sb2NhdGlvbi5zZWFyY2guaW5k
ZXhPZigicnRsQW5jZXN0b3IuZGlyPXJ0bCIpICE9IC0xIGlzIHRydWUKK1BBU1MgZG9jdW1lbnQu
bG9jYXRpb24uc2VhcmNoLmluZGV4T2YoImF1dG9BbmNlc3Rvci5kaXI9bHRyIikgIT0gLTEgaXMg
dHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvc3VibWl0LWZvcm0td2l0aC1kaXJuYW1lLWF0
dHJpYnV0ZS13aXRoLWFuY2VzdG9yLWRpci1hdHRyaWJ1dGUuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3N1Ym1pdC1mb3JtLXdpdGgtZGlybmFtZS1hdHRyaWJ1dGUt
d2l0aC1hbmNlc3Rvci1kaXItYXR0cmlidXRlLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL3N1Ym1pdC1mb3JtLXdpdGgtZGlybmFtZS1hdHRyaWJ1dGUtd2l0aC1h
bmNlc3Rvci1kaXItYXR0cmlidXRlLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDEgQEAK
KzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJjb250ZW50LXR5cGUiIGNvbnRlbnQ9
InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Cis8L2hlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj4gPC9zY3JpcHQ+Cis8c2NyaXB0Pgord2luZG93Lmpz
VGVzdElzQXN5bmMgPSB0cnVlOworCitmdW5jdGlvbiB0ZXN0KCkgeworICAgIGRvY3VtZW50LmZv
cm1zLmYuc3VibWl0KCk7Cit9Cis8L3NjcmlwdD4KKzxib2R5IG9ubG9hZD0idGVzdCgpIj4KKzxw
PlRlc3QgdGhhdCB3aGVuIGRpcm5hbWUgYXR0cmlidXRlIGlzIHNwZWNpZmllZCB0aGVuIGl0IGlz
IGFkZGVkIGluIHN1Ym1pc3Npb24gYm9keS48L3A+CisKKzxkaXYgZGlyPSJhdXRvIj4KKyAgICA8
Zm9ybSBhY3Rpb249IiNhY3Rpb24iIG1ldGhvZD0iR0VUIiBuYW1lPSJmIj4KKyAgICAgICAgPGRp
diBkaXI9InJ0bCI+IAorICAgICAgICAgICAgPGlucHV0IHR5cGU9dGV4dCBuYW1lPSJjb21tZW50
IiBkaXJuYW1lPSJydGxBbmNlc3Rvci5kaXIiIHJlcXVpcmVkPgorICAgICAgICA8L2Rpdj4KKyAg
ICAgICAgPGlucHV0IHR5cGU9dGV4dCBuYW1lPSJhdXRvQW5jZXN0b3IiIGRpcm5hbWU9ImF1dG9B
bmNlc3Rvci5kaXIiIHZhbHVlPSLXqdec15XXnSI+CisgICAgICAgIDxwPjxidXR0b24gbmFtZT0i
bW9kZSIgdHlwZT1zdWJtaXQgdmFsdWU9ImFkZCI+UG9zdCBDb21tZW50PC9idXR0b24+PC9wPgor
ICAgIDwvZm9ybT4KK0hlbGxvCis8L2Rpdj4KKworPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
ZGl2IGlkPSJhY3Rpb24iPgorPHNjcmlwdD4KK2lmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLm1h
dGNoKCdcXD8nKSkgeworICAgIHNob3VsZEJlVHJ1ZSgnZG9jdW1lbnQubG9jYXRpb24uc2VhcmNo
LmluZGV4T2YoInJ0bEFuY2VzdG9yLmRpcj1ydGwiKSAhPSAtMScpOworICAgIHNob3VsZEJlVHJ1
ZSgnZG9jdW1lbnQubG9jYXRpb24uc2VhcmNoLmluZGV4T2YoImF1dG9BbmNlc3Rvci5kaXI9bHRy
IikgIT0gLTEnKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKworc3VjY2Vzc2Z1bGx5UGFyc2Vk
ID0gdHJ1ZTsKKzwvc2NyaXB0PgorPC9kaXY+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL3N1Ym1pdC1mb3JtLXdpdGgtZGlybmFtZS1hdHRyaWJ1dGUtd2l0
aC1ub25odG1sLWFuY2VzdG9yLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL3N1Ym1pdC1mb3JtLXdpdGgtZGlybmFtZS1hdHRyaWJ1dGUtd2l0aC1ub25o
dG1sLWFuY2VzdG9yLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zh
c3QvZm9ybXMvc3VibWl0LWZvcm0td2l0aC1kaXJuYW1lLWF0dHJpYnV0ZS13aXRoLW5vbmh0bWwt
YW5jZXN0b3ItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwIEBACitUZXN0
IHRoYXQgd2hlbiBkaXIgYXR0cmlidXRlIGlzIHNwZWNpZmllZCBmb3Igbm9uIGh0bWwgZWxlbWVu
dCwgaXQgaXMgbm90IGNvbnNpZGVyZWQgZm9yIGRpcm5hbWUgYXR0cmlidXRlIHZhbHVlIGluIHN1
Ym1pc3Npb24gYm9keS4KKworCitQb3N0IENvbW1lbnQKKworUEFTUyBkb2N1bWVudC5sb2NhdGlv
bi5zZWFyY2guaW5kZXhPZigibm9uSHRtbEFuY2VzdG9yLmRpcj1sdHIiKSAhPSAtMSBpcyB0cnVl
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zdWJtaXQtZm9ybS13aXRoLWRpcm5hbWUtYXR0cmli
dXRlLXdpdGgtbm9uaHRtbC1hbmNlc3Rvci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvc3VibWl0LWZvcm0td2l0aC1kaXJuYW1lLWF0dHJpYnV0ZS13aXRoLW5vbmh0
bWwtYW5jZXN0b3IuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMv
c3VibWl0LWZvcm0td2l0aC1kaXJuYW1lLWF0dHJpYnV0ZS13aXRoLW5vbmh0bWwtYW5jZXN0b3Iu
aHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNiBAQAorPGh0bWw+Cis8aGVhZD4KKzxtZXRh
IGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVU
Ri04Ij4KKzwvaGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPiA8L3NjcmlwdD4KKzxzY3JpcHQ+Cit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisK
K2Z1bmN0aW9uIHRlc3QoKSB7CisgICAgZG9jdW1lbnQuZm9ybXMuZi5zdWJtaXQoKTsKK30KKzwv
c2NyaXB0PgorPGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgorPHA+VGVzdCB0aGF0IHdoZW4gZGlyIGF0
dHJpYnV0ZSBpcyBzcGVjaWZpZWQgZm9yIG5vbiBodG1sIGVsZW1lbnQsIGl0IGlzIG5vdCBjb25z
aWRlcmVkIGZvciBkaXJuYW1lIGF0dHJpYnV0ZSB2YWx1ZSBpbiBzdWJtaXNzaW9uIGJvZHkuPC9w
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMDAlIiBo
ZWlnaHQ9IjEwMCUiIHZpZXdCb3g9IjAgMCA0MDAgNDAwIiBkaXI9InJ0bCI+CisgICAgPGRpdj4K
KyAgICA8Zm9ybSBhY3Rpb249IiNhY3Rpb24iIG1ldGhvZD0iR0VUIiBuYW1lPSJmIj4KKyAgICAg
ICAgPGlucHV0IHR5cGU9dGV4dCBuYW1lPSJub25IdG1sQW5jZXN0b3IiIGRpcm5hbWU9Im5vbkh0
bWxBbmNlc3Rvci5kaXIiPiAKKyAgICAgICAgPHA+PGJ1dHRvbiBuYW1lPSJtb2RlIiB0eXBlPXN1
Ym1pdCB2YWx1ZT0iYWRkIj5Qb3N0IENvbW1lbnQ8L2J1dHRvbj48L3A+CisgICAgPC9mb3JtPgor
ICAgIDwvZGl2PgorPC9zdmc+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxkaXYgaWQ9ImFj
dGlvbiI+Cis8c2NyaXB0PgoraWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYubWF0Y2goJ1xcPycp
KSB7CisgICAgc2hvdWxkQmVUcnVlKCdkb2N1bWVudC5sb2NhdGlvbi5zZWFyY2guaW5kZXhPZigi
bm9uSHRtbEFuY2VzdG9yLmRpcj1sdHIiKSAhPSAtMScpOworICAgIGZpbmlzaEpTVGVzdCgpOwor
fQorCitzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2Rpdj4KKzxzY3Jp
cHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvc3VibWl0LWZvcm0td2l0
aC1kaXJuYW1lLWF0dHJpYnV0ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvc3VibWl0LWZvcm0td2l0aC1kaXJuYW1lLWF0dHJpYnV0ZS5odG1sCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zdWJtaXQtZm9ybS13aXRoLWRpcm5hbWUtYXR0
cmlidXRlLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDIgQEAKKzxodG1sPgorPGhlYWQ+
Cis8bWV0YSBodHRwLWVxdWl2PSJjb250ZW50LXR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hh
cnNldD1VVEYtOCI+Cis8L2hlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj4gPC9zY3JpcHQ+Cis8c2NyaXB0Pgord2luZG93LmpzVGVzdElzQXN5bmMgPSB0
cnVlOworCitmdW5jdGlvbiB0ZXN0KCkgeworICAgIGRvY3VtZW50LmZvcm1zLmYuc3VibWl0KCk7
Cit9Cis8L3NjcmlwdD4KKzxib2R5IG9ubG9hZD0idGVzdCgpIj4KKzxwPlRlc3QgdGhhdCB3aGVu
IGRpcm5hbWUgYXR0cmlidXRlIGlzIHNwZWNpZmllZCB0aGVuIGl0IGlzIGFkZGVkIGluIHN1Ym1p
c3Npb24gYm9keS48L3A+CisKKzxmb3JtIGFjdGlvbj0iI2FjdGlvbiIgbmFtZT0iZiI+CisgICAg
PHA+PGxhYmVsPkNvbW1lbnQ6IDxpbnB1dCB0eXBlPXRleHQgbmFtZT0iY29tbWVudCIgZGlybmFt
ZT0iY29tbWVudC5kaXIiIHJlcXVpcmVkPjwvbGFiZWw+PC9wPgorICAgIDxwPjxsYWJlbD5XaXRo
UlRMRGlyOiA8dGV4dGFyZWEgbmFtZT0idHh0YXJlYSIgZGlyPSJydGwiIGRpcm5hbWU9InR4dGFy
ZWFSVEwuZGlyIj48L3RleHRhcmVhPjwvbGFiZWw+PC9wPgorICAgIDxwPjxsYWJlbD5XaXRoTFRS
RGlyOiA8dGV4dGFyZWEgbmFtZT0idHh0YXJlYTEiIGRpcj0ibHRyIiBkaXJuYW1lPSJ0eHRhcmVh
TFRSLmRpciI+PC90ZXh0YXJlYT48L2xhYmVsPjwvcD4KKyAgICA8cD48bGFiZWw+V2l0aEludmFs
aWREaXI6IDx0ZXh0YXJlYSBuYW1lPSJ0eHRhcmVhMiIgZGlyPSJpbnZhbGlkIiBkaXJuYW1lPSJ0
eHRhcmVhSW52YWxpZC5kaXIiPjwvdGV4dGFyZWE+PC9sYWJlbD48L3A+CisgICAgPHA+PGxhYmVs
PldpdGhSVExWYWx1ZTogPGlucHV0IG5hbWU9ImlucHV0IiBkaXJuYW1lPSJpbnB1dFJUTHZhbHVl
LmRpciIgdmFsdWU9ItmF2LHYrdio2YvYpyI+PC9sYWJlbD48L3A+CisgICAgPHA+PGJ1dHRvbiBu
YW1lPSJtb2RlIiB0eXBlPXN1Ym1pdCB2YWx1ZT0iYWRkIj5Qb3N0IENvbW1lbnQ8L2J1dHRvbj48
L3A+Cis8L2Zvcm0+CisKKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGRpdiBpZD0iYWN0aW9u
Ij4KKzxzY3JpcHQ+CitpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5tYXRjaCgnXFw/JykpIHsK
KyAgICBzaG91bGRCZVRydWUoJ2RvY3VtZW50LmxvY2F0aW9uLnNlYXJjaC5pbmRleE9mKCJjb21t
ZW50LmRpcj1sdHIiKSAhPSAtMScpOworICAgIHNob3VsZEJlVHJ1ZSgnZG9jdW1lbnQubG9jYXRp
b24uc2VhcmNoLmluZGV4T2YoInR4dGFyZWFSVEwuZGlyPXJ0bCIpICE9IC0xJyk7CisgICAgc2hv
dWxkQmVUcnVlKCdkb2N1bWVudC5sb2NhdGlvbi5zZWFyY2guaW5kZXhPZigidHh0YXJlYUxUUi5k
aXI9bHRyIikgIT0gLTEnKTsKKyAgICBzaG91bGRCZVRydWUoJ2RvY3VtZW50LmxvY2F0aW9uLnNl
YXJjaC5pbmRleE9mKCJ0eHRhcmVhSW52YWxpZC5kaXI9bHRyIikgIT0gLTEnKTsKKyAgICBzaG91
bGRCZVRydWUoJ2RvY3VtZW50LmxvY2F0aW9uLnNlYXJjaC5pbmRleE9mKCJpbnB1dFJUTHZhbHVl
LmRpcj1sdHIiKSAhPSAtMScpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCitzdWNjZXNzZnVs
bHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2Rpdj4KKzxzY3JpcHQgc3JjPSIuLi9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114473</attachid>
            <date>2011-11-10 04:26:44 -0800</date>
            <delta_ts>2011-11-14 01:30:35 -0800</delta_ts>
            <desc>Compilation fix for mac</desc>
            <filename>bug-65542-20111110175127.patch</filename>
            <type>text/plain</type>
            <size>18202</size>
            <attacher name="Rakesh">rakeshchaitan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk5ODM2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDAgQEAKKzIwMTEtMTEtMTAgIFJha2VzaCBL
TiAgPHJha2VzaC5rbkBtb3Rvcm9sYS5jb20+CisKKyAgICAgICAgTmVlZCBzdXBwb3J0IGZvciBk
aXJuYW1lIGF0dHJpYnV0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NjU1NDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBJbXBsZW1lbnRlZCAnZGlybmFtZScgZm9ybSBhdHRyaWJ1dGUuCisKKyAgICAgICAg
VGVzdHM6IGZhc3QvZm9ybXMvZm9ybS1kaXJuYW1lLWF0dHJpYnV0ZS5odG1sCisgICAgICAgICAg
ICAgICBmYXN0L2Zvcm1zL3N1Ym1pdC1mb3JtLXdpdGgtZGlybmFtZS1hdHRyaWJ1dGUtd2l0aC1h
bmNlc3Rvci1kaXItYXR0cmlidXRlLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZm9ybXMvc3Vi
bWl0LWZvcm0td2l0aC1kaXJuYW1lLWF0dHJpYnV0ZS13aXRoLW5vbmh0bWwtYW5jZXN0b3IuaHRt
bAorICAgICAgICAgICAgICAgZmFzdC9mb3Jtcy9zdWJtaXQtZm9ybS13aXRoLWRpcm5hbWUtYXR0
cmlidXRlLmh0bWwKKworCisgICAgICAgICogaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW46Cisg
ICAgICAgIEFkZGVkICJkaXJuYW1lIiBhdHRyaWJ1dGUuCisgICAgICAgICogaHRtbC9IVE1MSW5w
dXRFbGVtZW50LmlkbDoKKyAgICAgICAgQWRkICJkaXJOYW1lIiBwcm9wZXJ0eSB0byBIVE1MSW5w
dXRFbGVtZW50IGludGVyZmFjZS4KKyAgICAgICAgKiBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRBcmVhRWxlbWVudDo6YXBwZW5kRm9ybURh
dGEpOgorICAgICAgICBBcHBlbmQgZGlybmFtZSBmb3JtIGRhdGEuCisgICAgICAgICogaHRtbC9I
VE1MVGV4dEFyZWFFbGVtZW50LmlkbDoKKyAgICAgICAgQWRkICJkaXJOYW1lIiBwcm9wZXJ0eSB0
byBIVE1MVGV4dEFyZWFFbGVtZW50IGludGVyZmFjZS4KKyAgICAgICAgKiBodG1sL0hUTUxUZXh0
Rm9ybUNvbnRyb2xFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhcmVudEhUTUxFbGVt
ZW50KToKKyAgICAgICAgSGVscGVyIGZ1bmN0aW9uIHdoaWNoIHJldHVybnMgb25seSBIVE1MIHBh
cmVudCBlbGVtZW50LgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVsZW1l
bnQ6OmRpcmVjdGlvbkZvckZvcm1EYXRhKToKKyAgICAgICAgSGVscGVyIGZ1bmN0aW9uIGZvciBm
aW5kaW5nIGRpcmVjdGlvbmFsaXR5IG9mIHRoZSBFbGVtZW50LgorICAgICAgICAqIGh0bWwvSFRN
TFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaDoKKyAgICAgICAgSGVscGVyIGZ1bmN0aW9uIGZvciBm
aW5kaW5nIGRpcmVjdGlvbmFsaXR5IG9mIHRoZSBFbGVtZW50LgorICAgICAgICAqIGh0bWwvVGV4
dEZpZWxkSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlw
ZTo6YXBwZW5kRm9ybURhdGEpOgorICAgICAgICBBcHBlbmQgZGlybmFtZSBmb3JtIGRhdGEuCisg
ICAgICAgICogaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuaDoKKyAgICAgICAgQXBwZW5kIGRpcm5h
bWUgZm9ybSBkYXRhLgorCiAyMDExLTExLTEwICBOaWtvbGFzIFppbW1lcm1hbm4gIDxuemltbWVy
bWFubkByaW0uY29tPgogCiAgICAgICAgIE5vdCByZXZpZXdlZC4gRml4IGJ1aWxkLgpJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4JKHJldmlzaW9uIDk5ODI0
KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4JKHdvcmtpbmcg
Y29weSkKQEAgLTkwLDYgKzkwLDcgQEAgZGVmYXVsdAogZGVmZXIKIGRpcgogZGlyZWN0aW9uCitk
aXJuYW1lCiBkaXNhYmxlZAogZG93bmxvYWQKIGRyYWdnYWJsZQpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaWRsCShyZXZpc2lvbiA5OTgyNCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTIzLDYg
KzIzLDcgQEAgbW9kdWxlIGh0bWwgewogICAgIGludGVyZmFjZSBIVE1MSW5wdXRFbGVtZW50IDog
SFRNTEVsZW1lbnQgewogICAgICAgICBhdHRyaWJ1dGUgW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5n
XSBET01TdHJpbmcgZGVmYXVsdFZhbHVlOwogICAgICAgICBhdHRyaWJ1dGUgW1JlZmxlY3Q9Y2hl
Y2tlZF0gYm9vbGVhbiBkZWZhdWx0Q2hlY2tlZDsKKyAgICAgICAgYXR0cmlidXRlIFtSZWZsZWN0
XSBET01TdHJpbmcgZGlyTmFtZTsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEhUTUxGb3Jt
RWxlbWVudCBmb3JtOwogICAgICAgICBhdHRyaWJ1dGUgW1JlZmxlY3QsIFVSTF0gRE9NU3RyaW5n
IGZvcm1BY3Rpb247CiAgICAgICAgIGF0dHJpYnV0ZSBbQ29udmVydE51bGxUb051bGxTdHJpbmdd
IERPTVN0cmluZyBmb3JtRW5jdHlwZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRl
eHRBcmVhRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGV4dEFyZWFFbGVtZW50LmNwcAkocmV2aXNpb24gOTk4MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzMsNyArMTcz
LDExIEBAIGJvb2wgSFRNTFRleHRBcmVhRWxlbWVudDo6YXBwZW5kRm9ybURhdGEKIAogICAgIGNv
bnN0IFN0cmluZyYgdGV4dCA9IChtX3dyYXAgPT0gSGFyZFdyYXApID8gdmFsdWVXaXRoSGFyZExp
bmVCcmVha3MoKSA6IHZhbHVlKCk7CiAgICAgZW5jb2RpbmcuYXBwZW5kRGF0YShuYW1lKCksIHRl
eHQpOwotICAgIHJldHVybiB0cnVlOworCisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBkaXJuYW1l
QXR0clZhbHVlID0gZmFzdEdldEF0dHJpYnV0ZShkaXJuYW1lQXR0cik7CisgICAgaWYgKCFkaXJu
YW1lQXR0clZhbHVlLmlzTnVsbCgpKQorICAgICAgICBlbmNvZGluZy5hcHBlbmREYXRhKGRpcm5h
bWVBdHRyVmFsdWUsIGRpcmVjdGlvbkZvckZvcm1EYXRhKCkpOworICAgIHJldHVybiB0cnVlOyAg
ICAKIH0KIAogdm9pZCBIVE1MVGV4dEFyZWFFbGVtZW50OjpyZXNldCgpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5pZGwJKHJldmlzaW9uIDk5ODI0KQor
KysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmlkbAkod29ya2luZyBj
b3B5KQpAQCAtMjcsNiArMjcsNyBAQCBtb2R1bGUgaHRtbCB7CiAgICAgICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBWYWxpZGl0eVN0YXRlIHZhbGlkaXR5OwogICAgICAgICBhdHRyaWJ1dGUgW1JlZmxl
Y3RdIERPTVN0cmluZyBhY2Nlc3NLZXk7CiAgICAgICAgIGF0dHJpYnV0ZSBsb25nIGNvbHM7Cisg
ICAgICAgIGF0dHJpYnV0ZSBbUmVmbGVjdF0gRE9NU3RyaW5nIGRpck5hbWU7CiAgICAgICAgIGF0
dHJpYnV0ZSBbUmVmbGVjdF0gYm9vbGVhbiBkaXNhYmxlZDsKICAgICAgICAgYXR0cmlidXRlIFtS
ZWZsZWN0XSBib29sZWFuIGF1dG9mb2N1czsKICAgICAgICAgYXR0cmlidXRlIGxvbmcgbWF4TGVu
Z3RoIHNldHRlciByYWlzZXMoRE9NRXhjZXB0aW9uKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCShyZXZpc2lvbiA5OTgy
NCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01NzAsNCArNTcwLDM0IEBAIEhUTUxUZXh0Rm9ybUNvbnRyb2xF
bGVtZW50KiBlbmNsb3NpbmdUZXgKICAgICByZXR1cm4gYW5jZXN0b3IgIT0gY29udGFpbmVyID8g
dG9UZXh0Rm9ybUNvbnRyb2woYW5jZXN0b3IpIDogMDsKIH0KIAorc3RhdGljIGNvbnN0IEVsZW1l
bnQqIHBhcmVudEhUTUxFbGVtZW50KGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgd2hp
bGUgKGVsZW1lbnQpIHsKKyAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQtPnBhcmVudEVsZW1lbnQo
KTsKKyAgICAgICAgaWYgKGVsZW1lbnQgJiYgZWxlbWVudC0+aXNIVE1MRWxlbWVudCgpKQorICAg
ICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CisgICAgfQorICAgIHJldHVybiAwOworfQorCitTdHJp
bmcgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmRpcmVjdGlvbkZvckZvcm1EYXRhKCkgY29u
c3QKK3sKKyAgICBmb3IgKGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQgPSB0aGlzOyBlbGVtZW50OyBl
bGVtZW50ID0gcGFyZW50SFRNTEVsZW1lbnQoZWxlbWVudCkpIHsKKyAgICAgICAgY29uc3QgQXRv
bWljU3RyaW5nJiBkaXJBdHRyaWJ1dGVWYWx1ZSA9IGVsZW1lbnQtPmZhc3RHZXRBdHRyaWJ1dGUo
ZGlyQXR0cik7CisgICAgICAgIGlmIChkaXJBdHRyaWJ1dGVWYWx1ZS5pc051bGwoKSkKKyAgICAg
ICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShkaXJBdHRy
aWJ1dGVWYWx1ZSwgInJ0bCIpIHx8IGVxdWFsSWdub3JpbmdDYXNlKGRpckF0dHJpYnV0ZVZhbHVl
LCAibHRyIikpCisgICAgICAgICAgICByZXR1cm4gZGlyQXR0cmlidXRlVmFsdWU7CisKKyAgICAg
ICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGRpckF0dHJpYnV0ZVZhbHVlLCAiYXV0byIpKSB7Cisg
ICAgICAgICAgICBib29sIGlzQXV0bzsKKyAgICAgICAgICAgIFRleHREaXJlY3Rpb24gdGV4dERp
cmVjdGlvbiA9IHN0YXRpY19jYXN0PGNvbnN0IEhUTUxFbGVtZW50Kj4oZWxlbWVudCktPmRpcmVj
dGlvbmFsaXR5SWZoYXNEaXJBdXRvQXR0cmlidXRlKGlzQXV0byk7CisgICAgICAgICAgICByZXR1
cm4gdGV4dERpcmVjdGlvbiA9PSBSVEwgPyAicnRsIiA6ICJsdHIiOworICAgICAgICB9CisgICAg
fQorCisgICAgcmV0dXJuICJsdHIiOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJjb3JlCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5o
CShyZXZpc2lvbiA5OTgyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29u
dHJvbEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNzksNiArNzksOCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRJbm5lclRleHRWYWx1ZShjb25zdCBTdHJpbmcmKTsKICAgICBTdHJpbmcgaW5u
ZXJUZXh0VmFsdWUoKSBjb25zdDsKIAorICAgIFN0cmluZyBkaXJlY3Rpb25Gb3JGb3JtRGF0YSgp
IGNvbnN0OworCiBwcm90ZWN0ZWQ6CiAgICAgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50KiwgSFRNTEZvcm1FbGVtZW50Kik7CiAgICAgdmly
dHVhbCB2b2lkIHVwZGF0ZVBsYWNlaG9sZGVyVGV4dCgpID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAJKHJldmlzaW9uIDk5ODI0KQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMyw4ICszMywxMCBAQAogI2luY2x1ZGUgIlRleHRGaWVsZElucHV0VHlwZS5oIgogCiAjaW5j
bHVkZSAiQmVmb3JlVGV4dEluc2VydGVkRXZlbnQuaCIKKyNpbmNsdWRlICJGb3JtRGF0YUxpc3Qu
aCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKKyNp
bmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJLZXlib2FyZEV2ZW50LmgiCiAjaW5jbHVk
ZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCkBAIC00OSw2ICs1MSw4IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAordXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKKwogVGV4
dEZpZWxkSW5wdXRUeXBlOjpUZXh0RmllbGRJbnB1dFR5cGUoSFRNTElucHV0RWxlbWVudCogZWxl
bWVudCkKICAgICA6IElucHV0VHlwZShlbGVtZW50KQogewpAQCAtMzY0LDQgKzM2OCwxMyBAQCB2
b2lkIFRleHRGaWVsZElucHV0VHlwZTo6dXBkYXRlUGxhY2Vob2xkCiAgICAgQVNTRVJUKCFlYyk7
CiB9CiAKK2Jvb2wgVGV4dEZpZWxkSW5wdXRUeXBlOjphcHBlbmRGb3JtRGF0YShGb3JtRGF0YUxp
c3QmIGxpc3QsIGJvb2wgbXVsdGlwYXJ0KSBjb25zdAoreworICAgIElucHV0VHlwZTo6YXBwZW5k
Rm9ybURhdGEobGlzdCwgbXVsdGlwYXJ0KTsKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIGRpcm5h
bWVBdHRyVmFsdWUgPSBlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUoZGlybmFtZUF0dHIpOwor
ICAgIGlmICghZGlybmFtZUF0dHJWYWx1ZS5pc051bGwoKSkKKyAgICAgICAgbGlzdC5hcHBlbmRE
YXRhKGRpcm5hbWVBdHRyVmFsdWUsIGVsZW1lbnQoKS0+ZGlyZWN0aW9uRm9yRm9ybURhdGEoKSk7
CisgICAgcmV0dXJuIHRydWU7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuaAkocmV2aXNpb24gOTk4MjQpCisr
KyBTb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zNSw2ICszNSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRm9ybURh
dGFMaXN0OyAKIGNsYXNzIFNwaW5CdXR0b25FbGVtZW50OwogCiAvLyBUaGUgY2xhc3MgcmVwcmVz
ZW50cyB0eXBlcyBvZiB3aGljaCBVSSBjb250YWluIHRleHQgZmllbGRzLgpAQCAtNzcsNiArNzgs
NyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRSZXNwZWN0TGlzdEF0dHJpYnV0
ZSgpOwogICAgIHZpcnR1YWwgSFRNTEVsZW1lbnQqIHBsYWNlaG9sZGVyRWxlbWVudCgpIGNvbnN0
OwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVQbGFjZWhvbGRlclRleHQoKTsKKyAgICB2aXJ0dWFs
IGJvb2wgYXBwZW5kRm9ybURhdGEoRm9ybURhdGFMaXN0JiwgYm9vbCBtdWx0aXBhcnQpIGNvbnN0
OwogCiAgICAgUmVmUHRyPEhUTUxFbGVtZW50PiBtX2NvbnRhaW5lcjsKICAgICBSZWZQdHI8SFRN
TEVsZW1lbnQ+IG1faW5uZXJCbG9jazsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDk5ODM2KQorKysgTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEt
MTEtMTAgIFJha2VzaCBLTiAgPHJha2VzaC5rbkBtb3Rvcm9sYS5jb20+CisKKyAgICAgICAgTmVl
ZCBzdXBwb3J0IGZvciBkaXJuYW1lIGF0dHJpYnV0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjU1NDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnRlZCAnZGlybmFtZScgZm9ybSBhdHRyaWJ1
dGUuCisKKyAgICAgICAgKiBmYXN0L2Zvcm1zL2Zvcm0tZGlybmFtZS1hdHRyaWJ1dGUtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL2Zvcm0tZGlybmFtZS1hdHRyaWJ1
dGUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9zdWJtaXQtZm9ybS13aXRoLWRp
cm5hbWUtYXR0cmlidXRlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jt
cy9zdWJtaXQtZm9ybS13aXRoLWRpcm5hbWUtYXR0cmlidXRlLXdpdGgtYW5jZXN0b3ItZGlyLWF0
dHJpYnV0ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvc3VibWl0
LWZvcm0td2l0aC1kaXJuYW1lLWF0dHJpYnV0ZS13aXRoLWFuY2VzdG9yLWRpci1hdHRyaWJ1dGUu
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9zdWJtaXQtZm9ybS13aXRoLWRpcm5h
bWUtYXR0cmlidXRlLXdpdGgtbm9uaHRtbC1hbmNlc3Rvci1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvZm9ybXMvc3VibWl0LWZvcm0td2l0aC1kaXJuYW1lLWF0dHJpYnV0ZS13
aXRoLW5vbmh0bWwtYW5jZXN0b3IuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9z
dWJtaXQtZm9ybS13aXRoLWRpcm5hbWUtYXR0cmlidXRlLmh0bWw6IEFkZGVkLgorCiAyMDExLTEx
LTEwICBZdXRhIEtpdGFtdXJhICA8eXV0YWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJv
bWl1bV0gVW5yZXZpZXdlZCwgcmViYXNlbGluZSBTVkcgdGVzdCByZXN1bHRzIGNoYW5nZWQgYWZ0
ZXIgcjk5NTM5LiAocGFydCA2KQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9mb3JtLWRp
cm5hbWUtYXR0cmlidXRlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL2Zvcm0tZGlybmFtZS1hdHRyaWJ1dGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9mb3JtLWRpcm5hbWUtYXR0cmlidXRlLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4IEBACisiZGlybmFtZSIgYXR0cmlidXRl
CisKK1BBU1MgaW5wdXQuZGlyTmFtZSBpcyAiSGVsbG8iCitQQVNTIHRleHRBcmVhLmRpck5hbWUg
aXMgIkhlbGxvIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvZm9ybS1kaXJuYW1lLWF0dHJpYnV0
ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvZm9ybS1kaXJuYW1l
LWF0dHJpYnV0ZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9m
b3JtLWRpcm5hbWUtYXR0cmlidXRlLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjMgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5
bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPiA8
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHA+ImRpcm5hbWUiIGF0dHJpYnV0ZTwvcD4KKzxw
cmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgorPHNjcmlwdD4KK3ZhciBpbnB1dCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7CitpbnB1dC5zZXRBdHRyaWJ1dGUoJ2Rpck5hbWUnLCAiSGVs
bG8iKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygnaW5wdXQuZGlyTmFtZScsICJIZWxsbyIpOwor
Cit2YXIgdGV4dEFyZWEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZXh0YXJlYScpOwordGV4
dEFyZWEuc2V0QXR0cmlidXRlKCdkaXJOYW1lJywgIkhlbGxvIik7CitzaG91bGRCZUVxdWFsVG9T
dHJpbmcoJ3RleHRBcmVhLmRpck5hbWUnLCAiSGVsbG8iKTsKK3N1Y2Nlc3NmdWxseVBhcnNlZCA9
IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZm9ybXMvc3VibWl0LWZvcm0td2l0aC1kaXJuYW1lLWF0dHJpYnV0ZS1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zdWJtaXQtZm9ybS13aXRoLWRp
cm5hbWUtYXR0cmlidXRlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvc3VibWl0LWZvcm0td2l0aC1kaXJuYW1lLWF0dHJpYnV0ZS1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjMgQEAKK1Rlc3QgdGhhdCB3aGVuIGRpcm5hbWUg
YXR0cmlidXRlIGlzIHNwZWNpZmllZCB0aGVuIGl0IGlzIGFkZGVkIGluIHN1Ym1pc3Npb24gYm9k
eS4KKworQ29tbWVudDogCisKK1dpdGhSVExEaXI6IAorCitXaXRoTFRSRGlyOiAKKworV2l0aElu
dmFsaWREaXI6IAorCitXaXRoUlRMVmFsdWU6IAorCitQb3N0IENvbW1lbnQKKworUEFTUyBkb2N1
bWVudC5sb2NhdGlvbi5zZWFyY2guaW5kZXhPZigiY29tbWVudC5kaXI9bHRyIikgIT0gLTEgaXMg
dHJ1ZQorUEFTUyBkb2N1bWVudC5sb2NhdGlvbi5zZWFyY2guaW5kZXhPZigidHh0YXJlYVJUTC5k
aXI9cnRsIikgIT0gLTEgaXMgdHJ1ZQorUEFTUyBkb2N1bWVudC5sb2NhdGlvbi5zZWFyY2guaW5k
ZXhPZigidHh0YXJlYUxUUi5kaXI9bHRyIikgIT0gLTEgaXMgdHJ1ZQorUEFTUyBkb2N1bWVudC5s
b2NhdGlvbi5zZWFyY2guaW5kZXhPZigidHh0YXJlYUludmFsaWQuZGlyPWx0ciIpICE9IC0xIGlz
IHRydWUKK1BBU1MgZG9jdW1lbnQubG9jYXRpb24uc2VhcmNoLmluZGV4T2YoImlucHV0UlRMdmFs
dWUuZGlyPWx0ciIpICE9IC0xIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3N1Ym1p
dC1mb3JtLXdpdGgtZGlybmFtZS1hdHRyaWJ1dGUtd2l0aC1hbmNlc3Rvci1kaXItYXR0cmlidXRl
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3N1Ym1p
dC1mb3JtLXdpdGgtZGlybmFtZS1hdHRyaWJ1dGUtd2l0aC1hbmNlc3Rvci1kaXItYXR0cmlidXRl
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvc3Vi
bWl0LWZvcm0td2l0aC1kaXJuYW1lLWF0dHJpYnV0ZS13aXRoLWFuY2VzdG9yLWRpci1hdHRyaWJ1
dGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzIEBACitUZXN0IHRoYXQg
d2hlbiBkaXJuYW1lIGF0dHJpYnV0ZSBpcyBzcGVjaWZpZWQgdGhlbiBpdCBpcyBhZGRlZCBpbiBz
dWJtaXNzaW9uIGJvZHkuCisKKworCitQb3N0IENvbW1lbnQKKworSGVsbG8KK1BBU1MgZG9jdW1l
bnQubG9jYXRpb24uc2VhcmNoLmluZGV4T2YoInJ0bEFuY2VzdG9yLmRpcj1ydGwiKSAhPSAtMSBp
cyB0cnVlCitQQVNTIGRvY3VtZW50LmxvY2F0aW9uLnNlYXJjaC5pbmRleE9mKCJhdXRvQW5jZXN0
b3IuZGlyPWx0ciIpICE9IC0xIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3N1Ym1p
dC1mb3JtLXdpdGgtZGlybmFtZS1hdHRyaWJ1dGUtd2l0aC1hbmNlc3Rvci1kaXItYXR0cmlidXRl
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zdWJtaXQtZm9ybS13
aXRoLWRpcm5hbWUtYXR0cmlidXRlLXdpdGgtYW5jZXN0b3ItZGlyLWF0dHJpYnV0ZS5odG1sCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zdWJtaXQtZm9ybS13aXRoLWRp
cm5hbWUtYXR0cmlidXRlLXdpdGgtYW5jZXN0b3ItZGlyLWF0dHJpYnV0ZS5odG1sCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDQxIEBACis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0i
Y29udGVudC10eXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgorPC9oZWFk
PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+IDwvc2NyaXB0
PgorPHNjcmlwdD4KK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworZnVuY3Rpb24gdGVz
dCgpIHsKKyAgICBkb2N1bWVudC5mb3Jtcy5mLnN1Ym1pdCgpOworfQorPC9zY3JpcHQ+Cis8Ym9k
eSBvbmxvYWQ9InRlc3QoKSI+Cis8cD5UZXN0IHRoYXQgd2hlbiBkaXJuYW1lIGF0dHJpYnV0ZSBp
cyBzcGVjaWZpZWQgdGhlbiBpdCBpcyBhZGRlZCBpbiBzdWJtaXNzaW9uIGJvZHkuPC9wPgorCis8
ZGl2IGRpcj0iYXV0byI+CisgICAgPGZvcm0gYWN0aW9uPSIjYWN0aW9uIiBtZXRob2Q9IkdFVCIg
bmFtZT0iZiI+CisgICAgICAgIDxkaXYgZGlyPSJydGwiPiAKKyAgICAgICAgICAgIDxpbnB1dCB0
eXBlPXRleHQgbmFtZT0iY29tbWVudCIgZGlybmFtZT0icnRsQW5jZXN0b3IuZGlyIiByZXF1aXJl
ZD4KKyAgICAgICAgPC9kaXY+CisgICAgICAgIDxpbnB1dCB0eXBlPXRleHQgbmFtZT0iYXV0b0Fu
Y2VzdG9yIiBkaXJuYW1lPSJhdXRvQW5jZXN0b3IuZGlyIiB2YWx1ZT0i16nXnNeV150iPgorICAg
ICAgICA8cD48YnV0dG9uIG5hbWU9Im1vZGUiIHR5cGU9c3VibWl0IHZhbHVlPSJhZGQiPlBvc3Qg
Q29tbWVudDwvYnV0dG9uPjwvcD4KKyAgICA8L2Zvcm0+CitIZWxsbworPC9kaXY+CisKKzxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorPGRpdiBpZD0iYWN0aW9uIj4KKzxzY3JpcHQ+CitpZiAoZG9j
dW1lbnQubG9jYXRpb24uaHJlZi5tYXRjaCgnXFw/JykpIHsKKyAgICBzaG91bGRCZVRydWUoJ2Rv
Y3VtZW50LmxvY2F0aW9uLnNlYXJjaC5pbmRleE9mKCJydGxBbmNlc3Rvci5kaXI9cnRsIikgIT0g
LTEnKTsKKyAgICBzaG91bGRCZVRydWUoJ2RvY3VtZW50LmxvY2F0aW9uLnNlYXJjaC5pbmRleE9m
KCJhdXRvQW5jZXN0b3IuZGlyPWx0ciIpICE9IC0xJyk7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9
CisKK3N1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzwvZGl2PgorPHNjcmlw
dCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zdWJtaXQtZm9ybS13aXRo
LWRpcm5hbWUtYXR0cmlidXRlLXdpdGgtbm9uaHRtbC1hbmNlc3Rvci1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zdWJtaXQtZm9ybS13aXRoLWRpcm5h
bWUtYXR0cmlidXRlLXdpdGgtbm9uaHRtbC1hbmNlc3Rvci1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3N1Ym1pdC1mb3JtLXdpdGgtZGlybmFtZS1h
dHRyaWJ1dGUtd2l0aC1ub25odG1sLWFuY2VzdG9yLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwxMCBAQAorVGVzdCB0aGF0IHdoZW4gZGlyIGF0dHJpYnV0ZSBpcyBzcGVjaWZp
ZWQgZm9yIG5vbiBodG1sIGVsZW1lbnQsIGl0IGlzIG5vdCBjb25zaWRlcmVkIGZvciBkaXJuYW1l
IGF0dHJpYnV0ZSB2YWx1ZSBpbiBzdWJtaXNzaW9uIGJvZHkuCisKKworUG9zdCBDb21tZW50CisK
K1BBU1MgZG9jdW1lbnQubG9jYXRpb24uc2VhcmNoLmluZGV4T2YoIm5vbkh0bWxBbmNlc3Rvci5k
aXI9bHRyIikgIT0gLTEgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvc3VibWl0LWZv
cm0td2l0aC1kaXJuYW1lLWF0dHJpYnV0ZS13aXRoLW5vbmh0bWwtYW5jZXN0b3IuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3N1Ym1pdC1mb3JtLXdpdGgtZGlybmFt
ZS1hdHRyaWJ1dGUtd2l0aC1ub25odG1sLWFuY2VzdG9yLmh0bWwJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3N1Ym1pdC1mb3JtLXdpdGgtZGlybmFtZS1hdHRyaWJ1dGUt
d2l0aC1ub25odG1sLWFuY2VzdG9yLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzYgQEAK
KzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJjb250ZW50LXR5cGUiIGNvbnRlbnQ9
InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Cis8L2hlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj4gPC9zY3JpcHQ+Cis8c2NyaXB0Pgord2luZG93Lmpz
VGVzdElzQXN5bmMgPSB0cnVlOworCitmdW5jdGlvbiB0ZXN0KCkgeworICAgIGRvY3VtZW50LmZv
cm1zLmYuc3VibWl0KCk7Cit9Cis8L3NjcmlwdD4KKzxib2R5IG9ubG9hZD0idGVzdCgpIj4KKzxw
PlRlc3QgdGhhdCB3aGVuIGRpciBhdHRyaWJ1dGUgaXMgc3BlY2lmaWVkIGZvciBub24gaHRtbCBl
bGVtZW50LCBpdCBpcyBub3QgY29uc2lkZXJlZCBmb3IgZGlybmFtZSBhdHRyaWJ1dGUgdmFsdWUg
aW4gc3VibWlzc2lvbiBib2R5LjwvcD4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiB2aWV3Qm94PSIwIDAgNDAwIDQwMCIg
ZGlyPSJydGwiPgorICAgIDxkaXY+CisgICAgPGZvcm0gYWN0aW9uPSIjYWN0aW9uIiBtZXRob2Q9
IkdFVCIgbmFtZT0iZiI+CisgICAgICAgIDxpbnB1dCB0eXBlPXRleHQgbmFtZT0ibm9uSHRtbEFu
Y2VzdG9yIiBkaXJuYW1lPSJub25IdG1sQW5jZXN0b3IuZGlyIj4gCisgICAgICAgIDxwPjxidXR0
b24gbmFtZT0ibW9kZSIgdHlwZT1zdWJtaXQgdmFsdWU9ImFkZCI+UG9zdCBDb21tZW50PC9idXR0
b24+PC9wPgorICAgIDwvZm9ybT4KKyAgICA8L2Rpdj4KKzwvc3ZnPgorPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+Cis8ZGl2IGlkPSJhY3Rpb24iPgorPHNjcmlwdD4KK2lmIChkb2N1bWVudC5sb2Nh
dGlvbi5ocmVmLm1hdGNoKCdcXD8nKSkgeworICAgIHNob3VsZEJlVHJ1ZSgnZG9jdW1lbnQubG9j
YXRpb24uc2VhcmNoLmluZGV4T2YoIm5vbkh0bWxBbmNlc3Rvci5kaXI9bHRyIikgIT0gLTEnKTsK
KyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKworc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwv
c2NyaXB0PgorPC9kaXY+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL3N1Ym1pdC1mb3JtLXdpdGgtZGlybmFtZS1hdHRyaWJ1dGUuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3N1Ym1pdC1mb3JtLXdpdGgtZGlybmFtZS1hdHRy
aWJ1dGUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvc3VibWl0
LWZvcm0td2l0aC1kaXJuYW1lLWF0dHJpYnV0ZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDQyIEBACis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iY29udGVudC10eXBlIiBj
b250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgorPC9oZWFkPgorPHNjcmlwdCBzcmM9
Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+IDwvc2NyaXB0PgorPHNjcmlwdD4KK3dp
bmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworZnVuY3Rpb24gdGVzdCgpIHsKKyAgICBkb2N1
bWVudC5mb3Jtcy5mLnN1Ym1pdCgpOworfQorPC9zY3JpcHQ+Cis8Ym9keSBvbmxvYWQ9InRlc3Qo
KSI+Cis8cD5UZXN0IHRoYXQgd2hlbiBkaXJuYW1lIGF0dHJpYnV0ZSBpcyBzcGVjaWZpZWQgdGhl
biBpdCBpcyBhZGRlZCBpbiBzdWJtaXNzaW9uIGJvZHkuPC9wPgorCis8Zm9ybSBhY3Rpb249IiNh
Y3Rpb24iIG5hbWU9ImYiPgorICAgIDxwPjxsYWJlbD5Db21tZW50OiA8aW5wdXQgdHlwZT10ZXh0
IG5hbWU9ImNvbW1lbnQiIGRpcm5hbWU9ImNvbW1lbnQuZGlyIiByZXF1aXJlZD48L2xhYmVsPjwv
cD4KKyAgICA8cD48bGFiZWw+V2l0aFJUTERpcjogPHRleHRhcmVhIG5hbWU9InR4dGFyZWEiIGRp
cj0icnRsIiBkaXJuYW1lPSJ0eHRhcmVhUlRMLmRpciI+PC90ZXh0YXJlYT48L2xhYmVsPjwvcD4K
KyAgICA8cD48bGFiZWw+V2l0aExUUkRpcjogPHRleHRhcmVhIG5hbWU9InR4dGFyZWExIiBkaXI9
Imx0ciIgZGlybmFtZT0idHh0YXJlYUxUUi5kaXIiPjwvdGV4dGFyZWE+PC9sYWJlbD48L3A+Cisg
ICAgPHA+PGxhYmVsPldpdGhJbnZhbGlkRGlyOiA8dGV4dGFyZWEgbmFtZT0idHh0YXJlYTIiIGRp
cj0iaW52YWxpZCIgZGlybmFtZT0idHh0YXJlYUludmFsaWQuZGlyIj48L3RleHRhcmVhPjwvbGFi
ZWw+PC9wPgorICAgIDxwPjxsYWJlbD5XaXRoUlRMVmFsdWU6IDxpbnB1dCBuYW1lPSJpbnB1dCIg
ZGlybmFtZT0iaW5wdXRSVEx2YWx1ZS5kaXIiIHZhbHVlPSLZhdix2K3YqNmL2KciPjwvbGFiZWw+
PC9wPgorICAgIDxwPjxidXR0b24gbmFtZT0ibW9kZSIgdHlwZT1zdWJtaXQgdmFsdWU9ImFkZCI+
UG9zdCBDb21tZW50PC9idXR0b24+PC9wPgorPC9mb3JtPgorCis8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKzxkaXYgaWQ9ImFjdGlvbiI+Cis8c2NyaXB0PgoraWYgKGRvY3VtZW50LmxvY2F0aW9u
LmhyZWYubWF0Y2goJ1xcPycpKSB7CisgICAgc2hvdWxkQmVUcnVlKCdkb2N1bWVudC5sb2NhdGlv
bi5zZWFyY2guaW5kZXhPZigiY29tbWVudC5kaXI9bHRyIikgIT0gLTEnKTsKKyAgICBzaG91bGRC
ZVRydWUoJ2RvY3VtZW50LmxvY2F0aW9uLnNlYXJjaC5pbmRleE9mKCJ0eHRhcmVhUlRMLmRpcj1y
dGwiKSAhPSAtMScpOworICAgIHNob3VsZEJlVHJ1ZSgnZG9jdW1lbnQubG9jYXRpb24uc2VhcmNo
LmluZGV4T2YoInR4dGFyZWFMVFIuZGlyPWx0ciIpICE9IC0xJyk7CisgICAgc2hvdWxkQmVUcnVl
KCdkb2N1bWVudC5sb2NhdGlvbi5zZWFyY2guaW5kZXhPZigidHh0YXJlYUludmFsaWQuZGlyPWx0
ciIpICE9IC0xJyk7CisgICAgc2hvdWxkQmVUcnVlKCdkb2N1bWVudC5sb2NhdGlvbi5zZWFyY2gu
aW5kZXhPZigiaW5wdXRSVEx2YWx1ZS5kaXI9bHRyIikgIT0gLTEnKTsKKyAgICBmaW5pc2hKU1Rl
c3QoKTsKK30KKworc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPC9kaXY+
Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114899</attachid>
            <date>2011-11-14 01:31:15 -0800</date>
            <delta_ts>2011-11-21 15:13:15 -0800</delta_ts>
            <desc>Compilation fix for mac</desc>
            <filename>bug-65542-20111114145542.patch</filename>
            <type>text/plain</type>
            <size>18234</size>
            <attacher name="Rakesh">rakeshchaitan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMDExMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM5IEBACisyMDExLTExLTE0ICBSYWtlc2gg
S04gIDxyYWtlc2gua25AbW90b3JvbGEuY29tPgorCisgICAgICAgIE5lZWQgc3VwcG9ydCBmb3Ig
ZGlybmFtZSBhdHRyaWJ1dGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTY1NTQyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgSW1wbGVtZW50ZWQgJ2Rpcm5hbWUnIGZvcm0gYXR0cmlidXRlLgorCisgICAgICAg
IFRlc3RzOiBmYXN0L2Zvcm1zL2Zvcm0tZGlybmFtZS1hdHRyaWJ1dGUuaHRtbAorICAgICAgICAg
ICAgICAgZmFzdC9mb3Jtcy9zdWJtaXQtZm9ybS13aXRoLWRpcm5hbWUtYXR0cmlidXRlLXdpdGgt
YW5jZXN0b3ItZGlyLWF0dHJpYnV0ZS5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Zvcm1zL3N1
Ym1pdC1mb3JtLXdpdGgtZGlybmFtZS1hdHRyaWJ1dGUtd2l0aC1ub25odG1sLWFuY2VzdG9yLmh0
bWwKKyAgICAgICAgICAgICAgIGZhc3QvZm9ybXMvc3VibWl0LWZvcm0td2l0aC1kaXJuYW1lLWF0
dHJpYnV0ZS5odG1sCisKKyAgICAgICAgKiBodG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbjoKKyAg
ICAgICAgQWRkZWQgImRpcm5hbWUiIGF0dHJpYnV0ZS4KKyAgICAgICAgKiBodG1sL0hUTUxJbnB1
dEVsZW1lbnQuaWRsOgorICAgICAgICBBZGQgImRpck5hbWUiIHByb3BlcnR5IHRvIEhUTUxJbnB1
dEVsZW1lbnQgaW50ZXJmYWNlLgorICAgICAgICAqIGh0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50OjphcHBlbmRGb3JtRGF0
YSk6CisgICAgICAgIEFwcGVuZCBkaXJuYW1lIGZvcm0gZGF0YS4KKyAgICAgICAgKiBodG1sL0hU
TUxUZXh0QXJlYUVsZW1lbnQuaWRsOgorICAgICAgICBBZGQgImRpck5hbWUiIHByb3BlcnR5IHRv
IEhUTUxUZXh0QXJlYUVsZW1lbnQgaW50ZXJmYWNlLgorICAgICAgICAqIGh0bWwvSFRNTFRleHRG
b3JtQ29udHJvbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFyZW50SFRNTEVsZW1l
bnQpOgorICAgICAgICBIZWxwZXIgZnVuY3Rpb24gd2hpY2ggcmV0dXJucyBvbmx5IEhUTUwgcGFy
ZW50IGVsZW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVu
dDo6ZGlyZWN0aW9uRm9yRm9ybURhdGEpOgorICAgICAgICBIZWxwZXIgZnVuY3Rpb24gZm9yIGZp
bmRpbmcgZGlyZWN0aW9uYWxpdHkgb2YgdGhlIEVsZW1lbnQuCisgICAgICAgICogaHRtbC9IVE1M
VGV4dEZvcm1Db250cm9sRWxlbWVudC5oOgorICAgICAgICBIZWxwZXIgZnVuY3Rpb24gZm9yIGZp
bmRpbmcgZGlyZWN0aW9uYWxpdHkgb2YgdGhlIEVsZW1lbnQuCisgICAgICAgICogaHRtbC9UZXh0
RmllbGRJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRUeXBl
OjphcHBlbmRGb3JtRGF0YSk6CisgICAgICAgIEFwcGVuZCBkaXJuYW1lIGZvcm0gZGF0YS4KKyAg
ICAgICAgKiBodG1sL1RleHRGaWVsZElucHV0VHlwZS5oOgorICAgICAgICBBcHBlbmQgZGlybmFt
ZSBmb3JtIGRhdGEuCisKIDIwMTEtMTEtMTQgIFJha2VzaCBLTiAgPHJha2VzaC5rbkBtb3Rvcm9s
YS5jb20+CiAKICAgICAgICAgQ2Fubm90IHNlbGVjdCBtdWx0aXBsZSBvcHRpb25zIGJ5IG1vdXNl
IGRyYWdnaW5nIGluIDxzZWxlY3QgbXVsdGlwbGU9Im11bHRpcGxlIiBzaXplPSI3Ij4gbGlzdApJ
bmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4JKHJldmlzaW9u
IDk5ODI0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4JKHdv
cmtpbmcgY29weSkKQEAgLTkwLDYgKzkwLDcgQEAgZGVmYXVsdAogZGVmZXIKIGRpcgogZGlyZWN0
aW9uCitkaXJuYW1lCiBkaXNhYmxlZAogZG93bmxvYWQKIGRyYWdnYWJsZQpJbmRleDogU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaWRsCShyZXZpc2lvbiA5OTgyNCkKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAg
LTIzLDYgKzIzLDcgQEAgbW9kdWxlIGh0bWwgewogICAgIGludGVyZmFjZSBIVE1MSW5wdXRFbGVt
ZW50IDogSFRNTEVsZW1lbnQgewogICAgICAgICBhdHRyaWJ1dGUgW0NvbnZlcnROdWxsVG9OdWxs
U3RyaW5nXSBET01TdHJpbmcgZGVmYXVsdFZhbHVlOwogICAgICAgICBhdHRyaWJ1dGUgW1JlZmxl
Y3Q9Y2hlY2tlZF0gYm9vbGVhbiBkZWZhdWx0Q2hlY2tlZDsKKyAgICAgICAgYXR0cmlidXRlIFtS
ZWZsZWN0XSBET01TdHJpbmcgZGlyTmFtZTsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEhU
TUxGb3JtRWxlbWVudCBmb3JtOwogICAgICAgICBhdHRyaWJ1dGUgW1JlZmxlY3QsIFVSTF0gRE9N
U3RyaW5nIGZvcm1BY3Rpb247CiAgICAgICAgIGF0dHJpYnV0ZSBbQ29udmVydE51bGxUb051bGxT
dHJpbmddIERPTVN0cmluZyBmb3JtRW5jdHlwZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFRleHRBcmVhRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAkocmV2aXNpb24gOTk4MjQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzMs
NyArMTczLDExIEBAIGJvb2wgSFRNTFRleHRBcmVhRWxlbWVudDo6YXBwZW5kRm9ybURhdGEKIAog
ICAgIGNvbnN0IFN0cmluZyYgdGV4dCA9IChtX3dyYXAgPT0gSGFyZFdyYXApID8gdmFsdWVXaXRo
SGFyZExpbmVCcmVha3MoKSA6IHZhbHVlKCk7CiAgICAgZW5jb2RpbmcuYXBwZW5kRGF0YShuYW1l
KCksIHRleHQpOwotICAgIHJldHVybiB0cnVlOworCisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBk
aXJuYW1lQXR0clZhbHVlID0gZmFzdEdldEF0dHJpYnV0ZShkaXJuYW1lQXR0cik7CisgICAgaWYg
KCFkaXJuYW1lQXR0clZhbHVlLmlzTnVsbCgpKQorICAgICAgICBlbmNvZGluZy5hcHBlbmREYXRh
KGRpcm5hbWVBdHRyVmFsdWUsIGRpcmVjdGlvbkZvckZvcm1EYXRhKCkpOworICAgIHJldHVybiB0
cnVlOyAgICAKIH0KIAogdm9pZCBIVE1MVGV4dEFyZWFFbGVtZW50OjpyZXNldCgpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5pZGwJKHJldmlzaW9uIDk5
ODI0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmlkbAkod29y
a2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQCBtb2R1bGUgaHRtbCB7CiAgICAgICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBWYWxpZGl0eVN0YXRlIHZhbGlkaXR5OwogICAgICAgICBhdHRyaWJ1dGUg
W1JlZmxlY3RdIERPTVN0cmluZyBhY2Nlc3NLZXk7CiAgICAgICAgIGF0dHJpYnV0ZSBsb25nIGNv
bHM7CisgICAgICAgIGF0dHJpYnV0ZSBbUmVmbGVjdF0gRE9NU3RyaW5nIGRpck5hbWU7CiAgICAg
ICAgIGF0dHJpYnV0ZSBbUmVmbGVjdF0gYm9vbGVhbiBkaXNhYmxlZDsKICAgICAgICAgYXR0cmli
dXRlIFtSZWZsZWN0XSBib29sZWFuIGF1dG9mb2N1czsKICAgICAgICAgYXR0cmlidXRlIGxvbmcg
bWF4TGVuZ3RoIHNldHRlciByYWlzZXMoRE9NRXhjZXB0aW9uKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCShyZXZpc2lv
biA5OTgyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NzAsNCArNTcwLDM0IEBAIEhUTUxUZXh0Rm9ybUNv
bnRyb2xFbGVtZW50KiBlbmNsb3NpbmdUZXgKICAgICByZXR1cm4gYW5jZXN0b3IgIT0gY29udGFp
bmVyID8gdG9UZXh0Rm9ybUNvbnRyb2woYW5jZXN0b3IpIDogMDsKIH0KIAorc3RhdGljIGNvbnN0
IEVsZW1lbnQqIHBhcmVudEhUTUxFbGVtZW50KGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQpCit7Cisg
ICAgd2hpbGUgKGVsZW1lbnQpIHsKKyAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQtPnBhcmVudEVs
ZW1lbnQoKTsKKyAgICAgICAgaWYgKGVsZW1lbnQgJiYgZWxlbWVudC0+aXNIVE1MRWxlbWVudCgp
KQorICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CisgICAgfQorICAgIHJldHVybiAwOworfQor
CitTdHJpbmcgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmRpcmVjdGlvbkZvckZvcm1EYXRh
KCkgY29uc3QKK3sKKyAgICBmb3IgKGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQgPSB0aGlzOyBlbGVt
ZW50OyBlbGVtZW50ID0gcGFyZW50SFRNTEVsZW1lbnQoZWxlbWVudCkpIHsKKyAgICAgICAgY29u
c3QgQXRvbWljU3RyaW5nJiBkaXJBdHRyaWJ1dGVWYWx1ZSA9IGVsZW1lbnQtPmZhc3RHZXRBdHRy
aWJ1dGUoZGlyQXR0cik7CisgICAgICAgIGlmIChkaXJBdHRyaWJ1dGVWYWx1ZS5pc051bGwoKSkK
KyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShk
aXJBdHRyaWJ1dGVWYWx1ZSwgInJ0bCIpIHx8IGVxdWFsSWdub3JpbmdDYXNlKGRpckF0dHJpYnV0
ZVZhbHVlLCAibHRyIikpCisgICAgICAgICAgICByZXR1cm4gZGlyQXR0cmlidXRlVmFsdWU7CisK
KyAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGRpckF0dHJpYnV0ZVZhbHVlLCAiYXV0byIp
KSB7CisgICAgICAgICAgICBib29sIGlzQXV0bzsKKyAgICAgICAgICAgIFRleHREaXJlY3Rpb24g
dGV4dERpcmVjdGlvbiA9IHN0YXRpY19jYXN0PGNvbnN0IEhUTUxFbGVtZW50Kj4oZWxlbWVudCkt
PmRpcmVjdGlvbmFsaXR5SWZoYXNEaXJBdXRvQXR0cmlidXRlKGlzQXV0byk7CisgICAgICAgICAg
ICByZXR1cm4gdGV4dERpcmVjdGlvbiA9PSBSVEwgPyAicnRsIiA6ICJsdHIiOworICAgICAgICB9
CisgICAgfQorCisgICAgcmV0dXJuICJsdHIiOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJjb3Jl
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxl
bWVudC5oCShyZXZpc2lvbiA5OTgyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRG
b3JtQ29udHJvbEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNzksNiArNzksOCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRJbm5lclRleHRWYWx1ZShjb25zdCBTdHJpbmcmKTsKICAgICBTdHJp
bmcgaW5uZXJUZXh0VmFsdWUoKSBjb25zdDsKIAorICAgIFN0cmluZyBkaXJlY3Rpb25Gb3JGb3Jt
RGF0YSgpIGNvbnN0OworCiBwcm90ZWN0ZWQ6CiAgICAgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1l
bnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50KiwgSFRNTEZvcm1FbGVtZW50Kik7CiAg
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZVBsYWNlaG9sZGVyVGV4dCgpID0gMDsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAJKHJldmlzaW9uIDk5ODI0KQor
KysgU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMyw4ICszMywxMCBAQAogI2luY2x1ZGUgIlRleHRGaWVsZElucHV0VHlwZS5oIgog
CiAjaW5jbHVkZSAiQmVmb3JlVGV4dEluc2VydGVkRXZlbnQuaCIKKyNpbmNsdWRlICJGb3JtRGF0
YUxpc3QuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQu
aCIKKyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJLZXlib2FyZEV2ZW50LmgiCiAj
aW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCkBAIC00OSw2ICs1MSw4
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAordXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsK
KwogVGV4dEZpZWxkSW5wdXRUeXBlOjpUZXh0RmllbGRJbnB1dFR5cGUoSFRNTElucHV0RWxlbWVu
dCogZWxlbWVudCkKICAgICA6IElucHV0VHlwZShlbGVtZW50KQogewpAQCAtMzY0LDQgKzM2OCwx
MyBAQCB2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6dXBkYXRlUGxhY2Vob2xkCiAgICAgQVNTRVJU
KCFlYyk7CiB9CiAKK2Jvb2wgVGV4dEZpZWxkSW5wdXRUeXBlOjphcHBlbmRGb3JtRGF0YShGb3Jt
RGF0YUxpc3QmIGxpc3QsIGJvb2wgbXVsdGlwYXJ0KSBjb25zdAoreworICAgIElucHV0VHlwZTo6
YXBwZW5kRm9ybURhdGEobGlzdCwgbXVsdGlwYXJ0KTsKKyAgICBjb25zdCBBdG9taWNTdHJpbmcm
IGRpcm5hbWVBdHRyVmFsdWUgPSBlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUoZGlybmFtZUF0
dHIpOworICAgIGlmICghZGlybmFtZUF0dHJWYWx1ZS5pc051bGwoKSkKKyAgICAgICAgbGlzdC5h
cHBlbmREYXRhKGRpcm5hbWVBdHRyVmFsdWUsIGVsZW1lbnQoKS0+ZGlyZWN0aW9uRm9yRm9ybURh
dGEoKSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuaAkocmV2aXNpb24gOTk4
MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3Mg
Rm9ybURhdGFMaXN0OyAKIGNsYXNzIFNwaW5CdXR0b25FbGVtZW50OwogCiAvLyBUaGUgY2xhc3Mg
cmVwcmVzZW50cyB0eXBlcyBvZiB3aGljaCBVSSBjb250YWluIHRleHQgZmllbGRzLgpAQCAtNzcs
NiArNzgsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRSZXNwZWN0TGlzdEF0
dHJpYnV0ZSgpOwogICAgIHZpcnR1YWwgSFRNTEVsZW1lbnQqIHBsYWNlaG9sZGVyRWxlbWVudCgp
IGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVQbGFjZWhvbGRlclRleHQoKTsKKyAgICB2
aXJ0dWFsIGJvb2wgYXBwZW5kRm9ybURhdGEoRm9ybURhdGFMaXN0JiwgYm9vbCBtdWx0aXBhcnQp
IGNvbnN0OwogCiAgICAgUmVmUHRyPEhUTUxFbGVtZW50PiBtX2NvbnRhaW5lcjsKICAgICBSZWZQ
dHI8SFRNTEVsZW1lbnQ+IG1faW5uZXJCbG9jazsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMDExMikK
KysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBA
CisyMDExLTExLTE0ICBSYWtlc2ggS04gIDxyYWtlc2gua25AbW90b3JvbGEuY29tPgorCisgICAg
ICAgIE5lZWQgc3VwcG9ydCBmb3IgZGlybmFtZSBhdHRyaWJ1dGUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1NTQyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50ZWQgJ2Rpcm5hbWUnIGZvcm0g
YXR0cmlidXRlLgorCisgICAgICAgICogZmFzdC9mb3Jtcy9mb3JtLWRpcm5hbWUtYXR0cmlidXRl
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9mb3JtLWRpcm5hbWUt
YXR0cmlidXRlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvc3VibWl0LWZvcm0t
d2l0aC1kaXJuYW1lLWF0dHJpYnV0ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZm9ybXMvc3VibWl0LWZvcm0td2l0aC1kaXJuYW1lLWF0dHJpYnV0ZS13aXRoLWFuY2VzdG9y
LWRpci1hdHRyaWJ1dGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1z
L3N1Ym1pdC1mb3JtLXdpdGgtZGlybmFtZS1hdHRyaWJ1dGUtd2l0aC1hbmNlc3Rvci1kaXItYXR0
cmlidXRlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvc3VibWl0LWZvcm0td2l0
aC1kaXJuYW1lLWF0dHJpYnV0ZS13aXRoLW5vbmh0bWwtYW5jZXN0b3ItZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL3N1Ym1pdC1mb3JtLXdpdGgtZGlybmFtZS1hdHRy
aWJ1dGUtd2l0aC1ub25odG1sLWFuY2VzdG9yLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
Zm9ybXMvc3VibWl0LWZvcm0td2l0aC1kaXJuYW1lLWF0dHJpYnV0ZS5odG1sOiBBZGRlZC4KKwog
MjAxMS0xMS0xNCAgS3Jpc3TDs2YgS29zenR5w7MgIDxra3Jpc3RvZkBpbmYudS1zemVnZWQuaHU+
CiAKICAgICAgICAgW1F0XSBVbnJldmlld2VkIGdhcmRlbmluZyBhZnRlciByMTAwMDUwCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2Zvcm0tZGlybmFtZS1hdHRyaWJ1dGUtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvZm9ybS1kaXJuYW1lLWF0
dHJpYnV0ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL2Zvcm0tZGlybmFtZS1hdHRyaWJ1dGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDggQEAKKyJkaXJuYW1lIiBhdHRyaWJ1dGUKKworUEFTUyBpbnB1dC5kaXJOYW1lIGlz
ICJIZWxsbyIKK1BBU1MgdGV4dEFyZWEuZGlyTmFtZSBpcyAiSGVsbG8iCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9mb3Jtcy9mb3JtLWRpcm5hbWUtYXR0cmlidXRlLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9mb3JtLWRpcm5hbWUtYXR0cmlidXRlLmh0bWwJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2Zvcm0tZGlybmFtZS1hdHRyaWJ1dGUuaHRt
bAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4u
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+IDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8cD4iZGlybmFtZSIgYXR0cmlidXRlPC9wPgorPHByZSBpZD0iY29uc29sZSI+PC9wcmU+Cis8
c2NyaXB0PgordmFyIGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTsKK2lu
cHV0LnNldEF0dHJpYnV0ZSgnZGlyTmFtZScsICJIZWxsbyIpOworc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCdpbnB1dC5kaXJOYW1lJywgIkhlbGxvIik7CisKK3ZhciB0ZXh0QXJlYSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ3RleHRhcmVhJyk7Cit0ZXh0QXJlYS5zZXRBdHRyaWJ1dGUoJ2Rpck5h
bWUnLCAiSGVsbG8iKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygndGV4dEFyZWEuZGlyTmFtZScs
ICJIZWxsbyIpOworc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zdWJtaXQtZm9ybS13aXRo
LWRpcm5hbWUtYXR0cmlidXRlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL3N1Ym1pdC1mb3JtLXdpdGgtZGlybmFtZS1hdHRyaWJ1dGUtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zdWJtaXQtZm9ybS13
aXRoLWRpcm5hbWUtYXR0cmlidXRlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwyMyBAQAorVGVzdCB0aGF0IHdoZW4gZGlybmFtZSBhdHRyaWJ1dGUgaXMgc3BlY2lmaWVkIHRo
ZW4gaXQgaXMgYWRkZWQgaW4gc3VibWlzc2lvbiBib2R5LgorCitDb21tZW50OiAKKworV2l0aFJU
TERpcjogCisKK1dpdGhMVFJEaXI6IAorCitXaXRoSW52YWxpZERpcjogCisKK1dpdGhSVExWYWx1
ZTogCisKK1Bvc3QgQ29tbWVudAorCitQQVNTIGRvY3VtZW50LmxvY2F0aW9uLnNlYXJjaC5pbmRl
eE9mKCJjb21tZW50LmRpcj1sdHIiKSAhPSAtMSBpcyB0cnVlCitQQVNTIGRvY3VtZW50LmxvY2F0
aW9uLnNlYXJjaC5pbmRleE9mKCJ0eHRhcmVhUlRMLmRpcj1ydGwiKSAhPSAtMSBpcyB0cnVlCitQ
QVNTIGRvY3VtZW50LmxvY2F0aW9uLnNlYXJjaC5pbmRleE9mKCJ0eHRhcmVhTFRSLmRpcj1sdHIi
KSAhPSAtMSBpcyB0cnVlCitQQVNTIGRvY3VtZW50LmxvY2F0aW9uLnNlYXJjaC5pbmRleE9mKCJ0
eHRhcmVhSW52YWxpZC5kaXI9bHRyIikgIT0gLTEgaXMgdHJ1ZQorUEFTUyBkb2N1bWVudC5sb2Nh
dGlvbi5zZWFyY2guaW5kZXhPZigiaW5wdXRSVEx2YWx1ZS5kaXI9bHRyIikgIT0gLTEgaXMgdHJ1
ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvc3VibWl0LWZvcm0td2l0aC1kaXJuYW1lLWF0dHJp
YnV0ZS13aXRoLWFuY2VzdG9yLWRpci1hdHRyaWJ1dGUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvc3VibWl0LWZvcm0td2l0aC1kaXJuYW1lLWF0dHJp
YnV0ZS13aXRoLWFuY2VzdG9yLWRpci1hdHRyaWJ1dGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zdWJtaXQtZm9ybS13aXRoLWRpcm5hbWUtYXR0
cmlidXRlLXdpdGgtYW5jZXN0b3ItZGlyLWF0dHJpYnV0ZS1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMTMgQEAKK1Rlc3QgdGhhdCB3aGVuIGRpcm5hbWUgYXR0cmlidXRlIGlz
IHNwZWNpZmllZCB0aGVuIGl0IGlzIGFkZGVkIGluIHN1Ym1pc3Npb24gYm9keS4KKworCisKK1Bv
c3QgQ29tbWVudAorCitIZWxsbworUEFTUyBkb2N1bWVudC5sb2NhdGlvbi5zZWFyY2guaW5kZXhP
ZigicnRsQW5jZXN0b3IuZGlyPXJ0bCIpICE9IC0xIGlzIHRydWUKK1BBU1MgZG9jdW1lbnQubG9j
YXRpb24uc2VhcmNoLmluZGV4T2YoImF1dG9BbmNlc3Rvci5kaXI9bHRyIikgIT0gLTEgaXMgdHJ1
ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvc3VibWl0LWZvcm0td2l0aC1kaXJuYW1lLWF0dHJp
YnV0ZS13aXRoLWFuY2VzdG9yLWRpci1hdHRyaWJ1dGUuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL3N1Ym1pdC1mb3JtLXdpdGgtZGlybmFtZS1hdHRyaWJ1dGUtd2l0
aC1hbmNlc3Rvci1kaXItYXR0cmlidXRlLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL3N1Ym1pdC1mb3JtLXdpdGgtZGlybmFtZS1hdHRyaWJ1dGUtd2l0aC1hbmNl
c3Rvci1kaXItYXR0cmlidXRlLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDEgQEAKKzxo
dG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJjb250ZW50LXR5cGUiIGNvbnRlbnQ9InRl
eHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Cis8L2hlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj4gPC9zY3JpcHQ+Cis8c2NyaXB0Pgord2luZG93LmpzVGVz
dElzQXN5bmMgPSB0cnVlOworCitmdW5jdGlvbiB0ZXN0KCkgeworICAgIGRvY3VtZW50LmZvcm1z
LmYuc3VibWl0KCk7Cit9Cis8L3NjcmlwdD4KKzxib2R5IG9ubG9hZD0idGVzdCgpIj4KKzxwPlRl
c3QgdGhhdCB3aGVuIGRpcm5hbWUgYXR0cmlidXRlIGlzIHNwZWNpZmllZCB0aGVuIGl0IGlzIGFk
ZGVkIGluIHN1Ym1pc3Npb24gYm9keS48L3A+CisKKzxkaXYgZGlyPSJhdXRvIj4KKyAgICA8Zm9y
bSBhY3Rpb249IiNhY3Rpb24iIG1ldGhvZD0iR0VUIiBuYW1lPSJmIj4KKyAgICAgICAgPGRpdiBk
aXI9InJ0bCI+IAorICAgICAgICAgICAgPGlucHV0IHR5cGU9dGV4dCBuYW1lPSJjb21tZW50IiBk
aXJuYW1lPSJydGxBbmNlc3Rvci5kaXIiIHJlcXVpcmVkPgorICAgICAgICA8L2Rpdj4KKyAgICAg
ICAgPGlucHV0IHR5cGU9dGV4dCBuYW1lPSJhdXRvQW5jZXN0b3IiIGRpcm5hbWU9ImF1dG9BbmNl
c3Rvci5kaXIiIHZhbHVlPSLXqdec15XXnSI+CisgICAgICAgIDxwPjxidXR0b24gbmFtZT0ibW9k
ZSIgdHlwZT1zdWJtaXQgdmFsdWU9ImFkZCI+UG9zdCBDb21tZW50PC9idXR0b24+PC9wPgorICAg
IDwvZm9ybT4KK0hlbGxvCis8L2Rpdj4KKworPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8ZGl2
IGlkPSJhY3Rpb24iPgorPHNjcmlwdD4KK2lmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLm1hdGNo
KCdcXD8nKSkgeworICAgIHNob3VsZEJlVHJ1ZSgnZG9jdW1lbnQubG9jYXRpb24uc2VhcmNoLmlu
ZGV4T2YoInJ0bEFuY2VzdG9yLmRpcj1ydGwiKSAhPSAtMScpOworICAgIHNob3VsZEJlVHJ1ZSgn
ZG9jdW1lbnQubG9jYXRpb24uc2VhcmNoLmluZGV4T2YoImF1dG9BbmNlc3Rvci5kaXI9bHRyIikg
IT0gLTEnKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKworc3VjY2Vzc2Z1bGx5UGFyc2VkID0g
dHJ1ZTsKKzwvc2NyaXB0PgorPC9kaXY+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL3N1Ym1pdC1mb3JtLXdpdGgtZGlybmFtZS1hdHRyaWJ1dGUtd2l0aC1u
b25odG1sLWFuY2VzdG9yLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL3N1Ym1pdC1mb3JtLXdpdGgtZGlybmFtZS1hdHRyaWJ1dGUtd2l0aC1ub25odG1s
LWFuY2VzdG9yLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvc3VibWl0LWZvcm0td2l0aC1kaXJuYW1lLWF0dHJpYnV0ZS13aXRoLW5vbmh0bWwtYW5j
ZXN0b3ItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwIEBACitUZXN0IHRo
YXQgd2hlbiBkaXIgYXR0cmlidXRlIGlzIHNwZWNpZmllZCBmb3Igbm9uIGh0bWwgZWxlbWVudCwg
aXQgaXMgbm90IGNvbnNpZGVyZWQgZm9yIGRpcm5hbWUgYXR0cmlidXRlIHZhbHVlIGluIHN1Ym1p
c3Npb24gYm9keS4KKworCitQb3N0IENvbW1lbnQKKworUEFTUyBkb2N1bWVudC5sb2NhdGlvbi5z
ZWFyY2guaW5kZXhPZigibm9uSHRtbEFuY2VzdG9yLmRpcj1sdHIiKSAhPSAtMSBpcyB0cnVlCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zdWJtaXQtZm9ybS13aXRoLWRpcm5hbWUtYXR0cmlidXRl
LXdpdGgtbm9uaHRtbC1hbmNlc3Rvci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZm9ybXMvc3VibWl0LWZvcm0td2l0aC1kaXJuYW1lLWF0dHJpYnV0ZS13aXRoLW5vbmh0bWwt
YW5jZXN0b3IuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvc3Vi
bWl0LWZvcm0td2l0aC1kaXJuYW1lLWF0dHJpYnV0ZS13aXRoLW5vbmh0bWwtYW5jZXN0b3IuaHRt
bAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNiBAQAorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0
dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04
Ij4KKzwvaGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
PiA8L3NjcmlwdD4KKzxzY3JpcHQ+Cit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKK2Z1
bmN0aW9uIHRlc3QoKSB7CisgICAgZG9jdW1lbnQuZm9ybXMuZi5zdWJtaXQoKTsKK30KKzwvc2Ny
aXB0PgorPGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgorPHA+VGVzdCB0aGF0IHdoZW4gZGlyIGF0dHJp
YnV0ZSBpcyBzcGVjaWZpZWQgZm9yIG5vbiBodG1sIGVsZW1lbnQsIGl0IGlzIG5vdCBjb25zaWRl
cmVkIGZvciBkaXJuYW1lIGF0dHJpYnV0ZSB2YWx1ZSBpbiBzdWJtaXNzaW9uIGJvZHkuPC9wPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMDAlIiBoZWln
aHQ9IjEwMCUiIHZpZXdCb3g9IjAgMCA0MDAgNDAwIiBkaXI9InJ0bCI+CisgICAgPGRpdj4KKyAg
ICA8Zm9ybSBhY3Rpb249IiNhY3Rpb24iIG1ldGhvZD0iR0VUIiBuYW1lPSJmIj4KKyAgICAgICAg
PGlucHV0IHR5cGU9dGV4dCBuYW1lPSJub25IdG1sQW5jZXN0b3IiIGRpcm5hbWU9Im5vbkh0bWxB
bmNlc3Rvci5kaXIiPiAKKyAgICAgICAgPHA+PGJ1dHRvbiBuYW1lPSJtb2RlIiB0eXBlPXN1Ym1p
dCB2YWx1ZT0iYWRkIj5Qb3N0IENvbW1lbnQ8L2J1dHRvbj48L3A+CisgICAgPC9mb3JtPgorICAg
IDwvZGl2PgorPC9zdmc+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxkaXYgaWQ9ImFjdGlv
biI+Cis8c2NyaXB0PgoraWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYubWF0Y2goJ1xcPycpKSB7
CisgICAgc2hvdWxkQmVUcnVlKCdkb2N1bWVudC5sb2NhdGlvbi5zZWFyY2guaW5kZXhPZigibm9u
SHRtbEFuY2VzdG9yLmRpcj1sdHIiKSAhPSAtMScpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQor
CitzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2Rpdj4KKzxzY3JpcHQg
c3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvc3VibWl0LWZvcm0td2l0aC1k
aXJuYW1lLWF0dHJpYnV0ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9y
bXMvc3VibWl0LWZvcm0td2l0aC1kaXJuYW1lLWF0dHJpYnV0ZS5odG1sCShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zdWJtaXQtZm9ybS13aXRoLWRpcm5hbWUtYXR0cmli
dXRlLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDIgQEAKKzxodG1sPgorPGhlYWQ+Cis8
bWV0YSBodHRwLWVxdWl2PSJjb250ZW50LXR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNl
dD1VVEYtOCI+Cis8L2hlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj4gPC9zY3JpcHQ+Cis8c2NyaXB0Pgord2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVl
OworCitmdW5jdGlvbiB0ZXN0KCkgeworICAgIGRvY3VtZW50LmZvcm1zLmYuc3VibWl0KCk7Cit9
Cis8L3NjcmlwdD4KKzxib2R5IG9ubG9hZD0idGVzdCgpIj4KKzxwPlRlc3QgdGhhdCB3aGVuIGRp
cm5hbWUgYXR0cmlidXRlIGlzIHNwZWNpZmllZCB0aGVuIGl0IGlzIGFkZGVkIGluIHN1Ym1pc3Np
b24gYm9keS48L3A+CisKKzxmb3JtIGFjdGlvbj0iI2FjdGlvbiIgbmFtZT0iZiI+CisgICAgPHA+
PGxhYmVsPkNvbW1lbnQ6IDxpbnB1dCB0eXBlPXRleHQgbmFtZT0iY29tbWVudCIgZGlybmFtZT0i
Y29tbWVudC5kaXIiIHJlcXVpcmVkPjwvbGFiZWw+PC9wPgorICAgIDxwPjxsYWJlbD5XaXRoUlRM
RGlyOiA8dGV4dGFyZWEgbmFtZT0idHh0YXJlYSIgZGlyPSJydGwiIGRpcm5hbWU9InR4dGFyZWFS
VEwuZGlyIj48L3RleHRhcmVhPjwvbGFiZWw+PC9wPgorICAgIDxwPjxsYWJlbD5XaXRoTFRSRGly
OiA8dGV4dGFyZWEgbmFtZT0idHh0YXJlYTEiIGRpcj0ibHRyIiBkaXJuYW1lPSJ0eHRhcmVhTFRS
LmRpciI+PC90ZXh0YXJlYT48L2xhYmVsPjwvcD4KKyAgICA8cD48bGFiZWw+V2l0aEludmFsaWRE
aXI6IDx0ZXh0YXJlYSBuYW1lPSJ0eHRhcmVhMiIgZGlyPSJpbnZhbGlkIiBkaXJuYW1lPSJ0eHRh
cmVhSW52YWxpZC5kaXIiPjwvdGV4dGFyZWE+PC9sYWJlbD48L3A+CisgICAgPHA+PGxhYmVsPldp
dGhSVExWYWx1ZTogPGlucHV0IG5hbWU9ImlucHV0IiBkaXJuYW1lPSJpbnB1dFJUTHZhbHVlLmRp
ciIgdmFsdWU9ItmF2LHYrdio2YvYpyI+PC9sYWJlbD48L3A+CisgICAgPHA+PGJ1dHRvbiBuYW1l
PSJtb2RlIiB0eXBlPXN1Ym1pdCB2YWx1ZT0iYWRkIj5Qb3N0IENvbW1lbnQ8L2J1dHRvbj48L3A+
Cis8L2Zvcm0+CisKKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGRpdiBpZD0iYWN0aW9uIj4K
KzxzY3JpcHQ+CitpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5tYXRjaCgnXFw/JykpIHsKKyAg
ICBzaG91bGRCZVRydWUoJ2RvY3VtZW50LmxvY2F0aW9uLnNlYXJjaC5pbmRleE9mKCJjb21tZW50
LmRpcj1sdHIiKSAhPSAtMScpOworICAgIHNob3VsZEJlVHJ1ZSgnZG9jdW1lbnQubG9jYXRpb24u
c2VhcmNoLmluZGV4T2YoInR4dGFyZWFSVEwuZGlyPXJ0bCIpICE9IC0xJyk7CisgICAgc2hvdWxk
QmVUcnVlKCdkb2N1bWVudC5sb2NhdGlvbi5zZWFyY2guaW5kZXhPZigidHh0YXJlYUxUUi5kaXI9
bHRyIikgIT0gLTEnKTsKKyAgICBzaG91bGRCZVRydWUoJ2RvY3VtZW50LmxvY2F0aW9uLnNlYXJj
aC5pbmRleE9mKCJ0eHRhcmVhSW52YWxpZC5kaXI9bHRyIikgIT0gLTEnKTsKKyAgICBzaG91bGRC
ZVRydWUoJ2RvY3VtZW50LmxvY2F0aW9uLnNlYXJjaC5pbmRleE9mKCJpbnB1dFJUTHZhbHVlLmRp
cj1sdHIiKSAhPSAtMScpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCitzdWNjZXNzZnVsbHlQ
YXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2Rpdj4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>