<?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>80110</bug_id>
          
          <creation_ts>2012-03-01 23:46:27 -0800</creation_ts>
          <short_desc>[Forms] HTMLFieldSetElement.idl doesn&apos;t have elements attribute.</short_desc>
          <delta_ts>2012-05-28 20:57:38 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Forms</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://jsfiddle.net/2yYDD/</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>81854</dependson>
    
    <dependson>86602</dependson>
    
    <dependson>87371</dependson>
          <blocked>19264</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter>yosin</reporter>
          <assigned_to name="Rakesh">rakeshchaitan</assigned_to>
          <cc>abarth</cc>
    
    <cc>mkrp87</cc>
    
    <cc>ojan</cc>
    
    <cc>rakeshchaitan</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>569332</commentid>
    <comment_count>0</comment_count>
    <who name="">yosin</who>
    <bug_when>2012-03-01 23:46:27 -0800</bug_when>
    <thetext>See http://www.whatwg.org/specs/web-apps/current-work/multipage/forms.html#the-fieldset-element

elements attribute returns list of following elements as same as forms.elements:
 * button 
 * fieldset 
 * input 
 * keygen 
 * object 
 * output 
 * select 
 * textarea</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584041</commentid>
    <comment_count>1</comment_count>
    <who name="Rakesh">rakeshchaitan</who>
    <bug_when>2012-03-21 05:53:51 -0700</bug_when>
    <thetext>I am planning to take up this implementation. Few thoughts:

Presently HTMLFormCollection is tightly coupled with HTMLFormElement. So first step would be to decouple these.

Can we have a class like FormControlsContainer and make both HTMLFormElement and HTMLFieldSetElement derive from it?
We can have separate implementations for eg. of length() for Form and FieldSet.

As HTMLFieldSetElement is set of form controls, can we have list of elements by  traversing all the children and checking if each element is a form control? AFAIK each form control is associated with its form element if any. Is there any mechanism to associate a form control with FieldSet?

