<?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>47813</bug_id>
          
          <creation_ts>2010-10-18 04:35:59 -0700</creation_ts>
          <short_desc>[HTML5] &quot;form&quot; attribute support for form control elements</short_desc>
          <delta_ts>2010-11-14 20:57:23 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Forms</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>HTML5</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>29363</dependson>
          <blocked>19264</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Kenichi Ishibashi">bashi</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>arv</cc>
    
    <cc>commit-queue</cc>
    
    <cc>tkent</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>295437</commentid>
    <comment_count>0</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2010-10-18 04:35:59 -0700</bug_when>
    <thetext>Adding &quot;form&quot; attribute support for form control elements. This issue is a part of implementing the &lt;output&gt; element. See https://bugs.webkit.org/show_bug.cgi?id=29363 for more details.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305175</commentid>
    <comment_count>1</comment_count>
      <attachid>73042</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2010-11-05 01:18:32 -0700</bug_when>
    <thetext>Created attachment 73042
Patch V0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305176</commentid>
    <comment_count>2</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2010-11-05 01:19:32 -0700</bug_when>
    <thetext>Hi,

This patch will cover most of form-associated elements, but  &lt;label&gt; and &lt;object&gt; elements are not. For &lt;object&gt;, we need to change its class hierarchy, as https://bugs.webkit.org/show_bug.cgi?id=48821 described and would be addressed on the issue. For &lt;label&gt;, we also might need to change its class inheritance because it isn&apos;t a subclass of HTMLFormControlElement. I think it would be better that making another issue to work on it so the patch doesn&apos;t include &quot;form&quot; attribute support for &lt;label&gt;. I&apos;ll create new issue for &lt;label&gt; if this patch seems to be reasonable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305181</commentid>
    <comment_count>3</comment_count>
      <attachid>73042</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-11-05 01:30:27 -0700</bug_when>
    <thetext>Comment on attachment 73042
Patch V0

We need to support
 - HTMLFormElement::elements contains elements of which form attribute value point the form even if elements are outside of the form
 - Form submission contains name&amp;value pairs for such elements.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305242</commentid>
    <comment_count>4</comment_count>
      <attachid>73059</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2010-11-05 06:34:32 -0700</bug_when>
    <thetext>Created attachment 73059
Patch V1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305243</commentid>
    <comment_count>5</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2010-11-05 06:35:25 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 73042 [details])
&gt; We need to support
&gt;  - HTMLFormElement::elements contains elements of which form attribute value point the form even if elements are outside of the form
&gt;  - Form submission contains name&amp;value pairs for such elements.

Kent-san,

Thank you for your review. I didn&apos;t realize the requirement. I&apos;ve revised the patch. It might be somewhat naive, but I&apos;d like ask you to some advice whether I&apos;m not going to wrong way. It would be great if you could give me some advice for this patch.

Thanks,</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305792</commentid>
    <comment_count>6</comment_count>
      <attachid>73059</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-11-06 07:57:53 -0700</bug_when>
    <thetext>Comment on attachment 73059
Patch V1

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

Yes, we need to update HTMLFormElement::m_associatedElements. However, HTMLFormElement::formElementIndex() doesn&apos;t work well with elements outside of the form.  We need to update formElementIndex() implementation, and should add test cases for form.elements[] order.

We need to handle cases that
 - A &quot;form&quot; attribute of a control is added or changed to another form, or removed.
 - An &quot;id&quot; attribute of a form element is added, changed, or removed.

You had better to take a look at the specification again.  It mentions many cases of changing form owner.
http://www.whatwg.org/specs/web-apps/current-work/multipage/association-of-controls-and-forms.html#attr-fae-form

Also, we need to take care of multiple form elements with identical ID values.  Document::getElementById() returns the first element in document-order in such case.  So &lt;foo form=id1&gt; should be associated to the first form with id=id1 in document-order.

&gt; WebCore/html/HTMLFormElement.cpp:150
&gt; +        for (Node* node = document()-&gt;traverseNextNode(); node; node = node-&gt;traverseNextNode()) {

This is not acceptable at all.  This code will introduce significant performance regression for existing pages.

I recommend to store a list (hash?) of form controls with id attribute to Document, like existing Document::registerFormElementWithState() and unregisterFormElementWithState(), and search the list for controls pointing this form element.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305793</commentid>
    <comment_count>7</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-11-06 08:08:50 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; &gt; WebCore/html/HTMLFormElement.cpp:150
&gt; &gt; +        for (Node* node = document()-&gt;traverseNextNode(); node; node = node-&gt;traverseNextNode()) {
&gt; 
&gt; This is not acceptable at all.  This code will introduce significant performance regression for existing pages.
&gt; 
&gt; I recommend to store a list (hash?) of form controls with id attribute to Document, like existing Document::registerFormElementWithState() and unregisterFormElementWithState(), and search the list for controls pointing this form element.

correction: &quot;form controls with id attribute&quot; -&gt; &quot;form controls with form attribute&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>306750</commentid>
    <comment_count>8</comment_count>
      <attachid>73367</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2010-11-09 06:21:54 -0800</bug_when>
    <thetext>Created attachment 73367
Patch V2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>306752</commentid>
    <comment_count>9</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2010-11-09 06:23:21 -0800</bug_when>
    <thetext>(In reply to comment #6)
Kent-san,

Thank you for review and detailed comments. I&apos;ve revised the patch. The patch still might be not good enough, but I&apos;d like you to glance over the current implementation.

Following your suggestion, I&apos;ve added a list of form-associated elements with form attribute. I also added two variables into HTMLFormElement for avoiding performance regression for existing pages. They are indices of m_associatedElements and denotes the range of elements which are children of the form element. These variables are used when form-associated elements which don&apos;t have form attribute are inserted. I think it would have less impact on existing pages.

On the other hand, for elements with form attribute, I couldn&apos;t come up with efficient ways to handle them. So the current implementation walks through the entire tree of the document to find the right index to be inserted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>306854</commentid>
    <comment_count>10</comment_count>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2010-11-09 10:13:04 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; On the other hand, for elements with form attribute, I couldn&apos;t come up with efficient ways to handle them. So the current implementation walks through the entire tree of the document to find the right index to be inserted.

Why don&apos;t you keep a centralized table of form associations?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>307104</commentid>
    <comment_count>11</comment_count>
      <attachid>73367</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-11-09 18:18:30 -0800</bug_when>
    <thetext>Comment on attachment 73367
Patch V2

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

&gt; LayoutTests/fast/forms/script-tests/form-attribute-elements-order.js:5
&gt; +container.innerHTML = &apos;&lt;input name=&quot;victim&quot; id=&quot;before1&quot; form=&quot;owner&quot; /&gt;&apos; +

nit: You don&apos;t need double-quotes surrounding attribute values in many cases.

&gt; LayoutTests/fast/forms/script-tests/form-attribute.js:34
&gt; +debug(&apos;- Ensures that the form attribute points the form owner even if the element is within another form element.&apos;);
&gt; +container.innerHTML = &apos;&lt;form id=&quot;owner&quot;&gt;&lt;/form&gt;&apos; +
&gt; +    &apos;&lt;form id=&quot;shouldNotBeOwner&quot;&gt;&apos; +
&gt; +    &apos;    &lt;input id=&quot;inputElement&quot; name=&quot;victim&quot; form=&quot;owner&quot; /&gt;&apos; +
&gt; +    &apos;&lt;/form&gt;&apos;;

How about the following similar case?

&lt;form id=owner&gt;
 &lt;form id=shouldNotBeOwner&gt;
  &lt;input id=inputElement name=victime form=owner&gt;
 &lt;/form&gt;
&lt;/form&gt;

&gt; WebCore/html/HTMLFormElement.cpp:406
&gt; +unsigned HTMLFormElement::formElementIndexWithFormAttribute(HTMLFormControlElement* element)

Does this work if the element is inside of the form?

&lt;form id=owner&gt;
  &lt;input&gt;
  &lt;input form=owner&gt;
  &lt;input&gt;
&lt;/form&gt;

or


&lt;form id=owner&gt;
  &lt;form&gt;
   &lt;input&gt;
   &lt;input form=owner&gt;
   &lt;input&gt;
  &lt;/form&gt;
&lt;/form&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>307108</commentid>
    <comment_count>12</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-11-09 18:23:17 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; On the other hand, for elements with form attribute, I couldn&apos;t come up with efficient ways to handle them. So the current implementation walks through the entire tree of the document to find the right index to be inserted.

We discussed this offline.
 - Controls with form attribute may be rare.  The traversal cost might be acceptable.
 - However, we have an idea of reducing the traversal cost.  Ishibashi-san will try it.

(In reply to comment #10)
&gt; Why don&apos;t you keep a centralized table of form associations?

It won&apos;t help so much.  We need to detect control order anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>308406</commentid>
    <comment_count>13</comment_count>
      <attachid>73367</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2010-11-11 23:43:01 -0800</bug_when>
    <thetext>Comment on attachment 73367
Patch V2

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

Kent-san,

Thank you for the review and suggestions. I&apos;ve updated the patch and I&apos;ll post it soon.
I&apos;ve implemented some algorithms for elements which have form attribute, that are binary search algorithm and comparing the position of two elements, to find the right place to be inserted into m_associatedElements of HTMLFormElement. I hope that the patch would be more efficient than the old one.

Regards,

&gt;&gt; LayoutTests/fast/forms/script-tests/form-attribute-elements-order.js:5
&gt;&gt; +container.innerHTML = &apos;&lt;input name=&quot;victim&quot; id=&quot;before1&quot; form=&quot;owner&quot; /&gt;&apos; +
&gt; 
&gt; nit: You don&apos;t need double-quotes surrounding attribute values in many cases.

Thank you for letting me know that. I&apos;ve removed these double-quotes.

&gt;&gt; LayoutTests/fast/forms/script-tests/form-attribute.js:34
&gt;&gt; +    &apos;&lt;/form&gt;&apos;;
&gt; 
&gt; How about the following similar case?
&gt; 
&gt; &lt;form id=owner&gt;
&gt;  &lt;form id=shouldNotBeOwner&gt;
&gt;   &lt;input id=inputElement name=victime form=owner&gt;
&gt;  &lt;/form&gt;
&gt; &lt;/form&gt;

I&apos;ve added the case. BTW, it seems that Webkit ignores nested inner form elements so I just added test which ensures each form attribute points the out-most form element. I&apos;m not sure that is correct, so please let me know if I was done something wrong.

&gt;&gt; WebCore/html/HTMLFormElement.cpp:406
&gt;&gt; +unsigned HTMLFormElement::formElementIndexWithFormAttribute(HTMLFormControlElement* element)
&gt; 
&gt; Does this work if the element is inside of the form?
&gt; 
&gt; &lt;form id=owner&gt;
&gt;   &lt;input&gt;
&gt;   &lt;input form=owner&gt;
&gt;   &lt;input&gt;
&gt; &lt;/form&gt;
&gt; 
&gt; or
&gt; 
&gt; 
&gt; &lt;form id=owner&gt;
&gt;   &lt;form&gt;
&gt;    &lt;input&gt;
&gt;    &lt;input form=owner&gt;
&gt;    &lt;input&gt;
&gt;   &lt;/form&gt;
&gt; &lt;/form&gt;

Added some test cases like that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>308407</commentid>
    <comment_count>14</comment_count>
      <attachid>73705</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2010-11-11 23:43:36 -0800</bug_when>
    <thetext>Created attachment 73705
Patch V3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>308425</commentid>
    <comment_count>15</comment_count>
      <attachid>73705</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-11-12 00:32:03 -0800</bug_when>
    <thetext>Comment on attachment 73705
Patch V3

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

&gt; WebCore/html/HTMLFormElement.cpp:403
&gt; +static int compareTreeOrder(Node* n1, int depth1, Node* n2, int depth2)

- &apos;n1&apos; &apos;n2&quot; are not good names.  They should be node1 and node2.
- This function should belong to Document class.
- The &quot;int&quot; return value is not good.  We should introduce new enum.

&gt; WebCore/html/HTMLFormElement.cpp:415
&gt; +    // Keeping the nearest sucessors of each nodes for later use.

typo and grammer: &quot;successor of each node&quot;

&gt; WebCore/html/HTMLFormElement.cpp:420
&gt; +    while (ancestor1 &amp;&amp; ancestor2) {
&gt; +        if (ancestor1 == ancestor2)
&gt; +            break;

You can write &quot;while (ancestor1 &amp;&amp; ancestor2 &amp;&amp; ancestor1 != ancestor2) {&quot;

&gt; WebCore/html/HTMLFormElement.cpp:441
&gt; +    ASSERT(successor1 &amp;&amp; successor2);

successor1 or successor2 can be 0 if n1 is an ancestor of n2, or vice versa.  It never happens in the form attribute case, but we should support it because we&apos;d like to move this function to Document.

BTW, you shouldn&apos;t use &amp;&amp; in ASSERT().  You should have written
ASSERT(successor1);
ASSERT(successor2);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>308462</commentid>
    <comment_count>16</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2010-11-12 02:55:56 -0800</bug_when>
    <thetext>(In reply to comment #15)
Kent-san,

Thank you for your quick review.

&gt; (From update of attachment 73705 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=73705&amp;action=review
&gt; 
&gt; &gt; WebCore/html/HTMLFormElement.cpp:403
&gt; &gt; +static int compareTreeOrder(Node* n1, int depth1, Node* n2, int depth2)
&gt; 
&gt; - &apos;n1&apos; &apos;n2&quot; are not good names.  They should be node1 and node2.
&gt; - This function should belong to Document class.
&gt; - The &quot;int&quot; return value is not good.  We should introduce new enum.

I see. I&apos;ll move the function to Document class. So, should we also make nodeDepth() belong to other class, say, Node class?

&gt; &gt; WebCore/html/HTMLFormElement.cpp:415
&gt; &gt; +    // Keeping the nearest sucessors of each nodes for later use.
&gt; 
&gt; typo and grammer: &quot;successor of each node&quot;

Thanks, I&apos;ll fix it.

&gt; 
&gt; &gt; WebCore/html/HTMLFormElement.cpp:420
&gt; &gt; +    while (ancestor1 &amp;&amp; ancestor2) {
&gt; &gt; +        if (ancestor1 == ancestor2)
&gt; &gt; +            break;
&gt; 
&gt; You can write &quot;while (ancestor1 &amp;&amp; ancestor2 &amp;&amp; ancestor1 != ancestor2) {&quot;

I&apos;ll fix it.

&gt; 
&gt; &gt; WebCore/html/HTMLFormElement.cpp:441
&gt; &gt; +    ASSERT(successor1 &amp;&amp; successor2);
&gt; 
&gt; successor1 or successor2 can be 0 if n1 is an ancestor of n2, or vice versa.  It never happens in the form attribute case, but we should support it because we&apos;d like to move this function to Document.

I&apos;ll remove it when I moves the function to the Document class.

&gt; BTW, you shouldn&apos;t use &amp;&amp; in ASSERT().  You should have written
&gt; ASSERT(successor1);
&gt; ASSERT(successor2);

I see. Thank you for suggestion:-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>308485</commentid>
    <comment_count>17</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-11-12 04:10:51 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; &gt; &gt; WebCore/html/HTMLFormElement.cpp:403
&gt; &gt; &gt; +static int compareTreeOrder(Node* n1, int depth1, Node* n2, int depth2)
&gt; &gt; 
&gt; &gt; - &apos;n1&apos; &apos;n2&quot; are not good names.  They should be node1 and node2.
&gt; &gt; - This function should belong to Document class.
&gt; &gt; - The &quot;int&quot; return value is not good.  We should introduce new enum.
&gt; 
&gt; I see. I&apos;ll move the function to Document class. So, should we also make nodeDepth() belong to other class, say, Node class?

Oops, I have found Node::compareDocumentPosition() now.  So we can use it and compareTreeOrder() is not needed.  I&apos;m sorry for wasting your time.
compareDocumentPosition() looks slower than your compareTreeOrder().  But it would be acceptable.  We don&apos;t need nodeDepth() too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>308803</commentid>
    <comment_count>18</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2010-11-12 15:18:11 -0800</bug_when>
    <thetext>(In reply to comment #17)

Kent-san,

&gt; Oops, I have found Node::compareDocumentPosition() now.  So we can use it and compareTreeOrder() is not needed.  I&apos;m sorry for wasting your time.
&gt; compareDocumentPosition() looks slower than your compareTreeOrder().  But it would be acceptable.  We don&apos;t need nodeDepth() too.

Thank you for letting me know the function. Before starting implementation, I should investigate existing code more carefully. It&apos;s definitely my fault. Sorry for wasting your time. I&apos;ll revise the patch.

Regards,</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>308986</commentid>
    <comment_count>19</comment_count>
      <attachid>73828</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2010-11-13 08:49:43 -0800</bug_when>
    <thetext>Created attachment 73828
Patch V4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>309143</commentid>
    <comment_count>20</comment_count>
      <attachid>73828</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-11-14 17:38:07 -0800</bug_when>
    <thetext>Comment on attachment 73828
Patch V4

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

&gt; LayoutTests/fast/forms/form-attribute-expected.txt:7
&gt; +FIXME: &lt;label&gt; and &lt;object&gt; don&apos;t support the form attribute for now.

nit: It&apos;s ok to add test cases for &lt;label&gt; and &lt;object&gt; now. -expected.txt contains FAIL lines in that case.

&gt; WebCore/dom/Document.cpp:4368
&gt; +void Document::registerFormElementWithFormAttribute(Element* e)

The parameter name &quot;e&quot; is not good.  It should be &quot;control&quot;, &quot;formControl&quot;, &quot;element&quot; or something.

&gt; WebCore/dom/Document.cpp:4374
&gt; +void Document::unregisterFormElementWithFormAttribute(Element* e)

ditto.

&gt; WebCore/dom/Document.h:487
&gt; +    void registerFormElementWithFormAttribute(Element* e);
&gt; +    void unregisterFormElementWithFormAttribute(Element* e);

The argument name &quot;e&quot; doesn&apos;t add any useful information.  So we should remove it.

&gt; WebCore/html/HTMLFormElement.cpp:418
&gt; +        unsigned middle = (left + right) / 2;

Possible integer overflow.  Fix it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>309156</commentid>
    <comment_count>21</comment_count>
      <attachid>73828</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2010-11-14 19:06:37 -0800</bug_when>
    <thetext>Comment on attachment 73828
Patch V4

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

Kent-san,

Thank you for review. I&apos;ll post revised patch soon.

&gt;&gt; LayoutTests/fast/forms/form-attribute-expected.txt:7
&gt;&gt; +FIXME: &lt;label&gt; and &lt;object&gt; don&apos;t support the form attribute for now.
&gt; 
&gt; nit: It&apos;s ok to add test cases for &lt;label&gt; and &lt;object&gt; now. -expected.txt contains FAIL lines in that case.

I see. I&apos;ve added test cases for &lt;label&gt; and &lt;object&gt;.

&gt;&gt; WebCore/dom/Document.cpp:4368
&gt;&gt; +void Document::registerFormElementWithFormAttribute(Element* e)
&gt; 
&gt; The parameter name &quot;e&quot; is not good.  It should be &quot;control&quot;, &quot;formControl&quot;, &quot;element&quot; or something.

Changed to control. Thanks!

&gt;&gt; WebCore/dom/Document.cpp:4374
&gt;&gt; +void Document::unregisterFormElementWithFormAttribute(Element* e)
&gt; 
&gt; ditto.

ditto.

&gt;&gt; WebCore/dom/Document.h:487
&gt;&gt; +    void unregisterFormElementWithFormAttribute(Element* e);
&gt; 
&gt; The argument name &quot;e&quot; doesn&apos;t add any useful information.  So we should remove it.

Removed.

&gt;&gt; WebCore/html/HTMLFormElement.cpp:418
&gt;&gt; +        unsigned middle = (left + right) / 2;
&gt; 
&gt; Possible integer overflow.  Fix it.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>309157</commentid>
    <comment_count>22</comment_count>
      <attachid>73870</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2010-11-14 19:07:38 -0800</bug_when>
    <thetext>Created attachment 73870
Patch V5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>309162</commentid>
    <comment_count>23</comment_count>
      <attachid>73870</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-11-14 19:41:32 -0800</bug_when>
    <thetext>Comment on attachment 73870
Patch V5

ok.  Thanks you!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>309167</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-11-14 20:21:38 -0800</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 73870:

fast/workers/storage/interrupt-database-sync.html
webarchive/test-link-rel-icon.html

Please file bugs against the tests.  These tests were authored by ddkilzer@webkit.org and dumi@chromium.org.  The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>309174</commentid>
    <comment_count>25</comment_count>
      <attachid>73870</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-11-14 20:57:16 -0800</bug_when>
    <thetext>Comment on attachment 73870
Patch V5

Clearing flags on attachment: 73870

Committed r71994: &lt;http://trac.webkit.org/changeset/71994&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>309175</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-11-14 20:57:23 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>73042</attachid>
            <date>2010-11-05 01:18:32 -0700</date>
            <delta_ts>2010-11-05 06:34:26 -0700</delta_ts>
            <desc>Patch V0</desc>
            <filename>bug-47813-20101105171830.patch</filename>
            <type>text/plain</type>
            <size>10547</size>
            <attacher name="Kenichi Ishibashi">bashi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlZjMzYjhjZDYwZTYzMzliMDE0M2EwZWU2NDI0NmRmYWNhZGViMjM2Li41OTQ0OWVk
NjkzZmE1Y2Y2ZjY4MTc1NzNlOTA5ZjYxZWFjYjNmNmZhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAK
KzIwMTAtMTEtMDUgIEtlbmljaGkgSXNoaWJhc2hpICA8YmFzaGlAZ29vZ2xlLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbSFRNTDVdICJmb3Jt
IiBhdHRyaWJ1dGUgc3VwcG9ydCBmb3IgZm9ybSBjb250cm9sIGVsZW1lbnRzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzgxMworCisgICAgICAgIEFk
ZHMgYSB0ZXN0IGZpbGUgZm9yICJmb3JtIiBhdHRyaWJ1dGUgb2YgZm9ybS1hc3NvY2lhdGVkIGVs
ZW1lbnRzLgorICAgICAgICBUaGUgdGVzdCBtaWdodCBuZWVkIHRvIGJlIHJldmlzZWQgYmVjYXVz
ZSA8bGFiZWw+IGFuZCA8b2JqZWN0PiBkb24ndAorICAgICAgICBzdXBwb3J0ICJmb3JtIiBhdHRy
aWJ1dGUgZm9yIG5vdywgaW4gc3BpdGUgb2YgdGhlIEhUTUw1IHNwZWMgc2F5cyB0aGF0CisgICAg
ICAgIHRoZXkgc2hvdWxkIHN1cHBvcnQuCisKKyAgICAgICAgKiBmYXN0L2Zvcm1zL2Zvcm0tYXR0
cmlidXRlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9mb3JtLWF0
dHJpYnV0ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL3NjcmlwdC10ZXN0cy9m
b3JtLWF0dHJpYnV0ZS5qczogQWRkZWQuCisKIDIwMTAtMTEtMDQgIE1PUklUQSBIYWppbWUgIDxt
b3JyaXRhQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VudCBUYW11cmEuCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2Zvcm0tYXR0cmlidXRlLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZm9ybS1hdHRyaWJ1dGUtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjAzNjQ2MzM2MmFlNTQ1OTQ3YjAwMGM1ZmU1YjliOTE0NTY0OTM2N2UKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2Zvcm0tYXR0cmlidXRlLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDI4IEBACitUaGlzIHRlc3QgY2hlY2tzIHRoZSBmb3JtIGF0
dHJpYnV0ZSBvZiB0aGUgZm9ybS1hc3NvY2lhdGVkIGVsZW1lbnRzLgorCitPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCisKKworLSBDaGVja3MgdGhlIGV4aXN0ZW5jZSBvZiB0aGUgZm9ybSBhdHRy
aWJ1dGUgZm9yIGVhY2ggZm9ybS1hc3NvY2lhdGVkIGVsZW1lbnRzLgorRklYTUU6IDxsYWJlbD4g
YW5kIDxvYmplY3Q+IGRvbid0IHN1cHBvcnQgdGhlIGZvcm0gYXR0cmlidXRlIGZvciBub3cuCitQ
QVNTIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJidXR0b24iKVswXS5mb3JtIGlzIG93
bmVyCitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJmaWVsZHNldCIpWzBdLmZv
cm0gaXMgb3duZXIKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImlucHV0Iilb
MF0uZm9ybSBpcyBvd25lcgorUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgia2V5
Z2VuIilbMF0uZm9ybSBpcyBvd25lcgorUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgibWV0ZXIiKVswXS5mb3JtIGlzIG93bmVyCitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJvdXRwdXQiKVswXS5mb3JtIGlzIG93bmVyCitQQVNTIGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJwcm9ncmVzcyIpWzBdLmZvcm0gaXMgb3duZXIKK1BBU1MgZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInNlbGVjdCIpWzBdLmZvcm0gaXMgb3duZXIKK1BBU1MgZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRhcmVhIilbMF0uZm9ybSBpcyBvd25lcgor
CistIEVuc3VyZXMgdGhhdCB0aGUgZm9ybSBhdHRyaWJ1dGUgb2YgZm9ybS1hc3NvY2lhdGVkIGVs
ZW1lbnRzIHBvaW50cyB0aGVpciBmb3JtIG93bmVyLgorUEFTUyBvdXRlckJlZm9yZS5mb3JtIGlz
IG93bmVyCitQQVNTIGlubmVyLmZvcm0gaXMgb3duZXIKK1BBU1Mgb3V0ZXJBZnRlci5mb3JtIGlz
IG93bmVyCisKKy0gRW5zdXJlcyB0aGF0IHRoZSBmb3JtIGF0dHJpYnV0ZSBwb2ludHMgdGhlIGZv
cm0gb3duZXIgZXZlbiBpZiB0aGUgZWxlbWVudCBpcyB3aXRoaW4gYW5vdGhlciBmb3JtIGVsZW1l
bnQuCitQQVNTIGlubmVyLmZvcm0gaXMgb3duZXIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL2Zvcm0tYXR0cmlidXRlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2Zvcm0tYXR0
cmlidXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzA2OWIwYzZlZjY2NDMwNzc4N2IyZDcyYTc4ZTIyMmJm
OGQ2NWFjOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZm9ybS1h
dHRyaWJ1dGUuaHRtbApAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0v
L0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9mb3JtLWF0dHJpYnV0
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvc2NyaXB0LXRlc3RzL2Zvcm0tYXR0cmlidXRlLmpzIGIvTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9zY3JpcHQtdGVzdHMvZm9ybS1hdHRyaWJ1dGUuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOWZmNWZkYTkzMjBmOTU2NmFmMjFmZTM3MmExY2U2NGJkNjZmMmNjYwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2NyaXB0LXRlc3RzL2Zvcm0tYXR0cmli
dXRlLmpzCkBAIC0wLDAgKzEsNTQgQEAKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgY2hlY2tzIHRo
ZSBmb3JtIGF0dHJpYnV0ZSBvZiB0aGUgZm9ybS1hc3NvY2lhdGVkIGVsZW1lbnRzLiIpOworCit2
YXIgY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Citkb2N1bWVudC5i
b2R5LmFwcGVuZENoaWxkKGNvbnRhaW5lcik7CisKK2RlYnVnKCctIENoZWNrcyB0aGUgZXhpc3Rl
bmNlIG9mIHRoZSBmb3JtIGF0dHJpYnV0ZSBmb3IgZWFjaCBmb3JtLWFzc29jaWF0ZWQgZWxlbWVu
dHMuJyk7CitkZWJ1ZygnRklYTUU6ICZsdDtsYWJlbCZndDsgYW5kICZsdDtvYmplY3QmZ3Q7IGRv
blwndCBzdXBwb3J0IHRoZSBmb3JtIGF0dHJpYnV0ZSBmb3Igbm93LicpOworY29udGFpbmVyLmlu
bmVySFRNTCA9ICc8Zm9ybSBpZD0ib3duZXIiPjwvZm9ybT4nICsKKyAgICAnPGJ1dHRvbiBuYW1l
PSJ2aWN0aW0iIGZvcm09Im93bmVyIiAvPicgKworICAgICc8ZmllbGRzZXQgbmFtZT0idmljdGlt
IiBmb3JtPSJvd25lciIgLz4nICsKKyAgICAnPGlucHV0IG5hbWU9InZpY3RpbSIgZm9ybT0ib3du
ZXIiIC8+JyArCisgICAgJzxrZXlnZW4gbmFtZT0idmljdGltIiBmb3JtPSJvd25lciIgLz4nICsK
KyAgICAnPG1ldGVyIG5hbWU9InZpY3RpbSIgZm9ybT0ib3duZXIiIC8+JyArCisgICAgJzxvdXRw
dXQgbmFtZT0idmljdGltIiBmb3JtPSJvd25lciIgLz4nICsKKyAgICAnPHByb2dyZXNzIG5hbWU9
InZpY3RpbSIgZm9ybT0ib3duZXIiIC8+JyArCisgICAgJzxzZWxlY3QgbmFtZT0idmljdGltIiBm
b3JtPSJvd25lciIgLz4nICsKKyAgICAnPHRleHRhcmVhIG5hbWU9InZpY3RpbSIgZm9ybT0ib3du
ZXIiIC8+JzsKK3ZhciBvd25lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdvd25lcicpOwor
c2hvdWxkQmUoJ2RvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJidXR0b24iKVswXS5mb3Jt
JywgJ293bmVyJyk7CitzaG91bGRCZSgnZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImZp
ZWxkc2V0IilbMF0uZm9ybScsICdvd25lcicpOworc2hvdWxkQmUoJ2RvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJpbnB1dCIpWzBdLmZvcm0nLCAnb3duZXInKTsKK3Nob3VsZEJlKCdkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgia2V5Z2VuIilbMF0uZm9ybScsICdvd25lcicpOwor
c2hvdWxkQmUoJ2RvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJtZXRlciIpWzBdLmZvcm0n
LCAnb3duZXInKTsKK3Nob3VsZEJlKCdkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgib3V0
cHV0IilbMF0uZm9ybScsICdvd25lcicpOworc2hvdWxkQmUoJ2RvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJwcm9ncmVzcyIpWzBdLmZvcm0nLCAnb3duZXInKTsKK3Nob3VsZEJlKCdkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgic2VsZWN0IilbMF0uZm9ybScsICdvd25lcicpOwor
c2hvdWxkQmUoJ2RvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0YXJlYSIpWzBdLmZv
cm0nLCAnb3duZXInKTsKKworZGVidWcoJycpOworZGVidWcoJy0gRW5zdXJlcyB0aGF0IHRoZSBm
b3JtIGF0dHJpYnV0ZSBvZiBmb3JtLWFzc29jaWF0ZWQgZWxlbWVudHMgcG9pbnRzIHRoZWlyIGZv
cm0gb3duZXIuJyk7Citjb250YWluZXIuaW5uZXJIVE1MID0gJzxpbnB1dCBpZD0ib3V0ZXItYmVm
b3JlIiBuYW1lPSJ2aWN0aW0iIGZvcm09Im93bmVyIiAvPicgKworICAgICc8Zm9ybSBpZD0ib3du
ZXIiPicgKworICAgICcgICAgPGlucHV0IGlkPSJpbm5lciIgbmFtZT0idmljdGltIiBmb3JtPSJv
d25lciIgLz4nICsKKyAgICAnPC9mb3JtPicgKworICAgICc8aW5wdXQgaWQ9Im91dGVyLWFmdGVy
IiBuYW1lPSJ2aWN0aW0iIGZvcm09Im93bmVyIiAvPic7Citvd25lciA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdvd25lcicpOwordmFyIG91dGVyQmVmb3JlID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ291dGVyLWJlZm9yZScpOwordmFyIGlubmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2lubmVyJyk7Cit2YXIgb3V0ZXJBZnRlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdv
dXRlci1hZnRlcicpOworc2hvdWxkQmUoJ291dGVyQmVmb3JlLmZvcm0nLCAnb3duZXInKTsKK3No
b3VsZEJlKCdpbm5lci5mb3JtJywgJ293bmVyJyk7CitzaG91bGRCZSgnb3V0ZXJBZnRlci5mb3Jt
JywgJ293bmVyJyk7CisKK2RlYnVnKCcnKTsKK2RlYnVnKCctIEVuc3VyZXMgdGhhdCB0aGUgZm9y
bSBhdHRyaWJ1dGUgcG9pbnRzIHRoZSBmb3JtIG93bmVyIGV2ZW4gaWYgdGhlIGVsZW1lbnQgaXMg
d2l0aGluIGFub3RoZXIgZm9ybSBlbGVtZW50LicpOworY29udGFpbmVyLmlubmVySFRNTCA9ICc8
Zm9ybSBpZD0ib3duZXIiPjwvZm9ybT4nICsKKyAgICAnPGZvcm0gaWQ9InNob3VsZE5vdEJlT3du
ZXIiPicgKworICAgICcgICAgPGlucHV0IGlkPSJpbm5lciIgbmFtZT0idmljdGltIiBmb3JtPSJv
d25lciIgLz4nICsKKyAgICAnPC9mb3JtPic7Citvd25lciA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdvd25lcicpOworaW5uZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW5uZXInKTsK
K3Nob3VsZEJlKCdpbm5lci5mb3JtJywgJ293bmVyJyk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJz
ZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCA2NjhlNjc0ODU3NWFkM2IzMTU5Y2IzMDJjODFlMDhlM2MzOTAxNzcwLi5mOGEz
ZmYxMTA4ZDc5M2JhNTE4MGI5YTE1YWQ4ZDQ0OGMwOGE0MmE4IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEw
LTExLTA1ICBLZW5pY2hpIElzaGliYXNoaSAgPGJhc2hpQGdvb2dsZS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0hUTUw1XSAiZm9ybSIgYXR0
cmlidXRlIHN1cHBvcnQgZm9yIGZvcm0gY29udHJvbCBlbGVtZW50cworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDc4MTMKKworICAgICAgICBNb2RpZmll
cyBIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojp2aXJ0dWFsRm9ybSgpIHRvIHByaW9yaXRpemUgYSBm
b3JtIGVsZW1lbnQKKyAgICAgICAgd2hpY2ggc3BlY2lmaWVkIGJ5IHRoZSAiZm9ybSIgYXR0cmli
dXRlLgorCisgICAgICAgIFRlc3Q6IGZhc3QvZm9ybXMvZm9ybS1hdHRyaWJ1dGUuaHRtbAorCisg
ICAgICAgICogaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW46IEFkZGVkICJmb3JtIiBhdHRyaWJ1
dGUuCisgICAgICAgICogaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnZpcnR1YWxGb3JtKTogTW9kaWZpZWQg
dG8gcHJpb3JpdGl6ZSBhIGZvcm0KKyAgICAgICAgZWxlbWVudCB3aGljaCBzcGVjaWZpZWQgYnkg
dGhlICJmb3JtIiBhdHRyaWJ1dGUuCisgICAgICAgICogaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVt
ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojpmb3JtKTog
TW9kaWZpZWQgdG8gY2FsbCB2aXJ0dWFsRm9ybSgpLgorICAgICAgICAqIGh0bWwvSFRNTE91dHB1
dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE91dHB1dEVsZW1lbnQ6OnBhcnNl
TWFwcGVkQXR0cmlidXRlKTogUmVtb3ZlZCAiRklYTUUiIGNvbW1lbnQuCisgICAgICAgICogaHRt
bC9IVE1MT3V0cHV0RWxlbWVudC5oOiBSZW1vdmVkIHNldEZvcm0oKS4KKwogMjAxMC0xMS0wNCAg
WGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgRml4IHRoZSBHVEsrIGJ1
aWxkLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbiBiL1dl
YkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4KaW5kZXggZDk3NTlmY2RiMGE4MjQwMWEz
ZjA1ZjU4YWFhYmQ5ZGMyMmM2NDZmZi4uMTg4MWI2ZmJhMjI4ZGU4YjQyYTc5MzdlMGVjZDEyNGU2
ZTMzZDExMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgor
KysgYi9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCkBAIC05NCw2ICs5NCw3IEBA
IGV4cGFuZGVkCiBmYWNlCiBmb2N1c2VkCiBmb3IKK2Zvcm0KIGZvcm1ub3ZhbGlkYXRlCiBmcmFt
ZQogZnJhbWVib3JkZXIKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xF
bGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcAppbmRl
eCA4ZmEwMDBmMWIxYzdhMTQwODBmNjdlNGNlOTc3MmYwNWVkODJiYjQ1Li4zZjJmNTE2ZjU1NGIy
NTc5OTQ5Y2MyZjA3OWZhMjQyYWFmNWZhNmY5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRN
TEZvcm1Db250cm9sRWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJv
bEVsZW1lbnQuY3BwCkBAIC00MTUsNiArNDE1LDEyIEBAIHZvaWQgSFRNTEZvcm1Db250cm9sRWxl
bWVudDo6ZGlzcGF0Y2hCbHVyRXZlbnQoKQogCiBIVE1MRm9ybUVsZW1lbnQqIEhUTUxGb3JtQ29u
dHJvbEVsZW1lbnQ6OnZpcnR1YWxGb3JtKCkgY29uc3QKIHsKKyAgICBpZiAoYXR0cmlidXRlTWFw
KCkpIHsKKyAgICAgICAgQXR0cmlidXRlKiBhdHRyaWJ1dGUgPSBhdHRyaWJ1dGVNYXAoKS0+Z2V0
QXR0cmlidXRlSXRlbShmb3JtQXR0cik7CisgICAgICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBhdHRy
aWJ1dGUgPyBkb2N1bWVudCgpLT5nZXRFbGVtZW50QnlJZChhdHRyaWJ1dGUtPnZhbHVlKCkpIDog
MDsKKyAgICAgICAgaWYgKGVsZW1lbnQgJiYgZWxlbWVudC0+aGFzVGFnTmFtZShmb3JtVGFnKSkK
KyAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MRm9ybUVsZW1lbnQqPihlbGVtZW50
KTsKKyAgICB9CiAgICAgcmV0dXJuIG1fZm9ybTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9o
dG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaCBiL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRy
b2xFbGVtZW50LmgKaW5kZXggMTk2MGZjMzRmMjg4ZGEzNTYyZWU2Y2QxNzk0YWIzOTA3YmU1OTNh
My4uNmJkODkyMjRmNWIxMmViYzAxN2IxMTViOGVlY2RjYTMyODM3ZDhmNCAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaAorKysgYi9XZWJDb3JlL2h0bWwv
SFRNTEZvcm1Db250cm9sRWxlbWVudC5oCkBAIC00MSw3ICs0MSw3IEBAIGNsYXNzIEhUTUxGb3Jt
Q29udHJvbEVsZW1lbnQgOiBwdWJsaWMgSFRNTEVsZW1lbnQgewogcHVibGljOgogICAgIHZpcnR1
YWwgfkhUTUxGb3JtQ29udHJvbEVsZW1lbnQoKTsKIAotICAgIEhUTUxGb3JtRWxlbWVudCogZm9y
bSgpIGNvbnN0IHsgcmV0dXJuIG1fZm9ybTsgfQorICAgIEhUTUxGb3JtRWxlbWVudCogZm9ybSgp
IGNvbnN0IHsgcmV0dXJuIHZpcnR1YWxGb3JtKCk7IH0KICAgICBWYWxpZGl0eVN0YXRlKiB2YWxp
ZGl0eSgpOwogCiAgICAgYm9vbCBmb3JtTm9WYWxpZGF0ZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9odG1sL0hUTUxPdXRwdXRFbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MT3V0
cHV0RWxlbWVudC5jcHAKaW5kZXggZGVlMjFhZWZjZTU5NDZjMDRiNjE0NjU2NDZjZmUwYWE5MDFj
MDE4Zi4uYjgzMjYzZTM4MTdjMGI1Y2IwYmRlYzVlYjczY2Q3NzQ3ZWJiMGNlNiAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9odG1sL0hUTUxPdXRwdXRFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwv
SFRNTE91dHB1dEVsZW1lbnQuY3BwCkBAIC01OCw3ICs1OCw2IEBAIGNvbnN0IEF0b21pY1N0cmlu
ZyYgSFRNTE91dHB1dEVsZW1lbnQ6OmZvcm1Db250cm9sVHlwZSgpIGNvbnN0CiAKIHZvaWQgSFRN
TE91dHB1dEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKIHsK
LSAgICAvLyBGSVhNRTogU2hvdWxkIGhhbmRsZSB0aGUgJ2Zvcm0nIGF0dHJpYnV0ZSBoZXJlLgog
ICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gSFRNTE5hbWVzOjpmb3JBdHRyKQogICAgICAgICBzZXRG
b3IoYXR0ci0+dmFsdWUoKSk7CiAgICAgZWxzZQpAQCAtNzUsMTEgKzc0LDYgQEAgdm9pZCBIVE1M
T3V0cHV0RWxlbWVudDo6c2V0Rm9yKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgbV90b2tlbnMt
PnNldFZhbHVlKHZhbHVlKTsKIH0KIAotdm9pZCBIVE1MT3V0cHV0RWxlbWVudDo6c2V0Rm9ybShj
b25zdCBTdHJpbmcmIC8qaWQqLykKLXsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgZnVu
Y3Rpb24uCi19Ci0KIHZvaWQgSFRNTE91dHB1dEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChib29s
IGNyZWF0ZWRCeVBhcnNlciwgTm9kZSosIE5vZGUqLCBpbnQpCiB7CiAgICAgaWYgKGNyZWF0ZWRC
eVBhcnNlciB8fCBtX2lzU2V0VGV4dENvbnRlbnRJblByb2dyZXNzKSB7CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2h0bWwvSFRNTE91dHB1dEVsZW1lbnQuaCBiL1dlYkNvcmUvaHRtbC9IVE1MT3V0cHV0
RWxlbWVudC5oCmluZGV4IGRmODA3ZmJjYzdjYzk3YTRiNWIxNGViYjQ1YmY1NWEzOWEwMzU3MjYu
LjgzZWNlZTJmNDlmODYxNmY3YjEwZWM5ZGJkYzJkZTA3MzBhM2ZkZWQgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5oCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MT3V0
cHV0RWxlbWVudC5oCkBAIC00Myw3ICs0Myw2IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9v
bCB3aWxsVmFsaWRhdGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgdm9pZCBzZXRG
b3JtKGNvbnN0IFN0cmluZyYpOwogICAgIFN0cmluZyB2YWx1ZSgpIGNvbnN0OwogICAgIHZvaWQg
c2V0VmFsdWUoY29uc3QgU3RyaW5nJik7CiAgICAgU3RyaW5nIGRlZmF1bHRWYWx1ZSgpIGNvbnN0
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>73059</attachid>
            <date>2010-11-05 06:34:32 -0700</date>
            <delta_ts>2010-11-09 06:21:47 -0800</delta_ts>
            <desc>Patch V1</desc>
            <filename>bug-47813-20101105223429.patch</filename>
            <type>text/plain</type>
            <size>17366</size>
            <attacher name="Kenichi Ishibashi">bashi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlZjMzYjhjZDYwZTYzMzliMDE0M2EwZWU2NDI0NmRmYWNhZGViMjM2Li5iZWNiMDI2
ZWVkOTA4ZGQ4ZTU1YmYzYjNkMTVhYTc2MjE2ZjdmMmZlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAK
KzIwMTAtMTEtMDUgIEtlbmljaGkgSXNoaWJhc2hpICA8YmFzaGlAZ29vZ2xlLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbSFRNTDVdICJmb3Jt
IiBhdHRyaWJ1dGUgc3VwcG9ydCBmb3IgZm9ybSBjb250cm9sIGVsZW1lbnRzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzgxMworCisgICAgICAgIEFk
ZHMgYSB0ZXN0IGZpbGUgZm9yICJmb3JtIiBhdHRyaWJ1dGUgb2YgZm9ybS1hc3NvY2lhdGVkIGVs
ZW1lbnRzLgorICAgICAgICBUaGUgdGVzdCBtaWdodCBuZWVkIHRvIGJlIHJldmlzZWQgYmVjYXVz
ZSA8bGFiZWw+IGFuZCA8b2JqZWN0PiBkb24ndAorICAgICAgICBzdXBwb3J0ICJmb3JtIiBhdHRy
aWJ1dGUgZm9yIG5vdywgaW4gc3BpdGUgb2YgdGhlIEhUTUw1IHNwZWMgc2F5cyB0aGF0CisgICAg
ICAgIHRoZXkgc2hvdWxkIHN1cHBvcnQuCisKKyAgICAgICAgKiBmYXN0L2Zvcm1zL2Zvcm0tYXR0
cmlidXRlLWVsZW1lbnRzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jt
cy9mb3JtLWF0dHJpYnV0ZS1lbGVtZW50cy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zv
cm1zL2Zvcm0tYXR0cmlidXRlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9m
b3Jtcy9mb3JtLWF0dHJpYnV0ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL3Nj
cmlwdC10ZXN0cy9mb3JtLWF0dHJpYnV0ZS1lbGVtZW50cy5qczogQWRkZWQuCisgICAgICAgICog
ZmFzdC9mb3Jtcy9zY3JpcHQtdGVzdHMvZm9ybS1hdHRyaWJ1dGUuanM6IEFkZGVkLgorCiAyMDEw
LTExLTA0ICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IEtlbnQgVGFtdXJhLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9mb3JtLWF0dHJpYnV0ZS1lbGVtZW50cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL2Zvcm0tYXR0cmlidXRlLWVsZW1lbnRzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45
NWU5OGMxYzM0ZmVlN2JmYzIzNWRmZjdhYjZkYzAwNTIzMmJiM2MwCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9mb3JtLWF0dHJpYnV0ZS1lbGVtZW50cy1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwyMCBAQAorVGhpcyB0ZXN0IGNoZWNrcyBhIGZvcm0gZWxlbWVudCBj
YW4gaGFuZGxlIGVsZW1lbnRzIG9mIHdoaWNoIGZvcm0gYXR0cmlidXRlIHBvaW50cyB0aGUgZm9y
bSBlbGVtZW50IGV2ZW4gaWYgZWxlbWVudHMgYXJlIG91dHNpZGUgb2YgdGhlIGZvcm0uCisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCistIEVuc3VyZXMgdGhhdCAiZWxlbWVudHMiIGF0
dHJpYnV0ZSBvZiB0aGUgZm9ybSBjb250YWlucyBlbGVtZW50cyB3aGljaCBhcmUgb3V0c2lkZSBv
ZiB0aGUgZm9ybS4KK1BBU1Mgb3duZXIuZWxlbWVudHMubGVuZ3RoIGlzIDMKK1BBU1Mgb3duZXIu
ZWxlbWVudHNbMF0gaXMgb3V0ZXJCZWZvcmUKK1BBU1Mgb3duZXIuZWxlbWVudHNbMV0gaXMgaW5u
ZXIKK1BBU1Mgb3duZXIuZWxlbWVudHNbMl0gaXMgb3V0ZXJBZnRlcgorCistIEVuc3VyZXMgdGhh
dCBmb3JtIHN1Ym1pc3Npb24gY29udGFpbnMgbmFtZSBhbmQgdmFsdWUgcGFpcnMgZm9yIHN1Y2gg
ZWxlbWVudHMuCitQQVNTIHBhaXJzLmxlbmd0aCBpcyAzCitQQVNTIHBhaXJzWzBdIGlzICJrZXkx
PXZhbHVlMSIKK1BBU1MgcGFpcnNbMV0gaXMgImtleTI9dmFsdWUyIgorUEFTUyBwYWlyc1syXSBp
cyAic3VibWl0dGVkPXRydWUiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9mb3JtLWF0
dHJpYnV0ZS1lbGVtZW50cy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9mb3JtLWF0dHJp
YnV0ZS1lbGVtZW50cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMzODliY2UwY2I2N2MzNmUxNWUwMDYxMWI4
NjNiMWM4MGQzYjkwNmIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L2Zvcm0tYXR0cmlidXRlLWVsZW1lbnRzLmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBF
IEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9u
Ij48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVz
dHMvZm9ybS1hdHRyaWJ1dGUtZWxlbWVudHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2Zvcm0tYXR0cmli
dXRlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZm9ybS1hdHRyaWJ1dGUt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAzNjQ2MzM2MmFlNTQ1OTQ3YjAwMGM1ZmU1YjliOTE0
NTY0OTM2N2UKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2Zvcm0t
YXR0cmlidXRlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI4IEBACitUaGlzIHRlc3QgY2hlY2tz
IHRoZSBmb3JtIGF0dHJpYnV0ZSBvZiB0aGUgZm9ybS1hc3NvY2lhdGVkIGVsZW1lbnRzLgorCitP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworLSBDaGVja3MgdGhlIGV4aXN0ZW5jZSBvZiB0
aGUgZm9ybSBhdHRyaWJ1dGUgZm9yIGVhY2ggZm9ybS1hc3NvY2lhdGVkIGVsZW1lbnRzLgorRklY
TUU6IDxsYWJlbD4gYW5kIDxvYmplY3Q+IGRvbid0IHN1cHBvcnQgdGhlIGZvcm0gYXR0cmlidXRl
IGZvciBub3cuCitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJidXR0b24iKVsw
XS5mb3JtIGlzIG93bmVyCitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJmaWVs
ZHNldCIpWzBdLmZvcm0gaXMgb3duZXIKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoImlucHV0IilbMF0uZm9ybSBpcyBvd25lcgorUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgia2V5Z2VuIilbMF0uZm9ybSBpcyBvd25lcgorUEFTUyBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgibWV0ZXIiKVswXS5mb3JtIGlzIG93bmVyCitQQVNTIGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJvdXRwdXQiKVswXS5mb3JtIGlzIG93bmVyCitQQVNTIGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJwcm9ncmVzcyIpWzBdLmZvcm0gaXMgb3duZXIKK1BB
U1MgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNlbGVjdCIpWzBdLmZvcm0gaXMgb3du
ZXIKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRhcmVhIilbMF0uZm9y
bSBpcyBvd25lcgorCistIEVuc3VyZXMgdGhhdCB0aGUgZm9ybSBhdHRyaWJ1dGUgb2YgZm9ybS1h
c3NvY2lhdGVkIGVsZW1lbnRzIHBvaW50cyB0aGVpciBmb3JtIG93bmVyLgorUEFTUyBvdXRlckJl
Zm9yZS5mb3JtIGlzIG93bmVyCitQQVNTIGlubmVyLmZvcm0gaXMgb3duZXIKK1BBU1Mgb3V0ZXJB
ZnRlci5mb3JtIGlzIG93bmVyCisKKy0gRW5zdXJlcyB0aGF0IHRoZSBmb3JtIGF0dHJpYnV0ZSBw
b2ludHMgdGhlIGZvcm0gb3duZXIgZXZlbiBpZiB0aGUgZWxlbWVudCBpcyB3aXRoaW4gYW5vdGhl
ciBmb3JtIGVsZW1lbnQuCitQQVNTIGlubmVyLmZvcm0gaXMgb3duZXIKK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL2Zvcm0tYXR0cmlidXRlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL2Zvcm0tYXR0cmlidXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzA2OWIwYzZlZjY2NDMwNzc4N2Iy
ZDcyYTc4ZTIyMmJmOGQ2NWFjOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvZm9ybS1hdHRyaWJ1dGUuaHRtbApAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRN
TCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0
eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwv
cD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9m
b3JtLWF0dHJpYnV0ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2NyaXB0LXRlc3RzL2Zvcm0tYXR0cmli
dXRlLWVsZW1lbnRzLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zY3JpcHQtdGVzdHMvZm9y
bS1hdHRyaWJ1dGUtZWxlbWVudHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmI5MzkzYTUzNTdhOTNhNDk5NDUz
ODc1MzE5ODE3NzQwMTk5MTA1MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvc2NyaXB0LXRlc3RzL2Zvcm0tYXR0cmlidXRlLWVsZW1lbnRzLmpzCkBAIC0wLDAgKzEs
NDIgQEAKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgY2hlY2tzIGEgZm9ybSBlbGVtZW50IGNhbiBo
YW5kbGUgZWxlbWVudHMgb2Ygd2hpY2ggZm9ybSBhdHRyaWJ1dGUgcG9pbnRzIHRoZSBmb3JtIGVs
ZW1lbnQgZXZlbiBpZiBlbGVtZW50cyBhcmUgb3V0c2lkZSBvZiB0aGUgZm9ybS4iKTsKKworaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53
YWl0VW50aWxEb25lKCk7CisKK3ZhciBjb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdkaXYnKTsKK2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoY29udGFpbmVyKTsKKworY29udGFp
bmVyLmlubmVySFRNTCA9ICc8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJrZXkxIiB2YWx1ZT0i
dmFsdWUxIiBpZD0ib3V0ZXItYmVmb3JlIiBmb3JtPSJvd25lciIgLz4nICsKKyAgICAnPGZvcm0g
aWQ9Im93bmVyIiBhY3Rpb249IiIgbWV0aG9kPSJHRVQiPicgKworICAgICcgICAgPGlucHV0IHR5
cGU9ImhpZGRlbiIgbmFtZT0ia2V5MiIgdmFsdWU9InZhbHVlMiIgaWQ9ImlubmVyIiBmb3JtPSJv
d25lciIgLz4nICsKKyAgICAnPC9mb3JtPicgKworICAgICc8aW5wdXQgdHlwZT0iaGlkZGVuIiBu
YW1lPSJzdWJtaXR0ZWQiIHZhbHVlPSJ0cnVlIiBpZD0ib3V0ZXItYWZ0ZXIiIGZvcm09Im93bmVy
Ij4nOworCit2YXIgb3duZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnb3duZXInKTsKK3Zh
ciBvdXRlckJlZm9yZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdvdXRlci1iZWZvcmUnKTsK
K3ZhciBpbm5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbm5lcicpOwordmFyIG91dGVy
QWZ0ZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnb3V0ZXItYWZ0ZXInKTsKK3ZhciBxdWVy
eSA9IHdpbmRvdy5sb2NhdGlvbi5zZWFyY2g7CisKK2lmIChxdWVyeS5pbmRleE9mKCdzdWJtaXR0
ZWQ9dHJ1ZScpID09IC0xKSB7CisgICAgb3duZXIuc3VibWl0KCk7Cit9IGVsc2UgeworICAgIGRl
YnVnKCctIEVuc3VyZXMgdGhhdCAiZWxlbWVudHMiIGF0dHJpYnV0ZSBvZiB0aGUgZm9ybSBjb250
YWlucyBlbGVtZW50cyB3aGljaCBhcmUgb3V0c2lkZSBvZiB0aGUgZm9ybS4nKTsKKworICAgIHNo
b3VsZEJlKCdvd25lci5lbGVtZW50cy5sZW5ndGgnLCAnMycpOworICAgIHNob3VsZEJlKCdvd25l
ci5lbGVtZW50c1swXScsICdvdXRlckJlZm9yZScpOworICAgIHNob3VsZEJlKCdvd25lci5lbGVt
ZW50c1sxXScsICdpbm5lcicpOworICAgIHNob3VsZEJlKCdvd25lci5lbGVtZW50c1syXScsICdv
dXRlckFmdGVyJyk7CisKKyAgICBkZWJ1ZygnJyk7CisgICAgZGVidWcoJy0gRW5zdXJlcyB0aGF0
IGZvcm0gc3VibWlzc2lvbiBjb250YWlucyBuYW1lIGFuZCB2YWx1ZSBwYWlycyBmb3Igc3VjaCBl
bGVtZW50cy4nKTsKKyAgICB2YXIgcGFpcnMgPSBxdWVyeS5zdWJzdHIoMSkuc3BsaXQoJyYnKTsK
KyAgICBzaG91bGRCZSgncGFpcnMubGVuZ3RoJywgJzMnKTsKKyAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoJ3BhaXJzWzBdJywgJ2tleTE9dmFsdWUxJyk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCdwYWlyc1sxXScsICdrZXkyPXZhbHVlMicpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
ZygncGFpcnNbMl0nLCAnc3VibWl0dGVkPXRydWUnKTsKKyAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7
Cit9CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy9zY3JpcHQtdGVzdHMvZm9ybS1hdHRyaWJ1dGUuanMgYi9MYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL3NjcmlwdC10ZXN0cy9mb3JtLWF0dHJpYnV0ZS5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li45ZmY1ZmRhOTMyMGY5NTY2YWYyMWZlMzcyYTFjZTY0YmQ2NmYyY2NjCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zY3JpcHQtdGVzdHMvZm9ybS1hdHRyaWJ1dGUu
anMKQEAgLTAsMCArMSw1NCBAQAorZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBjaGVja3MgdGhlIGZv
cm0gYXR0cmlidXRlIG9mIHRoZSBmb3JtLWFzc29jaWF0ZWQgZWxlbWVudHMuIik7CisKK3ZhciBj
b250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKK2RvY3VtZW50LmJvZHku
YXBwZW5kQ2hpbGQoY29udGFpbmVyKTsKKworZGVidWcoJy0gQ2hlY2tzIHRoZSBleGlzdGVuY2Ug
b2YgdGhlIGZvcm0gYXR0cmlidXRlIGZvciBlYWNoIGZvcm0tYXNzb2NpYXRlZCBlbGVtZW50cy4n
KTsKK2RlYnVnKCdGSVhNRTogJmx0O2xhYmVsJmd0OyBhbmQgJmx0O29iamVjdCZndDsgZG9uXCd0
IHN1cHBvcnQgdGhlIGZvcm0gYXR0cmlidXRlIGZvciBub3cuJyk7Citjb250YWluZXIuaW5uZXJI
VE1MID0gJzxmb3JtIGlkPSJvd25lciI+PC9mb3JtPicgKworICAgICc8YnV0dG9uIG5hbWU9InZp
Y3RpbSIgZm9ybT0ib3duZXIiIC8+JyArCisgICAgJzxmaWVsZHNldCBuYW1lPSJ2aWN0aW0iIGZv
cm09Im93bmVyIiAvPicgKworICAgICc8aW5wdXQgbmFtZT0idmljdGltIiBmb3JtPSJvd25lciIg
Lz4nICsKKyAgICAnPGtleWdlbiBuYW1lPSJ2aWN0aW0iIGZvcm09Im93bmVyIiAvPicgKworICAg
ICc8bWV0ZXIgbmFtZT0idmljdGltIiBmb3JtPSJvd25lciIgLz4nICsKKyAgICAnPG91dHB1dCBu
YW1lPSJ2aWN0aW0iIGZvcm09Im93bmVyIiAvPicgKworICAgICc8cHJvZ3Jlc3MgbmFtZT0idmlj
dGltIiBmb3JtPSJvd25lciIgLz4nICsKKyAgICAnPHNlbGVjdCBuYW1lPSJ2aWN0aW0iIGZvcm09
Im93bmVyIiAvPicgKworICAgICc8dGV4dGFyZWEgbmFtZT0idmljdGltIiBmb3JtPSJvd25lciIg
Lz4nOwordmFyIG93bmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ293bmVyJyk7CitzaG91
bGRCZSgnZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJ1dHRvbiIpWzBdLmZvcm0nLCAn
b3duZXInKTsKK3Nob3VsZEJlKCdkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiZmllbGRz
ZXQiKVswXS5mb3JtJywgJ293bmVyJyk7CitzaG91bGRCZSgnZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoImlucHV0IilbMF0uZm9ybScsICdvd25lcicpOworc2hvdWxkQmUoJ2RvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJrZXlnZW4iKVswXS5mb3JtJywgJ293bmVyJyk7CitzaG91
bGRCZSgnZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIm1ldGVyIilbMF0uZm9ybScsICdv
d25lcicpOworc2hvdWxkQmUoJ2RvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJvdXRwdXQi
KVswXS5mb3JtJywgJ293bmVyJyk7CitzaG91bGRCZSgnZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInByb2dyZXNzIilbMF0uZm9ybScsICdvd25lcicpOworc2hvdWxkQmUoJ2RvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzZWxlY3QiKVswXS5mb3JtJywgJ293bmVyJyk7CitzaG91
bGRCZSgnZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRhcmVhIilbMF0uZm9ybScs
ICdvd25lcicpOworCitkZWJ1ZygnJyk7CitkZWJ1ZygnLSBFbnN1cmVzIHRoYXQgdGhlIGZvcm0g
YXR0cmlidXRlIG9mIGZvcm0tYXNzb2NpYXRlZCBlbGVtZW50cyBwb2ludHMgdGhlaXIgZm9ybSBv
d25lci4nKTsKK2NvbnRhaW5lci5pbm5lckhUTUwgPSAnPGlucHV0IGlkPSJvdXRlci1iZWZvcmUi
IG5hbWU9InZpY3RpbSIgZm9ybT0ib3duZXIiIC8+JyArCisgICAgJzxmb3JtIGlkPSJvd25lciI+
JyArCisgICAgJyAgICA8aW5wdXQgaWQ9ImlubmVyIiBuYW1lPSJ2aWN0aW0iIGZvcm09Im93bmVy
IiAvPicgKworICAgICc8L2Zvcm0+JyArCisgICAgJzxpbnB1dCBpZD0ib3V0ZXItYWZ0ZXIiIG5h
bWU9InZpY3RpbSIgZm9ybT0ib3duZXIiIC8+JzsKK293bmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ293bmVyJyk7Cit2YXIgb3V0ZXJCZWZvcmUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnb3V0ZXItYmVmb3JlJyk7Cit2YXIgaW5uZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
aW5uZXInKTsKK3ZhciBvdXRlckFmdGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ291dGVy
LWFmdGVyJyk7CitzaG91bGRCZSgnb3V0ZXJCZWZvcmUuZm9ybScsICdvd25lcicpOworc2hvdWxk
QmUoJ2lubmVyLmZvcm0nLCAnb3duZXInKTsKK3Nob3VsZEJlKCdvdXRlckFmdGVyLmZvcm0nLCAn
b3duZXInKTsKKworZGVidWcoJycpOworZGVidWcoJy0gRW5zdXJlcyB0aGF0IHRoZSBmb3JtIGF0
dHJpYnV0ZSBwb2ludHMgdGhlIGZvcm0gb3duZXIgZXZlbiBpZiB0aGUgZWxlbWVudCBpcyB3aXRo
aW4gYW5vdGhlciBmb3JtIGVsZW1lbnQuJyk7Citjb250YWluZXIuaW5uZXJIVE1MID0gJzxmb3Jt
IGlkPSJvd25lciI+PC9mb3JtPicgKworICAgICc8Zm9ybSBpZD0ic2hvdWxkTm90QmVPd25lciI+
JyArCisgICAgJyAgICA8aW5wdXQgaWQ9ImlubmVyIiBuYW1lPSJ2aWN0aW0iIGZvcm09Im93bmVy
IiAvPicgKworICAgICc8L2Zvcm0+JzsKK293bmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J293bmVyJyk7Citpbm5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbm5lcicpOworc2hv
dWxkQmUoJ2lubmVyLmZvcm0nLCAnb3duZXInKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9
IHRydWU7CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IDY2OGU2NzQ4NTc1YWQzYjMxNTljYjMwMmM4MWUwOGUzYzM5MDE3NzAuLjQyYzFiMWVk
YWZjN2JlY2M5MGQ4YWFmY2U5ODg2MDEwNWMxNjE0YjggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTAtMTEt
MDUgIEtlbmljaGkgSXNoaWJhc2hpICA8YmFzaGlAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbSFRNTDVdICJmb3JtIiBhdHRyaWJ1
dGUgc3VwcG9ydCBmb3IgZm9ybSBjb250cm9sIGVsZW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzgxMworCisgICAgICAgIE1vZGlmaWVzIGlu
c2VydEludG9UcmVlKCkgb2YgSFRNTEZvcm1Db250cm9sRWxlbWVudCBhbmQgSFRNTEZvcm1FbGVt
ZW50CisgICAgICAgIHRvIHN1cHBvcnQgImZvcm0iIGF0dHJpYnV0ZS4KKworICAgICAgICBUZXN0
czogZmFzdC9mb3Jtcy9mb3JtLWF0dHJpYnV0ZS1lbGVtZW50cy5odG1sCisgICAgICAgICAgICAg
ICBmYXN0L2Zvcm1zL2Zvcm0tYXR0cmlidXRlLmh0bWwKKworICAgICAgICAqIGh0bWwvSFRNTEF0
dHJpYnV0ZU5hbWVzLmluOiBBZGRlZCAiZm9ybSIgYXR0cmlidXRlLgorICAgICAgICAqIGh0bWwv
SFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNv
bnRyb2xFbGVtZW50OjppbnNlcnRlZEludG9UcmVlKTogTW9kaWZpZWQgdG8gc2V0IHRoZQorICAg
ICAgICBmb3JtIG93bmVyIGlmIHRoZSBlbGVtZW50IGhhcyAiZm9ybSIgYXR0cmlidXRlLgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6c2V0Rm9ybSk6IEFkZGVkLgor
ICAgICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oOiBBZGRlZCBzZXRGb3JtKCku
CisgICAgICAgICogaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
aXNGb3JtQXNzb2NpYXRlZEVsZW1lbnQpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxG
b3JtRWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQpOiBNb2RpZmllZCB0byBsb29rIGZvcgor
ICAgICAgICBmb3JtIGFzc29jaWF0ZWQgZWxlbWVudHMgYW5kIHJlZ2lzdGVyIHRoZW0gaWYgdGhl
eSBoYXZlICJmb3JtIiBhdHRyaWJ1dGUKKyAgICAgICAgYW5kIGl0J3MgdmFsdWUgaXMgZXF1YWwg
dG8gdGhlIElEIG9mIHRoZSBmb3JtIGVsZW1lbnQuCisgICAgICAgICogaHRtbC9IVE1MT3V0cHV0
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT3V0cHV0RWxlbWVudDo6cGFyc2VN
YXBwZWRBdHRyaWJ1dGUpOiBSZW1vdmVkICJGSVhNRSIgY29tbWVudC4KKyAgICAgICAgKiBodG1s
L0hUTUxPdXRwdXRFbGVtZW50Lmg6IFJlbW92ZWQgc2V0Rm9ybSgpLgorCiAyMDEwLTExLTA0ICBY
YW4gTG9wZXogIDx4bG9wZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBGaXggdGhlIEdUSysgYnVp
bGQuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluIGIvV2Vi
Q29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgppbmRleCBkOTc1OWZjZGIwYTgyNDAxYTNm
MDVmNThhYWFiZDlkYzIyYzY0NmZmLi4xODgxYjZmYmEyMjhkZThiNDJhNzkzN2UwZWNkMTI0ZTZl
MzNkMTEwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCisr
KyBiL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4KQEAgLTk0LDYgKzk0LDcgQEAg
ZXhwYW5kZWQKIGZhY2UKIGZvY3VzZWQKIGZvcgorZm9ybQogZm9ybW5vdmFsaWRhdGUKIGZyYW1l
CiBmcmFtZWJvcmRlcgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVs
ZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCmluZGV4
IDhmYTAwMGYxYjFjN2ExNDA4MGY2N2U0Y2U5NzcyZjA1ZWQ4MmJiNDUuLmQ4YWVlNjI4ZTI0MjNi
MTFkMjBjYmY2N2MyMGQ4MjZhYzc1ZjM1MGUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1M
Rm9ybUNvbnRyb2xFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9s
RWxlbWVudC5jcHAKQEAgLTE1NCw3ICsxNTQsMTEgQEAgdm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVt
ZW50OjphdHRhY2goKQogCiB2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6Omluc2VydGVkSW50
b1RyZWUoYm9vbCBkZWVwKQogewotICAgIGlmICghbV9mb3JtKSB7CisgICAgaWYgKGZhc3RIYXNB
dHRyaWJ1dGUoZm9ybUF0dHIpKSB7CisgICAgICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBkb2N1bWVu
dCgpLT5nZXRFbGVtZW50QnlJZChmYXN0R2V0QXR0cmlidXRlKGZvcm1BdHRyKSk7CisgICAgICAg
IGlmIChlbGVtZW50ICYmIGVsZW1lbnQtPmhhc1RhZ05hbWUoZm9ybVRhZykpCisgICAgICAgICAg
ICBzZXRGb3JtKHN0YXRpY19jYXN0PEhUTUxGb3JtRWxlbWVudCo+KGVsZW1lbnQpKTsKKyAgICB9
IGVsc2UgaWYgKCFtX2Zvcm0pIHsKICAgICAgICAgLy8gVGhpcyBoYW5kbGVzIHRoZSBjYXNlIG9m
IGEgbmV3IGZvcm0gZWxlbWVudCBiZWluZyBjcmVhdGVkIGJ5CiAgICAgICAgIC8vIEphdmFTY3Jp
cHQgYW5kIGluc2VydGVkIGluc2lkZSBhIGZvcm0uICBJbiB0aGUgY2FzZSBvZiB0aGUgcGFyc2Vy
CiAgICAgICAgIC8vIHNldHRpbmcgYSBmb3JtLCB3ZSB3aWxsIGFscmVhZHkgaGF2ZSBhIG5vbi1u
dWxsIHZhbHVlIGZvciBtX2Zvcm0sIApAQCAtNDEzLDYgKzQxNywxNSBAQCB2b2lkIEhUTUxGb3Jt
Q29udHJvbEVsZW1lbnQ6OmRpc3BhdGNoQmx1ckV2ZW50KCkKICAgICBoaWRlVmlzaWJsZVZhbGlk
YXRpb25NZXNzYWdlKCk7CiB9CiAKK3ZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6c2V0Rm9y
bShIVE1MRm9ybUVsZW1lbnQqIGZvcm0pCit7CisgICAgaWYgKG1fZm9ybSkKKyAgICAgICAgbV9m
b3JtLT5yZW1vdmVGb3JtRWxlbWVudCh0aGlzKTsKKyAgICBtX2Zvcm0gPSBmb3JtOworICAgIGlm
IChtX2Zvcm0pCisgICAgICAgIG1fZm9ybS0+cmVnaXN0ZXJGb3JtRWxlbWVudCh0aGlzKTsKK30K
KwogSFRNTEZvcm1FbGVtZW50KiBIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojp2aXJ0dWFsRm9ybSgp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fZm9ybTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9I
VE1MRm9ybUNvbnRyb2xFbGVtZW50LmggYi9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxl
bWVudC5oCmluZGV4IDE5NjBmYzM0ZjI4OGRhMzU2MmVlNmNkMTc5NGFiMzkwN2JlNTkzYTMuLjA2
OTc2Mzk0NjIwOTJlNmM4OTNhNDMwZTZmYTExODZiMGU0YWUzNDQgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxG
b3JtQ29udHJvbEVsZW1lbnQuaApAQCAtOTksNiArOTksOCBAQCBwdWJsaWM6CiAgICAgCiAgICAg
Ym9vbCByZWFkT25seSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVhZE9ubHk7IH0KIAorICAgIHZvaWQg
c2V0Rm9ybShIVE1MRm9ybUVsZW1lbnQqKTsKKwogcHJvdGVjdGVkOgogICAgIEhUTUxGb3JtQ29u
dHJvbEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqLCBIVE1M
Rm9ybUVsZW1lbnQqKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVu
dC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAppbmRleCBkYTM4OGQ1YzY1
MWI5YzMwOTNmZDk4NDFkMjUyODcxZDM5NjM1N2YyLi5iMWI0Y2NlNDU2NzIzYjNhN2RhZTY2MzE2
Zjk0M2E5MmZhZWQxNDU5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50
LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcApAQCAtMTI3LDExICsx
MjcsMzYgQEAgYm9vbCBIVE1MRm9ybUVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5
bGUqIHN0eWxlKQogICAgIHJldHVybiBmb3JtSXNUYWJsZVBhcnQ7CiB9CiAKK3N0YXRpYyBib29s
IGlzRm9ybUFzc29jaWF0ZWRFbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgLy8gRklY
TUU6IDxsYWJlbD4gYW5kIDxvYmplY3Q+IHNob3VsZCBiZSBhZGRlZCBhZnRlciB0aGV5IGJlY29t
ZSBzdWJjbGFzc2VzCisgICAgLy8gb2YgSFRNTEZvcm1Db250cm9sRWxlbWVudC4KKyAgICByZXR1
cm4gZWxlbWVudC0+aGFzVGFnTmFtZShidXR0b25UYWcpIHx8IGVsZW1lbnQtPmhhc1RhZ05hbWUo
ZmllbGRzZXRUYWcpCisgICAgICAgIHx8IGVsZW1lbnQtPmhhc1RhZ05hbWUoaW5wdXRUYWcpIHx8
IGVsZW1lbnQtPmhhc1RhZ05hbWUoa2V5Z2VuVGFnKQorICAgICAgICB8fCBlbGVtZW50LT5oYXNU
YWdOYW1lKG1ldGVyVGFnKSB8fCBlbGVtZW50LT5oYXNUYWdOYW1lKG91dHB1dFRhZykKKyAgICAg
ICAgfHwgZWxlbWVudC0+aGFzVGFnTmFtZShwcm9ncmVzc1RhZykgfHwgZWxlbWVudC0+aGFzVGFn
TmFtZShzZWxlY3RUYWcpCisgICAgICAgIHx8IGVsZW1lbnQtPmhhc1RhZ05hbWUodGV4dGFyZWFU
YWcpOworfQorCiB2b2lkIEhUTUxGb3JtRWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKQog
ewogICAgIGlmIChkb2N1bWVudCgpLT5pc0hUTUxEb2N1bWVudCgpKQogICAgICAgICBzdGF0aWNf
Y2FzdDxIVE1MRG9jdW1lbnQqPihkb2N1bWVudCgpKS0+YWRkTmFtZWRJdGVtKG1fbmFtZSk7CiAK
KyAgICBpZiAoaGFzSUQoKSkgeworICAgICAgICAvLyBMb29rcyBmb3IgZm9ybSBhc3NvY2lhdGVk
IGVsZW1lbnRzIHdoaWNoIGhhdmUgImZvcm0iIGF0dHJpYnV0ZS4KKyAgICAgICAgLy8gSWYgdGhl
IHZhbHVlIG9mIGF0dHJpYnV0ZSBpcyBlcXVhbCB0byB0aGUgSUQgb2YgdGhpcyBlbGVtZW50LAor
ICAgICAgICAvLyB3ZSBuZWVkIHRvIHJlZ2lzdGVyIHRoZW0uCisgICAgICAgIGZvciAoTm9kZSog
bm9kZSA9IGRvY3VtZW50KCktPnRyYXZlcnNlTmV4dE5vZGUoKTsgbm9kZTsgbm9kZSA9IG5vZGUt
PnRyYXZlcnNlTmV4dE5vZGUoKSkgeworICAgICAgICAgICAgaWYgKCFub2RlLT5pc0VsZW1lbnRO
b2RlKCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBFbGVtZW50KiBl
bGVtZW50ID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUpOworICAgICAgICAgICAgaWYgKGVs
ZW1lbnQtPmZhc3RIYXNBdHRyaWJ1dGUoZm9ybUF0dHIpCisgICAgICAgICAgICAgICAgJiYgaXNG
b3JtQXNzb2NpYXRlZEVsZW1lbnQoZWxlbWVudCkKKyAgICAgICAgICAgICAgICAmJiBlbGVtZW50
LT5mYXN0R2V0QXR0cmlidXRlKGZvcm1BdHRyKSA9PSBnZXRJZEF0dHJpYnV0ZSgpKQorICAgICAg
ICAgICAgICAgIHN0YXRpY19jYXN0PEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqPihlbGVtZW50KS0+
c2V0Rm9ybSh0aGlzKTsKKyAgICAgICAgfQorICAgIH0KICAgICBIVE1MRWxlbWVudDo6aW5zZXJ0
ZWRJbnRvRG9jdW1lbnQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxPdXRw
dXRFbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5jcHAKaW5kZXgg
ZGVlMjFhZWZjZTU5NDZjMDRiNjE0NjU2NDZjZmUwYWE5MDFjMDE4Zi4uYjgzMjYzZTM4MTdjMGI1
Y2IwYmRlYzVlYjczY2Q3NzQ3ZWJiMGNlNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxP
dXRwdXRFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTE91dHB1dEVsZW1lbnQuY3Bw
CkBAIC01OCw3ICs1OCw2IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgSFRNTE91dHB1dEVsZW1lbnQ6
OmZvcm1Db250cm9sVHlwZSgpIGNvbnN0CiAKIHZvaWQgSFRNTE91dHB1dEVsZW1lbnQ6OnBhcnNl
TWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKIHsKLSAgICAvLyBGSVhNRTogU2hvdWxk
IGhhbmRsZSB0aGUgJ2Zvcm0nIGF0dHJpYnV0ZSBoZXJlLgogICAgIGlmIChhdHRyLT5uYW1lKCkg
PT0gSFRNTE5hbWVzOjpmb3JBdHRyKQogICAgICAgICBzZXRGb3IoYXR0ci0+dmFsdWUoKSk7CiAg
ICAgZWxzZQpAQCAtNzUsMTEgKzc0LDYgQEAgdm9pZCBIVE1MT3V0cHV0RWxlbWVudDo6c2V0Rm9y
KGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgbV90b2tlbnMtPnNldFZhbHVlKHZhbHVlKTsKIH0K
IAotdm9pZCBIVE1MT3V0cHV0RWxlbWVudDo6c2V0Rm9ybShjb25zdCBTdHJpbmcmIC8qaWQqLykK
LXsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgZnVuY3Rpb24uCi19Ci0KIHZvaWQgSFRN
TE91dHB1dEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChib29sIGNyZWF0ZWRCeVBhcnNlciwgTm9k
ZSosIE5vZGUqLCBpbnQpCiB7CiAgICAgaWYgKGNyZWF0ZWRCeVBhcnNlciB8fCBtX2lzU2V0VGV4
dENvbnRlbnRJblByb2dyZXNzKSB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTE91dHB1
dEVsZW1lbnQuaCBiL1dlYkNvcmUvaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5oCmluZGV4IGRmODA3
ZmJjYzdjYzk3YTRiNWIxNGViYjQ1YmY1NWEzOWEwMzU3MjYuLjgzZWNlZTJmNDlmODYxNmY3YjEw
ZWM5ZGJkYzJkZTA3MzBhM2ZkZWQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MT3V0cHV0
RWxlbWVudC5oCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5oCkBAIC00Myw3
ICs0Myw2IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCB3aWxsVmFsaWRhdGUoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgdm9pZCBzZXRGb3JtKGNvbnN0IFN0cmluZyYpOwog
ICAgIFN0cmluZyB2YWx1ZSgpIGNvbnN0OwogICAgIHZvaWQgc2V0VmFsdWUoY29uc3QgU3RyaW5n
Jik7CiAgICAgU3RyaW5nIGRlZmF1bHRWYWx1ZSgpIGNvbnN0Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>73367</attachid>
            <date>2010-11-09 06:21:54 -0800</date>
            <delta_ts>2010-11-11 23:43:30 -0800</delta_ts>
            <desc>Patch V2</desc>
            <filename>bug-47813-20101109232151.patch</filename>
            <type>text/plain</type>
            <size>39650</size>
            <attacher name="Kenichi Ishibashi">bashi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3YTQxZTBmOGVlNjFmMDBlMTQ5ZDE4OGUzYTBlNTg3YTkxZTBiNDViLi5lZDdhMTU1
MDRhODJlZDQyZjA0ZGQyYWNkMjdiYTY5MTIxNmQwOGQyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAK
KzIwMTAtMTEtMDkgIEtlbmljaGkgSXNoaWJhc2hpICA8YmFzaGlAZ29vZ2xlLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbSFRNTDVdICJmb3Jt
IiBhdHRyaWJ1dGUgc3VwcG9ydCBmb3IgZm9ybSBjb250cm9sIGVsZW1lbnRzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzgxMworCisgICAgICAgIEFk
ZHMgYSB0ZXN0IGZpbGUgZm9yICJmb3JtIiBhdHRyaWJ1dGUgb2YgZm9ybS1hc3NvY2lhdGVkIGVs
ZW1lbnRzLgorICAgICAgICBUaGUgdGVzdCBtaWdodCBuZWVkIHRvIGJlIHJldmlzZWQgYmVjYXVz
ZSA8bGFiZWw+IGFuZCA8b2JqZWN0PiBkb24ndAorICAgICAgICBzdXBwb3J0ICJmb3JtIiBhdHRy
aWJ1dGUgZm9yIG5vdywgaW4gc3BpdGUgb2YgdGhlIEhUTUw1IHNwZWMgc2F5cyB0aGF0CisgICAg
ICAgIHRoZXkgc2hvdWxkIHN1cHBvcnQuCisKKyAgICAgICAgKiBmYXN0L2Zvcm1zL2Zvcm0tYXR0
cmlidXRlLWVsZW1lbnRzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jt
cy9mb3JtLWF0dHJpYnV0ZS1lbGVtZW50cy1vcmRlci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvZm9ybXMvZm9ybS1hdHRyaWJ1dGUtZWxlbWVudHMtb3JkZXIuaHRtbDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9mb3JtLWF0dHJpYnV0ZS1lbGVtZW50cy5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL2Zvcm0tYXR0cmlidXRlLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9mb3JtLWF0dHJpYnV0ZS5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2Zvcm1zL3NjcmlwdC10ZXN0cy9mb3JtLWF0dHJpYnV0ZS1lbGVtZW50
cy1vcmRlci5qczogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9zY3JpcHQtdGVzdHMvZm9y
bS1hdHRyaWJ1dGUtZWxlbWVudHMuanM6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvc2Ny
aXB0LXRlc3RzL2Zvcm0tYXR0cmlidXRlLmpzOiBBZGRlZC4KKwogMjAxMC0xMS0wOSAgUnlvc3Vr
ZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBNb3JlIHVucmV2aWV3ZWQgQ2hy
b21pdW0gcmViYXNlbGluZXMgZm9yIHI3MTQ2NS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvZm9ybXMvZm9ybS1hdHRyaWJ1dGUtZWxlbWVudHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9mb3JtLWF0dHJpYnV0ZS1lbGVtZW50cy1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOTVlOThjMWMzNGZlZTdiZmMyMzVkZmY3YWI2ZGMwMDUyMzJiYjNjMAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZm9ybS1hdHRyaWJ1dGUtZWxlbWVudHMt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjAgQEAKK1RoaXMgdGVzdCBjaGVja3MgYSBmb3JtIGVs
ZW1lbnQgY2FuIGhhbmRsZSBlbGVtZW50cyBvZiB3aGljaCBmb3JtIGF0dHJpYnV0ZSBwb2ludHMg
dGhlIGZvcm0gZWxlbWVudCBldmVuIGlmIGVsZW1lbnRzIGFyZSBvdXRzaWRlIG9mIHRoZSBmb3Jt
LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworLSBFbnN1cmVzIHRoYXQgImVsZW1l
bnRzIiBhdHRyaWJ1dGUgb2YgdGhlIGZvcm0gY29udGFpbnMgZWxlbWVudHMgd2hpY2ggYXJlIG91
dHNpZGUgb2YgdGhlIGZvcm0uCitQQVNTIG93bmVyLmVsZW1lbnRzLmxlbmd0aCBpcyAzCitQQVNT
IG93bmVyLmVsZW1lbnRzWzBdIGlzIG91dGVyQmVmb3JlCitQQVNTIG93bmVyLmVsZW1lbnRzWzFd
IGlzIGlubmVyCitQQVNTIG93bmVyLmVsZW1lbnRzWzJdIGlzIG91dGVyQWZ0ZXIKKworLSBFbnN1
cmVzIHRoYXQgZm9ybSBzdWJtaXNzaW9uIGNvbnRhaW5zIG5hbWUgYW5kIHZhbHVlIHBhaXJzIGZv
ciBzdWNoIGVsZW1lbnRzLgorUEFTUyBwYWlycy5sZW5ndGggaXMgMworUEFTUyBwYWlyc1swXSBp
cyAia2V5MT12YWx1ZTEiCitQQVNTIHBhaXJzWzFdIGlzICJrZXkyPXZhbHVlMiIKK1BBU1MgcGFp
cnNbMl0gaXMgInN1Ym1pdHRlZD10cnVlIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMv
Zm9ybS1hdHRyaWJ1dGUtZWxlbWVudHMtb3JkZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
ZmFzdC9mb3Jtcy9mb3JtLWF0dHJpYnV0ZS1lbGVtZW50cy1vcmRlci1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZGZiZGQxMWUwYjQ4ZTUwNmU3M2UyZjhjMjI1YjVlYjQ3ZjQ0YTk2ZgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZm9ybS1hdHRyaWJ1dGUtZWxlbWVu
dHMtb3JkZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOTUgQEAKK1RoaXMgdGVzdCBleGFtaW5l
cyB0aGUgb3JkZXIgb2YgdGhlIGVsZW1lbnRzIGF0dHJpYnV0ZSBvZiBhIGZvcm0gZWxlbWVudC4K
KworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywg
Zm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKKy0gRW5zdXJlcyB0aGF0ICJlbGVtZW50
cyIgYXR0cmlidXRlIG9mIHRoZSBmb3JtIGNvbnRhaW5zIGVsZW1lbnRzIHdoaWNoIGFyZSBvdXRz
aWRlIG9mIHRoZSBmb3JtLgorUEFTUyBvd25lci5lbGVtZW50cy5sZW5ndGggaXMgNgorUEFTUyBv
d25lci5lbGVtZW50c1swXSBpcyBiZWZvcmUxCitQQVNTIG93bmVyLmVsZW1lbnRzWzFdIGlzIGJl
Zm9yZTIKK1BBU1Mgb3duZXIuZWxlbWVudHNbMl0gaXMgaW5uZXIxCitQQVNTIG93bmVyLmVsZW1l
bnRzWzNdIGlzIGlubmVyMgorUEFTUyBvd25lci5lbGVtZW50c1s0XSBpcyBhZnRlcjEKK1BBU1Mg
b3duZXIuZWxlbWVudHNbNV0gaXMgYWZ0ZXIyCisKKy0gVGVzdHMgZm9yIGNoYW5naW5nIHRoZSB2
YWx1ZSBvZiB0aGUgZm9ybSBhdHRyaWJ1dGUgb2YgYSBlbGVtZW50IHdoaWNoIGlzIGxvY2F0ZWQg
YmVmb3JlIHRoZSBmb3JtIG93bmVyLgorUEFTUyBvd25lci5lbGVtZW50cy5sZW5ndGggaXMgNQor
UEFTUyBvd25lci5lbGVtZW50c1swXSBpcyBiZWZvcmUxCitQQVNTIG93bmVyLmVsZW1lbnRzWzFd
IGlzIGlubmVyMQorUEFTUyBvd25lci5lbGVtZW50c1syXSBpcyBpbm5lcjIKK1BBU1Mgb3duZXIu
ZWxlbWVudHNbM10gaXMgYWZ0ZXIxCitQQVNTIG93bmVyLmVsZW1lbnRzWzRdIGlzIGFmdGVyMgor
UEFTUyBvd25lci5lbGVtZW50cy5sZW5ndGggaXMgNgorUEFTUyBvd25lci5lbGVtZW50c1swXSBp
cyBiZWZvcmUxCitQQVNTIG93bmVyLmVsZW1lbnRzWzFdIGlzIGJlZm9yZTIKK1BBU1Mgb3duZXIu
ZWxlbWVudHNbMl0gaXMgaW5uZXIxCitQQVNTIG93bmVyLmVsZW1lbnRzWzNdIGlzIGlubmVyMgor
UEFTUyBvd25lci5lbGVtZW50c1s0XSBpcyBhZnRlcjEKK1BBU1Mgb3duZXIuZWxlbWVudHNbNV0g
aXMgYWZ0ZXIyCisKKy0gVGVzdHMgZm9yIGNoYW5naW5nIHRoZSB2YWx1ZSBvZiB0aGUgZm9ybSBh
dHRyaWJ1dGUgb2YgYSBlbGVtZW50IHdoaWNoIGlzIGxvY2F0ZWQgaW5zaWRlIG9mIHRoZSBmb3Jt
IG93bmVyLgorUEFTUyBvd25lci5lbGVtZW50cy5sZW5ndGggaXMgNQorUEFTUyBvd25lci5lbGVt
ZW50c1swXSBpcyBiZWZvcmUxCitQQVNTIG93bmVyLmVsZW1lbnRzWzFdIGlzIGJlZm9yZTIKK1BB
U1Mgb3duZXIuZWxlbWVudHNbMl0gaXMgaW5uZXIxCitQQVNTIG93bmVyLmVsZW1lbnRzWzNdIGlz
IGFmdGVyMQorUEFTUyBvd25lci5lbGVtZW50c1s0XSBpcyBhZnRlcjIKK1BBU1Mgb3duZXIuZWxl
bWVudHMubGVuZ3RoIGlzIDYKK1BBU1Mgb3duZXIuZWxlbWVudHNbMF0gaXMgYmVmb3JlMQorUEFT
UyBvd25lci5lbGVtZW50c1sxXSBpcyBiZWZvcmUyCitQQVNTIG93bmVyLmVsZW1lbnRzWzJdIGlz
IGlubmVyMQorUEFTUyBvd25lci5lbGVtZW50c1szXSBpcyBpbm5lcjIKK1BBU1Mgb3duZXIuZWxl
bWVudHNbNF0gaXMgYWZ0ZXIxCitQQVNTIG93bmVyLmVsZW1lbnRzWzVdIGlzIGFmdGVyMgorCist
IFRlc3RzIGZvciBjaGFuZ2luZyB0aGUgdmFsdWUgb2YgdGhlIGZvcm0gYXR0cmlidXRlIG9mIGEg
ZWxlbWVudCB3aGljaCBpcyBsb2NhdGVkIGFmdGVyIHRoZSBmb3JtIG93bmVyLgorUEFTUyBvd25l
ci5lbGVtZW50cy5sZW5ndGggaXMgNQorUEFTUyBvd25lci5lbGVtZW50c1swXSBpcyBiZWZvcmUx
CitQQVNTIG93bmVyLmVsZW1lbnRzWzFdIGlzIGJlZm9yZTIKK1BBU1Mgb3duZXIuZWxlbWVudHNb
Ml0gaXMgaW5uZXIxCitQQVNTIG93bmVyLmVsZW1lbnRzWzNdIGlzIGlubmVyMgorUEFTUyBvd25l
ci5lbGVtZW50c1s0XSBpcyBhZnRlcjIKK1BBU1Mgb3duZXIuZWxlbWVudHMubGVuZ3RoIGlzIDYK
K1BBU1Mgb3duZXIuZWxlbWVudHNbMF0gaXMgYmVmb3JlMQorUEFTUyBvd25lci5lbGVtZW50c1sx
XSBpcyBiZWZvcmUyCitQQVNTIG93bmVyLmVsZW1lbnRzWzJdIGlzIGlubmVyMQorUEFTUyBvd25l
ci5lbGVtZW50c1szXSBpcyBpbm5lcjIKK1BBU1Mgb3duZXIuZWxlbWVudHNbNF0gaXMgYWZ0ZXIx
CitQQVNTIG93bmVyLmVsZW1lbnRzWzVdIGlzIGFmdGVyMgorCistIFRlc3RzIGZvciBzZXR0aW5n
IGZvcm0gYXR0cmlidXRlIG9mIGVsZW1lbnRzIGluIHJldmVyc2Ugb3JkZXIuCitQQVNTIG93bmVy
LmVsZW1lbnRzLmxlbmd0aCBpcyA2CitQQVNTIG93bmVyLmVsZW1lbnRzWzBdIGlzIGJlZm9yZTEK
K1BBU1Mgb3duZXIuZWxlbWVudHNbMV0gaXMgYmVmb3JlMgorUEFTUyBvd25lci5lbGVtZW50c1sy
XSBpcyBpbm5lcjEKK1BBU1Mgb3duZXIuZWxlbWVudHNbM10gaXMgaW5uZXIyCitQQVNTIG93bmVy
LmVsZW1lbnRzWzRdIGlzIGFmdGVyMQorUEFTUyBvd25lci5lbGVtZW50c1s1XSBpcyBhZnRlcjIK
KworLSBUZXN0cyBmb3Igc2V0dGluZyBmb3JtIGF0dHJpYnV0ZSBvZiBlbGVtZW50cyBpbiByYW5k
b20gb3JkZXIuCitQQVNTIG93bmVyLmVsZW1lbnRzLmxlbmd0aCBpcyA2CitQQVNTIG93bmVyLmVs
ZW1lbnRzWzBdIGlzIGJlZm9yZTEKK1BBU1Mgb3duZXIuZWxlbWVudHNbMV0gaXMgYmVmb3JlMgor
UEFTUyBvd25lci5lbGVtZW50c1syXSBpcyBpbm5lcjEKK1BBU1Mgb3duZXIuZWxlbWVudHNbM10g
aXMgaW5uZXIyCitQQVNTIG93bmVyLmVsZW1lbnRzWzRdIGlzIGFmdGVyMQorUEFTUyBvd25lci5l
bGVtZW50c1s1XSBpcyBhZnRlcjIKKworLSBUZXN0cyBmb3IgcmVtb3ZpbmcvYWRkaW5nIGVsZW1l
bnRzCitQQVNTIG93bmVyLmVsZW1lbnRzLmxlbmd0aCBpcyAzCitQQVNTIG93bmVyLmVsZW1lbnRz
WzBdIGlzIGJlZm9yZTEKK1BBU1Mgb3duZXIuZWxlbWVudHNbMV0gaXMgaW5uZXIxCitQQVNTIG93
bmVyLmVsZW1lbnRzWzJdIGlzIGFmdGVyMgorUEFTUyBvd25lci5lbGVtZW50cy5sZW5ndGggaXMg
NgorUEFTUyBvd25lci5lbGVtZW50c1swXSBpcyBiZWZvcmUxCitQQVNTIG93bmVyLmVsZW1lbnRz
WzFdIGlzIGJlZm9yZTIKK1BBU1Mgb3duZXIuZWxlbWVudHNbMl0gaXMgaW5uZXIxCitQQVNTIG93
bmVyLmVsZW1lbnRzWzNdIGlzIGlubmVyMgorUEFTUyBvd25lci5lbGVtZW50c1s0XSBpcyBhZnRl
cjEKK1BBU1Mgb3duZXIuZWxlbWVudHNbNV0gaXMgYWZ0ZXIyCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKworICAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy9mb3JtLWF0dHJpYnV0ZS1lbGVtZW50cy1vcmRlci5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9mb3JtLWF0dHJpYnV0ZS1lbGVtZW50cy1vcmRlci5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjJlMTcyMWQ0ODFkN2FlMjUzMGYyYzhmY2U1NTJmYjI5NmFhZmMxNDUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2Zvcm0tYXR0cmlidXRlLWVsZW1l
bnRzLW9yZGVyLmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICIt
Ly9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgor
PHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvZm9ybS1hdHRyaWJ1
dGUtZWxlbWVudHMtb3JkZXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2Zvcm0tYXR0cmlidXRlLWVsZW1l
bnRzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2Zvcm0tYXR0cmlidXRlLWVsZW1lbnRz
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMzM4OWJjZTBjYjY3YzM2ZTE1ZTAwNjExYjg2M2IxYzgwZDNiOTA2
YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZm9ybS1hdHRyaWJ1
dGUtZWxlbWVudHMuaHRtbApAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMg
Ii0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9mb3JtLWF0dHJp
YnV0ZS1lbGVtZW50cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZm9ybS1hdHRyaWJ1dGUtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9mb3JtLWF0dHJpYnV0ZS1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYjg3OGQ5MzNmZDE0M2IxYzgyNTA0NjViM2NmZmRmNzg5YzdkMDI1MQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZm9ybS1hdHRyaWJ1dGUtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsNDAgQEAKK1RoaXMgdGVzdCBjaGVja3MgdGhlIGZvcm0gYXR0
cmlidXRlIG9mIHRoZSBmb3JtLWFzc29jaWF0ZWQgZWxlbWVudHMuCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworCistIENoZWNrcyB0aGUgZXhpc3RlbmNlIG9mIHRoZSBmb3JtIGF0dHJp
YnV0ZSBmb3IgZWFjaCBmb3JtLWFzc29jaWF0ZWQgZWxlbWVudHMuCitGSVhNRTogPGxhYmVsPiBh
bmQgPG9iamVjdD4gZG9uJ3Qgc3VwcG9ydCB0aGUgZm9ybSBhdHRyaWJ1dGUgZm9yIG5vdy4KK1BB
U1MgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJ1dHRvbiIpWzBdLmZvcm0gaXMgb3du
ZXIKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImZpZWxkc2V0IilbMF0uZm9y
bSBpcyBvd25lcgorUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW5wdXQiKVsw
XS5mb3JtIGlzIG93bmVyCitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJrZXln
ZW4iKVswXS5mb3JtIGlzIG93bmVyCitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJtZXRlciIpWzBdLmZvcm0gaXMgb3duZXIKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoIm91dHB1dCIpWzBdLmZvcm0gaXMgb3duZXIKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInByb2dyZXNzIilbMF0uZm9ybSBpcyBvd25lcgorUEFTUyBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgic2VsZWN0IilbMF0uZm9ybSBpcyBvd25lcgorUEFTUyBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dGFyZWEiKVswXS5mb3JtIGlzIG93bmVyCisK
Ky0gRW5zdXJlcyB0aGF0IHRoZSBmb3JtIGF0dHJpYnV0ZSBwb2ludHMgdGhlIGZvcm0gb3duZXIg
ZXZlbiBpZiB0aGUgZWxlbWVudCBpcyB3aXRoaW4gYW5vdGhlciBmb3JtIGVsZW1lbnQuCitQQVNT
IGlucHV0RWxlbWVudC5mb3JtIGlzIG93bmVyCisKKy0gRW5zdXJlcyB3aGV0aGVyIHRoZSBmb3Jt
IG93bmVyIGlzIHNldCBjb3JyZWN0bHkgd2hlbiB0aGUgdmFsdWUgb2YgZm9ybSBhdHRyaWJ1dGUg
b2YgYSBmb3JtLWFzc29jaWF0ZWQgZWxlbWVudCBjaGFuZ2VkLgorUEFTUyBpbnB1dEVsZW1lbnQu
Zm9ybSBpcyBmb3JtMQorUEFTUyBpbnB1dEVsZW1lbnQuZm9ybSBpcyBmb3JtMgorCistIEVuc3Vy
ZXMgd2hldGhlciB0aGUgZm9ybSBvd25lciBpcyBzZXQgY29ycmVjdGx5IHdoZW4gdGhlIHZhbHVl
IG9mIGZvcm0gYXR0cmlidXRlIGlzIGFkZGVkL3JlbW92ZWQuCitQQVNTIGlucHV0RWxlbWVudC5m
b3JtIGlzIG51bGwKK1BBU1MgaW5wdXRFbGVtZW50LmZvcm0gaXMgb3duZXIKK1BBU1MgaW5wdXRF
bGVtZW50LmZvcm0gaXMgbnVsbAorCistIEVuc3VyZXMgd2hldGhlciB0aGUgZm9ybSBvd25lciBp
cyBzZXQgY29ycmVjdGx5IHdoZW4gdGhlIGZvcm0gb3duZXIgaXMgYWRkZWQvcmVtb3ZlZC4KK1BB
U1Mgb3duZXIubmFtZSBpcyAiZmlyc3RPd25lciIKK1BBU1Mgb3duZXIubmFtZSBpcyAic2Vjb25k
T3duZXIiCitQQVNTIGlucHV0RWxlbWVudC5mb3JtIGlzIG93bmVyCitQQVNTIGlucHV0RWxlbWVu
dC5mb3JtIGlzIG51bGwKK1BBU1MgaW5wdXRFbGVtZW50LmZvcm0gaXMgb3duZXIKK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZm9ybS1hdHRyaWJ1dGUuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvZm9ybS1hdHRyaWJ1dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMDY5YjBjNmVmNjY0
MzA3Nzg3YjJkNzJhNzhlMjIyYmY4ZDY1YWM5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9mb3JtLWF0dHJpYnV0ZS5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9D
VFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlw
dGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0ic2NyaXB0
LXRlc3RzL2Zvcm0tYXR0cmlidXRlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zY3JpcHQtdGVzdHMvZm9y
bS1hdHRyaWJ1dGUtZWxlbWVudHMtb3JkZXIuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Nj
cmlwdC10ZXN0cy9mb3JtLWF0dHJpYnV0ZS1lbGVtZW50cy1vcmRlci5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5i
MWVjODQ5MmQ5YTVjYjE5ZmMzODg5NTQ3M2Q2MGFiNTFmMGMxNzVlCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zY3JpcHQtdGVzdHMvZm9ybS1hdHRyaWJ1dGUtZWxl
bWVudHMtb3JkZXIuanMKQEAgLTAsMCArMSwxNTMgQEAKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3Qg
ZXhhbWluZXMgdGhlIG9yZGVyIG9mIHRoZSBlbGVtZW50cyBhdHRyaWJ1dGUgb2YgYSBmb3JtIGVs
ZW1lbnQuIik7CisKK3ZhciBjb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYn
KTsKK2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoY29udGFpbmVyKTsKK2NvbnRhaW5lci5pbm5l
ckhUTUwgPSAnPGlucHV0IG5hbWU9InZpY3RpbSIgaWQ9ImJlZm9yZTEiIGZvcm09Im93bmVyIiAv
PicgKworICAgICc8aW5wdXQgbmFtZT0idmljdGltIiBpZD0iYmVmb3JlMiIgZm9ybT0ib3duZXIi
IC8+JyArCisgICAgJzxmb3JtIGlkPSJvd25lciIgYWN0aW9uPSIiIG1ldGhvZD0iR0VUIj4nICsK
KyAgICAnICAgIDxpbnB1dCBuYW1lPSJ2aWN0aW0iIGlkPSJpbm5lcjEiIGZvcm09Im93bmVyIiAv
PicgKworICAgICcgICAgPGlucHV0IG5hbWU9InZpY3RpbSIgaWQ9ImlubmVyMiIgZm9ybT0ib3du
ZXIiIC8+JyArCisgICAgJzwvZm9ybT4nICsKKyAgICAnPGlucHV0IG5hbWU9InZpY3RpbSIgaWQ9
ImFmdGVyMSIgZm9ybT0ib3duZXIiIC8+JyArCisgICAgJzxpbnB1dCBuYW1lPSJ2aWN0aW0iIGlk
PSJhZnRlcjIiIGZvcm09Im93bmVyIiAvPic7CisKK3ZhciBvd25lciA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdvd25lcicpOwordmFyIGJlZm9yZTEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnYmVmb3JlMScpOwordmFyIGJlZm9yZTIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYmVm
b3JlMicpOwordmFyIGlubmVyMSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbm5lcjEnKTsK
K3ZhciBpbm5lcjIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW5uZXIyJyk7Cit2YXIgYWZ0
ZXIxID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FmdGVyMScpOwordmFyIGFmdGVyMiA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdhZnRlcjInKTsKKworZGVidWcoJy0gRW5zdXJlcyB0aGF0
ICJlbGVtZW50cyIgYXR0cmlidXRlIG9mIHRoZSBmb3JtIGNvbnRhaW5zIGVsZW1lbnRzIHdoaWNo
IGFyZSBvdXRzaWRlIG9mIHRoZSBmb3JtLicpOworc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzLmxl
bmd0aCcsICc2Jyk7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHNbMF0nLCAnYmVmb3JlMScpOwor
c2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzWzFdJywgJ2JlZm9yZTInKTsKK3Nob3VsZEJlKCdvd25l
ci5lbGVtZW50c1syXScsICdpbm5lcjEnKTsKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50c1szXScs
ICdpbm5lcjInKTsKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50c1s0XScsICdhZnRlcjEnKTsKK3No
b3VsZEJlKCdvd25lci5lbGVtZW50c1s1XScsICdhZnRlcjInKTsKKworZGVidWcoJycpOworZGVi
dWcoJy0gVGVzdHMgZm9yIGNoYW5naW5nIHRoZSB2YWx1ZSBvZiB0aGUgZm9ybSBhdHRyaWJ1dGUg
b2YgYSBlbGVtZW50IHdoaWNoIGlzIGxvY2F0ZWQgYmVmb3JlIHRoZSBmb3JtIG93bmVyLicpOwor
YmVmb3JlMi5hdHRyaWJ1dGVzWydmb3JtJ10udmFsdWUgPSAnJzsKK3Nob3VsZEJlKCdvd25lci5l
bGVtZW50cy5sZW5ndGgnLCAnNScpOworc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzWzBdJywgJ2Jl
Zm9yZTEnKTsKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50c1sxXScsICdpbm5lcjEnKTsKK3Nob3Vs
ZEJlKCdvd25lci5lbGVtZW50c1syXScsICdpbm5lcjInKTsKK3Nob3VsZEJlKCdvd25lci5lbGVt
ZW50c1szXScsICdhZnRlcjEnKTsKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50c1s0XScsICdhZnRl
cjInKTsKK2JlZm9yZTIuYXR0cmlidXRlc1snZm9ybSddLnZhbHVlID0gJ293bmVyJzsKK3Nob3Vs
ZEJlKCdvd25lci5lbGVtZW50cy5sZW5ndGgnLCAnNicpOworc2hvdWxkQmUoJ293bmVyLmVsZW1l
bnRzWzBdJywgJ2JlZm9yZTEnKTsKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50c1sxXScsICdiZWZv
cmUyJyk7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHNbMl0nLCAnaW5uZXIxJyk7CitzaG91bGRC
ZSgnb3duZXIuZWxlbWVudHNbM10nLCAnaW5uZXIyJyk7CitzaG91bGRCZSgnb3duZXIuZWxlbWVu
dHNbNF0nLCAnYWZ0ZXIxJyk7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHNbNV0nLCAnYWZ0ZXIy
Jyk7CisKK2RlYnVnKCcnKTsKK2RlYnVnKCctIFRlc3RzIGZvciBjaGFuZ2luZyB0aGUgdmFsdWUg
b2YgdGhlIGZvcm0gYXR0cmlidXRlIG9mIGEgZWxlbWVudCB3aGljaCBpcyBsb2NhdGVkIGluc2lk
ZSBvZiB0aGUgZm9ybSBvd25lci4nKTsKK2lubmVyMi5hdHRyaWJ1dGVzWydmb3JtJ10udmFsdWUg
PSAnJzsKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50cy5sZW5ndGgnLCAnNScpOworc2hvdWxkQmUo
J293bmVyLmVsZW1lbnRzWzBdJywgJ2JlZm9yZTEnKTsKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50
c1sxXScsICdiZWZvcmUyJyk7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHNbMl0nLCAnaW5uZXIx
Jyk7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHNbM10nLCAnYWZ0ZXIxJyk7CitzaG91bGRCZSgn
b3duZXIuZWxlbWVudHNbNF0nLCAnYWZ0ZXIyJyk7Citpbm5lcjIuYXR0cmlidXRlc1snZm9ybSdd
LnZhbHVlID0gJ293bmVyJzsKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50cy5sZW5ndGgnLCAnNicp
Oworc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzWzBdJywgJ2JlZm9yZTEnKTsKK3Nob3VsZEJlKCdv
d25lci5lbGVtZW50c1sxXScsICdiZWZvcmUyJyk7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHNb
Ml0nLCAnaW5uZXIxJyk7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHNbM10nLCAnaW5uZXIyJyk7
CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHNbNF0nLCAnYWZ0ZXIxJyk7CitzaG91bGRCZSgnb3du
ZXIuZWxlbWVudHNbNV0nLCAnYWZ0ZXIyJyk7CisKK2RlYnVnKCcnKTsKK2RlYnVnKCctIFRlc3Rz
IGZvciBjaGFuZ2luZyB0aGUgdmFsdWUgb2YgdGhlIGZvcm0gYXR0cmlidXRlIG9mIGEgZWxlbWVu
dCB3aGljaCBpcyBsb2NhdGVkIGFmdGVyIHRoZSBmb3JtIG93bmVyLicpOworYWZ0ZXIxLmF0dHJp
YnV0ZXNbJ2Zvcm0nXS52YWx1ZSA9ICcnOworc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzLmxlbmd0
aCcsICc1Jyk7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHNbMF0nLCAnYmVmb3JlMScpOworc2hv
dWxkQmUoJ293bmVyLmVsZW1lbnRzWzFdJywgJ2JlZm9yZTInKTsKK3Nob3VsZEJlKCdvd25lci5l
bGVtZW50c1syXScsICdpbm5lcjEnKTsKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50c1szXScsICdp
bm5lcjInKTsKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50c1s0XScsICdhZnRlcjInKTsKK2FmdGVy
MS5hdHRyaWJ1dGVzWydmb3JtJ10udmFsdWUgPSAnb3duZXInOworc2hvdWxkQmUoJ293bmVyLmVs
ZW1lbnRzLmxlbmd0aCcsICc2Jyk7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHNbMF0nLCAnYmVm
b3JlMScpOworc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzWzFdJywgJ2JlZm9yZTInKTsKK3Nob3Vs
ZEJlKCdvd25lci5lbGVtZW50c1syXScsICdpbm5lcjEnKTsKK3Nob3VsZEJlKCdvd25lci5lbGVt
ZW50c1szXScsICdpbm5lcjInKTsKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50c1s0XScsICdhZnRl
cjEnKTsKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50c1s1XScsICdhZnRlcjInKTsKKworZGVidWco
JycpOworZGVidWcoJy0gVGVzdHMgZm9yIHNldHRpbmcgZm9ybSBhdHRyaWJ1dGUgb2YgZWxlbWVu
dHMgaW4gcmV2ZXJzZSBvcmRlci4nKTsKK2JlZm9yZTEuYXR0cmlidXRlc1snZm9ybSddLnZhbHVl
ID0gJyc7CitiZWZvcmUyLmF0dHJpYnV0ZXNbJ2Zvcm0nXS52YWx1ZSA9ICcnOworaW5uZXIxLmF0
dHJpYnV0ZXNbJ2Zvcm0nXS52YWx1ZSA9ICcnOworaW5uZXIyLmF0dHJpYnV0ZXNbJ2Zvcm0nXS52
YWx1ZSA9ICcnOworYWZ0ZXIxLmF0dHJpYnV0ZXNbJ2Zvcm0nXS52YWx1ZSA9ICcnOworYWZ0ZXIy
LmF0dHJpYnV0ZXNbJ2Zvcm0nXS52YWx1ZSA9ICcnOworCithZnRlcjIuYXR0cmlidXRlc1snZm9y
bSddLnZhbHVlID0gJ293bmVyJzsKK2FmdGVyMS5hdHRyaWJ1dGVzWydmb3JtJ10udmFsdWUgPSAn
b3duZXInOworaW5uZXIyLmF0dHJpYnV0ZXNbJ2Zvcm0nXS52YWx1ZSA9ICdvd25lcic7Citpbm5l
cjEuYXR0cmlidXRlc1snZm9ybSddLnZhbHVlID0gJ293bmVyJzsKK2JlZm9yZTIuYXR0cmlidXRl
c1snZm9ybSddLnZhbHVlID0gJ293bmVyJzsKK2JlZm9yZTEuYXR0cmlidXRlc1snZm9ybSddLnZh
bHVlID0gJ293bmVyJzsKKworc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzLmxlbmd0aCcsICc2Jyk7
CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHNbMF0nLCAnYmVmb3JlMScpOworc2hvdWxkQmUoJ293
bmVyLmVsZW1lbnRzWzFdJywgJ2JlZm9yZTInKTsKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50c1sy
XScsICdpbm5lcjEnKTsKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50c1szXScsICdpbm5lcjInKTsK
K3Nob3VsZEJlKCdvd25lci5lbGVtZW50c1s0XScsICdhZnRlcjEnKTsKK3Nob3VsZEJlKCdvd25l
ci5lbGVtZW50c1s1XScsICdhZnRlcjInKTsKKworZGVidWcoJycpOworZGVidWcoJy0gVGVzdHMg
Zm9yIHNldHRpbmcgZm9ybSBhdHRyaWJ1dGUgb2YgZWxlbWVudHMgaW4gcmFuZG9tIG9yZGVyLicp
OworYmVmb3JlMS5hdHRyaWJ1dGVzWydmb3JtJ10udmFsdWUgPSAnJzsKK2JlZm9yZTIuYXR0cmli
dXRlc1snZm9ybSddLnZhbHVlID0gJyc7Citpbm5lcjEuYXR0cmlidXRlc1snZm9ybSddLnZhbHVl
ID0gJyc7Citpbm5lcjIuYXR0cmlidXRlc1snZm9ybSddLnZhbHVlID0gJyc7CithZnRlcjEuYXR0
cmlidXRlc1snZm9ybSddLnZhbHVlID0gJyc7CithZnRlcjIuYXR0cmlidXRlc1snZm9ybSddLnZh
bHVlID0gJyc7CisKK2FmdGVyMS5hdHRyaWJ1dGVzWydmb3JtJ10udmFsdWUgPSAnb3duZXInOwor
YmVmb3JlMS5hdHRyaWJ1dGVzWydmb3JtJ10udmFsdWUgPSAnb3duZXInOworaW5uZXIyLmF0dHJp
YnV0ZXNbJ2Zvcm0nXS52YWx1ZSA9ICdvd25lcic7CitiZWZvcmUyLmF0dHJpYnV0ZXNbJ2Zvcm0n
XS52YWx1ZSA9ICdvd25lcic7CithZnRlcjIuYXR0cmlidXRlc1snZm9ybSddLnZhbHVlID0gJ293
bmVyJzsKK2lubmVyMS5hdHRyaWJ1dGVzWydmb3JtJ10udmFsdWUgPSAnb3duZXInOworCitzaG91
bGRCZSgnb3duZXIuZWxlbWVudHMubGVuZ3RoJywgJzYnKTsKK3Nob3VsZEJlKCdvd25lci5lbGVt
ZW50c1swXScsICdiZWZvcmUxJyk7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHNbMV0nLCAnYmVm
b3JlMicpOworc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzWzJdJywgJ2lubmVyMScpOworc2hvdWxk
QmUoJ293bmVyLmVsZW1lbnRzWzNdJywgJ2lubmVyMicpOworc2hvdWxkQmUoJ293bmVyLmVsZW1l
bnRzWzRdJywgJ2FmdGVyMScpOworc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzWzVdJywgJ2FmdGVy
MicpOworCitkZWJ1ZygnJyk7CitkZWJ1ZygnLSBUZXN0cyBmb3IgcmVtb3ZpbmcvYWRkaW5nIGVs
ZW1lbnRzJyk7Citjb250YWluZXIucmVtb3ZlQ2hpbGQoYmVmb3JlMik7Citvd25lci5yZW1vdmVD
aGlsZChpbm5lcjIpOworY29udGFpbmVyLnJlbW92ZUNoaWxkKGFmdGVyMSk7CitzaG91bGRCZSgn
b3duZXIuZWxlbWVudHMubGVuZ3RoJywgJzMnKTsKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50c1sw
XScsICdiZWZvcmUxJyk7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHNbMV0nLCAnaW5uZXIxJyk7
CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHNbMl0nLCAnYWZ0ZXIyJyk7Citjb250YWluZXIuaW5z
ZXJ0QmVmb3JlKGJlZm9yZTIsIG93bmVyKTsKK293bmVyLmFwcGVuZENoaWxkKGlubmVyMik7Citj
b250YWluZXIuaW5zZXJ0QmVmb3JlKGFmdGVyMSwgYWZ0ZXIyKTsKK3Nob3VsZEJlKCdvd25lci5l
bGVtZW50cy5sZW5ndGgnLCAnNicpOworc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzWzBdJywgJ2Jl
Zm9yZTEnKTsKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50c1sxXScsICdiZWZvcmUyJyk7CitzaG91
bGRCZSgnb3duZXIuZWxlbWVudHNbMl0nLCAnaW5uZXIxJyk7CitzaG91bGRCZSgnb3duZXIuZWxl
bWVudHNbM10nLCAnaW5uZXIyJyk7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHNbNF0nLCAnYWZ0
ZXIxJyk7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHNbNV0nLCAnYWZ0ZXIyJyk7CisKK3ZhciBz
dWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9m
b3Jtcy9zY3JpcHQtdGVzdHMvZm9ybS1hdHRyaWJ1dGUtZWxlbWVudHMuanMgYi9MYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL3NjcmlwdC10ZXN0cy9mb3JtLWF0dHJpYnV0ZS1lbGVtZW50cy5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42YjkzOTNhNTM1N2E5M2E0OTk0NTM4NzUzMTk4MTc3NDAxOTkxMDUxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zY3JpcHQtdGVzdHMvZm9ybS1hdHRy
aWJ1dGUtZWxlbWVudHMuanMKQEAgLTAsMCArMSw0MiBAQAorZGVzY3JpcHRpb24oIlRoaXMgdGVz
dCBjaGVja3MgYSBmb3JtIGVsZW1lbnQgY2FuIGhhbmRsZSBlbGVtZW50cyBvZiB3aGljaCBmb3Jt
IGF0dHJpYnV0ZSBwb2ludHMgdGhlIGZvcm0gZWxlbWVudCBldmVuIGlmIGVsZW1lbnRzIGFyZSBv
dXRzaWRlIG9mIHRoZSBmb3JtLiIpOworCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKwordmFyIGNvbnRh
aW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworZG9jdW1lbnQuYm9keS5hcHBl
bmRDaGlsZChjb250YWluZXIpOworCitjb250YWluZXIuaW5uZXJIVE1MID0gJzxpbnB1dCB0eXBl
PSJoaWRkZW4iIG5hbWU9ImtleTEiIHZhbHVlPSJ2YWx1ZTEiIGlkPSJvdXRlci1iZWZvcmUiIGZv
cm09Im93bmVyIiAvPicgKworICAgICc8Zm9ybSBpZD0ib3duZXIiIGFjdGlvbj0iIiBtZXRob2Q9
IkdFVCI+JyArCisgICAgJyAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJrZXkyIiB2YWx1
ZT0idmFsdWUyIiBpZD0iaW5uZXIiIGZvcm09Im93bmVyIiAvPicgKworICAgICc8L2Zvcm0+JyAr
CisgICAgJzxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InN1Ym1pdHRlZCIgdmFsdWU9InRydWUi
IGlkPSJvdXRlci1hZnRlciIgZm9ybT0ib3duZXIiPic7CisKK3ZhciBvd25lciA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdvd25lcicpOwordmFyIG91dGVyQmVmb3JlID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ291dGVyLWJlZm9yZScpOwordmFyIGlubmVyID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2lubmVyJyk7Cit2YXIgb3V0ZXJBZnRlciA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdvdXRlci1hZnRlcicpOwordmFyIHF1ZXJ5ID0gd2luZG93LmxvY2F0aW9uLnNlYXJjaDsK
KworaWYgKHF1ZXJ5LmluZGV4T2YoJ3N1Ym1pdHRlZD10cnVlJykgPT0gLTEpIHsKKyAgICBvd25l
ci5zdWJtaXQoKTsKK30gZWxzZSB7CisgICAgZGVidWcoJy0gRW5zdXJlcyB0aGF0ICJlbGVtZW50
cyIgYXR0cmlidXRlIG9mIHRoZSBmb3JtIGNvbnRhaW5zIGVsZW1lbnRzIHdoaWNoIGFyZSBvdXRz
aWRlIG9mIHRoZSBmb3JtLicpOworCisgICAgc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzLmxlbmd0
aCcsICczJyk7CisgICAgc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzWzBdJywgJ291dGVyQmVmb3Jl
Jyk7CisgICAgc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzWzFdJywgJ2lubmVyJyk7CisgICAgc2hv
dWxkQmUoJ293bmVyLmVsZW1lbnRzWzJdJywgJ291dGVyQWZ0ZXInKTsKKworICAgIGRlYnVnKCcn
KTsKKyAgICBkZWJ1ZygnLSBFbnN1cmVzIHRoYXQgZm9ybSBzdWJtaXNzaW9uIGNvbnRhaW5zIG5h
bWUgYW5kIHZhbHVlIHBhaXJzIGZvciBzdWNoIGVsZW1lbnRzLicpOworICAgIHZhciBwYWlycyA9
IHF1ZXJ5LnN1YnN0cigxKS5zcGxpdCgnJicpOworICAgIHNob3VsZEJlKCdwYWlycy5sZW5ndGgn
LCAnMycpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygncGFpcnNbMF0nLCAna2V5MT12YWx1
ZTEnKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3BhaXJzWzFdJywgJ2tleTI9dmFsdWUy
Jyk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdwYWlyc1syXScsICdzdWJtaXR0ZWQ9dHJ1
ZScpOworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNl
ZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NjcmlwdC10ZXN0
cy9mb3JtLWF0dHJpYnV0ZS5qcyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2NyaXB0LXRlc3Rz
L2Zvcm0tYXR0cmlidXRlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE3YjBjMDY5YzA4OWQzMTQ5MTc1ODM5NTAz
MTcxMjQ3MDc1Njc0MzEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L3NjcmlwdC10ZXN0cy9mb3JtLWF0dHJpYnV0ZS5qcwpAQCAtMCwwICsxLDgxIEBACitkZXNjcmlw
dGlvbigiVGhpcyB0ZXN0IGNoZWNrcyB0aGUgZm9ybSBhdHRyaWJ1dGUgb2YgdGhlIGZvcm0tYXNz
b2NpYXRlZCBlbGVtZW50cy4iKTsKKwordmFyIGNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ2RpdicpOworZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChjb250YWluZXIpOworCitk
ZWJ1ZygnLSBDaGVja3MgdGhlIGV4aXN0ZW5jZSBvZiB0aGUgZm9ybSBhdHRyaWJ1dGUgZm9yIGVh
Y2ggZm9ybS1hc3NvY2lhdGVkIGVsZW1lbnRzLicpOworZGVidWcoJ0ZJWE1FOiAmbHQ7bGFiZWwm
Z3Q7IGFuZCAmbHQ7b2JqZWN0Jmd0OyBkb25cJ3Qgc3VwcG9ydCB0aGUgZm9ybSBhdHRyaWJ1dGUg
Zm9yIG5vdy4nKTsKK2NvbnRhaW5lci5pbm5lckhUTUwgPSAnPGZvcm0gaWQ9Im93bmVyIj48L2Zv
cm0+JyArCisgICAgJzxidXR0b24gbmFtZT0idmljdGltIiBmb3JtPSJvd25lciIgLz4nICsKKyAg
ICAnPGZpZWxkc2V0IG5hbWU9InZpY3RpbSIgZm9ybT0ib3duZXIiIC8+JyArCisgICAgJzxpbnB1
dCBuYW1lPSJ2aWN0aW0iIGZvcm09Im93bmVyIiAvPicgKworICAgICc8a2V5Z2VuIG5hbWU9InZp
Y3RpbSIgZm9ybT0ib3duZXIiIC8+JyArCisgICAgJzxtZXRlciBuYW1lPSJ2aWN0aW0iIGZvcm09
Im93bmVyIiAvPicgKworICAgICc8b3V0cHV0IG5hbWU9InZpY3RpbSIgZm9ybT0ib3duZXIiIC8+
JyArCisgICAgJzxwcm9ncmVzcyBuYW1lPSJ2aWN0aW0iIGZvcm09Im93bmVyIiAvPicgKworICAg
ICc8c2VsZWN0IG5hbWU9InZpY3RpbSIgZm9ybT0ib3duZXIiIC8+JyArCisgICAgJzx0ZXh0YXJl
YSBuYW1lPSJ2aWN0aW0iIGZvcm09Im93bmVyIiAvPic7Cit2YXIgb3duZXIgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnb3duZXInKTsKK3Nob3VsZEJlKCdkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgiYnV0dG9uIilbMF0uZm9ybScsICdvd25lcicpOworc2hvdWxkQmUoJ2RvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJmaWVsZHNldCIpWzBdLmZvcm0nLCAnb3duZXInKTsKK3No
b3VsZEJlKCdkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW5wdXQiKVswXS5mb3JtJywg
J293bmVyJyk7CitzaG91bGRCZSgnZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImtleWdl
biIpWzBdLmZvcm0nLCAnb3duZXInKTsKK3Nob3VsZEJlKCdkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgibWV0ZXIiKVswXS5mb3JtJywgJ293bmVyJyk7CitzaG91bGRCZSgnZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoIm91dHB1dCIpWzBdLmZvcm0nLCAnb3duZXInKTsKK3Nob3Vs
ZEJlKCdkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgicHJvZ3Jlc3MiKVswXS5mb3JtJywg
J293bmVyJyk7CitzaG91bGRCZSgnZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNlbGVj
dCIpWzBdLmZvcm0nLCAnb3duZXInKTsKK3Nob3VsZEJlKCdkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgidGV4dGFyZWEiKVswXS5mb3JtJywgJ293bmVyJyk7CisKK2RlYnVnKCcnKTsKK2Rl
YnVnKCctIEVuc3VyZXMgdGhhdCB0aGUgZm9ybSBhdHRyaWJ1dGUgcG9pbnRzIHRoZSBmb3JtIG93
bmVyIGV2ZW4gaWYgdGhlIGVsZW1lbnQgaXMgd2l0aGluIGFub3RoZXIgZm9ybSBlbGVtZW50Licp
OworY29udGFpbmVyLmlubmVySFRNTCA9ICc8Zm9ybSBpZD0ib3duZXIiPjwvZm9ybT4nICsKKyAg
ICAnPGZvcm0gaWQ9InNob3VsZE5vdEJlT3duZXIiPicgKworICAgICcgICAgPGlucHV0IGlkPSJp
bnB1dEVsZW1lbnQiIG5hbWU9InZpY3RpbSIgZm9ybT0ib3duZXIiIC8+JyArCisgICAgJzwvZm9y
bT4nOworb3duZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnb3duZXInKTsKK3ZhciBpbnB1
dEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW5wdXRFbGVtZW50Jyk7CitzaG91
bGRCZSgnaW5wdXRFbGVtZW50LmZvcm0nLCAnb3duZXInKTsKKworZGVidWcoJycpOworZGVidWco
Jy0gRW5zdXJlcyB3aGV0aGVyIHRoZSBmb3JtIG93bmVyIGlzIHNldCBjb3JyZWN0bHkgd2hlbiB0
aGUgdmFsdWUgb2YgZm9ybSBhdHRyaWJ1dGUgb2YgYSBmb3JtLWFzc29jaWF0ZWQgZWxlbWVudCBj
aGFuZ2VkLicpOworY29udGFpbmVyLmlubmVySFRNTCA9ICc8Zm9ybSBpZD0iZm9ybTEiPjwvZm9y
bT4nICsKKyAgICAnPGZvcm0gaWQ9ImZvcm0yIj48L2Zvcm0+JyArCisgICAgJzxpbnB1dCBpZD0i
aW5wdXRFbGVtZW50IiBuYW1lPSJ2aWN0aW0iIGZvcm09ImZvcm0xIiAvPic7Cit2YXIgZm9ybTEg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZm9ybTEnKTsKK3ZhciBmb3JtMiA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdmb3JtMicpOworaW5wdXRFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2lucHV0RWxlbWVudCcpOworc2hvdWxkQmUoJ2lucHV0RWxlbWVudC5mb3JtJywg
J2Zvcm0xJyk7CitpbnB1dEVsZW1lbnQuYXR0cmlidXRlc1snZm9ybSddLnZhbHVlID0gJ2Zvcm0y
JzsKK3Nob3VsZEJlKCdpbnB1dEVsZW1lbnQuZm9ybScsICdmb3JtMicpOworCitkZWJ1ZygnJyk7
CitkZWJ1ZygnLSBFbnN1cmVzIHdoZXRoZXIgdGhlIGZvcm0gb3duZXIgaXMgc2V0IGNvcnJlY3Rs
eSB3aGVuIHRoZSB2YWx1ZSBvZiBmb3JtIGF0dHJpYnV0ZSBpcyBhZGRlZC9yZW1vdmVkLicpOwor
Y29udGFpbmVyLmlubmVySFRNTCA9ICc8Zm9ybSBpZD0ib3duZXIiIG5hbWU9ImZpcnN0T3duZXIi
PjwvZm9ybT4nICsKKyAgICAnPGlucHV0IGlkPSJpbnB1dEVsZW1lbnQiIG5hbWU9InZpY3RpbSIg
Lz4nOworb3duZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnb3duZXInKTsKK2lucHV0RWxl
bWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbnB1dEVsZW1lbnQnKTsKK3Nob3VsZEJl
KCdpbnB1dEVsZW1lbnQuZm9ybScsICdudWxsJyk7Cit2YXIgZm9ybUF0dHJpYnV0ZSA9IGRvY3Vt
ZW50LmNyZWF0ZUF0dHJpYnV0ZSgnZm9ybScpOworaW5wdXRFbGVtZW50LnNldEF0dHJpYnV0ZSgn
Zm9ybScsICdvd25lcicpOworc2hvdWxkQmUoJ2lucHV0RWxlbWVudC5mb3JtJywgJ293bmVyJyk7
CitpbnB1dEVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdmb3JtJyk7CitzaG91bGRCZSgnaW5wdXRF
bGVtZW50LmZvcm0nLCAnbnVsbCcpOworCitkZWJ1ZygnJyk7CitkZWJ1ZygnLSBFbnN1cmVzIHdo
ZXRoZXIgdGhlIGZvcm0gb3duZXIgaXMgc2V0IGNvcnJlY3RseSB3aGVuIHRoZSBmb3JtIG93bmVy
IGlzIGFkZGVkL3JlbW92ZWQuJyk7Citjb250YWluZXIuaW5uZXJIVE1MID0gJzxmb3JtIGlkPSJv
d25lciIgbmFtZT0iZmlyc3RPd25lciI+PC9mb3JtPicgKworICAgICc8Zm9ybSBpZD0ib3duZXIi
IG5hbWU9InNlY29uZE93bmVyIj48L2Zvcm0+JyArCisgICAgJzxpbnB1dCBpZD0iaW5wdXRFbGVt
ZW50IiBuYW1lPSJ2aWN0aW0iIGZvcm09Im93bmVyIiAvPic7Citvd25lciA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdvd25lcicpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdvd25lci5uYW1l
JywgJ2ZpcnN0T3duZXInKTsKK2lucHV0RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdpbnB1dEVsZW1lbnQnKTsKK2NvbnRhaW5lci5yZW1vdmVDaGlsZChvd25lcik7Citvd25lciA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdvd25lcicpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCdvd25lci5uYW1lJywgJ3NlY29uZE93bmVyJyk7CitzaG91bGRCZSgnaW5wdXRFbGVtZW50LmZv
cm0nLCAnb3duZXInKTsKK2NvbnRhaW5lci5yZW1vdmVDaGlsZChvd25lcik7CitzaG91bGRCZSgn
aW5wdXRFbGVtZW50LmZvcm0nLCAnbnVsbCcpOworY29udGFpbmVyLmFwcGVuZENoaWxkKG93bmVy
KTsKK3Nob3VsZEJlKCdpbnB1dEVsZW1lbnQuZm9ybScsICdvd25lcicpOworCit2YXIgc3VjY2Vz
c2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKaW5kZXggOGI1NDlhNWRiOGYzODQ0ZTMwZGEzOGYwYjZkNWYzYWUzNzVh
NWJlOS4uNzY5Zjc3ZGFhYjNiNGM4YWZhYzAyN2Q0YWQyZTVmYzUzOTJkYzdiYSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0
OCBAQAorMjAxMC0xMS0wOSAgS2VuaWNoaSBJc2hpYmFzaGkgIDxiYXNoaUBnb29nbGUuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtIVE1MNV0g
ImZvcm0iIGF0dHJpYnV0ZSBzdXBwb3J0IGZvciBmb3JtIGNvbnRyb2wgZWxlbWVudHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3ODEzCisKKyAgICAg
ICAgQWRkcyBhIGxpc3Qgb2YgZm9ybS1hc3NvY2lhdGVkIGVsZW1lbnRzIHdpdGggZm9ybSBhdHRy
aWJ1dGUgaW50bworICAgICAgICB0aGUgRG9jdW1lbnQgY2xhc3MgdG8gc3VwcG9ydCBmb3JtIGF0
dHJpYnV0ZSByZWFzb25hYmx5LgorCisgICAgICAgIFRlc3RzOiBmYXN0L2Zvcm1zL2Zvcm0tYXR0
cmlidXRlLWVsZW1lbnRzLW9yZGVyLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZm9ybXMvZm9y
bS1hdHRyaWJ1dGUtZWxlbWVudHMuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9mb3Jtcy9mb3Jt
LWF0dHJpYnV0ZS5odG1sCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6OnJlZ2lzdGVyRm9ybUVsZW1lbnRXaXRoRm9ybUF0dHJpYnV0ZSk6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnVucmVnaXN0ZXJGb3JtRWxlbWVu
dFdpdGhGb3JtQXR0cmlidXRlKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
cmVzZXRGb3JtRWxlbWVudHNPd25lcik6IEFkZGVkLgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5o
OiBBZGRlZCBtX2Zvcm1FbGVtZW50c1dpdGhGb3JtQXR0cmlidXRlLCB3aGljaCBpcworICAgICAg
ICB0aGUgbGlzdCBmb3IgZWxlbWVudHMgd2hpY2ggaGF2ZSBmb3JtIGF0dHJpYnV0ZS4KKyAgICAg
ICAgKiBodG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbjogQWRkZWQgZm9ybSBhdHRyaWJ1dGUuCisg
ICAgICAgICogaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6Omluc2VydGVkSW50b1RyZWUpOiBNb2RpZmllZCB0
byBzZXQKKyAgICAgICAgdGhlIGZvcm0gb3duZXIgaWYgdGhlIGVsZW1lbnQgaGFzIGZvcm0gYXR0
cmlidXRlLgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6cmVtb3Zl
ZEZyb21UcmVlKTogTW9kaWZpZWQgdG8gcmVtb3ZlCisgICAgICAgIHRoZSBlbGVtZW50IGZyb20g
dGhlIGxpc3QgaWYgdGhlIGVsZW1lbnQgaGFzIGZvcm0gYXR0cmlidXRlLgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6cmVzZXRGb3JtT3duZXIpOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQp
OiBBZGRlZC4KKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaDoKKyAgICAg
ICAgKiBodG1sL0hUTUxGb3JtRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9y
bUVsZW1lbnQ6OkhUTUxGb3JtRWxlbWVudCk6IEFkZGVkIGluaXRpYWxpemF0aW9uIGNvZGUKKyAg
ICAgICAgZm9yIG5ld2x5IGFkZGVkIHZhcmlhYmxlcy4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxG
b3JtRWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQpOiBNb2RpZmllZCB0byBoYW5kbGUKKyAg
ICAgICAgcmVzZXR0aW5nIGZvcm0gb3duZXIgb2YgZm9ybS1hc3NvY2lhdGVkIGVsZW1lbnRzLgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50OjpyZW1vdmVkRnJvbURvY3VtZW50KTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjppc0Zvcm1Bc3NvY2lhdGVkTm9kZSk6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50Ojpmb3JtRWxlbWVudEluZGV4V2l0aEZv
cm1BdHRyaWJ1dGUpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtRWxlbWVudDo6
Zm9ybUVsZW1lbnRJbmRleCk6IE1vZGlmaWVkIHRvIGhhbmRsZSBlbGVtZW50cworICAgICAgICB3
aGljaCBoYXZlIGZvcm0gYXR0cmlidXRlLgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVt
ZW50OjpyZW1vdmVGb3JtRWxlbWVudCk6IERpdHRvLgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1F
bGVtZW50Lmg6IEFkZGVkIHRocmVlIHZhcmlhYmxlcyB0byBoYW5kbGUgZm9ybSBhdHRyaWJ1dGUu
CisgICAgICAgICogaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MT3V0cHV0RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOiBSZW1vdmVkICJGSVhN
RSIgY29tbWVudC4KKyAgICAgICAgKiBodG1sL0hUTUxPdXRwdXRFbGVtZW50Lmg6IFJlbW92ZWQg
c2V0Rm9ybSgpLgorCiAyMDEwLTExLTA5ICBDaHJpcyBSb2dlcnMgIDxjcm9nZXJzQGdvb2dsZS5j
b20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSdXNzZWxsLgpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4
IDMxZDdkMWY2OWYwYmFmMDJhNzM2ZjVmMzJjYTExOTNlNmYzNjQ4YWMuLjQ5NzQ1MWYwOWNkZmFh
NTVkMDRiMTMzMTA5NTNiYzM5NDlmZDM3NjAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcAorKysgYi9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTQzNzIsNiArNDM3Miwy
NSBAQCB2b2lkIERvY3VtZW50OjpzZXRJY29uVVJMKGNvbnN0IFN0cmluZyYgaWNvblVSTCwgY29u
c3QgU3RyaW5nJiB0eXBlKQogICAgICAgICBmLT5sb2FkZXIoKS0+c2V0SWNvblVSTChtX2ljb25V
UkwpOwogfQogCit2b2lkIERvY3VtZW50OjpyZWdpc3RlckZvcm1FbGVtZW50V2l0aEZvcm1BdHRy
aWJ1dGUoRWxlbWVudCogZSkKK3sKKyAgICBBU1NFUlQoZS0+ZmFzdEhhc0F0dHJpYnV0ZShmb3Jt
QXR0cikpOworICAgIG1fZm9ybUVsZW1lbnRzV2l0aEZvcm1BdHRyaWJ1dGUuYWRkKGUpOworfQor
Cit2b2lkIERvY3VtZW50Ojp1bnJlZ2lzdGVyRm9ybUVsZW1lbnRXaXRoRm9ybUF0dHJpYnV0ZShF
bGVtZW50KiBlKQoreworICAgIG1fZm9ybUVsZW1lbnRzV2l0aEZvcm1BdHRyaWJ1dGUucmVtb3Zl
KGUpOworfQorCit2b2lkIERvY3VtZW50OjpyZXNldEZvcm1FbGVtZW50c093bmVyKEhUTUxGb3Jt
RWxlbWVudCogZm9ybSkKK3sKKyAgICB0eXBlZGVmIEZvcm1FbGVtZW50TGlzdEhhc2hTZXQ6Oml0
ZXJhdG9yIEl0ZXJhdG9yOworICAgIEl0ZXJhdG9yIGVuZCA9IG1fZm9ybUVsZW1lbnRzV2l0aEZv
cm1BdHRyaWJ1dGUuZW5kKCk7CisgICAgZm9yIChJdGVyYXRvciBpdCA9IG1fZm9ybUVsZW1lbnRz
V2l0aEZvcm1BdHRyaWJ1dGUuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICBzdGF0
aWNfY2FzdDxIVE1MRm9ybUNvbnRyb2xFbGVtZW50Kj4oKml0KS0+cmVzZXRGb3JtT3duZXIoZm9y
bSk7Cit9CisKIHZvaWQgRG9jdW1lbnQ6OnNldFVzZVNlY3VyZUtleWJvYXJkRW50cnlXaGVuQWN0
aXZlKGJvb2wgdXNlc1NlY3VyZUtleWJvYXJkKQogewogICAgIGlmIChtX3VzZVNlY3VyZUtleWJv
YXJkRW50cnlXaGVuQWN0aXZlID09IHVzZXNTZWN1cmVLZXlib2FyZCkKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmggYi9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDhjYzYy
NzIyMDdhZTNiZjUyYWIyZDA0MzMxZWNmZjU3MGNlYjE5MzIuLjU1M2ZmZTExNDE5ZTE1YzU5YmFi
NDkyNTFjMGJmNzExMTk3NjZlZWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgK
KysrIGIvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtNDgzLDYgKzQ4MywxMCBAQCBwdWJsaWM6
CiAgICAgYm9vbCBoYXNTdGF0ZUZvck5ld0Zvcm1FbGVtZW50cygpIGNvbnN0OwogICAgIGJvb2wg
dGFrZVN0YXRlRm9yRm9ybUVsZW1lbnQoQXRvbWljU3RyaW5nSW1wbCogbmFtZSwgQXRvbWljU3Ry
aW5nSW1wbCogdHlwZSwgU3RyaW5nJiBzdGF0ZSk7CiAKKyAgICB2b2lkIHJlZ2lzdGVyRm9ybUVs
ZW1lbnRXaXRoRm9ybUF0dHJpYnV0ZShFbGVtZW50KiBlKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJG
b3JtRWxlbWVudFdpdGhGb3JtQXR0cmlidXRlKEVsZW1lbnQqIGUpOworICAgIHZvaWQgcmVzZXRG
b3JtRWxlbWVudHNPd25lcihIVE1MRm9ybUVsZW1lbnQqKTsKKwogICAgIEZyYW1lVmlldyogdmll
dygpIGNvbnN0OyAvLyBjYW4gYmUgTlVMTAogICAgIEZyYW1lKiBmcmFtZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZnJhbWU7IH0gLy8gY2FuIGJlIE5VTEwKICAgICBQYWdlKiBwYWdlKCkgY29uc3Q7IC8v
IGNhbiBiZSBOVUxMCkBAIC0xMTk3LDYgKzEyMDEsNyBAQCBwcml2YXRlOgogCiAgICAgdHlwZWRl
ZiBMaXN0SGFzaFNldDxFbGVtZW50KiwgNjQ+IEZvcm1FbGVtZW50TGlzdEhhc2hTZXQ7CiAgICAg
Rm9ybUVsZW1lbnRMaXN0SGFzaFNldCBtX2Zvcm1FbGVtZW50c1dpdGhTdGF0ZTsKKyAgICBGb3Jt
RWxlbWVudExpc3RIYXNoU2V0IG1fZm9ybUVsZW1lbnRzV2l0aEZvcm1BdHRyaWJ1dGU7CiAKICAg
ICB0eXBlZGVmIEhhc2hNYXA8Rm9ybUVsZW1lbnRLZXksIFZlY3RvcjxTdHJpbmc+LCBGb3JtRWxl
bWVudEtleUhhc2gsIEZvcm1FbGVtZW50S2V5SGFzaFRyYWl0cz4gRm9ybUVsZW1lbnRTdGF0ZU1h
cDsKICAgICBGb3JtRWxlbWVudFN0YXRlTWFwIG1fc3RhdGVGb3JOZXdGb3JtRWxlbWVudHM7CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluIGIvV2ViQ29yZS9o
dG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgppbmRleCBkOTc1OWZjZGIwYTgyNDAxYTNmMDVmNThh
YWFiZDlkYzIyYzY0NmZmLi4xODgxYjZmYmEyMjhkZThiNDJhNzkzN2UwZWNkMTI0ZTZlMzNkMTEw
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCisrKyBiL1dl
YkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4KQEAgLTk0LDYgKzk0LDcgQEAgZXhwYW5k
ZWQKIGZhY2UKIGZvY3VzZWQKIGZvcgorZm9ybQogZm9ybW5vdmFsaWRhdGUKIGZyYW1lCiBmcmFt
ZWJvcmRlcgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQu
Y3BwIGIvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCmluZGV4IDhmYTAw
MGYxYjFjN2ExNDA4MGY2N2U0Y2U5NzcyZjA1ZWQ4MmJiNDUuLjBhNWJkMjBmZTk5ZWE5MTBkOGMx
OWFhZTI3ZTEwMDg0Nzg5YThiZmQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNv
bnRyb2xFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVu
dC5jcHAKQEAgLTE1NCw2ICsxNTQsMTcgQEAgdm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojph
dHRhY2goKQogCiB2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6Omluc2VydGVkSW50b1RyZWUo
Ym9vbCBkZWVwKQogeworICAgIGlmIChmYXN0SGFzQXR0cmlidXRlKGZvcm1BdHRyKSkgeworICAg
ICAgICBkb2N1bWVudCgpLT5yZWdpc3RlckZvcm1FbGVtZW50V2l0aEZvcm1BdHRyaWJ1dGUodGhp
cyk7CisgICAgICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBkb2N1bWVudCgpLT5nZXRFbGVtZW50QnlJ
ZChmYXN0R2V0QXR0cmlidXRlKGZvcm1BdHRyKSk7CisgICAgICAgIGlmIChlbGVtZW50ICYmIGVs
ZW1lbnQtPmhhc1RhZ05hbWUoZm9ybVRhZykgJiYgbV9mb3JtICE9IGVsZW1lbnQpIHsKKyAgICAg
ICAgICAgIGlmIChtX2Zvcm0pCisgICAgICAgICAgICAgICAgbV9mb3JtLT5yZW1vdmVGb3JtRWxl
bWVudCh0aGlzKTsKKyAgICAgICAgICAgIG1fZm9ybSA9IHN0YXRpY19jYXN0PEhUTUxGb3JtRWxl
bWVudCo+KGVsZW1lbnQpOworICAgICAgICAgICAgbV9mb3JtLT5yZWdpc3RlckZvcm1FbGVtZW50
KHRoaXMpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQogICAgIGlmICgh
bV9mb3JtKSB7CiAgICAgICAgIC8vIFRoaXMgaGFuZGxlcyB0aGUgY2FzZSBvZiBhIG5ldyBmb3Jt
IGVsZW1lbnQgYmVpbmcgY3JlYXRlZCBieQogICAgICAgICAvLyBKYXZhU2NyaXB0IGFuZCBpbnNl
cnRlZCBpbnNpZGUgYSBmb3JtLiAgSW4gdGhlIGNhc2Ugb2YgdGhlIHBhcnNlcgpAQCAtMTc5LDYg
KzE5MCw5IEBAIHN0YXRpYyBpbmxpbmUgTm9kZSogZmluZFJvb3QoTm9kZSogbikKIAogdm9pZCBI
VE1MRm9ybUNvbnRyb2xFbGVtZW50OjpyZW1vdmVkRnJvbVRyZWUoYm9vbCBkZWVwKQogeworICAg
IGlmIChmYXN0SGFzQXR0cmlidXRlKGZvcm1BdHRyKSkKKyAgICAgICAgZG9jdW1lbnQoKS0+dW5y
ZWdpc3RlckZvcm1FbGVtZW50V2l0aEZvcm1BdHRyaWJ1dGUodGhpcyk7CisKICAgICAvLyBJZiB0
aGUgZm9ybSBhbmQgZWxlbWVudCBhcmUgYm90aCBpbiB0aGUgc2FtZSB0cmVlLCBwcmVzZXJ2ZSB0
aGUgY29ubmVjdGlvbiB0byB0aGUgZm9ybS4KICAgICAvLyBPdGhlcndpc2UsIG51bGwgb3V0IG91
ciBmb3JtIGFuZCByZW1vdmUgb3Vyc2VsdmVzIGZyb20gdGhlIGZvcm0ncyBsaXN0IG9mIGVsZW1l
bnRzLgogICAgIGlmIChtX2Zvcm0gJiYgZmluZFJvb3QodGhpcykgIT0gZmluZFJvb3QobV9mb3Jt
KSkgewpAQCAtNDMxLDYgKzQ0NSw1MCBAQCB2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnJl
bW92ZUZyb21Gb3JtKCkKICAgICBtX2Zvcm0gPSAwOwogfQogCit2b2lkIEhUTUxGb3JtQ29udHJv
bEVsZW1lbnQ6OnJlc2V0Rm9ybU93bmVyKEhUTUxGb3JtRWxlbWVudCogZm9ybSkKK3sKKyAgICBp
ZiAobV9mb3JtKSB7CisgICAgICAgIGlmICghZmFzdEhhc0F0dHJpYnV0ZShmb3JtQXR0cikpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fZm9ybS0+cmVtb3ZlRm9ybUVsZW1lbnQodGhp
cyk7CisgICAgfQorICAgIG1fZm9ybSA9IDA7CisgICAgaWYgKGZhc3RIYXNBdHRyaWJ1dGUoZm9y
bUF0dHIpKSB7CisgICAgICAgIC8vIFRoZSBIVE1MNSBzcGVjIHNheXMgdGhhdCB0aGUgZWxlbWVu
dCBzaG91bGQgYmUgYXNzb2NpYXRlZCB3aXRoCisgICAgICAgIC8vIHRoZSBmaXJzdCBlbGVtZW50
IGluIHRoZSBkb2N1bWVudCB0byBoYXZlIGFuIElEIHRoYXQgZXF1YWwgdG8KKyAgICAgICAgLy8g
dGhlIHZhbHVlIG9mIGZvcm0gYXR0cmlidXRlLCBzbyB3ZSBwdXQgdGhlIHJlc3VsdCBvZgorICAg
ICAgICAvLyBkb2N1bWVudCgpLT5nZXRFbGVtZW50QnlJZCgpIG92ZXIgdGhlIGdpdmVuIGVsZW1l
bnQuCisgICAgICAgIEVsZW1lbnQqIGZpcnN0RWxlbWVudCA9IGRvY3VtZW50KCktPmdldEVsZW1l
bnRCeUlkKGZhc3RHZXRBdHRyaWJ1dGUoZm9ybUF0dHIpKTsKKyAgICAgICAgaWYgKGZpcnN0RWxl
bWVudCAmJiBmaXJzdEVsZW1lbnQtPmhhc1RhZ05hbWUoZm9ybVRhZykpCisgICAgICAgICAgICBt
X2Zvcm0gPSBzdGF0aWNfY2FzdDxIVE1MRm9ybUVsZW1lbnQqPihmaXJzdEVsZW1lbnQpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICBtX2Zvcm0gPSBmb3JtOworICAgIH0gZWxzZQorICAgICAg
ICBtX2Zvcm0gPSBmaW5kRm9ybUFuY2VzdG9yKCk7CisgICAgaWYgKG1fZm9ybSkKKyAgICAgICAg
bV9mb3JtLT5yZWdpc3RlckZvcm1FbGVtZW50KHRoaXMpOworICAgIGVsc2UKKyAgICAgICAgZG9j
dW1lbnQoKS0+Y2hlY2tlZFJhZGlvQnV0dG9ucygpLmFkZEJ1dHRvbih0aGlzKTsKK30KKwordm9p
ZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKEF0dHJpYnV0ZSogYXR0
ciwgYm9vbCBwcmVzZXJ2ZURlY2xzKQoreworICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gZm9ybUF0
dHIpIHsKKyAgICAgICAgaWYgKCFmYXN0SGFzQXR0cmlidXRlKGZvcm1BdHRyKSkgeworICAgICAg
ICAgICAgLy8gVGhlIGZvcm0gYXR0cmlidXRlIHJlbW92ZWQuIFdlIG5lZWQgdG8gcmVzZXQgZm9y
bSBvd25lciBoZXJlLgorICAgICAgICAgICAgaWYgKG1fZm9ybSkKKyAgICAgICAgICAgICAgICBt
X2Zvcm0tPnJlbW92ZUZvcm1FbGVtZW50KHRoaXMpOworICAgICAgICAgICAgbV9mb3JtID0gZmlu
ZEZvcm1BbmNlc3RvcigpOworICAgICAgICAgICAgaWYgKG1fZm9ybSkKKyAgICAgICAgICAgICAg
ICBtX2Zvcm0tPnJlZ2lzdGVyRm9ybUVsZW1lbnQodGhpcyk7CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgZG9jdW1lbnQoKS0+Y2hlY2tlZFJhZGlvQnV0dG9ucygpLmFkZEJ1dHRv
bih0aGlzKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICByZXNldEZvcm1Pd25lcigwKTsK
KyAgICB9CisgICAgSFRNTEVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQoYXR0ciwgcHJlc2VydmVE
ZWNscyk7Cit9CisKIGJvb2wgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6aXNMYWJlbGFibGUoKSBj
b25zdAogewogICAgIC8vIEZJWE1FOiBBZGQgbWV0ZXJUYWcgYW5kIG91dHB1dFRhZyB0byB0aGUg
bGlzdCBvbmNlIHdlIHN1cHBvcnQgdGhlbS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1M
Rm9ybUNvbnRyb2xFbGVtZW50LmggYi9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVu
dC5oCmluZGV4IDE5NjBmYzM0ZjI4OGRhMzU2MmVlNmNkMTc5NGFiMzkwN2JlNTkzYTMuLjhjOThk
OTExNzAxNDAyNDA4Yjc4ZTY4YTAyMzAyYWQ5Y2QzZjE0MzYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
aHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxGb3Jt
Q29udHJvbEVsZW1lbnQuaApAQCAtOTksNiArOTksOSBAQCBwdWJsaWM6CiAgICAgCiAgICAgYm9v
bCByZWFkT25seSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVhZE9ubHk7IH0KIAorICAgIHZvaWQgcmVz
ZXRGb3JtT3duZXIoSFRNTEZvcm1FbGVtZW50Kik7CisgICAgdmlydHVhbCB2b2lkIGF0dHJpYnV0
ZUNoYW5nZWQoQXR0cmlidXRlKiwgYm9vbCBwcmVzZXJ2ZURlY2xzID0gZmFsc2UpOworCiBwcm90
ZWN0ZWQ6CiAgICAgSFRNTEZvcm1Db250cm9sRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdOYW1lLCBEb2N1bWVudCosIEhUTUxGb3JtRWxlbWVudCopOwogCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1l
bnQuY3BwCmluZGV4IGRhMzg4ZDVjNjUxYjljMzA5M2ZkOTg0MWQyNTI4NzFkMzk2MzU3ZjIuLjUw
ODIxMGFkNzAzNTUyMWQ2NmEwNjMyYmY3MWY0ZGQ2ZTI0YmY3NzIgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVs
ZW1lbnQuY3BwCkBAIC02NSw2ICs2NSw4IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAK
IEhUTUxGb3JtRWxlbWVudDo6SFRNTEZvcm1FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRh
Z05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRv
Y3VtZW50KQorICAgICwgbV9hc3NvY2lhdGVkRWxlbWVudHNCZWZvcmVJbmRleCgwKQorICAgICwg
bV9hc3NvY2lhdGVkRWxlbWVudHNBZnRlckluZGV4KDApCiAgICAgLCBtX3dhc1VzZXJTdWJtaXR0
ZWQoZmFsc2UpCiAgICAgLCBtX2F1dG9jb21wbGV0ZSh0cnVlKQogICAgICwgbV9pbnN1Ym1pdChm
YWxzZSkKQEAgLTEzMiw2ICsxMzQsOSBAQCB2b2lkIEhUTUxGb3JtRWxlbWVudDo6aW5zZXJ0ZWRJ
bnRvRG9jdW1lbnQoKQogICAgIGlmIChkb2N1bWVudCgpLT5pc0hUTUxEb2N1bWVudCgpKQogICAg
ICAgICBzdGF0aWNfY2FzdDxIVE1MRG9jdW1lbnQqPihkb2N1bWVudCgpKS0+YWRkTmFtZWRJdGVt
KG1fbmFtZSk7CiAKKyAgICBpZiAoaGFzSUQoKSkKKyAgICAgICAgZG9jdW1lbnQoKS0+cmVzZXRG
b3JtRWxlbWVudHNPd25lcih0aGlzKTsKKwogICAgIEhUTUxFbGVtZW50OjppbnNlcnRlZEludG9E
b2N1bWVudCgpOwogfQogCkBAIC0xNDEsNiArMTQ2LDkgQEAgdm9pZCBIVE1MRm9ybUVsZW1lbnQ6
OnJlbW92ZWRGcm9tRG9jdW1lbnQoKQogICAgICAgICBzdGF0aWNfY2FzdDxIVE1MRG9jdW1lbnQq
Pihkb2N1bWVudCgpKS0+cmVtb3ZlTmFtZWRJdGVtKG1fbmFtZSk7CiAKICAgICBIVE1MRWxlbWVu
dDo6cmVtb3ZlZEZyb21Eb2N1bWVudCgpOworCisgICAgaWYgKGhhc0lEKCkpCisgICAgICAgIGRv
Y3VtZW50KCktPnJlc2V0Rm9ybUVsZW1lbnRzT3duZXIoMCk7CiB9CiAKIHZvaWQgSFRNTEZvcm1F
bGVtZW50OjpoYW5kbGVMb2NhbEV2ZW50cyhFdmVudCogZXZlbnQpCkBAIC0zODgsMjQgKzM5Niw2
NCBAQCB0ZW1wbGF0ZTxjbGFzcyBULCBzaXplX3Qgbj4gc3RhdGljIHZvaWQgcmVtb3ZlRnJvbVZl
Y3RvcihWZWN0b3I8VCosIG4+ICYgdmVjLCBUKgogICAgICAgICB9CiB9CiAKK3N0YXRpYyBib29s
IGlzRm9ybUFzc29jaWF0ZWROb2RlKEhUTUxGb3JtRWxlbWVudCogb3duZXIsIE5vZGUqIG5vZGUp
Cit7CisgICAgcmV0dXJuIG5vZGUtPmlzSFRNTEVsZW1lbnQoKQorICAgICAgICAmJiBzdGF0aWNf
Y2FzdDxFbGVtZW50Kj4obm9kZSktPmlzRm9ybUNvbnRyb2xFbGVtZW50KCkKKyAgICAgICAgJiYg
c3RhdGljX2Nhc3Q8SFRNTEZvcm1Db250cm9sRWxlbWVudCo+KG5vZGUpLT5mb3JtKCkgPT0gb3du
ZXI7Cit9CisKK3Vuc2lnbmVkIEhUTUxGb3JtRWxlbWVudDo6Zm9ybUVsZW1lbnRJbmRleFdpdGhG
b3JtQXR0cmlidXRlKEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgTm9k
ZSogbm9kZTsKKyAgICB1bnNpZ25lZCBpbmRleCA9IDA7CisgICAgYm9vbCBpc0luRm9ybSA9IGZh
bHNlOworICAgIC8vIFNpbmNlIHRoZSBlbGVtZW50IHdoaWNoIGhhcyBmb3JtIGF0dHJpYnV0ZSBj
b3VsZCBhcHBlYXIgYW55d2hlcmUgb24gdGhlIGRvY3VtZW50LAorICAgIC8vIHdlIG5lZWQgdG8g
d2FsayB0aGUgZW50aXJlIHRyZWUgdG8gZmluZCB0aGUgcmlnaHQgcG9zaXRpb24gdG8gYmUgaW5z
ZXJ0ZWQuCisgICAgZm9yIChub2RlID0gZG9jdW1lbnQoKS0+dHJhdmVyc2VOZXh0Tm9kZSh0aGlz
KTsgbm9kZTsgbm9kZSA9IG5vZGUtPnRyYXZlcnNlTmV4dE5vZGUodGhpcykpIHsKKyAgICAgICAg
aWYgKG5vZGUgPT0gdGhpcykKKyAgICAgICAgICAgIGlzSW5Gb3JtID0gdHJ1ZTsKKyAgICAgICAg
aWYgKG5vZGUgPT0gZWxlbWVudCkgeworICAgICAgICAgICAgaWYgKCFpc0luRm9ybSkKKyAgICAg
ICAgICAgICAgICArK21fYXNzb2NpYXRlZEVsZW1lbnRzQmVmb3JlSW5kZXg7CisgICAgICAgICAg
ICArK21fYXNzb2NpYXRlZEVsZW1lbnRzQWZ0ZXJJbmRleDsKKyAgICAgICAgICAgIHJldHVybiBp
bmRleDsKKyAgICAgICAgfQorICAgICAgICBpZiAoaXNGb3JtQXNzb2NpYXRlZE5vZGUodGhpcywg
bm9kZSkpCisgICAgICAgICAgICArK2luZGV4OworICAgIH0KKyAgICBmb3IgKG5vZGUgPSB0cmF2
ZXJzZU5leHRTaWJsaW5nKCk7IG5vZGU7IG5vZGUgPSBub2RlLT50cmF2ZXJzZU5leHROb2RlKCkp
IHsKKyAgICAgICAgaWYgKG5vZGUgPT0gZWxlbWVudCkKKyAgICAgICAgICAgIHJldHVybiBpbmRl
eDsKKyAgICAgICAgaWYgKGlzRm9ybUFzc29jaWF0ZWROb2RlKHRoaXMsIG5vZGUpKQorICAgICAg
ICAgICAgKytpbmRleDsKKyAgICB9CisgICAgcmV0dXJuIG1fYXNzb2NpYXRlZEVsZW1lbnRzLnNp
emUoKTsKK30KKwogdW5zaWduZWQgSFRNTEZvcm1FbGVtZW50Ojpmb3JtRWxlbWVudEluZGV4KEhU
TUxGb3JtQ29udHJvbEVsZW1lbnQqIGUpCiB7CisgICAgLy8gVHJlYXRzIHNlcGFyYXRlbHkgdGhl
IGNhc2Ugd2hlcmUgdGhpcyBlbGVtZW50IGhhcyB0aGUgZm9ybSBhdHRyaWJ1dGUKKyAgICAvLyBm
b3IgcGVyZm9ybWFuY2UgY29uc2lkZXJhdGlvbi4KKyAgICBpZiAoZS0+ZmFzdEhhc0F0dHJpYnV0
ZShmb3JtQXR0cikpCisgICAgICAgIHJldHVybiBmb3JtRWxlbWVudEluZGV4V2l0aEZvcm1BdHRy
aWJ1dGUoZSk7CisKICAgICAvLyBDaGVjayBmb3IgdGhlIHNwZWNpYWwgY2FzZSB3aGVyZSB0aGlz
IGVsZW1lbnQgaXMgdGhlIHZlcnkgbGFzdCB0aGluZyBpbgogICAgIC8vIHRoZSBmb3JtJ3MgdHJl
ZSBvZiBjaGlsZHJlbjsgd2UgZG9uJ3Qgd2FudCB0byB3YWxrIHRoZSBlbnRpcmUgdHJlZSBpbiB0
aGF0CiAgICAgLy8gY29tbW9uIGNhc2UgdGhhdCBvY2N1cnMgZHVyaW5nIHBhcnNpbmc7IGluc3Rl
YWQgd2UnbGwganVzdCByZXR1cm4gYSB2YWx1ZQogICAgIC8vIHRoYXQgc2F5cyAiYWRkIHRoaXMg
Zm9ybSBlbGVtZW50IHRvIHRoZSBlbmQgb2YgdGhlIGFycmF5Ii4KICAgICBpZiAoZS0+dHJhdmVy
c2VOZXh0Tm9kZSh0aGlzKSkgewotICAgICAgICB1bnNpZ25lZCBpID0gMDsKKyAgICAgICAgdW5z
aWduZWQgaSA9IG1fYXNzb2NpYXRlZEVsZW1lbnRzQmVmb3JlSW5kZXg7CiAgICAgICAgIGZvciAo
Tm9kZSogbm9kZSA9IHRoaXM7IG5vZGU7IG5vZGUgPSBub2RlLT50cmF2ZXJzZU5leHROb2RlKHRo
aXMpKSB7Ci0gICAgICAgICAgICBpZiAobm9kZSA9PSBlKQorICAgICAgICAgICAgaWYgKG5vZGUg
PT0gZSkgeworICAgICAgICAgICAgICAgICsrbV9hc3NvY2lhdGVkRWxlbWVudHNBZnRlckluZGV4
OwogICAgICAgICAgICAgICAgIHJldHVybiBpOwotICAgICAgICAgICAgaWYgKG5vZGUtPmlzSFRN
TEVsZW1lbnQoKQotICAgICAgICAgICAgICAgICAgICAmJiBzdGF0aWNfY2FzdDxFbGVtZW50Kj4o
bm9kZSktPmlzRm9ybUNvbnRyb2xFbGVtZW50KCkKLSAgICAgICAgICAgICAgICAgICAgJiYgc3Rh
dGljX2Nhc3Q8SFRNTEZvcm1Db250cm9sRWxlbWVudCo+KG5vZGUpLT5mb3JtKCkgPT0gdGhpcykK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChpc0Zvcm1Bc3NvY2lhdGVkTm9kZSh0aGlz
LCBub2RlKSkKICAgICAgICAgICAgICAgICArK2k7CiAgICAgICAgIH0KICAgICB9Ci0gICAgcmV0
dXJuIG1fYXNzb2NpYXRlZEVsZW1lbnRzLnNpemUoKTsKKyAgICByZXR1cm4gbV9hc3NvY2lhdGVk
RWxlbWVudHNBZnRlckluZGV4Kys7CiB9CiAKIHZvaWQgSFRNTEZvcm1FbGVtZW50OjpyZWdpc3Rl
ckZvcm1FbGVtZW50KEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqIGUpCkBAIC00MTgsNiArNDY2LDE5
IEBAIHZvaWQgSFRNTEZvcm1FbGVtZW50OjpyZWdpc3RlckZvcm1FbGVtZW50KEhUTUxGb3JtQ29u
dHJvbEVsZW1lbnQqIGUpCiB2b2lkIEhUTUxGb3JtRWxlbWVudDo6cmVtb3ZlRm9ybUVsZW1lbnQo
SFRNTEZvcm1Db250cm9sRWxlbWVudCogZSkKIHsKICAgICBtX2NoZWNrZWRSYWRpb0J1dHRvbnMu
cmVtb3ZlQnV0dG9uKGUpOworICAgIGlmIChlLT5mYXN0SGFzQXR0cmlidXRlKGZvcm1BdHRyKSkg
eworICAgICAgICB1bnNpZ25lZCBpbmRleDsKKyAgICAgICAgZm9yIChpbmRleCA9IDA7IGluZGV4
IDwgbV9hc3NvY2lhdGVkRWxlbWVudHMuc2l6ZSgpOyArK2luZGV4KQorICAgICAgICAgICAgaWYg
KG1fYXNzb2NpYXRlZEVsZW1lbnRzW2luZGV4XSA9PSBlKQorICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBBU1NFUlQoaW5kZXggPCBtX2Fzc29jaWF0ZWRFbGVtZW50cy5zaXplKCkpOwor
ICAgICAgICBpZiAoaW5kZXggPCBtX2Fzc29jaWF0ZWRFbGVtZW50c0JlZm9yZUluZGV4KQorICAg
ICAgICAgICAgLS1tX2Fzc29jaWF0ZWRFbGVtZW50c0JlZm9yZUluZGV4OworICAgICAgICBpZiAo
aW5kZXggPCBtX2Fzc29jaWF0ZWRFbGVtZW50c0FmdGVySW5kZXgpCisgICAgICAgICAgICAtLW1f
YXNzb2NpYXRlZEVsZW1lbnRzQWZ0ZXJJbmRleDsKKyAgICB9IGVsc2UgeworICAgICAgICAtLW1f
YXNzb2NpYXRlZEVsZW1lbnRzQWZ0ZXJJbmRleDsKKyAgICB9CiAgICAgcmVtb3ZlRnJvbVZlY3Rv
cihtX2Fzc29jaWF0ZWRFbGVtZW50cywgZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRt
bC9IVE1MRm9ybUVsZW1lbnQuaCBiL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuaAppbmRl
eCBiOTk2ZDlkZTI0MGYwNmJlNWQ1NDBlMGUwODc1Y2UwYjEzNzU2Zjk0Li40ZTA2YmVjMDk5YzYz
YzRmYzM1ZDU5M2EwNWEzZTMzNWYwMDJmMTBmIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRN
TEZvcm1FbGVtZW50LmgKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oCkBAIC0x
MzEsNiArMTMxLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc3VibWl0KEV2ZW50KiwgYm9vbCBh
Y3RpdmF0ZVN1Ym1pdEJ1dHRvbiwgYm9vbCBwcm9jZXNzaW5nVXNlckdlc3R1cmUsIEZvcm1TdWJt
aXNzaW9uVHJpZ2dlcik7CiAKKyAgICB1bnNpZ25lZCBmb3JtRWxlbWVudEluZGV4V2l0aEZvcm1B
dHRyaWJ1dGUoSFRNTEZvcm1Db250cm9sRWxlbWVudCopOwogICAgIHVuc2lnbmVkIGZvcm1FbGVt
ZW50SW5kZXgoSFRNTEZvcm1Db250cm9sRWxlbWVudCopOwogICAgIC8vIFJldHVybnMgdHJ1ZSBp
ZiB0aGUgc3VibWlzc2lvbiBzaG91bGQgYmUgcHJvY2VlZGVkLgogICAgIGJvb2wgdmFsaWRhdGVJ
bnRlcmFjdGl2ZWx5KEV2ZW50Kik7CkBAIC0xNDgsNiArMTQ5LDggQEAgcHJpdmF0ZToKIAogICAg
IENoZWNrZWRSYWRpb0J1dHRvbnMgbV9jaGVja2VkUmFkaW9CdXR0b25zOwogCisgICAgdW5zaWdu
ZWQgbV9hc3NvY2lhdGVkRWxlbWVudHNCZWZvcmVJbmRleDsKKyAgICB1bnNpZ25lZCBtX2Fzc29j
aWF0ZWRFbGVtZW50c0FmdGVySW5kZXg7CiAgICAgVmVjdG9yPEhUTUxGb3JtQ29udHJvbEVsZW1l
bnQqPiBtX2Fzc29jaWF0ZWRFbGVtZW50czsKICAgICBWZWN0b3I8SFRNTEltYWdlRWxlbWVudCo+
IG1faW1hZ2VFbGVtZW50czsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxPdXRwdXRF
bGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5jcHAKaW5kZXggZGVl
MjFhZWZjZTU5NDZjMDRiNjE0NjU2NDZjZmUwYWE5MDFjMDE4Zi4uYjgzMjYzZTM4MTdjMGI1Y2Iw
YmRlYzVlYjczY2Q3NzQ3ZWJiMGNlNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxPdXRw
dXRFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTE91dHB1dEVsZW1lbnQuY3BwCkBA
IC01OCw3ICs1OCw2IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgSFRNTE91dHB1dEVsZW1lbnQ6OmZv
cm1Db250cm9sVHlwZSgpIGNvbnN0CiAKIHZvaWQgSFRNTE91dHB1dEVsZW1lbnQ6OnBhcnNlTWFw
cGVkQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKIHsKLSAgICAvLyBGSVhNRTogU2hvdWxkIGhh
bmRsZSB0aGUgJ2Zvcm0nIGF0dHJpYnV0ZSBoZXJlLgogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0g
SFRNTE5hbWVzOjpmb3JBdHRyKQogICAgICAgICBzZXRGb3IoYXR0ci0+dmFsdWUoKSk7CiAgICAg
ZWxzZQpAQCAtNzUsMTEgKzc0LDYgQEAgdm9pZCBIVE1MT3V0cHV0RWxlbWVudDo6c2V0Rm9yKGNv
bnN0IFN0cmluZyYgdmFsdWUpCiAgICAgbV90b2tlbnMtPnNldFZhbHVlKHZhbHVlKTsKIH0KIAot
dm9pZCBIVE1MT3V0cHV0RWxlbWVudDo6c2V0Rm9ybShjb25zdCBTdHJpbmcmIC8qaWQqLykKLXsK
LSAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgZnVuY3Rpb24uCi19Ci0KIHZvaWQgSFRNTE91
dHB1dEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChib29sIGNyZWF0ZWRCeVBhcnNlciwgTm9kZSos
IE5vZGUqLCBpbnQpCiB7CiAgICAgaWYgKGNyZWF0ZWRCeVBhcnNlciB8fCBtX2lzU2V0VGV4dENv
bnRlbnRJblByb2dyZXNzKSB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTE91dHB1dEVs
ZW1lbnQuaCBiL1dlYkNvcmUvaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5oCmluZGV4IGRmODA3ZmJj
YzdjYzk3YTRiNWIxNGViYjQ1YmY1NWEzOWEwMzU3MjYuLjgzZWNlZTJmNDlmODYxNmY3YjEwZWM5
ZGJkYzJkZTA3MzBhM2ZkZWQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MT3V0cHV0RWxl
bWVudC5oCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5oCkBAIC00Myw3ICs0
Myw2IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCB3aWxsVmFsaWRhdGUoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQogCi0gICAgdm9pZCBzZXRGb3JtKGNvbnN0IFN0cmluZyYpOwogICAg
IFN0cmluZyB2YWx1ZSgpIGNvbnN0OwogICAgIHZvaWQgc2V0VmFsdWUoY29uc3QgU3RyaW5nJik7
CiAgICAgU3RyaW5nIGRlZmF1bHRWYWx1ZSgpIGNvbnN0Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>73705</attachid>
            <date>2010-11-11 23:43:36 -0800</date>
            <delta_ts>2010-11-13 08:49:36 -0800</delta_ts>
            <desc>Patch V3</desc>
            <filename>bug-47813-20101112164333.patch</filename>
            <type>text/plain</type>
            <size>50956</size>
            <attacher name="Kenichi Ishibashi">bashi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmNTdiYmQ2ZTUyYjY5OTcxM2MzYmI0MjNhZjFmMjViYTczNDZkNzRlLi41NmIyODRj
NWI4NzcxMDM1NDQyZGVjZmQ5OTcyOTIxZmIyZWI3OThhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAK
KzIwMTAtMTEtMTEgIEtlbmljaGkgSXNoaWJhc2hpICA8YmFzaGlAZ29vZ2xlLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbSFRNTDVdICJmb3Jt
IiBhdHRyaWJ1dGUgc3VwcG9ydCBmb3IgZm9ybSBjb250cm9sIGVsZW1lbnRzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzgxMworCisgICAgICAgIEFk
ZHMgYSB0ZXN0IGZpbGUgZm9yICJmb3JtIiBhdHRyaWJ1dGUgb2YgZm9ybS1hc3NvY2lhdGVkIGVs
ZW1lbnRzLgorICAgICAgICBUaGUgdGVzdCBtaWdodCBuZWVkIHRvIGJlIHJldmlzZWQgYmVjYXVz
ZSA8bGFiZWw+IGFuZCA8b2JqZWN0PiBkb24ndAorICAgICAgICBzdXBwb3J0ICJmb3JtIiBhdHRy
aWJ1dGUgZm9yIG5vdywgaW4gc3BpdGUgb2YgdGhlIEhUTUw1IHNwZWMgc2F5cyB0aGF0CisgICAg
ICAgIHRoZXkgc2hvdWxkIHN1cHBvcnQuCisKKyAgICAgICAgKiBmYXN0L2Zvcm1zL2Zvcm0tYXR0
cmlidXRlLWVsZW1lbnRzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jt
cy9mb3JtLWF0dHJpYnV0ZS1lbGVtZW50cy1vcmRlci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvZm9ybXMvZm9ybS1hdHRyaWJ1dGUtZWxlbWVudHMtb3JkZXIuaHRtbDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9mb3JtLWF0dHJpYnV0ZS1lbGVtZW50cy1vcmRlcjIt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL2Zvcm0tYXR0cmlidXRl
LWVsZW1lbnRzLW9yZGVyMi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL2Zvcm0t
YXR0cmlidXRlLWVsZW1lbnRzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvZm9y
bS1hdHRyaWJ1dGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL2Zv
cm0tYXR0cmlidXRlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvc2NyaXB0LXRl
c3RzL2Zvcm0tYXR0cmlidXRlLWVsZW1lbnRzLW9yZGVyLmpzOiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2Zvcm1zL3NjcmlwdC10ZXN0cy9mb3JtLWF0dHJpYnV0ZS1lbGVtZW50cy1vcmRlcjIuanM6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvc2NyaXB0LXRlc3RzL2Zvcm0tYXR0cmlidXRl
LWVsZW1lbnRzLmpzOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL3NjcmlwdC10ZXN0cy9m
b3JtLWF0dHJpYnV0ZS5qczogQWRkZWQuCisKIDIwMTAtMTEtMTEgIE1paGFpIFBhcnBhcml0YSAg
PG1paGFpcEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCBDaHJvbWl1bSByZWJh
c2VsaW5lLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9mb3JtLWF0dHJpYnV0
ZS1lbGVtZW50cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2Zvcm0tYXR0
cmlidXRlLWVsZW1lbnRzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYzYxYzRjNTgzMjE5MzQ4
NmUyOTIyMTAxNzg5M2U3YjllNzEyMWM4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9mb3Jtcy9mb3JtLWF0dHJpYnV0ZS1lbGVtZW50cy1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwyMCBAQAorVGhpcyB0ZXN0IGNoZWNrcyBhIGZvcm0gZWxlbWVudCBjYW4gaGFuZGxlIGVsZW1l
bnRzIG9mIHdoaWNoIGZvcm0gYXR0cmlidXRlIHBvaW50cyB0aGUgZm9ybSBlbGVtZW50IGV2ZW4g
aWYgZWxlbWVudHMgYXJlIG91dHNpZGUgb2YgdGhlIGZvcm0uCisKK09uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KKworCistIEVuc3VyZXMgdGhhdCBlbGVtZW50cyBhdHRyaWJ1dGUgb2YgdGhlIGZv
cm0gY29udGFpbnMgZWxlbWVudHMgd2hpY2ggYXJlIG91dHNpZGUgb2YgdGhlIGZvcm0uCitQQVNT
IG93bmVyLmVsZW1lbnRzLmxlbmd0aCBpcyAzCitQQVNTIG93bmVyLmVsZW1lbnRzWzBdIGlzIG91
dGVyQmVmb3JlCitQQVNTIG93bmVyLmVsZW1lbnRzWzFdIGlzIGlubmVyCitQQVNTIG93bmVyLmVs
ZW1lbnRzWzJdIGlzIG91dGVyQWZ0ZXIKKworLSBFbnN1cmVzIHRoYXQgZm9ybSBzdWJtaXNzaW9u
IGNvbnRhaW5zIG5hbWUgYW5kIHZhbHVlIHBhaXJzIGZvciBzdWNoIGVsZW1lbnRzLgorUEFTUyBw
YWlycy5sZW5ndGggaXMgMworUEFTUyBwYWlyc1swXSBpcyAia2V5MT12YWx1ZTEiCitQQVNTIHBh
aXJzWzFdIGlzICJrZXkyPXZhbHVlMiIKK1BBU1MgcGFpcnNbMl0gaXMgInN1Ym1pdHRlZD10cnVl
IgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZm9ybS1hdHRyaWJ1dGUtZWxlbWVudHMt
b3JkZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9mb3JtLWF0dHJpYnV0
ZS1lbGVtZW50cy1vcmRlci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGY2MDQ4YzZlNTQyYmZi
MDNkMTQ2MDUyMjkwNGQ0MWYxNzYwZGNlZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvZm9ybS1hdHRyaWJ1dGUtZWxlbWVudHMtb3JkZXItZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsOTUgQEAKK1RoaXMgdGVzdCBleGFtaW5lcyB0aGUgb3JkZXIgb2YgdGhlIGVsZW1l
bnRzIGF0dHJpYnV0ZSBvZiBhIGZvcm0gZWxlbWVudC4KKworT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgorCisKKy0gVGVzdCBmb3IgdGhlIGNhc2Ugd2hlcmUgc29tZSBlbGVtZW50cyBhcmUgb3V0
c2lkZSBvZiB0aGUgZm9ybS4KK1BBU1Mgb3duZXIuZWxlbWVudHMubGVuZ3RoIGlzIDYKK1BBU1Mg
b3duZXIuZWxlbWVudHNbMF0gaXMgYmVmb3JlMQorUEFTUyBvd25lci5lbGVtZW50c1sxXSBpcyBi
ZWZvcmUyCitQQVNTIG93bmVyLmVsZW1lbnRzWzJdIGlzIGlubmVyMQorUEFTUyBvd25lci5lbGVt
ZW50c1szXSBpcyBpbm5lcjIKK1BBU1Mgb3duZXIuZWxlbWVudHNbNF0gaXMgYWZ0ZXIxCitQQVNT
IG93bmVyLmVsZW1lbnRzWzVdIGlzIGFmdGVyMgorCistIFRlc3QgZm9yIGNoYW5naW5nIHRoZSB2
YWx1ZSBvZiB0aGUgZm9ybSBhdHRyaWJ1dGUgb2YgYSBlbGVtZW50IHdoaWNoIGlzIGxvY2F0ZWQg
YmVmb3JlIHRoZSBmb3JtIG93bmVyLgorUEFTUyBvd25lci5lbGVtZW50cy5sZW5ndGggaXMgNQor
UEFTUyBvd25lci5lbGVtZW50c1swXSBpcyBiZWZvcmUxCitQQVNTIG93bmVyLmVsZW1lbnRzWzFd
IGlzIGlubmVyMQorUEFTUyBvd25lci5lbGVtZW50c1syXSBpcyBpbm5lcjIKK1BBU1Mgb3duZXIu
ZWxlbWVudHNbM10gaXMgYWZ0ZXIxCitQQVNTIG93bmVyLmVsZW1lbnRzWzRdIGlzIGFmdGVyMgor
UEFTUyBvd25lci5lbGVtZW50cy5sZW5ndGggaXMgNgorUEFTUyBvd25lci5lbGVtZW50c1swXSBp
cyBiZWZvcmUxCitQQVNTIG93bmVyLmVsZW1lbnRzWzFdIGlzIGJlZm9yZTIKK1BBU1Mgb3duZXIu
ZWxlbWVudHNbMl0gaXMgaW5uZXIxCitQQVNTIG93bmVyLmVsZW1lbnRzWzNdIGlzIGlubmVyMgor
UEFTUyBvd25lci5lbGVtZW50c1s0XSBpcyBhZnRlcjEKK1BBU1Mgb3duZXIuZWxlbWVudHNbNV0g
aXMgYWZ0ZXIyCisKKy0gVGVzdCBmb3IgY2hhbmdpbmcgdGhlIHZhbHVlIG9mIHRoZSBmb3JtIGF0
dHJpYnV0ZSBvZiBhIGVsZW1lbnQgd2hpY2ggaXMgbG9jYXRlZCBpbnNpZGUgb2YgdGhlIGZvcm0g
b3duZXIuCitQQVNTIG93bmVyLmVsZW1lbnRzLmxlbmd0aCBpcyA1CitQQVNTIG93bmVyLmVsZW1l
bnRzWzBdIGlzIGJlZm9yZTEKK1BBU1Mgb3duZXIuZWxlbWVudHNbMV0gaXMgYmVmb3JlMgorUEFT
UyBvd25lci5lbGVtZW50c1syXSBpcyBpbm5lcjEKK1BBU1Mgb3duZXIuZWxlbWVudHNbM10gaXMg
YWZ0ZXIxCitQQVNTIG93bmVyLmVsZW1lbnRzWzRdIGlzIGFmdGVyMgorUEFTUyBvd25lci5lbGVt
ZW50cy5sZW5ndGggaXMgNgorUEFTUyBvd25lci5lbGVtZW50c1swXSBpcyBiZWZvcmUxCitQQVNT
IG93bmVyLmVsZW1lbnRzWzFdIGlzIGJlZm9yZTIKK1BBU1Mgb3duZXIuZWxlbWVudHNbMl0gaXMg
aW5uZXIxCitQQVNTIG93bmVyLmVsZW1lbnRzWzNdIGlzIGlubmVyMgorUEFTUyBvd25lci5lbGVt
ZW50c1s0XSBpcyBhZnRlcjEKK1BBU1Mgb3duZXIuZWxlbWVudHNbNV0gaXMgYWZ0ZXIyCisKKy0g
VGVzdCBmb3IgY2hhbmdpbmcgdGhlIHZhbHVlIG9mIHRoZSBmb3JtIGF0dHJpYnV0ZSBvZiBhIGVs
ZW1lbnQgd2hpY2ggaXMgbG9jYXRlZCBhZnRlciB0aGUgZm9ybSBvd25lci4KK1BBU1Mgb3duZXIu
ZWxlbWVudHMubGVuZ3RoIGlzIDUKK1BBU1Mgb3duZXIuZWxlbWVudHNbMF0gaXMgYmVmb3JlMQor
UEFTUyBvd25lci5lbGVtZW50c1sxXSBpcyBiZWZvcmUyCitQQVNTIG93bmVyLmVsZW1lbnRzWzJd
IGlzIGlubmVyMQorUEFTUyBvd25lci5lbGVtZW50c1szXSBpcyBpbm5lcjIKK1BBU1Mgb3duZXIu
ZWxlbWVudHNbNF0gaXMgYWZ0ZXIyCitQQVNTIG93bmVyLmVsZW1lbnRzLmxlbmd0aCBpcyA2CitQ
QVNTIG93bmVyLmVsZW1lbnRzWzBdIGlzIGJlZm9yZTEKK1BBU1Mgb3duZXIuZWxlbWVudHNbMV0g
aXMgYmVmb3JlMgorUEFTUyBvd25lci5lbGVtZW50c1syXSBpcyBpbm5lcjEKK1BBU1Mgb3duZXIu
ZWxlbWVudHNbM10gaXMgaW5uZXIyCitQQVNTIG93bmVyLmVsZW1lbnRzWzRdIGlzIGFmdGVyMQor
UEFTUyBvd25lci5lbGVtZW50c1s1XSBpcyBhZnRlcjIKKworLSBUZXN0IGZvciBzZXR0aW5nIGZv
cm0gYXR0cmlidXRlIG9mIGVsZW1lbnRzIGluIHJldmVyc2Ugb3JkZXIuCitQQVNTIG93bmVyLmVs
ZW1lbnRzLmxlbmd0aCBpcyA2CitQQVNTIG93bmVyLmVsZW1lbnRzWzBdIGlzIGJlZm9yZTEKK1BB
U1Mgb3duZXIuZWxlbWVudHNbMV0gaXMgYmVmb3JlMgorUEFTUyBvd25lci5lbGVtZW50c1syXSBp
cyBpbm5lcjEKK1BBU1Mgb3duZXIuZWxlbWVudHNbM10gaXMgaW5uZXIyCitQQVNTIG93bmVyLmVs
ZW1lbnRzWzRdIGlzIGFmdGVyMQorUEFTUyBvd25lci5lbGVtZW50c1s1XSBpcyBhZnRlcjIKKwor
LSBUZXN0IGZvciBzZXR0aW5nIGZvcm0gYXR0cmlidXRlIG9mIGVsZW1lbnRzIGluIHJhbmRvbSBv
cmRlci4KK1BBU1Mgb3duZXIuZWxlbWVudHMubGVuZ3RoIGlzIDYKK1BBU1Mgb3duZXIuZWxlbWVu
dHNbMF0gaXMgYmVmb3JlMQorUEFTUyBvd25lci5lbGVtZW50c1sxXSBpcyBiZWZvcmUyCitQQVNT
IG93bmVyLmVsZW1lbnRzWzJdIGlzIGlubmVyMQorUEFTUyBvd25lci5lbGVtZW50c1szXSBpcyBp
bm5lcjIKK1BBU1Mgb3duZXIuZWxlbWVudHNbNF0gaXMgYWZ0ZXIxCitQQVNTIG93bmVyLmVsZW1l
bnRzWzVdIGlzIGFmdGVyMgorCistIFRlc3QgZm9yIHJlbW92aW5nL2FkZGluZyBlbGVtZW50cwor
UEFTUyBvd25lci5lbGVtZW50cy5sZW5ndGggaXMgMworUEFTUyBvd25lci5lbGVtZW50c1swXSBp
cyBiZWZvcmUxCitQQVNTIG93bmVyLmVsZW1lbnRzWzFdIGlzIGlubmVyMQorUEFTUyBvd25lci5l
bGVtZW50c1syXSBpcyBhZnRlcjIKK1BBU1Mgb3duZXIuZWxlbWVudHMubGVuZ3RoIGlzIDYKK1BB
U1Mgb3duZXIuZWxlbWVudHNbMF0gaXMgYmVmb3JlMQorUEFTUyBvd25lci5lbGVtZW50c1sxXSBp
cyBiZWZvcmUyCitQQVNTIG93bmVyLmVsZW1lbnRzWzJdIGlzIGlubmVyMQorUEFTUyBvd25lci5l
bGVtZW50c1szXSBpcyBpbm5lcjIKK1BBU1Mgb3duZXIuZWxlbWVudHNbNF0gaXMgYWZ0ZXIxCitQ
QVNTIG93bmVyLmVsZW1lbnRzWzVdIGlzIGFmdGVyMgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKKyAgCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvZm9ybS1hdHRyaWJ1dGUtZWxlbWVudHMtb3JkZXIuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvZm9ybXMvZm9ybS1hdHRyaWJ1dGUtZWxlbWVudHMtb3JkZXIuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4yZTE3MjFkNDgxZDdhZTI1MzBmMmM4ZmNlNTUyZmIyOTZhYWZjMTQ1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9mb3JtLWF0dHJpYnV0ZS1lbGVtZW50cy1v
cmRlci5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVU
Ri8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2Zvcm0tYXR0cmlidXRlLWVs
ZW1lbnRzLW9yZGVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9mb3JtLWF0dHJpYnV0ZS1lbGVtZW50cy1v
cmRlcjItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9mb3JtLWF0dHJpYnV0
ZS1lbGVtZW50cy1vcmRlcjItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI1NDYwZWRjYzc3Yzhm
NzY5YjAxNjU4ZjkzMWIwNzUzYzVjMTc5MGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL2Zvcm0tYXR0cmlidXRlLWVsZW1lbnRzLW9yZGVyMi1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSw0OSBAQAorVGhpcyB0ZXN0IGV4YW1pbmVzIHRoZSBvcmRlciBvZiB0aGUgZWxl
bWVudHMgYXR0cmlidXRlIG9mIGEgZm9ybSBlbGVtZW50IHdpdGggZm9ybS1hc3NvY2lhdGVkIGVs
ZW1lbnRzIHdpdGggZm9ybSBhdHRyaWJ1dGUgb3Igd2l0b3V0IGZvcm0gYXR0aWJ1dGUuCisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCisKKy0gVGVzdCBmb3IgdGhlIGNhc2Ugd2hlcmUg
c29tZSBlbGVtZW50cyBoYXZlIGZvcm0gYXR0cmlidXRlIGJ1dCBzb21lIG90aGVycyBub3QuCitQ
QVNTIG93bmVyLmVsZW1lbnRzLmxlbmd0aCBpcyAzCitQQVNTIG93bmVyLmVsZW1lbnRzWzBdIGlz
IGlucHV0MQorUEFTUyBvd25lci5lbGVtZW50c1sxXSBpcyBpbnB1dDIKK1BBU1Mgb3duZXIuZWxl
bWVudHNbMl0gaXMgaW5wdXQzCitQQVNTIG93bmVyLmVsZW1lbnRzLmxlbmd0aCBpcyAzCitQQVNT
IG93bmVyLmVsZW1lbnRzWzBdIGlzIGlucHV0MQorUEFTUyBvd25lci5lbGVtZW50c1sxXSBpcyBp
bnB1dDIKK1BBU1Mgb3duZXIuZWxlbWVudHNbMl0gaXMgaW5wdXQzCisKKy0gVGVzdCBmb3IgaW5z
ZXJ0aW5nL3JlbW92aW5nIGEgZm9ybS1hc3NvY2lhdGVkIGVsZW1lbnQgd2l0aG91dCBmb3JtIGF0
dHJpYnV0ZS4KK1BBU1Mgb3duZXIuZWxlbWVudHMubGVuZ3RoIGlzIDQKK1BBU1Mgb3duZXIuZWxl
bWVudHNbMF0gaXMgYmVmb3JlCitQQVNTIG93bmVyLmVsZW1lbnRzWzFdIGlzIGlubmVyCitQQVNT
IG93bmVyLmVsZW1lbnRzWzJdIGlzIGlubmVyMgorUEFTUyBvd25lci5lbGVtZW50c1szXSBpcyBh
ZnRlcgorUEFTUyBvd25lci5lbGVtZW50cy5sZW5ndGggaXMgNAorUEFTUyBvd25lci5lbGVtZW50
c1swXSBpcyBiZWZvcmUKK1BBU1Mgb3duZXIuZWxlbWVudHNbMV0gaXMgaW5uZXIKK1BBU1Mgb3du
ZXIuZWxlbWVudHNbMl0gaXMgaW5uZXIyCitQQVNTIG93bmVyLmVsZW1lbnRzWzNdIGlzIGFmdGVy
CisKKy0gVGVzdCBmb3IgaW5zZXJ0aW5nL3JlbW92aW5nIGEgZm9ybS1hc3NvY2lhdGVkIGVsZW1l
bnQgd2l0aCBmb3JtIGF0dHJpYnV0ZS4KK1BBU1Mgb3duZXIuZWxlbWVudHMubGVuZ3RoIGlzIDYK
K1BBU1Mgb3duZXIuZWxlbWVudHNbMF0gaXMgYmVmb3JlCitQQVNTIG93bmVyLmVsZW1lbnRzWzFd
IGlzIGJlZm9yZTIKK1BBU1Mgb3duZXIuZWxlbWVudHNbMl0gaXMgaW5uZXIKK1BBU1Mgb3duZXIu
ZWxlbWVudHNbM10gaXMgaW5uZXIyCitQQVNTIG93bmVyLmVsZW1lbnRzWzRdIGlzIGFmdGVyCitQ
QVNTIG93bmVyLmVsZW1lbnRzWzVdIGlzIGFmdGVyMgorUEFTUyBvd25lci5lbGVtZW50cy5sZW5n
dGggaXMgNgorUEFTUyBvd25lci5lbGVtZW50c1swXSBpcyBiZWZvcmUKK1BBU1Mgb3duZXIuZWxl
bWVudHNbMV0gaXMgYmVmb3JlMgorUEFTUyBvd25lci5lbGVtZW50c1syXSBpcyBpbm5lcgorUEFT
UyBvd25lci5lbGVtZW50c1szXSBpcyBpbm5lcjIKK1BBU1Mgb3duZXIuZWxlbWVudHNbNF0gaXMg
YWZ0ZXIKK1BBU1Mgb3duZXIuZWxlbWVudHNbNV0gaXMgYWZ0ZXIyCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKworCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvZm9ybXMvZm9ybS1hdHRyaWJ1dGUtZWxlbWVudHMtb3JkZXIyLmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2Zvcm0tYXR0cmlidXRlLWVsZW1lbnRzLW9yZGVyMi5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjQ5M2E3ZGI0YzZhMzhjOTEyMGIyZTljZTk2MTgzYjIwM2QzOTc0MzIKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2Zvcm0tYXR0cmlidXRlLWVs
ZW1lbnRzLW9yZGVyMi5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJ
QyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ij4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2Zvcm0tYXR0
cmlidXRlLWVsZW1lbnRzLW9yZGVyMi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZm9ybS1hdHRyaWJ1dGUt
ZWxlbWVudHMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZm9ybS1hdHRyaWJ1dGUtZWxl
bWVudHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMzg5YmNlMGNiNjdjMzZlMTVlMDA2MTFiODYzYjFjODBk
M2I5MDZiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9mb3JtLWF0
dHJpYnV0ZS1lbGVtZW50cy5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBV
QkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUu
Y3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgor
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2Zvcm0t
YXR0cmlidXRlLWVsZW1lbnRzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9mb3JtLWF0dHJpYnV0ZS1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2Zvcm0tYXR0cmlidXRlLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5lYmVlNWJhMWI0ODYzMjMxZTIzNzdiNmJiYzY5ZjJmNzdkY2NiZWZi
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9mb3JtLWF0dHJpYnV0
ZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1MSBAQAorVGhpcyB0ZXN0IGNoZWNrcyB0aGUgZm9y
bSBhdHRyaWJ1dGUgb2YgdGhlIGZvcm0tYXNzb2NpYXRlZCBlbGVtZW50cy4KKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCisKKy0gQ2hlY2tzIHRoZSBleGlzdGVuY2Ugb2YgdGhlIGZvcm0g
YXR0cmlidXRlIGZvciBlYWNoIGZvcm0tYXNzb2NpYXRlZCBlbGVtZW50cy4KK0ZJWE1FOiA8bGFi
ZWw+IGFuZCA8b2JqZWN0PiBkb24ndCBzdXBwb3J0IHRoZSBmb3JtIGF0dHJpYnV0ZSBmb3Igbm93
LgorUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYnV0dG9uIilbMF0uZm9ybSBp
cyBvd25lcgorUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiZmllbGRzZXQiKVsw
XS5mb3JtIGlzIG93bmVyCitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpbnB1
dCIpWzBdLmZvcm0gaXMgb3duZXIKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
ImtleWdlbiIpWzBdLmZvcm0gaXMgb3duZXIKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoIm1ldGVyIilbMF0uZm9ybSBpcyBvd25lcgorUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgib3V0cHV0IilbMF0uZm9ybSBpcyBvd25lcgorUEFTUyBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgicHJvZ3Jlc3MiKVswXS5mb3JtIGlzIG93bmVyCitQQVNTIGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzZWxlY3QiKVswXS5mb3JtIGlzIG93bmVyCitQQVNT
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0YXJlYSIpWzBdLmZvcm0gaXMgb3du
ZXIKKworLSBFbnN1cmVzIHRoYXQgdGhlIGZvcm0gYXR0cmlidXRlIHBvaW50cyB0aGUgZm9ybSBv
d25lciBldmVuIGlmIHRoZSBlbGVtZW50IGlzIHdpdGhpbiBhbm90aGVyIGZvcm0gZWxlbWVudC4K
K1BBU1MgaW5wdXRFbGVtZW50LmZvcm0gaXMgb3duZXIKKworLSBFbnN1cmVzIHRoYXQgdGhlIGZv
cm0gYXR0cmlidXRlIG9mIGFsbCBmb3JtLWFzc29jaWF0ZWQgZWxlbWVudCB3aXRoIG9yIHdpdG91
dCBmb3JtIGF0dHJpYnV0ZSBwb2ludHMgdGhlIGZvcm0gb3duZXIuCitQQVNTIGlucHV0RWxlbWVu
dDEuZm9ybSBpcyBvd25lcgorUEFTUyBpbnB1dEVsZW1lbnQyLmZvcm0gaXMgb3duZXIKK1BBU1Mg
aW5wdXRFbGVtZW50My5mb3JtIGlzIG93bmVyCisKKy0gRW5zdXJlcyB0aGF0IHRoZSBmb3JtIGF0
dHJpYnV0ZSBwb2ludHMgdGhlIGZvcm0gb3duZXIgZXZlbiBpZiB0aGUgZm9ybSBlbGVtZW50IGlz
IG5lc3RlZCBhbm90aGVyIGZvcm0gZWxlbWVudC4KK05PVEU6IEl0IHNlZW1zIHRoYXQgbmVzdGlu
ZyBmb3JtIGVsZW1lbnRzIGlzIG5vdCBhbGxvd2VkIHNvIHdlIGVuc3VyZSBlYWNoIGZvcm0tYXNz
b2NpYXRlZCBlbGVtZW50cyBhc3NvY2lhdGUgd2l0aCB0aGUgb3V0bW9zdCBmb3JtIGVsZW1lbnQu
CitQQVNTIGlucHV0RWxlbWVudDEuZm9ybSBpcyBvd25lcgorUEFTUyBpbnB1dEVsZW1lbnQyLmZv
cm0gaXMgb3duZXIKK1BBU1MgaW5wdXRFbGVtZW50My5mb3JtIGlzIG93bmVyCisKKy0gRW5zdXJl
cyB3aGV0aGVyIHRoZSBmb3JtIG93bmVyIGlzIHNldCBjb3JyZWN0bHkgd2hlbiB0aGUgdmFsdWUg
b2YgZm9ybSBhdHRyaWJ1dGUgb2YgYSBmb3JtLWFzc29jaWF0ZWQgZWxlbWVudCBjaGFuZ2VkLgor
UEFTUyBpbnB1dEVsZW1lbnQuZm9ybSBpcyBmb3JtMQorUEFTUyBpbnB1dEVsZW1lbnQuZm9ybSBp
cyBmb3JtMgorCistIEVuc3VyZXMgd2hldGhlciB0aGUgZm9ybSBvd25lciBpcyBzZXQgY29ycmVj
dGx5IHdoZW4gdGhlIHZhbHVlIG9mIGZvcm0gYXR0cmlidXRlIGlzIGFkZGVkL3JlbW92ZWQuCitQ
QVNTIGlucHV0RWxlbWVudC5mb3JtIGlzIG51bGwKK1BBU1MgaW5wdXRFbGVtZW50LmZvcm0gaXMg
b3duZXIKK1BBU1MgaW5wdXRFbGVtZW50LmZvcm0gaXMgbnVsbAorCistIEVuc3VyZXMgd2hldGhl
ciB0aGUgZm9ybSBvd25lciBpcyBzZXQgY29ycmVjdGx5IHdoZW4gdGhlIGZvcm0gb3duZXIgaXMg
YWRkZWQvcmVtb3ZlZC4KK1BBU1Mgb3duZXIubmFtZSBpcyAiZmlyc3RPd25lciIKK1BBU1Mgb3du
ZXIubmFtZSBpcyAic2Vjb25kT3duZXIiCitQQVNTIGlucHV0RWxlbWVudC5mb3JtIGlzIG93bmVy
CitQQVNTIGlucHV0RWxlbWVudC5mb3JtIGlzIG51bGwKK1BBU1MgaW5wdXRFbGVtZW50LmZvcm0g
aXMgb3duZXIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZm9ybS1hdHRyaWJ1dGUu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZm9ybS1hdHRyaWJ1dGUuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zMDY5YjBjNmVmNjY0MzA3Nzg3YjJkNzJhNzhlMjIyYmY4ZDY1YWM5Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9mb3JtLWF0dHJpYnV0ZS5odG1sCkBAIC0w
LDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VO
Ij4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2Zvcm0tYXR0cmlidXRlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9zY3JpcHQtdGVzdHMvZm9ybS1hdHRyaWJ1dGUtZWxlbWVudHMtb3JkZXIuanMgYi9MYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL3NjcmlwdC10ZXN0cy9mb3JtLWF0dHJpYnV0ZS1lbGVtZW50cy1vcmRl
ci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZGNkYWUzOGVhOGE5YmNjZTkyOThlNTE2OGVlNDQ1NWQ3ZjBlMWVj
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zY3JpcHQtdGVzdHMv
Zm9ybS1hdHRyaWJ1dGUtZWxlbWVudHMtb3JkZXIuanMKQEAgLTAsMCArMSwxNTMgQEAKK2Rlc2Ny
aXB0aW9uKCJUaGlzIHRlc3QgZXhhbWluZXMgdGhlIG9yZGVyIG9mIHRoZSBlbGVtZW50cyBhdHRy
aWJ1dGUgb2YgYSBmb3JtIGVsZW1lbnQuIik7CisKK3ZhciBjb250YWluZXIgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdkaXYnKTsKK2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoY29udGFpbmVy
KTsKK2NvbnRhaW5lci5pbm5lckhUTUwgPSAnPGlucHV0IG5hbWU9dmljdGltIGlkPWJlZm9yZTEg
Zm9ybT1vd25lciAvPicgKworICAgICc8aW5wdXQgbmFtZT12aWN0aW0gaWQ9YmVmb3JlMiBmb3Jt
PW93bmVyIC8+JyArCisgICAgJzxmb3JtIGlkPW93bmVyIGFjdGlvbj0gbWV0aG9kPUdFVD4nICsK
KyAgICAnICAgIDxpbnB1dCBuYW1lPXZpY3RpbSBpZD1pbm5lcjEgZm9ybT1vd25lciAvPicgKwor
ICAgICcgICAgPGlucHV0IG5hbWU9dmljdGltIGlkPWlubmVyMiBmb3JtPW93bmVyIC8+JyArCisg
ICAgJzwvZm9ybT4nICsKKyAgICAnPGlucHV0IG5hbWU9dmljdGltIGlkPWFmdGVyMSBmb3JtPW93
bmVyIC8+JyArCisgICAgJzxpbnB1dCBuYW1lPXZpY3RpbSBpZD1hZnRlcjIgZm9ybT1vd25lciAv
Pic7CisKK3ZhciBvd25lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdvd25lcicpOwordmFy
IGJlZm9yZTEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYmVmb3JlMScpOwordmFyIGJlZm9y
ZTIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYmVmb3JlMicpOwordmFyIGlubmVyMSA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbm5lcjEnKTsKK3ZhciBpbm5lcjIgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnaW5uZXIyJyk7Cit2YXIgYWZ0ZXIxID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2FmdGVyMScpOwordmFyIGFmdGVyMiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdh
ZnRlcjInKTsKKworZGVidWcoJy0gVGVzdCBmb3IgdGhlIGNhc2Ugd2hlcmUgc29tZSBlbGVtZW50
cyBhcmUgb3V0c2lkZSBvZiB0aGUgZm9ybS4nKTsKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50cy5s
ZW5ndGgnLCAnNicpOworc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzWzBdJywgJ2JlZm9yZTEnKTsK
K3Nob3VsZEJlKCdvd25lci5lbGVtZW50c1sxXScsICdiZWZvcmUyJyk7CitzaG91bGRCZSgnb3du
ZXIuZWxlbWVudHNbMl0nLCAnaW5uZXIxJyk7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHNbM10n
LCAnaW5uZXIyJyk7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHNbNF0nLCAnYWZ0ZXIxJyk7Citz
aG91bGRCZSgnb3duZXIuZWxlbWVudHNbNV0nLCAnYWZ0ZXIyJyk7CisKK2RlYnVnKCcnKTsKK2Rl
YnVnKCctIFRlc3QgZm9yIGNoYW5naW5nIHRoZSB2YWx1ZSBvZiB0aGUgZm9ybSBhdHRyaWJ1dGUg
b2YgYSBlbGVtZW50IHdoaWNoIGlzIGxvY2F0ZWQgYmVmb3JlIHRoZSBmb3JtIG93bmVyLicpOwor
YmVmb3JlMi5hdHRyaWJ1dGVzWydmb3JtJ10udmFsdWUgPSAnJzsKK3Nob3VsZEJlKCdvd25lci5l
bGVtZW50cy5sZW5ndGgnLCAnNScpOworc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzWzBdJywgJ2Jl
Zm9yZTEnKTsKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50c1sxXScsICdpbm5lcjEnKTsKK3Nob3Vs
ZEJlKCdvd25lci5lbGVtZW50c1syXScsICdpbm5lcjInKTsKK3Nob3VsZEJlKCdvd25lci5lbGVt
ZW50c1szXScsICdhZnRlcjEnKTsKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50c1s0XScsICdhZnRl
cjInKTsKK2JlZm9yZTIuYXR0cmlidXRlc1snZm9ybSddLnZhbHVlID0gJ293bmVyJzsKK3Nob3Vs
ZEJlKCdvd25lci5lbGVtZW50cy5sZW5ndGgnLCAnNicpOworc2hvdWxkQmUoJ293bmVyLmVsZW1l
bnRzWzBdJywgJ2JlZm9yZTEnKTsKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50c1sxXScsICdiZWZv
cmUyJyk7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHNbMl0nLCAnaW5uZXIxJyk7CitzaG91bGRC
ZSgnb3duZXIuZWxlbWVudHNbM10nLCAnaW5uZXIyJyk7CitzaG91bGRCZSgnb3duZXIuZWxlbWVu
dHNbNF0nLCAnYWZ0ZXIxJyk7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHNbNV0nLCAnYWZ0ZXIy
Jyk7CisKK2RlYnVnKCcnKTsKK2RlYnVnKCctIFRlc3QgZm9yIGNoYW5naW5nIHRoZSB2YWx1ZSBv
ZiB0aGUgZm9ybSBhdHRyaWJ1dGUgb2YgYSBlbGVtZW50IHdoaWNoIGlzIGxvY2F0ZWQgaW5zaWRl
IG9mIHRoZSBmb3JtIG93bmVyLicpOworaW5uZXIyLmF0dHJpYnV0ZXNbJ2Zvcm0nXS52YWx1ZSA9
ICcnOworc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzLmxlbmd0aCcsICc1Jyk7CitzaG91bGRCZSgn
b3duZXIuZWxlbWVudHNbMF0nLCAnYmVmb3JlMScpOworc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRz
WzFdJywgJ2JlZm9yZTInKTsKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50c1syXScsICdpbm5lcjEn
KTsKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50c1szXScsICdhZnRlcjEnKTsKK3Nob3VsZEJlKCdv
d25lci5lbGVtZW50c1s0XScsICdhZnRlcjInKTsKK2lubmVyMi5hdHRyaWJ1dGVzWydmb3JtJ10u
dmFsdWUgPSAnb3duZXInOworc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzLmxlbmd0aCcsICc2Jyk7
CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHNbMF0nLCAnYmVmb3JlMScpOworc2hvdWxkQmUoJ293
bmVyLmVsZW1lbnRzWzFdJywgJ2JlZm9yZTInKTsKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50c1sy
XScsICdpbm5lcjEnKTsKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50c1szXScsICdpbm5lcjInKTsK
K3Nob3VsZEJlKCdvd25lci5lbGVtZW50c1s0XScsICdhZnRlcjEnKTsKK3Nob3VsZEJlKCdvd25l
ci5lbGVtZW50c1s1XScsICdhZnRlcjInKTsKKworZGVidWcoJycpOworZGVidWcoJy0gVGVzdCBm
b3IgY2hhbmdpbmcgdGhlIHZhbHVlIG9mIHRoZSBmb3JtIGF0dHJpYnV0ZSBvZiBhIGVsZW1lbnQg
d2hpY2ggaXMgbG9jYXRlZCBhZnRlciB0aGUgZm9ybSBvd25lci4nKTsKK2FmdGVyMS5hdHRyaWJ1
dGVzWydmb3JtJ10udmFsdWUgPSAnJzsKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50cy5sZW5ndGgn
LCAnNScpOworc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzWzBdJywgJ2JlZm9yZTEnKTsKK3Nob3Vs
ZEJlKCdvd25lci5lbGVtZW50c1sxXScsICdiZWZvcmUyJyk7CitzaG91bGRCZSgnb3duZXIuZWxl
bWVudHNbMl0nLCAnaW5uZXIxJyk7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHNbM10nLCAnaW5u
ZXIyJyk7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHNbNF0nLCAnYWZ0ZXIyJyk7CithZnRlcjEu
YXR0cmlidXRlc1snZm9ybSddLnZhbHVlID0gJ293bmVyJzsKK3Nob3VsZEJlKCdvd25lci5lbGVt
ZW50cy5sZW5ndGgnLCAnNicpOworc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzWzBdJywgJ2JlZm9y
ZTEnKTsKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50c1sxXScsICdiZWZvcmUyJyk7CitzaG91bGRC
ZSgnb3duZXIuZWxlbWVudHNbMl0nLCAnaW5uZXIxJyk7CitzaG91bGRCZSgnb3duZXIuZWxlbWVu
dHNbM10nLCAnaW5uZXIyJyk7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHNbNF0nLCAnYWZ0ZXIx
Jyk7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHNbNV0nLCAnYWZ0ZXIyJyk7CisKK2RlYnVnKCcn
KTsKK2RlYnVnKCctIFRlc3QgZm9yIHNldHRpbmcgZm9ybSBhdHRyaWJ1dGUgb2YgZWxlbWVudHMg
aW4gcmV2ZXJzZSBvcmRlci4nKTsKK2JlZm9yZTEuYXR0cmlidXRlc1snZm9ybSddLnZhbHVlID0g
Jyc7CitiZWZvcmUyLmF0dHJpYnV0ZXNbJ2Zvcm0nXS52YWx1ZSA9ICcnOworaW5uZXIxLmF0dHJp
YnV0ZXNbJ2Zvcm0nXS52YWx1ZSA9ICcnOworaW5uZXIyLmF0dHJpYnV0ZXNbJ2Zvcm0nXS52YWx1
ZSA9ICcnOworYWZ0ZXIxLmF0dHJpYnV0ZXNbJ2Zvcm0nXS52YWx1ZSA9ICcnOworYWZ0ZXIyLmF0
dHJpYnV0ZXNbJ2Zvcm0nXS52YWx1ZSA9ICcnOworCithZnRlcjIuYXR0cmlidXRlc1snZm9ybSdd
LnZhbHVlID0gJ293bmVyJzsKK2FmdGVyMS5hdHRyaWJ1dGVzWydmb3JtJ10udmFsdWUgPSAnb3du
ZXInOworaW5uZXIyLmF0dHJpYnV0ZXNbJ2Zvcm0nXS52YWx1ZSA9ICdvd25lcic7Citpbm5lcjEu
YXR0cmlidXRlc1snZm9ybSddLnZhbHVlID0gJ293bmVyJzsKK2JlZm9yZTIuYXR0cmlidXRlc1sn
Zm9ybSddLnZhbHVlID0gJ293bmVyJzsKK2JlZm9yZTEuYXR0cmlidXRlc1snZm9ybSddLnZhbHVl
ID0gJ293bmVyJzsKKworc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzLmxlbmd0aCcsICc2Jyk7Citz
aG91bGRCZSgnb3duZXIuZWxlbWVudHNbMF0nLCAnYmVmb3JlMScpOworc2hvdWxkQmUoJ293bmVy
LmVsZW1lbnRzWzFdJywgJ2JlZm9yZTInKTsKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50c1syXScs
ICdpbm5lcjEnKTsKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50c1szXScsICdpbm5lcjInKTsKK3No
b3VsZEJlKCdvd25lci5lbGVtZW50c1s0XScsICdhZnRlcjEnKTsKK3Nob3VsZEJlKCdvd25lci5l
bGVtZW50c1s1XScsICdhZnRlcjInKTsKKworZGVidWcoJycpOworZGVidWcoJy0gVGVzdCBmb3Ig
c2V0dGluZyBmb3JtIGF0dHJpYnV0ZSBvZiBlbGVtZW50cyBpbiByYW5kb20gb3JkZXIuJyk7Citi
ZWZvcmUxLmF0dHJpYnV0ZXNbJ2Zvcm0nXS52YWx1ZSA9ICcnOworYmVmb3JlMi5hdHRyaWJ1dGVz
Wydmb3JtJ10udmFsdWUgPSAnJzsKK2lubmVyMS5hdHRyaWJ1dGVzWydmb3JtJ10udmFsdWUgPSAn
JzsKK2lubmVyMi5hdHRyaWJ1dGVzWydmb3JtJ10udmFsdWUgPSAnJzsKK2FmdGVyMS5hdHRyaWJ1
dGVzWydmb3JtJ10udmFsdWUgPSAnJzsKK2FmdGVyMi5hdHRyaWJ1dGVzWydmb3JtJ10udmFsdWUg
PSAnJzsKKworYWZ0ZXIxLmF0dHJpYnV0ZXNbJ2Zvcm0nXS52YWx1ZSA9ICdvd25lcic7CitiZWZv
cmUxLmF0dHJpYnV0ZXNbJ2Zvcm0nXS52YWx1ZSA9ICdvd25lcic7Citpbm5lcjIuYXR0cmlidXRl
c1snZm9ybSddLnZhbHVlID0gJ293bmVyJzsKK2JlZm9yZTIuYXR0cmlidXRlc1snZm9ybSddLnZh
bHVlID0gJ293bmVyJzsKK2FmdGVyMi5hdHRyaWJ1dGVzWydmb3JtJ10udmFsdWUgPSAnb3duZXIn
OworaW5uZXIxLmF0dHJpYnV0ZXNbJ2Zvcm0nXS52YWx1ZSA9ICdvd25lcic7CisKK3Nob3VsZEJl
KCdvd25lci5lbGVtZW50cy5sZW5ndGgnLCAnNicpOworc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRz
WzBdJywgJ2JlZm9yZTEnKTsKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50c1sxXScsICdiZWZvcmUy
Jyk7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHNbMl0nLCAnaW5uZXIxJyk7CitzaG91bGRCZSgn
b3duZXIuZWxlbWVudHNbM10nLCAnaW5uZXIyJyk7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHNb
NF0nLCAnYWZ0ZXIxJyk7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHNbNV0nLCAnYWZ0ZXIyJyk7
CisKK2RlYnVnKCcnKTsKK2RlYnVnKCctIFRlc3QgZm9yIHJlbW92aW5nL2FkZGluZyBlbGVtZW50
cycpOworY29udGFpbmVyLnJlbW92ZUNoaWxkKGJlZm9yZTIpOworb3duZXIucmVtb3ZlQ2hpbGQo
aW5uZXIyKTsKK2NvbnRhaW5lci5yZW1vdmVDaGlsZChhZnRlcjEpOworc2hvdWxkQmUoJ293bmVy
LmVsZW1lbnRzLmxlbmd0aCcsICczJyk7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHNbMF0nLCAn
YmVmb3JlMScpOworc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzWzFdJywgJ2lubmVyMScpOworc2hv
dWxkQmUoJ293bmVyLmVsZW1lbnRzWzJdJywgJ2FmdGVyMicpOworY29udGFpbmVyLmluc2VydEJl
Zm9yZShiZWZvcmUyLCBvd25lcik7Citvd25lci5hcHBlbmRDaGlsZChpbm5lcjIpOworY29udGFp
bmVyLmluc2VydEJlZm9yZShhZnRlcjEsIGFmdGVyMik7CitzaG91bGRCZSgnb3duZXIuZWxlbWVu
dHMubGVuZ3RoJywgJzYnKTsKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50c1swXScsICdiZWZvcmUx
Jyk7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHNbMV0nLCAnYmVmb3JlMicpOworc2hvdWxkQmUo
J293bmVyLmVsZW1lbnRzWzJdJywgJ2lubmVyMScpOworc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRz
WzNdJywgJ2lubmVyMicpOworc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzWzRdJywgJ2FmdGVyMScp
Oworc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzWzVdJywgJ2FmdGVyMicpOworCit2YXIgc3VjY2Vz
c2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMv
c2NyaXB0LXRlc3RzL2Zvcm0tYXR0cmlidXRlLWVsZW1lbnRzLW9yZGVyMi5qcyBiL0xheW91dFRl
c3RzL2Zhc3QvZm9ybXMvc2NyaXB0LXRlc3RzL2Zvcm0tYXR0cmlidXRlLWVsZW1lbnRzLW9yZGVy
Mi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZDdmNzk5N2ViNWE5NjJlOTExM2FlY2UwYjFiNTEwODg3OTYwYzg1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zY3JpcHQtdGVzdHMv
Zm9ybS1hdHRyaWJ1dGUtZWxlbWVudHMtb3JkZXIyLmpzCkBAIC0wLDAgKzEsOTggQEAKK2Rlc2Ny
aXB0aW9uKCJUaGlzIHRlc3QgZXhhbWluZXMgdGhlIG9yZGVyIG9mIHRoZSBlbGVtZW50cyBhdHRy
aWJ1dGUgb2YgYSBmb3JtIGVsZW1lbnQgd2l0aCBmb3JtLWFzc29jaWF0ZWQgZWxlbWVudHMgd2l0
aCBmb3JtIGF0dHJpYnV0ZSBvciB3aXRvdXQgZm9ybSBhdHRpYnV0ZS4iKTsKKwordmFyIGNvbnRh
aW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworZG9jdW1lbnQuYm9keS5hcHBl
bmRDaGlsZChjb250YWluZXIpOworCitkZWJ1ZygnJyk7CitkZWJ1ZygnLSBUZXN0IGZvciB0aGUg
Y2FzZSB3aGVyZSBzb21lIGVsZW1lbnRzIGhhdmUgZm9ybSBhdHRyaWJ1dGUgYnV0IHNvbWUgb3Ro
ZXJzIG5vdC4nKTsKK2NvbnRhaW5lci5pbm5lckhUTUwgPSAnPGZvcm0gaWQ9b3duZXI+JyArCisg
ICAgJyAgICA8aW5wdXQgaWQ9aW5wdXQxIG5hbWU9dmljdGltIC8+JyArCisgICAgJyAgICA8aW5w
dXQgaWQ9aW5wdXQyIG5hbWU9dmljdGltIGZvcm09b3duZXIgLz4nICsKKyAgICAnICAgIDxpbnB1
dCBpZD1pbnB1dDMgbmFtZT12aWN0aW0gLz4nICsKKyAgICAnPC9mb3JtPic7Cit2YXIgb3duZXIg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnb3duZXInKTsKK3ZhciBpbnB1dDEgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnaW5wdXQxJyk7Cit2YXIgaW5wdXQyID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2lucHV0MicpOwordmFyIGlucHV0MyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdpbnB1dDMnKTsKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50cy5sZW5ndGgnLCAnMycpOworc2hv
dWxkQmUoJ293bmVyLmVsZW1lbnRzWzBdJywgJ2lucHV0MScpOworc2hvdWxkQmUoJ293bmVyLmVs
ZW1lbnRzWzFdJywgJ2lucHV0MicpOworc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzWzJdJywgJ2lu
cHV0MycpOworCitjb250YWluZXIuaW5uZXJIVE1MID0gJzxmb3JtIGlkPW93bmVyPicgKworICAg
ICcgICAgPGlucHV0IGlkPWlucHV0MSBuYW1lPXZpY3RpbSBmb3JtPW93bmVyIC8+JyArCisgICAg
JyAgICA8aW5wdXQgaWQ9aW5wdXQyIG5hbWU9dmljdGltIC8+JyArCisgICAgJyAgICA8aW5wdXQg
aWQ9aW5wdXQzIG5hbWU9dmljdGltIGZvcm09b3duZXIgLz4nICsKKyAgICAnPC9mb3JtPic7Citv
d25lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdvd25lcicpOworaW5wdXQxID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2lucHV0MScpOworaW5wdXQyID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2lucHV0MicpOworaW5wdXQzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2lucHV0
MycpOworc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzLmxlbmd0aCcsICczJyk7CitzaG91bGRCZSgn
b3duZXIuZWxlbWVudHNbMF0nLCAnaW5wdXQxJyk7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHNb
MV0nLCAnaW5wdXQyJyk7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHNbMl0nLCAnaW5wdXQzJyk7
CisKK2RlYnVnKCcnKTsKK2RlYnVnKCctIFRlc3QgZm9yIGluc2VydGluZy9yZW1vdmluZyBhIGZv
cm0tYXNzb2NpYXRlZCBlbGVtZW50IHdpdGhvdXQgZm9ybSBhdHRyaWJ1dGUuJyk7Citjb250YWlu
ZXIuaW5uZXJIVE1MID0gJzxpbnB1dCBuYW1lPXZpY3RpbSBpZD1iZWZvcmUgZm9ybT1vd25lciAv
PicgKworICAgICc8Zm9ybSBpZD1vd25lciBhY3Rpb249IG1ldGhvZD1HRVQ+JyArCisgICAgJyAg
ICA8aW5wdXQgbmFtZT12aWN0aW0gaWQ9aW5uZXIgLz4nICsKKyAgICAnPC9mb3JtPicgKworICAg
ICc8aW5wdXQgbmFtZT12aWN0aW0gaWQ9YWZ0ZXIgZm9ybT1vd25lciAvPic7Citvd25lciA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdvd25lcicpOwordmFyIGJlZm9yZSA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdiZWZvcmUnKTsKK3ZhciBpbm5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdpbm5lcicpOwordmFyIGFmdGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FmdGVy
Jyk7CisKK3ZhciBpbm5lcjIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpOworaW5u
ZXIyLm5hbWUgPSAndmljdGltJzsKK2lubmVyMi5pZCA9ICdpbm5lcjInOworb3duZXIuYXBwZW5k
Q2hpbGQoaW5uZXIyKTsKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50cy5sZW5ndGgnLCAnNCcpOwor
c2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzWzBdJywgJ2JlZm9yZScpOworc2hvdWxkQmUoJ293bmVy
LmVsZW1lbnRzWzFdJywgJ2lubmVyJyk7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHNbMl0nLCAn
aW5uZXIyJyk7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHNbM10nLCAnYWZ0ZXInKTsKKworb3du
ZXIucmVtb3ZlQ2hpbGQoaW5uZXIpOworb3duZXIuaW5zZXJ0QmVmb3JlKGlubmVyLCBpbm5lcjIp
Oworc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzLmxlbmd0aCcsICc0Jyk7CitzaG91bGRCZSgnb3du
ZXIuZWxlbWVudHNbMF0nLCAnYmVmb3JlJyk7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHNbMV0n
LCAnaW5uZXInKTsKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50c1syXScsICdpbm5lcjInKTsKK3No
b3VsZEJlKCdvd25lci5lbGVtZW50c1szXScsICdhZnRlcicpOworCitkZWJ1ZygnJyk7CitkZWJ1
ZygnLSBUZXN0IGZvciBpbnNlcnRpbmcvcmVtb3ZpbmcgYSBmb3JtLWFzc29jaWF0ZWQgZWxlbWVu
dCB3aXRoIGZvcm0gYXR0cmlidXRlLicpOwordmFyIGJlZm9yZTIgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdpbnB1dCcpOworYmVmb3JlMi5uYW1lID0gJ3ZpY3RpbSc7CitiZWZvcmUyLmlkID0g
J2JlZm9yZTInOworYmVmb3JlMi5zZXRBdHRyaWJ1dGUoJ2Zvcm0nLCAnb3duZXInKTsKK2NvbnRh
aW5lci5pbnNlcnRCZWZvcmUoYmVmb3JlMiwgb3duZXIpOwordmFyIGFmdGVyMiA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7CithZnRlcjIubmFtZSA9ICd2aWN0aW0nOworYWZ0ZXIy
LmlkID0gJ2FmdGVyMic7CithZnRlcjIuc2V0QXR0cmlidXRlKCdmb3JtJywgJ293bmVyJyk7Citj
b250YWluZXIuYXBwZW5kQ2hpbGQoYWZ0ZXIyKTsKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50cy5s
ZW5ndGgnLCAnNicpOworc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzWzBdJywgJ2JlZm9yZScpOwor
c2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzWzFdJywgJ2JlZm9yZTInKTsKK3Nob3VsZEJlKCdvd25l
ci5lbGVtZW50c1syXScsICdpbm5lcicpOworc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzWzNdJywg
J2lubmVyMicpOworc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzWzRdJywgJ2FmdGVyJyk7CitzaG91
bGRCZSgnb3duZXIuZWxlbWVudHNbNV0nLCAnYWZ0ZXIyJyk7CisKK2NvbnRhaW5lci5yZW1vdmVD
aGlsZChiZWZvcmUpOworY29udGFpbmVyLnJlbW92ZUNoaWxkKGFmdGVyKTsKK2NvbnRhaW5lci5p
bnNlcnRCZWZvcmUoYmVmb3JlLCBiZWZvcmUyKTsKK2NvbnRhaW5lci5pbnNlcnRCZWZvcmUoYWZ0
ZXIsIGFmdGVyMik7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHMubGVuZ3RoJywgJzYnKTsKK3No
b3VsZEJlKCdvd25lci5lbGVtZW50c1swXScsICdiZWZvcmUnKTsKK3Nob3VsZEJlKCdvd25lci5l
bGVtZW50c1sxXScsICdiZWZvcmUyJyk7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHNbMl0nLCAn
aW5uZXInKTsKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50c1szXScsICdpbm5lcjInKTsKK3Nob3Vs
ZEJlKCdvd25lci5lbGVtZW50c1s0XScsICdhZnRlcicpOworc2hvdWxkQmUoJ293bmVyLmVsZW1l
bnRzWzVdJywgJ2FmdGVyMicpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2NyaXB0LXRlc3RzL2Zvcm0tYXR0cmli
dXRlLWVsZW1lbnRzLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zY3JpcHQtdGVzdHMvZm9y
bS1hdHRyaWJ1dGUtZWxlbWVudHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzgyNjQ0N2Q4MTMxODAyNGFjMTA0
YTQ0MzVkMzRhNmY0Y2UxOGIzZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvc2NyaXB0LXRlc3RzL2Zvcm0tYXR0cmlidXRlLWVsZW1lbnRzLmpzCkBAIC0wLDAgKzEs
NDIgQEAKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgY2hlY2tzIGEgZm9ybSBlbGVtZW50IGNhbiBo
YW5kbGUgZWxlbWVudHMgb2Ygd2hpY2ggZm9ybSBhdHRyaWJ1dGUgcG9pbnRzIHRoZSBmb3JtIGVs
ZW1lbnQgZXZlbiBpZiBlbGVtZW50cyBhcmUgb3V0c2lkZSBvZiB0aGUgZm9ybS4iKTsKKworaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53
YWl0VW50aWxEb25lKCk7CisKK3ZhciBjb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdkaXYnKTsKK2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoY29udGFpbmVyKTsKKworY29udGFp
bmVyLmlubmVySFRNTCA9ICc8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1rZXkxIHZhbHVlPXZhbHVl
MSBpZD1vdXRlci1iZWZvcmUgZm9ybT1vd25lciAvPicgKworICAgICc8Zm9ybSBpZD1vd25lciBh
Y3Rpb249IiIgbWV0aG9kPSJHRVQiPicgKworICAgICcgICAgPGlucHV0IHR5cGU9aGlkZGVuIG5h
bWU9a2V5MiB2YWx1ZT12YWx1ZTIgaWQ9aW5uZXIgZm9ybT1vd25lciAvPicgKworICAgICc8L2Zv
cm0+JyArCisgICAgJzxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPXN1Ym1pdHRlZCB2YWx1ZT10cnVl
IGlkPW91dGVyLWFmdGVyIGZvcm09b3duZXIgLz4nOworCit2YXIgb3duZXIgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnb3duZXInKTsKK3ZhciBvdXRlckJlZm9yZSA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdvdXRlci1iZWZvcmUnKTsKK3ZhciBpbm5lciA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdpbm5lcicpOwordmFyIG91dGVyQWZ0ZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnb3V0ZXItYWZ0ZXInKTsKK3ZhciBxdWVyeSA9IHdpbmRvdy5sb2NhdGlvbi5zZWFyY2g7CisK
K2lmIChxdWVyeS5pbmRleE9mKCdzdWJtaXR0ZWQ9dHJ1ZScpID09IC0xKSB7CisgICAgb3duZXIu
c3VibWl0KCk7Cit9IGVsc2UgeworICAgIGRlYnVnKCctIEVuc3VyZXMgdGhhdCBlbGVtZW50cyBh
dHRyaWJ1dGUgb2YgdGhlIGZvcm0gY29udGFpbnMgZWxlbWVudHMgd2hpY2ggYXJlIG91dHNpZGUg
b2YgdGhlIGZvcm0uJyk7CisKKyAgICBzaG91bGRCZSgnb3duZXIuZWxlbWVudHMubGVuZ3RoJywg
JzMnKTsKKyAgICBzaG91bGRCZSgnb3duZXIuZWxlbWVudHNbMF0nLCAnb3V0ZXJCZWZvcmUnKTsK
KyAgICBzaG91bGRCZSgnb3duZXIuZWxlbWVudHNbMV0nLCAnaW5uZXInKTsKKyAgICBzaG91bGRC
ZSgnb3duZXIuZWxlbWVudHNbMl0nLCAnb3V0ZXJBZnRlcicpOworCisgICAgZGVidWcoJycpOwor
ICAgIGRlYnVnKCctIEVuc3VyZXMgdGhhdCBmb3JtIHN1Ym1pc3Npb24gY29udGFpbnMgbmFtZSBh
bmQgdmFsdWUgcGFpcnMgZm9yIHN1Y2ggZWxlbWVudHMuJyk7CisgICAgdmFyIHBhaXJzID0gcXVl
cnkuc3Vic3RyKDEpLnNwbGl0KCcmJyk7CisgICAgc2hvdWxkQmUoJ3BhaXJzLmxlbmd0aCcsICcz
Jyk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdwYWlyc1swXScsICdrZXkxPXZhbHVlMScp
OworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygncGFpcnNbMV0nLCAna2V5Mj12YWx1ZTInKTsK
KyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3BhaXJzWzJdJywgJ3N1Ym1pdHRlZD10cnVlJyk7
CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0g
dHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2NyaXB0LXRlc3RzL2Zv
cm0tYXR0cmlidXRlLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zY3JpcHQtdGVzdHMvZm9y
bS1hdHRyaWJ1dGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjlhYjIyNWRiNDZiOTM4NWM4YjFlZDM0NTc4NTZm
ZTAzNTczOGE1OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2Ny
aXB0LXRlc3RzL2Zvcm0tYXR0cmlidXRlLmpzCkBAIC0wLDAgKzEsMTE0IEBACitkZXNjcmlwdGlv
bigiVGhpcyB0ZXN0IGNoZWNrcyB0aGUgZm9ybSBhdHRyaWJ1dGUgb2YgdGhlIGZvcm0tYXNzb2Np
YXRlZCBlbGVtZW50cy4iKTsKKwordmFyIGNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ2RpdicpOworZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChjb250YWluZXIpOworCitkZWJ1
ZygnLSBDaGVja3MgdGhlIGV4aXN0ZW5jZSBvZiB0aGUgZm9ybSBhdHRyaWJ1dGUgZm9yIGVhY2gg
Zm9ybS1hc3NvY2lhdGVkIGVsZW1lbnRzLicpOworZGVidWcoJ0ZJWE1FOiAmbHQ7bGFiZWwmZ3Q7
IGFuZCAmbHQ7b2JqZWN0Jmd0OyBkb25cJ3Qgc3VwcG9ydCB0aGUgZm9ybSBhdHRyaWJ1dGUgZm9y
IG5vdy4nKTsKK2NvbnRhaW5lci5pbm5lckhUTUwgPSAnPGZvcm0gaWQ9b3duZXI+PC9mb3JtPicg
KworICAgICc8YnV0dG9uIG5hbWU9dmljdGltIGZvcm09b3duZXIgLz4nICsKKyAgICAnPGZpZWxk
c2V0IG5hbWU9dmljdGltIGZvcm09b3duZXIgLz4nICsKKyAgICAnPGlucHV0IG5hbWU9dmljdGlt
IGZvcm09b3duZXIgLz4nICsKKyAgICAnPGtleWdlbiBuYW1lPXZpY3RpbSBmb3JtPW93bmVyIC8+
JyArCisgICAgJzxtZXRlciBuYW1lPXZpY3RpbSBmb3JtPW93bmVyIC8+JyArCisgICAgJzxvdXRw
dXQgbmFtZT12aWN0aW0gZm9ybT1vd25lciAvPicgKworICAgICc8cHJvZ3Jlc3MgbmFtZT12aWN0
aW0gZm9ybT1vd25lciAvPicgKworICAgICc8c2VsZWN0IG5hbWU9dmljdGltIGZvcm09b3duZXIg
Lz4nICsKKyAgICAnPHRleHRhcmVhIG5hbWU9dmljdGltIGZvcm09b3duZXIgLz4nOwordmFyIG93
bmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ293bmVyJyk7CitzaG91bGRCZSgnZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJ1dHRvbiIpWzBdLmZvcm0nLCAnb3duZXInKTsKK3No
b3VsZEJlKCdkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiZmllbGRzZXQiKVswXS5mb3Jt
JywgJ293bmVyJyk7CitzaG91bGRCZSgnZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImlu
cHV0IilbMF0uZm9ybScsICdvd25lcicpOworc2hvdWxkQmUoJ2RvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJrZXlnZW4iKVswXS5mb3JtJywgJ293bmVyJyk7CitzaG91bGRCZSgnZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIm1ldGVyIilbMF0uZm9ybScsICdvd25lcicpOworc2hv
dWxkQmUoJ2RvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJvdXRwdXQiKVswXS5mb3JtJywg
J293bmVyJyk7CitzaG91bGRCZSgnZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInByb2dy
ZXNzIilbMF0uZm9ybScsICdvd25lcicpOworc2hvdWxkQmUoJ2RvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJzZWxlY3QiKVswXS5mb3JtJywgJ293bmVyJyk7CitzaG91bGRCZSgnZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRhcmVhIilbMF0uZm9ybScsICdvd25lcicpOwor
CitkZWJ1ZygnJyk7CitkZWJ1ZygnLSBFbnN1cmVzIHRoYXQgdGhlIGZvcm0gYXR0cmlidXRlIHBv
aW50cyB0aGUgZm9ybSBvd25lciBldmVuIGlmIHRoZSBlbGVtZW50IGlzIHdpdGhpbiBhbm90aGVy
IGZvcm0gZWxlbWVudC4nKTsKK2NvbnRhaW5lci5pbm5lckhUTUwgPSAnPGZvcm0gaWQ9b3duZXI+
PC9mb3JtPicgKworICAgICc8Zm9ybSBpZD1zaG91bGROb3RCZU93bmVyPicgKworICAgICcgICAg
PGlucHV0IGlkPWlucHV0RWxlbWVudCBuYW1lPXZpY3RpbSBmb3JtPW93bmVyIC8+JyArCisgICAg
JzwvZm9ybT4nOworb3duZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnb3duZXInKTsKK3Zh
ciBpbnB1dEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW5wdXRFbGVtZW50Jyk7
CitzaG91bGRCZSgnaW5wdXRFbGVtZW50LmZvcm0nLCAnb3duZXInKTsKKworZGVidWcoJycpOwor
ZGVidWcoJy0gRW5zdXJlcyB0aGF0IHRoZSBmb3JtIGF0dHJpYnV0ZSBvZiBhbGwgZm9ybS1hc3Nv
Y2lhdGVkIGVsZW1lbnQgd2l0aCBvciB3aXRvdXQgZm9ybSBhdHRyaWJ1dGUgcG9pbnRzIHRoZSBm
b3JtIG93bmVyLicpOworY29udGFpbmVyLmlubmVySFRNTCA9ICc8Zm9ybSBpZD1vd25lcj4nICsK
KyAgICAnICAgIDxpbnB1dCBpZD1pbnB1dEVsZW1lbnQxIG5hbWU9dmljdGltIC8+JyArCisgICAg
JyAgICA8aW5wdXQgaWQ9aW5wdXRFbGVtZW50MiBuYW1lPXZpY3RpbSBmb3JtPW93bmVyIC8+JyAr
CisgICAgJyAgICA8aW5wdXQgaWQ9aW5wdXRFbGVtZW50MyBuYW1lPXZpY3RpbSAvPicgKworICAg
ICc8L2Zvcm0+JzsKK293bmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ293bmVyJyk7Cit2
YXIgaW5wdXRFbGVtZW50MSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbnB1dEVsZW1lbnQx
Jyk7Cit2YXIgaW5wdXRFbGVtZW50MiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbnB1dEVs
ZW1lbnQyJyk7Cit2YXIgaW5wdXRFbGVtZW50MyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdp
bnB1dEVsZW1lbnQzJyk7CitzaG91bGRCZSgnaW5wdXRFbGVtZW50MS5mb3JtJywgJ293bmVyJyk7
CitzaG91bGRCZSgnaW5wdXRFbGVtZW50Mi5mb3JtJywgJ293bmVyJyk7CitzaG91bGRCZSgnaW5w
dXRFbGVtZW50My5mb3JtJywgJ293bmVyJyk7CisKK2RlYnVnKCcnKTsKK2RlYnVnKCctIEVuc3Vy
ZXMgdGhhdCB0aGUgZm9ybSBhdHRyaWJ1dGUgcG9pbnRzIHRoZSBmb3JtIG93bmVyIGV2ZW4gaWYg
dGhlIGZvcm0gZWxlbWVudCBpcyBuZXN0ZWQgYW5vdGhlciBmb3JtIGVsZW1lbnQuJyk7CitkZWJ1
ZygnTk9URTogSXQgc2VlbXMgdGhhdCBuZXN0aW5nIGZvcm0gZWxlbWVudHMgaXMgbm90IGFsbG93
ZWQgc28gd2UgZW5zdXJlIGVhY2ggZm9ybS1hc3NvY2lhdGVkIGVsZW1lbnRzIGFzc29jaWF0ZSB3
aXRoIHRoZSBvdXRtb3N0IGZvcm0gZWxlbWVudC4nKTsKK2NvbnRhaW5lci5pbm5lckhUTUwgPSAn
PGZvcm0gaWQ9b3duZXI+JyArCisgICAgJyAgICA8Zm9ybT4nICsKKyAgICAnICAgICAgICA8aW5w
dXQgaWQ9aW5wdXRFbGVtZW50MSBuYW1lPXZpY3RpbSBmb3JtPW93bmVyLz4nICsKKyAgICAnICAg
ICAgICA8aW5wdXQgaWQ9aW5wdXRFbGVtZW50MiBuYW1lPXZpY3RpbSAvPicgKworICAgICcgICAg
ICAgIDxpbnB1dCBpZD1pbnB1dEVsZW1lbnQzIG5hbWU9dmljdGltIGZvcm09b3duZXIvPicgKwor
ICAgICcgICAgPC9mb3JtPicgKworICAgICc8L2Zvcm0+JzsKK293bmVyID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ293bmVyJyk7CitpbnB1dEVsZW1lbnQxID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2lucHV0RWxlbWVudDEnKTsKK2lucHV0RWxlbWVudDIgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnaW5wdXRFbGVtZW50MicpOworaW5wdXRFbGVtZW50MyA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdpbnB1dEVsZW1lbnQzJyk7CitzaG91bGRCZSgnaW5wdXRFbGVtZW50MS5mb3Jt
JywgJ293bmVyJyk7CitzaG91bGRCZSgnaW5wdXRFbGVtZW50Mi5mb3JtJywgJ293bmVyJyk7Citz
aG91bGRCZSgnaW5wdXRFbGVtZW50My5mb3JtJywgJ293bmVyJyk7CisKK2RlYnVnKCcnKTsKK2Rl
YnVnKCctIEVuc3VyZXMgd2hldGhlciB0aGUgZm9ybSBvd25lciBpcyBzZXQgY29ycmVjdGx5IHdo
ZW4gdGhlIHZhbHVlIG9mIGZvcm0gYXR0cmlidXRlIG9mIGEgZm9ybS1hc3NvY2lhdGVkIGVsZW1l
bnQgY2hhbmdlZC4nKTsKK2NvbnRhaW5lci5pbm5lckhUTUwgPSAnPGZvcm0gaWQ9Zm9ybTE+PC9m
b3JtPicgKworICAgICc8Zm9ybSBpZD1mb3JtMj48L2Zvcm0+JyArCisgICAgJzxpbnB1dCBpZD1p
bnB1dEVsZW1lbnQgbmFtZT12aWN0aW0gZm9ybT1mb3JtMSAvPic7Cit2YXIgZm9ybTEgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnZm9ybTEnKTsKK3ZhciBmb3JtMiA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdmb3JtMicpOworaW5wdXRFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2lucHV0RWxlbWVudCcpOworc2hvdWxkQmUoJ2lucHV0RWxlbWVudC5mb3JtJywgJ2Zvcm0x
Jyk7CitpbnB1dEVsZW1lbnQuYXR0cmlidXRlc1snZm9ybSddLnZhbHVlID0gJ2Zvcm0yJzsKK3No
b3VsZEJlKCdpbnB1dEVsZW1lbnQuZm9ybScsICdmb3JtMicpOworCitkZWJ1ZygnJyk7CitkZWJ1
ZygnLSBFbnN1cmVzIHdoZXRoZXIgdGhlIGZvcm0gb3duZXIgaXMgc2V0IGNvcnJlY3RseSB3aGVu
IHRoZSB2YWx1ZSBvZiBmb3JtIGF0dHJpYnV0ZSBpcyBhZGRlZC9yZW1vdmVkLicpOworY29udGFp
bmVyLmlubmVySFRNTCA9ICc8Zm9ybSBpZD1vd25lciBuYW1lPWZpcnN0T3duZXI+PC9mb3JtPicg
KworICAgICc8aW5wdXQgaWQ9aW5wdXRFbGVtZW50IG5hbWU9dmljdGltIC8+JzsKK293bmVyID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ293bmVyJyk7CitpbnB1dEVsZW1lbnQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnaW5wdXRFbGVtZW50Jyk7CitzaG91bGRCZSgnaW5wdXRFbGVtZW50
LmZvcm0nLCAnbnVsbCcpOwordmFyIGZvcm1BdHRyaWJ1dGUgPSBkb2N1bWVudC5jcmVhdGVBdHRy
aWJ1dGUoJ2Zvcm0nKTsKK2lucHV0RWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2Zvcm0nLCAnb3duZXIn
KTsKK3Nob3VsZEJlKCdpbnB1dEVsZW1lbnQuZm9ybScsICdvd25lcicpOworaW5wdXRFbGVtZW50
LnJlbW92ZUF0dHJpYnV0ZSgnZm9ybScpOworc2hvdWxkQmUoJ2lucHV0RWxlbWVudC5mb3JtJywg
J251bGwnKTsKKworZGVidWcoJycpOworZGVidWcoJy0gRW5zdXJlcyB3aGV0aGVyIHRoZSBmb3Jt
IG93bmVyIGlzIHNldCBjb3JyZWN0bHkgd2hlbiB0aGUgZm9ybSBvd25lciBpcyBhZGRlZC9yZW1v
dmVkLicpOworY29udGFpbmVyLmlubmVySFRNTCA9ICc8Zm9ybSBpZD1vd25lciBuYW1lPWZpcnN0
T3duZXI+PC9mb3JtPicgKworICAgICc8Zm9ybSBpZD1vd25lciBuYW1lPXNlY29uZE93bmVyPjwv
Zm9ybT4nICsKKyAgICAnPGlucHV0IGlkPWlucHV0RWxlbWVudCBuYW1lPXZpY3RpbSBmb3JtPW93
bmVyIC8+JzsKK293bmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ293bmVyJyk7CitzaG91
bGRCZUVxdWFsVG9TdHJpbmcoJ293bmVyLm5hbWUnLCAnZmlyc3RPd25lcicpOworaW5wdXRFbGVt
ZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2lucHV0RWxlbWVudCcpOworY29udGFpbmVy
LnJlbW92ZUNoaWxkKG93bmVyKTsKK293bmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ293
bmVyJyk7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ293bmVyLm5hbWUnLCAnc2Vjb25kT3duZXIn
KTsKK3Nob3VsZEJlKCdpbnB1dEVsZW1lbnQuZm9ybScsICdvd25lcicpOworY29udGFpbmVyLnJl
bW92ZUNoaWxkKG93bmVyKTsKK3Nob3VsZEJlKCdpbnB1dEVsZW1lbnQuZm9ybScsICdudWxsJyk7
Citjb250YWluZXIuYXBwZW5kQ2hpbGQob3duZXIpOworc2hvdWxkQmUoJ2lucHV0RWxlbWVudC5m
b3JtJywgJ293bmVyJyk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2MjJmNmE5
ODRkYmNmODIyNWJkMDg1MWY4MWU4YWNlOTRhNjBmYmZhLi5jNmQwMTRiNWI1YWRmYTVhYTM4OTVm
NjAwMTAyNjVkZmFiZjZhNzVjIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDEwLTExLTExICBLZW5pY2hpIElz
aGliYXNoaSAgPGJhc2hpQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgW0hUTUw1XSAiZm9ybSIgYXR0cmlidXRlIHN1cHBvcnQgZm9y
IGZvcm0gY29udHJvbCBlbGVtZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NDc4MTMKKworICAgICAgICBBZGRzIGEgbGlzdCBvZiBmb3JtLWFzc29j
aWF0ZWQgZWxlbWVudHMgd2l0aCBmb3JtIGF0dHJpYnV0ZSBpbnRvCisgICAgICAgIHRoZSBEb2N1
bWVudCBjbGFzcyB0byBzdXBwb3J0IGZvcm0gYXR0cmlidXRlLgorICAgICAgICBJbXBsZW1lbnRz
IHNvbWUgZnVuY3Rpb25zIHRvIGRldGVybWluZSB0aGUgcmlnaHQgcGxhY2UgdG8gbG9jYXRlCisg
ICAgICAgIGZvcm0tYXNzb2NpYXRlZCBlbGVtZW50cyBpbnRvICJlbGVtZW50cyIgYXR0cmlidXRl
IG9mIGZvcm0gZWxlbWVudHMuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvZm9ybXMvZm9ybS1hdHRy
aWJ1dGUtZWxlbWVudHMtb3JkZXIuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9mb3Jtcy9mb3Jt
LWF0dHJpYnV0ZS1lbGVtZW50cy1vcmRlcjIuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9mb3Jt
cy9mb3JtLWF0dHJpYnV0ZS1lbGVtZW50cy5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Zvcm1z
L2Zvcm0tYXR0cmlidXRlLmh0bWwKKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cmVnaXN0ZXJGb3JtRWxlbWVudFdpdGhGb3JtQXR0cmli
dXRlKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6dW5yZWdpc3RlckZvcm1F
bGVtZW50V2l0aEZvcm1BdHRyaWJ1dGUpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50OjpyZXNldEZvcm1FbGVtZW50c093bmVyKTogQWRkZWQuCisgICAgICAgICogZG9tL0RvY3Vt
ZW50Lmg6IEFkZGVkIHRoZSBsaXN0IGZvciBlbGVtZW50cyB3aXRoIGZvcm0gYXR0cmlidXRlLgor
ICAgICAgICAqIGh0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluOiBBZGRlZCBmb3JtIGF0dHJpYnV0
ZS4KKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6aW5zZXJ0ZWRJbnRvVHJlZSkgTW9kaWZp
ZWQgdG8gaGFuZGxlCisgICAgICAgIGZvcm0gYXR0cmlidXRlLgorICAgICAgICAoV2ViQ29yZTo6
SFRNTEZvcm1Db250cm9sRWxlbWVudDo6cmVtb3ZlZEZyb21UcmVlKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpyZXNldEZvcm1Pd25lcik6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6YXR0cmlidXRlQ2hh
bmdlZCk6IEFkZGVkLgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oOgor
ICAgICAgICAqIGh0bWwvSFRNTEZvcm1FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxGb3JtRWxlbWVudDo6SFRNTEZvcm1FbGVtZW50KTogTW9kaWZpZWQgdG8gaW5pdGlhbGl6ZQor
ICAgICAgICBuZXdseSBhZGRlZCB2YXJpYWJsZXMuCisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9y
bUVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KTogTW9kaWZpZWQgdG8gcmVzZXQKKyAgICAg
ICAgZm9ybSBvd25lciBvZiBmb3JtLWFzc29jaWF0ZWQgZWxlbWVudHMuCisgICAgICAgIChXZWJD
b3JlOjpIVE1MRm9ybUVsZW1lbnQ6OnJlbW92ZWRGcm9tRG9jdW1lbnQpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OmNvbXBhcmVUcmVlT3JkZXIpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
Om5vZGVEZXB0aCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50Ojpm
b3JtRWxlbWVudEluZGV4V2l0aEZvcm1BdHRyaWJ1dGUpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxGb3JtRWxlbWVudDo6Zm9ybUVsZW1lbnRJbmRleCk6IE1vZGlmaWVkIHRvIHRyZWF0
IGVsZW1lbnRzCisgICAgICAgIHdpdGggZm9ybSBhdHRyaWJ1dGUgc2VwYXJhdGVseS4KKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxGb3JtRWxlbWVudDo6cmVtb3ZlRm9ybUVsZW1lbnQpOiBNb2RpZmll
ZCB0byBoYW5kbGUgZWxlbWVudHMKKyAgICAgICAgd2l0aCBmb3JtIGF0dHJpYnV0ZSBjb3JyZWN0
bHkuCisgICAgICAgICogaHRtbC9IVE1MRm9ybUVsZW1lbnQuaDogQWRkZWQgdGhyZWUgdmFyaWFi
bGVzIHRvIGhhbmRsZSBmb3JtIGF0dHJpYnV0ZS4KKyAgICAgICAgKiBodG1sL0hUTUxPdXRwdXRF
bGVtZW50LmNwcDogUmVtb3ZlZCAiRklYTUUiIGNvbW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpI
VE1MT3V0cHV0RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOiBSZW1vdmVkIHNldEZvcm0o
KS4KKyAgICAgICAgKiBodG1sL0hUTUxPdXRwdXRFbGVtZW50Lmg6CisKIDIwMTAtMTEtMTEgIEph
bWVzIFNpbW9uc2VuICA8c2ltb25qYW1AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IFRvbnkgQ2hhbmcuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggN2Y3N2IzZWY0NGQ2MTZlNTVjNTdjYmQxZGU4
ZmYxYTVlOGZiYWJiZC4uYTRiNTFjYmJiOGM3NmQ2NTczMzEyOTM3MDA4MzkzZDVlZjE0NGMyNiAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcApAQCAtNDM2NSw2ICs0MzY1LDI1IEBAIHZvaWQgRG9jdW1lbnQ6OnNldEljb25V
UkwoY29uc3QgU3RyaW5nJiBpY29uVVJMLCBjb25zdCBTdHJpbmcmIHR5cGUpCiAgICAgICAgIGYt
PmxvYWRlcigpLT5zZXRJY29uVVJMKG1faWNvblVSTCk7CiB9CiAKK3ZvaWQgRG9jdW1lbnQ6OnJl
Z2lzdGVyRm9ybUVsZW1lbnRXaXRoRm9ybUF0dHJpYnV0ZShFbGVtZW50KiBlKQoreworICAgIEFT
U0VSVChlLT5mYXN0SGFzQXR0cmlidXRlKGZvcm1BdHRyKSk7CisgICAgbV9mb3JtRWxlbWVudHNX
aXRoRm9ybUF0dHJpYnV0ZS5hZGQoZSk7Cit9CisKK3ZvaWQgRG9jdW1lbnQ6OnVucmVnaXN0ZXJG
b3JtRWxlbWVudFdpdGhGb3JtQXR0cmlidXRlKEVsZW1lbnQqIGUpCit7CisgICAgbV9mb3JtRWxl
bWVudHNXaXRoRm9ybUF0dHJpYnV0ZS5yZW1vdmUoZSk7Cit9CisKK3ZvaWQgRG9jdW1lbnQ6OnJl
c2V0Rm9ybUVsZW1lbnRzT3duZXIoSFRNTEZvcm1FbGVtZW50KiBmb3JtKQoreworICAgIHR5cGVk
ZWYgRm9ybUVsZW1lbnRMaXN0SGFzaFNldDo6aXRlcmF0b3IgSXRlcmF0b3I7CisgICAgSXRlcmF0
b3IgZW5kID0gbV9mb3JtRWxlbWVudHNXaXRoRm9ybUF0dHJpYnV0ZS5lbmQoKTsKKyAgICBmb3Ig
KEl0ZXJhdG9yIGl0ID0gbV9mb3JtRWxlbWVudHNXaXRoRm9ybUF0dHJpYnV0ZS5iZWdpbigpOyBp
dCAhPSBlbmQ7ICsraXQpCisgICAgICAgIHN0YXRpY19jYXN0PEhUTUxGb3JtQ29udHJvbEVsZW1l
bnQqPigqaXQpLT5yZXNldEZvcm1Pd25lcihmb3JtKTsKK30KKwogdm9pZCBEb2N1bWVudDo6c2V0
VXNlU2VjdXJlS2V5Ym9hcmRFbnRyeVdoZW5BY3RpdmUoYm9vbCB1c2VzU2VjdXJlS2V5Ym9hcmQp
CiB7CiAgICAgaWYgKG1fdXNlU2VjdXJlS2V5Ym9hcmRFbnRyeVdoZW5BY3RpdmUgPT0gdXNlc1Nl
Y3VyZUtleWJvYXJkKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmgKaW5kZXggOGNjNjI3MjIwN2FlM2JmNTJhYjJkMDQzMzFlY2ZmNTcw
Y2ViMTkzMi4uNTUzZmZlMTE0MTllMTVjNTliYWI0OTI1MWMwYmY3MTExOTc2NmVlYiAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9XZWJDb3JlL2RvbS9Eb2N1bWVudC5o
CkBAIC00ODMsNiArNDgzLDEwIEBAIHB1YmxpYzoKICAgICBib29sIGhhc1N0YXRlRm9yTmV3Rm9y
bUVsZW1lbnRzKCkgY29uc3Q7CiAgICAgYm9vbCB0YWtlU3RhdGVGb3JGb3JtRWxlbWVudChBdG9t
aWNTdHJpbmdJbXBsKiBuYW1lLCBBdG9taWNTdHJpbmdJbXBsKiB0eXBlLCBTdHJpbmcmIHN0YXRl
KTsKIAorICAgIHZvaWQgcmVnaXN0ZXJGb3JtRWxlbWVudFdpdGhGb3JtQXR0cmlidXRlKEVsZW1l
bnQqIGUpOworICAgIHZvaWQgdW5yZWdpc3RlckZvcm1FbGVtZW50V2l0aEZvcm1BdHRyaWJ1dGUo
RWxlbWVudCogZSk7CisgICAgdm9pZCByZXNldEZvcm1FbGVtZW50c093bmVyKEhUTUxGb3JtRWxl
bWVudCopOworCiAgICAgRnJhbWVWaWV3KiB2aWV3KCkgY29uc3Q7IC8vIGNhbiBiZSBOVUxMCiAg
ICAgRnJhbWUqIGZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZTsgfSAvLyBjYW4gYmUgTlVM
TAogICAgIFBhZ2UqIHBhZ2UoKSBjb25zdDsgLy8gY2FuIGJlIE5VTEwKQEAgLTExOTcsNiArMTIw
MSw3IEBAIHByaXZhdGU6CiAKICAgICB0eXBlZGVmIExpc3RIYXNoU2V0PEVsZW1lbnQqLCA2ND4g
Rm9ybUVsZW1lbnRMaXN0SGFzaFNldDsKICAgICBGb3JtRWxlbWVudExpc3RIYXNoU2V0IG1fZm9y
bUVsZW1lbnRzV2l0aFN0YXRlOworICAgIEZvcm1FbGVtZW50TGlzdEhhc2hTZXQgbV9mb3JtRWxl
bWVudHNXaXRoRm9ybUF0dHJpYnV0ZTsKIAogICAgIHR5cGVkZWYgSGFzaE1hcDxGb3JtRWxlbWVu
dEtleSwgVmVjdG9yPFN0cmluZz4sIEZvcm1FbGVtZW50S2V5SGFzaCwgRm9ybUVsZW1lbnRLZXlI
YXNoVHJhaXRzPiBGb3JtRWxlbWVudFN0YXRlTWFwOwogICAgIEZvcm1FbGVtZW50U3RhdGVNYXAg
bV9zdGF0ZUZvck5ld0Zvcm1FbGVtZW50czsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1M
QXR0cmlidXRlTmFtZXMuaW4gYi9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCmlu
ZGV4IGQ5NzU5ZmNkYjBhODI0MDFhM2YwNWY1OGFhYWJkOWRjMjJjNjQ2ZmYuLjE4ODFiNmZiYTIy
OGRlOGI0MmE3OTM3ZTBlY2QxMjRlNmUzM2QxMTAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9I
VE1MQXR0cmlidXRlTmFtZXMuaW4KKysrIGIvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1l
cy5pbgpAQCAtOTQsNiArOTQsNyBAQCBleHBhbmRlZAogZmFjZQogZm9jdXNlZAogZm9yCitmb3Jt
CiBmb3Jtbm92YWxpZGF0ZQogZnJhbWUKIGZyYW1lYm9yZGVyCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTEZvcm1D
b250cm9sRWxlbWVudC5jcHAKaW5kZXggOGZhMDAwZjFiMWM3YTE0MDgwZjY3ZTRjZTk3NzJmMDVl
ZDgyYmI0NS4uMmY1ZDQxNGYzYjRkODgxZDdmY2U2ZGI3ODBiYTkxY2JjNWIxZDBlNyAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCisrKyBiL1dlYkNv
cmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcApAQCAtMTU0LDYgKzE1NCwxNiBAQCB2
b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmF0dGFjaCgpCiAKIHZvaWQgSFRNTEZvcm1Db250
cm9sRWxlbWVudDo6aW5zZXJ0ZWRJbnRvVHJlZShib29sIGRlZXApCiB7CisgICAgaWYgKGZhc3RI
YXNBdHRyaWJ1dGUoZm9ybUF0dHIpKSB7CisgICAgICAgIGRvY3VtZW50KCktPnJlZ2lzdGVyRm9y
bUVsZW1lbnRXaXRoRm9ybUF0dHJpYnV0ZSh0aGlzKTsKKyAgICAgICAgRWxlbWVudCogZWxlbWVu
dCA9IGRvY3VtZW50KCktPmdldEVsZW1lbnRCeUlkKGZhc3RHZXRBdHRyaWJ1dGUoZm9ybUF0dHIp
KTsKKyAgICAgICAgaWYgKGVsZW1lbnQgJiYgZWxlbWVudC0+aGFzVGFnTmFtZShmb3JtVGFnKSkg
eworICAgICAgICAgICAgaWYgKG1fZm9ybSkKKyAgICAgICAgICAgICAgICBtX2Zvcm0tPnJlbW92
ZUZvcm1FbGVtZW50KHRoaXMpOworICAgICAgICAgICAgbV9mb3JtID0gc3RhdGljX2Nhc3Q8SFRN
TEZvcm1FbGVtZW50Kj4oZWxlbWVudCk7CisgICAgICAgICAgICBtX2Zvcm0tPnJlZ2lzdGVyRm9y
bUVsZW1lbnQodGhpcyk7CisgICAgICAgIH0KKyAgICB9CiAgICAgaWYgKCFtX2Zvcm0pIHsKICAg
ICAgICAgLy8gVGhpcyBoYW5kbGVzIHRoZSBjYXNlIG9mIGEgbmV3IGZvcm0gZWxlbWVudCBiZWlu
ZyBjcmVhdGVkIGJ5CiAgICAgICAgIC8vIEphdmFTY3JpcHQgYW5kIGluc2VydGVkIGluc2lkZSBh
IGZvcm0uICBJbiB0aGUgY2FzZSBvZiB0aGUgcGFyc2VyCkBAIC0xNzksNiArMTg5LDkgQEAgc3Rh
dGljIGlubGluZSBOb2RlKiBmaW5kUm9vdChOb2RlKiBuKQogCiB2b2lkIEhUTUxGb3JtQ29udHJv
bEVsZW1lbnQ6OnJlbW92ZWRGcm9tVHJlZShib29sIGRlZXApCiB7CisgICAgaWYgKGZhc3RIYXNB
dHRyaWJ1dGUoZm9ybUF0dHIpKQorICAgICAgICBkb2N1bWVudCgpLT51bnJlZ2lzdGVyRm9ybUVs
ZW1lbnRXaXRoRm9ybUF0dHJpYnV0ZSh0aGlzKTsKKwogICAgIC8vIElmIHRoZSBmb3JtIGFuZCBl
bGVtZW50IGFyZSBib3RoIGluIHRoZSBzYW1lIHRyZWUsIHByZXNlcnZlIHRoZSBjb25uZWN0aW9u
IHRvIHRoZSBmb3JtLgogICAgIC8vIE90aGVyd2lzZSwgbnVsbCBvdXQgb3VyIGZvcm0gYW5kIHJl
bW92ZSBvdXJzZWx2ZXMgZnJvbSB0aGUgZm9ybSdzIGxpc3Qgb2YgZWxlbWVudHMuCiAgICAgaWYg
KG1fZm9ybSAmJiBmaW5kUm9vdCh0aGlzKSAhPSBmaW5kUm9vdChtX2Zvcm0pKSB7CkBAIC00MzEs
NiArNDQ0LDUwIEBAIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6cmVtb3ZlRnJvbUZvcm0o
KQogICAgIG1fZm9ybSA9IDA7CiB9CiAKK3ZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6cmVz
ZXRGb3JtT3duZXIoSFRNTEZvcm1FbGVtZW50KiBmb3JtKQoreworICAgIGlmIChtX2Zvcm0pIHsK
KyAgICAgICAgaWYgKCFmYXN0SGFzQXR0cmlidXRlKGZvcm1BdHRyKSkKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgbV9mb3JtLT5yZW1vdmVGb3JtRWxlbWVudCh0aGlzKTsKKyAgICB9Cisg
ICAgbV9mb3JtID0gMDsKKyAgICBpZiAoZmFzdEhhc0F0dHJpYnV0ZShmb3JtQXR0cikpIHsKKyAg
ICAgICAgLy8gVGhlIEhUTUw1IHNwZWMgc2F5cyB0aGF0IHRoZSBlbGVtZW50IHNob3VsZCBiZSBh
c3NvY2lhdGVkIHdpdGgKKyAgICAgICAgLy8gdGhlIGZpcnN0IGVsZW1lbnQgaW4gdGhlIGRvY3Vt
ZW50IHRvIGhhdmUgYW4gSUQgdGhhdCBlcXVhbCB0bworICAgICAgICAvLyB0aGUgdmFsdWUgb2Yg
Zm9ybSBhdHRyaWJ1dGUsIHNvIHdlIHB1dCB0aGUgcmVzdWx0IG9mCisgICAgICAgIC8vIGRvY3Vt
ZW50KCktPmdldEVsZW1lbnRCeUlkKCkgb3ZlciB0aGUgZ2l2ZW4gZWxlbWVudC4KKyAgICAgICAg
RWxlbWVudCogZmlyc3RFbGVtZW50ID0gZG9jdW1lbnQoKS0+Z2V0RWxlbWVudEJ5SWQoZmFzdEdl
dEF0dHJpYnV0ZShmb3JtQXR0cikpOworICAgICAgICBpZiAoZmlyc3RFbGVtZW50ICYmIGZpcnN0
RWxlbWVudC0+aGFzVGFnTmFtZShmb3JtVGFnKSkKKyAgICAgICAgICAgIG1fZm9ybSA9IHN0YXRp
Y19jYXN0PEhUTUxGb3JtRWxlbWVudCo+KGZpcnN0RWxlbWVudCk7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIG1fZm9ybSA9IGZvcm07CisgICAgfSBlbHNlCisgICAgICAgIG1fZm9ybSA9IGZp
bmRGb3JtQW5jZXN0b3IoKTsKKyAgICBpZiAobV9mb3JtKQorICAgICAgICBtX2Zvcm0tPnJlZ2lz
dGVyRm9ybUVsZW1lbnQodGhpcyk7CisgICAgZWxzZQorICAgICAgICBkb2N1bWVudCgpLT5jaGVj
a2VkUmFkaW9CdXR0b25zKCkuYWRkQnV0dG9uKHRoaXMpOworfQorCit2b2lkIEhUTUxGb3JtQ29u
dHJvbEVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQoQXR0cmlidXRlKiBhdHRyLCBib29sIHByZXNl
cnZlRGVjbHMpCit7CisgICAgaWYgKGF0dHItPm5hbWUoKSA9PSBmb3JtQXR0cikgeworICAgICAg
ICBpZiAoIWZhc3RIYXNBdHRyaWJ1dGUoZm9ybUF0dHIpKSB7CisgICAgICAgICAgICAvLyBUaGUg
Zm9ybSBhdHRyaWJ1dGUgcmVtb3ZlZC4gV2UgbmVlZCB0byByZXNldCBmb3JtIG93bmVyIGhlcmUu
CisgICAgICAgICAgICBpZiAobV9mb3JtKQorICAgICAgICAgICAgICAgIG1fZm9ybS0+cmVtb3Zl
Rm9ybUVsZW1lbnQodGhpcyk7CisgICAgICAgICAgICBtX2Zvcm0gPSBmaW5kRm9ybUFuY2VzdG9y
KCk7CisgICAgICAgICAgICBpZiAobV9mb3JtKQorICAgICAgICAgICAgICAgIG1fZm9ybS0+cmVn
aXN0ZXJGb3JtRWxlbWVudCh0aGlzKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICBkb2N1bWVudCgpLT5jaGVja2VkUmFkaW9CdXR0b25zKCkuYWRkQnV0dG9uKHRoaXMpOworICAg
ICAgICB9IGVsc2UKKyAgICAgICAgICAgIHJlc2V0Rm9ybU93bmVyKDApOworICAgIH0KKyAgICBI
VE1MRWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZChhdHRyLCBwcmVzZXJ2ZURlY2xzKTsKK30KKwog
Ym9vbCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojppc0xhYmVsYWJsZSgpIGNvbnN0CiB7CiAgICAg
Ly8gRklYTUU6IEFkZCBtZXRlclRhZyBhbmQgb3V0cHV0VGFnIHRvIHRoZSBsaXN0IG9uY2Ugd2Ug
c3VwcG9ydCB0aGVtLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVs
ZW1lbnQuaCBiL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKaW5kZXggMTk2
MGZjMzRmMjg4ZGEzNTYyZWU2Y2QxNzk0YWIzOTA3YmU1OTNhMy4uNWNhYTM5MjU0YTc2MThiNmQw
YWI4NjAwODY3NGQ1ZmJiMzNiZmQ1ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxGb3Jt
Q29udHJvbEVsZW1lbnQuaAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVu
dC5oCkBAIC05OSw2ICs5OSwxMCBAQCBwdWJsaWM6CiAgICAgCiAgICAgYm9vbCByZWFkT25seSgp
IGNvbnN0IHsgcmV0dXJuIG1fcmVhZE9ubHk7IH0KIAorICAgIHZvaWQgcmVzZXRGb3JtT3duZXIo
SFRNTEZvcm1FbGVtZW50Kik7CisgICAgdmlydHVhbCB2b2lkIGF0dHJpYnV0ZUNoYW5nZWQoQXR0
cmlidXRlKiwgYm9vbCBwcmVzZXJ2ZURlY2xzID0gZmFsc2UpOworICAgIGJvb2wgaXNJbkJlZm9y
ZUNvbXBhcmVkV2l0aChIVE1MRm9ybUNvbnRyb2xFbGVtZW50Kik7CisKIHByb3RlY3RlZDoKICAg
ICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERv
Y3VtZW50KiwgSFRNTEZvcm1FbGVtZW50Kik7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9I
VE1MRm9ybUVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKaW5k
ZXggZGEzODhkNWM2NTFiOWMzMDkzZmQ5ODQxZDI1Mjg3MWQzOTYzNTdmMi4uYmY4YjQ4YjhiMGNh
ZTg3MDEyMjUxYzMxMDU3Y2EwNjliMWM3ZDBmYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hU
TUxGb3JtRWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAK
QEAgLTY1LDYgKzY1LDggQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogSFRNTEZvcm1F
bGVtZW50OjpIVE1MRm9ybUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9j
dW1lbnQqIGRvY3VtZW50KQogICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCisg
ICAgLCBtX2Fzc29jaWF0ZWRFbGVtZW50c0JlZm9yZUluZGV4KDApCisgICAgLCBtX2Fzc29jaWF0
ZWRFbGVtZW50c0FmdGVySW5kZXgoMCkKICAgICAsIG1fd2FzVXNlclN1Ym1pdHRlZChmYWxzZSkK
ICAgICAsIG1fYXV0b2NvbXBsZXRlKHRydWUpCiAgICAgLCBtX2luc3VibWl0KGZhbHNlKQpAQCAt
MTMyLDYgKzEzNCw5IEBAIHZvaWQgSFRNTEZvcm1FbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVu
dCgpCiAgICAgaWYgKGRvY3VtZW50KCktPmlzSFRNTERvY3VtZW50KCkpCiAgICAgICAgIHN0YXRp
Y19jYXN0PEhUTUxEb2N1bWVudCo+KGRvY3VtZW50KCkpLT5hZGROYW1lZEl0ZW0obV9uYW1lKTsK
IAorICAgIGlmIChoYXNJRCgpKQorICAgICAgICBkb2N1bWVudCgpLT5yZXNldEZvcm1FbGVtZW50
c093bmVyKHRoaXMpOworCiAgICAgSFRNTEVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KCk7
CiB9CiAKQEAgLTE0MSw2ICsxNDYsOSBAQCB2b2lkIEhUTUxGb3JtRWxlbWVudDo6cmVtb3ZlZEZy
b21Eb2N1bWVudCgpCiAgICAgICAgIHN0YXRpY19jYXN0PEhUTUxEb2N1bWVudCo+KGRvY3VtZW50
KCkpLT5yZW1vdmVOYW1lZEl0ZW0obV9uYW1lKTsKIAogICAgIEhUTUxFbGVtZW50OjpyZW1vdmVk
RnJvbURvY3VtZW50KCk7CisKKyAgICBpZiAoaGFzSUQoKSkKKyAgICAgICAgZG9jdW1lbnQoKS0+
cmVzZXRGb3JtRWxlbWVudHNPd25lcigwKTsKIH0KIAogdm9pZCBIVE1MRm9ybUVsZW1lbnQ6Omhh
bmRsZUxvY2FsRXZlbnRzKEV2ZW50KiBldmVudCkKQEAgLTM4OCwyNCArMzk2LDEyNSBAQCB0ZW1w
bGF0ZTxjbGFzcyBULCBzaXplX3Qgbj4gc3RhdGljIHZvaWQgcmVtb3ZlRnJvbVZlY3RvcihWZWN0
b3I8VCosIG4+ICYgdmVjLCBUKgogICAgICAgICB9CiB9CiAKKy8vIFRoaXMgZnVuY3Rpb24gd2ls
bCByZXR1cm46CisvLyAgICAxIHdoZW4gbjIgaXMgbG9jYXRlZCBiZWZvcmUgbjEKKy8vICAgIDAg
d2hlbiBuMiBpcyBhIGNoaWxkIG9mIG4xCisvLyAgIC0xIG90aGVyd2lzZQorc3RhdGljIGludCBj
b21wYXJlVHJlZU9yZGVyKE5vZGUqIG4xLCBpbnQgZGVwdGgxLCBOb2RlKiBuMiwgaW50IGRlcHRo
MikKK3sKKyAgICBOb2RlKiBhbmNlc3RvcjEgPSBuMTsKKyAgICBOb2RlKiBhbmNlc3RvcjIgPSBu
MjsKKyAgICBpZiAoZGVwdGgxIDwgZGVwdGgyKQorICAgICAgICBmb3IgKGludCBkaWZmID0gZGVw
dGgyIC0gZGVwdGgxOyBkaWZmID4gMDsgLS1kaWZmKQorICAgICAgICAgICAgYW5jZXN0b3IyID0g
YW5jZXN0b3IyLT5wYXJlbnROb2RlKCk7CisgICAgZWxzZQorICAgICAgICBmb3IgKGludCBkaWZm
ID0gZGVwdGgxIC0gZGVwdGgyOyBkaWZmID4gMDsgLS1kaWZmKQorICAgICAgICAgICAgYW5jZXN0
b3IxID0gYW5jZXN0b3IxLT5wYXJlbnROb2RlKCk7CisKKyAgICAvLyBMb29rcyBmb3IgdGhlIGxl
YXN0IGNvbW1vbiBhc2NlbnRvcihMQ0EpLgorICAgIC8vIEtlZXBpbmcgdGhlIG5lYXJlc3Qgc3Vj
ZXNzb3JzIG9mIGVhY2ggbm9kZXMgZm9yIGxhdGVyIHVzZS4KKyAgICBOb2RlKiBzdWNjZXNzb3Ix
ID0gMDsKKyAgICBOb2RlKiBzdWNjZXNzb3IyID0gMDsKKyAgICB3aGlsZSAoYW5jZXN0b3IxICYm
IGFuY2VzdG9yMikgeworICAgICAgICBpZiAoYW5jZXN0b3IxID09IGFuY2VzdG9yMikKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBzdWNjZXNzb3IxID0gYW5jZXN0b3IxOworICAgICAgICBz
dWNjZXNzb3IyID0gYW5jZXN0b3IyOworICAgICAgICBhbmNlc3RvcjEgPSBhbmNlc3RvcjEtPnBh
cmVudE5vZGUoKTsKKyAgICAgICAgYW5jZXN0b3IyID0gYW5jZXN0b3IyLT5wYXJlbnROb2RlKCk7
CisgICAgfQorICAgIC8vIENhbid0IGZpbmQgdGhlIExDQS4gSXQgY291bGQgaGFwcGVuIG9uIHBh
cnNpbmcgcGhhc2UuCisgICAgaWYgKCFhbmNlc3RvcjEgfHwgIWFuY2VzdG9yMikKKyAgICAgICAg
cmV0dXJuIC0xOworCisgICAgLy8gTm93IGJvdGggYW5jZXN0b3IxIGFuZCBhbmNlc3RvcjIgcG9p
bnQgdGhlIExDQS4KKyAgICAvLyBJZiBlaXRoZXIgbjEgb3IgbjIgaXMgdGhlIExDQSwgaXQgaXMg
bG9jYXRlZCBiZWZvcmUgdGhlIG9wcG9uZW50LgorICAgIGlmIChhbmNlc3RvcjEgPT0gbjEpCisg
ICAgICAgIHJldHVybiAwOworICAgIGlmIChhbmNlc3RvcjEgPT0gbjIpCisgICAgICAgIHJldHVy
biAxOworCisgICAgLy8gT3RoZXJ3aXNlLCBjaGVja3MgY2hpbGRyZW4gb2YgdGhlIExDQSBmcm9t
IGxlZnQgdG8gcmlnaHQuCisgICAgLy8gU3RvcmVkIHN1Y2Nlc3NvcnMgYXJlIGNoaWxkcmVuIG9m
IHRoZSBMQ0EgYXMgd2VsbCBhcyB0aGUgYW5lY3N0b3JzIG9mIGVhY2ggbm9kZS4KKyAgICAvLyBT
byB3ZSBjYW4gZGV0ZXJtaW5lIHdoaWNoIG5vZGUgaXMgbG9jYXRlZCBiZWZvcmUgdGhlIG9wcG9u
ZW50IGJ5IGNoZWNraW5nIHdoaWNoCisgICAgLy8gc3VjY2Vzc29yIGFwcGVhcnMgZmlyc3QuCisg
ICAgQVNTRVJUKHN1Y2Nlc3NvcjEgJiYgc3VjY2Vzc29yMik7CisgICAgZm9yIChOb2RlKiBjaGls
ZCA9IGFuY2VzdG9yMS0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNp
YmxpbmcoKSkgeworICAgICAgICBpZiAoY2hpbGQgPT0gc3VjY2Vzc29yMSkKKyAgICAgICAgICAg
IHJldHVybiAtMTsKKyAgICAgICAgaWYgKGNoaWxkID09IHN1Y2Nlc3NvcjIpCisgICAgICAgICAg
ICByZXR1cm4gMTsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJu
IDE7Cit9CisKK3N0YXRpYyBpbnQgbm9kZURlcHRoKE5vZGUqIG5vZGUpCit7CisgICAgaW50IGRl
cHRoID0gMDsKKyAgICBmb3IgKDsgbm9kZTsgbm9kZSA9IG5vZGUtPnBhcmVudE5vZGUoKSkKKyAg
ICAgICAgKytkZXB0aDsKKyAgICByZXR1cm4gZGVwdGg7Cit9CisKK3Vuc2lnbmVkIEhUTUxGb3Jt
RWxlbWVudDo6Zm9ybUVsZW1lbnRJbmRleFdpdGhGb3JtQXR0cmlidXRlKEhUTUxGb3JtQ29udHJv
bEVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgaW50IGVsZW1lbnREZXB0aCA9IG5vZGVEZXB0aChl
bGVtZW50KTsKKyAgICBpbnQgcG9zID0gY29tcGFyZVRyZWVPcmRlcih0aGlzLCBub2RlRGVwdGgo
dGhpcyksIGVsZW1lbnQsIGVsZW1lbnREZXB0aCk7CisgICAgLy8gQ29tcGFyZXMgdGhlIHBvc2l0
aW9uIG9mIHRoZSBmb3JtIGVsZW1lbnQgYW5kIHRoZSBpbnNlcnRlZCBlbGVtZW50LgorICAgIC8v
IFVwZGF0ZXMgdGhlIGluZGVjZXMgaW4gb3JkZXIgdG8gdGhlIHJlbGF0aW9uIG9mIHRoZSBwb3Np
dGlvbjoKKyAgICAvLyAgIHBvcyA9PSAxIG1lYW5zIHRoZSBlbGVtZW50IGlzIGxvY2F0ZWQgYmVm
b3JlIHRoZSBmb3JtIGVsZW1lbnQuCisgICAgLy8gICBwb3MgPT0gMCBtZWFucyB0aGUgZWxlbWVu
dCBpcyBpbiB0aGUgZm9ybSBlbGVtZW50LgorICAgIGlmIChwb3MgPT0gMSkgeworICAgICAgICAr
K21fYXNzb2NpYXRlZEVsZW1lbnRzQmVmb3JlSW5kZXg7CisgICAgICAgICsrbV9hc3NvY2lhdGVk
RWxlbWVudHNBZnRlckluZGV4OworICAgIH0gZWxzZSBpZiAoIXBvcykKKyAgICAgICAgKyttX2Fz
c29jaWF0ZWRFbGVtZW50c0FmdGVySW5kZXg7CisKKyAgICBpZiAobV9hc3NvY2lhdGVkRWxlbWVu
dHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIC8vIERvZXMgYmluYXJ5IHNl
YXJjaCBvbiBtX2Fzc29jaWF0ZWRFbGVtZW50cyBpbiBvcmRlciB0byBmaW5kIHRoZSBpbmRleAor
ICAgIC8vIHRvIGJlIGluc2VydGVkLgorICAgIHVuc2lnbmVkIGxlZnQgPSAwLCByaWdodCA9IG1f
YXNzb2NpYXRlZEVsZW1lbnRzLnNpemUoKSAtIDE7CisgICAgd2hpbGUgKGxlZnQgIT0gcmlnaHQp
IHsKKyAgICAgICAgdW5zaWduZWQgbWlkZGxlID0gKGxlZnQgKyByaWdodCkgLyAyOworICAgICAg
ICBpZiAoY29tcGFyZVRyZWVPcmRlcihtX2Fzc29jaWF0ZWRFbGVtZW50c1ttaWRkbGVdLCBub2Rl
RGVwdGgobV9hc3NvY2lhdGVkRWxlbWVudHNbbWlkZGxlXSksIGVsZW1lbnQsIGVsZW1lbnREZXB0
aCkgPiAwKQorICAgICAgICAgICAgcmlnaHQgPSBtaWRkbGU7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIGxlZnQgPSBtaWRkbGUgKyAxOworICAgIH0KKworICAgIGlmIChjb21wYXJlVHJlZU9y
ZGVyKG1fYXNzb2NpYXRlZEVsZW1lbnRzW2xlZnRdLCBub2RlRGVwdGgobV9hc3NvY2lhdGVkRWxl
bWVudHNbbGVmdF0pLCBlbGVtZW50LCBlbGVtZW50RGVwdGgpID4gMCkKKyAgICAgICAgcmV0dXJu
IGxlZnQ7CisgICAgcmV0dXJuIGxlZnQgKyAxOworfQorCiB1bnNpZ25lZCBIVE1MRm9ybUVsZW1l
bnQ6OmZvcm1FbGVtZW50SW5kZXgoSFRNTEZvcm1Db250cm9sRWxlbWVudCogZSkKIHsKKyAgICAv
LyBUcmVhdHMgc2VwYXJhdGVseSB0aGUgY2FzZSB3aGVyZSB0aGlzIGVsZW1lbnQgaGFzIHRoZSBm
b3JtIGF0dHJpYnV0ZQorICAgIC8vIGZvciBwZXJmb3JtYW5jZSBjb25zaWRlcmF0aW9uLgorICAg
IGlmIChlLT5mYXN0SGFzQXR0cmlidXRlKGZvcm1BdHRyKSkKKyAgICAgICAgcmV0dXJuIGZvcm1F
bGVtZW50SW5kZXhXaXRoRm9ybUF0dHJpYnV0ZShlKTsKKwogICAgIC8vIENoZWNrIGZvciB0aGUg
c3BlY2lhbCBjYXNlIHdoZXJlIHRoaXMgZWxlbWVudCBpcyB0aGUgdmVyeSBsYXN0IHRoaW5nIGlu
CiAgICAgLy8gdGhlIGZvcm0ncyB0cmVlIG9mIGNoaWxkcmVuOyB3ZSBkb24ndCB3YW50IHRvIHdh
bGsgdGhlIGVudGlyZSB0cmVlIGluIHRoYXQKICAgICAvLyBjb21tb24gY2FzZSB0aGF0IG9jY3Vy
cyBkdXJpbmcgcGFyc2luZzsgaW5zdGVhZCB3ZSdsbCBqdXN0IHJldHVybiBhIHZhbHVlCiAgICAg
Ly8gdGhhdCBzYXlzICJhZGQgdGhpcyBmb3JtIGVsZW1lbnQgdG8gdGhlIGVuZCBvZiB0aGUgYXJy
YXkiLgogICAgIGlmIChlLT50cmF2ZXJzZU5leHROb2RlKHRoaXMpKSB7Ci0gICAgICAgIHVuc2ln
bmVkIGkgPSAwOworICAgICAgICB1bnNpZ25lZCBpID0gbV9hc3NvY2lhdGVkRWxlbWVudHNCZWZv
cmVJbmRleDsKICAgICAgICAgZm9yIChOb2RlKiBub2RlID0gdGhpczsgbm9kZTsgbm9kZSA9IG5v
ZGUtPnRyYXZlcnNlTmV4dE5vZGUodGhpcykpIHsKLSAgICAgICAgICAgIGlmIChub2RlID09IGUp
CisgICAgICAgICAgICBpZiAobm9kZSA9PSBlKSB7CisgICAgICAgICAgICAgICAgKyttX2Fzc29j
aWF0ZWRFbGVtZW50c0FmdGVySW5kZXg7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGk7CisgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBpZiAobm9kZS0+aXNIVE1MRWxlbWVudCgpCiAgICAgICAg
ICAgICAgICAgICAgICYmIHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKS0+aXNGb3JtQ29udHJv
bEVsZW1lbnQoKQogICAgICAgICAgICAgICAgICAgICAmJiBzdGF0aWNfY2FzdDxIVE1MRm9ybUNv
bnRyb2xFbGVtZW50Kj4obm9kZSktPmZvcm0oKSA9PSB0aGlzKQogICAgICAgICAgICAgICAgICsr
aTsKICAgICAgICAgfQogICAgIH0KLSAgICByZXR1cm4gbV9hc3NvY2lhdGVkRWxlbWVudHMuc2l6
ZSgpOworICAgIHJldHVybiBtX2Fzc29jaWF0ZWRFbGVtZW50c0FmdGVySW5kZXgrKzsKIH0KIAog
dm9pZCBIVE1MRm9ybUVsZW1lbnQ6OnJlZ2lzdGVyRm9ybUVsZW1lbnQoSFRNTEZvcm1Db250cm9s
RWxlbWVudCogZSkKQEAgLTQxOCw2ICs1MjcsMTggQEAgdm9pZCBIVE1MRm9ybUVsZW1lbnQ6OnJl
Z2lzdGVyRm9ybUVsZW1lbnQoSFRNTEZvcm1Db250cm9sRWxlbWVudCogZSkKIHZvaWQgSFRNTEZv
cm1FbGVtZW50OjpyZW1vdmVGb3JtRWxlbWVudChIVE1MRm9ybUNvbnRyb2xFbGVtZW50KiBlKQog
ewogICAgIG1fY2hlY2tlZFJhZGlvQnV0dG9ucy5yZW1vdmVCdXR0b24oZSk7CisgICAgaWYgKGUt
PmZhc3RIYXNBdHRyaWJ1dGUoZm9ybUF0dHIpKSB7CisgICAgICAgIHVuc2lnbmVkIGluZGV4Owor
ICAgICAgICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBtX2Fzc29jaWF0ZWRFbGVtZW50cy5zaXpl
KCk7ICsraW5kZXgpCisgICAgICAgICAgICBpZiAobV9hc3NvY2lhdGVkRWxlbWVudHNbaW5kZXhd
ID09IGUpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIEFTU0VSVChpbmRleCA8IG1f
YXNzb2NpYXRlZEVsZW1lbnRzLnNpemUoKSk7CisgICAgICAgIGlmIChpbmRleCA8IG1fYXNzb2Np
YXRlZEVsZW1lbnRzQmVmb3JlSW5kZXgpCisgICAgICAgICAgICAtLW1fYXNzb2NpYXRlZEVsZW1l
bnRzQmVmb3JlSW5kZXg7CisgICAgICAgIGlmIChpbmRleCA8IG1fYXNzb2NpYXRlZEVsZW1lbnRz
QWZ0ZXJJbmRleCkKKyAgICAgICAgICAgIC0tbV9hc3NvY2lhdGVkRWxlbWVudHNBZnRlckluZGV4
OworICAgIH0gZWxzZQorICAgICAgICAtLW1fYXNzb2NpYXRlZEVsZW1lbnRzQWZ0ZXJJbmRleDsK
ICAgICByZW1vdmVGcm9tVmVjdG9yKG1fYXNzb2NpYXRlZEVsZW1lbnRzLCBlKTsKIH0KIApkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oIGIvV2ViQ29yZS9odG1sL0hU
TUxGb3JtRWxlbWVudC5oCmluZGV4IGI5OTZkOWRlMjQwZjA2YmU1ZDU0MGUwZTA4NzVjZTBiMTM3
NTZmOTQuLjRlMDZiZWMwOTljNjNjNGZjMzVkNTkzYTA1YTNlMzM1ZjAwMmYxMGYgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuaAorKysgYi9XZWJDb3JlL2h0bWwvSFRN
TEZvcm1FbGVtZW50LmgKQEAgLTEzMSw2ICsxMzEsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBz
dWJtaXQoRXZlbnQqLCBib29sIGFjdGl2YXRlU3VibWl0QnV0dG9uLCBib29sIHByb2Nlc3NpbmdV
c2VyR2VzdHVyZSwgRm9ybVN1Ym1pc3Npb25UcmlnZ2VyKTsKIAorICAgIHVuc2lnbmVkIGZvcm1F
bGVtZW50SW5kZXhXaXRoRm9ybUF0dHJpYnV0ZShIVE1MRm9ybUNvbnRyb2xFbGVtZW50Kik7CiAg
ICAgdW5zaWduZWQgZm9ybUVsZW1lbnRJbmRleChIVE1MRm9ybUNvbnRyb2xFbGVtZW50Kik7CiAg
ICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBzdWJtaXNzaW9uIHNob3VsZCBiZSBwcm9jZWVkZWQu
CiAgICAgYm9vbCB2YWxpZGF0ZUludGVyYWN0aXZlbHkoRXZlbnQqKTsKQEAgLTE0OCw2ICsxNDks
OCBAQCBwcml2YXRlOgogCiAgICAgQ2hlY2tlZFJhZGlvQnV0dG9ucyBtX2NoZWNrZWRSYWRpb0J1
dHRvbnM7CiAKKyAgICB1bnNpZ25lZCBtX2Fzc29jaWF0ZWRFbGVtZW50c0JlZm9yZUluZGV4Owor
ICAgIHVuc2lnbmVkIG1fYXNzb2NpYXRlZEVsZW1lbnRzQWZ0ZXJJbmRleDsKICAgICBWZWN0b3I8
SFRNTEZvcm1Db250cm9sRWxlbWVudCo+IG1fYXNzb2NpYXRlZEVsZW1lbnRzOwogICAgIFZlY3Rv
cjxIVE1MSW1hZ2VFbGVtZW50Kj4gbV9pbWFnZUVsZW1lbnRzOwogCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2h0bWwvSFRNTE91dHB1dEVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxPdXRwdXRF
bGVtZW50LmNwcAppbmRleCBkZWUyMWFlZmNlNTk0NmMwNGI2MTQ2NTY0NmNmZTBhYTkwMWMwMThm
Li5iODMyNjNlMzgxN2MwYjVjYjBiZGVjNWViNzNjZDc3NDdlYmIwY2U2IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2h0bWwvSFRNTE91dHB1dEVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1M
T3V0cHV0RWxlbWVudC5jcHAKQEAgLTU4LDcgKzU4LDYgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBI
VE1MT3V0cHV0RWxlbWVudDo6Zm9ybUNvbnRyb2xUeXBlKCkgY29uc3QKIAogdm9pZCBIVE1MT3V0
cHV0RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogewotICAg
IC8vIEZJWE1FOiBTaG91bGQgaGFuZGxlIHRoZSAnZm9ybScgYXR0cmlidXRlIGhlcmUuCiAgICAg
aWYgKGF0dHItPm5hbWUoKSA9PSBIVE1MTmFtZXM6OmZvckF0dHIpCiAgICAgICAgIHNldEZvcihh
dHRyLT52YWx1ZSgpKTsKICAgICBlbHNlCkBAIC03NSwxMSArNzQsNiBAQCB2b2lkIEhUTUxPdXRw
dXRFbGVtZW50OjpzZXRGb3IoY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICBtX3Rva2Vucy0+c2V0
VmFsdWUodmFsdWUpOwogfQogCi12b2lkIEhUTUxPdXRwdXRFbGVtZW50OjpzZXRGb3JtKGNvbnN0
IFN0cmluZyYgLyppZCovKQotewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyBmdW5jdGlv
bi4KLX0KLQogdm9pZCBIVE1MT3V0cHV0RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY3Jl
YXRlZEJ5UGFyc2VyLCBOb2RlKiwgTm9kZSosIGludCkKIHsKICAgICBpZiAoY3JlYXRlZEJ5UGFy
c2VyIHx8IG1faXNTZXRUZXh0Q29udGVudEluUHJvZ3Jlc3MpIHsKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5oIGIvV2ViQ29yZS9odG1sL0hUTUxPdXRwdXRFbGVt
ZW50LmgKaW5kZXggZGY4MDdmYmNjN2NjOTdhNGI1YjE0ZWJiNDViZjU1YTM5YTAzNTcyNi4uODNl
Y2VlMmY0OWY4NjE2ZjdiMTBlYzlkYmRjMmRlMDczMGEzZmRlZCAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9odG1sL0hUTUxPdXRwdXRFbGVtZW50LmgKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxPdXRwdXRF
bGVtZW50LmgKQEAgLTQzLDcgKzQzLDYgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIHdp
bGxWYWxpZGF0ZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICB2b2lkIHNldEZvcm0o
Y29uc3QgU3RyaW5nJik7CiAgICAgU3RyaW5nIHZhbHVlKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRW
YWx1ZShjb25zdCBTdHJpbmcmKTsKICAgICBTdHJpbmcgZGVmYXVsdFZhbHVlKCkgY29uc3Q7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>73828</attachid>
            <date>2010-11-13 08:49:43 -0800</date>
            <delta_ts>2010-11-14 19:07:32 -0800</delta_ts>
            <desc>Patch V4</desc>
            <filename>bug-47813-20101114014940.patch</filename>
            <type>text/plain</type>
            <size>48757</size>
            <attacher name="Kenichi Ishibashi">bashi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0OGI2Mjc2NDI5ZGU0MjgzMGRlNjhiZmJjNWI0YWY5ODM3NGYwYzMxLi5iYzZlNTc0
OGI1YjIwNzA0NTQ1ODA0OWRkNjJlNmQ5YzliMmQyYjA5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAK
KzIwMTAtMTEtMTMgIEtlbmljaGkgSXNoaWJhc2hpICA8YmFzaGlAZ29vZ2xlLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbSFRNTDVdICJmb3Jt
IiBhdHRyaWJ1dGUgc3VwcG9ydCBmb3IgZm9ybSBjb250cm9sIGVsZW1lbnRzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzgxMworCisgICAgICAgIEFk
ZHMgYSB0ZXN0IGZpbGUgZm9yICJmb3JtIiBhdHRyaWJ1dGUgb2YgZm9ybS1hc3NvY2lhdGVkIGVs
ZW1lbnRzLgorICAgICAgICBUaGUgdGVzdCBtaWdodCBuZWVkIHRvIGJlIHJldmlzZWQgYmVjYXVz
ZSA8bGFiZWw+IGFuZCA8b2JqZWN0PiBkb24ndAorICAgICAgICBzdXBwb3J0ICJmb3JtIiBhdHRy
aWJ1dGUgZm9yIG5vdywgaW4gc3BpdGUgb2YgdGhlIEhUTUw1IHNwZWMgc2F5cyB0aGF0CisgICAg
ICAgIHRoZXkgc2hvdWxkIHN1cHBvcnQuCisKKyAgICAgICAgKiBmYXN0L2Zvcm1zL2Zvcm0tYXR0
cmlidXRlLWVsZW1lbnRzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jt
cy9mb3JtLWF0dHJpYnV0ZS1lbGVtZW50cy1vcmRlci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvZm9ybXMvZm9ybS1hdHRyaWJ1dGUtZWxlbWVudHMtb3JkZXIuaHRtbDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9mb3JtLWF0dHJpYnV0ZS1lbGVtZW50cy1vcmRlcjIt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL2Zvcm0tYXR0cmlidXRl
LWVsZW1lbnRzLW9yZGVyMi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL2Zvcm0t
YXR0cmlidXRlLWVsZW1lbnRzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvZm9y
bS1hdHRyaWJ1dGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL2Zv
cm0tYXR0cmlidXRlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvc2NyaXB0LXRl
c3RzL2Zvcm0tYXR0cmlidXRlLWVsZW1lbnRzLW9yZGVyLmpzOiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2Zvcm1zL3NjcmlwdC10ZXN0cy9mb3JtLWF0dHJpYnV0ZS1lbGVtZW50cy1vcmRlcjIuanM6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvc2NyaXB0LXRlc3RzL2Zvcm0tYXR0cmlidXRl
LWVsZW1lbnRzLmpzOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL3NjcmlwdC10ZXN0cy9m
b3JtLWF0dHJpYnV0ZS5qczogQWRkZWQuCisKIDIwMTAtMTEtMTMgIFNoaW5pY2hpcm8gSGFtYWpp
ICA8aGFtYWppQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW50IFRhbXVy
YS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZm9ybS1hdHRyaWJ1dGUtZWxl
bWVudHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9mb3JtLWF0dHJpYnV0
ZS1lbGVtZW50cy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGM2MWM0YzU4MzIxOTM0ODZlMjky
MjEwMTc4OTNlN2I5ZTcxMjFjOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvZm9ybS1hdHRyaWJ1dGUtZWxlbWVudHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjAg
QEAKK1RoaXMgdGVzdCBjaGVja3MgYSBmb3JtIGVsZW1lbnQgY2FuIGhhbmRsZSBlbGVtZW50cyBv
ZiB3aGljaCBmb3JtIGF0dHJpYnV0ZSBwb2ludHMgdGhlIGZvcm0gZWxlbWVudCBldmVuIGlmIGVs
ZW1lbnRzIGFyZSBvdXRzaWRlIG9mIHRoZSBmb3JtLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCisKKworLSBFbnN1cmVzIHRoYXQgZWxlbWVudHMgYXR0cmlidXRlIG9mIHRoZSBmb3JtIGNv
bnRhaW5zIGVsZW1lbnRzIHdoaWNoIGFyZSBvdXRzaWRlIG9mIHRoZSBmb3JtLgorUEFTUyBvd25l
ci5lbGVtZW50cy5sZW5ndGggaXMgMworUEFTUyBvd25lci5lbGVtZW50c1swXSBpcyBvdXRlckJl
Zm9yZQorUEFTUyBvd25lci5lbGVtZW50c1sxXSBpcyBpbm5lcgorUEFTUyBvd25lci5lbGVtZW50
c1syXSBpcyBvdXRlckFmdGVyCisKKy0gRW5zdXJlcyB0aGF0IGZvcm0gc3VibWlzc2lvbiBjb250
YWlucyBuYW1lIGFuZCB2YWx1ZSBwYWlycyBmb3Igc3VjaCBlbGVtZW50cy4KK1BBU1MgcGFpcnMu
bGVuZ3RoIGlzIDMKK1BBU1MgcGFpcnNbMF0gaXMgImtleTE9dmFsdWUxIgorUEFTUyBwYWlyc1sx
XSBpcyAia2V5Mj12YWx1ZTIiCitQQVNTIHBhaXJzWzJdIGlzICJzdWJtaXR0ZWQ9dHJ1ZSIKK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2Zvcm0tYXR0cmlidXRlLWVsZW1lbnRzLW9yZGVy
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZm9ybS1hdHRyaWJ1dGUtZWxl
bWVudHMtb3JkZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBmNjA0OGM2ZTU0MmJmYjAzZDE0
NjA1MjI5MDRkNDFmMTc2MGRjZWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL2Zvcm0tYXR0cmlidXRlLWVsZW1lbnRzLW9yZGVyLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDk1IEBACitUaGlzIHRlc3QgZXhhbWluZXMgdGhlIG9yZGVyIG9mIHRoZSBlbGVtZW50cyBh
dHRyaWJ1dGUgb2YgYSBmb3JtIGVsZW1lbnQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworCistIFRlc3QgZm9yIHRoZSBjYXNlIHdoZXJlIHNvbWUgZWxlbWVudHMgYXJlIG91dHNpZGUg
b2YgdGhlIGZvcm0uCitQQVNTIG93bmVyLmVsZW1lbnRzLmxlbmd0aCBpcyA2CitQQVNTIG93bmVy
LmVsZW1lbnRzWzBdIGlzIGJlZm9yZTEKK1BBU1Mgb3duZXIuZWxlbWVudHNbMV0gaXMgYmVmb3Jl
MgorUEFTUyBvd25lci5lbGVtZW50c1syXSBpcyBpbm5lcjEKK1BBU1Mgb3duZXIuZWxlbWVudHNb
M10gaXMgaW5uZXIyCitQQVNTIG93bmVyLmVsZW1lbnRzWzRdIGlzIGFmdGVyMQorUEFTUyBvd25l
ci5lbGVtZW50c1s1XSBpcyBhZnRlcjIKKworLSBUZXN0IGZvciBjaGFuZ2luZyB0aGUgdmFsdWUg
b2YgdGhlIGZvcm0gYXR0cmlidXRlIG9mIGEgZWxlbWVudCB3aGljaCBpcyBsb2NhdGVkIGJlZm9y
ZSB0aGUgZm9ybSBvd25lci4KK1BBU1Mgb3duZXIuZWxlbWVudHMubGVuZ3RoIGlzIDUKK1BBU1Mg
b3duZXIuZWxlbWVudHNbMF0gaXMgYmVmb3JlMQorUEFTUyBvd25lci5lbGVtZW50c1sxXSBpcyBp
bm5lcjEKK1BBU1Mgb3duZXIuZWxlbWVudHNbMl0gaXMgaW5uZXIyCitQQVNTIG93bmVyLmVsZW1l
bnRzWzNdIGlzIGFmdGVyMQorUEFTUyBvd25lci5lbGVtZW50c1s0XSBpcyBhZnRlcjIKK1BBU1Mg
b3duZXIuZWxlbWVudHMubGVuZ3RoIGlzIDYKK1BBU1Mgb3duZXIuZWxlbWVudHNbMF0gaXMgYmVm
b3JlMQorUEFTUyBvd25lci5lbGVtZW50c1sxXSBpcyBiZWZvcmUyCitQQVNTIG93bmVyLmVsZW1l
bnRzWzJdIGlzIGlubmVyMQorUEFTUyBvd25lci5lbGVtZW50c1szXSBpcyBpbm5lcjIKK1BBU1Mg
b3duZXIuZWxlbWVudHNbNF0gaXMgYWZ0ZXIxCitQQVNTIG93bmVyLmVsZW1lbnRzWzVdIGlzIGFm
dGVyMgorCistIFRlc3QgZm9yIGNoYW5naW5nIHRoZSB2YWx1ZSBvZiB0aGUgZm9ybSBhdHRyaWJ1
dGUgb2YgYSBlbGVtZW50IHdoaWNoIGlzIGxvY2F0ZWQgaW5zaWRlIG9mIHRoZSBmb3JtIG93bmVy
LgorUEFTUyBvd25lci5lbGVtZW50cy5sZW5ndGggaXMgNQorUEFTUyBvd25lci5lbGVtZW50c1sw
XSBpcyBiZWZvcmUxCitQQVNTIG93bmVyLmVsZW1lbnRzWzFdIGlzIGJlZm9yZTIKK1BBU1Mgb3du
ZXIuZWxlbWVudHNbMl0gaXMgaW5uZXIxCitQQVNTIG93bmVyLmVsZW1lbnRzWzNdIGlzIGFmdGVy
MQorUEFTUyBvd25lci5lbGVtZW50c1s0XSBpcyBhZnRlcjIKK1BBU1Mgb3duZXIuZWxlbWVudHMu
bGVuZ3RoIGlzIDYKK1BBU1Mgb3duZXIuZWxlbWVudHNbMF0gaXMgYmVmb3JlMQorUEFTUyBvd25l
ci5lbGVtZW50c1sxXSBpcyBiZWZvcmUyCitQQVNTIG93bmVyLmVsZW1lbnRzWzJdIGlzIGlubmVy
MQorUEFTUyBvd25lci5lbGVtZW50c1szXSBpcyBpbm5lcjIKK1BBU1Mgb3duZXIuZWxlbWVudHNb
NF0gaXMgYWZ0ZXIxCitQQVNTIG93bmVyLmVsZW1lbnRzWzVdIGlzIGFmdGVyMgorCistIFRlc3Qg
Zm9yIGNoYW5naW5nIHRoZSB2YWx1ZSBvZiB0aGUgZm9ybSBhdHRyaWJ1dGUgb2YgYSBlbGVtZW50
IHdoaWNoIGlzIGxvY2F0ZWQgYWZ0ZXIgdGhlIGZvcm0gb3duZXIuCitQQVNTIG93bmVyLmVsZW1l
bnRzLmxlbmd0aCBpcyA1CitQQVNTIG93bmVyLmVsZW1lbnRzWzBdIGlzIGJlZm9yZTEKK1BBU1Mg
b3duZXIuZWxlbWVudHNbMV0gaXMgYmVmb3JlMgorUEFTUyBvd25lci5lbGVtZW50c1syXSBpcyBp
bm5lcjEKK1BBU1Mgb3duZXIuZWxlbWVudHNbM10gaXMgaW5uZXIyCitQQVNTIG93bmVyLmVsZW1l
bnRzWzRdIGlzIGFmdGVyMgorUEFTUyBvd25lci5lbGVtZW50cy5sZW5ndGggaXMgNgorUEFTUyBv
d25lci5lbGVtZW50c1swXSBpcyBiZWZvcmUxCitQQVNTIG93bmVyLmVsZW1lbnRzWzFdIGlzIGJl
Zm9yZTIKK1BBU1Mgb3duZXIuZWxlbWVudHNbMl0gaXMgaW5uZXIxCitQQVNTIG93bmVyLmVsZW1l
bnRzWzNdIGlzIGlubmVyMgorUEFTUyBvd25lci5lbGVtZW50c1s0XSBpcyBhZnRlcjEKK1BBU1Mg
b3duZXIuZWxlbWVudHNbNV0gaXMgYWZ0ZXIyCisKKy0gVGVzdCBmb3Igc2V0dGluZyBmb3JtIGF0
dHJpYnV0ZSBvZiBlbGVtZW50cyBpbiByZXZlcnNlIG9yZGVyLgorUEFTUyBvd25lci5lbGVtZW50
cy5sZW5ndGggaXMgNgorUEFTUyBvd25lci5lbGVtZW50c1swXSBpcyBiZWZvcmUxCitQQVNTIG93
bmVyLmVsZW1lbnRzWzFdIGlzIGJlZm9yZTIKK1BBU1Mgb3duZXIuZWxlbWVudHNbMl0gaXMgaW5u
ZXIxCitQQVNTIG93bmVyLmVsZW1lbnRzWzNdIGlzIGlubmVyMgorUEFTUyBvd25lci5lbGVtZW50
c1s0XSBpcyBhZnRlcjEKK1BBU1Mgb3duZXIuZWxlbWVudHNbNV0gaXMgYWZ0ZXIyCisKKy0gVGVz
dCBmb3Igc2V0dGluZyBmb3JtIGF0dHJpYnV0ZSBvZiBlbGVtZW50cyBpbiByYW5kb20gb3JkZXIu
CitQQVNTIG93bmVyLmVsZW1lbnRzLmxlbmd0aCBpcyA2CitQQVNTIG93bmVyLmVsZW1lbnRzWzBd
IGlzIGJlZm9yZTEKK1BBU1Mgb3duZXIuZWxlbWVudHNbMV0gaXMgYmVmb3JlMgorUEFTUyBvd25l
ci5lbGVtZW50c1syXSBpcyBpbm5lcjEKK1BBU1Mgb3duZXIuZWxlbWVudHNbM10gaXMgaW5uZXIy
CitQQVNTIG93bmVyLmVsZW1lbnRzWzRdIGlzIGFmdGVyMQorUEFTUyBvd25lci5lbGVtZW50c1s1
XSBpcyBhZnRlcjIKKworLSBUZXN0IGZvciByZW1vdmluZy9hZGRpbmcgZWxlbWVudHMKK1BBU1Mg
b3duZXIuZWxlbWVudHMubGVuZ3RoIGlzIDMKK1BBU1Mgb3duZXIuZWxlbWVudHNbMF0gaXMgYmVm
b3JlMQorUEFTUyBvd25lci5lbGVtZW50c1sxXSBpcyBpbm5lcjEKK1BBU1Mgb3duZXIuZWxlbWVu
dHNbMl0gaXMgYWZ0ZXIyCitQQVNTIG93bmVyLmVsZW1lbnRzLmxlbmd0aCBpcyA2CitQQVNTIG93
bmVyLmVsZW1lbnRzWzBdIGlzIGJlZm9yZTEKK1BBU1Mgb3duZXIuZWxlbWVudHNbMV0gaXMgYmVm
b3JlMgorUEFTUyBvd25lci5lbGVtZW50c1syXSBpcyBpbm5lcjEKK1BBU1Mgb3duZXIuZWxlbWVu
dHNbM10gaXMgaW5uZXIyCitQQVNTIG93bmVyLmVsZW1lbnRzWzRdIGlzIGFmdGVyMQorUEFTUyBv
d25lci5lbGVtZW50c1s1XSBpcyBhZnRlcjIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCisgIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL2Zvcm0tYXR0cmlidXRlLWVsZW1lbnRzLW9yZGVyLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL2Zvcm0tYXR0cmlidXRlLWVsZW1lbnRzLW9yZGVyLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MmUxNzIxZDQ4MWQ3YWUyNTMwZjJjOGZjZTU1MmZiMjk2YWFmYzE0NQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZm9ybS1hdHRyaWJ1dGUtZWxlbWVudHMtb3JkZXIu
aHRtbApAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RU
RCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9mb3JtLWF0dHJpYnV0ZS1lbGVtZW50
cy1vcmRlci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZm9ybS1hdHRyaWJ1dGUtZWxlbWVudHMtb3JkZXIy
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZm9ybS1hdHRyaWJ1dGUtZWxl
bWVudHMtb3JkZXIyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNTQ2MGVkY2M3N2M4Zjc2OWIw
MTY1OGY5MzFiMDc1M2M1YzE3OTBjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy9mb3JtLWF0dHJpYnV0ZS1lbGVtZW50cy1vcmRlcjItZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsNDkgQEAKK1RoaXMgdGVzdCBleGFtaW5lcyB0aGUgb3JkZXIgb2YgdGhlIGVsZW1lbnRz
IGF0dHJpYnV0ZSBvZiBhIGZvcm0gZWxlbWVudCB3aXRoIGZvcm0tYXNzb2NpYXRlZCBlbGVtZW50
cyB3aXRoIGZvcm0gYXR0cmlidXRlIG9yIHdpdG91dCBmb3JtIGF0dGlidXRlLgorCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKKworCistIFRlc3QgZm9yIHRoZSBjYXNlIHdoZXJlIHNvbWUg
ZWxlbWVudHMgaGF2ZSBmb3JtIGF0dHJpYnV0ZSBidXQgc29tZSBvdGhlcnMgbm90LgorUEFTUyBv
d25lci5lbGVtZW50cy5sZW5ndGggaXMgMworUEFTUyBvd25lci5lbGVtZW50c1swXSBpcyBpbnB1
dDEKK1BBU1Mgb3duZXIuZWxlbWVudHNbMV0gaXMgaW5wdXQyCitQQVNTIG93bmVyLmVsZW1lbnRz
WzJdIGlzIGlucHV0MworUEFTUyBvd25lci5lbGVtZW50cy5sZW5ndGggaXMgMworUEFTUyBvd25l
ci5lbGVtZW50c1swXSBpcyBpbnB1dDEKK1BBU1Mgb3duZXIuZWxlbWVudHNbMV0gaXMgaW5wdXQy
CitQQVNTIG93bmVyLmVsZW1lbnRzWzJdIGlzIGlucHV0MworCistIFRlc3QgZm9yIGluc2VydGlu
Zy9yZW1vdmluZyBhIGZvcm0tYXNzb2NpYXRlZCBlbGVtZW50IHdpdGhvdXQgZm9ybSBhdHRyaWJ1
dGUuCitQQVNTIG93bmVyLmVsZW1lbnRzLmxlbmd0aCBpcyA0CitQQVNTIG93bmVyLmVsZW1lbnRz
WzBdIGlzIGJlZm9yZQorUEFTUyBvd25lci5lbGVtZW50c1sxXSBpcyBpbm5lcgorUEFTUyBvd25l
ci5lbGVtZW50c1syXSBpcyBpbm5lcjIKK1BBU1Mgb3duZXIuZWxlbWVudHNbM10gaXMgYWZ0ZXIK
K1BBU1Mgb3duZXIuZWxlbWVudHMubGVuZ3RoIGlzIDQKK1BBU1Mgb3duZXIuZWxlbWVudHNbMF0g
aXMgYmVmb3JlCitQQVNTIG93bmVyLmVsZW1lbnRzWzFdIGlzIGlubmVyCitQQVNTIG93bmVyLmVs
ZW1lbnRzWzJdIGlzIGlubmVyMgorUEFTUyBvd25lci5lbGVtZW50c1szXSBpcyBhZnRlcgorCist
IFRlc3QgZm9yIGluc2VydGluZy9yZW1vdmluZyBhIGZvcm0tYXNzb2NpYXRlZCBlbGVtZW50IHdp
dGggZm9ybSBhdHRyaWJ1dGUuCitQQVNTIG93bmVyLmVsZW1lbnRzLmxlbmd0aCBpcyA2CitQQVNT
IG93bmVyLmVsZW1lbnRzWzBdIGlzIGJlZm9yZQorUEFTUyBvd25lci5lbGVtZW50c1sxXSBpcyBi
ZWZvcmUyCitQQVNTIG93bmVyLmVsZW1lbnRzWzJdIGlzIGlubmVyCitQQVNTIG93bmVyLmVsZW1l
bnRzWzNdIGlzIGlubmVyMgorUEFTUyBvd25lci5lbGVtZW50c1s0XSBpcyBhZnRlcgorUEFTUyBv
d25lci5lbGVtZW50c1s1XSBpcyBhZnRlcjIKK1BBU1Mgb3duZXIuZWxlbWVudHMubGVuZ3RoIGlz
IDYKK1BBU1Mgb3duZXIuZWxlbWVudHNbMF0gaXMgYmVmb3JlCitQQVNTIG93bmVyLmVsZW1lbnRz
WzFdIGlzIGJlZm9yZTIKK1BBU1Mgb3duZXIuZWxlbWVudHNbMl0gaXMgaW5uZXIKK1BBU1Mgb3du
ZXIuZWxlbWVudHNbM10gaXMgaW5uZXIyCitQQVNTIG93bmVyLmVsZW1lbnRzWzRdIGlzIGFmdGVy
CitQQVNTIG93bmVyLmVsZW1lbnRzWzVdIGlzIGFmdGVyMgorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL2Zvcm0tYXR0cmlidXRlLWVsZW1lbnRzLW9yZGVyMi5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy9mb3JtLWF0dHJpYnV0ZS1lbGVtZW50cy1vcmRlcjIuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40OTNhN2RiNGM2YTM4YzkxMjBiMmU5Y2U5NjE4M2IyMDNkMzk3NDMyCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9mb3JtLWF0dHJpYnV0ZS1lbGVtZW50
cy1vcmRlcjIuaHRtbApAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0v
L0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9mb3JtLWF0dHJpYnV0
ZS1lbGVtZW50cy1vcmRlcjIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2Zvcm0tYXR0cmlidXRlLWVsZW1l
bnRzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2Zvcm0tYXR0cmlidXRlLWVsZW1lbnRz
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMzM4OWJjZTBjYjY3YzM2ZTE1ZTAwNjExYjg2M2IxYzgwZDNiOTA2
YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZm9ybS1hdHRyaWJ1
dGUtZWxlbWVudHMuaHRtbApAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMg
Ii0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9mb3JtLWF0dHJp
YnV0ZS1lbGVtZW50cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZm9ybS1hdHRyaWJ1dGUtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9mb3JtLWF0dHJpYnV0ZS1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZWJlZTViYTFiNDg2MzIzMWUyMzc3YjZiYmM2OWYyZjc3ZGNjYmVmYgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZm9ybS1hdHRyaWJ1dGUtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsNTEgQEAKK1RoaXMgdGVzdCBjaGVja3MgdGhlIGZvcm0gYXR0
cmlidXRlIG9mIHRoZSBmb3JtLWFzc29jaWF0ZWQgZWxlbWVudHMuCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworCistIENoZWNrcyB0aGUgZXhpc3RlbmNlIG9mIHRoZSBmb3JtIGF0dHJp
YnV0ZSBmb3IgZWFjaCBmb3JtLWFzc29jaWF0ZWQgZWxlbWVudHMuCitGSVhNRTogPGxhYmVsPiBh
bmQgPG9iamVjdD4gZG9uJ3Qgc3VwcG9ydCB0aGUgZm9ybSBhdHRyaWJ1dGUgZm9yIG5vdy4KK1BB
U1MgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJ1dHRvbiIpWzBdLmZvcm0gaXMgb3du
ZXIKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImZpZWxkc2V0IilbMF0uZm9y
bSBpcyBvd25lcgorUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW5wdXQiKVsw
XS5mb3JtIGlzIG93bmVyCitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJrZXln
ZW4iKVswXS5mb3JtIGlzIG93bmVyCitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJtZXRlciIpWzBdLmZvcm0gaXMgb3duZXIKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoIm91dHB1dCIpWzBdLmZvcm0gaXMgb3duZXIKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInByb2dyZXNzIilbMF0uZm9ybSBpcyBvd25lcgorUEFTUyBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgic2VsZWN0IilbMF0uZm9ybSBpcyBvd25lcgorUEFTUyBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dGFyZWEiKVswXS5mb3JtIGlzIG93bmVyCisK
Ky0gRW5zdXJlcyB0aGF0IHRoZSBmb3JtIGF0dHJpYnV0ZSBwb2ludHMgdGhlIGZvcm0gb3duZXIg
ZXZlbiBpZiB0aGUgZWxlbWVudCBpcyB3aXRoaW4gYW5vdGhlciBmb3JtIGVsZW1lbnQuCitQQVNT
IGlucHV0RWxlbWVudC5mb3JtIGlzIG93bmVyCisKKy0gRW5zdXJlcyB0aGF0IHRoZSBmb3JtIGF0
dHJpYnV0ZSBvZiBhbGwgZm9ybS1hc3NvY2lhdGVkIGVsZW1lbnQgd2l0aCBvciB3aXRvdXQgZm9y
bSBhdHRyaWJ1dGUgcG9pbnRzIHRoZSBmb3JtIG93bmVyLgorUEFTUyBpbnB1dEVsZW1lbnQxLmZv
cm0gaXMgb3duZXIKK1BBU1MgaW5wdXRFbGVtZW50Mi5mb3JtIGlzIG93bmVyCitQQVNTIGlucHV0
RWxlbWVudDMuZm9ybSBpcyBvd25lcgorCistIEVuc3VyZXMgdGhhdCB0aGUgZm9ybSBhdHRyaWJ1
dGUgcG9pbnRzIHRoZSBmb3JtIG93bmVyIGV2ZW4gaWYgdGhlIGZvcm0gZWxlbWVudCBpcyBuZXN0
ZWQgYW5vdGhlciBmb3JtIGVsZW1lbnQuCitOT1RFOiBJdCBzZWVtcyB0aGF0IG5lc3RpbmcgZm9y
bSBlbGVtZW50cyBpcyBub3QgYWxsb3dlZCBzbyB3ZSBlbnN1cmUgZWFjaCBmb3JtLWFzc29jaWF0
ZWQgZWxlbWVudHMgYXNzb2NpYXRlIHdpdGggdGhlIG91dG1vc3QgZm9ybSBlbGVtZW50LgorUEFT
UyBpbnB1dEVsZW1lbnQxLmZvcm0gaXMgb3duZXIKK1BBU1MgaW5wdXRFbGVtZW50Mi5mb3JtIGlz
IG93bmVyCitQQVNTIGlucHV0RWxlbWVudDMuZm9ybSBpcyBvd25lcgorCistIEVuc3VyZXMgd2hl
dGhlciB0aGUgZm9ybSBvd25lciBpcyBzZXQgY29ycmVjdGx5IHdoZW4gdGhlIHZhbHVlIG9mIGZv
cm0gYXR0cmlidXRlIG9mIGEgZm9ybS1hc3NvY2lhdGVkIGVsZW1lbnQgY2hhbmdlZC4KK1BBU1Mg
aW5wdXRFbGVtZW50LmZvcm0gaXMgZm9ybTEKK1BBU1MgaW5wdXRFbGVtZW50LmZvcm0gaXMgZm9y
bTIKKworLSBFbnN1cmVzIHdoZXRoZXIgdGhlIGZvcm0gb3duZXIgaXMgc2V0IGNvcnJlY3RseSB3
aGVuIHRoZSB2YWx1ZSBvZiBmb3JtIGF0dHJpYnV0ZSBpcyBhZGRlZC9yZW1vdmVkLgorUEFTUyBp
bnB1dEVsZW1lbnQuZm9ybSBpcyBudWxsCitQQVNTIGlucHV0RWxlbWVudC5mb3JtIGlzIG93bmVy
CitQQVNTIGlucHV0RWxlbWVudC5mb3JtIGlzIG51bGwKKworLSBFbnN1cmVzIHdoZXRoZXIgdGhl
IGZvcm0gb3duZXIgaXMgc2V0IGNvcnJlY3RseSB3aGVuIHRoZSBmb3JtIG93bmVyIGlzIGFkZGVk
L3JlbW92ZWQuCitQQVNTIG93bmVyLm5hbWUgaXMgImZpcnN0T3duZXIiCitQQVNTIG93bmVyLm5h
bWUgaXMgInNlY29uZE93bmVyIgorUEFTUyBpbnB1dEVsZW1lbnQuZm9ybSBpcyBvd25lcgorUEFT
UyBpbnB1dEVsZW1lbnQuZm9ybSBpcyBudWxsCitQQVNTIGlucHV0RWxlbWVudC5mb3JtIGlzIG93
bmVyCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2Zvcm0tYXR0cmlidXRlLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2Zvcm0tYXR0cmlidXRlLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MzA2OWIwYzZlZjY2NDMwNzc4N2IyZDcyYTc4ZTIyMmJmOGQ2NWFjOQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZm9ybS1hdHRyaWJ1dGUuaHRtbApAQCAtMCwwICsx
LDEzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8
aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlw
dCBzcmM9InNjcmlwdC10ZXN0cy9mb3JtLWF0dHJpYnV0ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2Ny
aXB0LXRlc3RzL2Zvcm0tYXR0cmlidXRlLWVsZW1lbnRzLW9yZGVyLmpzIGIvTGF5b3V0VGVzdHMv
ZmFzdC9mb3Jtcy9zY3JpcHQtdGVzdHMvZm9ybS1hdHRyaWJ1dGUtZWxlbWVudHMtb3JkZXIuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmRjZGFlMzhlYThhOWJjY2U5Mjk4ZTUxNjhlZTQ0NTVkN2YwZTFlYwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2NyaXB0LXRlc3RzL2Zvcm0t
YXR0cmlidXRlLWVsZW1lbnRzLW9yZGVyLmpzCkBAIC0wLDAgKzEsMTUzIEBACitkZXNjcmlwdGlv
bigiVGhpcyB0ZXN0IGV4YW1pbmVzIHRoZSBvcmRlciBvZiB0aGUgZWxlbWVudHMgYXR0cmlidXRl
IG9mIGEgZm9ybSBlbGVtZW50LiIpOworCit2YXIgY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnZGl2Jyk7Citkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGNvbnRhaW5lcik7Citj
b250YWluZXIuaW5uZXJIVE1MID0gJzxpbnB1dCBuYW1lPXZpY3RpbSBpZD1iZWZvcmUxIGZvcm09
b3duZXIgLz4nICsKKyAgICAnPGlucHV0IG5hbWU9dmljdGltIGlkPWJlZm9yZTIgZm9ybT1vd25l
ciAvPicgKworICAgICc8Zm9ybSBpZD1vd25lciBhY3Rpb249IG1ldGhvZD1HRVQ+JyArCisgICAg
JyAgICA8aW5wdXQgbmFtZT12aWN0aW0gaWQ9aW5uZXIxIGZvcm09b3duZXIgLz4nICsKKyAgICAn
ICAgIDxpbnB1dCBuYW1lPXZpY3RpbSBpZD1pbm5lcjIgZm9ybT1vd25lciAvPicgKworICAgICc8
L2Zvcm0+JyArCisgICAgJzxpbnB1dCBuYW1lPXZpY3RpbSBpZD1hZnRlcjEgZm9ybT1vd25lciAv
PicgKworICAgICc8aW5wdXQgbmFtZT12aWN0aW0gaWQ9YWZ0ZXIyIGZvcm09b3duZXIgLz4nOwor
Cit2YXIgb3duZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnb3duZXInKTsKK3ZhciBiZWZv
cmUxID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JlZm9yZTEnKTsKK3ZhciBiZWZvcmUyID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JlZm9yZTInKTsKK3ZhciBpbm5lcjEgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnaW5uZXIxJyk7Cit2YXIgaW5uZXIyID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2lubmVyMicpOwordmFyIGFmdGVyMSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdhZnRlcjEnKTsKK3ZhciBhZnRlcjIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWZ0ZXIy
Jyk7CisKK2RlYnVnKCctIFRlc3QgZm9yIHRoZSBjYXNlIHdoZXJlIHNvbWUgZWxlbWVudHMgYXJl
IG91dHNpZGUgb2YgdGhlIGZvcm0uJyk7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHMubGVuZ3Ro
JywgJzYnKTsKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50c1swXScsICdiZWZvcmUxJyk7CitzaG91
bGRCZSgnb3duZXIuZWxlbWVudHNbMV0nLCAnYmVmb3JlMicpOworc2hvdWxkQmUoJ293bmVyLmVs
ZW1lbnRzWzJdJywgJ2lubmVyMScpOworc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzWzNdJywgJ2lu
bmVyMicpOworc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzWzRdJywgJ2FmdGVyMScpOworc2hvdWxk
QmUoJ293bmVyLmVsZW1lbnRzWzVdJywgJ2FmdGVyMicpOworCitkZWJ1ZygnJyk7CitkZWJ1Zygn
LSBUZXN0IGZvciBjaGFuZ2luZyB0aGUgdmFsdWUgb2YgdGhlIGZvcm0gYXR0cmlidXRlIG9mIGEg
ZWxlbWVudCB3aGljaCBpcyBsb2NhdGVkIGJlZm9yZSB0aGUgZm9ybSBvd25lci4nKTsKK2JlZm9y
ZTIuYXR0cmlidXRlc1snZm9ybSddLnZhbHVlID0gJyc7CitzaG91bGRCZSgnb3duZXIuZWxlbWVu
dHMubGVuZ3RoJywgJzUnKTsKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50c1swXScsICdiZWZvcmUx
Jyk7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHNbMV0nLCAnaW5uZXIxJyk7CitzaG91bGRCZSgn
b3duZXIuZWxlbWVudHNbMl0nLCAnaW5uZXIyJyk7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHNb
M10nLCAnYWZ0ZXIxJyk7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHNbNF0nLCAnYWZ0ZXIyJyk7
CitiZWZvcmUyLmF0dHJpYnV0ZXNbJ2Zvcm0nXS52YWx1ZSA9ICdvd25lcic7CitzaG91bGRCZSgn
b3duZXIuZWxlbWVudHMubGVuZ3RoJywgJzYnKTsKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50c1sw
XScsICdiZWZvcmUxJyk7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHNbMV0nLCAnYmVmb3JlMicp
Oworc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzWzJdJywgJ2lubmVyMScpOworc2hvdWxkQmUoJ293
bmVyLmVsZW1lbnRzWzNdJywgJ2lubmVyMicpOworc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzWzRd
JywgJ2FmdGVyMScpOworc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzWzVdJywgJ2FmdGVyMicpOwor
CitkZWJ1ZygnJyk7CitkZWJ1ZygnLSBUZXN0IGZvciBjaGFuZ2luZyB0aGUgdmFsdWUgb2YgdGhl
IGZvcm0gYXR0cmlidXRlIG9mIGEgZWxlbWVudCB3aGljaCBpcyBsb2NhdGVkIGluc2lkZSBvZiB0
aGUgZm9ybSBvd25lci4nKTsKK2lubmVyMi5hdHRyaWJ1dGVzWydmb3JtJ10udmFsdWUgPSAnJzsK
K3Nob3VsZEJlKCdvd25lci5lbGVtZW50cy5sZW5ndGgnLCAnNScpOworc2hvdWxkQmUoJ293bmVy
LmVsZW1lbnRzWzBdJywgJ2JlZm9yZTEnKTsKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50c1sxXScs
ICdiZWZvcmUyJyk7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHNbMl0nLCAnaW5uZXIxJyk7Citz
aG91bGRCZSgnb3duZXIuZWxlbWVudHNbM10nLCAnYWZ0ZXIxJyk7CitzaG91bGRCZSgnb3duZXIu
ZWxlbWVudHNbNF0nLCAnYWZ0ZXIyJyk7Citpbm5lcjIuYXR0cmlidXRlc1snZm9ybSddLnZhbHVl
ID0gJ293bmVyJzsKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50cy5sZW5ndGgnLCAnNicpOworc2hv
dWxkQmUoJ293bmVyLmVsZW1lbnRzWzBdJywgJ2JlZm9yZTEnKTsKK3Nob3VsZEJlKCdvd25lci5l
bGVtZW50c1sxXScsICdiZWZvcmUyJyk7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHNbMl0nLCAn
aW5uZXIxJyk7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHNbM10nLCAnaW5uZXIyJyk7CitzaG91
bGRCZSgnb3duZXIuZWxlbWVudHNbNF0nLCAnYWZ0ZXIxJyk7CitzaG91bGRCZSgnb3duZXIuZWxl
bWVudHNbNV0nLCAnYWZ0ZXIyJyk7CisKK2RlYnVnKCcnKTsKK2RlYnVnKCctIFRlc3QgZm9yIGNo
YW5naW5nIHRoZSB2YWx1ZSBvZiB0aGUgZm9ybSBhdHRyaWJ1dGUgb2YgYSBlbGVtZW50IHdoaWNo
IGlzIGxvY2F0ZWQgYWZ0ZXIgdGhlIGZvcm0gb3duZXIuJyk7CithZnRlcjEuYXR0cmlidXRlc1sn
Zm9ybSddLnZhbHVlID0gJyc7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHMubGVuZ3RoJywgJzUn
KTsKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50c1swXScsICdiZWZvcmUxJyk7CitzaG91bGRCZSgn
b3duZXIuZWxlbWVudHNbMV0nLCAnYmVmb3JlMicpOworc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRz
WzJdJywgJ2lubmVyMScpOworc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzWzNdJywgJ2lubmVyMicp
Oworc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzWzRdJywgJ2FmdGVyMicpOworYWZ0ZXIxLmF0dHJp
YnV0ZXNbJ2Zvcm0nXS52YWx1ZSA9ICdvd25lcic7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHMu
bGVuZ3RoJywgJzYnKTsKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50c1swXScsICdiZWZvcmUxJyk7
CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHNbMV0nLCAnYmVmb3JlMicpOworc2hvdWxkQmUoJ293
bmVyLmVsZW1lbnRzWzJdJywgJ2lubmVyMScpOworc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzWzNd
JywgJ2lubmVyMicpOworc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzWzRdJywgJ2FmdGVyMScpOwor
c2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzWzVdJywgJ2FmdGVyMicpOworCitkZWJ1ZygnJyk7Citk
ZWJ1ZygnLSBUZXN0IGZvciBzZXR0aW5nIGZvcm0gYXR0cmlidXRlIG9mIGVsZW1lbnRzIGluIHJl
dmVyc2Ugb3JkZXIuJyk7CitiZWZvcmUxLmF0dHJpYnV0ZXNbJ2Zvcm0nXS52YWx1ZSA9ICcnOwor
YmVmb3JlMi5hdHRyaWJ1dGVzWydmb3JtJ10udmFsdWUgPSAnJzsKK2lubmVyMS5hdHRyaWJ1dGVz
Wydmb3JtJ10udmFsdWUgPSAnJzsKK2lubmVyMi5hdHRyaWJ1dGVzWydmb3JtJ10udmFsdWUgPSAn
JzsKK2FmdGVyMS5hdHRyaWJ1dGVzWydmb3JtJ10udmFsdWUgPSAnJzsKK2FmdGVyMi5hdHRyaWJ1
dGVzWydmb3JtJ10udmFsdWUgPSAnJzsKKworYWZ0ZXIyLmF0dHJpYnV0ZXNbJ2Zvcm0nXS52YWx1
ZSA9ICdvd25lcic7CithZnRlcjEuYXR0cmlidXRlc1snZm9ybSddLnZhbHVlID0gJ293bmVyJzsK
K2lubmVyMi5hdHRyaWJ1dGVzWydmb3JtJ10udmFsdWUgPSAnb3duZXInOworaW5uZXIxLmF0dHJp
YnV0ZXNbJ2Zvcm0nXS52YWx1ZSA9ICdvd25lcic7CitiZWZvcmUyLmF0dHJpYnV0ZXNbJ2Zvcm0n
XS52YWx1ZSA9ICdvd25lcic7CitiZWZvcmUxLmF0dHJpYnV0ZXNbJ2Zvcm0nXS52YWx1ZSA9ICdv
d25lcic7CisKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50cy5sZW5ndGgnLCAnNicpOworc2hvdWxk
QmUoJ293bmVyLmVsZW1lbnRzWzBdJywgJ2JlZm9yZTEnKTsKK3Nob3VsZEJlKCdvd25lci5lbGVt
ZW50c1sxXScsICdiZWZvcmUyJyk7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHNbMl0nLCAnaW5u
ZXIxJyk7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHNbM10nLCAnaW5uZXIyJyk7CitzaG91bGRC
ZSgnb3duZXIuZWxlbWVudHNbNF0nLCAnYWZ0ZXIxJyk7CitzaG91bGRCZSgnb3duZXIuZWxlbWVu
dHNbNV0nLCAnYWZ0ZXIyJyk7CisKK2RlYnVnKCcnKTsKK2RlYnVnKCctIFRlc3QgZm9yIHNldHRp
bmcgZm9ybSBhdHRyaWJ1dGUgb2YgZWxlbWVudHMgaW4gcmFuZG9tIG9yZGVyLicpOworYmVmb3Jl
MS5hdHRyaWJ1dGVzWydmb3JtJ10udmFsdWUgPSAnJzsKK2JlZm9yZTIuYXR0cmlidXRlc1snZm9y
bSddLnZhbHVlID0gJyc7Citpbm5lcjEuYXR0cmlidXRlc1snZm9ybSddLnZhbHVlID0gJyc7Citp
bm5lcjIuYXR0cmlidXRlc1snZm9ybSddLnZhbHVlID0gJyc7CithZnRlcjEuYXR0cmlidXRlc1sn
Zm9ybSddLnZhbHVlID0gJyc7CithZnRlcjIuYXR0cmlidXRlc1snZm9ybSddLnZhbHVlID0gJyc7
CisKK2FmdGVyMS5hdHRyaWJ1dGVzWydmb3JtJ10udmFsdWUgPSAnb3duZXInOworYmVmb3JlMS5h
dHRyaWJ1dGVzWydmb3JtJ10udmFsdWUgPSAnb3duZXInOworaW5uZXIyLmF0dHJpYnV0ZXNbJ2Zv
cm0nXS52YWx1ZSA9ICdvd25lcic7CitiZWZvcmUyLmF0dHJpYnV0ZXNbJ2Zvcm0nXS52YWx1ZSA9
ICdvd25lcic7CithZnRlcjIuYXR0cmlidXRlc1snZm9ybSddLnZhbHVlID0gJ293bmVyJzsKK2lu
bmVyMS5hdHRyaWJ1dGVzWydmb3JtJ10udmFsdWUgPSAnb3duZXInOworCitzaG91bGRCZSgnb3du
ZXIuZWxlbWVudHMubGVuZ3RoJywgJzYnKTsKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50c1swXScs
ICdiZWZvcmUxJyk7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHNbMV0nLCAnYmVmb3JlMicpOwor
c2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzWzJdJywgJ2lubmVyMScpOworc2hvdWxkQmUoJ293bmVy
LmVsZW1lbnRzWzNdJywgJ2lubmVyMicpOworc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzWzRdJywg
J2FmdGVyMScpOworc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzWzVdJywgJ2FmdGVyMicpOworCitk
ZWJ1ZygnJyk7CitkZWJ1ZygnLSBUZXN0IGZvciByZW1vdmluZy9hZGRpbmcgZWxlbWVudHMnKTsK
K2NvbnRhaW5lci5yZW1vdmVDaGlsZChiZWZvcmUyKTsKK293bmVyLnJlbW92ZUNoaWxkKGlubmVy
Mik7Citjb250YWluZXIucmVtb3ZlQ2hpbGQoYWZ0ZXIxKTsKK3Nob3VsZEJlKCdvd25lci5lbGVt
ZW50cy5sZW5ndGgnLCAnMycpOworc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzWzBdJywgJ2JlZm9y
ZTEnKTsKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50c1sxXScsICdpbm5lcjEnKTsKK3Nob3VsZEJl
KCdvd25lci5lbGVtZW50c1syXScsICdhZnRlcjInKTsKK2NvbnRhaW5lci5pbnNlcnRCZWZvcmUo
YmVmb3JlMiwgb3duZXIpOworb3duZXIuYXBwZW5kQ2hpbGQoaW5uZXIyKTsKK2NvbnRhaW5lci5p
bnNlcnRCZWZvcmUoYWZ0ZXIxLCBhZnRlcjIpOworc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzLmxl
bmd0aCcsICc2Jyk7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHNbMF0nLCAnYmVmb3JlMScpOwor
c2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzWzFdJywgJ2JlZm9yZTInKTsKK3Nob3VsZEJlKCdvd25l
ci5lbGVtZW50c1syXScsICdpbm5lcjEnKTsKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50c1szXScs
ICdpbm5lcjInKTsKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50c1s0XScsICdhZnRlcjEnKTsKK3No
b3VsZEJlKCdvd25lci5lbGVtZW50c1s1XScsICdhZnRlcjInKTsKKwordmFyIHN1Y2Nlc3NmdWxs
eVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Njcmlw
dC10ZXN0cy9mb3JtLWF0dHJpYnV0ZS1lbGVtZW50cy1vcmRlcjIuanMgYi9MYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL3NjcmlwdC10ZXN0cy9mb3JtLWF0dHJpYnV0ZS1lbGVtZW50cy1vcmRlcjIuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmQ3Zjc5OTdlYjVhOTYyZTkxMTNhZWNlMGIxYjUxMDg4Nzk2MGM4NQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2NyaXB0LXRlc3RzL2Zvcm0t
YXR0cmlidXRlLWVsZW1lbnRzLW9yZGVyMi5qcwpAQCAtMCwwICsxLDk4IEBACitkZXNjcmlwdGlv
bigiVGhpcyB0ZXN0IGV4YW1pbmVzIHRoZSBvcmRlciBvZiB0aGUgZWxlbWVudHMgYXR0cmlidXRl
IG9mIGEgZm9ybSBlbGVtZW50IHdpdGggZm9ybS1hc3NvY2lhdGVkIGVsZW1lbnRzIHdpdGggZm9y
bSBhdHRyaWJ1dGUgb3Igd2l0b3V0IGZvcm0gYXR0aWJ1dGUuIik7CisKK3ZhciBjb250YWluZXIg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKK2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hp
bGQoY29udGFpbmVyKTsKKworZGVidWcoJycpOworZGVidWcoJy0gVGVzdCBmb3IgdGhlIGNhc2Ug
d2hlcmUgc29tZSBlbGVtZW50cyBoYXZlIGZvcm0gYXR0cmlidXRlIGJ1dCBzb21lIG90aGVycyBu
b3QuJyk7Citjb250YWluZXIuaW5uZXJIVE1MID0gJzxmb3JtIGlkPW93bmVyPicgKworICAgICcg
ICAgPGlucHV0IGlkPWlucHV0MSBuYW1lPXZpY3RpbSAvPicgKworICAgICcgICAgPGlucHV0IGlk
PWlucHV0MiBuYW1lPXZpY3RpbSBmb3JtPW93bmVyIC8+JyArCisgICAgJyAgICA8aW5wdXQgaWQ9
aW5wdXQzIG5hbWU9dmljdGltIC8+JyArCisgICAgJzwvZm9ybT4nOwordmFyIG93bmVyID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ293bmVyJyk7Cit2YXIgaW5wdXQxID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2lucHV0MScpOwordmFyIGlucHV0MiA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdpbnB1dDInKTsKK3ZhciBpbnB1dDMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW5w
dXQzJyk7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHMubGVuZ3RoJywgJzMnKTsKK3Nob3VsZEJl
KCdvd25lci5lbGVtZW50c1swXScsICdpbnB1dDEnKTsKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50
c1sxXScsICdpbnB1dDInKTsKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50c1syXScsICdpbnB1dDMn
KTsKKworY29udGFpbmVyLmlubmVySFRNTCA9ICc8Zm9ybSBpZD1vd25lcj4nICsKKyAgICAnICAg
IDxpbnB1dCBpZD1pbnB1dDEgbmFtZT12aWN0aW0gZm9ybT1vd25lciAvPicgKworICAgICcgICAg
PGlucHV0IGlkPWlucHV0MiBuYW1lPXZpY3RpbSAvPicgKworICAgICcgICAgPGlucHV0IGlkPWlu
cHV0MyBuYW1lPXZpY3RpbSBmb3JtPW93bmVyIC8+JyArCisgICAgJzwvZm9ybT4nOworb3duZXIg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnb3duZXInKTsKK2lucHV0MSA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdpbnB1dDEnKTsKK2lucHV0MiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdpbnB1dDInKTsKK2lucHV0MyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbnB1dDMnKTsK
K3Nob3VsZEJlKCdvd25lci5lbGVtZW50cy5sZW5ndGgnLCAnMycpOworc2hvdWxkQmUoJ293bmVy
LmVsZW1lbnRzWzBdJywgJ2lucHV0MScpOworc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzWzFdJywg
J2lucHV0MicpOworc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzWzJdJywgJ2lucHV0MycpOworCitk
ZWJ1ZygnJyk7CitkZWJ1ZygnLSBUZXN0IGZvciBpbnNlcnRpbmcvcmVtb3ZpbmcgYSBmb3JtLWFz
c29jaWF0ZWQgZWxlbWVudCB3aXRob3V0IGZvcm0gYXR0cmlidXRlLicpOworY29udGFpbmVyLmlu
bmVySFRNTCA9ICc8aW5wdXQgbmFtZT12aWN0aW0gaWQ9YmVmb3JlIGZvcm09b3duZXIgLz4nICsK
KyAgICAnPGZvcm0gaWQ9b3duZXIgYWN0aW9uPSBtZXRob2Q9R0VUPicgKworICAgICcgICAgPGlu
cHV0IG5hbWU9dmljdGltIGlkPWlubmVyIC8+JyArCisgICAgJzwvZm9ybT4nICsKKyAgICAnPGlu
cHV0IG5hbWU9dmljdGltIGlkPWFmdGVyIGZvcm09b3duZXIgLz4nOworb3duZXIgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnb3duZXInKTsKK3ZhciBiZWZvcmUgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnYmVmb3JlJyk7Cit2YXIgaW5uZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
aW5uZXInKTsKK3ZhciBhZnRlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhZnRlcicpOwor
Cit2YXIgaW5uZXIyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTsKK2lubmVyMi5u
YW1lID0gJ3ZpY3RpbSc7Citpbm5lcjIuaWQgPSAnaW5uZXIyJzsKK293bmVyLmFwcGVuZENoaWxk
KGlubmVyMik7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHMubGVuZ3RoJywgJzQnKTsKK3Nob3Vs
ZEJlKCdvd25lci5lbGVtZW50c1swXScsICdiZWZvcmUnKTsKK3Nob3VsZEJlKCdvd25lci5lbGVt
ZW50c1sxXScsICdpbm5lcicpOworc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzWzJdJywgJ2lubmVy
MicpOworc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzWzNdJywgJ2FmdGVyJyk7CisKK293bmVyLnJl
bW92ZUNoaWxkKGlubmVyKTsKK293bmVyLmluc2VydEJlZm9yZShpbm5lciwgaW5uZXIyKTsKK3No
b3VsZEJlKCdvd25lci5lbGVtZW50cy5sZW5ndGgnLCAnNCcpOworc2hvdWxkQmUoJ293bmVyLmVs
ZW1lbnRzWzBdJywgJ2JlZm9yZScpOworc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzWzFdJywgJ2lu
bmVyJyk7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHNbMl0nLCAnaW5uZXIyJyk7CitzaG91bGRC
ZSgnb3duZXIuZWxlbWVudHNbM10nLCAnYWZ0ZXInKTsKKworZGVidWcoJycpOworZGVidWcoJy0g
VGVzdCBmb3IgaW5zZXJ0aW5nL3JlbW92aW5nIGEgZm9ybS1hc3NvY2lhdGVkIGVsZW1lbnQgd2l0
aCBmb3JtIGF0dHJpYnV0ZS4nKTsKK3ZhciBiZWZvcmUyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnaW5wdXQnKTsKK2JlZm9yZTIubmFtZSA9ICd2aWN0aW0nOworYmVmb3JlMi5pZCA9ICdiZWZv
cmUyJzsKK2JlZm9yZTIuc2V0QXR0cmlidXRlKCdmb3JtJywgJ293bmVyJyk7Citjb250YWluZXIu
aW5zZXJ0QmVmb3JlKGJlZm9yZTIsIG93bmVyKTsKK3ZhciBhZnRlcjIgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdpbnB1dCcpOworYWZ0ZXIyLm5hbWUgPSAndmljdGltJzsKK2FmdGVyMi5pZCA9
ICdhZnRlcjInOworYWZ0ZXIyLnNldEF0dHJpYnV0ZSgnZm9ybScsICdvd25lcicpOworY29udGFp
bmVyLmFwcGVuZENoaWxkKGFmdGVyMik7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHMubGVuZ3Ro
JywgJzYnKTsKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50c1swXScsICdiZWZvcmUnKTsKK3Nob3Vs
ZEJlKCdvd25lci5lbGVtZW50c1sxXScsICdiZWZvcmUyJyk7CitzaG91bGRCZSgnb3duZXIuZWxl
bWVudHNbMl0nLCAnaW5uZXInKTsKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50c1szXScsICdpbm5l
cjInKTsKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50c1s0XScsICdhZnRlcicpOworc2hvdWxkQmUo
J293bmVyLmVsZW1lbnRzWzVdJywgJ2FmdGVyMicpOworCitjb250YWluZXIucmVtb3ZlQ2hpbGQo
YmVmb3JlKTsKK2NvbnRhaW5lci5yZW1vdmVDaGlsZChhZnRlcik7Citjb250YWluZXIuaW5zZXJ0
QmVmb3JlKGJlZm9yZSwgYmVmb3JlMik7Citjb250YWluZXIuaW5zZXJ0QmVmb3JlKGFmdGVyLCBh
ZnRlcjIpOworc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzLmxlbmd0aCcsICc2Jyk7CitzaG91bGRC
ZSgnb3duZXIuZWxlbWVudHNbMF0nLCAnYmVmb3JlJyk7CitzaG91bGRCZSgnb3duZXIuZWxlbWVu
dHNbMV0nLCAnYmVmb3JlMicpOworc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzWzJdJywgJ2lubmVy
Jyk7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHNbM10nLCAnaW5uZXIyJyk7CitzaG91bGRCZSgn
b3duZXIuZWxlbWVudHNbNF0nLCAnYWZ0ZXInKTsKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50c1s1
XScsICdhZnRlcjInKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NjcmlwdC10ZXN0cy9mb3JtLWF0dHJpYnV0ZS1l
bGVtZW50cy5qcyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2NyaXB0LXRlc3RzL2Zvcm0tYXR0
cmlidXRlLWVsZW1lbnRzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM4MjY0NDdkODEzMTgwMjRhYzEwNGE0NDM1
ZDM0YTZmNGNlMThiM2UKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L3NjcmlwdC10ZXN0cy9mb3JtLWF0dHJpYnV0ZS1lbGVtZW50cy5qcwpAQCAtMCwwICsxLDQyIEBA
CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IGNoZWNrcyBhIGZvcm0gZWxlbWVudCBjYW4gaGFuZGxl
IGVsZW1lbnRzIG9mIHdoaWNoIGZvcm0gYXR0cmlidXRlIHBvaW50cyB0aGUgZm9ybSBlbGVtZW50
IGV2ZW4gaWYgZWxlbWVudHMgYXJlIG91dHNpZGUgb2YgdGhlIGZvcm0uIik7CisKK2lmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVu
dGlsRG9uZSgpOworCit2YXIgY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2
Jyk7Citkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGNvbnRhaW5lcik7CisKK2NvbnRhaW5lci5p
bm5lckhUTUwgPSAnPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9a2V5MSB2YWx1ZT12YWx1ZTEgaWQ9
b3V0ZXItYmVmb3JlIGZvcm09b3duZXIgLz4nICsKKyAgICAnPGZvcm0gaWQ9b3duZXIgYWN0aW9u
PSIiIG1ldGhvZD0iR0VUIj4nICsKKyAgICAnICAgIDxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWtl
eTIgdmFsdWU9dmFsdWUyIGlkPWlubmVyIGZvcm09b3duZXIgLz4nICsKKyAgICAnPC9mb3JtPicg
KworICAgICc8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1zdWJtaXR0ZWQgdmFsdWU9dHJ1ZSBpZD1v
dXRlci1hZnRlciBmb3JtPW93bmVyIC8+JzsKKwordmFyIG93bmVyID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ293bmVyJyk7Cit2YXIgb3V0ZXJCZWZvcmUgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnb3V0ZXItYmVmb3JlJyk7Cit2YXIgaW5uZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnaW5uZXInKTsKK3ZhciBvdXRlckFmdGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ291
dGVyLWFmdGVyJyk7Cit2YXIgcXVlcnkgPSB3aW5kb3cubG9jYXRpb24uc2VhcmNoOworCitpZiAo
cXVlcnkuaW5kZXhPZignc3VibWl0dGVkPXRydWUnKSA9PSAtMSkgeworICAgIG93bmVyLnN1Ym1p
dCgpOworfSBlbHNlIHsKKyAgICBkZWJ1ZygnLSBFbnN1cmVzIHRoYXQgZWxlbWVudHMgYXR0cmli
dXRlIG9mIHRoZSBmb3JtIGNvbnRhaW5zIGVsZW1lbnRzIHdoaWNoIGFyZSBvdXRzaWRlIG9mIHRo
ZSBmb3JtLicpOworCisgICAgc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzLmxlbmd0aCcsICczJyk7
CisgICAgc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzWzBdJywgJ291dGVyQmVmb3JlJyk7CisgICAg
c2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzWzFdJywgJ2lubmVyJyk7CisgICAgc2hvdWxkQmUoJ293
bmVyLmVsZW1lbnRzWzJdJywgJ291dGVyQWZ0ZXInKTsKKworICAgIGRlYnVnKCcnKTsKKyAgICBk
ZWJ1ZygnLSBFbnN1cmVzIHRoYXQgZm9ybSBzdWJtaXNzaW9uIGNvbnRhaW5zIG5hbWUgYW5kIHZh
bHVlIHBhaXJzIGZvciBzdWNoIGVsZW1lbnRzLicpOworICAgIHZhciBwYWlycyA9IHF1ZXJ5LnN1
YnN0cigxKS5zcGxpdCgnJicpOworICAgIHNob3VsZEJlKCdwYWlycy5sZW5ndGgnLCAnMycpOwor
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygncGFpcnNbMF0nLCAna2V5MT12YWx1ZTEnKTsKKyAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3BhaXJzWzFdJywgJ2tleTI9dmFsdWUyJyk7CisgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdwYWlyc1syXScsICdzdWJtaXR0ZWQ9dHJ1ZScpOworICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NjcmlwdC10ZXN0cy9mb3JtLWF0
dHJpYnV0ZS5qcyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2NyaXB0LXRlc3RzL2Zvcm0tYXR0
cmlidXRlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI5YWIyMjVkYjQ2YjkzODVjOGIxZWQzNDU3ODU2ZmUwMzU3
MzhhNTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NjcmlwdC10
ZXN0cy9mb3JtLWF0dHJpYnV0ZS5qcwpAQCAtMCwwICsxLDExNCBAQAorZGVzY3JpcHRpb24oIlRo
aXMgdGVzdCBjaGVja3MgdGhlIGZvcm0gYXR0cmlidXRlIG9mIHRoZSBmb3JtLWFzc29jaWF0ZWQg
ZWxlbWVudHMuIik7CisKK3ZhciBjb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdk
aXYnKTsKK2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoY29udGFpbmVyKTsKKworZGVidWcoJy0g
Q2hlY2tzIHRoZSBleGlzdGVuY2Ugb2YgdGhlIGZvcm0gYXR0cmlidXRlIGZvciBlYWNoIGZvcm0t
YXNzb2NpYXRlZCBlbGVtZW50cy4nKTsKK2RlYnVnKCdGSVhNRTogJmx0O2xhYmVsJmd0OyBhbmQg
Jmx0O29iamVjdCZndDsgZG9uXCd0IHN1cHBvcnQgdGhlIGZvcm0gYXR0cmlidXRlIGZvciBub3cu
Jyk7Citjb250YWluZXIuaW5uZXJIVE1MID0gJzxmb3JtIGlkPW93bmVyPjwvZm9ybT4nICsKKyAg
ICAnPGJ1dHRvbiBuYW1lPXZpY3RpbSBmb3JtPW93bmVyIC8+JyArCisgICAgJzxmaWVsZHNldCBu
YW1lPXZpY3RpbSBmb3JtPW93bmVyIC8+JyArCisgICAgJzxpbnB1dCBuYW1lPXZpY3RpbSBmb3Jt
PW93bmVyIC8+JyArCisgICAgJzxrZXlnZW4gbmFtZT12aWN0aW0gZm9ybT1vd25lciAvPicgKwor
ICAgICc8bWV0ZXIgbmFtZT12aWN0aW0gZm9ybT1vd25lciAvPicgKworICAgICc8b3V0cHV0IG5h
bWU9dmljdGltIGZvcm09b3duZXIgLz4nICsKKyAgICAnPHByb2dyZXNzIG5hbWU9dmljdGltIGZv
cm09b3duZXIgLz4nICsKKyAgICAnPHNlbGVjdCBuYW1lPXZpY3RpbSBmb3JtPW93bmVyIC8+JyAr
CisgICAgJzx0ZXh0YXJlYSBuYW1lPXZpY3RpbSBmb3JtPW93bmVyIC8+JzsKK3ZhciBvd25lciA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdvd25lcicpOworc2hvdWxkQmUoJ2RvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJidXR0b24iKVswXS5mb3JtJywgJ293bmVyJyk7CitzaG91bGRC
ZSgnZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImZpZWxkc2V0IilbMF0uZm9ybScsICdv
d25lcicpOworc2hvdWxkQmUoJ2RvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpbnB1dCIp
WzBdLmZvcm0nLCAnb3duZXInKTsKK3Nob3VsZEJlKCdkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgia2V5Z2VuIilbMF0uZm9ybScsICdvd25lcicpOworc2hvdWxkQmUoJ2RvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJtZXRlciIpWzBdLmZvcm0nLCAnb3duZXInKTsKK3Nob3VsZEJl
KCdkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgib3V0cHV0IilbMF0uZm9ybScsICdvd25l
cicpOworc2hvdWxkQmUoJ2RvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJwcm9ncmVzcyIp
WzBdLmZvcm0nLCAnb3duZXInKTsKK3Nob3VsZEJlKCdkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgic2VsZWN0IilbMF0uZm9ybScsICdvd25lcicpOworc2hvdWxkQmUoJ2RvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0YXJlYSIpWzBdLmZvcm0nLCAnb3duZXInKTsKKworZGVi
dWcoJycpOworZGVidWcoJy0gRW5zdXJlcyB0aGF0IHRoZSBmb3JtIGF0dHJpYnV0ZSBwb2ludHMg
dGhlIGZvcm0gb3duZXIgZXZlbiBpZiB0aGUgZWxlbWVudCBpcyB3aXRoaW4gYW5vdGhlciBmb3Jt
IGVsZW1lbnQuJyk7Citjb250YWluZXIuaW5uZXJIVE1MID0gJzxmb3JtIGlkPW93bmVyPjwvZm9y
bT4nICsKKyAgICAnPGZvcm0gaWQ9c2hvdWxkTm90QmVPd25lcj4nICsKKyAgICAnICAgIDxpbnB1
dCBpZD1pbnB1dEVsZW1lbnQgbmFtZT12aWN0aW0gZm9ybT1vd25lciAvPicgKworICAgICc8L2Zv
cm0+JzsKK293bmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ293bmVyJyk7Cit2YXIgaW5w
dXRFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2lucHV0RWxlbWVudCcpOworc2hv
dWxkQmUoJ2lucHV0RWxlbWVudC5mb3JtJywgJ293bmVyJyk7CisKK2RlYnVnKCcnKTsKK2RlYnVn
KCctIEVuc3VyZXMgdGhhdCB0aGUgZm9ybSBhdHRyaWJ1dGUgb2YgYWxsIGZvcm0tYXNzb2NpYXRl
ZCBlbGVtZW50IHdpdGggb3Igd2l0b3V0IGZvcm0gYXR0cmlidXRlIHBvaW50cyB0aGUgZm9ybSBv
d25lci4nKTsKK2NvbnRhaW5lci5pbm5lckhUTUwgPSAnPGZvcm0gaWQ9b3duZXI+JyArCisgICAg
JyAgICA8aW5wdXQgaWQ9aW5wdXRFbGVtZW50MSBuYW1lPXZpY3RpbSAvPicgKworICAgICcgICAg
PGlucHV0IGlkPWlucHV0RWxlbWVudDIgbmFtZT12aWN0aW0gZm9ybT1vd25lciAvPicgKworICAg
ICcgICAgPGlucHV0IGlkPWlucHV0RWxlbWVudDMgbmFtZT12aWN0aW0gLz4nICsKKyAgICAnPC9m
b3JtPic7Citvd25lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdvd25lcicpOwordmFyIGlu
cHV0RWxlbWVudDEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW5wdXRFbGVtZW50MScpOwor
dmFyIGlucHV0RWxlbWVudDIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW5wdXRFbGVtZW50
MicpOwordmFyIGlucHV0RWxlbWVudDMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW5wdXRF
bGVtZW50MycpOworc2hvdWxkQmUoJ2lucHV0RWxlbWVudDEuZm9ybScsICdvd25lcicpOworc2hv
dWxkQmUoJ2lucHV0RWxlbWVudDIuZm9ybScsICdvd25lcicpOworc2hvdWxkQmUoJ2lucHV0RWxl
bWVudDMuZm9ybScsICdvd25lcicpOworCitkZWJ1ZygnJyk7CitkZWJ1ZygnLSBFbnN1cmVzIHRo
YXQgdGhlIGZvcm0gYXR0cmlidXRlIHBvaW50cyB0aGUgZm9ybSBvd25lciBldmVuIGlmIHRoZSBm
b3JtIGVsZW1lbnQgaXMgbmVzdGVkIGFub3RoZXIgZm9ybSBlbGVtZW50LicpOworZGVidWcoJ05P
VEU6IEl0IHNlZW1zIHRoYXQgbmVzdGluZyBmb3JtIGVsZW1lbnRzIGlzIG5vdCBhbGxvd2VkIHNv
IHdlIGVuc3VyZSBlYWNoIGZvcm0tYXNzb2NpYXRlZCBlbGVtZW50cyBhc3NvY2lhdGUgd2l0aCB0
aGUgb3V0bW9zdCBmb3JtIGVsZW1lbnQuJyk7Citjb250YWluZXIuaW5uZXJIVE1MID0gJzxmb3Jt
IGlkPW93bmVyPicgKworICAgICcgICAgPGZvcm0+JyArCisgICAgJyAgICAgICAgPGlucHV0IGlk
PWlucHV0RWxlbWVudDEgbmFtZT12aWN0aW0gZm9ybT1vd25lci8+JyArCisgICAgJyAgICAgICAg
PGlucHV0IGlkPWlucHV0RWxlbWVudDIgbmFtZT12aWN0aW0gLz4nICsKKyAgICAnICAgICAgICA8
aW5wdXQgaWQ9aW5wdXRFbGVtZW50MyBuYW1lPXZpY3RpbSBmb3JtPW93bmVyLz4nICsKKyAgICAn
ICAgIDwvZm9ybT4nICsKKyAgICAnPC9mb3JtPic7Citvd25lciA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdvd25lcicpOworaW5wdXRFbGVtZW50MSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdpbnB1dEVsZW1lbnQxJyk7CitpbnB1dEVsZW1lbnQyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2lucHV0RWxlbWVudDInKTsKK2lucHV0RWxlbWVudDMgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnaW5wdXRFbGVtZW50MycpOworc2hvdWxkQmUoJ2lucHV0RWxlbWVudDEuZm9ybScsICdv
d25lcicpOworc2hvdWxkQmUoJ2lucHV0RWxlbWVudDIuZm9ybScsICdvd25lcicpOworc2hvdWxk
QmUoJ2lucHV0RWxlbWVudDMuZm9ybScsICdvd25lcicpOworCitkZWJ1ZygnJyk7CitkZWJ1Zygn
LSBFbnN1cmVzIHdoZXRoZXIgdGhlIGZvcm0gb3duZXIgaXMgc2V0IGNvcnJlY3RseSB3aGVuIHRo
ZSB2YWx1ZSBvZiBmb3JtIGF0dHJpYnV0ZSBvZiBhIGZvcm0tYXNzb2NpYXRlZCBlbGVtZW50IGNo
YW5nZWQuJyk7Citjb250YWluZXIuaW5uZXJIVE1MID0gJzxmb3JtIGlkPWZvcm0xPjwvZm9ybT4n
ICsKKyAgICAnPGZvcm0gaWQ9Zm9ybTI+PC9mb3JtPicgKworICAgICc8aW5wdXQgaWQ9aW5wdXRF
bGVtZW50IG5hbWU9dmljdGltIGZvcm09Zm9ybTEgLz4nOwordmFyIGZvcm0xID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2Zvcm0xJyk7Cit2YXIgZm9ybTIgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnZm9ybTInKTsKK2lucHV0RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdp
bnB1dEVsZW1lbnQnKTsKK3Nob3VsZEJlKCdpbnB1dEVsZW1lbnQuZm9ybScsICdmb3JtMScpOwor
aW5wdXRFbGVtZW50LmF0dHJpYnV0ZXNbJ2Zvcm0nXS52YWx1ZSA9ICdmb3JtMic7CitzaG91bGRC
ZSgnaW5wdXRFbGVtZW50LmZvcm0nLCAnZm9ybTInKTsKKworZGVidWcoJycpOworZGVidWcoJy0g
RW5zdXJlcyB3aGV0aGVyIHRoZSBmb3JtIG93bmVyIGlzIHNldCBjb3JyZWN0bHkgd2hlbiB0aGUg
dmFsdWUgb2YgZm9ybSBhdHRyaWJ1dGUgaXMgYWRkZWQvcmVtb3ZlZC4nKTsKK2NvbnRhaW5lci5p
bm5lckhUTUwgPSAnPGZvcm0gaWQ9b3duZXIgbmFtZT1maXJzdE93bmVyPjwvZm9ybT4nICsKKyAg
ICAnPGlucHV0IGlkPWlucHV0RWxlbWVudCBuYW1lPXZpY3RpbSAvPic7Citvd25lciA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdvd25lcicpOworaW5wdXRFbGVtZW50ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2lucHV0RWxlbWVudCcpOworc2hvdWxkQmUoJ2lucHV0RWxlbWVudC5mb3Jt
JywgJ251bGwnKTsKK3ZhciBmb3JtQXR0cmlidXRlID0gZG9jdW1lbnQuY3JlYXRlQXR0cmlidXRl
KCdmb3JtJyk7CitpbnB1dEVsZW1lbnQuc2V0QXR0cmlidXRlKCdmb3JtJywgJ293bmVyJyk7Citz
aG91bGRCZSgnaW5wdXRFbGVtZW50LmZvcm0nLCAnb3duZXInKTsKK2lucHV0RWxlbWVudC5yZW1v
dmVBdHRyaWJ1dGUoJ2Zvcm0nKTsKK3Nob3VsZEJlKCdpbnB1dEVsZW1lbnQuZm9ybScsICdudWxs
Jyk7CisKK2RlYnVnKCcnKTsKK2RlYnVnKCctIEVuc3VyZXMgd2hldGhlciB0aGUgZm9ybSBvd25l
ciBpcyBzZXQgY29ycmVjdGx5IHdoZW4gdGhlIGZvcm0gb3duZXIgaXMgYWRkZWQvcmVtb3ZlZC4n
KTsKK2NvbnRhaW5lci5pbm5lckhUTUwgPSAnPGZvcm0gaWQ9b3duZXIgbmFtZT1maXJzdE93bmVy
PjwvZm9ybT4nICsKKyAgICAnPGZvcm0gaWQ9b3duZXIgbmFtZT1zZWNvbmRPd25lcj48L2Zvcm0+
JyArCisgICAgJzxpbnB1dCBpZD1pbnB1dEVsZW1lbnQgbmFtZT12aWN0aW0gZm9ybT1vd25lciAv
Pic7Citvd25lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdvd25lcicpOworc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCdvd25lci5uYW1lJywgJ2ZpcnN0T3duZXInKTsKK2lucHV0RWxlbWVudCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbnB1dEVsZW1lbnQnKTsKK2NvbnRhaW5lci5yZW1v
dmVDaGlsZChvd25lcik7Citvd25lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdvd25lcicp
Oworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdvd25lci5uYW1lJywgJ3NlY29uZE93bmVyJyk7Citz
aG91bGRCZSgnaW5wdXRFbGVtZW50LmZvcm0nLCAnb3duZXInKTsKK2NvbnRhaW5lci5yZW1vdmVD
aGlsZChvd25lcik7CitzaG91bGRCZSgnaW5wdXRFbGVtZW50LmZvcm0nLCAnbnVsbCcpOworY29u
dGFpbmVyLmFwcGVuZENoaWxkKG93bmVyKTsKK3Nob3VsZEJlKCdpbnB1dEVsZW1lbnQuZm9ybScs
ICdvd25lcicpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWQyYWQ3MTM2ZGRk
OTM2ZjI1NDQ0NTI4YmQxNzZiNGMzMDY2MjQ2Yy4uYWNhN2FiNDM2NWUwNTA2ZjUzYmRmMmE4MTc3
NjFmMDMwNWVjODUwZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MCBAQAorMjAxMC0xMS0xMyAgS2VuaWNoaSBJc2hpYmFz
aGkgIDxiYXNoaUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFtIVE1MNV0gImZvcm0iIGF0dHJpYnV0ZSBzdXBwb3J0IGZvciBmb3Jt
IGNvbnRyb2wgZWxlbWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQ3ODEzCisKKyAgICAgICAgQWRkcyBhIGxpc3Qgb2YgZm9ybS1hc3NvY2lhdGVk
IGVsZW1lbnRzIHdpdGggZm9ybSBhdHRyaWJ1dGUgaW50bworICAgICAgICB0aGUgRG9jdW1lbnQg
Y2xhc3MgdG8gc3VwcG9ydCBmb3JtIGF0dHJpYnV0ZS4KKyAgICAgICAgQWRkcyBhIGZ1bmN0aW9u
IHRvIGRldGVybWluZSB0aGUgcmlnaHQgcGxhY2UgdG8gbG9jYXRlCisgICAgICAgIGZvcm0tYXNz
b2NpYXRlZCBlbGVtZW50cyB3aXRoIGZvcm0gYXR0cmlidXRlIGludG8KKyAgICAgICAgbV9hc3Nv
Y2lhdGVkRWxlbWVudHMgb2YgSFRNTEZvcm1FbGVtZW50IGNsYXNzLgorCisgICAgICAgIFRlc3Rz
OiBmYXN0L2Zvcm1zL2Zvcm0tYXR0cmlidXRlLWVsZW1lbnRzLW9yZGVyLmh0bWwKKyAgICAgICAg
ICAgICAgIGZhc3QvZm9ybXMvZm9ybS1hdHRyaWJ1dGUtZWxlbWVudHMtb3JkZXIyLmh0bWwKKyAg
ICAgICAgICAgICAgIGZhc3QvZm9ybXMvZm9ybS1hdHRyaWJ1dGUtZWxlbWVudHMuaHRtbAorICAg
ICAgICAgICAgICAgZmFzdC9mb3Jtcy9mb3JtLWF0dHJpYnV0ZS5odG1sCisKKyAgICAgICAgKiBk
b20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlZ2lzdGVyRm9y
bUVsZW1lbnRXaXRoRm9ybUF0dHJpYnV0ZSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6OnVucmVnaXN0ZXJGb3JtRWxlbWVudFdpdGhGb3JtQXR0cmlidXRlKTogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cmVzZXRGb3JtRWxlbWVudHNPd25lcik6IEFkZGVk
LgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOiBBZGRlZCB0aGUgbGlzdCBmb3IgZWxlbWVudHMg
d2l0aCBmb3JtIGF0dHJpYnV0ZS4KKyAgICAgICAgKiBodG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5p
bjogQWRkZWQgZm9ybSBhdHRyaWJ1dGUuCisgICAgICAgICogaHRtbC9IVE1MRm9ybUNvbnRyb2xF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6Omlu
c2VydGVkSW50b1RyZWUpOiBNb2RpZmllZCB0byBoYW5kbGUKKyAgICAgICAgZm9ybSBhdHRyaWJ1
dGUuCisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpyZW1vdmVkRnJv
bVRyZWUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6
OnJlc2V0Rm9ybU93bmVyKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRy
b2xFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKTogQWRkZWQuCisgICAgICAgICogaHRtbC9IVE1M
Rm9ybUNvbnRyb2xFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50OjpIVE1MRm9ybUVsZW1lbnQpOiBN
b2RpZmllZCB0byBpbml0aWFsaXplCisgICAgICAgIG5ld2x5LWFkZGVkIHZhcmlhYmxlcy4KKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtRWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQpOiBN
b2RpZmllZCB0byByZXNldAorICAgICAgICBmb3JtIG93bmVyIG9mIGZvcm0tYXNzb2NpYXRlZCBl
bGVtZW50cy4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtRWxlbWVudDo6cmVtb3ZlZEZyb21E
b2N1bWVudCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50Ojpmb3Jt
RWxlbWVudEluZGV4V2l0aEZvcm1BdHRyaWJ1dGUpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxGb3JtRWxlbWVudDo6Zm9ybUVsZW1lbnRJbmRleCk6IE1vZGlmaWVkIHRvIHRyZWF0Cisg
ICAgICAgIGZvcm0tYXNzb2NpYXRlZCBlbGVtZW50cyB3aXRoIGZvcm0gYXR0cmlidXRlIHNlcGFy
YXRlbHkuCisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ6OnJlbW92ZUZvcm1FbGVt
ZW50KTogTW9kaWZpZWQgdG8gaGFuZGxlCisgICAgICAgIGZvcm0tYXNzb2NpYXRlZCBlbGVtZW50
cyB3aXRoIGZvcm0gYXR0cmlidXRlLgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1FbGVtZW50Lmg6
IEFkZGVkIHRocmVlIHZhcmlhYmxlcyB0byBoYW5kbGUgZm9ybSBhdHRyaWJ1dGUuCisgICAgICAg
ICogaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5jcHA6IFJlbW92ZWQgIkZJWE1FIiBjb21tZW50Lgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE91dHB1dEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRl
KToKKyAgICAgICAgKiBodG1sL0hUTUxPdXRwdXRFbGVtZW50Lmg6IFJlbW92ZWQgc2V0Rm9ybSgp
LgorCiAyMDEwLTExLTEzICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4uCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAgYi9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggN2Y3N2Iz
ZWY0NGQ2MTZlNTVjNTdjYmQxZGU4ZmYxYTVlOGZiYWJiZC4uYTRiNTFjYmJiOGM3NmQ2NTczMzEy
OTM3MDA4MzkzZDVlZjE0NGMyNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CisrKyBiL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNDM2NSw2ICs0MzY1LDI1IEBAIHZv
aWQgRG9jdW1lbnQ6OnNldEljb25VUkwoY29uc3QgU3RyaW5nJiBpY29uVVJMLCBjb25zdCBTdHJp
bmcmIHR5cGUpCiAgICAgICAgIGYtPmxvYWRlcigpLT5zZXRJY29uVVJMKG1faWNvblVSTCk7CiB9
CiAKK3ZvaWQgRG9jdW1lbnQ6OnJlZ2lzdGVyRm9ybUVsZW1lbnRXaXRoRm9ybUF0dHJpYnV0ZShF
bGVtZW50KiBlKQoreworICAgIEFTU0VSVChlLT5mYXN0SGFzQXR0cmlidXRlKGZvcm1BdHRyKSk7
CisgICAgbV9mb3JtRWxlbWVudHNXaXRoRm9ybUF0dHJpYnV0ZS5hZGQoZSk7Cit9CisKK3ZvaWQg
RG9jdW1lbnQ6OnVucmVnaXN0ZXJGb3JtRWxlbWVudFdpdGhGb3JtQXR0cmlidXRlKEVsZW1lbnQq
IGUpCit7CisgICAgbV9mb3JtRWxlbWVudHNXaXRoRm9ybUF0dHJpYnV0ZS5yZW1vdmUoZSk7Cit9
CisKK3ZvaWQgRG9jdW1lbnQ6OnJlc2V0Rm9ybUVsZW1lbnRzT3duZXIoSFRNTEZvcm1FbGVtZW50
KiBmb3JtKQoreworICAgIHR5cGVkZWYgRm9ybUVsZW1lbnRMaXN0SGFzaFNldDo6aXRlcmF0b3Ig
SXRlcmF0b3I7CisgICAgSXRlcmF0b3IgZW5kID0gbV9mb3JtRWxlbWVudHNXaXRoRm9ybUF0dHJp
YnV0ZS5lbmQoKTsKKyAgICBmb3IgKEl0ZXJhdG9yIGl0ID0gbV9mb3JtRWxlbWVudHNXaXRoRm9y
bUF0dHJpYnV0ZS5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgIHN0YXRpY19jYXN0
PEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqPigqaXQpLT5yZXNldEZvcm1Pd25lcihmb3JtKTsKK30K
Kwogdm9pZCBEb2N1bWVudDo6c2V0VXNlU2VjdXJlS2V5Ym9hcmRFbnRyeVdoZW5BY3RpdmUoYm9v
bCB1c2VzU2VjdXJlS2V5Ym9hcmQpCiB7CiAgICAgaWYgKG1fdXNlU2VjdXJlS2V5Ym9hcmRFbnRy
eVdoZW5BY3RpdmUgPT0gdXNlc1NlY3VyZUtleWJvYXJkKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9k
b20vRG9jdW1lbnQuaCBiL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggOGNjNjI3MjIwN2Fl
M2JmNTJhYjJkMDQzMzFlY2ZmNTcwY2ViMTkzMi4uNTUzZmZlMTE0MTllMTVjNTliYWI0OTI1MWMw
YmY3MTExOTc2NmVlYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC00ODMsNiArNDgzLDEwIEBAIHB1YmxpYzoKICAgICBi
b29sIGhhc1N0YXRlRm9yTmV3Rm9ybUVsZW1lbnRzKCkgY29uc3Q7CiAgICAgYm9vbCB0YWtlU3Rh
dGVGb3JGb3JtRWxlbWVudChBdG9taWNTdHJpbmdJbXBsKiBuYW1lLCBBdG9taWNTdHJpbmdJbXBs
KiB0eXBlLCBTdHJpbmcmIHN0YXRlKTsKIAorICAgIHZvaWQgcmVnaXN0ZXJGb3JtRWxlbWVudFdp
dGhGb3JtQXR0cmlidXRlKEVsZW1lbnQqIGUpOworICAgIHZvaWQgdW5yZWdpc3RlckZvcm1FbGVt
ZW50V2l0aEZvcm1BdHRyaWJ1dGUoRWxlbWVudCogZSk7CisgICAgdm9pZCByZXNldEZvcm1FbGVt
ZW50c093bmVyKEhUTUxGb3JtRWxlbWVudCopOworCiAgICAgRnJhbWVWaWV3KiB2aWV3KCkgY29u
c3Q7IC8vIGNhbiBiZSBOVUxMCiAgICAgRnJhbWUqIGZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9m
cmFtZTsgfSAvLyBjYW4gYmUgTlVMTAogICAgIFBhZ2UqIHBhZ2UoKSBjb25zdDsgLy8gY2FuIGJl
IE5VTEwKQEAgLTExOTcsNiArMTIwMSw3IEBAIHByaXZhdGU6CiAKICAgICB0eXBlZGVmIExpc3RI
YXNoU2V0PEVsZW1lbnQqLCA2ND4gRm9ybUVsZW1lbnRMaXN0SGFzaFNldDsKICAgICBGb3JtRWxl
bWVudExpc3RIYXNoU2V0IG1fZm9ybUVsZW1lbnRzV2l0aFN0YXRlOworICAgIEZvcm1FbGVtZW50
TGlzdEhhc2hTZXQgbV9mb3JtRWxlbWVudHNXaXRoRm9ybUF0dHJpYnV0ZTsKIAogICAgIHR5cGVk
ZWYgSGFzaE1hcDxGb3JtRWxlbWVudEtleSwgVmVjdG9yPFN0cmluZz4sIEZvcm1FbGVtZW50S2V5
SGFzaCwgRm9ybUVsZW1lbnRLZXlIYXNoVHJhaXRzPiBGb3JtRWxlbWVudFN0YXRlTWFwOwogICAg
IEZvcm1FbGVtZW50U3RhdGVNYXAgbV9zdGF0ZUZvck5ld0Zvcm1FbGVtZW50czsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4gYi9XZWJDb3JlL2h0bWwvSFRN
TEF0dHJpYnV0ZU5hbWVzLmluCmluZGV4IGQ5NzU5ZmNkYjBhODI0MDFhM2YwNWY1OGFhYWJkOWRj
MjJjNjQ2ZmYuLjE4ODFiNmZiYTIyOGRlOGI0MmE3OTM3ZTBlY2QxMjRlNmUzM2QxMTAgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4KKysrIGIvV2ViQ29yZS9o
dG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgpAQCAtOTQsNiArOTQsNyBAQCBleHBhbmRlZAogZmFj
ZQogZm9jdXNlZAogZm9yCitmb3JtCiBmb3Jtbm92YWxpZGF0ZQogZnJhbWUKIGZyYW1lYm9yZGVy
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAgYi9X
ZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKaW5kZXggOGZhMDAwZjFiMWM3
YTE0MDgwZjY3ZTRjZTk3NzJmMDVlZDgyYmI0NS4uMmY1ZDQxNGYzYjRkODgxZDdmY2U2ZGI3ODBi
YTkxY2JjNWIxZDBlNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVs
ZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcApA
QCAtMTU0LDYgKzE1NCwxNiBAQCB2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmF0dGFjaCgp
CiAKIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6aW5zZXJ0ZWRJbnRvVHJlZShib29sIGRl
ZXApCiB7CisgICAgaWYgKGZhc3RIYXNBdHRyaWJ1dGUoZm9ybUF0dHIpKSB7CisgICAgICAgIGRv
Y3VtZW50KCktPnJlZ2lzdGVyRm9ybUVsZW1lbnRXaXRoRm9ybUF0dHJpYnV0ZSh0aGlzKTsKKyAg
ICAgICAgRWxlbWVudCogZWxlbWVudCA9IGRvY3VtZW50KCktPmdldEVsZW1lbnRCeUlkKGZhc3RH
ZXRBdHRyaWJ1dGUoZm9ybUF0dHIpKTsKKyAgICAgICAgaWYgKGVsZW1lbnQgJiYgZWxlbWVudC0+
aGFzVGFnTmFtZShmb3JtVGFnKSkgeworICAgICAgICAgICAgaWYgKG1fZm9ybSkKKyAgICAgICAg
ICAgICAgICBtX2Zvcm0tPnJlbW92ZUZvcm1FbGVtZW50KHRoaXMpOworICAgICAgICAgICAgbV9m
b3JtID0gc3RhdGljX2Nhc3Q8SFRNTEZvcm1FbGVtZW50Kj4oZWxlbWVudCk7CisgICAgICAgICAg
ICBtX2Zvcm0tPnJlZ2lzdGVyRm9ybUVsZW1lbnQodGhpcyk7CisgICAgICAgIH0KKyAgICB9CiAg
ICAgaWYgKCFtX2Zvcm0pIHsKICAgICAgICAgLy8gVGhpcyBoYW5kbGVzIHRoZSBjYXNlIG9mIGEg
bmV3IGZvcm0gZWxlbWVudCBiZWluZyBjcmVhdGVkIGJ5CiAgICAgICAgIC8vIEphdmFTY3JpcHQg
YW5kIGluc2VydGVkIGluc2lkZSBhIGZvcm0uICBJbiB0aGUgY2FzZSBvZiB0aGUgcGFyc2VyCkBA
IC0xNzksNiArMTg5LDkgQEAgc3RhdGljIGlubGluZSBOb2RlKiBmaW5kUm9vdChOb2RlKiBuKQog
CiB2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnJlbW92ZWRGcm9tVHJlZShib29sIGRlZXAp
CiB7CisgICAgaWYgKGZhc3RIYXNBdHRyaWJ1dGUoZm9ybUF0dHIpKQorICAgICAgICBkb2N1bWVu
dCgpLT51bnJlZ2lzdGVyRm9ybUVsZW1lbnRXaXRoRm9ybUF0dHJpYnV0ZSh0aGlzKTsKKwogICAg
IC8vIElmIHRoZSBmb3JtIGFuZCBlbGVtZW50IGFyZSBib3RoIGluIHRoZSBzYW1lIHRyZWUsIHBy
ZXNlcnZlIHRoZSBjb25uZWN0aW9uIHRvIHRoZSBmb3JtLgogICAgIC8vIE90aGVyd2lzZSwgbnVs
bCBvdXQgb3VyIGZvcm0gYW5kIHJlbW92ZSBvdXJzZWx2ZXMgZnJvbSB0aGUgZm9ybSdzIGxpc3Qg
b2YgZWxlbWVudHMuCiAgICAgaWYgKG1fZm9ybSAmJiBmaW5kUm9vdCh0aGlzKSAhPSBmaW5kUm9v
dChtX2Zvcm0pKSB7CkBAIC00MzEsNiArNDQ0LDUwIEBAIHZvaWQgSFRNTEZvcm1Db250cm9sRWxl
bWVudDo6cmVtb3ZlRnJvbUZvcm0oKQogICAgIG1fZm9ybSA9IDA7CiB9CiAKK3ZvaWQgSFRNTEZv
cm1Db250cm9sRWxlbWVudDo6cmVzZXRGb3JtT3duZXIoSFRNTEZvcm1FbGVtZW50KiBmb3JtKQor
eworICAgIGlmIChtX2Zvcm0pIHsKKyAgICAgICAgaWYgKCFmYXN0SGFzQXR0cmlidXRlKGZvcm1B
dHRyKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9mb3JtLT5yZW1vdmVGb3JtRWxl
bWVudCh0aGlzKTsKKyAgICB9CisgICAgbV9mb3JtID0gMDsKKyAgICBpZiAoZmFzdEhhc0F0dHJp
YnV0ZShmb3JtQXR0cikpIHsKKyAgICAgICAgLy8gVGhlIEhUTUw1IHNwZWMgc2F5cyB0aGF0IHRo
ZSBlbGVtZW50IHNob3VsZCBiZSBhc3NvY2lhdGVkIHdpdGgKKyAgICAgICAgLy8gdGhlIGZpcnN0
IGVsZW1lbnQgaW4gdGhlIGRvY3VtZW50IHRvIGhhdmUgYW4gSUQgdGhhdCBlcXVhbCB0bworICAg
ICAgICAvLyB0aGUgdmFsdWUgb2YgZm9ybSBhdHRyaWJ1dGUsIHNvIHdlIHB1dCB0aGUgcmVzdWx0
IG9mCisgICAgICAgIC8vIGRvY3VtZW50KCktPmdldEVsZW1lbnRCeUlkKCkgb3ZlciB0aGUgZ2l2
ZW4gZWxlbWVudC4KKyAgICAgICAgRWxlbWVudCogZmlyc3RFbGVtZW50ID0gZG9jdW1lbnQoKS0+
Z2V0RWxlbWVudEJ5SWQoZmFzdEdldEF0dHJpYnV0ZShmb3JtQXR0cikpOworICAgICAgICBpZiAo
Zmlyc3RFbGVtZW50ICYmIGZpcnN0RWxlbWVudC0+aGFzVGFnTmFtZShmb3JtVGFnKSkKKyAgICAg
ICAgICAgIG1fZm9ybSA9IHN0YXRpY19jYXN0PEhUTUxGb3JtRWxlbWVudCo+KGZpcnN0RWxlbWVu
dCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fZm9ybSA9IGZvcm07CisgICAgfSBlbHNl
CisgICAgICAgIG1fZm9ybSA9IGZpbmRGb3JtQW5jZXN0b3IoKTsKKyAgICBpZiAobV9mb3JtKQor
ICAgICAgICBtX2Zvcm0tPnJlZ2lzdGVyRm9ybUVsZW1lbnQodGhpcyk7CisgICAgZWxzZQorICAg
ICAgICBkb2N1bWVudCgpLT5jaGVja2VkUmFkaW9CdXR0b25zKCkuYWRkQnV0dG9uKHRoaXMpOwor
fQorCit2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQoQXR0cmli
dXRlKiBhdHRyLCBib29sIHByZXNlcnZlRGVjbHMpCit7CisgICAgaWYgKGF0dHItPm5hbWUoKSA9
PSBmb3JtQXR0cikgeworICAgICAgICBpZiAoIWZhc3RIYXNBdHRyaWJ1dGUoZm9ybUF0dHIpKSB7
CisgICAgICAgICAgICAvLyBUaGUgZm9ybSBhdHRyaWJ1dGUgcmVtb3ZlZC4gV2UgbmVlZCB0byBy
ZXNldCBmb3JtIG93bmVyIGhlcmUuCisgICAgICAgICAgICBpZiAobV9mb3JtKQorICAgICAgICAg
ICAgICAgIG1fZm9ybS0+cmVtb3ZlRm9ybUVsZW1lbnQodGhpcyk7CisgICAgICAgICAgICBtX2Zv
cm0gPSBmaW5kRm9ybUFuY2VzdG9yKCk7CisgICAgICAgICAgICBpZiAobV9mb3JtKQorICAgICAg
ICAgICAgICAgIG1fZm9ybS0+cmVnaXN0ZXJGb3JtRWxlbWVudCh0aGlzKTsKKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICBkb2N1bWVudCgpLT5jaGVja2VkUmFkaW9CdXR0b25zKCku
YWRkQnV0dG9uKHRoaXMpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHJlc2V0Rm9ybU93
bmVyKDApOworICAgIH0KKyAgICBIVE1MRWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZChhdHRyLCBw
cmVzZXJ2ZURlY2xzKTsKK30KKwogYm9vbCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojppc0xhYmVs
YWJsZSgpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IEFkZCBtZXRlclRhZyBhbmQgb3V0cHV0VGFn
IHRvIHRoZSBsaXN0IG9uY2Ugd2Ugc3VwcG9ydCB0aGVtLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9o
dG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaCBiL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRy
b2xFbGVtZW50LmgKaW5kZXggMTk2MGZjMzRmMjg4ZGEzNTYyZWU2Y2QxNzk0YWIzOTA3YmU1OTNh
My4uOGM5OGQ5MTE3MDE0MDI0MDhiNzhlNjhhMDIzMDJhZDljZDNmMTQzNiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaAorKysgYi9XZWJDb3JlL2h0bWwv
SFRNTEZvcm1Db250cm9sRWxlbWVudC5oCkBAIC05OSw2ICs5OSw5IEBAIHB1YmxpYzoKICAgICAK
ICAgICBib29sIHJlYWRPbmx5KCkgY29uc3QgeyByZXR1cm4gbV9yZWFkT25seTsgfQogCisgICAg
dm9pZCByZXNldEZvcm1Pd25lcihIVE1MRm9ybUVsZW1lbnQqKTsKKyAgICB2aXJ0dWFsIHZvaWQg
YXR0cmlidXRlQ2hhbmdlZChBdHRyaWJ1dGUqLCBib29sIHByZXNlcnZlRGVjbHMgPSBmYWxzZSk7
CisKIHByb3RlY3RlZDoKICAgICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50KGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiwgSFRNTEZvcm1FbGVtZW50Kik7CiAKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxG
b3JtRWxlbWVudC5jcHAKaW5kZXggZGEzODhkNWM2NTFiOWMzMDkzZmQ5ODQxZDI1Mjg3MWQzOTYz
NTdmMi4uNjJhYTkyNzA5MzIwNzcwY2QxNmMyYWQyZDRkNTNkZjMyYzA1Mzk1MiAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hU
TUxGb3JtRWxlbWVudC5jcHAKQEAgLTY1LDYgKzY1LDggQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxO
YW1lczsKIAogSFRNTEZvcm1FbGVtZW50OjpIVE1MRm9ybUVsZW1lbnQoY29uc3QgUXVhbGlmaWVk
TmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogSFRNTEVsZW1lbnQodGFn
TmFtZSwgZG9jdW1lbnQpCisgICAgLCBtX2Fzc29jaWF0ZWRFbGVtZW50c0JlZm9yZUluZGV4KDAp
CisgICAgLCBtX2Fzc29jaWF0ZWRFbGVtZW50c0FmdGVySW5kZXgoMCkKICAgICAsIG1fd2FzVXNl
clN1Ym1pdHRlZChmYWxzZSkKICAgICAsIG1fYXV0b2NvbXBsZXRlKHRydWUpCiAgICAgLCBtX2lu
c3VibWl0KGZhbHNlKQpAQCAtMTMzLDYgKzEzNSw5IEBAIHZvaWQgSFRNTEZvcm1FbGVtZW50Ojpp
bnNlcnRlZEludG9Eb2N1bWVudCgpCiAgICAgICAgIHN0YXRpY19jYXN0PEhUTUxEb2N1bWVudCo+
KGRvY3VtZW50KCkpLT5hZGROYW1lZEl0ZW0obV9uYW1lKTsKIAogICAgIEhUTUxFbGVtZW50Ojpp
bnNlcnRlZEludG9Eb2N1bWVudCgpOworCisgICAgaWYgKGhhc0lEKCkpCisgICAgICAgIGRvY3Vt
ZW50KCktPnJlc2V0Rm9ybUVsZW1lbnRzT3duZXIodGhpcyk7CiB9CiAKIHZvaWQgSFRNTEZvcm1F
bGVtZW50OjpyZW1vdmVkRnJvbURvY3VtZW50KCkKQEAgLTE0MSw2ICsxNDYsOSBAQCB2b2lkIEhU
TUxGb3JtRWxlbWVudDo6cmVtb3ZlZEZyb21Eb2N1bWVudCgpCiAgICAgICAgIHN0YXRpY19jYXN0
PEhUTUxEb2N1bWVudCo+KGRvY3VtZW50KCkpLT5yZW1vdmVOYW1lZEl0ZW0obV9uYW1lKTsKIAog
ICAgIEhUTUxFbGVtZW50OjpyZW1vdmVkRnJvbURvY3VtZW50KCk7CisKKyAgICBpZiAoaGFzSUQo
KSkKKyAgICAgICAgZG9jdW1lbnQoKS0+cmVzZXRGb3JtRWxlbWVudHNPd25lcigwKTsKIH0KIAog
dm9pZCBIVE1MRm9ybUVsZW1lbnQ6OmhhbmRsZUxvY2FsRXZlbnRzKEV2ZW50KiBldmVudCkKQEAg
LTM4OCwyNCArMzk2LDY0IEBAIHRlbXBsYXRlPGNsYXNzIFQsIHNpemVfdCBuPiBzdGF0aWMgdm9p
ZCByZW1vdmVGcm9tVmVjdG9yKFZlY3RvcjxUKiwgbj4gJiB2ZWMsIFQqCiAgICAgICAgIH0KIH0K
IAordW5zaWduZWQgSFRNTEZvcm1FbGVtZW50Ojpmb3JtRWxlbWVudEluZGV4V2l0aEZvcm1BdHRy
aWJ1dGUoSFRNTEZvcm1Db250cm9sRWxlbWVudCogZWxlbWVudCkKK3sKKyAgICAvLyBDb21wYXJl
cyB0aGUgcG9zaXRpb24gb2YgdGhlIGZvcm0gZWxlbWVudCBhbmQgdGhlIGluc2VydGVkIGVsZW1l
bnQuCisgICAgLy8gVXBkYXRlcyB0aGUgaW5kZWNlcyBpbiBvcmRlciB0byB0aGUgcmVsYXRpb24g
b2YgdGhlIHBvc2l0aW9uOgorICAgIHVuc2lnbmVkIHNob3J0IHBvc2l0aW9uID0gY29tcGFyZURv
Y3VtZW50UG9zaXRpb24oZWxlbWVudCk7CisgICAgaWYgKHBvc2l0aW9uICYgRE9DVU1FTlRfUE9T
SVRJT05fQ09OVEFJTlMpCisgICAgICAgICsrbV9hc3NvY2lhdGVkRWxlbWVudHNBZnRlckluZGV4
OworICAgIGVsc2UgaWYgKHBvc2l0aW9uICYgRE9DVU1FTlRfUE9TSVRJT05fUFJFQ0VESU5HKSB7
CisgICAgICAgICsrbV9hc3NvY2lhdGVkRWxlbWVudHNCZWZvcmVJbmRleDsKKyAgICAgICAgKytt
X2Fzc29jaWF0ZWRFbGVtZW50c0FmdGVySW5kZXg7CisgICAgfQorCisgICAgaWYgKG1fYXNzb2Np
YXRlZEVsZW1lbnRzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICAvLyBEb2Vz
IGJpbmFyeSBzZWFyY2ggb24gbV9hc3NvY2lhdGVkRWxlbWVudHMgaW4gb3JkZXIgdG8gZmluZCB0
aGUgaW5kZXgKKyAgICAvLyB0byBiZSBpbnNlcnRlZC4KKyAgICB1bnNpZ25lZCBsZWZ0ID0gMCwg
cmlnaHQgPSBtX2Fzc29jaWF0ZWRFbGVtZW50cy5zaXplKCkgLSAxOworICAgIHdoaWxlIChsZWZ0
ICE9IHJpZ2h0KSB7CisgICAgICAgIHVuc2lnbmVkIG1pZGRsZSA9IChsZWZ0ICsgcmlnaHQpIC8g
MjsKKyAgICAgICAgcG9zaXRpb24gPSBlbGVtZW50LT5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiht
X2Fzc29jaWF0ZWRFbGVtZW50c1ttaWRkbGVdKTsKKyAgICAgICAgaWYgKHBvc2l0aW9uICYgRE9D
VU1FTlRfUE9TSVRJT05fRk9MTE9XSU5HKQorICAgICAgICAgICAgcmlnaHQgPSBtaWRkbGU7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIGxlZnQgPSBtaWRkbGUgKyAxOworICAgIH0KKworICAg
IHBvc2l0aW9uID0gZWxlbWVudC0+Y29tcGFyZURvY3VtZW50UG9zaXRpb24obV9hc3NvY2lhdGVk
RWxlbWVudHNbbGVmdF0pOworICAgIGlmIChwb3NpdGlvbiAmIERPQ1VNRU5UX1BPU0lUSU9OX0ZP
TExPV0lORykKKyAgICAgICAgcmV0dXJuIGxlZnQ7CisgICAgcmV0dXJuIGxlZnQgKyAxOworfQor
CiB1bnNpZ25lZCBIVE1MRm9ybUVsZW1lbnQ6OmZvcm1FbGVtZW50SW5kZXgoSFRNTEZvcm1Db250
cm9sRWxlbWVudCogZSkKIHsKKyAgICAvLyBUcmVhdHMgc2VwYXJhdGVseSB0aGUgY2FzZSB3aGVy
ZSB0aGlzIGVsZW1lbnQgaGFzIHRoZSBmb3JtIGF0dHJpYnV0ZQorICAgIC8vIGZvciBwZXJmb3Jt
YW5jZSBjb25zaWRlcmF0aW9uLgorICAgIGlmIChlLT5mYXN0SGFzQXR0cmlidXRlKGZvcm1BdHRy
KSkKKyAgICAgICAgcmV0dXJuIGZvcm1FbGVtZW50SW5kZXhXaXRoRm9ybUF0dHJpYnV0ZShlKTsK
KwogICAgIC8vIENoZWNrIGZvciB0aGUgc3BlY2lhbCBjYXNlIHdoZXJlIHRoaXMgZWxlbWVudCBp
cyB0aGUgdmVyeSBsYXN0IHRoaW5nIGluCiAgICAgLy8gdGhlIGZvcm0ncyB0cmVlIG9mIGNoaWxk
cmVuOyB3ZSBkb24ndCB3YW50IHRvIHdhbGsgdGhlIGVudGlyZSB0cmVlIGluIHRoYXQKICAgICAv
LyBjb21tb24gY2FzZSB0aGF0IG9jY3VycyBkdXJpbmcgcGFyc2luZzsgaW5zdGVhZCB3ZSdsbCBq
dXN0IHJldHVybiBhIHZhbHVlCiAgICAgLy8gdGhhdCBzYXlzICJhZGQgdGhpcyBmb3JtIGVsZW1l
bnQgdG8gdGhlIGVuZCBvZiB0aGUgYXJyYXkiLgogICAgIGlmIChlLT50cmF2ZXJzZU5leHROb2Rl
KHRoaXMpKSB7Ci0gICAgICAgIHVuc2lnbmVkIGkgPSAwOworICAgICAgICB1bnNpZ25lZCBpID0g
bV9hc3NvY2lhdGVkRWxlbWVudHNCZWZvcmVJbmRleDsKICAgICAgICAgZm9yIChOb2RlKiBub2Rl
ID0gdGhpczsgbm9kZTsgbm9kZSA9IG5vZGUtPnRyYXZlcnNlTmV4dE5vZGUodGhpcykpIHsKLSAg
ICAgICAgICAgIGlmIChub2RlID09IGUpCisgICAgICAgICAgICBpZiAobm9kZSA9PSBlKSB7Cisg
ICAgICAgICAgICAgICAgKyttX2Fzc29jaWF0ZWRFbGVtZW50c0FmdGVySW5kZXg7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAobm9kZS0+
aXNIVE1MRWxlbWVudCgpCiAgICAgICAgICAgICAgICAgICAgICYmIHN0YXRpY19jYXN0PEVsZW1l
bnQqPihub2RlKS0+aXNGb3JtQ29udHJvbEVsZW1lbnQoKQogICAgICAgICAgICAgICAgICAgICAm
JiBzdGF0aWNfY2FzdDxIVE1MRm9ybUNvbnRyb2xFbGVtZW50Kj4obm9kZSktPmZvcm0oKSA9PSB0
aGlzKQogICAgICAgICAgICAgICAgICsraTsKICAgICAgICAgfQogICAgIH0KLSAgICByZXR1cm4g
bV9hc3NvY2lhdGVkRWxlbWVudHMuc2l6ZSgpOworICAgIHJldHVybiBtX2Fzc29jaWF0ZWRFbGVt
ZW50c0FmdGVySW5kZXgrKzsKIH0KIAogdm9pZCBIVE1MRm9ybUVsZW1lbnQ6OnJlZ2lzdGVyRm9y
bUVsZW1lbnQoSFRNTEZvcm1Db250cm9sRWxlbWVudCogZSkKQEAgLTQxOCw2ICs0NjYsMTggQEAg
dm9pZCBIVE1MRm9ybUVsZW1lbnQ6OnJlZ2lzdGVyRm9ybUVsZW1lbnQoSFRNTEZvcm1Db250cm9s
RWxlbWVudCogZSkKIHZvaWQgSFRNTEZvcm1FbGVtZW50OjpyZW1vdmVGb3JtRWxlbWVudChIVE1M
Rm9ybUNvbnRyb2xFbGVtZW50KiBlKQogewogICAgIG1fY2hlY2tlZFJhZGlvQnV0dG9ucy5yZW1v
dmVCdXR0b24oZSk7CisgICAgaWYgKGUtPmZhc3RIYXNBdHRyaWJ1dGUoZm9ybUF0dHIpKSB7Cisg
ICAgICAgIHVuc2lnbmVkIGluZGV4OworICAgICAgICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBt
X2Fzc29jaWF0ZWRFbGVtZW50cy5zaXplKCk7ICsraW5kZXgpCisgICAgICAgICAgICBpZiAobV9h
c3NvY2lhdGVkRWxlbWVudHNbaW5kZXhdID09IGUpCisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIEFTU0VSVChpbmRleCA8IG1fYXNzb2NpYXRlZEVsZW1lbnRzLnNpemUoKSk7CisgICAg
ICAgIGlmIChpbmRleCA8IG1fYXNzb2NpYXRlZEVsZW1lbnRzQmVmb3JlSW5kZXgpCisgICAgICAg
ICAgICAtLW1fYXNzb2NpYXRlZEVsZW1lbnRzQmVmb3JlSW5kZXg7CisgICAgICAgIGlmIChpbmRl
eCA8IG1fYXNzb2NpYXRlZEVsZW1lbnRzQWZ0ZXJJbmRleCkKKyAgICAgICAgICAgIC0tbV9hc3Nv
Y2lhdGVkRWxlbWVudHNBZnRlckluZGV4OworICAgIH0gZWxzZQorICAgICAgICAtLW1fYXNzb2Np
YXRlZEVsZW1lbnRzQWZ0ZXJJbmRleDsKICAgICByZW1vdmVGcm9tVmVjdG9yKG1fYXNzb2NpYXRl
ZEVsZW1lbnRzLCBlKTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxl
bWVudC5oIGIvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oCmluZGV4IGI5OTZkOWRlMjQw
ZjA2YmU1ZDU0MGUwZTA4NzVjZTBiMTM3NTZmOTQuLjRlMDZiZWMwOTljNjNjNGZjMzVkNTkzYTA1
YTNlMzM1ZjAwMmYxMGYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQu
aAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmgKQEAgLTEzMSw2ICsxMzEsNyBA
QCBwcml2YXRlOgogCiAgICAgdm9pZCBzdWJtaXQoRXZlbnQqLCBib29sIGFjdGl2YXRlU3VibWl0
QnV0dG9uLCBib29sIHByb2Nlc3NpbmdVc2VyR2VzdHVyZSwgRm9ybVN1Ym1pc3Npb25UcmlnZ2Vy
KTsKIAorICAgIHVuc2lnbmVkIGZvcm1FbGVtZW50SW5kZXhXaXRoRm9ybUF0dHJpYnV0ZShIVE1M
Rm9ybUNvbnRyb2xFbGVtZW50Kik7CiAgICAgdW5zaWduZWQgZm9ybUVsZW1lbnRJbmRleChIVE1M
Rm9ybUNvbnRyb2xFbGVtZW50Kik7CiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBzdWJtaXNz
aW9uIHNob3VsZCBiZSBwcm9jZWVkZWQuCiAgICAgYm9vbCB2YWxpZGF0ZUludGVyYWN0aXZlbHko
RXZlbnQqKTsKQEAgLTE0OCw2ICsxNDksOCBAQCBwcml2YXRlOgogCiAgICAgQ2hlY2tlZFJhZGlv
QnV0dG9ucyBtX2NoZWNrZWRSYWRpb0J1dHRvbnM7CiAKKyAgICB1bnNpZ25lZCBtX2Fzc29jaWF0
ZWRFbGVtZW50c0JlZm9yZUluZGV4OworICAgIHVuc2lnbmVkIG1fYXNzb2NpYXRlZEVsZW1lbnRz
QWZ0ZXJJbmRleDsKICAgICBWZWN0b3I8SFRNTEZvcm1Db250cm9sRWxlbWVudCo+IG1fYXNzb2Np
YXRlZEVsZW1lbnRzOwogICAgIFZlY3RvcjxIVE1MSW1hZ2VFbGVtZW50Kj4gbV9pbWFnZUVsZW1l
bnRzOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTE91dHB1dEVsZW1lbnQuY3BwIGIv
V2ViQ29yZS9odG1sL0hUTUxPdXRwdXRFbGVtZW50LmNwcAppbmRleCBkZWUyMWFlZmNlNTk0NmMw
NGI2MTQ2NTY0NmNmZTBhYTkwMWMwMThmLi5iODMyNjNlMzgxN2MwYjVjYjBiZGVjNWViNzNjZDc3
NDdlYmIwY2U2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTE91dHB1dEVsZW1lbnQuY3Bw
CisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5jcHAKQEAgLTU4LDcgKzU4LDYg
QEAgY29uc3QgQXRvbWljU3RyaW5nJiBIVE1MT3V0cHV0RWxlbWVudDo6Zm9ybUNvbnRyb2xUeXBl
KCkgY29uc3QKIAogdm9pZCBIVE1MT3V0cHV0RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUo
QXR0cmlidXRlKiBhdHRyKQogewotICAgIC8vIEZJWE1FOiBTaG91bGQgaGFuZGxlIHRoZSAnZm9y
bScgYXR0cmlidXRlIGhlcmUuCiAgICAgaWYgKGF0dHItPm5hbWUoKSA9PSBIVE1MTmFtZXM6OmZv
ckF0dHIpCiAgICAgICAgIHNldEZvcihhdHRyLT52YWx1ZSgpKTsKICAgICBlbHNlCkBAIC03NSwx
MSArNzQsNiBAQCB2b2lkIEhUTUxPdXRwdXRFbGVtZW50OjpzZXRGb3IoY29uc3QgU3RyaW5nJiB2
YWx1ZSkKICAgICBtX3Rva2Vucy0+c2V0VmFsdWUodmFsdWUpOwogfQogCi12b2lkIEhUTUxPdXRw
dXRFbGVtZW50OjpzZXRGb3JtKGNvbnN0IFN0cmluZyYgLyppZCovKQotewotICAgIC8vIEZJWE1F
OiBJbXBsZW1lbnQgdGhpcyBmdW5jdGlvbi4KLX0KLQogdm9pZCBIVE1MT3V0cHV0RWxlbWVudDo6
Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY3JlYXRlZEJ5UGFyc2VyLCBOb2RlKiwgTm9kZSosIGludCkK
IHsKICAgICBpZiAoY3JlYXRlZEJ5UGFyc2VyIHx8IG1faXNTZXRUZXh0Q29udGVudEluUHJvZ3Jl
c3MpIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5oIGIvV2Vi
Q29yZS9odG1sL0hUTUxPdXRwdXRFbGVtZW50LmgKaW5kZXggZGY4MDdmYmNjN2NjOTdhNGI1YjE0
ZWJiNDViZjU1YTM5YTAzNTcyNi4uODNlY2VlMmY0OWY4NjE2ZjdiMTBlYzlkYmRjMmRlMDczMGEz
ZmRlZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxPdXRwdXRFbGVtZW50LmgKKysrIGIv
V2ViQ29yZS9odG1sL0hUTUxPdXRwdXRFbGVtZW50LmgKQEAgLTQzLDcgKzQzLDYgQEAgcHVibGlj
OgogCiAgICAgdmlydHVhbCBib29sIHdpbGxWYWxpZGF0ZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CiAKLSAgICB2b2lkIHNldEZvcm0oY29uc3QgU3RyaW5nJik7CiAgICAgU3RyaW5nIHZhbHVl
KCkgY29uc3Q7CiAgICAgdm9pZCBzZXRWYWx1ZShjb25zdCBTdHJpbmcmKTsKICAgICBTdHJpbmcg
ZGVmYXVsdFZhbHVlKCkgY29uc3Q7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>73870</attachid>
            <date>2010-11-14 19:07:38 -0800</date>
            <delta_ts>2010-11-14 20:57:16 -0800</delta_ts>
            <desc>Patch V5</desc>
            <filename>bug-47813-20101115120736.patch</filename>
            <type>text/plain</type>
            <size>49233</size>
            <attacher name="Kenichi Ishibashi">bashi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmNzFmMjFlMTgwNzA0MzI5MGNmNjlkYTU1NjlhZjA4NmY1NGI2ZjM0Li4zMGRhZWEw
Mzk1OTRjY2QxNjBiMzBhMmNjZGRhZjkzNjkyNDNlN2Y1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAK
KzIwMTAtMTEtMTMgIEtlbmljaGkgSXNoaWJhc2hpICA8YmFzaGlAZ29vZ2xlLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbSFRNTDVdICJmb3Jt
IiBhdHRyaWJ1dGUgc3VwcG9ydCBmb3IgZm9ybSBjb250cm9sIGVsZW1lbnRzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzgxMworCisgICAgICAgIEFk
ZHMgYSB0ZXN0IGZpbGUgZm9yICJmb3JtIiBhdHRyaWJ1dGUgb2YgZm9ybS1hc3NvY2lhdGVkIGVs
ZW1lbnRzLgorICAgICAgICBUaGUgdGVzdCBtaWdodCBuZWVkIHRvIGJlIHJldmlzZWQgYmVjYXVz
ZSA8bGFiZWw+IGFuZCA8b2JqZWN0PiBkb24ndAorICAgICAgICBzdXBwb3J0ICJmb3JtIiBhdHRy
aWJ1dGUgZm9yIG5vdywgaW4gc3BpdGUgb2YgdGhlIEhUTUw1IHNwZWMgc2F5cyB0aGF0CisgICAg
ICAgIHRoZXkgc2hvdWxkIHN1cHBvcnQuCisKKyAgICAgICAgKiBmYXN0L2Zvcm1zL2Zvcm0tYXR0
cmlidXRlLWVsZW1lbnRzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jt
cy9mb3JtLWF0dHJpYnV0ZS1lbGVtZW50cy1vcmRlci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvZm9ybXMvZm9ybS1hdHRyaWJ1dGUtZWxlbWVudHMtb3JkZXIuaHRtbDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9mb3JtLWF0dHJpYnV0ZS1lbGVtZW50cy1vcmRlcjIt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL2Zvcm0tYXR0cmlidXRl
LWVsZW1lbnRzLW9yZGVyMi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL2Zvcm0t
YXR0cmlidXRlLWVsZW1lbnRzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvZm9y
bS1hdHRyaWJ1dGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL2Zv
cm0tYXR0cmlidXRlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvc2NyaXB0LXRl
c3RzL2Zvcm0tYXR0cmlidXRlLWVsZW1lbnRzLW9yZGVyLmpzOiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2Zvcm1zL3NjcmlwdC10ZXN0cy9mb3JtLWF0dHJpYnV0ZS1lbGVtZW50cy1vcmRlcjIuanM6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvc2NyaXB0LXRlc3RzL2Zvcm0tYXR0cmlidXRl
LWVsZW1lbnRzLmpzOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL3NjcmlwdC10ZXN0cy9m
b3JtLWF0dHJpYnV0ZS5qczogQWRkZWQuCisKIDIwMTAtMTEtMTQgIE1paGFpIFBhcnBhcml0YSAg
PG1paGFpcEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCBDaHJvbWl1bSBleHBl
Y3RhdGlvbnMgdXBkYXRlLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9mb3Jt
LWF0dHJpYnV0ZS1lbGVtZW50cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L2Zvcm0tYXR0cmlidXRlLWVsZW1lbnRzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYzYxYzRj
NTgzMjE5MzQ4NmUyOTIyMTAxNzg5M2U3YjllNzEyMWM4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9mb3JtLWF0dHJpYnV0ZS1lbGVtZW50cy1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwyMCBAQAorVGhpcyB0ZXN0IGNoZWNrcyBhIGZvcm0gZWxlbWVudCBjYW4gaGFu
ZGxlIGVsZW1lbnRzIG9mIHdoaWNoIGZvcm0gYXR0cmlidXRlIHBvaW50cyB0aGUgZm9ybSBlbGVt
ZW50IGV2ZW4gaWYgZWxlbWVudHMgYXJlIG91dHNpZGUgb2YgdGhlIGZvcm0uCisKK09uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KKworCistIEVuc3VyZXMgdGhhdCBlbGVtZW50cyBhdHRyaWJ1dGUg
b2YgdGhlIGZvcm0gY29udGFpbnMgZWxlbWVudHMgd2hpY2ggYXJlIG91dHNpZGUgb2YgdGhlIGZv
cm0uCitQQVNTIG93bmVyLmVsZW1lbnRzLmxlbmd0aCBpcyAzCitQQVNTIG93bmVyLmVsZW1lbnRz
WzBdIGlzIG91dGVyQmVmb3JlCitQQVNTIG93bmVyLmVsZW1lbnRzWzFdIGlzIGlubmVyCitQQVNT
IG93bmVyLmVsZW1lbnRzWzJdIGlzIG91dGVyQWZ0ZXIKKworLSBFbnN1cmVzIHRoYXQgZm9ybSBz
dWJtaXNzaW9uIGNvbnRhaW5zIG5hbWUgYW5kIHZhbHVlIHBhaXJzIGZvciBzdWNoIGVsZW1lbnRz
LgorUEFTUyBwYWlycy5sZW5ndGggaXMgMworUEFTUyBwYWlyc1swXSBpcyAia2V5MT12YWx1ZTEi
CitQQVNTIHBhaXJzWzFdIGlzICJrZXkyPXZhbHVlMiIKK1BBU1MgcGFpcnNbMl0gaXMgInN1Ym1p
dHRlZD10cnVlIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZm9ybS1hdHRyaWJ1dGUt
ZWxlbWVudHMtb3JkZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9mb3Jt
LWF0dHJpYnV0ZS1lbGVtZW50cy1vcmRlci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGY2MDQ4
YzZlNTQyYmZiMDNkMTQ2MDUyMjkwNGQ0MWYxNzYwZGNlZQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvZm9ybS1hdHRyaWJ1dGUtZWxlbWVudHMtb3JkZXItZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsOTUgQEAKK1RoaXMgdGVzdCBleGFtaW5lcyB0aGUgb3JkZXIgb2Yg
dGhlIGVsZW1lbnRzIGF0dHJpYnV0ZSBvZiBhIGZvcm0gZWxlbWVudC4KKworT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRF
U1QgQ09NUExFVEUiLgorCisKKy0gVGVzdCBmb3IgdGhlIGNhc2Ugd2hlcmUgc29tZSBlbGVtZW50
cyBhcmUgb3V0c2lkZSBvZiB0aGUgZm9ybS4KK1BBU1Mgb3duZXIuZWxlbWVudHMubGVuZ3RoIGlz
IDYKK1BBU1Mgb3duZXIuZWxlbWVudHNbMF0gaXMgYmVmb3JlMQorUEFTUyBvd25lci5lbGVtZW50
c1sxXSBpcyBiZWZvcmUyCitQQVNTIG93bmVyLmVsZW1lbnRzWzJdIGlzIGlubmVyMQorUEFTUyBv
d25lci5lbGVtZW50c1szXSBpcyBpbm5lcjIKK1BBU1Mgb3duZXIuZWxlbWVudHNbNF0gaXMgYWZ0
ZXIxCitQQVNTIG93bmVyLmVsZW1lbnRzWzVdIGlzIGFmdGVyMgorCistIFRlc3QgZm9yIGNoYW5n
aW5nIHRoZSB2YWx1ZSBvZiB0aGUgZm9ybSBhdHRyaWJ1dGUgb2YgYSBlbGVtZW50IHdoaWNoIGlz
IGxvY2F0ZWQgYmVmb3JlIHRoZSBmb3JtIG93bmVyLgorUEFTUyBvd25lci5lbGVtZW50cy5sZW5n
dGggaXMgNQorUEFTUyBvd25lci5lbGVtZW50c1swXSBpcyBiZWZvcmUxCitQQVNTIG93bmVyLmVs
ZW1lbnRzWzFdIGlzIGlubmVyMQorUEFTUyBvd25lci5lbGVtZW50c1syXSBpcyBpbm5lcjIKK1BB
U1Mgb3duZXIuZWxlbWVudHNbM10gaXMgYWZ0ZXIxCitQQVNTIG93bmVyLmVsZW1lbnRzWzRdIGlz
IGFmdGVyMgorUEFTUyBvd25lci5lbGVtZW50cy5sZW5ndGggaXMgNgorUEFTUyBvd25lci5lbGVt
ZW50c1swXSBpcyBiZWZvcmUxCitQQVNTIG93bmVyLmVsZW1lbnRzWzFdIGlzIGJlZm9yZTIKK1BB
U1Mgb3duZXIuZWxlbWVudHNbMl0gaXMgaW5uZXIxCitQQVNTIG93bmVyLmVsZW1lbnRzWzNdIGlz
IGlubmVyMgorUEFTUyBvd25lci5lbGVtZW50c1s0XSBpcyBhZnRlcjEKK1BBU1Mgb3duZXIuZWxl
bWVudHNbNV0gaXMgYWZ0ZXIyCisKKy0gVGVzdCBmb3IgY2hhbmdpbmcgdGhlIHZhbHVlIG9mIHRo
ZSBmb3JtIGF0dHJpYnV0ZSBvZiBhIGVsZW1lbnQgd2hpY2ggaXMgbG9jYXRlZCBpbnNpZGUgb2Yg
dGhlIGZvcm0gb3duZXIuCitQQVNTIG93bmVyLmVsZW1lbnRzLmxlbmd0aCBpcyA1CitQQVNTIG93
bmVyLmVsZW1lbnRzWzBdIGlzIGJlZm9yZTEKK1BBU1Mgb3duZXIuZWxlbWVudHNbMV0gaXMgYmVm
b3JlMgorUEFTUyBvd25lci5lbGVtZW50c1syXSBpcyBpbm5lcjEKK1BBU1Mgb3duZXIuZWxlbWVu
dHNbM10gaXMgYWZ0ZXIxCitQQVNTIG93bmVyLmVsZW1lbnRzWzRdIGlzIGFmdGVyMgorUEFTUyBv
d25lci5lbGVtZW50cy5sZW5ndGggaXMgNgorUEFTUyBvd25lci5lbGVtZW50c1swXSBpcyBiZWZv
cmUxCitQQVNTIG93bmVyLmVsZW1lbnRzWzFdIGlzIGJlZm9yZTIKK1BBU1Mgb3duZXIuZWxlbWVu
dHNbMl0gaXMgaW5uZXIxCitQQVNTIG93bmVyLmVsZW1lbnRzWzNdIGlzIGlubmVyMgorUEFTUyBv
d25lci5lbGVtZW50c1s0XSBpcyBhZnRlcjEKK1BBU1Mgb3duZXIuZWxlbWVudHNbNV0gaXMgYWZ0
ZXIyCisKKy0gVGVzdCBmb3IgY2hhbmdpbmcgdGhlIHZhbHVlIG9mIHRoZSBmb3JtIGF0dHJpYnV0
ZSBvZiBhIGVsZW1lbnQgd2hpY2ggaXMgbG9jYXRlZCBhZnRlciB0aGUgZm9ybSBvd25lci4KK1BB
U1Mgb3duZXIuZWxlbWVudHMubGVuZ3RoIGlzIDUKK1BBU1Mgb3duZXIuZWxlbWVudHNbMF0gaXMg
YmVmb3JlMQorUEFTUyBvd25lci5lbGVtZW50c1sxXSBpcyBiZWZvcmUyCitQQVNTIG93bmVyLmVs
ZW1lbnRzWzJdIGlzIGlubmVyMQorUEFTUyBvd25lci5lbGVtZW50c1szXSBpcyBpbm5lcjIKK1BB
U1Mgb3duZXIuZWxlbWVudHNbNF0gaXMgYWZ0ZXIyCitQQVNTIG93bmVyLmVsZW1lbnRzLmxlbmd0
aCBpcyA2CitQQVNTIG93bmVyLmVsZW1lbnRzWzBdIGlzIGJlZm9yZTEKK1BBU1Mgb3duZXIuZWxl
bWVudHNbMV0gaXMgYmVmb3JlMgorUEFTUyBvd25lci5lbGVtZW50c1syXSBpcyBpbm5lcjEKK1BB
U1Mgb3duZXIuZWxlbWVudHNbM10gaXMgaW5uZXIyCitQQVNTIG93bmVyLmVsZW1lbnRzWzRdIGlz
IGFmdGVyMQorUEFTUyBvd25lci5lbGVtZW50c1s1XSBpcyBhZnRlcjIKKworLSBUZXN0IGZvciBz
ZXR0aW5nIGZvcm0gYXR0cmlidXRlIG9mIGVsZW1lbnRzIGluIHJldmVyc2Ugb3JkZXIuCitQQVNT
IG93bmVyLmVsZW1lbnRzLmxlbmd0aCBpcyA2CitQQVNTIG93bmVyLmVsZW1lbnRzWzBdIGlzIGJl
Zm9yZTEKK1BBU1Mgb3duZXIuZWxlbWVudHNbMV0gaXMgYmVmb3JlMgorUEFTUyBvd25lci5lbGVt
ZW50c1syXSBpcyBpbm5lcjEKK1BBU1Mgb3duZXIuZWxlbWVudHNbM10gaXMgaW5uZXIyCitQQVNT
IG93bmVyLmVsZW1lbnRzWzRdIGlzIGFmdGVyMQorUEFTUyBvd25lci5lbGVtZW50c1s1XSBpcyBh
ZnRlcjIKKworLSBUZXN0IGZvciBzZXR0aW5nIGZvcm0gYXR0cmlidXRlIG9mIGVsZW1lbnRzIGlu
IHJhbmRvbSBvcmRlci4KK1BBU1Mgb3duZXIuZWxlbWVudHMubGVuZ3RoIGlzIDYKK1BBU1Mgb3du
ZXIuZWxlbWVudHNbMF0gaXMgYmVmb3JlMQorUEFTUyBvd25lci5lbGVtZW50c1sxXSBpcyBiZWZv
cmUyCitQQVNTIG93bmVyLmVsZW1lbnRzWzJdIGlzIGlubmVyMQorUEFTUyBvd25lci5lbGVtZW50
c1szXSBpcyBpbm5lcjIKK1BBU1Mgb3duZXIuZWxlbWVudHNbNF0gaXMgYWZ0ZXIxCitQQVNTIG93
bmVyLmVsZW1lbnRzWzVdIGlzIGFmdGVyMgorCistIFRlc3QgZm9yIHJlbW92aW5nL2FkZGluZyBl
bGVtZW50cworUEFTUyBvd25lci5lbGVtZW50cy5sZW5ndGggaXMgMworUEFTUyBvd25lci5lbGVt
ZW50c1swXSBpcyBiZWZvcmUxCitQQVNTIG93bmVyLmVsZW1lbnRzWzFdIGlzIGlubmVyMQorUEFT
UyBvd25lci5lbGVtZW50c1syXSBpcyBhZnRlcjIKK1BBU1Mgb3duZXIuZWxlbWVudHMubGVuZ3Ro
IGlzIDYKK1BBU1Mgb3duZXIuZWxlbWVudHNbMF0gaXMgYmVmb3JlMQorUEFTUyBvd25lci5lbGVt
ZW50c1sxXSBpcyBiZWZvcmUyCitQQVNTIG93bmVyLmVsZW1lbnRzWzJdIGlzIGlubmVyMQorUEFT
UyBvd25lci5lbGVtZW50c1szXSBpcyBpbm5lcjIKK1BBU1Mgb3duZXIuZWxlbWVudHNbNF0gaXMg
YWZ0ZXIxCitQQVNTIG93bmVyLmVsZW1lbnRzWzVdIGlzIGFmdGVyMgorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKKyAgCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvZm9ybS1hdHRyaWJ1dGUtZWxlbWVudHMtb3JkZXIuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZm9ybS1hdHRyaWJ1dGUtZWxlbWVudHMtb3JkZXIuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yZTE3MjFkNDgxZDdhZTI1MzBmMmM4ZmNlNTUyZmIyOTZhYWZjMTQ1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9mb3JtLWF0dHJpYnV0ZS1l
bGVtZW50cy1vcmRlci5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJ
QyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ij4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2Zvcm0tYXR0
cmlidXRlLWVsZW1lbnRzLW9yZGVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9mb3JtLWF0dHJpYnV0ZS1l
bGVtZW50cy1vcmRlcjItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9mb3Jt
LWF0dHJpYnV0ZS1lbGVtZW50cy1vcmRlcjItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI1NDYw
ZWRjYzc3YzhmNzY5YjAxNjU4ZjkzMWIwNzUzYzVjMTc5MGMKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2Zvcm0tYXR0cmlidXRlLWVsZW1lbnRzLW9yZGVyMi1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSw0OSBAQAorVGhpcyB0ZXN0IGV4YW1pbmVzIHRoZSBvcmRlciBv
ZiB0aGUgZWxlbWVudHMgYXR0cmlidXRlIG9mIGEgZm9ybSBlbGVtZW50IHdpdGggZm9ybS1hc3Nv
Y2lhdGVkIGVsZW1lbnRzIHdpdGggZm9ybSBhdHRyaWJ1dGUgb3Igd2l0b3V0IGZvcm0gYXR0aWJ1
dGUuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCisKKy0gVGVzdCBmb3IgdGhlIGNh
c2Ugd2hlcmUgc29tZSBlbGVtZW50cyBoYXZlIGZvcm0gYXR0cmlidXRlIGJ1dCBzb21lIG90aGVy
cyBub3QuCitQQVNTIG93bmVyLmVsZW1lbnRzLmxlbmd0aCBpcyAzCitQQVNTIG93bmVyLmVsZW1l
bnRzWzBdIGlzIGlucHV0MQorUEFTUyBvd25lci5lbGVtZW50c1sxXSBpcyBpbnB1dDIKK1BBU1Mg
b3duZXIuZWxlbWVudHNbMl0gaXMgaW5wdXQzCitQQVNTIG93bmVyLmVsZW1lbnRzLmxlbmd0aCBp
cyAzCitQQVNTIG93bmVyLmVsZW1lbnRzWzBdIGlzIGlucHV0MQorUEFTUyBvd25lci5lbGVtZW50
c1sxXSBpcyBpbnB1dDIKK1BBU1Mgb3duZXIuZWxlbWVudHNbMl0gaXMgaW5wdXQzCisKKy0gVGVz
dCBmb3IgaW5zZXJ0aW5nL3JlbW92aW5nIGEgZm9ybS1hc3NvY2lhdGVkIGVsZW1lbnQgd2l0aG91
dCBmb3JtIGF0dHJpYnV0ZS4KK1BBU1Mgb3duZXIuZWxlbWVudHMubGVuZ3RoIGlzIDQKK1BBU1Mg
b3duZXIuZWxlbWVudHNbMF0gaXMgYmVmb3JlCitQQVNTIG93bmVyLmVsZW1lbnRzWzFdIGlzIGlu
bmVyCitQQVNTIG93bmVyLmVsZW1lbnRzWzJdIGlzIGlubmVyMgorUEFTUyBvd25lci5lbGVtZW50
c1szXSBpcyBhZnRlcgorUEFTUyBvd25lci5lbGVtZW50cy5sZW5ndGggaXMgNAorUEFTUyBvd25l
ci5lbGVtZW50c1swXSBpcyBiZWZvcmUKK1BBU1Mgb3duZXIuZWxlbWVudHNbMV0gaXMgaW5uZXIK
K1BBU1Mgb3duZXIuZWxlbWVudHNbMl0gaXMgaW5uZXIyCitQQVNTIG93bmVyLmVsZW1lbnRzWzNd
IGlzIGFmdGVyCisKKy0gVGVzdCBmb3IgaW5zZXJ0aW5nL3JlbW92aW5nIGEgZm9ybS1hc3NvY2lh
dGVkIGVsZW1lbnQgd2l0aCBmb3JtIGF0dHJpYnV0ZS4KK1BBU1Mgb3duZXIuZWxlbWVudHMubGVu
Z3RoIGlzIDYKK1BBU1Mgb3duZXIuZWxlbWVudHNbMF0gaXMgYmVmb3JlCitQQVNTIG93bmVyLmVs
ZW1lbnRzWzFdIGlzIGJlZm9yZTIKK1BBU1Mgb3duZXIuZWxlbWVudHNbMl0gaXMgaW5uZXIKK1BB
U1Mgb3duZXIuZWxlbWVudHNbM10gaXMgaW5uZXIyCitQQVNTIG93bmVyLmVsZW1lbnRzWzRdIGlz
IGFmdGVyCitQQVNTIG93bmVyLmVsZW1lbnRzWzVdIGlzIGFmdGVyMgorUEFTUyBvd25lci5lbGVt
ZW50cy5sZW5ndGggaXMgNgorUEFTUyBvd25lci5lbGVtZW50c1swXSBpcyBiZWZvcmUKK1BBU1Mg
b3duZXIuZWxlbWVudHNbMV0gaXMgYmVmb3JlMgorUEFTUyBvd25lci5lbGVtZW50c1syXSBpcyBp
bm5lcgorUEFTUyBvd25lci5lbGVtZW50c1szXSBpcyBpbm5lcjIKK1BBU1Mgb3duZXIuZWxlbWVu
dHNbNF0gaXMgYWZ0ZXIKK1BBU1Mgb3duZXIuZWxlbWVudHNbNV0gaXMgYWZ0ZXIyCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKworCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZm9ybS1hdHRyaWJ1dGUtZWxlbWVudHMtb3JkZXIy
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2Zvcm0tYXR0cmlidXRlLWVsZW1lbnRzLW9y
ZGVyMi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ5M2E3ZGI0YzZhMzhjOTEyMGIyZTljZTk2MTgzYjIwM2Qz
OTc0MzIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2Zvcm0tYXR0
cmlidXRlLWVsZW1lbnRzLW9yZGVyMi5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBI
VE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+
PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3Rz
L2Zvcm0tYXR0cmlidXRlLWVsZW1lbnRzLW9yZGVyMi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZm9ybS1h
dHRyaWJ1dGUtZWxlbWVudHMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZm9ybS1hdHRy
aWJ1dGUtZWxlbWVudHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMzg5YmNlMGNiNjdjMzZlMTVlMDA2MTFi
ODYzYjFjODBkM2I5MDZiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9mb3JtLWF0dHJpYnV0ZS1lbGVtZW50cy5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQ
RSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlv
biI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRl
c3RzL2Zvcm0tYXR0cmlidXRlLWVsZW1lbnRzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9mb3JtLWF0dHJp
YnV0ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2Zvcm0tYXR0cmlidXRl
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZjIwOTY3YjNjZTFlMTVjZTY1MGIxMjQ5ODEyM2Ew
MjE0MGQ3NDBkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9mb3Jt
LWF0dHJpYnV0ZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1MyBAQAorVGhpcyB0ZXN0IGNoZWNr
cyB0aGUgZm9ybSBhdHRyaWJ1dGUgb2YgdGhlIGZvcm0tYXNzb2NpYXRlZCBlbGVtZW50cy4KKwor
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKKy0gQ2hlY2tzIHRoZSBleGlzdGVuY2Ugb2Yg
dGhlIGZvcm0gYXR0cmlidXRlIGZvciBlYWNoIGZvcm0tYXNzb2NpYXRlZCBlbGVtZW50cy4KK0ZJ
WE1FOiA8bGFiZWw+IGFuZCA8b2JqZWN0PiBkb24ndCBzdXBwb3J0IHRoZSBmb3JtIGF0dHJpYnV0
ZSBmb3Igbm93LgorUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYnV0dG9uIilb
MF0uZm9ybSBpcyBvd25lcgorUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiZmll
bGRzZXQiKVswXS5mb3JtIGlzIG93bmVyCitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJpbnB1dCIpWzBdLmZvcm0gaXMgb3duZXIKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoImtleWdlbiIpWzBdLmZvcm0gaXMgb3duZXIKK0ZBSUwgZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoImxhYmVsIilbMF0uZm9ybSBzaG91bGQgYmUgW29iamVjdCBIVE1MRm9y
bUVsZW1lbnRdLiBXYXMgbnVsbC4KK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
Im1ldGVyIilbMF0uZm9ybSBpcyBvd25lcgorRkFJTCBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgib2JqZWN0IilbMF0uZm9ybSBzaG91bGQgYmUgW29iamVjdCBIVE1MRm9ybUVsZW1lbnRd
LiBXYXMgbnVsbC4KK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIm91dHB1dCIp
WzBdLmZvcm0gaXMgb3duZXIKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInBy
b2dyZXNzIilbMF0uZm9ybSBpcyBvd25lcgorUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgic2VsZWN0IilbMF0uZm9ybSBpcyBvd25lcgorUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGV4dGFyZWEiKVswXS5mb3JtIGlzIG93bmVyCisKKy0gRW5zdXJlcyB0aGF0
IHRoZSBmb3JtIGF0dHJpYnV0ZSBwb2ludHMgdGhlIGZvcm0gb3duZXIgZXZlbiBpZiB0aGUgZWxl
bWVudCBpcyB3aXRoaW4gYW5vdGhlciBmb3JtIGVsZW1lbnQuCitQQVNTIGlucHV0RWxlbWVudC5m
b3JtIGlzIG93bmVyCisKKy0gRW5zdXJlcyB0aGF0IHRoZSBmb3JtIGF0dHJpYnV0ZSBvZiBhbGwg
Zm9ybS1hc3NvY2lhdGVkIGVsZW1lbnQgd2l0aCBvciB3aXRvdXQgZm9ybSBhdHRyaWJ1dGUgcG9p
bnRzIHRoZSBmb3JtIG93bmVyLgorUEFTUyBpbnB1dEVsZW1lbnQxLmZvcm0gaXMgb3duZXIKK1BB
U1MgaW5wdXRFbGVtZW50Mi5mb3JtIGlzIG93bmVyCitQQVNTIGlucHV0RWxlbWVudDMuZm9ybSBp
cyBvd25lcgorCistIEVuc3VyZXMgdGhhdCB0aGUgZm9ybSBhdHRyaWJ1dGUgcG9pbnRzIHRoZSBm
b3JtIG93bmVyIGV2ZW4gaWYgdGhlIGZvcm0gZWxlbWVudCBpcyBuZXN0ZWQgYW5vdGhlciBmb3Jt
IGVsZW1lbnQuCitOT1RFOiBJdCBzZWVtcyB0aGF0IG5lc3RpbmcgZm9ybSBlbGVtZW50cyBpcyBu
b3QgYWxsb3dlZCBzbyB3ZSBlbnN1cmUgZWFjaCBmb3JtLWFzc29jaWF0ZWQgZWxlbWVudHMgYXNz
b2NpYXRlIHdpdGggdGhlIG91dG1vc3QgZm9ybSBlbGVtZW50LgorUEFTUyBpbnB1dEVsZW1lbnQx
LmZvcm0gaXMgb3duZXIKK1BBU1MgaW5wdXRFbGVtZW50Mi5mb3JtIGlzIG93bmVyCitQQVNTIGlu
cHV0RWxlbWVudDMuZm9ybSBpcyBvd25lcgorCistIEVuc3VyZXMgd2hldGhlciB0aGUgZm9ybSBv
d25lciBpcyBzZXQgY29ycmVjdGx5IHdoZW4gdGhlIHZhbHVlIG9mIGZvcm0gYXR0cmlidXRlIG9m
IGEgZm9ybS1hc3NvY2lhdGVkIGVsZW1lbnQgY2hhbmdlZC4KK1BBU1MgaW5wdXRFbGVtZW50LmZv
cm0gaXMgZm9ybTEKK1BBU1MgaW5wdXRFbGVtZW50LmZvcm0gaXMgZm9ybTIKKworLSBFbnN1cmVz
IHdoZXRoZXIgdGhlIGZvcm0gb3duZXIgaXMgc2V0IGNvcnJlY3RseSB3aGVuIHRoZSB2YWx1ZSBv
ZiBmb3JtIGF0dHJpYnV0ZSBpcyBhZGRlZC9yZW1vdmVkLgorUEFTUyBpbnB1dEVsZW1lbnQuZm9y
bSBpcyBudWxsCitQQVNTIGlucHV0RWxlbWVudC5mb3JtIGlzIG93bmVyCitQQVNTIGlucHV0RWxl
bWVudC5mb3JtIGlzIG51bGwKKworLSBFbnN1cmVzIHdoZXRoZXIgdGhlIGZvcm0gb3duZXIgaXMg
c2V0IGNvcnJlY3RseSB3aGVuIHRoZSBmb3JtIG93bmVyIGlzIGFkZGVkL3JlbW92ZWQuCitQQVNT
IG93bmVyLm5hbWUgaXMgImZpcnN0T3duZXIiCitQQVNTIG93bmVyLm5hbWUgaXMgInNlY29uZE93
bmVyIgorUEFTUyBpbnB1dEVsZW1lbnQuZm9ybSBpcyBvd25lcgorUEFTUyBpbnB1dEVsZW1lbnQu
Zm9ybSBpcyBudWxsCitQQVNTIGlucHV0RWxlbWVudC5mb3JtIGlzIG93bmVyCitQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKworCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2Zvcm0tYXR0cmlidXRlLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL2Zvcm0tYXR0cmlidXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzA2OWIwYzZlZjY2NDMw
Nzc4N2IyZDcyYTc4ZTIyMmJmOGQ2NWFjOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvZm9ybS1hdHRyaWJ1dGUuaHRtbApAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZ
UEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgor
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRp
b24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10
ZXN0cy9mb3JtLWF0dHJpYnV0ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2NyaXB0LXRlc3RzL2Zvcm0t
YXR0cmlidXRlLWVsZW1lbnRzLW9yZGVyLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zY3Jp
cHQtdGVzdHMvZm9ybS1hdHRyaWJ1dGUtZWxlbWVudHMtb3JkZXIuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmRj
ZGFlMzhlYThhOWJjY2U5Mjk4ZTUxNjhlZTQ0NTVkN2YwZTFlYwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2NyaXB0LXRlc3RzL2Zvcm0tYXR0cmlidXRlLWVsZW1l
bnRzLW9yZGVyLmpzCkBAIC0wLDAgKzEsMTUzIEBACitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IGV4
YW1pbmVzIHRoZSBvcmRlciBvZiB0aGUgZWxlbWVudHMgYXR0cmlidXRlIG9mIGEgZm9ybSBlbGVt
ZW50LiIpOworCit2YXIgY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7
Citkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGNvbnRhaW5lcik7Citjb250YWluZXIuaW5uZXJI
VE1MID0gJzxpbnB1dCBuYW1lPXZpY3RpbSBpZD1iZWZvcmUxIGZvcm09b3duZXIgLz4nICsKKyAg
ICAnPGlucHV0IG5hbWU9dmljdGltIGlkPWJlZm9yZTIgZm9ybT1vd25lciAvPicgKworICAgICc8
Zm9ybSBpZD1vd25lciBhY3Rpb249IG1ldGhvZD1HRVQ+JyArCisgICAgJyAgICA8aW5wdXQgbmFt
ZT12aWN0aW0gaWQ9aW5uZXIxIGZvcm09b3duZXIgLz4nICsKKyAgICAnICAgIDxpbnB1dCBuYW1l
PXZpY3RpbSBpZD1pbm5lcjIgZm9ybT1vd25lciAvPicgKworICAgICc8L2Zvcm0+JyArCisgICAg
JzxpbnB1dCBuYW1lPXZpY3RpbSBpZD1hZnRlcjEgZm9ybT1vd25lciAvPicgKworICAgICc8aW5w
dXQgbmFtZT12aWN0aW0gaWQ9YWZ0ZXIyIGZvcm09b3duZXIgLz4nOworCit2YXIgb3duZXIgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnb3duZXInKTsKK3ZhciBiZWZvcmUxID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2JlZm9yZTEnKTsKK3ZhciBiZWZvcmUyID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2JlZm9yZTInKTsKK3ZhciBpbm5lcjEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnaW5uZXIxJyk7Cit2YXIgaW5uZXIyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2lubmVy
MicpOwordmFyIGFmdGVyMSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhZnRlcjEnKTsKK3Zh
ciBhZnRlcjIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWZ0ZXIyJyk7CisKK2RlYnVnKCct
IFRlc3QgZm9yIHRoZSBjYXNlIHdoZXJlIHNvbWUgZWxlbWVudHMgYXJlIG91dHNpZGUgb2YgdGhl
IGZvcm0uJyk7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHMubGVuZ3RoJywgJzYnKTsKK3Nob3Vs
ZEJlKCdvd25lci5lbGVtZW50c1swXScsICdiZWZvcmUxJyk7CitzaG91bGRCZSgnb3duZXIuZWxl
bWVudHNbMV0nLCAnYmVmb3JlMicpOworc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzWzJdJywgJ2lu
bmVyMScpOworc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzWzNdJywgJ2lubmVyMicpOworc2hvdWxk
QmUoJ293bmVyLmVsZW1lbnRzWzRdJywgJ2FmdGVyMScpOworc2hvdWxkQmUoJ293bmVyLmVsZW1l
bnRzWzVdJywgJ2FmdGVyMicpOworCitkZWJ1ZygnJyk7CitkZWJ1ZygnLSBUZXN0IGZvciBjaGFu
Z2luZyB0aGUgdmFsdWUgb2YgdGhlIGZvcm0gYXR0cmlidXRlIG9mIGEgZWxlbWVudCB3aGljaCBp
cyBsb2NhdGVkIGJlZm9yZSB0aGUgZm9ybSBvd25lci4nKTsKK2JlZm9yZTIuYXR0cmlidXRlc1sn
Zm9ybSddLnZhbHVlID0gJyc7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHMubGVuZ3RoJywgJzUn
KTsKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50c1swXScsICdiZWZvcmUxJyk7CitzaG91bGRCZSgn
b3duZXIuZWxlbWVudHNbMV0nLCAnaW5uZXIxJyk7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHNb
Ml0nLCAnaW5uZXIyJyk7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHNbM10nLCAnYWZ0ZXIxJyk7
CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHNbNF0nLCAnYWZ0ZXIyJyk7CitiZWZvcmUyLmF0dHJp
YnV0ZXNbJ2Zvcm0nXS52YWx1ZSA9ICdvd25lcic7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHMu
bGVuZ3RoJywgJzYnKTsKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50c1swXScsICdiZWZvcmUxJyk7
CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHNbMV0nLCAnYmVmb3JlMicpOworc2hvdWxkQmUoJ293
bmVyLmVsZW1lbnRzWzJdJywgJ2lubmVyMScpOworc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzWzNd
JywgJ2lubmVyMicpOworc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzWzRdJywgJ2FmdGVyMScpOwor
c2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzWzVdJywgJ2FmdGVyMicpOworCitkZWJ1ZygnJyk7Citk
ZWJ1ZygnLSBUZXN0IGZvciBjaGFuZ2luZyB0aGUgdmFsdWUgb2YgdGhlIGZvcm0gYXR0cmlidXRl
IG9mIGEgZWxlbWVudCB3aGljaCBpcyBsb2NhdGVkIGluc2lkZSBvZiB0aGUgZm9ybSBvd25lci4n
KTsKK2lubmVyMi5hdHRyaWJ1dGVzWydmb3JtJ10udmFsdWUgPSAnJzsKK3Nob3VsZEJlKCdvd25l
ci5lbGVtZW50cy5sZW5ndGgnLCAnNScpOworc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzWzBdJywg
J2JlZm9yZTEnKTsKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50c1sxXScsICdiZWZvcmUyJyk7Citz
aG91bGRCZSgnb3duZXIuZWxlbWVudHNbMl0nLCAnaW5uZXIxJyk7CitzaG91bGRCZSgnb3duZXIu
ZWxlbWVudHNbM10nLCAnYWZ0ZXIxJyk7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHNbNF0nLCAn
YWZ0ZXIyJyk7Citpbm5lcjIuYXR0cmlidXRlc1snZm9ybSddLnZhbHVlID0gJ293bmVyJzsKK3No
b3VsZEJlKCdvd25lci5lbGVtZW50cy5sZW5ndGgnLCAnNicpOworc2hvdWxkQmUoJ293bmVyLmVs
ZW1lbnRzWzBdJywgJ2JlZm9yZTEnKTsKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50c1sxXScsICdi
ZWZvcmUyJyk7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHNbMl0nLCAnaW5uZXIxJyk7CitzaG91
bGRCZSgnb3duZXIuZWxlbWVudHNbM10nLCAnaW5uZXIyJyk7CitzaG91bGRCZSgnb3duZXIuZWxl
bWVudHNbNF0nLCAnYWZ0ZXIxJyk7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHNbNV0nLCAnYWZ0
ZXIyJyk7CisKK2RlYnVnKCcnKTsKK2RlYnVnKCctIFRlc3QgZm9yIGNoYW5naW5nIHRoZSB2YWx1
ZSBvZiB0aGUgZm9ybSBhdHRyaWJ1dGUgb2YgYSBlbGVtZW50IHdoaWNoIGlzIGxvY2F0ZWQgYWZ0
ZXIgdGhlIGZvcm0gb3duZXIuJyk7CithZnRlcjEuYXR0cmlidXRlc1snZm9ybSddLnZhbHVlID0g
Jyc7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHMubGVuZ3RoJywgJzUnKTsKK3Nob3VsZEJlKCdv
d25lci5lbGVtZW50c1swXScsICdiZWZvcmUxJyk7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHNb
MV0nLCAnYmVmb3JlMicpOworc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzWzJdJywgJ2lubmVyMScp
Oworc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzWzNdJywgJ2lubmVyMicpOworc2hvdWxkQmUoJ293
bmVyLmVsZW1lbnRzWzRdJywgJ2FmdGVyMicpOworYWZ0ZXIxLmF0dHJpYnV0ZXNbJ2Zvcm0nXS52
YWx1ZSA9ICdvd25lcic7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHMubGVuZ3RoJywgJzYnKTsK
K3Nob3VsZEJlKCdvd25lci5lbGVtZW50c1swXScsICdiZWZvcmUxJyk7CitzaG91bGRCZSgnb3du
ZXIuZWxlbWVudHNbMV0nLCAnYmVmb3JlMicpOworc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzWzJd
JywgJ2lubmVyMScpOworc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzWzNdJywgJ2lubmVyMicpOwor
c2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzWzRdJywgJ2FmdGVyMScpOworc2hvdWxkQmUoJ293bmVy
LmVsZW1lbnRzWzVdJywgJ2FmdGVyMicpOworCitkZWJ1ZygnJyk7CitkZWJ1ZygnLSBUZXN0IGZv
ciBzZXR0aW5nIGZvcm0gYXR0cmlidXRlIG9mIGVsZW1lbnRzIGluIHJldmVyc2Ugb3JkZXIuJyk7
CitiZWZvcmUxLmF0dHJpYnV0ZXNbJ2Zvcm0nXS52YWx1ZSA9ICcnOworYmVmb3JlMi5hdHRyaWJ1
dGVzWydmb3JtJ10udmFsdWUgPSAnJzsKK2lubmVyMS5hdHRyaWJ1dGVzWydmb3JtJ10udmFsdWUg
PSAnJzsKK2lubmVyMi5hdHRyaWJ1dGVzWydmb3JtJ10udmFsdWUgPSAnJzsKK2FmdGVyMS5hdHRy
aWJ1dGVzWydmb3JtJ10udmFsdWUgPSAnJzsKK2FmdGVyMi5hdHRyaWJ1dGVzWydmb3JtJ10udmFs
dWUgPSAnJzsKKworYWZ0ZXIyLmF0dHJpYnV0ZXNbJ2Zvcm0nXS52YWx1ZSA9ICdvd25lcic7Cith
ZnRlcjEuYXR0cmlidXRlc1snZm9ybSddLnZhbHVlID0gJ293bmVyJzsKK2lubmVyMi5hdHRyaWJ1
dGVzWydmb3JtJ10udmFsdWUgPSAnb3duZXInOworaW5uZXIxLmF0dHJpYnV0ZXNbJ2Zvcm0nXS52
YWx1ZSA9ICdvd25lcic7CitiZWZvcmUyLmF0dHJpYnV0ZXNbJ2Zvcm0nXS52YWx1ZSA9ICdvd25l
cic7CitiZWZvcmUxLmF0dHJpYnV0ZXNbJ2Zvcm0nXS52YWx1ZSA9ICdvd25lcic7CisKK3Nob3Vs
ZEJlKCdvd25lci5lbGVtZW50cy5sZW5ndGgnLCAnNicpOworc2hvdWxkQmUoJ293bmVyLmVsZW1l
bnRzWzBdJywgJ2JlZm9yZTEnKTsKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50c1sxXScsICdiZWZv
cmUyJyk7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHNbMl0nLCAnaW5uZXIxJyk7CitzaG91bGRC
ZSgnb3duZXIuZWxlbWVudHNbM10nLCAnaW5uZXIyJyk7CitzaG91bGRCZSgnb3duZXIuZWxlbWVu
dHNbNF0nLCAnYWZ0ZXIxJyk7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHNbNV0nLCAnYWZ0ZXIy
Jyk7CisKK2RlYnVnKCcnKTsKK2RlYnVnKCctIFRlc3QgZm9yIHNldHRpbmcgZm9ybSBhdHRyaWJ1
dGUgb2YgZWxlbWVudHMgaW4gcmFuZG9tIG9yZGVyLicpOworYmVmb3JlMS5hdHRyaWJ1dGVzWydm
b3JtJ10udmFsdWUgPSAnJzsKK2JlZm9yZTIuYXR0cmlidXRlc1snZm9ybSddLnZhbHVlID0gJyc7
Citpbm5lcjEuYXR0cmlidXRlc1snZm9ybSddLnZhbHVlID0gJyc7Citpbm5lcjIuYXR0cmlidXRl
c1snZm9ybSddLnZhbHVlID0gJyc7CithZnRlcjEuYXR0cmlidXRlc1snZm9ybSddLnZhbHVlID0g
Jyc7CithZnRlcjIuYXR0cmlidXRlc1snZm9ybSddLnZhbHVlID0gJyc7CisKK2FmdGVyMS5hdHRy
aWJ1dGVzWydmb3JtJ10udmFsdWUgPSAnb3duZXInOworYmVmb3JlMS5hdHRyaWJ1dGVzWydmb3Jt
J10udmFsdWUgPSAnb3duZXInOworaW5uZXIyLmF0dHJpYnV0ZXNbJ2Zvcm0nXS52YWx1ZSA9ICdv
d25lcic7CitiZWZvcmUyLmF0dHJpYnV0ZXNbJ2Zvcm0nXS52YWx1ZSA9ICdvd25lcic7CithZnRl
cjIuYXR0cmlidXRlc1snZm9ybSddLnZhbHVlID0gJ293bmVyJzsKK2lubmVyMS5hdHRyaWJ1dGVz
Wydmb3JtJ10udmFsdWUgPSAnb3duZXInOworCitzaG91bGRCZSgnb3duZXIuZWxlbWVudHMubGVu
Z3RoJywgJzYnKTsKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50c1swXScsICdiZWZvcmUxJyk7Citz
aG91bGRCZSgnb3duZXIuZWxlbWVudHNbMV0nLCAnYmVmb3JlMicpOworc2hvdWxkQmUoJ293bmVy
LmVsZW1lbnRzWzJdJywgJ2lubmVyMScpOworc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzWzNdJywg
J2lubmVyMicpOworc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzWzRdJywgJ2FmdGVyMScpOworc2hv
dWxkQmUoJ293bmVyLmVsZW1lbnRzWzVdJywgJ2FmdGVyMicpOworCitkZWJ1ZygnJyk7CitkZWJ1
ZygnLSBUZXN0IGZvciByZW1vdmluZy9hZGRpbmcgZWxlbWVudHMnKTsKK2NvbnRhaW5lci5yZW1v
dmVDaGlsZChiZWZvcmUyKTsKK293bmVyLnJlbW92ZUNoaWxkKGlubmVyMik7Citjb250YWluZXIu
cmVtb3ZlQ2hpbGQoYWZ0ZXIxKTsKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50cy5sZW5ndGgnLCAn
MycpOworc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzWzBdJywgJ2JlZm9yZTEnKTsKK3Nob3VsZEJl
KCdvd25lci5lbGVtZW50c1sxXScsICdpbm5lcjEnKTsKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50
c1syXScsICdhZnRlcjInKTsKK2NvbnRhaW5lci5pbnNlcnRCZWZvcmUoYmVmb3JlMiwgb3duZXIp
Oworb3duZXIuYXBwZW5kQ2hpbGQoaW5uZXIyKTsKK2NvbnRhaW5lci5pbnNlcnRCZWZvcmUoYWZ0
ZXIxLCBhZnRlcjIpOworc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzLmxlbmd0aCcsICc2Jyk7Citz
aG91bGRCZSgnb3duZXIuZWxlbWVudHNbMF0nLCAnYmVmb3JlMScpOworc2hvdWxkQmUoJ293bmVy
LmVsZW1lbnRzWzFdJywgJ2JlZm9yZTInKTsKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50c1syXScs
ICdpbm5lcjEnKTsKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50c1szXScsICdpbm5lcjInKTsKK3No
b3VsZEJlKCdvd25lci5lbGVtZW50c1s0XScsICdhZnRlcjEnKTsKK3Nob3VsZEJlKCdvd25lci5l
bGVtZW50c1s1XScsICdhZnRlcjInKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NjcmlwdC10ZXN0cy9mb3JtLWF0
dHJpYnV0ZS1lbGVtZW50cy1vcmRlcjIuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Njcmlw
dC10ZXN0cy9mb3JtLWF0dHJpYnV0ZS1lbGVtZW50cy1vcmRlcjIuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmQ3
Zjc5OTdlYjVhOTYyZTkxMTNhZWNlMGIxYjUxMDg4Nzk2MGM4NQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2NyaXB0LXRlc3RzL2Zvcm0tYXR0cmlidXRlLWVsZW1l
bnRzLW9yZGVyMi5qcwpAQCAtMCwwICsxLDk4IEBACitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IGV4
YW1pbmVzIHRoZSBvcmRlciBvZiB0aGUgZWxlbWVudHMgYXR0cmlidXRlIG9mIGEgZm9ybSBlbGVt
ZW50IHdpdGggZm9ybS1hc3NvY2lhdGVkIGVsZW1lbnRzIHdpdGggZm9ybSBhdHRyaWJ1dGUgb3Ig
d2l0b3V0IGZvcm0gYXR0aWJ1dGUuIik7CisKK3ZhciBjb250YWluZXIgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdkaXYnKTsKK2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoY29udGFpbmVyKTsK
KworZGVidWcoJycpOworZGVidWcoJy0gVGVzdCBmb3IgdGhlIGNhc2Ugd2hlcmUgc29tZSBlbGVt
ZW50cyBoYXZlIGZvcm0gYXR0cmlidXRlIGJ1dCBzb21lIG90aGVycyBub3QuJyk7Citjb250YWlu
ZXIuaW5uZXJIVE1MID0gJzxmb3JtIGlkPW93bmVyPicgKworICAgICcgICAgPGlucHV0IGlkPWlu
cHV0MSBuYW1lPXZpY3RpbSAvPicgKworICAgICcgICAgPGlucHV0IGlkPWlucHV0MiBuYW1lPXZp
Y3RpbSBmb3JtPW93bmVyIC8+JyArCisgICAgJyAgICA8aW5wdXQgaWQ9aW5wdXQzIG5hbWU9dmlj
dGltIC8+JyArCisgICAgJzwvZm9ybT4nOwordmFyIG93bmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ293bmVyJyk7Cit2YXIgaW5wdXQxID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2lu
cHV0MScpOwordmFyIGlucHV0MiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbnB1dDInKTsK
K3ZhciBpbnB1dDMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW5wdXQzJyk7CitzaG91bGRC
ZSgnb3duZXIuZWxlbWVudHMubGVuZ3RoJywgJzMnKTsKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50
c1swXScsICdpbnB1dDEnKTsKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50c1sxXScsICdpbnB1dDIn
KTsKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50c1syXScsICdpbnB1dDMnKTsKKworY29udGFpbmVy
LmlubmVySFRNTCA9ICc8Zm9ybSBpZD1vd25lcj4nICsKKyAgICAnICAgIDxpbnB1dCBpZD1pbnB1
dDEgbmFtZT12aWN0aW0gZm9ybT1vd25lciAvPicgKworICAgICcgICAgPGlucHV0IGlkPWlucHV0
MiBuYW1lPXZpY3RpbSAvPicgKworICAgICcgICAgPGlucHV0IGlkPWlucHV0MyBuYW1lPXZpY3Rp
bSBmb3JtPW93bmVyIC8+JyArCisgICAgJzwvZm9ybT4nOworb3duZXIgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnb3duZXInKTsKK2lucHV0MSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdp
bnB1dDEnKTsKK2lucHV0MiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbnB1dDInKTsKK2lu
cHV0MyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbnB1dDMnKTsKK3Nob3VsZEJlKCdvd25l
ci5lbGVtZW50cy5sZW5ndGgnLCAnMycpOworc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzWzBdJywg
J2lucHV0MScpOworc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzWzFdJywgJ2lucHV0MicpOworc2hv
dWxkQmUoJ293bmVyLmVsZW1lbnRzWzJdJywgJ2lucHV0MycpOworCitkZWJ1ZygnJyk7CitkZWJ1
ZygnLSBUZXN0IGZvciBpbnNlcnRpbmcvcmVtb3ZpbmcgYSBmb3JtLWFzc29jaWF0ZWQgZWxlbWVu
dCB3aXRob3V0IGZvcm0gYXR0cmlidXRlLicpOworY29udGFpbmVyLmlubmVySFRNTCA9ICc8aW5w
dXQgbmFtZT12aWN0aW0gaWQ9YmVmb3JlIGZvcm09b3duZXIgLz4nICsKKyAgICAnPGZvcm0gaWQ9
b3duZXIgYWN0aW9uPSBtZXRob2Q9R0VUPicgKworICAgICcgICAgPGlucHV0IG5hbWU9dmljdGlt
IGlkPWlubmVyIC8+JyArCisgICAgJzwvZm9ybT4nICsKKyAgICAnPGlucHV0IG5hbWU9dmljdGlt
IGlkPWFmdGVyIGZvcm09b3duZXIgLz4nOworb3duZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnb3duZXInKTsKK3ZhciBiZWZvcmUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYmVmb3Jl
Jyk7Cit2YXIgaW5uZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW5uZXInKTsKK3ZhciBh
ZnRlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhZnRlcicpOworCit2YXIgaW5uZXIyID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTsKK2lubmVyMi5uYW1lID0gJ3ZpY3RpbSc7
Citpbm5lcjIuaWQgPSAnaW5uZXIyJzsKK293bmVyLmFwcGVuZENoaWxkKGlubmVyMik7CitzaG91
bGRCZSgnb3duZXIuZWxlbWVudHMubGVuZ3RoJywgJzQnKTsKK3Nob3VsZEJlKCdvd25lci5lbGVt
ZW50c1swXScsICdiZWZvcmUnKTsKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50c1sxXScsICdpbm5l
cicpOworc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzWzJdJywgJ2lubmVyMicpOworc2hvdWxkQmUo
J293bmVyLmVsZW1lbnRzWzNdJywgJ2FmdGVyJyk7CisKK293bmVyLnJlbW92ZUNoaWxkKGlubmVy
KTsKK293bmVyLmluc2VydEJlZm9yZShpbm5lciwgaW5uZXIyKTsKK3Nob3VsZEJlKCdvd25lci5l
bGVtZW50cy5sZW5ndGgnLCAnNCcpOworc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzWzBdJywgJ2Jl
Zm9yZScpOworc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzWzFdJywgJ2lubmVyJyk7CitzaG91bGRC
ZSgnb3duZXIuZWxlbWVudHNbMl0nLCAnaW5uZXIyJyk7CitzaG91bGRCZSgnb3duZXIuZWxlbWVu
dHNbM10nLCAnYWZ0ZXInKTsKKworZGVidWcoJycpOworZGVidWcoJy0gVGVzdCBmb3IgaW5zZXJ0
aW5nL3JlbW92aW5nIGEgZm9ybS1hc3NvY2lhdGVkIGVsZW1lbnQgd2l0aCBmb3JtIGF0dHJpYnV0
ZS4nKTsKK3ZhciBiZWZvcmUyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTsKK2Jl
Zm9yZTIubmFtZSA9ICd2aWN0aW0nOworYmVmb3JlMi5pZCA9ICdiZWZvcmUyJzsKK2JlZm9yZTIu
c2V0QXR0cmlidXRlKCdmb3JtJywgJ293bmVyJyk7Citjb250YWluZXIuaW5zZXJ0QmVmb3JlKGJl
Zm9yZTIsIG93bmVyKTsKK3ZhciBhZnRlcjIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1
dCcpOworYWZ0ZXIyLm5hbWUgPSAndmljdGltJzsKK2FmdGVyMi5pZCA9ICdhZnRlcjInOworYWZ0
ZXIyLnNldEF0dHJpYnV0ZSgnZm9ybScsICdvd25lcicpOworY29udGFpbmVyLmFwcGVuZENoaWxk
KGFmdGVyMik7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHMubGVuZ3RoJywgJzYnKTsKK3Nob3Vs
ZEJlKCdvd25lci5lbGVtZW50c1swXScsICdiZWZvcmUnKTsKK3Nob3VsZEJlKCdvd25lci5lbGVt
ZW50c1sxXScsICdiZWZvcmUyJyk7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHNbMl0nLCAnaW5u
ZXInKTsKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50c1szXScsICdpbm5lcjInKTsKK3Nob3VsZEJl
KCdvd25lci5lbGVtZW50c1s0XScsICdhZnRlcicpOworc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRz
WzVdJywgJ2FmdGVyMicpOworCitjb250YWluZXIucmVtb3ZlQ2hpbGQoYmVmb3JlKTsKK2NvbnRh
aW5lci5yZW1vdmVDaGlsZChhZnRlcik7Citjb250YWluZXIuaW5zZXJ0QmVmb3JlKGJlZm9yZSwg
YmVmb3JlMik7Citjb250YWluZXIuaW5zZXJ0QmVmb3JlKGFmdGVyLCBhZnRlcjIpOworc2hvdWxk
QmUoJ293bmVyLmVsZW1lbnRzLmxlbmd0aCcsICc2Jyk7CitzaG91bGRCZSgnb3duZXIuZWxlbWVu
dHNbMF0nLCAnYmVmb3JlJyk7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHNbMV0nLCAnYmVmb3Jl
MicpOworc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzWzJdJywgJ2lubmVyJyk7CitzaG91bGRCZSgn
b3duZXIuZWxlbWVudHNbM10nLCAnaW5uZXIyJyk7CitzaG91bGRCZSgnb3duZXIuZWxlbWVudHNb
NF0nLCAnYWZ0ZXInKTsKK3Nob3VsZEJlKCdvd25lci5lbGVtZW50c1s1XScsICdhZnRlcjInKTsK
KwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL3NjcmlwdC10ZXN0cy9mb3JtLWF0dHJpYnV0ZS1lbGVtZW50cy5qcyBiL0xh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvc2NyaXB0LXRlc3RzL2Zvcm0tYXR0cmlidXRlLWVsZW1lbnRz
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjM4MjY0NDdkODEzMTgwMjRhYzEwNGE0NDM1ZDM0YTZmNGNlMThiM2UK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NjcmlwdC10ZXN0cy9m
b3JtLWF0dHJpYnV0ZS1lbGVtZW50cy5qcwpAQCAtMCwwICsxLDQyIEBACitkZXNjcmlwdGlvbigi
VGhpcyB0ZXN0IGNoZWNrcyBhIGZvcm0gZWxlbWVudCBjYW4gaGFuZGxlIGVsZW1lbnRzIG9mIHdo
aWNoIGZvcm0gYXR0cmlidXRlIHBvaW50cyB0aGUgZm9ybSBlbGVtZW50IGV2ZW4gaWYgZWxlbWVu
dHMgYXJlIG91dHNpZGUgb2YgdGhlIGZvcm0uIik7CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworCit2
YXIgY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Citkb2N1bWVudC5i
b2R5LmFwcGVuZENoaWxkKGNvbnRhaW5lcik7CisKK2NvbnRhaW5lci5pbm5lckhUTUwgPSAnPGlu
cHV0IHR5cGU9aGlkZGVuIG5hbWU9a2V5MSB2YWx1ZT12YWx1ZTEgaWQ9b3V0ZXItYmVmb3JlIGZv
cm09b3duZXIgLz4nICsKKyAgICAnPGZvcm0gaWQ9b3duZXIgYWN0aW9uPSIiIG1ldGhvZD0iR0VU
Ij4nICsKKyAgICAnICAgIDxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWtleTIgdmFsdWU9dmFsdWUy
IGlkPWlubmVyIGZvcm09b3duZXIgLz4nICsKKyAgICAnPC9mb3JtPicgKworICAgICc8aW5wdXQg
dHlwZT1oaWRkZW4gbmFtZT1zdWJtaXR0ZWQgdmFsdWU9dHJ1ZSBpZD1vdXRlci1hZnRlciBmb3Jt
PW93bmVyIC8+JzsKKwordmFyIG93bmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ293bmVy
Jyk7Cit2YXIgb3V0ZXJCZWZvcmUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnb3V0ZXItYmVm
b3JlJyk7Cit2YXIgaW5uZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW5uZXInKTsKK3Zh
ciBvdXRlckFmdGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ291dGVyLWFmdGVyJyk7Cit2
YXIgcXVlcnkgPSB3aW5kb3cubG9jYXRpb24uc2VhcmNoOworCitpZiAocXVlcnkuaW5kZXhPZign
c3VibWl0dGVkPXRydWUnKSA9PSAtMSkgeworICAgIG93bmVyLnN1Ym1pdCgpOworfSBlbHNlIHsK
KyAgICBkZWJ1ZygnLSBFbnN1cmVzIHRoYXQgZWxlbWVudHMgYXR0cmlidXRlIG9mIHRoZSBmb3Jt
IGNvbnRhaW5zIGVsZW1lbnRzIHdoaWNoIGFyZSBvdXRzaWRlIG9mIHRoZSBmb3JtLicpOworCisg
ICAgc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzLmxlbmd0aCcsICczJyk7CisgICAgc2hvdWxkQmUo
J293bmVyLmVsZW1lbnRzWzBdJywgJ291dGVyQmVmb3JlJyk7CisgICAgc2hvdWxkQmUoJ293bmVy
LmVsZW1lbnRzWzFdJywgJ2lubmVyJyk7CisgICAgc2hvdWxkQmUoJ293bmVyLmVsZW1lbnRzWzJd
JywgJ291dGVyQWZ0ZXInKTsKKworICAgIGRlYnVnKCcnKTsKKyAgICBkZWJ1ZygnLSBFbnN1cmVz
IHRoYXQgZm9ybSBzdWJtaXNzaW9uIGNvbnRhaW5zIG5hbWUgYW5kIHZhbHVlIHBhaXJzIGZvciBz
dWNoIGVsZW1lbnRzLicpOworICAgIHZhciBwYWlycyA9IHF1ZXJ5LnN1YnN0cigxKS5zcGxpdCgn
JicpOworICAgIHNob3VsZEJlKCdwYWlycy5sZW5ndGgnLCAnMycpOworICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygncGFpcnNbMF0nLCAna2V5MT12YWx1ZTEnKTsKKyAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoJ3BhaXJzWzFdJywgJ2tleTI9dmFsdWUyJyk7CisgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCdwYWlyc1syXScsICdzdWJtaXR0ZWQ9dHJ1ZScpOworICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURv
bmUoKTsKK30KKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NjcmlwdC10ZXN0cy9mb3JtLWF0dHJpYnV0ZS5qcyBiL0xh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvc2NyaXB0LXRlc3RzL2Zvcm0tYXR0cmlidXRlLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjA4MmFmZTZmYmNlNGVhMmEwYjVkMGZiYTBjMjA4NDE0MDMwY2RlMDIKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NjcmlwdC10ZXN0cy9mb3JtLWF0dHJp
YnV0ZS5qcwpAQCAtMCwwICsxLDExOSBAQAorZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBjaGVja3Mg
dGhlIGZvcm0gYXR0cmlidXRlIG9mIHRoZSBmb3JtLWFzc29jaWF0ZWQgZWxlbWVudHMuIik7CisK
K3ZhciBjb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKK2RvY3VtZW50
LmJvZHkuYXBwZW5kQ2hpbGQoY29udGFpbmVyKTsKKworZGVidWcoJy0gQ2hlY2tzIHRoZSBleGlz
dGVuY2Ugb2YgdGhlIGZvcm0gYXR0cmlidXRlIGZvciBlYWNoIGZvcm0tYXNzb2NpYXRlZCBlbGVt
ZW50cy4nKTsKK2RlYnVnKCdGSVhNRTogJmx0O2xhYmVsJmd0OyBhbmQgJmx0O29iamVjdCZndDsg
ZG9uXCd0IHN1cHBvcnQgdGhlIGZvcm0gYXR0cmlidXRlIGZvciBub3cuJyk7Citjb250YWluZXIu
aW5uZXJIVE1MID0gJzxmb3JtIGlkPW93bmVyPjwvZm9ybT4nICsKKyAgICAnPGJ1dHRvbiBuYW1l
PXZpY3RpbSBmb3JtPW93bmVyIC8+JyArCisgICAgJzxmaWVsZHNldCBuYW1lPXZpY3RpbSBmb3Jt
PW93bmVyIC8+JyArCisgICAgJzxpbnB1dCBuYW1lPXZpY3RpbSBmb3JtPW93bmVyIC8+JyArCisg
ICAgJzxrZXlnZW4gbmFtZT12aWN0aW0gZm9ybT1vd25lciAvPicgKworICAgICc8bGFiZWwgbmFt
ZT12aWN0aW0gZm9ybT1vd25lciAvPicgKworICAgICc8bWV0ZXIgbmFtZT12aWN0aW0gZm9ybT1v
d25lciAvPicgKworICAgICc8b2JqZWN0IG5hbWU9dmljdGltIGZvcm09b3duZXIgLz4nICsKKyAg
ICAnPG91dHB1dCBuYW1lPXZpY3RpbSBmb3JtPW93bmVyIC8+JyArCisgICAgJzxwcm9ncmVzcyBu
YW1lPXZpY3RpbSBmb3JtPW93bmVyIC8+JyArCisgICAgJzxzZWxlY3QgbmFtZT12aWN0aW0gZm9y
bT1vd25lciAvPicgKworICAgICc8dGV4dGFyZWEgbmFtZT12aWN0aW0gZm9ybT1vd25lciAvPic7
CisKK3ZhciBvd25lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdvd25lcicpOworc2hvdWxk
QmUoJ2RvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJidXR0b24iKVswXS5mb3JtJywgJ293
bmVyJyk7CitzaG91bGRCZSgnZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImZpZWxkc2V0
IilbMF0uZm9ybScsICdvd25lcicpOworc2hvdWxkQmUoJ2RvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJpbnB1dCIpWzBdLmZvcm0nLCAnb3duZXInKTsKK3Nob3VsZEJlKCdkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgia2V5Z2VuIilbMF0uZm9ybScsICdvd25lcicpOworc2hvdWxk
QmUoJ2RvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJsYWJlbCIpWzBdLmZvcm0nLCAnb3du
ZXInKTsKK3Nob3VsZEJlKCdkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgibWV0ZXIiKVsw
XS5mb3JtJywgJ293bmVyJyk7CitzaG91bGRCZSgnZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoIm9iamVjdCIpWzBdLmZvcm0nLCAnb3duZXInKTsKK3Nob3VsZEJlKCdkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgib3V0cHV0IilbMF0uZm9ybScsICdvd25lcicpOworc2hvdWxkQmUo
J2RvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJwcm9ncmVzcyIpWzBdLmZvcm0nLCAnb3du
ZXInKTsKK3Nob3VsZEJlKCdkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgic2VsZWN0Iilb
MF0uZm9ybScsICdvd25lcicpOworc2hvdWxkQmUoJ2RvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ0ZXh0YXJlYSIpWzBdLmZvcm0nLCAnb3duZXInKTsKKworZGVidWcoJycpOworZGVidWco
Jy0gRW5zdXJlcyB0aGF0IHRoZSBmb3JtIGF0dHJpYnV0ZSBwb2ludHMgdGhlIGZvcm0gb3duZXIg
ZXZlbiBpZiB0aGUgZWxlbWVudCBpcyB3aXRoaW4gYW5vdGhlciBmb3JtIGVsZW1lbnQuJyk7Citj
b250YWluZXIuaW5uZXJIVE1MID0gJzxmb3JtIGlkPW93bmVyPjwvZm9ybT4nICsKKyAgICAnPGZv
cm0gaWQ9c2hvdWxkTm90QmVPd25lcj4nICsKKyAgICAnICAgIDxpbnB1dCBpZD1pbnB1dEVsZW1l
bnQgbmFtZT12aWN0aW0gZm9ybT1vd25lciAvPicgKworICAgICc8L2Zvcm0+JzsKK293bmVyID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ293bmVyJyk7Cit2YXIgaW5wdXRFbGVtZW50ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2lucHV0RWxlbWVudCcpOworc2hvdWxkQmUoJ2lucHV0RWxl
bWVudC5mb3JtJywgJ293bmVyJyk7CisKK2RlYnVnKCcnKTsKK2RlYnVnKCctIEVuc3VyZXMgdGhh
dCB0aGUgZm9ybSBhdHRyaWJ1dGUgb2YgYWxsIGZvcm0tYXNzb2NpYXRlZCBlbGVtZW50IHdpdGgg
b3Igd2l0b3V0IGZvcm0gYXR0cmlidXRlIHBvaW50cyB0aGUgZm9ybSBvd25lci4nKTsKK2NvbnRh
aW5lci5pbm5lckhUTUwgPSAnPGZvcm0gaWQ9b3duZXI+JyArCisgICAgJyAgICA8aW5wdXQgaWQ9
aW5wdXRFbGVtZW50MSBuYW1lPXZpY3RpbSAvPicgKworICAgICcgICAgPGlucHV0IGlkPWlucHV0
RWxlbWVudDIgbmFtZT12aWN0aW0gZm9ybT1vd25lciAvPicgKworICAgICcgICAgPGlucHV0IGlk
PWlucHV0RWxlbWVudDMgbmFtZT12aWN0aW0gLz4nICsKKyAgICAnPC9mb3JtPic7Citvd25lciA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdvd25lcicpOwordmFyIGlucHV0RWxlbWVudDEgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW5wdXRFbGVtZW50MScpOwordmFyIGlucHV0RWxlbWVu
dDIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW5wdXRFbGVtZW50MicpOwordmFyIGlucHV0
RWxlbWVudDMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW5wdXRFbGVtZW50MycpOworc2hv
dWxkQmUoJ2lucHV0RWxlbWVudDEuZm9ybScsICdvd25lcicpOworc2hvdWxkQmUoJ2lucHV0RWxl
bWVudDIuZm9ybScsICdvd25lcicpOworc2hvdWxkQmUoJ2lucHV0RWxlbWVudDMuZm9ybScsICdv
d25lcicpOworCitkZWJ1ZygnJyk7CitkZWJ1ZygnLSBFbnN1cmVzIHRoYXQgdGhlIGZvcm0gYXR0
cmlidXRlIHBvaW50cyB0aGUgZm9ybSBvd25lciBldmVuIGlmIHRoZSBmb3JtIGVsZW1lbnQgaXMg
bmVzdGVkIGFub3RoZXIgZm9ybSBlbGVtZW50LicpOworZGVidWcoJ05PVEU6IEl0IHNlZW1zIHRo
YXQgbmVzdGluZyBmb3JtIGVsZW1lbnRzIGlzIG5vdCBhbGxvd2VkIHNvIHdlIGVuc3VyZSBlYWNo
IGZvcm0tYXNzb2NpYXRlZCBlbGVtZW50cyBhc3NvY2lhdGUgd2l0aCB0aGUgb3V0bW9zdCBmb3Jt
IGVsZW1lbnQuJyk7Citjb250YWluZXIuaW5uZXJIVE1MID0gJzxmb3JtIGlkPW93bmVyPicgKwor
ICAgICcgICAgPGZvcm0+JyArCisgICAgJyAgICAgICAgPGlucHV0IGlkPWlucHV0RWxlbWVudDEg
bmFtZT12aWN0aW0gZm9ybT1vd25lci8+JyArCisgICAgJyAgICAgICAgPGlucHV0IGlkPWlucHV0
RWxlbWVudDIgbmFtZT12aWN0aW0gLz4nICsKKyAgICAnICAgICAgICA8aW5wdXQgaWQ9aW5wdXRF
bGVtZW50MyBuYW1lPXZpY3RpbSBmb3JtPW93bmVyLz4nICsKKyAgICAnICAgIDwvZm9ybT4nICsK
KyAgICAnPC9mb3JtPic7Citvd25lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdvd25lcicp
OworaW5wdXRFbGVtZW50MSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbnB1dEVsZW1lbnQx
Jyk7CitpbnB1dEVsZW1lbnQyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2lucHV0RWxlbWVu
dDInKTsKK2lucHV0RWxlbWVudDMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW5wdXRFbGVt
ZW50MycpOworc2hvdWxkQmUoJ2lucHV0RWxlbWVudDEuZm9ybScsICdvd25lcicpOworc2hvdWxk
QmUoJ2lucHV0RWxlbWVudDIuZm9ybScsICdvd25lcicpOworc2hvdWxkQmUoJ2lucHV0RWxlbWVu
dDMuZm9ybScsICdvd25lcicpOworCitkZWJ1ZygnJyk7CitkZWJ1ZygnLSBFbnN1cmVzIHdoZXRo
ZXIgdGhlIGZvcm0gb3duZXIgaXMgc2V0IGNvcnJlY3RseSB3aGVuIHRoZSB2YWx1ZSBvZiBmb3Jt
IGF0dHJpYnV0ZSBvZiBhIGZvcm0tYXNzb2NpYXRlZCBlbGVtZW50IGNoYW5nZWQuJyk7Citjb250
YWluZXIuaW5uZXJIVE1MID0gJzxmb3JtIGlkPWZvcm0xPjwvZm9ybT4nICsKKyAgICAnPGZvcm0g
aWQ9Zm9ybTI+PC9mb3JtPicgKworICAgICc8aW5wdXQgaWQ9aW5wdXRFbGVtZW50IG5hbWU9dmlj
dGltIGZvcm09Zm9ybTEgLz4nOwordmFyIGZvcm0xID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2Zvcm0xJyk7Cit2YXIgZm9ybTIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZm9ybTInKTsK
K2lucHV0RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbnB1dEVsZW1lbnQnKTsK
K3Nob3VsZEJlKCdpbnB1dEVsZW1lbnQuZm9ybScsICdmb3JtMScpOworaW5wdXRFbGVtZW50LmF0
dHJpYnV0ZXNbJ2Zvcm0nXS52YWx1ZSA9ICdmb3JtMic7CitzaG91bGRCZSgnaW5wdXRFbGVtZW50
LmZvcm0nLCAnZm9ybTInKTsKKworZGVidWcoJycpOworZGVidWcoJy0gRW5zdXJlcyB3aGV0aGVy
IHRoZSBmb3JtIG93bmVyIGlzIHNldCBjb3JyZWN0bHkgd2hlbiB0aGUgdmFsdWUgb2YgZm9ybSBh
dHRyaWJ1dGUgaXMgYWRkZWQvcmVtb3ZlZC4nKTsKK2NvbnRhaW5lci5pbm5lckhUTUwgPSAnPGZv
cm0gaWQ9b3duZXIgbmFtZT1maXJzdE93bmVyPjwvZm9ybT4nICsKKyAgICAnPGlucHV0IGlkPWlu
cHV0RWxlbWVudCBuYW1lPXZpY3RpbSAvPic7Citvd25lciA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdvd25lcicpOworaW5wdXRFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2lu
cHV0RWxlbWVudCcpOworc2hvdWxkQmUoJ2lucHV0RWxlbWVudC5mb3JtJywgJ251bGwnKTsKK3Zh
ciBmb3JtQXR0cmlidXRlID0gZG9jdW1lbnQuY3JlYXRlQXR0cmlidXRlKCdmb3JtJyk7CitpbnB1
dEVsZW1lbnQuc2V0QXR0cmlidXRlKCdmb3JtJywgJ293bmVyJyk7CitzaG91bGRCZSgnaW5wdXRF
bGVtZW50LmZvcm0nLCAnb3duZXInKTsKK2lucHV0RWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ2Zv
cm0nKTsKK3Nob3VsZEJlKCdpbnB1dEVsZW1lbnQuZm9ybScsICdudWxsJyk7CisKK2RlYnVnKCcn
KTsKK2RlYnVnKCctIEVuc3VyZXMgd2hldGhlciB0aGUgZm9ybSBvd25lciBpcyBzZXQgY29ycmVj
dGx5IHdoZW4gdGhlIGZvcm0gb3duZXIgaXMgYWRkZWQvcmVtb3ZlZC4nKTsKK2NvbnRhaW5lci5p
bm5lckhUTUwgPSAnPGZvcm0gaWQ9b3duZXIgbmFtZT1maXJzdE93bmVyPjwvZm9ybT4nICsKKyAg
ICAnPGZvcm0gaWQ9b3duZXIgbmFtZT1zZWNvbmRPd25lcj48L2Zvcm0+JyArCisgICAgJzxpbnB1
dCBpZD1pbnB1dEVsZW1lbnQgbmFtZT12aWN0aW0gZm9ybT1vd25lciAvPic7Citvd25lciA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdvd25lcicpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdv
d25lci5uYW1lJywgJ2ZpcnN0T3duZXInKTsKK2lucHV0RWxlbWVudCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdpbnB1dEVsZW1lbnQnKTsKK2NvbnRhaW5lci5yZW1vdmVDaGlsZChvd25lcik7
Citvd25lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdvd25lcicpOworc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCdvd25lci5uYW1lJywgJ3NlY29uZE93bmVyJyk7CitzaG91bGRCZSgnaW5wdXRF
bGVtZW50LmZvcm0nLCAnb3duZXInKTsKK2NvbnRhaW5lci5yZW1vdmVDaGlsZChvd25lcik7Citz
aG91bGRCZSgnaW5wdXRFbGVtZW50LmZvcm0nLCAnbnVsbCcpOworY29udGFpbmVyLmFwcGVuZENo
aWxkKG93bmVyKTsKK3Nob3VsZEJlKCdpbnB1dEVsZW1lbnQuZm9ybScsICdvd25lcicpOworCit2
YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdl
TG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmZhMGVkZDc5M2UyZDEwMWU3ZDE0ZGM5OTRm
NDRhYzY3ZTQwOTA0Yi4uY2IwOGVmNTA3MDY1ODBjMzhiNDc2YjkxMDI3MDY1MWM3NmJlYTYyNCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw1MCBAQAorMjAxMC0xMS0xMyAgS2VuaWNoaSBJc2hpYmFzaGkgIDxiYXNoaUBnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFtIVE1MNV0gImZvcm0iIGF0dHJpYnV0ZSBzdXBwb3J0IGZvciBmb3JtIGNvbnRyb2wgZWxlbWVu
dHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3ODEz
CisKKyAgICAgICAgQWRkcyBhIGxpc3Qgb2YgZm9ybS1hc3NvY2lhdGVkIGVsZW1lbnRzIHdpdGgg
Zm9ybSBhdHRyaWJ1dGUgaW50bworICAgICAgICB0aGUgRG9jdW1lbnQgY2xhc3MgdG8gc3VwcG9y
dCBmb3JtIGF0dHJpYnV0ZS4KKyAgICAgICAgQWRkcyBhIGZ1bmN0aW9uIHRvIGRldGVybWluZSB0
aGUgcmlnaHQgcGxhY2UgdG8gbG9jYXRlCisgICAgICAgIGZvcm0tYXNzb2NpYXRlZCBlbGVtZW50
cyB3aXRoIGZvcm0gYXR0cmlidXRlIGludG8KKyAgICAgICAgbV9hc3NvY2lhdGVkRWxlbWVudHMg
b2YgSFRNTEZvcm1FbGVtZW50IGNsYXNzLgorCisgICAgICAgIFRlc3RzOiBmYXN0L2Zvcm1zL2Zv
cm0tYXR0cmlidXRlLWVsZW1lbnRzLW9yZGVyLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZm9y
bXMvZm9ybS1hdHRyaWJ1dGUtZWxlbWVudHMtb3JkZXIyLmh0bWwKKyAgICAgICAgICAgICAgIGZh
c3QvZm9ybXMvZm9ybS1hdHRyaWJ1dGUtZWxlbWVudHMuaHRtbAorICAgICAgICAgICAgICAgZmFz
dC9mb3Jtcy9mb3JtLWF0dHJpYnV0ZS5odG1sCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlZ2lzdGVyRm9ybUVsZW1lbnRXaXRoRm9y
bUF0dHJpYnV0ZSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnVucmVnaXN0
ZXJGb3JtRWxlbWVudFdpdGhGb3JtQXR0cmlidXRlKTogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6cmVzZXRGb3JtRWxlbWVudHNPd25lcik6IEFkZGVkLgorICAgICAgICAqIGRv
bS9Eb2N1bWVudC5oOiBBZGRlZCB0aGUgbGlzdCBmb3IgZWxlbWVudHMgd2l0aCBmb3JtIGF0dHJp
YnV0ZS4KKyAgICAgICAgKiBodG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbjogQWRkZWQgZm9ybSBh
dHRyaWJ1dGUuCisgICAgICAgICogaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6Omluc2VydGVkSW50b1RyZWUp
OiBNb2RpZmllZCB0byBoYW5kbGUKKyAgICAgICAgZm9ybSBhdHRyaWJ1dGUuCisgICAgICAgIChX
ZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpyZW1vdmVkRnJvbVRyZWUpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnJlc2V0Rm9ybU93bmVy
KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjphdHRy
aWJ1dGVDaGFuZ2VkKTogQWRkZWQuCisgICAgICAgICogaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVt
ZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTEZvcm1FbGVtZW50OjpIVE1MRm9ybUVsZW1lbnQpOiBNb2RpZmllZCB0byBpbml0
aWFsaXplCisgICAgICAgIG5ld2x5LWFkZGVkIHZhcmlhYmxlcy4KKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxGb3JtRWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQpOiBNb2RpZmllZCB0byByZXNl
dAorICAgICAgICBmb3JtIG93bmVyIG9mIGZvcm0tYXNzb2NpYXRlZCBlbGVtZW50cy4KKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxGb3JtRWxlbWVudDo6cmVtb3ZlZEZyb21Eb2N1bWVudCk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50Ojpmb3JtRWxlbWVudEluZGV4V2l0
aEZvcm1BdHRyaWJ1dGUpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtRWxlbWVu
dDo6Zm9ybUVsZW1lbnRJbmRleCk6IE1vZGlmaWVkIHRvIHRyZWF0CisgICAgICAgIGZvcm0tYXNz
b2NpYXRlZCBlbGVtZW50cyB3aXRoIGZvcm0gYXR0cmlidXRlIHNlcGFyYXRlbHkuCisgICAgICAg
IChXZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ6OnJlbW92ZUZvcm1FbGVtZW50KTogTW9kaWZpZWQg
dG8gaGFuZGxlCisgICAgICAgIGZvcm0tYXNzb2NpYXRlZCBlbGVtZW50cyB3aXRoIGZvcm0gYXR0
cmlidXRlLgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1FbGVtZW50Lmg6IEFkZGVkIHRocmVlIHZh
cmlhYmxlcyB0byBoYW5kbGUgZm9ybSBhdHRyaWJ1dGUuCisgICAgICAgICogaHRtbC9IVE1MT3V0
cHV0RWxlbWVudC5jcHA6IFJlbW92ZWQgIkZJWE1FIiBjb21tZW50LgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE91dHB1dEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKiBo
dG1sL0hUTUxPdXRwdXRFbGVtZW50Lmg6IFJlbW92ZWQgc2V0Rm9ybSgpLgorCiAyMDEwLTExLTE0
ICBSeXVhbiBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBNYXJ0aW4gUm9iaW5zb24uCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAgYi9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggN2Y3N2IzZWY0NGQ2MTZlNTVjNTdj
YmQxZGU4ZmYxYTVlOGZiYWJiZC4uNGMzNDI1YTczZGZkOGJmYjhkNTA1YzA4OTM0MmVkODU5NmUy
ZDgzMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcApAQCAtNDM2NSw2ICs0MzY1LDI1IEBAIHZvaWQgRG9jdW1lbnQ6OnNl
dEljb25VUkwoY29uc3QgU3RyaW5nJiBpY29uVVJMLCBjb25zdCBTdHJpbmcmIHR5cGUpCiAgICAg
ICAgIGYtPmxvYWRlcigpLT5zZXRJY29uVVJMKG1faWNvblVSTCk7CiB9CiAKK3ZvaWQgRG9jdW1l
bnQ6OnJlZ2lzdGVyRm9ybUVsZW1lbnRXaXRoRm9ybUF0dHJpYnV0ZShFbGVtZW50KiBjb250cm9s
KQoreworICAgIEFTU0VSVChjb250cm9sLT5mYXN0SGFzQXR0cmlidXRlKGZvcm1BdHRyKSk7Cisg
ICAgbV9mb3JtRWxlbWVudHNXaXRoRm9ybUF0dHJpYnV0ZS5hZGQoY29udHJvbCk7Cit9CisKK3Zv
aWQgRG9jdW1lbnQ6OnVucmVnaXN0ZXJGb3JtRWxlbWVudFdpdGhGb3JtQXR0cmlidXRlKEVsZW1l
bnQqIGNvbnRyb2wpCit7CisgICAgbV9mb3JtRWxlbWVudHNXaXRoRm9ybUF0dHJpYnV0ZS5yZW1v
dmUoY29udHJvbCk7Cit9CisKK3ZvaWQgRG9jdW1lbnQ6OnJlc2V0Rm9ybUVsZW1lbnRzT3duZXIo
SFRNTEZvcm1FbGVtZW50KiBmb3JtKQoreworICAgIHR5cGVkZWYgRm9ybUVsZW1lbnRMaXN0SGFz
aFNldDo6aXRlcmF0b3IgSXRlcmF0b3I7CisgICAgSXRlcmF0b3IgZW5kID0gbV9mb3JtRWxlbWVu
dHNXaXRoRm9ybUF0dHJpYnV0ZS5lbmQoKTsKKyAgICBmb3IgKEl0ZXJhdG9yIGl0ID0gbV9mb3Jt
RWxlbWVudHNXaXRoRm9ybUF0dHJpYnV0ZS5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAg
ICAgIHN0YXRpY19jYXN0PEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqPigqaXQpLT5yZXNldEZvcm1P
d25lcihmb3JtKTsKK30KKwogdm9pZCBEb2N1bWVudDo6c2V0VXNlU2VjdXJlS2V5Ym9hcmRFbnRy
eVdoZW5BY3RpdmUoYm9vbCB1c2VzU2VjdXJlS2V5Ym9hcmQpCiB7CiAgICAgaWYgKG1fdXNlU2Vj
dXJlS2V5Ym9hcmRFbnRyeVdoZW5BY3RpdmUgPT0gdXNlc1NlY3VyZUtleWJvYXJkKQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5k
ZXggOGNjNjI3MjIwN2FlM2JmNTJhYjJkMDQzMzFlY2ZmNTcwY2ViMTkzMi4uYmE0OGQ2ZjgyZWNi
NDA4YmRiZDE0N2Y2MjNlOWU2YzljYmYyMjE2OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vRG9j
dW1lbnQuaAorKysgYi9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC00ODMsNiArNDgzLDEwIEBA
IHB1YmxpYzoKICAgICBib29sIGhhc1N0YXRlRm9yTmV3Rm9ybUVsZW1lbnRzKCkgY29uc3Q7CiAg
ICAgYm9vbCB0YWtlU3RhdGVGb3JGb3JtRWxlbWVudChBdG9taWNTdHJpbmdJbXBsKiBuYW1lLCBB
dG9taWNTdHJpbmdJbXBsKiB0eXBlLCBTdHJpbmcmIHN0YXRlKTsKIAorICAgIHZvaWQgcmVnaXN0
ZXJGb3JtRWxlbWVudFdpdGhGb3JtQXR0cmlidXRlKEVsZW1lbnQqKTsKKyAgICB2b2lkIHVucmVn
aXN0ZXJGb3JtRWxlbWVudFdpdGhGb3JtQXR0cmlidXRlKEVsZW1lbnQqKTsKKyAgICB2b2lkIHJl
c2V0Rm9ybUVsZW1lbnRzT3duZXIoSFRNTEZvcm1FbGVtZW50Kik7CisKICAgICBGcmFtZVZpZXcq
IHZpZXcoKSBjb25zdDsgLy8gY2FuIGJlIE5VTEwKICAgICBGcmFtZSogZnJhbWUoKSBjb25zdCB7
IHJldHVybiBtX2ZyYW1lOyB9IC8vIGNhbiBiZSBOVUxMCiAgICAgUGFnZSogcGFnZSgpIGNvbnN0
OyAvLyBjYW4gYmUgTlVMTApAQCAtMTE5Nyw2ICsxMjAxLDcgQEAgcHJpdmF0ZToKIAogICAgIHR5
cGVkZWYgTGlzdEhhc2hTZXQ8RWxlbWVudCosIDY0PiBGb3JtRWxlbWVudExpc3RIYXNoU2V0Owog
ICAgIEZvcm1FbGVtZW50TGlzdEhhc2hTZXQgbV9mb3JtRWxlbWVudHNXaXRoU3RhdGU7CisgICAg
Rm9ybUVsZW1lbnRMaXN0SGFzaFNldCBtX2Zvcm1FbGVtZW50c1dpdGhGb3JtQXR0cmlidXRlOwog
CiAgICAgdHlwZWRlZiBIYXNoTWFwPEZvcm1FbGVtZW50S2V5LCBWZWN0b3I8U3RyaW5nPiwgRm9y
bUVsZW1lbnRLZXlIYXNoLCBGb3JtRWxlbWVudEtleUhhc2hUcmFpdHM+IEZvcm1FbGVtZW50U3Rh
dGVNYXA7CiAgICAgRm9ybUVsZW1lbnRTdGF0ZU1hcCBtX3N0YXRlRm9yTmV3Rm9ybUVsZW1lbnRz
OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbiBiL1dlYkNv
cmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4KaW5kZXggZDk3NTlmY2RiMGE4MjQwMWEzZjA1
ZjU4YWFhYmQ5ZGMyMmM2NDZmZi4uMTg4MWI2ZmJhMjI4ZGU4YjQyYTc5MzdlMGVjZDEyNGU2ZTMz
ZDExMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgorKysg
Yi9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCkBAIC05NCw2ICs5NCw3IEBAIGV4
cGFuZGVkCiBmYWNlCiBmb2N1c2VkCiBmb3IKK2Zvcm0KIGZvcm1ub3ZhbGlkYXRlCiBmcmFtZQog
ZnJhbWVib3JkZXIKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVt
ZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcAppbmRleCA4
ZmEwMDBmMWIxYzdhMTQwODBmNjdlNGNlOTc3MmYwNWVkODJiYjQ1Li4yZjVkNDE0ZjNiNGQ4ODFk
N2ZjZTZkYjc4MGJhOTFjYmM1YjFkMGU3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTEZv
cm1Db250cm9sRWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVs
ZW1lbnQuY3BwCkBAIC0xNTQsNiArMTU0LDE2IEBAIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVu
dDo6YXR0YWNoKCkKIAogdm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjppbnNlcnRlZEludG9U
cmVlKGJvb2wgZGVlcCkKIHsKKyAgICBpZiAoZmFzdEhhc0F0dHJpYnV0ZShmb3JtQXR0cikpIHsK
KyAgICAgICAgZG9jdW1lbnQoKS0+cmVnaXN0ZXJGb3JtRWxlbWVudFdpdGhGb3JtQXR0cmlidXRl
KHRoaXMpOworICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gZG9jdW1lbnQoKS0+Z2V0RWxlbWVu
dEJ5SWQoZmFzdEdldEF0dHJpYnV0ZShmb3JtQXR0cikpOworICAgICAgICBpZiAoZWxlbWVudCAm
JiBlbGVtZW50LT5oYXNUYWdOYW1lKGZvcm1UYWcpKSB7CisgICAgICAgICAgICBpZiAobV9mb3Jt
KQorICAgICAgICAgICAgICAgIG1fZm9ybS0+cmVtb3ZlRm9ybUVsZW1lbnQodGhpcyk7CisgICAg
ICAgICAgICBtX2Zvcm0gPSBzdGF0aWNfY2FzdDxIVE1MRm9ybUVsZW1lbnQqPihlbGVtZW50KTsK
KyAgICAgICAgICAgIG1fZm9ybS0+cmVnaXN0ZXJGb3JtRWxlbWVudCh0aGlzKTsKKyAgICAgICAg
fQorICAgIH0KICAgICBpZiAoIW1fZm9ybSkgewogICAgICAgICAvLyBUaGlzIGhhbmRsZXMgdGhl
IGNhc2Ugb2YgYSBuZXcgZm9ybSBlbGVtZW50IGJlaW5nIGNyZWF0ZWQgYnkKICAgICAgICAgLy8g
SmF2YVNjcmlwdCBhbmQgaW5zZXJ0ZWQgaW5zaWRlIGEgZm9ybS4gIEluIHRoZSBjYXNlIG9mIHRo
ZSBwYXJzZXIKQEAgLTE3OSw2ICsxODksOSBAQCBzdGF0aWMgaW5saW5lIE5vZGUqIGZpbmRSb290
KE5vZGUqIG4pCiAKIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6cmVtb3ZlZEZyb21UcmVl
KGJvb2wgZGVlcCkKIHsKKyAgICBpZiAoZmFzdEhhc0F0dHJpYnV0ZShmb3JtQXR0cikpCisgICAg
ICAgIGRvY3VtZW50KCktPnVucmVnaXN0ZXJGb3JtRWxlbWVudFdpdGhGb3JtQXR0cmlidXRlKHRo
aXMpOworCiAgICAgLy8gSWYgdGhlIGZvcm0gYW5kIGVsZW1lbnQgYXJlIGJvdGggaW4gdGhlIHNh
bWUgdHJlZSwgcHJlc2VydmUgdGhlIGNvbm5lY3Rpb24gdG8gdGhlIGZvcm0uCiAgICAgLy8gT3Ro
ZXJ3aXNlLCBudWxsIG91dCBvdXIgZm9ybSBhbmQgcmVtb3ZlIG91cnNlbHZlcyBmcm9tIHRoZSBm
b3JtJ3MgbGlzdCBvZiBlbGVtZW50cy4KICAgICBpZiAobV9mb3JtICYmIGZpbmRSb290KHRoaXMp
ICE9IGZpbmRSb290KG1fZm9ybSkpIHsKQEAgLTQzMSw2ICs0NDQsNTAgQEAgdm9pZCBIVE1MRm9y
bUNvbnRyb2xFbGVtZW50OjpyZW1vdmVGcm9tRm9ybSgpCiAgICAgbV9mb3JtID0gMDsKIH0KIAor
dm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpyZXNldEZvcm1Pd25lcihIVE1MRm9ybUVsZW1l
bnQqIGZvcm0pCit7CisgICAgaWYgKG1fZm9ybSkgeworICAgICAgICBpZiAoIWZhc3RIYXNBdHRy
aWJ1dGUoZm9ybUF0dHIpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2Zvcm0tPnJl
bW92ZUZvcm1FbGVtZW50KHRoaXMpOworICAgIH0KKyAgICBtX2Zvcm0gPSAwOworICAgIGlmIChm
YXN0SGFzQXR0cmlidXRlKGZvcm1BdHRyKSkgeworICAgICAgICAvLyBUaGUgSFRNTDUgc3BlYyBz
YXlzIHRoYXQgdGhlIGVsZW1lbnQgc2hvdWxkIGJlIGFzc29jaWF0ZWQgd2l0aAorICAgICAgICAv
LyB0aGUgZmlyc3QgZWxlbWVudCBpbiB0aGUgZG9jdW1lbnQgdG8gaGF2ZSBhbiBJRCB0aGF0IGVx
dWFsIHRvCisgICAgICAgIC8vIHRoZSB2YWx1ZSBvZiBmb3JtIGF0dHJpYnV0ZSwgc28gd2UgcHV0
IHRoZSByZXN1bHQgb2YKKyAgICAgICAgLy8gZG9jdW1lbnQoKS0+Z2V0RWxlbWVudEJ5SWQoKSBv
dmVyIHRoZSBnaXZlbiBlbGVtZW50LgorICAgICAgICBFbGVtZW50KiBmaXJzdEVsZW1lbnQgPSBk
b2N1bWVudCgpLT5nZXRFbGVtZW50QnlJZChmYXN0R2V0QXR0cmlidXRlKGZvcm1BdHRyKSk7Cisg
ICAgICAgIGlmIChmaXJzdEVsZW1lbnQgJiYgZmlyc3RFbGVtZW50LT5oYXNUYWdOYW1lKGZvcm1U
YWcpKQorICAgICAgICAgICAgbV9mb3JtID0gc3RhdGljX2Nhc3Q8SFRNTEZvcm1FbGVtZW50Kj4o
Zmlyc3RFbGVtZW50KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9mb3JtID0gZm9ybTsK
KyAgICB9IGVsc2UKKyAgICAgICAgbV9mb3JtID0gZmluZEZvcm1BbmNlc3RvcigpOworICAgIGlm
IChtX2Zvcm0pCisgICAgICAgIG1fZm9ybS0+cmVnaXN0ZXJGb3JtRWxlbWVudCh0aGlzKTsKKyAg
ICBlbHNlCisgICAgICAgIGRvY3VtZW50KCktPmNoZWNrZWRSYWRpb0J1dHRvbnMoKS5hZGRCdXR0
b24odGhpcyk7Cit9CisKK3ZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6YXR0cmlidXRlQ2hh
bmdlZChBdHRyaWJ1dGUqIGF0dHIsIGJvb2wgcHJlc2VydmVEZWNscykKK3sKKyAgICBpZiAoYXR0
ci0+bmFtZSgpID09IGZvcm1BdHRyKSB7CisgICAgICAgIGlmICghZmFzdEhhc0F0dHJpYnV0ZShm
b3JtQXR0cikpIHsKKyAgICAgICAgICAgIC8vIFRoZSBmb3JtIGF0dHJpYnV0ZSByZW1vdmVkLiBX
ZSBuZWVkIHRvIHJlc2V0IGZvcm0gb3duZXIgaGVyZS4KKyAgICAgICAgICAgIGlmIChtX2Zvcm0p
CisgICAgICAgICAgICAgICAgbV9mb3JtLT5yZW1vdmVGb3JtRWxlbWVudCh0aGlzKTsKKyAgICAg
ICAgICAgIG1fZm9ybSA9IGZpbmRGb3JtQW5jZXN0b3IoKTsKKyAgICAgICAgICAgIGlmIChtX2Zv
cm0pCisgICAgICAgICAgICAgICAgbV9mb3JtLT5yZWdpc3RlckZvcm1FbGVtZW50KHRoaXMpOwor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGRvY3VtZW50KCktPmNoZWNrZWRSYWRp
b0J1dHRvbnMoKS5hZGRCdXR0b24odGhpcyk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAg
cmVzZXRGb3JtT3duZXIoMCk7CisgICAgfQorICAgIEhUTUxFbGVtZW50OjphdHRyaWJ1dGVDaGFu
Z2VkKGF0dHIsIHByZXNlcnZlRGVjbHMpOworfQorCiBib29sIEhUTUxGb3JtQ29udHJvbEVsZW1l
bnQ6OmlzTGFiZWxhYmxlKCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogQWRkIG1ldGVyVGFnIGFu
ZCBvdXRwdXRUYWcgdG8gdGhlIGxpc3Qgb25jZSB3ZSBzdXBwb3J0IHRoZW0uCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oIGIvV2ViQ29yZS9odG1sL0hU
TUxGb3JtQ29udHJvbEVsZW1lbnQuaAppbmRleCAxOTYwZmMzNGYyODhkYTM1NjJlZTZjZDE3OTRh
YjM5MDdiZTU5M2EzLi44Yzk4ZDkxMTcwMTQwMjQwOGI3OGU2OGEwMjMwMmFkOWNkM2YxNDM2IDEw
MDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oCisrKyBiL1dl
YkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKQEAgLTk5LDYgKzk5LDkgQEAgcHVi
bGljOgogICAgIAogICAgIGJvb2wgcmVhZE9ubHkoKSBjb25zdCB7IHJldHVybiBtX3JlYWRPbmx5
OyB9CiAKKyAgICB2b2lkIHJlc2V0Rm9ybU93bmVyKEhUTUxGb3JtRWxlbWVudCopOworICAgIHZp
cnR1YWwgdm9pZCBhdHRyaWJ1dGVDaGFuZ2VkKEF0dHJpYnV0ZSosIGJvb2wgcHJlc2VydmVEZWNs
cyA9IGZhbHNlKTsKKwogcHJvdGVjdGVkOgogICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqLCBIVE1MRm9ybUVsZW1lbnQqKTsK
IApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAgYi9XZWJDb3Jl
L2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAppbmRleCBkYTM4OGQ1YzY1MWI5YzMwOTNmZDk4NDFk
MjUyODcxZDM5NjM1N2YyLi4xYWViMzYwM2I4OTc3NWRiYWM3NGRmZjQ0M2ZkODhlN2YxMTEyMGJm
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAorKysgYi9XZWJD
b3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcApAQCAtNjUsNiArNjUsOCBAQCB1c2luZyBuYW1l
c3BhY2UgSFRNTE5hbWVzOwogCiBIVE1MRm9ybUVsZW1lbnQ6OkhUTUxGb3JtRWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBIVE1M
RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKKyAgICAsIG1fYXNzb2NpYXRlZEVsZW1lbnRzQmVm
b3JlSW5kZXgoMCkKKyAgICAsIG1fYXNzb2NpYXRlZEVsZW1lbnRzQWZ0ZXJJbmRleCgwKQogICAg
ICwgbV93YXNVc2VyU3VibWl0dGVkKGZhbHNlKQogICAgICwgbV9hdXRvY29tcGxldGUodHJ1ZSkK
ICAgICAsIG1faW5zdWJtaXQoZmFsc2UpCkBAIC0xMzMsNiArMTM1LDkgQEAgdm9pZCBIVE1MRm9y
bUVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KCkKICAgICAgICAgc3RhdGljX2Nhc3Q8SFRN
TERvY3VtZW50Kj4oZG9jdW1lbnQoKSktPmFkZE5hbWVkSXRlbShtX25hbWUpOwogCiAgICAgSFRN
TEVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KCk7CisKKyAgICBpZiAoaGFzSUQoKSkKKyAg
ICAgICAgZG9jdW1lbnQoKS0+cmVzZXRGb3JtRWxlbWVudHNPd25lcih0aGlzKTsKIH0KIAogdm9p
ZCBIVE1MRm9ybUVsZW1lbnQ6OnJlbW92ZWRGcm9tRG9jdW1lbnQoKQpAQCAtMTQxLDYgKzE0Niw5
IEBAIHZvaWQgSFRNTEZvcm1FbGVtZW50OjpyZW1vdmVkRnJvbURvY3VtZW50KCkKICAgICAgICAg
c3RhdGljX2Nhc3Q8SFRNTERvY3VtZW50Kj4oZG9jdW1lbnQoKSktPnJlbW92ZU5hbWVkSXRlbSht
X25hbWUpOwogCiAgICAgSFRNTEVsZW1lbnQ6OnJlbW92ZWRGcm9tRG9jdW1lbnQoKTsKKworICAg
IGlmIChoYXNJRCgpKQorICAgICAgICBkb2N1bWVudCgpLT5yZXNldEZvcm1FbGVtZW50c093bmVy
KDApOwogfQogCiB2b2lkIEhUTUxGb3JtRWxlbWVudDo6aGFuZGxlTG9jYWxFdmVudHMoRXZlbnQq
IGV2ZW50KQpAQCAtMzg4LDI0ICszOTYsNjQgQEAgdGVtcGxhdGU8Y2xhc3MgVCwgc2l6ZV90IG4+
IHN0YXRpYyB2b2lkIHJlbW92ZUZyb21WZWN0b3IoVmVjdG9yPFQqLCBuPiAmIHZlYywgVCoKICAg
ICAgICAgfQogfQogCit1bnNpZ25lZCBIVE1MRm9ybUVsZW1lbnQ6OmZvcm1FbGVtZW50SW5kZXhX
aXRoRm9ybUF0dHJpYnV0ZShIVE1MRm9ybUNvbnRyb2xFbGVtZW50KiBlbGVtZW50KQoreworICAg
IC8vIENvbXBhcmVzIHRoZSBwb3NpdGlvbiBvZiB0aGUgZm9ybSBlbGVtZW50IGFuZCB0aGUgaW5z
ZXJ0ZWQgZWxlbWVudC4KKyAgICAvLyBVcGRhdGVzIHRoZSBpbmRlY2VzIGluIG9yZGVyIHRvIHRo
ZSByZWxhdGlvbiBvZiB0aGUgcG9zaXRpb246CisgICAgdW5zaWduZWQgc2hvcnQgcG9zaXRpb24g
PSBjb21wYXJlRG9jdW1lbnRQb3NpdGlvbihlbGVtZW50KTsKKyAgICBpZiAocG9zaXRpb24gJiBE
T0NVTUVOVF9QT1NJVElPTl9DT05UQUlOUykKKyAgICAgICAgKyttX2Fzc29jaWF0ZWRFbGVtZW50
c0FmdGVySW5kZXg7CisgICAgZWxzZSBpZiAocG9zaXRpb24gJiBET0NVTUVOVF9QT1NJVElPTl9Q
UkVDRURJTkcpIHsKKyAgICAgICAgKyttX2Fzc29jaWF0ZWRFbGVtZW50c0JlZm9yZUluZGV4Owor
ICAgICAgICArK21fYXNzb2NpYXRlZEVsZW1lbnRzQWZ0ZXJJbmRleDsKKyAgICB9CisKKyAgICBp
ZiAobV9hc3NvY2lhdGVkRWxlbWVudHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gMDsKKwor
ICAgIC8vIERvZXMgYmluYXJ5IHNlYXJjaCBvbiBtX2Fzc29jaWF0ZWRFbGVtZW50cyBpbiBvcmRl
ciB0byBmaW5kIHRoZSBpbmRleAorICAgIC8vIHRvIGJlIGluc2VydGVkLgorICAgIHVuc2lnbmVk
IGxlZnQgPSAwLCByaWdodCA9IG1fYXNzb2NpYXRlZEVsZW1lbnRzLnNpemUoKSAtIDE7CisgICAg
d2hpbGUgKGxlZnQgIT0gcmlnaHQpIHsKKyAgICAgICAgdW5zaWduZWQgbWlkZGxlID0gbGVmdCAr
ICgocmlnaHQgLSBsZWZ0KSAvIDIpOworICAgICAgICBwb3NpdGlvbiA9IGVsZW1lbnQtPmNvbXBh
cmVEb2N1bWVudFBvc2l0aW9uKG1fYXNzb2NpYXRlZEVsZW1lbnRzW21pZGRsZV0pOworICAgICAg
ICBpZiAocG9zaXRpb24gJiBET0NVTUVOVF9QT1NJVElPTl9GT0xMT1dJTkcpCisgICAgICAgICAg
ICByaWdodCA9IG1pZGRsZTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbGVmdCA9IG1pZGRs
ZSArIDE7CisgICAgfQorCisgICAgcG9zaXRpb24gPSBlbGVtZW50LT5jb21wYXJlRG9jdW1lbnRQ
b3NpdGlvbihtX2Fzc29jaWF0ZWRFbGVtZW50c1tsZWZ0XSk7CisgICAgaWYgKHBvc2l0aW9uICYg
RE9DVU1FTlRfUE9TSVRJT05fRk9MTE9XSU5HKQorICAgICAgICByZXR1cm4gbGVmdDsKKyAgICBy
ZXR1cm4gbGVmdCArIDE7Cit9CisKIHVuc2lnbmVkIEhUTUxGb3JtRWxlbWVudDo6Zm9ybUVsZW1l
bnRJbmRleChIVE1MRm9ybUNvbnRyb2xFbGVtZW50KiBlKQogeworICAgIC8vIFRyZWF0cyBzZXBh
cmF0ZWx5IHRoZSBjYXNlIHdoZXJlIHRoaXMgZWxlbWVudCBoYXMgdGhlIGZvcm0gYXR0cmlidXRl
CisgICAgLy8gZm9yIHBlcmZvcm1hbmNlIGNvbnNpZGVyYXRpb24uCisgICAgaWYgKGUtPmZhc3RI
YXNBdHRyaWJ1dGUoZm9ybUF0dHIpKQorICAgICAgICByZXR1cm4gZm9ybUVsZW1lbnRJbmRleFdp
dGhGb3JtQXR0cmlidXRlKGUpOworCiAgICAgLy8gQ2hlY2sgZm9yIHRoZSBzcGVjaWFsIGNhc2Ug
d2hlcmUgdGhpcyBlbGVtZW50IGlzIHRoZSB2ZXJ5IGxhc3QgdGhpbmcgaW4KICAgICAvLyB0aGUg
Zm9ybSdzIHRyZWUgb2YgY2hpbGRyZW47IHdlIGRvbid0IHdhbnQgdG8gd2FsayB0aGUgZW50aXJl
IHRyZWUgaW4gdGhhdAogICAgIC8vIGNvbW1vbiBjYXNlIHRoYXQgb2NjdXJzIGR1cmluZyBwYXJz
aW5nOyBpbnN0ZWFkIHdlJ2xsIGp1c3QgcmV0dXJuIGEgdmFsdWUKICAgICAvLyB0aGF0IHNheXMg
ImFkZCB0aGlzIGZvcm0gZWxlbWVudCB0byB0aGUgZW5kIG9mIHRoZSBhcnJheSIuCiAgICAgaWYg
KGUtPnRyYXZlcnNlTmV4dE5vZGUodGhpcykpIHsKLSAgICAgICAgdW5zaWduZWQgaSA9IDA7Cisg
ICAgICAgIHVuc2lnbmVkIGkgPSBtX2Fzc29jaWF0ZWRFbGVtZW50c0JlZm9yZUluZGV4OwogICAg
ICAgICBmb3IgKE5vZGUqIG5vZGUgPSB0aGlzOyBub2RlOyBub2RlID0gbm9kZS0+dHJhdmVyc2VO
ZXh0Tm9kZSh0aGlzKSkgewotICAgICAgICAgICAgaWYgKG5vZGUgPT0gZSkKKyAgICAgICAgICAg
IGlmIChub2RlID09IGUpIHsKKyAgICAgICAgICAgICAgICArK21fYXNzb2NpYXRlZEVsZW1lbnRz
QWZ0ZXJJbmRleDsKICAgICAgICAgICAgICAgICByZXR1cm4gaTsKKyAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIGlmIChub2RlLT5pc0hUTUxFbGVtZW50KCkKICAgICAgICAgICAgICAgICAgICAg
JiYgc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUpLT5pc0Zvcm1Db250cm9sRWxlbWVudCgpCiAg
ICAgICAgICAgICAgICAgICAgICYmIHN0YXRpY19jYXN0PEhUTUxGb3JtQ29udHJvbEVsZW1lbnQq
Pihub2RlKS0+Zm9ybSgpID09IHRoaXMpCiAgICAgICAgICAgICAgICAgKytpOwogICAgICAgICB9
CiAgICAgfQotICAgIHJldHVybiBtX2Fzc29jaWF0ZWRFbGVtZW50cy5zaXplKCk7CisgICAgcmV0
dXJuIG1fYXNzb2NpYXRlZEVsZW1lbnRzQWZ0ZXJJbmRleCsrOwogfQogCiB2b2lkIEhUTUxGb3Jt
RWxlbWVudDo6cmVnaXN0ZXJGb3JtRWxlbWVudChIVE1MRm9ybUNvbnRyb2xFbGVtZW50KiBlKQpA
QCAtNDE4LDYgKzQ2NiwxOCBAQCB2b2lkIEhUTUxGb3JtRWxlbWVudDo6cmVnaXN0ZXJGb3JtRWxl
bWVudChIVE1MRm9ybUNvbnRyb2xFbGVtZW50KiBlKQogdm9pZCBIVE1MRm9ybUVsZW1lbnQ6OnJl
bW92ZUZvcm1FbGVtZW50KEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqIGUpCiB7CiAgICAgbV9jaGVj
a2VkUmFkaW9CdXR0b25zLnJlbW92ZUJ1dHRvbihlKTsKKyAgICBpZiAoZS0+ZmFzdEhhc0F0dHJp
YnV0ZShmb3JtQXR0cikpIHsKKyAgICAgICAgdW5zaWduZWQgaW5kZXg7CisgICAgICAgIGZvciAo
aW5kZXggPSAwOyBpbmRleCA8IG1fYXNzb2NpYXRlZEVsZW1lbnRzLnNpemUoKTsgKytpbmRleCkK
KyAgICAgICAgICAgIGlmIChtX2Fzc29jaWF0ZWRFbGVtZW50c1tpbmRleF0gPT0gZSkKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgQVNTRVJUKGluZGV4IDwgbV9hc3NvY2lhdGVkRWxl
bWVudHMuc2l6ZSgpKTsKKyAgICAgICAgaWYgKGluZGV4IDwgbV9hc3NvY2lhdGVkRWxlbWVudHNC
ZWZvcmVJbmRleCkKKyAgICAgICAgICAgIC0tbV9hc3NvY2lhdGVkRWxlbWVudHNCZWZvcmVJbmRl
eDsKKyAgICAgICAgaWYgKGluZGV4IDwgbV9hc3NvY2lhdGVkRWxlbWVudHNBZnRlckluZGV4KQor
ICAgICAgICAgICAgLS1tX2Fzc29jaWF0ZWRFbGVtZW50c0FmdGVySW5kZXg7CisgICAgfSBlbHNl
CisgICAgICAgIC0tbV9hc3NvY2lhdGVkRWxlbWVudHNBZnRlckluZGV4OwogICAgIHJlbW92ZUZy
b21WZWN0b3IobV9hc3NvY2lhdGVkRWxlbWVudHMsIGUpOwogfQogCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmggYi9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50
LmgKaW5kZXggYjk5NmQ5ZGUyNDBmMDZiZTVkNTQwZTBlMDg3NWNlMGIxMzc1NmY5NC4uNGUwNmJl
YzA5OWM2M2M0ZmMzNWQ1OTNhMDVhM2UzMzVmMDAyZjEwZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9o
dG1sL0hUTUxGb3JtRWxlbWVudC5oCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQu
aApAQCAtMTMxLDYgKzEzMSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHN1Ym1pdChFdmVudCos
IGJvb2wgYWN0aXZhdGVTdWJtaXRCdXR0b24sIGJvb2wgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlLCBG
b3JtU3VibWlzc2lvblRyaWdnZXIpOwogCisgICAgdW5zaWduZWQgZm9ybUVsZW1lbnRJbmRleFdp
dGhGb3JtQXR0cmlidXRlKEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqKTsKICAgICB1bnNpZ25lZCBm
b3JtRWxlbWVudEluZGV4KEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqKTsKICAgICAvLyBSZXR1cm5z
IHRydWUgaWYgdGhlIHN1Ym1pc3Npb24gc2hvdWxkIGJlIHByb2NlZWRlZC4KICAgICBib29sIHZh
bGlkYXRlSW50ZXJhY3RpdmVseShFdmVudCopOwpAQCAtMTQ4LDYgKzE0OSw4IEBAIHByaXZhdGU6
CiAKICAgICBDaGVja2VkUmFkaW9CdXR0b25zIG1fY2hlY2tlZFJhZGlvQnV0dG9uczsKIAorICAg
IHVuc2lnbmVkIG1fYXNzb2NpYXRlZEVsZW1lbnRzQmVmb3JlSW5kZXg7CisgICAgdW5zaWduZWQg
bV9hc3NvY2lhdGVkRWxlbWVudHNBZnRlckluZGV4OwogICAgIFZlY3RvcjxIVE1MRm9ybUNvbnRy
b2xFbGVtZW50Kj4gbV9hc3NvY2lhdGVkRWxlbWVudHM7CiAgICAgVmVjdG9yPEhUTUxJbWFnZUVs
ZW1lbnQqPiBtX2ltYWdlRWxlbWVudHM7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1M
T3V0cHV0RWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTE91dHB1dEVsZW1lbnQuY3BwCmlu
ZGV4IGRlZTIxYWVmY2U1OTQ2YzA0YjYxNDY1NjQ2Y2ZlMGFhOTAxYzAxOGYuLmI4MzI2M2UzODE3
YzBiNWNiMGJkZWM1ZWI3M2NkNzc0N2ViYjBjZTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9I
VE1MT3V0cHV0RWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxPdXRwdXRFbGVtZW50
LmNwcApAQCAtNTgsNyArNTgsNiBAQCBjb25zdCBBdG9taWNTdHJpbmcmIEhUTUxPdXRwdXRFbGVt
ZW50Ojpmb3JtQ29udHJvbFR5cGUoKSBjb25zdAogCiB2b2lkIEhUTUxPdXRwdXRFbGVtZW50Ojpw
YXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiB7Ci0gICAgLy8gRklYTUU6IFNo
b3VsZCBoYW5kbGUgdGhlICdmb3JtJyBhdHRyaWJ1dGUgaGVyZS4KICAgICBpZiAoYXR0ci0+bmFt
ZSgpID09IEhUTUxOYW1lczo6Zm9yQXR0cikKICAgICAgICAgc2V0Rm9yKGF0dHItPnZhbHVlKCkp
OwogICAgIGVsc2UKQEAgLTc1LDExICs3NCw2IEBAIHZvaWQgSFRNTE91dHB1dEVsZW1lbnQ6OnNl
dEZvcihjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgIG1fdG9rZW5zLT5zZXRWYWx1ZSh2YWx1ZSk7
CiB9CiAKLXZvaWQgSFRNTE91dHB1dEVsZW1lbnQ6OnNldEZvcm0oY29uc3QgU3RyaW5nJiAvKmlk
Ki8pCi17Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIGZ1bmN0aW9uLgotfQotCiB2b2lk
IEhUTUxPdXRwdXRFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoYm9vbCBjcmVhdGVkQnlQYXJzZXIs
IE5vZGUqLCBOb2RlKiwgaW50KQogewogICAgIGlmIChjcmVhdGVkQnlQYXJzZXIgfHwgbV9pc1Nl
dFRleHRDb250ZW50SW5Qcm9ncmVzcykgewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxP
dXRwdXRFbGVtZW50LmggYi9XZWJDb3JlL2h0bWwvSFRNTE91dHB1dEVsZW1lbnQuaAppbmRleCBk
ZjgwN2ZiY2M3Y2M5N2E0YjViMTRlYmI0NWJmNTVhMzlhMDM1NzI2Li44M2VjZWUyZjQ5Zjg2MTZm
N2IxMGVjOWRiZGMyZGUwNzMwYTNmZGVkIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTE91
dHB1dEVsZW1lbnQuaAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTE91dHB1dEVsZW1lbnQuaApAQCAt
NDMsNyArNDMsNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgd2lsbFZhbGlkYXRlKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIHZvaWQgc2V0Rm9ybShjb25zdCBTdHJpbmcm
KTsKICAgICBTdHJpbmcgdmFsdWUoKSBjb25zdDsKICAgICB2b2lkIHNldFZhbHVlKGNvbnN0IFN0
cmluZyYpOwogICAgIFN0cmluZyBkZWZhdWx0VmFsdWUoKSBjb25zdDsK
</data>

          </attachment>
      

    </bug>

</bugzilla>