Please do let me know if you have suggestions/better approach.

Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584838</commentid>
    <comment_count>2</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-03-21 17:59:43 -0700</bug_when>
    <thetext>(In reply to comment #1)
Before implementing HTMLFieldSetElement::elements, we need to consider how to realize RadioNodeList [1].  HTMLFormControlsCollection needs to support it, but our HTMLFormElement::elements doesn&apos;t support it for now.

Can we add RadioNodeList support to HTMLFormCollection.*?  Can we add RadioNodeList support to HTMLCollection.*?


[1]: http://www.whatwg.org/specs/web-apps/current-work/multipage/common-dom-interfaces.html#radionodelist</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584990</commentid>
    <comment_count>3</comment_count>
    <who name="Rakesh">rakeshchaitan</who>
    <bug_when>2012-03-21 22:53:38 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (In reply to comment #1)

Thanks for replying.

&gt; Before implementing HTMLFieldSetElement::elements, we need to consider how to realize RadioNodeList [1].  HTMLFormControlsCollection needs to support it, but our HTMLFormElement::elements doesn&apos;t support it for now.
&gt; 
&gt; Can we add RadioNodeList support to HTMLFormCollection.*?  Can we add RadioNodeList support to HTMLCollection.*?

Yes surely, will check RadioNodeList and add support for that.

&gt; 
&gt; 
&gt; [1]: http://www.whatwg.org/specs/web-apps/current-work/multipage/common-dom-interfaces.html#radionodelist</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608628</commentid>
    <comment_count>4</comment_count>
    <who name="Rakesh">rakeshchaitan</who>
    <bug_when>2012-04-24 07:16:43 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Can we add RadioNodeList support to HTMLFormCollection.*?  Can we add RadioNodeList support to HTMLCollection.*?

As RadioNodeList support has landed, can we now think of refactoring HTMLFormCollection to be independent of HTMLFormElement?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>630199</commentid>
    <comment_count>5</comment_count>
      <attachid>143262</attachid>
    <who name="Rakesh">rakeshchaitan</who>
    <bug_when>2012-05-22 03:56:43 -0700</bug_when>
    <thetext>Created attachment 143262
proposed patch

Added support for elements attribute in HTMLFieldSetElement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>631185</commentid>
    <comment_count>6</comment_count>
      <attachid>143262</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-05-22 21:43:12 -0700</bug_when>
    <thetext>Comment on attachment 143262
proposed patch

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

&gt; Source/WebCore/html/HTMLFieldSetElement.cpp:96
&gt; +    uint64_t docversion = document()-&gt;domTreeVersion();

should be docVersion, documentVersion, or domTreeVersion.

&gt; Source/WebCore/html/HTMLFieldSetElement.cpp:105
&gt; +    for (Element* node = firstElementChild(); node; node = node-&gt;nextElementSibling()) {

We need a test to confirm that fieldset.elements contains listed-elements in deeper places like
  &lt;fieldset&gt;
    &lt;div&gt;
       &lt;input&gt;
    &lt;/div&gt;
  &lt;/fieldset&gt;

&gt; Source/WebCore/html/HTMLFieldSetElement.cpp:117
&gt; +        if (node-&gt;hasTagName(imgTag)) {
&gt; +            m_imageElements.append(static_cast&lt;HTMLImageElement*&gt;(node));
&gt; +            continue;
&gt; +        }

Why do you need to collect img elements?

&gt; Source/WebCore/html/HTMLFieldSetElement.cpp:129
&gt; +const Vector&lt;HTMLImageElement*&gt;&amp; HTMLFieldSetElement::imageElements() const

ditto.

&gt; Source/WebCore/html/HTMLFieldSetElement.h:45
&gt; +    const Vector&lt;HTMLImageElement*&gt;&amp; imageElements() const;

ditto.

&gt; Source/WebCore/html/HTMLFieldSetElement.h:65
&gt; +    mutable Vector&lt;HTMLImageElement*&gt; m_imageElements;

ditto.

&gt; Source/WebCore/html/HTMLFieldSetElement.idl:29
&gt;  
&gt; +        readonly attribute HTMLCollection elements;
&gt; +
&gt;          readonly attribute DOMString type;

Please put &apos;elements&apos; after &apos;type&apos; in order to follow the IDL in the specification.

&gt; Source/WebCore/html/RadioNodeList.cpp:87
&gt; +    return equalIgnoringCase(testElement-&gt;getIdAttribute(), m_name) || equalIgnoringCase(testElement-&gt;getNameAttribute(), m_name);

This is not a new code, but equalIgnoringCase() looks wrong.  ID matching and name matching should be case-sensitive.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>631333</commentid>
    <comment_count>7</comment_count>
    <who name="Rakesh">rakeshchaitan</who>
    <bug_when>2012-05-23 00:38:17 -0700</bug_when>
    <thetext>(In reply to comment #6)
Thanks for reviewing this patch.

&gt; should be docVersion, documentVersion, or domTreeVersion.
I missed that, will do it.

&gt; We need a test to confirm that fieldset.elements contains listed-elements in deeper places like
&gt;   &lt;fieldset&gt;
&gt;     &lt;div&gt;
&gt;        &lt;input&gt;
&gt;     &lt;/div&gt;
&gt;   &lt;/fieldset&gt;
Will add the test, I think we need to traverse all children, only sibling traversing is not enough?

&gt; 
&gt; Why do you need to collect img elements?
Code in FormCollection uses image elements.
http://trac.webkit.org/browser/trunk/Source/WebCore/html/HTMLFormCollection.cpp#L137

&gt; Please put &apos;elements&apos; after &apos;type&apos; in order to follow the IDL in the specification.
Will do this change.

&gt; This is not a new code, but equalIgnoringCase() looks wrong.  ID matching and name matching should be case-sensitive.
Yes will make it case sensitive.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>631351</commentid>
    <comment_count>8</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-05-23 00:52:54 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; &gt; Why do you need to collect img elements?
&gt; Code in FormCollection uses image elements.
&gt; http://trac.webkit.org/browser/trunk/Source/WebCore/html/HTMLFormCollection.cpp#L137

It seems the specification doesn&apos;t ask to support img elements in HTMLFieldSetElement::elements.  How other browsers work for img elemnents in a form/fieldset element?


&gt; &gt; This is not a new code, but equalIgnoringCase() looks wrong.  ID matching and name matching should be case-sensitive.
&gt; Yes will make it case sensitive.

It&apos;s better to make another bug and patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>631423</commentid>
    <comment_count>9</comment_count>
    <who name="Rakesh">rakeshchaitan</who>
    <bug_when>2012-05-23 02:31:33 -0700</bug_when>
    <thetext>(In reply to comment #8)
http://trac.webkit.org/browser/trunk/Source/WebCore/html/HTMLFormCollection.cpp#L137
&gt; 
&gt; It seems the specification doesn&apos;t ask to support img elements in HTMLFieldSetElement::elements.  How other browsers work for img elemnents in a form/fieldset element?
&gt; 
Specs says excluding image buttons(http://www.whatwg.org/specs/web-apps/current-work/multipage/forms.html#the-form-element). I am not sure if that means image elements also. In any case the form.elements behavior is inconsistent for image elements in webkit: 
1. form.elements[some number] does not give image element.
2. form.elements[&quot;imageElem&quot;] or form.elements.namedItem(&quot;imageElem&quot;) gives the image element.
3. form.length does not include the image elements count.

Other browsers, firefox and opera do not consider image elements in form.elements.

&gt; It&apos;s better to make another bug and patch.
ok</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>631438</commentid>
    <comment_count>10</comment_count>
    <who name="Rakesh">rakeshchaitan</who>
    <bug_when>2012-05-23 02:57:06 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)

Also listed elements(http://www.whatwg.org/specs/web-apps/current-work/multipage/forms.html#category-listed) does not have image element specified, Do you think image elements support needs be removed from FormCollection?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>631456</commentid>
    <comment_count>11</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-05-23 03:28:52 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Also listed elements(http://www.whatwg.org/specs/web-apps/current-work/multipage/forms.html#category-listed) does not have image element specified, Do you think image elements support needs be removed from FormCollection?

We might want to remove the img element support in the future.  But it&apos;s not the scope of this bug, and we don&apos;t need to hurry.

As for HTMLFieldSetElement::elements, we don&apos;t need to support img elements at all.  So HTMLFormCollection::getNamedFormItem() may have

 if (base()-&gt;hasTagName(fieldsetTag))
     return 0;

before getting imageElementsArray?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>631522</commentid>
    <comment_count>12</comment_count>
      <attachid>143537</attachid>
    <who name="Rakesh">rakeshchaitan</who>
    <bug_when>2012-05-23 05:02:03 -0700</bug_when>
    <thetext>Created attachment 143537
proposed patch

Modified as per comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>632520</commentid>
    <comment_count>13</comment_count>
      <attachid>143537</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-05-24 01:50:46 -0700</bug_when>
    <thetext>Comment on attachment 143537
proposed patch

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

&gt; Source/WebCore/html/HTMLFieldSetElement.h:64
&gt; +    OwnPtr&lt;HTMLFormCollection&gt; m_elementsCollection;
&gt; +
&gt; +    mutable Vector&lt;FormAssociatedElement*&gt; m_associatedElements;
&gt; +
&gt; +    mutable uint64_t m_documentVersion;

nit: these blank lines are not needed.

m_documentVersion should be renamed to m_documentVersionForAssociatedElements, or we should add a comment about the purpose.

&gt; Source/WebCore/html/RadioNodeList.cpp:87
&gt; +    return equalIgnoringCase(testElement-&gt;getIdAttribute(), m_name) || equalIgnoringCase(testElement-&gt;getNameAttribute(), m_name);

Please add a FIXME comment about the incorrectness, or fix the problem before this bug.

&gt; Source/WebCore/html/RadioNodeList.cpp:95
&gt;  {
&gt; +    if (testElement-&gt;hasTagName(objectTag))
&gt; +        return checkIfNameOrIdMatches(testElement);
&gt; +
&gt;      if (!testElement-&gt;isFormControlElement())

This change affects HTMLFormElement::elements too, right?
So, we should add &lt;object&gt; support before this bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>632624</commentid>
    <comment_count>14</comment_count>
    <who name="Rakesh">rakeshchaitan</who>
    <bug_when>2012-05-24 04:47:41 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; Please add a FIXME comment about the incorrectness, or fix the problem before this bug.

Created https://bugs.webkit.org/show_bug.cgi?id=87369 for this problem.

&gt; This change affects HTMLFormElement::elements too, right?
&gt; So, we should add &lt;object&gt; support before this bug.

Created https://bugs.webkit.org/show_bug.cgi?id=87371 for this issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>633807</commentid>
    <comment_count>15</comment_count>
      <attachid>144037</attachid>
    <who name="Rakesh">rakeshchaitan</who>
    <bug_when>2012-05-25 03:58:33 -0700</bug_when>
    <thetext>Created attachment 144037
patch

Updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>633868</commentid>
    <comment_count>16</comment_count>
      <attachid>144037</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-05-25 06:08:12 -0700</bug_when>
    <thetext>Comment on attachment 144037
patch

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

r- because of test coverage

&gt; LayoutTests/fast/forms/fieldset/fieldset-elements.html:86
&gt; +

Please test:
  owner.parentNode.removeChild(owner);
  then, adding/removing some form controls to/from &apos;owner&apos; and owner.elements is correctly updated.

Also, we need a test to check if changing input type from/to &apos;image&apos; updates HTMLFieldSetElement::elements correctly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635358</commentid>
    <comment_count>17</comment_count>
      <attachid>144387</attachid>
    <who name="Rakesh">rakeshchaitan</who>
    <bug_when>2012-05-28 12:29:34 -0700</bug_when>
    <thetext>Created attachment 144387
updated patch

Added more test converage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635524</commentid>
    <comment_count>18</comment_count>
      <attachid>144387</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-05-28 19:58:46 -0700</bug_when>
    <thetext>Comment on attachment 144387
updated patch

Looks good.  Thank you!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635544</commentid>
    <comment_count>19</comment_count>
      <attachid>144387</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-28 20:57:32 -0700</bug_when>
    <thetext>Comment on attachment 144387
updated patch

Clearing flags on attachment: 144387

Committed r118720: &lt;http://trac.webkit.org/changeset/118720&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635545</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-28 20:57:38 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>143262</attachid>
            <date>2012-05-22 03:56:43 -0700</date>
            <delta_ts>2012-05-23 05:01:42 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>bug-80110-20120522162359.patch</filename>
            <type>text/plain</type>
            <size>27714</size>
            <attacher name="Rakesh">rakeshchaitan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE3OTM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjQxOGVhNWU5ZGUzNWZj
MzViN2RmOGRjNTkzM2NiMTdkODBkZTQ3Yi4uZTQ0ZjQ1ZmIwOTJmYmM1ZGYzYzZlOTM0YmNmZWJj
ZWY0OTc3ZjcwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDEyLTA1LTIyICBSYWtl
c2ggS04gIDxyYWtlc2gua25AbW90b3JvbGEuY29tPgorCisgICAgICAgIFtGb3Jtc10gSFRNTEZp
ZWxkU2V0RWxlbWVudC5pZGwgZG9lc24ndCBoYXZlIGVsZW1lbnRzIGF0dHJpYnV0ZS4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwMTEwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50ZWQgZWxl
bWVudHMgYXR0cmlidXRlIGZvciBIVE1MRmllbGRTZXRFbGVtZW50LiBUaGlzIGlzIHNwZWMnZWQg
YXQKKyAgICAgICAgaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQt
d29yay9tdWx0aXBhZ2UvZm9ybXMuaHRtbCNkb20tZmllbGRzZXQtZWxlbWVudHMKKworICAgICAg
ICBUZXN0czogZmFzdC9mb3Jtcy9maWVsZHNldC9maWVsZHNldC1lbGVtZW50cy5odG1sCisgICAg
ICAgICAgICAgICBmYXN0L2Zvcm1zL2ZpZWxkc2V0L2ZpZWxkc2V0LWZvcm0tY29sbGVjdGlvbi1y
YWRpb25vZGUtbGlzdC5odG1sCisKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpOb2RlOjpyYWRpb05vZGVMaXN0KToKKyAgICAgICAgRXh0ZW5kZWQgQVNTRVJUIHRv
IGFzc2VydCBpZiBub3QgSFRNTEZpZWxkU2V0RWxlbWVudCBvciBIVE1MRm9ybUVsZW1lbnQuCisg
ICAgICAgICogaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxGaWVsZFNldEVsZW1lbnQ6OmVsZW1lbnRzKToKKyAgICAgICAgRWxlbWVudHMgYXR0cmli
dXRlIGltcGxlbWVudGF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZpZWxkU2V0RWxlbWVu
dDo6cmVmcmVzaEVsZW1lbnRzSWZOZWVkZWQpOgorICAgICAgICBVcGRhdGUgdGhlIGZvcm1jb250
cm9sIGVsZW1lbnRzIGFuZCBpbWFnZSBlbGVtZW50cyBjb2xsZWN0aW9ucyBpZiBuZWVkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpIVE1MRmllbGRTZXRFbGVtZW50Ojphc3NvY2lhdGVkRWxlbWVudHMp
OgorICAgICAgICBGb3JtQ29udHJvbCBlbGVtZW50cyBjb2xsZWN0aW9uIGFjY2Vzc29yLgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTEZpZWxkU2V0RWxlbWVudDo6aW1hZ2VFbGVtZW50cyk6CisgICAg
ICAgIEltYWdlIGVsZW1lbnRzIGNvbGxlY3Rpb24gYWNjZXNzb3IuCisgICAgICAgIChXZWJDb3Jl
OjpIVE1MRmllbGRTZXRFbGVtZW50OjpsZW5ndGgpOgorICAgICAgICBOdW1iZXIgb2YgZWxlbWVu
dHMgaW4gdGhlIGZpZWxkc2V0IGdyb3VwLgorICAgICAgICAqIGh0bWwvSFRNTEZpZWxkU2V0RWxl
bWVudC5oOgorICAgICAgICBBZGRlZCBlbGVtZW50cyBjb2xsZWN0aW9uIG1lbWJlciBhbmQgZm9y
bSBjb250cm9sIGFuZCBpbWFnZSBlbGVtZW50cyBjb2xsZWN0aW9uIG1lbWJlcnMuCisgICAgICAg
ICogaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmlkbDoKKyAgICAgICAgQWRkZWQgZWxlbWVudHMg
YXR0cmlidXRlLgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1Db2xsZWN0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29sbGVjdGlvbjo6Zm9ybUNvbnRyb2xFbGVtZW50cyk6Cisg
ICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIEhUTUxGaWVsZFNldEVsZW1lbnQsIGJhc2VkIG9uIGJh
c2UgZWxlbWVudCB0eXBlIGdldHMgaXRzIGFzc29jaWF0ZWQgZWxlbWVudHMuCisgICAgICAgIChX
ZWJDb3JlOjpIVE1MRm9ybUNvbGxlY3Rpb246OmZvcm1JbWFnZUVsZW1lbnRzKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbGxlY3Rpb246Om51bWJlck9mRm9ybUNvbnRyb2xF
bGVtZW50cyk6IERpdHRvLgorICAgICAgICAqIGh0bWwvUmFkaW9Ob2RlTGlzdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSYWRpb05vZGVMaXN0OjpSYWRpb05vZGVMaXN0KToKKyAgICAgICAgRHlu
YW1pY1N1YlRyZWUgcm9vdCBlbGVtZW50IGlzIGRlY2lkZWQgYmFzZWQgb24gdGhlIHR5cGUgd2hl
dGhlciBiYXNlIGVsZW1lbnQgaXMgZm9ybSBvciBmaWVsZHNldCBlbGVtZW50LgorICAgICAgICBS
ZW5hbWVkIG1fZm9ybUVsZW1lbnQgdG8gbV9iYXNlRWxlbWVudC4KKyAgICAgICAgKFdlYkNvcmU6
OlJhZGlvTm9kZUxpc3Q6On5SYWRpb05vZGVMaXN0KToKKyAgICAgICAgUmVuYW1lZCBtX2Zvcm1F
bGVtZW50IHRvIG1fYmFzZUVsZW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpSYWRpb05vZGVMaXN0
OjpjaGVja0lmTmFtZU9ySWRNYXRjaGVzKToKKyAgICAgICAgQ29tcGFyZXMgaWYgdGVzdCBlbGVt
ZW50J3MgbmFtZS9pZCBtYXRjaGVzIHRoYXQgb2YgdGhlIFJhZGlvTm9kZUxpc3QgbmFtZS4gQWxz
byBhZGRlZCBvYmplY3QgZWxlbWVudAorICAgICAgICBzdXBwb3J0LCBvYmplY3QgZWxlbWVudCB3
aWxsIGFsc28gYmUgbGlzdGVkIGluIFJhZGlvTm9kZUxpc3QgaWYgbmFtZS9pZCBtYXRjaGVzLgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpSYWRpb05vZGVMaXN0Ojpub2Rl
TWF0Y2hlcyk6CisgICAgICAgIEZvcm0gZWxlbWVudCBzcGVjaWZpYyBjaGFuZ2VzIG1vdmVkIHVu
ZGVyIGZvcm0gZWxlbWVudCBjaGVjay4KKyAgICAgICAgKiBodG1sL1JhZGlvTm9kZUxpc3QuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlJhZGlvTm9kZUxpc3Q6OmNyZWF0ZSk6CisgICAgICAgIChSYWRp
b05vZGVMaXN0KToKKyAgICAgICAgUmVuYW1lZCBtX2Zvcm1FbGVtZW50IHRvIG1fYmFzZUVsZW1l
bnQuCisKIDIwMTItMDUtMjIgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgV2ViIEluc3BlY3Rvcjogc2hvdyBtb3JlIGJ1dHRvbiBub2RlIHNob3VsZCBo
YXZlIGhlaWdodCBtdWx0aXBsZSBvZiByb3cgaGVpZ2h0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggOTEw
OGYzNjMyMzUyZjZiZTQ1OThkM2U3YmFlNzEzMzFkZmFkZDc0YS4uZjNjM2Y2Mzk3MzhmNjBhMmY1
ZjdjNzAwMWNkMTg2ODUzZmQ2YjFkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtMjkyOSw3ICsyOTI5
LDcgQEAgdm9pZCBOb2RlUmFyZURhdGE6OmNsZWFyQ2hpbGROb2RlTGlzdENhY2hlKCkKIAogUGFz
c1JlZlB0cjxSYWRpb05vZGVMaXN0PiBOb2RlOjpyYWRpb05vZGVMaXN0KGNvbnN0IEF0b21pY1N0
cmluZyYgbmFtZSkKIHsKLSAgICBBU1NFUlQoaGFzVGFnTmFtZShmb3JtVGFnKSk7CisgICAgQVNT
RVJUKGhhc1RhZ05hbWUoZm9ybVRhZykgfHwgaGFzVGFnTmFtZShmaWVsZHNldFRhZykpOwogCiAg
ICAgTm9kZUxpc3RzTm9kZURhdGEqIG5vZGVMaXN0cyA9IGVuc3VyZVJhcmVEYXRhKCktPmVuc3Vy
ZU5vZGVMaXN0cyh0aGlzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RmllbGRTZXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxl
bWVudC5jcHAKaW5kZXggOGEyNDBjMDI0OWYzNGE3OGJlOTAyOTA5OTcyZTFlMGJkYjMwMDk3OC4u
ZTlhZjcyYmI0MTFhYzBhMzM5NzhlODc3OGE0ODcwZjllNmZlODBlZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwCkBAIC0yNCw5ICsyNCwxMiBAQAogCiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSFRNTEZpZWxkU2V0RWxlbWVudC5oIgotI2lu
Y2x1ZGUgIkhUTUxMZWdlbmRFbGVtZW50LmgiCiAKKyNpbmNsdWRlICJIVE1MRm9ybUNvbGxlY3Rp
b24uaCIKKyNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTExlZ2Vu
ZEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJIVE1MT2JqZWN0
RWxlbWVudC5oIgogI2luY2x1ZGUgIlJlbmRlckZpZWxkc2V0LmgiCiAjaW5jbHVkZSA8d3RmL1N0
ZExpYkV4dHJhcy5oPgogCkBAIC04MSw0ICs4NCw1OCBAQCBIVE1MTGVnZW5kRWxlbWVudCogSFRN
TEZpZWxkU2V0RWxlbWVudDo6bGVnZW5kKCkgY29uc3QKICAgICByZXR1cm4gMDsKIH0KIAorSFRN
TENvbGxlY3Rpb24qIEhUTUxGaWVsZFNldEVsZW1lbnQ6OmVsZW1lbnRzKCkKK3sKKyAgICBpZiAo
IW1fZWxlbWVudHNDb2xsZWN0aW9uKQorICAgICAgICBtX2VsZW1lbnRzQ29sbGVjdGlvbiA9IEhU
TUxGb3JtQ29sbGVjdGlvbjo6Y3JlYXRlKHRoaXMpOworICAgIHJldHVybiBtX2VsZW1lbnRzQ29s
bGVjdGlvbi5nZXQoKTsKK30KKwordm9pZCBIVE1MRmllbGRTZXRFbGVtZW50OjpyZWZyZXNoRWxl
bWVudHNJZk5lZWRlZCgpIGNvbnN0Cit7CisgICAgdWludDY0X3QgZG9jdmVyc2lvbiA9IGRvY3Vt
ZW50KCktPmRvbVRyZWVWZXJzaW9uKCk7CisgICAgaWYgKG1fZG9jdW1lbnRWZXJzaW9uID09IGRv
Y3ZlcnNpb24pCisgICAgICAgIHJldHVybjsKKworICAgIG1fZG9jdW1lbnRWZXJzaW9uID0gZG9j
dmVyc2lvbjsKKworICAgIG1faW1hZ2VFbGVtZW50cy5jbGVhcigpOworICAgIG1fYXNzb2NpYXRl
ZEVsZW1lbnRzLmNsZWFyKCk7CisKKyAgICBmb3IgKEVsZW1lbnQqIG5vZGUgPSBmaXJzdEVsZW1l
bnRDaGlsZCgpOyBub2RlOyBub2RlID0gbm9kZS0+bmV4dEVsZW1lbnRTaWJsaW5nKCkpIHsKKyAg
ICAgICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUob2JqZWN0VGFnKSkgeworICAgICAgICAgICAgbV9h
c3NvY2lhdGVkRWxlbWVudHMuYXBwZW5kKHN0YXRpY19jYXN0PEhUTUxPYmplY3RFbGVtZW50Kj4o
bm9kZSkpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAo
IW5vZGUtPmlzRm9ybUNvbnRyb2xFbGVtZW50KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKwor
ICAgICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZShpbWdUYWcpKSB7CisgICAgICAgICAgICBtX2lt
YWdlRWxlbWVudHMuYXBwZW5kKHN0YXRpY19jYXN0PEhUTUxJbWFnZUVsZW1lbnQqPihub2RlKSk7
CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIG1fYXNzb2NpYXRl
ZEVsZW1lbnRzLmFwcGVuZChzdGF0aWNfY2FzdDxIVE1MRm9ybUNvbnRyb2xFbGVtZW50Kj4obm9k
ZSkpOworICAgIH0KK30KKworY29uc3QgVmVjdG9yPEZvcm1Bc3NvY2lhdGVkRWxlbWVudCo+JiBI
VE1MRmllbGRTZXRFbGVtZW50Ojphc3NvY2lhdGVkRWxlbWVudHMoKSBjb25zdAoreworICAgIHJl
ZnJlc2hFbGVtZW50c0lmTmVlZGVkKCk7CisgICAgcmV0dXJuIG1fYXNzb2NpYXRlZEVsZW1lbnRz
OworfQorCitjb25zdCBWZWN0b3I8SFRNTEltYWdlRWxlbWVudCo+JiBIVE1MRmllbGRTZXRFbGVt
ZW50OjppbWFnZUVsZW1lbnRzKCkgY29uc3QKK3sKKyAgICByZWZyZXNoRWxlbWVudHNJZk5lZWRl
ZCgpOworICAgIHJldHVybiBtX2ltYWdlRWxlbWVudHM7Cit9CisKK3Vuc2lnbmVkIEhUTUxGaWVs
ZFNldEVsZW1lbnQ6Omxlbmd0aCgpIGNvbnN0Cit7CisgICAgcmVmcmVzaEVsZW1lbnRzSWZOZWVk
ZWQoKTsKKyAgICByZXR1cm4gbV9hc3NvY2lhdGVkRWxlbWVudHMuc2l6ZSgpOworfQorCiB9IC8v
IG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRmllbGRTZXRF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuaAppbmRl
eCA5ZTkzNTk5ZmFiMGY0NDdmMTk2ZjBlNTVlOWFhNDI3OWM1MWIwNzc0Li5kMDcwYTUyNjdiZWM1
MTNiMTk5MDFlZDZjY2IxNTYwZDU5NTlhMGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
aWVsZFNldEVsZW1lbnQuaApAQCAtMjUsMTQgKzI1LDI2IEBACiAjZGVmaW5lIEhUTUxGaWVsZFNl
dEVsZW1lbnRfaAogCiAjaW5jbHVkZSAiSFRNTEZvcm1Db250cm9sRWxlbWVudC5oIgorI2luY2x1
ZGUgPHd0Zi9Pd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBGb3JtQXNz
b2NpYXRlZEVsZW1lbnQ7CitjbGFzcyBIVE1MQ29sbGVjdGlvbjsKK2NsYXNzIEhUTUxGb3JtQ29s
bGVjdGlvbjsKK2NsYXNzIEhUTUxJbWFnZUVsZW1lbnQ7CisKIGNsYXNzIEhUTUxGaWVsZFNldEVs
ZW1lbnQgOiBwdWJsaWMgSFRNTEZvcm1Db250cm9sRWxlbWVudCB7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8SFRNTEZpZWxkU2V0RWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBEb2N1bWVudCosIEhUTUxGb3JtRWxlbWVudCopOwogICAgIEhUTUxMZWdlbmRFbGVt
ZW50KiBsZWdlbmQoKSBjb25zdDsKIAorICAgIEhUTUxDb2xsZWN0aW9uKiBlbGVtZW50cygpOwor
CisgICAgY29uc3QgVmVjdG9yPEZvcm1Bc3NvY2lhdGVkRWxlbWVudCo+JiBhc3NvY2lhdGVkRWxl
bWVudHMoKSBjb25zdDsKKyAgICBjb25zdCBWZWN0b3I8SFRNTEltYWdlRWxlbWVudCo+JiBpbWFn
ZUVsZW1lbnRzKCkgY29uc3Q7CisgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7CisKIHByb3Rl
Y3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZWRBdHRyaWJ1dGVDaGFuZ2VkKCkgT1ZFUlJJ
REU7CiAKQEAgLTQ0LDYgKzU2LDE1IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBSZW5kZXJPYmpl
Y3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKICAgICB2aXJ0
dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkgY29uc3Q7CiAgICAgdmly
dHVhbCBib29sIHJlY2FsY1dpbGxWYWxpZGF0ZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisK
KyAgICB2b2lkIHJlZnJlc2hFbGVtZW50c0lmTmVlZGVkKCkgY29uc3Q7CisKKyAgICBPd25QdHI8
SFRNTEZvcm1Db2xsZWN0aW9uPiBtX2VsZW1lbnRzQ29sbGVjdGlvbjsKKworICAgIG11dGFibGUg
VmVjdG9yPEZvcm1Bc3NvY2lhdGVkRWxlbWVudCo+IG1fYXNzb2NpYXRlZEVsZW1lbnRzOworICAg
IG11dGFibGUgVmVjdG9yPEhUTUxJbWFnZUVsZW1lbnQqPiBtX2ltYWdlRWxlbWVudHM7CisKKyAg
ICBtdXRhYmxlIHVpbnQ2NF90IG1fZG9jdW1lbnRWZXJzaW9uOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuaWRsCmluZGV4IDYw
MDZhZDcwNDk5NmJkODUwMjc1Y2I4YzMyMWUxNDJhNzZmMmY0MTUuLmJjZjM1MjQ2MjQ0NjVlZTdk
MmJjNzk3Y2JhMDg1NzRjNzUxZGE0MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEZpZWxkU2V0RWxlbWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRmll
bGRTZXRFbGVtZW50LmlkbApAQCAtMjQsNiArMjQsOCBAQCBtb2R1bGUgaHRtbCB7CiAgICAgICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBIVE1MRm9ybUVsZW1lbnQgZm9ybTsKICAgICAgICAgYXR0cmli
dXRlIFtSZWZsZWN0XSBET01TdHJpbmcgbmFtZTsKIAorICAgICAgICByZWFkb25seSBhdHRyaWJ1
dGUgSFRNTENvbGxlY3Rpb24gZWxlbWVudHM7CisKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IERPTVN0cmluZyB0eXBlOwogCiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuICAg
ICAgICAgd2lsbFZhbGlkYXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Rm9ybUNvbGxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbGxlY3Rp
b24uY3BwCmluZGV4IGM1MWZhZTRhNThiNmQwOGVjNmZhY2FhODEzYmU5ODFmYzNlZDEwZmIuLmRk
ZGM3NDk2MGRlMTliOTZmZTkyMmNkNjg4ZjBlMDA0YWQ3ZTc4OTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db2xsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGb3JtQ29sbGVjdGlvbi5jcHAKQEAgLTIzLDYgKzIzLDcgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJIVE1MRm9ybUNvbGxlY3Rpb24uaCIKIAorI2luY2x1ZGUg
IkhUTUxGaWVsZFNldEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MRm9ybUNvbnRyb2xFbGVtZW50
LmgiCiAjaW5jbHVkZSAiSFRNTEZvcm1FbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEltYWdlRWxl
bWVudC5oIgpAQCAtNTMsMjIgKzU0LDI4IEBAIEhUTUxGb3JtQ29sbGVjdGlvbjo6fkhUTUxGb3Jt
Q29sbGVjdGlvbigpCiBjb25zdCBWZWN0b3I8Rm9ybUFzc29jaWF0ZWRFbGVtZW50Kj4mIEhUTUxG
b3JtQ29sbGVjdGlvbjo6Zm9ybUNvbnRyb2xFbGVtZW50cygpIGNvbnN0CiB7CiAgICAgQVNTRVJU
KGJhc2UoKSk7Ci0gICAgQVNTRVJUKGJhc2UoKS0+aGFzVGFnTmFtZShmb3JtVGFnKSk7Ci0gICAg
cmV0dXJuIHN0YXRpY19jYXN0PEhUTUxGb3JtRWxlbWVudCo+KGJhc2UoKSktPmFzc29jaWF0ZWRF
bGVtZW50cygpOworICAgIEFTU0VSVChiYXNlKCktPmhhc1RhZ05hbWUoZm9ybVRhZykgfHwgYmFz
ZSgpLT5oYXNUYWdOYW1lKGZpZWxkc2V0VGFnKSk7CisgICAgaWYgKGJhc2UoKS0+aGFzVGFnTmFt
ZShmb3JtVGFnKSkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxGb3JtRWxlbWVudCo+
KGJhc2UoKSktPmFzc29jaWF0ZWRFbGVtZW50cygpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxI
VE1MRmllbGRTZXRFbGVtZW50Kj4oYmFzZSgpKS0+YXNzb2NpYXRlZEVsZW1lbnRzKCk7CiB9CiAK
IGNvbnN0IFZlY3RvcjxIVE1MSW1hZ2VFbGVtZW50Kj4mIEhUTUxGb3JtQ29sbGVjdGlvbjo6Zm9y
bUltYWdlRWxlbWVudHMoKSBjb25zdAogewogICAgIEFTU0VSVChiYXNlKCkpOwotICAgIEFTU0VS
VChiYXNlKCktPmhhc1RhZ05hbWUoZm9ybVRhZykpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxI
VE1MRm9ybUVsZW1lbnQqPihiYXNlKCkpLT5pbWFnZUVsZW1lbnRzKCk7CisgICAgQVNTRVJUKGJh
c2UoKS0+aGFzVGFnTmFtZShmb3JtVGFnKSB8fCBiYXNlKCktPmhhc1RhZ05hbWUoZmllbGRzZXRU
YWcpKTsKKyAgICBpZiAoYmFzZSgpLT5oYXNUYWdOYW1lKGZvcm1UYWcpKQorICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8SFRNTEZvcm1FbGVtZW50Kj4oYmFzZSgpKS0+aW1hZ2VFbGVtZW50cygp
OworICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MRmllbGRTZXRFbGVtZW50Kj4oYmFzZSgpKS0+
aW1hZ2VFbGVtZW50cygpOwogfQogCiB1bnNpZ25lZCBIVE1MRm9ybUNvbGxlY3Rpb246Om51bWJl
ck9mRm9ybUNvbnRyb2xFbGVtZW50cygpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGJhc2UoKSk7Ci0g
ICAgQVNTRVJUKGJhc2UoKS0+aGFzVGFnTmFtZShmb3JtVGFnKSk7Ci0gICAgcmV0dXJuIHN0YXRp
Y19jYXN0PEhUTUxGb3JtRWxlbWVudCo+KGJhc2UoKSktPmxlbmd0aCgpOworICAgIEFTU0VSVChi
YXNlKCktPmhhc1RhZ05hbWUoZm9ybVRhZykgfHwgYmFzZSgpLT5oYXNUYWdOYW1lKGZpZWxkc2V0
VGFnKSk7CisgICAgaWYgKGJhc2UoKS0+aGFzVGFnTmFtZShmb3JtVGFnKSkKKyAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PEhUTUxGb3JtRWxlbWVudCo+KGJhc2UoKSktPmxlbmd0aCgpOworICAg
IHJldHVybiBzdGF0aWNfY2FzdDxIVE1MRmllbGRTZXRFbGVtZW50Kj4oYmFzZSgpKS0+bGVuZ3Ro
KCk7CiB9CiAKIHVuc2lnbmVkIEhUTUxGb3JtQ29sbGVjdGlvbjo6Y2FsY0xlbmd0aCgpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhZGlvTm9kZUxpc3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9SYWRpb05vZGVMaXN0LmNwcAppbmRleCBiNzJhM2Q0MmM5YWNlNWM4
OTFlNmM3OTQzMGQ0ZGE1NzNkZjJmNWE5Li5mYjRmMTk4YWZmMmM5YjMwMmMxMDU2ZDg3MDU5ZGFi
NjcxM2IyNTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhZGlvTm9kZUxpc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFkaW9Ob2RlTGlzdC5jcHAKQEAgLTM1LDE4
ICszNSwxOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFt
ZXM7CiAKLVJhZGlvTm9kZUxpc3Q6OlJhZGlvTm9kZUxpc3QoY29uc3QgQXRvbWljU3RyaW5nJiBu
YW1lLCBFbGVtZW50KiBmb3JtRWxlbWVudCkKLSAgICA6IER5bmFtaWNTdWJ0cmVlTm9kZUxpc3Qo
Zm9ybUVsZW1lbnQtPmRvY3VtZW50KCkpCitSYWRpb05vZGVMaXN0OjpSYWRpb05vZGVMaXN0KGNv
bnN0IEF0b21pY1N0cmluZyYgbmFtZSwgRWxlbWVudCogYmFzZUVsZW1lbnQpCisgICAgOiBEeW5h
bWljU3VidHJlZU5vZGVMaXN0KGJhc2VFbGVtZW50LT5oYXNUYWdOYW1lKGZvcm1UYWcpID8gc3Rh
dGljX2Nhc3Q8Tm9kZSo+KGJhc2VFbGVtZW50LT5kb2N1bWVudCgpKSA6IGJhc2VFbGVtZW50KQog
ICAgICwgbV9uYW1lKG5hbWUpCi0gICAgLCBtX2Zvcm1FbGVtZW50KGZvcm1FbGVtZW50KQorICAg
ICwgbV9iYXNlRWxlbWVudChiYXNlRWxlbWVudCkKIHsKLSAgICBtX2Zvcm1FbGVtZW50LT5kb2N1
bWVudCgpLT5yZWdpc3RlckR5bmFtaWNTdWJ0cmVlTm9kZUxpc3QodGhpcyk7CisgICAgbV9iYXNl
RWxlbWVudC0+ZG9jdW1lbnQoKS0+cmVnaXN0ZXJEeW5hbWljU3VidHJlZU5vZGVMaXN0KHRoaXMp
OwogfQogCiBSYWRpb05vZGVMaXN0Ojp+UmFkaW9Ob2RlTGlzdCgpCiB7Ci0gICAgbV9mb3JtRWxl
bWVudC0+cmVtb3ZlQ2FjaGVkUmFkaW9Ob2RlTGlzdCh0aGlzLCBtX25hbWUpOwotICAgIG1fZm9y
bUVsZW1lbnQtPmRvY3VtZW50KCktPnVucmVnaXN0ZXJEeW5hbWljU3VidHJlZU5vZGVMaXN0KHRo
aXMpOworICAgIG1fYmFzZUVsZW1lbnQtPnJlbW92ZUNhY2hlZFJhZGlvTm9kZUxpc3QodGhpcywg
bV9uYW1lKTsKKyAgICBtX2Jhc2VFbGVtZW50LT5kb2N1bWVudCgpLT51bnJlZ2lzdGVyRHluYW1p
Y1N1YnRyZWVOb2RlTGlzdCh0aGlzKTsKIH0KIAogc3RhdGljIGlubGluZSBIVE1MSW5wdXRFbGVt
ZW50KiB0b1JhZGlvQnV0dG9uSW5wdXRFbGVtZW50KE5vZGUqIG5vZGUpCkBAIC04MiwyMSArODIs
MzEgQEAgdm9pZCBSYWRpb05vZGVMaXN0OjpzZXRWYWx1ZShjb25zdCBTdHJpbmcmIHZhbHVlKQog
ICAgIH0KIH0KIAorYm9vbCBSYWRpb05vZGVMaXN0OjpjaGVja0lmTmFtZU9ySWRNYXRjaGVzKEVs
ZW1lbnQqIHRlc3RFbGVtZW50KSBjb25zdAoreworICAgIHJldHVybiBlcXVhbElnbm9yaW5nQ2Fz
ZSh0ZXN0RWxlbWVudC0+Z2V0SWRBdHRyaWJ1dGUoKSwgbV9uYW1lKSB8fCBlcXVhbElnbm9yaW5n
Q2FzZSh0ZXN0RWxlbWVudC0+Z2V0TmFtZUF0dHJpYnV0ZSgpLCBtX25hbWUpOworfQorCiBib29s
IFJhZGlvTm9kZUxpc3Q6Om5vZGVNYXRjaGVzKEVsZW1lbnQqIHRlc3RFbGVtZW50KSBjb25zdAog
eworICAgIGlmICh0ZXN0RWxlbWVudC0+aGFzVGFnTmFtZShvYmplY3RUYWcpKQorICAgICAgICBy
ZXR1cm4gY2hlY2tJZk5hbWVPcklkTWF0Y2hlcyh0ZXN0RWxlbWVudCk7CisKICAgICBpZiAoIXRl
c3RFbGVtZW50LT5pc0Zvcm1Db250cm9sRWxlbWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBIVE1MRm9ybUVsZW1lbnQqIGZvcm1FbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTEZv
cm1Db250cm9sRWxlbWVudCo+KHRlc3RFbGVtZW50KS0+Zm9ybSgpOwotICAgIGlmICghZm9ybUVs
ZW1lbnQgfHwgZm9ybUVsZW1lbnQgIT0gbV9mb3JtRWxlbWVudCkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIGlmIChtX2Jhc2VFbGVtZW50LT5oYXNUYWdOYW1lKGZvcm1UYWcpKSB7CisgICAg
ICAgIEhUTUxGb3JtRWxlbWVudCogZm9ybUVsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MRm9ybUNv
bnRyb2xFbGVtZW50Kj4odGVzdEVsZW1lbnQpLT5mb3JtKCk7CisgICAgICAgIGlmICghZm9ybUVs
ZW1lbnQgfHwgZm9ybUVsZW1lbnQgIT0gbV9iYXNlRWxlbWVudCkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CiAKICAgICBpZiAoSFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50
ID0gdGVzdEVsZW1lbnQtPnRvSW5wdXRFbGVtZW50KCkpIHsKICAgICAgICAgaWYgKGlucHV0RWxl
bWVudC0+aXNJbWFnZUJ1dHRvbigpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
IAotICAgIHJldHVybiBlcXVhbElnbm9yaW5nQ2FzZSh0ZXN0RWxlbWVudC0+Z2V0SWRBdHRyaWJ1
dGUoKSwgbV9uYW1lKSB8fCBlcXVhbElnbm9yaW5nQ2FzZSh0ZXN0RWxlbWVudC0+Z2V0TmFtZUF0
dHJpYnV0ZSgpLCBtX25hbWUpOworICAgIHJldHVybiBjaGVja0lmTmFtZU9ySWRNYXRjaGVzKHRl
c3RFbGVtZW50KTsKIH0KIAogfSAvLyBuYW1zcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9SYWRpb05vZGVMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhZGlvTm9kZUxp
c3QuaAppbmRleCBlYmRlNzk3OTI4OGMwMTYyMDRlYWViM2MyZTFlODE1Y2U2YjUxZTZmLi5lZDc5
ODEwY2E1NjU1MWUxZDczNzU3MjlhZTE3YjhiYjRkZDY1NWEzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL1JhZGlvTm9kZUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1Jh
ZGlvTm9kZUxpc3QuaApAQCAtMzYsOSArMzYsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIFJhZGlvTm9kZUxpc3QgOiBwdWJsaWMgRHluYW1pY1N1YnRyZWVOb2RlTGlzdCB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UmFkaW9Ob2RlTGlzdD4gY3JlYXRlKGNvbnN0IEF0
b21pY1N0cmluZyYgbmFtZSwgRWxlbWVudCogZm9ybUVsZW1lbnQpCisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8UmFkaW9Ob2RlTGlzdD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgRWxl
bWVudCogYmFzZUVsZW1lbnQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJh
ZGlvTm9kZUxpc3QobmFtZSwgZm9ybUVsZW1lbnQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBSYWRpb05vZGVMaXN0KG5hbWUsIGJhc2VFbGVtZW50KSk7CiAgICAgfQogCiAgICAgflJh
ZGlvTm9kZUxpc3QoKTsKQEAgLTUyLDggKzUyLDEwIEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAg
ICAgUmFkaW9Ob2RlTGlzdChjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIEVsZW1lbnQqKTsKIAor
ICAgIGJvb2wgY2hlY2tJZk5hbWVPcklkTWF0Y2hlcyhFbGVtZW50KikgY29uc3Q7CisKICAgICBB
dG9taWNTdHJpbmcgbV9uYW1lOwotICAgIFJlZlB0cjxFbGVtZW50PiBtX2Zvcm1FbGVtZW50Owor
ICAgIFJlZlB0cjxFbGVtZW50PiBtX2Jhc2VFbGVtZW50OwogfTsKIAogfSAvLyBuYW1lcHNhY2UK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA4YzVhMzkyNTIzYjBhMGYyZmU3Y2Q5NmEwNzI3ZTI2ZjUyYTc2Y2M3Li4yNzI5NjUz
NWU2NjJmYmE0NDEyZGNjZmZjMDk5MGY5YmJhOWJlZTNmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTItMDUtMjIgIFJha2VzaCBLTiAgPHJha2VzaC5rbkBtb3Rvcm9sYS5jb20+CisKKyAgICAg
ICAgW0Zvcm1zXSBIVE1MRmllbGRTZXRFbGVtZW50LmlkbCBkb2Vzbid0IGhhdmUgZWxlbWVudHMg
YXR0cmlidXRlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODAxMTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIGZhc3QvZm9ybXMvZmllbGRzZXQvZmllbGRzZXQtZWxlbWVudHMtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL2ZpZWxkc2V0L2ZpZWxkc2V0LWVsZW1lbnRzLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvZmllbGRzZXQvZmllbGRzZXQtZm9ybS1j
b2xsZWN0aW9uLXJhZGlvbm9kZS1saXN0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9mb3Jtcy9maWVsZHNldC9maWVsZHNldC1mb3JtLWNvbGxlY3Rpb24tcmFkaW9ub2RlLWxp
c3QuaHRtbDogQWRkZWQuCisKIDIwMTItMDUtMjIgIFN6aWxhcmQgTGVkYW4gIDxzemxlZGFuQGlu
Zi51LXN6ZWdlZC5odT4KIAogICAgICAgICBbUXRdIFVuc2tpcHBlZCBhIHRlc3QgYW5kIHVwZGF0
ZWQgaXRzIGV4cGVjdGF0aW9uLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9m
aWVsZHNldC9maWVsZHNldC1lbGVtZW50cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL2ZpZWxkc2V0L2ZpZWxkc2V0LWVsZW1lbnRzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42MmVjNjkzODM5NjY5OGU4NmIyYjI4YTE0Yzc3MGMwNjMxMTEyMTY2Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWVsZHNldC9maWVsZHNldC1lbGVtZW50cy1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwzOSBAQAorVGhpcyB0ZXN0IHRoZSBlbGVtZW50cyBhdHRp
YnV0ZSBvZiBIVE1MRmllbGRTZXQgZWxlbWVudC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgorCisKK1BBU1Mgb3duZXIuZWxlbWVudHMubGVuZ3RoIGlzIDI0CitQQVNTIG93bmVyLmVsZW1l
bnRzWzBdLmlkIGlzICdidXR0b24xJworUEFTUyBvd25lci5lbGVtZW50c1sxXS5pZCBpcyAnZmll
bGRzZXQxJworUEFTUyBvd25lci5lbGVtZW50c1syXS5pZCBpcyAnaW5wdXRoaWRkZW4nCitQQVNT
IG93bmVyLmVsZW1lbnRzWzNdLmlkIGlzICdpbnB1dHRleHQnCitQQVNTIG93bmVyLmVsZW1lbnRz
WzRdLmlkIGlzICdpbnB1dHNlYXJjaCcKK1BBU1Mgb3duZXIuZWxlbWVudHNbNV0uaWQgaXMgJ2lu
cHV0dXJsJworUEFTUyBvd25lci5lbGVtZW50c1s2XS5pZCBpcyAnaW5wdXRlbWFpbCcKK1BBU1Mg
b3duZXIuZWxlbWVudHNbN10uaWQgaXMgJ2lucHV0cGFzc3dvcmQnCitQQVNTIG93bmVyLmVsZW1l
bnRzWzhdLmlkIGlzICdpbnB1dGRhdGUnCitQQVNTIG93bmVyLmVsZW1lbnRzWzldLmlkIGlzICdp
bnB1dG51bWJlcicKK1BBU1Mgb3duZXIuZWxlbWVudHNbMTBdLmlkIGlzICdpbnB1dHJhbmdlJwor
UEFTUyBvd25lci5lbGVtZW50c1sxMV0uaWQgaXMgJ2lucHV0Y29sb3InCitQQVNTIG93bmVyLmVs
ZW1lbnRzWzEyXS5pZCBpcyAnaW5wdXRjaGVja2JveCcKK1BBU1Mgb3duZXIuZWxlbWVudHNbMTNd
LmlkIGlzICdpbnB1dHJhZGlvJworUEFTUyBvd25lci5lbGVtZW50c1sxNF0uaWQgaXMgJ2lucHV0
ZmlsZScKK1BBU1Mgb3duZXIuZWxlbWVudHNbMTVdLmlkIGlzICdpbnB1dHN1Ym1pdCcKK1BBU1Mg
b3duZXIuZWxlbWVudHNbMTZdLmlkIGlzICdpbnB1dHJlc2V0JworUEFTUyBvd25lci5lbGVtZW50
c1sxN10uaWQgaXMgJ2lucHV0YnV0dG9uJworUEFTUyBvd25lci5lbGVtZW50c1sxOF0uaWQgaXMg
J2tleWdlbjEnCitQQVNTIG93bmVyLmVsZW1lbnRzWzE5XS5pZCBpcyAnb2JqZWN0MScKK1BBU1Mg
b3duZXIuZWxlbWVudHNbMjBdLmlkIGlzICdvdXRwdXQxJworUEFTUyBvd25lci5lbGVtZW50c1sy
MV0uaWQgaXMgJ3NlbGVjdDEnCitQQVNTIG93bmVyLmVsZW1lbnRzWzIyXS5pZCBpcyAndGV4dGFy
ZWExJworCitDaGVjayBlbGVtZW50cyBhcnJheSBpcyB1cGRhdGVkIGFmdGVyIGFkZGluZyBhIG5l
dyBlbGVtZW50CitQQVNTIG93bmVyLmFwcGVuZENoaWxkKG5ld0VsZW1lbnQpOyBvd25lci5lbGVt
ZW50cy5sZW5ndGggaXMgMjUKKworQ2hlY2sgZWxlbWVudHMgYXJyYXkgaXMgdXBkYXRlZCBhZnRl
ciByZW1vdmUgYW4gZWxlbWVudAorUEFTUyBvd25lci5yZW1vdmVDaGlsZChuZXdFbGVtZW50KTsg
b3duZXIuZWxlbWVudHMubGVuZ3RoIGlzIDI0CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9maWVsZHNldC9maWVsZHNldC1lbGVtZW50cy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9maWVsZHNldC9maWVsZHNldC1lbGVtZW50cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU4OGRhY2M0N2Ex
YTVlNDZlODJlMTJkYzc5N2QwNzc0MmRiZWQyOWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL2ZpZWxkc2V0L2ZpZWxkc2V0LWVsZW1lbnRzLmh0bWwKQEAgLTAsMCAr
MSw5MSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0i
dXRmLTgiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGhpcyB0
ZXN0IHRoZSBlbGVtZW50cyBhdHRpYnV0ZSBvZiBIVE1MRmllbGRTZXQgZWxlbWVudC4iKTsKKwor
dmFyIGNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworZG9jdW1lbnQu
Ym9keS5hcHBlbmRDaGlsZChjb250YWluZXIpOworCitjb250YWluZXIuaW5uZXJIVE1MID0gJzxm
b3JtPiA8ZmllbGRzZXQgaWQ9ImZzIj4nICsKKyAgICAnPGJ1dHRvbiBpZD1idXR0b24xPjwvYnV0
dG9uPicgKworICAgICc8ZmllbGRzZXQgaWQ9ZmllbGRzZXQxPjxsZWdlbmQgaWQ9bGVnZW5kMT48
L2xlZ2VuZD48L2ZpZWxkc2V0PicgKworICAgICc8aW5wdXQgaWQ9aW5wdXRoaWRkZW4gdHlwZT1o
aWRkZW4+JyArCisgICAgJzxpbnB1dCBpZD1pbnB1dHRleHQgdHlwZT10ZXh0PicgKworICAgICc8
aW5wdXQgaWQ9aW5wdXRzZWFyY2ggdHlwZT1zZWFyY2g+JyArCisgICAgJzxpbnB1dCBpZD1pbnB1
dHVybCB0eXBlPXVybD4nICsKKyAgICAnPGlucHV0IGlkPWlucHV0ZW1haWwgdHlwZT1lbWFpbD4n
ICsKKyAgICAnPGlucHV0IGlkPWlucHV0cGFzc3dvcmQgdHlwZT1wYXNzd29yZD4nICsKKyAgICAn
PGlucHV0IGlkPWlucHV0ZGF0ZSB0eXBlPWRhdGU+JyArCisgICAgJzxpbnB1dCBpZD1pbnB1dG51
bWJlciB0eXBlPW51bWJlcj4nICsKKyAgICAnPGlucHV0IGlkPWlucHV0cmFuZ2UgdHlwZT1yYW5n
ZT4nICsKKyAgICAnPGlucHV0IGlkPWlucHV0Y29sb3IgdHlwZT1jb2xvcj4nICsKKyAgICAnPGlu
cHV0IGlkPWlucHV0Y2hlY2tib3ggdHlwZT1jaGVja2JveD4nICsKKyAgICAnPGlucHV0IGlkPWlu
cHV0cmFkaW8gdHlwZT1yYWRpbz4nICsKKyAgICAnPGlucHV0IGlkPWlucHV0ZmlsZSB0eXBlPWZp
bGU+JyArCisgICAgJzxpbnB1dCBpZD1pbnB1dHN1Ym1pdCB0eXBlPXN1Ym1pdD4nICsKKyAgICAn
PGlucHV0IGlkPWlucHV0aW1hZ2UgdHlwZT1pbWFnZT4nICsKKyAgICAnPGlucHV0IGlkPWlucHV0
cmVzZXQgdHlwZT1yZXNldD4nICsKKyAgICAnPGlucHV0IGlkPWlucHV0YnV0dG9uIHR5cGU9YnV0
dG9uPicgKworICAgICc8a2V5Z2VuIGlkPWtleWdlbjE+PC9rZXlnZW4+JyArCisgICAgJzxsYWJl
bCBpZD1sYWJlbDE+PC9sYWJlbD4nICsKKyAgICAnPG1ldGVyIGlkPW1ldGVyMT48L21ldGVyPicg
KworICAgICc8b2JqZWN0IGlkPW9iamVjdDE+PC9vYmplY3Q+JyArCisgICAgJzxvdXRwdXQgaWQ9
b3V0cHV0MT48L291dHB1dD4nICsKKyAgICAnPHByb2dyZXNzIGlkPXByb2dyZXNzMT48L3Byb2dy
ZXNzPicgKworICAgICc8c2VsZWN0IGlkPXNlbGVjdDE+JyArCisgICAgJyAgICA8b3B0Z3JvdXAg
aWQ9b3B0Z3JvdXAxPmdyb3VwMTwvb3B0Z3JvdXA+JyArCisgICAgJyAgICA8b3B0aW9uIGlkPW9w
dGlvbjE+b3B0aW9uMTwvb3B0aW9uPicgKworICAgICc8L3NlbGVjdD4nICsKKyAgICAnPHRleHRh
cmVhIGlkPXRleHRhcmVhMT48L3RleHRhcmVhPicgKworICAgICc8L2ZpZWxkc2V0PiA8L2Zvcm0+
JzsKKwordmFyIG93bmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZzJyk7CisKK3Nob3Vs
ZEJlKCdvd25lci5lbGVtZW50cy5sZW5ndGgnLCAnMjQnKTsKK3Nob3VsZEJlKCdvd25lci5lbGVt
ZW50c1swXS5pZCcsICInYnV0dG9uMSciKTsKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50c1sxXS5p
ZCcsICInZmllbGRzZXQxJyIpOworc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzWzJdLmlkJywgIidp
bnB1dGhpZGRlbiciKTsKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50c1szXS5pZCcsICInaW5wdXR0
ZXh0JyIpOworc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzWzRdLmlkJywgIidpbnB1dHNlYXJjaCci
KTsKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50c1s1XS5pZCcsICInaW5wdXR1cmwnIik7CitzaG91
bGRCZSgnb3duZXIuZWxlbWVudHNbNl0uaWQnLCAiJ2lucHV0ZW1haWwnIik7CitzaG91bGRCZSgn
b3duZXIuZWxlbWVudHNbN10uaWQnLCAiJ2lucHV0cGFzc3dvcmQnIik7CitzaG91bGRCZSgnb3du
ZXIuZWxlbWVudHNbOF0uaWQnLCAiJ2lucHV0ZGF0ZSciKTsKK3Nob3VsZEJlKCdvd25lci5lbGVt
ZW50c1s5XS5pZCcsICInaW5wdXRudW1iZXInIik7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHNb
MTBdLmlkJywgIidpbnB1dHJhbmdlJyIpOworc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzWzExXS5p
ZCcsICInaW5wdXRjb2xvciciKTsKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50c1sxMl0uaWQnLCAi
J2lucHV0Y2hlY2tib3gnIik7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHNbMTNdLmlkJywgIidp
bnB1dHJhZGlvJyIpOworc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzWzE0XS5pZCcsICInaW5wdXRm
aWxlJyIpOworc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzWzE1XS5pZCcsICInaW5wdXRzdWJtaXQn
Iik7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHNbMTZdLmlkJywgIidpbnB1dHJlc2V0JyIpOwor
c2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzWzE3XS5pZCcsICInaW5wdXRidXR0b24nIik7CitzaG91
bGRCZSgnb3duZXIuZWxlbWVudHNbMThdLmlkJywgIidrZXlnZW4xJyIpOworc2hvdWxkQmUoJ293
bmVyLmVsZW1lbnRzWzE5XS5pZCcsICInb2JqZWN0MSciKTsKK3Nob3VsZEJlKCdvd25lci5lbGVt
ZW50c1syMF0uaWQnLCAiJ291dHB1dDEnIik7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHNbMjFd
LmlkJywgIidzZWxlY3QxJyIpOworc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzWzIyXS5pZCcsICIn
dGV4dGFyZWExJyIpOworCit2YXIgbmV3RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImlucHV0Iik7CituZXdFbGVtZW50LnNldEF0dHJpYnV0ZSgidHlwZSIsICJ0ZXh0Iik7CituZXdF
bGVtZW50LnNldEF0dHJpYnV0ZSgidmFsdWUiLCAibmV3IGVsZW1lbnQiKTsKK25ld0VsZW1lbnQu
c2V0QXR0cmlidXRlKCJpZCIsICJpbnB1dGNvbW1vbiIpOworCitkZWJ1ZygiIik7CitkZWJ1Zygi
Q2hlY2sgZWxlbWVudHMgYXJyYXkgaXMgdXBkYXRlZCBhZnRlciBhZGRpbmcgYSBuZXcgZWxlbWVu
dCIpOworc2hvdWxkQmUoJ293bmVyLmFwcGVuZENoaWxkKG5ld0VsZW1lbnQpOyBvd25lci5lbGVt
ZW50cy5sZW5ndGgnLCAnMjUnKTsKKworZGVidWcoIiIpOworZGVidWcoIkNoZWNrIGVsZW1lbnRz
IGFycmF5IGlzIHVwZGF0ZWQgYWZ0ZXIgcmVtb3ZlIGFuIGVsZW1lbnQiKTsKK3Nob3VsZEJlKCdv
d25lci5yZW1vdmVDaGlsZChuZXdFbGVtZW50KTsgb3duZXIuZWxlbWVudHMubGVuZ3RoJywgJzI0
Jyk7CisKK2NvbnRhaW5lci5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGNvbnRhaW5lcik7Cis8L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvZmllbGRzZXQvZmllbGRzZXQtZm9ybS1jb2xsZWN0aW9uLXJhZGlvbm9kZS1saXN0LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmllbGRzZXQvZmllbGRzZXQtZm9y
bS1jb2xsZWN0aW9uLXJhZGlvbm9kZS1saXN0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jOGMz
NGIzZjA3YWY3NjRkMjZkN2YwMmRjMmEwZjU2YzFiYWM5Mzc5Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWVsZHNldC9maWVsZHNldC1mb3JtLWNvbGxlY3Rpb24t
cmFkaW9ub2RlLWxpc3QtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNTMgQEAKK1RoaXMgdGVzdCBp
cyBmb3IgUmFkaW9Ob2RlTGlzdCBzcGVjaWZpZWQgYXQgaHR0cDovL3d3dy53aGF0d2cub3JnL3Nw
ZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2UvY29tbW9uLWRvbS1pbnRlcmZhY2Vz
Lmh0bWwjcmFkaW9ub2RlbGlzdAorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworCitQ
QVNTIG93bmVyLmVsZW1lbnRzLmxlbmd0aCBpcyAyNAorUEFTUyByYWRpb05vZGVMaXN0Lmxlbmd0
aCBpcyA0CitQQVNTIHJhZGlvTm9kZUxpc3RbMF0udmFsdWUgaXMgJ3NlYXJjaGluZycKK1BBU1Mg
cmFkaW9Ob2RlTGlzdFsxXS52YWx1ZSBpcyAnMTIzJworUEFTUyByYWRpb05vZGVMaXN0WzJdLnZh
bHVlIGlzICdpbnB1dFJhZGlvVmFsdWUnCitQQVNTIHJhZGlvTm9kZUxpc3RbM10udmFsdWUgaXMg
J2J1dHRvblZhbHVlJworCitDaGFuZ2luZyB0aGUgaW5wdXQgdmFsdWUgdG8gY2hlY2sgUmFkaW9O
b2RlTGlzdCBpcyBsaXZlIHZpZXcgb2YgRm9ybUNvbGxlY3Rpb24KK1BBU1MgcmFkaW9Ob2RlTGlz
dFsxXS52YWx1ZSBpcyAnNDU2JworCitDaGVja2luZyB2YWx1ZSBJREwgYXR0cmlidXRlIG9uIHRo
ZSBSYWRpb05vZGVMaXN0CitQQVNTIHJhZGlvTm9kZUxpc3QudmFsdWUgaXMgIiIKK1BBU1MgcmFk
aW9Ob2RlTGlzdC52YWx1ZSA9ICJpbnB1dFJhZGlvVmFsdWUiOyByYWRpb05vZGVMaXN0WzJdLmNo
ZWNrZWQgaXMgdHJ1ZQorUEFTUyBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwocmFkaW9O
b2RlTGlzdFsyXSkgaXMgJ1tvYmplY3QgSFRNTElucHV0RWxlbWVudF0nCitQQVNTIHJhZGlvTm9k
ZUxpc3RbMl0udHlwZSBpcyAncmFkaW8nCitQQVNTIHJhZGlvTm9kZUxpc3QudmFsdWUgaXMgIiIK
K1BBU1MgcmFkaW9Ob2RlTGlzdFsyXS5jaGVja2VkID0gdHJ1ZTsgcmFkaW9Ob2RlTGlzdC52YWx1
ZSBpcyAnaW5wdXRSYWRpb1ZhbHVlJworCitDaGVjayBSYWRpb05vZGVMaXN0IGlzIHVwZGF0ZWQg
YWZ0ZXIgYWRkaW5nIGEgbmV3IGVsZW1lbnQKK1BBU1Mgb3duZXIuYXBwZW5kQ2hpbGQobmV3RWxl
bWVudCk7IHJhZGlvTm9kZUxpc3QubGVuZ3RoIGlzIDUKK1BBU1Mgb3duZXIuZWxlbWVudHMubGVu
Z3RoIGlzIDI1CitQQVNTIHJhZGlvTm9kZUxpc3RbNF0udmFsdWUgaXMgJ25ldyBlbGVtZW50Jwor
CitDaGVjayBSYWRpb05vZGVMaXN0IGlzIHVwZGF0ZWQgYWZ0ZXIgcmVtb3ZlIGFuIGVsZW1lbnQK
K1BBU1Mgb3duZXIucmVtb3ZlQ2hpbGQobmV3RWxlbWVudCk7IHJhZGlvTm9kZUxpc3QubGVuZ3Ro
IGlzIDQKK1BBU1MgcmFkaW9Ob2RlTGlzdFszXS52YWx1ZSBpcyAnYnV0dG9uVmFsdWUnCisKK0No
ZWNrIFJhZGlvTm9kZUxpc3QgaXMgdXBkYXRlZCBhZnRlciBjaGFuZ2UgaW4gaWQsIHR5cGUgYW5k
IGNoZWNrZWQgc3RhdGUgb2YgYW4gZWxlbWVudAorUEFTUyByYWRpb05vZGVMaXN0Lmxlbmd0aCBp
cyA0CitBZnRlciBjaGFuZ2luZyB0aGUgaWQKK1BBU1MgcmFkaW9Ob2RlTGlzdC5sZW5ndGggaXMg
MworUEFTUyBlbGVtZW50c0xpc3RbMTNdLmNoZWNrZWQgPSBmYWxzZTsgcmFkaW9Ob2RlTGlzdC52
YWx1ZSBpcyAiIgorUEFTUyBlbGVtZW50c0xpc3RbMTNdLmNoZWNrZWQgPSB0cnVlOyByYWRpb05v
ZGVMaXN0LnZhbHVlIGlzICdpbnB1dFJhZGlvVmFsdWUnCitQQVNTIGVsZW1lbnRzTGlzdFsxM10u
dHlwZSA9ICJkYXRlIjsgcmFkaW9Ob2RlTGlzdC52YWx1ZSBpcyAnJworCitDaGVjayBzZWNvbmQg
UmFkaW9Ob2RlTGlzdCBpcyBhbHNvIGNyZWF0ZWQgcHJvcGVybHkKK1BBU1MgcmFkaW9Ob2RlTGlz
dDIubGVuZ3RoIGlzIDMKK1BBU1MgcmFkaW9Ob2RlTGlzdDJbMF0udHlwZSBpcyAndGV4dCcKK1BB
U1MgcmFkaW9Ob2RlTGlzdDJbMV0udHlwZSBpcyAnZW1haWwnCitQQVNTIHJhZGlvTm9kZUxpc3Qy
WzJdLnR5cGUgaXMgJ3Jlc2V0JworQWZ0ZXIgY2hhbmdpbmcgdGhlIGlkCitQQVNTIHJhZGlvTm9k
ZUxpc3QyLmxlbmd0aCBpcyAyCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpZWxk
c2V0L2ZpZWxkc2V0LWZvcm0tY29sbGVjdGlvbi1yYWRpb25vZGUtbGlzdC5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy9maWVsZHNldC9maWVsZHNldC1mb3JtLWNvbGxlY3Rpb24tcmFkaW9u
b2RlLWxpc3QuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NTlmMWZjMjE4ZTYyYTIxMjI0YzZlOTQ2MDM3NTQ5
ZWE1OWZkMmYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWVs
ZHNldC9maWVsZHNldC1mb3JtLWNvbGxlY3Rpb24tcmFkaW9ub2RlLWxpc3QuaHRtbApAQCAtMCww
ICsxLDEyMCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPHNjcmlwdCBzcmM9
Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8cCBpZD0iZGVz
Y3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImRpdklkIj4KKzxmb3JtPgorPGZpZWxkc2V0IGlkPSJm
cyI+CisgICAgPGJ1dHRvbiBpZD1idXR0b24xPjwvYnV0dG9uPgorICAgIDxmaWVsZHNldCBpZD1m
aWVsZHNldDE+PGxlZ2VuZCBpZD1sZWdlbmQxPjwvbGVnZW5kPjwvZmllbGRzZXQ+CisgICAgPGlu
cHV0IGlkPWlucHV0aGlkZGVuIHR5cGU9aGlkZGVuPgorICAgIDxpbnB1dCBpZD1jb21tb25pbnB1
dCB0eXBlPXRleHQ+CisgICAgPGlucHV0IGlkPWlucHV0Y29tbW9uIHR5cGU9c2VhcmNoIHZhbHVl
PXNlYXJjaGluZz4KKyAgICA8aW5wdXQgaWQ9aW5wdXR1cmwgdHlwZT11cmw+CisgICAgPGlucHV0
IGlkPWNvbW1vbmlucHV0IHR5cGU9ZW1haWw+CisgICAgPGlucHV0IGlkPWlucHV0cGFzc3dvcmQg
dHlwZT1wYXNzd29yZD4KKyAgICA8aW5wdXQgaWQ9aW5wdXRkYXRlIHR5cGU9ZGF0ZT4KKyAgICA8
aW5wdXQgaWQ9bnVtYmVySWQgbmFtZT1pbnB1dGNvbW1vbiB0eXBlPW51bWJlciB2YWx1ZT0xMjM+
CisgICAgPGlucHV0IGlkPWlucHV0cmFuZ2UgdHlwZT1yYW5nZT4KKyAgICA8aW5wdXQgaWQ9aW5w
dXRjb2xvciB0eXBlPWNvbG9yPgorICAgIDxpbnB1dCBpZD1pbnB1dGNoZWNrYm94IHR5cGU9Y2hl
Y2tib3g+CisgICAgPGlucHV0IGlkPWlucHV0Y29tbW9uIHR5cGU9cmFkaW8gdmFsdWU9ImlucHV0
UmFkaW9WYWx1ZSI+CisgICAgPGlucHV0IGlkPWlucHV0ZmlsZSB0eXBlPWZpbGU+CisgICAgPGlu
cHV0IGlkPWlucHV0c3VibWl0IHR5cGU9c3VibWl0PgorICAgIDxpbnB1dCBpZD1pbnB1dGNvbW1v
biB0eXBlPWltYWdlPgorICAgIDxpbnB1dCBpZD1jb21tb25pbnB1dCB0eXBlPXJlc2V0PgorICAg
IDxpbnB1dCBpZD1pbnB1dGNvbW1vbiB0eXBlPWJ1dHRvbiB2YWx1ZT1idXR0b25WYWx1ZT4KKyAg
ICA8a2V5Z2VuIGlkPWtleWdlbjE+PC9rZXlnZW4+CisgICAgPGxhYmVsIGlkPWxhYmVsMT48L2xh
YmVsPgorICAgIDxtZXRlciBpZD1tZXRlcjE+PC9tZXRlcj4KKyAgICA8b2JqZWN0IGlkPW9iamVj
dDE+PC9vYmplY3Q+CisgICAgPG91dHB1dCBpZD1vdXRwdXQxPjwvb3V0cHV0PgorICAgIDxwcm9n
cmVzcyBpZD1wcm9ncmVzczE+PC9wcm9ncmVzcz4KKyAgICA8c2VsZWN0IGlkPXNlbGVjdDE+Cisg
ICAgICAgIDxvcHRncm91cCBpZD1vcHRncm91cDE+Z3JvdXAxPC9vcHRncm91cD4KKyAgICAgICAg
PG9wdGlvbiBpZD1vcHRpb24xPm9wdGlvbjE8L29wdGlvbj4KKyAgICA8L3NlbGVjdD4KKyAgICA8
dGV4dGFyZWEgaWQ9dGV4dGFyZWExPjwvdGV4dGFyZWE+Cis8L2ZpZWxkc2V0PgorPC9mb3JtPgor
PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigi
VGhpcyB0ZXN0IGlzIGZvciBSYWRpb05vZGVMaXN0IHNwZWNpZmllZCBhdCBodHRwOi8vd3d3Lndo
YXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS9jb21tb24tZG9t
LWludGVyZmFjZXMuaHRtbCNyYWRpb25vZGVsaXN0ICIpOworZGVidWcoIiIpOwordmFyIG93bmVy
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZzJyk7CisKK3Nob3VsZEJlKCdvd25lci5lbGVt
ZW50cy5sZW5ndGgnLCAnMjQnKTsKKwordmFyIGVsZW1lbnRzTGlzdCA9IG93bmVyLmVsZW1lbnRz
OwordmFyIHJhZGlvTm9kZUxpc3QgPSBlbGVtZW50c0xpc3QubmFtZWRJdGVtKCJpbnB1dGNvbW1v
biIpOworc2hvdWxkQmUoJ3JhZGlvTm9kZUxpc3QubGVuZ3RoJywgJzQnKTsKKworc2hvdWxkQmUo
J3JhZGlvTm9kZUxpc3RbMF0udmFsdWUnLCAiJ3NlYXJjaGluZyciKTsKK3Nob3VsZEJlKCdyYWRp
b05vZGVMaXN0WzFdLnZhbHVlJywgIicxMjMnIik7CitzaG91bGRCZSgncmFkaW9Ob2RlTGlzdFsy
XS52YWx1ZScsICInaW5wdXRSYWRpb1ZhbHVlJyIpOworc2hvdWxkQmUoJ3JhZGlvTm9kZUxpc3Rb
M10udmFsdWUnLCAiJ2J1dHRvblZhbHVlJyIpOworCitkZWJ1ZygiIik7CitkZWJ1ZygiQ2hhbmdp
bmcgdGhlIGlucHV0IHZhbHVlIHRvIGNoZWNrIFJhZGlvTm9kZUxpc3QgaXMgbGl2ZSB2aWV3IG9m
IEZvcm1Db2xsZWN0aW9uIik7Citkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibnVtYmVySWQiKS52
YWx1ZSA9IDQ1NjsKK3Nob3VsZEJlKCdyYWRpb05vZGVMaXN0WzFdLnZhbHVlJywgIic0NTYnIik7
CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJDaGVja2luZyB2YWx1ZSBJREwgYXR0cmlidXRlIG9uIHRo
ZSBSYWRpb05vZGVMaXN0Iik7CitzaG91bGRCZSgncmFkaW9Ob2RlTGlzdC52YWx1ZScsICciIicp
Oworc2hvdWxkQmUoJ3JhZGlvTm9kZUxpc3QudmFsdWUgPSAiaW5wdXRSYWRpb1ZhbHVlIjsgcmFk
aW9Ob2RlTGlzdFsyXS5jaGVja2VkJywgJ3RydWUnKTsKK3Nob3VsZEJlKCdPYmplY3QucHJvdG90
eXBlLnRvU3RyaW5nLmNhbGwocmFkaW9Ob2RlTGlzdFsyXSknLCAiJ1tvYmplY3QgSFRNTElucHV0
RWxlbWVudF0nIik7CitzaG91bGRCZSgncmFkaW9Ob2RlTGlzdFsyXS50eXBlJywgIidyYWRpbyci
KTsKKworcmFkaW9Ob2RlTGlzdFsyXS5jaGVja2VkID0gZmFsc2U7CitzaG91bGRCZSgncmFkaW9O
b2RlTGlzdC52YWx1ZScsICciIicpOworc2hvdWxkQmUoJ3JhZGlvTm9kZUxpc3RbMl0uY2hlY2tl
ZCA9IHRydWU7IHJhZGlvTm9kZUxpc3QudmFsdWUnLCAiJ2lucHV0UmFkaW9WYWx1ZSciKTsKKwor
dmFyIG5ld0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpOworbmV3RWxl
bWVudC5zZXRBdHRyaWJ1dGUoInR5cGUiLCAidGV4dCIpOworbmV3RWxlbWVudC5zZXRBdHRyaWJ1
dGUoInZhbHVlIiwgIm5ldyBlbGVtZW50Iik7CituZXdFbGVtZW50LnNldEF0dHJpYnV0ZSgiaWQi
LCAiaW5wdXRjb21tb24iKTsKKworZGVidWcoIiIpOworZGVidWcoIkNoZWNrIFJhZGlvTm9kZUxp
c3QgaXMgdXBkYXRlZCBhZnRlciBhZGRpbmcgYSBuZXcgZWxlbWVudCIpOworc2hvdWxkQmUoJ293
bmVyLmFwcGVuZENoaWxkKG5ld0VsZW1lbnQpOyByYWRpb05vZGVMaXN0Lmxlbmd0aCcsICc1Jyk7
CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHMubGVuZ3RoJywgJzI1Jyk7CitzaG91bGRCZSgncmFk
aW9Ob2RlTGlzdFs0XS52YWx1ZScsICInbmV3IGVsZW1lbnQnIik7CisKK2RlYnVnKCIiKTsKK2Rl
YnVnKCJDaGVjayBSYWRpb05vZGVMaXN0IGlzIHVwZGF0ZWQgYWZ0ZXIgcmVtb3ZlIGFuIGVsZW1l
bnQiKTsKK3Nob3VsZEJlKCdvd25lci5yZW1vdmVDaGlsZChuZXdFbGVtZW50KTsgcmFkaW9Ob2Rl
TGlzdC5sZW5ndGgnLCAnNCcpOworc2hvdWxkQmUoJ3JhZGlvTm9kZUxpc3RbM10udmFsdWUnLCAi
J2J1dHRvblZhbHVlJyIpOworCitkZWJ1ZygiIik7CitkZWJ1ZygiQ2hlY2sgUmFkaW9Ob2RlTGlz
dCBpcyB1cGRhdGVkIGFmdGVyIGNoYW5nZSBpbiBpZCwgdHlwZSBhbmQgY2hlY2tlZCBzdGF0ZSBv
ZiBhbiBlbGVtZW50Iik7CitzaG91bGRCZSgncmFkaW9Ob2RlTGlzdC5sZW5ndGgnLCAnNCcpOwor
ZGVidWcoIkFmdGVyIGNoYW5naW5nIHRoZSBpZCIpOworcmFkaW9Ob2RlTGlzdFszXS5pZCA9ICJj
aGFuZ2VkTmFtZSI7CitzaG91bGRCZSgncmFkaW9Ob2RlTGlzdC5sZW5ndGgnLCAnMycpOworCitz
aG91bGRCZSgnZWxlbWVudHNMaXN0WzEzXS5jaGVja2VkID0gZmFsc2U7IHJhZGlvTm9kZUxpc3Qu
dmFsdWUnLCAnIiInKTsKK3Nob3VsZEJlKCdlbGVtZW50c0xpc3RbMTNdLmNoZWNrZWQgPSB0cnVl
OyByYWRpb05vZGVMaXN0LnZhbHVlJywgIidpbnB1dFJhZGlvVmFsdWUnIik7CitzaG91bGRCZSgn
ZWxlbWVudHNMaXN0WzEzXS50eXBlID0gImRhdGUiOyByYWRpb05vZGVMaXN0LnZhbHVlJywgIicn
Iik7CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJDaGVjayBzZWNvbmQgUmFkaW9Ob2RlTGlzdCBpcyBh
bHNvIGNyZWF0ZWQgcHJvcGVybHkiKTsKK3ZhciByYWRpb05vZGVMaXN0MiA9IGVsZW1lbnRzTGlz
dC5uYW1lZEl0ZW0oImNvbW1vbmlucHV0Iik7CitzaG91bGRCZSgncmFkaW9Ob2RlTGlzdDIubGVu
Z3RoJywgJzMnKTsKKworc2hvdWxkQmUoJ3JhZGlvTm9kZUxpc3QyWzBdLnR5cGUnLCAiJ3RleHQn
Iik7CitzaG91bGRCZSgncmFkaW9Ob2RlTGlzdDJbMV0udHlwZScsICInZW1haWwnIik7CitzaG91
bGRCZSgncmFkaW9Ob2RlTGlzdDJbMl0udHlwZScsICIncmVzZXQnIik7CityYWRpb05vZGVMaXN0
MlsyXS5pZCA9ICJpZENoYW5nZWQiOworZGVidWcoIkFmdGVyIGNoYW5naW5nIHRoZSBpZCIpOwor
c2hvdWxkQmUoJ3JhZGlvTm9kZUxpc3QyLmxlbmd0aCcsICcyJyk7CitkZWJ1ZygiIik7CisKK3Zh
ciBjb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGl2SWQiKTsKK2NvbnRhaW5l
ci5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGNvbnRhaW5lcik7Cis8L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>143537</attachid>
            <date>2012-05-23 05:02:03 -0700</date>
            <delta_ts>2012-05-25 03:58:25 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>bug-80110-20120523172915.patch</filename>
            <type>text/plain</type>
            <size>28830</size>
            <attacher name="Rakesh">rakeshchaitan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4MTU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2YzODEyZWZiZDQzMDJj
ZTA1MmZjNjYxODlmYzRlMDM3NDFkYjc5NS4uZmU5N2VkODEyMTk5NjVhMWJiNjgzY2ZkODhmZWNl
ZThkNWYzMDRlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDEyLTA1LTIzICBSYWtl
c2ggS04gIDxyYWtlc2gua25AbW90b3JvbGEuY29tPgorCisgICAgICAgIFtGb3Jtc10gSFRNTEZp
ZWxkU2V0RWxlbWVudC5pZGwgZG9lc24ndCBoYXZlIGVsZW1lbnRzIGF0dHJpYnV0ZS4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwMTEwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50ZWQgZWxl
bWVudHMgYXR0cmlidXRlIGZvciBIVE1MRmllbGRTZXRFbGVtZW50LiBUaGlzIGlzIHNwZWMnZWQg
YXQKKyAgICAgICAgaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQt
d29yay9tdWx0aXBhZ2UvZm9ybXMuaHRtbCNkb20tZmllbGRzZXQtZWxlbWVudHMKKworICAgICAg
ICBUZXN0czogZmFzdC9mb3Jtcy9maWVsZHNldC9maWVsZHNldC1lbGVtZW50cy5odG1sCisgICAg
ICAgICAgICAgICBmYXN0L2Zvcm1zL2ZpZWxkc2V0L2ZpZWxkc2V0LWZvcm0tY29sbGVjdGlvbi1y
YWRpb25vZGUtbGlzdC5odG1sCisKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpOb2RlOjpyYWRpb05vZGVMaXN0KToKKyAgICAgICAgRXh0ZW5kZWQgQVNTRVJUIHRv
IGFzc2VydCBpZiBub3QgSFRNTEZpZWxkU2V0RWxlbWVudCBvciBIVE1MRm9ybUVsZW1lbnQuCisg
ICAgICAgICogaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxGaWVsZFNldEVsZW1lbnQ6OmVsZW1lbnRzKToKKyAgICAgICAgRWxlbWVudHMgYXR0cmli
dXRlIGltcGxlbWVudGF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZpZWxkU2V0RWxlbWVu
dDo6cmVmcmVzaEVsZW1lbnRzSWZOZWVkZWQpOgorICAgICAgICBVcGRhdGUgdGhlIGZvcm1jb250
cm9sIGVsZW1lbnRzIGNvbGxlY3Rpb25zIGlmIG5lZWRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxGaWVsZFNldEVsZW1lbnQ6OmFzc29jaWF0ZWRFbGVtZW50cyk6CisgICAgICAgIEZvcm1Db250
cm9sIGVsZW1lbnRzIGNvbGxlY3Rpb24gYWNjZXNzb3IuCisgICAgICAgIChXZWJDb3JlOjpIVE1M
RmllbGRTZXRFbGVtZW50OjpsZW5ndGgpOgorICAgICAgICBOdW1iZXIgb2YgZWxlbWVudHMgaW4g
dGhlIGZpZWxkc2V0IGdyb3VwLgorICAgICAgICAqIGh0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5o
OgorICAgICAgICBBZGRlZCBlbGVtZW50cyBjb2xsZWN0aW9uIG1lbWJlciBhbmQgZm9ybSBjb250
cm9sIGNvbGxlY3Rpb24gbWVtYmVycy4KKyAgICAgICAgKiBodG1sL0hUTUxGaWVsZFNldEVsZW1l
bnQuaWRsOgorICAgICAgICBBZGRlZCBlbGVtZW50cyBhdHRyaWJ1dGUuCisgICAgICAgICogaHRt
bC9IVE1MRm9ybUNvbGxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db2xs
ZWN0aW9uOjpmb3JtQ29udHJvbEVsZW1lbnRzKToKKyAgICAgICAgQWRkZWQgc3VwcG9ydCBmb3Ig
SFRNTEZpZWxkU2V0RWxlbWVudCwgYmFzZWQgb24gYmFzZSBlbGVtZW50IHR5cGUgZ2V0cyBpdHMg
YXNzb2NpYXRlZCBlbGVtZW50cy4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29sbGVjdGlv
bjo6bnVtYmVyT2ZGb3JtQ29udHJvbEVsZW1lbnRzKTogRGl0dG8KKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxGb3JtQ29sbGVjdGlvbjo6Z2V0TmFtZWRGb3JtSXRlbSk6IFByb2Nlc3MgaW1hZ2UgZWxl
bWVudHMgb25seSBmb3IgZm9ybSBlbGVtZW50LgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1D
b2xsZWN0aW9uOjp1cGRhdGVOYW1lQ2FjaGUpOiBEaXR0by4KKyAgICAgICAgKiBodG1sL1JhZGlv
Tm9kZUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmFkaW9Ob2RlTGlzdDo6UmFkaW9Ob2Rl
TGlzdCk6CisgICAgICAgIER5bmFtaWNTdWJUcmVlIHJvb3QgZWxlbWVudCBpcyBkZWNpZGVkIGJh
c2VkIG9uIHRoZSB0eXBlIHdoZXRoZXIgYmFzZSBlbGVtZW50IGlzIGZvcm0gb3IgZmllbGRzZXQg
ZWxlbWVudC4KKyAgICAgICAgUmVuYW1lZCBtX2Zvcm1FbGVtZW50IHRvIG1fYmFzZUVsZW1lbnQu
CisgICAgICAgIChXZWJDb3JlOjpSYWRpb05vZGVMaXN0Ojp+UmFkaW9Ob2RlTGlzdCk6CisgICAg
ICAgIFJlbmFtZWQgbV9mb3JtRWxlbWVudCB0byBtX2Jhc2VFbGVtZW50LgorICAgICAgICAoV2Vi
Q29yZTo6UmFkaW9Ob2RlTGlzdDo6Y2hlY2tJZk5hbWVPcklkTWF0Y2hlcyk6CisgICAgICAgIENv
bXBhcmVzIGlmIHRlc3QgZWxlbWVudCdzIG5hbWUvaWQgbWF0Y2hlcyB0aGF0IG9mIHRoZSBSYWRp
b05vZGVMaXN0IG5hbWUuIEFsc28gYWRkZWQgb2JqZWN0IGVsZW1lbnQKKyAgICAgICAgc3VwcG9y
dCwgb2JqZWN0IGVsZW1lbnQgd2lsbCBhbHNvIGJlIGxpc3RlZCBpbiBSYWRpb05vZGVMaXN0IGlm
IG5hbWUvaWQgbWF0Y2hlcy4KKyAgICAgICAgKFdlYkNvcmU6OlJhZGlvTm9kZUxpc3Q6Om5vZGVN
YXRjaGVzKToKKyAgICAgICAgRm9ybSBlbGVtZW50IHNwZWNpZmljIGNoYW5nZXMgbW92ZWQgdW5k
ZXIgZm9ybSBlbGVtZW50IGNoZWNrLgorICAgICAgICAqIGh0bWwvUmFkaW9Ob2RlTGlzdC5oOgor
ICAgICAgICAoV2ViQ29yZTo6UmFkaW9Ob2RlTGlzdDo6Y3JlYXRlKToKKyAgICAgICAgKFJhZGlv
Tm9kZUxpc3QpOgorICAgICAgICBSZW5hbWVkIG1fZm9ybUVsZW1lbnQgdG8gbV9iYXNlRWxlbWVu
dC4KKwogMjAxMi0wNS0yMyAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQG5v
a2lhLmNvbT4KIAogICAgICAgICBbUXRdIEZsb2F0U2l6ZSBRdCBTdXBwb3J0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5j
cHAKaW5kZXggOTEwOGYzNjMyMzUyZjZiZTQ1OThkM2U3YmFlNzEzMzFkZmFkZDc0YS4uZjNjM2Y2
Mzk3MzhmNjBhMmY1ZjdjNzAwMWNkMTg2ODUzZmQ2YjFkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAt
MjkyOSw3ICsyOTI5LDcgQEAgdm9pZCBOb2RlUmFyZURhdGE6OmNsZWFyQ2hpbGROb2RlTGlzdENh
Y2hlKCkKIAogUGFzc1JlZlB0cjxSYWRpb05vZGVMaXN0PiBOb2RlOjpyYWRpb05vZGVMaXN0KGNv
bnN0IEF0b21pY1N0cmluZyYgbmFtZSkKIHsKLSAgICBBU1NFUlQoaGFzVGFnTmFtZShmb3JtVGFn
KSk7CisgICAgQVNTRVJUKGhhc1RhZ05hbWUoZm9ybVRhZykgfHwgaGFzVGFnTmFtZShmaWVsZHNl
dFRhZykpOwogCiAgICAgTm9kZUxpc3RzTm9kZURhdGEqIG5vZGVMaXN0cyA9IGVuc3VyZVJhcmVE
YXRhKCktPmVuc3VyZU5vZGVMaXN0cyh0aGlzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZpZWxkU2V0RWxlbWVudC5jcHAKaW5kZXggOGEyNDBjMDI0OWYzNGE3OGJlOTAyOTA5OTcyZTFl
MGJkYjMwMDk3OC4uMzdhNzBmZDdhOTAxZDU4MmVjZDljZTAwYWVkODE5ZjBkMDg5Yjc4ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwCkBAIC0yNCw5ICsy
NCwxMSBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSFRNTEZpZWxkU2V0RWxl
bWVudC5oIgotI2luY2x1ZGUgIkhUTUxMZWdlbmRFbGVtZW50LmgiCiAKKyNpbmNsdWRlICJIVE1M
Rm9ybUNvbGxlY3Rpb24uaCIKKyNpbmNsdWRlICJIVE1MTGVnZW5kRWxlbWVudC5oIgogI2luY2x1
ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIkhUTUxPYmplY3RFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiUmVuZGVyRmllbGRzZXQuaCIKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKQEAg
LTgxLDQgKzgzLDQ5IEBAIEhUTUxMZWdlbmRFbGVtZW50KiBIVE1MRmllbGRTZXRFbGVtZW50Ojps
ZWdlbmQoKSBjb25zdAogICAgIHJldHVybiAwOwogfQogCitIVE1MQ29sbGVjdGlvbiogSFRNTEZp
ZWxkU2V0RWxlbWVudDo6ZWxlbWVudHMoKQoreworICAgIGlmICghbV9lbGVtZW50c0NvbGxlY3Rp
b24pCisgICAgICAgIG1fZWxlbWVudHNDb2xsZWN0aW9uID0gSFRNTEZvcm1Db2xsZWN0aW9uOjpj
cmVhdGUodGhpcyk7CisgICAgcmV0dXJuIG1fZWxlbWVudHNDb2xsZWN0aW9uLmdldCgpOworfQor
Cit2b2lkIEhUTUxGaWVsZFNldEVsZW1lbnQ6OnJlZnJlc2hFbGVtZW50c0lmTmVlZGVkKCkgY29u
c3QKK3sKKyAgICB1aW50NjRfdCBkb2NWZXJzaW9uID0gZG9jdW1lbnQoKS0+ZG9tVHJlZVZlcnNp
b24oKTsKKyAgICBpZiAobV9kb2N1bWVudFZlcnNpb24gPT0gZG9jVmVyc2lvbikKKyAgICAgICAg
cmV0dXJuOworCisgICAgbV9kb2N1bWVudFZlcnNpb24gPSBkb2NWZXJzaW9uOworCisgICAgbV9h
c3NvY2lhdGVkRWxlbWVudHMuY2xlYXIoKTsKKworICAgIGZvciAoTm9kZSogbm9kZSA9IGZpcnN0
Q2hpbGQoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPnRyYXZlcnNlTmV4dE5vZGUodGhpcykpIHsKKyAg
ICAgICAgaWYgKCFub2RlLT5pc0VsZW1lbnROb2RlKCkpCisgICAgICAgICAgICBjb250aW51ZTsK
KworICAgICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZShvYmplY3RUYWcpKSB7CisgICAgICAgICAg
ICBtX2Fzc29jaWF0ZWRFbGVtZW50cy5hcHBlbmQoc3RhdGljX2Nhc3Q8SFRNTE9iamVjdEVsZW1l
bnQqPihub2RlKSk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAg
IGlmICghdG9FbGVtZW50KG5vZGUpLT5pc0Zvcm1Db250cm9sRWxlbWVudCgpKQorICAgICAgICAg
ICAgY29udGludWU7CisKKyAgICAgICAgbV9hc3NvY2lhdGVkRWxlbWVudHMuYXBwZW5kKHN0YXRp
Y19jYXN0PEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqPihub2RlKSk7CisgICAgfQorfQorCitjb25z
dCBWZWN0b3I8Rm9ybUFzc29jaWF0ZWRFbGVtZW50Kj4mIEhUTUxGaWVsZFNldEVsZW1lbnQ6OmFz
c29jaWF0ZWRFbGVtZW50cygpIGNvbnN0Cit7CisgICAgcmVmcmVzaEVsZW1lbnRzSWZOZWVkZWQo
KTsKKyAgICByZXR1cm4gbV9hc3NvY2lhdGVkRWxlbWVudHM7Cit9CisKK3Vuc2lnbmVkIEhUTUxG
aWVsZFNldEVsZW1lbnQ6Omxlbmd0aCgpIGNvbnN0Cit7CisgICAgcmVmcmVzaEVsZW1lbnRzSWZO
ZWVkZWQoKTsKKyAgICByZXR1cm4gbV9hc3NvY2lhdGVkRWxlbWVudHMuc2l6ZSgpOworfQorCiB9
IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRmllbGRT
ZXRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuaApp
bmRleCA5ZTkzNTk5ZmFiMGY0NDdmMTk2ZjBlNTVlOWFhNDI3OWM1MWIwNzc0Li43NzM1ODMxMzNk
YWQ0ZTI1ZGY1NTdlZjUxNGYyNDUwOTg0YWYyNWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGaWVsZFNldEVsZW1lbnQuaApAQCAtMjUsMTQgKzI1LDI0IEBACiAjZGVmaW5lIEhUTUxGaWVs
ZFNldEVsZW1lbnRfaAogCiAjaW5jbHVkZSAiSFRNTEZvcm1Db250cm9sRWxlbWVudC5oIgorI2lu
Y2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBGb3Jt
QXNzb2NpYXRlZEVsZW1lbnQ7CitjbGFzcyBIVE1MQ29sbGVjdGlvbjsKK2NsYXNzIEhUTUxGb3Jt
Q29sbGVjdGlvbjsKKwogY2xhc3MgSFRNTEZpZWxkU2V0RWxlbWVudCA6IHB1YmxpYyBIVE1MRm9y
bUNvbnRyb2xFbGVtZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MRmll
bGRTZXRFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50KiwgSFRN
TEZvcm1FbGVtZW50Kik7CiAgICAgSFRNTExlZ2VuZEVsZW1lbnQqIGxlZ2VuZCgpIGNvbnN0Owog
CisgICAgSFRNTENvbGxlY3Rpb24qIGVsZW1lbnRzKCk7CisKKyAgICBjb25zdCBWZWN0b3I8Rm9y
bUFzc29jaWF0ZWRFbGVtZW50Kj4mIGFzc29jaWF0ZWRFbGVtZW50cygpIGNvbnN0OworICAgIHVu
c2lnbmVkIGxlbmd0aCgpIGNvbnN0OworCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGRp
c2FibGVkQXR0cmlidXRlQ2hhbmdlZCgpIE9WRVJSSURFOwogCkBAIC00NCw2ICs1NCwxNCBAQCBw
cml2YXRlOgogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJB
cmVuYSosIFJlbmRlclN0eWxlKik7CiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGZv
cm1Db250cm9sVHlwZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCByZWNhbGNXaWxsVmFsaWRh
dGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorCisgICAgdm9pZCByZWZyZXNoRWxlbWVudHNJ
Zk5lZWRlZCgpIGNvbnN0OworCisgICAgT3duUHRyPEhUTUxGb3JtQ29sbGVjdGlvbj4gbV9lbGVt
ZW50c0NvbGxlY3Rpb247CisKKyAgICBtdXRhYmxlIFZlY3RvcjxGb3JtQXNzb2NpYXRlZEVsZW1l
bnQqPiBtX2Fzc29jaWF0ZWRFbGVtZW50czsKKworICAgIG11dGFibGUgdWludDY0X3QgbV9kb2N1
bWVudFZlcnNpb247CiB9OwogCiB9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEZpZWxkU2V0RWxlbWVudC5pZGwKaW5kZXggNjAwNmFkNzA0OTk2YmQ4NTAyNzVjYjhjMzIx
ZTE0MmE3NmYyZjQxNS4uZDY3YjNmNjQ3MmM2MTJhMTZkZTY5MzI5NzYyMTZjY2ZkZGI2N2QyMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmlkbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuaWRsCkBAIC0yNiw2
ICsyNiw4IEBAIG1vZHVsZSBodG1sIHsKIAogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9N
U3RyaW5nIHR5cGU7CiAKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEhUTUxDb2xsZWN0aW9u
IGVsZW1lbnRzOworCiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuICAgICAgICAg
d2lsbFZhbGlkYXRlOwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgVmFsaWRpdHlTdGF0ZSAg
IHZhbGlkaXR5OwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nICAgICAgIHZh
bGlkYXRpb25NZXNzYWdlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9y
bUNvbGxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbGxlY3Rpb24u
Y3BwCmluZGV4IGM1MWZhZTRhNThiNmQwOGVjNmZhY2FhODEzYmU5ODFmYzNlZDEwZmIuLmNiM2Nj
YTk1NDliMzU5YzVlNGZkOTEzZjY2NDkwOWVlZDc2Y2FmNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEZvcm1Db2xsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGb3JtQ29sbGVjdGlvbi5jcHAKQEAgLTIzLDYgKzIzLDcgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJIVE1MRm9ybUNvbGxlY3Rpb24uaCIKIAorI2luY2x1ZGUgIkhU
TUxGaWVsZFNldEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MRm9ybUNvbnRyb2xFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiSFRNTEZvcm1FbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEltYWdlRWxlbWVu
dC5oIgpAQCAtNTMsOCArNTQsMTAgQEAgSFRNTEZvcm1Db2xsZWN0aW9uOjp+SFRNTEZvcm1Db2xs
ZWN0aW9uKCkKIGNvbnN0IFZlY3RvcjxGb3JtQXNzb2NpYXRlZEVsZW1lbnQqPiYgSFRNTEZvcm1D
b2xsZWN0aW9uOjpmb3JtQ29udHJvbEVsZW1lbnRzKCkgY29uc3QKIHsKICAgICBBU1NFUlQoYmFz
ZSgpKTsKLSAgICBBU1NFUlQoYmFzZSgpLT5oYXNUYWdOYW1lKGZvcm1UYWcpKTsKLSAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8SFRNTEZvcm1FbGVtZW50Kj4oYmFzZSgpKS0+YXNzb2NpYXRlZEVsZW1l
bnRzKCk7CisgICAgQVNTRVJUKGJhc2UoKS0+aGFzVGFnTmFtZShmb3JtVGFnKSB8fCBiYXNlKCkt
Pmhhc1RhZ05hbWUoZmllbGRzZXRUYWcpKTsKKyAgICBpZiAoYmFzZSgpLT5oYXNUYWdOYW1lKGZv
cm1UYWcpKQorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTEZvcm1FbGVtZW50Kj4oYmFz
ZSgpKS0+YXNzb2NpYXRlZEVsZW1lbnRzKCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxG
aWVsZFNldEVsZW1lbnQqPihiYXNlKCkpLT5hc3NvY2lhdGVkRWxlbWVudHMoKTsKIH0KIAogY29u
c3QgVmVjdG9yPEhUTUxJbWFnZUVsZW1lbnQqPiYgSFRNTEZvcm1Db2xsZWN0aW9uOjpmb3JtSW1h
Z2VFbGVtZW50cygpIGNvbnN0CkBAIC02Nyw4ICs3MCwxMCBAQCBjb25zdCBWZWN0b3I8SFRNTElt
YWdlRWxlbWVudCo+JiBIVE1MRm9ybUNvbGxlY3Rpb246OmZvcm1JbWFnZUVsZW1lbnRzKCkgY29u
c3QKIHVuc2lnbmVkIEhUTUxGb3JtQ29sbGVjdGlvbjo6bnVtYmVyT2ZGb3JtQ29udHJvbEVsZW1l
bnRzKCkgY29uc3QKIHsKICAgICBBU1NFUlQoYmFzZSgpKTsKLSAgICBBU1NFUlQoYmFzZSgpLT5o
YXNUYWdOYW1lKGZvcm1UYWcpKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTEZvcm1FbGVt
ZW50Kj4oYmFzZSgpKS0+bGVuZ3RoKCk7CisgICAgQVNTRVJUKGJhc2UoKS0+aGFzVGFnTmFtZShm
b3JtVGFnKSB8fCBiYXNlKCktPmhhc1RhZ05hbWUoZmllbGRzZXRUYWcpKTsKKyAgICBpZiAoYmFz
ZSgpLT5oYXNUYWdOYW1lKGZvcm1UYWcpKQorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRN
TEZvcm1FbGVtZW50Kj4oYmFzZSgpKS0+bGVuZ3RoKCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0
PEhUTUxGaWVsZFNldEVsZW1lbnQqPihiYXNlKCkpLT5sZW5ndGgoKTsKIH0KIAogdW5zaWduZWQg
SFRNTEZvcm1Db2xsZWN0aW9uOjpjYWxjTGVuZ3RoKCkgY29uc3QKQEAgLTEzNCw2ICsxMzksOSBA
QCBFbGVtZW50KiBIVE1MRm9ybUNvbGxlY3Rpb246OmdldE5hbWVkRm9ybUl0ZW0oY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0ck5hbWUsIGNvbgogICAgICAgICB9CiAgICAgfQogCisgICAgaWYgKGJh
c2UoKS0+aGFzVGFnTmFtZShmaWVsZHNldFRhZykpCisgICAgICAgIHJldHVybiAwOworCiAgICAg
Y29uc3QgVmVjdG9yPEhUTUxJbWFnZUVsZW1lbnQqPiYgaW1hZ2VFbGVtZW50c0FycmF5ID0gZm9y
bUltYWdlRWxlbWVudHMoKTsKICAgICBpZiAoIWZvdW5kSW5wdXRFbGVtZW50cykgewogICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaW1hZ2VFbGVtZW50c0FycmF5LnNpemUoKTsgKytp
KSB7CkBAIC0xOTUsMTUgKzIwMywxNyBAQCB2b2lkIEhUTUxGb3JtQ29sbGVjdGlvbjo6dXBkYXRl
TmFtZUNhY2hlKCkgY29uc3QKICAgICAgICAgfQogICAgIH0KIAotICAgIGNvbnN0IFZlY3RvcjxI
VE1MSW1hZ2VFbGVtZW50Kj4mIGltYWdlRWxlbWVudHNBcnJheSA9IGZvcm1JbWFnZUVsZW1lbnRz
KCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGltYWdlRWxlbWVudHNBcnJheS5zaXpl
KCk7ICsraSkgewotICAgICAgICBIVE1MSW1hZ2VFbGVtZW50KiBlbGVtZW50ID0gaW1hZ2VFbGVt
ZW50c0FycmF5W2ldOwotICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGlkQXR0clZhbCA9IGVs
ZW1lbnQtPmdldElkQXR0cmlidXRlKCk7Ci0gICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmFt
ZUF0dHJWYWwgPSBlbGVtZW50LT5nZXROYW1lQXR0cmlidXRlKCk7Ci0gICAgICAgIGlmICghaWRB
dHRyVmFsLmlzRW1wdHkoKSAmJiAhZm91bmRJbnB1dEVsZW1lbnRzLmNvbnRhaW5zKGlkQXR0clZh
bC5pbXBsKCkpKQotICAgICAgICAgICAgYXBwZW5kKG1fY2FjaGUuaWRDYWNoZSwgaWRBdHRyVmFs
LCBlbGVtZW50KTsKLSAgICAgICAgaWYgKCFuYW1lQXR0clZhbC5pc0VtcHR5KCkgJiYgaWRBdHRy
VmFsICE9IG5hbWVBdHRyVmFsICYmICFmb3VuZElucHV0RWxlbWVudHMuY29udGFpbnMobmFtZUF0
dHJWYWwuaW1wbCgpKSkKLSAgICAgICAgICAgIGFwcGVuZChtX2NhY2hlLm5hbWVDYWNoZSwgbmFt
ZUF0dHJWYWwsIGVsZW1lbnQpOworICAgIGlmIChiYXNlKCktPmhhc1RhZ05hbWUoZm9ybVRhZykp
IHsKKyAgICAgICAgY29uc3QgVmVjdG9yPEhUTUxJbWFnZUVsZW1lbnQqPiYgaW1hZ2VFbGVtZW50
c0FycmF5ID0gZm9ybUltYWdlRWxlbWVudHMoKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGltYWdlRWxlbWVudHNBcnJheS5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgSFRN
TEltYWdlRWxlbWVudCogZWxlbWVudCA9IGltYWdlRWxlbWVudHNBcnJheVtpXTsKKyAgICAgICAg
ICAgIGNvbnN0IEF0b21pY1N0cmluZyYgaWRBdHRyVmFsID0gZWxlbWVudC0+Z2V0SWRBdHRyaWJ1
dGUoKTsKKyAgICAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZUF0dHJWYWwgPSBlbGVt
ZW50LT5nZXROYW1lQXR0cmlidXRlKCk7CisgICAgICAgICAgICBpZiAoIWlkQXR0clZhbC5pc0Vt
cHR5KCkgJiYgIWZvdW5kSW5wdXRFbGVtZW50cy5jb250YWlucyhpZEF0dHJWYWwuaW1wbCgpKSkK
KyAgICAgICAgICAgICAgICBhcHBlbmQobV9jYWNoZS5pZENhY2hlLCBpZEF0dHJWYWwsIGVsZW1l
bnQpOworICAgICAgICAgICAgaWYgKCFuYW1lQXR0clZhbC5pc0VtcHR5KCkgJiYgaWRBdHRyVmFs
ICE9IG5hbWVBdHRyVmFsICYmICFmb3VuZElucHV0RWxlbWVudHMuY29udGFpbnMobmFtZUF0dHJW
YWwuaW1wbCgpKSkKKyAgICAgICAgICAgICAgICBhcHBlbmQobV9jYWNoZS5uYW1lQ2FjaGUsIG5h
bWVBdHRyVmFsLCBlbGVtZW50KTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIG1fY2FjaGUuaGFz
TmFtZUNhY2hlID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFkaW9O
b2RlTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhZGlvTm9kZUxpc3QuY3BwCmluZGV4
IGI3MmEzZDQyYzlhY2U1Yzg5MWU2Yzc5NDMwZDRkYTU3M2RmMmY1YTkuLmZiNGYxOThhZmYyYzli
MzAyYzEwNTZkODcwNTlkYWI2NzEzYjI1MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvUmFkaW9Ob2RlTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9SYWRpb05vZGVM
aXN0LmNwcApAQCAtMzUsMTggKzM1LDE4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcg
bmFtZXNwYWNlIEhUTUxOYW1lczsKIAotUmFkaW9Ob2RlTGlzdDo6UmFkaW9Ob2RlTGlzdChjb25z
dCBBdG9taWNTdHJpbmcmIG5hbWUsIEVsZW1lbnQqIGZvcm1FbGVtZW50KQotICAgIDogRHluYW1p
Y1N1YnRyZWVOb2RlTGlzdChmb3JtRWxlbWVudC0+ZG9jdW1lbnQoKSkKK1JhZGlvTm9kZUxpc3Q6
OlJhZGlvTm9kZUxpc3QoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBFbGVtZW50KiBiYXNlRWxl
bWVudCkKKyAgICA6IER5bmFtaWNTdWJ0cmVlTm9kZUxpc3QoYmFzZUVsZW1lbnQtPmhhc1RhZ05h
bWUoZm9ybVRhZykgPyBzdGF0aWNfY2FzdDxOb2RlKj4oYmFzZUVsZW1lbnQtPmRvY3VtZW50KCkp
IDogYmFzZUVsZW1lbnQpCiAgICAgLCBtX25hbWUobmFtZSkKLSAgICAsIG1fZm9ybUVsZW1lbnQo
Zm9ybUVsZW1lbnQpCisgICAgLCBtX2Jhc2VFbGVtZW50KGJhc2VFbGVtZW50KQogewotICAgIG1f
Zm9ybUVsZW1lbnQtPmRvY3VtZW50KCktPnJlZ2lzdGVyRHluYW1pY1N1YnRyZWVOb2RlTGlzdCh0
aGlzKTsKKyAgICBtX2Jhc2VFbGVtZW50LT5kb2N1bWVudCgpLT5yZWdpc3RlckR5bmFtaWNTdWJ0
cmVlTm9kZUxpc3QodGhpcyk7CiB9CiAKIFJhZGlvTm9kZUxpc3Q6On5SYWRpb05vZGVMaXN0KCkK
IHsKLSAgICBtX2Zvcm1FbGVtZW50LT5yZW1vdmVDYWNoZWRSYWRpb05vZGVMaXN0KHRoaXMsIG1f
bmFtZSk7Ci0gICAgbV9mb3JtRWxlbWVudC0+ZG9jdW1lbnQoKS0+dW5yZWdpc3RlckR5bmFtaWNT
dWJ0cmVlTm9kZUxpc3QodGhpcyk7CisgICAgbV9iYXNlRWxlbWVudC0+cmVtb3ZlQ2FjaGVkUmFk
aW9Ob2RlTGlzdCh0aGlzLCBtX25hbWUpOworICAgIG1fYmFzZUVsZW1lbnQtPmRvY3VtZW50KCkt
PnVucmVnaXN0ZXJEeW5hbWljU3VidHJlZU5vZGVMaXN0KHRoaXMpOwogfQogCiBzdGF0aWMgaW5s
aW5lIEhUTUxJbnB1dEVsZW1lbnQqIHRvUmFkaW9CdXR0b25JbnB1dEVsZW1lbnQoTm9kZSogbm9k
ZSkKQEAgLTgyLDIxICs4MiwzMSBAQCB2b2lkIFJhZGlvTm9kZUxpc3Q6OnNldFZhbHVlKGNvbnN0
IFN0cmluZyYgdmFsdWUpCiAgICAgfQogfQogCitib29sIFJhZGlvTm9kZUxpc3Q6OmNoZWNrSWZO
YW1lT3JJZE1hdGNoZXMoRWxlbWVudCogdGVzdEVsZW1lbnQpIGNvbnN0Cit7CisgICAgcmV0dXJu
IGVxdWFsSWdub3JpbmdDYXNlKHRlc3RFbGVtZW50LT5nZXRJZEF0dHJpYnV0ZSgpLCBtX25hbWUp
IHx8IGVxdWFsSWdub3JpbmdDYXNlKHRlc3RFbGVtZW50LT5nZXROYW1lQXR0cmlidXRlKCksIG1f
bmFtZSk7Cit9CisKIGJvb2wgUmFkaW9Ob2RlTGlzdDo6bm9kZU1hdGNoZXMoRWxlbWVudCogdGVz
dEVsZW1lbnQpIGNvbnN0CiB7CisgICAgaWYgKHRlc3RFbGVtZW50LT5oYXNUYWdOYW1lKG9iamVj
dFRhZykpCisgICAgICAgIHJldHVybiBjaGVja0lmTmFtZU9ySWRNYXRjaGVzKHRlc3RFbGVtZW50
KTsKKwogICAgIGlmICghdGVzdEVsZW1lbnQtPmlzRm9ybUNvbnRyb2xFbGVtZW50KCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIEhUTUxGb3JtRWxlbWVudCogZm9ybUVsZW1lbnQgPSBz
dGF0aWNfY2FzdDxIVE1MRm9ybUNvbnRyb2xFbGVtZW50Kj4odGVzdEVsZW1lbnQpLT5mb3JtKCk7
Ci0gICAgaWYgKCFmb3JtRWxlbWVudCB8fCBmb3JtRWxlbWVudCAhPSBtX2Zvcm1FbGVtZW50KQot
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1fYmFzZUVsZW1lbnQtPmhhc1RhZ05hbWUo
Zm9ybVRhZykpIHsKKyAgICAgICAgSFRNTEZvcm1FbGVtZW50KiBmb3JtRWxlbWVudCA9IHN0YXRp
Y19jYXN0PEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqPih0ZXN0RWxlbWVudCktPmZvcm0oKTsKKyAg
ICAgICAgaWYgKCFmb3JtRWxlbWVudCB8fCBmb3JtRWxlbWVudCAhPSBtX2Jhc2VFbGVtZW50KQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KIAogICAgIGlmIChIVE1MSW5wdXRFbGVt
ZW50KiBpbnB1dEVsZW1lbnQgPSB0ZXN0RWxlbWVudC0+dG9JbnB1dEVsZW1lbnQoKSkgewogICAg
ICAgICBpZiAoaW5wdXRFbGVtZW50LT5pc0ltYWdlQnV0dG9uKCkpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogCi0gICAgcmV0dXJuIGVxdWFsSWdub3JpbmdDYXNlKHRlc3RFbGVt
ZW50LT5nZXRJZEF0dHJpYnV0ZSgpLCBtX25hbWUpIHx8IGVxdWFsSWdub3JpbmdDYXNlKHRlc3RF
bGVtZW50LT5nZXROYW1lQXR0cmlidXRlKCksIG1fbmFtZSk7CisgICAgcmV0dXJuIGNoZWNrSWZO
YW1lT3JJZE1hdGNoZXModGVzdEVsZW1lbnQpOwogfQogCiB9IC8vIG5hbXNwYWNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhZGlvTm9kZUxpc3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvUmFkaW9Ob2RlTGlzdC5oCmluZGV4IGViZGU3OTc5Mjg4YzAxNjIwNGVhZWIzYzJlMWU4
MTVjZTZiNTFlNmYuLmVkNzk4MTBjYTU2NTUxZTFkNzM3NTcyOWFlMTdiOGJiNGRkNjU1YTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFkaW9Ob2RlTGlzdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvUmFkaW9Ob2RlTGlzdC5oCkBAIC0zNiw5ICszNiw5IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgUmFkaW9Ob2RlTGlzdCA6IHB1YmxpYyBEeW5hbWljU3VidHJl
ZU5vZGVMaXN0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxSYWRpb05vZGVMaXN0
PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBFbGVtZW50KiBmb3JtRWxlbWVudCkK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxSYWRpb05vZGVMaXN0PiBjcmVhdGUoY29uc3QgQXRvbWlj
U3RyaW5nJiBuYW1lLCBFbGVtZW50KiBiYXNlRWxlbWVudCkKICAgICB7Ci0gICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgUmFkaW9Ob2RlTGlzdChuYW1lLCBmb3JtRWxlbWVudCkpOworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFJhZGlvTm9kZUxpc3QobmFtZSwgYmFzZUVsZW1lbnQpKTsK
ICAgICB9CiAKICAgICB+UmFkaW9Ob2RlTGlzdCgpOwpAQCAtNTIsOCArNTIsMTAgQEAgcHJvdGVj
dGVkOgogcHJpdmF0ZToKICAgICBSYWRpb05vZGVMaXN0KGNvbnN0IEF0b21pY1N0cmluZyYgbmFt
ZSwgRWxlbWVudCopOwogCisgICAgYm9vbCBjaGVja0lmTmFtZU9ySWRNYXRjaGVzKEVsZW1lbnQq
KSBjb25zdDsKKwogICAgIEF0b21pY1N0cmluZyBtX25hbWU7Ci0gICAgUmVmUHRyPEVsZW1lbnQ+
IG1fZm9ybUVsZW1lbnQ7CisgICAgUmVmUHRyPEVsZW1lbnQ+IG1fYmFzZUVsZW1lbnQ7CiB9Owog
CiB9IC8vIG5hbWVwc2FjZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGExZTc2NDlhNTc1ZTczN2Y2MjM1MDdkMjA0ZTAxMWMy
MWJhZTJlMjguLmU0NDNjNzgxZGQ2ZWMyMTllODE1NzE5ODEyODAwZjZjOGUxMGY0NzYgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNSBAQAorMjAxMi0wNS0yMyAgUmFrZXNoIEtOICA8cmFrZXNoLmtuQG1vdG9y
b2xhLmNvbT4KKworICAgICAgICBbRm9ybXNdIEhUTUxGaWVsZFNldEVsZW1lbnQuaWRsIGRvZXNu
J3QgaGF2ZSBlbGVtZW50cyBhdHRyaWJ1dGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04MDExMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogZmFzdC9mb3Jtcy9maWVsZHNldC9maWVsZHNldC1lbGVtZW50
cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvZmllbGRzZXQvZmll
bGRzZXQtZWxlbWVudHMuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9maWVsZHNl
dC9maWVsZHNldC1mb3JtLWNvbGxlY3Rpb24tcmFkaW9ub2RlLWxpc3QtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL2ZpZWxkc2V0L2ZpZWxkc2V0LWZvcm0tY29sbGVj
dGlvbi1yYWRpb25vZGUtbGlzdC5odG1sOiBBZGRlZC4KKwogMjAxMi0wNS0yMyAgS3J6eXN6dG9m
IEN6ZWNoICA8ay5jemVjaEBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbRUZMXSBHYXJkZW5pbmcg
ZWRpdGluZy9zdHlsZSB0ZXN0cywgbWlzc2luZyBiYXNlbGluZXMuCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL2ZpZWxkc2V0L2ZpZWxkc2V0LWVsZW1lbnRzLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmllbGRzZXQvZmllbGRzZXQtZWxlbWVudHMtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYyZWM2OTM4Mzk2Njk4ZTg2YjJiMjhhMTRjNzcwYzA2MzEx
MTIxNjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpZWxkc2V0
L2ZpZWxkc2V0LWVsZW1lbnRzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDM5IEBACitUaGlzIHRl
c3QgdGhlIGVsZW1lbnRzIGF0dGlidXRlIG9mIEhUTUxGaWVsZFNldCBlbGVtZW50LgorCitPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBvd25lci5lbGVtZW50cy5sZW5ndGggaXMg
MjQKK1BBU1Mgb3duZXIuZWxlbWVudHNbMF0uaWQgaXMgJ2J1dHRvbjEnCitQQVNTIG93bmVyLmVs
ZW1lbnRzWzFdLmlkIGlzICdmaWVsZHNldDEnCitQQVNTIG93bmVyLmVsZW1lbnRzWzJdLmlkIGlz
ICdpbnB1dGhpZGRlbicKK1BBU1Mgb3duZXIuZWxlbWVudHNbM10uaWQgaXMgJ2lucHV0dGV4dCcK
K1BBU1Mgb3duZXIuZWxlbWVudHNbNF0uaWQgaXMgJ2lucHV0c2VhcmNoJworUEFTUyBvd25lci5l
bGVtZW50c1s1XS5pZCBpcyAnaW5wdXR1cmwnCitQQVNTIG93bmVyLmVsZW1lbnRzWzZdLmlkIGlz
ICdpbnB1dGVtYWlsJworUEFTUyBvd25lci5lbGVtZW50c1s3XS5pZCBpcyAnaW5wdXRwYXNzd29y
ZCcKK1BBU1Mgb3duZXIuZWxlbWVudHNbOF0uaWQgaXMgJ2lucHV0ZGF0ZScKK1BBU1Mgb3duZXIu
ZWxlbWVudHNbOV0uaWQgaXMgJ2lucHV0bnVtYmVyJworUEFTUyBvd25lci5lbGVtZW50c1sxMF0u
aWQgaXMgJ2lucHV0cmFuZ2UnCitQQVNTIG93bmVyLmVsZW1lbnRzWzExXS5pZCBpcyAnaW5wdXRj
b2xvcicKK1BBU1Mgb3duZXIuZWxlbWVudHNbMTJdLmlkIGlzICdpbnB1dGNoZWNrYm94JworUEFT
UyBvd25lci5lbGVtZW50c1sxM10uaWQgaXMgJ2lucHV0cmFkaW8nCitQQVNTIG93bmVyLmVsZW1l
bnRzWzE0XS5pZCBpcyAnaW5wdXRmaWxlJworUEFTUyBvd25lci5lbGVtZW50c1sxNV0uaWQgaXMg
J2lucHV0c3VibWl0JworUEFTUyBvd25lci5lbGVtZW50c1sxNl0uaWQgaXMgJ2lucHV0cmVzZXQn
CitQQVNTIG93bmVyLmVsZW1lbnRzWzE3XS5pZCBpcyAnaW5wdXRidXR0b24nCitQQVNTIG93bmVy
LmVsZW1lbnRzWzE4XS5pZCBpcyAna2V5Z2VuMScKK1BBU1Mgb3duZXIuZWxlbWVudHNbMTldLmlk
IGlzICdvYmplY3QxJworUEFTUyBvd25lci5lbGVtZW50c1syMF0uaWQgaXMgJ291dHB1dDEnCitQ
QVNTIG93bmVyLmVsZW1lbnRzWzIxXS5pZCBpcyAnc2VsZWN0MScKK1BBU1Mgb3duZXIuZWxlbWVu
dHNbMjJdLmlkIGlzICd0ZXh0YXJlYTEnCisKK0NoZWNrIGVsZW1lbnRzIGFycmF5IGlzIHVwZGF0
ZWQgYWZ0ZXIgYWRkaW5nIGEgbmV3IGVsZW1lbnQKK1BBU1Mgb3duZXIuYXBwZW5kQ2hpbGQobmV3
RWxlbWVudCk7IG93bmVyLmVsZW1lbnRzLmxlbmd0aCBpcyAyNQorCitDaGVjayBlbGVtZW50cyBh
cnJheSBpcyB1cGRhdGVkIGFmdGVyIHJlbW92ZSBhbiBlbGVtZW50CitQQVNTIG93bmVyLnJlbW92
ZUNoaWxkKG5ld0VsZW1lbnQpOyBvd25lci5lbGVtZW50cy5sZW5ndGggaXMgMjQKK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpZWxkc2V0L2ZpZWxkc2V0LWVsZW1lbnRzLmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpZWxkc2V0L2ZpZWxkc2V0LWVsZW1lbnRzLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMGJkYTVkZTI4MmU2ZTlkNWExNjVjZGNkMzYyMDFiYWQyMWNkM2U0MAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmllbGRzZXQvZmllbGRzZXQtZWxl
bWVudHMuaHRtbApAQCAtMCwwICsxLDkxIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4K
K2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgdGhlIGVsZW1lbnRzIGF0dGlidXRlIG9mIEhUTUxGaWVs
ZFNldCBlbGVtZW50LiIpOworCit2YXIgY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnZGl2Jyk7Citkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGNvbnRhaW5lcik7CisKK2NvbnRh
aW5lci5pbm5lckhUTUwgPSAnPGZvcm0+IDxmaWVsZHNldCBpZD0iZnMiPicgKworICAgICc8YnV0
dG9uIGlkPWJ1dHRvbjE+PC9idXR0b24+JyArCisgICAgJzxmaWVsZHNldCBpZD1maWVsZHNldDE+
PGxlZ2VuZCBpZD1sZWdlbmQxPjwvbGVnZW5kPjwvZmllbGRzZXQ+JyArCisgICAgJzxkaXY+IDxp
bnB1dCBpZD1pbnB1dGhpZGRlbiB0eXBlPWhpZGRlbj4gPC9kaXY+JyArCisgICAgJzxpbnB1dCBp
ZD1pbnB1dHRleHQgdHlwZT10ZXh0PicgKworICAgICc8aW5wdXQgaWQ9aW5wdXRzZWFyY2ggdHlw
ZT1zZWFyY2g+JyArCisgICAgJzxpbnB1dCBpZD1pbnB1dHVybCB0eXBlPXVybD4nICsKKyAgICAn
PGlucHV0IGlkPWlucHV0ZW1haWwgdHlwZT1lbWFpbD4nICsKKyAgICAnPGlucHV0IGlkPWlucHV0
cGFzc3dvcmQgdHlwZT1wYXNzd29yZD4nICsKKyAgICAnPGlucHV0IGlkPWlucHV0ZGF0ZSB0eXBl
PWRhdGU+JyArCisgICAgJzxpbnB1dCBpZD1pbnB1dG51bWJlciB0eXBlPW51bWJlcj4nICsKKyAg
ICAnPGlucHV0IGlkPWlucHV0cmFuZ2UgdHlwZT1yYW5nZT4nICsKKyAgICAnPGlucHV0IGlkPWlu
cHV0Y29sb3IgdHlwZT1jb2xvcj4nICsKKyAgICAnPGlucHV0IGlkPWlucHV0Y2hlY2tib3ggdHlw
ZT1jaGVja2JveD4nICsKKyAgICAnPGlucHV0IGlkPWlucHV0cmFkaW8gdHlwZT1yYWRpbz4nICsK
KyAgICAnPGlucHV0IGlkPWlucHV0ZmlsZSB0eXBlPWZpbGU+JyArCisgICAgJzxpbnB1dCBpZD1p
bnB1dHN1Ym1pdCB0eXBlPXN1Ym1pdD4nICsKKyAgICAnPGlucHV0IGlkPWlucHV0aW1hZ2UgdHlw
ZT1pbWFnZT4nICsKKyAgICAnPGlucHV0IGlkPWlucHV0cmVzZXQgdHlwZT1yZXNldD4nICsKKyAg
ICAnPGlucHV0IGlkPWlucHV0YnV0dG9uIHR5cGU9YnV0dG9uPicgKworICAgICc8a2V5Z2VuIGlk
PWtleWdlbjE+PC9rZXlnZW4+JyArCisgICAgJzxsYWJlbCBpZD1sYWJlbDE+PC9sYWJlbD4nICsK
KyAgICAnPG1ldGVyIGlkPW1ldGVyMT48L21ldGVyPicgKworICAgICc8b2JqZWN0IGlkPW9iamVj
dDE+PC9vYmplY3Q+JyArCisgICAgJzxvdXRwdXQgaWQ9b3V0cHV0MT48L291dHB1dD4nICsKKyAg
ICAnPHByb2dyZXNzIGlkPXByb2dyZXNzMT48L3Byb2dyZXNzPicgKworICAgICc8c2VsZWN0IGlk
PXNlbGVjdDE+JyArCisgICAgJyAgICA8b3B0Z3JvdXAgaWQ9b3B0Z3JvdXAxPmdyb3VwMTwvb3B0
Z3JvdXA+JyArCisgICAgJyAgICA8b3B0aW9uIGlkPW9wdGlvbjE+b3B0aW9uMTwvb3B0aW9uPicg
KworICAgICc8L3NlbGVjdD4nICsKKyAgICAnPHRleHRhcmVhIGlkPXRleHRhcmVhMT48L3RleHRh
cmVhPicgKworICAgICc8L2ZpZWxkc2V0PiA8L2Zvcm0+JzsKKwordmFyIG93bmVyID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2ZzJyk7CisKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50cy5sZW5n
dGgnLCAnMjQnKTsKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50c1swXS5pZCcsICInYnV0dG9uMSci
KTsKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50c1sxXS5pZCcsICInZmllbGRzZXQxJyIpOworc2hv
dWxkQmUoJ293bmVyLmVsZW1lbnRzWzJdLmlkJywgIidpbnB1dGhpZGRlbiciKTsKK3Nob3VsZEJl
KCdvd25lci5lbGVtZW50c1szXS5pZCcsICInaW5wdXR0ZXh0JyIpOworc2hvdWxkQmUoJ293bmVy
LmVsZW1lbnRzWzRdLmlkJywgIidpbnB1dHNlYXJjaCciKTsKK3Nob3VsZEJlKCdvd25lci5lbGVt
ZW50c1s1XS5pZCcsICInaW5wdXR1cmwnIik7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHNbNl0u
aWQnLCAiJ2lucHV0ZW1haWwnIik7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHNbN10uaWQnLCAi
J2lucHV0cGFzc3dvcmQnIik7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHNbOF0uaWQnLCAiJ2lu
cHV0ZGF0ZSciKTsKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50c1s5XS5pZCcsICInaW5wdXRudW1i
ZXInIik7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHNbMTBdLmlkJywgIidpbnB1dHJhbmdlJyIp
Oworc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzWzExXS5pZCcsICInaW5wdXRjb2xvciciKTsKK3No
b3VsZEJlKCdvd25lci5lbGVtZW50c1sxMl0uaWQnLCAiJ2lucHV0Y2hlY2tib3gnIik7CitzaG91
bGRCZSgnb3duZXIuZWxlbWVudHNbMTNdLmlkJywgIidpbnB1dHJhZGlvJyIpOworc2hvdWxkQmUo
J293bmVyLmVsZW1lbnRzWzE0XS5pZCcsICInaW5wdXRmaWxlJyIpOworc2hvdWxkQmUoJ293bmVy
LmVsZW1lbnRzWzE1XS5pZCcsICInaW5wdXRzdWJtaXQnIik7CitzaG91bGRCZSgnb3duZXIuZWxl
bWVudHNbMTZdLmlkJywgIidpbnB1dHJlc2V0JyIpOworc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRz
WzE3XS5pZCcsICInaW5wdXRidXR0b24nIik7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHNbMThd
LmlkJywgIidrZXlnZW4xJyIpOworc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzWzE5XS5pZCcsICIn
b2JqZWN0MSciKTsKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50c1syMF0uaWQnLCAiJ291dHB1dDEn
Iik7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHNbMjFdLmlkJywgIidzZWxlY3QxJyIpOworc2hv
dWxkQmUoJ293bmVyLmVsZW1lbnRzWzIyXS5pZCcsICIndGV4dGFyZWExJyIpOworCit2YXIgbmV3
RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7CituZXdFbGVtZW50LnNl
dEF0dHJpYnV0ZSgidHlwZSIsICJ0ZXh0Iik7CituZXdFbGVtZW50LnNldEF0dHJpYnV0ZSgidmFs
dWUiLCAibmV3IGVsZW1lbnQiKTsKK25ld0VsZW1lbnQuc2V0QXR0cmlidXRlKCJpZCIsICJpbnB1
dGNvbW1vbiIpOworCitkZWJ1ZygiIik7CitkZWJ1ZygiQ2hlY2sgZWxlbWVudHMgYXJyYXkgaXMg
dXBkYXRlZCBhZnRlciBhZGRpbmcgYSBuZXcgZWxlbWVudCIpOworc2hvdWxkQmUoJ293bmVyLmFw
cGVuZENoaWxkKG5ld0VsZW1lbnQpOyBvd25lci5lbGVtZW50cy5sZW5ndGgnLCAnMjUnKTsKKwor
ZGVidWcoIiIpOworZGVidWcoIkNoZWNrIGVsZW1lbnRzIGFycmF5IGlzIHVwZGF0ZWQgYWZ0ZXIg
cmVtb3ZlIGFuIGVsZW1lbnQiKTsKK3Nob3VsZEJlKCdvd25lci5yZW1vdmVDaGlsZChuZXdFbGVt
ZW50KTsgb3duZXIuZWxlbWVudHMubGVuZ3RoJywgJzI0Jyk7CisKK2NvbnRhaW5lci5wYXJlbnRO
b2RlLnJlbW92ZUNoaWxkKGNvbnRhaW5lcik7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmllbGRzZXQvZmllbGRzZXQt
Zm9ybS1jb2xsZWN0aW9uLXJhZGlvbm9kZS1saXN0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvZmllbGRzZXQvZmllbGRzZXQtZm9ybS1jb2xsZWN0aW9uLXJhZGlvbm9kZS1s
aXN0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jOGMzNGIzZjA3YWY3NjRkMjZkN2YwMmRjMmEw
ZjU2YzFiYWM5Mzc5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9m
aWVsZHNldC9maWVsZHNldC1mb3JtLWNvbGxlY3Rpb24tcmFkaW9ub2RlLWxpc3QtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsNTMgQEAKK1RoaXMgdGVzdCBpcyBmb3IgUmFkaW9Ob2RlTGlzdCBzcGVj
aWZpZWQgYXQgaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29y
ay9tdWx0aXBhZ2UvY29tbW9uLWRvbS1pbnRlcmZhY2VzLmh0bWwjcmFkaW9ub2RlbGlzdAorCitP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworCitQQVNTIG93bmVyLmVsZW1lbnRzLmxlbmd0
aCBpcyAyNAorUEFTUyByYWRpb05vZGVMaXN0Lmxlbmd0aCBpcyA0CitQQVNTIHJhZGlvTm9kZUxp
c3RbMF0udmFsdWUgaXMgJ3NlYXJjaGluZycKK1BBU1MgcmFkaW9Ob2RlTGlzdFsxXS52YWx1ZSBp
cyAnMTIzJworUEFTUyByYWRpb05vZGVMaXN0WzJdLnZhbHVlIGlzICdpbnB1dFJhZGlvVmFsdWUn
CitQQVNTIHJhZGlvTm9kZUxpc3RbM10udmFsdWUgaXMgJ2J1dHRvblZhbHVlJworCitDaGFuZ2lu
ZyB0aGUgaW5wdXQgdmFsdWUgdG8gY2hlY2sgUmFkaW9Ob2RlTGlzdCBpcyBsaXZlIHZpZXcgb2Yg
Rm9ybUNvbGxlY3Rpb24KK1BBU1MgcmFkaW9Ob2RlTGlzdFsxXS52YWx1ZSBpcyAnNDU2JworCitD
aGVja2luZyB2YWx1ZSBJREwgYXR0cmlidXRlIG9uIHRoZSBSYWRpb05vZGVMaXN0CitQQVNTIHJh
ZGlvTm9kZUxpc3QudmFsdWUgaXMgIiIKK1BBU1MgcmFkaW9Ob2RlTGlzdC52YWx1ZSA9ICJpbnB1
dFJhZGlvVmFsdWUiOyByYWRpb05vZGVMaXN0WzJdLmNoZWNrZWQgaXMgdHJ1ZQorUEFTUyBPYmpl
Y3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwocmFkaW9Ob2RlTGlzdFsyXSkgaXMgJ1tvYmplY3Qg
SFRNTElucHV0RWxlbWVudF0nCitQQVNTIHJhZGlvTm9kZUxpc3RbMl0udHlwZSBpcyAncmFkaW8n
CitQQVNTIHJhZGlvTm9kZUxpc3QudmFsdWUgaXMgIiIKK1BBU1MgcmFkaW9Ob2RlTGlzdFsyXS5j
aGVja2VkID0gdHJ1ZTsgcmFkaW9Ob2RlTGlzdC52YWx1ZSBpcyAnaW5wdXRSYWRpb1ZhbHVlJwor
CitDaGVjayBSYWRpb05vZGVMaXN0IGlzIHVwZGF0ZWQgYWZ0ZXIgYWRkaW5nIGEgbmV3IGVsZW1l
bnQKK1BBU1Mgb3duZXIuYXBwZW5kQ2hpbGQobmV3RWxlbWVudCk7IHJhZGlvTm9kZUxpc3QubGVu
Z3RoIGlzIDUKK1BBU1Mgb3duZXIuZWxlbWVudHMubGVuZ3RoIGlzIDI1CitQQVNTIHJhZGlvTm9k
ZUxpc3RbNF0udmFsdWUgaXMgJ25ldyBlbGVtZW50JworCitDaGVjayBSYWRpb05vZGVMaXN0IGlz
IHVwZGF0ZWQgYWZ0ZXIgcmVtb3ZlIGFuIGVsZW1lbnQKK1BBU1Mgb3duZXIucmVtb3ZlQ2hpbGQo
bmV3RWxlbWVudCk7IHJhZGlvTm9kZUxpc3QubGVuZ3RoIGlzIDQKK1BBU1MgcmFkaW9Ob2RlTGlz
dFszXS52YWx1ZSBpcyAnYnV0dG9uVmFsdWUnCisKK0NoZWNrIFJhZGlvTm9kZUxpc3QgaXMgdXBk
YXRlZCBhZnRlciBjaGFuZ2UgaW4gaWQsIHR5cGUgYW5kIGNoZWNrZWQgc3RhdGUgb2YgYW4gZWxl
bWVudAorUEFTUyByYWRpb05vZGVMaXN0Lmxlbmd0aCBpcyA0CitBZnRlciBjaGFuZ2luZyB0aGUg
aWQKK1BBU1MgcmFkaW9Ob2RlTGlzdC5sZW5ndGggaXMgMworUEFTUyBlbGVtZW50c0xpc3RbMTNd
LmNoZWNrZWQgPSBmYWxzZTsgcmFkaW9Ob2RlTGlzdC52YWx1ZSBpcyAiIgorUEFTUyBlbGVtZW50
c0xpc3RbMTNdLmNoZWNrZWQgPSB0cnVlOyByYWRpb05vZGVMaXN0LnZhbHVlIGlzICdpbnB1dFJh
ZGlvVmFsdWUnCitQQVNTIGVsZW1lbnRzTGlzdFsxM10udHlwZSA9ICJkYXRlIjsgcmFkaW9Ob2Rl
TGlzdC52YWx1ZSBpcyAnJworCitDaGVjayBzZWNvbmQgUmFkaW9Ob2RlTGlzdCBpcyBhbHNvIGNy
ZWF0ZWQgcHJvcGVybHkKK1BBU1MgcmFkaW9Ob2RlTGlzdDIubGVuZ3RoIGlzIDMKK1BBU1MgcmFk
aW9Ob2RlTGlzdDJbMF0udHlwZSBpcyAndGV4dCcKK1BBU1MgcmFkaW9Ob2RlTGlzdDJbMV0udHlw
ZSBpcyAnZW1haWwnCitQQVNTIHJhZGlvTm9kZUxpc3QyWzJdLnR5cGUgaXMgJ3Jlc2V0JworQWZ0
ZXIgY2hhbmdpbmcgdGhlIGlkCitQQVNTIHJhZGlvTm9kZUxpc3QyLmxlbmd0aCBpcyAyCisKK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpZWxkc2V0L2ZpZWxkc2V0LWZvcm0tY29sbGVj
dGlvbi1yYWRpb25vZGUtbGlzdC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWVsZHNl
dC9maWVsZHNldC1mb3JtLWNvbGxlY3Rpb24tcmFkaW9ub2RlLWxpc3QuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li43NTlmMWZjMjE4ZTYyYTIxMjI0YzZlOTQ2MDM3NTQ5ZWE1OWZkMmYwCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWVsZHNldC9maWVsZHNldC1mb3JtLWNvbGxl
Y3Rpb24tcmFkaW9ub2RlLWxpc3QuaHRtbApAQCAtMCwwICsxLDEyMCBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9
ImRpdklkIj4KKzxmb3JtPgorPGZpZWxkc2V0IGlkPSJmcyI+CisgICAgPGJ1dHRvbiBpZD1idXR0
b24xPjwvYnV0dG9uPgorICAgIDxmaWVsZHNldCBpZD1maWVsZHNldDE+PGxlZ2VuZCBpZD1sZWdl
bmQxPjwvbGVnZW5kPjwvZmllbGRzZXQ+CisgICAgPGlucHV0IGlkPWlucHV0aGlkZGVuIHR5cGU9
aGlkZGVuPgorICAgIDxpbnB1dCBpZD1jb21tb25pbnB1dCB0eXBlPXRleHQ+CisgICAgPGlucHV0
IGlkPWlucHV0Y29tbW9uIHR5cGU9c2VhcmNoIHZhbHVlPXNlYXJjaGluZz4KKyAgICA8aW5wdXQg
aWQ9aW5wdXR1cmwgdHlwZT11cmw+CisgICAgPGlucHV0IGlkPWNvbW1vbmlucHV0IHR5cGU9ZW1h
aWw+CisgICAgPGlucHV0IGlkPWlucHV0cGFzc3dvcmQgdHlwZT1wYXNzd29yZD4KKyAgICA8aW5w
dXQgaWQ9aW5wdXRkYXRlIHR5cGU9ZGF0ZT4KKyAgICA8aW5wdXQgaWQ9bnVtYmVySWQgbmFtZT1p
bnB1dGNvbW1vbiB0eXBlPW51bWJlciB2YWx1ZT0xMjM+CisgICAgPGlucHV0IGlkPWlucHV0cmFu
Z2UgdHlwZT1yYW5nZT4KKyAgICA8aW5wdXQgaWQ9aW5wdXRjb2xvciB0eXBlPWNvbG9yPgorICAg
IDxpbnB1dCBpZD1pbnB1dGNoZWNrYm94IHR5cGU9Y2hlY2tib3g+CisgICAgPGlucHV0IGlkPWlu
cHV0Y29tbW9uIHR5cGU9cmFkaW8gdmFsdWU9ImlucHV0UmFkaW9WYWx1ZSI+CisgICAgPGlucHV0
IGlkPWlucHV0ZmlsZSB0eXBlPWZpbGU+CisgICAgPGlucHV0IGlkPWlucHV0c3VibWl0IHR5cGU9
c3VibWl0PgorICAgIDxpbnB1dCBpZD1pbnB1dGNvbW1vbiB0eXBlPWltYWdlPgorICAgIDxpbnB1
dCBpZD1jb21tb25pbnB1dCB0eXBlPXJlc2V0PgorICAgIDxpbnB1dCBpZD1pbnB1dGNvbW1vbiB0
eXBlPWJ1dHRvbiB2YWx1ZT1idXR0b25WYWx1ZT4KKyAgICA8a2V5Z2VuIGlkPWtleWdlbjE+PC9r
ZXlnZW4+CisgICAgPGxhYmVsIGlkPWxhYmVsMT48L2xhYmVsPgorICAgIDxtZXRlciBpZD1tZXRl
cjE+PC9tZXRlcj4KKyAgICA8b2JqZWN0IGlkPW9iamVjdDE+PC9vYmplY3Q+CisgICAgPG91dHB1
dCBpZD1vdXRwdXQxPjwvb3V0cHV0PgorICAgIDxwcm9ncmVzcyBpZD1wcm9ncmVzczE+PC9wcm9n
cmVzcz4KKyAgICA8c2VsZWN0IGlkPXNlbGVjdDE+CisgICAgICAgIDxvcHRncm91cCBpZD1vcHRn
cm91cDE+Z3JvdXAxPC9vcHRncm91cD4KKyAgICAgICAgPG9wdGlvbiBpZD1vcHRpb24xPm9wdGlv
bjE8L29wdGlvbj4KKyAgICA8L3NlbGVjdD4KKyAgICA8dGV4dGFyZWEgaWQ9dGV4dGFyZWExPjwv
dGV4dGFyZWE+Cis8L2ZpZWxkc2V0PgorPC9mb3JtPgorPC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IGlzIGZvciBSYWRpb05v
ZGVMaXN0IHNwZWNpZmllZCBhdCBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMv
Y3VycmVudC13b3JrL211bHRpcGFnZS9jb21tb24tZG9tLWludGVyZmFjZXMuaHRtbCNyYWRpb25v
ZGVsaXN0ICIpOworZGVidWcoIiIpOwordmFyIG93bmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2ZzJyk7CisKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50cy5sZW5ndGgnLCAnMjQnKTsKKwor
dmFyIGVsZW1lbnRzTGlzdCA9IG93bmVyLmVsZW1lbnRzOwordmFyIHJhZGlvTm9kZUxpc3QgPSBl
bGVtZW50c0xpc3QubmFtZWRJdGVtKCJpbnB1dGNvbW1vbiIpOworc2hvdWxkQmUoJ3JhZGlvTm9k
ZUxpc3QubGVuZ3RoJywgJzQnKTsKKworc2hvdWxkQmUoJ3JhZGlvTm9kZUxpc3RbMF0udmFsdWUn
LCAiJ3NlYXJjaGluZyciKTsKK3Nob3VsZEJlKCdyYWRpb05vZGVMaXN0WzFdLnZhbHVlJywgIicx
MjMnIik7CitzaG91bGRCZSgncmFkaW9Ob2RlTGlzdFsyXS52YWx1ZScsICInaW5wdXRSYWRpb1Zh
bHVlJyIpOworc2hvdWxkQmUoJ3JhZGlvTm9kZUxpc3RbM10udmFsdWUnLCAiJ2J1dHRvblZhbHVl
JyIpOworCitkZWJ1ZygiIik7CitkZWJ1ZygiQ2hhbmdpbmcgdGhlIGlucHV0IHZhbHVlIHRvIGNo
ZWNrIFJhZGlvTm9kZUxpc3QgaXMgbGl2ZSB2aWV3IG9mIEZvcm1Db2xsZWN0aW9uIik7Citkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgibnVtYmVySWQiKS52YWx1ZSA9IDQ1NjsKK3Nob3VsZEJlKCdy
YWRpb05vZGVMaXN0WzFdLnZhbHVlJywgIic0NTYnIik7CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJD
aGVja2luZyB2YWx1ZSBJREwgYXR0cmlidXRlIG9uIHRoZSBSYWRpb05vZGVMaXN0Iik7CitzaG91
bGRCZSgncmFkaW9Ob2RlTGlzdC52YWx1ZScsICciIicpOworc2hvdWxkQmUoJ3JhZGlvTm9kZUxp
c3QudmFsdWUgPSAiaW5wdXRSYWRpb1ZhbHVlIjsgcmFkaW9Ob2RlTGlzdFsyXS5jaGVja2VkJywg
J3RydWUnKTsKK3Nob3VsZEJlKCdPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwocmFkaW9O
b2RlTGlzdFsyXSknLCAiJ1tvYmplY3QgSFRNTElucHV0RWxlbWVudF0nIik7CitzaG91bGRCZSgn
cmFkaW9Ob2RlTGlzdFsyXS50eXBlJywgIidyYWRpbyciKTsKKworcmFkaW9Ob2RlTGlzdFsyXS5j
aGVja2VkID0gZmFsc2U7CitzaG91bGRCZSgncmFkaW9Ob2RlTGlzdC52YWx1ZScsICciIicpOwor
c2hvdWxkQmUoJ3JhZGlvTm9kZUxpc3RbMl0uY2hlY2tlZCA9IHRydWU7IHJhZGlvTm9kZUxpc3Qu
dmFsdWUnLCAiJ2lucHV0UmFkaW9WYWx1ZSciKTsKKwordmFyIG5ld0VsZW1lbnQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpOworbmV3RWxlbWVudC5zZXRBdHRyaWJ1dGUoInR5cGUi
LCAidGV4dCIpOworbmV3RWxlbWVudC5zZXRBdHRyaWJ1dGUoInZhbHVlIiwgIm5ldyBlbGVtZW50
Iik7CituZXdFbGVtZW50LnNldEF0dHJpYnV0ZSgiaWQiLCAiaW5wdXRjb21tb24iKTsKKworZGVi
dWcoIiIpOworZGVidWcoIkNoZWNrIFJhZGlvTm9kZUxpc3QgaXMgdXBkYXRlZCBhZnRlciBhZGRp
bmcgYSBuZXcgZWxlbWVudCIpOworc2hvdWxkQmUoJ293bmVyLmFwcGVuZENoaWxkKG5ld0VsZW1l
bnQpOyByYWRpb05vZGVMaXN0Lmxlbmd0aCcsICc1Jyk7CitzaG91bGRCZSgnb3duZXIuZWxlbWVu
dHMubGVuZ3RoJywgJzI1Jyk7CitzaG91bGRCZSgncmFkaW9Ob2RlTGlzdFs0XS52YWx1ZScsICIn
bmV3IGVsZW1lbnQnIik7CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJDaGVjayBSYWRpb05vZGVMaXN0
IGlzIHVwZGF0ZWQgYWZ0ZXIgcmVtb3ZlIGFuIGVsZW1lbnQiKTsKK3Nob3VsZEJlKCdvd25lci5y
ZW1vdmVDaGlsZChuZXdFbGVtZW50KTsgcmFkaW9Ob2RlTGlzdC5sZW5ndGgnLCAnNCcpOworc2hv
dWxkQmUoJ3JhZGlvTm9kZUxpc3RbM10udmFsdWUnLCAiJ2J1dHRvblZhbHVlJyIpOworCitkZWJ1
ZygiIik7CitkZWJ1ZygiQ2hlY2sgUmFkaW9Ob2RlTGlzdCBpcyB1cGRhdGVkIGFmdGVyIGNoYW5n
ZSBpbiBpZCwgdHlwZSBhbmQgY2hlY2tlZCBzdGF0ZSBvZiBhbiBlbGVtZW50Iik7CitzaG91bGRC
ZSgncmFkaW9Ob2RlTGlzdC5sZW5ndGgnLCAnNCcpOworZGVidWcoIkFmdGVyIGNoYW5naW5nIHRo
ZSBpZCIpOworcmFkaW9Ob2RlTGlzdFszXS5pZCA9ICJjaGFuZ2VkTmFtZSI7CitzaG91bGRCZSgn
cmFkaW9Ob2RlTGlzdC5sZW5ndGgnLCAnMycpOworCitzaG91bGRCZSgnZWxlbWVudHNMaXN0WzEz
XS5jaGVja2VkID0gZmFsc2U7IHJhZGlvTm9kZUxpc3QudmFsdWUnLCAnIiInKTsKK3Nob3VsZEJl
KCdlbGVtZW50c0xpc3RbMTNdLmNoZWNrZWQgPSB0cnVlOyByYWRpb05vZGVMaXN0LnZhbHVlJywg
IidpbnB1dFJhZGlvVmFsdWUnIik7CitzaG91bGRCZSgnZWxlbWVudHNMaXN0WzEzXS50eXBlID0g
ImRhdGUiOyByYWRpb05vZGVMaXN0LnZhbHVlJywgIicnIik7CisKK2RlYnVnKCIiKTsKK2RlYnVn
KCJDaGVjayBzZWNvbmQgUmFkaW9Ob2RlTGlzdCBpcyBhbHNvIGNyZWF0ZWQgcHJvcGVybHkiKTsK
K3ZhciByYWRpb05vZGVMaXN0MiA9IGVsZW1lbnRzTGlzdC5uYW1lZEl0ZW0oImNvbW1vbmlucHV0
Iik7CitzaG91bGRCZSgncmFkaW9Ob2RlTGlzdDIubGVuZ3RoJywgJzMnKTsKKworc2hvdWxkQmUo
J3JhZGlvTm9kZUxpc3QyWzBdLnR5cGUnLCAiJ3RleHQnIik7CitzaG91bGRCZSgncmFkaW9Ob2Rl
TGlzdDJbMV0udHlwZScsICInZW1haWwnIik7CitzaG91bGRCZSgncmFkaW9Ob2RlTGlzdDJbMl0u
dHlwZScsICIncmVzZXQnIik7CityYWRpb05vZGVMaXN0MlsyXS5pZCA9ICJpZENoYW5nZWQiOwor
ZGVidWcoIkFmdGVyIGNoYW5naW5nIHRoZSBpZCIpOworc2hvdWxkQmUoJ3JhZGlvTm9kZUxpc3Qy
Lmxlbmd0aCcsICcyJyk7CitkZWJ1ZygiIik7CisKK3ZhciBjb250YWluZXIgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiZGl2SWQiKTsKK2NvbnRhaW5lci5wYXJlbnROb2RlLnJlbW92ZUNoaWxk
KGNvbnRhaW5lcik7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>144037</attachid>
            <date>2012-05-25 03:58:33 -0700</date>
            <delta_ts>2012-05-28 12:29:26 -0700</delta_ts>
            <desc>patch</desc>
            <filename>bug-80110-20120525162539.patch</filename>
            <type>text/plain</type>
            <size>28609</size>
            <attacher name="Rakesh">rakeshchaitan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4NTExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmVkYzdjNGI5NzYwMGY1
MTA0OTQ2MmZhOWJjZGMyYmU2Y2VmYmMwNi4uNjJjN2Y3YmExYjRiYTgzZDA0NmY5MWRlYWI0NTM3
Mjg4ZmU2MjJhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDEyLTA1LTI1ICBSYWtl
c2ggS04gIDxyYWtlc2gua25AbW90b3JvbGEuY29tPgorCisgICAgICAgIFtGb3Jtc10gSFRNTEZp
ZWxkU2V0RWxlbWVudC5pZGwgZG9lc24ndCBoYXZlIGVsZW1lbnRzIGF0dHJpYnV0ZS4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwMTEwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50ZWQgZWxl
bWVudHMgYXR0cmlidXRlIGZvciBIVE1MRmllbGRTZXRFbGVtZW50LiBUaGlzIGlzIHNwZWMnZWQg
YXQKKyAgICAgICAgaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQt
d29yay9tdWx0aXBhZ2UvZm9ybXMuaHRtbCNkb20tZmllbGRzZXQtZWxlbWVudHMKKworICAgICAg
ICBUZXN0czogZmFzdC9mb3Jtcy9maWVsZHNldC9maWVsZHNldC1lbGVtZW50cy5odG1sCisgICAg
ICAgICAgICAgICBmYXN0L2Zvcm1zL2ZpZWxkc2V0L2ZpZWxkc2V0LWZvcm0tY29sbGVjdGlvbi1y
YWRpb25vZGUtbGlzdC5odG1sCisKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpOb2RlOjpyYWRpb05vZGVMaXN0KToKKyAgICAgICAgRXh0ZW5kZWQgQVNTRVJUIHRv
IGFzc2VydCBpZiBub3QgSFRNTEZpZWxkU2V0RWxlbWVudCBvciBIVE1MRm9ybUVsZW1lbnQuCisg
ICAgICAgICogaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxGaWVsZFNldEVsZW1lbnQ6OmVsZW1lbnRzKToKKyAgICAgICAgRWxlbWVudHMgYXR0cmli
dXRlIGltcGxlbWVudGF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZpZWxkU2V0RWxlbWVu
dDo6cmVmcmVzaEVsZW1lbnRzSWZOZWVkZWQpOgorICAgICAgICBVcGRhdGUgdGhlIGZvcm1jb250
cm9sIGVsZW1lbnRzIGNvbGxlY3Rpb25zIGlmIGRvbSB0cmVlIGdvdCBtb2RpZmllZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxGaWVsZFNldEVsZW1lbnQ6OmFzc29jaWF0ZWRFbGVtZW50cyk6Cisg
ICAgICAgIEZvcm1Db250cm9sIGVsZW1lbnRzIGNvbGxlY3Rpb24gYWNjZXNzb3IuCisgICAgICAg
IChXZWJDb3JlOjpIVE1MRmllbGRTZXRFbGVtZW50OjpsZW5ndGgpOgorICAgICAgICBOdW1iZXIg
b2YgZWxlbWVudHMgaW4gdGhlIGZpZWxkc2V0IGdyb3VwLgorICAgICAgICAqIGh0bWwvSFRNTEZp
ZWxkU2V0RWxlbWVudC5oOgorICAgICAgICBBZGRlZCBlbGVtZW50cyBjb2xsZWN0aW9uIG1lbWJl
ciBhbmQgZm9ybSBjb250cm9sIGNvbGxlY3Rpb24gbWVtYmVycy4KKyAgICAgICAgKiBodG1sL0hU
TUxGaWVsZFNldEVsZW1lbnQuaWRsOgorICAgICAgICBBZGRlZCBlbGVtZW50cyBhdHRyaWJ1dGUu
CisgICAgICAgICogaHRtbC9IVE1MRm9ybUNvbGxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTEZvcm1Db2xsZWN0aW9uOjpmb3JtQ29udHJvbEVsZW1lbnRzKToKKyAgICAgICAgQWRk
ZWQgc3VwcG9ydCBmb3IgSFRNTEZpZWxkU2V0RWxlbWVudCwgYmFzZWQgb24gYmFzZSBlbGVtZW50
IHR5cGUgZ2V0cyBpdHMgYXNzb2NpYXRlZCBlbGVtZW50cy4KKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxGb3JtQ29sbGVjdGlvbjo6bnVtYmVyT2ZGb3JtQ29udHJvbEVsZW1lbnRzKTogRGl0dG8KKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29sbGVjdGlvbjo6Z2V0TmFtZWRGb3JtSXRlbSk6IFBy
b2Nlc3MgaW1hZ2UgZWxlbWVudHMgb25seSBmb3IgZm9ybSBlbGVtZW50LgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTEZvcm1Db2xsZWN0aW9uOjp1cGRhdGVOYW1lQ2FjaGUpOiBEaXR0bworICAgICAg
ICAqIGh0bWwvUmFkaW9Ob2RlTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSYWRpb05vZGVM
aXN0OjpSYWRpb05vZGVMaXN0KToKKyAgICAgICAgRHluYW1pY1N1YlRyZWUgcm9vdCBlbGVtZW50
IGlzIGRlY2lkZWQgYmFzZWQgb24gdGhlIHR5cGUgd2hldGhlciBiYXNlIGVsZW1lbnQgaXMgZm9y
bSBvciBmaWVsZHNldCBlbGVtZW50LgorICAgICAgICBSZW5hbWVkIG1fZm9ybUVsZW1lbnQgdG8g
bV9iYXNlRWxlbWVudC4KKyAgICAgICAgKFdlYkNvcmU6OlJhZGlvTm9kZUxpc3Q6On5SYWRpb05v
ZGVMaXN0KToKKyAgICAgICAgUmVuYW1lZCBtX2Zvcm1FbGVtZW50IHRvIG1fYmFzZUVsZW1lbnQu
CisgICAgICAgIChXZWJDb3JlOjpSYWRpb05vZGVMaXN0OjpjaGVja0VsZW1lbnRNYXRjaGVzUmFk
aW9Ob2RlTGlzdEZpbHRlcik6CisgICAgICAgIEZvcm0gZWxlbWVudCBzcGVjaWZpYyBjaGFuZ2Vz
IG1vdmVkIHVuZGVyIGZvcm0gZWxlbWVudCBjaGVjay4KKyAgICAgICAgKiBodG1sL1JhZGlvTm9k
ZUxpc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJhZGlvTm9kZUxpc3Q6OmNyZWF0ZSk6CisgICAg
ICAgIChSYWRpb05vZGVMaXN0KToKKyAgICAgICAgUmVuYW1lZCBtX2Zvcm1FbGVtZW50IHRvIG1f
YmFzZUVsZW1lbnQuCisKIDIwMTItMDUtMjUgIFRhaWp1IFRzdWlraSAgPHR6aWtAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IERyb3AgSW5zcGVjdG9yRmlsZVN5c3RlbUlu
c3RydW1lbnRhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IDlhMWY1YzBiMDdhZmQ3N2I0ODE5ZmVj
MDQwOWUzYmIzMzMyZmMzNzYuLmFlZDE5ZmM0Y2FmYjFhN2Y2MmExNmM3NGFhOGRiZjMxMmI4MzEz
ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTI5MzEsNyArMjkzMSw3IEBAIHZvaWQgTm9kZVJhcmVE
YXRhOjpjbGVhckNoaWxkTm9kZUxpc3RDYWNoZSgpCiAKIFBhc3NSZWZQdHI8UmFkaW9Ob2RlTGlz
dD4gTm9kZTo6cmFkaW9Ob2RlTGlzdChjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCiB7Ci0gICAg
QVNTRVJUKGhhc1RhZ05hbWUoZm9ybVRhZykpOworICAgIEFTU0VSVChoYXNUYWdOYW1lKGZvcm1U
YWcpIHx8IGhhc1RhZ05hbWUoZmllbGRzZXRUYWcpKTsKIAogICAgIE5vZGVMaXN0c05vZGVEYXRh
KiBub2RlTGlzdHMgPSBlbnN1cmVSYXJlRGF0YSgpLT5lbnN1cmVOb2RlTGlzdHModGhpcyk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwCmluZGV4IDhhMjQw
YzAyNDlmMzRhNzhiZTkwMjkwOTk3MmUxZTBiZGIzMDA5NzguLjc0ODNjNGY4MTdmNTI5YTg4OGI2
NWVlMzVkNDc4MWEwNDlhMGRhOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZpZWxkU2V0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRmllbGRT
ZXRFbGVtZW50LmNwcApAQCAtMjQsOSArMjQsMTEgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIkhUTUxGaWVsZFNldEVsZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MTGVnZW5kRWxl
bWVudC5oIgogCisjaW5jbHVkZSAiSFRNTEZvcm1Db2xsZWN0aW9uLmgiCisjaW5jbHVkZSAiSFRN
TExlZ2VuZEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJIVE1M
T2JqZWN0RWxlbWVudC5oIgogI2luY2x1ZGUgIlJlbmRlckZpZWxkc2V0LmgiCiAjaW5jbHVkZSA8
d3RmL1N0ZExpYkV4dHJhcy5oPgogCkBAIC04MSw0ICs4Myw1MyBAQCBIVE1MTGVnZW5kRWxlbWVu
dCogSFRNTEZpZWxkU2V0RWxlbWVudDo6bGVnZW5kKCkgY29uc3QKICAgICByZXR1cm4gMDsKIH0K
IAorSFRNTENvbGxlY3Rpb24qIEhUTUxGaWVsZFNldEVsZW1lbnQ6OmVsZW1lbnRzKCkKK3sKKyAg
ICBpZiAoIW1fZWxlbWVudHNDb2xsZWN0aW9uKQorICAgICAgICBtX2VsZW1lbnRzQ29sbGVjdGlv
biA9IEhUTUxGb3JtQ29sbGVjdGlvbjo6Y3JlYXRlKHRoaXMpOworICAgIHJldHVybiBtX2VsZW1l
bnRzQ29sbGVjdGlvbi5nZXQoKTsKK30KKwordm9pZCBIVE1MRmllbGRTZXRFbGVtZW50OjpyZWZy
ZXNoRWxlbWVudHNJZk5lZWRlZCgpIGNvbnN0Cit7CisgICAgdWludDY0X3QgZG9jVmVyc2lvbiA9
IGRvY3VtZW50KCktPmRvbVRyZWVWZXJzaW9uKCk7CisgICAgaWYgKG1fZG9jdW1lbnRWZXJzaW9u
ID09IGRvY1ZlcnNpb24pCisgICAgICAgIHJldHVybjsKKworICAgIG1fZG9jdW1lbnRWZXJzaW9u
ID0gZG9jVmVyc2lvbjsKKworICAgIG1fYXNzb2NpYXRlZEVsZW1lbnRzLmNsZWFyKCk7CisKKyAg
ICBmb3IgKE5vZGUqIG5vZGUgPSBmaXJzdENoaWxkKCk7IG5vZGU7IG5vZGUgPSBub2RlLT50cmF2
ZXJzZU5leHROb2RlKHRoaXMpKSB7CisgICAgICAgIGlmICghbm9kZS0+aXNFbGVtZW50Tm9kZSgp
KQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUo
b2JqZWN0VGFnKSkgeworICAgICAgICAgICAgbV9hc3NvY2lhdGVkRWxlbWVudHMuYXBwZW5kKHN0
YXRpY19jYXN0PEhUTUxPYmplY3RFbGVtZW50Kj4obm9kZSkpOworICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXRvRWxlbWVudChub2RlKS0+aXNGb3JtQ29u
dHJvbEVsZW1lbnQoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIG1fYXNzb2Np
YXRlZEVsZW1lbnRzLmFwcGVuZChzdGF0aWNfY2FzdDxIVE1MRm9ybUNvbnRyb2xFbGVtZW50Kj4o
bm9kZSkpOworICAgIH0KK30KKworY29uc3QgVmVjdG9yPEZvcm1Bc3NvY2lhdGVkRWxlbWVudCo+
JiBIVE1MRmllbGRTZXRFbGVtZW50Ojphc3NvY2lhdGVkRWxlbWVudHMoKSBjb25zdAoreworICAg
IHJlZnJlc2hFbGVtZW50c0lmTmVlZGVkKCk7CisgICAgcmV0dXJuIG1fYXNzb2NpYXRlZEVsZW1l
bnRzOworfQorCit1bnNpZ25lZCBIVE1MRmllbGRTZXRFbGVtZW50OjpsZW5ndGgoKSBjb25zdAor
eworICAgIHJlZnJlc2hFbGVtZW50c0lmTmVlZGVkKCk7CisgICAgdW5zaWduZWQgbGVuID0gMDsK
KyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9hc3NvY2lhdGVkRWxlbWVudHMuc2l6ZSgp
OyArK2kpCisgICAgICAgIGlmIChtX2Fzc29jaWF0ZWRFbGVtZW50c1tpXS0+aXNFbnVtZXJhdGFi
bGUoKSkKKyAgICAgICAgICAgICsrbGVuOworICAgIHJldHVybiBsZW47Cit9CisKIH0gLy8gbmFt
ZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5oCmluZGV4IDll
OTM1OTlmYWIwZjQ0N2YxOTZmMGU1NWU5YWE0Mjc5YzUxYjA3NzQuLmFiOGY4MWI0ZDFhMTkwODZl
MmI2YmExNjY5MzFiMzJmYzlhOGUwNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEZpZWxkU2V0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxk
U2V0RWxlbWVudC5oCkBAIC0yNSwxNCArMjUsMjQgQEAKICNkZWZpbmUgSFRNTEZpZWxkU2V0RWxl
bWVudF9oCiAKICNpbmNsdWRlICJIVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgiCisjaW5jbHVkZSA8
d3RmL093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEZvcm1Bc3NvY2lh
dGVkRWxlbWVudDsKK2NsYXNzIEhUTUxDb2xsZWN0aW9uOworY2xhc3MgSFRNTEZvcm1Db2xsZWN0
aW9uOworCiBjbGFzcyBIVE1MRmllbGRTZXRFbGVtZW50IDogcHVibGljIEhUTUxGb3JtQ29udHJv
bEVsZW1lbnQgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxGaWVsZFNldEVs
ZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqLCBIVE1MRm9ybUVs
ZW1lbnQqKTsKICAgICBIVE1MTGVnZW5kRWxlbWVudCogbGVnZW5kKCkgY29uc3Q7CiAKKyAgICBI
VE1MQ29sbGVjdGlvbiogZWxlbWVudHMoKTsKKworICAgIGNvbnN0IFZlY3RvcjxGb3JtQXNzb2Np
YXRlZEVsZW1lbnQqPiYgYXNzb2NpYXRlZEVsZW1lbnRzKCkgY29uc3Q7CisgICAgdW5zaWduZWQg
bGVuZ3RoKCkgY29uc3Q7CisKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZWRB
dHRyaWJ1dGVDaGFuZ2VkKCkgT1ZFUlJJREU7CiAKQEAgLTQ0LDYgKzU0LDEzIEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwg
UmVuZGVyU3R5bGUqKTsKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgZm9ybUNvbnRy
b2xUeXBlKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHJlY2FsY1dpbGxWYWxpZGF0ZSgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICB2b2lkIHJlZnJlc2hFbGVtZW50c0lmTmVlZGVk
KCkgY29uc3Q7CisKKyAgICBPd25QdHI8SFRNTEZvcm1Db2xsZWN0aW9uPiBtX2VsZW1lbnRzQ29s
bGVjdGlvbjsKKyAgICBtdXRhYmxlIFZlY3RvcjxGb3JtQXNzb2NpYXRlZEVsZW1lbnQqPiBtX2Fz
c29jaWF0ZWRFbGVtZW50czsKKyAgICAvLyBXaGVuIGRvbSB0cmVlIGlzIG1vZGlmaWVkLCB3ZSBo
YXZlIHRvIHJlZnJlc2ggdGhlIG1fYXNzb2NpYXRlZEVsZW1lbnRzIGFycmF5LgorICAgIG11dGFi
bGUgdWludDY0X3QgbV9kb2N1bWVudFZlcnNpb247CiB9OwogCiB9IC8vIG5hbWVzcGFjZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5pZGwKaW5kZXggNjAwNmFkNzA0
OTk2YmQ4NTAyNzVjYjhjMzIxZTE0MmE3NmYyZjQxNS4uZDY3YjNmNjQ3MmM2MTJhMTZkZTY5MzI5
NzYyMTZjY2ZkZGI2N2QyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRmll
bGRTZXRFbGVtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVs
ZW1lbnQuaWRsCkBAIC0yNiw2ICsyNiw4IEBAIG1vZHVsZSBodG1sIHsKIAogICAgICAgICByZWFk
b25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHR5cGU7CiAKKyAgICAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIEhUTUxDb2xsZWN0aW9uIGVsZW1lbnRzOworCiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBib29sZWFuICAgICAgICAgd2lsbFZhbGlkYXRlOwogICAgICAgICByZWFkb25seSBhdHRyaWJ1
dGUgVmFsaWRpdHlTdGF0ZSAgIHZhbGlkaXR5OwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUg
RE9NU3RyaW5nICAgICAgIHZhbGlkYXRpb25NZXNzYWdlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRm9ybUNvbGxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRm9ybUNvbGxlY3Rpb24uY3BwCmluZGV4IGM1MWZhZTRhNThiNmQwOGVjNmZhY2FhODEzYmU5
ODFmYzNlZDEwZmIuLmNiM2NjYTk1NDliMzU5YzVlNGZkOTEzZjY2NDkwOWVlZDc2Y2FmNTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db2xsZWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29sbGVjdGlvbi5jcHAKQEAgLTIzLDYgKzIz
LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJIVE1MRm9ybUNvbGxlY3Rpb24u
aCIKIAorI2luY2x1ZGUgIkhUTUxGaWVsZFNldEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MRm9y
bUNvbnRyb2xFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEZvcm1FbGVtZW50LmgiCiAjaW5jbHVk
ZSAiSFRNTEltYWdlRWxlbWVudC5oIgpAQCAtNTMsOCArNTQsMTAgQEAgSFRNTEZvcm1Db2xsZWN0
aW9uOjp+SFRNTEZvcm1Db2xsZWN0aW9uKCkKIGNvbnN0IFZlY3RvcjxGb3JtQXNzb2NpYXRlZEVs
ZW1lbnQqPiYgSFRNTEZvcm1Db2xsZWN0aW9uOjpmb3JtQ29udHJvbEVsZW1lbnRzKCkgY29uc3QK
IHsKICAgICBBU1NFUlQoYmFzZSgpKTsKLSAgICBBU1NFUlQoYmFzZSgpLT5oYXNUYWdOYW1lKGZv
cm1UYWcpKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTEZvcm1FbGVtZW50Kj4oYmFzZSgp
KS0+YXNzb2NpYXRlZEVsZW1lbnRzKCk7CisgICAgQVNTRVJUKGJhc2UoKS0+aGFzVGFnTmFtZShm
b3JtVGFnKSB8fCBiYXNlKCktPmhhc1RhZ05hbWUoZmllbGRzZXRUYWcpKTsKKyAgICBpZiAoYmFz
ZSgpLT5oYXNUYWdOYW1lKGZvcm1UYWcpKQorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRN
TEZvcm1FbGVtZW50Kj4oYmFzZSgpKS0+YXNzb2NpYXRlZEVsZW1lbnRzKCk7CisgICAgcmV0dXJu
IHN0YXRpY19jYXN0PEhUTUxGaWVsZFNldEVsZW1lbnQqPihiYXNlKCkpLT5hc3NvY2lhdGVkRWxl
bWVudHMoKTsKIH0KIAogY29uc3QgVmVjdG9yPEhUTUxJbWFnZUVsZW1lbnQqPiYgSFRNTEZvcm1D
b2xsZWN0aW9uOjpmb3JtSW1hZ2VFbGVtZW50cygpIGNvbnN0CkBAIC02Nyw4ICs3MCwxMCBAQCBj
b25zdCBWZWN0b3I8SFRNTEltYWdlRWxlbWVudCo+JiBIVE1MRm9ybUNvbGxlY3Rpb246OmZvcm1J
bWFnZUVsZW1lbnRzKCkgY29uc3QKIHVuc2lnbmVkIEhUTUxGb3JtQ29sbGVjdGlvbjo6bnVtYmVy
T2ZGb3JtQ29udHJvbEVsZW1lbnRzKCkgY29uc3QKIHsKICAgICBBU1NFUlQoYmFzZSgpKTsKLSAg
ICBBU1NFUlQoYmFzZSgpLT5oYXNUYWdOYW1lKGZvcm1UYWcpKTsKLSAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8SFRNTEZvcm1FbGVtZW50Kj4oYmFzZSgpKS0+bGVuZ3RoKCk7CisgICAgQVNTRVJUKGJh
c2UoKS0+aGFzVGFnTmFtZShmb3JtVGFnKSB8fCBiYXNlKCktPmhhc1RhZ05hbWUoZmllbGRzZXRU
YWcpKTsKKyAgICBpZiAoYmFzZSgpLT5oYXNUYWdOYW1lKGZvcm1UYWcpKQorICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8SFRNTEZvcm1FbGVtZW50Kj4oYmFzZSgpKS0+bGVuZ3RoKCk7CisgICAg
cmV0dXJuIHN0YXRpY19jYXN0PEhUTUxGaWVsZFNldEVsZW1lbnQqPihiYXNlKCkpLT5sZW5ndGgo
KTsKIH0KIAogdW5zaWduZWQgSFRNTEZvcm1Db2xsZWN0aW9uOjpjYWxjTGVuZ3RoKCkgY29uc3QK
QEAgLTEzNCw2ICsxMzksOSBAQCBFbGVtZW50KiBIVE1MRm9ybUNvbGxlY3Rpb246OmdldE5hbWVk
Rm9ybUl0ZW0oY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUsIGNvbgogICAgICAgICB9CiAg
ICAgfQogCisgICAgaWYgKGJhc2UoKS0+aGFzVGFnTmFtZShmaWVsZHNldFRhZykpCisgICAgICAg
IHJldHVybiAwOworCiAgICAgY29uc3QgVmVjdG9yPEhUTUxJbWFnZUVsZW1lbnQqPiYgaW1hZ2VF
bGVtZW50c0FycmF5ID0gZm9ybUltYWdlRWxlbWVudHMoKTsKICAgICBpZiAoIWZvdW5kSW5wdXRF
bGVtZW50cykgewogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaW1hZ2VFbGVtZW50
c0FycmF5LnNpemUoKTsgKytpKSB7CkBAIC0xOTUsMTUgKzIwMywxNyBAQCB2b2lkIEhUTUxGb3Jt
Q29sbGVjdGlvbjo6dXBkYXRlTmFtZUNhY2hlKCkgY29uc3QKICAgICAgICAgfQogICAgIH0KIAot
ICAgIGNvbnN0IFZlY3RvcjxIVE1MSW1hZ2VFbGVtZW50Kj4mIGltYWdlRWxlbWVudHNBcnJheSA9
IGZvcm1JbWFnZUVsZW1lbnRzKCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGltYWdl
RWxlbWVudHNBcnJheS5zaXplKCk7ICsraSkgewotICAgICAgICBIVE1MSW1hZ2VFbGVtZW50KiBl
bGVtZW50ID0gaW1hZ2VFbGVtZW50c0FycmF5W2ldOwotICAgICAgICBjb25zdCBBdG9taWNTdHJp
bmcmIGlkQXR0clZhbCA9IGVsZW1lbnQtPmdldElkQXR0cmlidXRlKCk7Ci0gICAgICAgIGNvbnN0
IEF0b21pY1N0cmluZyYgbmFtZUF0dHJWYWwgPSBlbGVtZW50LT5nZXROYW1lQXR0cmlidXRlKCk7
Ci0gICAgICAgIGlmICghaWRBdHRyVmFsLmlzRW1wdHkoKSAmJiAhZm91bmRJbnB1dEVsZW1lbnRz
LmNvbnRhaW5zKGlkQXR0clZhbC5pbXBsKCkpKQotICAgICAgICAgICAgYXBwZW5kKG1fY2FjaGUu
aWRDYWNoZSwgaWRBdHRyVmFsLCBlbGVtZW50KTsKLSAgICAgICAgaWYgKCFuYW1lQXR0clZhbC5p
c0VtcHR5KCkgJiYgaWRBdHRyVmFsICE9IG5hbWVBdHRyVmFsICYmICFmb3VuZElucHV0RWxlbWVu
dHMuY29udGFpbnMobmFtZUF0dHJWYWwuaW1wbCgpKSkKLSAgICAgICAgICAgIGFwcGVuZChtX2Nh
Y2hlLm5hbWVDYWNoZSwgbmFtZUF0dHJWYWwsIGVsZW1lbnQpOworICAgIGlmIChiYXNlKCktPmhh
c1RhZ05hbWUoZm9ybVRhZykpIHsKKyAgICAgICAgY29uc3QgVmVjdG9yPEhUTUxJbWFnZUVsZW1l
bnQqPiYgaW1hZ2VFbGVtZW50c0FycmF5ID0gZm9ybUltYWdlRWxlbWVudHMoKTsKKyAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGltYWdlRWxlbWVudHNBcnJheS5zaXplKCk7ICsraSkg
eworICAgICAgICAgICAgSFRNTEltYWdlRWxlbWVudCogZWxlbWVudCA9IGltYWdlRWxlbWVudHNB
cnJheVtpXTsKKyAgICAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgaWRBdHRyVmFsID0gZWxl
bWVudC0+Z2V0SWRBdHRyaWJ1dGUoKTsKKyAgICAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYg
bmFtZUF0dHJWYWwgPSBlbGVtZW50LT5nZXROYW1lQXR0cmlidXRlKCk7CisgICAgICAgICAgICBp
ZiAoIWlkQXR0clZhbC5pc0VtcHR5KCkgJiYgIWZvdW5kSW5wdXRFbGVtZW50cy5jb250YWlucyhp
ZEF0dHJWYWwuaW1wbCgpKSkKKyAgICAgICAgICAgICAgICBhcHBlbmQobV9jYWNoZS5pZENhY2hl
LCBpZEF0dHJWYWwsIGVsZW1lbnQpOworICAgICAgICAgICAgaWYgKCFuYW1lQXR0clZhbC5pc0Vt
cHR5KCkgJiYgaWRBdHRyVmFsICE9IG5hbWVBdHRyVmFsICYmICFmb3VuZElucHV0RWxlbWVudHMu
Y29udGFpbnMobmFtZUF0dHJWYWwuaW1wbCgpKSkKKyAgICAgICAgICAgICAgICBhcHBlbmQobV9j
YWNoZS5uYW1lQ2FjaGUsIG5hbWVBdHRyVmFsLCBlbGVtZW50KTsKKyAgICAgICAgfQogICAgIH0K
IAogICAgIG1fY2FjaGUuaGFzTmFtZUNhY2hlID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvUmFkaW9Ob2RlTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhZGlv
Tm9kZUxpc3QuY3BwCmluZGV4IGIzNGE2Yzk2NDQ4ZTViMWZlOWZiOTNlYzc1ZDYxZGMyM2U4ODFh
ZTMuLjQwOTI5YmNhMzI4ZmY3NDY3ZGQ5MDMzNWYzNjEwOWM5MjYxYmI2M2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFkaW9Ob2RlTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9SYWRpb05vZGVMaXN0LmNwcApAQCAtMzYsMTggKzM2LDE4IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotUmFkaW9Ob2RlTGlzdDo6
UmFkaW9Ob2RlTGlzdChjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIEVsZW1lbnQqIGZvcm1FbGVt
ZW50KQotICAgIDogRHluYW1pY1N1YnRyZWVOb2RlTGlzdChmb3JtRWxlbWVudC0+ZG9jdW1lbnQo
KSkKK1JhZGlvTm9kZUxpc3Q6OlJhZGlvTm9kZUxpc3QoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1l
LCBFbGVtZW50KiBiYXNlRWxlbWVudCkKKyAgICA6IER5bmFtaWNTdWJ0cmVlTm9kZUxpc3QoYmFz
ZUVsZW1lbnQtPmhhc1RhZ05hbWUoZm9ybVRhZykgPyBzdGF0aWNfY2FzdDxOb2RlKj4oYmFzZUVs
ZW1lbnQtPmRvY3VtZW50KCkpIDogYmFzZUVsZW1lbnQpCiAgICAgLCBtX25hbWUobmFtZSkKLSAg
ICAsIG1fZm9ybUVsZW1lbnQoZm9ybUVsZW1lbnQpCisgICAgLCBtX2Jhc2VFbGVtZW50KGJhc2VF
bGVtZW50KQogewotICAgIG1fZm9ybUVsZW1lbnQtPmRvY3VtZW50KCktPnJlZ2lzdGVyRHluYW1p
Y1N1YnRyZWVOb2RlTGlzdCh0aGlzKTsKKyAgICBtX2Jhc2VFbGVtZW50LT5kb2N1bWVudCgpLT5y
ZWdpc3RlckR5bmFtaWNTdWJ0cmVlTm9kZUxpc3QodGhpcyk7CiB9CiAKIFJhZGlvTm9kZUxpc3Q6
On5SYWRpb05vZGVMaXN0KCkKIHsKLSAgICBtX2Zvcm1FbGVtZW50LT5yZW1vdmVDYWNoZWRSYWRp
b05vZGVMaXN0KHRoaXMsIG1fbmFtZSk7Ci0gICAgbV9mb3JtRWxlbWVudC0+ZG9jdW1lbnQoKS0+
dW5yZWdpc3RlckR5bmFtaWNTdWJ0cmVlTm9kZUxpc3QodGhpcyk7CisgICAgbV9iYXNlRWxlbWVu
dC0+cmVtb3ZlQ2FjaGVkUmFkaW9Ob2RlTGlzdCh0aGlzLCBtX25hbWUpOworICAgIG1fYmFzZUVs
ZW1lbnQtPmRvY3VtZW50KCktPnVucmVnaXN0ZXJEeW5hbWljU3VidHJlZU5vZGVMaXN0KHRoaXMp
OwogfQogCiBzdGF0aWMgaW5saW5lIEhUTUxJbnB1dEVsZW1lbnQqIHRvUmFkaW9CdXR0b25JbnB1
dEVsZW1lbnQoTm9kZSogbm9kZSkKQEAgLTg2LDEzICs4NiwxNSBAQCB2b2lkIFJhZGlvTm9kZUxp
c3Q6OnNldFZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUpCiBib29sIFJhZGlvTm9kZUxpc3Q6OmNo
ZWNrRWxlbWVudE1hdGNoZXNSYWRpb05vZGVMaXN0RmlsdGVyKEVsZW1lbnQqIHRlc3RFbGVtZW50
KSBjb25zdAogewogICAgIEFTU0VSVCh0ZXN0RWxlbWVudC0+aGFzVGFnTmFtZShvYmplY3RUYWcp
IHx8IHRlc3RFbGVtZW50LT5pc0Zvcm1Db250cm9sRWxlbWVudCgpKTsKLSAgICBIVE1MRm9ybUVs
ZW1lbnQqIGZvcm1FbGVtZW50ID0gMDsKLSAgICBpZiAodGVzdEVsZW1lbnQtPmhhc1RhZ05hbWUo
b2JqZWN0VGFnKSkKLSAgICAgICAgZm9ybUVsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MT2JqZWN0
RWxlbWVudCo+KHRlc3RFbGVtZW50KS0+Zm9ybSgpOwotICAgIGVsc2UKLSAgICAgICAgZm9ybUVs
ZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MRm9ybUNvbnRyb2xFbGVtZW50Kj4odGVzdEVsZW1lbnQp
LT5mb3JtKCk7Ci0gICAgaWYgKCFmb3JtRWxlbWVudCB8fCBmb3JtRWxlbWVudCAhPSBtX2Zvcm1F
bGVtZW50KQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1fYmFzZUVsZW1lbnQtPmhh
c1RhZ05hbWUoZm9ybVRhZykpIHsKKyAgICAgICAgSFRNTEZvcm1FbGVtZW50KiBmb3JtRWxlbWVu
dCA9IDA7CisgICAgICAgIGlmICh0ZXN0RWxlbWVudC0+aGFzVGFnTmFtZShvYmplY3RUYWcpKQor
ICAgICAgICAgICAgZm9ybUVsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MT2JqZWN0RWxlbWVudCo+
KHRlc3RFbGVtZW50KS0+Zm9ybSgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBmb3JtRWxl
bWVudCA9IHN0YXRpY19jYXN0PEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqPih0ZXN0RWxlbWVudCkt
PmZvcm0oKTsKKyAgICAgICAgaWYgKCFmb3JtRWxlbWVudCB8fCBmb3JtRWxlbWVudCAhPSBtX2Jh
c2VFbGVtZW50KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KIAogICAgIHJldHVy
biB0ZXN0RWxlbWVudC0+Z2V0SWRBdHRyaWJ1dGUoKSA9PSBtX25hbWUgfHwgdGVzdEVsZW1lbnQt
PmdldE5hbWVBdHRyaWJ1dGUoKSA9PSBtX25hbWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL1JhZGlvTm9kZUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFkaW9Ob2Rl
TGlzdC5oCmluZGV4IGJlY2I1MmVhZGU1NWE1ZDNhNzE0MDQ4ZWIyNmM2ZGZmZGIzZDhjMDEuLjc3
ODJlNDgwMmU4Mjc3ZmVhNGIyZTBkZjdkMWEzZGY0YWJkODQ2OWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvUmFkaW9Ob2RlTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
UmFkaW9Ob2RlTGlzdC5oCkBAIC0zNiw5ICszNiw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgUmFkaW9Ob2RlTGlzdCA6IHB1YmxpYyBEeW5hbWljU3VidHJlZU5vZGVMaXN0IHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxSYWRpb05vZGVMaXN0PiBjcmVhdGUoY29uc3Qg
QXRvbWljU3RyaW5nJiBuYW1lLCBFbGVtZW50KiBmb3JtRWxlbWVudCkKKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxSYWRpb05vZGVMaXN0PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBF
bGVtZW50KiBiYXNlRWxlbWVudCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
UmFkaW9Ob2RlTGlzdChuYW1lLCBmb3JtRWxlbWVudCkpOworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFJhZGlvTm9kZUxpc3QobmFtZSwgYmFzZUVsZW1lbnQpKTsKICAgICB9CiAKICAgICB+
UmFkaW9Ob2RlTGlzdCgpOwpAQCAtNTQsNyArNTQsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgY2hl
Y2tFbGVtZW50TWF0Y2hlc1JhZGlvTm9kZUxpc3RGaWx0ZXIoRWxlbWVudCopIGNvbnN0OwogCiAg
ICAgQXRvbWljU3RyaW5nIG1fbmFtZTsKLSAgICBSZWZQdHI8RWxlbWVudD4gbV9mb3JtRWxlbWVu
dDsKKyAgICBSZWZQdHI8RWxlbWVudD4gbV9iYXNlRWxlbWVudDsKIH07CiAKIH0gLy8gbmFtZXBz
YWNlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggNWFhMmM1MjEyYWJmNTNiN2NhZGJhMGM1YWFmNjBkMDlkMWQ4NjA5Zi4uYjNk
MDJiMzc1Y2ZjYTNkZGNjMmM2MDdiZjBiMjE3ZTkyZTFmOGFjYiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1
IEBACisyMDEyLTA1LTI1ICBSYWtlc2ggS04gIDxyYWtlc2gua25AbW90b3JvbGEuY29tPgorCisg
ICAgICAgIFtGb3Jtc10gSFRNTEZpZWxkU2V0RWxlbWVudC5pZGwgZG9lc24ndCBoYXZlIGVsZW1l
bnRzIGF0dHJpYnV0ZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTgwMTEwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBmYXN0L2Zvcm1zL2ZpZWxkc2V0L2ZpZWxkc2V0LWVsZW1lbnRzLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9maWVsZHNldC9maWVsZHNldC1lbGVtZW50
cy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL2ZpZWxkc2V0L2ZpZWxkc2V0LWZv
cm0tY29sbGVjdGlvbi1yYWRpb25vZGUtbGlzdC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvZm9ybXMvZmllbGRzZXQvZmllbGRzZXQtZm9ybS1jb2xsZWN0aW9uLXJhZGlvbm9k
ZS1saXN0Lmh0bWw6IEFkZGVkLgorCiAyMDEyLTA1LTI1ICBNaWtoYWlsIFBvemRueWFrb3YgIDxt
aWtoYWlsLnBvemRueWFrb3ZAaW50ZWwuY29tPgogCiAgICAgICAgIFtFRkxdW0RSVF0gR2FyZGVu
aW5nLiBmYXN0L2V2ZW50cy9vcHRpb24tdGFiLmh0bWwgZG9lcyBub3QgcGFzcwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWVsZHNldC9maWVsZHNldC1lbGVtZW50cy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpZWxkc2V0L2ZpZWxkc2V0LWVsZW1l
bnRzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MGQxYmM1ZGZiOGI1NmU3MDg1ZmVmNTRmYzE2
NDE4OWI1NmYzMjhkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9m
aWVsZHNldC9maWVsZHNldC1lbGVtZW50cy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzOSBAQAor
VGhpcyB0ZXN0IHRoZSBlbGVtZW50cyBhdHRpYnV0ZSBvZiBIVE1MRmllbGRTZXQgZWxlbWVudC4K
KworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywg
Zm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgb3duZXIuZWxlbWVudHMubGVu
Z3RoIGlzIDIzCitQQVNTIG93bmVyLmVsZW1lbnRzWzBdLmlkIGlzICdidXR0b24xJworUEFTUyBv
d25lci5lbGVtZW50c1sxXS5pZCBpcyAnZmllbGRzZXQxJworUEFTUyBvd25lci5lbGVtZW50c1sy
XS5pZCBpcyAnaW5wdXRoaWRkZW4nCitQQVNTIG93bmVyLmVsZW1lbnRzWzNdLmlkIGlzICdpbnB1
dHRleHQnCitQQVNTIG93bmVyLmVsZW1lbnRzWzRdLmlkIGlzICdpbnB1dHNlYXJjaCcKK1BBU1Mg
b3duZXIuZWxlbWVudHNbNV0uaWQgaXMgJ2lucHV0dXJsJworUEFTUyBvd25lci5lbGVtZW50c1s2
XS5pZCBpcyAnaW5wdXRlbWFpbCcKK1BBU1Mgb3duZXIuZWxlbWVudHNbN10uaWQgaXMgJ2lucHV0
cGFzc3dvcmQnCitQQVNTIG93bmVyLmVsZW1lbnRzWzhdLmlkIGlzICdpbnB1dGRhdGUnCitQQVNT
IG93bmVyLmVsZW1lbnRzWzldLmlkIGlzICdpbnB1dG51bWJlcicKK1BBU1Mgb3duZXIuZWxlbWVu
dHNbMTBdLmlkIGlzICdpbnB1dHJhbmdlJworUEFTUyBvd25lci5lbGVtZW50c1sxMV0uaWQgaXMg
J2lucHV0Y29sb3InCitQQVNTIG93bmVyLmVsZW1lbnRzWzEyXS5pZCBpcyAnaW5wdXRjaGVja2Jv
eCcKK1BBU1Mgb3duZXIuZWxlbWVudHNbMTNdLmlkIGlzICdpbnB1dHJhZGlvJworUEFTUyBvd25l
ci5lbGVtZW50c1sxNF0uaWQgaXMgJ2lucHV0ZmlsZScKK1BBU1Mgb3duZXIuZWxlbWVudHNbMTVd
LmlkIGlzICdpbnB1dHN1Ym1pdCcKK1BBU1Mgb3duZXIuZWxlbWVudHNbMTZdLmlkIGlzICdpbnB1
dHJlc2V0JworUEFTUyBvd25lci5lbGVtZW50c1sxN10uaWQgaXMgJ2lucHV0YnV0dG9uJworUEFT
UyBvd25lci5lbGVtZW50c1sxOF0uaWQgaXMgJ2tleWdlbjEnCitQQVNTIG93bmVyLmVsZW1lbnRz
WzE5XS5pZCBpcyAnb2JqZWN0MScKK1BBU1Mgb3duZXIuZWxlbWVudHNbMjBdLmlkIGlzICdvdXRw
dXQxJworUEFTUyBvd25lci5lbGVtZW50c1syMV0uaWQgaXMgJ3NlbGVjdDEnCitQQVNTIG93bmVy
LmVsZW1lbnRzWzIyXS5pZCBpcyAndGV4dGFyZWExJworCitDaGVjayBlbGVtZW50cyBhcnJheSBp
cyB1cGRhdGVkIGFmdGVyIGFkZGluZyBhIG5ldyBlbGVtZW50CitQQVNTIG93bmVyLmFwcGVuZENo
aWxkKG5ld0VsZW1lbnQpOyBvd25lci5lbGVtZW50cy5sZW5ndGggaXMgMjQKKworQ2hlY2sgZWxl
bWVudHMgYXJyYXkgaXMgdXBkYXRlZCBhZnRlciByZW1vdmUgYW4gZWxlbWVudAorUEFTUyBvd25l
ci5yZW1vdmVDaGlsZChuZXdFbGVtZW50KTsgb3duZXIuZWxlbWVudHMubGVuZ3RoIGlzIDIzCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWVsZHNldC9maWVsZHNldC1lbGVtZW50cy5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWVsZHNldC9maWVsZHNldC1lbGVtZW50cy5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmE5OThkYjJjMTg1MjNlNmIzOGM5NWJkMDNkMWQ4ODQzNWIyMTk5MmUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpZWxkc2V0L2ZpZWxk
c2V0LWVsZW1lbnRzLmh0bWwKQEAgLTAsMCArMSw5MSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pz
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxz
Y3JpcHQ+CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IHRoZSBlbGVtZW50cyBhdHRpYnV0ZSBvZiBI
VE1MRmllbGRTZXQgZWxlbWVudC4iKTsKKwordmFyIGNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ2RpdicpOworZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChjb250YWluZXIpOwor
Citjb250YWluZXIuaW5uZXJIVE1MID0gJzxmb3JtPiA8ZmllbGRzZXQgaWQ9ImZzIj4nICsKKyAg
ICAnPGJ1dHRvbiBpZD1idXR0b24xPjwvYnV0dG9uPicgKworICAgICc8ZmllbGRzZXQgaWQ9Zmll
bGRzZXQxPjxsZWdlbmQgaWQ9bGVnZW5kMT48L2xlZ2VuZD48L2ZpZWxkc2V0PicgKworICAgICc8
ZGl2PiA8aW5wdXQgaWQ9aW5wdXRoaWRkZW4gdHlwZT1oaWRkZW4+IDwvZGl2PicgKworICAgICc8
aW5wdXQgaWQ9aW5wdXR0ZXh0IHR5cGU9dGV4dD4nICsKKyAgICAnPGlucHV0IGlkPWlucHV0c2Vh
cmNoIHR5cGU9c2VhcmNoPicgKworICAgICc8aW5wdXQgaWQ9aW5wdXR1cmwgdHlwZT11cmw+JyAr
CisgICAgJzxpbnB1dCBpZD1pbnB1dGVtYWlsIHR5cGU9ZW1haWw+JyArCisgICAgJzxpbnB1dCBp
ZD1pbnB1dHBhc3N3b3JkIHR5cGU9cGFzc3dvcmQ+JyArCisgICAgJzxpbnB1dCBpZD1pbnB1dGRh
dGUgdHlwZT1kYXRlPicgKworICAgICc8aW5wdXQgaWQ9aW5wdXRudW1iZXIgdHlwZT1udW1iZXI+
JyArCisgICAgJzxpbnB1dCBpZD1pbnB1dHJhbmdlIHR5cGU9cmFuZ2U+JyArCisgICAgJzxpbnB1
dCBpZD1pbnB1dGNvbG9yIHR5cGU9Y29sb3I+JyArCisgICAgJzxpbnB1dCBpZD1pbnB1dGNoZWNr
Ym94IHR5cGU9Y2hlY2tib3g+JyArCisgICAgJzxpbnB1dCBpZD1pbnB1dHJhZGlvIHR5cGU9cmFk
aW8+JyArCisgICAgJzxpbnB1dCBpZD1pbnB1dGZpbGUgdHlwZT1maWxlPicgKworICAgICc8aW5w
dXQgaWQ9aW5wdXRzdWJtaXQgdHlwZT1zdWJtaXQ+JyArCisgICAgJzxpbnB1dCBpZD1pbnB1dGlt
YWdlIHR5cGU9aW1hZ2U+JyArCisgICAgJzxpbnB1dCBpZD1pbnB1dHJlc2V0IHR5cGU9cmVzZXQ+
JyArCisgICAgJzxpbnB1dCBpZD1pbnB1dGJ1dHRvbiB0eXBlPWJ1dHRvbj4nICsKKyAgICAnPGtl
eWdlbiBpZD1rZXlnZW4xPjwva2V5Z2VuPicgKworICAgICc8bGFiZWwgaWQ9bGFiZWwxPjwvbGFi
ZWw+JyArCisgICAgJzxtZXRlciBpZD1tZXRlcjE+PC9tZXRlcj4nICsKKyAgICAnPG9iamVjdCBp
ZD1vYmplY3QxPjwvb2JqZWN0PicgKworICAgICc8b3V0cHV0IGlkPW91dHB1dDE+PC9vdXRwdXQ+
JyArCisgICAgJzxwcm9ncmVzcyBpZD1wcm9ncmVzczE+PC9wcm9ncmVzcz4nICsKKyAgICAnPHNl
bGVjdCBpZD1zZWxlY3QxPicgKworICAgICcgICAgPG9wdGdyb3VwIGlkPW9wdGdyb3VwMT5ncm91
cDE8L29wdGdyb3VwPicgKworICAgICcgICAgPG9wdGlvbiBpZD1vcHRpb24xPm9wdGlvbjE8L29w
dGlvbj4nICsKKyAgICAnPC9zZWxlY3Q+JyArCisgICAgJzx0ZXh0YXJlYSBpZD10ZXh0YXJlYTE+
PC90ZXh0YXJlYT4nICsKKyAgICAnPC9maWVsZHNldD4gPC9mb3JtPic7CisKK3ZhciBvd25lciA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmcycpOworCitzaG91bGRCZSgnb3duZXIuZWxlbWVu
dHMubGVuZ3RoJywgJzIzJyk7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHNbMF0uaWQnLCAiJ2J1
dHRvbjEnIik7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHNbMV0uaWQnLCAiJ2ZpZWxkc2V0MSci
KTsKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50c1syXS5pZCcsICInaW5wdXRoaWRkZW4nIik7Citz
aG91bGRCZSgnb3duZXIuZWxlbWVudHNbM10uaWQnLCAiJ2lucHV0dGV4dCciKTsKK3Nob3VsZEJl
KCdvd25lci5lbGVtZW50c1s0XS5pZCcsICInaW5wdXRzZWFyY2gnIik7CitzaG91bGRCZSgnb3du
ZXIuZWxlbWVudHNbNV0uaWQnLCAiJ2lucHV0dXJsJyIpOworc2hvdWxkQmUoJ293bmVyLmVsZW1l
bnRzWzZdLmlkJywgIidpbnB1dGVtYWlsJyIpOworc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzWzdd
LmlkJywgIidpbnB1dHBhc3N3b3JkJyIpOworc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzWzhdLmlk
JywgIidpbnB1dGRhdGUnIik7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHNbOV0uaWQnLCAiJ2lu
cHV0bnVtYmVyJyIpOworc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzWzEwXS5pZCcsICInaW5wdXRy
YW5nZSciKTsKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50c1sxMV0uaWQnLCAiJ2lucHV0Y29sb3In
Iik7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHNbMTJdLmlkJywgIidpbnB1dGNoZWNrYm94JyIp
Oworc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzWzEzXS5pZCcsICInaW5wdXRyYWRpbyciKTsKK3No
b3VsZEJlKCdvd25lci5lbGVtZW50c1sxNF0uaWQnLCAiJ2lucHV0ZmlsZSciKTsKK3Nob3VsZEJl
KCdvd25lci5lbGVtZW50c1sxNV0uaWQnLCAiJ2lucHV0c3VibWl0JyIpOworc2hvdWxkQmUoJ293
bmVyLmVsZW1lbnRzWzE2XS5pZCcsICInaW5wdXRyZXNldCciKTsKK3Nob3VsZEJlKCdvd25lci5l
bGVtZW50c1sxN10uaWQnLCAiJ2lucHV0YnV0dG9uJyIpOworc2hvdWxkQmUoJ293bmVyLmVsZW1l
bnRzWzE4XS5pZCcsICIna2V5Z2VuMSciKTsKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50c1sxOV0u
aWQnLCAiJ29iamVjdDEnIik7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHNbMjBdLmlkJywgIidv
dXRwdXQxJyIpOworc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzWzIxXS5pZCcsICInc2VsZWN0MSci
KTsKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50c1syMl0uaWQnLCAiJ3RleHRhcmVhMSciKTsKKwor
dmFyIG5ld0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpOworbmV3RWxl
bWVudC5zZXRBdHRyaWJ1dGUoInR5cGUiLCAidGV4dCIpOworbmV3RWxlbWVudC5zZXRBdHRyaWJ1
dGUoInZhbHVlIiwgIm5ldyBlbGVtZW50Iik7CituZXdFbGVtZW50LnNldEF0dHJpYnV0ZSgiaWQi
LCAiaW5wdXRjb21tb24iKTsKKworZGVidWcoIiIpOworZGVidWcoIkNoZWNrIGVsZW1lbnRzIGFy
cmF5IGlzIHVwZGF0ZWQgYWZ0ZXIgYWRkaW5nIGEgbmV3IGVsZW1lbnQiKTsKK3Nob3VsZEJlKCdv
d25lci5hcHBlbmRDaGlsZChuZXdFbGVtZW50KTsgb3duZXIuZWxlbWVudHMubGVuZ3RoJywgJzI0
Jyk7CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJDaGVjayBlbGVtZW50cyBhcnJheSBpcyB1cGRhdGVk
IGFmdGVyIHJlbW92ZSBhbiBlbGVtZW50Iik7CitzaG91bGRCZSgnb3duZXIucmVtb3ZlQ2hpbGQo
bmV3RWxlbWVudCk7IG93bmVyLmVsZW1lbnRzLmxlbmd0aCcsICcyMycpOworCitjb250YWluZXIu
cGFyZW50Tm9kZS5yZW1vdmVDaGlsZChjb250YWluZXIpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpZWxkc2V0L2Zp
ZWxkc2V0LWZvcm0tY29sbGVjdGlvbi1yYWRpb25vZGUtbGlzdC1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL2ZpZWxkc2V0L2ZpZWxkc2V0LWZvcm0tY29sbGVjdGlvbi1yYWRp
b25vZGUtbGlzdC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2U0NWY5ZWI4YjAwN2UxZjBjMWVj
Y2E2ZjRhZDEwNGRlN2I0NDc1MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvZmllbGRzZXQvZmllbGRzZXQtZm9ybS1jb2xsZWN0aW9uLXJhZGlvbm9kZS1saXN0LWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDUzIEBACitUaGlzIHRlc3QgaXMgZm9yIFJhZGlvTm9kZUxp
c3Qgc3BlY2lmaWVkIGF0IGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJy
ZW50LXdvcmsvbXVsdGlwYWdlL2NvbW1vbi1kb20taW50ZXJmYWNlcy5odG1sI3JhZGlvbm9kZWxp
c3QKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKKworUEFTUyBvd25lci5lbGVtZW50
cy5sZW5ndGggaXMgMjMKK1BBU1MgcmFkaW9Ob2RlTGlzdC5sZW5ndGggaXMgNAorUEFTUyByYWRp
b05vZGVMaXN0WzBdLnZhbHVlIGlzICdzZWFyY2hpbmcnCitQQVNTIHJhZGlvTm9kZUxpc3RbMV0u
dmFsdWUgaXMgJzEyMycKK1BBU1MgcmFkaW9Ob2RlTGlzdFsyXS52YWx1ZSBpcyAnaW5wdXRSYWRp
b1ZhbHVlJworUEFTUyByYWRpb05vZGVMaXN0WzNdLnZhbHVlIGlzICdidXR0b25WYWx1ZScKKwor
Q2hhbmdpbmcgdGhlIGlucHV0IHZhbHVlIHRvIGNoZWNrIFJhZGlvTm9kZUxpc3QgaXMgbGl2ZSB2
aWV3IG9mIEZvcm1Db2xsZWN0aW9uCitQQVNTIHJhZGlvTm9kZUxpc3RbMV0udmFsdWUgaXMgJzQ1
NicKKworQ2hlY2tpbmcgdmFsdWUgSURMIGF0dHJpYnV0ZSBvbiB0aGUgUmFkaW9Ob2RlTGlzdAor
UEFTUyByYWRpb05vZGVMaXN0LnZhbHVlIGlzICIiCitQQVNTIHJhZGlvTm9kZUxpc3QudmFsdWUg
PSAiaW5wdXRSYWRpb1ZhbHVlIjsgcmFkaW9Ob2RlTGlzdFsyXS5jaGVja2VkIGlzIHRydWUKK1BB
U1MgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHJhZGlvTm9kZUxpc3RbMl0pIGlzICdb
b2JqZWN0IEhUTUxJbnB1dEVsZW1lbnRdJworUEFTUyByYWRpb05vZGVMaXN0WzJdLnR5cGUgaXMg
J3JhZGlvJworUEFTUyByYWRpb05vZGVMaXN0LnZhbHVlIGlzICIiCitQQVNTIHJhZGlvTm9kZUxp
c3RbMl0uY2hlY2tlZCA9IHRydWU7IHJhZGlvTm9kZUxpc3QudmFsdWUgaXMgJ2lucHV0UmFkaW9W
YWx1ZScKKworQ2hlY2sgUmFkaW9Ob2RlTGlzdCBpcyB1cGRhdGVkIGFmdGVyIGFkZGluZyBhIG5l
dyBlbGVtZW50CitQQVNTIG93bmVyLmFwcGVuZENoaWxkKG5ld0VsZW1lbnQpOyByYWRpb05vZGVM
aXN0Lmxlbmd0aCBpcyA1CitQQVNTIG93bmVyLmVsZW1lbnRzLmxlbmd0aCBpcyAyNAorUEFTUyBy
YWRpb05vZGVMaXN0WzRdLnZhbHVlIGlzICduZXcgZWxlbWVudCcKKworQ2hlY2sgUmFkaW9Ob2Rl
TGlzdCBpcyB1cGRhdGVkIGFmdGVyIHJlbW92ZSBhbiBlbGVtZW50CitQQVNTIG93bmVyLnJlbW92
ZUNoaWxkKG5ld0VsZW1lbnQpOyByYWRpb05vZGVMaXN0Lmxlbmd0aCBpcyA0CitQQVNTIHJhZGlv
Tm9kZUxpc3RbM10udmFsdWUgaXMgJ2J1dHRvblZhbHVlJworCitDaGVjayBSYWRpb05vZGVMaXN0
IGlzIHVwZGF0ZWQgYWZ0ZXIgY2hhbmdlIGluIGlkLCB0eXBlIGFuZCBjaGVja2VkIHN0YXRlIG9m
IGFuIGVsZW1lbnQKK1BBU1MgcmFkaW9Ob2RlTGlzdC5sZW5ndGggaXMgNAorQWZ0ZXIgY2hhbmdp
bmcgdGhlIGlkCitQQVNTIHJhZGlvTm9kZUxpc3QubGVuZ3RoIGlzIDMKK1BBU1MgZWxlbWVudHNM
aXN0WzEzXS5jaGVja2VkID0gZmFsc2U7IHJhZGlvTm9kZUxpc3QudmFsdWUgaXMgIiIKK1BBU1Mg
ZWxlbWVudHNMaXN0WzEzXS5jaGVja2VkID0gdHJ1ZTsgcmFkaW9Ob2RlTGlzdC52YWx1ZSBpcyAn
aW5wdXRSYWRpb1ZhbHVlJworUEFTUyBlbGVtZW50c0xpc3RbMTNdLnR5cGUgPSAiZGF0ZSI7IHJh
ZGlvTm9kZUxpc3QudmFsdWUgaXMgJycKKworQ2hlY2sgc2Vjb25kIFJhZGlvTm9kZUxpc3QgaXMg
YWxzbyBjcmVhdGVkIHByb3Blcmx5CitQQVNTIHJhZGlvTm9kZUxpc3QyLmxlbmd0aCBpcyAzCitQ
QVNTIHJhZGlvTm9kZUxpc3QyWzBdLnR5cGUgaXMgJ3RleHQnCitQQVNTIHJhZGlvTm9kZUxpc3Qy
WzFdLnR5cGUgaXMgJ2VtYWlsJworUEFTUyByYWRpb05vZGVMaXN0MlsyXS50eXBlIGlzICdyZXNl
dCcKK0FmdGVyIGNoYW5naW5nIHRoZSBpZAorUEFTUyByYWRpb05vZGVMaXN0Mi5sZW5ndGggaXMg
MgorCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWVsZHNldC9maWVsZHNldC1mb3Jt
LWNvbGxlY3Rpb24tcmFkaW9ub2RlLWxpc3QuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMv
ZmllbGRzZXQvZmllbGRzZXQtZm9ybS1jb2xsZWN0aW9uLXJhZGlvbm9kZS1saXN0Lmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMzM0MWQwYzMwZDc2ZWFlOWIyZDAxNjE4ZjYzZmMwZmMyYTY1MWZlYgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmllbGRzZXQvZmllbGRzZXQtZm9y
bS1jb2xsZWN0aW9uLXJhZGlvbm9kZS1saXN0Lmh0bWwKQEAgLTAsMCArMSwxMjAgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8
ZGl2IGlkPSJkaXZJZCI+Cis8Zm9ybT4KKzxmaWVsZHNldCBpZD0iZnMiPgorICAgIDxidXR0b24g
aWQ9YnV0dG9uMT48L2J1dHRvbj4KKyAgICA8ZmllbGRzZXQgaWQ9ZmllbGRzZXQxPjxsZWdlbmQg
aWQ9bGVnZW5kMT48L2xlZ2VuZD48L2ZpZWxkc2V0PgorICAgIDxpbnB1dCBpZD1pbnB1dGhpZGRl
biB0eXBlPWhpZGRlbj4KKyAgICA8aW5wdXQgaWQ9Y29tbW9uaW5wdXQgdHlwZT10ZXh0PgorICAg
IDxpbnB1dCBpZD1pbnB1dGNvbW1vbiB0eXBlPXNlYXJjaCB2YWx1ZT1zZWFyY2hpbmc+CisgICAg
PGlucHV0IGlkPWlucHV0dXJsIHR5cGU9dXJsPgorICAgIDxpbnB1dCBpZD1jb21tb25pbnB1dCB0
eXBlPWVtYWlsPgorICAgIDxpbnB1dCBpZD1pbnB1dHBhc3N3b3JkIHR5cGU9cGFzc3dvcmQ+Cisg
ICAgPGlucHV0IGlkPWlucHV0ZGF0ZSB0eXBlPWRhdGU+CisgICAgPGlucHV0IGlkPW51bWJlcklk
IG5hbWU9aW5wdXRjb21tb24gdHlwZT1udW1iZXIgdmFsdWU9MTIzPgorICAgIDxpbnB1dCBpZD1p
bnB1dHJhbmdlIHR5cGU9cmFuZ2U+CisgICAgPGlucHV0IGlkPWlucHV0Y29sb3IgdHlwZT1jb2xv
cj4KKyAgICA8aW5wdXQgaWQ9aW5wdXRjaGVja2JveCB0eXBlPWNoZWNrYm94PgorICAgIDxpbnB1
dCBpZD1pbnB1dGNvbW1vbiB0eXBlPXJhZGlvIHZhbHVlPSJpbnB1dFJhZGlvVmFsdWUiPgorICAg
IDxpbnB1dCBpZD1pbnB1dGZpbGUgdHlwZT1maWxlPgorICAgIDxpbnB1dCBpZD1pbnB1dHN1Ym1p
dCB0eXBlPXN1Ym1pdD4KKyAgICA8aW5wdXQgaWQ9aW5wdXRjb21tb24gdHlwZT1pbWFnZT4KKyAg
ICA8aW5wdXQgaWQ9Y29tbW9uaW5wdXQgdHlwZT1yZXNldD4KKyAgICA8aW5wdXQgaWQ9aW5wdXRj
b21tb24gdHlwZT1idXR0b24gdmFsdWU9YnV0dG9uVmFsdWU+CisgICAgPGtleWdlbiBpZD1rZXln
ZW4xPjwva2V5Z2VuPgorICAgIDxsYWJlbCBpZD1sYWJlbDE+PC9sYWJlbD4KKyAgICA8bWV0ZXIg
aWQ9bWV0ZXIxPjwvbWV0ZXI+CisgICAgPG9iamVjdCBpZD1vYmplY3QxPjwvb2JqZWN0PgorICAg
IDxvdXRwdXQgaWQ9b3V0cHV0MT48L291dHB1dD4KKyAgICA8cHJvZ3Jlc3MgaWQ9cHJvZ3Jlc3Mx
PjwvcHJvZ3Jlc3M+CisgICAgPHNlbGVjdCBpZD1zZWxlY3QxPgorICAgICAgICA8b3B0Z3JvdXAg
aWQ9b3B0Z3JvdXAxPmdyb3VwMTwvb3B0Z3JvdXA+CisgICAgICAgIDxvcHRpb24gaWQ9b3B0aW9u
MT5vcHRpb24xPC9vcHRpb24+CisgICAgPC9zZWxlY3Q+CisgICAgPHRleHRhcmVhIGlkPXRleHRh
cmVhMT48L3RleHRhcmVhPgorPC9maWVsZHNldD4KKzwvZm9ybT4KKzwvZGl2PgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBpcyBmb3Ig
UmFkaW9Ob2RlTGlzdCBzcGVjaWZpZWQgYXQgaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dl
Yi1hcHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2UvY29tbW9uLWRvbS1pbnRlcmZhY2VzLmh0bWwj
cmFkaW9ub2RlbGlzdCAiKTsKK2RlYnVnKCIiKTsKK3ZhciBvd25lciA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdmcycpOworCitzaG91bGRCZSgnb3duZXIuZWxlbWVudHMubGVuZ3RoJywgJzIz
Jyk7CisKK3ZhciBlbGVtZW50c0xpc3QgPSBvd25lci5lbGVtZW50czsKK3ZhciByYWRpb05vZGVM
aXN0ID0gZWxlbWVudHNMaXN0Lm5hbWVkSXRlbSgiaW5wdXRjb21tb24iKTsKK3Nob3VsZEJlKCdy
YWRpb05vZGVMaXN0Lmxlbmd0aCcsICc0Jyk7CisKK3Nob3VsZEJlKCdyYWRpb05vZGVMaXN0WzBd
LnZhbHVlJywgIidzZWFyY2hpbmcnIik7CitzaG91bGRCZSgncmFkaW9Ob2RlTGlzdFsxXS52YWx1
ZScsICInMTIzJyIpOworc2hvdWxkQmUoJ3JhZGlvTm9kZUxpc3RbMl0udmFsdWUnLCAiJ2lucHV0
UmFkaW9WYWx1ZSciKTsKK3Nob3VsZEJlKCdyYWRpb05vZGVMaXN0WzNdLnZhbHVlJywgIididXR0
b25WYWx1ZSciKTsKKworZGVidWcoIiIpOworZGVidWcoIkNoYW5naW5nIHRoZSBpbnB1dCB2YWx1
ZSB0byBjaGVjayBSYWRpb05vZGVMaXN0IGlzIGxpdmUgdmlldyBvZiBGb3JtQ29sbGVjdGlvbiIp
OworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm51bWJlcklkIikudmFsdWUgPSA0NTY7CitzaG91
bGRCZSgncmFkaW9Ob2RlTGlzdFsxXS52YWx1ZScsICInNDU2JyIpOworCitkZWJ1ZygiIik7Citk
ZWJ1ZygiQ2hlY2tpbmcgdmFsdWUgSURMIGF0dHJpYnV0ZSBvbiB0aGUgUmFkaW9Ob2RlTGlzdCIp
Oworc2hvdWxkQmUoJ3JhZGlvTm9kZUxpc3QudmFsdWUnLCAnIiInKTsKK3Nob3VsZEJlKCdyYWRp
b05vZGVMaXN0LnZhbHVlID0gImlucHV0UmFkaW9WYWx1ZSI7IHJhZGlvTm9kZUxpc3RbMl0uY2hl
Y2tlZCcsICd0cnVlJyk7CitzaG91bGRCZSgnT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxs
KHJhZGlvTm9kZUxpc3RbMl0pJywgIidbb2JqZWN0IEhUTUxJbnB1dEVsZW1lbnRdJyIpOworc2hv
dWxkQmUoJ3JhZGlvTm9kZUxpc3RbMl0udHlwZScsICIncmFkaW8nIik7CisKK3JhZGlvTm9kZUxp
c3RbMl0uY2hlY2tlZCA9IGZhbHNlOworc2hvdWxkQmUoJ3JhZGlvTm9kZUxpc3QudmFsdWUnLCAn
IiInKTsKK3Nob3VsZEJlKCdyYWRpb05vZGVMaXN0WzJdLmNoZWNrZWQgPSB0cnVlOyByYWRpb05v
ZGVMaXN0LnZhbHVlJywgIidpbnB1dFJhZGlvVmFsdWUnIik7CisKK3ZhciBuZXdFbGVtZW50ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKK25ld0VsZW1lbnQuc2V0QXR0cmlidXRl
KCJ0eXBlIiwgInRleHQiKTsKK25ld0VsZW1lbnQuc2V0QXR0cmlidXRlKCJ2YWx1ZSIsICJuZXcg
ZWxlbWVudCIpOworbmV3RWxlbWVudC5zZXRBdHRyaWJ1dGUoImlkIiwgImlucHV0Y29tbW9uIik7
CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJDaGVjayBSYWRpb05vZGVMaXN0IGlzIHVwZGF0ZWQgYWZ0
ZXIgYWRkaW5nIGEgbmV3IGVsZW1lbnQiKTsKK3Nob3VsZEJlKCdvd25lci5hcHBlbmRDaGlsZChu
ZXdFbGVtZW50KTsgcmFkaW9Ob2RlTGlzdC5sZW5ndGgnLCAnNScpOworc2hvdWxkQmUoJ293bmVy
LmVsZW1lbnRzLmxlbmd0aCcsICcyNCcpOworc2hvdWxkQmUoJ3JhZGlvTm9kZUxpc3RbNF0udmFs
dWUnLCAiJ25ldyBlbGVtZW50JyIpOworCitkZWJ1ZygiIik7CitkZWJ1ZygiQ2hlY2sgUmFkaW9O
b2RlTGlzdCBpcyB1cGRhdGVkIGFmdGVyIHJlbW92ZSBhbiBlbGVtZW50Iik7CitzaG91bGRCZSgn
b3duZXIucmVtb3ZlQ2hpbGQobmV3RWxlbWVudCk7IHJhZGlvTm9kZUxpc3QubGVuZ3RoJywgJzQn
KTsKK3Nob3VsZEJlKCdyYWRpb05vZGVMaXN0WzNdLnZhbHVlJywgIididXR0b25WYWx1ZSciKTsK
KworZGVidWcoIiIpOworZGVidWcoIkNoZWNrIFJhZGlvTm9kZUxpc3QgaXMgdXBkYXRlZCBhZnRl
ciBjaGFuZ2UgaW4gaWQsIHR5cGUgYW5kIGNoZWNrZWQgc3RhdGUgb2YgYW4gZWxlbWVudCIpOwor
c2hvdWxkQmUoJ3JhZGlvTm9kZUxpc3QubGVuZ3RoJywgJzQnKTsKK2RlYnVnKCJBZnRlciBjaGFu
Z2luZyB0aGUgaWQiKTsKK3JhZGlvTm9kZUxpc3RbM10uaWQgPSAiY2hhbmdlZE5hbWUiOworc2hv
dWxkQmUoJ3JhZGlvTm9kZUxpc3QubGVuZ3RoJywgJzMnKTsKKworc2hvdWxkQmUoJ2VsZW1lbnRz
TGlzdFsxM10uY2hlY2tlZCA9IGZhbHNlOyByYWRpb05vZGVMaXN0LnZhbHVlJywgJyIiJyk7Citz
aG91bGRCZSgnZWxlbWVudHNMaXN0WzEzXS5jaGVja2VkID0gdHJ1ZTsgcmFkaW9Ob2RlTGlzdC52
YWx1ZScsICInaW5wdXRSYWRpb1ZhbHVlJyIpOworc2hvdWxkQmUoJ2VsZW1lbnRzTGlzdFsxM10u
dHlwZSA9ICJkYXRlIjsgcmFkaW9Ob2RlTGlzdC52YWx1ZScsICInJyIpOworCitkZWJ1ZygiIik7
CitkZWJ1ZygiQ2hlY2sgc2Vjb25kIFJhZGlvTm9kZUxpc3QgaXMgYWxzbyBjcmVhdGVkIHByb3Bl
cmx5Iik7Cit2YXIgcmFkaW9Ob2RlTGlzdDIgPSBlbGVtZW50c0xpc3QubmFtZWRJdGVtKCJjb21t
b25pbnB1dCIpOworc2hvdWxkQmUoJ3JhZGlvTm9kZUxpc3QyLmxlbmd0aCcsICczJyk7CisKK3No
b3VsZEJlKCdyYWRpb05vZGVMaXN0MlswXS50eXBlJywgIid0ZXh0JyIpOworc2hvdWxkQmUoJ3Jh
ZGlvTm9kZUxpc3QyWzFdLnR5cGUnLCAiJ2VtYWlsJyIpOworc2hvdWxkQmUoJ3JhZGlvTm9kZUxp
c3QyWzJdLnR5cGUnLCAiJ3Jlc2V0JyIpOworcmFkaW9Ob2RlTGlzdDJbMl0uaWQgPSAiaWRDaGFu
Z2VkIjsKK2RlYnVnKCJBZnRlciBjaGFuZ2luZyB0aGUgaWQiKTsKK3Nob3VsZEJlKCdyYWRpb05v
ZGVMaXN0Mi5sZW5ndGgnLCAnMicpOworZGVidWcoIiIpOworCit2YXIgY29udGFpbmVyID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRpdklkIik7Citjb250YWluZXIucGFyZW50Tm9kZS5yZW1v
dmVDaGlsZChjb250YWluZXIpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>144387</attachid>
            <date>2012-05-28 12:29:34 -0700</date>
            <delta_ts>2012-05-28 20:57:32 -0700</delta_ts>
            <desc>updated patch</desc>
            <filename>bug-80110-20120529005640.patch</filename>
            <type>text/plain</type>
            <size>29788</size>
            <attacher name="Rakesh">rakeshchaitan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4NzAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2U2NjAwZmY5NjhiOTNi
ZTgzNmM3YjM3ZmExNjUyYzFkNjhkYzRlOS4uMTI0ODFmNjRlMzE0MmU4MmUyMTU4Zjc0ZDRhMTYx
ZmUxOTllOWYwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDEyLTA1LTI4ICBSYWtl
c2ggS04gIDxyYWtlc2gua25AbW90b3JvbGEuY29tPgorCisgICAgICAgIFtGb3Jtc10gSFRNTEZp
ZWxkU2V0RWxlbWVudC5pZGwgZG9lc24ndCBoYXZlIGVsZW1lbnRzIGF0dHJpYnV0ZS4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwMTEwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50ZWQgZWxl
bWVudHMgYXR0cmlidXRlIGZvciBIVE1MRmllbGRTZXRFbGVtZW50LiBUaGlzIGlzIHNwZWMnZWQg
YXQKKyAgICAgICAgaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQt
d29yay9tdWx0aXBhZ2UvZm9ybXMuaHRtbCNkb20tZmllbGRzZXQtZWxlbWVudHMKKworICAgICAg
ICBUZXN0czogZmFzdC9mb3Jtcy9maWVsZHNldC9maWVsZHNldC1lbGVtZW50cy5odG1sCisgICAg
ICAgICAgICAgICBmYXN0L2Zvcm1zL2ZpZWxkc2V0L2ZpZWxkc2V0LWZvcm0tY29sbGVjdGlvbi1y
YWRpb25vZGUtbGlzdC5odG1sCisKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpOb2RlOjpyYWRpb05vZGVMaXN0KToKKyAgICAgICAgRXh0ZW5kZWQgQVNTRVJUIHRv
IGFzc2VydCBpZiBub3QgSFRNTEZpZWxkU2V0RWxlbWVudCBvciBIVE1MRm9ybUVsZW1lbnQuCisg
ICAgICAgICogaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxGaWVsZFNldEVsZW1lbnQ6OmVsZW1lbnRzKToKKyAgICAgICAgRWxlbWVudHMgYXR0cmli
dXRlIGltcGxlbWVudGF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZpZWxkU2V0RWxlbWVu
dDo6cmVmcmVzaEVsZW1lbnRzSWZOZWVkZWQpOgorICAgICAgICBVcGRhdGUgdGhlIGZvcm1jb250
cm9sIGVsZW1lbnRzIGNvbGxlY3Rpb25zIGlmIGRvbSB0cmVlIGdvdCBtb2RpZmllZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxGaWVsZFNldEVsZW1lbnQ6OmFzc29jaWF0ZWRFbGVtZW50cyk6Cisg
ICAgICAgIEZvcm1Db250cm9sIGVsZW1lbnRzIGNvbGxlY3Rpb24gYWNjZXNzb3IuCisgICAgICAg
IChXZWJDb3JlOjpIVE1MRmllbGRTZXRFbGVtZW50OjpsZW5ndGgpOgorICAgICAgICBOdW1iZXIg
b2YgZWxlbWVudHMgaW4gdGhlIGZpZWxkc2V0IGdyb3VwLgorICAgICAgICAqIGh0bWwvSFRNTEZp
ZWxkU2V0RWxlbWVudC5oOgorICAgICAgICBBZGRlZCBlbGVtZW50cyBjb2xsZWN0aW9uIG1lbWJl
ciBhbmQgZm9ybSBjb250cm9sIGNvbGxlY3Rpb24gbWVtYmVycy4KKyAgICAgICAgKiBodG1sL0hU
TUxGaWVsZFNldEVsZW1lbnQuaWRsOgorICAgICAgICBBZGRlZCBlbGVtZW50cyBhdHRyaWJ1dGUu
CisgICAgICAgICogaHRtbC9IVE1MRm9ybUNvbGxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTEZvcm1Db2xsZWN0aW9uOjpmb3JtQ29udHJvbEVsZW1lbnRzKToKKyAgICAgICAgQWRk
ZWQgc3VwcG9ydCBmb3IgSFRNTEZpZWxkU2V0RWxlbWVudCwgYmFzZWQgb24gYmFzZSBlbGVtZW50
IHR5cGUgZ2V0cyBpdHMgYXNzb2NpYXRlZCBlbGVtZW50cy4KKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxGb3JtQ29sbGVjdGlvbjo6bnVtYmVyT2ZGb3JtQ29udHJvbEVsZW1lbnRzKTogRGl0dG8KKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29sbGVjdGlvbjo6Z2V0TmFtZWRGb3JtSXRlbSk6IFBy
b2Nlc3MgaW1hZ2UgZWxlbWVudHMgb25seSBmb3IgZm9ybSBlbGVtZW50LgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTEZvcm1Db2xsZWN0aW9uOjp1cGRhdGVOYW1lQ2FjaGUpOiBEaXR0bworICAgICAg
ICAqIGh0bWwvUmFkaW9Ob2RlTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSYWRpb05vZGVM
aXN0OjpSYWRpb05vZGVMaXN0KToKKyAgICAgICAgRHluYW1pY1N1YlRyZWUgcm9vdCBlbGVtZW50
IGlzIGRlY2lkZWQgYmFzZWQgb24gdGhlIHR5cGUgd2hldGhlciBiYXNlIGVsZW1lbnQgaXMgZm9y
bSBvciBmaWVsZHNldCBlbGVtZW50LgorICAgICAgICBSZW5hbWVkIG1fZm9ybUVsZW1lbnQgdG8g
bV9iYXNlRWxlbWVudC4KKyAgICAgICAgKFdlYkNvcmU6OlJhZGlvTm9kZUxpc3Q6On5SYWRpb05v
ZGVMaXN0KToKKyAgICAgICAgUmVuYW1lZCBtX2Zvcm1FbGVtZW50IHRvIG1fYmFzZUVsZW1lbnQu
CisgICAgICAgIChXZWJDb3JlOjpSYWRpb05vZGVMaXN0OjpjaGVja0VsZW1lbnRNYXRjaGVzUmFk
aW9Ob2RlTGlzdEZpbHRlcik6CisgICAgICAgIEZvcm0gZWxlbWVudCBzcGVjaWZpYyBjaGFuZ2Vz
IG1vdmVkIHVuZGVyIGZvcm0gZWxlbWVudCBjaGVjay4KKyAgICAgICAgKiBodG1sL1JhZGlvTm9k
ZUxpc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJhZGlvTm9kZUxpc3Q6OmNyZWF0ZSk6CisgICAg
ICAgIChSYWRpb05vZGVMaXN0KToKKyAgICAgICAgUmVuYW1lZCBtX2Zvcm1FbGVtZW50IHRvIG1f
YmFzZUVsZW1lbnQuCisKIDIwMTItMDUtMjggIExlbyBZYW5nICA8bGVvLnlhbmdAdG9yY2htb2Jp
bGUuY29tLmNuPgogCiAgICAgICAgIEZpbGVXcml0ZXJTeW5jIGJpbmRpbmcgc2hvdWxkIGhhdmUg
bm8gc3RhdGljIHRhYmxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggOWExZjVjMGIwN2FmZDc3YjQ4MTlm
ZWMwNDA5ZTNiYjMzMzJmYzM3Ni4uYWVkMTlmYzRjYWZiMWE3ZjYyYTE2Yzc0YWE4ZGJmMzEyYjgz
MTNlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtMjkzMSw3ICsyOTMxLDcgQEAgdm9pZCBOb2RlUmFy
ZURhdGE6OmNsZWFyQ2hpbGROb2RlTGlzdENhY2hlKCkKIAogUGFzc1JlZlB0cjxSYWRpb05vZGVM
aXN0PiBOb2RlOjpyYWRpb05vZGVMaXN0KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKIHsKLSAg
ICBBU1NFUlQoaGFzVGFnTmFtZShmb3JtVGFnKSk7CisgICAgQVNTRVJUKGhhc1RhZ05hbWUoZm9y
bVRhZykgfHwgaGFzVGFnTmFtZShmaWVsZHNldFRhZykpOwogCiAgICAgTm9kZUxpc3RzTm9kZURh
dGEqIG5vZGVMaXN0cyA9IGVuc3VyZVJhcmVEYXRhKCktPmVuc3VyZU5vZGVMaXN0cyh0aGlzKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5jcHAKaW5kZXggOGEy
NDBjMDI0OWYzNGE3OGJlOTAyOTA5OTcyZTFlMGJkYjMwMDk3OC4uNzQ4M2M0ZjgxN2Y1MjlhODg4
YjY1ZWUzNWQ0NzgxYTA0OWEwZGE4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRmllbGRTZXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGaWVs
ZFNldEVsZW1lbnQuY3BwCkBAIC0yNCw5ICsyNCwxMSBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiSFRNTEZpZWxkU2V0RWxlbWVudC5oIgotI2luY2x1ZGUgIkhUTUxMZWdlbmRF
bGVtZW50LmgiCiAKKyNpbmNsdWRlICJIVE1MRm9ybUNvbGxlY3Rpb24uaCIKKyNpbmNsdWRlICJI
VE1MTGVnZW5kRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIkhU
TUxPYmplY3RFbGVtZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyRmllbGRzZXQuaCIKICNpbmNsdWRl
IDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKQEAgLTgxLDQgKzgzLDUzIEBAIEhUTUxMZWdlbmRFbGVt
ZW50KiBIVE1MRmllbGRTZXRFbGVtZW50OjpsZWdlbmQoKSBjb25zdAogICAgIHJldHVybiAwOwog
fQogCitIVE1MQ29sbGVjdGlvbiogSFRNTEZpZWxkU2V0RWxlbWVudDo6ZWxlbWVudHMoKQorewor
ICAgIGlmICghbV9lbGVtZW50c0NvbGxlY3Rpb24pCisgICAgICAgIG1fZWxlbWVudHNDb2xsZWN0
aW9uID0gSFRNTEZvcm1Db2xsZWN0aW9uOjpjcmVhdGUodGhpcyk7CisgICAgcmV0dXJuIG1fZWxl
bWVudHNDb2xsZWN0aW9uLmdldCgpOworfQorCit2b2lkIEhUTUxGaWVsZFNldEVsZW1lbnQ6OnJl
ZnJlc2hFbGVtZW50c0lmTmVlZGVkKCkgY29uc3QKK3sKKyAgICB1aW50NjRfdCBkb2NWZXJzaW9u
ID0gZG9jdW1lbnQoKS0+ZG9tVHJlZVZlcnNpb24oKTsKKyAgICBpZiAobV9kb2N1bWVudFZlcnNp
b24gPT0gZG9jVmVyc2lvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9kb2N1bWVudFZlcnNp
b24gPSBkb2NWZXJzaW9uOworCisgICAgbV9hc3NvY2lhdGVkRWxlbWVudHMuY2xlYXIoKTsKKwor
ICAgIGZvciAoTm9kZSogbm9kZSA9IGZpcnN0Q2hpbGQoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPnRy
YXZlcnNlTmV4dE5vZGUodGhpcykpIHsKKyAgICAgICAgaWYgKCFub2RlLT5pc0VsZW1lbnROb2Rl
KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAobm9kZS0+aGFzVGFnTmFt
ZShvYmplY3RUYWcpKSB7CisgICAgICAgICAgICBtX2Fzc29jaWF0ZWRFbGVtZW50cy5hcHBlbmQo
c3RhdGljX2Nhc3Q8SFRNTE9iamVjdEVsZW1lbnQqPihub2RlKSk7CisgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghdG9FbGVtZW50KG5vZGUpLT5pc0Zvcm1D
b250cm9sRWxlbWVudCgpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgbV9hc3Nv
Y2lhdGVkRWxlbWVudHMuYXBwZW5kKHN0YXRpY19jYXN0PEhUTUxGb3JtQ29udHJvbEVsZW1lbnQq
Pihub2RlKSk7CisgICAgfQorfQorCitjb25zdCBWZWN0b3I8Rm9ybUFzc29jaWF0ZWRFbGVtZW50
Kj4mIEhUTUxGaWVsZFNldEVsZW1lbnQ6OmFzc29jaWF0ZWRFbGVtZW50cygpIGNvbnN0Cit7Cisg
ICAgcmVmcmVzaEVsZW1lbnRzSWZOZWVkZWQoKTsKKyAgICByZXR1cm4gbV9hc3NvY2lhdGVkRWxl
bWVudHM7Cit9CisKK3Vuc2lnbmVkIEhUTUxGaWVsZFNldEVsZW1lbnQ6Omxlbmd0aCgpIGNvbnN0
Cit7CisgICAgcmVmcmVzaEVsZW1lbnRzSWZOZWVkZWQoKTsKKyAgICB1bnNpZ25lZCBsZW4gPSAw
OworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2Fzc29jaWF0ZWRFbGVtZW50cy5zaXpl
KCk7ICsraSkKKyAgICAgICAgaWYgKG1fYXNzb2NpYXRlZEVsZW1lbnRzW2ldLT5pc0VudW1lcmF0
YWJsZSgpKQorICAgICAgICAgICAgKytsZW47CisgICAgcmV0dXJuIGxlbjsKK30KKwogfSAvLyBu
YW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxl
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmgKaW5kZXgg
OWU5MzU5OWZhYjBmNDQ3ZjE5NmYwZTU1ZTlhYTQyNzljNTFiMDc3NC4uYWI4ZjgxYjRkMWExOTA4
NmUyYjZiYTE2NjkzMWIzMmZjOWE4ZTA2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRmllbGRTZXRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRmll
bGRTZXRFbGVtZW50LmgKQEAgLTI1LDE0ICsyNSwyNCBAQAogI2RlZmluZSBIVE1MRmllbGRTZXRF
bGVtZW50X2gKIAogI2luY2x1ZGUgIkhUTUxGb3JtQ29udHJvbEVsZW1lbnQuaCIKKyNpbmNsdWRl
IDx3dGYvT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRm9ybUFzc29j
aWF0ZWRFbGVtZW50OworY2xhc3MgSFRNTENvbGxlY3Rpb247CitjbGFzcyBIVE1MRm9ybUNvbGxl
Y3Rpb247CisKIGNsYXNzIEhUTUxGaWVsZFNldEVsZW1lbnQgOiBwdWJsaWMgSFRNTEZvcm1Db250
cm9sRWxlbWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTEZpZWxkU2V0
RWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCosIEhUTUxGb3Jt
RWxlbWVudCopOwogICAgIEhUTUxMZWdlbmRFbGVtZW50KiBsZWdlbmQoKSBjb25zdDsKIAorICAg
IEhUTUxDb2xsZWN0aW9uKiBlbGVtZW50cygpOworCisgICAgY29uc3QgVmVjdG9yPEZvcm1Bc3Nv
Y2lhdGVkRWxlbWVudCo+JiBhc3NvY2lhdGVkRWxlbWVudHMoKSBjb25zdDsKKyAgICB1bnNpZ25l
ZCBsZW5ndGgoKSBjb25zdDsKKwogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxl
ZEF0dHJpYnV0ZUNoYW5nZWQoKSBPVkVSUklERTsKIApAQCAtNDQsNiArNTQsMTMgQEAgcHJpdmF0
ZToKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEq
LCBSZW5kZXJTdHlsZSopOwogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBmb3JtQ29u
dHJvbFR5cGUoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgcmVjYWxjV2lsbFZhbGlkYXRlKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIHZvaWQgcmVmcmVzaEVsZW1lbnRzSWZOZWVk
ZWQoKSBjb25zdDsKKworICAgIE93blB0cjxIVE1MRm9ybUNvbGxlY3Rpb24+IG1fZWxlbWVudHND
b2xsZWN0aW9uOworICAgIG11dGFibGUgVmVjdG9yPEZvcm1Bc3NvY2lhdGVkRWxlbWVudCo+IG1f
YXNzb2NpYXRlZEVsZW1lbnRzOworICAgIC8vIFdoZW4gZG9tIHRyZWUgaXMgbW9kaWZpZWQsIHdl
IGhhdmUgdG8gcmVmcmVzaCB0aGUgbV9hc3NvY2lhdGVkRWxlbWVudHMgYXJyYXkuCisgICAgbXV0
YWJsZSB1aW50NjRfdCBtX2RvY3VtZW50VmVyc2lvbjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuaWRsIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmlkbAppbmRleCA2MDA2YWQ3
MDQ5OTZiZDg1MDI3NWNiOGMzMjFlMTQyYTc2ZjJmNDE1Li5kNjdiM2Y2NDcyYzYxMmExNmRlNjkz
Mjk3NjIxNmNjZmRkYjY3ZDIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
aWVsZFNldEVsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0
RWxlbWVudC5pZGwKQEAgLTI2LDYgKzI2LDggQEAgbW9kdWxlIGh0bWwgewogCiAgICAgICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgdHlwZTsKIAorICAgICAgICByZWFkb25seSBhdHRy
aWJ1dGUgSFRNTENvbGxlY3Rpb24gZWxlbWVudHM7CisKICAgICAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIGJvb2xlYW4gICAgICAgICB3aWxsVmFsaWRhdGU7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBWYWxpZGl0eVN0YXRlICAgdmFsaWRpdHk7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBET01TdHJpbmcgICAgICAgdmFsaWRhdGlvbk1lc3NhZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGb3JtQ29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGb3JtQ29sbGVjdGlvbi5jcHAKaW5kZXggYzUxZmFlNGE1OGI2ZDA4ZWM2ZmFjYWE4MTNi
ZTk4MWZjM2VkMTBmYi4uY2IzY2NhOTU0OWIzNTljNWU0ZmQ5MTNmNjY0OTA5ZWVkNzZjYWY1NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbGxlY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db2xsZWN0aW9uLmNwcApAQCAtMjMsNiAr
MjMsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkhUTUxGb3JtQ29sbGVjdGlv
bi5oIgogCisjaW5jbHVkZSAiSFRNTEZpZWxkU2V0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxG
b3JtQ29udHJvbEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MRm9ybUVsZW1lbnQuaCIKICNpbmNs
dWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCkBAIC01Myw4ICs1NCwxMCBAQCBIVE1MRm9ybUNvbGxl
Y3Rpb246On5IVE1MRm9ybUNvbGxlY3Rpb24oKQogY29uc3QgVmVjdG9yPEZvcm1Bc3NvY2lhdGVk
RWxlbWVudCo+JiBIVE1MRm9ybUNvbGxlY3Rpb246OmZvcm1Db250cm9sRWxlbWVudHMoKSBjb25z
dAogewogICAgIEFTU0VSVChiYXNlKCkpOwotICAgIEFTU0VSVChiYXNlKCktPmhhc1RhZ05hbWUo
Zm9ybVRhZykpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MRm9ybUVsZW1lbnQqPihiYXNl
KCkpLT5hc3NvY2lhdGVkRWxlbWVudHMoKTsKKyAgICBBU1NFUlQoYmFzZSgpLT5oYXNUYWdOYW1l
KGZvcm1UYWcpIHx8IGJhc2UoKS0+aGFzVGFnTmFtZShmaWVsZHNldFRhZykpOworICAgIGlmIChi
YXNlKCktPmhhc1RhZ05hbWUoZm9ybVRhZykpCisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxI
VE1MRm9ybUVsZW1lbnQqPihiYXNlKCkpLT5hc3NvY2lhdGVkRWxlbWVudHMoKTsKKyAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8SFRNTEZpZWxkU2V0RWxlbWVudCo+KGJhc2UoKSktPmFzc29jaWF0ZWRF
bGVtZW50cygpOwogfQogCiBjb25zdCBWZWN0b3I8SFRNTEltYWdlRWxlbWVudCo+JiBIVE1MRm9y
bUNvbGxlY3Rpb246OmZvcm1JbWFnZUVsZW1lbnRzKCkgY29uc3QKQEAgLTY3LDggKzcwLDEwIEBA
IGNvbnN0IFZlY3RvcjxIVE1MSW1hZ2VFbGVtZW50Kj4mIEhUTUxGb3JtQ29sbGVjdGlvbjo6Zm9y
bUltYWdlRWxlbWVudHMoKSBjb25zdAogdW5zaWduZWQgSFRNTEZvcm1Db2xsZWN0aW9uOjpudW1i
ZXJPZkZvcm1Db250cm9sRWxlbWVudHMoKSBjb25zdAogewogICAgIEFTU0VSVChiYXNlKCkpOwot
ICAgIEFTU0VSVChiYXNlKCktPmhhc1RhZ05hbWUoZm9ybVRhZykpOwotICAgIHJldHVybiBzdGF0
aWNfY2FzdDxIVE1MRm9ybUVsZW1lbnQqPihiYXNlKCkpLT5sZW5ndGgoKTsKKyAgICBBU1NFUlQo
YmFzZSgpLT5oYXNUYWdOYW1lKGZvcm1UYWcpIHx8IGJhc2UoKS0+aGFzVGFnTmFtZShmaWVsZHNl
dFRhZykpOworICAgIGlmIChiYXNlKCktPmhhc1RhZ05hbWUoZm9ybVRhZykpCisgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxIVE1MRm9ybUVsZW1lbnQqPihiYXNlKCkpLT5sZW5ndGgoKTsKKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTEZpZWxkU2V0RWxlbWVudCo+KGJhc2UoKSktPmxlbmd0
aCgpOwogfQogCiB1bnNpZ25lZCBIVE1MRm9ybUNvbGxlY3Rpb246OmNhbGNMZW5ndGgoKSBjb25z
dApAQCAtMTM0LDYgKzEzOSw5IEBAIEVsZW1lbnQqIEhUTUxGb3JtQ29sbGVjdGlvbjo6Z2V0TmFt
ZWRGb3JtSXRlbShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSwgY29uCiAgICAgICAgIH0K
ICAgICB9CiAKKyAgICBpZiAoYmFzZSgpLT5oYXNUYWdOYW1lKGZpZWxkc2V0VGFnKSkKKyAgICAg
ICAgcmV0dXJuIDA7CisKICAgICBjb25zdCBWZWN0b3I8SFRNTEltYWdlRWxlbWVudCo+JiBpbWFn
ZUVsZW1lbnRzQXJyYXkgPSBmb3JtSW1hZ2VFbGVtZW50cygpOwogICAgIGlmICghZm91bmRJbnB1
dEVsZW1lbnRzKSB7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBpbWFnZUVsZW1l
bnRzQXJyYXkuc2l6ZSgpOyArK2kpIHsKQEAgLTE5NSwxNSArMjAzLDE3IEBAIHZvaWQgSFRNTEZv
cm1Db2xsZWN0aW9uOjp1cGRhdGVOYW1lQ2FjaGUoKSBjb25zdAogICAgICAgICB9CiAgICAgfQog
Ci0gICAgY29uc3QgVmVjdG9yPEhUTUxJbWFnZUVsZW1lbnQqPiYgaW1hZ2VFbGVtZW50c0FycmF5
ID0gZm9ybUltYWdlRWxlbWVudHMoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaW1h
Z2VFbGVtZW50c0FycmF5LnNpemUoKTsgKytpKSB7Ci0gICAgICAgIEhUTUxJbWFnZUVsZW1lbnQq
IGVsZW1lbnQgPSBpbWFnZUVsZW1lbnRzQXJyYXlbaV07Ci0gICAgICAgIGNvbnN0IEF0b21pY1N0
cmluZyYgaWRBdHRyVmFsID0gZWxlbWVudC0+Z2V0SWRBdHRyaWJ1dGUoKTsKLSAgICAgICAgY29u
c3QgQXRvbWljU3RyaW5nJiBuYW1lQXR0clZhbCA9IGVsZW1lbnQtPmdldE5hbWVBdHRyaWJ1dGUo
KTsKLSAgICAgICAgaWYgKCFpZEF0dHJWYWwuaXNFbXB0eSgpICYmICFmb3VuZElucHV0RWxlbWVu
dHMuY29udGFpbnMoaWRBdHRyVmFsLmltcGwoKSkpCi0gICAgICAgICAgICBhcHBlbmQobV9jYWNo
ZS5pZENhY2hlLCBpZEF0dHJWYWwsIGVsZW1lbnQpOwotICAgICAgICBpZiAoIW5hbWVBdHRyVmFs
LmlzRW1wdHkoKSAmJiBpZEF0dHJWYWwgIT0gbmFtZUF0dHJWYWwgJiYgIWZvdW5kSW5wdXRFbGVt
ZW50cy5jb250YWlucyhuYW1lQXR0clZhbC5pbXBsKCkpKQotICAgICAgICAgICAgYXBwZW5kKG1f
Y2FjaGUubmFtZUNhY2hlLCBuYW1lQXR0clZhbCwgZWxlbWVudCk7CisgICAgaWYgKGJhc2UoKS0+
aGFzVGFnTmFtZShmb3JtVGFnKSkgeworICAgICAgICBjb25zdCBWZWN0b3I8SFRNTEltYWdlRWxl
bWVudCo+JiBpbWFnZUVsZW1lbnRzQXJyYXkgPSBmb3JtSW1hZ2VFbGVtZW50cygpOworICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaW1hZ2VFbGVtZW50c0FycmF5LnNpemUoKTsgKytp
KSB7CisgICAgICAgICAgICBIVE1MSW1hZ2VFbGVtZW50KiBlbGVtZW50ID0gaW1hZ2VFbGVtZW50
c0FycmF5W2ldOworICAgICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBpZEF0dHJWYWwgPSBl
bGVtZW50LT5nZXRJZEF0dHJpYnV0ZSgpOworICAgICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5n
JiBuYW1lQXR0clZhbCA9IGVsZW1lbnQtPmdldE5hbWVBdHRyaWJ1dGUoKTsKKyAgICAgICAgICAg
IGlmICghaWRBdHRyVmFsLmlzRW1wdHkoKSAmJiAhZm91bmRJbnB1dEVsZW1lbnRzLmNvbnRhaW5z
KGlkQXR0clZhbC5pbXBsKCkpKQorICAgICAgICAgICAgICAgIGFwcGVuZChtX2NhY2hlLmlkQ2Fj
aGUsIGlkQXR0clZhbCwgZWxlbWVudCk7CisgICAgICAgICAgICBpZiAoIW5hbWVBdHRyVmFsLmlz
RW1wdHkoKSAmJiBpZEF0dHJWYWwgIT0gbmFtZUF0dHJWYWwgJiYgIWZvdW5kSW5wdXRFbGVtZW50
cy5jb250YWlucyhuYW1lQXR0clZhbC5pbXBsKCkpKQorICAgICAgICAgICAgICAgIGFwcGVuZCht
X2NhY2hlLm5hbWVDYWNoZSwgbmFtZUF0dHJWYWwsIGVsZW1lbnQpOworICAgICAgICB9CiAgICAg
fQogCiAgICAgbV9jYWNoZS5oYXNOYW1lQ2FjaGUgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9SYWRpb05vZGVMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFk
aW9Ob2RlTGlzdC5jcHAKaW5kZXggYjM0YTZjOTY0NDhlNWIxZmU5ZmI5M2VjNzVkNjFkYzIzZTg4
MWFlMy4uNDA5MjliY2EzMjhmZjc0NjdkZDkwMzM1ZjM2MTA5YzkyNjFiYjYzYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9SYWRpb05vZGVMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL1JhZGlvTm9kZUxpc3QuY3BwCkBAIC0zNiwxOCArMzYsMTggQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1SYWRpb05vZGVMaXN0
OjpSYWRpb05vZGVMaXN0KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgRWxlbWVudCogZm9ybUVs
ZW1lbnQpCi0gICAgOiBEeW5hbWljU3VidHJlZU5vZGVMaXN0KGZvcm1FbGVtZW50LT5kb2N1bWVu
dCgpKQorUmFkaW9Ob2RlTGlzdDo6UmFkaW9Ob2RlTGlzdChjb25zdCBBdG9taWNTdHJpbmcmIG5h
bWUsIEVsZW1lbnQqIGJhc2VFbGVtZW50KQorICAgIDogRHluYW1pY1N1YnRyZWVOb2RlTGlzdChi
YXNlRWxlbWVudC0+aGFzVGFnTmFtZShmb3JtVGFnKSA/IHN0YXRpY19jYXN0PE5vZGUqPihiYXNl
RWxlbWVudC0+ZG9jdW1lbnQoKSkgOiBiYXNlRWxlbWVudCkKICAgICAsIG1fbmFtZShuYW1lKQot
ICAgICwgbV9mb3JtRWxlbWVudChmb3JtRWxlbWVudCkKKyAgICAsIG1fYmFzZUVsZW1lbnQoYmFz
ZUVsZW1lbnQpCiB7Ci0gICAgbV9mb3JtRWxlbWVudC0+ZG9jdW1lbnQoKS0+cmVnaXN0ZXJEeW5h
bWljU3VidHJlZU5vZGVMaXN0KHRoaXMpOworICAgIG1fYmFzZUVsZW1lbnQtPmRvY3VtZW50KCkt
PnJlZ2lzdGVyRHluYW1pY1N1YnRyZWVOb2RlTGlzdCh0aGlzKTsKIH0KIAogUmFkaW9Ob2RlTGlz
dDo6flJhZGlvTm9kZUxpc3QoKQogewotICAgIG1fZm9ybUVsZW1lbnQtPnJlbW92ZUNhY2hlZFJh
ZGlvTm9kZUxpc3QodGhpcywgbV9uYW1lKTsKLSAgICBtX2Zvcm1FbGVtZW50LT5kb2N1bWVudCgp
LT51bnJlZ2lzdGVyRHluYW1pY1N1YnRyZWVOb2RlTGlzdCh0aGlzKTsKKyAgICBtX2Jhc2VFbGVt
ZW50LT5yZW1vdmVDYWNoZWRSYWRpb05vZGVMaXN0KHRoaXMsIG1fbmFtZSk7CisgICAgbV9iYXNl
RWxlbWVudC0+ZG9jdW1lbnQoKS0+dW5yZWdpc3RlckR5bmFtaWNTdWJ0cmVlTm9kZUxpc3QodGhp
cyk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSFRNTElucHV0RWxlbWVudCogdG9SYWRpb0J1dHRvbklu
cHV0RWxlbWVudChOb2RlKiBub2RlKQpAQCAtODYsMTMgKzg2LDE1IEBAIHZvaWQgUmFkaW9Ob2Rl
TGlzdDo6c2V0VmFsdWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIGJvb2wgUmFkaW9Ob2RlTGlzdDo6
Y2hlY2tFbGVtZW50TWF0Y2hlc1JhZGlvTm9kZUxpc3RGaWx0ZXIoRWxlbWVudCogdGVzdEVsZW1l
bnQpIGNvbnN0CiB7CiAgICAgQVNTRVJUKHRlc3RFbGVtZW50LT5oYXNUYWdOYW1lKG9iamVjdFRh
ZykgfHwgdGVzdEVsZW1lbnQtPmlzRm9ybUNvbnRyb2xFbGVtZW50KCkpOwotICAgIEhUTUxGb3Jt
RWxlbWVudCogZm9ybUVsZW1lbnQgPSAwOwotICAgIGlmICh0ZXN0RWxlbWVudC0+aGFzVGFnTmFt
ZShvYmplY3RUYWcpKQotICAgICAgICBmb3JtRWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxPYmpl
Y3RFbGVtZW50Kj4odGVzdEVsZW1lbnQpLT5mb3JtKCk7Ci0gICAgZWxzZQotICAgICAgICBmb3Jt
RWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqPih0ZXN0RWxlbWVu
dCktPmZvcm0oKTsKLSAgICBpZiAoIWZvcm1FbGVtZW50IHx8IGZvcm1FbGVtZW50ICE9IG1fZm9y
bUVsZW1lbnQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9iYXNlRWxlbWVudC0+
aGFzVGFnTmFtZShmb3JtVGFnKSkgeworICAgICAgICBIVE1MRm9ybUVsZW1lbnQqIGZvcm1FbGVt
ZW50ID0gMDsKKyAgICAgICAgaWYgKHRlc3RFbGVtZW50LT5oYXNUYWdOYW1lKG9iamVjdFRhZykp
CisgICAgICAgICAgICBmb3JtRWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxPYmplY3RFbGVtZW50
Kj4odGVzdEVsZW1lbnQpLT5mb3JtKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGZvcm1F
bGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTEZvcm1Db250cm9sRWxlbWVudCo+KHRlc3RFbGVtZW50
KS0+Zm9ybSgpOworICAgICAgICBpZiAoIWZvcm1FbGVtZW50IHx8IGZvcm1FbGVtZW50ICE9IG1f
YmFzZUVsZW1lbnQpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogCiAgICAgcmV0
dXJuIHRlc3RFbGVtZW50LT5nZXRJZEF0dHJpYnV0ZSgpID09IG1fbmFtZSB8fCB0ZXN0RWxlbWVu
dC0+Z2V0TmFtZUF0dHJpYnV0ZSgpID09IG1fbmFtZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvUmFkaW9Ob2RlTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9SYWRpb05v
ZGVMaXN0LmgKaW5kZXggYmVjYjUyZWFkZTU1YTVkM2E3MTQwNDhlYjI2YzZkZmZkYjNkOGMwMS4u
Nzc4MmU0ODAyZTgyNzdmZWE0YjJlMGRmN2QxYTNkZjRhYmQ4NDY5ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9SYWRpb05vZGVMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9SYWRpb05vZGVMaXN0LmgKQEAgLTM2LDkgKzM2LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBSYWRpb05vZGVMaXN0IDogcHVibGljIER5bmFtaWNTdWJ0cmVlTm9kZUxpc3Qgewog
cHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJhZGlvTm9kZUxpc3Q+IGNyZWF0ZShjb25z
dCBBdG9taWNTdHJpbmcmIG5hbWUsIEVsZW1lbnQqIGZvcm1FbGVtZW50KQorICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFJhZGlvTm9kZUxpc3Q+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUs
IEVsZW1lbnQqIGJhc2VFbGVtZW50KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBSYWRpb05vZGVMaXN0KG5hbWUsIGZvcm1FbGVtZW50KSk7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgUmFkaW9Ob2RlTGlzdChuYW1lLCBiYXNlRWxlbWVudCkpOwogICAgIH0KIAogICAg
IH5SYWRpb05vZGVMaXN0KCk7CkBAIC01NCw3ICs1NCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBj
aGVja0VsZW1lbnRNYXRjaGVzUmFkaW9Ob2RlTGlzdEZpbHRlcihFbGVtZW50KikgY29uc3Q7CiAK
ICAgICBBdG9taWNTdHJpbmcgbV9uYW1lOwotICAgIFJlZlB0cjxFbGVtZW50PiBtX2Zvcm1FbGVt
ZW50OworICAgIFJlZlB0cjxFbGVtZW50PiBtX2Jhc2VFbGVtZW50OwogfTsKIAogfSAvLyBuYW1l
cHNhY2UKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwppbmRleCA4OWI3M2EyMDJjMDIxZTI1NmY1MzM4NjZhNmUzN2U2M2NiZWJlZWViLi5k
NDc3MjA0MWM4OTZlZWMxMTAyNmExNDg4OTJlODViMDNmMDhkMGYxIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTUgQEAKKzIwMTItMDUtMjggIFJha2VzaCBLTiAgPHJha2VzaC5rbkBtb3Rvcm9sYS5jb20+CisK
KyAgICAgICAgW0Zvcm1zXSBIVE1MRmllbGRTZXRFbGVtZW50LmlkbCBkb2Vzbid0IGhhdmUgZWxl
bWVudHMgYXR0cmlidXRlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9ODAxMTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIGZhc3QvZm9ybXMvZmllbGRzZXQvZmllbGRzZXQtZWxlbWVudHMtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL2ZpZWxkc2V0L2ZpZWxkc2V0LWVsZW1l
bnRzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvZmllbGRzZXQvZmllbGRzZXQt
Zm9ybS1jb2xsZWN0aW9uLXJhZGlvbm9kZS1saXN0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9mb3Jtcy9maWVsZHNldC9maWVsZHNldC1mb3JtLWNvbGxlY3Rpb24tcmFkaW9u
b2RlLWxpc3QuaHRtbDogQWRkZWQuCisKIDIwMTItMDUtMjggIE1hcmN1cyBCdWxhY2ggIDxidWxh
Y2hAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gQWRqdXN0IGV4cGVjdGF0aW9u
cyBmb3IgZmFzdC9sYXllcnMvY2xpcC1yZWN0cy1hc3NlcnRpb24tZXhwZWN0ZWQudHh0CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpZWxkc2V0L2ZpZWxkc2V0LWVsZW1lbnRz
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmllbGRzZXQvZmllbGRzZXQt
ZWxlbWVudHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ1NjMzYWI5ZDVlODU5ZDYyNzNhMmQz
YWU4OWYzYjQwNWUxYTk3OTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL2ZpZWxkc2V0L2ZpZWxkc2V0LWVsZW1lbnRzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQ5
IEBACitUaGlzIHRlc3QgdGhlIGVsZW1lbnRzIGF0dGlidXRlIG9mIEhUTUxGaWVsZFNldCBlbGVt
ZW50LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBvd25lci5lbGVtZW50
cy5sZW5ndGggaXMgMjMKK1BBU1Mgb3duZXIuZWxlbWVudHNbMF0uaWQgaXMgJ2J1dHRvbjEnCitQ
QVNTIG93bmVyLmVsZW1lbnRzWzFdLmlkIGlzICdmaWVsZHNldDEnCitQQVNTIG93bmVyLmVsZW1l
bnRzWzJdLmlkIGlzICdpbnB1dGhpZGRlbicKK1BBU1Mgb3duZXIuZWxlbWVudHNbM10uaWQgaXMg
J2lucHV0dGV4dCcKK1BBU1Mgb3duZXIuZWxlbWVudHNbNF0uaWQgaXMgJ2lucHV0c2VhcmNoJwor
UEFTUyBvd25lci5lbGVtZW50c1s1XS5pZCBpcyAnaW5wdXR1cmwnCitQQVNTIG93bmVyLmVsZW1l
bnRzWzZdLmlkIGlzICdpbnB1dGVtYWlsJworUEFTUyBvd25lci5lbGVtZW50c1s3XS5pZCBpcyAn
aW5wdXRwYXNzd29yZCcKK1BBU1Mgb3duZXIuZWxlbWVudHNbOF0uaWQgaXMgJ2lucHV0ZGF0ZScK
K1BBU1Mgb3duZXIuZWxlbWVudHNbOV0uaWQgaXMgJ2lucHV0bnVtYmVyJworUEFTUyBvd25lci5l
bGVtZW50c1sxMF0uaWQgaXMgJ2lucHV0cmFuZ2UnCitQQVNTIG93bmVyLmVsZW1lbnRzWzExXS5p
ZCBpcyAnaW5wdXRjb2xvcicKK1BBU1Mgb3duZXIuZWxlbWVudHNbMTJdLmlkIGlzICdpbnB1dGNo
ZWNrYm94JworUEFTUyBvd25lci5lbGVtZW50c1sxM10uaWQgaXMgJ2lucHV0cmFkaW8nCitQQVNT
IG93bmVyLmVsZW1lbnRzWzE0XS5pZCBpcyAnaW5wdXRmaWxlJworUEFTUyBvd25lci5lbGVtZW50
c1sxNV0uaWQgaXMgJ2lucHV0c3VibWl0JworUEFTUyBvd25lci5lbGVtZW50c1sxNl0uaWQgaXMg
J2lucHV0cmVzZXQnCitQQVNTIG93bmVyLmVsZW1lbnRzWzE3XS5pZCBpcyAnaW5wdXRidXR0b24n
CitQQVNTIG93bmVyLmVsZW1lbnRzWzE4XS5pZCBpcyAna2V5Z2VuMScKK1BBU1Mgb3duZXIuZWxl
bWVudHNbMTldLmlkIGlzICdvYmplY3QxJworUEFTUyBvd25lci5lbGVtZW50c1syMF0uaWQgaXMg
J291dHB1dDEnCitQQVNTIG93bmVyLmVsZW1lbnRzWzIxXS5pZCBpcyAnc2VsZWN0MScKK1BBU1Mg
b3duZXIuZWxlbWVudHNbMjJdLmlkIGlzICd0ZXh0YXJlYTEnCisKK0NoZWNrIGVsZW1lbnRzIGFy
cmF5IGlzIHVwZGF0ZWQgYWZ0ZXIgYWRkaW5nIGEgbmV3IGVsZW1lbnQKK1BBU1Mgb3duZXIuYXBw
ZW5kQ2hpbGQobmV3RWxlbWVudCk7IG93bmVyLmVsZW1lbnRzLmxlbmd0aCBpcyAyNAorCitDaGVj
ayBlbGVtZW50cyBhcnJheSBpcyB1cGRhdGVkIGFmdGVyIHJlbW92ZSBhbiBlbGVtZW50CitQQVNT
IG93bmVyLnJlbW92ZUNoaWxkKG5ld0VsZW1lbnQpOyBvd25lci5lbGVtZW50cy5sZW5ndGggaXMg
MjMKKworQ2hlY2sgb3duZXIuZWxlbWVudHMgaXMgdXBkYXRlZCBwcm9wZXJseQorUEFTUyBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiaW5wdXRmaWxlIikudHlwZT0iaW1hZ2UiOyBvd25lci5lbGVt
ZW50cy5sZW5ndGggaXMgMjIKKworQ2hlY2sgb3duZXIuZWxlbWVudHMgaXMgdXBkYXRlZCBwcm9w
ZXJseSBhZnRlciByZW1vdmluZyBmcm9tIHBhcmVudAorUEFTUyBmb3JtLmFwcGVuZENoaWxkKG5l
d0VsZW1lbnQpOyBmb3JtLmVsZW1lbnRzLmxlbmd0aCBpcyAxCitQQVNTIGZvcm0ucmVtb3ZlQ2hp
bGQobmV3RWxlbWVudCk7IGZvcm0uZWxlbWVudHMubGVuZ3RoIGlzIDAKK1BBU1Mgb3duZXIuZWxl
bWVudHMubGVuZ3RoIGlzIDIyCitQQVNTIG93bmVyLmFwcGVuZENoaWxkKG5ld0VsZW1lbnQpOyBv
d25lci5lbGVtZW50cy5sZW5ndGggaXMgMjMKK1BBU1Mgb3duZXIucmVtb3ZlQ2hpbGQobmV3RWxl
bWVudCk7IG93bmVyLmVsZW1lbnRzLmxlbmd0aCBpcyAyMgorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvZm9ybXMvZmllbGRzZXQvZmllbGRzZXQtZWxlbWVudHMuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvZm9ybXMvZmllbGRzZXQvZmllbGRzZXQtZWxlbWVudHMuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MzY3
NjgzMTcyNGE0MDIwZjc3N2M1ZGQzMTM4ZTQzY2Q0OTk2YWZiCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWVsZHNldC9maWVsZHNldC1lbGVtZW50cy5odG1sCkBA
IC0wLDAgKzEsMTA1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBj
aGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9u
KCJUaGlzIHRlc3QgdGhlIGVsZW1lbnRzIGF0dGlidXRlIG9mIEhUTUxGaWVsZFNldCBlbGVtZW50
LiIpOworCit2YXIgY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Citk
b2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGNvbnRhaW5lcik7CisKK2NvbnRhaW5lci5pbm5lckhU
TUwgPSAnPGZvcm0gaWQ9Zm9ybUVsZW1lbnQ+IDxmaWVsZHNldCBpZD0iZnMiPicgKworICAgICc8
YnV0dG9uIGlkPWJ1dHRvbjE+PC9idXR0b24+JyArCisgICAgJzxmaWVsZHNldCBpZD1maWVsZHNl
dDE+PGxlZ2VuZCBpZD1sZWdlbmQxPjwvbGVnZW5kPjwvZmllbGRzZXQ+JyArCisgICAgJzxkaXY+
IDxpbnB1dCBpZD1pbnB1dGhpZGRlbiB0eXBlPWhpZGRlbj4gPC9kaXY+JyArCisgICAgJzxpbnB1
dCBpZD1pbnB1dHRleHQgdHlwZT10ZXh0PicgKworICAgICc8aW5wdXQgaWQ9aW5wdXRzZWFyY2gg
dHlwZT1zZWFyY2g+JyArCisgICAgJzxpbnB1dCBpZD1pbnB1dHVybCB0eXBlPXVybD4nICsKKyAg
ICAnPGlucHV0IGlkPWlucHV0ZW1haWwgdHlwZT1lbWFpbD4nICsKKyAgICAnPGlucHV0IGlkPWlu
cHV0cGFzc3dvcmQgdHlwZT1wYXNzd29yZD4nICsKKyAgICAnPGlucHV0IGlkPWlucHV0ZGF0ZSB0
eXBlPWRhdGU+JyArCisgICAgJzxpbnB1dCBpZD1pbnB1dG51bWJlciB0eXBlPW51bWJlcj4nICsK
KyAgICAnPGlucHV0IGlkPWlucHV0cmFuZ2UgdHlwZT1yYW5nZT4nICsKKyAgICAnPGlucHV0IGlk
PWlucHV0Y29sb3IgdHlwZT1jb2xvcj4nICsKKyAgICAnPGlucHV0IGlkPWlucHV0Y2hlY2tib3gg
dHlwZT1jaGVja2JveD4nICsKKyAgICAnPGlucHV0IGlkPWlucHV0cmFkaW8gdHlwZT1yYWRpbz4n
ICsKKyAgICAnPGlucHV0IGlkPWlucHV0ZmlsZSB0eXBlPWZpbGU+JyArCisgICAgJzxpbnB1dCBp
ZD1pbnB1dHN1Ym1pdCB0eXBlPXN1Ym1pdD4nICsKKyAgICAnPGlucHV0IGlkPWlucHV0aW1hZ2Ug
dHlwZT1pbWFnZT4nICsKKyAgICAnPGlucHV0IGlkPWlucHV0cmVzZXQgdHlwZT1yZXNldD4nICsK
KyAgICAnPGlucHV0IGlkPWlucHV0YnV0dG9uIHR5cGU9YnV0dG9uPicgKworICAgICc8a2V5Z2Vu
IGlkPWtleWdlbjE+PC9rZXlnZW4+JyArCisgICAgJzxsYWJlbCBpZD1sYWJlbDE+PC9sYWJlbD4n
ICsKKyAgICAnPG1ldGVyIGlkPW1ldGVyMT48L21ldGVyPicgKworICAgICc8b2JqZWN0IGlkPW9i
amVjdDE+PC9vYmplY3Q+JyArCisgICAgJzxvdXRwdXQgaWQ9b3V0cHV0MT48L291dHB1dD4nICsK
KyAgICAnPHByb2dyZXNzIGlkPXByb2dyZXNzMT48L3Byb2dyZXNzPicgKworICAgICc8c2VsZWN0
IGlkPXNlbGVjdDE+JyArCisgICAgJyAgICA8b3B0Z3JvdXAgaWQ9b3B0Z3JvdXAxPmdyb3VwMTwv
b3B0Z3JvdXA+JyArCisgICAgJyAgICA8b3B0aW9uIGlkPW9wdGlvbjE+b3B0aW9uMTwvb3B0aW9u
PicgKworICAgICc8L3NlbGVjdD4nICsKKyAgICAnPHRleHRhcmVhIGlkPXRleHRhcmVhMT48L3Rl
eHRhcmVhPicgKworICAgICc8L2ZpZWxkc2V0PiA8L2Zvcm0+JzsKKwordmFyIG93bmVyID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZzJyk7CisKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50cy5s
ZW5ndGgnLCAnMjMnKTsKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50c1swXS5pZCcsICInYnV0dG9u
MSciKTsKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50c1sxXS5pZCcsICInZmllbGRzZXQxJyIpOwor
c2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzWzJdLmlkJywgIidpbnB1dGhpZGRlbiciKTsKK3Nob3Vs
ZEJlKCdvd25lci5lbGVtZW50c1szXS5pZCcsICInaW5wdXR0ZXh0JyIpOworc2hvdWxkQmUoJ293
bmVyLmVsZW1lbnRzWzRdLmlkJywgIidpbnB1dHNlYXJjaCciKTsKK3Nob3VsZEJlKCdvd25lci5l
bGVtZW50c1s1XS5pZCcsICInaW5wdXR1cmwnIik7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHNb
Nl0uaWQnLCAiJ2lucHV0ZW1haWwnIik7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHNbN10uaWQn
LCAiJ2lucHV0cGFzc3dvcmQnIik7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHNbOF0uaWQnLCAi
J2lucHV0ZGF0ZSciKTsKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50c1s5XS5pZCcsICInaW5wdXRu
dW1iZXInIik7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHNbMTBdLmlkJywgIidpbnB1dHJhbmdl
JyIpOworc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzWzExXS5pZCcsICInaW5wdXRjb2xvciciKTsK
K3Nob3VsZEJlKCdvd25lci5lbGVtZW50c1sxMl0uaWQnLCAiJ2lucHV0Y2hlY2tib3gnIik7Citz
aG91bGRCZSgnb3duZXIuZWxlbWVudHNbMTNdLmlkJywgIidpbnB1dHJhZGlvJyIpOworc2hvdWxk
QmUoJ293bmVyLmVsZW1lbnRzWzE0XS5pZCcsICInaW5wdXRmaWxlJyIpOworc2hvdWxkQmUoJ293
bmVyLmVsZW1lbnRzWzE1XS5pZCcsICInaW5wdXRzdWJtaXQnIik7CitzaG91bGRCZSgnb3duZXIu
ZWxlbWVudHNbMTZdLmlkJywgIidpbnB1dHJlc2V0JyIpOworc2hvdWxkQmUoJ293bmVyLmVsZW1l
bnRzWzE3XS5pZCcsICInaW5wdXRidXR0b24nIik7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHNb
MThdLmlkJywgIidrZXlnZW4xJyIpOworc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzWzE5XS5pZCcs
ICInb2JqZWN0MSciKTsKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50c1syMF0uaWQnLCAiJ291dHB1
dDEnIik7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHNbMjFdLmlkJywgIidzZWxlY3QxJyIpOwor
c2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzWzIyXS5pZCcsICIndGV4dGFyZWExJyIpOworCit2YXIg
bmV3RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7CituZXdFbGVtZW50
LnNldEF0dHJpYnV0ZSgidHlwZSIsICJ0ZXh0Iik7CituZXdFbGVtZW50LnNldEF0dHJpYnV0ZSgi
dmFsdWUiLCAibmV3IGVsZW1lbnQiKTsKK25ld0VsZW1lbnQuc2V0QXR0cmlidXRlKCJpZCIsICJp
bnB1dGNvbW1vbiIpOworCitkZWJ1ZygiIik7CitkZWJ1ZygiQ2hlY2sgZWxlbWVudHMgYXJyYXkg
aXMgdXBkYXRlZCBhZnRlciBhZGRpbmcgYSBuZXcgZWxlbWVudCIpOworc2hvdWxkQmUoJ293bmVy
LmFwcGVuZENoaWxkKG5ld0VsZW1lbnQpOyBvd25lci5lbGVtZW50cy5sZW5ndGgnLCAnMjQnKTsK
KworZGVidWcoIiIpOworZGVidWcoIkNoZWNrIGVsZW1lbnRzIGFycmF5IGlzIHVwZGF0ZWQgYWZ0
ZXIgcmVtb3ZlIGFuIGVsZW1lbnQiKTsKK3Nob3VsZEJlKCdvd25lci5yZW1vdmVDaGlsZChuZXdF
bGVtZW50KTsgb3duZXIuZWxlbWVudHMubGVuZ3RoJywgJzIzJyk7CisKK2RlYnVnKCIiKTsKK2Rl
YnVnKCJDaGVjayBvd25lci5lbGVtZW50cyBpcyB1cGRhdGVkIHByb3Blcmx5Iik7CitzaG91bGRC
ZSgnZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImlucHV0ZmlsZSIpLnR5cGU9ImltYWdlIjsgb3du
ZXIuZWxlbWVudHMubGVuZ3RoJywgJzIyJyk7CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJDaGVjayBv
d25lci5lbGVtZW50cyBpcyB1cGRhdGVkIHByb3Blcmx5IGFmdGVyIHJlbW92aW5nIGZyb20gcGFy
ZW50Iik7Citvd25lci5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKG93bmVyKTsKK3ZhciBmb3JtID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZvcm1FbGVtZW50Iik7CitzaG91bGRCZSgnZm9ybS5h
cHBlbmRDaGlsZChuZXdFbGVtZW50KTsgZm9ybS5lbGVtZW50cy5sZW5ndGgnLCAnMScpOworc2hv
dWxkQmUoJ2Zvcm0ucmVtb3ZlQ2hpbGQobmV3RWxlbWVudCk7IGZvcm0uZWxlbWVudHMubGVuZ3Ro
JywgJzAnKTsKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50cy5sZW5ndGgnLCAnMjInKTsKK3Nob3Vs
ZEJlKCdvd25lci5hcHBlbmRDaGlsZChuZXdFbGVtZW50KTsgb3duZXIuZWxlbWVudHMubGVuZ3Ro
JywgJzIzJyk7CitzaG91bGRCZSgnb3duZXIucmVtb3ZlQ2hpbGQobmV3RWxlbWVudCk7IG93bmVy
LmVsZW1lbnRzLmxlbmd0aCcsICcyMicpOworCitjb250YWluZXIucGFyZW50Tm9kZS5yZW1vdmVD
aGlsZChjb250YWluZXIpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpZWxkc2V0L2ZpZWxkc2V0LWZvcm0tY29sbGVj
dGlvbi1yYWRpb25vZGUtbGlzdC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L2ZpZWxkc2V0L2ZpZWxkc2V0LWZvcm0tY29sbGVjdGlvbi1yYWRpb25vZGUtbGlzdC1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uN2U0NWY5ZWI4YjAwN2UxZjBjMWVjY2E2ZjRhZDEwNGRlN2I0NDc1
MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmllbGRzZXQvZmll
bGRzZXQtZm9ybS1jb2xsZWN0aW9uLXJhZGlvbm9kZS1saXN0LWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDUzIEBACitUaGlzIHRlc3QgaXMgZm9yIFJhZGlvTm9kZUxpc3Qgc3BlY2lmaWVkIGF0IGh0
dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvbXVsdGlwYWdl
L2NvbW1vbi1kb20taW50ZXJmYWNlcy5odG1sI3JhZGlvbm9kZWxpc3QKKworT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRF
U1QgQ09NUExFVEUiLgorCisKKworUEFTUyBvd25lci5lbGVtZW50cy5sZW5ndGggaXMgMjMKK1BB
U1MgcmFkaW9Ob2RlTGlzdC5sZW5ndGggaXMgNAorUEFTUyByYWRpb05vZGVMaXN0WzBdLnZhbHVl
IGlzICdzZWFyY2hpbmcnCitQQVNTIHJhZGlvTm9kZUxpc3RbMV0udmFsdWUgaXMgJzEyMycKK1BB
U1MgcmFkaW9Ob2RlTGlzdFsyXS52YWx1ZSBpcyAnaW5wdXRSYWRpb1ZhbHVlJworUEFTUyByYWRp
b05vZGVMaXN0WzNdLnZhbHVlIGlzICdidXR0b25WYWx1ZScKKworQ2hhbmdpbmcgdGhlIGlucHV0
IHZhbHVlIHRvIGNoZWNrIFJhZGlvTm9kZUxpc3QgaXMgbGl2ZSB2aWV3IG9mIEZvcm1Db2xsZWN0
aW9uCitQQVNTIHJhZGlvTm9kZUxpc3RbMV0udmFsdWUgaXMgJzQ1NicKKworQ2hlY2tpbmcgdmFs
dWUgSURMIGF0dHJpYnV0ZSBvbiB0aGUgUmFkaW9Ob2RlTGlzdAorUEFTUyByYWRpb05vZGVMaXN0
LnZhbHVlIGlzICIiCitQQVNTIHJhZGlvTm9kZUxpc3QudmFsdWUgPSAiaW5wdXRSYWRpb1ZhbHVl
IjsgcmFkaW9Ob2RlTGlzdFsyXS5jaGVja2VkIGlzIHRydWUKK1BBU1MgT2JqZWN0LnByb3RvdHlw
ZS50b1N0cmluZy5jYWxsKHJhZGlvTm9kZUxpc3RbMl0pIGlzICdbb2JqZWN0IEhUTUxJbnB1dEVs
ZW1lbnRdJworUEFTUyByYWRpb05vZGVMaXN0WzJdLnR5cGUgaXMgJ3JhZGlvJworUEFTUyByYWRp
b05vZGVMaXN0LnZhbHVlIGlzICIiCitQQVNTIHJhZGlvTm9kZUxpc3RbMl0uY2hlY2tlZCA9IHRy
dWU7IHJhZGlvTm9kZUxpc3QudmFsdWUgaXMgJ2lucHV0UmFkaW9WYWx1ZScKKworQ2hlY2sgUmFk
aW9Ob2RlTGlzdCBpcyB1cGRhdGVkIGFmdGVyIGFkZGluZyBhIG5ldyBlbGVtZW50CitQQVNTIG93
bmVyLmFwcGVuZENoaWxkKG5ld0VsZW1lbnQpOyByYWRpb05vZGVMaXN0Lmxlbmd0aCBpcyA1CitQ
QVNTIG93bmVyLmVsZW1lbnRzLmxlbmd0aCBpcyAyNAorUEFTUyByYWRpb05vZGVMaXN0WzRdLnZh
bHVlIGlzICduZXcgZWxlbWVudCcKKworQ2hlY2sgUmFkaW9Ob2RlTGlzdCBpcyB1cGRhdGVkIGFm
dGVyIHJlbW92ZSBhbiBlbGVtZW50CitQQVNTIG93bmVyLnJlbW92ZUNoaWxkKG5ld0VsZW1lbnQp
OyByYWRpb05vZGVMaXN0Lmxlbmd0aCBpcyA0CitQQVNTIHJhZGlvTm9kZUxpc3RbM10udmFsdWUg
aXMgJ2J1dHRvblZhbHVlJworCitDaGVjayBSYWRpb05vZGVMaXN0IGlzIHVwZGF0ZWQgYWZ0ZXIg
Y2hhbmdlIGluIGlkLCB0eXBlIGFuZCBjaGVja2VkIHN0YXRlIG9mIGFuIGVsZW1lbnQKK1BBU1Mg
cmFkaW9Ob2RlTGlzdC5sZW5ndGggaXMgNAorQWZ0ZXIgY2hhbmdpbmcgdGhlIGlkCitQQVNTIHJh
ZGlvTm9kZUxpc3QubGVuZ3RoIGlzIDMKK1BBU1MgZWxlbWVudHNMaXN0WzEzXS5jaGVja2VkID0g
ZmFsc2U7IHJhZGlvTm9kZUxpc3QudmFsdWUgaXMgIiIKK1BBU1MgZWxlbWVudHNMaXN0WzEzXS5j
aGVja2VkID0gdHJ1ZTsgcmFkaW9Ob2RlTGlzdC52YWx1ZSBpcyAnaW5wdXRSYWRpb1ZhbHVlJwor
UEFTUyBlbGVtZW50c0xpc3RbMTNdLnR5cGUgPSAiZGF0ZSI7IHJhZGlvTm9kZUxpc3QudmFsdWUg
aXMgJycKKworQ2hlY2sgc2Vjb25kIFJhZGlvTm9kZUxpc3QgaXMgYWxzbyBjcmVhdGVkIHByb3Bl
cmx5CitQQVNTIHJhZGlvTm9kZUxpc3QyLmxlbmd0aCBpcyAzCitQQVNTIHJhZGlvTm9kZUxpc3Qy
WzBdLnR5cGUgaXMgJ3RleHQnCitQQVNTIHJhZGlvTm9kZUxpc3QyWzFdLnR5cGUgaXMgJ2VtYWls
JworUEFTUyByYWRpb05vZGVMaXN0MlsyXS50eXBlIGlzICdyZXNldCcKK0FmdGVyIGNoYW5naW5n
IHRoZSBpZAorUEFTUyByYWRpb05vZGVMaXN0Mi5sZW5ndGggaXMgMgorCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy9maWVsZHNldC9maWVsZHNldC1mb3JtLWNvbGxlY3Rpb24tcmFkaW9u
b2RlLWxpc3QuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmllbGRzZXQvZmllbGRzZXQt
Zm9ybS1jb2xsZWN0aW9uLXJhZGlvbm9kZS1saXN0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzM0MWQwYzMw
ZDc2ZWFlOWIyZDAxNjE4ZjYzZmMwZmMyYTY1MWZlYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvZm9ybXMvZmllbGRzZXQvZmllbGRzZXQtZm9ybS1jb2xsZWN0aW9uLXJhZGlv
bm9kZS1saXN0Lmh0bWwKQEAgLTAsMCArMSwxMjAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJkaXZJZCI+Cis8
Zm9ybT4KKzxmaWVsZHNldCBpZD0iZnMiPgorICAgIDxidXR0b24gaWQ9YnV0dG9uMT48L2J1dHRv
bj4KKyAgICA8ZmllbGRzZXQgaWQ9ZmllbGRzZXQxPjxsZWdlbmQgaWQ9bGVnZW5kMT48L2xlZ2Vu
ZD48L2ZpZWxkc2V0PgorICAgIDxpbnB1dCBpZD1pbnB1dGhpZGRlbiB0eXBlPWhpZGRlbj4KKyAg
ICA8aW5wdXQgaWQ9Y29tbW9uaW5wdXQgdHlwZT10ZXh0PgorICAgIDxpbnB1dCBpZD1pbnB1dGNv
bW1vbiB0eXBlPXNlYXJjaCB2YWx1ZT1zZWFyY2hpbmc+CisgICAgPGlucHV0IGlkPWlucHV0dXJs
IHR5cGU9dXJsPgorICAgIDxpbnB1dCBpZD1jb21tb25pbnB1dCB0eXBlPWVtYWlsPgorICAgIDxp
bnB1dCBpZD1pbnB1dHBhc3N3b3JkIHR5cGU9cGFzc3dvcmQ+CisgICAgPGlucHV0IGlkPWlucHV0
ZGF0ZSB0eXBlPWRhdGU+CisgICAgPGlucHV0IGlkPW51bWJlcklkIG5hbWU9aW5wdXRjb21tb24g
dHlwZT1udW1iZXIgdmFsdWU9MTIzPgorICAgIDxpbnB1dCBpZD1pbnB1dHJhbmdlIHR5cGU9cmFu
Z2U+CisgICAgPGlucHV0IGlkPWlucHV0Y29sb3IgdHlwZT1jb2xvcj4KKyAgICA8aW5wdXQgaWQ9
aW5wdXRjaGVja2JveCB0eXBlPWNoZWNrYm94PgorICAgIDxpbnB1dCBpZD1pbnB1dGNvbW1vbiB0
eXBlPXJhZGlvIHZhbHVlPSJpbnB1dFJhZGlvVmFsdWUiPgorICAgIDxpbnB1dCBpZD1pbnB1dGZp
bGUgdHlwZT1maWxlPgorICAgIDxpbnB1dCBpZD1pbnB1dHN1Ym1pdCB0eXBlPXN1Ym1pdD4KKyAg
ICA8aW5wdXQgaWQ9aW5wdXRjb21tb24gdHlwZT1pbWFnZT4KKyAgICA8aW5wdXQgaWQ9Y29tbW9u
aW5wdXQgdHlwZT1yZXNldD4KKyAgICA8aW5wdXQgaWQ9aW5wdXRjb21tb24gdHlwZT1idXR0b24g
dmFsdWU9YnV0dG9uVmFsdWU+CisgICAgPGtleWdlbiBpZD1rZXlnZW4xPjwva2V5Z2VuPgorICAg
IDxsYWJlbCBpZD1sYWJlbDE+PC9sYWJlbD4KKyAgICA8bWV0ZXIgaWQ9bWV0ZXIxPjwvbWV0ZXI+
CisgICAgPG9iamVjdCBpZD1vYmplY3QxPjwvb2JqZWN0PgorICAgIDxvdXRwdXQgaWQ9b3V0cHV0
MT48L291dHB1dD4KKyAgICA8cHJvZ3Jlc3MgaWQ9cHJvZ3Jlc3MxPjwvcHJvZ3Jlc3M+CisgICAg
PHNlbGVjdCBpZD1zZWxlY3QxPgorICAgICAgICA8b3B0Z3JvdXAgaWQ9b3B0Z3JvdXAxPmdyb3Vw
MTwvb3B0Z3JvdXA+CisgICAgICAgIDxvcHRpb24gaWQ9b3B0aW9uMT5vcHRpb24xPC9vcHRpb24+
CisgICAgPC9zZWxlY3Q+CisgICAgPHRleHRhcmVhIGlkPXRleHRhcmVhMT48L3RleHRhcmVhPgor
PC9maWVsZHNldD4KKzwvZm9ybT4KKzwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
c2NyaXB0PgorZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBpcyBmb3IgUmFkaW9Ob2RlTGlzdCBzcGVj
aWZpZWQgYXQgaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29y
ay9tdWx0aXBhZ2UvY29tbW9uLWRvbS1pbnRlcmZhY2VzLmh0bWwjcmFkaW9ub2RlbGlzdCAiKTsK
K2RlYnVnKCIiKTsKK3ZhciBvd25lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmcycpOwor
CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHMubGVuZ3RoJywgJzIzJyk7CisKK3ZhciBlbGVtZW50
c0xpc3QgPSBvd25lci5lbGVtZW50czsKK3ZhciByYWRpb05vZGVMaXN0ID0gZWxlbWVudHNMaXN0
Lm5hbWVkSXRlbSgiaW5wdXRjb21tb24iKTsKK3Nob3VsZEJlKCdyYWRpb05vZGVMaXN0Lmxlbmd0
aCcsICc0Jyk7CisKK3Nob3VsZEJlKCdyYWRpb05vZGVMaXN0WzBdLnZhbHVlJywgIidzZWFyY2hp
bmcnIik7CitzaG91bGRCZSgncmFkaW9Ob2RlTGlzdFsxXS52YWx1ZScsICInMTIzJyIpOworc2hv
dWxkQmUoJ3JhZGlvTm9kZUxpc3RbMl0udmFsdWUnLCAiJ2lucHV0UmFkaW9WYWx1ZSciKTsKK3No
b3VsZEJlKCdyYWRpb05vZGVMaXN0WzNdLnZhbHVlJywgIididXR0b25WYWx1ZSciKTsKKworZGVi
dWcoIiIpOworZGVidWcoIkNoYW5naW5nIHRoZSBpbnB1dCB2YWx1ZSB0byBjaGVjayBSYWRpb05v
ZGVMaXN0IGlzIGxpdmUgdmlldyBvZiBGb3JtQ29sbGVjdGlvbiIpOworZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoIm51bWJlcklkIikudmFsdWUgPSA0NTY7CitzaG91bGRCZSgncmFkaW9Ob2RlTGlz
dFsxXS52YWx1ZScsICInNDU2JyIpOworCitkZWJ1ZygiIik7CitkZWJ1ZygiQ2hlY2tpbmcgdmFs
dWUgSURMIGF0dHJpYnV0ZSBvbiB0aGUgUmFkaW9Ob2RlTGlzdCIpOworc2hvdWxkQmUoJ3JhZGlv
Tm9kZUxpc3QudmFsdWUnLCAnIiInKTsKK3Nob3VsZEJlKCdyYWRpb05vZGVMaXN0LnZhbHVlID0g
ImlucHV0UmFkaW9WYWx1ZSI7IHJhZGlvTm9kZUxpc3RbMl0uY2hlY2tlZCcsICd0cnVlJyk7Citz
aG91bGRCZSgnT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHJhZGlvTm9kZUxpc3RbMl0p
JywgIidbb2JqZWN0IEhUTUxJbnB1dEVsZW1lbnRdJyIpOworc2hvdWxkQmUoJ3JhZGlvTm9kZUxp
c3RbMl0udHlwZScsICIncmFkaW8nIik7CisKK3JhZGlvTm9kZUxpc3RbMl0uY2hlY2tlZCA9IGZh
bHNlOworc2hvdWxkQmUoJ3JhZGlvTm9kZUxpc3QudmFsdWUnLCAnIiInKTsKK3Nob3VsZEJlKCdy
YWRpb05vZGVMaXN0WzJdLmNoZWNrZWQgPSB0cnVlOyByYWRpb05vZGVMaXN0LnZhbHVlJywgIidp
bnB1dFJhZGlvVmFsdWUnIik7CisKK3ZhciBuZXdFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiaW5wdXQiKTsKK25ld0VsZW1lbnQuc2V0QXR0cmlidXRlKCJ0eXBlIiwgInRleHQiKTsK
K25ld0VsZW1lbnQuc2V0QXR0cmlidXRlKCJ2YWx1ZSIsICJuZXcgZWxlbWVudCIpOworbmV3RWxl
bWVudC5zZXRBdHRyaWJ1dGUoImlkIiwgImlucHV0Y29tbW9uIik7CisKK2RlYnVnKCIiKTsKK2Rl
YnVnKCJDaGVjayBSYWRpb05vZGVMaXN0IGlzIHVwZGF0ZWQgYWZ0ZXIgYWRkaW5nIGEgbmV3IGVs
ZW1lbnQiKTsKK3Nob3VsZEJlKCdvd25lci5hcHBlbmRDaGlsZChuZXdFbGVtZW50KTsgcmFkaW9O
b2RlTGlzdC5sZW5ndGgnLCAnNScpOworc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzLmxlbmd0aCcs
ICcyNCcpOworc2hvdWxkQmUoJ3JhZGlvTm9kZUxpc3RbNF0udmFsdWUnLCAiJ25ldyBlbGVtZW50
JyIpOworCitkZWJ1ZygiIik7CitkZWJ1ZygiQ2hlY2sgUmFkaW9Ob2RlTGlzdCBpcyB1cGRhdGVk
IGFmdGVyIHJlbW92ZSBhbiBlbGVtZW50Iik7CitzaG91bGRCZSgnb3duZXIucmVtb3ZlQ2hpbGQo
bmV3RWxlbWVudCk7IHJhZGlvTm9kZUxpc3QubGVuZ3RoJywgJzQnKTsKK3Nob3VsZEJlKCdyYWRp
b05vZGVMaXN0WzNdLnZhbHVlJywgIididXR0b25WYWx1ZSciKTsKKworZGVidWcoIiIpOworZGVi
dWcoIkNoZWNrIFJhZGlvTm9kZUxpc3QgaXMgdXBkYXRlZCBhZnRlciBjaGFuZ2UgaW4gaWQsIHR5
cGUgYW5kIGNoZWNrZWQgc3RhdGUgb2YgYW4gZWxlbWVudCIpOworc2hvdWxkQmUoJ3JhZGlvTm9k
ZUxpc3QubGVuZ3RoJywgJzQnKTsKK2RlYnVnKCJBZnRlciBjaGFuZ2luZyB0aGUgaWQiKTsKK3Jh
ZGlvTm9kZUxpc3RbM10uaWQgPSAiY2hhbmdlZE5hbWUiOworc2hvdWxkQmUoJ3JhZGlvTm9kZUxp
c3QubGVuZ3RoJywgJzMnKTsKKworc2hvdWxkQmUoJ2VsZW1lbnRzTGlzdFsxM10uY2hlY2tlZCA9
IGZhbHNlOyByYWRpb05vZGVMaXN0LnZhbHVlJywgJyIiJyk7CitzaG91bGRCZSgnZWxlbWVudHNM
aXN0WzEzXS5jaGVja2VkID0gdHJ1ZTsgcmFkaW9Ob2RlTGlzdC52YWx1ZScsICInaW5wdXRSYWRp
b1ZhbHVlJyIpOworc2hvdWxkQmUoJ2VsZW1lbnRzTGlzdFsxM10udHlwZSA9ICJkYXRlIjsgcmFk
aW9Ob2RlTGlzdC52YWx1ZScsICInJyIpOworCitkZWJ1ZygiIik7CitkZWJ1ZygiQ2hlY2sgc2Vj
b25kIFJhZGlvTm9kZUxpc3QgaXMgYWxzbyBjcmVhdGVkIHByb3Blcmx5Iik7Cit2YXIgcmFkaW9O
b2RlTGlzdDIgPSBlbGVtZW50c0xpc3QubmFtZWRJdGVtKCJjb21tb25pbnB1dCIpOworc2hvdWxk
QmUoJ3JhZGlvTm9kZUxpc3QyLmxlbmd0aCcsICczJyk7CisKK3Nob3VsZEJlKCdyYWRpb05vZGVM
aXN0MlswXS50eXBlJywgIid0ZXh0JyIpOworc2hvdWxkQmUoJ3JhZGlvTm9kZUxpc3QyWzFdLnR5
cGUnLCAiJ2VtYWlsJyIpOworc2hvdWxkQmUoJ3JhZGlvTm9kZUxpc3QyWzJdLnR5cGUnLCAiJ3Jl
c2V0JyIpOworcmFkaW9Ob2RlTGlzdDJbMl0uaWQgPSAiaWRDaGFuZ2VkIjsKK2RlYnVnKCJBZnRl
ciBjaGFuZ2luZyB0aGUgaWQiKTsKK3Nob3VsZEJlKCdyYWRpb05vZGVMaXN0Mi5sZW5ndGgnLCAn
MicpOworZGVidWcoIiIpOworCit2YXIgY29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImRpdklkIik7Citjb250YWluZXIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChjb250YWluZXIp
OworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>