<?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>75302</bug_id>
          
          <creation_ts>2011-12-28 03:24:55 -0800</creation_ts>
          <short_desc>ShadowContentElement should be able to use query.</short_desc>
          <delta_ts>2012-01-13 05:05:20 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>76180</dependson>
          <blocked>75301</blocked>
    
    <blocked>75306</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Shinya Kawanaka">shinyak</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>dominicc</cc>
    
    <cc>gustavo.noronha</cc>
    
    <cc>gustavo</cc>
    
    <cc>morrita</cc>
    
    <cc>rakuco</cc>
    
    <cc>shinyak</cc>
    
    <cc>vsevik</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>527602</commentid>
    <comment_count>0</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2011-12-28 03:24:55 -0800</bug_when>
    <thetext>To support various element based on ShadowContentElement, it would be better that ShadowContentElement can use some queries to determine which elements are injected in it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527631</commentid>
    <comment_count>1</comment_count>
      <attachid>120658</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2011-12-28 05:42:00 -0800</bug_when>
    <thetext>Created attachment 120658
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527633</commentid>
    <comment_count>2</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2011-12-28 05:42:50 -0800</bug_when>
    <thetext>I&apos;ve tried to implement the proposed interface.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527636</commentid>
    <comment_count>3</comment_count>
      <attachid>120658</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-12-28 05:48:42 -0800</bug_when>
    <thetext>Comment on attachment 120658
Patch

Attachment 120658 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/11035613</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527637</commentid>
    <comment_count>4</comment_count>
      <attachid>120658</attachid>
    <who name="Collabora GTK+ EWS bot">gustavo.noronha</who>
    <bug_when>2011-12-28 05:52:26 -0800</bug_when>
    <thetext>Comment on attachment 120658
Patch

Attachment 120658 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/11037619</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527639</commentid>
    <comment_count>5</comment_count>
      <attachid>120658</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-12-28 05:56:45 -0800</bug_when>
    <thetext>Comment on attachment 120658
Patch

Attachment 120658 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/11037622</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530034</commentid>
    <comment_count>6</comment_count>
      <attachid>121223</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-01-04 23:40:22 -0800</bug_when>
    <thetext>Created attachment 121223
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530040</commentid>
    <comment_count>7</comment_count>
      <attachid>121223</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-01-04 23:45:31 -0800</bug_when>
    <thetext>Comment on attachment 121223
Patch

Attachment 121223 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/11120131</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530058</commentid>
    <comment_count>8</comment_count>
      <attachid>121229</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-01-05 00:22:07 -0800</bug_when>
    <thetext>Created attachment 121229
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530077</commentid>
    <comment_count>9</comment_count>
      <attachid>121234</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-01-05 01:02:57 -0800</bug_when>
    <thetext>Created attachment 121234
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530858</commentid>
    <comment_count>10</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-01-05 18:16:56 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; Created an attachment (id=121234) [details]
&gt; Patch

OK, it builds on all platforms. It&apos;s time to review this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530895</commentid>
    <comment_count>11</comment_count>
      <attachid>121234</attachid>
    <who name="Dominic Cooney">dominicc</who>
    <bug_when>2012-01-05 20:01:55 -0800</bug_when>
    <thetext>Comment on attachment 121234
Patch

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

&gt; Source/WebCore/dom/ShadowContentElement.cpp:81
&gt; +bool ShadowContentElement::matchesQuery(const ShadowContentSelectorQuery&amp; query, Node* node)

This factoring looks wrong to me:
• The responsibility for defining whether a query matches is split between ShadowContentElement::matchesQuery method and ShadowContentSelectorQuery::matches.
• The ShadowContentElement defines the query, but stores it in an string; then ShadowInclusionsSelector::select is responsible for parsing the query. It doesn’t seem right. Why is the representation of the query split this way?

&gt; Source/WebCore/dom/ShadowContentElement.h:53
&gt; +    void setSelect(const String&amp; select) { m_select = select; }

Since the content element doesn’t handle updates, maybe it is safer to remove this method for now?

&gt; Source/WebCore/dom/ShadowContentSelectorQuery.cpp:43
&gt; +    parser.parseSelector(querySelector, document, m_selectorList);

This allows selectors not permitted by the Shadow DOM spec, right? If so you definitely need a FIXME here to tighten this up later.

&gt; Source/WebCore/dom/ShadowContentSelectorQuery.cpp:51
&gt; +    if (!node)

This is one indication of why it is bad to split matching across two places… this test is now duplicated.

&gt; Source/WebCore/dom/ShadowContentSelectorQuery.cpp:55
&gt; +    fprintf(stderr, &quot;selectorCount = %d\n&quot;, (int) selectorCount);

Remove logging.

&gt; Source/WebCore/dom/ShadowContentSelectorQuery.cpp:72
&gt; +    // return m_selectorChecker.checkSelector(selectorData.selector, element, selectorData.isFastCheckable);

??

&gt; Source/WebCore/dom/ShadowContentSelectorQuery.h:61
&gt; +        CSSSelector* selector;

m_ for members

&gt; LayoutTests/fast/dom/shadow/shadow-contents-select-expected.txt:1
&gt; +PASS

This will be hard to debug when it fails because the output is so terse. Consider using a reftest?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530992</commentid>
    <comment_count>12</comment_count>
      <attachid>121411</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-01-06 02:11:41 -0800</bug_when>
    <thetext>Created attachment 121411
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530993</commentid>
    <comment_count>13</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-01-06 02:14:55 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 121234 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=121234&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/ShadowContentElement.cpp:81
&gt; &gt; +bool ShadowContentElement::matchesQuery(const ShadowContentSelectorQuery&amp; query, Node* node)
&gt; 
&gt; This factoring looks wrong to me:
&gt; • The responsibility for defining whether a query matches is split between ShadowContentElement::matchesQuery method and ShadowContentSelectorQuery::matches.
&gt; • The ShadowContentElement defines the query, but stores it in an string; then ShadowInclusionsSelector::select is responsible for parsing the query. It doesn’t seem right. Why is the representation of the query split this way?

Hmm...
I&apos;d like to split search query matcher and ShadowContentElement.
So I&apos;ve removed matchesQuery from ShadowContentElement and changed ShadowContentSelectorQuery a bit.

&gt; 
&gt; &gt; Source/WebCore/dom/ShadowContentElement.h:53
&gt; &gt; +    void setSelect(const String&amp; select) { m_select = select; }
&gt; 
&gt; Since the content element doesn’t handle updates, maybe it is safer to remove this method for now?

Done.

&gt; 
&gt; &gt; Source/WebCore/dom/ShadowContentSelectorQuery.cpp:43
&gt; &gt; +    parser.parseSelector(querySelector, document, m_selectorList);
&gt; 
&gt; This allows selectors not permitted by the Shadow DOM spec, right? If so you definitely need a FIXME here to tighten this up later.
&gt; 
&gt; &gt; Source/WebCore/dom/ShadowContentSelectorQuery.cpp:51
&gt; &gt; +    if (!node)
&gt; 
&gt; This is one indication of why it is bad to split matching across two places… this test is now duplicated.
&gt; 
&gt; &gt; Source/WebCore/dom/ShadowContentSelectorQuery.cpp:55
&gt; &gt; +    fprintf(stderr, &quot;selectorCount = %d\n&quot;, (int) selectorCount);
&gt; 
&gt; Remove logging.

Done.

&gt; 
&gt; &gt; Source/WebCore/dom/ShadowContentSelectorQuery.cpp:72
&gt; &gt; +    // return m_selectorChecker.checkSelector(selectorData.selector, element, selectorData.isFastCheckable);
&gt; 
&gt; ??

Sorry, this is a mistake.

&gt; 
&gt; &gt; Source/WebCore/dom/ShadowContentSelectorQuery.h:61
&gt; &gt; +        CSSSelector* selector;
&gt; 
&gt; m_ for members

I&apos;ve searched several examples of value struct. They do not use m_.
So I leave this as is.

&gt; 
&gt; &gt; LayoutTests/fast/dom/shadow/shadow-contents-select-expected.txt:1
&gt; &gt; +PASS
&gt; 
&gt; This will be hard to debug when it fails because the output is so terse. Consider using a reftest?

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530995</commentid>
    <comment_count>14</comment_count>
      <attachid>121411</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-01-06 02:19:11 -0800</bug_when>
    <thetext>Comment on attachment 121411
Patch

Attachment 121411 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/11144296</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530997</commentid>
    <comment_count>15</comment_count>
      <attachid>121411</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-01-06 02:20:04 -0800</bug_when>
    <thetext>Comment on attachment 121411
Patch

Attachment 121411 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/11145309</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>531035</commentid>
    <comment_count>16</comment_count>
      <attachid>121411</attachid>
    <who name="Collabora GTK+ EWS bot">gustavo.noronha</who>
    <bug_when>2012-01-06 04:26:31 -0800</bug_when>
    <thetext>Comment on attachment 121411
Patch

Attachment 121411 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/11142347</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>532740</commentid>
    <comment_count>17</comment_count>
      <attachid>121775</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-01-09 18:03:54 -0800</bug_when>
    <thetext>Created attachment 121775
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>532778</commentid>
    <comment_count>18</comment_count>
      <attachid>121775</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-01-09 19:43:28 -0800</bug_when>
    <thetext>Comment on attachment 121775
Patch

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

Nifty.

&gt; Source/WebCore/dom/ShadowContentElement.cpp:46
&gt; +    , m_select(select)

And that&apos;s it? What about changing attribute value? Shouldn&apos;t that also reset m_select?

&gt; Source/WebCore/dom/ShadowContentElement.h:46
&gt; +    static PassRefPtr&lt;ShadowContentElement&gt; create(Document*, const String&amp; select = String());

Can we just eliminate the implicit param? It seem too clever.

&gt; Source/WebCore/dom/ShadowContentElement.h:57
&gt; +    // FIXME: Currently this constructor accepts wider query than shadow dom spec.

File a bug and list it here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>532779</commentid>
    <comment_count>19</comment_count>
      <attachid>121775</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-01-09 19:45:28 -0800</bug_when>
    <thetext>Comment on attachment 121775
Patch

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

Hi, thanks for attacking this. This is what I hope to have!
Let us iterate for a few round.

&gt; Source/WebCore/ChangeLog:41
&gt; +

Please add an entry to dom/DOMAllInOne.cpp to make the Windows port happy.

&gt; Source/WebCore/dom/ShadowContentElement.h:46
&gt; +    static PassRefPtr&lt;ShadowContentElement&gt; create(Document*, const String&amp; select = String());

Please use AtomicString instead of String. It is what Attribute class uses.

&gt; Source/WebCore/dom/ShadowContentElement.h:52
&gt; +    const String&amp; select() { return m_select; }

This should be implemented using getAttribute() because it should be also represented as an HTML attribute.

&gt; Source/WebCore/dom/ShadowContentElement.h:59
&gt; +    ShadowContentElement(const QualifiedName&amp;, Document*, const String&amp; select = String());

Ditto for AtomicString.

&gt; Source/WebCore/dom/ShadowContentElement.h:67
&gt; +    String m_select;

So we shouldn&apos;t need this.

&gt; Source/WebCore/dom/ShadowContentSelectorQuery.cpp:37
&gt; +    : m_matchesAll(element-&gt;select().isEmpty())

It looks we don&apos; t need this because it&apos;s derivable from m_contentEleent.

&gt; Source/WebCore/dom/ShadowContentSelectorQuery.cpp:78
&gt; +    if (!targetNode-&gt;isElementNode())

This check can be done in matches(Node*).

&gt; Source/WebCore/dom/ShadowContentSelectorQuery.h:37
&gt; +#include &lt;wtf/HashSet.h&gt;

Do we need this...

&gt; Source/WebCore/dom/ShadowContentSelectorQuery.h:38
&gt; +#include &lt;wtf/RefCounted.h&gt;

and this?

&gt; Source/WebCore/dom/ShadowContentSelectorQuery.h:50
&gt; +    ShadowContentSelectorQuery(ShadowContentElement*);

Please make this explicit.

&gt; Source/WebCore/dom/ShadowContentSelectorQuery.h:55
&gt; +    struct SelectorData {

Let&apos;s extract SelectorData from SelectorQuery and share the code. 
I hope there are some reasonable way to extract stuff from SelectorQuery without sacrificing performance...

&gt; Source/WebCore/dom/ShadowContentSelectorQuery.h:66
&gt; +    bool canUseIdLookup(const SelectorData&amp;, Document*) const;

It looks we aren&apos;t using this.

&gt; Source/WebCore/html/HTMLDetailsElement.cpp:45
&gt; +        : ShadowContentElement(HTMLNames::divTag, document, &quot;&quot;)

Please use WTF::emptyAtom().

&gt; Source/WebCore/html/HTMLDetailsElement.cpp:61
&gt; +        : ShadowContentElement(HTMLNames::divTag, document, &quot;summary:first-of-type&quot;)

Please use pre-defined static AtomicString instance instead of C string literal to prevent an extra heap allocation.

&gt; Source/WebCore/testing/Internals.cpp:137
&gt; +    return elem.release();

Why do we need these two step?

&gt; LayoutTests/ChangeLog:13
&gt; +2012-01-06  Shinya Kawanaka  &lt;shinyak@google.com&gt;

Dup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>532977</commentid>
    <comment_count>20</comment_count>
      <attachid>121828</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-01-10 05:02:40 -0800</bug_when>
    <thetext>Created attachment 121828
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>532992</commentid>
    <comment_count>21</comment_count>
      <attachid>121828</attachid>
    <who name="Collabora GTK+ EWS bot">gustavo.noronha</who>
    <bug_when>2012-01-10 05:30:30 -0800</bug_when>
    <thetext>Comment on attachment 121828
Patch

Attachment 121828 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/11198026</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534467</commentid>
    <comment_count>22</comment_count>
      <attachid>121828</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-01-11 18:02:49 -0800</bug_when>
    <thetext>Comment on attachment 121828
Patch

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

&gt; Source/WebCore/dom/SelectorQuery.cpp:47
&gt; +    m_selectors.clear();

Do we need clear() ? I guess we can just assert empty()-ness.

&gt; Source/WebCore/dom/SelectorQuery.cpp:82
&gt;  bool SelectorQuery::canUseIdLookup() const
&gt;      // we would need to sort the results. For now, just traverse the document in that case.

It looks canUseIdLookUp() can be moved to SelectorDataList.

&gt; Source/WebCore/dom/SelectorQuery.cpp:-100
&gt; -                if (m_selectorChecker.checkSelector(m_selectors[i].selector, element, m_selectors[i].isFastCheckable)) {

I guess this check function can be encapsulated inside SelectorDataList so that we can remove an per-item accessor.

&gt; Source/WebCore/dom/SelectorQuery.h:48
&gt; +    CSSSelector* selector(int nth) const { return m_selectors[nth].selector; }

selectorAt() ?

&gt; Source/WebCore/dom/ShadowContentSelectorQuery.cpp:72
&gt; +bool ShadowContentSelectorQuery::matches(Node* targetNode, CSSSelector* selector, bool isFastCheckable) const

I hope this can be part of SelectorDataList to hide per-element accessor.

&gt; Source/WebCore/dom/ShadowContentSelectorQuery.cpp:76
&gt; +    if (!targetNode-&gt;isElementNode())

This check can be done by the caller.

&gt; Source/WebCore/html/HTMLDetailsElement.cpp:68
&gt; +const AtomicString DetailsSummaryElement::summaryQuerySelector = &quot;summary:first-of-type&quot;;

Please make this inside some (possibly static) method to avoid static initializers.

&gt; Source/WebCore/html/HTMLSummaryElement.cpp:46
&gt; +        : ShadowContentElement(HTMLNames::divTag, document, WTF::emptyAtom)

You don&apos;t need WTF::. It is in using.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534566</commentid>
    <comment_count>23</comment_count>
      <attachid>122168</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-01-11 21:57:29 -0800</bug_when>
    <thetext>Created attachment 122168
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534593</commentid>
    <comment_count>24</comment_count>
      <attachid>122168</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-01-11 23:22:35 -0800</bug_when>
    <thetext>Comment on attachment 122168
Patch

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

&gt; Source/WebCore/dom/SelectorQuery.h:49
&gt; +    bool matches(const SelectorChecker&amp;, Node*) const;

You can make this Element* to remove assertion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534619</commentid>
    <comment_count>25</comment_count>
      <attachid>122179</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-01-12 00:26:32 -0800</bug_when>
    <thetext>Created attachment 122179
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534637</commentid>
    <comment_count>26</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-01-12 00:58:44 -0800</bug_when>
    <thetext>(In reply to comment #24)
&gt; (From update of attachment 122168 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=122168&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/SelectorQuery.h:49
&gt; &gt; +    bool matches(const SelectorChecker&amp;, Node*) const;
&gt; 
&gt; You can make this Element* to remove assertion.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534646</commentid>
    <comment_count>27</comment_count>
      <attachid>122188</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-01-12 01:26:04 -0800</bug_when>
    <thetext>Created attachment 122188
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534648</commentid>
    <comment_count>28</comment_count>
      <attachid>122188</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-01-12 01:31:09 -0800</bug_when>
    <thetext>Comment on attachment 122188
Patch

Attachment 122188 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/11222295</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534649</commentid>
    <comment_count>29</comment_count>
      <attachid>122188</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-01-12 01:33:37 -0800</bug_when>
    <thetext>Comment on attachment 122188
Patch

Attachment 122188 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/11212355</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534651</commentid>
    <comment_count>30</comment_count>
      <attachid>122188</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-01-12 01:36:27 -0800</bug_when>
    <thetext>Comment on attachment 122188
Patch

Attachment 122188 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/11118318</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534652</commentid>
    <comment_count>31</comment_count>
      <attachid>122189</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-01-12 01:36:44 -0800</bug_when>
    <thetext>Created attachment 122189
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534701</commentid>
    <comment_count>32</comment_count>
      <attachid>122189</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-12 03:15:54 -0800</bug_when>
    <thetext>Comment on attachment 122189
Patch

Clearing flags on attachment: 122189

Committed r104805: &lt;http://trac.webkit.org/changeset/104805&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534702</commentid>
    <comment_count>33</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-12 03:16:01 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534855</commentid>
    <comment_count>34</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-01-12 08:16:14 -0800</bug_when>
    <thetext>Looks like this patch caused apple win bots to fail compilation.

Build log: http://build.webkit.org/builders/Windows%20Release%20%28Build%29/builds/25748/steps/compile-webkit/logs/stdio

5&gt;Linking...
5&gt;   Creating library C:\cygwin\home\buildbot\slave\win-release\build\WebKitBuild\Release\lib\WebKit.lib and object C:\cygwin\home\buildbot\slave\win-release\build\WebKitBuild\Release\lib\WebKit.exp
5&gt;WebKit.exp : error LNK2001: unresolved external symbol &quot;public: static class WTF::PassRefPtr&lt;class WebCore::ShadowContentElement&gt; __cdecl WebCore::ShadowContentElement::create(class WebCore::Document *)&quot; (?create@ShadowContentElement@WebCore@@SA?AV?$PassRefPtr@VShadowContentElement@WebCore@@@WTF@@PAVDocument@2@@Z)
5&gt;C:\cygwin\home\buildbot\slave\win-release\build\WebKitBuild\Release\bin\WebKit.dll : fatal error LNK1120: 1 unresolved externals
5&gt;Build log was saved at &quot;file://C:\cygwin\home\buildbot\slave\win-release\build\WebKitBuild\Release\obj\WebKit\BuildLog.htm&quot;
5&gt;WebKit - 2 error(s), 0 warning(s)

Rolled out: Committed r104827: &lt;http://trac.webkit.org/changeset/104827&gt;

Reopening.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535345</commentid>
    <comment_count>35</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-01-12 17:44:00 -0800</bug_when>
    <thetext>(In reply to comment #34)
&gt; Looks like this patch caused apple win bots to fail compilation.
&gt; 
Well, actually the ews bot also went red...
Thanks for caring this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535354</commentid>
    <comment_count>36</comment_count>
      <attachid>122353</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-01-12 18:02:32 -0800</bug_when>
    <thetext>Created attachment 122353
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535355</commentid>
    <comment_count>37</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-01-12 18:03:28 -0800</bug_when>
    <thetext>(In reply to comment #35)
&gt; (In reply to comment #34)
&gt; &gt; Looks like this patch caused apple win bots to fail compilation.
&gt; &gt; 
&gt; Well, actually the ews bot also went red...
&gt; Thanks for caring this.

Thank you for caring this.
Let me try again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535547</commentid>
    <comment_count>38</comment_count>
      <attachid>122402</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-01-13 02:26:35 -0800</bug_when>
    <thetext>Created attachment 122402
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535576</commentid>
    <comment_count>39</comment_count>
      <attachid>122402</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-01-13 03:48:16 -0800</bug_when>
    <thetext>Comment on attachment 122402
Patch

let&apos;s try again...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535592</commentid>
    <comment_count>40</comment_count>
      <attachid>122402</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-13 05:05:12 -0800</bug_when>
    <thetext>Comment on attachment 122402
Patch

Clearing flags on attachment: 122402

Committed r104919: &lt;http://trac.webkit.org/changeset/104919&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535593</commentid>
    <comment_count>41</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-13 05:05:20 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120658</attachid>
            <date>2011-12-28 05:42:00 -0800</date>
            <delta_ts>2012-01-04 23:40:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-75302-20111228224158.patch</filename>
            <type>text/plain</type>
            <size>28223</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAzNzU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2U4MGE5MGE2ZDNkOTRj
OWY5ZWNiOWI3NWZlZmQ4OThjNjZiNTc1My4uNTBjMTdjZDA2MTQ2ZjNkM2Y2OWU1OGMxY2I3MDli
ZmE0YTYzOTJiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDExLTEyLTI4ICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGdvb2dsZS5jb20+CisKKyAgICAgICAgU2hhZG93Q29udGVu
dEVsZW1lbnQgc2hvdWxkIGJlIGFibGUgdG8gdXNlIHF1ZXJ5LgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzUzMDIKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgYSBzZWxl
Y3RvciB0byBxdWVyeSBlbGVtZW50cyBpbiBTaGFkb3dDb250ZW50RWxlbWVudC4KKyAgICAgICAg
VGhpcyBjYW4gYmUgdXNlZCBpbnN0ZWFkIG9mIFNoYWRvd0NvbnRlbnRFbGVtZW50OjpzaG91bGRJ
bmNsdWRlIGluIG1vcmUgc29waGlzdGljYXRlZCB3YXlzLgorCisgICAgICAgIFRlc3Q6IGZhc3Qv
ZG9tL3NoYWRvdy9zaGFkb3ctY29udGVudHMtc2VsZWN0Lmh0bWwKKworICAgICAgICAqIFdlYkNv
cmUuZ3lwaToKKyAgICAgICAgKiBkb20vU2hhZG93Q29udGVudEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhZG93Q29udGVudEVsZW1lbnQ6OlNoYWRvd0NvbnRlbnRFbGVtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0NvbnRlbnRFbGVtZW50OjpzZXRTZWxlY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhZG93Q29udGVudEVsZW1lbnQ6Om1hdGNoZXNRdWVyeSk6CisgICAg
ICAgICAgUmV0dXJucyB0cnVlIGlmIE5vZGUgaXMgbWF0Y2hlZCBieSB0aGUgcXVlcnkuCisgICAg
ICAgICogZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTaGFk
b3dDb250ZW50RWxlbWVudDo6c2VsZWN0KToKKyAgICAgICAgKiBkb20vU2hhZG93Q29udGVudFNl
bGVjdG9yUXVlcnkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0NvbnRlbnRT
ZWxlY3RvclF1ZXJ5OjpTaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeSk6CisgICAgICAgIChXZWJD
b3JlOjpTaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeTo6bWF0Y2hlcyk6CisgICAgICAgICogZG9t
L1NoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3Jl
L2RvbS9TaGFkb3dDb250ZW50RWxlbWVudC5oLgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Q29u
dGVudFNlbGVjdG9yUXVlcnk6OlNlbGVjdG9yRGF0YTo6U2VsZWN0b3JEYXRhKToKKyAgICAgICAg
KiBkb20vU2hhZG93SW5jbHVzaW9uU2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hh
ZG93SW5jbHVzaW9uU2VsZWN0b3I6OnNlbGVjdCk6CisgICAgICAgICogZG9tL1NoYWRvd0luY2x1
c2lvblNlbGVjdG9yLmg6CisgICAgICAgICogaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RGV0YWlsc0NvbnRlbnRFbGVtZW50OjpEZXRhaWxzQ29udGVudEVs
ZW1lbnQpOiBSZS1pbXBsZW1lbnRlZCB1c2luZyBxdWVyeS4KKyAgICAgICAgKFdlYkNvcmU6OkRl
dGFpbHNTdW1tYXJ5RWxlbWVudDo6RGV0YWlsc1N1bW1hcnlFbGVtZW50KTogZGl0dG8uCisgICAg
ICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxz
OjpjcmVhdGVTaGFkb3dDb250ZW50RWxlbWVudCk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5h
bHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisKIDIwMTEtMTItMjcgIEFu
YW50YW5hcmF5YW5hbiBHIEl5ZW5nYXIgIDxhbmFudGFAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IENyYXNoIGluIHRoZSBXZWJLaXQgYWNjZXNzaWJpbGl0eSBjb2RlIHdoaWxlIGF0dGVtcHRpbmcg
dG8gcmV0cmlldmUgdGhlIHRpdGxlIFVJIGVsZW1lbnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggNThl
NWNjODM0ZTVlYzQzMWFiN2I5OGIzYjE2YTBiZGZjNGUzMzEzNy4uMDZkZjU3ZDhjNzdmNmNhNjdh
MjIzMzFkNmE2NGVjYmZjNjg5NTE5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNTQyNSw2ICs1NDI1
LDggQEAKICAgICAgICAgICAgICdkb20vU2VsZWN0b3JRdWVyeS5oJywKICAgICAgICAgICAgICdk
b20vU2hhZG93Q29udGVudEVsZW1lbnQuY3BwJywKICAgICAgICAgICAgICdkb20vU2hhZG93Q29u
dGVudEVsZW1lbnQuaCcsCisgICAgICAgICAgICAnZG9tL1NoYWRvd0NvbnRlbnRTZWxlY3RvclF1
ZXJ5LmNwcCcsCisgICAgICAgICAgICAnZG9tL1NoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5Lmgn
LAogICAgICAgICAgICAgJ2RvbS9TaGFkb3dJbmNsdXNpb25TZWxlY3Rvci5jcHAnLAogICAgICAg
ICAgICAgJ2RvbS9TaGFkb3dJbmNsdXNpb25TZWxlY3Rvci5oJywKICAgICAgICAgICAgICdkb20v
U2hhZG93Um9vdC5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0Nv
bnRlbnRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dDb250ZW50RWxlbWVu
dC5jcHAKaW5kZXggZWNlZTZkMGM3ZWU3NmZkZDcyNWUyZmRjZjg3MmRkMmJiOTNjOTdiYi4uM2E2
YWE4MzU1MDdjNGVkYzUzMGVlNDNlMTMwOTEwZTBmMjQ2ZjkwZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2hhZG93Q29udGVudEVsZW1lbnQuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVk
ZSAiU2hhZG93Q29udGVudEVsZW1lbnQuaCIKIAogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2lu
Y2x1ZGUgIlNoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmgiCiAjaW5jbHVkZSAiU2hhZG93SW5j
bHVzaW9uU2VsZWN0b3IuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAKQEAgLTM5LDkgKzQw
LDEwIEBAIFBhc3NSZWZQdHI8U2hhZG93Q29udGVudEVsZW1lbnQ+IFNoYWRvd0NvbnRlbnRFbGVt
ZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBT
aGFkb3dDb250ZW50RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCi1TaGFkb3dDb250
ZW50RWxlbWVudDo6U2hhZG93Q29udGVudEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFt
ZSwgRG9jdW1lbnQqIGRvY3VtZW50KQorU2hhZG93Q29udGVudEVsZW1lbnQ6OlNoYWRvd0NvbnRl
bnRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIERvY3VtZW50KiBkb2N1bWVudCwg
Y29uc3QgU3RyaW5nJiBzZWxlY3QpCiAgICAgOiBTdHlsZWRFbGVtZW50KG5hbWUsIGRvY3VtZW50
LCBDcmVhdGVIVE1MRWxlbWVudCkKICAgICAsIG1faW5jbHVzaW9ucyhhZG9wdFB0cihuZXcgU2hh
ZG93SW5jbHVzaW9uTGlzdCgpKSkKKyAgICAsIG1fc2VsZWN0KHNlbGVjdCkKIHsKIH0KIApAQCAt
NzYsMTAgKzc4LDIxIEBAIHZvaWQgU2hhZG93Q29udGVudEVsZW1lbnQ6OmRldGFjaCgpCiAgICAg
U3R5bGVkRWxlbWVudDo6ZGV0YWNoKCk7CiB9CiAKLWJvb2wgU2hhZG93Q29udGVudEVsZW1lbnQ6
OnNob3VsZEluY2x1ZGUoTm9kZSopCit2b2lkIFNoYWRvd0NvbnRlbnRFbGVtZW50OjpzZXRTZWxl
Y3QoY29uc3QgU3RyaW5nJiBzZWxlY3QpCiB7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgbV9zZWxl
Y3QgPSBzZWxlY3Q7CiB9CiAKK2Jvb2wgU2hhZG93Q29udGVudEVsZW1lbnQ6Om1hdGNoZXNRdWVy
eShjb25zdCBTaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeSYgcXVlcnksIE5vZGUqIG5vZGUpCit7
CisgICAgQVNTRVJUKG5vZGUpOworICAgIGlmICghbm9kZSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgaWYgKG1fc2VsZWN0LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisK
KyAgICByZXR1cm4gcXVlcnkubWF0Y2hlcyhub2RlKTsKK30KIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vU2hhZG93Q29udGVudEVsZW1lbnQuaAppbmRleCA3YjM2NjYyMWI3Yjk2M2E0MzBmYzE0MzA5
YmQ0NjVlYWVkZmEwNGE0Li5kODFlNmNmODFiOTI5NjdjNWRhNDhiZTlhNDNiYzY5YmEwYzEzNTMy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Q29udGVudEVsZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Q29udGVudEVsZW1lbnQuaApAQCAtMzYsNiAr
MzYsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFNoYWRvd0NvbnRlbnRTZWxl
Y3RvclF1ZXJ5OwogY2xhc3MgU2hhZG93SW5jbHVzaW9uTGlzdDsKIAogLy8gTk9URTogQ3VycmVu
dCBpbXBsZW1lbnRhdGlvbiBkb2Vzbid0IHN1cHBvcnQgZHluYW1pYyBpbnNlcnRpb24vZGVsZXRp
b24gb2YgU2hhZG93Q29udGVudEVsZW1lbnQuCkBAIC00NSwxNCArNDYsMTggQEAgcHVibGljOgog
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNoYWRvd0NvbnRlbnRFbGVtZW50PiBjcmVhdGUoRG9jdW1l
bnQqKTsKIAogICAgIHZpcnR1YWwgflNoYWRvd0NvbnRlbnRFbGVtZW50KCk7Ci0gICAgdmlydHVh
bCBib29sIHNob3VsZEluY2x1ZGUoTm9kZSopOwogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goKTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoKCk7CiAKKyAgICBjb25zdCBTdHJpbmcmIHNlbGVjdCgp
IHsgcmV0dXJuIG1fc2VsZWN0OyB9CisgICAgdm9pZCBzZXRTZWxlY3QoY29uc3QgU3RyaW5nJik7
CisKKyAgICBib29sIG1hdGNoZXNRdWVyeShjb25zdCBTaGFkb3dDb250ZW50U2VsZWN0b3JRdWVy
eSYsIE5vZGUqKTsKKwogICAgIGNvbnN0IFNoYWRvd0luY2x1c2lvbkxpc3QqIGluY2x1c2lvbnMo
KSBjb25zdCB7IHJldHVybiBtX2luY2x1c2lvbnMuZ2V0KCk7IH0KIAogcHJvdGVjdGVkOgotICAg
IFNoYWRvd0NvbnRlbnRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwor
ICAgIFNoYWRvd0NvbnRlbnRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCos
IGNvbnN0IFN0cmluZyYgc2VsZWN0ID0gU3RyaW5nKCkpOwogCiBwcml2YXRlOgogICAgIHZpcnR1
YWwgYm9vbCBpc0NvbnRlbnRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQpAQCAtNjAs
NiArNjUsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5k
ZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKikgeyByZXR1cm4gMDsgfQogCiAgICAgT3du
UHRyPFNoYWRvd0luY2x1c2lvbkxpc3Q+IG1faW5jbHVzaW9uczsKKyAgICBTdHJpbmcgbV9zZWxl
Y3Q7CiB9OwogCiBpbmxpbmUgU2hhZG93Q29udGVudEVsZW1lbnQqIHRvU2hhZG93Q29udGVudEVs
ZW1lbnQoTm9kZSogbm9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dD
b250ZW50U2VsZWN0b3JRdWVyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Q29udGVu
dFNlbGVjdG9yUXVlcnkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJhN2ZiMWM0OWQxMGJkMTM5ZWYzMzBlMzIy
YTQ5MmEzZDgyNGRmOGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hh
ZG93Q29udGVudFNlbGVjdG9yUXVlcnkuY3BwCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiU2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnkuaCIKKworI2lu
Y2x1ZGUgIkNTU1BhcnNlci5oIgorI2luY2x1ZGUgIkNTU1NlbGVjdG9yTGlzdC5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK1NoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5OjpTaGFkb3dDb250
ZW50U2VsZWN0b3JRdWVyeShEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgcXVlcnlT
ZWxlY3RvcikKKyAgICA6IG1fc2VsZWN0b3JDaGVja2VyKGRvY3VtZW50LCAhZG9jdW1lbnQtPmlu
UXVpcmtzTW9kZSgpKQoreworICAgIEFTU0VSVChkb2N1bWVudCk7CisKKyAgICBtX3NlbGVjdG9y
Q2hlY2tlci5zZXRDb2xsZWN0aW5nUnVsZXNPbmx5KHRydWUpOworCisgICAgQ1NTUGFyc2VyIHBh
cnNlcih0cnVlKTsKKyAgICBwYXJzZXIucGFyc2VTZWxlY3RvcihxdWVyeVNlbGVjdG9yLCBkb2N1
bWVudCwgbV9zZWxlY3Rvckxpc3QpOworCisgICAgZm9yIChDU1NTZWxlY3Rvciogc2VsZWN0b3Ig
PSBtX3NlbGVjdG9yTGlzdC5maXJzdCgpOyBzZWxlY3Rvcjsgc2VsZWN0b3IgPSBDU1NTZWxlY3Rv
ckxpc3Q6Om5leHQoc2VsZWN0b3IpKQorICAgICAgICBtX3NlbGVjdG9ycy5hcHBlbmQoU2VsZWN0
b3JEYXRhKHNlbGVjdG9yLCBTZWxlY3RvckNoZWNrZXI6OmlzRmFzdENoZWNrYWJsZVNlbGVjdG9y
KHNlbGVjdG9yKSkpOworfQorCitib29sIFNoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5OjptYXRj
aGVzKE5vZGUqIG5vZGUpIGNvbnN0Cit7CisgICAgaWYgKCFub2RlKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICB1bnNpZ25lZCBzZWxlY3RvckNvdW50ID0gbV9zZWxlY3RvcnMuc2l6ZSgp
OworICAgIGZwcmludGYoc3RkZXJyLCAic2VsZWN0b3JDb3VudCA9ICVkXG4iLCAoaW50KSBzZWxl
Y3RvckNvdW50KTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2VsZWN0b3JDb3VudDsg
KytpKSB7CisgICAgICAgIGlmIChtYXRjaGVzKG5vZGUsIG1fc2VsZWN0b3JzW2ldKSkKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9v
bCBTaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeTo6bWF0Y2hlcyhOb2RlKiB0YXJnZXROb2RlLCBj
b25zdCBTZWxlY3RvckRhdGEmIHNlbGVjdG9yRGF0YSkgY29uc3QKK3sKKyAgICBBU1NFUlQodGFy
Z2V0Tm9kZSk7CisKKyAgICBpZiAoIXRhcmdldE5vZGUtPmlzRWxlbWVudE5vZGUoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PEVs
ZW1lbnQqPih0YXJnZXROb2RlKTsKKyAgICAvLyByZXR1cm4gbV9zZWxlY3RvckNoZWNrZXIuY2hl
Y2tTZWxlY3RvcihzZWxlY3RvckRhdGEuc2VsZWN0b3IsIGVsZW1lbnQsIHNlbGVjdG9yRGF0YS5p
c0Zhc3RDaGVja2FibGUpOworICAgIHJldHVybiBtX3NlbGVjdG9yQ2hlY2tlci5jaGVja1NlbGVj
dG9yKHNlbGVjdG9yRGF0YS5zZWxlY3RvciwgZWxlbWVudCwgZmFsc2UpOworfQorCisKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeS5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZTRiODk3MzRhOGE5NjIxOTRiODVmYWEyM2Y3YjM2NzNhNjU4OTg5YwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeS5o
CkBAIC0wLDAgKzEsNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIFNoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5X2gKKyNk
ZWZpbmUgU2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnlfaAorCisjaW5jbHVkZSAiQ1NTU2VsZWN0
b3JMaXN0LmgiCisjaW5jbHVkZSAiU2VsZWN0b3JDaGVja2VyLmgiCisjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIERvY3VtZW50OworY2xhc3MgTm9kZTsKKworY2xhc3MgU2hhZG93Q29udGVudFNlbGVj
dG9yUXVlcnkgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNoYWRvd0NvbnRlbnRTZWxlY3Rv
clF1ZXJ5KTsKK3B1YmxpYzoKKyAgICBTaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeShEb2N1bWVu
dCosIGNvbnN0IFN0cmluZyYpOworCisgICAgYm9vbCBtYXRjaGVzKE5vZGUqKSBjb25zdDsKKwor
cHJpdmF0ZToKKyAgICBzdHJ1Y3QgU2VsZWN0b3JEYXRhIHsKKyAgICAgICAgU2VsZWN0b3JEYXRh
KENTU1NlbGVjdG9yKiBzZWxlY3RvciwgYm9vbCBpc0Zhc3RDaGVja2FibGUpCisgICAgICAgICAg
ICA6IHNlbGVjdG9yKHNlbGVjdG9yKQorICAgICAgICAgICAgLCBpc0Zhc3RDaGVja2FibGUoaXNG
YXN0Q2hlY2thYmxlKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBDU1NTZWxlY3Rv
ciogc2VsZWN0b3I7CisgICAgICAgIGJvb2wgaXNGYXN0Q2hlY2thYmxlOworICAgIH07CisKKyAg
ICBib29sIGNhblVzZUlkTG9va3VwKGNvbnN0IFNlbGVjdG9yRGF0YSYsIERvY3VtZW50KikgY29u
c3Q7CisgICAgYm9vbCBtYXRjaGVzKE5vZGUqIHRhcmdldE5vZGUsIGNvbnN0IFNlbGVjdG9yRGF0
YSYpIGNvbnN0OworCisgICAgVmVjdG9yPFNlbGVjdG9yRGF0YT4gbV9zZWxlY3RvcnM7CisgICAg
Q1NTU2VsZWN0b3JMaXN0IG1fc2VsZWN0b3JMaXN0OworICAgIFNlbGVjdG9yQ2hlY2tlciBtX3Nl
bGVjdG9yQ2hlY2tlcjsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2hhZG93SW5jbHVzaW9uU2VsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L1NoYWRvd0luY2x1c2lvblNlbGVjdG9yLmNwcAppbmRleCA5ODQxZjU1NjQ4ODdjODk2MzQ1Mzc0
OWYyMzcxNjZjYTJlNDVlMTA1Li5iMzI2MWUwODFhNDBiYmJhOWYyZjIyNmE2NjBmNmFjMzZjMjEw
OTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93SW5jbHVzaW9uU2VsZWN0
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dJbmNsdXNpb25TZWxlY3Rvci5j
cHAKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJTaGFkb3dJbmNsdXNpb25TZWxlY3Rvci5o
IgogCiAjaW5jbHVkZSAiU2hhZG93Q29udGVudEVsZW1lbnQuaCIKKyNpbmNsdWRlICJTaGFkb3dD
b250ZW50U2VsZWN0b3JRdWVyeS5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKIAogCkBAIC0x
MTEsMTEgKzExMiwxMiBAQCB2b2lkIFNoYWRvd0luY2x1c2lvblNlbGVjdG9yOjpzZWxlY3QoU2hh
ZG93Q29udGVudEVsZW1lbnQqIGNvbnRlbnRFbGVtZW50LCBTaGFkbwogewogICAgIEFTU0VSVChp
bmNsdXNpb25zLT5pc0VtcHR5KCkpOwogCisgICAgU2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnkg
cXVlcnkoY29udGVudEVsZW1lbnQtPmRvY3VtZW50KCksIGNvbnRlbnRFbGVtZW50LT5zZWxlY3Qo
KSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2NhbmRpZGF0ZXMuc2l6ZSgpOyArK2kp
IHsKICAgICAgICAgTm9kZSogY2hpbGQgPSBtX2NhbmRpZGF0ZXNbaV0uZ2V0KCk7CiAgICAgICAg
IGlmICghY2hpbGQpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKCFjb250ZW50
RWxlbWVudC0+c2hvdWxkSW5jbHVkZShjaGlsZCkpCisgICAgICAgIGlmICghY29udGVudEVsZW1l
bnQtPm1hdGNoZXNRdWVyeShxdWVyeSwgY2hpbGQpKQogICAgICAgICAgICAgY29udGludWU7CiAK
ICAgICAgICAgUmVmUHRyPFNoYWRvd0luY2x1c2lvbj4gaW5jbHVzaW9uID0gU2hhZG93SW5jbHVz
aW9uOjpjcmVhdGUoY29udGVudEVsZW1lbnQsIGNoaWxkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TaGFkb3dJbmNsdXNpb25TZWxlY3Rvci5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L1NoYWRvd0luY2x1c2lvblNlbGVjdG9yLmgKaW5kZXggZjFhZGFlZTNmNTQzYTgxYzNmZWZiZmM0
NmUwMWIxZmQ3ZjNiMGU4Zi4uZDFhODcxNzQ0MWIxOWMyZDZhZmEwZThmMzQwNzU4NDEwMjE4YjRl
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0luY2x1c2lvblNlbGVjdG9y
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0luY2x1c2lvblNlbGVjdG9yLmgKQEAg
LTEzNyw3ICsxMzcsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRTZWxlY3QoKTsKICAgICBib29s
IGhhc0NhbmRpZGF0ZXMoKSBjb25zdCB7IHJldHVybiAhbV9jYW5kaWRhdGVzLmlzRW1wdHkoKTsg
fQogCi0KIHByaXZhdGU6CiAgICAgdm9pZCByZW1vdmVGcm9tU2V0KFNoYWRvd0luY2x1c2lvbkxp
c3QqKTsKICAgICB2b2lkIGFkZFRvU2V0KFNoYWRvd0luY2x1c2lvbkxpc3QqKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcAppbmRleCBmYWQ5YWY4MDQ0MTQ1NzBj
MWU3NmNhMjhjNWViNWIxNjI3YzcwMjIwLi41MWFhZGMwYzZmYzI2NGNkMWNmYmNiYmI3NzFlMjhi
YTQ5NmEwNGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuY3Bw
CkBAIC00MiwxMSArNDIsOSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgRGV0YWlsc0NvbnRl
bnRFbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCkKLSAgICAgICAgOiBTaGFkb3dDb250ZW50RWxl
bWVudChIVE1MTmFtZXM6OmRpdlRhZywgZG9jdW1lbnQpCisgICAgICAgIDogU2hhZG93Q29udGVu
dEVsZW1lbnQoSFRNTE5hbWVzOjpkaXZUYWcsIGRvY3VtZW50LCAiIikKICAgICB7CiAgICAgfQot
Ci0gICAgdmlydHVhbCBib29sIHNob3VsZEluY2x1ZGUoTm9kZSopOwogfTsKIAogUGFzc1JlZlB0
cjxEZXRhaWxzQ29udGVudEVsZW1lbnQ+IERldGFpbHNDb250ZW50RWxlbWVudDo6Y3JlYXRlKERv
Y3VtZW50KiBkb2N1bWVudCkKQEAgLTU0LDI0ICs1MiwxNSBAQCBQYXNzUmVmUHRyPERldGFpbHND
b250ZW50RWxlbWVudD4gRGV0YWlsc0NvbnRlbnRFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRv
Y3VtZQogICAgIHJldHVybiBhZG9wdFJlZihuZXcgRGV0YWlsc0NvbnRlbnRFbGVtZW50KGRvY3Vt
ZW50KSk7CiB9CiAKLWJvb2wgRGV0YWlsc0NvbnRlbnRFbGVtZW50OjpzaG91bGRJbmNsdWRlKE5v
ZGUqIG5vZGUpCi17Ci0gICAgSFRNTERldGFpbHNFbGVtZW50KiBkZXRhaWxzID0gc3RhdGljX2Nh
c3Q8SFRNTERldGFpbHNFbGVtZW50Kj4oc2hhZG93QW5jZXN0b3JOb2RlKCkpOwotICAgIHJldHVy
biBkZXRhaWxzLT5tYWluU3VtbWFyeSgpICE9IG5vZGU7Ci19Ci0KLQogY2xhc3MgRGV0YWlsc1N1
bW1hcnlFbGVtZW50IDogcHVibGljIFNoYWRvd0NvbnRlbnRFbGVtZW50IHsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxEZXRhaWxzU3VtbWFyeUVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVu
dCopOwogCiBwcml2YXRlOgogICAgIERldGFpbHNTdW1tYXJ5RWxlbWVudChEb2N1bWVudCogZG9j
dW1lbnQpCi0gICAgICAgIDogU2hhZG93Q29udGVudEVsZW1lbnQoSFRNTE5hbWVzOjpkaXZUYWcs
IGRvY3VtZW50KQorICAgICAgICA6IFNoYWRvd0NvbnRlbnRFbGVtZW50KEhUTUxOYW1lczo6ZGl2
VGFnLCBkb2N1bWVudCwgInN1bW1hcnk6Zmlyc3Qtb2YtdHlwZSIpCiAgICAgewogICAgIH0KLQot
ICAgIHZpcnR1YWwgYm9vbCBzaG91bGRJbmNsdWRlKE5vZGUqKTsKIH07CiAKIFBhc3NSZWZQdHI8
RGV0YWlsc1N1bW1hcnlFbGVtZW50PiBEZXRhaWxzU3VtbWFyeUVsZW1lbnQ6OmNyZWF0ZShEb2N1
bWVudCogZG9jdW1lbnQpCkBAIC03OSwxMyArNjgsNiBAQCBQYXNzUmVmUHRyPERldGFpbHNTdW1t
YXJ5RWxlbWVudD4gRGV0YWlsc1N1bW1hcnlFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3Vt
ZQogICAgIHJldHVybiBhZG9wdFJlZihuZXcgRGV0YWlsc1N1bW1hcnlFbGVtZW50KGRvY3VtZW50
KSk7CiB9CiAKLWJvb2wgRGV0YWlsc1N1bW1hcnlFbGVtZW50OjpzaG91bGRJbmNsdWRlKE5vZGUq
IG5vZGUpCi17Ci0gICAgSFRNTERldGFpbHNFbGVtZW50KiBkZXRhaWxzID0gc3RhdGljX2Nhc3Q8
SFRNTERldGFpbHNFbGVtZW50Kj4oc2hhZG93QW5jZXN0b3JOb2RlKCkpOwotICAgIHJldHVybiBk
ZXRhaWxzLT5tYWluU3VtbWFyeSgpID09IG5vZGU7Ci19Ci0KLQogUGFzc1JlZlB0cjxIVE1MRGV0
YWlsc0VsZW1lbnQ+IEhUTUxEZXRhaWxzRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKIHsKICAgICBSZWZQdHI8SFRNTERldGFp
bHNFbGVtZW50PiByZXN1bHQgPSBhZG9wdFJlZihuZXcgSFRNTERldGFpbHNFbGVtZW50KHRhZ05h
bWUsIGRvY3VtZW50KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggMTk1
ZjU3MGVmZjE4YTUzZmVkZWE3ZGVmYzBhNGZkNjg5ZDk4OTQzZS4uMTNhYWJiZDhmYmZjZDJmOWUw
Yzg4N2FlYTZhYjg5MGYzYjhhZjY5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNw
cApAQCAtMTI2LDE0ICsxMjYsMTcgQEAgYm9vbCBJbnRlcm5hbHM6OmlzUHJlbG9hZGVkKERvY3Vt
ZW50KiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiB1cmwpCiAgICAgcmV0dXJuIGRvY3VtZW50LT5j
YWNoZWRSZXNvdXJjZUxvYWRlcigpLT5pc1ByZWxvYWRlZCh1cmwpOwogfQogCi1QYXNzUmVmUHRy
PEVsZW1lbnQ+IEludGVybmFsczo6Y3JlYXRlU2hhZG93Q29udGVudEVsZW1lbnQoRG9jdW1lbnQq
IGRvY3VtZW50LCBFeGNlcHRpb25Db2RlJiBlYykKK1Bhc3NSZWZQdHI8RWxlbWVudD4gSW50ZXJu
YWxzOjpjcmVhdGVTaGFkb3dDb250ZW50RWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0
IFN0cmluZyYgc2VsZWN0LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAoIWRvY3VtZW50
KSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOwogICAgICAgICByZXR1cm4gMDsK
ICAgICB9CiAKLSAgICByZXR1cm4gU2hhZG93Q29udGVudEVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVu
dCk7CisgICAgUmVmUHRyPFNoYWRvd0NvbnRlbnRFbGVtZW50PiBlbGVtID0gU2hhZG93Q29udGVu
dEVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CisgICAgaWYgKGVsZW0pCisgICAgICAgIGVsZW0t
PnNldFNlbGVjdChzZWxlY3QpOworICAgIHJldHVybiBlbGVtLnJlbGVhc2UoKTsKIH0KIAogRWxl
bWVudCogSW50ZXJuYWxzOjpnZXRFbGVtZW50QnlJZEluU2hhZG93Um9vdChOb2RlKiBzaGFkb3dS
b290LCBjb25zdCBTdHJpbmcmIGlkLCBFeGNlcHRpb25Db2RlJiBlYykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5oCmluZGV4IGVhMDBkMTU4ZGI2Nzc5MDg5YjdmNTMzZjBmNGQ1MjYxM2ViNjEx
MzcuLjI1MWQ0YTAyY2U3NWFjYmVjZmRkY2VkZjUxMmQ4Yjk4OWMzODNjYWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuaApAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBy
ZW1vdmVTaGFkb3dSb290KEVsZW1lbnQqIGhvc3QsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBFbGVt
ZW50KiBpbmNsdWRlckZvcihOb2RlKiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFN0cmluZyBzaGFk
b3dQc2V1ZG9JZChFbGVtZW50KiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIFBhc3NSZWZQdHI8RWxl
bWVudD4gY3JlYXRlU2hhZG93Q29udGVudEVsZW1lbnQoRG9jdW1lbnQqLCBFeGNlcHRpb25Db2Rl
Jik7CisgICAgUGFzc1JlZlB0cjxFbGVtZW50PiBjcmVhdGVTaGFkb3dDb250ZW50RWxlbWVudChE
b2N1bWVudCosIGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBFbGVtZW50KiBn
ZXRFbGVtZW50QnlJZEluU2hhZG93Um9vdChOb2RlKiBzaGFkb3dSb290LCBjb25zdCBTdHJpbmcm
IGlkLCBFeGNlcHRpb25Db2RlJik7CiAKICNpZiBFTkFCTEUoSU5QVVRfQ09MT1IpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXggZDYyMjI2MDQzMGE3MTY5YzRjNmEzNTFlNjA2
MTkwNTBmNjkyYTIzMS4uMzEwZDMwYzZmMDljODEyNzdlY2U0YjIwOTI4ZmE3NjkyOTVjY2Q2ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApAQCAtMzUsNyArMzUsNyBAQCBtb2R1
bGUgd2luZG93IHsKICAgICAgICAgRWxlbWVudCBpbmNsdWRlckZvcihpbiBOb2RlIG5vZGUpIHJh
aXNlcyAoRE9NRXhjZXB0aW9uKTsKICAgICAgICAgdm9pZCByZW1vdmVTaGFkb3dSb290KGluIEVs
ZW1lbnQgaG9zdCkgcmFpc2VzIChET01FeGNlcHRpb24pOwogICAgICAgICBET01TdHJpbmcgc2hh
ZG93UHNldWRvSWQoaW4gRWxlbWVudCBlbGVtZW50KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7Ci0g
ICAgICAgIEVsZW1lbnQgY3JlYXRlU2hhZG93Q29udGVudEVsZW1lbnQoaW4gRG9jdW1lbnQgZG9j
dW1lbnQpIHJhaXNlcyhET01FeGNlcHRpb24pOworICAgICAgICBFbGVtZW50IGNyZWF0ZVNoYWRv
d0NvbnRlbnRFbGVtZW50KGluIERvY3VtZW50IGRvY3VtZW50LCBpbiBbT3B0aW9uYWw9Q2FsbFdp
dGhOdWxsVmFsdWVdIERPTVN0cmluZyBzZWxlY3QpIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAg
ICAgICBFbGVtZW50IGdldEVsZW1lbnRCeUlkSW5TaGFkb3dSb290KGluIE5vZGUgc2hhZG93Um9v
dCwgaW4gRE9NU3RyaW5nIGlkKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKIAogI2lmIGRlZmluZWQo
RU5BQkxFX0lOUFVUX0NPTE9SKSAmJiBFTkFCTEVfSU5QVVRfQ09MT1IKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1OGJmNWE3
OTA3OTU3ZWE0MzgzZDg0YTM2YzRkZWI1YTU1NTdlM2JlLi5hZGRkNmM2MTc5NDRlYzg3YmEwMmY3
YWViZDUwZTI2MGU0NGMxZDQ4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMTItMjggIFNo
aW55YSBLYXdhbmFrYSAgPHNoaW55YWtAZ29vZ2xlLmNvbT4KKworICAgICAgICBTaGFkb3dDb250
ZW50RWxlbWVudCBzaG91bGQgYmUgYWJsZSB0byB1c2UgcXVlcnkuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NTMwMgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzIGZvciBTaGFkb3dDb250ZW50RWxl
bWVudCBxdWVyeS4KKworICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctY29udGVudHMt
c2VsZWN0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L3No
YWRvdy1jb250ZW50cy1zZWxlY3QuaHRtbDogQWRkZWQuCisKIDIwMTEtMTItMjcgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRkIHBhc3MvY3Jhc2ggZXhwZWN0
YXRpb24gZm9yIHN2Zy9XM0MtU1ZHLTEuMS9hbmltYXRlLWVsZW0tNTItdC5zdmcKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctY29udGVudHMtc2VsZWN0LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctY29udGVudHMt
c2VsZWN0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MjIwMTU5OWU0OGJkYjdiNGE2N2Q2OTE0
ZWNlY2U2ZTVhNjI1ZDQ3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
c2hhZG93L3NoYWRvdy1jb250ZW50cy1zZWxlY3QtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQg
QEAKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MK
K1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9k
b20vc2hhZG93L3NoYWRvdy1jb250ZW50cy1zZWxlY3QuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL3NoYWRvdy9zaGFkb3ctY29udGVudHMtc2VsZWN0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWM2NmEw
MThjM2RlODk4Nzg3ZWQ4NTc0MzM4NDg2ZDA0OGU1MGY5NAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctY29udGVudHMtc2VsZWN0Lmh0bWwKQEAg
LTAsMCArMSwyNDggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4K
Ky8qIHJlbGF0aXZlIHBvc2l0aW9uaW5nIGVuc3VyZXMgdW5kZXJseWluZyBSZW5kZXJMYXllciAq
LworLmNvbnRhaW5lciB7CisgICAgcG9zaXRpb246IHJlbGF0aXZlOworfQorPC9zdHlsZT4KKzxz
Y3JpcHQ+CitmdW5jdGlvbiBsb2cobWVzc2FnZSkKK3sKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiY29uc29sZSIpLmlubmVySFRNTCArPSAobWVzc2FnZSArICJcbiIpOworfQorCitmdW5j
dGlvbiByZW1vdmVBbGxDaGlsZHJlbihlbGVtKSB7CisgICAgd2hpbGUgKGVsZW0uZmlyc3RDaGls
ZCkKKyAgICAgICAgZWxlbS5yZW1vdmVDaGlsZChlbGVtLmZpcnN0Q2hpbGQpOworfQorCitmdW5j
dGlvbiBjbGVhblVwKCkgeworICAgIHJlbW92ZUFsbENoaWxkcmVuKGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykpOworICAgIHJlbW92ZUFsbENoaWxkcmVuKGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVyJykpOworfQorCitmdW5jdGlvbiBy
ZW1vdmVDb250YWluZXJMaW5lcyh0ZXh0KQoreworICAgIHZhciBsaW5lcyA9IHRleHQuc3BsaXQo
IlxuIik7CisgICAgbGluZXMuc3BsaWNlKDAsIDIpOworICAgIHJldHVybiBsaW5lcy5qb2luKCJc
biIpOworfQorCitmdW5jdGlvbiBjaGVjaygpIHsKKyAgICB2YXIgcmVmQ29udGFpbmVyUmVuZGVy
VHJlZSA9IGludGVybmFscy5lbGVtZW50UmVuZGVyVHJlZUFzVGV4dChkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpKTsKKyAgICB2YXIgcmVmUmVuZGVyVHJlZSA9IHJl
bW92ZUNvbnRhaW5lckxpbmVzKHJlZkNvbnRhaW5lclJlbmRlclRyZWUpOworCisgICAgdmFyIHRh
cmdldENvbnRhaW5lclJlbmRlclRyZWUgPSBpbnRlcm5hbHMuZWxlbWVudFJlbmRlclRyZWVBc1Rl
eHQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKSk7CisgICAgdmFy
IHRhcmdldFJlbmRlclRyZWUgPSByZW1vdmVDb250YWluZXJMaW5lcyh0YXJnZXRDb250YWluZXJS
ZW5kZXJUcmVlKTsKKworICAgIGlmICh0YXJnZXRSZW5kZXJUcmVlID09IHJlZlJlbmRlclRyZWUp
CisgICAgICAgIGxvZygiUEFTUyIpOworICAgIGVsc2UgeworICAgICAgICBsb2coIkZBSUwiKTsK
KyAgICAgICAgbG9nKCJFeHBlY3RlZDoiKTsKKyAgICAgICAgbG9nKHJlZlJlbmRlclRyZWUpOwor
ICAgICAgICBsb2coIkFjdHVhbDoiKTsKKyAgICAgICAgbG9nKHRhcmdldFJlbmRlclRyZWUpOwor
ICAgIH0KK30KKworZnVuY3Rpb24gYXBwZW5kU2hhZG93KHRhcmdldCwgc2VsZWN0KSB7CisgICAg
dmFyIHJvb3QgPSBpbnRlcm5hbHMuZW5zdXJlU2hhZG93Um9vdCh0YXJnZXQpOworCisgICAgdmFy
IGNoaWxkMCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKKyAgICBjaGlsZDAuaW5u
ZXJIVE1MID0gIkhlbGxvLCI7CisgICAgcm9vdC5hcHBlbmRDaGlsZChjaGlsZDApOworCisgICAg
dmFyIGNvbnRlbnQgPSBpbnRlcm5hbHMuY3JlYXRlU2hhZG93Q29udGVudEVsZW1lbnQoZG9jdW1l
bnQsIHNlbGVjdCk7CisgICAgcm9vdC5hcHBlbmRDaGlsZChjb250ZW50KTsKKworICAgIHZhciBj
aGlsZDEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CisgICAgY2hpbGQxLmlubmVy
SFRNTCA9ICJXb3JsZC4iOworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY2hpbGQxKTsKK30KKworZnVu
Y3Rpb24gdGVzdFNlbGVjdElzTnVsbCgpIHsKKyAgICB2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnZGl2Jyk7CisgICAgdGFyZ2V0LmlubmVySFRNTCA9ICI8c3Bhbj5jb250ZW50
PC9zcGFuPiI7CisKKyAgICBhcHBlbmRTaGFkb3codGFyZ2V0LCAiIik7CisKKyAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFwcGVuZENoaWxkKHRhcmdldCk7
CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5pbm5lckhU
TUwgPQorICAgICAgICAiPGRpdj48c3Bhbj5IZWxsbyw8L3NwYW4+PHNwYW4+Y29udGVudDwvc3Bh
bj48c3Bhbj5Xb3JsZC48L3NwYW4+PC9kaXY+IjsKK30KKworZnVuY3Rpb24gdGVzdFNlbGVjdElz
SWQoKSB7CisgICAgdmFyIHRhcmdldCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwor
ICAgIHRhcmdldC5pbm5lckhUTUwgPSAiPHNwYW4gaWQ9J2Zvbyc+Y29udGVudDwvc3Bhbj48c3Bh
biBpZD0nYXp1bnlhbic+cGVyb3Blcm88L3NwYW4+IjsKKworICAgIGFwcGVuZFNoYWRvdyh0YXJn
ZXQsICIjZm9vIik7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNvbnRh
aW5lcicpLmFwcGVuZENoaWxkKHRhcmdldCk7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2V4cGVjdC1jb250YWluZXInKS5pbm5lckhUTUwgPQorICAgICAgICAiPGRpdj48c3Bhbj5IZWxs
byw8L3NwYW4+PHNwYW4+Y29udGVudDwvc3Bhbj48c3Bhbj5Xb3JsZC48L3NwYW4+PC9kaXY+IjsK
K30KKworZnVuY3Rpb24gdGVzdFNlbGVjdElzSWRCdXROb3RNYXRjaGVkKCkgeworICAgIHZhciB0
YXJnZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICB0YXJnZXQuaW5uZXJI
VE1MID0gIjxzcGFuIGlkPSdmb28nPmNvbnRlbnQ8L3NwYW4+PHNwYW4gaWQ9J2F6dW55YW4nPnBl
cm9wZXJvPC9zcGFuPiI7CisKKyAgICBhcHBlbmRTaGFkb3codGFyZ2V0LCAiI2Zvb2JhciIpOwor
CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRD
aGlsZCh0YXJnZXQpOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFp
bmVyJykuaW5uZXJIVE1MID0KKyAgICAgICAgIjxkaXY+PHNwYW4+SGVsbG8sPC9zcGFuPjxzcGFu
PldvcmxkLjwvc3Bhbj48L2Rpdj4iOworfQorCitmdW5jdGlvbiB0ZXN0U2VsZWN0SXNJZEJ1dE5v
dENoaWxkKCkgeworICAgIHZhciB0YXJnZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYn
KTsKKyAgICB0YXJnZXQuaW5uZXJIVE1MID0gIjxzcGFuPjxzcGFuIGlkPSdmb28nPmNvbnRlbnQ8
L3NwYW4+PHNwYW4gaWQ9J2F6dW55YW4nPnBlcm9wZXJvPC9zcGFuPjwvc3Bhbj4iOworCisgICAg
YXBwZW5kU2hhZG93KHRhcmdldCwgIiNmb28iKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBwZW5kQ2hpbGQodGFyZ2V0KTsKKyAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlubmVySFRNTCA9CisgICAgICAg
ICI8ZGl2PjxzcGFuPkhlbGxvLDwvc3Bhbj48c3Bhbj5Xb3JsZC48L3NwYW4+PC9kaXY+IjsKK30K
KworZnVuY3Rpb24gdGVzdFNlbGVjdElzTXVsdGlJZCgpIHsKKyAgICB2YXIgdGFyZ2V0ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgdGFyZ2V0LmlubmVySFRNTCA9ICI8c3Bh
biBpZD0nZm9vJz5jb250ZW50PC9zcGFuPjxzcGFuIGlkPSdhenVueWFuJz5wZXJvcGVybzwvc3Bh
bj48c3BhbiBpZD0nZm9vJz5jb250ZW50PC9zcGFuPiI7CisKKyAgICBhcHBlbmRTaGFkb3codGFy
Z2V0LCAiI2ZvbyIpOworCisgICAgLy8gQWxsIG1hdGNoZWQgZWxlbWVudHMgd2lsbCBiZSBzZWxl
Y3RlZC4KKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFw
cGVuZENoaWxkKHRhcmdldCk7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1j
b250YWluZXInKS5pbm5lckhUTUwgPQorICAgICAgICAiPGRpdj48c3Bhbj5IZWxsbyw8L3NwYW4+
PHNwYW4+Y29udGVudDwvc3Bhbj48c3Bhbj5jb250ZW50PC9zcGFuPjxzcGFuPldvcmxkLjwvc3Bh
bj48L2Rpdj4iOworfQorCitmdW5jdGlvbiB0ZXN0U2VsZWN0SXNUeXBlKCkgeworICAgIHZhciB0
YXJnZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICB0YXJnZXQuaW5uZXJI
VE1MID0gIjxkaXY+YXp1bnlhbjwvZGl2PjxzcGFuPmNvbnRlbnQ8L3NwYW4+PGRpdj5wZXJvcGVy
bzwvZGl2PiI7CisKKyAgICBhcHBlbmRTaGFkb3codGFyZ2V0LCAic3BhbiIpOworCisgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRDaGlsZCh0YXJn
ZXQpOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVyJykuaW5u
ZXJIVE1MID0KKyAgICAgICAgIjxkaXY+PHNwYW4+SGVsbG8sPC9zcGFuPjxzcGFuPmNvbnRlbnQ8
L3NwYW4+PHNwYW4+V29ybGQuPC9zcGFuPjwvZGl2PiI7Cit9CisKK2Z1bmN0aW9uIHRlc3RTZWxl
Y3RJc1R5cGVXaXRoQXR0cmlidXRlKCkgeworICAgIHZhciB0YXJnZXQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdkaXYnKTsKKyAgICB0YXJnZXQuaW5uZXJIVE1MID0gIjxzcGFuPmF6dW55YW48
L3NwYW4+PHNwYW4gdGl0bGU9J2NvbnRlbnQnPmNvbnRlbnQ8L3NwYW4+PHNwYW4+cGVyb3Blcm88
L3NwYW4+IjsKKworICAgIGFwcGVuZFNoYWRvdyh0YXJnZXQsICJzcGFuW3RpdGxlPSdjb250ZW50
J10iKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJyku
YXBwZW5kQ2hpbGQodGFyZ2V0KTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0
LWNvbnRhaW5lcicpLmlubmVySFRNTCA9CisgICAgICAgICI8ZGl2PjxzcGFuPkhlbGxvLDwvc3Bh
bj48c3Bhbj5jb250ZW50PC9zcGFuPjxzcGFuPldvcmxkLjwvc3Bhbj48L2Rpdj4iOworfQorCitm
dW5jdGlvbiB0ZXN0U2VsZWN0SXNUeXBlV2l0aEZpcnN0T2ZUeXBlKCkgeworICAgIHZhciB0YXJn
ZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICB0YXJnZXQuaW5uZXJIVE1M
ID0gIjxkaXY+YXp1bnlhbjwvZGl2PjxzcGFuPmNvbnRlbnQ8L3NwYW4+PHNwYW4+cGVyb3Blcm88
L3NwYW4+IjsKKworICAgIGFwcGVuZFNoYWRvdyh0YXJnZXQsICJzcGFuOmZpcnN0LW9mLXR5cGUi
KTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBw
ZW5kQ2hpbGQodGFyZ2V0KTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNv
bnRhaW5lcicpLmlubmVySFRNTCA9CisgICAgICAgICI8ZGl2PjxzcGFuPkhlbGxvLDwvc3Bhbj48
c3Bhbj5jb250ZW50PC9zcGFuPjxzcGFuPldvcmxkLjwvc3Bhbj48L2Rpdj4iOworfQorCitmdW5j
dGlvbiB0ZXN0U2VsZWN0SXNUeXBlV2l0aEZpcnN0T2ZUeXBlMigpIHsKKyAgICB2YXIgdGFyZ2V0
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgdGFyZ2V0LmlubmVySFRNTCA9
ICI8ZGl2PjxzcGFuPmF6dW55YW48L3NwYW4+PC9kaXY+PHNwYW4+Y29udGVudDwvc3Bhbj48c3Bh
bj5wZXJvcGVybzwvc3Bhbj4iOworCisgICAgYXBwZW5kU2hhZG93KHRhcmdldCwgInNwYW46Zmly
c3Qtb2YtdHlwZSIpOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250
YWluZXInKS5hcHBlbmRDaGlsZCh0YXJnZXQpOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdleHBlY3QtY29udGFpbmVyJykuaW5uZXJIVE1MID0KKyAgICAgICAgIjxkaXY+PHNwYW4+SGVs
bG8sPC9zcGFuPjxzcGFuPmNvbnRlbnQ8L3NwYW4+PHNwYW4+V29ybGQuPC9zcGFuPjwvZGl2PiI7
Cit9CisKK2Z1bmN0aW9uIHRlc3RTZWxlY3RJc1R5cGVXaXRoTGFzdE9mVHlwZSgpIHsKKyAgICB2
YXIgdGFyZ2V0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgdGFyZ2V0Lmlu
bmVySFRNTCA9ICI8c3Bhbj5henVueWFuPC9zcGFuPjxzcGFuPmNvbnRlbnQ8L3NwYW4+PGRpdj5w
ZXJvcGVybzwvZGl2PiI7CisKKyAgICBhcHBlbmRTaGFkb3codGFyZ2V0LCAic3BhbjpsYXN0LW9m
LXR5cGUiKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVy
JykuYXBwZW5kQ2hpbGQodGFyZ2V0KTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhw
ZWN0LWNvbnRhaW5lcicpLmlubmVySFRNTCA9CisgICAgICAgICI8ZGl2PjxzcGFuPkhlbGxvLDwv
c3Bhbj48c3Bhbj5jb250ZW50PC9zcGFuPjxzcGFuPldvcmxkLjwvc3Bhbj48L2Rpdj4iOworfQor
CitmdW5jdGlvbiB0ZXN0U2VsZWN0SXNEZXRhaWxzKCkgeworICAgIHZhciB0YXJnZXQgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICB0YXJnZXQuaW5uZXJIVE1MID0gIjxkZXRh
aWxzPmNvbnRlbnQ8L2RldGFpbHM+IjsKKworICAgIGFwcGVuZFNoYWRvdyh0YXJnZXQsICJkZXRh
aWxzIik7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5lcicp
LmFwcGVuZENoaWxkKHRhcmdldCk7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVj
dC1jb250YWluZXInKS5pbm5lckhUTUwgPQorICAgICAgICAiPGRpdj48c3Bhbj5IZWxsbyw8L3Nw
YW4+PGRldGFpbHM+Y29udGVudDwvZGV0YWlscz48c3Bhbj5Xb3JsZC48L3NwYW4+PC9kaXY+IjsK
K30KKworZnVuY3Rpb24gdGVzdFNlbGVjdElzRGV0YWlsczIoKSB7CisgICAgdmFyIHRhcmdldCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHRhcmdldC5pbm5lckhUTUwgPSAi
PGRldGFpbHM+PHN1bW1hcnk+Y29udGVudDwvc3VtbWFyeT48L2RldGFpbHM+IjsKKworICAgIGFw
cGVuZFNoYWRvdyh0YXJnZXQsICJkZXRhaWxzIik7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFwcGVuZENoaWxkKHRhcmdldCk7CisgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5pbm5lckhUTUwgPQorICAgICAg
ICAiPGRpdj48c3Bhbj5IZWxsbyw8L3NwYW4+PGRldGFpbHM+PHN1bW1hcnk+Y29udGVudDwvc3Vt
bWFyeT48L2RldGFpbHM+PHNwYW4+V29ybGQuPC9zcGFuPjwvZGl2PiI7Cit9CisKK2Z1bmN0aW9u
IHRlc3RTZWxlY3RXaGVuRHluYW1pY2FsbHlDaGlsZHJlbkNoYW5nZWQoKSB7CisgICAgdmFyIHRh
cmdldCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHRhcmdldC5pbm5lckhU
TUwgPSAiPHNwYW4+Y29udGVudDwvc3Bhbj48c3BhbiBpZD0ndG9iZXJlbW92ZWQnPmFudW55YW4g
cGVyb3Blcm88L3NwYW4+IjsKKworICAgIGFwcGVuZFNoYWRvdyh0YXJnZXQsICJzcGFuIik7CisK
KyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFwcGVuZENo
aWxkKHRhcmdldCk7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWlu
ZXInKS5pbm5lckhUTUwgPQorICAgICAgICAiPGRpdj48c3Bhbj5IZWxsbyw8L3NwYW4+PHNwYW4+
Y29udGVudDwvc3Bhbj48c3Bhbj5Xb3JsZC48L3NwYW4+PC9kaXY+IjsKKworICAgIHZhciBlbGVt
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RvYmVyZW1vdmVkJyk7CisgICAgZWxlbS5wYXJl
bnROb2RlLnJlbW92ZUNoaWxkKGVsZW0pOworfQorCit2YXIgdGVzdEZ1bmNzID0gWworICAgIHRl
c3RTZWxlY3RJc051bGwsCisgICAgdGVzdFNlbGVjdElzSWQsCisgICAgdGVzdFNlbGVjdElzSWRC
dXROb3RNYXRjaGVkLAorICAgIHRlc3RTZWxlY3RJc0lkQnV0Tm90Q2hpbGQsCisgICAgdGVzdFNl
bGVjdElzTXVsdGlJZCwKKyAgICB0ZXN0U2VsZWN0SXNUeXBlLAorICAgIHRlc3RTZWxlY3RJc1R5
cGVXaXRoQXR0cmlidXRlLAorICAgIHRlc3RTZWxlY3RJc1R5cGVXaXRoRmlyc3RPZlR5cGUsCisg
ICAgdGVzdFNlbGVjdElzVHlwZVdpdGhGaXJzdE9mVHlwZTIsCisgICAgdGVzdFNlbGVjdElzVHlw
ZVdpdGhMYXN0T2ZUeXBlLAorICAgIHRlc3RTZWxlY3RJc0RldGFpbHMsCisgICAgdGVzdFNlbGVj
dElzRGV0YWlsczIsCisgICAgdGVzdFNlbGVjdFdoZW5EeW5hbWljYWxseUNoaWxkcmVuQ2hhbmdl
ZCwKK10KKworZnVuY3Rpb24gZG9UZXN0KCkgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKKyAgICBjbGVhblVwKCk7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRl
c3RGdW5jcy5sZW5ndGg7ICsraSkgeworICAgICAgIHRlc3RGdW5jc1tpXSgpOworICAgICAgIGNo
ZWNrKCk7CisgICAgICAgY2xlYW5VcCgpOworICAgIH0KK30KKzwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHkgb25sb2FkPSJkb1Rlc3QoKSI+CisKKzxkaXYgaWQ9ImFjdHVhbC1jb250YWluZXIiIGNs
YXNzPSJjb250YWluZXIiPjwvZGl2PgorPGRpdiBpZD0iZXhwZWN0LWNvbnRhaW5lciIgY2xhc3M9
ImNvbnRhaW5lciI+PC9kaXY+Cis8cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KKworPC9ib2R5Pgor
PC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121223</attachid>
            <date>2012-01-04 23:40:22 -0800</date>
            <delta_ts>2012-01-05 00:21:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-75302-20120105164020.patch</filename>
            <type>text/plain</type>
            <size>36208</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA0MTA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjNkZmJkYmEyYzI3ZjM0
MWIyMzliMWNkMzVkOTNmYWYzMTljYTBkZS4uOThkNTM3NDk5MzVhYjcyN2VlMzhkOWMxYTRlMjlj
ZTkwMzI4ZjEwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEyLTAxLTA0ICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGdvb2dsZS5jb20+CisKKyAgICAgICAgU2hhZG93Q29udGVu
dEVsZW1lbnQgc2hvdWxkIGJlIGFibGUgdG8gdXNlIHF1ZXJ5LgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzUzMDIKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgYSBzZWxl
Y3RvciB0byBxdWVyeSBlbGVtZW50cyBpbiBTaGFkb3dDb250ZW50RWxlbWVudC4KKyAgICAgICAg
VGhpcyBjYW4gYmUgdXNlZCBpbnN0ZWFkIG9mIFNoYWRvd0NvbnRlbnRFbGVtZW50OjpzaG91bGRJ
bmNsdWRlIGluIG1vcmUgc29waGlzdGljYXRlZCB3YXlzLgorCisgICAgICAgIFRlc3Q6IGZhc3Qv
ZG9tL3NoYWRvdy9zaGFkb3ctY29udGVudHMtc2VsZWN0Lmh0bWwKKworICAgICAgICAqIENNYWtl
TGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogV2Vi
Q29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkb20v
U2hhZG93Q29udGVudEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Q29udGVu
dEVsZW1lbnQ6OlNoYWRvd0NvbnRlbnRFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRv
d0NvbnRlbnRFbGVtZW50OjptYXRjaGVzUXVlcnkpOgorICAgICAgICAgIFJldHVybnMgdHJ1ZSBp
ZiBOb2RlIGlzIG1hdGNoZWQgYnkgdGhlIHF1ZXJ5LgorICAgICAgICAqIGRvbS9TaGFkb3dDb250
ZW50RWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Q29udGVudEVsZW1lbnQ6OnNl
bGVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dDb250ZW50RWxlbWVudDo6c2V0U2VsZWN0
KToKKyAgICAgICAgKiBkb20vU2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnkuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5OjpTaGFkb3dDb250
ZW50U2VsZWN0b3JRdWVyeSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dDb250ZW50U2VsZWN0
b3JRdWVyeTo6bWF0Y2hlcyk6CisgICAgICAgICogZG9tL1NoYWRvd0NvbnRlbnRTZWxlY3RvclF1
ZXJ5Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dDb250ZW50RWxlbWVu
dC5oLgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnk6OlNlbGVj
dG9yRGF0YTo6U2VsZWN0b3JEYXRhKToKKyAgICAgICAgKiBkb20vU2hhZG93SW5jbHVzaW9uU2Vs
ZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93SW5jbHVzaW9uU2VsZWN0b3I6OnNl
bGVjdCk6CisgICAgICAgICogZG9tL1NoYWRvd0luY2x1c2lvblNlbGVjdG9yLmg6CisgICAgICAg
ICogaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGV0YWls
c0NvbnRlbnRFbGVtZW50OjpEZXRhaWxzQ29udGVudEVsZW1lbnQpOiBSZS1pbXBsZW1lbnRlZCB1
c2luZyBxdWVyeS4KKyAgICAgICAgKFdlYkNvcmU6OkRldGFpbHNTdW1tYXJ5RWxlbWVudDo6RGV0
YWlsc1N1bW1hcnlFbGVtZW50KTogZGl0dG8uCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpjcmVhdGVTaGFkb3dDb250ZW50RWxl
bWVudCk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5n
L0ludGVybmFscy5pZGw6CisKIDIwMTItMDEtMDQgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIFJlbW92ZSBjaHJvbWl1bSBjb21wb3Np
dG9yIHN1cHBvcnQgZm9yIHVudXNlZCB6b29tQW5pbWF0b3JUcmFuc2Zvcm0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKaW5kZXggNjg4ZTBmMTQxM2Q5OWI4NDhkMzRmNTgwODI2MDQwYzUzZWMwN2NlNy4uYTgw
MjFiMTgzZDk2NjAyYWNhYjM0NjVmODhhOTE2ZDJkYjk0ZDY1YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQKQEAgLTU5NCw2ICs1OTQsNyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgZG9tL1NlY3Vy
aXR5Q29udGV4dC5jcHAKICAgICBkb20vU2VsZWN0b3JRdWVyeS5jcHAKICAgICBkb20vU2hhZG93
Q29udGVudEVsZW1lbnQuY3BwCisgICAgZG9tL1NoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmNw
cAogICAgIGRvbS9TaGFkb3dJbmNsdXNpb25TZWxlY3Rvci5jcHAKICAgICBkb20vU2hhZG93Um9v
dC5jcHAKICAgICBkb20vU3BhY2VTcGxpdFN0cmluZy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtCmluZGV4IGVhZDZkYWRkM2ZkMGZiMjViODMwMjQ5NTI0N2I3N2E5NTljN2ZjZDMuLjlk
ODM3ZjU2NTc5MjdjMGQ1NzlhYjVkNmIyMjg0NWMzY2Q4YWVhZmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQpAQCAtMTY0NSw2ICsxNjQ1LDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwK
IAlTb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0b3JRdWVyeS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9k
b20vU2hhZG93Q29udGVudEVsZW1lbnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93
Q29udGVudEVsZW1lbnQuaCBcCisJU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0NvbnRlbnRTZWxl
Y3RvclF1ZXJ5LmNwcCBcCisJU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0NvbnRlbnRTZWxlY3Rv
clF1ZXJ5LmggXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dJbmNsdXNpb25TZWxlY3Rvci5j
cHAgXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dJbmNsdXNpb25TZWxlY3Rvci5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDgz
MDVmY2VkOGVhZjYzMDlmN2U2YmM5YmY3NjFiMDIxYWMwNDQ4ODUuLmJkNzViNDk4MTA3MmZhODI0
ZmRkMDU4ZWYzYWZhM2QxN2FmMzlkZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTEwNDcsNiArMTA0
Nyw3IEBACiAgICAgICAgICAgICAnZG9tL1NjcmlwdFJ1bm5lci5oJywKICAgICAgICAgICAgICdk
b20vU2hhZG93Um9vdC5oJywKICAgICAgICAgICAgICdkb20vU2hhZG93Q29udGVudEVsZW1lbnQu
aCcsCisgICAgICAgICAgICAnZG9tL1NoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmgnLAogICAg
ICAgICAgICAgJ2RvbS9TcGFjZVNwbGl0U3RyaW5nLmgnLAogICAgICAgICAgICAgJ2RvbS9TdHls
ZWRFbGVtZW50LmgnLAogICAgICAgICAgICAgJ2RvbS9UZXh0LmgnLApAQCAtNTQyNCw2ICs1NDI1
LDggQEAKICAgICAgICAgICAgICdkb20vU2VsZWN0b3JRdWVyeS5oJywKICAgICAgICAgICAgICdk
b20vU2hhZG93Q29udGVudEVsZW1lbnQuY3BwJywKICAgICAgICAgICAgICdkb20vU2hhZG93Q29u
dGVudEVsZW1lbnQuaCcsCisgICAgICAgICAgICAnZG9tL1NoYWRvd0NvbnRlbnRTZWxlY3RvclF1
ZXJ5LmNwcCcsCisgICAgICAgICAgICAnZG9tL1NoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5Lmgn
LAogICAgICAgICAgICAgJ2RvbS9TaGFkb3dJbmNsdXNpb25TZWxlY3Rvci5jcHAnLAogICAgICAg
ICAgICAgJ2RvbS9TaGFkb3dJbmNsdXNpb25TZWxlY3Rvci5oJywKICAgICAgICAgICAgICdkb20v
U2hhZG93Um9vdC5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvagppbmRleCBkMGNmMzk1ZTkzYmZkODdiMWZjYWJhYWI3OGRmNmZiZTU5YjljYmJjLi4x
ODA3YmI0NmNiYWYxMmM0N2QyNDZlZGNhYzYzYTJmNTg4ZGY1YTY0IDEwMDc1NQotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNTEwOTQsNiArNTEwOTQsNjIg
QEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9t
XFNoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmNwcCIKKwkJCQk+CisJCQkJPEZpbGVDb25maWd1
cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0i
dHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIK
KwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlv
bgorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1
ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJ
CQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgor
CQkJCQlOYW1lPSJEZWJ1Z19DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1
aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJU
b29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1
cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQlFeGNs
dWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkND
TENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxG
aWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z19BbGx8V2luMzIiCisJCQkJCUV4Y2x1
ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NM
Q29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZp
bGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlByb2R1Y3Rpb258V2luMzIiCisJCQkJCUV4Y2x1
ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NM
Q29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQk8L0Zp
bGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXFNoYWRvd0NvbnRlbnRTZWxl
Y3RvclF1ZXJ5LmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXGRvbVxTaGFkb3dJbmNsdXNpb25TZWxlY3Rvci5jcHAiCiAJCQkJPgogCQkJCTxGaWxl
Q29uZmlndXJhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IDdmOGJmYzdhZTgyMjczMWFlM2E3YzRkZDQ0NjE3NmI5MmU4NmUz
YTUuLmFlOWU2NGU1NTVhODA5YjMzMDRiMDQ5NDM0OTI1ZTczZTBiYzM2N2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE1NjAs
NiArMTU2MCw4IEBACiAJCTUzQzgyOThFMTNEOEQ5MjcwMERFMkRFQiAvKiBSZW5kZXJGbGV4aWJs
ZUJveC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTND
ODI5OEMxM0Q4RDkyNzAwREUyREVCIC8qIFJlbmRlckZsZXhpYmxlQm94LmggKi87IH07CiAJCTU1
MEEwQkM5MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1MEEwQkM3MDg1RjYwMzkwMDczNTNE
NiAvKiBRdWFsaWZpZWROYW1lLmNwcCAqLzsgfTsKIAkJNTUwQTBCQ0EwODVGNjAzOTAwNzM1M0Q2
IC8qIFF1YWxpZmllZE5hbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDU1MEEwQkM4MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTcwREJBODEx
NEI1ODA0OTAwREFFRkEwIC8qIFNoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MERCN0E4MTRCNTY5NkEw
MERBRUZBMCAvKiBTaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeS5jcHAgKi87IH07CisJCTU3MERC
QTgyMTRCNTgwNEIwMERBRUZBMCAvKiBTaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcwREI3QTkxNEI1Njk2
QTAwREFFRkEwIC8qIFNoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmggKi87IH07CiAJCTU5MDVB
REJGMTMwMkYzQ0UwMEYxMTZERiAvKiBYTUxUcmVlVmlld2VyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU5MDVBREJEMTMwMkYzQ0UwMEYxMTZERiAv
KiBYTUxUcmVlVmlld2VyLmNwcCAqLzsgfTsKIAkJNTkwNUFEQzAxMzAyRjNDRTAwRjExNkRGIC8q
IFhNTFRyZWVWaWV3ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDU5MDVBREJFMTMwMkYzQ0UwMEYxMTZERiAvKiBYTUxUcmVlVmlld2VyLmggKi87IH07
CiAJCTU5MEUxQjQ5MTFFNEVGNEIwMDY5Rjc4NCAvKiBEZXZpY2VPcmllbnRhdGlvbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTkwRTFCNDgxMUU0RUY0
QjAwNjlGNzg0IC8qIERldmljZU9yaWVudGF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTg4MzcsNiArODgzOSw4IEBACiAJCTUzQzgyOThD
MTNEOEQ5MjcwMERFMkRFQiAvKiBSZW5kZXJGbGV4aWJsZUJveC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSZW5kZXJGbGV4aWJsZUJveC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1NTBBMEJDNzA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdp
ZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBR
dWFsaWZpZWROYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1
c2VzVGFicyA9IDA7IH07CiAJCTU1MEEwQkM4MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWRO
YW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGlu
ZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFF1YWxpZmllZE5hbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1
c2VzVGFicyA9IDA7IH07CisJCTU3MERCN0E4MTRCNTY5NkEwMERBRUZBMCAvKiBTaGFkb3dDb250
ZW50U2VsZWN0b3JRdWVyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTU3MERCN0E5MTRCNTY5NkEwMERBRUZBMCAvKiBTaGFkb3dDb250ZW50U2VsZWN0b3JR
dWVyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFkb3dDb250ZW50U2Vs
ZWN0b3JRdWVyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1OTA1QURCRDEzMDJG
M0NFMDBGMTE2REYgLyogWE1MVHJlZVZpZXdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBYTUxUcmVlVmlld2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTkwNUFEQkUxMzAyRjNDRTAwRjExNkRGIC8qIFhNTFRyZWVWaWV3ZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWE1MVHJlZVZpZXdlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1OTBFMUI0ODExRTRFRjRCMDA2OUY3ODQgLyogRGV2aWNlT3JpZW50
YXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGV2aWNlT3JpZW50YXRp
b24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxNTA2LDYgKzIxNTEwLDggQEAK
IAkJCQlFNDUzMjJBQTE0MENFMjY3MDA1QTBGOTIgLyogU2VsZWN0b3JRdWVyeS5oICovLAogCQkJ
CUE3NjZDRjhCMTM4MTBFMEMwMDExQTBCMyAvKiBTaGFkb3dDb250ZW50RWxlbWVudC5jcHAgKi8s
CiAJCQkJQTc0QzJEM0IxMzgxMUUwRDAwRjgzNTcyIC8qIFNoYWRvd0NvbnRlbnRFbGVtZW50Lmgg
Ki8sCisJCQkJNTcwREI3QTgxNEI1Njk2QTAwREFFRkEwIC8qIFNoYWRvd0NvbnRlbnRTZWxlY3Rv
clF1ZXJ5LmNwcCAqLywKKwkJCQk1NzBEQjdBOTE0QjU2OTZBMDBEQUVGQTAgLyogU2hhZG93Q29u
dGVudFNlbGVjdG9yUXVlcnkuaCAqLywKIAkJCQlBNzFDMzBCNjEzODEyNjVFMDBEQkMzNTEgLyog
U2hhZG93SW5jbHVzaW9uU2VsZWN0b3IuY3BwICovLAogCQkJCUE3MUMzMEI3MTM4MTI2NUUwMERC
QzM1MSAvKiBTaGFkb3dJbmNsdXNpb25TZWxlY3Rvci5oICovLAogCQkJCUE2RDE2OTYxMTM0NkI0
OUIwMDBFQjc3MCAvKiBTaGFkb3dSb290LmNwcCAqLywKQEAgLTI0MzYxLDYgKzI0MzY3LDcgQEAK
IAkJCQk0OTg3NzBFOTEyNDJDNTM1MDAyMjI2QkEgLyogU2hhZGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjNERDQ1MDEyRjVFQTFCMDAwRDkxOTAgLyogU2hhZG93Qmx1ci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTc0QzJEM0MxMzgxMUUwRDAwRjgzNTcyIC8qIFNoYWRvd0NvbnRlbnRFbGVtZW50
LmggaW4gSGVhZGVycyAqLywKKwkJCQk1NzBEQkE4MjE0QjU4MDRCMDBEQUVGQTAgLyogU2hhZG93
Q29udGVudFNlbGVjdG9yUXVlcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNUVCOEM0MEU4MjAz
MUIwMEIyNTk2NSAvKiBTaGFkb3dEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzFDMzBCOTEz
ODEyNjVFMDBEQkMzNTEgLyogU2hhZG93SW5jbHVzaW9uU2VsZWN0b3IuaCBpbiBIZWFkZXJzICov
LAogCQkJCUE2RDE2OTY0MTM0NkI0QzEwMDBFQjc3MCAvKiBTaGFkb3dSb290LmggaW4gSGVhZGVy
cyAqLywKQEAgLTI3Mzg1LDYgKzI3MzkyLDcgQEAKIAkJCQk0OTg3NzBFODEyNDJDNTM1MDAyMjI2
QkEgLyogU2hhZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGM0RENDRGMTJGNUVBMUIwMDBE
OTE5MCAvKiBTaGFkb3dCbHVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3NjZDRjhDMTM4MTBF
MEMwMDExQTBCMyAvKiBTaGFkb3dDb250ZW50RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQk1NzBEQkE4MTE0QjU4MDQ5MDBEQUVGQTAgLyogU2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnku
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM1RUI4QzMwRTgyMDMxQjAwQjI1OTY1IC8qIFNoYWRv
d0RhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTcxQzMwQjgxMzgxMjY1RTAwREJDMzUxIC8q
IFNoYWRvd0luY2x1c2lvblNlbGVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE2RDE2OTYy
MTM0NkI0OUIwMDBFQjc3MCAvKiBTaGFkb3dSb290LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TaGFkb3dDb250ZW50RWxlbWVudC5jcHAKaW5kZXggZWNlZTZkMGM3ZWU3
NmZkZDcyNWUyZmRjZjg3MmRkMmJiOTNjOTdiYi4uNDRlYjI5OGRjZmRhMzBkMTI2ODE3NzYyOTZh
ZTc5Mzc0MmJmYTE2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0NvbnRl
bnRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Q29udGVudEVsZW1l
bnQuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiU2hhZG93Q29udGVudEVsZW1lbnQu
aCIKIAogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIlNoYWRvd0NvbnRlbnRTZWxl
Y3RvclF1ZXJ5LmgiCiAjaW5jbHVkZSAiU2hhZG93SW5jbHVzaW9uU2VsZWN0b3IuaCIKICNpbmNs
dWRlICJTaGFkb3dSb290LmgiCiAKQEAgLTM5LDkgKzQwLDEwIEBAIFBhc3NSZWZQdHI8U2hhZG93
Q29udGVudEVsZW1lbnQ+IFNoYWRvd0NvbnRlbnRFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRv
Y3VtZW50CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFkb3dDb250ZW50RWxlbWVudCh0YWdO
YW1lLCBkb2N1bWVudCkpOwogfQogCi1TaGFkb3dDb250ZW50RWxlbWVudDo6U2hhZG93Q29udGVu
dEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQor
U2hhZG93Q29udGVudEVsZW1lbnQ6OlNoYWRvd0NvbnRlbnRFbGVtZW50KGNvbnN0IFF1YWxpZmll
ZE5hbWUmIG5hbWUsIERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBzZWxlY3QpCiAg
ICAgOiBTdHlsZWRFbGVtZW50KG5hbWUsIGRvY3VtZW50LCBDcmVhdGVIVE1MRWxlbWVudCkKICAg
ICAsIG1faW5jbHVzaW9ucyhhZG9wdFB0cihuZXcgU2hhZG93SW5jbHVzaW9uTGlzdCgpKSkKKyAg
ICAsIG1fc2VsZWN0KHNlbGVjdCkKIHsKIH0KIApAQCAtNzYsMTAgKzc4LDE2IEBAIHZvaWQgU2hh
ZG93Q29udGVudEVsZW1lbnQ6OmRldGFjaCgpCiAgICAgU3R5bGVkRWxlbWVudDo6ZGV0YWNoKCk7
CiB9CiAKLWJvb2wgU2hhZG93Q29udGVudEVsZW1lbnQ6OnNob3VsZEluY2x1ZGUoTm9kZSopCiti
b29sIFNoYWRvd0NvbnRlbnRFbGVtZW50OjptYXRjaGVzUXVlcnkoY29uc3QgU2hhZG93Q29udGVu
dFNlbGVjdG9yUXVlcnkmIHF1ZXJ5LCBOb2RlKiBub2RlKQogewotICAgIHJldHVybiB0cnVlOwot
fQorICAgIEFTU0VSVChub2RlKTsKKyAgICBpZiAoIW5vZGUpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIGlmIChtX3NlbGVjdC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB0cnVlOwog
CisgICAgcmV0dXJuIHF1ZXJ5Lm1hdGNoZXMobm9kZSk7Cit9CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dDb250ZW50RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50LmgKaW5kZXggN2IzNjY2MjFiN2I5NjNhNDMwZmMxNDMw
OWJkNDY1ZWFlZGZhMDRhNC4uZTk2NjRhYjRlNTg2NTNjYTVjNDNkYThlYzFjZDYzYzk2NzI4NzI4
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50LmgKQEAgLTM2LDYg
KzM2LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBTaGFkb3dDb250ZW50U2Vs
ZWN0b3JRdWVyeTsKIGNsYXNzIFNoYWRvd0luY2x1c2lvbkxpc3Q7CiAKIC8vIE5PVEU6IEN1cnJl
bnQgaW1wbGVtZW50YXRpb24gZG9lc24ndCBzdXBwb3J0IGR5bmFtaWMgaW5zZXJ0aW9uL2RlbGV0
aW9uIG9mIFNoYWRvd0NvbnRlbnRFbGVtZW50LgpAQCAtNDUsMTQgKzQ2LDE4IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTaGFkb3dDb250ZW50RWxlbWVudD4gY3JlYXRlKERvY3Vt
ZW50Kik7CiAKICAgICB2aXJ0dWFsIH5TaGFkb3dDb250ZW50RWxlbWVudCgpOwotICAgIHZpcnR1
YWwgYm9vbCBzaG91bGRJbmNsdWRlKE5vZGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCk7
CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaCgpOwogCisgICAgY29uc3QgU3RyaW5nJiBzZWxlY3Qo
KSB7IHJldHVybiBtX3NlbGVjdDsgfQorICAgIHZvaWQgc2V0U2VsZWN0KGNvbnN0IFN0cmluZyYg
c2VsZWN0KSB7IG1fc2VsZWN0ID0gc2VsZWN0OyB9CisKKyAgICBib29sIG1hdGNoZXNRdWVyeShj
b25zdCBTaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeSYsIE5vZGUqKTsKKwogICAgIGNvbnN0IFNo
YWRvd0luY2x1c2lvbkxpc3QqIGluY2x1c2lvbnMoKSBjb25zdCB7IHJldHVybiBtX2luY2x1c2lv
bnMuZ2V0KCk7IH0KIAogcHJvdGVjdGVkOgotICAgIFNoYWRvd0NvbnRlbnRFbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOworICAgIFNoYWRvd0NvbnRlbnRFbGVtZW50KGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCosIGNvbnN0IFN0cmluZyYgc2VsZWN0ID0gU3Ry
aW5nKCkpOwogCiBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBpc0NvbnRlbnRFbGVtZW50KCkg
Y29uc3QgeyByZXR1cm4gdHJ1ZTsgfQpAQCAtNjAsNiArNjUsNyBAQCBwcml2YXRlOgogICAgIHZp
cnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0
eWxlKikgeyByZXR1cm4gMDsgfQogCiAgICAgT3duUHRyPFNoYWRvd0luY2x1c2lvbkxpc3Q+IG1f
aW5jbHVzaW9uczsKKyAgICBTdHJpbmcgbV9zZWxlY3Q7CiB9OwogCiBpbmxpbmUgU2hhZG93Q29u
dGVudEVsZW1lbnQqIHRvU2hhZG93Q29udGVudEVsZW1lbnQoTm9kZSogbm9kZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnkuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmJhN2ZiMWM0OWQxMGJkMTM5ZWYzMzBlMzIyYTQ5MmEzZDgyNGRmOGIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnkuY3Bw
CkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2hhZG93
Q29udGVudFNlbGVjdG9yUXVlcnkuaCIKKworI2luY2x1ZGUgIkNTU1BhcnNlci5oIgorI2luY2x1
ZGUgIkNTU1NlbGVjdG9yTGlzdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1NoYWRvd0Nv
bnRlbnRTZWxlY3RvclF1ZXJ5OjpTaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeShEb2N1bWVudCog
ZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgcXVlcnlTZWxlY3RvcikKKyAgICA6IG1fc2VsZWN0b3JD
aGVja2VyKGRvY3VtZW50LCAhZG9jdW1lbnQtPmluUXVpcmtzTW9kZSgpKQoreworICAgIEFTU0VS
VChkb2N1bWVudCk7CisKKyAgICBtX3NlbGVjdG9yQ2hlY2tlci5zZXRDb2xsZWN0aW5nUnVsZXNP
bmx5KHRydWUpOworCisgICAgQ1NTUGFyc2VyIHBhcnNlcih0cnVlKTsKKyAgICBwYXJzZXIucGFy
c2VTZWxlY3RvcihxdWVyeVNlbGVjdG9yLCBkb2N1bWVudCwgbV9zZWxlY3Rvckxpc3QpOworCisg
ICAgZm9yIChDU1NTZWxlY3Rvciogc2VsZWN0b3IgPSBtX3NlbGVjdG9yTGlzdC5maXJzdCgpOyBz
ZWxlY3Rvcjsgc2VsZWN0b3IgPSBDU1NTZWxlY3Rvckxpc3Q6Om5leHQoc2VsZWN0b3IpKQorICAg
ICAgICBtX3NlbGVjdG9ycy5hcHBlbmQoU2VsZWN0b3JEYXRhKHNlbGVjdG9yLCBTZWxlY3RvckNo
ZWNrZXI6OmlzRmFzdENoZWNrYWJsZVNlbGVjdG9yKHNlbGVjdG9yKSkpOworfQorCitib29sIFNo
YWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5OjptYXRjaGVzKE5vZGUqIG5vZGUpIGNvbnN0Cit7Cisg
ICAgaWYgKCFub2RlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICB1bnNpZ25lZCBzZWxl
Y3RvckNvdW50ID0gbV9zZWxlY3RvcnMuc2l6ZSgpOworICAgIGZwcmludGYoc3RkZXJyLCAic2Vs
ZWN0b3JDb3VudCA9ICVkXG4iLCAoaW50KSBzZWxlY3RvckNvdW50KTsKKyAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgc2VsZWN0b3JDb3VudDsgKytpKSB7CisgICAgICAgIGlmIChtYXRjaGVz
KG5vZGUsIG1fc2VsZWN0b3JzW2ldKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0K
KworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBTaGFkb3dDb250ZW50U2VsZWN0b3JRdWVy
eTo6bWF0Y2hlcyhOb2RlKiB0YXJnZXROb2RlLCBjb25zdCBTZWxlY3RvckRhdGEmIHNlbGVjdG9y
RGF0YSkgY29uc3QKK3sKKyAgICBBU1NFUlQodGFyZ2V0Tm9kZSk7CisKKyAgICBpZiAoIXRhcmdl
dE5vZGUtPmlzRWxlbWVudE5vZGUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgRWxl
bWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPih0YXJnZXROb2RlKTsKKyAgICAv
LyByZXR1cm4gbV9zZWxlY3RvckNoZWNrZXIuY2hlY2tTZWxlY3RvcihzZWxlY3RvckRhdGEuc2Vs
ZWN0b3IsIGVsZW1lbnQsIHNlbGVjdG9yRGF0YS5pc0Zhc3RDaGVja2FibGUpOworICAgIHJldHVy
biBtX3NlbGVjdG9yQ2hlY2tlci5jaGVja1NlbGVjdG9yKHNlbGVjdG9yRGF0YS5zZWxlY3Rvciwg
ZWxlbWVudCwgZmFsc2UpOworfQorCisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRv
d0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTRiODk3MzRhOGE5NjIxOTRiODVm
YWEyM2Y3YjM2NzNhNjU4OTg5YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeS5oCkBAIC0wLDAgKzEsNzUgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJp
YnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFNo
YWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5X2gKKyNkZWZpbmUgU2hhZG93Q29udGVudFNlbGVjdG9y
UXVlcnlfaAorCisjaW5jbHVkZSAiQ1NTU2VsZWN0b3JMaXN0LmgiCisjaW5jbHVkZSAiU2VsZWN0
b3JDaGVja2VyLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvSGFz
aFNldC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIERvY3VtZW50OworY2xhc3MgTm9k
ZTsKKworY2xhc3MgU2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnkgeworICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKFNoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5KTsKK3B1YmxpYzoKKyAgICBTaGFk
b3dDb250ZW50U2VsZWN0b3JRdWVyeShEb2N1bWVudCosIGNvbnN0IFN0cmluZyYpOworCisgICAg
Ym9vbCBtYXRjaGVzKE5vZGUqKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBzdHJ1Y3QgU2VsZWN0
b3JEYXRhIHsKKyAgICAgICAgU2VsZWN0b3JEYXRhKENTU1NlbGVjdG9yKiBzZWxlY3RvciwgYm9v
bCBpc0Zhc3RDaGVja2FibGUpCisgICAgICAgICAgICA6IHNlbGVjdG9yKHNlbGVjdG9yKQorICAg
ICAgICAgICAgLCBpc0Zhc3RDaGVja2FibGUoaXNGYXN0Q2hlY2thYmxlKQorICAgICAgICB7Cisg
ICAgICAgIH0KKworICAgICAgICBDU1NTZWxlY3Rvciogc2VsZWN0b3I7CisgICAgICAgIGJvb2wg
aXNGYXN0Q2hlY2thYmxlOworICAgIH07CisKKyAgICBib29sIGNhblVzZUlkTG9va3VwKGNvbnN0
IFNlbGVjdG9yRGF0YSYsIERvY3VtZW50KikgY29uc3Q7CisgICAgYm9vbCBtYXRjaGVzKE5vZGUq
IHRhcmdldE5vZGUsIGNvbnN0IFNlbGVjdG9yRGF0YSYpIGNvbnN0OworCisgICAgVmVjdG9yPFNl
bGVjdG9yRGF0YT4gbV9zZWxlY3RvcnM7CisgICAgQ1NTU2VsZWN0b3JMaXN0IG1fc2VsZWN0b3JM
aXN0OworICAgIFNlbGVjdG9yQ2hlY2tlciBtX3NlbGVjdG9yQ2hlY2tlcjsKK307CisKK30KKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93SW5jbHVzaW9uU2Vs
ZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0luY2x1c2lvblNlbGVjdG9yLmNw
cAppbmRleCA5ODQxZjU1NjQ4ODdjODk2MzQ1Mzc0OWYyMzcxNjZjYTJlNDVlMTA1Li5iMzI2MWUw
ODFhNDBiYmJhOWYyZjIyNmE2NjBmNmFjMzZjMjEwOTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2hhZG93SW5jbHVzaW9uU2VsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TaGFkb3dJbmNsdXNpb25TZWxlY3Rvci5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNs
dWRlICJTaGFkb3dJbmNsdXNpb25TZWxlY3Rvci5oIgogCiAjaW5jbHVkZSAiU2hhZG93Q29udGVu
dEVsZW1lbnQuaCIKKyNpbmNsdWRlICJTaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeS5oIgogI2lu
Y2x1ZGUgIlNoYWRvd1Jvb3QuaCIKIAogCkBAIC0xMTEsMTEgKzExMiwxMiBAQCB2b2lkIFNoYWRv
d0luY2x1c2lvblNlbGVjdG9yOjpzZWxlY3QoU2hhZG93Q29udGVudEVsZW1lbnQqIGNvbnRlbnRF
bGVtZW50LCBTaGFkbwogewogICAgIEFTU0VSVChpbmNsdXNpb25zLT5pc0VtcHR5KCkpOwogCisg
ICAgU2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnkgcXVlcnkoY29udGVudEVsZW1lbnQtPmRvY3Vt
ZW50KCksIGNvbnRlbnRFbGVtZW50LT5zZWxlY3QoKSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBtX2NhbmRpZGF0ZXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgTm9kZSogY2hpbGQgPSBt
X2NhbmRpZGF0ZXNbaV0uZ2V0KCk7CiAgICAgICAgIGlmICghY2hpbGQpCiAgICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgaWYgKCFjb250ZW50RWxlbWVudC0+c2hvdWxkSW5jbHVkZShjaGls
ZCkpCisgICAgICAgIGlmICghY29udGVudEVsZW1lbnQtPm1hdGNoZXNRdWVyeShxdWVyeSwgY2hp
bGQpKQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgUmVmUHRyPFNoYWRvd0luY2x1
c2lvbj4gaW5jbHVzaW9uID0gU2hhZG93SW5jbHVzaW9uOjpjcmVhdGUoY29udGVudEVsZW1lbnQs
IGNoaWxkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dJbmNsdXNpb25T
ZWxlY3Rvci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0luY2x1c2lvblNlbGVjdG9yLmgK
aW5kZXggZjFhZGFlZTNmNTQzYTgxYzNmZWZiZmM0NmUwMWIxZmQ3ZjNiMGU4Zi4uZDFhODcxNzQ0
MWIxOWMyZDZhZmEwZThmMzQwNzU4NDEwMjE4YjRlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL1NoYWRvd0luY2x1c2lvblNlbGVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1NoYWRvd0luY2x1c2lvblNlbGVjdG9yLmgKQEAgLTEzNyw3ICsxMzcsNiBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBkaWRTZWxlY3QoKTsKICAgICBib29sIGhhc0NhbmRpZGF0ZXMoKSBjb25zdCB7IHJl
dHVybiAhbV9jYW5kaWRhdGVzLmlzRW1wdHkoKTsgfQogCi0KIHByaXZhdGU6CiAgICAgdm9pZCBy
ZW1vdmVGcm9tU2V0KFNoYWRvd0luY2x1c2lvbkxpc3QqKTsKICAgICB2b2lkIGFkZFRvU2V0KFNo
YWRvd0luY2x1c2lvbkxpc3QqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TERldGFpbHNFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVt
ZW50LmNwcAppbmRleCBmYWQ5YWY4MDQ0MTQ1NzBjMWU3NmNhMjhjNWViNWIxNjI3YzcwMjIwLi41
MWFhZGMwYzZmYzI2NGNkMWNmYmNiYmI3NzFlMjhiYTQ5NmEwNGRjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuY3BwCkBAIC00MiwxMSArNDIsOSBAQCBwdWJsaWM6
CiAKIHByaXZhdGU6CiAgICAgRGV0YWlsc0NvbnRlbnRFbGVtZW50KERvY3VtZW50KiBkb2N1bWVu
dCkKLSAgICAgICAgOiBTaGFkb3dDb250ZW50RWxlbWVudChIVE1MTmFtZXM6OmRpdlRhZywgZG9j
dW1lbnQpCisgICAgICAgIDogU2hhZG93Q29udGVudEVsZW1lbnQoSFRNTE5hbWVzOjpkaXZUYWcs
IGRvY3VtZW50LCAiIikKICAgICB7CiAgICAgfQotCi0gICAgdmlydHVhbCBib29sIHNob3VsZElu
Y2x1ZGUoTm9kZSopOwogfTsKIAogUGFzc1JlZlB0cjxEZXRhaWxzQ29udGVudEVsZW1lbnQ+IERl
dGFpbHNDb250ZW50RWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKQEAgLTU0LDI0
ICs1MiwxNSBAQCBQYXNzUmVmUHRyPERldGFpbHNDb250ZW50RWxlbWVudD4gRGV0YWlsc0NvbnRl
bnRFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZQogICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgRGV0YWlsc0NvbnRlbnRFbGVtZW50KGRvY3VtZW50KSk7CiB9CiAKLWJvb2wgRGV0YWlsc0Nv
bnRlbnRFbGVtZW50OjpzaG91bGRJbmNsdWRlKE5vZGUqIG5vZGUpCi17Ci0gICAgSFRNTERldGFp
bHNFbGVtZW50KiBkZXRhaWxzID0gc3RhdGljX2Nhc3Q8SFRNTERldGFpbHNFbGVtZW50Kj4oc2hh
ZG93QW5jZXN0b3JOb2RlKCkpOwotICAgIHJldHVybiBkZXRhaWxzLT5tYWluU3VtbWFyeSgpICE9
IG5vZGU7Ci19Ci0KLQogY2xhc3MgRGV0YWlsc1N1bW1hcnlFbGVtZW50IDogcHVibGljIFNoYWRv
d0NvbnRlbnRFbGVtZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxEZXRhaWxz
U3VtbWFyeUVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCopOwogCiBwcml2YXRlOgogICAgIERldGFp
bHNTdW1tYXJ5RWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCi0gICAgICAgIDogU2hhZG93Q29u
dGVudEVsZW1lbnQoSFRNTE5hbWVzOjpkaXZUYWcsIGRvY3VtZW50KQorICAgICAgICA6IFNoYWRv
d0NvbnRlbnRFbGVtZW50KEhUTUxOYW1lczo6ZGl2VGFnLCBkb2N1bWVudCwgInN1bW1hcnk6Zmly
c3Qtb2YtdHlwZSIpCiAgICAgewogICAgIH0KLQotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRJbmNs
dWRlKE5vZGUqKTsKIH07CiAKIFBhc3NSZWZQdHI8RGV0YWlsc1N1bW1hcnlFbGVtZW50PiBEZXRh
aWxzU3VtbWFyeUVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCkBAIC03OSwxMyAr
NjgsNiBAQCBQYXNzUmVmUHRyPERldGFpbHNTdW1tYXJ5RWxlbWVudD4gRGV0YWlsc1N1bW1hcnlF
bGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZQogICAgIHJldHVybiBhZG9wdFJlZihuZXcg
RGV0YWlsc1N1bW1hcnlFbGVtZW50KGRvY3VtZW50KSk7CiB9CiAKLWJvb2wgRGV0YWlsc1N1bW1h
cnlFbGVtZW50OjpzaG91bGRJbmNsdWRlKE5vZGUqIG5vZGUpCi17Ci0gICAgSFRNTERldGFpbHNF
bGVtZW50KiBkZXRhaWxzID0gc3RhdGljX2Nhc3Q8SFRNTERldGFpbHNFbGVtZW50Kj4oc2hhZG93
QW5jZXN0b3JOb2RlKCkpOwotICAgIHJldHVybiBkZXRhaWxzLT5tYWluU3VtbWFyeSgpID09IG5v
ZGU7Ci19Ci0KLQogUGFzc1JlZlB0cjxIVE1MRGV0YWlsc0VsZW1lbnQ+IEhUTUxEZXRhaWxzRWxl
bWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1
bWVudCkKIHsKICAgICBSZWZQdHI8SFRNTERldGFpbHNFbGVtZW50PiByZXN1bHQgPSBhZG9wdFJl
ZihuZXcgSFRNTERldGFpbHNFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggMTk1ZjU3MGVmZjE4YTUzZmVkZWE3ZGVmYzBhNGZk
Njg5ZDk4OTQzZS4uMTNhYWJiZDhmYmZjZDJmOWUwYzg4N2FlYTZhYjg5MGYzYjhhZjY5MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMTI2LDE0ICsxMjYsMTcgQEAgYm9v
bCBJbnRlcm5hbHM6OmlzUHJlbG9hZGVkKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgU3RyaW5n
JiB1cmwpCiAgICAgcmV0dXJuIGRvY3VtZW50LT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5pc1By
ZWxvYWRlZCh1cmwpOwogfQogCi1QYXNzUmVmUHRyPEVsZW1lbnQ+IEludGVybmFsczo6Y3JlYXRl
U2hhZG93Q29udGVudEVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50LCBFeGNlcHRpb25Db2RlJiBl
YykKK1Bhc3NSZWZQdHI8RWxlbWVudD4gSW50ZXJuYWxzOjpjcmVhdGVTaGFkb3dDb250ZW50RWxl
bWVudChEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgc2VsZWN0LCBFeGNlcHRpb25D
b2RlJiBlYykKIHsKICAgICBpZiAoIWRvY3VtZW50KSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9B
Q0NFU1NfRVJSOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICByZXR1cm4gU2hhZG93
Q29udGVudEVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CisgICAgUmVmUHRyPFNoYWRvd0NvbnRl
bnRFbGVtZW50PiBlbGVtID0gU2hhZG93Q29udGVudEVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7
CisgICAgaWYgKGVsZW0pCisgICAgICAgIGVsZW0tPnNldFNlbGVjdChzZWxlY3QpOworICAgIHJl
dHVybiBlbGVtLnJlbGVhc2UoKTsKIH0KIAogRWxlbWVudCogSW50ZXJuYWxzOjpnZXRFbGVtZW50
QnlJZEluU2hhZG93Um9vdChOb2RlKiBzaGFkb3dSb290LCBjb25zdCBTdHJpbmcmIGlkLCBFeGNl
cHRpb25Db2RlJiBlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IGVhMDBkMTU4
ZGI2Nzc5MDg5YjdmNTMzZjBmNGQ1MjYxM2ViNjExMzcuLjI1MWQ0YTAyY2U3NWFjYmVjZmRkY2Vk
ZjUxMmQ4Yjk4OWMzODNjYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtNTcs
NyArNTcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVTaGFkb3dSb290KEVsZW1lbnQqIGhv
c3QsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBFbGVtZW50KiBpbmNsdWRlckZvcihOb2RlKiwgRXhj
ZXB0aW9uQ29kZSYpOwogICAgIFN0cmluZyBzaGFkb3dQc2V1ZG9JZChFbGVtZW50KiwgRXhjZXB0
aW9uQ29kZSYpOwotICAgIFBhc3NSZWZQdHI8RWxlbWVudD4gY3JlYXRlU2hhZG93Q29udGVudEVs
ZW1lbnQoRG9jdW1lbnQqLCBFeGNlcHRpb25Db2RlJik7CisgICAgUGFzc1JlZlB0cjxFbGVtZW50
PiBjcmVhdGVTaGFkb3dDb250ZW50RWxlbWVudChEb2N1bWVudCosIGNvbnN0IFN0cmluZyYsIEV4
Y2VwdGlvbkNvZGUmKTsKICAgICBFbGVtZW50KiBnZXRFbGVtZW50QnlJZEluU2hhZG93Um9vdChO
b2RlKiBzaGFkb3dSb290LCBjb25zdCBTdHJpbmcmIGlkLCBFeGNlcHRpb25Db2RlJik7CiAKICNp
ZiBFTkFCTEUoSU5QVVRfQ09MT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5k
ZXggZDYyMjI2MDQzMGE3MTY5YzRjNmEzNTFlNjA2MTkwNTBmNjkyYTIzMS4uMzEwZDMwYzZmMDlj
ODEyNzdlY2U0YjIwOTI4ZmE3NjkyOTVjY2Q2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmlkbApAQCAtMzUsNyArMzUsNyBAQCBtb2R1bGUgd2luZG93IHsKICAgICAgICAgRWxlbWVu
dCBpbmNsdWRlckZvcihpbiBOb2RlIG5vZGUpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKICAgICAg
ICAgdm9pZCByZW1vdmVTaGFkb3dSb290KGluIEVsZW1lbnQgaG9zdCkgcmFpc2VzIChET01FeGNl
cHRpb24pOwogICAgICAgICBET01TdHJpbmcgc2hhZG93UHNldWRvSWQoaW4gRWxlbWVudCBlbGVt
ZW50KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7Ci0gICAgICAgIEVsZW1lbnQgY3JlYXRlU2hhZG93
Q29udGVudEVsZW1lbnQoaW4gRG9jdW1lbnQgZG9jdW1lbnQpIHJhaXNlcyhET01FeGNlcHRpb24p
OworICAgICAgICBFbGVtZW50IGNyZWF0ZVNoYWRvd0NvbnRlbnRFbGVtZW50KGluIERvY3VtZW50
IGRvY3VtZW50LCBpbiBbT3B0aW9uYWw9Q2FsbFdpdGhOdWxsVmFsdWVdIERPTVN0cmluZyBzZWxl
Y3QpIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAgICAgICBFbGVtZW50IGdldEVsZW1lbnRCeUlk
SW5TaGFkb3dSb290KGluIE5vZGUgc2hhZG93Um9vdCwgaW4gRE9NU3RyaW5nIGlkKSByYWlzZXMo
RE9NRXhjZXB0aW9uKTsKIAogI2lmIGRlZmluZWQoRU5BQkxFX0lOUFVUX0NPTE9SKSAmJiBFTkFC
TEVfSU5QVVRfQ09MT1IKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwYWIwYmI5YzFiMzUwMWIxYzJlNjVkMDllNjNiYjc2ZDI0
N2QwZGNmLi4xNTg1YWEzNzIyMjAxN2VmZDAwMTE0MWQ2ZTcyMTY0MTY1NDZhY2RhIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMTItMDEtMDQgIFNoaW55YSBLYXdhbmFrYSAgPHNoaW55YWtAZ29v
Z2xlLmNvbT4KKworICAgICAgICBTaGFkb3dDb250ZW50RWxlbWVudCBzaG91bGQgYmUgYWJsZSB0
byB1c2UgcXVlcnkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03NTMwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRlc3RzIGZvciBTaGFkb3dDb250ZW50RWxlbWVudCBxdWVyeS4KKworICAgICAgICAqIGZh
c3QvZG9tL3NoYWRvdy9zaGFkb3ctY29udGVudHMtc2VsZWN0LWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1jb250ZW50cy1zZWxlY3QuaHRtbDog
QWRkZWQuCisKIDIwMTItMDEtMDQgIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUuY29tPgog
CiAgICAgICAgIEZpeCBzZW1hbnRpY3Mgb2YgV0VCS0lUX1dFQkdMX2xvc2VfY29udGV4dApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1jb250ZW50cy1zZWxl
Y3QtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1jb250
ZW50cy1zZWxlY3QtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgyMjAxNTk5ZTQ4YmRiN2I0YTY3
ZDY5MTRlY2VjZTZlNWE2MjVkNDcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9zaGFkb3cvc2hhZG93LWNvbnRlbnRzLXNlbGVjdC1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxNCBAQAorUEFTUworUEFTUworUEFTUworUEFTUworUEFTUworUEFTUworUEFTUworUEFTUwor
UEFTUworUEFTUworUEFTUworUEFTUworUEFTUworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9zaGFkb3cvc2hhZG93LWNvbnRlbnRzLXNlbGVjdC5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vc2hhZG93L3NoYWRvdy1jb250ZW50cy1zZWxlY3QuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5h
YzY2YTAxOGMzZGU4OTg3ODdlZDg1NzQzMzg0ODZkMDQ4ZTUwZjk0Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1jb250ZW50cy1zZWxlY3QuaHRt
bApAQCAtMCwwICsxLDI0OCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHN0
eWxlPgorLyogcmVsYXRpdmUgcG9zaXRpb25pbmcgZW5zdXJlcyB1bmRlcmx5aW5nIFJlbmRlckxh
eWVyICovCisuY29udGFpbmVyIHsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cit9Cis8L3N0eWxl
PgorPHNjcmlwdD4KK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKQoreworICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJjb25zb2xlIikuaW5uZXJIVE1MICs9IChtZXNzYWdlICsgIlxuIik7Cit9CisK
K2Z1bmN0aW9uIHJlbW92ZUFsbENoaWxkcmVuKGVsZW0pIHsKKyAgICB3aGlsZSAoZWxlbS5maXJz
dENoaWxkKQorICAgICAgICBlbGVtLnJlbW92ZUNoaWxkKGVsZW0uZmlyc3RDaGlsZCk7Cit9CisK
K2Z1bmN0aW9uIGNsZWFuVXAoKSB7CisgICAgcmVtb3ZlQWxsQ2hpbGRyZW4oZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKSk7CisgICAgcmVtb3ZlQWxsQ2hpbGRyZW4o
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKSk7Cit9CisKK2Z1bmN0
aW9uIHJlbW92ZUNvbnRhaW5lckxpbmVzKHRleHQpCit7CisgICAgdmFyIGxpbmVzID0gdGV4dC5z
cGxpdCgiXG4iKTsKKyAgICBsaW5lcy5zcGxpY2UoMCwgMik7CisgICAgcmV0dXJuIGxpbmVzLmpv
aW4oIlxuIik7Cit9CisKK2Z1bmN0aW9uIGNoZWNrKCkgeworICAgIHZhciByZWZDb250YWluZXJS
ZW5kZXJUcmVlID0gaW50ZXJuYWxzLmVsZW1lbnRSZW5kZXJUcmVlQXNUZXh0KGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVyJykpOworICAgIHZhciByZWZSZW5kZXJUcmVl
ID0gcmVtb3ZlQ29udGFpbmVyTGluZXMocmVmQ29udGFpbmVyUmVuZGVyVHJlZSk7CisKKyAgICB2
YXIgdGFyZ2V0Q29udGFpbmVyUmVuZGVyVHJlZSA9IGludGVybmFscy5lbGVtZW50UmVuZGVyVHJl
ZUFzVGV4dChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5lcicpKTsKKyAg
ICB2YXIgdGFyZ2V0UmVuZGVyVHJlZSA9IHJlbW92ZUNvbnRhaW5lckxpbmVzKHRhcmdldENvbnRh
aW5lclJlbmRlclRyZWUpOworCisgICAgaWYgKHRhcmdldFJlbmRlclRyZWUgPT0gcmVmUmVuZGVy
VHJlZSkKKyAgICAgICAgbG9nKCJQQVNTIik7CisgICAgZWxzZSB7CisgICAgICAgIGxvZygiRkFJ
TCIpOworICAgICAgICBsb2coIkV4cGVjdGVkOiIpOworICAgICAgICBsb2cocmVmUmVuZGVyVHJl
ZSk7CisgICAgICAgIGxvZygiQWN0dWFsOiIpOworICAgICAgICBsb2codGFyZ2V0UmVuZGVyVHJl
ZSk7CisgICAgfQorfQorCitmdW5jdGlvbiBhcHBlbmRTaGFkb3codGFyZ2V0LCBzZWxlY3QpIHsK
KyAgICB2YXIgcm9vdCA9IGludGVybmFscy5lbnN1cmVTaGFkb3dSb290KHRhcmdldCk7CisKKyAg
ICB2YXIgY2hpbGQwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOworICAgIGNoaWxk
MC5pbm5lckhUTUwgPSAiSGVsbG8sIjsKKyAgICByb290LmFwcGVuZENoaWxkKGNoaWxkMCk7CisK
KyAgICB2YXIgY29udGVudCA9IGludGVybmFscy5jcmVhdGVTaGFkb3dDb250ZW50RWxlbWVudChk
b2N1bWVudCwgc2VsZWN0KTsKKyAgICByb290LmFwcGVuZENoaWxkKGNvbnRlbnQpOworCisgICAg
dmFyIGNoaWxkMSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKKyAgICBjaGlsZDEu
aW5uZXJIVE1MID0gIldvcmxkLiI7CisgICAgcm9vdC5hcHBlbmRDaGlsZChjaGlsZDEpOworfQor
CitmdW5jdGlvbiB0ZXN0U2VsZWN0SXNOdWxsKCkgeworICAgIHZhciB0YXJnZXQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICB0YXJnZXQuaW5uZXJIVE1MID0gIjxzcGFuPmNv
bnRlbnQ8L3NwYW4+IjsKKworICAgIGFwcGVuZFNoYWRvdyh0YXJnZXQsICIiKTsKKworICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBwZW5kQ2hpbGQodGFy
Z2V0KTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlu
bmVySFRNTCA9CisgICAgICAgICI8ZGl2PjxzcGFuPkhlbGxvLDwvc3Bhbj48c3Bhbj5jb250ZW50
PC9zcGFuPjxzcGFuPldvcmxkLjwvc3Bhbj48L2Rpdj4iOworfQorCitmdW5jdGlvbiB0ZXN0U2Vs
ZWN0SXNJZCgpIHsKKyAgICB2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2
Jyk7CisgICAgdGFyZ2V0LmlubmVySFRNTCA9ICI8c3BhbiBpZD0nZm9vJz5jb250ZW50PC9zcGFu
PjxzcGFuIGlkPSdhenVueWFuJz5wZXJvcGVybzwvc3Bhbj4iOworCisgICAgYXBwZW5kU2hhZG93
KHRhcmdldCwgIiNmb28iKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwt
Y29udGFpbmVyJykuYXBwZW5kQ2hpbGQodGFyZ2V0KTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlubmVySFRNTCA9CisgICAgICAgICI8ZGl2PjxzcGFu
PkhlbGxvLDwvc3Bhbj48c3Bhbj5jb250ZW50PC9zcGFuPjxzcGFuPldvcmxkLjwvc3Bhbj48L2Rp
dj4iOworfQorCitmdW5jdGlvbiB0ZXN0U2VsZWN0SXNJZEJ1dE5vdE1hdGNoZWQoKSB7CisgICAg
dmFyIHRhcmdldCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHRhcmdldC5p
bm5lckhUTUwgPSAiPHNwYW4gaWQ9J2Zvbyc+Y29udGVudDwvc3Bhbj48c3BhbiBpZD0nYXp1bnlh
bic+cGVyb3Blcm88L3NwYW4+IjsKKworICAgIGFwcGVuZFNoYWRvdyh0YXJnZXQsICIjZm9vYmFy
Iik7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFw
cGVuZENoaWxkKHRhcmdldCk7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1j
b250YWluZXInKS5pbm5lckhUTUwgPQorICAgICAgICAiPGRpdj48c3Bhbj5IZWxsbyw8L3NwYW4+
PHNwYW4+V29ybGQuPC9zcGFuPjwvZGl2PiI7Cit9CisKK2Z1bmN0aW9uIHRlc3RTZWxlY3RJc0lk
QnV0Tm90Q2hpbGQoKSB7CisgICAgdmFyIHRhcmdldCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J2RpdicpOworICAgIHRhcmdldC5pbm5lckhUTUwgPSAiPHNwYW4+PHNwYW4gaWQ9J2Zvbyc+Y29u
dGVudDwvc3Bhbj48c3BhbiBpZD0nYXp1bnlhbic+cGVyb3Blcm88L3NwYW4+PC9zcGFuPiI7CisK
KyAgICBhcHBlbmRTaGFkb3codGFyZ2V0LCAiI2ZvbyIpOworCisgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRDaGlsZCh0YXJnZXQpOworICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVyJykuaW5uZXJIVE1MID0KKyAg
ICAgICAgIjxkaXY+PHNwYW4+SGVsbG8sPC9zcGFuPjxzcGFuPldvcmxkLjwvc3Bhbj48L2Rpdj4i
OworfQorCitmdW5jdGlvbiB0ZXN0U2VsZWN0SXNNdWx0aUlkKCkgeworICAgIHZhciB0YXJnZXQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICB0YXJnZXQuaW5uZXJIVE1MID0g
IjxzcGFuIGlkPSdmb28nPmNvbnRlbnQ8L3NwYW4+PHNwYW4gaWQ9J2F6dW55YW4nPnBlcm9wZXJv
PC9zcGFuPjxzcGFuIGlkPSdmb28nPmNvbnRlbnQ8L3NwYW4+IjsKKworICAgIGFwcGVuZFNoYWRv
dyh0YXJnZXQsICIjZm9vIik7CisKKyAgICAvLyBBbGwgbWF0Y2hlZCBlbGVtZW50cyB3aWxsIGJl
IHNlbGVjdGVkLgorICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVy
JykuYXBwZW5kQ2hpbGQodGFyZ2V0KTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhw
ZWN0LWNvbnRhaW5lcicpLmlubmVySFRNTCA9CisgICAgICAgICI8ZGl2PjxzcGFuPkhlbGxvLDwv
c3Bhbj48c3Bhbj5jb250ZW50PC9zcGFuPjxzcGFuPmNvbnRlbnQ8L3NwYW4+PHNwYW4+V29ybGQu
PC9zcGFuPjwvZGl2PiI7Cit9CisKK2Z1bmN0aW9uIHRlc3RTZWxlY3RJc1R5cGUoKSB7CisgICAg
dmFyIHRhcmdldCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHRhcmdldC5p
bm5lckhUTUwgPSAiPGRpdj5henVueWFuPC9kaXY+PHNwYW4+Y29udGVudDwvc3Bhbj48ZGl2PnBl
cm9wZXJvPC9kaXY+IjsKKworICAgIGFwcGVuZFNoYWRvdyh0YXJnZXQsICJzcGFuIik7CisKKyAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFwcGVuZENoaWxk
KHRhcmdldCk7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXIn
KS5pbm5lckhUTUwgPQorICAgICAgICAiPGRpdj48c3Bhbj5IZWxsbyw8L3NwYW4+PHNwYW4+Y29u
dGVudDwvc3Bhbj48c3Bhbj5Xb3JsZC48L3NwYW4+PC9kaXY+IjsKK30KKworZnVuY3Rpb24gdGVz
dFNlbGVjdElzVHlwZVdpdGhBdHRyaWJ1dGUoKSB7CisgICAgdmFyIHRhcmdldCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHRhcmdldC5pbm5lckhUTUwgPSAiPHNwYW4+YXp1
bnlhbjwvc3Bhbj48c3BhbiB0aXRsZT0nY29udGVudCc+Y29udGVudDwvc3Bhbj48c3Bhbj5wZXJv
cGVybzwvc3Bhbj4iOworCisgICAgYXBwZW5kU2hhZG93KHRhcmdldCwgInNwYW5bdGl0bGU9J2Nv
bnRlbnQnXSIpOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWlu
ZXInKS5hcHBlbmRDaGlsZCh0YXJnZXQpOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdl
eHBlY3QtY29udGFpbmVyJykuaW5uZXJIVE1MID0KKyAgICAgICAgIjxkaXY+PHNwYW4+SGVsbG8s
PC9zcGFuPjxzcGFuPmNvbnRlbnQ8L3NwYW4+PHNwYW4+V29ybGQuPC9zcGFuPjwvZGl2PiI7Cit9
CisKK2Z1bmN0aW9uIHRlc3RTZWxlY3RJc1R5cGVXaXRoRmlyc3RPZlR5cGUoKSB7CisgICAgdmFy
IHRhcmdldCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHRhcmdldC5pbm5l
ckhUTUwgPSAiPGRpdj5henVueWFuPC9kaXY+PHNwYW4+Y29udGVudDwvc3Bhbj48c3Bhbj5wZXJv
cGVybzwvc3Bhbj4iOworCisgICAgYXBwZW5kU2hhZG93KHRhcmdldCwgInNwYW46Zmlyc3Qtb2Yt
dHlwZSIpOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXIn
KS5hcHBlbmRDaGlsZCh0YXJnZXQpOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBl
Y3QtY29udGFpbmVyJykuaW5uZXJIVE1MID0KKyAgICAgICAgIjxkaXY+PHNwYW4+SGVsbG8sPC9z
cGFuPjxzcGFuPmNvbnRlbnQ8L3NwYW4+PHNwYW4+V29ybGQuPC9zcGFuPjwvZGl2PiI7Cit9CisK
K2Z1bmN0aW9uIHRlc3RTZWxlY3RJc1R5cGVXaXRoRmlyc3RPZlR5cGUyKCkgeworICAgIHZhciB0
YXJnZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICB0YXJnZXQuaW5uZXJI
VE1MID0gIjxkaXY+PHNwYW4+YXp1bnlhbjwvc3Bhbj48L2Rpdj48c3Bhbj5jb250ZW50PC9zcGFu
PjxzcGFuPnBlcm9wZXJvPC9zcGFuPiI7CisKKyAgICBhcHBlbmRTaGFkb3codGFyZ2V0LCAic3Bh
bjpmaXJzdC1vZi10eXBlIik7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFs
LWNvbnRhaW5lcicpLmFwcGVuZENoaWxkKHRhcmdldCk7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5pbm5lckhUTUwgPQorICAgICAgICAiPGRpdj48c3Bh
bj5IZWxsbyw8L3NwYW4+PHNwYW4+Y29udGVudDwvc3Bhbj48c3Bhbj5Xb3JsZC48L3NwYW4+PC9k
aXY+IjsKK30KKworZnVuY3Rpb24gdGVzdFNlbGVjdElzVHlwZVdpdGhMYXN0T2ZUeXBlKCkgewor
ICAgIHZhciB0YXJnZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICB0YXJn
ZXQuaW5uZXJIVE1MID0gIjxzcGFuPmF6dW55YW48L3NwYW4+PHNwYW4+Y29udGVudDwvc3Bhbj48
ZGl2PnBlcm9wZXJvPC9kaXY+IjsKKworICAgIGFwcGVuZFNoYWRvdyh0YXJnZXQsICJzcGFuOmxh
c3Qtb2YtdHlwZSIpOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250
YWluZXInKS5hcHBlbmRDaGlsZCh0YXJnZXQpOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdleHBlY3QtY29udGFpbmVyJykuaW5uZXJIVE1MID0KKyAgICAgICAgIjxkaXY+PHNwYW4+SGVs
bG8sPC9zcGFuPjxzcGFuPmNvbnRlbnQ8L3NwYW4+PHNwYW4+V29ybGQuPC9zcGFuPjwvZGl2PiI7
Cit9CisKK2Z1bmN0aW9uIHRlc3RTZWxlY3RJc0RldGFpbHMoKSB7CisgICAgdmFyIHRhcmdldCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHRhcmdldC5pbm5lckhUTUwgPSAi
PGRldGFpbHM+Y29udGVudDwvZGV0YWlscz4iOworCisgICAgYXBwZW5kU2hhZG93KHRhcmdldCwg
ImRldGFpbHMiKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFp
bmVyJykuYXBwZW5kQ2hpbGQodGFyZ2V0KTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
ZXhwZWN0LWNvbnRhaW5lcicpLmlubmVySFRNTCA9CisgICAgICAgICI8ZGl2PjxzcGFuPkhlbGxv
LDwvc3Bhbj48ZGV0YWlscz5jb250ZW50PC9kZXRhaWxzPjxzcGFuPldvcmxkLjwvc3Bhbj48L2Rp
dj4iOworfQorCitmdW5jdGlvbiB0ZXN0U2VsZWN0SXNEZXRhaWxzMigpIHsKKyAgICB2YXIgdGFy
Z2V0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgdGFyZ2V0LmlubmVySFRN
TCA9ICI8ZGV0YWlscz48c3VtbWFyeT5jb250ZW50PC9zdW1tYXJ5PjwvZGV0YWlscz4iOworCisg
ICAgYXBwZW5kU2hhZG93KHRhcmdldCwgImRldGFpbHMiKTsKKworICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBwZW5kQ2hpbGQodGFyZ2V0KTsKKyAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlubmVySFRNTCA9Cisg
ICAgICAgICI8ZGl2PjxzcGFuPkhlbGxvLDwvc3Bhbj48ZGV0YWlscz48c3VtbWFyeT5jb250ZW50
PC9zdW1tYXJ5PjwvZGV0YWlscz48c3Bhbj5Xb3JsZC48L3NwYW4+PC9kaXY+IjsKK30KKworZnVu
Y3Rpb24gdGVzdFNlbGVjdFdoZW5EeW5hbWljYWxseUNoaWxkcmVuQ2hhbmdlZCgpIHsKKyAgICB2
YXIgdGFyZ2V0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgdGFyZ2V0Lmlu
bmVySFRNTCA9ICI8c3Bhbj5jb250ZW50PC9zcGFuPjxzcGFuIGlkPSd0b2JlcmVtb3ZlZCc+YW51
bnlhbiBwZXJvcGVybzwvc3Bhbj4iOworCisgICAgYXBwZW5kU2hhZG93KHRhcmdldCwgInNwYW4i
KTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBw
ZW5kQ2hpbGQodGFyZ2V0KTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNv
bnRhaW5lcicpLmlubmVySFRNTCA9CisgICAgICAgICI8ZGl2PjxzcGFuPkhlbGxvLDwvc3Bhbj48
c3Bhbj5jb250ZW50PC9zcGFuPjxzcGFuPldvcmxkLjwvc3Bhbj48L2Rpdj4iOworCisgICAgdmFy
IGVsZW0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9iZXJlbW92ZWQnKTsKKyAgICBlbGVt
LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZWxlbSk7Cit9CisKK3ZhciB0ZXN0RnVuY3MgPSBbCisg
ICAgdGVzdFNlbGVjdElzTnVsbCwKKyAgICB0ZXN0U2VsZWN0SXNJZCwKKyAgICB0ZXN0U2VsZWN0
SXNJZEJ1dE5vdE1hdGNoZWQsCisgICAgdGVzdFNlbGVjdElzSWRCdXROb3RDaGlsZCwKKyAgICB0
ZXN0U2VsZWN0SXNNdWx0aUlkLAorICAgIHRlc3RTZWxlY3RJc1R5cGUsCisgICAgdGVzdFNlbGVj
dElzVHlwZVdpdGhBdHRyaWJ1dGUsCisgICAgdGVzdFNlbGVjdElzVHlwZVdpdGhGaXJzdE9mVHlw
ZSwKKyAgICB0ZXN0U2VsZWN0SXNUeXBlV2l0aEZpcnN0T2ZUeXBlMiwKKyAgICB0ZXN0U2VsZWN0
SXNUeXBlV2l0aExhc3RPZlR5cGUsCisgICAgdGVzdFNlbGVjdElzRGV0YWlscywKKyAgICB0ZXN0
U2VsZWN0SXNEZXRhaWxzMiwKKyAgICB0ZXN0U2VsZWN0V2hlbkR5bmFtaWNhbGx5Q2hpbGRyZW5D
aGFuZ2VkLAorXQorCitmdW5jdGlvbiBkb1Rlc3QoKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOworICAgIGNsZWFuVXAoKTsKKworICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgdGVzdEZ1bmNzLmxlbmd0aDsgKytpKSB7CisgICAgICAgdGVzdEZ1bmNzW2ldKCk7CisgICAg
ICAgY2hlY2soKTsKKyAgICAgICBjbGVhblVwKCk7CisgICAgfQorfQorPC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keSBvbmxvYWQ9ImRvVGVzdCgpIj4KKworPGRpdiBpZD0iYWN0dWFsLWNvbnRhaW5l
ciIgY2xhc3M9ImNvbnRhaW5lciI+PC9kaXY+Cis8ZGl2IGlkPSJleHBlY3QtY29udGFpbmVyIiBj
bGFzcz0iY29udGFpbmVyIj48L2Rpdj4KKzxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgorCis8L2Jv
ZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121229</attachid>
            <date>2012-01-05 00:22:07 -0800</date>
            <delta_ts>2012-01-05 01:02:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-75302-20120105172205.patch</filename>
            <type>text/plain</type>
            <size>36989</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA0MTA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjNkZmJkYmEyYzI3ZjM0
MWIyMzliMWNkMzVkOTNmYWYzMTljYTBkZS4uMGIzNWNmMDliN2ExMzhhNjJmOGY4NjZmZGZiZmU1
NmRiZjkxM2ZiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDEyLTAxLTA0ICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGdvb2dsZS5jb20+CisKKyAgICAgICAgU2hhZG93Q29udGVu
dEVsZW1lbnQgc2hvdWxkIGJlIGFibGUgdG8gdXNlIHF1ZXJ5LgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzUzMDIKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgYSBzZWxl
Y3RvciB0byBxdWVyeSBlbGVtZW50cyBpbiBTaGFkb3dDb250ZW50RWxlbWVudC4KKyAgICAgICAg
VGhpcyBjYW4gYmUgdXNlZCBpbnN0ZWFkIG9mIFNoYWRvd0NvbnRlbnRFbGVtZW50OjpzaG91bGRJ
bmNsdWRlIGluIG1vcmUgc29waGlzdGljYXRlZCB3YXlzLgorCisgICAgICAgIFRlc3Q6IGZhc3Qv
ZG9tL3NoYWRvdy9zaGFkb3ctY29udGVudHMtc2VsZWN0Lmh0bWwKKworICAgICAgICAqIENNYWtl
TGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVGFy
Z2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIGRvbS9TaGFkb3dDb250ZW50RWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTaGFkb3dDb250ZW50RWxlbWVudDo6U2hhZG93Q29udGVudEVsZW1lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhZG93Q29udGVudEVsZW1lbnQ6Om1hdGNoZXNRdWVyeSk6Cisg
ICAgICAgICAgUmV0dXJucyB0cnVlIGlmIE5vZGUgaXMgbWF0Y2hlZCBieSB0aGUgcXVlcnkuCisg
ICAgICAgICogZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpT
aGFkb3dDb250ZW50RWxlbWVudDo6c2VsZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0Nv
bnRlbnRFbGVtZW50OjpzZXRTZWxlY3QpOgorICAgICAgICAqIGRvbS9TaGFkb3dDb250ZW50U2Vs
ZWN0b3JRdWVyeS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Q29udGVudFNl
bGVjdG9yUXVlcnk6OlNoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5KToKKyAgICAgICAgKFdlYkNv
cmU6OlNoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5OjptYXRjaGVzKToKKyAgICAgICAgKiBkb20v
U2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnkuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUv
ZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50LmguCisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dDb250
ZW50U2VsZWN0b3JRdWVyeTo6U2VsZWN0b3JEYXRhOjpTZWxlY3RvckRhdGEpOgorICAgICAgICAq
IGRvbS9TaGFkb3dJbmNsdXNpb25TZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFk
b3dJbmNsdXNpb25TZWxlY3Rvcjo6c2VsZWN0KToKKyAgICAgICAgKiBkb20vU2hhZG93SW5jbHVz
aW9uU2VsZWN0b3IuaDoKKyAgICAgICAgKiBodG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEZXRhaWxzQ29udGVudEVsZW1lbnQ6OkRldGFpbHNDb250ZW50RWxl
bWVudCk6IFJlLWltcGxlbWVudGVkIHVzaW5nIHF1ZXJ5LgorICAgICAgICAoV2ViQ29yZTo6RGV0
YWlsc1N1bW1hcnlFbGVtZW50OjpEZXRhaWxzU3VtbWFyeUVsZW1lbnQpOiBkaXR0by4KKyAgICAg
ICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6
OmNyZWF0ZVNoYWRvd0NvbnRlbnRFbGVtZW50KToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFs
cy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKwogMjAxMi0wMS0wNCAgSmFt
ZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0g
UmVtb3ZlIGNocm9taXVtIGNvbXBvc2l0b3Igc3VwcG9ydCBmb3IgdW51c2VkIHpvb21BbmltYXRv
clRyYW5zZm9ybQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9T
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA2ODhlMGYxNDEzZDk5Yjg0OGQzNGY1
ODA4MjYwNDBjNTNlYzA3Y2U3Li5hODAyMWIxODNkOTY2MDJhY2FiMzQ2NWY4OGE5MTZkMmRiOTRk
NjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNTk0LDYgKzU5NCw3IEBAIFNFVChXZWJDb3Jl
X1NPVVJDRVMKICAgICBkb20vU2VjdXJpdHlDb250ZXh0LmNwcAogICAgIGRvbS9TZWxlY3RvclF1
ZXJ5LmNwcAogICAgIGRvbS9TaGFkb3dDb250ZW50RWxlbWVudC5jcHAKKyAgICBkb20vU2hhZG93
Q29udGVudFNlbGVjdG9yUXVlcnkuY3BwCiAgICAgZG9tL1NoYWRvd0luY2x1c2lvblNlbGVjdG9y
LmNwcAogICAgIGRvbS9TaGFkb3dSb290LmNwcAogICAgIGRvbS9TcGFjZVNwbGl0U3RyaW5nLmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggZWFkNmRhZGQzZmQwZmIyNWI4MzAy
NDk1MjQ3Yjc3YTk1OWM3ZmNkMy4uOWQ4MzdmNTY1NzkyN2MwZDU3OWFiNWQ2YjIyODQ1YzNjZDhh
ZWFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0xNjQ1LDYgKzE2NDUsOCBA
QCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5
LmggXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dDb250ZW50RWxlbWVudC5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dDb250ZW50RWxlbWVudC5oIFwKKwlTb3VyY2UvV2ViQ29y
ZS9kb20vU2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnkuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9k
b20vU2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnkuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1No
YWRvd0luY2x1c2lvblNlbGVjdG9yLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0lu
Y2x1c2lvblNlbGVjdG9yLmggXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcCBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUv
VGFyZ2V0LnByaQppbmRleCBiMTJmNWU1Nzg2Njg3ZDUwNDBjZmMzZTIxM2RmNDVjYjU3MTYxMjQ3
Li5lOWE0NjE4NzE1NzA5NDVkNDZlYTY3ZGE5YjYyMjQ1NTBiY2E1NzczIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkK
QEAgLTU2MCw2ICs1NjAsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBkb20vU2VjdXJpdHlDb250ZXh0
LmNwcCBcCiAgICAgZG9tL1NlbGVjdG9yUXVlcnkuY3BwIFwKICAgICBkb20vU2hhZG93Q29udGVu
dEVsZW1lbnQuY3BwIFwKKyAgICBkb20vU2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnkuY3BwIFwK
ICAgICBkb20vU2hhZG93SW5jbHVzaW9uU2VsZWN0b3IuY3BwIFwKICAgICBkb20vU2hhZG93Um9v
dC5jcHAgXAogICAgIGRvbS9TcGFjZVNwbGl0U3RyaW5nLmNwcCBcCkBAIC0xNjUzLDYgKzE2NTQs
NyBAQCBIRUFERVJTICs9IFwKICAgICBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIFwKICAg
ICBkb20vU2VsZWN0b3JRdWVyeS5oIFwKICAgICBkb20vU2hhZG93Q29udGVudEVsZW1lbnQuaCBc
CisgICAgZG9tL1NoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmggXAogICAgIGRvbS9TaGFkb3dJ
bmNsdXNpb25TZWxlY3Rvci5oIFwKICAgICBkb20vU2hhZG93Um9vdC5oIFwKICAgICBkb20vU3Bh
Y2VTcGxpdFN0cmluZy5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCA4MzA1ZmNlZDhlYWY2MzA5Zjdl
NmJjOWJmNzYxYjAyMWFjMDQ0ODg1Li5iZDc1YjQ5ODEwNzJmYTgyNGZkZDA1OGVmM2FmYTNkMTdh
ZjM5ZGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0xMDQ3LDYgKzEwNDcsNyBAQAogICAgICAgICAg
ICAgJ2RvbS9TY3JpcHRSdW5uZXIuaCcsCiAgICAgICAgICAgICAnZG9tL1NoYWRvd1Jvb3QuaCcs
CiAgICAgICAgICAgICAnZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50LmgnLAorICAgICAgICAgICAg
J2RvbS9TaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeS5oJywKICAgICAgICAgICAgICdkb20vU3Bh
Y2VTcGxpdFN0cmluZy5oJywKICAgICAgICAgICAgICdkb20vU3R5bGVkRWxlbWVudC5oJywKICAg
ICAgICAgICAgICdkb20vVGV4dC5oJywKQEAgLTU0MjQsNiArNTQyNSw4IEBACiAgICAgICAgICAg
ICAnZG9tL1NlbGVjdG9yUXVlcnkuaCcsCiAgICAgICAgICAgICAnZG9tL1NoYWRvd0NvbnRlbnRF
bGVtZW50LmNwcCcsCiAgICAgICAgICAgICAnZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50LmgnLAor
ICAgICAgICAgICAgJ2RvbS9TaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeS5jcHAnLAorICAgICAg
ICAgICAgJ2RvbS9TaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeS5oJywKICAgICAgICAgICAgICdk
b20vU2hhZG93SW5jbHVzaW9uU2VsZWN0b3IuY3BwJywKICAgICAgICAgICAgICdkb20vU2hhZG93
SW5jbHVzaW9uU2VsZWN0b3IuaCcsCiAgICAgICAgICAgICAnZG9tL1NoYWRvd1Jvb3QuY3BwJywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggZDBj
ZjM5NWU5M2JmZDg3YjFmY2FiYWFiNzhkZjZmYmU1OWI5Y2JiYy4uMTgwN2JiNDZjYmFmMTJjNDdk
MjQ2ZWRjYWM2M2EyZjU4OGRmNWE2NCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2oKQEAgLTUxMDk0LDYgKzUxMDk0LDYyIEBACiAJCQkJPgogCQkJPC9G
aWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxTaGFkb3dDb250ZW50U2Vs
ZWN0b3JRdWVyeS5jcHAiCisJCQkJPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1l
PSJEZWJ1Z3xXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJ
CQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9G
aWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVs
ZWFzZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJ
PFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxl
Q29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWdf
Q2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJ
PgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJ
CQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1l
PSJSZWxlYXNlX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRy
dWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJ
CQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24K
KwkJCQkJTmFtZT0iRGVidWdfQWxsfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1
ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJ
CQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgor
CQkJCQlOYW1lPSJQcm9kdWN0aW9ufFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1
ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJ
CQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxTaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeS5oIgorCQkJ
CT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cU2hhZG93
SW5jbHVzaW9uU2VsZWN0b3IuY3BwIgogCQkJCT4KIAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCA3ZjhiZmM3YWU4MjI3MzFhZTNhN2M0ZGQ0NDYxNzZiOTJlODZlM2E1Li5hZTllNjRlNTU1YTgw
OWIzMzA0YjA0OTQzNDkyNWU3M2UwYmMzNjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNTYwLDYgKzE1NjAsOCBAQAogCQk1
M0M4Mjk4RTEzRDhEOTI3MDBERTJERUIgLyogUmVuZGVyRmxleGlibGVCb3guaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzQzgyOThDMTNEOEQ5MjcwMERF
MkRFQiAvKiBSZW5kZXJGbGV4aWJsZUJveC5oICovOyB9OwogCQk1NTBBMEJDOTA4NUY2MDM5MDA3
MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1NTBBMEJDNzA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFt
ZS5jcHAgKi87IH07CiAJCTU1MEEwQkNBMDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1l
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTBBMEJD
ODA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTU3MERCQTgxMTRCNTgwNDkwMERBRUZBMCAv
KiBTaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzBEQjdBODE0QjU2OTZBMDBEQUVGQTAgLyogU2hhZG93
Q29udGVudFNlbGVjdG9yUXVlcnkuY3BwICovOyB9OworCQk1NzBEQkE4MjE0QjU4MDRCMDBEQUVG
QTAgLyogU2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MERCN0E5MTRCNTY5NkEwMERBRUZBMCAvKiBTaGFk
b3dDb250ZW50U2VsZWN0b3JRdWVyeS5oICovOyB9OwogCQk1OTA1QURCRjEzMDJGM0NFMDBGMTE2
REYgLyogWE1MVHJlZVZpZXdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1OTA1QURCRDEzMDJGM0NFMDBGMTE2REYgLyogWE1MVHJlZVZpZXdlci5j
cHAgKi87IH07CiAJCTU5MDVBREMwMTMwMkYzQ0UwMEYxMTZERiAvKiBYTUxUcmVlVmlld2VyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OTA1QURCRTEz
MDJGM0NFMDBGMTE2REYgLyogWE1MVHJlZVZpZXdlci5oICovOyB9OwogCQk1OTBFMUI0OTExRTRF
RjRCMDA2OUY3ODQgLyogRGV2aWNlT3JpZW50YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU5MEUxQjQ4MTFFNEVGNEIwMDY5Rjc4NCAvKiBEZXZp
Y2VPcmllbnRhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CkBAIC04ODM3LDYgKzg4MzksOCBAQAogCQk1M0M4Mjk4QzEzRDhEOTI3MDBERTJERUIg
LyogUmVuZGVyRmxleGlibGVCb3guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVuZGVyRmxleGlibGVCb3guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTUwQTBC
QzcwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUXVhbGlmaWVkTmFtZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9Owog
CQk1NTBBMEJDODA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBRdWFsaWZpZWROYW1lLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9Owor
CQk1NzBEQjdBODE0QjU2OTZBMDBEQUVGQTAgLyogU2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnku
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2hhZG93Q29udGVudFNl
bGVjdG9yUXVlcnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1NzBEQjdBOTE0
QjU2OTZBMDBEQUVGQTAgLyogU2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnkuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTkwNUFEQkQxMzAyRjNDRTAwRjExNkRGIC8qIFhN
TFRyZWVWaWV3ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gWE1M
VHJlZVZpZXdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU5MDVBREJFMTMw
MkYzQ0UwMEYxMTZERiAvKiBYTUxUcmVlVmlld2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFhNTFRyZWVWaWV3ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTkwRTFCNDgxMUU0RUY0QjAwNjlGNzg0IC8qIERldmljZU9yaWVudGF0aW9uLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERldmljZU9yaWVudGF0aW9uLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0yMTUwNiw2ICsyMTUxMCw4IEBACiAJCQkJRTQ1MzIyQUExNDBD
RTI2NzAwNUEwRjkyIC8qIFNlbGVjdG9yUXVlcnkuaCAqLywKIAkJCQlBNzY2Q0Y4QjEzODEwRTBD
MDAxMUEwQjMgLyogU2hhZG93Q29udGVudEVsZW1lbnQuY3BwICovLAogCQkJCUE3NEMyRDNCMTM4
MTFFMEQwMEY4MzU3MiAvKiBTaGFkb3dDb250ZW50RWxlbWVudC5oICovLAorCQkJCTU3MERCN0E4
MTRCNTY5NkEwMERBRUZBMCAvKiBTaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeS5jcHAgKi8sCisJ
CQkJNTcwREI3QTkxNEI1Njk2QTAwREFFRkEwIC8qIFNoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5
LmggKi8sCiAJCQkJQTcxQzMwQjYxMzgxMjY1RTAwREJDMzUxIC8qIFNoYWRvd0luY2x1c2lvblNl
bGVjdG9yLmNwcCAqLywKIAkJCQlBNzFDMzBCNzEzODEyNjVFMDBEQkMzNTEgLyogU2hhZG93SW5j
bHVzaW9uU2VsZWN0b3IuaCAqLywKIAkJCQlBNkQxNjk2MTEzNDZCNDlCMDAwRUI3NzAgLyogU2hh
ZG93Um9vdC5jcHAgKi8sCkBAIC0yNDM2MSw2ICsyNDM2Nyw3IEBACiAJCQkJNDk4NzcwRTkxMjQy
QzUzNTAwMjIyNkJBIC8qIFNoYWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzREQ0NTAxMkY1
RUExQjAwMEQ5MTkwIC8qIFNoYWRvd0JsdXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3NEMyRDND
MTM4MTFFMEQwMEY4MzU3MiAvKiBTaGFkb3dDb250ZW50RWxlbWVudC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNTcwREJBODIxNEI1ODA0QjAwREFFRkEwIC8qIFNoYWRvd0NvbnRlbnRTZWxlY3RvclF1
ZXJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzVFQjhDNDBFODIwMzFCMDBCMjU5NjUgLyogU2hh
ZG93RGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcxQzMwQjkxMzgxMjY1RTAwREJDMzUxIC8q
IFNoYWRvd0luY2x1c2lvblNlbGVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNkQxNjk2NDEz
NDZCNEMxMDAwRUI3NzAgLyogU2hhZG93Um9vdC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzM4NSw2
ICsyNzM5Miw3IEBACiAJCQkJNDk4NzcwRTgxMjQyQzUzNTAwMjIyNkJBIC8qIFNoYWRlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRjNERDQ0RjEyRjVFQTFCMDAwRDkxOTAgLyogU2hhZG93Qmx1
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzY2Q0Y4QzEzODEwRTBDMDAxMUEwQjMgLyogU2hh
ZG93Q29udGVudEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTcwREJBODExNEI1ODA0
OTAwREFFRkEwIC8qIFNoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUJDNUVCOEMzMEU4MjAzMUIwMEIyNTk2NSAvKiBTaGFkb3dEYXRhLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUE3MUMzMEI4MTM4MTI2NUUwMERCQzM1MSAvKiBTaGFkb3dJbmNsdXNpb25T
ZWxlY3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNkQxNjk2MjEzNDZCNDlCMDAwRUI3NzAg
LyogU2hhZG93Um9vdC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9TaGFkb3dDb250ZW50RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hh
ZG93Q29udGVudEVsZW1lbnQuY3BwCmluZGV4IGVjZWU2ZDBjN2VlNzZmZGQ3MjVlMmZkY2Y4NzJk
ZDJiYjkzYzk3YmIuLjQ0ZWIyOThkY2ZkYTMwZDEyNjgxNzc2Mjk2YWU3OTM3NDJiZmExNjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dDb250ZW50RWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50LmNwcApAQCAtMjgsNiAr
MjgsNyBAQAogI2luY2x1ZGUgIlNoYWRvd0NvbnRlbnRFbGVtZW50LmgiCiAKICNpbmNsdWRlICJI
VE1MTmFtZXMuaCIKKyNpbmNsdWRlICJTaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeS5oIgogI2lu
Y2x1ZGUgIlNoYWRvd0luY2x1c2lvblNlbGVjdG9yLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5o
IgogCkBAIC0zOSw5ICs0MCwxMCBAQCBQYXNzUmVmUHRyPFNoYWRvd0NvbnRlbnRFbGVtZW50PiBT
aGFkb3dDb250ZW50RWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudAogICAgIHJldHVy
biBhZG9wdFJlZihuZXcgU2hhZG93Q29udGVudEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsK
IH0KIAotU2hhZG93Q29udGVudEVsZW1lbnQ6OlNoYWRvd0NvbnRlbnRFbGVtZW50KGNvbnN0IFF1
YWxpZmllZE5hbWUmIG5hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKK1NoYWRvd0NvbnRlbnRFbGVt
ZW50OjpTaGFkb3dDb250ZW50RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBEb2N1
bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgc2VsZWN0KQogICAgIDogU3R5bGVkRWxlbWVu
dChuYW1lLCBkb2N1bWVudCwgQ3JlYXRlSFRNTEVsZW1lbnQpCiAgICAgLCBtX2luY2x1c2lvbnMo
YWRvcHRQdHIobmV3IFNoYWRvd0luY2x1c2lvbkxpc3QoKSkpCisgICAgLCBtX3NlbGVjdChzZWxl
Y3QpCiB7CiB9CiAKQEAgLTc2LDEwICs3OCwxNiBAQCB2b2lkIFNoYWRvd0NvbnRlbnRFbGVtZW50
OjpkZXRhY2goKQogICAgIFN0eWxlZEVsZW1lbnQ6OmRldGFjaCgpOwogfQogCi1ib29sIFNoYWRv
d0NvbnRlbnRFbGVtZW50OjpzaG91bGRJbmNsdWRlKE5vZGUqKQorYm9vbCBTaGFkb3dDb250ZW50
RWxlbWVudDo6bWF0Y2hlc1F1ZXJ5KGNvbnN0IFNoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5JiBx
dWVyeSwgTm9kZSogbm9kZSkKIHsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KKyAgICBBU1NFUlQobm9k
ZSk7CisgICAgaWYgKCFub2RlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAobV9z
ZWxlY3QuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKIAorICAgIHJldHVybiBxdWVy
eS5tYXRjaGVzKG5vZGUpOworfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
U2hhZG93Q29udGVudEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dDb250ZW50
RWxlbWVudC5oCmluZGV4IDdiMzY2NjIxYjdiOTYzYTQzMGZjMTQzMDliZDQ2NWVhZWRmYTA0YTQu
LmU5NjY0YWI0ZTU4NjUzY2E1YzQzZGE4ZWMxY2Q2M2M5NjcyODcyOGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dDb250ZW50RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9TaGFkb3dDb250ZW50RWxlbWVudC5oCkBAIC0zNiw2ICszNiw3IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgU2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnk7CiBjbGFz
cyBTaGFkb3dJbmNsdXNpb25MaXN0OwogCiAvLyBOT1RFOiBDdXJyZW50IGltcGxlbWVudGF0aW9u
IGRvZXNuJ3Qgc3VwcG9ydCBkeW5hbWljIGluc2VydGlvbi9kZWxldGlvbiBvZiBTaGFkb3dDb250
ZW50RWxlbWVudC4KQEAgLTQ1LDE0ICs0NiwxOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8U2hhZG93Q29udGVudEVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCopOwogCiAgICAgdmly
dHVhbCB+U2hhZG93Q29udGVudEVsZW1lbnQoKTsKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSW5j
bHVkZShOb2RlKik7CiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpOwogICAgIHZpcnR1YWwgdm9p
ZCBkZXRhY2goKTsKIAorICAgIGNvbnN0IFN0cmluZyYgc2VsZWN0KCkgeyByZXR1cm4gbV9zZWxl
Y3Q7IH0KKyAgICB2b2lkIHNldFNlbGVjdChjb25zdCBTdHJpbmcmIHNlbGVjdCkgeyBtX3NlbGVj
dCA9IHNlbGVjdDsgfQorCisgICAgYm9vbCBtYXRjaGVzUXVlcnkoY29uc3QgU2hhZG93Q29udGVu
dFNlbGVjdG9yUXVlcnkmLCBOb2RlKik7CisKICAgICBjb25zdCBTaGFkb3dJbmNsdXNpb25MaXN0
KiBpbmNsdXNpb25zKCkgY29uc3QgeyByZXR1cm4gbV9pbmNsdXNpb25zLmdldCgpOyB9CiAKIHBy
b3RlY3RlZDoKLSAgICBTaGFkb3dDb250ZW50RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwg
RG9jdW1lbnQqKTsKKyAgICBTaGFkb3dDb250ZW50RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1l
JiwgRG9jdW1lbnQqLCBjb25zdCBTdHJpbmcmIHNlbGVjdCA9IFN0cmluZygpKTsKIAogcHJpdmF0
ZToKICAgICB2aXJ0dWFsIGJvb2wgaXNDb250ZW50RWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHRy
dWU7IH0KQEAgLTYwLDYgKzY1LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFJlbmRlck9iamVj
dCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopIHsgcmV0dXJuIDA7
IH0KIAogICAgIE93blB0cjxTaGFkb3dJbmNsdXNpb25MaXN0PiBtX2luY2x1c2lvbnM7CisgICAg
U3RyaW5nIG1fc2VsZWN0OwogfTsKIAogaW5saW5lIFNoYWRvd0NvbnRlbnRFbGVtZW50KiB0b1No
YWRvd0NvbnRlbnRFbGVtZW50KE5vZGUqIG5vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L1NoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYTdmYjFjNDlkMTBi
ZDEzOWVmMzMwZTMyMmE0OTJhM2Q4MjRkZjhiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL1NoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmNwcApAQCAtMCwwICsxLDc3IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisg
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNoYWRvd0NvbnRlbnRTZWxlY3RvclF1
ZXJ5LmgiCisKKyNpbmNsdWRlICJDU1NQYXJzZXIuaCIKKyNpbmNsdWRlICJDU1NTZWxlY3Rvckxp
c3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitTaGFkb3dDb250ZW50U2VsZWN0b3JRdWVy
eTo6U2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnkoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBT
dHJpbmcmIHF1ZXJ5U2VsZWN0b3IpCisgICAgOiBtX3NlbGVjdG9yQ2hlY2tlcihkb2N1bWVudCwg
IWRvY3VtZW50LT5pblF1aXJrc01vZGUoKSkKK3sKKyAgICBBU1NFUlQoZG9jdW1lbnQpOworCisg
ICAgbV9zZWxlY3RvckNoZWNrZXIuc2V0Q29sbGVjdGluZ1J1bGVzT25seSh0cnVlKTsKKworICAg
IENTU1BhcnNlciBwYXJzZXIodHJ1ZSk7CisgICAgcGFyc2VyLnBhcnNlU2VsZWN0b3IocXVlcnlT
ZWxlY3RvciwgZG9jdW1lbnQsIG1fc2VsZWN0b3JMaXN0KTsKKworICAgIGZvciAoQ1NTU2VsZWN0
b3IqIHNlbGVjdG9yID0gbV9zZWxlY3Rvckxpc3QuZmlyc3QoKTsgc2VsZWN0b3I7IHNlbGVjdG9y
ID0gQ1NTU2VsZWN0b3JMaXN0OjpuZXh0KHNlbGVjdG9yKSkKKyAgICAgICAgbV9zZWxlY3RvcnMu
YXBwZW5kKFNlbGVjdG9yRGF0YShzZWxlY3RvciwgU2VsZWN0b3JDaGVja2VyOjppc0Zhc3RDaGVj
a2FibGVTZWxlY3RvcihzZWxlY3RvcikpKTsKK30KKworYm9vbCBTaGFkb3dDb250ZW50U2VsZWN0
b3JRdWVyeTo6bWF0Y2hlcyhOb2RlKiBub2RlKSBjb25zdAoreworICAgIGlmICghbm9kZSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgdW5zaWduZWQgc2VsZWN0b3JDb3VudCA9IG1fc2Vs
ZWN0b3JzLnNpemUoKTsKKyAgICBmcHJpbnRmKHN0ZGVyciwgInNlbGVjdG9yQ291bnQgPSAlZFxu
IiwgKGludCkgc2VsZWN0b3JDb3VudCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNl
bGVjdG9yQ291bnQ7ICsraSkgeworICAgICAgICBpZiAobWF0Y2hlcyhub2RlLCBtX3NlbGVjdG9y
c1tpXSkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK2Jvb2wgU2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnk6Om1hdGNoZXMoTm9kZSog
dGFyZ2V0Tm9kZSwgY29uc3QgU2VsZWN0b3JEYXRhJiBzZWxlY3RvckRhdGEpIGNvbnN0Cit7Cisg
ICAgQVNTRVJUKHRhcmdldE5vZGUpOworCisgICAgaWYgKCF0YXJnZXROb2RlLT5pc0VsZW1lbnRO
b2RlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBz
dGF0aWNfY2FzdDxFbGVtZW50Kj4odGFyZ2V0Tm9kZSk7CisgICAgLy8gcmV0dXJuIG1fc2VsZWN0
b3JDaGVja2VyLmNoZWNrU2VsZWN0b3Ioc2VsZWN0b3JEYXRhLnNlbGVjdG9yLCBlbGVtZW50LCBz
ZWxlY3RvckRhdGEuaXNGYXN0Q2hlY2thYmxlKTsKKyAgICByZXR1cm4gbV9zZWxlY3RvckNoZWNr
ZXIuY2hlY2tTZWxlY3RvcihzZWxlY3RvckRhdGEuc2VsZWN0b3IsIGVsZW1lbnQsIGZhbHNlKTsK
K30KKworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Q29udGVudFNl
bGVjdG9yUXVlcnkuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dDb250ZW50U2VsZWN0b3JR
dWVyeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmU0Yjg5NzM0YThhOTYyMTk0Yjg1ZmFhMjNmN2IzNjczYTY1ODk4
OWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Q29udGVudFNl
bGVjdG9yUXVlcnkuaApAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEx
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAq
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTaGFkb3dDb250ZW50U2VsZWN0
b3JRdWVyeV9oCisjZGVmaW5lIFNoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5X2gKKworI2luY2x1
ZGUgIkNTU1NlbGVjdG9yTGlzdC5oIgorI2luY2x1ZGUgIlNlbGVjdG9yQ2hlY2tlci5oIgorI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBEb2N1bWVudDsKK2NsYXNzIE5vZGU7CisKK2NsYXNzIFNoYWRv
d0NvbnRlbnRTZWxlY3RvclF1ZXJ5IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTaGFkb3dD
b250ZW50U2VsZWN0b3JRdWVyeSk7CitwdWJsaWM6CisgICAgU2hhZG93Q29udGVudFNlbGVjdG9y
UXVlcnkoRG9jdW1lbnQqLCBjb25zdCBTdHJpbmcmKTsKKworICAgIGJvb2wgbWF0Y2hlcyhOb2Rl
KikgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgc3RydWN0IFNlbGVjdG9yRGF0YSB7CisgICAgICAg
IFNlbGVjdG9yRGF0YShDU1NTZWxlY3Rvciogc2VsZWN0b3IsIGJvb2wgaXNGYXN0Q2hlY2thYmxl
KQorICAgICAgICAgICAgOiBzZWxlY3RvcihzZWxlY3RvcikKKyAgICAgICAgICAgICwgaXNGYXN0
Q2hlY2thYmxlKGlzRmFzdENoZWNrYWJsZSkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAg
ICAgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yOworICAgICAgICBib29sIGlzRmFzdENoZWNrYWJsZTsK
KyAgICB9OworCisgICAgYm9vbCBjYW5Vc2VJZExvb2t1cChjb25zdCBTZWxlY3RvckRhdGEmLCBE
b2N1bWVudCopIGNvbnN0OworICAgIGJvb2wgbWF0Y2hlcyhOb2RlKiB0YXJnZXROb2RlLCBjb25z
dCBTZWxlY3RvckRhdGEmKSBjb25zdDsKKworICAgIFZlY3RvcjxTZWxlY3RvckRhdGE+IG1fc2Vs
ZWN0b3JzOworICAgIENTU1NlbGVjdG9yTGlzdCBtX3NlbGVjdG9yTGlzdDsKKyAgICBTZWxlY3Rv
ckNoZWNrZXIgbV9zZWxlY3RvckNoZWNrZXI7Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0luY2x1c2lvblNlbGVjdG9yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TaGFkb3dJbmNsdXNpb25TZWxlY3Rvci5jcHAKaW5kZXggOTg0MWY1NTY0
ODg3Yzg5NjM0NTM3NDlmMjM3MTY2Y2EyZTQ1ZTEwNS4uYjMyNjFlMDgxYTQwYmJiYTlmMmYyMjZh
NjYwZjZhYzM2YzIxMDk1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0lu
Y2x1c2lvblNlbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93SW5jbHVz
aW9uU2VsZWN0b3IuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiU2hhZG93SW5jbHVz
aW9uU2VsZWN0b3IuaCIKIAogI2luY2x1ZGUgIlNoYWRvd0NvbnRlbnRFbGVtZW50LmgiCisjaW5j
bHVkZSAiU2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnkuaCIKICNpbmNsdWRlICJTaGFkb3dSb290
LmgiCiAKIApAQCAtMTExLDExICsxMTIsMTIgQEAgdm9pZCBTaGFkb3dJbmNsdXNpb25TZWxlY3Rv
cjo6c2VsZWN0KFNoYWRvd0NvbnRlbnRFbGVtZW50KiBjb250ZW50RWxlbWVudCwgU2hhZG8KIHsK
ICAgICBBU1NFUlQoaW5jbHVzaW9ucy0+aXNFbXB0eSgpKTsKIAorICAgIFNoYWRvd0NvbnRlbnRT
ZWxlY3RvclF1ZXJ5IHF1ZXJ5KGNvbnRlbnRFbGVtZW50LT5kb2N1bWVudCgpLCBjb250ZW50RWxl
bWVudC0+c2VsZWN0KCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9jYW5kaWRhdGVz
LnNpemUoKTsgKytpKSB7CiAgICAgICAgIE5vZGUqIGNoaWxkID0gbV9jYW5kaWRhdGVzW2ldLmdl
dCgpOwogICAgICAgICBpZiAoIWNoaWxkKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAg
IGlmICghY29udGVudEVsZW1lbnQtPnNob3VsZEluY2x1ZGUoY2hpbGQpKQorICAgICAgICBpZiAo
IWNvbnRlbnRFbGVtZW50LT5tYXRjaGVzUXVlcnkocXVlcnksIGNoaWxkKSkKICAgICAgICAgICAg
IGNvbnRpbnVlOwogCiAgICAgICAgIFJlZlB0cjxTaGFkb3dJbmNsdXNpb24+IGluY2x1c2lvbiA9
IFNoYWRvd0luY2x1c2lvbjo6Y3JlYXRlKGNvbnRlbnRFbGVtZW50LCBjaGlsZCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93SW5jbHVzaW9uU2VsZWN0b3IuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TaGFkb3dJbmNsdXNpb25TZWxlY3Rvci5oCmluZGV4IGYxYWRhZWUzZjU0
M2E4MWMzZmVmYmZjNDZlMDFiMWZkN2YzYjBlOGYuLmQxYTg3MTc0NDFiMTljMmQ2YWZhMGU4ZjM0
MDc1ODQxMDIxOGI0ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dJbmNs
dXNpb25TZWxlY3Rvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dJbmNsdXNpb25T
ZWxlY3Rvci5oCkBAIC0xMzcsNyArMTM3LDYgQEAgcHVibGljOgogICAgIHZvaWQgZGlkU2VsZWN0
KCk7CiAgICAgYm9vbCBoYXNDYW5kaWRhdGVzKCkgY29uc3QgeyByZXR1cm4gIW1fY2FuZGlkYXRl
cy5pc0VtcHR5KCk7IH0KIAotCiBwcml2YXRlOgogICAgIHZvaWQgcmVtb3ZlRnJvbVNldChTaGFk
b3dJbmNsdXNpb25MaXN0Kik7CiAgICAgdm9pZCBhZGRUb1NldChTaGFkb3dJbmNsdXNpb25MaXN0
Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHAKaW5kZXggZmFk
OWFmODA0NDE0NTcwYzFlNzZjYTI4YzVlYjViMTYyN2M3MDIyMC4uNTFhYWRjMGM2ZmMyNjRjZDFj
ZmJjYmJiNzcxZTI4YmE0OTZhMDRkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRGV0YWlsc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFp
bHNFbGVtZW50LmNwcApAQCAtNDIsMTEgKzQyLDkgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAg
IERldGFpbHNDb250ZW50RWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCi0gICAgICAgIDogU2hh
ZG93Q29udGVudEVsZW1lbnQoSFRNTE5hbWVzOjpkaXZUYWcsIGRvY3VtZW50KQorICAgICAgICA6
IFNoYWRvd0NvbnRlbnRFbGVtZW50KEhUTUxOYW1lczo6ZGl2VGFnLCBkb2N1bWVudCwgIiIpCiAg
ICAgewogICAgIH0KLQotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRJbmNsdWRlKE5vZGUqKTsKIH07
CiAKIFBhc3NSZWZQdHI8RGV0YWlsc0NvbnRlbnRFbGVtZW50PiBEZXRhaWxzQ29udGVudEVsZW1l
bnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCkBAIC01NCwyNCArNTIsMTUgQEAgUGFzc1Jl
ZlB0cjxEZXRhaWxzQ29udGVudEVsZW1lbnQ+IERldGFpbHNDb250ZW50RWxlbWVudDo6Y3JlYXRl
KERvY3VtZW50KiBkb2N1bWUKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERldGFpbHNDb250ZW50
RWxlbWVudChkb2N1bWVudCkpOwogfQogCi1ib29sIERldGFpbHNDb250ZW50RWxlbWVudDo6c2hv
dWxkSW5jbHVkZShOb2RlKiBub2RlKQotewotICAgIEhUTUxEZXRhaWxzRWxlbWVudCogZGV0YWls
cyA9IHN0YXRpY19jYXN0PEhUTUxEZXRhaWxzRWxlbWVudCo+KHNoYWRvd0FuY2VzdG9yTm9kZSgp
KTsKLSAgICByZXR1cm4gZGV0YWlscy0+bWFpblN1bW1hcnkoKSAhPSBub2RlOwotfQotCi0KIGNs
YXNzIERldGFpbHNTdW1tYXJ5RWxlbWVudCA6IHB1YmxpYyBTaGFkb3dDb250ZW50RWxlbWVudCB7
CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8RGV0YWlsc1N1bW1hcnlFbGVtZW50PiBj
cmVhdGUoRG9jdW1lbnQqKTsKIAogcHJpdmF0ZToKICAgICBEZXRhaWxzU3VtbWFyeUVsZW1lbnQo
RG9jdW1lbnQqIGRvY3VtZW50KQotICAgICAgICA6IFNoYWRvd0NvbnRlbnRFbGVtZW50KEhUTUxO
YW1lczo6ZGl2VGFnLCBkb2N1bWVudCkKKyAgICAgICAgOiBTaGFkb3dDb250ZW50RWxlbWVudChI
VE1MTmFtZXM6OmRpdlRhZywgZG9jdW1lbnQsICJzdW1tYXJ5OmZpcnN0LW9mLXR5cGUiKQogICAg
IHsKICAgICB9Ci0KLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSW5jbHVkZShOb2RlKik7CiB9Owog
CiBQYXNzUmVmUHRyPERldGFpbHNTdW1tYXJ5RWxlbWVudD4gRGV0YWlsc1N1bW1hcnlFbGVtZW50
OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtNzksMTMgKzY4LDYgQEAgUGFzc1JlZlB0
cjxEZXRhaWxzU3VtbWFyeUVsZW1lbnQ+IERldGFpbHNTdW1tYXJ5RWxlbWVudDo6Y3JlYXRlKERv
Y3VtZW50KiBkb2N1bWUKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERldGFpbHNTdW1tYXJ5RWxl
bWVudChkb2N1bWVudCkpOwogfQogCi1ib29sIERldGFpbHNTdW1tYXJ5RWxlbWVudDo6c2hvdWxk
SW5jbHVkZShOb2RlKiBub2RlKQotewotICAgIEhUTUxEZXRhaWxzRWxlbWVudCogZGV0YWlscyA9
IHN0YXRpY19jYXN0PEhUTUxEZXRhaWxzRWxlbWVudCo+KHNoYWRvd0FuY2VzdG9yTm9kZSgpKTsK
LSAgICByZXR1cm4gZGV0YWlscy0+bWFpblN1bW1hcnkoKSA9PSBub2RlOwotfQotCi0KIFBhc3NS
ZWZQdHI8SFRNTERldGFpbHNFbGVtZW50PiBIVE1MRGV0YWlsc0VsZW1lbnQ6OmNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiB7CiAgICAgUmVm
UHRyPEhUTUxEZXRhaWxzRWxlbWVudD4gcmVzdWx0ID0gYWRvcHRSZWYobmV3IEhUTUxEZXRhaWxz
RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
Y3BwCmluZGV4IDE5NWY1NzBlZmYxOGE1M2ZlZGVhN2RlZmMwYTRmZDY4OWQ5ODk0M2UuLjEzYWFi
YmQ4ZmJmY2QyZjllMGM4ODdhZWE2YWI4OTBmM2I4YWY2OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5jcHAKQEAgLTEyNiwxNCArMTI2LDE3IEBAIGJvb2wgSW50ZXJuYWxzOjppc1By
ZWxvYWRlZChEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgdXJsKQogICAgIHJldHVy
biBkb2N1bWVudC0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+aXNQcmVsb2FkZWQodXJsKTsKIH0K
IAotUGFzc1JlZlB0cjxFbGVtZW50PiBJbnRlcm5hbHM6OmNyZWF0ZVNoYWRvd0NvbnRlbnRFbGVt
ZW50KERvY3VtZW50KiBkb2N1bWVudCwgRXhjZXB0aW9uQ29kZSYgZWMpCitQYXNzUmVmUHRyPEVs
ZW1lbnQ+IEludGVybmFsczo6Y3JlYXRlU2hhZG93Q29udGVudEVsZW1lbnQoRG9jdW1lbnQqIGRv
Y3VtZW50LCBjb25zdCBTdHJpbmcmIHNlbGVjdCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAg
aWYgKCFkb2N1bWVudCkgewogICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgcmV0dXJuIFNoYWRvd0NvbnRlbnRFbGVtZW50Ojpj
cmVhdGUoZG9jdW1lbnQpOworICAgIFJlZlB0cjxTaGFkb3dDb250ZW50RWxlbWVudD4gZWxlbSA9
IFNoYWRvd0NvbnRlbnRFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOworICAgIGlmIChlbGVtKQor
ICAgICAgICBlbGVtLT5zZXRTZWxlY3Qoc2VsZWN0KTsKKyAgICByZXR1cm4gZWxlbS5yZWxlYXNl
KCk7CiB9CiAKIEVsZW1lbnQqIEludGVybmFsczo6Z2V0RWxlbWVudEJ5SWRJblNoYWRvd1Jvb3Qo
Tm9kZSogc2hhZG93Um9vdCwgY29uc3QgU3RyaW5nJiBpZCwgRXhjZXB0aW9uQ29kZSYgZWMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCBlYTAwZDE1OGRiNjc3OTA4OWI3ZjUzM2Yw
ZjRkNTI2MTNlYjYxMTM3Li4yNTFkNGEwMmNlNzVhY2JlY2ZkZGNlZGY1MTJkOGI5ODljMzgzY2Fk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgcmVtb3ZlU2hhZG93Um9vdChFbGVtZW50KiBob3N0LCBFeGNlcHRpb25Db2Rl
Jik7CiAgICAgRWxlbWVudCogaW5jbHVkZXJGb3IoTm9kZSosIEV4Y2VwdGlvbkNvZGUmKTsKICAg
ICBTdHJpbmcgc2hhZG93UHNldWRvSWQoRWxlbWVudCosIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBQ
YXNzUmVmUHRyPEVsZW1lbnQ+IGNyZWF0ZVNoYWRvd0NvbnRlbnRFbGVtZW50KERvY3VtZW50Kiwg
RXhjZXB0aW9uQ29kZSYpOworICAgIFBhc3NSZWZQdHI8RWxlbWVudD4gY3JlYXRlU2hhZG93Q29u
dGVudEVsZW1lbnQoRG9jdW1lbnQqLCBjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7CiAg
ICAgRWxlbWVudCogZ2V0RWxlbWVudEJ5SWRJblNoYWRvd1Jvb3QoTm9kZSogc2hhZG93Um9vdCwg
Y29uc3QgU3RyaW5nJiBpZCwgRXhjZXB0aW9uQ29kZSYpOwogCiAjaWYgRU5BQkxFKElOUFVUX0NP
TE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IGQ2MjIyNjA0MzBhNzE2
OWM0YzZhMzUxZTYwNjE5MDUwZjY5MmEyMzEuLjMxMGQzMGM2ZjA5YzgxMjc3ZWNlNGIyMDkyOGZh
NzY5Mjk1Y2NkNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTM1LDcg
KzM1LDcgQEAgbW9kdWxlIHdpbmRvdyB7CiAgICAgICAgIEVsZW1lbnQgaW5jbHVkZXJGb3IoaW4g
Tm9kZSBub2RlKSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIHZvaWQgcmVtb3ZlU2hh
ZG93Um9vdChpbiBFbGVtZW50IGhvc3QpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKICAgICAgICAg
RE9NU3RyaW5nIHNoYWRvd1BzZXVkb0lkKGluIEVsZW1lbnQgZWxlbWVudCkgcmFpc2VzIChET01F
eGNlcHRpb24pOwotICAgICAgICBFbGVtZW50IGNyZWF0ZVNoYWRvd0NvbnRlbnRFbGVtZW50KGlu
IERvY3VtZW50IGRvY3VtZW50KSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgRWxlbWVu
dCBjcmVhdGVTaGFkb3dDb250ZW50RWxlbWVudChpbiBEb2N1bWVudCBkb2N1bWVudCwgaW4gW09w
dGlvbmFsPUNhbGxXaXRoTnVsbFZhbHVlXSBET01TdHJpbmcgc2VsZWN0KSByYWlzZXMoRE9NRXhj
ZXB0aW9uKTsKICAgICAgICAgRWxlbWVudCBnZXRFbGVtZW50QnlJZEluU2hhZG93Um9vdChpbiBO
b2RlIHNoYWRvd1Jvb3QsIGluIERPTVN0cmluZyBpZCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAK
ICNpZiBkZWZpbmVkKEVOQUJMRV9JTlBVVF9DT0xPUikgJiYgRU5BQkxFX0lOUFVUX0NPTE9SCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggMGFiMGJiOWMxYjM1MDFiMWMyZTY1ZDA5ZTYzYmI3NmQyNDdkMGRjZi4uMTU4NWFhMzcy
MjIwMTdlZmQwMDExNDFkNmU3MjE2NDE2NTQ2YWNkYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisy
MDEyLTAxLTA0ICBTaGlueWEgS2F3YW5ha2EgIDxzaGlueWFrQGdvb2dsZS5jb20+CisKKyAgICAg
ICAgU2hhZG93Q29udGVudEVsZW1lbnQgc2hvdWxkIGJlIGFibGUgdG8gdXNlIHF1ZXJ5LgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzUzMDIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0cyBmb3IgU2hh
ZG93Q29udGVudEVsZW1lbnQgcXVlcnkuCisKKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvc2hh
ZG93LWNvbnRlbnRzLXNlbGVjdC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
ZG9tL3NoYWRvdy9zaGFkb3ctY29udGVudHMtc2VsZWN0Lmh0bWw6IEFkZGVkLgorCiAyMDEyLTAx
LTA0ICBLZW5uZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xlLmNvbT4KIAogICAgICAgICBGaXggc2Vt
YW50aWNzIG9mIFdFQktJVF9XRUJHTF9sb3NlX2NvbnRleHQKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctY29udGVudHMtc2VsZWN0LWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctY29udGVudHMtc2VsZWN0LWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi44MjIwMTU5OWU0OGJkYjdiNGE2N2Q2OTE0ZWNlY2U2ZTVhNjI1
ZDQ3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRv
dy1jb250ZW50cy1zZWxlY3QtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1BBU1MKK1BB
U1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MK
K1BBU1MKK1BBU1MKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3No
YWRvdy1jb250ZW50cy1zZWxlY3QuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9z
aGFkb3ctY29udGVudHMtc2VsZWN0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWM2NmEwMThjM2RlODk4Nzg3
ZWQ4NTc0MzM4NDg2ZDA0OGU1MGY5NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvZG9tL3NoYWRvdy9zaGFkb3ctY29udGVudHMtc2VsZWN0Lmh0bWwKQEAgLTAsMCArMSwyNDgg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4KKy8qIHJlbGF0aXZl
IHBvc2l0aW9uaW5nIGVuc3VyZXMgdW5kZXJseWluZyBSZW5kZXJMYXllciAqLworLmNvbnRhaW5l
ciB7CisgICAgcG9zaXRpb246IHJlbGF0aXZlOworfQorPC9zdHlsZT4KKzxzY3JpcHQ+CitmdW5j
dGlvbiBsb2cobWVzc2FnZSkKK3sKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29s
ZSIpLmlubmVySFRNTCArPSAobWVzc2FnZSArICJcbiIpOworfQorCitmdW5jdGlvbiByZW1vdmVB
bGxDaGlsZHJlbihlbGVtKSB7CisgICAgd2hpbGUgKGVsZW0uZmlyc3RDaGlsZCkKKyAgICAgICAg
ZWxlbS5yZW1vdmVDaGlsZChlbGVtLmZpcnN0Q2hpbGQpOworfQorCitmdW5jdGlvbiBjbGVhblVw
KCkgeworICAgIHJlbW92ZUFsbENoaWxkcmVuKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1
YWwtY29udGFpbmVyJykpOworICAgIHJlbW92ZUFsbENoaWxkcmVuKGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdleHBlY3QtY29udGFpbmVyJykpOworfQorCitmdW5jdGlvbiByZW1vdmVDb250YWlu
ZXJMaW5lcyh0ZXh0KQoreworICAgIHZhciBsaW5lcyA9IHRleHQuc3BsaXQoIlxuIik7CisgICAg
bGluZXMuc3BsaWNlKDAsIDIpOworICAgIHJldHVybiBsaW5lcy5qb2luKCJcbiIpOworfQorCitm
dW5jdGlvbiBjaGVjaygpIHsKKyAgICB2YXIgcmVmQ29udGFpbmVyUmVuZGVyVHJlZSA9IGludGVy
bmFscy5lbGVtZW50UmVuZGVyVHJlZUFzVGV4dChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhw
ZWN0LWNvbnRhaW5lcicpKTsKKyAgICB2YXIgcmVmUmVuZGVyVHJlZSA9IHJlbW92ZUNvbnRhaW5l
ckxpbmVzKHJlZkNvbnRhaW5lclJlbmRlclRyZWUpOworCisgICAgdmFyIHRhcmdldENvbnRhaW5l
clJlbmRlclRyZWUgPSBpbnRlcm5hbHMuZWxlbWVudFJlbmRlclRyZWVBc1RleHQoZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKSk7CisgICAgdmFyIHRhcmdldFJlbmRl
clRyZWUgPSByZW1vdmVDb250YWluZXJMaW5lcyh0YXJnZXRDb250YWluZXJSZW5kZXJUcmVlKTsK
KworICAgIGlmICh0YXJnZXRSZW5kZXJUcmVlID09IHJlZlJlbmRlclRyZWUpCisgICAgICAgIGxv
ZygiUEFTUyIpOworICAgIGVsc2UgeworICAgICAgICBsb2coIkZBSUwiKTsKKyAgICAgICAgbG9n
KCJFeHBlY3RlZDoiKTsKKyAgICAgICAgbG9nKHJlZlJlbmRlclRyZWUpOworICAgICAgICBsb2co
IkFjdHVhbDoiKTsKKyAgICAgICAgbG9nKHRhcmdldFJlbmRlclRyZWUpOworICAgIH0KK30KKwor
ZnVuY3Rpb24gYXBwZW5kU2hhZG93KHRhcmdldCwgc2VsZWN0KSB7CisgICAgdmFyIHJvb3QgPSBp
bnRlcm5hbHMuZW5zdXJlU2hhZG93Um9vdCh0YXJnZXQpOworCisgICAgdmFyIGNoaWxkMCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKKyAgICBjaGlsZDAuaW5uZXJIVE1MID0gIkhl
bGxvLCI7CisgICAgcm9vdC5hcHBlbmRDaGlsZChjaGlsZDApOworCisgICAgdmFyIGNvbnRlbnQg
PSBpbnRlcm5hbHMuY3JlYXRlU2hhZG93Q29udGVudEVsZW1lbnQoZG9jdW1lbnQsIHNlbGVjdCk7
CisgICAgcm9vdC5hcHBlbmRDaGlsZChjb250ZW50KTsKKworICAgIHZhciBjaGlsZDEgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CisgICAgY2hpbGQxLmlubmVySFRNTCA9ICJXb3Js
ZC4iOworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY2hpbGQxKTsKK30KKworZnVuY3Rpb24gdGVzdFNl
bGVjdElzTnVsbCgpIHsKKyAgICB2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
ZGl2Jyk7CisgICAgdGFyZ2V0LmlubmVySFRNTCA9ICI8c3Bhbj5jb250ZW50PC9zcGFuPiI7CisK
KyAgICBhcHBlbmRTaGFkb3codGFyZ2V0LCAiIik7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFwcGVuZENoaWxkKHRhcmdldCk7CisgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5pbm5lckhUTUwgPQorICAgICAg
ICAiPGRpdj48c3Bhbj5IZWxsbyw8L3NwYW4+PHNwYW4+Y29udGVudDwvc3Bhbj48c3Bhbj5Xb3Js
ZC48L3NwYW4+PC9kaXY+IjsKK30KKworZnVuY3Rpb24gdGVzdFNlbGVjdElzSWQoKSB7CisgICAg
dmFyIHRhcmdldCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHRhcmdldC5p
bm5lckhUTUwgPSAiPHNwYW4gaWQ9J2Zvbyc+Y29udGVudDwvc3Bhbj48c3BhbiBpZD0nYXp1bnlh
bic+cGVyb3Blcm88L3NwYW4+IjsKKworICAgIGFwcGVuZFNoYWRvdyh0YXJnZXQsICIjZm9vIik7
CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFwcGVu
ZENoaWxkKHRhcmdldCk7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250
YWluZXInKS5pbm5lckhUTUwgPQorICAgICAgICAiPGRpdj48c3Bhbj5IZWxsbyw8L3NwYW4+PHNw
YW4+Y29udGVudDwvc3Bhbj48c3Bhbj5Xb3JsZC48L3NwYW4+PC9kaXY+IjsKK30KKworZnVuY3Rp
b24gdGVzdFNlbGVjdElzSWRCdXROb3RNYXRjaGVkKCkgeworICAgIHZhciB0YXJnZXQgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICB0YXJnZXQuaW5uZXJIVE1MID0gIjxzcGFu
IGlkPSdmb28nPmNvbnRlbnQ8L3NwYW4+PHNwYW4gaWQ9J2F6dW55YW4nPnBlcm9wZXJvPC9zcGFu
PiI7CisKKyAgICBhcHBlbmRTaGFkb3codGFyZ2V0LCAiI2Zvb2JhciIpOworCisgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRDaGlsZCh0YXJnZXQp
OworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVyJykuaW5uZXJI
VE1MID0KKyAgICAgICAgIjxkaXY+PHNwYW4+SGVsbG8sPC9zcGFuPjxzcGFuPldvcmxkLjwvc3Bh
bj48L2Rpdj4iOworfQorCitmdW5jdGlvbiB0ZXN0U2VsZWN0SXNJZEJ1dE5vdENoaWxkKCkgewor
ICAgIHZhciB0YXJnZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICB0YXJn
ZXQuaW5uZXJIVE1MID0gIjxzcGFuPjxzcGFuIGlkPSdmb28nPmNvbnRlbnQ8L3NwYW4+PHNwYW4g
aWQ9J2F6dW55YW4nPnBlcm9wZXJvPC9zcGFuPjwvc3Bhbj4iOworCisgICAgYXBwZW5kU2hhZG93
KHRhcmdldCwgIiNmb28iKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwt
Y29udGFpbmVyJykuYXBwZW5kQ2hpbGQodGFyZ2V0KTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlubmVySFRNTCA9CisgICAgICAgICI8ZGl2PjxzcGFu
PkhlbGxvLDwvc3Bhbj48c3Bhbj5Xb3JsZC48L3NwYW4+PC9kaXY+IjsKK30KKworZnVuY3Rpb24g
dGVzdFNlbGVjdElzTXVsdGlJZCgpIHsKKyAgICB2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnZGl2Jyk7CisgICAgdGFyZ2V0LmlubmVySFRNTCA9ICI8c3BhbiBpZD0nZm9vJz5j
b250ZW50PC9zcGFuPjxzcGFuIGlkPSdhenVueWFuJz5wZXJvcGVybzwvc3Bhbj48c3BhbiBpZD0n
Zm9vJz5jb250ZW50PC9zcGFuPiI7CisKKyAgICBhcHBlbmRTaGFkb3codGFyZ2V0LCAiI2ZvbyIp
OworCisgICAgLy8gQWxsIG1hdGNoZWQgZWxlbWVudHMgd2lsbCBiZSBzZWxlY3RlZC4KKyAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFwcGVuZENoaWxkKHRh
cmdldCk7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5p
bm5lckhUTUwgPQorICAgICAgICAiPGRpdj48c3Bhbj5IZWxsbyw8L3NwYW4+PHNwYW4+Y29udGVu
dDwvc3Bhbj48c3Bhbj5jb250ZW50PC9zcGFuPjxzcGFuPldvcmxkLjwvc3Bhbj48L2Rpdj4iOwor
fQorCitmdW5jdGlvbiB0ZXN0U2VsZWN0SXNUeXBlKCkgeworICAgIHZhciB0YXJnZXQgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICB0YXJnZXQuaW5uZXJIVE1MID0gIjxkaXY+
YXp1bnlhbjwvZGl2PjxzcGFuPmNvbnRlbnQ8L3NwYW4+PGRpdj5wZXJvcGVybzwvZGl2PiI7CisK
KyAgICBhcHBlbmRTaGFkb3codGFyZ2V0LCAic3BhbiIpOworCisgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRDaGlsZCh0YXJnZXQpOworICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVyJykuaW5uZXJIVE1MID0KKyAg
ICAgICAgIjxkaXY+PHNwYW4+SGVsbG8sPC9zcGFuPjxzcGFuPmNvbnRlbnQ8L3NwYW4+PHNwYW4+
V29ybGQuPC9zcGFuPjwvZGl2PiI7Cit9CisKK2Z1bmN0aW9uIHRlc3RTZWxlY3RJc1R5cGVXaXRo
QXR0cmlidXRlKCkgeworICAgIHZhciB0YXJnZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdk
aXYnKTsKKyAgICB0YXJnZXQuaW5uZXJIVE1MID0gIjxzcGFuPmF6dW55YW48L3NwYW4+PHNwYW4g
dGl0bGU9J2NvbnRlbnQnPmNvbnRlbnQ8L3NwYW4+PHNwYW4+cGVyb3Blcm88L3NwYW4+IjsKKwor
ICAgIGFwcGVuZFNoYWRvdyh0YXJnZXQsICJzcGFuW3RpdGxlPSdjb250ZW50J10iKTsKKworICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBwZW5kQ2hpbGQo
dGFyZ2V0KTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicp
LmlubmVySFRNTCA9CisgICAgICAgICI8ZGl2PjxzcGFuPkhlbGxvLDwvc3Bhbj48c3Bhbj5jb250
ZW50PC9zcGFuPjxzcGFuPldvcmxkLjwvc3Bhbj48L2Rpdj4iOworfQorCitmdW5jdGlvbiB0ZXN0
U2VsZWN0SXNUeXBlV2l0aEZpcnN0T2ZUeXBlKCkgeworICAgIHZhciB0YXJnZXQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICB0YXJnZXQuaW5uZXJIVE1MID0gIjxkaXY+YXp1
bnlhbjwvZGl2PjxzcGFuPmNvbnRlbnQ8L3NwYW4+PHNwYW4+cGVyb3Blcm88L3NwYW4+IjsKKwor
ICAgIGFwcGVuZFNoYWRvdyh0YXJnZXQsICJzcGFuOmZpcnN0LW9mLXR5cGUiKTsKKworICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBwZW5kQ2hpbGQodGFy
Z2V0KTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlu
bmVySFRNTCA9CisgICAgICAgICI8ZGl2PjxzcGFuPkhlbGxvLDwvc3Bhbj48c3Bhbj5jb250ZW50
PC9zcGFuPjxzcGFuPldvcmxkLjwvc3Bhbj48L2Rpdj4iOworfQorCitmdW5jdGlvbiB0ZXN0U2Vs
ZWN0SXNUeXBlV2l0aEZpcnN0T2ZUeXBlMigpIHsKKyAgICB2YXIgdGFyZ2V0ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgdGFyZ2V0LmlubmVySFRNTCA9ICI8ZGl2PjxzcGFu
PmF6dW55YW48L3NwYW4+PC9kaXY+PHNwYW4+Y29udGVudDwvc3Bhbj48c3Bhbj5wZXJvcGVybzwv
c3Bhbj4iOworCisgICAgYXBwZW5kU2hhZG93KHRhcmdldCwgInNwYW46Zmlyc3Qtb2YtdHlwZSIp
OworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5hcHBl
bmRDaGlsZCh0YXJnZXQpOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29u
dGFpbmVyJykuaW5uZXJIVE1MID0KKyAgICAgICAgIjxkaXY+PHNwYW4+SGVsbG8sPC9zcGFuPjxz
cGFuPmNvbnRlbnQ8L3NwYW4+PHNwYW4+V29ybGQuPC9zcGFuPjwvZGl2PiI7Cit9CisKK2Z1bmN0
aW9uIHRlc3RTZWxlY3RJc1R5cGVXaXRoTGFzdE9mVHlwZSgpIHsKKyAgICB2YXIgdGFyZ2V0ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgdGFyZ2V0LmlubmVySFRNTCA9ICI8
c3Bhbj5henVueWFuPC9zcGFuPjxzcGFuPmNvbnRlbnQ8L3NwYW4+PGRpdj5wZXJvcGVybzwvZGl2
PiI7CisKKyAgICBhcHBlbmRTaGFkb3codGFyZ2V0LCAic3BhbjpsYXN0LW9mLXR5cGUiKTsKKwor
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBwZW5kQ2hp
bGQodGFyZ2V0KTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5l
cicpLmlubmVySFRNTCA9CisgICAgICAgICI8ZGl2PjxzcGFuPkhlbGxvLDwvc3Bhbj48c3Bhbj5j
b250ZW50PC9zcGFuPjxzcGFuPldvcmxkLjwvc3Bhbj48L2Rpdj4iOworfQorCitmdW5jdGlvbiB0
ZXN0U2VsZWN0SXNEZXRhaWxzKCkgeworICAgIHZhciB0YXJnZXQgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdkaXYnKTsKKyAgICB0YXJnZXQuaW5uZXJIVE1MID0gIjxkZXRhaWxzPmNvbnRlbnQ8
L2RldGFpbHM+IjsKKworICAgIGFwcGVuZFNoYWRvdyh0YXJnZXQsICJkZXRhaWxzIik7CisKKyAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFwcGVuZENoaWxk
KHRhcmdldCk7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXIn
KS5pbm5lckhUTUwgPQorICAgICAgICAiPGRpdj48c3Bhbj5IZWxsbyw8L3NwYW4+PGRldGFpbHM+
Y29udGVudDwvZGV0YWlscz48c3Bhbj5Xb3JsZC48L3NwYW4+PC9kaXY+IjsKK30KKworZnVuY3Rp
b24gdGVzdFNlbGVjdElzRGV0YWlsczIoKSB7CisgICAgdmFyIHRhcmdldCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHRhcmdldC5pbm5lckhUTUwgPSAiPGRldGFpbHM+PHN1
bW1hcnk+Y29udGVudDwvc3VtbWFyeT48L2RldGFpbHM+IjsKKworICAgIGFwcGVuZFNoYWRvdyh0
YXJnZXQsICJkZXRhaWxzIik7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFs
LWNvbnRhaW5lcicpLmFwcGVuZENoaWxkKHRhcmdldCk7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5pbm5lckhUTUwgPQorICAgICAgICAiPGRpdj48c3Bh
bj5IZWxsbyw8L3NwYW4+PGRldGFpbHM+PHN1bW1hcnk+Y29udGVudDwvc3VtbWFyeT48L2RldGFp
bHM+PHNwYW4+V29ybGQuPC9zcGFuPjwvZGl2PiI7Cit9CisKK2Z1bmN0aW9uIHRlc3RTZWxlY3RX
aGVuRHluYW1pY2FsbHlDaGlsZHJlbkNoYW5nZWQoKSB7CisgICAgdmFyIHRhcmdldCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHRhcmdldC5pbm5lckhUTUwgPSAiPHNwYW4+
Y29udGVudDwvc3Bhbj48c3BhbiBpZD0ndG9iZXJlbW92ZWQnPmFudW55YW4gcGVyb3Blcm88L3Nw
YW4+IjsKKworICAgIGFwcGVuZFNoYWRvdyh0YXJnZXQsICJzcGFuIik7CisKKyAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFwcGVuZENoaWxkKHRhcmdldCk7
CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5pbm5lckhU
TUwgPQorICAgICAgICAiPGRpdj48c3Bhbj5IZWxsbyw8L3NwYW4+PHNwYW4+Y29udGVudDwvc3Bh
bj48c3Bhbj5Xb3JsZC48L3NwYW4+PC9kaXY+IjsKKworICAgIHZhciBlbGVtID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ3RvYmVyZW1vdmVkJyk7CisgICAgZWxlbS5wYXJlbnROb2RlLnJlbW92
ZUNoaWxkKGVsZW0pOworfQorCit2YXIgdGVzdEZ1bmNzID0gWworICAgIHRlc3RTZWxlY3RJc051
bGwsCisgICAgdGVzdFNlbGVjdElzSWQsCisgICAgdGVzdFNlbGVjdElzSWRCdXROb3RNYXRjaGVk
LAorICAgIHRlc3RTZWxlY3RJc0lkQnV0Tm90Q2hpbGQsCisgICAgdGVzdFNlbGVjdElzTXVsdGlJ
ZCwKKyAgICB0ZXN0U2VsZWN0SXNUeXBlLAorICAgIHRlc3RTZWxlY3RJc1R5cGVXaXRoQXR0cmli
dXRlLAorICAgIHRlc3RTZWxlY3RJc1R5cGVXaXRoRmlyc3RPZlR5cGUsCisgICAgdGVzdFNlbGVj
dElzVHlwZVdpdGhGaXJzdE9mVHlwZTIsCisgICAgdGVzdFNlbGVjdElzVHlwZVdpdGhMYXN0T2ZU
eXBlLAorICAgIHRlc3RTZWxlY3RJc0RldGFpbHMsCisgICAgdGVzdFNlbGVjdElzRGV0YWlsczIs
CisgICAgdGVzdFNlbGVjdFdoZW5EeW5hbWljYWxseUNoaWxkcmVuQ2hhbmdlZCwKK10KKworZnVu
Y3Rpb24gZG9UZXN0KCkgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
KyAgICBjbGVhblVwKCk7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRlc3RGdW5jcy5sZW5n
dGg7ICsraSkgeworICAgICAgIHRlc3RGdW5jc1tpXSgpOworICAgICAgIGNoZWNrKCk7CisgICAg
ICAgY2xlYW5VcCgpOworICAgIH0KK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2Fk
PSJkb1Rlc3QoKSI+CisKKzxkaXYgaWQ9ImFjdHVhbC1jb250YWluZXIiIGNsYXNzPSJjb250YWlu
ZXIiPjwvZGl2PgorPGRpdiBpZD0iZXhwZWN0LWNvbnRhaW5lciIgY2xhc3M9ImNvbnRhaW5lciI+
PC9kaXY+Cis8cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KKworPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121234</attachid>
            <date>2012-01-05 01:02:57 -0800</date>
            <delta_ts>2012-01-06 02:11:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-75302-20120105180255.patch</filename>
            <type>text/plain</type>
            <size>35954</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA0MTA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjNkZmJkYmEyYzI3ZjM0
MWIyMzliMWNkMzVkOTNmYWYzMTljYTBkZS4uMGIzNWNmMDliN2ExMzhhNjJmOGY4NjZmZGZiZmU1
NmRiZjkxM2ZiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDEyLTAxLTA0ICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGdvb2dsZS5jb20+CisKKyAgICAgICAgU2hhZG93Q29udGVu
dEVsZW1lbnQgc2hvdWxkIGJlIGFibGUgdG8gdXNlIHF1ZXJ5LgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzUzMDIKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgYSBzZWxl
Y3RvciB0byBxdWVyeSBlbGVtZW50cyBpbiBTaGFkb3dDb250ZW50RWxlbWVudC4KKyAgICAgICAg
VGhpcyBjYW4gYmUgdXNlZCBpbnN0ZWFkIG9mIFNoYWRvd0NvbnRlbnRFbGVtZW50OjpzaG91bGRJ
bmNsdWRlIGluIG1vcmUgc29waGlzdGljYXRlZCB3YXlzLgorCisgICAgICAgIFRlc3Q6IGZhc3Qv
ZG9tL3NoYWRvdy9zaGFkb3ctY29udGVudHMtc2VsZWN0Lmh0bWwKKworICAgICAgICAqIENNYWtl
TGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVGFy
Z2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIGRvbS9TaGFkb3dDb250ZW50RWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTaGFkb3dDb250ZW50RWxlbWVudDo6U2hhZG93Q29udGVudEVsZW1lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhZG93Q29udGVudEVsZW1lbnQ6Om1hdGNoZXNRdWVyeSk6Cisg
ICAgICAgICAgUmV0dXJucyB0cnVlIGlmIE5vZGUgaXMgbWF0Y2hlZCBieSB0aGUgcXVlcnkuCisg
ICAgICAgICogZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpT
aGFkb3dDb250ZW50RWxlbWVudDo6c2VsZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0Nv
bnRlbnRFbGVtZW50OjpzZXRTZWxlY3QpOgorICAgICAgICAqIGRvbS9TaGFkb3dDb250ZW50U2Vs
ZWN0b3JRdWVyeS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Q29udGVudFNl
bGVjdG9yUXVlcnk6OlNoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5KToKKyAgICAgICAgKFdlYkNv
cmU6OlNoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5OjptYXRjaGVzKToKKyAgICAgICAgKiBkb20v
U2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnkuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUv
ZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50LmguCisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dDb250
ZW50U2VsZWN0b3JRdWVyeTo6U2VsZWN0b3JEYXRhOjpTZWxlY3RvckRhdGEpOgorICAgICAgICAq
IGRvbS9TaGFkb3dJbmNsdXNpb25TZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFk
b3dJbmNsdXNpb25TZWxlY3Rvcjo6c2VsZWN0KToKKyAgICAgICAgKiBkb20vU2hhZG93SW5jbHVz
aW9uU2VsZWN0b3IuaDoKKyAgICAgICAgKiBodG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEZXRhaWxzQ29udGVudEVsZW1lbnQ6OkRldGFpbHNDb250ZW50RWxl
bWVudCk6IFJlLWltcGxlbWVudGVkIHVzaW5nIHF1ZXJ5LgorICAgICAgICAoV2ViQ29yZTo6RGV0
YWlsc1N1bW1hcnlFbGVtZW50OjpEZXRhaWxzU3VtbWFyeUVsZW1lbnQpOiBkaXR0by4KKyAgICAg
ICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6
OmNyZWF0ZVNoYWRvd0NvbnRlbnRFbGVtZW50KToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFs
cy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKwogMjAxMi0wMS0wNCAgSmFt
ZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0g
UmVtb3ZlIGNocm9taXVtIGNvbXBvc2l0b3Igc3VwcG9ydCBmb3IgdW51c2VkIHpvb21BbmltYXRv
clRyYW5zZm9ybQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9T
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA2ODhlMGYxNDEzZDk5Yjg0OGQzNGY1
ODA4MjYwNDBjNTNlYzA3Y2U3Li5hODAyMWIxODNkOTY2MDJhY2FiMzQ2NWY4OGE5MTZkMmRiOTRk
NjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNTk0LDYgKzU5NCw3IEBAIFNFVChXZWJDb3Jl
X1NPVVJDRVMKICAgICBkb20vU2VjdXJpdHlDb250ZXh0LmNwcAogICAgIGRvbS9TZWxlY3RvclF1
ZXJ5LmNwcAogICAgIGRvbS9TaGFkb3dDb250ZW50RWxlbWVudC5jcHAKKyAgICBkb20vU2hhZG93
Q29udGVudFNlbGVjdG9yUXVlcnkuY3BwCiAgICAgZG9tL1NoYWRvd0luY2x1c2lvblNlbGVjdG9y
LmNwcAogICAgIGRvbS9TaGFkb3dSb290LmNwcAogICAgIGRvbS9TcGFjZVNwbGl0U3RyaW5nLmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggZWFkNmRhZGQzZmQwZmIyNWI4MzAy
NDk1MjQ3Yjc3YTk1OWM3ZmNkMy4uOWQ4MzdmNTY1NzkyN2MwZDU3OWFiNWQ2YjIyODQ1YzNjZDhh
ZWFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0xNjQ1LDYgKzE2NDUsOCBA
QCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5
LmggXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dDb250ZW50RWxlbWVudC5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dDb250ZW50RWxlbWVudC5oIFwKKwlTb3VyY2UvV2ViQ29y
ZS9kb20vU2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnkuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9k
b20vU2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnkuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1No
YWRvd0luY2x1c2lvblNlbGVjdG9yLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0lu
Y2x1c2lvblNlbGVjdG9yLmggXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcCBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUv
VGFyZ2V0LnByaQppbmRleCBiMTJmNWU1Nzg2Njg3ZDUwNDBjZmMzZTIxM2RmNDVjYjU3MTYxMjQ3
Li5lOWE0NjE4NzE1NzA5NDVkNDZlYTY3ZGE5YjYyMjQ1NTBiY2E1NzczIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkK
QEAgLTU2MCw2ICs1NjAsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBkb20vU2VjdXJpdHlDb250ZXh0
LmNwcCBcCiAgICAgZG9tL1NlbGVjdG9yUXVlcnkuY3BwIFwKICAgICBkb20vU2hhZG93Q29udGVu
dEVsZW1lbnQuY3BwIFwKKyAgICBkb20vU2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnkuY3BwIFwK
ICAgICBkb20vU2hhZG93SW5jbHVzaW9uU2VsZWN0b3IuY3BwIFwKICAgICBkb20vU2hhZG93Um9v
dC5jcHAgXAogICAgIGRvbS9TcGFjZVNwbGl0U3RyaW5nLmNwcCBcCkBAIC0xNjUzLDYgKzE2NTQs
NyBAQCBIRUFERVJTICs9IFwKICAgICBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIFwKICAg
ICBkb20vU2VsZWN0b3JRdWVyeS5oIFwKICAgICBkb20vU2hhZG93Q29udGVudEVsZW1lbnQuaCBc
CisgICAgZG9tL1NoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmggXAogICAgIGRvbS9TaGFkb3dJ
bmNsdXNpb25TZWxlY3Rvci5oIFwKICAgICBkb20vU2hhZG93Um9vdC5oIFwKICAgICBkb20vU3Bh
Y2VTcGxpdFN0cmluZy5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCA4MzA1ZmNlZDhlYWY2MzA5Zjdl
NmJjOWJmNzYxYjAyMWFjMDQ0ODg1Li5iZDc1YjQ5ODEwNzJmYTgyNGZkZDA1OGVmM2FmYTNkMTdh
ZjM5ZGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0xMDQ3LDYgKzEwNDcsNyBAQAogICAgICAgICAg
ICAgJ2RvbS9TY3JpcHRSdW5uZXIuaCcsCiAgICAgICAgICAgICAnZG9tL1NoYWRvd1Jvb3QuaCcs
CiAgICAgICAgICAgICAnZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50LmgnLAorICAgICAgICAgICAg
J2RvbS9TaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeS5oJywKICAgICAgICAgICAgICdkb20vU3Bh
Y2VTcGxpdFN0cmluZy5oJywKICAgICAgICAgICAgICdkb20vU3R5bGVkRWxlbWVudC5oJywKICAg
ICAgICAgICAgICdkb20vVGV4dC5oJywKQEAgLTU0MjQsNiArNTQyNSw4IEBACiAgICAgICAgICAg
ICAnZG9tL1NlbGVjdG9yUXVlcnkuaCcsCiAgICAgICAgICAgICAnZG9tL1NoYWRvd0NvbnRlbnRF
bGVtZW50LmNwcCcsCiAgICAgICAgICAgICAnZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50LmgnLAor
ICAgICAgICAgICAgJ2RvbS9TaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeS5jcHAnLAorICAgICAg
ICAgICAgJ2RvbS9TaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeS5oJywKICAgICAgICAgICAgICdk
b20vU2hhZG93SW5jbHVzaW9uU2VsZWN0b3IuY3BwJywKICAgICAgICAgICAgICdkb20vU2hhZG93
SW5jbHVzaW9uU2VsZWN0b3IuaCcsCiAgICAgICAgICAgICAnZG9tL1NoYWRvd1Jvb3QuY3BwJywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggZDBj
ZjM5NWU5M2JmZDg3YjFmY2FiYWFiNzhkZjZmYmU1OWI5Y2JiYy4uMTZhODI2ZWQ1NmE1NDY0ODk2
MmM0ZWVlY2EzODJmMzY1MDFkOWY5YyAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2oKQEAgLTUxMDk0LDYgKzUxMDk0LDE0IEBACiAJCQkJPgogCQkJPC9G
aWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxTaGFkb3dDb250ZW50U2Vs
ZWN0b3JRdWVyeS5jcHAiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXGRvbVxTaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeS5oIgorCQkJCT4KKwkJCTwv
RmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cU2hhZG93SW5jbHVzaW9u
U2VsZWN0b3IuY3BwIgogCQkJCT4KIAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3ZjhiZmM3
YWU4MjI3MzFhZTNhN2M0ZGQ0NDYxNzZiOTJlODZlM2E1Li5hZTllNjRlNTU1YTgwOWIzMzA0YjA0
OTQzNDkyNWU3M2UwYmMzNjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNTYwLDYgKzE1NjAsOCBAQAogCQk1M0M4Mjk4RTEz
RDhEOTI3MDBERTJERUIgLyogUmVuZGVyRmxleGlibGVCb3guaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzQzgyOThDMTNEOEQ5MjcwMERFMkRFQiAvKiBS
ZW5kZXJGbGV4aWJsZUJveC5oICovOyB9OwogCQk1NTBBMEJDOTA4NUY2MDM5MDA3MzUzRDYgLyog
UXVhbGlmaWVkTmFtZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1NTBBMEJDNzA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5jcHAgKi87
IH07CiAJCTU1MEEwQkNBMDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTBBMEJDODA4NUY2MDM5
MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTU3MERCQTgxMTRCNTgwNDkwMERBRUZBMCAvKiBTaGFkb3dD
b250ZW50U2VsZWN0b3JRdWVyeS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1NzBEQjdBODE0QjU2OTZBMDBEQUVGQTAgLyogU2hhZG93Q29udGVudFNl
bGVjdG9yUXVlcnkuY3BwICovOyB9OworCQk1NzBEQkE4MjE0QjU4MDRCMDBEQUVGQTAgLyogU2hh
ZG93Q29udGVudFNlbGVjdG9yUXVlcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDU3MERCN0E5MTRCNTY5NkEwMERBRUZBMCAvKiBTaGFkb3dDb250ZW50
U2VsZWN0b3JRdWVyeS5oICovOyB9OwogCQk1OTA1QURCRjEzMDJGM0NFMDBGMTE2REYgLyogWE1M
VHJlZVZpZXdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1OTA1QURCRDEzMDJGM0NFMDBGMTE2REYgLyogWE1MVHJlZVZpZXdlci5jcHAgKi87IH07
CiAJCTU5MDVBREMwMTMwMkYzQ0UwMEYxMTZERiAvKiBYTUxUcmVlVmlld2VyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OTA1QURCRTEzMDJGM0NFMDBG
MTE2REYgLyogWE1MVHJlZVZpZXdlci5oICovOyB9OwogCQk1OTBFMUI0OTExRTRFRjRCMDA2OUY3
ODQgLyogRGV2aWNlT3JpZW50YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDU5MEUxQjQ4MTFFNEVGNEIwMDY5Rjc4NCAvKiBEZXZpY2VPcmllbnRh
dGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBA
IC04ODM3LDYgKzg4MzksOCBAQAogCQk1M0M4Mjk4QzEzRDhEOTI3MDBERTJERUIgLyogUmVuZGVy
RmxleGlibGVCb3guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyRmxl
eGlibGVCb3guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTUwQTBCQzcwODVGNjAz
OTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUXVhbGlmaWVkTmFtZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQk1NTBBMEJD
ODA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBRdWFsaWZpZWROYW1lLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OworCQk1NzBEQjdB
ODE0QjU2OTZBMDBEQUVGQTAgLyogU2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnkuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2hhZG93Q29udGVudFNlbGVjdG9yUXVl
cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1NzBEQjdBOTE0QjU2OTZBMDBE
QUVGQTAgLyogU2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnkuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTkwNUFEQkQxMzAyRjNDRTAwRjExNkRGIC8qIFhNTFRyZWVWaWV3
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gWE1MVHJlZVZpZXdl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU5MDVBREJFMTMwMkYzQ0UwMEYx
MTZERiAvKiBYTUxUcmVlVmlld2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFhNTFRyZWVWaWV3ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTkwRTFCNDgx
MUU0RUY0QjAwNjlGNzg0IC8qIERldmljZU9yaWVudGF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IERldmljZU9yaWVudGF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0yMTUwNiw2ICsyMTUxMCw4IEBACiAJCQkJRTQ1MzIyQUExNDBDRTI2NzAwNUEw
RjkyIC8qIFNlbGVjdG9yUXVlcnkuaCAqLywKIAkJCQlBNzY2Q0Y4QjEzODEwRTBDMDAxMUEwQjMg
LyogU2hhZG93Q29udGVudEVsZW1lbnQuY3BwICovLAogCQkJCUE3NEMyRDNCMTM4MTFFMEQwMEY4
MzU3MiAvKiBTaGFkb3dDb250ZW50RWxlbWVudC5oICovLAorCQkJCTU3MERCN0E4MTRCNTY5NkEw
MERBRUZBMCAvKiBTaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeS5jcHAgKi8sCisJCQkJNTcwREI3
QTkxNEI1Njk2QTAwREFFRkEwIC8qIFNoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmggKi8sCiAJ
CQkJQTcxQzMwQjYxMzgxMjY1RTAwREJDMzUxIC8qIFNoYWRvd0luY2x1c2lvblNlbGVjdG9yLmNw
cCAqLywKIAkJCQlBNzFDMzBCNzEzODEyNjVFMDBEQkMzNTEgLyogU2hhZG93SW5jbHVzaW9uU2Vs
ZWN0b3IuaCAqLywKIAkJCQlBNkQxNjk2MTEzNDZCNDlCMDAwRUI3NzAgLyogU2hhZG93Um9vdC5j
cHAgKi8sCkBAIC0yNDM2MSw2ICsyNDM2Nyw3IEBACiAJCQkJNDk4NzcwRTkxMjQyQzUzNTAwMjIy
NkJBIC8qIFNoYWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzREQ0NTAxMkY1RUExQjAwMEQ5
MTkwIC8qIFNoYWRvd0JsdXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3NEMyRDNDMTM4MTFFMEQw
MEY4MzU3MiAvKiBTaGFkb3dDb250ZW50RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTcw
REJBODIxNEI1ODA0QjAwREFFRkEwIC8qIFNoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQzVFQjhDNDBFODIwMzFCMDBCMjU5NjUgLyogU2hhZG93RGF0YS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTcxQzMwQjkxMzgxMjY1RTAwREJDMzUxIC8qIFNoYWRvd0lu
Y2x1c2lvblNlbGVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNkQxNjk2NDEzNDZCNEMxMDAw
RUI3NzAgLyogU2hhZG93Um9vdC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzM4NSw2ICsyNzM5Miw3
IEBACiAJCQkJNDk4NzcwRTgxMjQyQzUzNTAwMjIyNkJBIC8qIFNoYWRlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRjNERDQ0RjEyRjVFQTFCMDAwRDkxOTAgLyogU2hhZG93Qmx1ci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlBNzY2Q0Y4QzEzODEwRTBDMDAxMUEwQjMgLyogU2hhZG93Q29udGVu
dEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTcwREJBODExNEI1ODA0OTAwREFFRkEw
IC8qIFNoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJD
NUVCOEMzMEU4MjAzMUIwMEIyNTk2NSAvKiBTaGFkb3dEYXRhLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUE3MUMzMEI4MTM4MTI2NUUwMERCQzM1MSAvKiBTaGFkb3dJbmNsdXNpb25TZWxlY3Rvci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlBNkQxNjk2MjEzNDZCNDlCMDAwRUI3NzAgLyogU2hhZG93
Um9vdC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9T
aGFkb3dDb250ZW50RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Q29udGVu
dEVsZW1lbnQuY3BwCmluZGV4IGVjZWU2ZDBjN2VlNzZmZGQ3MjVlMmZkY2Y4NzJkZDJiYjkzYzk3
YmIuLjQ0ZWIyOThkY2ZkYTMwZDEyNjgxNzc2Mjk2YWU3OTM3NDJiZmExNjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dDb250ZW50RWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50LmNwcApAQCAtMjgsNiArMjgsNyBAQAog
I2luY2x1ZGUgIlNoYWRvd0NvbnRlbnRFbGVtZW50LmgiCiAKICNpbmNsdWRlICJIVE1MTmFtZXMu
aCIKKyNpbmNsdWRlICJTaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeS5oIgogI2luY2x1ZGUgIlNo
YWRvd0luY2x1c2lvblNlbGVjdG9yLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgogCkBAIC0z
OSw5ICs0MCwxMCBAQCBQYXNzUmVmUHRyPFNoYWRvd0NvbnRlbnRFbGVtZW50PiBTaGFkb3dDb250
ZW50RWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudAogICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgU2hhZG93Q29udGVudEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAotU2hh
ZG93Q29udGVudEVsZW1lbnQ6OlNoYWRvd0NvbnRlbnRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5h
bWUmIG5hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKK1NoYWRvd0NvbnRlbnRFbGVtZW50OjpTaGFk
b3dDb250ZW50RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBEb2N1bWVudCogZG9j
dW1lbnQsIGNvbnN0IFN0cmluZyYgc2VsZWN0KQogICAgIDogU3R5bGVkRWxlbWVudChuYW1lLCBk
b2N1bWVudCwgQ3JlYXRlSFRNTEVsZW1lbnQpCiAgICAgLCBtX2luY2x1c2lvbnMoYWRvcHRQdHIo
bmV3IFNoYWRvd0luY2x1c2lvbkxpc3QoKSkpCisgICAgLCBtX3NlbGVjdChzZWxlY3QpCiB7CiB9
CiAKQEAgLTc2LDEwICs3OCwxNiBAQCB2b2lkIFNoYWRvd0NvbnRlbnRFbGVtZW50OjpkZXRhY2go
KQogICAgIFN0eWxlZEVsZW1lbnQ6OmRldGFjaCgpOwogfQogCi1ib29sIFNoYWRvd0NvbnRlbnRF
bGVtZW50OjpzaG91bGRJbmNsdWRlKE5vZGUqKQorYm9vbCBTaGFkb3dDb250ZW50RWxlbWVudDo6
bWF0Y2hlc1F1ZXJ5KGNvbnN0IFNoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5JiBxdWVyeSwgTm9k
ZSogbm9kZSkKIHsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KKyAgICBBU1NFUlQobm9kZSk7CisgICAg
aWYgKCFub2RlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAobV9zZWxlY3QuaXNF
bXB0eSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKIAorICAgIHJldHVybiBxdWVyeS5tYXRjaGVz
KG5vZGUpOworfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Q29u
dGVudEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dDb250ZW50RWxlbWVudC5o
CmluZGV4IDdiMzY2NjIxYjdiOTYzYTQzMGZjMTQzMDliZDQ2NWVhZWRmYTA0YTQuLmU5NjY0YWI0
ZTU4NjUzY2E1YzQzZGE4ZWMxY2Q2M2M5NjcyODcyOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9TaGFkb3dDb250ZW50RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9T
aGFkb3dDb250ZW50RWxlbWVudC5oCkBAIC0zNiw2ICszNiw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAorY2xhc3MgU2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnk7CiBjbGFzcyBTaGFkb3dJ
bmNsdXNpb25MaXN0OwogCiAvLyBOT1RFOiBDdXJyZW50IGltcGxlbWVudGF0aW9uIGRvZXNuJ3Qg
c3VwcG9ydCBkeW5hbWljIGluc2VydGlvbi9kZWxldGlvbiBvZiBTaGFkb3dDb250ZW50RWxlbWVu
dC4KQEAgLTQ1LDE0ICs0NiwxOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2hh
ZG93Q29udGVudEVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCopOwogCiAgICAgdmlydHVhbCB+U2hh
ZG93Q29udGVudEVsZW1lbnQoKTsKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSW5jbHVkZShOb2Rl
Kik7CiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpOwogICAgIHZpcnR1YWwgdm9pZCBkZXRhY2go
KTsKIAorICAgIGNvbnN0IFN0cmluZyYgc2VsZWN0KCkgeyByZXR1cm4gbV9zZWxlY3Q7IH0KKyAg
ICB2b2lkIHNldFNlbGVjdChjb25zdCBTdHJpbmcmIHNlbGVjdCkgeyBtX3NlbGVjdCA9IHNlbGVj
dDsgfQorCisgICAgYm9vbCBtYXRjaGVzUXVlcnkoY29uc3QgU2hhZG93Q29udGVudFNlbGVjdG9y
UXVlcnkmLCBOb2RlKik7CisKICAgICBjb25zdCBTaGFkb3dJbmNsdXNpb25MaXN0KiBpbmNsdXNp
b25zKCkgY29uc3QgeyByZXR1cm4gbV9pbmNsdXNpb25zLmdldCgpOyB9CiAKIHByb3RlY3RlZDoK
LSAgICBTaGFkb3dDb250ZW50RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQq
KTsKKyAgICBTaGFkb3dDb250ZW50RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1l
bnQqLCBjb25zdCBTdHJpbmcmIHNlbGVjdCA9IFN0cmluZygpKTsKIAogcHJpdmF0ZToKICAgICB2
aXJ0dWFsIGJvb2wgaXNDb250ZW50RWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KQEAg
LTYwLDYgKzY1LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRl
UmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopIHsgcmV0dXJuIDA7IH0KIAogICAg
IE93blB0cjxTaGFkb3dJbmNsdXNpb25MaXN0PiBtX2luY2x1c2lvbnM7CisgICAgU3RyaW5nIG1f
c2VsZWN0OwogfTsKIAogaW5saW5lIFNoYWRvd0NvbnRlbnRFbGVtZW50KiB0b1NoYWRvd0NvbnRl
bnRFbGVtZW50KE5vZGUqIG5vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hh
ZG93Q29udGVudFNlbGVjdG9yUXVlcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0Nv
bnRlbnRTZWxlY3RvclF1ZXJ5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYTdmYjFjNDlkMTBiZDEzOWVmMzMw
ZTMyMmE0OTJhM2Q4MjRkZjhiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1NoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmNwcApAQCAtMCwwICsxLDc3IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmgiCisK
KyNpbmNsdWRlICJDU1NQYXJzZXIuaCIKKyNpbmNsdWRlICJDU1NTZWxlY3Rvckxpc3QuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitTaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeTo6U2hhZG93
Q29udGVudFNlbGVjdG9yUXVlcnkoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIHF1
ZXJ5U2VsZWN0b3IpCisgICAgOiBtX3NlbGVjdG9yQ2hlY2tlcihkb2N1bWVudCwgIWRvY3VtZW50
LT5pblF1aXJrc01vZGUoKSkKK3sKKyAgICBBU1NFUlQoZG9jdW1lbnQpOworCisgICAgbV9zZWxl
Y3RvckNoZWNrZXIuc2V0Q29sbGVjdGluZ1J1bGVzT25seSh0cnVlKTsKKworICAgIENTU1BhcnNl
ciBwYXJzZXIodHJ1ZSk7CisgICAgcGFyc2VyLnBhcnNlU2VsZWN0b3IocXVlcnlTZWxlY3Rvciwg
ZG9jdW1lbnQsIG1fc2VsZWN0b3JMaXN0KTsKKworICAgIGZvciAoQ1NTU2VsZWN0b3IqIHNlbGVj
dG9yID0gbV9zZWxlY3Rvckxpc3QuZmlyc3QoKTsgc2VsZWN0b3I7IHNlbGVjdG9yID0gQ1NTU2Vs
ZWN0b3JMaXN0OjpuZXh0KHNlbGVjdG9yKSkKKyAgICAgICAgbV9zZWxlY3RvcnMuYXBwZW5kKFNl
bGVjdG9yRGF0YShzZWxlY3RvciwgU2VsZWN0b3JDaGVja2VyOjppc0Zhc3RDaGVja2FibGVTZWxl
Y3RvcihzZWxlY3RvcikpKTsKK30KKworYm9vbCBTaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeTo6
bWF0Y2hlcyhOb2RlKiBub2RlKSBjb25zdAoreworICAgIGlmICghbm9kZSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgdW5zaWduZWQgc2VsZWN0b3JDb3VudCA9IG1fc2VsZWN0b3JzLnNp
emUoKTsKKyAgICBmcHJpbnRmKHN0ZGVyciwgInNlbGVjdG9yQ291bnQgPSAlZFxuIiwgKGludCkg
c2VsZWN0b3JDb3VudCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNlbGVjdG9yQ291
bnQ7ICsraSkgeworICAgICAgICBpZiAobWF0Y2hlcyhub2RlLCBtX3NlbGVjdG9yc1tpXSkpCisg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
K2Jvb2wgU2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnk6Om1hdGNoZXMoTm9kZSogdGFyZ2V0Tm9k
ZSwgY29uc3QgU2VsZWN0b3JEYXRhJiBzZWxlY3RvckRhdGEpIGNvbnN0Cit7CisgICAgQVNTRVJU
KHRhcmdldE5vZGUpOworCisgICAgaWYgKCF0YXJnZXROb2RlLT5pc0VsZW1lbnROb2RlKCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2Fz
dDxFbGVtZW50Kj4odGFyZ2V0Tm9kZSk7CisgICAgLy8gcmV0dXJuIG1fc2VsZWN0b3JDaGVja2Vy
LmNoZWNrU2VsZWN0b3Ioc2VsZWN0b3JEYXRhLnNlbGVjdG9yLCBlbGVtZW50LCBzZWxlY3RvckRh
dGEuaXNGYXN0Q2hlY2thYmxlKTsKKyAgICByZXR1cm4gbV9zZWxlY3RvckNoZWNrZXIuY2hlY2tT
ZWxlY3RvcihzZWxlY3RvckRhdGEuc2VsZWN0b3IsIGVsZW1lbnQsIGZhbHNlKTsKK30KKworCit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Q29udGVudFNlbGVjdG9yUXVl
cnkuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmU0Yjg5NzM0YThhOTYyMTk0Yjg1ZmFhMjNmN2IzNjczYTY1ODk4OWMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Q29udGVudFNlbGVjdG9yUXVl
cnkuaApAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeV9o
CisjZGVmaW5lIFNoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5X2gKKworI2luY2x1ZGUgIkNTU1Nl
bGVjdG9yTGlzdC5oIgorI2luY2x1ZGUgIlNlbGVjdG9yQ2hlY2tlci5oIgorI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBEb2N1bWVudDsKK2NsYXNzIE5vZGU7CisKK2NsYXNzIFNoYWRvd0NvbnRlbnRT
ZWxlY3RvclF1ZXJ5IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTaGFkb3dDb250ZW50U2Vs
ZWN0b3JRdWVyeSk7CitwdWJsaWM6CisgICAgU2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnkoRG9j
dW1lbnQqLCBjb25zdCBTdHJpbmcmKTsKKworICAgIGJvb2wgbWF0Y2hlcyhOb2RlKikgY29uc3Q7
CisKK3ByaXZhdGU6CisgICAgc3RydWN0IFNlbGVjdG9yRGF0YSB7CisgICAgICAgIFNlbGVjdG9y
RGF0YShDU1NTZWxlY3Rvciogc2VsZWN0b3IsIGJvb2wgaXNGYXN0Q2hlY2thYmxlKQorICAgICAg
ICAgICAgOiBzZWxlY3RvcihzZWxlY3RvcikKKyAgICAgICAgICAgICwgaXNGYXN0Q2hlY2thYmxl
KGlzRmFzdENoZWNrYWJsZSkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgQ1NTU2Vs
ZWN0b3IqIHNlbGVjdG9yOworICAgICAgICBib29sIGlzRmFzdENoZWNrYWJsZTsKKyAgICB9Owor
CisgICAgYm9vbCBjYW5Vc2VJZExvb2t1cChjb25zdCBTZWxlY3RvckRhdGEmLCBEb2N1bWVudCop
IGNvbnN0OworICAgIGJvb2wgbWF0Y2hlcyhOb2RlKiB0YXJnZXROb2RlLCBjb25zdCBTZWxlY3Rv
ckRhdGEmKSBjb25zdDsKKworICAgIFZlY3RvcjxTZWxlY3RvckRhdGE+IG1fc2VsZWN0b3JzOwor
ICAgIENTU1NlbGVjdG9yTGlzdCBtX3NlbGVjdG9yTGlzdDsKKyAgICBTZWxlY3RvckNoZWNrZXIg
bV9zZWxlY3RvckNoZWNrZXI7Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL1NoYWRvd0luY2x1c2lvblNlbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TaGFkb3dJbmNsdXNpb25TZWxlY3Rvci5jcHAKaW5kZXggOTg0MWY1NTY0ODg3Yzg5NjM0
NTM3NDlmMjM3MTY2Y2EyZTQ1ZTEwNS4uYjMyNjFlMDgxYTQwYmJiYTlmMmYyMjZhNjYwZjZhYzM2
YzIxMDk1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0luY2x1c2lvblNl
bGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93SW5jbHVzaW9uU2VsZWN0
b3IuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiU2hhZG93SW5jbHVzaW9uU2VsZWN0
b3IuaCIKIAogI2luY2x1ZGUgIlNoYWRvd0NvbnRlbnRFbGVtZW50LmgiCisjaW5jbHVkZSAiU2hh
ZG93Q29udGVudFNlbGVjdG9yUXVlcnkuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAKIApA
QCAtMTExLDExICsxMTIsMTIgQEAgdm9pZCBTaGFkb3dJbmNsdXNpb25TZWxlY3Rvcjo6c2VsZWN0
KFNoYWRvd0NvbnRlbnRFbGVtZW50KiBjb250ZW50RWxlbWVudCwgU2hhZG8KIHsKICAgICBBU1NF
UlQoaW5jbHVzaW9ucy0+aXNFbXB0eSgpKTsKIAorICAgIFNoYWRvd0NvbnRlbnRTZWxlY3RvclF1
ZXJ5IHF1ZXJ5KGNvbnRlbnRFbGVtZW50LT5kb2N1bWVudCgpLCBjb250ZW50RWxlbWVudC0+c2Vs
ZWN0KCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9jYW5kaWRhdGVzLnNpemUoKTsg
KytpKSB7CiAgICAgICAgIE5vZGUqIGNoaWxkID0gbV9jYW5kaWRhdGVzW2ldLmdldCgpOwogICAg
ICAgICBpZiAoIWNoaWxkKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlmICghY29u
dGVudEVsZW1lbnQtPnNob3VsZEluY2x1ZGUoY2hpbGQpKQorICAgICAgICBpZiAoIWNvbnRlbnRF
bGVtZW50LT5tYXRjaGVzUXVlcnkocXVlcnksIGNoaWxkKSkKICAgICAgICAgICAgIGNvbnRpbnVl
OwogCiAgICAgICAgIFJlZlB0cjxTaGFkb3dJbmNsdXNpb24+IGluY2x1c2lvbiA9IFNoYWRvd0lu
Y2x1c2lvbjo6Y3JlYXRlKGNvbnRlbnRFbGVtZW50LCBjaGlsZCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2hhZG93SW5jbHVzaW9uU2VsZWN0b3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TaGFkb3dJbmNsdXNpb25TZWxlY3Rvci5oCmluZGV4IGYxYWRhZWUzZjU0M2E4MWMzZmVm
YmZjNDZlMDFiMWZkN2YzYjBlOGYuLmQxYTg3MTc0NDFiMTljMmQ2YWZhMGU4ZjM0MDc1ODQxMDIx
OGI0ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dJbmNsdXNpb25TZWxl
Y3Rvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dJbmNsdXNpb25TZWxlY3Rvci5o
CkBAIC0xMzcsNyArMTM3LDYgQEAgcHVibGljOgogICAgIHZvaWQgZGlkU2VsZWN0KCk7CiAgICAg
Ym9vbCBoYXNDYW5kaWRhdGVzKCkgY29uc3QgeyByZXR1cm4gIW1fY2FuZGlkYXRlcy5pc0VtcHR5
KCk7IH0KIAotCiBwcml2YXRlOgogICAgIHZvaWQgcmVtb3ZlRnJvbVNldChTaGFkb3dJbmNsdXNp
b25MaXN0Kik7CiAgICAgdm9pZCBhZGRUb1NldChTaGFkb3dJbmNsdXNpb25MaXN0Kik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHAKaW5kZXggZmFkOWFmODA0NDE0
NTcwYzFlNzZjYTI4YzVlYjViMTYyN2M3MDIyMC4uNTFhYWRjMGM2ZmMyNjRjZDFjZmJjYmJiNzcx
ZTI4YmE0OTZhMDRkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWls
c0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50
LmNwcApAQCAtNDIsMTEgKzQyLDkgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIERldGFpbHND
b250ZW50RWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCi0gICAgICAgIDogU2hhZG93Q29udGVu
dEVsZW1lbnQoSFRNTE5hbWVzOjpkaXZUYWcsIGRvY3VtZW50KQorICAgICAgICA6IFNoYWRvd0Nv
bnRlbnRFbGVtZW50KEhUTUxOYW1lczo6ZGl2VGFnLCBkb2N1bWVudCwgIiIpCiAgICAgewogICAg
IH0KLQotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRJbmNsdWRlKE5vZGUqKTsKIH07CiAKIFBhc3NS
ZWZQdHI8RGV0YWlsc0NvbnRlbnRFbGVtZW50PiBEZXRhaWxzQ29udGVudEVsZW1lbnQ6OmNyZWF0
ZShEb2N1bWVudCogZG9jdW1lbnQpCkBAIC01NCwyNCArNTIsMTUgQEAgUGFzc1JlZlB0cjxEZXRh
aWxzQ29udGVudEVsZW1lbnQ+IERldGFpbHNDb250ZW50RWxlbWVudDo6Y3JlYXRlKERvY3VtZW50
KiBkb2N1bWUKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERldGFpbHNDb250ZW50RWxlbWVudChk
b2N1bWVudCkpOwogfQogCi1ib29sIERldGFpbHNDb250ZW50RWxlbWVudDo6c2hvdWxkSW5jbHVk
ZShOb2RlKiBub2RlKQotewotICAgIEhUTUxEZXRhaWxzRWxlbWVudCogZGV0YWlscyA9IHN0YXRp
Y19jYXN0PEhUTUxEZXRhaWxzRWxlbWVudCo+KHNoYWRvd0FuY2VzdG9yTm9kZSgpKTsKLSAgICBy
ZXR1cm4gZGV0YWlscy0+bWFpblN1bW1hcnkoKSAhPSBub2RlOwotfQotCi0KIGNsYXNzIERldGFp
bHNTdW1tYXJ5RWxlbWVudCA6IHB1YmxpYyBTaGFkb3dDb250ZW50RWxlbWVudCB7CiBwdWJsaWM6
CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8RGV0YWlsc1N1bW1hcnlFbGVtZW50PiBjcmVhdGUoRG9j
dW1lbnQqKTsKIAogcHJpdmF0ZToKICAgICBEZXRhaWxzU3VtbWFyeUVsZW1lbnQoRG9jdW1lbnQq
IGRvY3VtZW50KQotICAgICAgICA6IFNoYWRvd0NvbnRlbnRFbGVtZW50KEhUTUxOYW1lczo6ZGl2
VGFnLCBkb2N1bWVudCkKKyAgICAgICAgOiBTaGFkb3dDb250ZW50RWxlbWVudChIVE1MTmFtZXM6
OmRpdlRhZywgZG9jdW1lbnQsICJzdW1tYXJ5OmZpcnN0LW9mLXR5cGUiKQogICAgIHsKICAgICB9
Ci0KLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSW5jbHVkZShOb2RlKik7CiB9OwogCiBQYXNzUmVm
UHRyPERldGFpbHNTdW1tYXJ5RWxlbWVudD4gRGV0YWlsc1N1bW1hcnlFbGVtZW50OjpjcmVhdGUo
RG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtNzksMTMgKzY4LDYgQEAgUGFzc1JlZlB0cjxEZXRhaWxz
U3VtbWFyeUVsZW1lbnQ+IERldGFpbHNTdW1tYXJ5RWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBk
b2N1bWUKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERldGFpbHNTdW1tYXJ5RWxlbWVudChkb2N1
bWVudCkpOwogfQogCi1ib29sIERldGFpbHNTdW1tYXJ5RWxlbWVudDo6c2hvdWxkSW5jbHVkZShO
b2RlKiBub2RlKQotewotICAgIEhUTUxEZXRhaWxzRWxlbWVudCogZGV0YWlscyA9IHN0YXRpY19j
YXN0PEhUTUxEZXRhaWxzRWxlbWVudCo+KHNoYWRvd0FuY2VzdG9yTm9kZSgpKTsKLSAgICByZXR1
cm4gZGV0YWlscy0+bWFpblN1bW1hcnkoKSA9PSBub2RlOwotfQotCi0KIFBhc3NSZWZQdHI8SFRN
TERldGFpbHNFbGVtZW50PiBIVE1MRGV0YWlsc0VsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiB7CiAgICAgUmVmUHRyPEhUTUxE
ZXRhaWxzRWxlbWVudD4gcmVzdWx0ID0gYWRvcHRSZWYobmV3IEhUTUxEZXRhaWxzRWxlbWVudCh0
YWdOYW1lLCBkb2N1bWVudCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4
IDE5NWY1NzBlZmYxOGE1M2ZlZGVhN2RlZmMwYTRmZDY4OWQ5ODk0M2UuLjEzYWFiYmQ4ZmJmY2Qy
ZjllMGM4ODdhZWE2YWI4OTBmM2I4YWY2OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5jcHAKQEAgLTEyNiwxNCArMTI2LDE3IEBAIGJvb2wgSW50ZXJuYWxzOjppc1ByZWxvYWRlZChE
b2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgdXJsKQogICAgIHJldHVybiBkb2N1bWVu
dC0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+aXNQcmVsb2FkZWQodXJsKTsKIH0KIAotUGFzc1Jl
ZlB0cjxFbGVtZW50PiBJbnRlcm5hbHM6OmNyZWF0ZVNoYWRvd0NvbnRlbnRFbGVtZW50KERvY3Vt
ZW50KiBkb2N1bWVudCwgRXhjZXB0aW9uQ29kZSYgZWMpCitQYXNzUmVmUHRyPEVsZW1lbnQ+IElu
dGVybmFsczo6Y3JlYXRlU2hhZG93Q29udGVudEVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50LCBj
b25zdCBTdHJpbmcmIHNlbGVjdCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKCFkb2N1
bWVudCkgewogICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKICAgICAgICAgcmV0dXJu
IDA7CiAgICAgfQogCi0gICAgcmV0dXJuIFNoYWRvd0NvbnRlbnRFbGVtZW50OjpjcmVhdGUoZG9j
dW1lbnQpOworICAgIFJlZlB0cjxTaGFkb3dDb250ZW50RWxlbWVudD4gZWxlbSA9IFNoYWRvd0Nv
bnRlbnRFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOworICAgIGlmIChlbGVtKQorICAgICAgICBl
bGVtLT5zZXRTZWxlY3Qoc2VsZWN0KTsKKyAgICByZXR1cm4gZWxlbS5yZWxlYXNlKCk7CiB9CiAK
IEVsZW1lbnQqIEludGVybmFsczo6Z2V0RWxlbWVudEJ5SWRJblNoYWRvd1Jvb3QoTm9kZSogc2hh
ZG93Um9vdCwgY29uc3QgU3RyaW5nJiBpZCwgRXhjZXB0aW9uQ29kZSYgZWMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuaAppbmRleCBlYTAwZDE1OGRiNjc3OTA4OWI3ZjUzM2YwZjRkNTI2MTNl
YjYxMTM3Li4yNTFkNGEwMmNlNzVhY2JlY2ZkZGNlZGY1MTJkOGI5ODljMzgzY2FkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIHZv
aWQgcmVtb3ZlU2hhZG93Um9vdChFbGVtZW50KiBob3N0LCBFeGNlcHRpb25Db2RlJik7CiAgICAg
RWxlbWVudCogaW5jbHVkZXJGb3IoTm9kZSosIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBTdHJpbmcg
c2hhZG93UHNldWRvSWQoRWxlbWVudCosIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBQYXNzUmVmUHRy
PEVsZW1lbnQ+IGNyZWF0ZVNoYWRvd0NvbnRlbnRFbGVtZW50KERvY3VtZW50KiwgRXhjZXB0aW9u
Q29kZSYpOworICAgIFBhc3NSZWZQdHI8RWxlbWVudD4gY3JlYXRlU2hhZG93Q29udGVudEVsZW1l
bnQoRG9jdW1lbnQqLCBjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7CiAgICAgRWxlbWVu
dCogZ2V0RWxlbWVudEJ5SWRJblNoYWRvd1Jvb3QoTm9kZSogc2hhZG93Um9vdCwgY29uc3QgU3Ry
aW5nJiBpZCwgRXhjZXB0aW9uQ29kZSYpOwogCiAjaWYgRU5BQkxFKElOUFVUX0NPTE9SKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IGQ2MjIyNjA0MzBhNzE2OWM0YzZhMzUx
ZTYwNjE5MDUwZjY5MmEyMzEuLjMxMGQzMGM2ZjA5YzgxMjc3ZWNlNGIyMDkyOGZhNzY5Mjk1Y2Nk
NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTM1LDcgKzM1LDcgQEAg
bW9kdWxlIHdpbmRvdyB7CiAgICAgICAgIEVsZW1lbnQgaW5jbHVkZXJGb3IoaW4gTm9kZSBub2Rl
KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIHZvaWQgcmVtb3ZlU2hhZG93Um9vdChp
biBFbGVtZW50IGhvc3QpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKICAgICAgICAgRE9NU3RyaW5n
IHNoYWRvd1BzZXVkb0lkKGluIEVsZW1lbnQgZWxlbWVudCkgcmFpc2VzIChET01FeGNlcHRpb24p
OwotICAgICAgICBFbGVtZW50IGNyZWF0ZVNoYWRvd0NvbnRlbnRFbGVtZW50KGluIERvY3VtZW50
IGRvY3VtZW50KSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgRWxlbWVudCBjcmVhdGVT
aGFkb3dDb250ZW50RWxlbWVudChpbiBEb2N1bWVudCBkb2N1bWVudCwgaW4gW09wdGlvbmFsPUNh
bGxXaXRoTnVsbFZhbHVlXSBET01TdHJpbmcgc2VsZWN0KSByYWlzZXMoRE9NRXhjZXB0aW9uKTsK
ICAgICAgICAgRWxlbWVudCBnZXRFbGVtZW50QnlJZEluU2hhZG93Um9vdChpbiBOb2RlIHNoYWRv
d1Jvb3QsIGluIERPTVN0cmluZyBpZCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAKICNpZiBkZWZp
bmVkKEVOQUJMRV9JTlBVVF9DT0xPUikgJiYgRU5BQkxFX0lOUFVUX0NPTE9SCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMGFi
MGJiOWMxYjM1MDFiMWMyZTY1ZDA5ZTYzYmI3NmQyNDdkMGRjZi4uMTU4NWFhMzcyMjIwMTdlZmQw
MDExNDFkNmU3MjE2NDE2NTQ2YWNkYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTAxLTA0
ICBTaGlueWEgS2F3YW5ha2EgIDxzaGlueWFrQGdvb2dsZS5jb20+CisKKyAgICAgICAgU2hhZG93
Q29udGVudEVsZW1lbnQgc2hvdWxkIGJlIGFibGUgdG8gdXNlIHF1ZXJ5LgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzUzMDIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0cyBmb3IgU2hhZG93Q29udGVu
dEVsZW1lbnQgcXVlcnkuCisKKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWNvbnRl
bnRzLXNlbGVjdC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRv
dy9zaGFkb3ctY29udGVudHMtc2VsZWN0Lmh0bWw6IEFkZGVkLgorCiAyMDEyLTAxLTA0ICBLZW5u
ZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xlLmNvbT4KIAogICAgICAgICBGaXggc2VtYW50aWNzIG9m
IFdFQktJVF9XRUJHTF9sb3NlX2NvbnRleHQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL3NoYWRvdy9zaGFkb3ctY29udGVudHMtc2VsZWN0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctY29udGVudHMtc2VsZWN0LWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi44MjIwMTU5OWU0OGJkYjdiNGE2N2Q2OTE0ZWNlY2U2ZTVhNjI1ZDQ3Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1jb250ZW50
cy1zZWxlY3QtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1BBU1MKK1BBU1MKK1BBU1MK
K1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BB
U1MKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1jb250
ZW50cy1zZWxlY3QuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctY29u
dGVudHMtc2VsZWN0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWM2NmEwMThjM2RlODk4Nzg3ZWQ4NTc0MzM4
NDg2ZDA0OGU1MGY5NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3No
YWRvdy9zaGFkb3ctY29udGVudHMtc2VsZWN0Lmh0bWwKQEAgLTAsMCArMSwyNDggQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4KKy8qIHJlbGF0aXZlIHBvc2l0aW9u
aW5nIGVuc3VyZXMgdW5kZXJseWluZyBSZW5kZXJMYXllciAqLworLmNvbnRhaW5lciB7CisgICAg
cG9zaXRpb246IHJlbGF0aXZlOworfQorPC9zdHlsZT4KKzxzY3JpcHQ+CitmdW5jdGlvbiBsb2co
bWVzc2FnZSkKK3sKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmlubmVy
SFRNTCArPSAobWVzc2FnZSArICJcbiIpOworfQorCitmdW5jdGlvbiByZW1vdmVBbGxDaGlsZHJl
bihlbGVtKSB7CisgICAgd2hpbGUgKGVsZW0uZmlyc3RDaGlsZCkKKyAgICAgICAgZWxlbS5yZW1v
dmVDaGlsZChlbGVtLmZpcnN0Q2hpbGQpOworfQorCitmdW5jdGlvbiBjbGVhblVwKCkgeworICAg
IHJlbW92ZUFsbENoaWxkcmVuKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFp
bmVyJykpOworICAgIHJlbW92ZUFsbENoaWxkcmVuKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdl
eHBlY3QtY29udGFpbmVyJykpOworfQorCitmdW5jdGlvbiByZW1vdmVDb250YWluZXJMaW5lcyh0
ZXh0KQoreworICAgIHZhciBsaW5lcyA9IHRleHQuc3BsaXQoIlxuIik7CisgICAgbGluZXMuc3Bs
aWNlKDAsIDIpOworICAgIHJldHVybiBsaW5lcy5qb2luKCJcbiIpOworfQorCitmdW5jdGlvbiBj
aGVjaygpIHsKKyAgICB2YXIgcmVmQ29udGFpbmVyUmVuZGVyVHJlZSA9IGludGVybmFscy5lbGVt
ZW50UmVuZGVyVHJlZUFzVGV4dChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRh
aW5lcicpKTsKKyAgICB2YXIgcmVmUmVuZGVyVHJlZSA9IHJlbW92ZUNvbnRhaW5lckxpbmVzKHJl
ZkNvbnRhaW5lclJlbmRlclRyZWUpOworCisgICAgdmFyIHRhcmdldENvbnRhaW5lclJlbmRlclRy
ZWUgPSBpbnRlcm5hbHMuZWxlbWVudFJlbmRlclRyZWVBc1RleHQoZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKSk7CisgICAgdmFyIHRhcmdldFJlbmRlclRyZWUgPSBy
ZW1vdmVDb250YWluZXJMaW5lcyh0YXJnZXRDb250YWluZXJSZW5kZXJUcmVlKTsKKworICAgIGlm
ICh0YXJnZXRSZW5kZXJUcmVlID09IHJlZlJlbmRlclRyZWUpCisgICAgICAgIGxvZygiUEFTUyIp
OworICAgIGVsc2UgeworICAgICAgICBsb2coIkZBSUwiKTsKKyAgICAgICAgbG9nKCJFeHBlY3Rl
ZDoiKTsKKyAgICAgICAgbG9nKHJlZlJlbmRlclRyZWUpOworICAgICAgICBsb2coIkFjdHVhbDoi
KTsKKyAgICAgICAgbG9nKHRhcmdldFJlbmRlclRyZWUpOworICAgIH0KK30KKworZnVuY3Rpb24g
YXBwZW5kU2hhZG93KHRhcmdldCwgc2VsZWN0KSB7CisgICAgdmFyIHJvb3QgPSBpbnRlcm5hbHMu
ZW5zdXJlU2hhZG93Um9vdCh0YXJnZXQpOworCisgICAgdmFyIGNoaWxkMCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoInNwYW4iKTsKKyAgICBjaGlsZDAuaW5uZXJIVE1MID0gIkhlbGxvLCI7Cisg
ICAgcm9vdC5hcHBlbmRDaGlsZChjaGlsZDApOworCisgICAgdmFyIGNvbnRlbnQgPSBpbnRlcm5h
bHMuY3JlYXRlU2hhZG93Q29udGVudEVsZW1lbnQoZG9jdW1lbnQsIHNlbGVjdCk7CisgICAgcm9v
dC5hcHBlbmRDaGlsZChjb250ZW50KTsKKworICAgIHZhciBjaGlsZDEgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJzcGFuIik7CisgICAgY2hpbGQxLmlubmVySFRNTCA9ICJXb3JsZC4iOworICAg
IHJvb3QuYXBwZW5kQ2hpbGQoY2hpbGQxKTsKK30KKworZnVuY3Rpb24gdGVzdFNlbGVjdElzTnVs
bCgpIHsKKyAgICB2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Cisg
ICAgdGFyZ2V0LmlubmVySFRNTCA9ICI8c3Bhbj5jb250ZW50PC9zcGFuPiI7CisKKyAgICBhcHBl
bmRTaGFkb3codGFyZ2V0LCAiIik7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0
dWFsLWNvbnRhaW5lcicpLmFwcGVuZENoaWxkKHRhcmdldCk7CisgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5pbm5lckhUTUwgPQorICAgICAgICAiPGRpdj48
c3Bhbj5IZWxsbyw8L3NwYW4+PHNwYW4+Y29udGVudDwvc3Bhbj48c3Bhbj5Xb3JsZC48L3NwYW4+
PC9kaXY+IjsKK30KKworZnVuY3Rpb24gdGVzdFNlbGVjdElzSWQoKSB7CisgICAgdmFyIHRhcmdl
dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHRhcmdldC5pbm5lckhUTUwg
PSAiPHNwYW4gaWQ9J2Zvbyc+Y29udGVudDwvc3Bhbj48c3BhbiBpZD0nYXp1bnlhbic+cGVyb3Bl
cm88L3NwYW4+IjsKKworICAgIGFwcGVuZFNoYWRvdyh0YXJnZXQsICIjZm9vIik7CisKKyAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFwcGVuZENoaWxkKHRh
cmdldCk7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5p
bm5lckhUTUwgPQorICAgICAgICAiPGRpdj48c3Bhbj5IZWxsbyw8L3NwYW4+PHNwYW4+Y29udGVu
dDwvc3Bhbj48c3Bhbj5Xb3JsZC48L3NwYW4+PC9kaXY+IjsKK30KKworZnVuY3Rpb24gdGVzdFNl
bGVjdElzSWRCdXROb3RNYXRjaGVkKCkgeworICAgIHZhciB0YXJnZXQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdkaXYnKTsKKyAgICB0YXJnZXQuaW5uZXJIVE1MID0gIjxzcGFuIGlkPSdmb28n
PmNvbnRlbnQ8L3NwYW4+PHNwYW4gaWQ9J2F6dW55YW4nPnBlcm9wZXJvPC9zcGFuPiI7CisKKyAg
ICBhcHBlbmRTaGFkb3codGFyZ2V0LCAiI2Zvb2JhciIpOworCisgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRDaGlsZCh0YXJnZXQpOworICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVyJykuaW5uZXJIVE1MID0KKyAg
ICAgICAgIjxkaXY+PHNwYW4+SGVsbG8sPC9zcGFuPjxzcGFuPldvcmxkLjwvc3Bhbj48L2Rpdj4i
OworfQorCitmdW5jdGlvbiB0ZXN0U2VsZWN0SXNJZEJ1dE5vdENoaWxkKCkgeworICAgIHZhciB0
YXJnZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICB0YXJnZXQuaW5uZXJI
VE1MID0gIjxzcGFuPjxzcGFuIGlkPSdmb28nPmNvbnRlbnQ8L3NwYW4+PHNwYW4gaWQ9J2F6dW55
YW4nPnBlcm9wZXJvPC9zcGFuPjwvc3Bhbj4iOworCisgICAgYXBwZW5kU2hhZG93KHRhcmdldCwg
IiNmb28iKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVy
JykuYXBwZW5kQ2hpbGQodGFyZ2V0KTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhw
ZWN0LWNvbnRhaW5lcicpLmlubmVySFRNTCA9CisgICAgICAgICI8ZGl2PjxzcGFuPkhlbGxvLDwv
c3Bhbj48c3Bhbj5Xb3JsZC48L3NwYW4+PC9kaXY+IjsKK30KKworZnVuY3Rpb24gdGVzdFNlbGVj
dElzTXVsdGlJZCgpIHsKKyAgICB2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
ZGl2Jyk7CisgICAgdGFyZ2V0LmlubmVySFRNTCA9ICI8c3BhbiBpZD0nZm9vJz5jb250ZW50PC9z
cGFuPjxzcGFuIGlkPSdhenVueWFuJz5wZXJvcGVybzwvc3Bhbj48c3BhbiBpZD0nZm9vJz5jb250
ZW50PC9zcGFuPiI7CisKKyAgICBhcHBlbmRTaGFkb3codGFyZ2V0LCAiI2ZvbyIpOworCisgICAg
Ly8gQWxsIG1hdGNoZWQgZWxlbWVudHMgd2lsbCBiZSBzZWxlY3RlZC4KKyAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFwcGVuZENoaWxkKHRhcmdldCk7Cisg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5pbm5lckhUTUwg
PQorICAgICAgICAiPGRpdj48c3Bhbj5IZWxsbyw8L3NwYW4+PHNwYW4+Y29udGVudDwvc3Bhbj48
c3Bhbj5jb250ZW50PC9zcGFuPjxzcGFuPldvcmxkLjwvc3Bhbj48L2Rpdj4iOworfQorCitmdW5j
dGlvbiB0ZXN0U2VsZWN0SXNUeXBlKCkgeworICAgIHZhciB0YXJnZXQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdkaXYnKTsKKyAgICB0YXJnZXQuaW5uZXJIVE1MID0gIjxkaXY+YXp1bnlhbjwv
ZGl2PjxzcGFuPmNvbnRlbnQ8L3NwYW4+PGRpdj5wZXJvcGVybzwvZGl2PiI7CisKKyAgICBhcHBl
bmRTaGFkb3codGFyZ2V0LCAic3BhbiIpOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRDaGlsZCh0YXJnZXQpOworICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVyJykuaW5uZXJIVE1MID0KKyAgICAgICAgIjxk
aXY+PHNwYW4+SGVsbG8sPC9zcGFuPjxzcGFuPmNvbnRlbnQ8L3NwYW4+PHNwYW4+V29ybGQuPC9z
cGFuPjwvZGl2PiI7Cit9CisKK2Z1bmN0aW9uIHRlc3RTZWxlY3RJc1R5cGVXaXRoQXR0cmlidXRl
KCkgeworICAgIHZhciB0YXJnZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAg
ICB0YXJnZXQuaW5uZXJIVE1MID0gIjxzcGFuPmF6dW55YW48L3NwYW4+PHNwYW4gdGl0bGU9J2Nv
bnRlbnQnPmNvbnRlbnQ8L3NwYW4+PHNwYW4+cGVyb3Blcm88L3NwYW4+IjsKKworICAgIGFwcGVu
ZFNoYWRvdyh0YXJnZXQsICJzcGFuW3RpdGxlPSdjb250ZW50J10iKTsKKworICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBwZW5kQ2hpbGQodGFyZ2V0KTsK
KyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlubmVySFRN
TCA9CisgICAgICAgICI8ZGl2PjxzcGFuPkhlbGxvLDwvc3Bhbj48c3Bhbj5jb250ZW50PC9zcGFu
PjxzcGFuPldvcmxkLjwvc3Bhbj48L2Rpdj4iOworfQorCitmdW5jdGlvbiB0ZXN0U2VsZWN0SXNU
eXBlV2l0aEZpcnN0T2ZUeXBlKCkgeworICAgIHZhciB0YXJnZXQgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdkaXYnKTsKKyAgICB0YXJnZXQuaW5uZXJIVE1MID0gIjxkaXY+YXp1bnlhbjwvZGl2
PjxzcGFuPmNvbnRlbnQ8L3NwYW4+PHNwYW4+cGVyb3Blcm88L3NwYW4+IjsKKworICAgIGFwcGVu
ZFNoYWRvdyh0YXJnZXQsICJzcGFuOmZpcnN0LW9mLXR5cGUiKTsKKworICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBwZW5kQ2hpbGQodGFyZ2V0KTsKKyAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlubmVySFRNTCA9
CisgICAgICAgICI8ZGl2PjxzcGFuPkhlbGxvLDwvc3Bhbj48c3Bhbj5jb250ZW50PC9zcGFuPjxz
cGFuPldvcmxkLjwvc3Bhbj48L2Rpdj4iOworfQorCitmdW5jdGlvbiB0ZXN0U2VsZWN0SXNUeXBl
V2l0aEZpcnN0T2ZUeXBlMigpIHsKKyAgICB2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnZGl2Jyk7CisgICAgdGFyZ2V0LmlubmVySFRNTCA9ICI8ZGl2PjxzcGFuPmF6dW55YW48
L3NwYW4+PC9kaXY+PHNwYW4+Y29udGVudDwvc3Bhbj48c3Bhbj5wZXJvcGVybzwvc3Bhbj4iOwor
CisgICAgYXBwZW5kU2hhZG93KHRhcmdldCwgInNwYW46Zmlyc3Qtb2YtdHlwZSIpOworCisgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRDaGlsZCh0
YXJnZXQpOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVyJyku
aW5uZXJIVE1MID0KKyAgICAgICAgIjxkaXY+PHNwYW4+SGVsbG8sPC9zcGFuPjxzcGFuPmNvbnRl
bnQ8L3NwYW4+PHNwYW4+V29ybGQuPC9zcGFuPjwvZGl2PiI7Cit9CisKK2Z1bmN0aW9uIHRlc3RT
ZWxlY3RJc1R5cGVXaXRoTGFzdE9mVHlwZSgpIHsKKyAgICB2YXIgdGFyZ2V0ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgdGFyZ2V0LmlubmVySFRNTCA9ICI8c3Bhbj5henVu
eWFuPC9zcGFuPjxzcGFuPmNvbnRlbnQ8L3NwYW4+PGRpdj5wZXJvcGVybzwvZGl2PiI7CisKKyAg
ICBhcHBlbmRTaGFkb3codGFyZ2V0LCAic3BhbjpsYXN0LW9mLXR5cGUiKTsKKworICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBwZW5kQ2hpbGQodGFyZ2V0
KTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlubmVy
SFRNTCA9CisgICAgICAgICI8ZGl2PjxzcGFuPkhlbGxvLDwvc3Bhbj48c3Bhbj5jb250ZW50PC9z
cGFuPjxzcGFuPldvcmxkLjwvc3Bhbj48L2Rpdj4iOworfQorCitmdW5jdGlvbiB0ZXN0U2VsZWN0
SXNEZXRhaWxzKCkgeworICAgIHZhciB0YXJnZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdk
aXYnKTsKKyAgICB0YXJnZXQuaW5uZXJIVE1MID0gIjxkZXRhaWxzPmNvbnRlbnQ8L2RldGFpbHM+
IjsKKworICAgIGFwcGVuZFNoYWRvdyh0YXJnZXQsICJkZXRhaWxzIik7CisKKyAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFwcGVuZENoaWxkKHRhcmdldCk7
CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5pbm5lckhU
TUwgPQorICAgICAgICAiPGRpdj48c3Bhbj5IZWxsbyw8L3NwYW4+PGRldGFpbHM+Y29udGVudDwv
ZGV0YWlscz48c3Bhbj5Xb3JsZC48L3NwYW4+PC9kaXY+IjsKK30KKworZnVuY3Rpb24gdGVzdFNl
bGVjdElzRGV0YWlsczIoKSB7CisgICAgdmFyIHRhcmdldCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ2RpdicpOworICAgIHRhcmdldC5pbm5lckhUTUwgPSAiPGRldGFpbHM+PHN1bW1hcnk+Y29u
dGVudDwvc3VtbWFyeT48L2RldGFpbHM+IjsKKworICAgIGFwcGVuZFNoYWRvdyh0YXJnZXQsICJk
ZXRhaWxzIik7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5l
cicpLmFwcGVuZENoaWxkKHRhcmdldCk7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4
cGVjdC1jb250YWluZXInKS5pbm5lckhUTUwgPQorICAgICAgICAiPGRpdj48c3Bhbj5IZWxsbyw8
L3NwYW4+PGRldGFpbHM+PHN1bW1hcnk+Y29udGVudDwvc3VtbWFyeT48L2RldGFpbHM+PHNwYW4+
V29ybGQuPC9zcGFuPjwvZGl2PiI7Cit9CisKK2Z1bmN0aW9uIHRlc3RTZWxlY3RXaGVuRHluYW1p
Y2FsbHlDaGlsZHJlbkNoYW5nZWQoKSB7CisgICAgdmFyIHRhcmdldCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ2RpdicpOworICAgIHRhcmdldC5pbm5lckhUTUwgPSAiPHNwYW4+Y29udGVudDwv
c3Bhbj48c3BhbiBpZD0ndG9iZXJlbW92ZWQnPmFudW55YW4gcGVyb3Blcm88L3NwYW4+IjsKKwor
ICAgIGFwcGVuZFNoYWRvdyh0YXJnZXQsICJzcGFuIik7CisKKyAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFwcGVuZENoaWxkKHRhcmdldCk7CisgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5pbm5lckhUTUwgPQorICAg
ICAgICAiPGRpdj48c3Bhbj5IZWxsbyw8L3NwYW4+PHNwYW4+Y29udGVudDwvc3Bhbj48c3Bhbj5X
b3JsZC48L3NwYW4+PC9kaXY+IjsKKworICAgIHZhciBlbGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3RvYmVyZW1vdmVkJyk7CisgICAgZWxlbS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGVs
ZW0pOworfQorCit2YXIgdGVzdEZ1bmNzID0gWworICAgIHRlc3RTZWxlY3RJc051bGwsCisgICAg
dGVzdFNlbGVjdElzSWQsCisgICAgdGVzdFNlbGVjdElzSWRCdXROb3RNYXRjaGVkLAorICAgIHRl
c3RTZWxlY3RJc0lkQnV0Tm90Q2hpbGQsCisgICAgdGVzdFNlbGVjdElzTXVsdGlJZCwKKyAgICB0
ZXN0U2VsZWN0SXNUeXBlLAorICAgIHRlc3RTZWxlY3RJc1R5cGVXaXRoQXR0cmlidXRlLAorICAg
IHRlc3RTZWxlY3RJc1R5cGVXaXRoRmlyc3RPZlR5cGUsCisgICAgdGVzdFNlbGVjdElzVHlwZVdp
dGhGaXJzdE9mVHlwZTIsCisgICAgdGVzdFNlbGVjdElzVHlwZVdpdGhMYXN0T2ZUeXBlLAorICAg
IHRlc3RTZWxlY3RJc0RldGFpbHMsCisgICAgdGVzdFNlbGVjdElzRGV0YWlsczIsCisgICAgdGVz
dFNlbGVjdFdoZW5EeW5hbWljYWxseUNoaWxkcmVuQ2hhbmdlZCwKK10KKworZnVuY3Rpb24gZG9U
ZXN0KCkgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBjbGVh
blVwKCk7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRlc3RGdW5jcy5sZW5ndGg7ICsraSkg
eworICAgICAgIHRlc3RGdW5jc1tpXSgpOworICAgICAgIGNoZWNrKCk7CisgICAgICAgY2xlYW5V
cCgpOworICAgIH0KK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJkb1Rlc3Qo
KSI+CisKKzxkaXYgaWQ9ImFjdHVhbC1jb250YWluZXIiIGNsYXNzPSJjb250YWluZXIiPjwvZGl2
PgorPGRpdiBpZD0iZXhwZWN0LWNvbnRhaW5lciIgY2xhc3M9ImNvbnRhaW5lciI+PC9kaXY+Cis8
cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KKworPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121411</attachid>
            <date>2012-01-06 02:11:41 -0800</date>
            <delta_ts>2012-01-09 18:03:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-75302-20120106191140.patch</filename>
            <type>text/plain</type>
            <size>26826</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA0MjY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMThlY2YwMGEyZjQwODY4
ZjQxYTBjNzNiYzA4NGU1ODRhZDNhODU5ZS4uM2NjNjM2Njg2NzZiMDlhMWRhZjUzNWI4ODRjNDBj
NjkxODA4YmZkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDEyLTAxLTA2ICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGdvb2dsZS5jb20+CisKKyAgICAgICAgU2hhZG93Q29udGVu
dEVsZW1lbnQgc2hvdWxkIGJlIGFibGUgdG8gdXNlIHF1ZXJ5LgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzUzMDIKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgYSBzZWxl
Y3RvciB0byBxdWVyeSBlbGVtZW50cyBpbiBTaGFkb3dDb250ZW50RWxlbWVudC4KKyAgICAgICAg
VGhpcyBjYW4gYmUgdXNlZCBpbnN0ZWFkIG9mIFNoYWRvd0NvbnRlbnRFbGVtZW50OjpzaG91bGRJ
bmNsdWRlIGluIG1vcmUgc29waGlzdGljYXRlZCB3YXlzLgorCisgICAgICAgIFRlc3RzOiBmYXN0
L2RvbS9zaGFkb3cvc2hhZG93LWNvbnRlbnRzLXNlbGVjdC1leHBlY3RlZC5odG1sCisgICAgICAg
ICAgICAgICBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWNvbnRlbnRzLXNlbGVjdC5odG1sCisKKyAg
ICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0NvbnRlbnRFbGVtZW50OjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhZG93Q29udGVudEVsZW1lbnQ6OlNoYWRvd0NvbnRlbnRFbGVt
ZW50KToKKyAgICAgICAgKiBkb20vU2hhZG93Q29udGVudEVsZW1lbnQuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlNoYWRvd0NvbnRlbnRFbGVtZW50OjpzZWxlY3QpOgorICAgICAgICAqIGRvbS9TaGFk
b3dDb250ZW50U2VsZWN0b3JRdWVyeS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U2hh
ZG93Q29udGVudFNlbGVjdG9yUXVlcnk6OlNoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5OjptYXRjaGVzKToKKyAg
ICAgICAgICBSZXR1cm5zIHRydWUgaWYgTm9kZSBpcyBtYXRjaGVkIGJ5IHRoZSBxdWVyeS4KKyAg
ICAgICAgKiBkb20vU2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnkuaDogQ29waWVkIGZyb20gU291
cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50LmguCisgICAgICAgIChXZWJDb3Jl
OjpTaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeTo6U2VsZWN0b3JEYXRhOjpTZWxlY3RvckRhdGEp
OgorICAgICAgICAqIGRvbS9TaGFkb3dJbmNsdXNpb25TZWxlY3Rvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFkb3dJbmNsdXNpb25TZWxlY3Rvcjo6c2VsZWN0KToKKyAgICAgICAgKiBkb20v
U2hhZG93SW5jbHVzaW9uU2VsZWN0b3IuaDoKKyAgICAgICAgKiBodG1sL0hUTUxEZXRhaWxzRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZXRhaWxzQ29udGVudEVsZW1lbnQ6OkRldGFp
bHNDb250ZW50RWxlbWVudCk6IFJlLWltcGxlbWVudGVkIHVzaW5nIHF1ZXJ5LgorICAgICAgICAo
V2ViQ29yZTo6RGV0YWlsc1N1bW1hcnlFbGVtZW50OjpEZXRhaWxzU3VtbWFyeUVsZW1lbnQpOiBk
aXR0by4KKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnRlcm5hbHM6OmNyZWF0ZVNoYWRvd0NvbnRlbnRFbGVtZW50KToKKyAgICAgICAgKiB0ZXN0
aW5nL0ludGVybmFscy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKwogMjAx
Mi0wMS0wNSAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS8xMDYzMzc2MD4gVXBkYXRlIGNvcHlyaWdodCBzdHJpbmdzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKaW5kZXggZGY5NzBiNzQwMmQwZDM4ZTljNjgxNjc5MmY3NDdkMDM4MmE3MzViYi4uMDIyMWQw
ZDc4MjFjNjA1YzcxNzJjNzJmZjQzYzRmMmJjMDI0OWMzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAt
NTQzMyw2ICs1NDMzLDggQEAKICAgICAgICAgICAgICdkb20vU2VsZWN0b3JRdWVyeS5oJywKICAg
ICAgICAgICAgICdkb20vU2hhZG93Q29udGVudEVsZW1lbnQuY3BwJywKICAgICAgICAgICAgICdk
b20vU2hhZG93Q29udGVudEVsZW1lbnQuaCcsCisgICAgICAgICAgICAnZG9tL1NoYWRvd0NvbnRl
bnRTZWxlY3RvclF1ZXJ5LmNwcCcsCisgICAgICAgICAgICAnZG9tL1NoYWRvd0NvbnRlbnRTZWxl
Y3RvclF1ZXJ5LmgnLAogICAgICAgICAgICAgJ2RvbS9TaGFkb3dJbmNsdXNpb25TZWxlY3Rvci5j
cHAnLAogICAgICAgICAgICAgJ2RvbS9TaGFkb3dJbmNsdXNpb25TZWxlY3Rvci5oJywKICAgICAg
ICAgICAgICdkb20vU2hhZG93Um9vdC5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dD
b250ZW50RWxlbWVudC5jcHAKaW5kZXggZWNlZTZkMGM3ZWU3NmZkZDcyNWUyZmRjZjg3MmRkMmJi
OTNjOTdiYi4uOGFiYzY0MzRiMmU5NTBmZGMwZWZkMWEzMWQyMjgzNjRkMmU2NzA2MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Q29udGVudEVsZW1lbnQuY3BwCkBAIC0yOCwyMCArMjgs
MjIgQEAKICNpbmNsdWRlICJTaGFkb3dDb250ZW50RWxlbWVudC5oIgogCiAjaW5jbHVkZSAiSFRN
TE5hbWVzLmgiCisjaW5jbHVkZSAiU2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnkuaCIKICNpbmNs
dWRlICJTaGFkb3dJbmNsdXNpb25TZWxlY3Rvci5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPFNoYWRvd0NvbnRlbnRFbGVtZW50
PiBTaGFkb3dDb250ZW50RWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKK1Bhc3NS
ZWZQdHI8U2hhZG93Q29udGVudEVsZW1lbnQ+IFNoYWRvd0NvbnRlbnRFbGVtZW50OjpjcmVhdGUo
RG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIHNlbGVjdCkKIHsKICAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKFF1YWxpZmllZE5hbWUsIHRhZ05hbWUsIChudWxsQXRvbSwgIndlYmtpdFNo
YWRvd0NvbnRlbnQiLCBIVE1MTmFtZXM6OmRpdlRhZy5uYW1lc3BhY2VVUkkoKSkpOwotICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgU2hhZG93Q29udGVudEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQp
KTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYWRvd0NvbnRlbnRFbGVtZW50KHRhZ05hbWUs
IGRvY3VtZW50LCBzZWxlY3QpKTsKIH0KIAotU2hhZG93Q29udGVudEVsZW1lbnQ6OlNoYWRvd0Nv
bnRlbnRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIERvY3VtZW50KiBkb2N1bWVu
dCkKK1NoYWRvd0NvbnRlbnRFbGVtZW50OjpTaGFkb3dDb250ZW50RWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW1lJiBuYW1lLCBEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgc2VsZWN0
KQogICAgIDogU3R5bGVkRWxlbWVudChuYW1lLCBkb2N1bWVudCwgQ3JlYXRlSFRNTEVsZW1lbnQp
CiAgICAgLCBtX2luY2x1c2lvbnMoYWRvcHRQdHIobmV3IFNoYWRvd0luY2x1c2lvbkxpc3QoKSkp
CisgICAgLCBtX3NlbGVjdChzZWxlY3QpCiB7CiB9CiAKQEAgLTc2LDEwICs3OCw0IEBAIHZvaWQg
U2hhZG93Q29udGVudEVsZW1lbnQ6OmRldGFjaCgpCiAgICAgU3R5bGVkRWxlbWVudDo6ZGV0YWNo
KCk7CiB9CiAKLWJvb2wgU2hhZG93Q29udGVudEVsZW1lbnQ6OnNob3VsZEluY2x1ZGUoTm9kZSop
Ci17Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93
Q29udGVudEVsZW1lbnQuaAppbmRleCA3YjM2NjYyMWI3Yjk2M2E0MzBmYzE0MzA5YmQ0NjVlYWVk
ZmEwNGE0Li5iNjJmYjE0MjQ4NWI4ZmQzYzkxMDVhODgxMWExYjY2MDRlZjJjZjk1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Q29udGVudEVsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2hhZG93Q29udGVudEVsZW1lbnQuaApAQCAtMzYsMjMgKzM2LDI3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgU2hhZG93Q29udGVudFNlbGVjdG9yUXVl
cnk7CiBjbGFzcyBTaGFkb3dJbmNsdXNpb25MaXN0OwogCiAvLyBOT1RFOiBDdXJyZW50IGltcGxl
bWVudGF0aW9uIGRvZXNuJ3Qgc3VwcG9ydCBkeW5hbWljIGluc2VydGlvbi9kZWxldGlvbiBvZiBT
aGFkb3dDb250ZW50RWxlbWVudC4KIC8vIFlvdSBzaG91bGQgY3JlYXRlIFNoYWRvd0NvbnRlbnRF
bGVtZW50IGR1cmluZyB0aGUgaG9zdCBjb25zdHJ1Y3Rpb24uCiBjbGFzcyBTaGFkb3dDb250ZW50
RWxlbWVudCA6IHB1YmxpYyBTdHlsZWRFbGVtZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxTaGFkb3dDb250ZW50RWxlbWVudD4gY3JlYXRlKERvY3VtZW50Kik7CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8U2hhZG93Q29udGVudEVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCosIGNv
bnN0IFN0cmluZyYgc2VsZWN0ID0gU3RyaW5nKCkpOwogCiAgICAgdmlydHVhbCB+U2hhZG93Q29u
dGVudEVsZW1lbnQoKTsKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSW5jbHVkZShOb2RlKik7CiAg
ICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpOwogICAgIHZpcnR1YWwgdm9pZCBkZXRhY2goKTsKIAor
ICAgIGNvbnN0IFN0cmluZyYgc2VsZWN0KCkgeyByZXR1cm4gbV9zZWxlY3Q7IH0KKwogICAgIGNv
bnN0IFNoYWRvd0luY2x1c2lvbkxpc3QqIGluY2x1c2lvbnMoKSBjb25zdCB7IHJldHVybiBtX2lu
Y2x1c2lvbnMuZ2V0KCk7IH0KIAogcHJvdGVjdGVkOgotICAgIFNoYWRvd0NvbnRlbnRFbGVtZW50
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOworICAgIC8vIEZJWE1FOiBDdXJyZW50
bHkgdGhpcyBjb25zdHJ1Y3RvciBhY2NlcHRzIHdpZGVyIHF1ZXJ5IHRoYW4gc2hhZG93IGRvbSBz
cGVjLgorICAgIC8vIEZvciBleGFtcGxlLCBhIHNlbGVjdG9yIHF1ZXJ5IHNob3VsZCBub3QgaW5j
bHVkZSBjb250ZXh0dWFsIHNlbGVjdG9ycy4KKyAgICBTaGFkb3dDb250ZW50RWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqLCBjb25zdCBTdHJpbmcmIHNlbGVjdCA9IFN0cmlu
ZygpKTsKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaXNDb250ZW50RWxlbWVudCgpIGNv
bnN0IHsgcmV0dXJuIHRydWU7IH0KQEAgLTYwLDYgKzY0LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHls
ZSopIHsgcmV0dXJuIDA7IH0KIAogICAgIE93blB0cjxTaGFkb3dJbmNsdXNpb25MaXN0PiBtX2lu
Y2x1c2lvbnM7CisgICAgU3RyaW5nIG1fc2VsZWN0OwogfTsKIAogaW5saW5lIFNoYWRvd0NvbnRl
bnRFbGVtZW50KiB0b1NoYWRvd0NvbnRlbnRFbGVtZW50KE5vZGUqIG5vZGUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnkuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4yYTgxM2JjYzE4MjczNmVhMTY1MTA2OTMzZGI5NjJmNDRjMjA4N2I5Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmNwcApA
QCAtMCwwICsxLDg1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisg
KiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNoYWRvd0Nv
bnRlbnRTZWxlY3RvclF1ZXJ5LmgiCisKKyNpbmNsdWRlICJDU1NQYXJzZXIuaCIKKyNpbmNsdWRl
ICJDU1NTZWxlY3Rvckxpc3QuaCIKKyNpbmNsdWRlICJTaGFkb3dDb250ZW50RWxlbWVudC5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1NoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5OjpTaGFk
b3dDb250ZW50U2VsZWN0b3JRdWVyeShTaGFkb3dDb250ZW50RWxlbWVudCogZWxlbWVudCkKKyAg
ICA6IG1fbWF0Y2hlc0FsbChlbGVtZW50LT5zZWxlY3QoKS5pc0VtcHR5KCkpCisgICAgLCBtX2Nv
bnRlbnRFbGVtZW50KGVsZW1lbnQpCisgICAgLCBtX3NlbGVjdG9yQ2hlY2tlcihlbGVtZW50LT5k
b2N1bWVudCgpLCAhZWxlbWVudC0+ZG9jdW1lbnQoKS0+aW5RdWlya3NNb2RlKCkpCit7CisgICAg
bV9zZWxlY3RvckNoZWNrZXIuc2V0Q29sbGVjdGluZ1J1bGVzT25seSh0cnVlKTsKKworICAgIGlm
IChtX21hdGNoZXNBbGwpCisgICAgICAgIHJldHVybjsKKworICAgIENTU1BhcnNlciBwYXJzZXIo
dHJ1ZSk7CisgICAgcGFyc2VyLnBhcnNlU2VsZWN0b3IoZWxlbWVudC0+c2VsZWN0KCksIGVsZW1l
bnQtPmRvY3VtZW50KCksIG1fc2VsZWN0b3JMaXN0KTsKKworICAgIGZvciAoQ1NTU2VsZWN0b3Iq
IHNlbGVjdG9yID0gbV9zZWxlY3Rvckxpc3QuZmlyc3QoKTsgc2VsZWN0b3I7IHNlbGVjdG9yID0g
Q1NTU2VsZWN0b3JMaXN0OjpuZXh0KHNlbGVjdG9yKSkKKyAgICAgICAgbV9zZWxlY3RvcnMuYXBw
ZW5kKFNlbGVjdG9yRGF0YShzZWxlY3RvciwgU2VsZWN0b3JDaGVja2VyOjppc0Zhc3RDaGVja2Fi
bGVTZWxlY3RvcihzZWxlY3RvcikpKTsKK30KKworCitib29sIFNoYWRvd0NvbnRlbnRTZWxlY3Rv
clF1ZXJ5OjptYXRjaGVzKE5vZGUqIG5vZGUpIGNvbnN0Cit7CisgICAgQVNTRVJUKG5vZGUpOwor
ICAgIGlmICghbm9kZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgQVNTRVJUKG5vZGUt
PnBhcmVudE5vZGUoKSA9PSBtX2NvbnRlbnRFbGVtZW50LT5zaGFkb3dUcmVlUm9vdE5vZGUoKS0+
c2hhZG93SG9zdCgpKTsKKworICAgIGlmIChtX21hdGNoZXNBbGwpCisgICAgICAgIHJldHVybiB0
cnVlOworCisgICAgdW5zaWduZWQgc2VsZWN0b3JDb3VudCA9IG1fc2VsZWN0b3JzLnNpemUoKTsK
KyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2VsZWN0b3JDb3VudDsgKytpKSB7CisgICAg
ICAgIGlmIChtYXRjaGVzKG5vZGUsIG1fc2VsZWN0b3JzW2ldKSkKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBTaGFkb3dDb250
ZW50U2VsZWN0b3JRdWVyeTo6bWF0Y2hlcyhOb2RlKiB0YXJnZXROb2RlLCBjb25zdCBTZWxlY3Rv
ckRhdGEmIHNlbGVjdG9yRGF0YSkgY29uc3QKK3sKKyAgICBBU1NFUlQodGFyZ2V0Tm9kZSk7CisK
KyAgICBpZiAoIXRhcmdldE5vZGUtPmlzRWxlbWVudE5vZGUoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPih0YXJn
ZXROb2RlKTsKKyAgICByZXR1cm4gbV9zZWxlY3RvckNoZWNrZXIuY2hlY2tTZWxlY3RvcihzZWxl
Y3RvckRhdGEuc2VsZWN0b3IsIGVsZW1lbnQsIHNlbGVjdG9yRGF0YS5pc0Zhc3RDaGVja2FibGUp
OworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Q29udGVudFNl
bGVjdG9yUXVlcnkuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dDb250ZW50U2VsZWN0b3JR
dWVyeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmJmMzViYzNkZDQ0ZDgxNzc2MDY4ZThhMGYwYzUzYjIxYjQxNDgy
NzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Q29udGVudFNl
bGVjdG9yUXVlcnkuaApAQCAtMCwwICsxLDgwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEx
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAq
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTaGFkb3dDb250ZW50U2VsZWN0
b3JRdWVyeV9oCisjZGVmaW5lIFNoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5X2gKKworI2luY2x1
ZGUgIkNTU1NlbGVjdG9yTGlzdC5oIgorI2luY2x1ZGUgIlNlbGVjdG9yQ2hlY2tlci5oIgorI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBEb2N1bWVudDsKK2NsYXNzIE5vZGU7CitjbGFzcyBTaGFkb3dD
b250ZW50RWxlbWVudDsKKworY2xhc3MgU2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnkgeworICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKFNoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5KTsKK3B1Ymxp
YzoKKyAgICBTaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeShTaGFkb3dDb250ZW50RWxlbWVudCop
OworCisgICAgYm9vbCBtYXRjaGVzKE5vZGUqKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBzdHJ1
Y3QgU2VsZWN0b3JEYXRhIHsKKyAgICAgICAgU2VsZWN0b3JEYXRhKENTU1NlbGVjdG9yKiBzZWxl
Y3RvciwgYm9vbCBpc0Zhc3RDaGVja2FibGUpCisgICAgICAgICAgICA6IHNlbGVjdG9yKHNlbGVj
dG9yKQorICAgICAgICAgICAgLCBpc0Zhc3RDaGVja2FibGUoaXNGYXN0Q2hlY2thYmxlKQorICAg
ICAgICB7CisgICAgICAgIH0KKworICAgICAgICBDU1NTZWxlY3Rvciogc2VsZWN0b3I7CisgICAg
ICAgIGJvb2wgaXNGYXN0Q2hlY2thYmxlOworICAgIH07CisKKyAgICBib29sIGNhblVzZUlkTG9v
a3VwKGNvbnN0IFNlbGVjdG9yRGF0YSYsIERvY3VtZW50KikgY29uc3Q7CisgICAgYm9vbCBtYXRj
aGVzKE5vZGUqIHRhcmdldE5vZGUsIGNvbnN0IFNlbGVjdG9yRGF0YSYpIGNvbnN0OworCisgICAg
Ym9vbCBtX21hdGNoZXNBbGw7CisgICAgU2hhZG93Q29udGVudEVsZW1lbnQqIG1fY29udGVudEVs
ZW1lbnQ7CisgICAgVmVjdG9yPFNlbGVjdG9yRGF0YT4gbV9zZWxlY3RvcnM7CisgICAgQ1NTU2Vs
ZWN0b3JMaXN0IG1fc2VsZWN0b3JMaXN0OworICAgIFNlbGVjdG9yQ2hlY2tlciBtX3NlbGVjdG9y
Q2hlY2tlcjsKK307CisKK30KKworCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL1NoYWRvd0luY2x1c2lvblNlbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9T
aGFkb3dJbmNsdXNpb25TZWxlY3Rvci5jcHAKaW5kZXggOTg0MWY1NTY0ODg3Yzg5NjM0NTM3NDlm
MjM3MTY2Y2EyZTQ1ZTEwNS4uNTdlOWQ0MmJlNTFiNWU0NTJjNGQ0MDU0ZTIwYmE0YzdiODU1NDhh
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0luY2x1c2lvblNlbGVjdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93SW5jbHVzaW9uU2VsZWN0b3IuY3Bw
CkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiU2hhZG93SW5jbHVzaW9uU2VsZWN0b3IuaCIK
IAogI2luY2x1ZGUgIlNoYWRvd0NvbnRlbnRFbGVtZW50LmgiCisjaW5jbHVkZSAiU2hhZG93Q29u
dGVudFNlbGVjdG9yUXVlcnkuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAKIApAQCAtMTEx
LDExICsxMTIsMTIgQEAgdm9pZCBTaGFkb3dJbmNsdXNpb25TZWxlY3Rvcjo6c2VsZWN0KFNoYWRv
d0NvbnRlbnRFbGVtZW50KiBjb250ZW50RWxlbWVudCwgU2hhZG8KIHsKICAgICBBU1NFUlQoaW5j
bHVzaW9ucy0+aXNFbXB0eSgpKTsKIAorICAgIFNoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5IHF1
ZXJ5KGNvbnRlbnRFbGVtZW50KTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fY2FuZGlk
YXRlcy5zaXplKCk7ICsraSkgewogICAgICAgICBOb2RlKiBjaGlsZCA9IG1fY2FuZGlkYXRlc1tp
XS5nZXQoKTsKICAgICAgICAgaWYgKCFjaGlsZCkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAg
ICAgICBpZiAoIWNvbnRlbnRFbGVtZW50LT5zaG91bGRJbmNsdWRlKGNoaWxkKSkKKyAgICAgICAg
aWYgKCFxdWVyeS5tYXRjaGVzKGNoaWxkKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAg
ICAgIFJlZlB0cjxTaGFkb3dJbmNsdXNpb24+IGluY2x1c2lvbiA9IFNoYWRvd0luY2x1c2lvbjo6
Y3JlYXRlKGNvbnRlbnRFbGVtZW50LCBjaGlsZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2hhZG93SW5jbHVzaW9uU2VsZWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFk
b3dJbmNsdXNpb25TZWxlY3Rvci5oCmluZGV4IGYxYWRhZWUzZjU0M2E4MWMzZmVmYmZjNDZlMDFi
MWZkN2YzYjBlOGYuLmQxYTg3MTc0NDFiMTljMmQ2YWZhMGU4ZjM0MDc1ODQxMDIxOGI0ZTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dJbmNsdXNpb25TZWxlY3Rvci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dJbmNsdXNpb25TZWxlY3Rvci5oCkBAIC0xMzcs
NyArMTM3LDYgQEAgcHVibGljOgogICAgIHZvaWQgZGlkU2VsZWN0KCk7CiAgICAgYm9vbCBoYXND
YW5kaWRhdGVzKCkgY29uc3QgeyByZXR1cm4gIW1fY2FuZGlkYXRlcy5pc0VtcHR5KCk7IH0KIAot
CiBwcml2YXRlOgogICAgIHZvaWQgcmVtb3ZlRnJvbVNldChTaGFkb3dJbmNsdXNpb25MaXN0Kik7
CiAgICAgdm9pZCBhZGRUb1NldChTaGFkb3dJbmNsdXNpb25MaXN0Kik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHAKaW5kZXggZmFkOWFmODA0NDE0NTcwYzFlNzZj
YTI4YzVlYjViMTYyN2M3MDIyMC4uNTFhYWRjMGM2ZmMyNjRjZDFjZmJjYmJiNzcxZTI4YmE0OTZh
MDRkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcApAQCAt
NDIsMTEgKzQyLDkgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIERldGFpbHNDb250ZW50RWxl
bWVudChEb2N1bWVudCogZG9jdW1lbnQpCi0gICAgICAgIDogU2hhZG93Q29udGVudEVsZW1lbnQo
SFRNTE5hbWVzOjpkaXZUYWcsIGRvY3VtZW50KQorICAgICAgICA6IFNoYWRvd0NvbnRlbnRFbGVt
ZW50KEhUTUxOYW1lczo6ZGl2VGFnLCBkb2N1bWVudCwgIiIpCiAgICAgewogICAgIH0KLQotICAg
IHZpcnR1YWwgYm9vbCBzaG91bGRJbmNsdWRlKE5vZGUqKTsKIH07CiAKIFBhc3NSZWZQdHI8RGV0
YWlsc0NvbnRlbnRFbGVtZW50PiBEZXRhaWxzQ29udGVudEVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVu
dCogZG9jdW1lbnQpCkBAIC01NCwyNCArNTIsMTUgQEAgUGFzc1JlZlB0cjxEZXRhaWxzQ29udGVu
dEVsZW1lbnQ+IERldGFpbHNDb250ZW50RWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWUK
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERldGFpbHNDb250ZW50RWxlbWVudChkb2N1bWVudCkp
OwogfQogCi1ib29sIERldGFpbHNDb250ZW50RWxlbWVudDo6c2hvdWxkSW5jbHVkZShOb2RlKiBu
b2RlKQotewotICAgIEhUTUxEZXRhaWxzRWxlbWVudCogZGV0YWlscyA9IHN0YXRpY19jYXN0PEhU
TUxEZXRhaWxzRWxlbWVudCo+KHNoYWRvd0FuY2VzdG9yTm9kZSgpKTsKLSAgICByZXR1cm4gZGV0
YWlscy0+bWFpblN1bW1hcnkoKSAhPSBub2RlOwotfQotCi0KIGNsYXNzIERldGFpbHNTdW1tYXJ5
RWxlbWVudCA6IHB1YmxpYyBTaGFkb3dDb250ZW50RWxlbWVudCB7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8RGV0YWlsc1N1bW1hcnlFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQqKTsK
IAogcHJpdmF0ZToKICAgICBEZXRhaWxzU3VtbWFyeUVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50
KQotICAgICAgICA6IFNoYWRvd0NvbnRlbnRFbGVtZW50KEhUTUxOYW1lczo6ZGl2VGFnLCBkb2N1
bWVudCkKKyAgICAgICAgOiBTaGFkb3dDb250ZW50RWxlbWVudChIVE1MTmFtZXM6OmRpdlRhZywg
ZG9jdW1lbnQsICJzdW1tYXJ5OmZpcnN0LW9mLXR5cGUiKQogICAgIHsKICAgICB9Ci0KLSAgICB2
aXJ0dWFsIGJvb2wgc2hvdWxkSW5jbHVkZShOb2RlKik7CiB9OwogCiBQYXNzUmVmUHRyPERldGFp
bHNTdW1tYXJ5RWxlbWVudD4gRGV0YWlsc1N1bW1hcnlFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQq
IGRvY3VtZW50KQpAQCAtNzksMTMgKzY4LDYgQEAgUGFzc1JlZlB0cjxEZXRhaWxzU3VtbWFyeUVs
ZW1lbnQ+IERldGFpbHNTdW1tYXJ5RWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWUKICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IERldGFpbHNTdW1tYXJ5RWxlbWVudChkb2N1bWVudCkpOwog
fQogCi1ib29sIERldGFpbHNTdW1tYXJ5RWxlbWVudDo6c2hvdWxkSW5jbHVkZShOb2RlKiBub2Rl
KQotewotICAgIEhUTUxEZXRhaWxzRWxlbWVudCogZGV0YWlscyA9IHN0YXRpY19jYXN0PEhUTUxE
ZXRhaWxzRWxlbWVudCo+KHNoYWRvd0FuY2VzdG9yTm9kZSgpKTsKLSAgICByZXR1cm4gZGV0YWls
cy0+bWFpblN1bW1hcnkoKSA9PSBub2RlOwotfQotCi0KIFBhc3NSZWZQdHI8SFRNTERldGFpbHNF
bGVtZW50PiBIVE1MRGV0YWlsc0VsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiB7CiAgICAgUmVmUHRyPEhUTUxEZXRhaWxzRWxl
bWVudD4gcmVzdWx0ID0gYWRvcHRSZWYobmV3IEhUTUxEZXRhaWxzRWxlbWVudCh0YWdOYW1lLCBk
b2N1bWVudCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDc4M2MzODA1
NjkzYWVjNjNkNGQ5ODViZDc4YzM4NGZkNDQ4NGM0ZWMuLmY5YThjN2FlMWI5MjcxNTRlMDc0MmE3
Mzc5Yzc0ODllNDZmNmJmMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAg
LTEyNiwxNCArMTI2LDE1IEBAIGJvb2wgSW50ZXJuYWxzOjppc1ByZWxvYWRlZChEb2N1bWVudCog
ZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgdXJsKQogICAgIHJldHVybiBkb2N1bWVudC0+Y2FjaGVk
UmVzb3VyY2VMb2FkZXIoKS0+aXNQcmVsb2FkZWQodXJsKTsKIH0KIAotUGFzc1JlZlB0cjxFbGVt
ZW50PiBJbnRlcm5hbHM6OmNyZWF0ZVNoYWRvd0NvbnRlbnRFbGVtZW50KERvY3VtZW50KiBkb2N1
bWVudCwgRXhjZXB0aW9uQ29kZSYgZWMpCitQYXNzUmVmUHRyPEVsZW1lbnQ+IEludGVybmFsczo6
Y3JlYXRlU2hhZG93Q29udGVudEVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBTdHJp
bmcmIHNlbGVjdCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKCFkb2N1bWVudCkgewog
ICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
fQogCi0gICAgcmV0dXJuIFNoYWRvd0NvbnRlbnRFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwor
ICAgIFJlZlB0cjxTaGFkb3dDb250ZW50RWxlbWVudD4gZWxlbSA9IFNoYWRvd0NvbnRlbnRFbGVt
ZW50OjpjcmVhdGUoZG9jdW1lbnQsIHNlbGVjdCk7CisgICAgcmV0dXJuIGVsZW0ucmVsZWFzZSgp
OwogfQogCiBFbGVtZW50KiBJbnRlcm5hbHM6OmdldEVsZW1lbnRCeUlkSW5TaGFkb3dSb290KE5v
ZGUqIHNoYWRvd1Jvb3QsIGNvbnN0IFN0cmluZyYgaWQsIEV4Y2VwdGlvbkNvZGUmIGVjKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggZWQ0NzM3MDU1Yjk5MzgzZGE5YjI4MDIxYWYz
ZjY5NTljNjFkMzVmNy4uYzk2N2ZjZWU3NTgzMDlhZTIxODI3ZDlmMmRkMTlhMDMzOTgyYmJiMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHJlbW92ZVNoYWRvd1Jvb3QoRWxlbWVudCogaG9zdCwgRXhjZXB0aW9uQ29kZSYp
OwogICAgIEVsZW1lbnQqIGluY2x1ZGVyRm9yKE5vZGUqLCBFeGNlcHRpb25Db2RlJik7CiAgICAg
U3RyaW5nIHNoYWRvd1BzZXVkb0lkKEVsZW1lbnQqLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgUGFz
c1JlZlB0cjxFbGVtZW50PiBjcmVhdGVTaGFkb3dDb250ZW50RWxlbWVudChEb2N1bWVudCosIEV4
Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNzUmVmUHRyPEVsZW1lbnQ+IGNyZWF0ZVNoYWRvd0NvbnRl
bnRFbGVtZW50KERvY3VtZW50KiwgY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOwogICAg
IEVsZW1lbnQqIGdldEVsZW1lbnRCeUlkSW5TaGFkb3dSb290KE5vZGUqIHNoYWRvd1Jvb3QsIGNv
bnN0IFN0cmluZyYgaWQsIEV4Y2VwdGlvbkNvZGUmKTsKIAogI2lmIEVOQUJMRShJTlBVVF9DT0xP
UikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCBmNTZkMWFmNzRhOGUzNWRk
NDdiZDRlNmM0OWYxMjVlN2VhYWMzYTU1Li41ZjAwOGQwYThhZmI2OGQ2MDUwMjU4ZDhiNjU0Yzhm
NzE1M2E3MGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5p
ZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC0zNSw3ICsz
NSw3IEBAIG1vZHVsZSB3aW5kb3cgewogICAgICAgICBFbGVtZW50IGluY2x1ZGVyRm9yKGluIE5v
ZGUgbm9kZSkgcmFpc2VzIChET01FeGNlcHRpb24pOwogICAgICAgICB2b2lkIHJlbW92ZVNoYWRv
d1Jvb3QoaW4gRWxlbWVudCBob3N0KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIERP
TVN0cmluZyBzaGFkb3dQc2V1ZG9JZChpbiBFbGVtZW50IGVsZW1lbnQpIHJhaXNlcyAoRE9NRXhj
ZXB0aW9uKTsKLSAgICAgICAgRWxlbWVudCBjcmVhdGVTaGFkb3dDb250ZW50RWxlbWVudChpbiBE
b2N1bWVudCBkb2N1bWVudCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgICAgIEVsZW1lbnQg
Y3JlYXRlU2hhZG93Q29udGVudEVsZW1lbnQoaW4gRG9jdW1lbnQgZG9jdW1lbnQsIGluIFtPcHRp
b25hbD1DYWxsV2l0aE51bGxWYWx1ZV0gRE9NU3RyaW5nIHNlbGVjdCkgcmFpc2VzKERPTUV4Y2Vw
dGlvbik7CiAgICAgICAgIEVsZW1lbnQgZ2V0RWxlbWVudEJ5SWRJblNoYWRvd1Jvb3QoaW4gTm9k
ZSBzaGFkb3dSb290LCBpbiBET01TdHJpbmcgaWQpIHJhaXNlcyhET01FeGNlcHRpb24pOwogCiAj
aWYgZGVmaW5lZChFTkFCTEVfSU5QVVRfQ09MT1IpICYmIEVOQUJMRV9JTlBVVF9DT0xPUgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCm9s
ZCBtb2RlIDEwMDc1NQpuZXcgbW9kZSAxMDA2NDQKaW5kZXggMDM0ODk5ODE0N2Y2MWY3NTNmZTJj
ZjQ1OWVjYTBlODVmZDE1YTIxOS4uODJkODBkZDIzZGM1YTM3NWE0MDEyNDVmZWUzZDc5OWMwZjli
NGQzOQotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDEtMDYgIFNoaW55YSBLYXdhbmFrYSAgPHNoaW55
YWtAZ29vZ2xlLmNvbT4KKworICAgICAgICBTaGFkb3dDb250ZW50RWxlbWVudCBzaG91bGQgYmUg
YWJsZSB0byB1c2UgcXVlcnkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD03NTMwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRlc3RzIGZvciBTaGFkb3dDb250ZW50RWxlbWVudCBxdWVyeS4KKworICAgICAg
ICAqIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctY29udGVudHMtc2VsZWN0LWV4cGVjdGVkLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctY29udGVudHMtc2VsZWN0
Lmh0bWw6IEFkZGVkLgorCiAyMDEyLTAxLTA1ICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xv
dWdoQGFwcGxlLmNvbT4KIAogICAgICAgICBEYXRlIGNvbnN0cnVjdG9yIGhhbmRsZXMgaW5maW5p
dGUgdmFsdWVzIGluY29ycmVjdGx5LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20v
c2hhZG93L3NoYWRvdy1jb250ZW50cy1zZWxlY3QtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctY29udGVudHMtc2VsZWN0LWV4cGVjdGVkLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMDM3OTY1YmEyYzkyN2JjMjQ4Njk1ODQ1M2MxY2M2NzUyOTczZTVlMgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctY29udGVudHMt
c2VsZWN0LWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSw0MSBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorLyogcmVsYXRpdmUgcG9zaXRpb25pbmcgZW5zdXJlcyB1
bmRlcmx5aW5nIFJlbmRlckxheWVyICovCisuY29udGFpbmVyIHsKKyAgICBwb3NpdGlvbjogcmVs
YXRpdmU7Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJjb250YWluZXIi
PgorPCEtLSB0ZXN0U2VsZWN0SXNOdWxsIC0tPgorPGRpdj48c3Bhbj5IZWxsbyw8L3NwYW4+PHNw
YW4+Y29udGVudDwvc3Bhbj48c3Bhbj5Xb3JsZC48L3NwYW4+PC9kaXY+Cis8IS0tIHRlc3RTZWxl
Y3RJc0lkIC0tPgorPGRpdj48c3Bhbj5IZWxsbyw8L3NwYW4+PHNwYW4+Y29udGVudDwvc3Bhbj48
c3Bhbj5Xb3JsZC48L3NwYW4+PC9kaXY+Cis8IS0tIHRlc3RTZWxlY3RJc0lkQnV0Tm90TWF0Y2hl
ZCAtLT4KKzxkaXY+PHNwYW4+SGVsbG8sPC9zcGFuPjxzcGFuPldvcmxkLjwvc3Bhbj48L2Rpdj4K
KzwhLS0gdGVzdFNlbGVjdElzSWRCdXROb3RDaGlsZCAtLT4KKzxkaXY+PHNwYW4+SGVsbG8sPC9z
cGFuPjxzcGFuPldvcmxkLjwvc3Bhbj48L2Rpdj4KKzwhLS0gdGVzdFNlbGVjdElzTXVsdGlJZCAt
LT4KKzxkaXY+PHNwYW4+SGVsbG8sPC9zcGFuPjxzcGFuPmNvbnRlbnQ8L3NwYW4+PHNwYW4+Y29u
dGVudDwvc3Bhbj48c3Bhbj5Xb3JsZC48L3NwYW4+PC9kaXY+Cis8IS0tIHRlc3RTZWxlY3RJc1R5
cGUgLS0+Cis8ZGl2PjxzcGFuPkhlbGxvLDwvc3Bhbj48c3Bhbj5jb250ZW50PC9zcGFuPjxzcGFu
PldvcmxkLjwvc3Bhbj48L2Rpdj4KKzwhLS0gdGVzdFNlbGVjdElzVHlwZVdpdGhBdHRyaWJ1dGUg
LS0+Cis8ZGl2PjxzcGFuPkhlbGxvLDwvc3Bhbj48c3Bhbj5jb250ZW50PC9zcGFuPjxzcGFuPldv
cmxkLjwvc3Bhbj48L2Rpdj4KKzwhLS0gdGVzdFNlbGVjdElzVHlwZVdpdGhGaXJzdE9mVHlwZSAt
LT4KKzxkaXY+PHNwYW4+SGVsbG8sPC9zcGFuPjxzcGFuPmNvbnRlbnQ8L3NwYW4+PHNwYW4+V29y
bGQuPC9zcGFuPjwvZGl2PgorPCEtLSB0ZXN0U2VsZWN0SXNUeXBlV2l0aEZpcnN0T2ZUeXBlMiAt
LT4KKzxkaXY+PHNwYW4+SGVsbG8sPC9zcGFuPjxzcGFuPmNvbnRlbnQ8L3NwYW4+PHNwYW4+V29y
bGQuPC9zcGFuPjwvZGl2PgorPCEtLSB0ZXN0U2VsZWN0SXNUeXBlV2l0aExhc3RPZlR5cGUgLS0+
Cis8ZGl2PjxzcGFuPkhlbGxvLDwvc3Bhbj48c3Bhbj5jb250ZW50PC9zcGFuPjxzcGFuPldvcmxk
Ljwvc3Bhbj48L2Rpdj4KKzwhLS0gdGVzdFNlbGVjdElzRGV0YWlscyAtLT4KKzxkaXY+PHNwYW4+
SGVsbG8sPC9zcGFuPjxkZXRhaWxzPmNvbnRlbnQ8L2RldGFpbHM+PHNwYW4+V29ybGQuPC9zcGFu
PjwvZGl2PgorPCEtLSB0ZXN0U2VsZWN0SXNEZXRhaWxzMiAtLT4KKzxkaXY+PHNwYW4+SGVsbG8s
PC9zcGFuPjxkZXRhaWxzPjxzdW1tYXJ5PmNvbnRlbnQ8L3N1bW1hcnk+PC9kZXRhaWxzPjxzcGFu
PldvcmxkLjwvc3Bhbj48L2Rpdj4KKzwhLS0gdGVzdFNlbGVjdFdoZW5EeW5hbWljYWxseUNoaWxk
cmVuQ2hhbmdlZCAtLT4KKzxkaXY+PHNwYW4+SGVsbG8sPC9zcGFuPjxzcGFuPmNvbnRlbnQ8L3Nw
YW4+PHNwYW4+V29ybGQuPC9zcGFuPjwvZGl2PgorPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LWNvbnRlbnRzLXNl
bGVjdC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1jb250ZW50cy1z
ZWxlY3QuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NzkyOTY3YTkzZTU5NjJkYjVhZTdmMjliYjI5YmNhMDFj
ZWNmNTFmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3No
YWRvdy1jb250ZW50cy1zZWxlY3QuaHRtbApAQCAtMCwwICsxLDE3MyBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorLyogcmVsYXRpdmUgcG9zaXRpb25pbmcgZW5z
dXJlcyB1bmRlcmx5aW5nIFJlbmRlckxheWVyICovCisuY29udGFpbmVyIHsKKyAgICBwb3NpdGlv
bjogcmVsYXRpdmU7Cit9Cis8L3N0eWxlPgorPHNjcmlwdD4KK2Z1bmN0aW9uIGFwcGVuZFNoYWRv
dyh0YXJnZXQsIHNlbGVjdCkgeworICAgIHZhciByb290ID0gaW50ZXJuYWxzLmVuc3VyZVNoYWRv
d1Jvb3QodGFyZ2V0KTsKKworICAgIHZhciBjaGlsZDAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJzcGFuIik7CisgICAgY2hpbGQwLmlubmVySFRNTCA9ICJIZWxsbywiOworICAgIHJvb3QuYXBw
ZW5kQ2hpbGQoY2hpbGQwKTsKKworICAgIHZhciBjb250ZW50ID0gaW50ZXJuYWxzLmNyZWF0ZVNo
YWRvd0NvbnRlbnRFbGVtZW50KGRvY3VtZW50LCBzZWxlY3QpOworICAgIHJvb3QuYXBwZW5kQ2hp
bGQoY29udGVudCk7CisKKyAgICB2YXIgY2hpbGQxID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
c3BhbiIpOworICAgIGNoaWxkMS5pbm5lckhUTUwgPSAiV29ybGQuIjsKKyAgICByb290LmFwcGVu
ZENoaWxkKGNoaWxkMSk7Cit9CisKK2Z1bmN0aW9uIHRlc3RTZWxlY3RJc051bGwoKSB7CisgICAg
dmFyIHRhcmdldCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHRhcmdldC5p
bm5lckhUTUwgPSAiPHNwYW4+Y29udGVudDwvc3Bhbj4iOworCisgICAgYXBwZW5kU2hhZG93KHRh
cmdldCwgIiIpOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRhaW5lcicpLmFw
cGVuZENoaWxkKHRhcmdldCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RTZWxlY3RJc0lkKCkgeworICAg
IHZhciB0YXJnZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICB0YXJnZXQu
aW5uZXJIVE1MID0gIjxzcGFuIGlkPSdmb28nPmNvbnRlbnQ8L3NwYW4+PHNwYW4gaWQ9J2F6dW55
YW4nPnBlcm9wZXJvPC9zcGFuPiI7CisKKyAgICBhcHBlbmRTaGFkb3codGFyZ2V0LCAiI2ZvbyIp
OworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRhaW5lcicpLmFwcGVuZENoaWxk
KHRhcmdldCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RTZWxlY3RJc0lkQnV0Tm90TWF0Y2hlZCgpIHsK
KyAgICB2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgdGFy
Z2V0LmlubmVySFRNTCA9ICI8c3BhbiBpZD0nZm9vJz5jb250ZW50PC9zcGFuPjxzcGFuIGlkPSdh
enVueWFuJz5wZXJvcGVybzwvc3Bhbj4iOworCisgICAgYXBwZW5kU2hhZG93KHRhcmdldCwgIiNm
b29iYXIiKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250YWluZXInKS5hcHBl
bmRDaGlsZCh0YXJnZXQpOworfQorCitmdW5jdGlvbiB0ZXN0U2VsZWN0SXNJZEJ1dE5vdENoaWxk
KCkgeworICAgIHZhciB0YXJnZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAg
ICB0YXJnZXQuaW5uZXJIVE1MID0gIjxzcGFuPjxzcGFuIGlkPSdmb28nPmNvbnRlbnQ8L3NwYW4+
PHNwYW4gaWQ9J2F6dW55YW4nPnBlcm9wZXJvPC9zcGFuPjwvc3Bhbj4iOworCisgICAgYXBwZW5k
U2hhZG93KHRhcmdldCwgIiNmb28iKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdj
b250YWluZXInKS5hcHBlbmRDaGlsZCh0YXJnZXQpOworfQorCitmdW5jdGlvbiB0ZXN0U2VsZWN0
SXNNdWx0aUlkKCkgeworICAgIHZhciB0YXJnZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdk
aXYnKTsKKyAgICB0YXJnZXQuaW5uZXJIVE1MID0gIjxzcGFuIGlkPSdmb28nPmNvbnRlbnQ8L3Nw
YW4+PHNwYW4gaWQ9J2F6dW55YW4nPnBlcm9wZXJvPC9zcGFuPjxzcGFuIGlkPSdmb28nPmNvbnRl
bnQ8L3NwYW4+IjsKKworICAgIGFwcGVuZFNoYWRvdyh0YXJnZXQsICIjZm9vIik7CisKKyAgICAv
LyBBbGwgbWF0Y2hlZCBlbGVtZW50cyB3aWxsIGJlIHNlbGVjdGVkLgorICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdjb250YWluZXInKS5hcHBlbmRDaGlsZCh0YXJnZXQpOworfQorCitmdW5j
dGlvbiB0ZXN0U2VsZWN0SXNUeXBlKCkgeworICAgIHZhciB0YXJnZXQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdkaXYnKTsKKyAgICB0YXJnZXQuaW5uZXJIVE1MID0gIjxkaXY+YXp1bnlhbjwv
ZGl2PjxzcGFuPmNvbnRlbnQ8L3NwYW4+PGRpdj5wZXJvcGVybzwvZGl2PiI7CisKKyAgICBhcHBl
bmRTaGFkb3codGFyZ2V0LCAic3BhbiIpOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2NvbnRhaW5lcicpLmFwcGVuZENoaWxkKHRhcmdldCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RTZWxl
Y3RJc1R5cGVXaXRoQXR0cmlidXRlKCkgeworICAgIHZhciB0YXJnZXQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdkaXYnKTsKKyAgICB0YXJnZXQuaW5uZXJIVE1MID0gIjxzcGFuPmF6dW55YW48
L3NwYW4+PHNwYW4gdGl0bGU9J2NvbnRlbnQnPmNvbnRlbnQ8L3NwYW4+PHNwYW4+cGVyb3Blcm88
L3NwYW4+IjsKKworICAgIGFwcGVuZFNoYWRvdyh0YXJnZXQsICJzcGFuW3RpdGxlPSdjb250ZW50
J10iKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250YWluZXInKS5hcHBlbmRD
aGlsZCh0YXJnZXQpOworfQorCitmdW5jdGlvbiB0ZXN0U2VsZWN0SXNUeXBlV2l0aEZpcnN0T2ZU
eXBlKCkgeworICAgIHZhciB0YXJnZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsK
KyAgICB0YXJnZXQuaW5uZXJIVE1MID0gIjxkaXY+YXp1bnlhbjwvZGl2PjxzcGFuPmNvbnRlbnQ8
L3NwYW4+PHNwYW4+cGVyb3Blcm88L3NwYW4+IjsKKworICAgIGFwcGVuZFNoYWRvdyh0YXJnZXQs
ICJzcGFuOmZpcnN0LW9mLXR5cGUiKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdj
b250YWluZXInKS5hcHBlbmRDaGlsZCh0YXJnZXQpOworfQorCitmdW5jdGlvbiB0ZXN0U2VsZWN0
SXNUeXBlV2l0aEZpcnN0T2ZUeXBlMigpIHsKKyAgICB2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnZGl2Jyk7CisgICAgdGFyZ2V0LmlubmVySFRNTCA9ICI8ZGl2PjxzcGFuPmF6
dW55YW48L3NwYW4+PC9kaXY+PHNwYW4+Y29udGVudDwvc3Bhbj48c3Bhbj5wZXJvcGVybzwvc3Bh
bj4iOworCisgICAgYXBwZW5kU2hhZG93KHRhcmdldCwgInNwYW46Zmlyc3Qtb2YtdHlwZSIpOwor
CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRhaW5lcicpLmFwcGVuZENoaWxkKHRh
cmdldCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RTZWxlY3RJc1R5cGVXaXRoTGFzdE9mVHlwZSgpIHsK
KyAgICB2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgdGFy
Z2V0LmlubmVySFRNTCA9ICI8c3Bhbj5henVueWFuPC9zcGFuPjxzcGFuPmNvbnRlbnQ8L3NwYW4+
PGRpdj5wZXJvcGVybzwvZGl2PiI7CisKKyAgICBhcHBlbmRTaGFkb3codGFyZ2V0LCAic3Bhbjps
YXN0LW9mLXR5cGUiKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250YWluZXIn
KS5hcHBlbmRDaGlsZCh0YXJnZXQpOworfQorCitmdW5jdGlvbiB0ZXN0U2VsZWN0SXNEZXRhaWxz
KCkgeworICAgIHZhciB0YXJnZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAg
ICB0YXJnZXQuaW5uZXJIVE1MID0gIjxkZXRhaWxzPmNvbnRlbnQ8L2RldGFpbHM+IjsKKworICAg
IGFwcGVuZFNoYWRvdyh0YXJnZXQsICJkZXRhaWxzIik7CisKKyAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnY29udGFpbmVyJykuYXBwZW5kQ2hpbGQodGFyZ2V0KTsKK30KKworZnVuY3Rpb24g
dGVzdFNlbGVjdElzRGV0YWlsczIoKSB7CisgICAgdmFyIHRhcmdldCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ2RpdicpOworICAgIHRhcmdldC5pbm5lckhUTUwgPSAiPGRldGFpbHM+PHN1bW1h
cnk+Y29udGVudDwvc3VtbWFyeT48L2RldGFpbHM+IjsKKworICAgIGFwcGVuZFNoYWRvdyh0YXJn
ZXQsICJkZXRhaWxzIik7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29udGFpbmVy
JykuYXBwZW5kQ2hpbGQodGFyZ2V0KTsKK30KKworZnVuY3Rpb24gdGVzdFNlbGVjdFdoZW5EeW5h
bWljYWxseUNoaWxkcmVuQ2hhbmdlZCgpIHsKKyAgICB2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnZGl2Jyk7CisgICAgdGFyZ2V0LmlubmVySFRNTCA9ICI8c3Bhbj5jb250ZW50
PC9zcGFuPjxzcGFuIGlkPSd0b2JlcmVtb3ZlZCc+YW51bnlhbiBwZXJvcGVybzwvc3Bhbj4iOwor
CisgICAgYXBwZW5kU2hhZG93KHRhcmdldCwgInNwYW4iKTsKKworICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdjb250YWluZXInKS5hcHBlbmRDaGlsZCh0YXJnZXQpOworCisgICAgdmFyIGVs
ZW0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9iZXJlbW92ZWQnKTsKKyAgICBlbGVtLnBh
cmVudE5vZGUucmVtb3ZlQ2hpbGQoZWxlbSk7Cit9CisKK3ZhciB0ZXN0RnVuY3MgPSBbCisgICAg
dGVzdFNlbGVjdElzTnVsbCwKKyAgICB0ZXN0U2VsZWN0SXNJZCwKKyAgICB0ZXN0U2VsZWN0SXNJ
ZEJ1dE5vdE1hdGNoZWQsCisgICAgdGVzdFNlbGVjdElzSWRCdXROb3RDaGlsZCwKKyAgICB0ZXN0
U2VsZWN0SXNNdWx0aUlkLAorICAgIHRlc3RTZWxlY3RJc1R5cGUsCisgICAgdGVzdFNlbGVjdElz
VHlwZVdpdGhBdHRyaWJ1dGUsCisgICAgdGVzdFNlbGVjdElzVHlwZVdpdGhGaXJzdE9mVHlwZSwK
KyAgICB0ZXN0U2VsZWN0SXNUeXBlV2l0aEZpcnN0T2ZUeXBlMiwKKyAgICB0ZXN0U2VsZWN0SXNU
eXBlV2l0aExhc3RPZlR5cGUsCisgICAgdGVzdFNlbGVjdElzRGV0YWlscywKKyAgICB0ZXN0U2Vs
ZWN0SXNEZXRhaWxzMiwKKyAgICB0ZXN0U2VsZWN0V2hlbkR5bmFtaWNhbGx5Q2hpbGRyZW5DaGFu
Z2VkLAorXQorCitmdW5jdGlvbiBkb1Rlc3QoKSB7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0
ZXN0RnVuY3MubGVuZ3RoOyArK2kpIHsKKyAgICAgICB0ZXN0RnVuY3NbaV0oKTsKKyAgICB9Cit9
Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0iZG9UZXN0KCkiPgorPGRpdiBpZD0i
Y29udGFpbmVyIj48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121775</attachid>
            <date>2012-01-09 18:03:54 -0800</date>
            <delta_ts>2012-01-10 05:02:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-75302-20120110110352.patch</filename>
            <type>text/plain</type>
            <size>35056</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA0MjY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMThlY2YwMGEyZjQwODY4
ZjQxYTBjNzNiYzA4NGU1ODRhZDNhODU5ZS4uODQyYTdjNDg2N2U5MGEzMDg0NjcxNDZlYmNhZDA0
ZTdhZmEwNDIxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDEyLTAxLTA5ICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGdvb2dsZS5jb20+CisKKyAgICAgICAgU2hhZG93Q29udGVu
dEVsZW1lbnQgc2hvdWxkIGJlIGFibGUgdG8gdXNlIHF1ZXJ5LgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzUzMDIKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgYSBzZWxl
Y3RvciB0byBxdWVyeSBlbGVtZW50cyBpbiBTaGFkb3dDb250ZW50RWxlbWVudC4KKyAgICAgICAg
VGhpcyBjYW4gYmUgdXNlZCBpbnN0ZWFkIG9mIFNoYWRvd0NvbnRlbnRFbGVtZW50OjpzaG91bGRJ
bmNsdWRlIGluIG1vcmUgc29waGlzdGljYXRlZCB3YXlzLgorCisgICAgICAgIFRlc3RzOiBmYXN0
L2RvbS9zaGFkb3cvc2hhZG93LWNvbnRlbnRzLXNlbGVjdC1leHBlY3RlZC5odG1sCisgICAgICAg
ICAgICAgICBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWNvbnRlbnRzLXNlbGVjdC5odG1sCisKKyAg
ICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAg
ICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBX
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0NvbnRlbnRFbGVtZW50OjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhZG93Q29udGVudEVsZW1lbnQ6OlNoYWRvd0NvbnRlbnRFbGVtZW50
KToKKyAgICAgICAgKiBkb20vU2hhZG93Q29udGVudEVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlNoYWRvd0NvbnRlbnRFbGVtZW50OjpzZWxlY3QpOgorICAgICAgICAqIGRvbS9TaGFkb3dD
b250ZW50U2VsZWN0b3JRdWVyeS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93
Q29udGVudFNlbGVjdG9yUXVlcnk6OlNoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5OjptYXRjaGVzKToKKyAgICAg
ICAgICBSZXR1cm5zIHRydWUgaWYgTm9kZSBpcyBtYXRjaGVkIGJ5IHRoZSBxdWVyeS4KKyAgICAg
ICAgKiBkb20vU2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnkuaDogQ29waWVkIGZyb20gU291cmNl
L1dlYkNvcmUvZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50LmguCisgICAgICAgIChXZWJDb3JlOjpT
aGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeTo6U2VsZWN0b3JEYXRhOjpTZWxlY3RvckRhdGEpOgor
ICAgICAgICAqIGRvbS9TaGFkb3dJbmNsdXNpb25TZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTaGFkb3dJbmNsdXNpb25TZWxlY3Rvcjo6c2VsZWN0KToKKyAgICAgICAgKiBkb20vU2hh
ZG93SW5jbHVzaW9uU2VsZWN0b3IuaDoKKyAgICAgICAgKiBodG1sL0hUTUxEZXRhaWxzRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZXRhaWxzQ29udGVudEVsZW1lbnQ6OkRldGFpbHND
b250ZW50RWxlbWVudCk6IFJlLWltcGxlbWVudGVkIHVzaW5nIHF1ZXJ5LgorICAgICAgICAoV2Vi
Q29yZTo6RGV0YWlsc1N1bW1hcnlFbGVtZW50OjpEZXRhaWxzU3VtbWFyeUVsZW1lbnQpOiBkaXR0
by4KKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnRlcm5hbHM6OmNyZWF0ZVNoYWRvd0NvbnRlbnRFbGVtZW50KToKKyAgICAgICAgKiB0ZXN0aW5n
L0ludGVybmFscy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKwogMjAxMi0w
MS0wNSAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS8xMDYzMzc2MD4gVXBkYXRlIGNvcHlyaWdodCBzdHJpbmdzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CmluZGV4IDJhYzQ0Y2U3MzhmOWMwZmVjOWI4Y2IzY2U1ZTJjOWNkNzMyNjA3NjQuLjQ1NGNh
OWZkNmRjYzJjMTVmYzIzNWFhY2RmNjVjODk5MTdjOWNkMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CkBAIC01OTQsNiArNTk0LDcgQEAgU0VUKFdlYkNvcmVfU09VUkNFUwogICAgIGRvbS9TZWN1cml0
eUNvbnRleHQuY3BwCiAgICAgZG9tL1NlbGVjdG9yUXVlcnkuY3BwCiAgICAgZG9tL1NoYWRvd0Nv
bnRlbnRFbGVtZW50LmNwcAorICAgIGRvbS9TaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeS5jcHAK
ICAgICBkb20vU2hhZG93SW5jbHVzaW9uU2VsZWN0b3IuY3BwCiAgICAgZG9tL1NoYWRvd1Jvb3Qu
Y3BwCiAgICAgZG9tL1NwYWNlU3BsaXRTdHJpbmcuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlz
dC5hbQppbmRleCA4ZmUwZmI1MWY3Nzg5ZmU4ZWRmNDNiZjJhNTc4ZDFhYTExMzZkN2EzLi5kZjdi
MTYyMTY4ODcyMzE1NTNhNTMyODkwMDc3MzhhMTQ4MzJhOWQwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0KQEAgLTE2NDUsNiArMTY0NSw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJ
U291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9yUXVlcnkuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9t
L1NoYWRvd0NvbnRlbnRFbGVtZW50LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0Nv
bnRlbnRFbGVtZW50LmggXAorCVNvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dDb250ZW50U2VsZWN0
b3JRdWVyeS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dDb250ZW50U2VsZWN0b3JR
dWVyeS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93SW5jbHVzaW9uU2VsZWN0b3IuY3Bw
IFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93SW5jbHVzaW9uU2VsZWN0b3IuaCBcCiAJU291
cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IGI2ZjU2NmVk
ZWI5OTcyNWMzYmQ5YTUwMjUzNzUxODU3Mjk1YzczYzQuLjJhMTdjNDI5MmE3NGY0NTI1ZmI3YTE4
ZDIwMTFiOThhMjRmN2ZmYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkK
KysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtNTYwLDYgKzU2MCw3IEBAIFNPVVJD
RVMgKz0gXAogICAgIGRvbS9TZWN1cml0eUNvbnRleHQuY3BwIFwKICAgICBkb20vU2VsZWN0b3JR
dWVyeS5jcHAgXAogICAgIGRvbS9TaGFkb3dDb250ZW50RWxlbWVudC5jcHAgXAorICAgIGRvbS9T
aGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeS5jcHAgXAogICAgIGRvbS9TaGFkb3dJbmNsdXNpb25T
ZWxlY3Rvci5jcHAgXAogICAgIGRvbS9TaGFkb3dSb290LmNwcCBcCiAgICAgZG9tL1NwYWNlU3Bs
aXRTdHJpbmcuY3BwIFwKQEAgLTE2NTUsNiArMTY1Niw3IEBAIEhFQURFUlMgKz0gXAogICAgIGRv
bS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmggXAogICAgIGRvbS9TZWxlY3RvclF1ZXJ5LmggXAog
ICAgIGRvbS9TaGFkb3dDb250ZW50RWxlbWVudC5oIFwKKyAgICBkb20vU2hhZG93Q29udGVudFNl
bGVjdG9yUXVlcnkuaCBcCiAgICAgZG9tL1NoYWRvd0luY2x1c2lvblNlbGVjdG9yLmggXAogICAg
IGRvbS9TaGFkb3dSb290LmggXAogICAgIGRvbS9TcGFjZVNwbGl0U3RyaW5nLmggXApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCmluZGV4IGRmOTcwYjc0MDJkMGQzOGU5YzY4MTY3OTJmNzQ3ZDAzODJhNzM1YmIuLjEw
MmJlNGRhMDMzZWM2MWM1MGI4ZjdmNWM0NzJlMTFjOTc0ZTlkNTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkK
QEAgLTEwNDcsNiArMTA0Nyw3IEBACiAgICAgICAgICAgICAnZG9tL1NjcmlwdFJ1bm5lci5oJywK
ICAgICAgICAgICAgICdkb20vU2hhZG93Um9vdC5oJywKICAgICAgICAgICAgICdkb20vU2hhZG93
Q29udGVudEVsZW1lbnQuaCcsCisgICAgICAgICAgICAnZG9tL1NoYWRvd0NvbnRlbnRTZWxlY3Rv
clF1ZXJ5LmgnLAogICAgICAgICAgICAgJ2RvbS9TcGFjZVNwbGl0U3RyaW5nLmgnLAogICAgICAg
ICAgICAgJ2RvbS9TdHlsZWRFbGVtZW50LmgnLAogICAgICAgICAgICAgJ2RvbS9UZXh0LmgnLApA
QCAtNTQzMyw2ICs1NDM0LDggQEAKICAgICAgICAgICAgICdkb20vU2VsZWN0b3JRdWVyeS5oJywK
ICAgICAgICAgICAgICdkb20vU2hhZG93Q29udGVudEVsZW1lbnQuY3BwJywKICAgICAgICAgICAg
ICdkb20vU2hhZG93Q29udGVudEVsZW1lbnQuaCcsCisgICAgICAgICAgICAnZG9tL1NoYWRvd0Nv
bnRlbnRTZWxlY3RvclF1ZXJ5LmNwcCcsCisgICAgICAgICAgICAnZG9tL1NoYWRvd0NvbnRlbnRT
ZWxlY3RvclF1ZXJ5LmgnLAogICAgICAgICAgICAgJ2RvbS9TaGFkb3dJbmNsdXNpb25TZWxlY3Rv
ci5jcHAnLAogICAgICAgICAgICAgJ2RvbS9TaGFkb3dJbmNsdXNpb25TZWxlY3Rvci5oJywKICAg
ICAgICAgICAgICdkb20vU2hhZG93Um9vdC5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCAxMjU1NmUwMzg4ZTQ0ZGVjZjA2MmI1YjAyZmE0
Njc2N2Q0YWI4MGU2Li42ZWFjOWM1MTY3N2JiNjI1YWVlYTc1ODcxNWE1YzI3ZmMzNTNlZDQ1IDEw
MDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNTEw
MzgsNiArNTEwMzgsMTQgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0
aXZlUGF0aD0iLi5cZG9tXFNoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmNwcCIKKwkJCQk+CisJ
CQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXFNoYWRvd0NvbnRl
bnRTZWxlY3RvclF1ZXJ5LmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXGRvbVxTaGFkb3dJbmNsdXNpb25TZWxlY3Rvci5jcHAiCiAJCQkJPgogCQkJ
CTxGaWxlQ29uZmlndXJhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGE0OWMwYWZlOGE2MGQ1MmJhMjQxNzMzODQwMmE1MjQz
ZGZmMGI1NGUuLmNkZTkxZGUyMzdmYzFhZWRiNDc2MjI1YzhkNGFjOGEyYzc1MzM3OTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTE1NTgsNiArMTU1OCw4IEBACiAJCTUzQzgyOThFMTNEOEQ5MjcwMERFMkRFQiAvKiBSZW5kZXJG
bGV4aWJsZUJveC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTNDODI5OEMxM0Q4RDkyNzAwREUyREVCIC8qIFJlbmRlckZsZXhpYmxlQm94LmggKi87IH07
CiAJCTU1MEEwQkM5MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1MEEwQkM3MDg1RjYwMzkw
MDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmNwcCAqLzsgfTsKIAkJNTUwQTBCQ0EwODVGNjAzOTAw
NzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDU1MEEwQkM4MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1l
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTcw
REJBODExNEI1ODA0OTAwREFFRkEwIC8qIFNoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MERCN0E4MTRC
NTY5NkEwMERBRUZBMCAvKiBTaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeS5jcHAgKi87IH07CisJ
CTU3MERCQTgyMTRCNTgwNEIwMERBRUZBMCAvKiBTaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcwREI3QTkx
NEI1Njk2QTAwREFFRkEwIC8qIFNoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmggKi87IH07CiAJ
CTU5MDVBREJGMTMwMkYzQ0UwMEYxMTZERiAvKiBYTUxUcmVlVmlld2VyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU5MDVBREJEMTMwMkYzQ0UwMEYx
MTZERiAvKiBYTUxUcmVlVmlld2VyLmNwcCAqLzsgfTsKIAkJNTkwNUFEQzAxMzAyRjNDRTAwRjEx
NkRGIC8qIFhNTFRyZWVWaWV3ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDU5MDVBREJFMTMwMkYzQ0UwMEYxMTZERiAvKiBYTUxUcmVlVmlld2VyLmgg
Ki87IH07CiAJCTU5MEUxQjQ5MTFFNEVGNEIwMDY5Rjc4NCAvKiBEZXZpY2VPcmllbnRhdGlvbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTkwRTFCNDgx
MUU0RUY0QjAwNjlGNzg0IC8qIERldmljZU9yaWVudGF0aW9uLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTg4MzUsNiArODgzNyw4IEBACiAJCTUz
QzgyOThDMTNEOEQ5MjcwMERFMkRFQiAvKiBSZW5kZXJGbGV4aWJsZUJveC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJGbGV4aWJsZUJveC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1NTBBMEJDNzA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFt
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGlu
ZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBRdWFsaWZpZWROYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGgg
PSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCTU1MEEwQkM4MDg1RjYwMzkwMDczNTNENiAvKiBRdWFs
aWZpZWROYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFF1YWxpZmllZE5hbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGgg
PSA4OyB1c2VzVGFicyA9IDA7IH07CisJCTU3MERCN0E4MTRCNTY5NkEwMERBRUZBMCAvKiBTaGFk
b3dDb250ZW50U2VsZWN0b3JRdWVyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBTaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTU3MERCN0E5MTRCNTY5NkEwMERBRUZBMCAvKiBTaGFkb3dDb250ZW50U2Vs
ZWN0b3JRdWVyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFkb3dDb250
ZW50U2VsZWN0b3JRdWVyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1OTA1QURC
RDEzMDJGM0NFMDBGMTE2REYgLyogWE1MVHJlZVZpZXdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBYTUxUcmVlVmlld2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTkwNUFEQkUxMzAyRjNDRTAwRjExNkRGIC8qIFhNTFRyZWVWaWV3ZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWE1MVHJlZVZpZXdlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1OTBFMUI0ODExRTRFRjRCMDA2OUY3ODQgLyogRGV2aWNl
T3JpZW50YXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGV2aWNlT3Jp
ZW50YXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxNDIxLDYgKzIxNDI1
LDggQEAKIAkJCQlFNDUzMjJBQTE0MENFMjY3MDA1QTBGOTIgLyogU2VsZWN0b3JRdWVyeS5oICov
LAogCQkJCUE3NjZDRjhCMTM4MTBFMEMwMDExQTBCMyAvKiBTaGFkb3dDb250ZW50RWxlbWVudC5j
cHAgKi8sCiAJCQkJQTc0QzJEM0IxMzgxMUUwRDAwRjgzNTcyIC8qIFNoYWRvd0NvbnRlbnRFbGVt
ZW50LmggKi8sCisJCQkJNTcwREI3QTgxNEI1Njk2QTAwREFFRkEwIC8qIFNoYWRvd0NvbnRlbnRT
ZWxlY3RvclF1ZXJ5LmNwcCAqLywKKwkJCQk1NzBEQjdBOTE0QjU2OTZBMDBEQUVGQTAgLyogU2hh
ZG93Q29udGVudFNlbGVjdG9yUXVlcnkuaCAqLywKIAkJCQlBNzFDMzBCNjEzODEyNjVFMDBEQkMz
NTEgLyogU2hhZG93SW5jbHVzaW9uU2VsZWN0b3IuY3BwICovLAogCQkJCUE3MUMzMEI3MTM4MTI2
NUUwMERCQzM1MSAvKiBTaGFkb3dJbmNsdXNpb25TZWxlY3Rvci5oICovLAogCQkJCUE2RDE2OTYx
MTM0NkI0OUIwMDBFQjc3MCAvKiBTaGFkb3dSb290LmNwcCAqLywKQEAgLTI0Mjc3LDYgKzI0Mjgz
LDcgQEAKIAkJCQk0OTg3NzBFOTEyNDJDNTM1MDAyMjI2QkEgLyogU2hhZGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjNERDQ1MDEyRjVFQTFCMDAwRDkxOTAgLyogU2hhZG93Qmx1ci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTc0QzJEM0MxMzgxMUUwRDAwRjgzNTcyIC8qIFNoYWRvd0NvbnRlbnRF
bGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk1NzBEQkE4MjE0QjU4MDRCMDBEQUVGQTAgLyog
U2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNUVCOEM0
MEU4MjAzMUIwMEIyNTk2NSAvKiBTaGFkb3dEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzFD
MzBCOTEzODEyNjVFMDBEQkMzNTEgLyogU2hhZG93SW5jbHVzaW9uU2VsZWN0b3IuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE2RDE2OTY0MTM0NkI0QzEwMDBFQjc3MCAvKiBTaGFkb3dSb290LmggaW4g
SGVhZGVycyAqLywKQEAgLTI3MzAxLDYgKzI3MzA4LDcgQEAKIAkJCQk0OTg3NzBFODEyNDJDNTM1
MDAyMjI2QkEgLyogU2hhZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGM0RENDRGMTJGNUVB
MUIwMDBEOTE5MCAvKiBTaGFkb3dCbHVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3NjZDRjhD
MTM4MTBFMEMwMDExQTBCMyAvKiBTaGFkb3dDb250ZW50RWxlbWVudC5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQk1NzBEQkE4MTE0QjU4MDQ5MDBEQUVGQTAgLyogU2hhZG93Q29udGVudFNlbGVjdG9y
UXVlcnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM1RUI4QzMwRTgyMDMxQjAwQjI1OTY1IC8q
IFNoYWRvd0RhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTcxQzMwQjgxMzgxMjY1RTAwREJD
MzUxIC8qIFNoYWRvd0luY2x1c2lvblNlbGVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE2
RDE2OTYyMTM0NkI0OUIwMDBFQjc3MCAvKiBTaGFkb3dSb290LmNwcCBpbiBTb3VyY2VzICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dDb250ZW50RWxlbWVudC5jcHAKaW5kZXggZWNlZTZk
MGM3ZWU3NmZkZDcyNWUyZmRjZjg3MmRkMmJiOTNjOTdiYi4uOGFiYzY0MzRiMmU5NTBmZGMwZWZk
MWEzMWQyMjgzNjRkMmU2NzA2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRv
d0NvbnRlbnRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Q29udGVu
dEVsZW1lbnQuY3BwCkBAIC0yOCwyMCArMjgsMjIgQEAKICNpbmNsdWRlICJTaGFkb3dDb250ZW50
RWxlbWVudC5oIgogCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiU2hhZG93Q29u
dGVudFNlbGVjdG9yUXVlcnkuaCIKICNpbmNsdWRlICJTaGFkb3dJbmNsdXNpb25TZWxlY3Rvci5o
IgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNz
UmVmUHRyPFNoYWRvd0NvbnRlbnRFbGVtZW50PiBTaGFkb3dDb250ZW50RWxlbWVudDo6Y3JlYXRl
KERvY3VtZW50KiBkb2N1bWVudCkKK1Bhc3NSZWZQdHI8U2hhZG93Q29udGVudEVsZW1lbnQ+IFNo
YWRvd0NvbnRlbnRFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBTdHJp
bmcmIHNlbGVjdCkKIHsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFF1YWxpZmllZE5hbWUsIHRh
Z05hbWUsIChudWxsQXRvbSwgIndlYmtpdFNoYWRvd0NvbnRlbnQiLCBIVE1MTmFtZXM6OmRpdlRh
Zy5uYW1lc3BhY2VVUkkoKSkpOwotICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2hhZG93Q29udGVu
dEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNo
YWRvd0NvbnRlbnRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCBzZWxlY3QpKTsKIH0KIAotU2hh
ZG93Q29udGVudEVsZW1lbnQ6OlNoYWRvd0NvbnRlbnRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5h
bWUmIG5hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKK1NoYWRvd0NvbnRlbnRFbGVtZW50OjpTaGFk
b3dDb250ZW50RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBEb2N1bWVudCogZG9j
dW1lbnQsIGNvbnN0IFN0cmluZyYgc2VsZWN0KQogICAgIDogU3R5bGVkRWxlbWVudChuYW1lLCBk
b2N1bWVudCwgQ3JlYXRlSFRNTEVsZW1lbnQpCiAgICAgLCBtX2luY2x1c2lvbnMoYWRvcHRQdHIo
bmV3IFNoYWRvd0luY2x1c2lvbkxpc3QoKSkpCisgICAgLCBtX3NlbGVjdChzZWxlY3QpCiB7CiB9
CiAKQEAgLTc2LDEwICs3OCw0IEBAIHZvaWQgU2hhZG93Q29udGVudEVsZW1lbnQ6OmRldGFjaCgp
CiAgICAgU3R5bGVkRWxlbWVudDo6ZGV0YWNoKCk7CiB9CiAKLWJvb2wgU2hhZG93Q29udGVudEVs
ZW1lbnQ6OnNob3VsZEluY2x1ZGUoTm9kZSopCi17Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLQog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Q29udGVudEVsZW1lbnQuaAppbmRleCA3YjM2NjYy
MWI3Yjk2M2E0MzBmYzE0MzA5YmQ0NjVlYWVkZmEwNGE0Li5iNjJmYjE0MjQ4NWI4ZmQzYzkxMDVh
ODgxMWExYjY2MDRlZjJjZjk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93
Q29udGVudEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Q29udGVudEVs
ZW1lbnQuaApAQCAtMzYsMjMgKzM2LDI3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xh
c3MgU2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnk7CiBjbGFzcyBTaGFkb3dJbmNsdXNpb25MaXN0
OwogCiAvLyBOT1RFOiBDdXJyZW50IGltcGxlbWVudGF0aW9uIGRvZXNuJ3Qgc3VwcG9ydCBkeW5h
bWljIGluc2VydGlvbi9kZWxldGlvbiBvZiBTaGFkb3dDb250ZW50RWxlbWVudC4KIC8vIFlvdSBz
aG91bGQgY3JlYXRlIFNoYWRvd0NvbnRlbnRFbGVtZW50IGR1cmluZyB0aGUgaG9zdCBjb25zdHJ1
Y3Rpb24uCiBjbGFzcyBTaGFkb3dDb250ZW50RWxlbWVudCA6IHB1YmxpYyBTdHlsZWRFbGVtZW50
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTaGFkb3dDb250ZW50RWxlbWVudD4g
Y3JlYXRlKERvY3VtZW50Kik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U2hhZG93Q29udGVudEVs
ZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCosIGNvbnN0IFN0cmluZyYgc2VsZWN0ID0gU3RyaW5nKCkp
OwogCiAgICAgdmlydHVhbCB+U2hhZG93Q29udGVudEVsZW1lbnQoKTsKLSAgICB2aXJ0dWFsIGJv
b2wgc2hvdWxkSW5jbHVkZShOb2RlKik7CiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpOwogICAg
IHZpcnR1YWwgdm9pZCBkZXRhY2goKTsKIAorICAgIGNvbnN0IFN0cmluZyYgc2VsZWN0KCkgeyBy
ZXR1cm4gbV9zZWxlY3Q7IH0KKwogICAgIGNvbnN0IFNoYWRvd0luY2x1c2lvbkxpc3QqIGluY2x1
c2lvbnMoKSBjb25zdCB7IHJldHVybiBtX2luY2x1c2lvbnMuZ2V0KCk7IH0KIAogcHJvdGVjdGVk
OgotICAgIFNoYWRvd0NvbnRlbnRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVu
dCopOworICAgIC8vIEZJWE1FOiBDdXJyZW50bHkgdGhpcyBjb25zdHJ1Y3RvciBhY2NlcHRzIHdp
ZGVyIHF1ZXJ5IHRoYW4gc2hhZG93IGRvbSBzcGVjLgorICAgIC8vIEZvciBleGFtcGxlLCBhIHNl
bGVjdG9yIHF1ZXJ5IHNob3VsZCBub3QgaW5jbHVkZSBjb250ZXh0dWFsIHNlbGVjdG9ycy4KKyAg
ICBTaGFkb3dDb250ZW50RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqLCBj
b25zdCBTdHJpbmcmIHNlbGVjdCA9IFN0cmluZygpKTsKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFs
IGJvb2wgaXNDb250ZW50RWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KQEAgLTYwLDYg
KzY0LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVy
ZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopIHsgcmV0dXJuIDA7IH0KIAogICAgIE93blB0
cjxTaGFkb3dJbmNsdXNpb25MaXN0PiBtX2luY2x1c2lvbnM7CisgICAgU3RyaW5nIG1fc2VsZWN0
OwogfTsKIAogaW5saW5lIFNoYWRvd0NvbnRlbnRFbGVtZW50KiB0b1NoYWRvd0NvbnRlbnRFbGVt
ZW50KE5vZGUqIG5vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Q29u
dGVudFNlbGVjdG9yUXVlcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0NvbnRlbnRT
ZWxlY3RvclF1ZXJ5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYTgxM2JjYzE4MjczNmVhMTY1MTA2OTMzZGI5
NjJmNDRjMjA4N2I5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRv
d0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmNwcApAQCAtMCwwICsxLDg1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIlNoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmgiCisKKyNpbmNs
dWRlICJDU1NQYXJzZXIuaCIKKyNpbmNsdWRlICJDU1NTZWxlY3Rvckxpc3QuaCIKKyNpbmNsdWRl
ICJTaGFkb3dDb250ZW50RWxlbWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1NoYWRv
d0NvbnRlbnRTZWxlY3RvclF1ZXJ5OjpTaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeShTaGFkb3dD
b250ZW50RWxlbWVudCogZWxlbWVudCkKKyAgICA6IG1fbWF0Y2hlc0FsbChlbGVtZW50LT5zZWxl
Y3QoKS5pc0VtcHR5KCkpCisgICAgLCBtX2NvbnRlbnRFbGVtZW50KGVsZW1lbnQpCisgICAgLCBt
X3NlbGVjdG9yQ2hlY2tlcihlbGVtZW50LT5kb2N1bWVudCgpLCAhZWxlbWVudC0+ZG9jdW1lbnQo
KS0+aW5RdWlya3NNb2RlKCkpCit7CisgICAgbV9zZWxlY3RvckNoZWNrZXIuc2V0Q29sbGVjdGlu
Z1J1bGVzT25seSh0cnVlKTsKKworICAgIGlmIChtX21hdGNoZXNBbGwpCisgICAgICAgIHJldHVy
bjsKKworICAgIENTU1BhcnNlciBwYXJzZXIodHJ1ZSk7CisgICAgcGFyc2VyLnBhcnNlU2VsZWN0
b3IoZWxlbWVudC0+c2VsZWN0KCksIGVsZW1lbnQtPmRvY3VtZW50KCksIG1fc2VsZWN0b3JMaXN0
KTsKKworICAgIGZvciAoQ1NTU2VsZWN0b3IqIHNlbGVjdG9yID0gbV9zZWxlY3Rvckxpc3QuZmly
c3QoKTsgc2VsZWN0b3I7IHNlbGVjdG9yID0gQ1NTU2VsZWN0b3JMaXN0OjpuZXh0KHNlbGVjdG9y
KSkKKyAgICAgICAgbV9zZWxlY3RvcnMuYXBwZW5kKFNlbGVjdG9yRGF0YShzZWxlY3RvciwgU2Vs
ZWN0b3JDaGVja2VyOjppc0Zhc3RDaGVja2FibGVTZWxlY3RvcihzZWxlY3RvcikpKTsKK30KKwor
Citib29sIFNoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5OjptYXRjaGVzKE5vZGUqIG5vZGUpIGNv
bnN0Cit7CisgICAgQVNTRVJUKG5vZGUpOworICAgIGlmICghbm9kZSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgQVNTRVJUKG5vZGUtPnBhcmVudE5vZGUoKSA9PSBtX2NvbnRlbnRFbGVt
ZW50LT5zaGFkb3dUcmVlUm9vdE5vZGUoKS0+c2hhZG93SG9zdCgpKTsKKworICAgIGlmIChtX21h
dGNoZXNBbGwpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgdW5zaWduZWQgc2VsZWN0b3JD
b3VudCA9IG1fc2VsZWN0b3JzLnNpemUoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
c2VsZWN0b3JDb3VudDsgKytpKSB7CisgICAgICAgIGlmIChtYXRjaGVzKG5vZGUsIG1fc2VsZWN0
b3JzW2ldKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVybiBm
YWxzZTsKK30KKworYm9vbCBTaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeTo6bWF0Y2hlcyhOb2Rl
KiB0YXJnZXROb2RlLCBjb25zdCBTZWxlY3RvckRhdGEmIHNlbGVjdG9yRGF0YSkgY29uc3QKK3sK
KyAgICBBU1NFUlQodGFyZ2V0Tm9kZSk7CisKKyAgICBpZiAoIXRhcmdldE5vZGUtPmlzRWxlbWVu
dE5vZGUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgRWxlbWVudCogZWxlbWVudCA9
IHN0YXRpY19jYXN0PEVsZW1lbnQqPih0YXJnZXROb2RlKTsKKyAgICByZXR1cm4gbV9zZWxlY3Rv
ckNoZWNrZXIuY2hlY2tTZWxlY3RvcihzZWxlY3RvckRhdGEuc2VsZWN0b3IsIGVsZW1lbnQsIHNl
bGVjdG9yRGF0YS5pc0Zhc3RDaGVja2FibGUpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnkuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJmMzViYzNkZDQ0
ZDgxNzc2MDY4ZThhMGYwYzUzYjIxYjQxNDgyNzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnkuaApAQCAtMCwwICsxLDgwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBTaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeV9oCisjZGVmaW5lIFNoYWRvd0NvbnRl
bnRTZWxlY3RvclF1ZXJ5X2gKKworI2luY2x1ZGUgIkNTU1NlbGVjdG9yTGlzdC5oIgorI2luY2x1
ZGUgIlNlbGVjdG9yQ2hlY2tlci5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVk
ZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBEb2N1bWVudDsK
K2NsYXNzIE5vZGU7CitjbGFzcyBTaGFkb3dDb250ZW50RWxlbWVudDsKKworY2xhc3MgU2hhZG93
Q29udGVudFNlbGVjdG9yUXVlcnkgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNoYWRvd0Nv
bnRlbnRTZWxlY3RvclF1ZXJ5KTsKK3B1YmxpYzoKKyAgICBTaGFkb3dDb250ZW50U2VsZWN0b3JR
dWVyeShTaGFkb3dDb250ZW50RWxlbWVudCopOworCisgICAgYm9vbCBtYXRjaGVzKE5vZGUqKSBj
b25zdDsKKworcHJpdmF0ZToKKyAgICBzdHJ1Y3QgU2VsZWN0b3JEYXRhIHsKKyAgICAgICAgU2Vs
ZWN0b3JEYXRhKENTU1NlbGVjdG9yKiBzZWxlY3RvciwgYm9vbCBpc0Zhc3RDaGVja2FibGUpCisg
ICAgICAgICAgICA6IHNlbGVjdG9yKHNlbGVjdG9yKQorICAgICAgICAgICAgLCBpc0Zhc3RDaGVj
a2FibGUoaXNGYXN0Q2hlY2thYmxlKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBD
U1NTZWxlY3Rvciogc2VsZWN0b3I7CisgICAgICAgIGJvb2wgaXNGYXN0Q2hlY2thYmxlOworICAg
IH07CisKKyAgICBib29sIGNhblVzZUlkTG9va3VwKGNvbnN0IFNlbGVjdG9yRGF0YSYsIERvY3Vt
ZW50KikgY29uc3Q7CisgICAgYm9vbCBtYXRjaGVzKE5vZGUqIHRhcmdldE5vZGUsIGNvbnN0IFNl
bGVjdG9yRGF0YSYpIGNvbnN0OworCisgICAgYm9vbCBtX21hdGNoZXNBbGw7CisgICAgU2hhZG93
Q29udGVudEVsZW1lbnQqIG1fY29udGVudEVsZW1lbnQ7CisgICAgVmVjdG9yPFNlbGVjdG9yRGF0
YT4gbV9zZWxlY3RvcnM7CisgICAgQ1NTU2VsZWN0b3JMaXN0IG1fc2VsZWN0b3JMaXN0OworICAg
IFNlbGVjdG9yQ2hlY2tlciBtX3NlbGVjdG9yQ2hlY2tlcjsKK307CisKK30KKworCisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0luY2x1c2lvblNlbGVjdG9y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dJbmNsdXNpb25TZWxlY3Rvci5jcHAKaW5k
ZXggOTg0MWY1NTY0ODg3Yzg5NjM0NTM3NDlmMjM3MTY2Y2EyZTQ1ZTEwNS4uNTdlOWQ0MmJlNTFi
NWU0NTJjNGQ0MDU0ZTIwYmE0YzdiODU1NDhhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1NoYWRvd0luY2x1c2lvblNlbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
U2hhZG93SW5jbHVzaW9uU2VsZWN0b3IuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAi
U2hhZG93SW5jbHVzaW9uU2VsZWN0b3IuaCIKIAogI2luY2x1ZGUgIlNoYWRvd0NvbnRlbnRFbGVt
ZW50LmgiCisjaW5jbHVkZSAiU2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnkuaCIKICNpbmNsdWRl
ICJTaGFkb3dSb290LmgiCiAKIApAQCAtMTExLDExICsxMTIsMTIgQEAgdm9pZCBTaGFkb3dJbmNs
dXNpb25TZWxlY3Rvcjo6c2VsZWN0KFNoYWRvd0NvbnRlbnRFbGVtZW50KiBjb250ZW50RWxlbWVu
dCwgU2hhZG8KIHsKICAgICBBU1NFUlQoaW5jbHVzaW9ucy0+aXNFbXB0eSgpKTsKIAorICAgIFNo
YWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5IHF1ZXJ5KGNvbnRlbnRFbGVtZW50KTsKICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG1fY2FuZGlkYXRlcy5zaXplKCk7ICsraSkgewogICAgICAgICBO
b2RlKiBjaGlsZCA9IG1fY2FuZGlkYXRlc1tpXS5nZXQoKTsKICAgICAgICAgaWYgKCFjaGlsZCkK
ICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAoIWNvbnRlbnRFbGVtZW50LT5zaG91
bGRJbmNsdWRlKGNoaWxkKSkKKyAgICAgICAgaWYgKCFxdWVyeS5tYXRjaGVzKGNoaWxkKSkKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIFJlZlB0cjxTaGFkb3dJbmNsdXNpb24+IGlu
Y2x1c2lvbiA9IFNoYWRvd0luY2x1c2lvbjo6Y3JlYXRlKGNvbnRlbnRFbGVtZW50LCBjaGlsZCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93SW5jbHVzaW9uU2VsZWN0b3Iu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dJbmNsdXNpb25TZWxlY3Rvci5oCmluZGV4IGYx
YWRhZWUzZjU0M2E4MWMzZmVmYmZjNDZlMDFiMWZkN2YzYjBlOGYuLmQxYTg3MTc0NDFiMTljMmQ2
YWZhMGU4ZjM0MDc1ODQxMDIxOGI0ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9T
aGFkb3dJbmNsdXNpb25TZWxlY3Rvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dJ
bmNsdXNpb25TZWxlY3Rvci5oCkBAIC0xMzcsNyArMTM3LDYgQEAgcHVibGljOgogICAgIHZvaWQg
ZGlkU2VsZWN0KCk7CiAgICAgYm9vbCBoYXNDYW5kaWRhdGVzKCkgY29uc3QgeyByZXR1cm4gIW1f
Y2FuZGlkYXRlcy5pc0VtcHR5KCk7IH0KIAotCiBwcml2YXRlOgogICAgIHZvaWQgcmVtb3ZlRnJv
bVNldChTaGFkb3dJbmNsdXNpb25MaXN0Kik7CiAgICAgdm9pZCBhZGRUb1NldChTaGFkb3dJbmNs
dXNpb25MaXN0Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxz
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHAK
aW5kZXggZmFkOWFmODA0NDE0NTcwYzFlNzZjYTI4YzVlYjViMTYyN2M3MDIyMC4uNTFhYWRjMGM2
ZmMyNjRjZDFjZmJjYmJiNzcxZTI4YmE0OTZhMDRkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTERldGFpbHNFbGVtZW50LmNwcApAQCAtNDIsMTEgKzQyLDkgQEAgcHVibGljOgogCiBwcml2
YXRlOgogICAgIERldGFpbHNDb250ZW50RWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCi0gICAg
ICAgIDogU2hhZG93Q29udGVudEVsZW1lbnQoSFRNTE5hbWVzOjpkaXZUYWcsIGRvY3VtZW50KQor
ICAgICAgICA6IFNoYWRvd0NvbnRlbnRFbGVtZW50KEhUTUxOYW1lczo6ZGl2VGFnLCBkb2N1bWVu
dCwgIiIpCiAgICAgewogICAgIH0KLQotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRJbmNsdWRlKE5v
ZGUqKTsKIH07CiAKIFBhc3NSZWZQdHI8RGV0YWlsc0NvbnRlbnRFbGVtZW50PiBEZXRhaWxzQ29u
dGVudEVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCkBAIC01NCwyNCArNTIsMTUg
QEAgUGFzc1JlZlB0cjxEZXRhaWxzQ29udGVudEVsZW1lbnQ+IERldGFpbHNDb250ZW50RWxlbWVu
dDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWUKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERldGFp
bHNDb250ZW50RWxlbWVudChkb2N1bWVudCkpOwogfQogCi1ib29sIERldGFpbHNDb250ZW50RWxl
bWVudDo6c2hvdWxkSW5jbHVkZShOb2RlKiBub2RlKQotewotICAgIEhUTUxEZXRhaWxzRWxlbWVu
dCogZGV0YWlscyA9IHN0YXRpY19jYXN0PEhUTUxEZXRhaWxzRWxlbWVudCo+KHNoYWRvd0FuY2Vz
dG9yTm9kZSgpKTsKLSAgICByZXR1cm4gZGV0YWlscy0+bWFpblN1bW1hcnkoKSAhPSBub2RlOwot
fQotCi0KIGNsYXNzIERldGFpbHNTdW1tYXJ5RWxlbWVudCA6IHB1YmxpYyBTaGFkb3dDb250ZW50
RWxlbWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8RGV0YWlsc1N1bW1hcnlF
bGVtZW50PiBjcmVhdGUoRG9jdW1lbnQqKTsKIAogcHJpdmF0ZToKICAgICBEZXRhaWxzU3VtbWFy
eUVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQotICAgICAgICA6IFNoYWRvd0NvbnRlbnRFbGVt
ZW50KEhUTUxOYW1lczo6ZGl2VGFnLCBkb2N1bWVudCkKKyAgICAgICAgOiBTaGFkb3dDb250ZW50
RWxlbWVudChIVE1MTmFtZXM6OmRpdlRhZywgZG9jdW1lbnQsICJzdW1tYXJ5OmZpcnN0LW9mLXR5
cGUiKQogICAgIHsKICAgICB9Ci0KLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSW5jbHVkZShOb2Rl
Kik7CiB9OwogCiBQYXNzUmVmUHRyPERldGFpbHNTdW1tYXJ5RWxlbWVudD4gRGV0YWlsc1N1bW1h
cnlFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtNzksMTMgKzY4LDYgQEAg
UGFzc1JlZlB0cjxEZXRhaWxzU3VtbWFyeUVsZW1lbnQ+IERldGFpbHNTdW1tYXJ5RWxlbWVudDo6
Y3JlYXRlKERvY3VtZW50KiBkb2N1bWUKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERldGFpbHNT
dW1tYXJ5RWxlbWVudChkb2N1bWVudCkpOwogfQogCi1ib29sIERldGFpbHNTdW1tYXJ5RWxlbWVu
dDo6c2hvdWxkSW5jbHVkZShOb2RlKiBub2RlKQotewotICAgIEhUTUxEZXRhaWxzRWxlbWVudCog
ZGV0YWlscyA9IHN0YXRpY19jYXN0PEhUTUxEZXRhaWxzRWxlbWVudCo+KHNoYWRvd0FuY2VzdG9y
Tm9kZSgpKTsKLSAgICByZXR1cm4gZGV0YWlscy0+bWFpblN1bW1hcnkoKSA9PSBub2RlOwotfQot
Ci0KIFBhc3NSZWZQdHI8SFRNTERldGFpbHNFbGVtZW50PiBIVE1MRGV0YWlsc0VsZW1lbnQ6OmNy
ZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiB7
CiAgICAgUmVmUHRyPEhUTUxEZXRhaWxzRWxlbWVudD4gcmVzdWx0ID0gYWRvcHRSZWYobmV3IEhU
TUxEZXRhaWxzRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuY3BwCmluZGV4IDc4M2MzODA1NjkzYWVjNjNkNGQ5ODViZDc4YzM4NGZkNDQ4NGM0
ZWMuLmY5YThjN2FlMWI5MjcxNTRlMDc0MmE3Mzc5Yzc0ODllNDZmNmJmMjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTEyNiwxNCArMTI2LDE1IEBAIGJvb2wgSW50ZXJu
YWxzOjppc1ByZWxvYWRlZChEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgdXJsKQog
ICAgIHJldHVybiBkb2N1bWVudC0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+aXNQcmVsb2FkZWQo
dXJsKTsKIH0KIAotUGFzc1JlZlB0cjxFbGVtZW50PiBJbnRlcm5hbHM6OmNyZWF0ZVNoYWRvd0Nv
bnRlbnRFbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCwgRXhjZXB0aW9uQ29kZSYgZWMpCitQYXNz
UmVmUHRyPEVsZW1lbnQ+IEludGVybmFsczo6Y3JlYXRlU2hhZG93Q29udGVudEVsZW1lbnQoRG9j
dW1lbnQqIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIHNlbGVjdCwgRXhjZXB0aW9uQ29kZSYgZWMp
CiB7CiAgICAgaWYgKCFkb2N1bWVudCkgewogICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VS
UjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgcmV0dXJuIFNoYWRvd0NvbnRlbnRF
bGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOworICAgIFJlZlB0cjxTaGFkb3dDb250ZW50RWxlbWVu
dD4gZWxlbSA9IFNoYWRvd0NvbnRlbnRFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQsIHNlbGVjdCk7
CisgICAgcmV0dXJuIGVsZW0ucmVsZWFzZSgpOwogfQogCiBFbGVtZW50KiBJbnRlcm5hbHM6Omdl
dEVsZW1lbnRCeUlkSW5TaGFkb3dSb290KE5vZGUqIHNoYWRvd1Jvb3QsIGNvbnN0IFN0cmluZyYg
aWQsIEV4Y2VwdGlvbkNvZGUmIGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXgg
ZWQ0NzM3MDU1Yjk5MzgzZGE5YjI4MDIxYWYzZjY5NTljNjFkMzVmNy4uYzk2N2ZjZWU3NTgzMDlh
ZTIxODI3ZDlmMmRkMTlhMDMzOTgyYmJiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5o
CkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZVNoYWRvd1Jvb3QoRWxl
bWVudCogaG9zdCwgRXhjZXB0aW9uQ29kZSYpOwogICAgIEVsZW1lbnQqIGluY2x1ZGVyRm9yKE5v
ZGUqLCBFeGNlcHRpb25Db2RlJik7CiAgICAgU3RyaW5nIHNoYWRvd1BzZXVkb0lkKEVsZW1lbnQq
LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgUGFzc1JlZlB0cjxFbGVtZW50PiBjcmVhdGVTaGFkb3dD
b250ZW50RWxlbWVudChEb2N1bWVudCosIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNzUmVmUHRy
PEVsZW1lbnQ+IGNyZWF0ZVNoYWRvd0NvbnRlbnRFbGVtZW50KERvY3VtZW50KiwgY29uc3QgU3Ry
aW5nJiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIEVsZW1lbnQqIGdldEVsZW1lbnRCeUlkSW5TaGFk
b3dSb290KE5vZGUqIHNoYWRvd1Jvb3QsIGNvbnN0IFN0cmluZyYgaWQsIEV4Y2VwdGlvbkNvZGUm
KTsKIAogI2lmIEVOQUJMRShJTlBVVF9DT0xPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmlkbAppbmRleCBmNTZkMWFmNzRhOGUzNWRkNDdiZDRlNmM0OWYxMjVlN2VhYWMzYTU1Li41ZjAw
OGQwYThhZmI2OGQ2MDUwMjU4ZDhiNjU0YzhmNzE1M2E3MGEzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaWRsCkBAIC0zNSw3ICszNSw3IEBAIG1vZHVsZSB3aW5kb3cgewogICAgICAg
ICBFbGVtZW50IGluY2x1ZGVyRm9yKGluIE5vZGUgbm9kZSkgcmFpc2VzIChET01FeGNlcHRpb24p
OwogICAgICAgICB2b2lkIHJlbW92ZVNoYWRvd1Jvb3QoaW4gRWxlbWVudCBob3N0KSByYWlzZXMg
KERPTUV4Y2VwdGlvbik7CiAgICAgICAgIERPTVN0cmluZyBzaGFkb3dQc2V1ZG9JZChpbiBFbGVt
ZW50IGVsZW1lbnQpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKLSAgICAgICAgRWxlbWVudCBjcmVh
dGVTaGFkb3dDb250ZW50RWxlbWVudChpbiBEb2N1bWVudCBkb2N1bWVudCkgcmFpc2VzKERPTUV4
Y2VwdGlvbik7CisgICAgICAgIEVsZW1lbnQgY3JlYXRlU2hhZG93Q29udGVudEVsZW1lbnQoaW4g
RG9jdW1lbnQgZG9jdW1lbnQsIGluIFtPcHRpb25hbD1DYWxsV2l0aE51bGxWYWx1ZV0gRE9NU3Ry
aW5nIHNlbGVjdCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIEVsZW1lbnQgZ2V0RWxl
bWVudEJ5SWRJblNoYWRvd1Jvb3QoaW4gTm9kZSBzaGFkb3dSb290LCBpbiBET01TdHJpbmcgaWQp
IHJhaXNlcyhET01FeGNlcHRpb24pOwogCiAjaWYgZGVmaW5lZChFTkFCTEVfSU5QVVRfQ09MT1Ip
ICYmIEVOQUJMRV9JTlBVVF9DT0xPUgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCm9sZCBtb2RlIDEwMDc1NQpuZXcgbW9kZSAxMDA2NDQK
aW5kZXggMDM0ODk5ODE0N2Y2MWY3NTNmZTJjZjQ1OWVjYTBlODVmZDE1YTIxOS4uNjBjYWFhN2Fi
Y2M2YTlmYzRkZjc0ZDRlNThhZDNhZjNhNDQyYmU0NQotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTItMDEt
MDkgIFNoaW55YSBLYXdhbmFrYSAgPHNoaW55YWtAZ29vZ2xlLmNvbT4KKworICAgICAgICBTaGFk
b3dDb250ZW50RWxlbWVudCBzaG91bGQgYmUgYWJsZSB0byB1c2UgcXVlcnkuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NTMwMgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzIGZvciBTaGFkb3dDb250
ZW50RWxlbWVudCBxdWVyeS4KKworICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctY29u
dGVudHMtc2VsZWN0LWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3No
YWRvdy9zaGFkb3ctY29udGVudHMtc2VsZWN0Lmh0bWw6IEFkZGVkLgorCisyMDEyLTAxLTA2ICBT
aGlueWEgS2F3YW5ha2EgIDxzaGlueWFrQGdvb2dsZS5jb20+CisKKyAgICAgICAgU2hhZG93Q29u
dGVudEVsZW1lbnQgc2hvdWxkIGJlIGFibGUgdG8gdXNlIHF1ZXJ5LgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzUzMDIKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0cyBmb3IgU2hhZG93Q29udGVudEVs
ZW1lbnQgcXVlcnkuCisKKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWNvbnRlbnRz
LXNlbGVjdC1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cv
c2hhZG93LWNvbnRlbnRzLXNlbGVjdC5odG1sOiBBZGRlZC4KKwogMjAxMi0wMS0wNSAgR2F2aW4g
QmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CiAKICAgICAgICAgRGF0ZSBjb25z
dHJ1Y3RvciBoYW5kbGVzIGluZmluaXRlIHZhbHVlcyBpbmNvcnJlY3RseS4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctY29udGVudHMtc2VsZWN0LWV4cGVj
dGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LWNvbnRlbnRzLXNl
bGVjdC1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAzNzk2NWJhMmM5MjdiYzI0ODY5NTg0NTNj
MWNjNjc1Mjk3M2U1ZTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9z
aGFkb3cvc2hhZG93LWNvbnRlbnRzLXNlbGVjdC1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsNDEg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4KKy8qIHJlbGF0aXZl
IHBvc2l0aW9uaW5nIGVuc3VyZXMgdW5kZXJseWluZyBSZW5kZXJMYXllciAqLworLmNvbnRhaW5l
ciB7CisgICAgcG9zaXRpb246IHJlbGF0aXZlOworfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5
PgorPGRpdiBpZD0iY29udGFpbmVyIj4KKzwhLS0gdGVzdFNlbGVjdElzTnVsbCAtLT4KKzxkaXY+
PHNwYW4+SGVsbG8sPC9zcGFuPjxzcGFuPmNvbnRlbnQ8L3NwYW4+PHNwYW4+V29ybGQuPC9zcGFu
PjwvZGl2PgorPCEtLSB0ZXN0U2VsZWN0SXNJZCAtLT4KKzxkaXY+PHNwYW4+SGVsbG8sPC9zcGFu
PjxzcGFuPmNvbnRlbnQ8L3NwYW4+PHNwYW4+V29ybGQuPC9zcGFuPjwvZGl2PgorPCEtLSB0ZXN0
U2VsZWN0SXNJZEJ1dE5vdE1hdGNoZWQgLS0+Cis8ZGl2PjxzcGFuPkhlbGxvLDwvc3Bhbj48c3Bh
bj5Xb3JsZC48L3NwYW4+PC9kaXY+Cis8IS0tIHRlc3RTZWxlY3RJc0lkQnV0Tm90Q2hpbGQgLS0+
Cis8ZGl2PjxzcGFuPkhlbGxvLDwvc3Bhbj48c3Bhbj5Xb3JsZC48L3NwYW4+PC9kaXY+Cis8IS0t
IHRlc3RTZWxlY3RJc011bHRpSWQgLS0+Cis8ZGl2PjxzcGFuPkhlbGxvLDwvc3Bhbj48c3Bhbj5j
b250ZW50PC9zcGFuPjxzcGFuPmNvbnRlbnQ8L3NwYW4+PHNwYW4+V29ybGQuPC9zcGFuPjwvZGl2
PgorPCEtLSB0ZXN0U2VsZWN0SXNUeXBlIC0tPgorPGRpdj48c3Bhbj5IZWxsbyw8L3NwYW4+PHNw
YW4+Y29udGVudDwvc3Bhbj48c3Bhbj5Xb3JsZC48L3NwYW4+PC9kaXY+Cis8IS0tIHRlc3RTZWxl
Y3RJc1R5cGVXaXRoQXR0cmlidXRlIC0tPgorPGRpdj48c3Bhbj5IZWxsbyw8L3NwYW4+PHNwYW4+
Y29udGVudDwvc3Bhbj48c3Bhbj5Xb3JsZC48L3NwYW4+PC9kaXY+Cis8IS0tIHRlc3RTZWxlY3RJ
c1R5cGVXaXRoRmlyc3RPZlR5cGUgLS0+Cis8ZGl2PjxzcGFuPkhlbGxvLDwvc3Bhbj48c3Bhbj5j
b250ZW50PC9zcGFuPjxzcGFuPldvcmxkLjwvc3Bhbj48L2Rpdj4KKzwhLS0gdGVzdFNlbGVjdElz
VHlwZVdpdGhGaXJzdE9mVHlwZTIgLS0+Cis8ZGl2PjxzcGFuPkhlbGxvLDwvc3Bhbj48c3Bhbj5j
b250ZW50PC9zcGFuPjxzcGFuPldvcmxkLjwvc3Bhbj48L2Rpdj4KKzwhLS0gdGVzdFNlbGVjdElz
VHlwZVdpdGhMYXN0T2ZUeXBlIC0tPgorPGRpdj48c3Bhbj5IZWxsbyw8L3NwYW4+PHNwYW4+Y29u
dGVudDwvc3Bhbj48c3Bhbj5Xb3JsZC48L3NwYW4+PC9kaXY+Cis8IS0tIHRlc3RTZWxlY3RJc0Rl
dGFpbHMgLS0+Cis8ZGl2PjxzcGFuPkhlbGxvLDwvc3Bhbj48ZGV0YWlscz5jb250ZW50PC9kZXRh
aWxzPjxzcGFuPldvcmxkLjwvc3Bhbj48L2Rpdj4KKzwhLS0gdGVzdFNlbGVjdElzRGV0YWlsczIg
LS0+Cis8ZGl2PjxzcGFuPkhlbGxvLDwvc3Bhbj48ZGV0YWlscz48c3VtbWFyeT5jb250ZW50PC9z
dW1tYXJ5PjwvZGV0YWlscz48c3Bhbj5Xb3JsZC48L3NwYW4+PC9kaXY+Cis8IS0tIHRlc3RTZWxl
Y3RXaGVuRHluYW1pY2FsbHlDaGlsZHJlbkNoYW5nZWQgLS0+Cis8ZGl2PjxzcGFuPkhlbGxvLDwv
c3Bhbj48c3Bhbj5jb250ZW50PC9zcGFuPjxzcGFuPldvcmxkLjwvc3Bhbj48L2Rpdj4KKzwvZGl2
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hh
ZG93L3NoYWRvdy1jb250ZW50cy1zZWxlY3QuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3No
YWRvdy9zaGFkb3ctY29udGVudHMtc2VsZWN0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjc5Mjk2N2E5M2U1
OTYyZGI1YWU3ZjI5YmIyOWJjYTAxY2VjZjUxZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctY29udGVudHMtc2VsZWN0Lmh0bWwKQEAgLTAsMCAr
MSwxNzMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4KKy8qIHJl
bGF0aXZlIHBvc2l0aW9uaW5nIGVuc3VyZXMgdW5kZXJseWluZyBSZW5kZXJMYXllciAqLworLmNv
bnRhaW5lciB7CisgICAgcG9zaXRpb246IHJlbGF0aXZlOworfQorPC9zdHlsZT4KKzxzY3JpcHQ+
CitmdW5jdGlvbiBhcHBlbmRTaGFkb3codGFyZ2V0LCBzZWxlY3QpIHsKKyAgICB2YXIgcm9vdCA9
IGludGVybmFscy5lbnN1cmVTaGFkb3dSb290KHRhcmdldCk7CisKKyAgICB2YXIgY2hpbGQwID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOworICAgIGNoaWxkMC5pbm5lckhUTUwgPSAi
SGVsbG8sIjsKKyAgICByb290LmFwcGVuZENoaWxkKGNoaWxkMCk7CisKKyAgICB2YXIgY29udGVu
dCA9IGludGVybmFscy5jcmVhdGVTaGFkb3dDb250ZW50RWxlbWVudChkb2N1bWVudCwgc2VsZWN0
KTsKKyAgICByb290LmFwcGVuZENoaWxkKGNvbnRlbnQpOworCisgICAgdmFyIGNoaWxkMSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKKyAgICBjaGlsZDEuaW5uZXJIVE1MID0gIldv
cmxkLiI7CisgICAgcm9vdC5hcHBlbmRDaGlsZChjaGlsZDEpOworfQorCitmdW5jdGlvbiB0ZXN0
U2VsZWN0SXNOdWxsKCkgeworICAgIHZhciB0YXJnZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdkaXYnKTsKKyAgICB0YXJnZXQuaW5uZXJIVE1MID0gIjxzcGFuPmNvbnRlbnQ8L3NwYW4+IjsK
KworICAgIGFwcGVuZFNoYWRvdyh0YXJnZXQsICIiKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdjb250YWluZXInKS5hcHBlbmRDaGlsZCh0YXJnZXQpOworfQorCitmdW5jdGlvbiB0
ZXN0U2VsZWN0SXNJZCgpIHsKKyAgICB2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnZGl2Jyk7CisgICAgdGFyZ2V0LmlubmVySFRNTCA9ICI8c3BhbiBpZD0nZm9vJz5jb250ZW50
PC9zcGFuPjxzcGFuIGlkPSdhenVueWFuJz5wZXJvcGVybzwvc3Bhbj4iOworCisgICAgYXBwZW5k
U2hhZG93KHRhcmdldCwgIiNmb28iKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdj
b250YWluZXInKS5hcHBlbmRDaGlsZCh0YXJnZXQpOworfQorCitmdW5jdGlvbiB0ZXN0U2VsZWN0
SXNJZEJ1dE5vdE1hdGNoZWQoKSB7CisgICAgdmFyIHRhcmdldCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ2RpdicpOworICAgIHRhcmdldC5pbm5lckhUTUwgPSAiPHNwYW4gaWQ9J2Zvbyc+Y29u
dGVudDwvc3Bhbj48c3BhbiBpZD0nYXp1bnlhbic+cGVyb3Blcm88L3NwYW4+IjsKKworICAgIGFw
cGVuZFNoYWRvdyh0YXJnZXQsICIjZm9vYmFyIik7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnY29udGFpbmVyJykuYXBwZW5kQ2hpbGQodGFyZ2V0KTsKK30KKworZnVuY3Rpb24gdGVz
dFNlbGVjdElzSWRCdXROb3RDaGlsZCgpIHsKKyAgICB2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnZGl2Jyk7CisgICAgdGFyZ2V0LmlubmVySFRNTCA9ICI8c3Bhbj48c3BhbiBp
ZD0nZm9vJz5jb250ZW50PC9zcGFuPjxzcGFuIGlkPSdhenVueWFuJz5wZXJvcGVybzwvc3Bhbj48
L3NwYW4+IjsKKworICAgIGFwcGVuZFNoYWRvdyh0YXJnZXQsICIjZm9vIik7CisKKyAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnY29udGFpbmVyJykuYXBwZW5kQ2hpbGQodGFyZ2V0KTsKK30K
KworZnVuY3Rpb24gdGVzdFNlbGVjdElzTXVsdGlJZCgpIHsKKyAgICB2YXIgdGFyZ2V0ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgdGFyZ2V0LmlubmVySFRNTCA9ICI8c3Bh
biBpZD0nZm9vJz5jb250ZW50PC9zcGFuPjxzcGFuIGlkPSdhenVueWFuJz5wZXJvcGVybzwvc3Bh
bj48c3BhbiBpZD0nZm9vJz5jb250ZW50PC9zcGFuPiI7CisKKyAgICBhcHBlbmRTaGFkb3codGFy
Z2V0LCAiI2ZvbyIpOworCisgICAgLy8gQWxsIG1hdGNoZWQgZWxlbWVudHMgd2lsbCBiZSBzZWxl
Y3RlZC4KKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29udGFpbmVyJykuYXBwZW5kQ2hp
bGQodGFyZ2V0KTsKK30KKworZnVuY3Rpb24gdGVzdFNlbGVjdElzVHlwZSgpIHsKKyAgICB2YXIg
dGFyZ2V0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgdGFyZ2V0LmlubmVy
SFRNTCA9ICI8ZGl2PmF6dW55YW48L2Rpdj48c3Bhbj5jb250ZW50PC9zcGFuPjxkaXY+cGVyb3Bl
cm88L2Rpdj4iOworCisgICAgYXBwZW5kU2hhZG93KHRhcmdldCwgInNwYW4iKTsKKworICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250YWluZXInKS5hcHBlbmRDaGlsZCh0YXJnZXQpOwor
fQorCitmdW5jdGlvbiB0ZXN0U2VsZWN0SXNUeXBlV2l0aEF0dHJpYnV0ZSgpIHsKKyAgICB2YXIg
dGFyZ2V0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgdGFyZ2V0LmlubmVy
SFRNTCA9ICI8c3Bhbj5henVueWFuPC9zcGFuPjxzcGFuIHRpdGxlPSdjb250ZW50Jz5jb250ZW50
PC9zcGFuPjxzcGFuPnBlcm9wZXJvPC9zcGFuPiI7CisKKyAgICBhcHBlbmRTaGFkb3codGFyZ2V0
LCAic3Bhblt0aXRsZT0nY29udGVudCddIik7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnY29udGFpbmVyJykuYXBwZW5kQ2hpbGQodGFyZ2V0KTsKK30KKworZnVuY3Rpb24gdGVzdFNl
bGVjdElzVHlwZVdpdGhGaXJzdE9mVHlwZSgpIHsKKyAgICB2YXIgdGFyZ2V0ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgdGFyZ2V0LmlubmVySFRNTCA9ICI8ZGl2PmF6dW55
YW48L2Rpdj48c3Bhbj5jb250ZW50PC9zcGFuPjxzcGFuPnBlcm9wZXJvPC9zcGFuPiI7CisKKyAg
ICBhcHBlbmRTaGFkb3codGFyZ2V0LCAic3BhbjpmaXJzdC1vZi10eXBlIik7CisKKyAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnY29udGFpbmVyJykuYXBwZW5kQ2hpbGQodGFyZ2V0KTsKK30K
KworZnVuY3Rpb24gdGVzdFNlbGVjdElzVHlwZVdpdGhGaXJzdE9mVHlwZTIoKSB7CisgICAgdmFy
IHRhcmdldCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHRhcmdldC5pbm5l
ckhUTUwgPSAiPGRpdj48c3Bhbj5henVueWFuPC9zcGFuPjwvZGl2PjxzcGFuPmNvbnRlbnQ8L3Nw
YW4+PHNwYW4+cGVyb3Blcm88L3NwYW4+IjsKKworICAgIGFwcGVuZFNoYWRvdyh0YXJnZXQsICJz
cGFuOmZpcnN0LW9mLXR5cGUiKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250
YWluZXInKS5hcHBlbmRDaGlsZCh0YXJnZXQpOworfQorCitmdW5jdGlvbiB0ZXN0U2VsZWN0SXNU
eXBlV2l0aExhc3RPZlR5cGUoKSB7CisgICAgdmFyIHRhcmdldCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ2RpdicpOworICAgIHRhcmdldC5pbm5lckhUTUwgPSAiPHNwYW4+YXp1bnlhbjwvc3Bh
bj48c3Bhbj5jb250ZW50PC9zcGFuPjxkaXY+cGVyb3Blcm88L2Rpdj4iOworCisgICAgYXBwZW5k
U2hhZG93KHRhcmdldCwgInNwYW46bGFzdC1vZi10eXBlIik7CisKKyAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnY29udGFpbmVyJykuYXBwZW5kQ2hpbGQodGFyZ2V0KTsKK30KKworZnVuY3Rp
b24gdGVzdFNlbGVjdElzRGV0YWlscygpIHsKKyAgICB2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnZGl2Jyk7CisgICAgdGFyZ2V0LmlubmVySFRNTCA9ICI8ZGV0YWlscz5jb250
ZW50PC9kZXRhaWxzPiI7CisKKyAgICBhcHBlbmRTaGFkb3codGFyZ2V0LCAiZGV0YWlscyIpOwor
CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRhaW5lcicpLmFwcGVuZENoaWxkKHRh
cmdldCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RTZWxlY3RJc0RldGFpbHMyKCkgeworICAgIHZhciB0
YXJnZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICB0YXJnZXQuaW5uZXJI
VE1MID0gIjxkZXRhaWxzPjxzdW1tYXJ5PmNvbnRlbnQ8L3N1bW1hcnk+PC9kZXRhaWxzPiI7CisK
KyAgICBhcHBlbmRTaGFkb3codGFyZ2V0LCAiZGV0YWlscyIpOworCisgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2NvbnRhaW5lcicpLmFwcGVuZENoaWxkKHRhcmdldCk7Cit9CisKK2Z1bmN0
aW9uIHRlc3RTZWxlY3RXaGVuRHluYW1pY2FsbHlDaGlsZHJlbkNoYW5nZWQoKSB7CisgICAgdmFy
IHRhcmdldCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHRhcmdldC5pbm5l
ckhUTUwgPSAiPHNwYW4+Y29udGVudDwvc3Bhbj48c3BhbiBpZD0ndG9iZXJlbW92ZWQnPmFudW55
YW4gcGVyb3Blcm88L3NwYW4+IjsKKworICAgIGFwcGVuZFNoYWRvdyh0YXJnZXQsICJzcGFuIik7
CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29udGFpbmVyJykuYXBwZW5kQ2hpbGQo
dGFyZ2V0KTsKKworICAgIHZhciBlbGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RvYmVy
ZW1vdmVkJyk7CisgICAgZWxlbS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGVsZW0pOworfQorCit2
YXIgdGVzdEZ1bmNzID0gWworICAgIHRlc3RTZWxlY3RJc051bGwsCisgICAgdGVzdFNlbGVjdElz
SWQsCisgICAgdGVzdFNlbGVjdElzSWRCdXROb3RNYXRjaGVkLAorICAgIHRlc3RTZWxlY3RJc0lk
QnV0Tm90Q2hpbGQsCisgICAgdGVzdFNlbGVjdElzTXVsdGlJZCwKKyAgICB0ZXN0U2VsZWN0SXNU
eXBlLAorICAgIHRlc3RTZWxlY3RJc1R5cGVXaXRoQXR0cmlidXRlLAorICAgIHRlc3RTZWxlY3RJ
c1R5cGVXaXRoRmlyc3RPZlR5cGUsCisgICAgdGVzdFNlbGVjdElzVHlwZVdpdGhGaXJzdE9mVHlw
ZTIsCisgICAgdGVzdFNlbGVjdElzVHlwZVdpdGhMYXN0T2ZUeXBlLAorICAgIHRlc3RTZWxlY3RJ
c0RldGFpbHMsCisgICAgdGVzdFNlbGVjdElzRGV0YWlsczIsCisgICAgdGVzdFNlbGVjdFdoZW5E
eW5hbWljYWxseUNoaWxkcmVuQ2hhbmdlZCwKK10KKworZnVuY3Rpb24gZG9UZXN0KCkgeworICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgdGVzdEZ1bmNzLmxlbmd0aDsgKytpKSB7CisgICAgICAgdGVz
dEZ1bmNzW2ldKCk7CisgICAgfQorfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9
ImRvVGVzdCgpIj4KKzxkaXYgaWQ9ImNvbnRhaW5lciI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121828</attachid>
            <date>2012-01-10 05:02:40 -0800</date>
            <delta_ts>2012-01-11 21:57:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-75302-20120110220238.patch</filename>
            <type>text/plain</type>
            <size>40980</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA0NTI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzY0ZWM4ODI4NjlkZWEw
ZDg3ZWM3YTlmMTljMjk1MTJhNjgwZWJhNS4uMGEzZDNjNjdhNTYxNTkxNDNkY2I2Y2ZhOTM1MTQy
Yzc4NmMwZTY2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDEyLTAxLTEwICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGdvb2dsZS5jb20+CisKKyAgICAgICAgU2hhZG93Q29udGVu
dEVsZW1lbnQgc2hvdWxkIGJlIGFibGUgdG8gdXNlIHF1ZXJ5LgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzUzMDIKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgYSBzZWxl
Y3RvciB0byBxdWVyeSBlbGVtZW50cyBpbiBTaGFkb3dDb250ZW50RWxlbWVudC4KKyAgICAgICAg
VGhpcyBjYW4gYmUgdXNlZCBpbnN0ZWFkIG9mIFNoYWRvd0NvbnRlbnRFbGVtZW50OjpzaG91bGRJ
bmNsdWRlIGluIG1vcmUgc29waGlzdGljYXRlZCB3YXlzLgorCisgICAgICAgIFRlc3RzOiBmYXN0
L2RvbS9zaGFkb3cvc2hhZG93LWNvbnRlbnRzLXNlbGVjdC1leHBlY3RlZC5odG1sCisgICAgICAg
ICAgICAgICBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWNvbnRlbnRzLXNlbGVjdC5odG1sCisKKyAg
ICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgor
ICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAq
IFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkb20vRE9NQWxsSW5PbmUuY3BwOgorICAg
ICAgICAqIGRvbS9TZWxlY3RvclF1ZXJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9y
RGF0YUxpc3Q6OlNlbGVjdG9yRGF0YUxpc3QpOgorICAgICAgICAgIEV4dHJhY3RlZCB0byBzaGFy
ZSBjb2RlcyB3aXRoIFNoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5LgorICAgICAgICAoV2ViQ29y
ZTo6U2VsZWN0b3JEYXRhTGlzdDo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JR
dWVyeTo6U2VsZWN0b3JRdWVyeSk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvclF1ZXJ5Ojpj
YW5Vc2VJZExvb2t1cCk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvclF1ZXJ5OjpleGVjdXRl
KToKKyAgICAgICAgKiBkb20vU2VsZWN0b3JRdWVyeS5oOgorICAgICAgICAoV2ViQ29yZTo6U2Vs
ZWN0b3JEYXRhTGlzdDo6c2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckRhdGFMaXN0
OjpzZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckRhdGFMaXN0Ojppc0Zhc3RD
aGVja2FibGUpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JEYXRhTGlzdDo6U2VsZWN0b3JE
YXRhOjpTZWxlY3RvckRhdGEpOgorICAgICAgICAqIGRvbS9TaGFkb3dDb250ZW50RWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dDb250ZW50RWxlbWVudDo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYWRvd0NvbnRlbnRFbGVtZW50OjpTaGFkb3dDb250ZW50RWxlbWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dDb250ZW50RWxlbWVudDo6c2VsZWN0KToKKyAg
ICAgICAgKiBkb20vU2hhZG93Q29udGVudEVsZW1lbnQuaDoKKyAgICAgICAgKiBkb20vU2hhZG93
Q29udGVudFNlbGVjdG9yUXVlcnkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNoYWRv
d0NvbnRlbnRTZWxlY3RvclF1ZXJ5OjpTaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeSk6CisgICAg
ICAgIChXZWJDb3JlOjpTaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeTo6bWF0Y2hlcyk6CisgICAg
ICAgICAgUmV0dXJucyB0cnVlIGlmIE5vZGUgaXMgbWF0Y2hlZCBieSB0aGUgcXVlcnkuCisgICAg
ICAgICogZG9tL1NoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5Lmg6IENvcGllZCBmcm9tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9TaGFkb3dDb250ZW50RWxlbWVudC5oLgorICAgICAgICAqIGRvbS9TaGFk
b3dJbmNsdXNpb25TZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dJbmNsdXNp
b25TZWxlY3Rvcjo6c2VsZWN0KToKKyAgICAgICAgKiBkb20vU2hhZG93SW5jbHVzaW9uU2VsZWN0
b3IuaDoKKyAgICAgICAgKiBodG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEZXRhaWxzQ29udGVudEVsZW1lbnQ6OkRldGFpbHNDb250ZW50RWxlbWVudCk6IFJl
LWltcGxlbWVudGVkIHVzaW5nIHF1ZXJ5LgorICAgICAgICAoV2ViQ29yZTo6RGV0YWlsc1N1bW1h
cnlFbGVtZW50OjpEZXRhaWxzU3VtbWFyeUVsZW1lbnQpOiBkaXR0by4KKyAgICAgICAgKiBodG1s
L0hUTUxTdW1tYXJ5RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdW1tYXJ5Q29udGVu
dEVsZW1lbnQ6OlN1bW1hcnlDb250ZW50RWxlbWVudCk6CisgICAgICAgICogdGVzdGluZy9JbnRl
cm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpjcmVhdGVTaGFkb3dDb250
ZW50RWxlbWVudCk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0
ZXN0aW5nL0ludGVybmFscy5pZGw6CisKIDIwMTItMDEtMDkgIEFkYW0gQmFydGggIDxhYmFydGhA
d2Via2l0Lm9yZz4KIAogICAgICAgICBydW4tYmluZGluZ3MtdGVzdHMgc2hvdWxkIGV4ZXJjaXNl
IGFsbCB0aGUgSURMIGF0dHJpYnV0ZXMgd2UgdXNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDQ5
OGRmYWQ3ZjU1ZGU0OTQxZmI5OGJjODM3NWUxZDI5MzRkNTRkNGMuLjU4MmVmN2VkMWJjMjE5OTBh
OGQwMjVjMjcyZTY2MzdmZjEwZjJlZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC01OTQsNiAr
NTk0LDcgQEAgU0VUKFdlYkNvcmVfU09VUkNFUwogICAgIGRvbS9TZWN1cml0eUNvbnRleHQuY3Bw
CiAgICAgZG9tL1NlbGVjdG9yUXVlcnkuY3BwCiAgICAgZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50
LmNwcAorICAgIGRvbS9TaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeS5jcHAKICAgICBkb20vU2hh
ZG93SW5jbHVzaW9uU2VsZWN0b3IuY3BwCiAgICAgZG9tL1NoYWRvd1Jvb3QuY3BwCiAgICAgZG9t
L1NwYWNlU3BsaXRTdHJpbmcuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCAy
M2M4YTQ2ODhhYjllMWQ3NDBiMjliOTc4ZjZlY2NlY2M0ZjE3Y2Y1Li4yZWQ3ZWE2OWQ5NThlNDYz
NjU0MmUxYTBjODY1OWZkYzU5NzdiNTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0K
QEAgLTE2NDUsNiArMTY0NSw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNv
cmUvZG9tL1NlbGVjdG9yUXVlcnkuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0NvbnRl
bnRFbGVtZW50LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50
LmggXAorCVNvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeS5jcHAg
XAorCVNvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeS5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9kb20vU2hhZG93SW5jbHVzaW9uU2VsZWN0b3IuY3BwIFwKIAlTb3VyY2Uv
V2ViQ29yZS9kb20vU2hhZG93SW5jbHVzaW9uU2VsZWN0b3IuaCBcCiAJU291cmNlL1dlYkNvcmUv
ZG9tL1NoYWRvd1Jvb3QuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5w
cmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IDRkMTY5ZDBiYjk2OGEyY2I2NDhl
ZmJlZDVhNjEwMDdhYjQ0N2Q3Y2EuLjI3ZDAwZjYwZWRjZDVhNTUwZDgxNTYxMzZhYjE4ZDViODk1
NjM2OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNl
L1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtNTYwLDYgKzU2MCw3IEBAIFNPVVJDRVMgKz0gXAogICAg
IGRvbS9TZWN1cml0eUNvbnRleHQuY3BwIFwKICAgICBkb20vU2VsZWN0b3JRdWVyeS5jcHAgXAog
ICAgIGRvbS9TaGFkb3dDb250ZW50RWxlbWVudC5jcHAgXAorICAgIGRvbS9TaGFkb3dDb250ZW50
U2VsZWN0b3JRdWVyeS5jcHAgXAogICAgIGRvbS9TaGFkb3dJbmNsdXNpb25TZWxlY3Rvci5jcHAg
XAogICAgIGRvbS9TaGFkb3dSb290LmNwcCBcCiAgICAgZG9tL1NwYWNlU3BsaXRTdHJpbmcuY3Bw
IFwKQEAgLTE2NTcsNiArMTY1OCw3IEBAIEhFQURFUlMgKz0gXAogICAgIGRvbS9TY3JpcHRFeGVj
dXRpb25Db250ZXh0LmggXAogICAgIGRvbS9TZWxlY3RvclF1ZXJ5LmggXAogICAgIGRvbS9TaGFk
b3dDb250ZW50RWxlbWVudC5oIFwKKyAgICBkb20vU2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnku
aCBcCiAgICAgZG9tL1NoYWRvd0luY2x1c2lvblNlbGVjdG9yLmggXAogICAgIGRvbS9TaGFkb3dS
b290LmggXAogICAgIGRvbS9TcGFjZVNwbGl0U3RyaW5nLmggXApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4
IDBlNGJlOGE4NmUzOTc3OTg5ZTgwM2RlYjQwZWEyYWIxZjVmYWYzMzQuLjQ3Y2RmOGFmZTViYWI3
MjY5YmYwMmZiZjYxNGMzZGJkMWFlZjMyYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTEwNDcsNiAr
MTA0Nyw3IEBACiAgICAgICAgICAgICAnZG9tL1NjcmlwdFJ1bm5lci5oJywKICAgICAgICAgICAg
ICdkb20vU2hhZG93Um9vdC5oJywKICAgICAgICAgICAgICdkb20vU2hhZG93Q29udGVudEVsZW1l
bnQuaCcsCisgICAgICAgICAgICAnZG9tL1NoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmgnLAog
ICAgICAgICAgICAgJ2RvbS9TcGFjZVNwbGl0U3RyaW5nLmgnLAogICAgICAgICAgICAgJ2RvbS9T
dHlsZWRFbGVtZW50LmgnLAogICAgICAgICAgICAgJ2RvbS9UZXh0LmgnLApAQCAtNTQzNyw2ICs1
NDM4LDggQEAKICAgICAgICAgICAgICdkb20vU2VsZWN0b3JRdWVyeS5oJywKICAgICAgICAgICAg
ICdkb20vU2hhZG93Q29udGVudEVsZW1lbnQuY3BwJywKICAgICAgICAgICAgICdkb20vU2hhZG93
Q29udGVudEVsZW1lbnQuaCcsCisgICAgICAgICAgICAnZG9tL1NoYWRvd0NvbnRlbnRTZWxlY3Rv
clF1ZXJ5LmNwcCcsCisgICAgICAgICAgICAnZG9tL1NoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5
LmgnLAogICAgICAgICAgICAgJ2RvbS9TaGFkb3dJbmNsdXNpb25TZWxlY3Rvci5jcHAnLAogICAg
ICAgICAgICAgJ2RvbS9TaGFkb3dJbmNsdXNpb25TZWxlY3Rvci5oJywKICAgICAgICAgICAgICdk
b20vU2hhZG93Um9vdC5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvagppbmRleCAwYTA3ZDY3ZDU3MmJiNjcyNWRkYWQ2Y2RiM2U1YTg1MTMzOGYzNDJh
Li45ZWU0OWViYmFiYTRiOTQxMzA4MmMwYTU4MDJhZWViY2IwZDRhYjY3IDEwMDc1NQotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNTEwNTQsNiArNTEwNTQs
MTQgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5c
ZG9tXFNoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJ
CQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXFNoYWRvd0NvbnRlbnRTZWxlY3RvclF1
ZXJ5LmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XGRvbVxTaGFkb3dJbmNsdXNpb25TZWxlY3Rvci5jcHAiCiAJCQkJPgogCQkJCTxGaWxlQ29uZmln
dXJhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IGM0NjZlYzZkNWZjYmNjZGMwN2E5YzFmOThkY2E0OWI1MGZmZDgzYTUuLmI2
ZGQ1ZmY1NzY2YmVmZmUwYzcxZmQ4YzI3MDgyNGM2YzFkNjA5N2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE1NTgsNiArMTU1
OCw4IEBACiAJCTUzQzgyOThFMTNEOEQ5MjcwMERFMkRFQiAvKiBSZW5kZXJGbGV4aWJsZUJveC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNDODI5OEMx
M0Q4RDkyNzAwREUyREVCIC8qIFJlbmRlckZsZXhpYmxlQm94LmggKi87IH07CiAJCTU1MEEwQkM5
MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1MEEwQkM3MDg1RjYwMzkwMDczNTNENiAvKiBR
dWFsaWZpZWROYW1lLmNwcCAqLzsgfTsKIAkJNTUwQTBCQ0EwODVGNjAzOTAwNzM1M0Q2IC8qIFF1
YWxpZmllZE5hbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDU1MEEwQkM4MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTcwREJBODExNEI1ODA0
OTAwREFFRkEwIC8qIFNoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MERCN0E4MTRCNTY5NkEwMERBRUZB
MCAvKiBTaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeS5jcHAgKi87IH07CisJCTU3MERCQTgyMTRC
NTgwNEIwMERBRUZBMCAvKiBTaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcwREI3QTkxNEI1Njk2QTAwREFF
RkEwIC8qIFNoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmggKi87IH07CiAJCTU5MDVBREJGMTMw
MkYzQ0UwMEYxMTZERiAvKiBYTUxUcmVlVmlld2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU5MDVBREJEMTMwMkYzQ0UwMEYxMTZERiAvKiBYTUxU
cmVlVmlld2VyLmNwcCAqLzsgfTsKIAkJNTkwNUFEQzAxMzAyRjNDRTAwRjExNkRGIC8qIFhNTFRy
ZWVWaWV3ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDU5MDVBREJFMTMwMkYzQ0UwMEYxMTZERiAvKiBYTUxUcmVlVmlld2VyLmggKi87IH07CiAJCTU5
MEUxQjQ5MTFFNEVGNEIwMDY5Rjc4NCAvKiBEZXZpY2VPcmllbnRhdGlvbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTkwRTFCNDgxMUU0RUY0QjAwNjlG
Nzg0IC8qIERldmljZU9yaWVudGF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTg4MzcsNiArODgzOSw4IEBACiAJCTUzQzgyOThDMTNEOEQ5
MjcwMERFMkRFQiAvKiBSZW5kZXJGbGV4aWJsZUJveC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSZW5kZXJGbGV4aWJsZUJveC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1NTBBMEJDNzA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBRdWFsaWZp
ZWROYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFi
cyA9IDA7IH07CiAJCTU1MEEwQkM4MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdp
ZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFF1YWxp
ZmllZE5hbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFi
cyA9IDA7IH07CisJCTU3MERCN0E4MTRCNTY5NkEwMERBRUZBMCAvKiBTaGFkb3dDb250ZW50U2Vs
ZWN0b3JRdWVyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFk
b3dDb250ZW50U2VsZWN0b3JRdWVyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTU3MERCN0E5MTRCNTY5NkEwMERBRUZBMCAvKiBTaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFkb3dDb250ZW50U2VsZWN0b3JR
dWVyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1OTA1QURCRDEzMDJGM0NFMDBG
MTE2REYgLyogWE1MVHJlZVZpZXdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBYTUxUcmVlVmlld2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTkwNUFEQkUxMzAyRjNDRTAwRjExNkRGIC8qIFhNTFRyZWVWaWV3ZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gWE1MVHJlZVZpZXdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1OTBFMUI0ODExRTRFRjRCMDA2OUY3ODQgLyogRGV2aWNlT3JpZW50YXRpb24u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGV2aWNlT3JpZW50YXRpb24uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxNDI5LDYgKzIxNDMzLDggQEAKIAkJCQlF
NDUzMjJBQTE0MENFMjY3MDA1QTBGOTIgLyogU2VsZWN0b3JRdWVyeS5oICovLAogCQkJCUE3NjZD
RjhCMTM4MTBFMEMwMDExQTBCMyAvKiBTaGFkb3dDb250ZW50RWxlbWVudC5jcHAgKi8sCiAJCQkJ
QTc0QzJEM0IxMzgxMUUwRDAwRjgzNTcyIC8qIFNoYWRvd0NvbnRlbnRFbGVtZW50LmggKi8sCisJ
CQkJNTcwREI3QTgxNEI1Njk2QTAwREFFRkEwIC8qIFNoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5
LmNwcCAqLywKKwkJCQk1NzBEQjdBOTE0QjU2OTZBMDBEQUVGQTAgLyogU2hhZG93Q29udGVudFNl
bGVjdG9yUXVlcnkuaCAqLywKIAkJCQlBNzFDMzBCNjEzODEyNjVFMDBEQkMzNTEgLyogU2hhZG93
SW5jbHVzaW9uU2VsZWN0b3IuY3BwICovLAogCQkJCUE3MUMzMEI3MTM4MTI2NUUwMERCQzM1MSAv
KiBTaGFkb3dJbmNsdXNpb25TZWxlY3Rvci5oICovLAogCQkJCUE2RDE2OTYxMTM0NkI0OUIwMDBF
Qjc3MCAvKiBTaGFkb3dSb290LmNwcCAqLywKQEAgLTI0MjgzLDYgKzI0Mjg5LDcgQEAKIAkJCQk0
OTg3NzBFOTEyNDJDNTM1MDAyMjI2QkEgLyogU2hhZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjNERDQ1MDEyRjVFQTFCMDAwRDkxOTAgLyogU2hhZG93Qmx1ci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTc0QzJEM0MxMzgxMUUwRDAwRjgzNTcyIC8qIFNoYWRvd0NvbnRlbnRFbGVtZW50LmggaW4g
SGVhZGVycyAqLywKKwkJCQk1NzBEQkE4MjE0QjU4MDRCMDBEQUVGQTAgLyogU2hhZG93Q29udGVu
dFNlbGVjdG9yUXVlcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNUVCOEM0MEU4MjAzMUIwMEIy
NTk2NSAvKiBTaGFkb3dEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzFDMzBCOTEzODEyNjVF
MDBEQkMzNTEgLyogU2hhZG93SW5jbHVzaW9uU2VsZWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE2RDE2OTY0MTM0NkI0QzEwMDBFQjc3MCAvKiBTaGFkb3dSb290LmggaW4gSGVhZGVycyAqLywK
QEAgLTI3MzA4LDYgKzI3MzE1LDcgQEAKIAkJCQk0OTg3NzBFODEyNDJDNTM1MDAyMjI2QkEgLyog
U2hhZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGM0RENDRGMTJGNUVBMUIwMDBEOTE5MCAv
KiBTaGFkb3dCbHVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3NjZDRjhDMTM4MTBFMEMwMDEx
QTBCMyAvKiBTaGFkb3dDb250ZW50RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1NzBE
QkE4MTE0QjU4MDQ5MDBEQUVGQTAgLyogU2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnkuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQkM1RUI4QzMwRTgyMDMxQjAwQjI1OTY1IC8qIFNoYWRvd0RhdGEu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTcxQzMwQjgxMzgxMjY1RTAwREJDMzUxIC8qIFNoYWRv
d0luY2x1c2lvblNlbGVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE2RDE2OTYyMTM0NkI0
OUIwMDBFQjc3MCAvKiBTaGFkb3dSb290LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0RPTUFsbEluT25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
T01BbGxJbk9uZS5jcHAKaW5kZXggZDBiY2VjYWEyZDA4ZDEyMWNlMzhlMTE0Y2U3N2YyZDgzMzU3
ZmE0OC4uOTFhMGJlOTk2ZGM2NGM5NmMxNGYxZjU0MTU3YWMwMGM1MzE4M2Q5MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RPTUFsbEluT25lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRE9NQWxsSW5PbmUuY3BwCkBAIC0xMTMsNiArMTEzLDcgQEAKICNpbmNsdWRlICJTZWN1
cml0eUNvbnRleHQuY3BwIgogI2luY2x1ZGUgIlNlbGVjdG9yUXVlcnkuY3BwIgogI2luY2x1ZGUg
IlNoYWRvd0NvbnRlbnRFbGVtZW50LmNwcCIKKyNpbmNsdWRlICJTaGFkb3dDb250ZW50U2VsZWN0
b3JRdWVyeS5jcHAiCiAjaW5jbHVkZSAiU2hhZG93SW5jbHVzaW9uU2VsZWN0b3IuY3BwIgogI2lu
Y2x1ZGUgIlNoYWRvd1Jvb3QuY3BwIgogI2luY2x1ZGUgIlNwYWNlU3BsaXRTdHJpbmcuY3BwIgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9yUXVlcnkuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL1NlbGVjdG9yUXVlcnkuY3BwCmluZGV4IDVkZmYwM2NiNzM2MTU0NWVmNWVl
ZDhmODcxODhmMGVlZTNlZDQyYTguLjQ1NDI4YTVhMTZlYjhmZmRiZGQxODg3YmQxOGRmNmM2NTkw
MTY5ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0b3JRdWVyeS5jcHAKQEAgLTMzLDEyICszMywy
OSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK1NlbGVjdG9yRGF0YUxpc3Q6OlNlbGVjdG9y
RGF0YUxpc3QoKQoreworfQorCitTZWxlY3RvckRhdGFMaXN0OjpTZWxlY3RvckRhdGFMaXN0KGNv
bnN0IENTU1NlbGVjdG9yTGlzdCYgc2VsZWN0b3JMaXN0KQoreworICAgIHJlc2V0KHNlbGVjdG9y
TGlzdCk7Cit9CisKK3ZvaWQgU2VsZWN0b3JEYXRhTGlzdDo6cmVzZXQoY29uc3QgQ1NTU2VsZWN0
b3JMaXN0JiBzZWxlY3Rvckxpc3QpCit7CisgICAgbV9zZWxlY3RvcnMuY2xlYXIoKTsKKworICAg
IGZvciAoQ1NTU2VsZWN0b3IqIHNlbGVjdG9yID0gc2VsZWN0b3JMaXN0LmZpcnN0KCk7IHNlbGVj
dG9yOyBzZWxlY3RvciA9IENTU1NlbGVjdG9yTGlzdDo6bmV4dChzZWxlY3RvcikpCisgICAgICAg
IG1fc2VsZWN0b3JzLmFwcGVuZChTZWxlY3RvckRhdGEoc2VsZWN0b3IsIFNlbGVjdG9yQ2hlY2tl
cjo6aXNGYXN0Q2hlY2thYmxlU2VsZWN0b3Ioc2VsZWN0b3IpKSk7Cit9CisKKwogU2VsZWN0b3JR
dWVyeTo6U2VsZWN0b3JRdWVyeShOb2RlKiByb290Tm9kZSwgY29uc3QgQ1NTU2VsZWN0b3JMaXN0
JiBzZWxlY3Rvckxpc3QpCiAgICAgOiBtX3Jvb3ROb2RlKHJvb3ROb2RlKQogICAgICwgbV9zZWxl
Y3RvckNoZWNrZXIocm9vdE5vZGUtPmRvY3VtZW50KCksICFyb290Tm9kZS0+ZG9jdW1lbnQoKS0+
aW5RdWlya3NNb2RlKCkpCisgICAgLCBtX3NlbGVjdG9ycyhzZWxlY3Rvckxpc3QpCiB7Ci0gICAg
Zm9yIChDU1NTZWxlY3Rvciogc2VsZWN0b3IgPSBzZWxlY3Rvckxpc3QuZmlyc3QoKTsgc2VsZWN0
b3I7IHNlbGVjdG9yID0gQ1NTU2VsZWN0b3JMaXN0OjpuZXh0KHNlbGVjdG9yKSkKLSAgICAgICAg
bV9zZWxlY3RvcnMuYXBwZW5kKFNlbGVjdG9yRGF0YShzZWxlY3RvciwgU2VsZWN0b3JDaGVja2Vy
Ojppc0Zhc3RDaGVja2FibGVTZWxlY3RvcihzZWxlY3RvcikpKTsKIH0KICAgICAKIFBhc3NSZWZQ
dHI8Tm9kZUxpc3Q+IFNlbGVjdG9yUXVlcnk6OnF1ZXJ5QWxsKCkgY29uc3QKQEAgLTY1LDEzICs4
MiwxMyBAQCBib29sIFNlbGVjdG9yUXVlcnk6OmNhblVzZUlkTG9va3VwKCkgY29uc3QKICAgICAv
LyB3ZSB3b3VsZCBuZWVkIHRvIHNvcnQgdGhlIHJlc3VsdHMuIEZvciBub3csIGp1c3QgdHJhdmVy
c2UgdGhlIGRvY3VtZW50IGluIHRoYXQgY2FzZS4KICAgICBpZiAobV9zZWxlY3RvcnMuc2l6ZSgp
ICE9IDEpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAobV9zZWxlY3RvcnNbMF0uc2Vs
ZWN0b3ItPm1fbWF0Y2ggIT0gQ1NTU2VsZWN0b3I6OklkKQorICAgIGlmIChtX3NlbGVjdG9ycy5z
ZWxlY3RvcigwKS0+bV9tYXRjaCAhPSBDU1NTZWxlY3Rvcjo6SWQpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICBpZiAoIW1fcm9vdE5vZGUtPmluRG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIGlmIChtX3Jvb3ROb2RlLT5kb2N1bWVudCgpLT5pblF1aXJrc01vZGUoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChtX3Jvb3ROb2RlLT5kb2N1bWVudCgpLT5j
b250YWluc011bHRpcGxlRWxlbWVudHNXaXRoSWQobV9zZWxlY3RvcnNbMF0uc2VsZWN0b3ItPnZh
bHVlKCkpKQorICAgIGlmIChtX3Jvb3ROb2RlLT5kb2N1bWVudCgpLT5jb250YWluc011bHRpcGxl
RWxlbWVudHNXaXRoSWQobV9zZWxlY3RvcnMuc2VsZWN0b3IoMCktPnZhbHVlKCkpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC04MSwxMSArOTgsMTEgQEAg
dm9pZCBTZWxlY3RvclF1ZXJ5OjpleGVjdXRlKFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiYgbWF0Y2hl
ZEVsZW1lbnRzKSBjb25zdAogewogICAgIGlmIChjYW5Vc2VJZExvb2t1cCgpKSB7CiAgICAgICAg
IEFTU0VSVChtX3NlbGVjdG9ycy5zaXplKCkgPT0gMSk7Ci0gICAgICAgIENTU1NlbGVjdG9yKiBz
ZWxlY3RvciA9IG1fc2VsZWN0b3JzWzBdLnNlbGVjdG9yOworICAgICAgICBDU1NTZWxlY3Rvciog
c2VsZWN0b3IgPSBtX3NlbGVjdG9ycy5zZWxlY3RvcigwKTsKICAgICAgICAgRWxlbWVudCogZWxl
bWVudCA9IG1fcm9vdE5vZGUtPmRvY3VtZW50KCktPmdldEVsZW1lbnRCeUlkKHNlbGVjdG9yLT52
YWx1ZSgpKTsKICAgICAgICAgaWYgKCFlbGVtZW50IHx8ICEobV9yb290Tm9kZS0+aXNEb2N1bWVu
dE5vZGUoKSB8fCBlbGVtZW50LT5pc0Rlc2NlbmRhbnRPZihtX3Jvb3ROb2RlKSkpCiAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIGlmIChtX3NlbGVjdG9yQ2hlY2tlci5jaGVja1NlbGVjdG9y
KHNlbGVjdG9yLCBlbGVtZW50LCBtX3NlbGVjdG9yc1swXS5pc0Zhc3RDaGVja2FibGUpKQorICAg
ICAgICBpZiAobV9zZWxlY3RvckNoZWNrZXIuY2hlY2tTZWxlY3RvcihzZWxlY3RvciwgZWxlbWVu
dCwgbV9zZWxlY3RvcnMuaXNGYXN0Q2hlY2thYmxlKDApKSkKICAgICAgICAgICAgIG1hdGNoZWRF
bGVtZW50cy5hcHBlbmQoZWxlbWVudCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC05Nyw3
ICsxMTQsNyBAQCB2b2lkIFNlbGVjdG9yUXVlcnk6OmV4ZWN1dGUoVmVjdG9yPFJlZlB0cjxOb2Rl
PiA+JiBtYXRjaGVkRWxlbWVudHMpIGNvbnN0CiAgICAgICAgIGlmIChuLT5pc0VsZW1lbnROb2Rl
KCkpIHsKICAgICAgICAgICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxFbGVtZW50
Kj4obik7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2VsZWN0b3JDb3Vu
dDsgKytpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKG1fc2VsZWN0b3JDaGVja2VyLmNoZWNrU2Vs
ZWN0b3IobV9zZWxlY3RvcnNbaV0uc2VsZWN0b3IsIGVsZW1lbnQsIG1fc2VsZWN0b3JzW2ldLmlz
RmFzdENoZWNrYWJsZSkpIHsKKyAgICAgICAgICAgICAgICBpZiAobV9zZWxlY3RvckNoZWNrZXIu
Y2hlY2tTZWxlY3RvcihtX3NlbGVjdG9ycy5zZWxlY3RvcihpKSwgZWxlbWVudCwgbV9zZWxlY3Rv
cnMuaXNGYXN0Q2hlY2thYmxlKGkpKSkgewogICAgICAgICAgICAgICAgICAgICBtYXRjaGVkRWxl
bWVudHMuYXBwZW5kKGVsZW1lbnQpOwogICAgICAgICAgICAgICAgICAgICBpZiAoZmlyc3RNYXRj
aE9ubHkpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2VsZWN0b3JRdWVyeS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NlbGVj
dG9yUXVlcnkuaAppbmRleCBiOTY5ODIzNzg0M2JiYzVlZWY5YWI1NzE0YzJkNjRlZjFiODgxOTcy
Li5mNzA4ODcxYWM0Y2M3NzU1OWMxNGFjMjkzYTg4OGFjOTc4ODFmMzE3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0b3JRdWVyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TZWxlY3RvclF1ZXJ5LmgKQEAgLTM3LDYgKzM3LDI3IEBAIGNsYXNzIEVsZW1lbnQ7CiBjbGFz
cyBDU1NTZWxlY3RvcjsKIGNsYXNzIENTU1NlbGVjdG9yTGlzdDsKIAorY2xhc3MgU2VsZWN0b3JE
YXRhTGlzdCB7CitwdWJsaWM6CisgICAgU2VsZWN0b3JEYXRhTGlzdCgpOworICAgIGV4cGxpY2l0
IFNlbGVjdG9yRGF0YUxpc3QoY29uc3QgQ1NTU2VsZWN0b3JMaXN0Jik7CisKKyAgICB2b2lkIHJl
c2V0KGNvbnN0IENTU1NlbGVjdG9yTGlzdCYpOworCisgICAgaW50IHNpemUoKSBjb25zdCB7IHJl
dHVybiBtX3NlbGVjdG9ycy5zaXplKCk7IH0KKyAgICBDU1NTZWxlY3Rvciogc2VsZWN0b3IoaW50
IG50aCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3RvcnNbbnRoXS5zZWxlY3RvcjsgfQorICAgIGJv
b2wgaXNGYXN0Q2hlY2thYmxlKGludCBudGgpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0b3JzW250
aF0uaXNGYXN0Q2hlY2thYmxlOyB9CisKK3ByaXZhdGU6CisgICAgc3RydWN0IFNlbGVjdG9yRGF0
YSB7CisgICAgICAgIFNlbGVjdG9yRGF0YShDU1NTZWxlY3Rvciogc2VsZWN0b3IsIGJvb2wgaXNG
YXN0Q2hlY2thYmxlKSA6IHNlbGVjdG9yKHNlbGVjdG9yKSwgaXNGYXN0Q2hlY2thYmxlKGlzRmFz
dENoZWNrYWJsZSkgeyB9CisgICAgICAgIENTU1NlbGVjdG9yKiBzZWxlY3RvcjsKKyAgICAgICAg
Ym9vbCBpc0Zhc3RDaGVja2FibGU7CisgICAgfTsKKworICAgIFZlY3RvcjxTZWxlY3RvckRhdGE+
IG1fc2VsZWN0b3JzOworfTsKKwogY2xhc3MgU2VsZWN0b3JRdWVyeSB7CiAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoU2VsZWN0b3JRdWVyeSk7CiBwdWJsaWM6CkBAIC01MCwxNSArNzEsMTAgQEAg
cHJpdmF0ZToKIAogICAgIHRlbXBsYXRlIDxib29sIGZpcnN0TWF0Y2hPbmx5PgogICAgIHZvaWQg
ZXhlY3V0ZShWZWN0b3I8UmVmUHRyPE5vZGU+ID4mKSBjb25zdDsKLSAgICAKLSAgICBzdHJ1Y3Qg
U2VsZWN0b3JEYXRhIHsKLSAgICAgICAgU2VsZWN0b3JEYXRhKENTU1NlbGVjdG9yKiBzZWxlY3Rv
ciwgYm9vbCBpc0Zhc3RDaGVja2FibGUpIDogc2VsZWN0b3Ioc2VsZWN0b3IpLCBpc0Zhc3RDaGVj
a2FibGUoaXNGYXN0Q2hlY2thYmxlKSB7IH0KLSAgICAgICAgQ1NTU2VsZWN0b3IqIHNlbGVjdG9y
OwotICAgICAgICBib29sIGlzRmFzdENoZWNrYWJsZTsKLSAgICB9OworCiAgICAgTm9kZSogbV9y
b290Tm9kZTsKLSAgICBWZWN0b3I8U2VsZWN0b3JEYXRhPiBtX3NlbGVjdG9yczsKICAgICBTZWxl
Y3RvckNoZWNrZXIgbV9zZWxlY3RvckNoZWNrZXI7CisgICAgU2VsZWN0b3JEYXRhTGlzdCBtX3Nl
bGVjdG9yczsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dD
b250ZW50RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Q29udGVudEVsZW1l
bnQuY3BwCmluZGV4IGVjZWU2ZDBjN2VlNzZmZGQ3MjVlMmZkY2Y4NzJkZDJiYjkzYzk3YmIuLmFk
YmU2NjIzZTRjMWViMjgyMjViNmM1MDRjYWEyMTIwNDMxYzZmYTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TaGFkb3dDb250ZW50RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50LmNwcApAQCAtMjgsMjEgKzI4LDI0IEBACiAjaW5j
bHVkZSAiU2hhZG93Q29udGVudEVsZW1lbnQuaCIKIAogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgor
I2luY2x1ZGUgIlNoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmgiCiAjaW5jbHVkZSAiU2hhZG93
SW5jbHVzaW9uU2VsZWN0b3IuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxTaGFkb3dDb250ZW50RWxlbWVudD4gU2hhZG93Q29u
dGVudEVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCitQYXNzUmVmUHRyPFNoYWRv
d0NvbnRlbnRFbGVtZW50PiBTaGFkb3dDb250ZW50RWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBk
b2N1bWVudCwgY29uc3QgQXRvbWljU3RyaW5nJiBzZWxlY3QpCiB7CiAgICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChRdWFsaWZpZWROYW1lLCB0YWdOYW1lLCAobnVsbEF0b20sICJ3ZWJraXRTaGFkb3dD
b250ZW50IiwgSFRNTE5hbWVzOjpkaXZUYWcubmFtZXNwYWNlVVJJKCkpKTsKLSAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFNoYWRvd0NvbnRlbnRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFkb3dDb250ZW50RWxlbWVudCh0YWdOYW1lLCBkb2N1
bWVudCwgc2VsZWN0KSk7CiB9CiAKLVNoYWRvd0NvbnRlbnRFbGVtZW50OjpTaGFkb3dDb250ZW50
RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCitT
aGFkb3dDb250ZW50RWxlbWVudDo6U2hhZG93Q29udGVudEVsZW1lbnQoY29uc3QgUXVhbGlmaWVk
TmFtZSYgbmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIHNlbGVj
dCkKICAgICA6IFN0eWxlZEVsZW1lbnQobmFtZSwgZG9jdW1lbnQsIENyZWF0ZUhUTUxFbGVtZW50
KQogICAgICwgbV9pbmNsdXNpb25zKGFkb3B0UHRyKG5ldyBTaGFkb3dJbmNsdXNpb25MaXN0KCkp
KQogeworICAgIHN0YXRpYyBjb25zdCBRdWFsaWZpZWROYW1lIHNlbGVjdEF0dHIobnVsbEF0b20s
ICJzZWxlY3QiLCBIVE1MTmFtZXM6OnhodG1sTmFtZXNwYWNlVVJJKTsKKyAgICBzZXRBdHRyaWJ1
dGUoc2VsZWN0QXR0ciwgc2VsZWN0KTsKIH0KIAogU2hhZG93Q29udGVudEVsZW1lbnQ6On5TaGFk
b3dDb250ZW50RWxlbWVudCgpCkBAIC03NiwxMCArNzksMTAgQEAgdm9pZCBTaGFkb3dDb250ZW50
RWxlbWVudDo6ZGV0YWNoKCkKICAgICBTdHlsZWRFbGVtZW50OjpkZXRhY2goKTsKIH0KIAotYm9v
bCBTaGFkb3dDb250ZW50RWxlbWVudDo6c2hvdWxkSW5jbHVkZShOb2RlKikKK2NvbnN0IEF0b21p
Y1N0cmluZyYgU2hhZG93Q29udGVudEVsZW1lbnQ6OnNlbGVjdCgpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIHRydWU7CisgICAgc3RhdGljIGNvbnN0IFF1YWxpZmllZE5hbWUgc2VsZWN0QXR0cihudWxs
QXRvbSwgInNlbGVjdCIsIEhUTUxOYW1lczo6eGh0bWxOYW1lc3BhY2VVUkkpOworICAgIHJldHVy
biBnZXRBdHRyaWJ1dGUoc2VsZWN0QXR0cik7CiB9CiAKLQogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
U2hhZG93Q29udGVudEVsZW1lbnQuaAppbmRleCA3YjM2NjYyMWI3Yjk2M2E0MzBmYzE0MzA5YmQ0
NjVlYWVkZmEwNGE0Li4wOWY4Mzg3MzBiYzFjZjg0YTQ2MmI0ZTdiMDFlNjVkZGY0ZGRlZGRkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Q29udGVudEVsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Q29udGVudEVsZW1lbnQuaApAQCAtMzYsMjMgKzM2
LDI4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgU2hhZG93Q29udGVudFNlbGVj
dG9yUXVlcnk7CiBjbGFzcyBTaGFkb3dJbmNsdXNpb25MaXN0OwogCiAvLyBOT1RFOiBDdXJyZW50
IGltcGxlbWVudGF0aW9uIGRvZXNuJ3Qgc3VwcG9ydCBkeW5hbWljIGluc2VydGlvbi9kZWxldGlv
biBvZiBTaGFkb3dDb250ZW50RWxlbWVudC4KIC8vIFlvdSBzaG91bGQgY3JlYXRlIFNoYWRvd0Nv
bnRlbnRFbGVtZW50IGR1cmluZyB0aGUgaG9zdCBjb25zdHJ1Y3Rpb24uCiBjbGFzcyBTaGFkb3dD
b250ZW50RWxlbWVudCA6IHB1YmxpYyBTdHlsZWRFbGVtZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxTaGFkb3dDb250ZW50RWxlbWVudD4gY3JlYXRlKERvY3VtZW50Kik7Cisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8U2hhZG93Q29udGVudEVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVu
dCosIGNvbnN0IEF0b21pY1N0cmluZyYgc2VsZWN0KTsKIAogICAgIHZpcnR1YWwgflNoYWRvd0Nv
bnRlbnRFbGVtZW50KCk7Ci0gICAgdmlydHVhbCBib29sIHNob3VsZEluY2x1ZGUoTm9kZSopOwog
ICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goKTsKICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoKCk7CiAK
KyAgICBjb25zdCBBdG9taWNTdHJpbmcmIHNlbGVjdCgpIGNvbnN0OworCiAgICAgY29uc3QgU2hh
ZG93SW5jbHVzaW9uTGlzdCogaW5jbHVzaW9ucygpIGNvbnN0IHsgcmV0dXJuIG1faW5jbHVzaW9u
cy5nZXQoKTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgU2hhZG93Q29udGVudEVsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CisgICAgLy8gRklYTUU6IEN1cnJlbnRseSB0aGlz
IGNvbnN0cnVjdG9yIGFjY2VwdHMgd2lkZXIgcXVlcnkgdGhhbiBzaGFkb3cgZG9tIHNwZWMuCisg
ICAgLy8gRm9yIGV4YW1wbGUsIGEgc2VsZWN0b3IgcXVlcnkgc2hvdWxkIG5vdCBpbmNsdWRlIGNv
bnRleHR1YWwgc2VsZWN0b3JzLgorICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NzU5NDYKKyAgICBTaGFkb3dDb250ZW50RWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW1lJiwgRG9jdW1lbnQqLCBjb25zdCBBdG9taWNTdHJpbmcmIHNlbGVjdCk7CiAKIHBy
aXZhdGU6CiAgICAgdmlydHVhbCBib29sIGlzQ29udGVudEVsZW1lbnQoKSBjb25zdCB7IHJldHVy
biB0cnVlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Q29udGVudFNl
bGVjdG9yUXVlcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0NvbnRlbnRTZWxlY3Rv
clF1ZXJ5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYzBkNGIwNDU1MGVhNzJmOGU2Yjc2Zjk5YTk0MzVmYjFj
NWRlM2FkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0NvbnRl
bnRTZWxlY3RvclF1ZXJ5LmNwcApAQCAtMCwwICsxLDgzIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIlNoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmgiCisKKyNpbmNsdWRlICJD
U1NQYXJzZXIuaCIKKyNpbmNsdWRlICJDU1NTZWxlY3Rvckxpc3QuaCIKKyNpbmNsdWRlICJTaGFk
b3dDb250ZW50RWxlbWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1NoYWRvd0NvbnRl
bnRTZWxlY3RvclF1ZXJ5OjpTaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeShTaGFkb3dDb250ZW50
RWxlbWVudCogZWxlbWVudCkKKyAgICA6IG1fY29udGVudEVsZW1lbnQoZWxlbWVudCkKKyAgICAs
IG1fc2VsZWN0b3JDaGVja2VyKGVsZW1lbnQtPmRvY3VtZW50KCksICFlbGVtZW50LT5kb2N1bWVu
dCgpLT5pblF1aXJrc01vZGUoKSkKK3sKKyAgICBtX3NlbGVjdG9yQ2hlY2tlci5zZXRDb2xsZWN0
aW5nUnVsZXNPbmx5KHRydWUpOworCisgICAgaWYgKGVsZW1lbnQtPnNlbGVjdCgpLmlzRW1wdHko
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQ1NTUGFyc2VyIHBhcnNlcih0cnVlKTsKKyAgICBw
YXJzZXIucGFyc2VTZWxlY3RvcihlbGVtZW50LT5zZWxlY3QoKSwgZWxlbWVudC0+ZG9jdW1lbnQo
KSwgbV9zZWxlY3Rvckxpc3QpOworCisgICAgbV9zZWxlY3RvcnMucmVzZXQobV9zZWxlY3Rvckxp
c3QpOworfQorCisKK2Jvb2wgU2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnk6Om1hdGNoZXMoTm9k
ZSogbm9kZSkgY29uc3QKK3sKKyAgICBBU1NFUlQobm9kZSk7CisgICAgaWYgKCFub2RlKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBBU1NFUlQobm9kZS0+cGFyZW50Tm9kZSgpID09IG1f
Y29udGVudEVsZW1lbnQtPnNoYWRvd1RyZWVSb290Tm9kZSgpLT5zaGFkb3dIb3N0KCkpOworCisg
ICAgaWYgKG1fY29udGVudEVsZW1lbnQtPnNlbGVjdCgpLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0
dXJuIHRydWU7CisKKyAgICB1bnNpZ25lZCBzZWxlY3RvckNvdW50ID0gbV9zZWxlY3RvcnMuc2l6
ZSgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzZWxlY3RvckNvdW50OyArK2kpIHsK
KyAgICAgICAgaWYgKG1hdGNoZXMobm9kZSwgbV9zZWxlY3RvcnMuc2VsZWN0b3IoaSksIG1fc2Vs
ZWN0b3JzLmlzRmFzdENoZWNrYWJsZShpKSkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgU2hhZG93Q29udGVudFNlbGVjdG9y
UXVlcnk6Om1hdGNoZXMoTm9kZSogdGFyZ2V0Tm9kZSwgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yLCBi
b29sIGlzRmFzdENoZWNrYWJsZSkgY29uc3QKK3sKKyAgICBBU1NFUlQodGFyZ2V0Tm9kZSAmJiB0
YXJnZXROb2RlLT5pc0VsZW1lbnROb2RlKCkpOworCisgICAgaWYgKCF0YXJnZXROb2RlLT5pc0Vs
ZW1lbnROb2RlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIEVsZW1lbnQqIGVsZW1l
bnQgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4odGFyZ2V0Tm9kZSk7CisgICAgcmV0dXJuIG1fc2Vs
ZWN0b3JDaGVja2VyLmNoZWNrU2VsZWN0b3Ioc2VsZWN0b3IsIGVsZW1lbnQsIGlzRmFzdENoZWNr
YWJsZSk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dDb250
ZW50U2VsZWN0b3JRdWVyeS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0NvbnRlbnRTZWxl
Y3RvclF1ZXJ5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGUxZjBhNDk4ZDQ5NWIyZjQzNDdmMjcxZWFhMzhhMmI3
MDE3MTkyMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dDb250
ZW50U2VsZWN0b3JRdWVyeS5oCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFNoYWRvd0NvbnRlbnRT
ZWxlY3RvclF1ZXJ5X2gKKyNkZWZpbmUgU2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnlfaAorCisj
aW5jbHVkZSAiQ1NTU2VsZWN0b3JMaXN0LmgiCisjaW5jbHVkZSAiU2VsZWN0b3JDaGVja2VyLmgi
CisjaW5jbHVkZSAiU2VsZWN0b3JRdWVyeS5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Cisj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIERv
Y3VtZW50OworY2xhc3MgTm9kZTsKK2NsYXNzIFNoYWRvd0NvbnRlbnRFbGVtZW50OworCitjbGFz
cyBTaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
U2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnkpOworcHVibGljOgorICAgIGV4cGxpY2l0IFNoYWRv
d0NvbnRlbnRTZWxlY3RvclF1ZXJ5KFNoYWRvd0NvbnRlbnRFbGVtZW50Kik7CisKKyAgICBib29s
IG1hdGNoZXMoTm9kZSopIGNvbnN0OworCitwcml2YXRlOgorICAgIGJvb2wgbWF0Y2hlcyhOb2Rl
KiB0YXJnZXROb2RlLCBDU1NTZWxlY3RvciosIGJvb2wgaXNGYXN0Q2hlY2thYmxlKSBjb25zdDsK
KworICAgIFNoYWRvd0NvbnRlbnRFbGVtZW50KiBtX2NvbnRlbnRFbGVtZW50OworICAgIFNlbGVj
dG9yRGF0YUxpc3QgbV9zZWxlY3RvcnM7CisgICAgQ1NTU2VsZWN0b3JMaXN0IG1fc2VsZWN0b3JM
aXN0OworICAgIFNlbGVjdG9yQ2hlY2tlciBtX3NlbGVjdG9yQ2hlY2tlcjsKK307CisKK30KKwor
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0luY2x1c2lv
blNlbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dJbmNsdXNpb25TZWxlY3Rv
ci5jcHAKaW5kZXggOTg0MWY1NTY0ODg3Yzg5NjM0NTM3NDlmMjM3MTY2Y2EyZTQ1ZTEwNS4uNTdl
OWQ0MmJlNTFiNWU0NTJjNGQ0MDU0ZTIwYmE0YzdiODU1NDhhMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL1NoYWRvd0luY2x1c2lvblNlbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2hhZG93SW5jbHVzaW9uU2VsZWN0b3IuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAj
aW5jbHVkZSAiU2hhZG93SW5jbHVzaW9uU2VsZWN0b3IuaCIKIAogI2luY2x1ZGUgIlNoYWRvd0Nv
bnRlbnRFbGVtZW50LmgiCisjaW5jbHVkZSAiU2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnkuaCIK
ICNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAKIApAQCAtMTExLDExICsxMTIsMTIgQEAgdm9pZCBT
aGFkb3dJbmNsdXNpb25TZWxlY3Rvcjo6c2VsZWN0KFNoYWRvd0NvbnRlbnRFbGVtZW50KiBjb250
ZW50RWxlbWVudCwgU2hhZG8KIHsKICAgICBBU1NFUlQoaW5jbHVzaW9ucy0+aXNFbXB0eSgpKTsK
IAorICAgIFNoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5IHF1ZXJ5KGNvbnRlbnRFbGVtZW50KTsK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fY2FuZGlkYXRlcy5zaXplKCk7ICsraSkgewog
ICAgICAgICBOb2RlKiBjaGlsZCA9IG1fY2FuZGlkYXRlc1tpXS5nZXQoKTsKICAgICAgICAgaWYg
KCFjaGlsZCkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAoIWNvbnRlbnRFbGVt
ZW50LT5zaG91bGRJbmNsdWRlKGNoaWxkKSkKKyAgICAgICAgaWYgKCFxdWVyeS5tYXRjaGVzKGNo
aWxkKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIFJlZlB0cjxTaGFkb3dJbmNs
dXNpb24+IGluY2x1c2lvbiA9IFNoYWRvd0luY2x1c2lvbjo6Y3JlYXRlKGNvbnRlbnRFbGVtZW50
LCBjaGlsZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93SW5jbHVzaW9u
U2VsZWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dJbmNsdXNpb25TZWxlY3Rvci5o
CmluZGV4IGYxYWRhZWUzZjU0M2E4MWMzZmVmYmZjNDZlMDFiMWZkN2YzYjBlOGYuLmQxYTg3MTc0
NDFiMTljMmQ2YWZhMGU4ZjM0MDc1ODQxMDIxOGI0ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9TaGFkb3dJbmNsdXNpb25TZWxlY3Rvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TaGFkb3dJbmNsdXNpb25TZWxlY3Rvci5oCkBAIC0xMzcsNyArMTM3LDYgQEAgcHVibGljOgog
ICAgIHZvaWQgZGlkU2VsZWN0KCk7CiAgICAgYm9vbCBoYXNDYW5kaWRhdGVzKCkgY29uc3QgeyBy
ZXR1cm4gIW1fY2FuZGlkYXRlcy5pc0VtcHR5KCk7IH0KIAotCiBwcml2YXRlOgogICAgIHZvaWQg
cmVtb3ZlRnJvbVNldChTaGFkb3dJbmNsdXNpb25MaXN0Kik7CiAgICAgdm9pZCBhZGRUb1NldChT
aGFkb3dJbmNsdXNpb25MaXN0Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxEZXRhaWxzRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxl
bWVudC5jcHAKaW5kZXggZmFkOWFmODA0NDE0NTcwYzFlNzZjYTI4YzVlYjViMTYyN2M3MDIyMC4u
NDdhNjlhM2NkMDllY2UyYzZiNDk0ZDk3ZDc4MmY4ZmM2YmViMmQxYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcApAQCAtNDIsMTEgKzQyLDkgQEAgcHVibGlj
OgogCiBwcml2YXRlOgogICAgIERldGFpbHNDb250ZW50RWxlbWVudChEb2N1bWVudCogZG9jdW1l
bnQpCi0gICAgICAgIDogU2hhZG93Q29udGVudEVsZW1lbnQoSFRNTE5hbWVzOjpkaXZUYWcsIGRv
Y3VtZW50KQorICAgICAgICA6IFNoYWRvd0NvbnRlbnRFbGVtZW50KEhUTUxOYW1lczo6ZGl2VGFn
LCBkb2N1bWVudCwgV1RGOjplbXB0eUF0b20pCiAgICAgewogICAgIH0KLQotICAgIHZpcnR1YWwg
Ym9vbCBzaG91bGRJbmNsdWRlKE5vZGUqKTsKIH07CiAKIFBhc3NSZWZQdHI8RGV0YWlsc0NvbnRl
bnRFbGVtZW50PiBEZXRhaWxzQ29udGVudEVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1l
bnQpCkBAIC01NCwzOCArNTIsMjYgQEAgUGFzc1JlZlB0cjxEZXRhaWxzQ29udGVudEVsZW1lbnQ+
IERldGFpbHNDb250ZW50RWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWUKICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IERldGFpbHNDb250ZW50RWxlbWVudChkb2N1bWVudCkpOwogfQogCi1i
b29sIERldGFpbHNDb250ZW50RWxlbWVudDo6c2hvdWxkSW5jbHVkZShOb2RlKiBub2RlKQotewot
ICAgIEhUTUxEZXRhaWxzRWxlbWVudCogZGV0YWlscyA9IHN0YXRpY19jYXN0PEhUTUxEZXRhaWxz
RWxlbWVudCo+KHNoYWRvd0FuY2VzdG9yTm9kZSgpKTsKLSAgICByZXR1cm4gZGV0YWlscy0+bWFp
blN1bW1hcnkoKSAhPSBub2RlOwotfQotCi0KIGNsYXNzIERldGFpbHNTdW1tYXJ5RWxlbWVudCA6
IHB1YmxpYyBTaGFkb3dDb250ZW50RWxlbWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8RGV0YWlsc1N1bW1hcnlFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQqKTsKIAogcHJpdmF0
ZToKICAgICBEZXRhaWxzU3VtbWFyeUVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQotICAgICAg
ICA6IFNoYWRvd0NvbnRlbnRFbGVtZW50KEhUTUxOYW1lczo6ZGl2VGFnLCBkb2N1bWVudCkKKyAg
ICAgICAgOiBTaGFkb3dDb250ZW50RWxlbWVudChIVE1MTmFtZXM6OmRpdlRhZywgZG9jdW1lbnQs
IHN1bW1hcnlRdWVyeVNlbGVjdG9yKQogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIGJvb2wg
c2hvdWxkSW5jbHVkZShOb2RlKik7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyBzdW1t
YXJ5UXVlcnlTZWxlY3RvcjsKIH07CiAKK2NvbnN0IEF0b21pY1N0cmluZyBEZXRhaWxzU3VtbWFy
eUVsZW1lbnQ6OnN1bW1hcnlRdWVyeVNlbGVjdG9yID0gInN1bW1hcnk6Zmlyc3Qtb2YtdHlwZSI7
CisKIFBhc3NSZWZQdHI8RGV0YWlsc1N1bW1hcnlFbGVtZW50PiBEZXRhaWxzU3VtbWFyeUVsZW1l
bnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBEZXRhaWxzU3VtbWFyeUVsZW1lbnQoZG9jdW1lbnQpKTsKIH0KIAotYm9vbCBEZXRhaWxzU3Vt
bWFyeUVsZW1lbnQ6OnNob3VsZEluY2x1ZGUoTm9kZSogbm9kZSkKLXsKLSAgICBIVE1MRGV0YWls
c0VsZW1lbnQqIGRldGFpbHMgPSBzdGF0aWNfY2FzdDxIVE1MRGV0YWlsc0VsZW1lbnQqPihzaGFk
b3dBbmNlc3Rvck5vZGUoKSk7Ci0gICAgcmV0dXJuIGRldGFpbHMtPm1haW5TdW1tYXJ5KCkgPT0g
bm9kZTsKLX0KLQotCiBQYXNzUmVmUHRyPEhUTUxEZXRhaWxzRWxlbWVudD4gSFRNTERldGFpbHNF
bGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRv
Y3VtZW50KQogewogICAgIFJlZlB0cjxIVE1MRGV0YWlsc0VsZW1lbnQ+IHJlc3VsdCA9IGFkb3B0
UmVmKG5ldyBIVE1MRGV0YWlsc0VsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN1bW1hcnlFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFN1bW1hcnlFbGVtZW50LmNwcAppbmRleCBlY2YxMDg1Y2UzMGZlMGYz
YjkzZTFjZGUyNWViNTQ0ZmE3ZGI0ZjRiLi41YzllMWNjMTc5OThjYWYxMTcwNDQzYjJlMTI2ODg1
NGQzZGZkZGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdW1tYXJ5RWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3VtbWFyeUVsZW1lbnQuY3Bw
CkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBTdW1tYXJ5Q29udGVu
dEVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQotICAgICAgICA6IFNoYWRvd0NvbnRlbnRFbGVt
ZW50KEhUTUxOYW1lczo6ZGl2VGFnLCBkb2N1bWVudCkKKyAgICAgICAgOiBTaGFkb3dDb250ZW50
RWxlbWVudChIVE1MTmFtZXM6OmRpdlRhZywgZG9jdW1lbnQsIFdURjo6ZW1wdHlBdG9tKQogICAg
IHsKICAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDc4M2Mz
ODA1NjkzYWVjNjNkNGQ5ODViZDc4YzM4NGZkNDQ4NGM0ZWMuLjZjMGFhMjQ1NmNlZWVkYzFhN2Fh
MDRjZmU5MjRiNjUwNTA5MzU5NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAK
QEAgLTEyNiwxNCArMTI2LDE0IEBAIGJvb2wgSW50ZXJuYWxzOjppc1ByZWxvYWRlZChEb2N1bWVu
dCogZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgdXJsKQogICAgIHJldHVybiBkb2N1bWVudC0+Y2Fj
aGVkUmVzb3VyY2VMb2FkZXIoKS0+aXNQcmVsb2FkZWQodXJsKTsKIH0KIAotUGFzc1JlZlB0cjxF
bGVtZW50PiBJbnRlcm5hbHM6OmNyZWF0ZVNoYWRvd0NvbnRlbnRFbGVtZW50KERvY3VtZW50KiBk
b2N1bWVudCwgRXhjZXB0aW9uQ29kZSYgZWMpCitQYXNzUmVmUHRyPEVsZW1lbnQ+IEludGVybmFs
czo6Y3JlYXRlU2hhZG93Q29udGVudEVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBT
dHJpbmcmIHNlbGVjdCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKCFkb2N1bWVudCkg
ewogICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgfQogCi0gICAgcmV0dXJuIFNoYWRvd0NvbnRlbnRFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQp
OworICAgIHJldHVybiBTaGFkb3dDb250ZW50RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50LCBzZWxl
Y3QpOwogfQogCiBFbGVtZW50KiBJbnRlcm5hbHM6OmdldEVsZW1lbnRCeUlkSW5TaGFkb3dSb290
KE5vZGUqIHNoYWRvd1Jvb3QsIGNvbnN0IFN0cmluZyYgaWQsIEV4Y2VwdGlvbkNvZGUmIGVjKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggZWQ0NzM3MDU1Yjk5MzgzZGE5YjI4MDIx
YWYzZjY5NTljNjFkMzVmNy4uYzk2N2ZjZWU3NTgzMDlhZTIxODI3ZDlmMmRkMTlhMDMzOTgyYmJi
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHJlbW92ZVNoYWRvd1Jvb3QoRWxlbWVudCogaG9zdCwgRXhjZXB0aW9uQ29k
ZSYpOwogICAgIEVsZW1lbnQqIGluY2x1ZGVyRm9yKE5vZGUqLCBFeGNlcHRpb25Db2RlJik7CiAg
ICAgU3RyaW5nIHNoYWRvd1BzZXVkb0lkKEVsZW1lbnQqLCBFeGNlcHRpb25Db2RlJik7Ci0gICAg
UGFzc1JlZlB0cjxFbGVtZW50PiBjcmVhdGVTaGFkb3dDb250ZW50RWxlbWVudChEb2N1bWVudCos
IEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNzUmVmUHRyPEVsZW1lbnQ+IGNyZWF0ZVNoYWRvd0Nv
bnRlbnRFbGVtZW50KERvY3VtZW50KiwgY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOwog
ICAgIEVsZW1lbnQqIGdldEVsZW1lbnRCeUlkSW5TaGFkb3dSb290KE5vZGUqIHNoYWRvd1Jvb3Qs
IGNvbnN0IFN0cmluZyYgaWQsIEV4Y2VwdGlvbkNvZGUmKTsKIAogI2lmIEVOQUJMRShJTlBVVF9D
T0xPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCBmNTZkMWFmNzRhOGUz
NWRkNDdiZDRlNmM0OWYxMjVlN2VhYWMzYTU1Li41ZjAwOGQwYThhZmI2OGQ2MDUwMjU4ZDhiNjU0
YzhmNzE1M2E3MGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC0zNSw3
ICszNSw3IEBAIG1vZHVsZSB3aW5kb3cgewogICAgICAgICBFbGVtZW50IGluY2x1ZGVyRm9yKGlu
IE5vZGUgbm9kZSkgcmFpc2VzIChET01FeGNlcHRpb24pOwogICAgICAgICB2b2lkIHJlbW92ZVNo
YWRvd1Jvb3QoaW4gRWxlbWVudCBob3N0KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAgICAgICAg
IERPTVN0cmluZyBzaGFkb3dQc2V1ZG9JZChpbiBFbGVtZW50IGVsZW1lbnQpIHJhaXNlcyAoRE9N
RXhjZXB0aW9uKTsKLSAgICAgICAgRWxlbWVudCBjcmVhdGVTaGFkb3dDb250ZW50RWxlbWVudChp
biBEb2N1bWVudCBkb2N1bWVudCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgICAgIEVsZW1l
bnQgY3JlYXRlU2hhZG93Q29udGVudEVsZW1lbnQoaW4gRG9jdW1lbnQgZG9jdW1lbnQsIGluIFtP
cHRpb25hbD1DYWxsV2l0aE51bGxWYWx1ZV0gRE9NU3RyaW5nIHNlbGVjdCkgcmFpc2VzKERPTUV4
Y2VwdGlvbik7CiAgICAgICAgIEVsZW1lbnQgZ2V0RWxlbWVudEJ5SWRJblNoYWRvd1Jvb3QoaW4g
Tm9kZSBzaGFkb3dSb290LCBpbiBET01TdHJpbmcgaWQpIHJhaXNlcyhET01FeGNlcHRpb24pOwog
CiAjaWYgZGVmaW5lZChFTkFCTEVfSU5QVVRfQ09MT1IpICYmIEVOQUJMRV9JTlBVVF9DT0xPUgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CmluZGV4IDk5YmIyZjMyMzVlNGZiNjgxZjg3YTQ0ODBmMDkwNzRkMzUxOWVhYmIuLjZhZGVmOGQy
M2JhNDBhMGI3MTg3NWYxMGU5M2JjYWUzN2VhMWJkNzkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAor
MjAxMi0wMS0xMCAgU2hpbnlhIEthd2FuYWthICA8c2hpbnlha0Bnb29nbGUuY29tPgorCisgICAg
ICAgIFNoYWRvd0NvbnRlbnRFbGVtZW50IHNob3VsZCBiZSBhYmxlIHRvIHVzZSBxdWVyeS4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc1MzAyCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHMgZm9yIFNo
YWRvd0NvbnRlbnRFbGVtZW50IHF1ZXJ5LgorCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L3No
YWRvdy1jb250ZW50cy1zZWxlY3QtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9kb20vc2hhZG93L3NoYWRvdy1jb250ZW50cy1zZWxlY3QuaHRtbDogQWRkZWQuCisKIDIwMTIt
MDEtMDkgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgogCiAgICAg
ICAgIEVycm9yIGhhbmRsaW5nIDogaW4gSVNPODYwMSB0aW1lem9uZQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1jb250ZW50cy1zZWxlY3QtZXhwZWN0ZWQu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctY29udGVudHMtc2VsZWN0
LWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDM3OTY1YmEyYzkyN2JjMjQ4Njk1ODQ1M2MxY2M2
NzUyOTczZTVlMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRv
dy9zaGFkb3ctY29udGVudHMtc2VsZWN0LWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSw0MSBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorLyogcmVsYXRpdmUgcG9z
aXRpb25pbmcgZW5zdXJlcyB1bmRlcmx5aW5nIFJlbmRlckxheWVyICovCisuY29udGFpbmVyIHsK
KyAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8
ZGl2IGlkPSJjb250YWluZXIiPgorPCEtLSB0ZXN0U2VsZWN0SXNOdWxsIC0tPgorPGRpdj48c3Bh
bj5IZWxsbyw8L3NwYW4+PHNwYW4+Y29udGVudDwvc3Bhbj48c3Bhbj5Xb3JsZC48L3NwYW4+PC9k
aXY+Cis8IS0tIHRlc3RTZWxlY3RJc0lkIC0tPgorPGRpdj48c3Bhbj5IZWxsbyw8L3NwYW4+PHNw
YW4+Y29udGVudDwvc3Bhbj48c3Bhbj5Xb3JsZC48L3NwYW4+PC9kaXY+Cis8IS0tIHRlc3RTZWxl
Y3RJc0lkQnV0Tm90TWF0Y2hlZCAtLT4KKzxkaXY+PHNwYW4+SGVsbG8sPC9zcGFuPjxzcGFuPldv
cmxkLjwvc3Bhbj48L2Rpdj4KKzwhLS0gdGVzdFNlbGVjdElzSWRCdXROb3RDaGlsZCAtLT4KKzxk
aXY+PHNwYW4+SGVsbG8sPC9zcGFuPjxzcGFuPldvcmxkLjwvc3Bhbj48L2Rpdj4KKzwhLS0gdGVz
dFNlbGVjdElzTXVsdGlJZCAtLT4KKzxkaXY+PHNwYW4+SGVsbG8sPC9zcGFuPjxzcGFuPmNvbnRl
bnQ8L3NwYW4+PHNwYW4+Y29udGVudDwvc3Bhbj48c3Bhbj5Xb3JsZC48L3NwYW4+PC9kaXY+Cis8
IS0tIHRlc3RTZWxlY3RJc1R5cGUgLS0+Cis8ZGl2PjxzcGFuPkhlbGxvLDwvc3Bhbj48c3Bhbj5j
b250ZW50PC9zcGFuPjxzcGFuPldvcmxkLjwvc3Bhbj48L2Rpdj4KKzwhLS0gdGVzdFNlbGVjdElz
VHlwZVdpdGhBdHRyaWJ1dGUgLS0+Cis8ZGl2PjxzcGFuPkhlbGxvLDwvc3Bhbj48c3Bhbj5jb250
ZW50PC9zcGFuPjxzcGFuPldvcmxkLjwvc3Bhbj48L2Rpdj4KKzwhLS0gdGVzdFNlbGVjdElzVHlw
ZVdpdGhGaXJzdE9mVHlwZSAtLT4KKzxkaXY+PHNwYW4+SGVsbG8sPC9zcGFuPjxzcGFuPmNvbnRl
bnQ8L3NwYW4+PHNwYW4+V29ybGQuPC9zcGFuPjwvZGl2PgorPCEtLSB0ZXN0U2VsZWN0SXNUeXBl
V2l0aEZpcnN0T2ZUeXBlMiAtLT4KKzxkaXY+PHNwYW4+SGVsbG8sPC9zcGFuPjxzcGFuPmNvbnRl
bnQ8L3NwYW4+PHNwYW4+V29ybGQuPC9zcGFuPjwvZGl2PgorPCEtLSB0ZXN0U2VsZWN0SXNUeXBl
V2l0aExhc3RPZlR5cGUgLS0+Cis8ZGl2PjxzcGFuPkhlbGxvLDwvc3Bhbj48c3Bhbj5jb250ZW50
PC9zcGFuPjxzcGFuPldvcmxkLjwvc3Bhbj48L2Rpdj4KKzwhLS0gdGVzdFNlbGVjdElzRGV0YWls
cyAtLT4KKzxkaXY+PHNwYW4+SGVsbG8sPC9zcGFuPjxkZXRhaWxzPmNvbnRlbnQ8L2RldGFpbHM+
PHNwYW4+V29ybGQuPC9zcGFuPjwvZGl2PgorPCEtLSB0ZXN0U2VsZWN0SXNEZXRhaWxzMiAtLT4K
KzxkaXY+PHNwYW4+SGVsbG8sPC9zcGFuPjxkZXRhaWxzPjxzdW1tYXJ5PmNvbnRlbnQ8L3N1bW1h
cnk+PC9kZXRhaWxzPjxzcGFuPldvcmxkLjwvc3Bhbj48L2Rpdj4KKzwhLS0gdGVzdFNlbGVjdFdo
ZW5EeW5hbWljYWxseUNoaWxkcmVuQ2hhbmdlZCAtLT4KKzxkaXY+PHNwYW4+SGVsbG8sPC9zcGFu
PjxzcGFuPmNvbnRlbnQ8L3NwYW4+PHNwYW4+V29ybGQuPC9zcGFuPjwvZGl2PgorPC9kaXY+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cv
c2hhZG93LWNvbnRlbnRzLXNlbGVjdC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93
L3NoYWRvdy1jb250ZW50cy1zZWxlY3QuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NzkyOTY3YTkzZTU5NjJk
YjVhZTdmMjliYjI5YmNhMDFjZWNmNTFmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vc2hhZG93L3NoYWRvdy1jb250ZW50cy1zZWxlY3QuaHRtbApAQCAtMCwwICsxLDE3
MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorLyogcmVsYXRp
dmUgcG9zaXRpb25pbmcgZW5zdXJlcyB1bmRlcmx5aW5nIFJlbmRlckxheWVyICovCisuY29udGFp
bmVyIHsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cit9Cis8L3N0eWxlPgorPHNjcmlwdD4KK2Z1
bmN0aW9uIGFwcGVuZFNoYWRvdyh0YXJnZXQsIHNlbGVjdCkgeworICAgIHZhciByb290ID0gaW50
ZXJuYWxzLmVuc3VyZVNoYWRvd1Jvb3QodGFyZ2V0KTsKKworICAgIHZhciBjaGlsZDAgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CisgICAgY2hpbGQwLmlubmVySFRNTCA9ICJIZWxs
bywiOworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY2hpbGQwKTsKKworICAgIHZhciBjb250ZW50ID0g
aW50ZXJuYWxzLmNyZWF0ZVNoYWRvd0NvbnRlbnRFbGVtZW50KGRvY3VtZW50LCBzZWxlY3QpOwor
ICAgIHJvb3QuYXBwZW5kQ2hpbGQoY29udGVudCk7CisKKyAgICB2YXIgY2hpbGQxID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOworICAgIGNoaWxkMS5pbm5lckhUTUwgPSAiV29ybGQu
IjsKKyAgICByb290LmFwcGVuZENoaWxkKGNoaWxkMSk7Cit9CisKK2Z1bmN0aW9uIHRlc3RTZWxl
Y3RJc051bGwoKSB7CisgICAgdmFyIHRhcmdldCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rp
dicpOworICAgIHRhcmdldC5pbm5lckhUTUwgPSAiPHNwYW4+Y29udGVudDwvc3Bhbj4iOworCisg
ICAgYXBwZW5kU2hhZG93KHRhcmdldCwgIiIpOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2NvbnRhaW5lcicpLmFwcGVuZENoaWxkKHRhcmdldCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RT
ZWxlY3RJc0lkKCkgeworICAgIHZhciB0YXJnZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdk
aXYnKTsKKyAgICB0YXJnZXQuaW5uZXJIVE1MID0gIjxzcGFuIGlkPSdmb28nPmNvbnRlbnQ8L3Nw
YW4+PHNwYW4gaWQ9J2F6dW55YW4nPnBlcm9wZXJvPC9zcGFuPiI7CisKKyAgICBhcHBlbmRTaGFk
b3codGFyZ2V0LCAiI2ZvbyIpOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRh
aW5lcicpLmFwcGVuZENoaWxkKHRhcmdldCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RTZWxlY3RJc0lk
QnV0Tm90TWF0Y2hlZCgpIHsKKyAgICB2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnZGl2Jyk7CisgICAgdGFyZ2V0LmlubmVySFRNTCA9ICI8c3BhbiBpZD0nZm9vJz5jb250ZW50
PC9zcGFuPjxzcGFuIGlkPSdhenVueWFuJz5wZXJvcGVybzwvc3Bhbj4iOworCisgICAgYXBwZW5k
U2hhZG93KHRhcmdldCwgIiNmb29iYXIiKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdjb250YWluZXInKS5hcHBlbmRDaGlsZCh0YXJnZXQpOworfQorCitmdW5jdGlvbiB0ZXN0U2Vs
ZWN0SXNJZEJ1dE5vdENoaWxkKCkgeworICAgIHZhciB0YXJnZXQgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdkaXYnKTsKKyAgICB0YXJnZXQuaW5uZXJIVE1MID0gIjxzcGFuPjxzcGFuIGlkPSdm
b28nPmNvbnRlbnQ8L3NwYW4+PHNwYW4gaWQ9J2F6dW55YW4nPnBlcm9wZXJvPC9zcGFuPjwvc3Bh
bj4iOworCisgICAgYXBwZW5kU2hhZG93KHRhcmdldCwgIiNmb28iKTsKKworICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdjb250YWluZXInKS5hcHBlbmRDaGlsZCh0YXJnZXQpOworfQorCitm
dW5jdGlvbiB0ZXN0U2VsZWN0SXNNdWx0aUlkKCkgeworICAgIHZhciB0YXJnZXQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICB0YXJnZXQuaW5uZXJIVE1MID0gIjxzcGFuIGlk
PSdmb28nPmNvbnRlbnQ8L3NwYW4+PHNwYW4gaWQ9J2F6dW55YW4nPnBlcm9wZXJvPC9zcGFuPjxz
cGFuIGlkPSdmb28nPmNvbnRlbnQ8L3NwYW4+IjsKKworICAgIGFwcGVuZFNoYWRvdyh0YXJnZXQs
ICIjZm9vIik7CisKKyAgICAvLyBBbGwgbWF0Y2hlZCBlbGVtZW50cyB3aWxsIGJlIHNlbGVjdGVk
LgorICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250YWluZXInKS5hcHBlbmRDaGlsZCh0
YXJnZXQpOworfQorCitmdW5jdGlvbiB0ZXN0U2VsZWN0SXNUeXBlKCkgeworICAgIHZhciB0YXJn
ZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICB0YXJnZXQuaW5uZXJIVE1M
ID0gIjxkaXY+YXp1bnlhbjwvZGl2PjxzcGFuPmNvbnRlbnQ8L3NwYW4+PGRpdj5wZXJvcGVybzwv
ZGl2PiI7CisKKyAgICBhcHBlbmRTaGFkb3codGFyZ2V0LCAic3BhbiIpOworCisgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRhaW5lcicpLmFwcGVuZENoaWxkKHRhcmdldCk7Cit9CisK
K2Z1bmN0aW9uIHRlc3RTZWxlY3RJc1R5cGVXaXRoQXR0cmlidXRlKCkgeworICAgIHZhciB0YXJn
ZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICB0YXJnZXQuaW5uZXJIVE1M
ID0gIjxzcGFuPmF6dW55YW48L3NwYW4+PHNwYW4gdGl0bGU9J2NvbnRlbnQnPmNvbnRlbnQ8L3Nw
YW4+PHNwYW4+cGVyb3Blcm88L3NwYW4+IjsKKworICAgIGFwcGVuZFNoYWRvdyh0YXJnZXQsICJz
cGFuW3RpdGxlPSdjb250ZW50J10iKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdj
b250YWluZXInKS5hcHBlbmRDaGlsZCh0YXJnZXQpOworfQorCitmdW5jdGlvbiB0ZXN0U2VsZWN0
SXNUeXBlV2l0aEZpcnN0T2ZUeXBlKCkgeworICAgIHZhciB0YXJnZXQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdkaXYnKTsKKyAgICB0YXJnZXQuaW5uZXJIVE1MID0gIjxkaXY+YXp1bnlhbjwv
ZGl2PjxzcGFuPmNvbnRlbnQ8L3NwYW4+PHNwYW4+cGVyb3Blcm88L3NwYW4+IjsKKworICAgIGFw
cGVuZFNoYWRvdyh0YXJnZXQsICJzcGFuOmZpcnN0LW9mLXR5cGUiKTsKKworICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdjb250YWluZXInKS5hcHBlbmRDaGlsZCh0YXJnZXQpOworfQorCitm
dW5jdGlvbiB0ZXN0U2VsZWN0SXNUeXBlV2l0aEZpcnN0T2ZUeXBlMigpIHsKKyAgICB2YXIgdGFy
Z2V0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgdGFyZ2V0LmlubmVySFRN
TCA9ICI8ZGl2PjxzcGFuPmF6dW55YW48L3NwYW4+PC9kaXY+PHNwYW4+Y29udGVudDwvc3Bhbj48
c3Bhbj5wZXJvcGVybzwvc3Bhbj4iOworCisgICAgYXBwZW5kU2hhZG93KHRhcmdldCwgInNwYW46
Zmlyc3Qtb2YtdHlwZSIpOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRhaW5l
cicpLmFwcGVuZENoaWxkKHRhcmdldCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RTZWxlY3RJc1R5cGVX
aXRoTGFzdE9mVHlwZSgpIHsKKyAgICB2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnZGl2Jyk7CisgICAgdGFyZ2V0LmlubmVySFRNTCA9ICI8c3Bhbj5henVueWFuPC9zcGFuPjxz
cGFuPmNvbnRlbnQ8L3NwYW4+PGRpdj5wZXJvcGVybzwvZGl2PiI7CisKKyAgICBhcHBlbmRTaGFk
b3codGFyZ2V0LCAic3BhbjpsYXN0LW9mLXR5cGUiKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdjb250YWluZXInKS5hcHBlbmRDaGlsZCh0YXJnZXQpOworfQorCitmdW5jdGlvbiB0
ZXN0U2VsZWN0SXNEZXRhaWxzKCkgeworICAgIHZhciB0YXJnZXQgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdkaXYnKTsKKyAgICB0YXJnZXQuaW5uZXJIVE1MID0gIjxkZXRhaWxzPmNvbnRlbnQ8
L2RldGFpbHM+IjsKKworICAgIGFwcGVuZFNoYWRvdyh0YXJnZXQsICJkZXRhaWxzIik7CisKKyAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29udGFpbmVyJykuYXBwZW5kQ2hpbGQodGFyZ2V0
KTsKK30KKworZnVuY3Rpb24gdGVzdFNlbGVjdElzRGV0YWlsczIoKSB7CisgICAgdmFyIHRhcmdl
dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHRhcmdldC5pbm5lckhUTUwg
PSAiPGRldGFpbHM+PHN1bW1hcnk+Y29udGVudDwvc3VtbWFyeT48L2RldGFpbHM+IjsKKworICAg
IGFwcGVuZFNoYWRvdyh0YXJnZXQsICJkZXRhaWxzIik7CisKKyAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnY29udGFpbmVyJykuYXBwZW5kQ2hpbGQodGFyZ2V0KTsKK30KKworZnVuY3Rpb24g
dGVzdFNlbGVjdFdoZW5EeW5hbWljYWxseUNoaWxkcmVuQ2hhbmdlZCgpIHsKKyAgICB2YXIgdGFy
Z2V0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgdGFyZ2V0LmlubmVySFRN
TCA9ICI8c3Bhbj5jb250ZW50PC9zcGFuPjxzcGFuIGlkPSd0b2JlcmVtb3ZlZCc+YW51bnlhbiBw
ZXJvcGVybzwvc3Bhbj4iOworCisgICAgYXBwZW5kU2hhZG93KHRhcmdldCwgInNwYW4iKTsKKwor
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250YWluZXInKS5hcHBlbmRDaGlsZCh0YXJn
ZXQpOworCisgICAgdmFyIGVsZW0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9iZXJlbW92
ZWQnKTsKKyAgICBlbGVtLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZWxlbSk7Cit9CisKK3ZhciB0
ZXN0RnVuY3MgPSBbCisgICAgdGVzdFNlbGVjdElzTnVsbCwKKyAgICB0ZXN0U2VsZWN0SXNJZCwK
KyAgICB0ZXN0U2VsZWN0SXNJZEJ1dE5vdE1hdGNoZWQsCisgICAgdGVzdFNlbGVjdElzSWRCdXRO
b3RDaGlsZCwKKyAgICB0ZXN0U2VsZWN0SXNNdWx0aUlkLAorICAgIHRlc3RTZWxlY3RJc1R5cGUs
CisgICAgdGVzdFNlbGVjdElzVHlwZVdpdGhBdHRyaWJ1dGUsCisgICAgdGVzdFNlbGVjdElzVHlw
ZVdpdGhGaXJzdE9mVHlwZSwKKyAgICB0ZXN0U2VsZWN0SXNUeXBlV2l0aEZpcnN0T2ZUeXBlMiwK
KyAgICB0ZXN0U2VsZWN0SXNUeXBlV2l0aExhc3RPZlR5cGUsCisgICAgdGVzdFNlbGVjdElzRGV0
YWlscywKKyAgICB0ZXN0U2VsZWN0SXNEZXRhaWxzMiwKKyAgICB0ZXN0U2VsZWN0V2hlbkR5bmFt
aWNhbGx5Q2hpbGRyZW5DaGFuZ2VkLAorXQorCitmdW5jdGlvbiBkb1Rlc3QoKSB7CisgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCB0ZXN0RnVuY3MubGVuZ3RoOyArK2kpIHsKKyAgICAgICB0ZXN0RnVu
Y3NbaV0oKTsKKyAgICB9Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0iZG9U
ZXN0KCkiPgorPGRpdiBpZD0iY29udGFpbmVyIj48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122168</attachid>
            <date>2012-01-11 21:57:29 -0800</date>
            <delta_ts>2012-01-12 00:26:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-75302-20120112145727.patch</filename>
            <type>text/plain</type>
            <size>45973</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA0NTI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzY0ZWM4ODI4NjlkZWEw
ZDg3ZWM3YTlmMTljMjk1MTJhNjgwZWJhNS4uZjUyMzJhMzI1NmY2YjQ5NzVkM2EwNmU3NTZjNWU1
YTBiYzJmNmJjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDEyLTAxLTExICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGdvb2dsZS5jb20+CisKKyAgICAgICAgU2hhZG93Q29udGVu
dEVsZW1lbnQgc2hvdWxkIGJlIGFibGUgdG8gdXNlIHF1ZXJ5LgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzUzMDIKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgYSBzZWxl
Y3RvciB0byBxdWVyeSBlbGVtZW50cyBpbiBTaGFkb3dDb250ZW50RWxlbWVudC4KKyAgICAgICAg
VGhpcyBjYW4gYmUgdXNlZCBpbnN0ZWFkIG9mIFNoYWRvd0NvbnRlbnRFbGVtZW50OjpzaG91bGRJ
bmNsdWRlIGluIG1vcmUgc29waGlzdGljYXRlZCB3YXlzLgorCisgICAgICAgIFRlc3RzOiBmYXN0
L2RvbS9zaGFkb3cvc2hhZG93LWNvbnRlbnRzLXNlbGVjdC1leHBlY3RlZC5odG1sCisgICAgICAg
ICAgICAgICBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWNvbnRlbnRzLXNlbGVjdC5odG1sCisKKyAg
ICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgor
ICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAg
ICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBkb20vRE9NQWxsSW5PbmUuY3BwOgorICAgICAgICAqIGRvbS9TZWxlY3RvclF1ZXJ5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yRGF0YUxpc3Q6OlNlbGVjdG9yRGF0YUxpc3QpOgor
ICAgICAgICAgIEV4dHJhY3RlZCBmcm9tIFNlbGVjdG9yUXVlcnl0byBzaGFyZSBjb2RlcyB3aXRo
IFNoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5LgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JE
YXRhTGlzdDo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckRhdGFMaXN0
OjptYXRjaGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yRGF0YUxpc3Q6OnF1ZXJ5QWxs
KToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yRGF0YUxpc3Q6OnF1ZXJ5Rmlyc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U2VsZWN0b3JEYXRhTGlzdDo6Y2FuVXNlSWRMb29rdXApOgorICAgICAg
ICAoV2ViQ29yZTo6U2VsZWN0b3JEYXRhTGlzdDo6ZXhlY3V0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTZWxlY3RvclF1ZXJ5OjpTZWxlY3RvclF1ZXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVj
dG9yUXVlcnk6OnF1ZXJ5QWxsKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yUXVlcnk6OnF1
ZXJ5Rmlyc3QpOgorICAgICAgICAqIGRvbS9TZWxlY3RvclF1ZXJ5Lmg6CisgICAgICAgIChXZWJD
b3JlOjpTZWxlY3RvckRhdGFMaXN0OjpzaXplKToKKyAgICAgICAgKiBkb20vU2hhZG93Q29udGVu
dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2VsZWN0QXR0cik6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFkb3dDb250ZW50RWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNoYWRvd0NvbnRlbnRFbGVtZW50OjpTaGFkb3dDb250ZW50RWxlbWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFkb3dDb250ZW50RWxlbWVudDo6c2VsZWN0KToKKyAgICAgICAgKiBkb20vU2hh
ZG93Q29udGVudEVsZW1lbnQuaDoKKyAgICAgICAgKiBkb20vU2hhZG93Q29udGVudFNlbGVjdG9y
UXVlcnkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0NvbnRlbnRTZWxlY3Rv
clF1ZXJ5OjpTaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeSk6CisgICAgICAgIChXZWJDb3JlOjpT
aGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeTo6bWF0Y2hlcyk6CisgICAgICAgICAgUmV0dXJucyB0
cnVlIGlmIE5vZGUgaXMgbWF0Y2hlZCBieSB0aGUgcXVlcnkuCisgICAgICAgICogZG9tL1NoYWRv
d0NvbnRlbnRTZWxlY3RvclF1ZXJ5Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2RvbS9T
aGFkb3dDb250ZW50RWxlbWVudC5oLgorICAgICAgICAqIGRvbS9TaGFkb3dJbmNsdXNpb25TZWxl
Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dJbmNsdXNpb25TZWxlY3Rvcjo6c2Vs
ZWN0KToKKyAgICAgICAgKiBkb20vU2hhZG93SW5jbHVzaW9uU2VsZWN0b3IuaDoKKyAgICAgICAg
KiBodG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzdW1tYXJ5
UXVlcnlTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpEZXRhaWxzQ29udGVudEVsZW1lbnQ6
OkRldGFpbHNDb250ZW50RWxlbWVudCk6IFJlLWltcGxlbWVudGVkIHVzaW5nIHF1ZXJ5LgorICAg
ICAgICAoV2ViQ29yZTo6RGV0YWlsc1N1bW1hcnlFbGVtZW50OjpEZXRhaWxzU3VtbWFyeUVsZW1l
bnQpOiBkaXR0by4KKyAgICAgICAgKiBodG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTdW1tYXJ5Q29udGVudEVsZW1lbnQ6OlN1bW1hcnlDb250ZW50RWxlbWVu
dCk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW50ZXJuYWxzOjpjcmVhdGVTaGFkb3dDb250ZW50RWxlbWVudCk6CisgICAgICAgICogdGVzdGlu
Zy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisKIDIwMTIt
MDEtMDkgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBydW4tYmlu
ZGluZ3MtdGVzdHMgc2hvdWxkIGV4ZXJjaXNlIGFsbCB0aGUgSURMIGF0dHJpYnV0ZXMgd2UgdXNl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDQ5OGRmYWQ3ZjU1ZGU0OTQxZmI5OGJjODM3NWUxZDI5
MzRkNTRkNGMuLjU4MmVmN2VkMWJjMjE5OTBhOGQwMjVjMjcyZTY2MzdmZjEwZjJlZTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0CkBAIC01OTQsNiArNTk0LDcgQEAgU0VUKFdlYkNvcmVfU09VUkNFUwog
ICAgIGRvbS9TZWN1cml0eUNvbnRleHQuY3BwCiAgICAgZG9tL1NlbGVjdG9yUXVlcnkuY3BwCiAg
ICAgZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50LmNwcAorICAgIGRvbS9TaGFkb3dDb250ZW50U2Vs
ZWN0b3JRdWVyeS5jcHAKICAgICBkb20vU2hhZG93SW5jbHVzaW9uU2VsZWN0b3IuY3BwCiAgICAg
ZG9tL1NoYWRvd1Jvb3QuY3BwCiAgICAgZG9tL1NwYWNlU3BsaXRTdHJpbmcuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQppbmRleCAyM2M4YTQ2ODhhYjllMWQ3NDBiMjliOTc4ZjZlY2Nl
Y2M0ZjE3Y2Y1Li4yZWQ3ZWE2OWQ5NThlNDYzNjU0MmUxYTBjODY1OWZkYzU5NzdiNTljIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTE2NDUsNiArMTY0NSw4IEBAIHdlYmNvcmVf
c291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9yUXVlcnkuaCBcCiAJU291
cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50LmNwcCBcCiAJU291cmNlL1dlYkNv
cmUvZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50LmggXAorCVNvdXJjZS9XZWJDb3JlL2RvbS9TaGFk
b3dDb250ZW50U2VsZWN0b3JRdWVyeS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dD
b250ZW50U2VsZWN0b3JRdWVyeS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93SW5jbHVz
aW9uU2VsZWN0b3IuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93SW5jbHVzaW9uU2Vs
ZWN0b3IuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwIFwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJp
CmluZGV4IDRkMTY5ZDBiYjk2OGEyY2I2NDhlZmJlZDVhNjEwMDdhYjQ0N2Q3Y2EuLjI3ZDAwZjYw
ZWRjZDVhNTUwZDgxNTYxMzZhYjE4ZDViODk1NjM2OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtNTYwLDYg
KzU2MCw3IEBAIFNPVVJDRVMgKz0gXAogICAgIGRvbS9TZWN1cml0eUNvbnRleHQuY3BwIFwKICAg
ICBkb20vU2VsZWN0b3JRdWVyeS5jcHAgXAogICAgIGRvbS9TaGFkb3dDb250ZW50RWxlbWVudC5j
cHAgXAorICAgIGRvbS9TaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeS5jcHAgXAogICAgIGRvbS9T
aGFkb3dJbmNsdXNpb25TZWxlY3Rvci5jcHAgXAogICAgIGRvbS9TaGFkb3dSb290LmNwcCBcCiAg
ICAgZG9tL1NwYWNlU3BsaXRTdHJpbmcuY3BwIFwKQEAgLTE2NTcsNiArMTY1OCw3IEBAIEhFQURF
UlMgKz0gXAogICAgIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmggXAogICAgIGRvbS9TZWxl
Y3RvclF1ZXJ5LmggXAogICAgIGRvbS9TaGFkb3dDb250ZW50RWxlbWVudC5oIFwKKyAgICBkb20v
U2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnkuaCBcCiAgICAgZG9tL1NoYWRvd0luY2x1c2lvblNl
bGVjdG9yLmggXAogICAgIGRvbS9TaGFkb3dSb290LmggXAogICAgIGRvbS9TcGFjZVNwbGl0U3Ry
aW5nLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCA4ZTUwNWZlODZmZTVhOGFiYjI3NTJjZjIz
MTlmNGU3ZDg4YWFiYjdhLi5lZjAyOTUwZjc4MmMwMDQyMGE2MTIwNDljNDY0ZWFhZjM1ZWZmOWE1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtNTk4LDcgKzU5OCw3IEBAIF9fWk43V2ViQ29yZTIw
UmVzb3VyY2VSZXNwb25zZUJhc2UyMHNldFN1Z2dlc3RlZEZpbGVuYW1lRVJLTjNXVEY2U3RyaW5n
RQogX19aTjdXZWJDb3JlMjBSZXNvdXJjZVJlc3BvbnNlQmFzZTI0c2V0RXhwZWN0ZWRDb250ZW50
TGVuZ3RoRXgKIF9fWk43V2ViQ29yZTIwUmVzb3VyY2VSZXNwb25zZUJhc2U2c2V0VVJMRVJLTlNf
NEtVUkxFCiBfX1pON1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlQzJFdgotX19aTjdXZWJD
b3JlMjBTaGFkb3dDb250ZW50RWxlbWVudDZjcmVhdGVFUE5TXzhEb2N1bWVudEUKK19fWk43V2Vi
Q29yZTIwU2hhZG93Q29udGVudEVsZW1lbnQ2Y3JlYXRlRVBOU184RG9jdW1lbnRFUktOM1dURjEy
QXRvbWljU3RyaW5nRQogX19aTjdXZWJDb3JlMjBVc2VyR2VzdHVyZUluZGljYXRvcjdzX3N0YXRl
RQogX19aTjdXZWJDb3JlMjBVc2VyR2VzdHVyZUluZGljYXRvckMxRU5TXzI2UHJvY2Vzc2luZ1Vz
ZXJHZXN0dXJlU3RhdGVFCiBfX1pON1dlYkNvcmUyMFVzZXJHZXN0dXJlSW5kaWNhdG9yRDFFdgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCmluZGV4IDBlNGJlOGE4NmUzOTc3OTg5ZTgwM2RlYjQwZWEyYWIxZjVmYWYz
MzQuLjQ3Y2RmOGFmZTViYWI3MjY5YmYwMmZiZjYxNGMzZGJkMWFlZjMyYTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKQEAgLTEwNDcsNiArMTA0Nyw3IEBACiAgICAgICAgICAgICAnZG9tL1NjcmlwdFJ1bm5l
ci5oJywKICAgICAgICAgICAgICdkb20vU2hhZG93Um9vdC5oJywKICAgICAgICAgICAgICdkb20v
U2hhZG93Q29udGVudEVsZW1lbnQuaCcsCisgICAgICAgICAgICAnZG9tL1NoYWRvd0NvbnRlbnRT
ZWxlY3RvclF1ZXJ5LmgnLAogICAgICAgICAgICAgJ2RvbS9TcGFjZVNwbGl0U3RyaW5nLmgnLAog
ICAgICAgICAgICAgJ2RvbS9TdHlsZWRFbGVtZW50LmgnLAogICAgICAgICAgICAgJ2RvbS9UZXh0
LmgnLApAQCAtNTQzNyw2ICs1NDM4LDggQEAKICAgICAgICAgICAgICdkb20vU2VsZWN0b3JRdWVy
eS5oJywKICAgICAgICAgICAgICdkb20vU2hhZG93Q29udGVudEVsZW1lbnQuY3BwJywKICAgICAg
ICAgICAgICdkb20vU2hhZG93Q29udGVudEVsZW1lbnQuaCcsCisgICAgICAgICAgICAnZG9tL1No
YWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmNwcCcsCisgICAgICAgICAgICAnZG9tL1NoYWRvd0Nv
bnRlbnRTZWxlY3RvclF1ZXJ5LmgnLAogICAgICAgICAgICAgJ2RvbS9TaGFkb3dJbmNsdXNpb25T
ZWxlY3Rvci5jcHAnLAogICAgICAgICAgICAgJ2RvbS9TaGFkb3dJbmNsdXNpb25TZWxlY3Rvci5o
JywKICAgICAgICAgICAgICdkb20vU2hhZG93Um9vdC5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCAwYTA3ZDY3ZDU3MmJiNjcyNWRkYWQ2
Y2RiM2U1YTg1MTMzOGYzNDJhLi45ZWU0OWViYmFiYTRiOTQxMzA4MmMwYTU4MDJhZWViY2IwZDRh
YjY3IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpA
QCAtNTEwNTQsNiArNTEwNTQsMTQgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJ
CVJlbGF0aXZlUGF0aD0iLi5cZG9tXFNoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmNwcCIKKwkJ
CQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXFNoYWRv
d0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxTaGFkb3dJbmNsdXNpb25TZWxlY3Rvci5jcHAiCiAJCQkJ
PgogCQkJCTxGaWxlQ29uZmlndXJhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGM0NjZlYzZkNWZjYmNjZGMwN2E5YzFmOThk
Y2E0OWI1MGZmZDgzYTUuLmI2ZGQ1ZmY1NzY2YmVmZmUwYzcxZmQ4YzI3MDgyNGM2YzFkNjA5N2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTE1NTgsNiArMTU1OCw4IEBACiAJCTUzQzgyOThFMTNEOEQ5MjcwMERFMkRFQiAvKiBS
ZW5kZXJGbGV4aWJsZUJveC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTNDODI5OEMxM0Q4RDkyNzAwREUyREVCIC8qIFJlbmRlckZsZXhpYmxlQm94Lmgg
Ki87IH07CiAJCTU1MEEwQkM5MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1MEEwQkM3MDg1
RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmNwcCAqLzsgfTsKIAkJNTUwQTBCQ0EwODVG
NjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1MEEwQkM4MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZp
ZWROYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJNTcwREJBODExNEI1ODA0OTAwREFFRkEwIC8qIFNoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MERC
N0E4MTRCNTY5NkEwMERBRUZBMCAvKiBTaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeS5jcHAgKi87
IH07CisJCTU3MERCQTgyMTRCNTgwNEIwMERBRUZBMCAvKiBTaGFkb3dDb250ZW50U2VsZWN0b3JR
dWVyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcw
REI3QTkxNEI1Njk2QTAwREFFRkEwIC8qIFNoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmggKi87
IH07CiAJCTU5MDVBREJGMTMwMkYzQ0UwMEYxMTZERiAvKiBYTUxUcmVlVmlld2VyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU5MDVBREJEMTMwMkYz
Q0UwMEYxMTZERiAvKiBYTUxUcmVlVmlld2VyLmNwcCAqLzsgfTsKIAkJNTkwNUFEQzAxMzAyRjND
RTAwRjExNkRGIC8qIFhNTFRyZWVWaWV3ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDU5MDVBREJFMTMwMkYzQ0UwMEYxMTZERiAvKiBYTUxUcmVlVmll
d2VyLmggKi87IH07CiAJCTU5MEUxQjQ5MTFFNEVGNEIwMDY5Rjc4NCAvKiBEZXZpY2VPcmllbnRh
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTkw
RTFCNDgxMUU0RUY0QjAwNjlGNzg0IC8qIERldmljZU9yaWVudGF0aW9uLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTg4MzcsNiArODgzOSw4IEBA
CiAJCTUzQzgyOThDMTNEOEQ5MjcwMERFMkRFQiAvKiBSZW5kZXJGbGV4aWJsZUJveC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJGbGV4aWJsZUJveC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1NTBBMEJDNzA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlm
aWVkTmFtZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBRdWFsaWZpZWROYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFi
V2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCTU1MEEwQkM4MDg1RjYwMzkwMDczNTNENiAv
KiBRdWFsaWZpZWROYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFF1YWxpZmllZE5hbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFi
V2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CisJCTU3MERCN0E4MTRCNTY5NkEwMERBRUZBMCAv
KiBTaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBTaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTU3MERCN0E5MTRCNTY5NkEwMERBRUZBMCAvKiBTaGFkb3dDb250
ZW50U2VsZWN0b3JRdWVyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFk
b3dDb250ZW50U2VsZWN0b3JRdWVyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
OTA1QURCRDEzMDJGM0NFMDBGMTE2REYgLyogWE1MVHJlZVZpZXdlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBYTUxUcmVlVmlld2VyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTkwNUFEQkUxMzAyRjNDRTAwRjExNkRGIC8qIFhNTFRyZWVWaWV3
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWE1MVHJlZVZpZXdlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1OTBFMUI0ODExRTRFRjRCMDA2OUY3ODQgLyog
RGV2aWNlT3JpZW50YXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGV2
aWNlT3JpZW50YXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxNDI5LDYg
KzIxNDMzLDggQEAKIAkJCQlFNDUzMjJBQTE0MENFMjY3MDA1QTBGOTIgLyogU2VsZWN0b3JRdWVy
eS5oICovLAogCQkJCUE3NjZDRjhCMTM4MTBFMEMwMDExQTBCMyAvKiBTaGFkb3dDb250ZW50RWxl
bWVudC5jcHAgKi8sCiAJCQkJQTc0QzJEM0IxMzgxMUUwRDAwRjgzNTcyIC8qIFNoYWRvd0NvbnRl
bnRFbGVtZW50LmggKi8sCisJCQkJNTcwREI3QTgxNEI1Njk2QTAwREFFRkEwIC8qIFNoYWRvd0Nv
bnRlbnRTZWxlY3RvclF1ZXJ5LmNwcCAqLywKKwkJCQk1NzBEQjdBOTE0QjU2OTZBMDBEQUVGQTAg
LyogU2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnkuaCAqLywKIAkJCQlBNzFDMzBCNjEzODEyNjVF
MDBEQkMzNTEgLyogU2hhZG93SW5jbHVzaW9uU2VsZWN0b3IuY3BwICovLAogCQkJCUE3MUMzMEI3
MTM4MTI2NUUwMERCQzM1MSAvKiBTaGFkb3dJbmNsdXNpb25TZWxlY3Rvci5oICovLAogCQkJCUE2
RDE2OTYxMTM0NkI0OUIwMDBFQjc3MCAvKiBTaGFkb3dSb290LmNwcCAqLywKQEAgLTI0MjgzLDYg
KzI0Mjg5LDcgQEAKIAkJCQk0OTg3NzBFOTEyNDJDNTM1MDAyMjI2QkEgLyogU2hhZGVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjNERDQ1MDEyRjVFQTFCMDAwRDkxOTAgLyogU2hhZG93Qmx1ci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTc0QzJEM0MxMzgxMUUwRDAwRjgzNTcyIC8qIFNoYWRvd0Nv
bnRlbnRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk1NzBEQkE4MjE0QjU4MDRCMDBEQUVG
QTAgLyogU2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
NUVCOEM0MEU4MjAzMUIwMEIyNTk2NSAvKiBTaGFkb3dEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBNzFDMzBCOTEzODEyNjVFMDBEQkMzNTEgLyogU2hhZG93SW5jbHVzaW9uU2VsZWN0b3IuaCBp
biBIZWFkZXJzICovLAogCQkJCUE2RDE2OTY0MTM0NkI0QzEwMDBFQjc3MCAvKiBTaGFkb3dSb290
LmggaW4gSGVhZGVycyAqLywKQEAgLTI3MzA4LDYgKzI3MzE1LDcgQEAKIAkJCQk0OTg3NzBFODEy
NDJDNTM1MDAyMjI2QkEgLyogU2hhZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGM0RENDRG
MTJGNUVBMUIwMDBEOTE5MCAvKiBTaGFkb3dCbHVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3
NjZDRjhDMTM4MTBFMEMwMDExQTBCMyAvKiBTaGFkb3dDb250ZW50RWxlbWVudC5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQk1NzBEQkE4MTE0QjU4MDQ5MDBEQUVGQTAgLyogU2hhZG93Q29udGVudFNl
bGVjdG9yUXVlcnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM1RUI4QzMwRTgyMDMxQjAwQjI1
OTY1IC8qIFNoYWRvd0RhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTcxQzMwQjgxMzgxMjY1
RTAwREJDMzUxIC8qIFNoYWRvd0luY2x1c2lvblNlbGVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUE2RDE2OTYyMTM0NkI0OUIwMDBFQjc3MCAvKiBTaGFkb3dSb290LmNwcCBpbiBTb3VyY2Vz
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RPTUFsbEluT25lLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9ET01BbGxJbk9uZS5jcHAKaW5kZXggZDBiY2VjYWEyZDA4ZDEyMWNl
MzhlMTE0Y2U3N2YyZDgzMzU3ZmE0OC4uOTFhMGJlOTk2ZGM2NGM5NmMxNGYxZjU0MTU3YWMwMGM1
MzE4M2Q5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RPTUFsbEluT25lLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NQWxsSW5PbmUuY3BwCkBAIC0xMTMsNiArMTEzLDcg
QEAKICNpbmNsdWRlICJTZWN1cml0eUNvbnRleHQuY3BwIgogI2luY2x1ZGUgIlNlbGVjdG9yUXVl
cnkuY3BwIgogI2luY2x1ZGUgIlNoYWRvd0NvbnRlbnRFbGVtZW50LmNwcCIKKyNpbmNsdWRlICJT
aGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeS5jcHAiCiAjaW5jbHVkZSAiU2hhZG93SW5jbHVzaW9u
U2VsZWN0b3IuY3BwIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuY3BwIgogI2luY2x1ZGUgIlNwYWNl
U3BsaXRTdHJpbmcuY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9y
UXVlcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9yUXVlcnkuY3BwCmluZGV4IDVk
ZmYwM2NiNzM2MTU0NWVmNWVlZDhmODcxODhmMGVlZTNlZDQyYTguLjFhOTBmODJiYWJhNTZhZjg5
NzA1MWZiNGM2ZWRjMzdjOTY3MGRmNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9T
ZWxlY3RvclF1ZXJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0b3JRdWVyeS5j
cHAKQEAgLTMzLDI1ICszMyw0OCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNlbGVjdG9y
UXVlcnk6OlNlbGVjdG9yUXVlcnkoTm9kZSogcm9vdE5vZGUsIGNvbnN0IENTU1NlbGVjdG9yTGlz
dCYgc2VsZWN0b3JMaXN0KQotICAgIDogbV9yb290Tm9kZShyb290Tm9kZSkKLSAgICAsIG1fc2Vs
ZWN0b3JDaGVja2VyKHJvb3ROb2RlLT5kb2N1bWVudCgpLCAhcm9vdE5vZGUtPmRvY3VtZW50KCkt
PmluUXVpcmtzTW9kZSgpKQorU2VsZWN0b3JEYXRhTGlzdDo6U2VsZWN0b3JEYXRhTGlzdCgpCit7
Cit9CisKK1NlbGVjdG9yRGF0YUxpc3Q6OlNlbGVjdG9yRGF0YUxpc3QoY29uc3QgQ1NTU2VsZWN0
b3JMaXN0JiBzZWxlY3Rvckxpc3QpCit7CisgICAgaW5pdGlhbGl6ZShzZWxlY3Rvckxpc3QpOwor
fQorCit2b2lkIFNlbGVjdG9yRGF0YUxpc3Q6OmluaXRpYWxpemUoY29uc3QgQ1NTU2VsZWN0b3JM
aXN0JiBzZWxlY3Rvckxpc3QpCiB7CisgICAgQVNTRVJUKG1fc2VsZWN0b3JzLmlzRW1wdHkoKSk7
CisKICAgICBmb3IgKENTU1NlbGVjdG9yKiBzZWxlY3RvciA9IHNlbGVjdG9yTGlzdC5maXJzdCgp
OyBzZWxlY3Rvcjsgc2VsZWN0b3IgPSBDU1NTZWxlY3Rvckxpc3Q6Om5leHQoc2VsZWN0b3IpKQog
ICAgICAgICBtX3NlbGVjdG9ycy5hcHBlbmQoU2VsZWN0b3JEYXRhKHNlbGVjdG9yLCBTZWxlY3Rv
ckNoZWNrZXI6OmlzRmFzdENoZWNrYWJsZVNlbGVjdG9yKHNlbGVjdG9yKSkpOwogfQotICAgIAot
UGFzc1JlZlB0cjxOb2RlTGlzdD4gU2VsZWN0b3JRdWVyeTo6cXVlcnlBbGwoKSBjb25zdAorCiti
b29sIFNlbGVjdG9yRGF0YUxpc3Q6Om1hdGNoZXMoY29uc3QgU2VsZWN0b3JDaGVja2VyJiBzZWxl
Y3RvckNoZWNrZXIsIE5vZGUqIHRhcmdldE5vZGUpIGNvbnN0Cit7CisgICAgQVNTRVJUKHRhcmdl
dE5vZGUgJiYgdGFyZ2V0Tm9kZS0+aXNFbGVtZW50Tm9kZSgpKTsKKworICAgIHVuc2lnbmVkIHNl
bGVjdG9yQ291bnQgPSBtX3NlbGVjdG9ycy5zaXplKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IHNlbGVjdG9yQ291bnQ7ICsraSkgeworICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0g
c3RhdGljX2Nhc3Q8RWxlbWVudCo+KHRhcmdldE5vZGUpOworICAgICAgICBpZiAoc2VsZWN0b3JD
aGVja2VyLmNoZWNrU2VsZWN0b3IobV9zZWxlY3RvcnNbaV0uc2VsZWN0b3IsIGVsZW1lbnQsIG1f
c2VsZWN0b3JzW2ldLmlzRmFzdENoZWNrYWJsZSkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK1Bhc3NSZWZQdHI8Tm9kZUxpc3Q+IFNl
bGVjdG9yRGF0YUxpc3Q6OnF1ZXJ5QWxsKGNvbnN0IFNlbGVjdG9yQ2hlY2tlciYgc2VsZWN0b3JD
aGVja2VyLCBOb2RlKiByb290Tm9kZSkgY29uc3QKIHsKICAgICBWZWN0b3I8UmVmUHRyPE5vZGU+
ID4gcmVzdWx0OwotICAgIGV4ZWN1dGU8ZmFsc2U+KHJlc3VsdCk7CisgICAgZXhlY3V0ZTxmYWxz
ZT4oc2VsZWN0b3JDaGVja2VyLCByb290Tm9kZSwgcmVzdWx0KTsKICAgICByZXR1cm4gU3RhdGlj
Tm9kZUxpc3Q6OmFkb3B0KHJlc3VsdCk7CiB9CiAKLVBhc3NSZWZQdHI8RWxlbWVudD4gU2VsZWN0
b3JRdWVyeTo6cXVlcnlGaXJzdCgpIGNvbnN0IAoteyAKK1Bhc3NSZWZQdHI8RWxlbWVudD4gU2Vs
ZWN0b3JEYXRhTGlzdDo6cXVlcnlGaXJzdChjb25zdCBTZWxlY3RvckNoZWNrZXImIHNlbGVjdG9y
Q2hlY2tlciwgTm9kZSogcm9vdE5vZGUpIGNvbnN0Cit7CiAgICAgVmVjdG9yPFJlZlB0cjxOb2Rl
PiA+IHJlc3VsdDsKLSAgICBleGVjdXRlPHRydWU+KHJlc3VsdCk7CisgICAgZXhlY3V0ZTx0cnVl
PihzZWxlY3RvckNoZWNrZXIsIHJvb3ROb2RlLCByZXN1bHQpOwogICAgIGlmIChyZXN1bHQuaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm4gMDsKICAgICBBU1NFUlQocmVzdWx0LnNpemUoKSA9PSAx
KTsKQEAgLTU5LDcgKzgyLDcgQEAgUGFzc1JlZlB0cjxFbGVtZW50PiBTZWxlY3RvclF1ZXJ5Ojpx
dWVyeUZpcnN0KCkgY29uc3QKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KHJlc3Vs
dC5maXJzdCgpLmdldCgpKTsKIH0KIAotYm9vbCBTZWxlY3RvclF1ZXJ5OjpjYW5Vc2VJZExvb2t1
cCgpIGNvbnN0Citib29sIFNlbGVjdG9yRGF0YUxpc3Q6OmNhblVzZUlkTG9va3VwKE5vZGUqIHJv
b3ROb2RlKSBjb25zdAogewogICAgIC8vIFdlIG5lZWQgdG8gcmV0dXJuIHRoZSBtYXRjaGVzIGlu
IGRvY3VtZW50IG9yZGVyLiBUbyB1c2UgaWQgbG9va3VwIHdoaWxlIHRoZXJlIGlzIHBvc3NpYmxp
dHkgb2YgbXVsdGlwbGUgbWF0Y2hlcwogICAgIC8vIHdlIHdvdWxkIG5lZWQgdG8gc29ydCB0aGUg
cmVzdWx0cy4gRm9yIG5vdywganVzdCB0cmF2ZXJzZSB0aGUgZG9jdW1lbnQgaW4gdGhhdCBjYXNl
LgpAQCAtNjcsMzcgKzkwLDM3IEBAIGJvb2wgU2VsZWN0b3JRdWVyeTo6Y2FuVXNlSWRMb29rdXAo
KSBjb25zdAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKG1fc2VsZWN0b3JzWzBdLnNl
bGVjdG9yLT5tX21hdGNoICE9IENTU1NlbGVjdG9yOjpJZCkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIGlmICghbV9yb290Tm9kZS0+aW5Eb2N1bWVudCgpKQorICAgIGlmICghcm9vdE5vZGUt
PmluRG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChtX3Jvb3ROb2Rl
LT5kb2N1bWVudCgpLT5pblF1aXJrc01vZGUoKSkKKyAgICBpZiAocm9vdE5vZGUtPmRvY3VtZW50
KCktPmluUXVpcmtzTW9kZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKG1fcm9v
dE5vZGUtPmRvY3VtZW50KCktPmNvbnRhaW5zTXVsdGlwbGVFbGVtZW50c1dpdGhJZChtX3NlbGVj
dG9yc1swXS5zZWxlY3Rvci0+dmFsdWUoKSkpCisgICAgaWYgKHJvb3ROb2RlLT5kb2N1bWVudCgp
LT5jb250YWluc011bHRpcGxlRWxlbWVudHNXaXRoSWQobV9zZWxlY3RvcnNbMF0uc2VsZWN0b3It
PnZhbHVlKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
IHRlbXBsYXRlIDxib29sIGZpcnN0TWF0Y2hPbmx5Pgotdm9pZCBTZWxlY3RvclF1ZXJ5OjpleGVj
dXRlKFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiYgbWF0Y2hlZEVsZW1lbnRzKSBjb25zdAordm9pZCBT
ZWxlY3RvckRhdGFMaXN0OjpleGVjdXRlKGNvbnN0IFNlbGVjdG9yQ2hlY2tlciYgc2VsZWN0b3JD
aGVja2VyLCBOb2RlKiByb290Tm9kZSwgVmVjdG9yPFJlZlB0cjxOb2RlPiA+JiBtYXRjaGVkRWxl
bWVudHMpIGNvbnN0CiB7Ci0gICAgaWYgKGNhblVzZUlkTG9va3VwKCkpIHsKKyAgICBpZiAoY2Fu
VXNlSWRMb29rdXAocm9vdE5vZGUpKSB7CiAgICAgICAgIEFTU0VSVChtX3NlbGVjdG9ycy5zaXpl
KCkgPT0gMSk7CiAgICAgICAgIENTU1NlbGVjdG9yKiBzZWxlY3RvciA9IG1fc2VsZWN0b3JzWzBd
LnNlbGVjdG9yOwotICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gbV9yb290Tm9kZS0+ZG9jdW1l
bnQoKS0+Z2V0RWxlbWVudEJ5SWQoc2VsZWN0b3ItPnZhbHVlKCkpOwotICAgICAgICBpZiAoIWVs
ZW1lbnQgfHwgIShtX3Jvb3ROb2RlLT5pc0RvY3VtZW50Tm9kZSgpIHx8IGVsZW1lbnQtPmlzRGVz
Y2VuZGFudE9mKG1fcm9vdE5vZGUpKSkKKyAgICAgICAgRWxlbWVudCogZWxlbWVudCA9IHJvb3RO
b2RlLT5kb2N1bWVudCgpLT5nZXRFbGVtZW50QnlJZChzZWxlY3Rvci0+dmFsdWUoKSk7CisgICAg
ICAgIGlmICghZWxlbWVudCB8fCAhKHJvb3ROb2RlLT5pc0RvY3VtZW50Tm9kZSgpIHx8IGVsZW1l
bnQtPmlzRGVzY2VuZGFudE9mKHJvb3ROb2RlKSkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIGlmIChtX3NlbGVjdG9yQ2hlY2tlci5jaGVja1NlbGVjdG9yKHNlbGVjdG9yLCBlbGVtZW50
LCBtX3NlbGVjdG9yc1swXS5pc0Zhc3RDaGVja2FibGUpKQorICAgICAgICBpZiAoc2VsZWN0b3JD
aGVja2VyLmNoZWNrU2VsZWN0b3IobV9zZWxlY3RvcnNbMF0uc2VsZWN0b3IsIGVsZW1lbnQsIG1f
c2VsZWN0b3JzWzBdLmlzRmFzdENoZWNrYWJsZSkpCiAgICAgICAgICAgICBtYXRjaGVkRWxlbWVu
dHMuYXBwZW5kKGVsZW1lbnQpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAorCiAgICAg
dW5zaWduZWQgc2VsZWN0b3JDb3VudCA9IG1fc2VsZWN0b3JzLnNpemUoKTsKLSAgICAKLSAgICBO
b2RlKiBuID0gbV9yb290Tm9kZS0+Zmlyc3RDaGlsZCgpOworCisgICAgTm9kZSogbiA9IHJvb3RO
b2RlLT5maXJzdENoaWxkKCk7CiAgICAgd2hpbGUgKG4pIHsKICAgICAgICAgaWYgKG4tPmlzRWxl
bWVudE5vZGUoKSkgewogICAgICAgICAgICAgRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0
PEVsZW1lbnQqPihuKTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzZWxl
Y3RvckNvdW50OyArK2kpIHsKLSAgICAgICAgICAgICAgICBpZiAobV9zZWxlY3RvckNoZWNrZXIu
Y2hlY2tTZWxlY3RvcihtX3NlbGVjdG9yc1tpXS5zZWxlY3RvciwgZWxlbWVudCwgbV9zZWxlY3Rv
cnNbaV0uaXNGYXN0Q2hlY2thYmxlKSkgeworICAgICAgICAgICAgICAgIGlmIChzZWxlY3RvckNo
ZWNrZXIuY2hlY2tTZWxlY3RvcihtX3NlbGVjdG9yc1tpXS5zZWxlY3RvciwgZWxlbWVudCwgbV9z
ZWxlY3RvcnNbaV0uaXNGYXN0Q2hlY2thYmxlKSkgewogICAgICAgICAgICAgICAgICAgICBtYXRj
aGVkRWxlbWVudHMuYXBwZW5kKGVsZW1lbnQpOwogICAgICAgICAgICAgICAgICAgICBpZiAoZmly
c3RNYXRjaE9ubHkpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0xMTEsMTEg
KzEzNCwyOCBAQCB2b2lkIFNlbGVjdG9yUXVlcnk6OmV4ZWN1dGUoVmVjdG9yPFJlZlB0cjxOb2Rl
PiA+JiBtYXRjaGVkRWxlbWVudHMpIGNvbnN0CiAgICAgICAgIH0KICAgICAgICAgd2hpbGUgKCFu
LT5uZXh0U2libGluZygpKSB7CiAgICAgICAgICAgICBuID0gbi0+cGFyZW50Tm9kZSgpOwotICAg
ICAgICAgICAgaWYgKG4gPT0gbV9yb290Tm9kZSkKKyAgICAgICAgICAgIGlmIChuID09IHJvb3RO
b2RlKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBuID0gbi0+
bmV4dFNpYmxpbmcoKTsKICAgICB9CiB9CiAKK1NlbGVjdG9yUXVlcnk6OlNlbGVjdG9yUXVlcnko
Tm9kZSogcm9vdE5vZGUsIGNvbnN0IENTU1NlbGVjdG9yTGlzdCYgc2VsZWN0b3JMaXN0KQorICAg
IDogbV9yb290Tm9kZShyb290Tm9kZSkKKyAgICAsIG1fc2VsZWN0b3JDaGVja2VyKHJvb3ROb2Rl
LT5kb2N1bWVudCgpLCAhcm9vdE5vZGUtPmRvY3VtZW50KCktPmluUXVpcmtzTW9kZSgpKQorICAg
ICwgbV9zZWxlY3RvcnMoc2VsZWN0b3JMaXN0KQoreworfQorCitQYXNzUmVmUHRyPE5vZGVMaXN0
PiBTZWxlY3RvclF1ZXJ5OjpxdWVyeUFsbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2VsZWN0
b3JzLnF1ZXJ5QWxsKG1fc2VsZWN0b3JDaGVja2VyLCBtX3Jvb3ROb2RlKTsKK30KKworUGFzc1Jl
ZlB0cjxFbGVtZW50PiBTZWxlY3RvclF1ZXJ5OjpxdWVyeUZpcnN0KCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9zZWxlY3RvcnMucXVlcnlGaXJzdChtX3NlbGVjdG9yQ2hlY2tlciwgbV9yb290Tm9k
ZSk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0b3JRdWVyeS5oCmluZGV4IGI5Njk4MjM3ODQz
YmJjNWVlZjlhYjU3MTRjMmQ2NGVmMWI4ODE5NzIuLmQwMjJiNGU0YzlhYmQ1YjIzNWE3MjIzNDdm
ZjNjM2E4MTE4MmFhYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1
ZXJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9yUXVlcnkuaApAQCAtMzcsMjgg
KzM3LDQ0IEBAIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBDU1NTZWxlY3RvcjsKIGNsYXNzIENTU1Nl
bGVjdG9yTGlzdDsKIAotY2xhc3MgU2VsZWN0b3JRdWVyeSB7Ci0gICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoU2VsZWN0b3JRdWVyeSk7CitjbGFzcyBTZWxlY3RvckRhdGFMaXN0IHsKIHB1YmxpYzoK
LSAgICBTZWxlY3RvclF1ZXJ5KE5vZGUqIHJvb3ROb2RlLCBjb25zdCBDU1NTZWxlY3Rvckxpc3Qm
KTsKLSAgICAKLSAgICBQYXNzUmVmUHRyPE5vZGVMaXN0PiBxdWVyeUFsbCgpIGNvbnN0OwotICAg
IFBhc3NSZWZQdHI8RWxlbWVudD4gcXVlcnlGaXJzdCgpIGNvbnN0OworICAgIFNlbGVjdG9yRGF0
YUxpc3QoKTsKKyAgICBleHBsaWNpdCBTZWxlY3RvckRhdGFMaXN0KGNvbnN0IENTU1NlbGVjdG9y
TGlzdCYpOwogCi1wcml2YXRlOgotICAgIGJvb2wgY2FuVXNlSWRMb29rdXAoKSBjb25zdDsKKyAg
ICB2b2lkIGluaXRpYWxpemUoY29uc3QgQ1NTU2VsZWN0b3JMaXN0Jik7CiAKLSAgICB0ZW1wbGF0
ZSA8Ym9vbCBmaXJzdE1hdGNoT25seT4KLSAgICB2b2lkIGV4ZWN1dGUoVmVjdG9yPFJlZlB0cjxO
b2RlPiA+JikgY29uc3Q7Ci0gICAgCisgICAgaW50IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3Nl
bGVjdG9ycy5zaXplKCk7IH0KKworICAgIGJvb2wgbWF0Y2hlcyhjb25zdCBTZWxlY3RvckNoZWNr
ZXImLCBOb2RlKikgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gcXVlcnlBbGwoY29u
c3QgU2VsZWN0b3JDaGVja2VyJiwgTm9kZSogcm9vdE5vZGUpIGNvbnN0OworICAgIFBhc3NSZWZQ
dHI8RWxlbWVudD4gcXVlcnlGaXJzdChjb25zdCBTZWxlY3RvckNoZWNrZXImLCBOb2RlKiByb290
Tm9kZSkgY29uc3Q7CisKK3ByaXZhdGU6CiAgICAgc3RydWN0IFNlbGVjdG9yRGF0YSB7CiAgICAg
ICAgIFNlbGVjdG9yRGF0YShDU1NTZWxlY3Rvciogc2VsZWN0b3IsIGJvb2wgaXNGYXN0Q2hlY2th
YmxlKSA6IHNlbGVjdG9yKHNlbGVjdG9yKSwgaXNGYXN0Q2hlY2thYmxlKGlzRmFzdENoZWNrYWJs
ZSkgeyB9CiAgICAgICAgIENTU1NlbGVjdG9yKiBzZWxlY3RvcjsKICAgICAgICAgYm9vbCBpc0Zh
c3RDaGVja2FibGU7CiAgICAgfTsKLSAgICBOb2RlKiBtX3Jvb3ROb2RlOworCisgICAgYm9vbCBj
YW5Vc2VJZExvb2t1cChOb2RlKiByb290Tm9kZSkgY29uc3Q7CisgICAgdGVtcGxhdGUgPGJvb2wg
Zmlyc3RNYXRjaE9ubHk+CisgICAgdm9pZCBleGVjdXRlKGNvbnN0IFNlbGVjdG9yQ2hlY2tlciYs
IE5vZGUqIHJvb3ROb2RlLCBWZWN0b3I8UmVmUHRyPE5vZGU+ID4mKSBjb25zdDsKKwogICAgIFZl
Y3RvcjxTZWxlY3RvckRhdGE+IG1fc2VsZWN0b3JzOworfTsKKworY2xhc3MgU2VsZWN0b3JRdWVy
eSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2VsZWN0b3JRdWVyeSk7CitwdWJsaWM6Cisg
ICAgU2VsZWN0b3JRdWVyeShOb2RlKiByb290Tm9kZSwgY29uc3QgQ1NTU2VsZWN0b3JMaXN0Jik7
CisKKyAgICBQYXNzUmVmUHRyPE5vZGVMaXN0PiBxdWVyeUFsbCgpIGNvbnN0OworICAgIFBhc3NS
ZWZQdHI8RWxlbWVudD4gcXVlcnlGaXJzdCgpIGNvbnN0OworcHJpdmF0ZToKKyAgICBOb2RlKiBt
X3Jvb3ROb2RlOwogICAgIFNlbGVjdG9yQ2hlY2tlciBtX3NlbGVjdG9yQ2hlY2tlcjsKKyAgICBT
ZWxlY3RvckRhdGFMaXN0IG1fc2VsZWN0b3JzOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TaGFkb3dDb250ZW50RWxlbWVudC5jcHAKaW5kZXggZWNlZTZkMGM3ZWU3NmZkZDcyNWUyZmRj
Zjg3MmRkMmJiOTNjOTdiYi4uNzNhZDEwOWUwMWE1YjIyZTdiNDg1YzgxN2RlODAzZmVjZjEzYTc5
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Q29udGVudEVsZW1lbnQuY3BwCkBAIC0y
OCwyMSArMjgsMzEgQEAKICNpbmNsdWRlICJTaGFkb3dDb250ZW50RWxlbWVudC5oIgogCiAjaW5j
bHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiUXVhbGlmaWVkTmFtZS5oIgorI2luY2x1ZGUg
IlNoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmgiCiAjaW5jbHVkZSAiU2hhZG93SW5jbHVzaW9u
U2VsZWN0b3IuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCisjaW5jbHVkZSA8d3RmL1N0ZExp
YkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8U2hhZG93Q29u
dGVudEVsZW1lbnQ+IFNoYWRvd0NvbnRlbnRFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3Vt
ZW50KQorc3RhdGljIGNvbnN0IFF1YWxpZmllZE5hbWUmIHNlbGVjdEF0dHIoKQoreworICAgIERF
RklORV9TVEFUSUNfTE9DQUwoUXVhbGlmaWVkTmFtZSwgYXR0ciwgKG51bGxBdG9tLCAic2VsZWN0
IiwgSFRNTE5hbWVzOjp4aHRtbE5hbWVzcGFjZVVSSSkpOworICAgIHJldHVybiBhdHRyOworfQor
CitQYXNzUmVmUHRyPFNoYWRvd0NvbnRlbnRFbGVtZW50PiBTaGFkb3dDb250ZW50RWxlbWVudDo6
Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgQXRvbWljU3RyaW5nJiBzZWxlY3QpCiB7
CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChRdWFsaWZpZWROYW1lLCB0YWdOYW1lLCAobnVsbEF0
b20sICJ3ZWJraXRTaGFkb3dDb250ZW50IiwgSFRNTE5hbWVzOjpkaXZUYWcubmFtZXNwYWNlVVJJ
KCkpKTsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYWRvd0NvbnRlbnRFbGVtZW50KHRhZ05h
bWUsIGRvY3VtZW50KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFkb3dDb250ZW50RWxl
bWVudCh0YWdOYW1lLCBkb2N1bWVudCwgc2VsZWN0KSk7CiB9CiAKLVNoYWRvd0NvbnRlbnRFbGVt
ZW50OjpTaGFkb3dDb250ZW50RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBEb2N1
bWVudCogZG9jdW1lbnQpCitTaGFkb3dDb250ZW50RWxlbWVudDo6U2hhZG93Q29udGVudEVsZW1l
bnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBB
dG9taWNTdHJpbmcmIHNlbGVjdCkKICAgICA6IFN0eWxlZEVsZW1lbnQobmFtZSwgZG9jdW1lbnQs
IENyZWF0ZUhUTUxFbGVtZW50KQogICAgICwgbV9pbmNsdXNpb25zKGFkb3B0UHRyKG5ldyBTaGFk
b3dJbmNsdXNpb25MaXN0KCkpKQogeworICAgIHNldEF0dHJpYnV0ZShzZWxlY3RBdHRyKCksIHNl
bGVjdCk7CiB9CiAKIFNoYWRvd0NvbnRlbnRFbGVtZW50Ojp+U2hhZG93Q29udGVudEVsZW1lbnQo
KQpAQCAtNzYsMTAgKzg2LDkgQEAgdm9pZCBTaGFkb3dDb250ZW50RWxlbWVudDo6ZGV0YWNoKCkK
ICAgICBTdHlsZWRFbGVtZW50OjpkZXRhY2goKTsKIH0KIAotYm9vbCBTaGFkb3dDb250ZW50RWxl
bWVudDo6c2hvdWxkSW5jbHVkZShOb2RlKikKK2NvbnN0IEF0b21pY1N0cmluZyYgU2hhZG93Q29u
dGVudEVsZW1lbnQ6OnNlbGVjdCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0
dXJuIGdldEF0dHJpYnV0ZShzZWxlY3RBdHRyKCkpOwogfQogCi0KIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dDb250ZW50RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50LmgKaW5kZXggN2IzNjY2MjFiN2I5NjNhNDMwZmMxNDMw
OWJkNDY1ZWFlZGZhMDRhNC4uMDlmODM4NzMwYmMxY2Y4NGE0NjJiNGU3YjAxZTY1ZGRmNGRkZWRk
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50LmgKQEAgLTM2LDIz
ICszNiwyOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFNoYWRvd0NvbnRlbnRT
ZWxlY3RvclF1ZXJ5OwogY2xhc3MgU2hhZG93SW5jbHVzaW9uTGlzdDsKIAogLy8gTk9URTogQ3Vy
cmVudCBpbXBsZW1lbnRhdGlvbiBkb2Vzbid0IHN1cHBvcnQgZHluYW1pYyBpbnNlcnRpb24vZGVs
ZXRpb24gb2YgU2hhZG93Q29udGVudEVsZW1lbnQuCiAvLyBZb3Ugc2hvdWxkIGNyZWF0ZSBTaGFk
b3dDb250ZW50RWxlbWVudCBkdXJpbmcgdGhlIGhvc3QgY29uc3RydWN0aW9uLgogY2xhc3MgU2hh
ZG93Q29udGVudEVsZW1lbnQgOiBwdWJsaWMgU3R5bGVkRWxlbWVudCB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NSZWZQdHI8U2hhZG93Q29udGVudEVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCop
OworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNoYWRvd0NvbnRlbnRFbGVtZW50PiBjcmVhdGUoRG9j
dW1lbnQqLCBjb25zdCBBdG9taWNTdHJpbmcmIHNlbGVjdCk7CiAKICAgICB2aXJ0dWFsIH5TaGFk
b3dDb250ZW50RWxlbWVudCgpOwotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRJbmNsdWRlKE5vZGUq
KTsKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCk7CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaCgp
OwogCisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBzZWxlY3QoKSBjb25zdDsKKwogICAgIGNvbnN0
IFNoYWRvd0luY2x1c2lvbkxpc3QqIGluY2x1c2lvbnMoKSBjb25zdCB7IHJldHVybiBtX2luY2x1
c2lvbnMuZ2V0KCk7IH0KIAogcHJvdGVjdGVkOgotICAgIFNoYWRvd0NvbnRlbnRFbGVtZW50KGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOworICAgIC8vIEZJWE1FOiBDdXJyZW50bHkg
dGhpcyBjb25zdHJ1Y3RvciBhY2NlcHRzIHdpZGVyIHF1ZXJ5IHRoYW4gc2hhZG93IGRvbSBzcGVj
LgorICAgIC8vIEZvciBleGFtcGxlLCBhIHNlbGVjdG9yIHF1ZXJ5IHNob3VsZCBub3QgaW5jbHVk
ZSBjb250ZXh0dWFsIHNlbGVjdG9ycy4KKyAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTc1OTQ2CisgICAgU2hhZG93Q29udGVudEVsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIERvY3VtZW50KiwgY29uc3QgQXRvbWljU3RyaW5nJiBzZWxlY3QpOwog
CiBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBpc0NvbnRlbnRFbGVtZW50KCkgY29uc3QgeyBy
ZXR1cm4gdHJ1ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0NvbnRl
bnRTZWxlY3RvclF1ZXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dDb250ZW50U2Vs
ZWN0b3JRdWVyeS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjM5Yjg2NGJhZjIyZDAxMTY1ZTFhODk5YzliMjg1
ZjBkYzQ3M2UxNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dD
b250ZW50U2VsZWN0b3JRdWVyeS5jcHAKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisg
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJTaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeS5oIgorCisjaW5jbHVk
ZSAiQ1NTUGFyc2VyLmgiCisjaW5jbHVkZSAiQ1NTU2VsZWN0b3JMaXN0LmgiCisjaW5jbHVkZSAi
U2hhZG93Q29udGVudEVsZW1lbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitTaGFkb3dD
b250ZW50U2VsZWN0b3JRdWVyeTo6U2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnkoU2hhZG93Q29u
dGVudEVsZW1lbnQqIGVsZW1lbnQpCisgICAgOiBtX2NvbnRlbnRFbGVtZW50KGVsZW1lbnQpCisg
ICAgLCBtX3NlbGVjdG9yQ2hlY2tlcihlbGVtZW50LT5kb2N1bWVudCgpLCAhZWxlbWVudC0+ZG9j
dW1lbnQoKS0+aW5RdWlya3NNb2RlKCkpCit7CisgICAgbV9zZWxlY3RvckNoZWNrZXIuc2V0Q29s
bGVjdGluZ1J1bGVzT25seSh0cnVlKTsKKworICAgIGlmIChlbGVtZW50LT5zZWxlY3QoKS5pc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIENTU1BhcnNlciBwYXJzZXIodHJ1ZSk7Cisg
ICAgcGFyc2VyLnBhcnNlU2VsZWN0b3IoZWxlbWVudC0+c2VsZWN0KCksIGVsZW1lbnQtPmRvY3Vt
ZW50KCksIG1fc2VsZWN0b3JMaXN0KTsKKworICAgIG1fc2VsZWN0b3JzLmluaXRpYWxpemUobV9z
ZWxlY3Rvckxpc3QpOworfQorCitib29sIFNoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5OjptYXRj
aGVzKE5vZGUqIG5vZGUpIGNvbnN0Cit7CisgICAgQVNTRVJUKG5vZGUpOworICAgIGlmICghbm9k
ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgQVNTRVJUKG5vZGUtPnBhcmVudE5vZGUo
KSA9PSBtX2NvbnRlbnRFbGVtZW50LT5zaGFkb3dUcmVlUm9vdE5vZGUoKS0+c2hhZG93SG9zdCgp
KTsKKworICAgIGlmIChtX2NvbnRlbnRFbGVtZW50LT5zZWxlY3QoKS5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybiB0cnVlOworCisgICAgcmV0dXJuIG1fc2VsZWN0b3JzLm1hdGNoZXMobV9zZWxl
Y3RvckNoZWNrZXIsIG5vZGUpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vU2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnkuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFk
b3dDb250ZW50U2VsZWN0b3JRdWVyeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ1Njg3M2IzNDMwYzNhMmMyNDdh
MTgwYWU0ZGEzZGIxMDRmMDczMGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vU2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnkuaApAQCAtMCwwICsxLDY0IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3Ry
aWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBT
aGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeV9oCisjZGVmaW5lIFNoYWRvd0NvbnRlbnRTZWxlY3Rv
clF1ZXJ5X2gKKworI2luY2x1ZGUgIkNTU1NlbGVjdG9yTGlzdC5oIgorI2luY2x1ZGUgIlNlbGVj
dG9yQ2hlY2tlci5oIgorI2luY2x1ZGUgIlNlbGVjdG9yUXVlcnkuaCIKKyNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBEb2N1bWVudDsKK2NsYXNzIE5vZGU7CitjbGFzcyBTaGFkb3dDb250ZW50RWxl
bWVudDsKKworY2xhc3MgU2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnkgeworICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKFNoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5KTsKK3B1YmxpYzoKKyAgICBl
eHBsaWNpdCBTaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeShTaGFkb3dDb250ZW50RWxlbWVudCop
OworCisgICAgYm9vbCBtYXRjaGVzKE5vZGUqKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBTaGFk
b3dDb250ZW50RWxlbWVudCogbV9jb250ZW50RWxlbWVudDsKKyAgICBTZWxlY3RvckRhdGFMaXN0
IG1fc2VsZWN0b3JzOworICAgIENTU1NlbGVjdG9yTGlzdCBtX3NlbGVjdG9yTGlzdDsKKyAgICBT
ZWxlY3RvckNoZWNrZXIgbV9zZWxlY3RvckNoZWNrZXI7Cit9OworCit9CisKKworCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dJbmNsdXNpb25TZWxlY3Rvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93SW5jbHVzaW9uU2VsZWN0b3IuY3BwCmluZGV4
IDk4NDFmNTU2NDg4N2M4OTYzNDUzNzQ5ZjIzNzE2NmNhMmU0NWUxMDUuLjU3ZTlkNDJiZTUxYjVl
NDUyYzRkNDA1NGUyMGJhNGM3Yjg1NTQ4YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TaGFkb3dJbmNsdXNpb25TZWxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1No
YWRvd0luY2x1c2lvblNlbGVjdG9yLmNwcApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIlNo
YWRvd0luY2x1c2lvblNlbGVjdG9yLmgiCiAKICNpbmNsdWRlICJTaGFkb3dDb250ZW50RWxlbWVu
dC5oIgorI2luY2x1ZGUgIlNoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmgiCiAjaW5jbHVkZSAi
U2hhZG93Um9vdC5oIgogCiAKQEAgLTExMSwxMSArMTEyLDEyIEBAIHZvaWQgU2hhZG93SW5jbHVz
aW9uU2VsZWN0b3I6OnNlbGVjdChTaGFkb3dDb250ZW50RWxlbWVudCogY29udGVudEVsZW1lbnQs
IFNoYWRvCiB7CiAgICAgQVNTRVJUKGluY2x1c2lvbnMtPmlzRW1wdHkoKSk7CiAKKyAgICBTaGFk
b3dDb250ZW50U2VsZWN0b3JRdWVyeSBxdWVyeShjb250ZW50RWxlbWVudCk7CiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBtX2NhbmRpZGF0ZXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgTm9k
ZSogY2hpbGQgPSBtX2NhbmRpZGF0ZXNbaV0uZ2V0KCk7CiAgICAgICAgIGlmICghY2hpbGQpCiAg
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKCFjb250ZW50RWxlbWVudC0+c2hvdWxk
SW5jbHVkZShjaGlsZCkpCisgICAgICAgIGlmICghcXVlcnkubWF0Y2hlcyhjaGlsZCkpCiAgICAg
ICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBSZWZQdHI8U2hhZG93SW5jbHVzaW9uPiBpbmNs
dXNpb24gPSBTaGFkb3dJbmNsdXNpb246OmNyZWF0ZShjb250ZW50RWxlbWVudCwgY2hpbGQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0luY2x1c2lvblNlbGVjdG9yLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93SW5jbHVzaW9uU2VsZWN0b3IuaAppbmRleCBmMWFk
YWVlM2Y1NDNhODFjM2ZlZmJmYzQ2ZTAxYjFmZDdmM2IwZThmLi5kMWE4NzE3NDQxYjE5YzJkNmFm
YTBlOGYzNDA3NTg0MTAyMThiNGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hh
ZG93SW5jbHVzaW9uU2VsZWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93SW5j
bHVzaW9uU2VsZWN0b3IuaApAQCAtMTM3LDcgKzEzNyw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGRp
ZFNlbGVjdCgpOwogICAgIGJvb2wgaGFzQ2FuZGlkYXRlcygpIGNvbnN0IHsgcmV0dXJuICFtX2Nh
bmRpZGF0ZXMuaXNFbXB0eSgpOyB9CiAKLQogcHJpdmF0ZToKICAgICB2b2lkIHJlbW92ZUZyb21T
ZXQoU2hhZG93SW5jbHVzaW9uTGlzdCopOwogICAgIHZvaWQgYWRkVG9TZXQoU2hhZG93SW5jbHVz
aW9uTGlzdCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0Vs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuY3BwCmlu
ZGV4IGZhZDlhZjgwNDQxNDU3MGMxZTc2Y2EyOGM1ZWI1YjE2MjdjNzAyMjAuLmZjODk1MDk3YjFh
ZTk2YTM4YWI5YjY1MTc5YzM1MTFjOGEwZDIyNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxEZXRhaWxzRWxlbWVudC5jcHAKQEAgLTM2LDE3ICszNiwyMSBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKK3N0YXRpYyBjb25zdCBBdG9taWNT
dHJpbmcmIHN1bW1hcnlRdWVyeVNlbGVjdG9yKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KEF0b21pY1N0cmluZywgc2VsZWN0b3IsICgic3VtbWFyeTpmaXJzdC1vZi10eXBlIikpOworICAg
IHJldHVybiBzZWxlY3RvcjsKK307CisKIGNsYXNzIERldGFpbHNDb250ZW50RWxlbWVudCA6IHB1
YmxpYyBTaGFkb3dDb250ZW50RWxlbWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8RGV0YWlsc0NvbnRlbnRFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQqKTsKIAogcHJpdmF0ZToK
ICAgICBEZXRhaWxzQ29udGVudEVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQotICAgICAgICA6
IFNoYWRvd0NvbnRlbnRFbGVtZW50KEhUTUxOYW1lczo6ZGl2VGFnLCBkb2N1bWVudCkKKyAgICAg
ICAgOiBTaGFkb3dDb250ZW50RWxlbWVudChIVE1MTmFtZXM6OmRpdlRhZywgZG9jdW1lbnQsIFdU
Rjo6ZW1wdHlBdG9tKQogICAgIHsKICAgICB9Ci0KLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSW5j
bHVkZShOb2RlKik7CiB9OwogCiBQYXNzUmVmUHRyPERldGFpbHNDb250ZW50RWxlbWVudD4gRGV0
YWlsc0NvbnRlbnRFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtNTQsMjQg
KzU4LDE1IEBAIFBhc3NSZWZQdHI8RGV0YWlsc0NvbnRlbnRFbGVtZW50PiBEZXRhaWxzQ29udGVu
dEVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBEZXRhaWxzQ29udGVudEVsZW1lbnQoZG9jdW1lbnQpKTsKIH0KIAotYm9vbCBEZXRhaWxzQ29u
dGVudEVsZW1lbnQ6OnNob3VsZEluY2x1ZGUoTm9kZSogbm9kZSkKLXsKLSAgICBIVE1MRGV0YWls
c0VsZW1lbnQqIGRldGFpbHMgPSBzdGF0aWNfY2FzdDxIVE1MRGV0YWlsc0VsZW1lbnQqPihzaGFk
b3dBbmNlc3Rvck5vZGUoKSk7Ci0gICAgcmV0dXJuIGRldGFpbHMtPm1haW5TdW1tYXJ5KCkgIT0g
bm9kZTsKLX0KLQotCiBjbGFzcyBEZXRhaWxzU3VtbWFyeUVsZW1lbnQgOiBwdWJsaWMgU2hhZG93
Q29udGVudEVsZW1lbnQgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPERldGFpbHNT
dW1tYXJ5RWxlbWVudD4gY3JlYXRlKERvY3VtZW50Kik7CiAKIHByaXZhdGU6CiAgICAgRGV0YWls
c1N1bW1hcnlFbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCkKLSAgICAgICAgOiBTaGFkb3dDb250
ZW50RWxlbWVudChIVE1MTmFtZXM6OmRpdlRhZywgZG9jdW1lbnQpCisgICAgICAgIDogU2hhZG93
Q29udGVudEVsZW1lbnQoSFRNTE5hbWVzOjpkaXZUYWcsIGRvY3VtZW50LCBzdW1tYXJ5UXVlcnlT
ZWxlY3RvcigpKQogICAgIHsKICAgICB9Ci0KLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSW5jbHVk
ZShOb2RlKik7CiB9OwogCiBQYXNzUmVmUHRyPERldGFpbHNTdW1tYXJ5RWxlbWVudD4gRGV0YWls
c1N1bW1hcnlFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtNzksMTMgKzc0
LDYgQEAgUGFzc1JlZlB0cjxEZXRhaWxzU3VtbWFyeUVsZW1lbnQ+IERldGFpbHNTdW1tYXJ5RWxl
bWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWUKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERl
dGFpbHNTdW1tYXJ5RWxlbWVudChkb2N1bWVudCkpOwogfQogCi1ib29sIERldGFpbHNTdW1tYXJ5
RWxlbWVudDo6c2hvdWxkSW5jbHVkZShOb2RlKiBub2RlKQotewotICAgIEhUTUxEZXRhaWxzRWxl
bWVudCogZGV0YWlscyA9IHN0YXRpY19jYXN0PEhUTUxEZXRhaWxzRWxlbWVudCo+KHNoYWRvd0Fu
Y2VzdG9yTm9kZSgpKTsKLSAgICByZXR1cm4gZGV0YWlscy0+bWFpblN1bW1hcnkoKSA9PSBub2Rl
OwotfQotCi0KIFBhc3NSZWZQdHI8SFRNTERldGFpbHNFbGVtZW50PiBIVE1MRGV0YWlsc0VsZW1l
bnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1l
bnQpCiB7CiAgICAgUmVmUHRyPEhUTUxEZXRhaWxzRWxlbWVudD4gcmVzdWx0ID0gYWRvcHRSZWYo
bmV3IEhUTUxEZXRhaWxzRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3VtbWFyeUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MU3VtbWFyeUVsZW1lbnQuY3BwCmluZGV4IGVjZjEwODVjZTMwZmUwZjNiOTNl
MWNkZTI1ZWI1NDRmYTdkYjRmNGIuLmNjOGMwNTk4YmZlMWY4ZmQ2ZDYxYmZlZjE1MmU0MjIwMzZl
NTVkYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN1bW1hcnlFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5jcHAKQEAg
LTQzLDcgKzQzLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFN1bW1hcnlDb250ZW50RWxl
bWVudChEb2N1bWVudCogZG9jdW1lbnQpCi0gICAgICAgIDogU2hhZG93Q29udGVudEVsZW1lbnQo
SFRNTE5hbWVzOjpkaXZUYWcsIGRvY3VtZW50KQorICAgICAgICA6IFNoYWRvd0NvbnRlbnRFbGVt
ZW50KEhUTUxOYW1lczo6ZGl2VGFnLCBkb2N1bWVudCwgZW1wdHlBdG9tKQogICAgIHsKICAgICB9
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDc4M2MzODA1NjkzYWVj
NjNkNGQ5ODViZDc4YzM4NGZkNDQ4NGM0ZWMuLjZjMGFhMjQ1NmNlZWVkYzFhN2FhMDRjZmU5MjRi
NjUwNTA5MzU5NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTEyNiwx
NCArMTI2LDE0IEBAIGJvb2wgSW50ZXJuYWxzOjppc1ByZWxvYWRlZChEb2N1bWVudCogZG9jdW1l
bnQsIGNvbnN0IFN0cmluZyYgdXJsKQogICAgIHJldHVybiBkb2N1bWVudC0+Y2FjaGVkUmVzb3Vy
Y2VMb2FkZXIoKS0+aXNQcmVsb2FkZWQodXJsKTsKIH0KIAotUGFzc1JlZlB0cjxFbGVtZW50PiBJ
bnRlcm5hbHM6OmNyZWF0ZVNoYWRvd0NvbnRlbnRFbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCwg
RXhjZXB0aW9uQ29kZSYgZWMpCitQYXNzUmVmUHRyPEVsZW1lbnQ+IEludGVybmFsczo6Y3JlYXRl
U2hhZG93Q29udGVudEVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIHNl
bGVjdCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKCFkb2N1bWVudCkgewogICAgICAg
ICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0g
ICAgcmV0dXJuIFNoYWRvd0NvbnRlbnRFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOworICAgIHJl
dHVybiBTaGFkb3dDb250ZW50RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50LCBzZWxlY3QpOwogfQog
CiBFbGVtZW50KiBJbnRlcm5hbHM6OmdldEVsZW1lbnRCeUlkSW5TaGFkb3dSb290KE5vZGUqIHNo
YWRvd1Jvb3QsIGNvbnN0IFN0cmluZyYgaWQsIEV4Y2VwdGlvbkNvZGUmIGVjKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggZWQ0NzM3MDU1Yjk5MzgzZGE5YjI4MDIxYWYzZjY5NTlj
NjFkMzVmNy4uYzk2N2ZjZWU3NTgzMDlhZTIxODI3ZDlmMmRkMTlhMDMzOTgyYmJiMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHJlbW92ZVNoYWRvd1Jvb3QoRWxlbWVudCogaG9zdCwgRXhjZXB0aW9uQ29kZSYpOwogICAg
IEVsZW1lbnQqIGluY2x1ZGVyRm9yKE5vZGUqLCBFeGNlcHRpb25Db2RlJik7CiAgICAgU3RyaW5n
IHNoYWRvd1BzZXVkb0lkKEVsZW1lbnQqLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgUGFzc1JlZlB0
cjxFbGVtZW50PiBjcmVhdGVTaGFkb3dDb250ZW50RWxlbWVudChEb2N1bWVudCosIEV4Y2VwdGlv
bkNvZGUmKTsKKyAgICBQYXNzUmVmUHRyPEVsZW1lbnQ+IGNyZWF0ZVNoYWRvd0NvbnRlbnRFbGVt
ZW50KERvY3VtZW50KiwgY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIEVsZW1l
bnQqIGdldEVsZW1lbnRCeUlkSW5TaGFkb3dSb290KE5vZGUqIHNoYWRvd1Jvb3QsIGNvbnN0IFN0
cmluZyYgaWQsIEV4Y2VwdGlvbkNvZGUmKTsKIAogI2lmIEVOQUJMRShJTlBVVF9DT0xPUikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCBmNTZkMWFmNzRhOGUzNWRkNDdiZDRl
NmM0OWYxMjVlN2VhYWMzYTU1Li41ZjAwOGQwYThhZmI2OGQ2MDUwMjU4ZDhiNjU0YzhmNzE1M2E3
MGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysr
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC0zNSw3ICszNSw3IEBA
IG1vZHVsZSB3aW5kb3cgewogICAgICAgICBFbGVtZW50IGluY2x1ZGVyRm9yKGluIE5vZGUgbm9k
ZSkgcmFpc2VzIChET01FeGNlcHRpb24pOwogICAgICAgICB2b2lkIHJlbW92ZVNoYWRvd1Jvb3Qo
aW4gRWxlbWVudCBob3N0KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIERPTVN0cmlu
ZyBzaGFkb3dQc2V1ZG9JZChpbiBFbGVtZW50IGVsZW1lbnQpIHJhaXNlcyAoRE9NRXhjZXB0aW9u
KTsKLSAgICAgICAgRWxlbWVudCBjcmVhdGVTaGFkb3dDb250ZW50RWxlbWVudChpbiBEb2N1bWVu
dCBkb2N1bWVudCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgICAgIEVsZW1lbnQgY3JlYXRl
U2hhZG93Q29udGVudEVsZW1lbnQoaW4gRG9jdW1lbnQgZG9jdW1lbnQsIGluIFtPcHRpb25hbD1D
YWxsV2l0aE51bGxWYWx1ZV0gRE9NU3RyaW5nIHNlbGVjdCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7
CiAgICAgICAgIEVsZW1lbnQgZ2V0RWxlbWVudEJ5SWRJblNoYWRvd1Jvb3QoaW4gTm9kZSBzaGFk
b3dSb290LCBpbiBET01TdHJpbmcgaWQpIHJhaXNlcyhET01FeGNlcHRpb24pOwogCiAjaWYgZGVm
aW5lZChFTkFCTEVfSU5QVVRfQ09MT1IpICYmIEVOQUJMRV9JTlBVVF9DT0xPUgpkaWZmIC0tZ2l0
IGEvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlciBiL1NvdXJjZS9hdXRvdG9vbHMvc3lt
Ym9scy5maWx0ZXIKaW5kZXggMTViNjk1N2E5ZTI0MjMxOTBiYWMxZGQyMWNmYjE2NzNmZDczMThk
YS4uYjIyNWYwNmJmOWQyNDU2MzExZGRlYjgxNDE1NWE5Y2I1NjJjNWI2YiAxMDA2NDQKLS0tIGEv
U291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgorKysgYi9Tb3VyY2UvYXV0b3Rvb2xzL3N5
bWJvbHMuZmlsdGVyCkBAIC01Myw3ICs1Myw3IEBAIF9aTjdXZWJDb3JlMTdjYWNoZURPTVN0cnVj
dHVyZUVQTlNfMTdKU0RPTUdsb2JhbE9iamVjdEVQTjNKU0M5U3RydWN0dXJlRVBLTlMyXzlDCiBf
Wk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjM5c2V0UmVzb3VyY2VzRGF0YVNpemVMaW1p
dHNGcm9tSW50ZXJuYWxzRWlpOwogX1pON1dlYkNvcmUyME5vZGVSZW5kZXJpbmdDb250ZXh0QzFF
UE5TXzROb2RlRTsKIF9aTjdXZWJDb3JlMjBOb2RlUmVuZGVyaW5nQ29udGV4dEQxRXY7Ci1fWk43
V2ViQ29yZTIwU2hhZG93Q29udGVudEVsZW1lbnQ2Y3JlYXRlRVBOU184RG9jdW1lbnRFOworX1pO
N1dlYkNvcmUyMFNoYWRvd0NvbnRlbnRFbGVtZW50NmNyZWF0ZUVQTlNfOERvY3VtZW50RVJLTjNX
VEYxMkF0b21pY1N0cmluZ0U7CiBfWk43V2ViQ29yZTIxZ2V0Q2FjaGVkRE9NU3RydWN0dXJlRVBO
U18xN0pTRE9NR2xvYmFsT2JqZWN0RVBLTjNKU0M5Q2xhc3NJbmZvRTsKIF9aTjdXZWJDb3JlMjJl
eHRlcm5hbFJlcHJlc2VudGF0aW9uRVBOU183RWxlbWVudEVqOwogX1pON1dlYkNvcmUyNERvY3Vt
ZW50TWFya2VyQ29udHJvbGxlcjEwbWFya2Vyc0ZvckVQTlNfNE5vZGVFTlNfMTREb2N1bWVudE1h
cmtlcjExTWFya2VyVHlwZXNFOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDk5YmIyZjMyMzVlNGZiNjgxZjg3YTQ0ODBmMDkw
NzRkMzUxOWVhYmIuLjM5MDMzY2VlMGFhYTNiMTRlNmMzMjcxYjJkN2Y3MTkyMjViYTQ0M2QgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wMS0xMSAgU2hpbnlhIEthd2FuYWthICA8c2hpbnlh
a0Bnb29nbGUuY29tPgorCisgICAgICAgIFNoYWRvd0NvbnRlbnRFbGVtZW50IHNob3VsZCBiZSBh
YmxlIHRvIHVzZSBxdWVyeS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTc1MzAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGVzdHMgZm9yIFNoYWRvd0NvbnRlbnRFbGVtZW50IHF1ZXJ5LgorCisgICAgICAg
ICogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1jb250ZW50cy1zZWxlY3QtZXhwZWN0ZWQuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1jb250ZW50cy1zZWxlY3Qu
aHRtbDogQWRkZWQuCisKIDIwMTItMDEtMDkgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91
Z2hAYXBwbGUuY29tPgogCiAgICAgICAgIEVycm9yIGhhbmRsaW5nIDogaW4gSVNPODYwMSB0aW1l
em9uZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1jb250
ZW50cy1zZWxlY3QtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9z
aGFkb3ctY29udGVudHMtc2VsZWN0LWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDM3OTY1YmEy
YzkyN2JjMjQ4Njk1ODQ1M2MxY2M2NzUyOTczZTVlMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctY29udGVudHMtc2VsZWN0LWV4cGVjdGVkLmh0
bWwKQEAgLTAsMCArMSw0MSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHN0
eWxlPgorLyogcmVsYXRpdmUgcG9zaXRpb25pbmcgZW5zdXJlcyB1bmRlcmx5aW5nIFJlbmRlckxh
eWVyICovCisuY29udGFpbmVyIHsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cit9Cis8L3N0eWxl
PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJjb250YWluZXIiPgorPCEtLSB0ZXN0U2VsZWN0
SXNOdWxsIC0tPgorPGRpdj48c3Bhbj5IZWxsbyw8L3NwYW4+PHNwYW4+Y29udGVudDwvc3Bhbj48
c3Bhbj5Xb3JsZC48L3NwYW4+PC9kaXY+Cis8IS0tIHRlc3RTZWxlY3RJc0lkIC0tPgorPGRpdj48
c3Bhbj5IZWxsbyw8L3NwYW4+PHNwYW4+Y29udGVudDwvc3Bhbj48c3Bhbj5Xb3JsZC48L3NwYW4+
PC9kaXY+Cis8IS0tIHRlc3RTZWxlY3RJc0lkQnV0Tm90TWF0Y2hlZCAtLT4KKzxkaXY+PHNwYW4+
SGVsbG8sPC9zcGFuPjxzcGFuPldvcmxkLjwvc3Bhbj48L2Rpdj4KKzwhLS0gdGVzdFNlbGVjdElz
SWRCdXROb3RDaGlsZCAtLT4KKzxkaXY+PHNwYW4+SGVsbG8sPC9zcGFuPjxzcGFuPldvcmxkLjwv
c3Bhbj48L2Rpdj4KKzwhLS0gdGVzdFNlbGVjdElzTXVsdGlJZCAtLT4KKzxkaXY+PHNwYW4+SGVs
bG8sPC9zcGFuPjxzcGFuPmNvbnRlbnQ8L3NwYW4+PHNwYW4+Y29udGVudDwvc3Bhbj48c3Bhbj5X
b3JsZC48L3NwYW4+PC9kaXY+Cis8IS0tIHRlc3RTZWxlY3RJc1R5cGUgLS0+Cis8ZGl2PjxzcGFu
PkhlbGxvLDwvc3Bhbj48c3Bhbj5jb250ZW50PC9zcGFuPjxzcGFuPldvcmxkLjwvc3Bhbj48L2Rp
dj4KKzwhLS0gdGVzdFNlbGVjdElzVHlwZVdpdGhBdHRyaWJ1dGUgLS0+Cis8ZGl2PjxzcGFuPkhl
bGxvLDwvc3Bhbj48c3Bhbj5jb250ZW50PC9zcGFuPjxzcGFuPldvcmxkLjwvc3Bhbj48L2Rpdj4K
KzwhLS0gdGVzdFNlbGVjdElzVHlwZVdpdGhGaXJzdE9mVHlwZSAtLT4KKzxkaXY+PHNwYW4+SGVs
bG8sPC9zcGFuPjxzcGFuPmNvbnRlbnQ8L3NwYW4+PHNwYW4+V29ybGQuPC9zcGFuPjwvZGl2Pgor
PCEtLSB0ZXN0U2VsZWN0SXNUeXBlV2l0aEZpcnN0T2ZUeXBlMiAtLT4KKzxkaXY+PHNwYW4+SGVs
bG8sPC9zcGFuPjxzcGFuPmNvbnRlbnQ8L3NwYW4+PHNwYW4+V29ybGQuPC9zcGFuPjwvZGl2Pgor
PCEtLSB0ZXN0U2VsZWN0SXNUeXBlV2l0aExhc3RPZlR5cGUgLS0+Cis8ZGl2PjxzcGFuPkhlbGxv
LDwvc3Bhbj48c3Bhbj5jb250ZW50PC9zcGFuPjxzcGFuPldvcmxkLjwvc3Bhbj48L2Rpdj4KKzwh
LS0gdGVzdFNlbGVjdElzRGV0YWlscyAtLT4KKzxkaXY+PHNwYW4+SGVsbG8sPC9zcGFuPjxkZXRh
aWxzPmNvbnRlbnQ8L2RldGFpbHM+PHNwYW4+V29ybGQuPC9zcGFuPjwvZGl2PgorPCEtLSB0ZXN0
U2VsZWN0SXNEZXRhaWxzMiAtLT4KKzxkaXY+PHNwYW4+SGVsbG8sPC9zcGFuPjxkZXRhaWxzPjxz
dW1tYXJ5PmNvbnRlbnQ8L3N1bW1hcnk+PC9kZXRhaWxzPjxzcGFuPldvcmxkLjwvc3Bhbj48L2Rp
dj4KKzwhLS0gdGVzdFNlbGVjdFdoZW5EeW5hbWljYWxseUNoaWxkcmVuQ2hhbmdlZCAtLT4KKzxk
aXY+PHNwYW4+SGVsbG8sPC9zcGFuPjxzcGFuPmNvbnRlbnQ8L3NwYW4+PHNwYW4+V29ybGQuPC9z
cGFuPjwvZGl2PgorPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LWNvbnRlbnRzLXNlbGVjdC5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1jb250ZW50cy1zZWxlY3QuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42NzkyOTY3YTkzZTU5NjJkYjVhZTdmMjliYjI5YmNhMDFjZWNmNTFmCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1jb250ZW50cy1zZWxl
Y3QuaHRtbApAQCAtMCwwICsxLDE3MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPHN0eWxlPgorLyogcmVsYXRpdmUgcG9zaXRpb25pbmcgZW5zdXJlcyB1bmRlcmx5aW5nIFJl
bmRlckxheWVyICovCisuY29udGFpbmVyIHsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cit9Cis8
L3N0eWxlPgorPHNjcmlwdD4KK2Z1bmN0aW9uIGFwcGVuZFNoYWRvdyh0YXJnZXQsIHNlbGVjdCkg
eworICAgIHZhciByb290ID0gaW50ZXJuYWxzLmVuc3VyZVNoYWRvd1Jvb3QodGFyZ2V0KTsKKwor
ICAgIHZhciBjaGlsZDAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CisgICAgY2hp
bGQwLmlubmVySFRNTCA9ICJIZWxsbywiOworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY2hpbGQwKTsK
KworICAgIHZhciBjb250ZW50ID0gaW50ZXJuYWxzLmNyZWF0ZVNoYWRvd0NvbnRlbnRFbGVtZW50
KGRvY3VtZW50LCBzZWxlY3QpOworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY29udGVudCk7CisKKyAg
ICB2YXIgY2hpbGQxID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOworICAgIGNoaWxk
MS5pbm5lckhUTUwgPSAiV29ybGQuIjsKKyAgICByb290LmFwcGVuZENoaWxkKGNoaWxkMSk7Cit9
CisKK2Z1bmN0aW9uIHRlc3RTZWxlY3RJc051bGwoKSB7CisgICAgdmFyIHRhcmdldCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHRhcmdldC5pbm5lckhUTUwgPSAiPHNwYW4+
Y29udGVudDwvc3Bhbj4iOworCisgICAgYXBwZW5kU2hhZG93KHRhcmdldCwgIiIpOworCisgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRhaW5lcicpLmFwcGVuZENoaWxkKHRhcmdldCk7
Cit9CisKK2Z1bmN0aW9uIHRlc3RTZWxlY3RJc0lkKCkgeworICAgIHZhciB0YXJnZXQgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICB0YXJnZXQuaW5uZXJIVE1MID0gIjxzcGFu
IGlkPSdmb28nPmNvbnRlbnQ8L3NwYW4+PHNwYW4gaWQ9J2F6dW55YW4nPnBlcm9wZXJvPC9zcGFu
PiI7CisKKyAgICBhcHBlbmRTaGFkb3codGFyZ2V0LCAiI2ZvbyIpOworCisgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2NvbnRhaW5lcicpLmFwcGVuZENoaWxkKHRhcmdldCk7Cit9CisKK2Z1
bmN0aW9uIHRlc3RTZWxlY3RJc0lkQnV0Tm90TWF0Y2hlZCgpIHsKKyAgICB2YXIgdGFyZ2V0ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgdGFyZ2V0LmlubmVySFRNTCA9ICI8
c3BhbiBpZD0nZm9vJz5jb250ZW50PC9zcGFuPjxzcGFuIGlkPSdhenVueWFuJz5wZXJvcGVybzwv
c3Bhbj4iOworCisgICAgYXBwZW5kU2hhZG93KHRhcmdldCwgIiNmb29iYXIiKTsKKworICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250YWluZXInKS5hcHBlbmRDaGlsZCh0YXJnZXQpOwor
fQorCitmdW5jdGlvbiB0ZXN0U2VsZWN0SXNJZEJ1dE5vdENoaWxkKCkgeworICAgIHZhciB0YXJn
ZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICB0YXJnZXQuaW5uZXJIVE1M
ID0gIjxzcGFuPjxzcGFuIGlkPSdmb28nPmNvbnRlbnQ8L3NwYW4+PHNwYW4gaWQ9J2F6dW55YW4n
PnBlcm9wZXJvPC9zcGFuPjwvc3Bhbj4iOworCisgICAgYXBwZW5kU2hhZG93KHRhcmdldCwgIiNm
b28iKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250YWluZXInKS5hcHBlbmRD
aGlsZCh0YXJnZXQpOworfQorCitmdW5jdGlvbiB0ZXN0U2VsZWN0SXNNdWx0aUlkKCkgeworICAg
IHZhciB0YXJnZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICB0YXJnZXQu
aW5uZXJIVE1MID0gIjxzcGFuIGlkPSdmb28nPmNvbnRlbnQ8L3NwYW4+PHNwYW4gaWQ9J2F6dW55
YW4nPnBlcm9wZXJvPC9zcGFuPjxzcGFuIGlkPSdmb28nPmNvbnRlbnQ8L3NwYW4+IjsKKworICAg
IGFwcGVuZFNoYWRvdyh0YXJnZXQsICIjZm9vIik7CisKKyAgICAvLyBBbGwgbWF0Y2hlZCBlbGVt
ZW50cyB3aWxsIGJlIHNlbGVjdGVkLgorICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250
YWluZXInKS5hcHBlbmRDaGlsZCh0YXJnZXQpOworfQorCitmdW5jdGlvbiB0ZXN0U2VsZWN0SXNU
eXBlKCkgeworICAgIHZhciB0YXJnZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsK
KyAgICB0YXJnZXQuaW5uZXJIVE1MID0gIjxkaXY+YXp1bnlhbjwvZGl2PjxzcGFuPmNvbnRlbnQ8
L3NwYW4+PGRpdj5wZXJvcGVybzwvZGl2PiI7CisKKyAgICBhcHBlbmRTaGFkb3codGFyZ2V0LCAi
c3BhbiIpOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRhaW5lcicpLmFwcGVu
ZENoaWxkKHRhcmdldCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RTZWxlY3RJc1R5cGVXaXRoQXR0cmli
dXRlKCkgeworICAgIHZhciB0YXJnZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsK
KyAgICB0YXJnZXQuaW5uZXJIVE1MID0gIjxzcGFuPmF6dW55YW48L3NwYW4+PHNwYW4gdGl0bGU9
J2NvbnRlbnQnPmNvbnRlbnQ8L3NwYW4+PHNwYW4+cGVyb3Blcm88L3NwYW4+IjsKKworICAgIGFw
cGVuZFNoYWRvdyh0YXJnZXQsICJzcGFuW3RpdGxlPSdjb250ZW50J10iKTsKKworICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdjb250YWluZXInKS5hcHBlbmRDaGlsZCh0YXJnZXQpOworfQor
CitmdW5jdGlvbiB0ZXN0U2VsZWN0SXNUeXBlV2l0aEZpcnN0T2ZUeXBlKCkgeworICAgIHZhciB0
YXJnZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICB0YXJnZXQuaW5uZXJI
VE1MID0gIjxkaXY+YXp1bnlhbjwvZGl2PjxzcGFuPmNvbnRlbnQ8L3NwYW4+PHNwYW4+cGVyb3Bl
cm88L3NwYW4+IjsKKworICAgIGFwcGVuZFNoYWRvdyh0YXJnZXQsICJzcGFuOmZpcnN0LW9mLXR5
cGUiKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250YWluZXInKS5hcHBlbmRD
aGlsZCh0YXJnZXQpOworfQorCitmdW5jdGlvbiB0ZXN0U2VsZWN0SXNUeXBlV2l0aEZpcnN0T2ZU
eXBlMigpIHsKKyAgICB2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7
CisgICAgdGFyZ2V0LmlubmVySFRNTCA9ICI8ZGl2PjxzcGFuPmF6dW55YW48L3NwYW4+PC9kaXY+
PHNwYW4+Y29udGVudDwvc3Bhbj48c3Bhbj5wZXJvcGVybzwvc3Bhbj4iOworCisgICAgYXBwZW5k
U2hhZG93KHRhcmdldCwgInNwYW46Zmlyc3Qtb2YtdHlwZSIpOworCisgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2NvbnRhaW5lcicpLmFwcGVuZENoaWxkKHRhcmdldCk7Cit9CisKK2Z1bmN0
aW9uIHRlc3RTZWxlY3RJc1R5cGVXaXRoTGFzdE9mVHlwZSgpIHsKKyAgICB2YXIgdGFyZ2V0ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgdGFyZ2V0LmlubmVySFRNTCA9ICI8
c3Bhbj5henVueWFuPC9zcGFuPjxzcGFuPmNvbnRlbnQ8L3NwYW4+PGRpdj5wZXJvcGVybzwvZGl2
PiI7CisKKyAgICBhcHBlbmRTaGFkb3codGFyZ2V0LCAic3BhbjpsYXN0LW9mLXR5cGUiKTsKKwor
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250YWluZXInKS5hcHBlbmRDaGlsZCh0YXJn
ZXQpOworfQorCitmdW5jdGlvbiB0ZXN0U2VsZWN0SXNEZXRhaWxzKCkgeworICAgIHZhciB0YXJn
ZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICB0YXJnZXQuaW5uZXJIVE1M
ID0gIjxkZXRhaWxzPmNvbnRlbnQ8L2RldGFpbHM+IjsKKworICAgIGFwcGVuZFNoYWRvdyh0YXJn
ZXQsICJkZXRhaWxzIik7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29udGFpbmVy
JykuYXBwZW5kQ2hpbGQodGFyZ2V0KTsKK30KKworZnVuY3Rpb24gdGVzdFNlbGVjdElzRGV0YWls
czIoKSB7CisgICAgdmFyIHRhcmdldCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwor
ICAgIHRhcmdldC5pbm5lckhUTUwgPSAiPGRldGFpbHM+PHN1bW1hcnk+Y29udGVudDwvc3VtbWFy
eT48L2RldGFpbHM+IjsKKworICAgIGFwcGVuZFNoYWRvdyh0YXJnZXQsICJkZXRhaWxzIik7CisK
KyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29udGFpbmVyJykuYXBwZW5kQ2hpbGQodGFy
Z2V0KTsKK30KKworZnVuY3Rpb24gdGVzdFNlbGVjdFdoZW5EeW5hbWljYWxseUNoaWxkcmVuQ2hh
bmdlZCgpIHsKKyAgICB2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7
CisgICAgdGFyZ2V0LmlubmVySFRNTCA9ICI8c3Bhbj5jb250ZW50PC9zcGFuPjxzcGFuIGlkPSd0
b2JlcmVtb3ZlZCc+YW51bnlhbiBwZXJvcGVybzwvc3Bhbj4iOworCisgICAgYXBwZW5kU2hhZG93
KHRhcmdldCwgInNwYW4iKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250YWlu
ZXInKS5hcHBlbmRDaGlsZCh0YXJnZXQpOworCisgICAgdmFyIGVsZW0gPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgndG9iZXJlbW92ZWQnKTsKKyAgICBlbGVtLnBhcmVudE5vZGUucmVtb3ZlQ2hp
bGQoZWxlbSk7Cit9CisKK3ZhciB0ZXN0RnVuY3MgPSBbCisgICAgdGVzdFNlbGVjdElzTnVsbCwK
KyAgICB0ZXN0U2VsZWN0SXNJZCwKKyAgICB0ZXN0U2VsZWN0SXNJZEJ1dE5vdE1hdGNoZWQsCisg
ICAgdGVzdFNlbGVjdElzSWRCdXROb3RDaGlsZCwKKyAgICB0ZXN0U2VsZWN0SXNNdWx0aUlkLAor
ICAgIHRlc3RTZWxlY3RJc1R5cGUsCisgICAgdGVzdFNlbGVjdElzVHlwZVdpdGhBdHRyaWJ1dGUs
CisgICAgdGVzdFNlbGVjdElzVHlwZVdpdGhGaXJzdE9mVHlwZSwKKyAgICB0ZXN0U2VsZWN0SXNU
eXBlV2l0aEZpcnN0T2ZUeXBlMiwKKyAgICB0ZXN0U2VsZWN0SXNUeXBlV2l0aExhc3RPZlR5cGUs
CisgICAgdGVzdFNlbGVjdElzRGV0YWlscywKKyAgICB0ZXN0U2VsZWN0SXNEZXRhaWxzMiwKKyAg
ICB0ZXN0U2VsZWN0V2hlbkR5bmFtaWNhbGx5Q2hpbGRyZW5DaGFuZ2VkLAorXQorCitmdW5jdGlv
biBkb1Rlc3QoKSB7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0ZXN0RnVuY3MubGVuZ3RoOyAr
K2kpIHsKKyAgICAgICB0ZXN0RnVuY3NbaV0oKTsKKyAgICB9Cit9Cis8L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5IG9ubG9hZD0iZG9UZXN0KCkiPgorPGRpdiBpZD0iY29udGFpbmVyIj48L2Rpdj4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRl
eCAxOGY0NTAxMzAyMjQwZTU1ZWU4MjIwMjUzMjdjYjBjNWM2NDc2OGNiLi4wYTBjMjcyNmJkN2Q5
NWYwZGUyN2YyMzA3YjZiZmEzZWRhZTI5NTgyIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTItMDEtMTEgIFNoaW55YSBLYXdhbmFrYSAg
PHNoaW55YWtAZ29vZ2xlLmNvbT4KKworICAgICAgICBTaGFkb3dDb250ZW50RWxlbWVudCBzaG91
bGQgYmUgYWJsZSB0byB1c2UgcXVlcnkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD03NTMwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcjogRXhwb3Nl
ZCBuZWNlc3Nhcnkgc3ltYm9scy4KKwogMjAxMi0wMS0wOSAgTWFydGluIFJvYmluc29uICA8bXJv
Ymluc29uQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gW0FDXSBTaW1wbGlmeSBhY2NlbGVy
YXRlZCBjb21wb3NpdGluZyBidWlsZCBvcHRpb25zCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122179</attachid>
            <date>2012-01-12 00:26:32 -0800</date>
            <delta_ts>2012-01-12 01:25:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-75302-20120112172630.patch</filename>
            <type>text/plain</type>
            <size>46024</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA0Nzg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWQ0NDRlYjJlNzNhZWQz
NjBiNzBhNmM2M2Q5YjIwZWNjOWNiMWI5My4uMzk1YTk3ZDJiNDRhZDU1ZDAwNzkzZWRlZDhmYWIx
NzJiOTk2ODkzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDEyLTAxLTExICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGdvb2dsZS5jb20+CisKKyAgICAgICAgU2hhZG93Q29udGVu
dEVsZW1lbnQgc2hvdWxkIGJlIGFibGUgdG8gdXNlIHF1ZXJ5LgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzUzMDIKKworICAgICAgICBSZXZpZXdlZCBi
eSBIYWppbWUgTW9yaXRhLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIHNlbGVj
dG9yIHRvIHF1ZXJ5IGVsZW1lbnRzIGluIFNoYWRvd0NvbnRlbnRFbGVtZW50LgorICAgICAgICBU
aGlzIGNhbiBiZSB1c2VkIGluc3RlYWQgb2YgU2hhZG93Q29udGVudEVsZW1lbnQ6OnNob3VsZElu
Y2x1ZGUgaW4gbW9yZSBzb3BoaXN0aWNhdGVkIHdheXMuCisKKyAgICAgICAgVGVzdHM6IGZhc3Qv
ZG9tL3NoYWRvdy9zaGFkb3ctY29udGVudHMtc2VsZWN0LWV4cGVjdGVkLmh0bWwKKyAgICAgICAg
ICAgICAgIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctY29udGVudHMtc2VsZWN0Lmh0bWwKKworICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06Cisg
ICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAg
KiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6
CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IGRvbS9ET01BbGxJbk9uZS5jcHA6CisgICAgICAgICogZG9tL1NlbGVjdG9yUXVlcnkuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JEYXRhTGlzdDo6U2VsZWN0b3JEYXRhTGlzdCk6Cisg
ICAgICAgICAgRXh0cmFjdGVkIGZyb20gU2VsZWN0b3JRdWVyeXRvIHNoYXJlIGNvZGVzIHdpdGgg
U2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnkuCisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckRh
dGFMaXN0Ojppbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yRGF0YUxpc3Q6
Om1hdGNoZXMpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JEYXRhTGlzdDo6cXVlcnlBbGwp
OgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JEYXRhTGlzdDo6cXVlcnlGaXJzdCk6CisgICAg
ICAgIChXZWJDb3JlOjpTZWxlY3RvckRhdGFMaXN0OjpjYW5Vc2VJZExvb2t1cCk6CisgICAgICAg
IChXZWJDb3JlOjpTZWxlY3RvckRhdGFMaXN0OjpleGVjdXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNlbGVjdG9yUXVlcnk6OlNlbGVjdG9yUXVlcnkpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0
b3JRdWVyeTo6cXVlcnlBbGwpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JRdWVyeTo6cXVl
cnlGaXJzdCk6CisgICAgICAgICogZG9tL1NlbGVjdG9yUXVlcnkuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlNlbGVjdG9yRGF0YUxpc3Q6OnNpemUpOgorICAgICAgICAqIGRvbS9TaGFkb3dDb250ZW50
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZWxlY3RBdHRyKToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYWRvd0NvbnRlbnRFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhZG93Q29udGVudEVsZW1lbnQ6OlNoYWRvd0NvbnRlbnRFbGVtZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYWRvd0NvbnRlbnRFbGVtZW50OjpzZWxlY3QpOgorICAgICAgICAqIGRvbS9TaGFk
b3dDb250ZW50RWxlbWVudC5oOgorICAgICAgICAqIGRvbS9TaGFkb3dDb250ZW50U2VsZWN0b3JR
dWVyeS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Q29udGVudFNlbGVjdG9y
UXVlcnk6OlNoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlNo
YWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5OjptYXRjaGVzKToKKyAgICAgICAgICBSZXR1cm5zIHRy
dWUgaWYgTm9kZSBpcyBtYXRjaGVkIGJ5IHRoZSBxdWVyeS4KKyAgICAgICAgKiBkb20vU2hhZG93
Q29udGVudFNlbGVjdG9yUXVlcnkuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvZG9tL1No
YWRvd0NvbnRlbnRFbGVtZW50LmguCisgICAgICAgICogZG9tL1NoYWRvd0luY2x1c2lvblNlbGVj
dG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0luY2x1c2lvblNlbGVjdG9yOjpzZWxl
Y3QpOgorICAgICAgICAqIGRvbS9TaGFkb3dJbmNsdXNpb25TZWxlY3Rvci5oOgorICAgICAgICAq
IGh0bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnN1bW1hcnlR
dWVyeVNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkRldGFpbHNDb250ZW50RWxlbWVudDo6
RGV0YWlsc0NvbnRlbnRFbGVtZW50KTogUmUtaW1wbGVtZW50ZWQgdXNpbmcgcXVlcnkuCisgICAg
ICAgIChXZWJDb3JlOjpEZXRhaWxzU3VtbWFyeUVsZW1lbnQ6OkRldGFpbHNTdW1tYXJ5RWxlbWVu
dCk6IGRpdHRvLgorICAgICAgICAqIGh0bWwvSFRNTFN1bW1hcnlFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlN1bW1hcnlDb250ZW50RWxlbWVudDo6U3VtbWFyeUNvbnRlbnRFbGVtZW50
KToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnRlcm5hbHM6OmNyZWF0ZVNoYWRvd0NvbnRlbnRFbGVtZW50KToKKyAgICAgICAgKiB0ZXN0aW5n
L0ludGVybmFscy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKwogMjAxMi0w
MS0xMSAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS8xMDY3OTAzNT4gSW1wbGVtZW50IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IHtuby19
Y29tbW9uLWxpZ2F0dXJlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA1OWZjZWUyNDY4MDQ3OTk1
MTU2NTViMDdlYTUxYzM3ZWQxNjQ1MmQ5Li42MGI1NzhjZjAyMGE1NDUwZWRiOGQzZTVhNzQ4MTZk
ZGE0MGQxZTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNTk0LDYgKzU5NCw3IEBAIFNFVChX
ZWJDb3JlX1NPVVJDRVMKICAgICBkb20vU2VjdXJpdHlDb250ZXh0LmNwcAogICAgIGRvbS9TZWxl
Y3RvclF1ZXJ5LmNwcAogICAgIGRvbS9TaGFkb3dDb250ZW50RWxlbWVudC5jcHAKKyAgICBkb20v
U2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnkuY3BwCiAgICAgZG9tL1NoYWRvd0luY2x1c2lvblNl
bGVjdG9yLmNwcAogICAgIGRvbS9TaGFkb3dSb290LmNwcAogICAgIGRvbS9TcGFjZVNwbGl0U3Ry
aW5nLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBi
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggOWVhYWVjYWUzODg2ZDM1
OGVhYjUwMDllZWY1MmY4MWM0NjgyMjdjNS4uZjE0NGYwZDJkMTU2NTIxYmU5ZmQ3N2VkY2Y5NzNi
Y2MyOWQ3NjBjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5h
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0xNjQ1LDYgKzE2
NDUsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3Rv
clF1ZXJ5LmggXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dDb250ZW50RWxlbWVudC5jcHAg
XAogCVNvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dDb250ZW50RWxlbWVudC5oIFwKKwlTb3VyY2Uv
V2ViQ29yZS9kb20vU2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnkuY3BwIFwKKwlTb3VyY2UvV2Vi
Q29yZS9kb20vU2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnkuaCBcCiAJU291cmNlL1dlYkNvcmUv
ZG9tL1NoYWRvd0luY2x1c2lvblNlbGVjdG9yLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1No
YWRvd0luY2x1c2lvblNlbGVjdG9yLmggXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290
LmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dl
YkNvcmUvVGFyZ2V0LnByaQppbmRleCA0YmVjMjE0ZmFkYzRmNmRhODQ2OTE0MTg3MDAxMThjMTQz
ZGMxNjMzLi5lM2RiODhkNGViYTAyMWRjY2Y4MGYyODgwYzk5M2U3MDg4MGE2OTE2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1Rhcmdl
dC5wcmkKQEAgLTU2MCw2ICs1NjAsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBkb20vU2VjdXJpdHlD
b250ZXh0LmNwcCBcCiAgICAgZG9tL1NlbGVjdG9yUXVlcnkuY3BwIFwKICAgICBkb20vU2hhZG93
Q29udGVudEVsZW1lbnQuY3BwIFwKKyAgICBkb20vU2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnku
Y3BwIFwKICAgICBkb20vU2hhZG93SW5jbHVzaW9uU2VsZWN0b3IuY3BwIFwKICAgICBkb20vU2hh
ZG93Um9vdC5jcHAgXAogICAgIGRvbS9TcGFjZVNwbGl0U3RyaW5nLmNwcCBcCkBAIC0xNjYwLDYg
KzE2NjEsNyBAQCBIRUFERVJTICs9IFwKICAgICBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5o
IFwKICAgICBkb20vU2VsZWN0b3JRdWVyeS5oIFwKICAgICBkb20vU2hhZG93Q29udGVudEVsZW1l
bnQuaCBcCisgICAgZG9tL1NoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmggXAogICAgIGRvbS9T
aGFkb3dJbmNsdXNpb25TZWxlY3Rvci5oIFwKICAgICBkb20vU2hhZG93Um9vdC5oIFwKICAgICBk
b20vU3BhY2VTcGxpdFN0cmluZy5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggNWRiMzdiYjQx
NDI1ZDVkYzk0NWIzMTk1ZmUzOGNlNGI1MzczYTRiOS4uZWI4ZjhkMWVhMjQ4ZDM1MjE5NjBkNGFh
YjQ0OWRmNzE5YjZlZjhjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAu
aW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTYwMCw3ICs2MDAsNyBA
QCBfX1pON1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlMjBzZXRTdWdnZXN0ZWRGaWxlbmFt
ZUVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTIwUmVzb3VyY2VSZXNwb25zZUJhc2UyNHNl
dEV4cGVjdGVkQ29udGVudExlbmd0aEV4CiBfX1pON1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VC
YXNlNnNldFVSTEVSS05TXzRLVVJMRQogX19aTjdXZWJDb3JlMjBSZXNvdXJjZVJlc3BvbnNlQmFz
ZUMyRXYKLV9fWk43V2ViQ29yZTIwU2hhZG93Q29udGVudEVsZW1lbnQ2Y3JlYXRlRVBOU184RG9j
dW1lbnRFCitfX1pON1dlYkNvcmUyMFNoYWRvd0NvbnRlbnRFbGVtZW50NmNyZWF0ZUVQTlNfOERv
Y3VtZW50RVJLTjNXVEYxMkF0b21pY1N0cmluZ0UKIF9fWk43V2ViQ29yZTIwVXNlckdlc3R1cmVJ
bmRpY2F0b3I3c19zdGF0ZUUKIF9fWk43V2ViQ29yZTIwVXNlckdlc3R1cmVJbmRpY2F0b3JDMUVO
U18yNlByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRlRQogX19aTjdXZWJDb3JlMjBVc2VyR2VzdHVy
ZUluZGljYXRvckQxRXYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCA1ZmI1ZDBmNzQwYzM4YzBmOGQ0NzJi
MmY3Y2NjNGFmMDk2OWZhYmZiLi4wZmU0OTNlM2NhOTRkZDRjNWE4MGY4MzMwYmJkOTlkNmRjOTQ2
NTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0xMDQ3LDYgKzEwNDcsNyBAQAogICAgICAgICAgICAg
J2RvbS9TY3JpcHRSdW5uZXIuaCcsCiAgICAgICAgICAgICAnZG9tL1NoYWRvd1Jvb3QuaCcsCiAg
ICAgICAgICAgICAnZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50LmgnLAorICAgICAgICAgICAgJ2Rv
bS9TaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeS5oJywKICAgICAgICAgICAgICdkb20vU3BhY2VT
cGxpdFN0cmluZy5oJywKICAgICAgICAgICAgICdkb20vU3R5bGVkRWxlbWVudC5oJywKICAgICAg
ICAgICAgICdkb20vVGV4dC5oJywKQEAgLTU0NTUsNiArNTQ1Niw4IEBACiAgICAgICAgICAgICAn
ZG9tL1NlbGVjdG9yUXVlcnkuaCcsCiAgICAgICAgICAgICAnZG9tL1NoYWRvd0NvbnRlbnRFbGVt
ZW50LmNwcCcsCiAgICAgICAgICAgICAnZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50LmgnLAorICAg
ICAgICAgICAgJ2RvbS9TaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeS5jcHAnLAorICAgICAgICAg
ICAgJ2RvbS9TaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeS5oJywKICAgICAgICAgICAgICdkb20v
U2hhZG93SW5jbHVzaW9uU2VsZWN0b3IuY3BwJywKICAgICAgICAgICAgICdkb20vU2hhZG93SW5j
bHVzaW9uU2VsZWN0b3IuaCcsCiAgICAgICAgICAgICAnZG9tL1NoYWRvd1Jvb3QuY3BwJywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggYWU3ODcw
OTI1YWFhYTVhNTk1MmE3ZWQyY2RkZGIzOWVhZjAyNjFmMS4uYTJlOWZkMjllYjQ0YTI3YmY0OTRk
M2Y3M2I2NmY4OThjMjM2ZjFhOCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2oKQEAgLTUxMTA2LDYgKzUxMTA2LDE0IEBACiAJCQkJPgogCQkJPC9GaWxl
PgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxTaGFkb3dDb250ZW50U2VsZWN0
b3JRdWVyeS5jcHAiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXGRvbVxTaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeS5oIgorCQkJCT4KKwkJCTwvRmls
ZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cU2hhZG93SW5jbHVzaW9uU2Vs
ZWN0b3IuY3BwIgogCQkJCT4KIAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzYjc3OTlkYTdh
NjQwZDBmMTlhMWNhYjJmODQ5MGU0ZDA1YWY2ZWE0Li40YzBiOGI5MTNhODRhYjAxZmY1MzBmYTJl
NTQ0MzkzMjk0ODAzY2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNTYyLDYgKzE1NjIsOCBAQAogCQk1M0M4Mjk4RTEzRDhE
OTI3MDBERTJERUIgLyogUmVuZGVyRmxleGlibGVCb3guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzQzgyOThDMTNEOEQ5MjcwMERFMkRFQiAvKiBSZW5k
ZXJGbGV4aWJsZUJveC5oICovOyB9OwogCQk1NTBBMEJDOTA4NUY2MDM5MDA3MzUzRDYgLyogUXVh
bGlmaWVkTmFtZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1NTBBMEJDNzA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5jcHAgKi87IH07
CiAJCTU1MEEwQkNBMDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTBBMEJDODA4NUY2MDM5MDA3
MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTU3MERCQTgxMTRCNTgwNDkwMERBRUZBMCAvKiBTaGFkb3dDb250
ZW50U2VsZWN0b3JRdWVyeS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1NzBEQjdBODE0QjU2OTZBMDBEQUVGQTAgLyogU2hhZG93Q29udGVudFNlbGVj
dG9yUXVlcnkuY3BwICovOyB9OworCQk1NzBEQkE4MjE0QjU4MDRCMDBEQUVGQTAgLyogU2hhZG93
Q29udGVudFNlbGVjdG9yUXVlcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDU3MERCN0E5MTRCNTY5NkEwMERBRUZBMCAvKiBTaGFkb3dDb250ZW50U2Vs
ZWN0b3JRdWVyeS5oICovOyB9OwogCQk1OTA1QURCRjEzMDJGM0NFMDBGMTE2REYgLyogWE1MVHJl
ZVZpZXdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1OTA1QURCRDEzMDJGM0NFMDBGMTE2REYgLyogWE1MVHJlZVZpZXdlci5jcHAgKi87IH07CiAJ
CTU5MDVBREMwMTMwMkYzQ0UwMEYxMTZERiAvKiBYTUxUcmVlVmlld2VyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OTA1QURCRTEzMDJGM0NFMDBGMTE2
REYgLyogWE1MVHJlZVZpZXdlci5oICovOyB9OwogCQk1OTBFMUI0OTExRTRFRjRCMDA2OUY3ODQg
LyogRGV2aWNlT3JpZW50YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDU5MEUxQjQ4MTFFNEVGNEIwMDY5Rjc4NCAvKiBEZXZpY2VPcmllbnRhdGlv
bi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC04
ODUyLDYgKzg4NTQsOCBAQAogCQk1M0M4Mjk4QzEzRDhEOTI3MDBERTJERUIgLyogUmVuZGVyRmxl
eGlibGVCb3guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyRmxleGli
bGVCb3guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTUwQTBCQzcwODVGNjAzOTAw
NzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUXVhbGlmaWVkTmFtZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQk1NTBBMEJDODA4
NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBRdWFsaWZpZWROYW1lLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OworCQk1NzBEQjdBODE0
QjU2OTZBMDBEQUVGQTAgLyogU2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnkuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnku
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1NzBEQjdBOTE0QjU2OTZBMDBEQUVG
QTAgLyogU2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnkuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTkwNUFEQkQxMzAyRjNDRTAwRjExNkRGIC8qIFhNTFRyZWVWaWV3ZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gWE1MVHJlZVZpZXdlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU5MDVBREJFMTMwMkYzQ0UwMEYxMTZE
RiAvKiBYTUxUcmVlVmlld2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFhN
TFRyZWVWaWV3ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTkwRTFCNDgxMUU0
RUY0QjAwNjlGNzg0IC8qIERldmljZU9yaWVudGF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IERldmljZU9yaWVudGF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0yMTQ2NCw2ICsyMTQ2OCw4IEBACiAJCQkJRTQ1MzIyQUExNDBDRTI2NzAwNUEwRjky
IC8qIFNlbGVjdG9yUXVlcnkuaCAqLywKIAkJCQlBNzY2Q0Y4QjEzODEwRTBDMDAxMUEwQjMgLyog
U2hhZG93Q29udGVudEVsZW1lbnQuY3BwICovLAogCQkJCUE3NEMyRDNCMTM4MTFFMEQwMEY4MzU3
MiAvKiBTaGFkb3dDb250ZW50RWxlbWVudC5oICovLAorCQkJCTU3MERCN0E4MTRCNTY5NkEwMERB
RUZBMCAvKiBTaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeS5jcHAgKi8sCisJCQkJNTcwREI3QTkx
NEI1Njk2QTAwREFFRkEwIC8qIFNoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmggKi8sCiAJCQkJ
QTcxQzMwQjYxMzgxMjY1RTAwREJDMzUxIC8qIFNoYWRvd0luY2x1c2lvblNlbGVjdG9yLmNwcCAq
LywKIAkJCQlBNzFDMzBCNzEzODEyNjVFMDBEQkMzNTEgLyogU2hhZG93SW5jbHVzaW9uU2VsZWN0
b3IuaCAqLywKIAkJCQlBNkQxNjk2MTEzNDZCNDlCMDAwRUI3NzAgLyogU2hhZG93Um9vdC5jcHAg
Ki8sCkBAIC0yNDMxOSw2ICsyNDMyNSw3IEBACiAJCQkJNDk4NzcwRTkxMjQyQzUzNTAwMjIyNkJB
IC8qIFNoYWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzREQ0NTAxMkY1RUExQjAwMEQ5MTkw
IC8qIFNoYWRvd0JsdXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3NEMyRDNDMTM4MTFFMEQwMEY4
MzU3MiAvKiBTaGFkb3dDb250ZW50RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTcwREJB
ODIxNEI1ODA0QjAwREFFRkEwIC8qIFNoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQzVFQjhDNDBFODIwMzFCMDBCMjU5NjUgLyogU2hhZG93RGF0YS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTcxQzMwQjkxMzgxMjY1RTAwREJDMzUxIC8qIFNoYWRvd0luY2x1
c2lvblNlbGVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNkQxNjk2NDEzNDZCNEMxMDAwRUI3
NzAgLyogU2hhZG93Um9vdC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzM1Miw2ICsyNzM1OSw3IEBA
CiAJCQkJNDk4NzcwRTgxMjQyQzUzNTAwMjIyNkJBIC8qIFNoYWRlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRjNERDQ0RjEyRjVFQTFCMDAwRDkxOTAgLyogU2hhZG93Qmx1ci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBNzY2Q0Y4QzEzODEwRTBDMDAxMUEwQjMgLyogU2hhZG93Q29udGVudEVs
ZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTcwREJBODExNEI1ODA0OTAwREFFRkEwIC8q
IFNoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNUVC
OEMzMEU4MjAzMUIwMEIyNTk2NSAvKiBTaGFkb3dEYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUE3MUMzMEI4MTM4MTI2NUUwMERCQzM1MSAvKiBTaGFkb3dJbmNsdXNpb25TZWxlY3Rvci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlBNkQxNjk2MjEzNDZCNDlCMDAwRUI3NzAgLyogU2hhZG93Um9v
dC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01B
bGxJbk9uZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NQWxsSW5PbmUuY3BwCmluZGV4IDU1
MDk0NjUzZjVmMjM5NDZmZDQ0M2U0ODlmMTM3MzMzODE0ZmI2NjIuLjU1YjYwNTI4YWFhMjkzY2Q2
NjVjNGM5MjI3YmE4ODQ3ODg1ZjZhM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
T01BbGxJbk9uZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RPTUFsbEluT25lLmNwcApA
QCAtMTEzLDYgKzExMyw3IEBACiAjaW5jbHVkZSAiU2VjdXJpdHlDb250ZXh0LmNwcCIKICNpbmNs
dWRlICJTZWxlY3RvclF1ZXJ5LmNwcCIKICNpbmNsdWRlICJTaGFkb3dDb250ZW50RWxlbWVudC5j
cHAiCisjaW5jbHVkZSAiU2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnkuY3BwIgogI2luY2x1ZGUg
IlNoYWRvd0luY2x1c2lvblNlbGVjdG9yLmNwcCIKICNpbmNsdWRlICJTaGFkb3dSb290LmNwcCIK
ICNpbmNsdWRlICJTcGFjZVNwbGl0U3RyaW5nLmNwcCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9TZWxlY3RvclF1ZXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1
ZXJ5LmNwcAppbmRleCA1ZGZmMDNjYjczNjE1NDVlZjVlZWQ4Zjg3MTg4ZjBlZWUzZWQ0MmE4Li4y
YjEzYjFhY2YzMzIyMjM3ZGVkOThhODRlMjQ4ZTFhNTI5Y2RmNDA0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2VsZWN0b3JRdWVyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1NlbGVjdG9yUXVlcnkuY3BwCkBAIC0zMywyNSArMzMsNDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1TZWxlY3RvclF1ZXJ5OjpTZWxlY3RvclF1ZXJ5KE5vZGUqIHJvb3ROb2RlLCBjb25z
dCBDU1NTZWxlY3Rvckxpc3QmIHNlbGVjdG9yTGlzdCkKLSAgICA6IG1fcm9vdE5vZGUocm9vdE5v
ZGUpCi0gICAgLCBtX3NlbGVjdG9yQ2hlY2tlcihyb290Tm9kZS0+ZG9jdW1lbnQoKSwgIXJvb3RO
b2RlLT5kb2N1bWVudCgpLT5pblF1aXJrc01vZGUoKSkKK1NlbGVjdG9yRGF0YUxpc3Q6OlNlbGVj
dG9yRGF0YUxpc3QoKQoreworfQorCitTZWxlY3RvckRhdGFMaXN0OjpTZWxlY3RvckRhdGFMaXN0
KGNvbnN0IENTU1NlbGVjdG9yTGlzdCYgc2VsZWN0b3JMaXN0KQoreworICAgIGluaXRpYWxpemUo
c2VsZWN0b3JMaXN0KTsKK30KKwordm9pZCBTZWxlY3RvckRhdGFMaXN0Ojppbml0aWFsaXplKGNv
bnN0IENTU1NlbGVjdG9yTGlzdCYgc2VsZWN0b3JMaXN0KQogeworICAgIEFTU0VSVChtX3NlbGVj
dG9ycy5pc0VtcHR5KCkpOworCiAgICAgZm9yIChDU1NTZWxlY3Rvciogc2VsZWN0b3IgPSBzZWxl
Y3Rvckxpc3QuZmlyc3QoKTsgc2VsZWN0b3I7IHNlbGVjdG9yID0gQ1NTU2VsZWN0b3JMaXN0Ojpu
ZXh0KHNlbGVjdG9yKSkKICAgICAgICAgbV9zZWxlY3RvcnMuYXBwZW5kKFNlbGVjdG9yRGF0YShz
ZWxlY3RvciwgU2VsZWN0b3JDaGVja2VyOjppc0Zhc3RDaGVja2FibGVTZWxlY3RvcihzZWxlY3Rv
cikpKTsKIH0KLSAgICAKLVBhc3NSZWZQdHI8Tm9kZUxpc3Q+IFNlbGVjdG9yUXVlcnk6OnF1ZXJ5
QWxsKCkgY29uc3QKKworYm9vbCBTZWxlY3RvckRhdGFMaXN0OjptYXRjaGVzKGNvbnN0IFNlbGVj
dG9yQ2hlY2tlciYgc2VsZWN0b3JDaGVja2VyLCBFbGVtZW50KiB0YXJnZXRFbGVtZW50KSBjb25z
dAoreworICAgIEFTU0VSVCh0YXJnZXRFbGVtZW50KTsKKworICAgIHVuc2lnbmVkIHNlbGVjdG9y
Q291bnQgPSBtX3NlbGVjdG9ycy5zaXplKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IHNlbGVjdG9yQ291bnQ7ICsraSkgeworICAgICAgICBpZiAoc2VsZWN0b3JDaGVja2VyLmNoZWNr
U2VsZWN0b3IobV9zZWxlY3RvcnNbaV0uc2VsZWN0b3IsIHRhcmdldEVsZW1lbnQsIG1fc2VsZWN0
b3JzW2ldLmlzRmFzdENoZWNrYWJsZSkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK1Bhc3NSZWZQdHI8Tm9kZUxpc3Q+IFNlbGVjdG9y
RGF0YUxpc3Q6OnF1ZXJ5QWxsKGNvbnN0IFNlbGVjdG9yQ2hlY2tlciYgc2VsZWN0b3JDaGVja2Vy
LCBOb2RlKiByb290Tm9kZSkgY29uc3QKIHsKICAgICBWZWN0b3I8UmVmUHRyPE5vZGU+ID4gcmVz
dWx0OwotICAgIGV4ZWN1dGU8ZmFsc2U+KHJlc3VsdCk7CisgICAgZXhlY3V0ZTxmYWxzZT4oc2Vs
ZWN0b3JDaGVja2VyLCByb290Tm9kZSwgcmVzdWx0KTsKICAgICByZXR1cm4gU3RhdGljTm9kZUxp
c3Q6OmFkb3B0KHJlc3VsdCk7CiB9CiAKLVBhc3NSZWZQdHI8RWxlbWVudD4gU2VsZWN0b3JRdWVy
eTo6cXVlcnlGaXJzdCgpIGNvbnN0IAoteyAKK1Bhc3NSZWZQdHI8RWxlbWVudD4gU2VsZWN0b3JE
YXRhTGlzdDo6cXVlcnlGaXJzdChjb25zdCBTZWxlY3RvckNoZWNrZXImIHNlbGVjdG9yQ2hlY2tl
ciwgTm9kZSogcm9vdE5vZGUpIGNvbnN0Cit7CiAgICAgVmVjdG9yPFJlZlB0cjxOb2RlPiA+IHJl
c3VsdDsKLSAgICBleGVjdXRlPHRydWU+KHJlc3VsdCk7CisgICAgZXhlY3V0ZTx0cnVlPihzZWxl
Y3RvckNoZWNrZXIsIHJvb3ROb2RlLCByZXN1bHQpOwogICAgIGlmIChyZXN1bHQuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gMDsKICAgICBBU1NFUlQocmVzdWx0LnNpemUoKSA9PSAxKTsKQEAg
LTU5LDcgKzgxLDcgQEAgUGFzc1JlZlB0cjxFbGVtZW50PiBTZWxlY3RvclF1ZXJ5OjpxdWVyeUZp
cnN0KCkgY29uc3QKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KHJlc3VsdC5maXJz
dCgpLmdldCgpKTsKIH0KIAotYm9vbCBTZWxlY3RvclF1ZXJ5OjpjYW5Vc2VJZExvb2t1cCgpIGNv
bnN0Citib29sIFNlbGVjdG9yRGF0YUxpc3Q6OmNhblVzZUlkTG9va3VwKE5vZGUqIHJvb3ROb2Rl
KSBjb25zdAogewogICAgIC8vIFdlIG5lZWQgdG8gcmV0dXJuIHRoZSBtYXRjaGVzIGluIGRvY3Vt
ZW50IG9yZGVyLiBUbyB1c2UgaWQgbG9va3VwIHdoaWxlIHRoZXJlIGlzIHBvc3NpYmxpdHkgb2Yg
bXVsdGlwbGUgbWF0Y2hlcwogICAgIC8vIHdlIHdvdWxkIG5lZWQgdG8gc29ydCB0aGUgcmVzdWx0
cy4gRm9yIG5vdywganVzdCB0cmF2ZXJzZSB0aGUgZG9jdW1lbnQgaW4gdGhhdCBjYXNlLgpAQCAt
NjcsMzcgKzg5LDM3IEBAIGJvb2wgU2VsZWN0b3JRdWVyeTo6Y2FuVXNlSWRMb29rdXAoKSBjb25z
dAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKG1fc2VsZWN0b3JzWzBdLnNlbGVjdG9y
LT5tX21hdGNoICE9IENTU1NlbGVjdG9yOjpJZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IGlmICghbV9yb290Tm9kZS0+aW5Eb2N1bWVudCgpKQorICAgIGlmICghcm9vdE5vZGUtPmluRG9j
dW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChtX3Jvb3ROb2RlLT5kb2N1
bWVudCgpLT5pblF1aXJrc01vZGUoKSkKKyAgICBpZiAocm9vdE5vZGUtPmRvY3VtZW50KCktPmlu
UXVpcmtzTW9kZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKG1fcm9vdE5vZGUt
PmRvY3VtZW50KCktPmNvbnRhaW5zTXVsdGlwbGVFbGVtZW50c1dpdGhJZChtX3NlbGVjdG9yc1sw
XS5zZWxlY3Rvci0+dmFsdWUoKSkpCisgICAgaWYgKHJvb3ROb2RlLT5kb2N1bWVudCgpLT5jb250
YWluc011bHRpcGxlRWxlbWVudHNXaXRoSWQobV9zZWxlY3RvcnNbMF0uc2VsZWN0b3ItPnZhbHVl
KCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHRlbXBs
YXRlIDxib29sIGZpcnN0TWF0Y2hPbmx5Pgotdm9pZCBTZWxlY3RvclF1ZXJ5OjpleGVjdXRlKFZl
Y3RvcjxSZWZQdHI8Tm9kZT4gPiYgbWF0Y2hlZEVsZW1lbnRzKSBjb25zdAordm9pZCBTZWxlY3Rv
ckRhdGFMaXN0OjpleGVjdXRlKGNvbnN0IFNlbGVjdG9yQ2hlY2tlciYgc2VsZWN0b3JDaGVja2Vy
LCBOb2RlKiByb290Tm9kZSwgVmVjdG9yPFJlZlB0cjxOb2RlPiA+JiBtYXRjaGVkRWxlbWVudHMp
IGNvbnN0CiB7Ci0gICAgaWYgKGNhblVzZUlkTG9va3VwKCkpIHsKKyAgICBpZiAoY2FuVXNlSWRM
b29rdXAocm9vdE5vZGUpKSB7CiAgICAgICAgIEFTU0VSVChtX3NlbGVjdG9ycy5zaXplKCkgPT0g
MSk7CiAgICAgICAgIENTU1NlbGVjdG9yKiBzZWxlY3RvciA9IG1fc2VsZWN0b3JzWzBdLnNlbGVj
dG9yOwotICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gbV9yb290Tm9kZS0+ZG9jdW1lbnQoKS0+
Z2V0RWxlbWVudEJ5SWQoc2VsZWN0b3ItPnZhbHVlKCkpOwotICAgICAgICBpZiAoIWVsZW1lbnQg
fHwgIShtX3Jvb3ROb2RlLT5pc0RvY3VtZW50Tm9kZSgpIHx8IGVsZW1lbnQtPmlzRGVzY2VuZGFu
dE9mKG1fcm9vdE5vZGUpKSkKKyAgICAgICAgRWxlbWVudCogZWxlbWVudCA9IHJvb3ROb2RlLT5k
b2N1bWVudCgpLT5nZXRFbGVtZW50QnlJZChzZWxlY3Rvci0+dmFsdWUoKSk7CisgICAgICAgIGlm
ICghZWxlbWVudCB8fCAhKHJvb3ROb2RlLT5pc0RvY3VtZW50Tm9kZSgpIHx8IGVsZW1lbnQtPmlz
RGVzY2VuZGFudE9mKHJvb3ROb2RlKSkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGlm
IChtX3NlbGVjdG9yQ2hlY2tlci5jaGVja1NlbGVjdG9yKHNlbGVjdG9yLCBlbGVtZW50LCBtX3Nl
bGVjdG9yc1swXS5pc0Zhc3RDaGVja2FibGUpKQorICAgICAgICBpZiAoc2VsZWN0b3JDaGVja2Vy
LmNoZWNrU2VsZWN0b3IobV9zZWxlY3RvcnNbMF0uc2VsZWN0b3IsIGVsZW1lbnQsIG1fc2VsZWN0
b3JzWzBdLmlzRmFzdENoZWNrYWJsZSkpCiAgICAgICAgICAgICBtYXRjaGVkRWxlbWVudHMuYXBw
ZW5kKGVsZW1lbnQpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAorCiAgICAgdW5zaWdu
ZWQgc2VsZWN0b3JDb3VudCA9IG1fc2VsZWN0b3JzLnNpemUoKTsKLSAgICAKLSAgICBOb2RlKiBu
ID0gbV9yb290Tm9kZS0+Zmlyc3RDaGlsZCgpOworCisgICAgTm9kZSogbiA9IHJvb3ROb2RlLT5m
aXJzdENoaWxkKCk7CiAgICAgd2hpbGUgKG4pIHsKICAgICAgICAgaWYgKG4tPmlzRWxlbWVudE5v
ZGUoKSkgewogICAgICAgICAgICAgRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PEVsZW1l
bnQqPihuKTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzZWxlY3RvckNv
dW50OyArK2kpIHsKLSAgICAgICAgICAgICAgICBpZiAobV9zZWxlY3RvckNoZWNrZXIuY2hlY2tT
ZWxlY3RvcihtX3NlbGVjdG9yc1tpXS5zZWxlY3RvciwgZWxlbWVudCwgbV9zZWxlY3RvcnNbaV0u
aXNGYXN0Q2hlY2thYmxlKSkgeworICAgICAgICAgICAgICAgIGlmIChzZWxlY3RvckNoZWNrZXIu
Y2hlY2tTZWxlY3RvcihtX3NlbGVjdG9yc1tpXS5zZWxlY3RvciwgZWxlbWVudCwgbV9zZWxlY3Rv
cnNbaV0uaXNGYXN0Q2hlY2thYmxlKSkgewogICAgICAgICAgICAgICAgICAgICBtYXRjaGVkRWxl
bWVudHMuYXBwZW5kKGVsZW1lbnQpOwogICAgICAgICAgICAgICAgICAgICBpZiAoZmlyc3RNYXRj
aE9ubHkpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0xMTEsMTEgKzEzMywy
OCBAQCB2b2lkIFNlbGVjdG9yUXVlcnk6OmV4ZWN1dGUoVmVjdG9yPFJlZlB0cjxOb2RlPiA+JiBt
YXRjaGVkRWxlbWVudHMpIGNvbnN0CiAgICAgICAgIH0KICAgICAgICAgd2hpbGUgKCFuLT5uZXh0
U2libGluZygpKSB7CiAgICAgICAgICAgICBuID0gbi0+cGFyZW50Tm9kZSgpOwotICAgICAgICAg
ICAgaWYgKG4gPT0gbV9yb290Tm9kZSkKKyAgICAgICAgICAgIGlmIChuID09IHJvb3ROb2RlKQog
ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBuID0gbi0+bmV4dFNp
YmxpbmcoKTsKICAgICB9CiB9CiAKK1NlbGVjdG9yUXVlcnk6OlNlbGVjdG9yUXVlcnkoTm9kZSog
cm9vdE5vZGUsIGNvbnN0IENTU1NlbGVjdG9yTGlzdCYgc2VsZWN0b3JMaXN0KQorICAgIDogbV9y
b290Tm9kZShyb290Tm9kZSkKKyAgICAsIG1fc2VsZWN0b3JDaGVja2VyKHJvb3ROb2RlLT5kb2N1
bWVudCgpLCAhcm9vdE5vZGUtPmRvY3VtZW50KCktPmluUXVpcmtzTW9kZSgpKQorICAgICwgbV9z
ZWxlY3RvcnMoc2VsZWN0b3JMaXN0KQoreworfQorCitQYXNzUmVmUHRyPE5vZGVMaXN0PiBTZWxl
Y3RvclF1ZXJ5OjpxdWVyeUFsbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2VsZWN0b3JzLnF1
ZXJ5QWxsKG1fc2VsZWN0b3JDaGVja2VyLCBtX3Jvb3ROb2RlKTsKK30KKworUGFzc1JlZlB0cjxF
bGVtZW50PiBTZWxlY3RvclF1ZXJ5OjpxdWVyeUZpcnN0KCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9zZWxlY3RvcnMucXVlcnlGaXJzdChtX3NlbGVjdG9yQ2hlY2tlciwgbV9yb290Tm9kZSk7Cit9
CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5LmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0b3JRdWVyeS5oCmluZGV4IGI5Njk4MjM3ODQzYmJjNWVl
ZjlhYjU3MTRjMmQ2NGVmMWI4ODE5NzIuLjBmMTA2NzhhZGQ4MjFjODMwY2M2NWU3NzIzYzRhMWY5
MzFhNjQ3NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9yUXVlcnkuaApAQCAtMzcsMjggKzM3LDQ0
IEBAIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBDU1NTZWxlY3RvcjsKIGNsYXNzIENTU1NlbGVjdG9y
TGlzdDsKIAotY2xhc3MgU2VsZWN0b3JRdWVyeSB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
U2VsZWN0b3JRdWVyeSk7CitjbGFzcyBTZWxlY3RvckRhdGFMaXN0IHsKIHB1YmxpYzoKLSAgICBT
ZWxlY3RvclF1ZXJ5KE5vZGUqIHJvb3ROb2RlLCBjb25zdCBDU1NTZWxlY3Rvckxpc3QmKTsKLSAg
ICAKLSAgICBQYXNzUmVmUHRyPE5vZGVMaXN0PiBxdWVyeUFsbCgpIGNvbnN0OwotICAgIFBhc3NS
ZWZQdHI8RWxlbWVudD4gcXVlcnlGaXJzdCgpIGNvbnN0OworICAgIFNlbGVjdG9yRGF0YUxpc3Qo
KTsKKyAgICBleHBsaWNpdCBTZWxlY3RvckRhdGFMaXN0KGNvbnN0IENTU1NlbGVjdG9yTGlzdCYp
OwogCi1wcml2YXRlOgotICAgIGJvb2wgY2FuVXNlSWRMb29rdXAoKSBjb25zdDsKKyAgICB2b2lk
IGluaXRpYWxpemUoY29uc3QgQ1NTU2VsZWN0b3JMaXN0Jik7CiAKLSAgICB0ZW1wbGF0ZSA8Ym9v
bCBmaXJzdE1hdGNoT25seT4KLSAgICB2b2lkIGV4ZWN1dGUoVmVjdG9yPFJlZlB0cjxOb2RlPiA+
JikgY29uc3Q7Ci0gICAgCisgICAgaW50IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NlbGVjdG9y
cy5zaXplKCk7IH0KKworICAgIGJvb2wgbWF0Y2hlcyhjb25zdCBTZWxlY3RvckNoZWNrZXImLCBF
bGVtZW50KikgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gcXVlcnlBbGwoY29uc3Qg
U2VsZWN0b3JDaGVja2VyJiwgTm9kZSogcm9vdE5vZGUpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8
RWxlbWVudD4gcXVlcnlGaXJzdChjb25zdCBTZWxlY3RvckNoZWNrZXImLCBOb2RlKiByb290Tm9k
ZSkgY29uc3Q7CisKK3ByaXZhdGU6CiAgICAgc3RydWN0IFNlbGVjdG9yRGF0YSB7CiAgICAgICAg
IFNlbGVjdG9yRGF0YShDU1NTZWxlY3Rvciogc2VsZWN0b3IsIGJvb2wgaXNGYXN0Q2hlY2thYmxl
KSA6IHNlbGVjdG9yKHNlbGVjdG9yKSwgaXNGYXN0Q2hlY2thYmxlKGlzRmFzdENoZWNrYWJsZSkg
eyB9CiAgICAgICAgIENTU1NlbGVjdG9yKiBzZWxlY3RvcjsKICAgICAgICAgYm9vbCBpc0Zhc3RD
aGVja2FibGU7CiAgICAgfTsKLSAgICBOb2RlKiBtX3Jvb3ROb2RlOworCisgICAgYm9vbCBjYW5V
c2VJZExvb2t1cChOb2RlKiByb290Tm9kZSkgY29uc3Q7CisgICAgdGVtcGxhdGUgPGJvb2wgZmly
c3RNYXRjaE9ubHk+CisgICAgdm9pZCBleGVjdXRlKGNvbnN0IFNlbGVjdG9yQ2hlY2tlciYsIE5v
ZGUqIHJvb3ROb2RlLCBWZWN0b3I8UmVmUHRyPE5vZGU+ID4mKSBjb25zdDsKKwogICAgIFZlY3Rv
cjxTZWxlY3RvckRhdGE+IG1fc2VsZWN0b3JzOworfTsKKworY2xhc3MgU2VsZWN0b3JRdWVyeSB7
CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2VsZWN0b3JRdWVyeSk7CitwdWJsaWM6CisgICAg
U2VsZWN0b3JRdWVyeShOb2RlKiByb290Tm9kZSwgY29uc3QgQ1NTU2VsZWN0b3JMaXN0Jik7CisK
KyAgICBQYXNzUmVmUHRyPE5vZGVMaXN0PiBxdWVyeUFsbCgpIGNvbnN0OworICAgIFBhc3NSZWZQ
dHI8RWxlbWVudD4gcXVlcnlGaXJzdCgpIGNvbnN0OworcHJpdmF0ZToKKyAgICBOb2RlKiBtX3Jv
b3ROb2RlOwogICAgIFNlbGVjdG9yQ2hlY2tlciBtX3NlbGVjdG9yQ2hlY2tlcjsKKyAgICBTZWxl
Y3RvckRhdGFMaXN0IG1fc2VsZWN0b3JzOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9T
aGFkb3dDb250ZW50RWxlbWVudC5jcHAKaW5kZXggZWNlZTZkMGM3ZWU3NmZkZDcyNWUyZmRjZjg3
MmRkMmJiOTNjOTdiYi4uNzNhZDEwOWUwMWE1YjIyZTdiNDg1YzgxN2RlODAzZmVjZjEzYTc5MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Q29udGVudEVsZW1lbnQuY3BwCkBAIC0yOCwy
MSArMjgsMzEgQEAKICNpbmNsdWRlICJTaGFkb3dDb250ZW50RWxlbWVudC5oIgogCiAjaW5jbHVk
ZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiUXVhbGlmaWVkTmFtZS5oIgorI2luY2x1ZGUgIlNo
YWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmgiCiAjaW5jbHVkZSAiU2hhZG93SW5jbHVzaW9uU2Vs
ZWN0b3IuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4
dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8U2hhZG93Q29udGVu
dEVsZW1lbnQ+IFNoYWRvd0NvbnRlbnRFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50
KQorc3RhdGljIGNvbnN0IFF1YWxpZmllZE5hbWUmIHNlbGVjdEF0dHIoKQoreworICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoUXVhbGlmaWVkTmFtZSwgYXR0ciwgKG51bGxBdG9tLCAic2VsZWN0Iiwg
SFRNTE5hbWVzOjp4aHRtbE5hbWVzcGFjZVVSSSkpOworICAgIHJldHVybiBhdHRyOworfQorCitQ
YXNzUmVmUHRyPFNoYWRvd0NvbnRlbnRFbGVtZW50PiBTaGFkb3dDb250ZW50RWxlbWVudDo6Y3Jl
YXRlKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgQXRvbWljU3RyaW5nJiBzZWxlY3QpCiB7CiAg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChRdWFsaWZpZWROYW1lLCB0YWdOYW1lLCAobnVsbEF0b20s
ICJ3ZWJraXRTaGFkb3dDb250ZW50IiwgSFRNTE5hbWVzOjpkaXZUYWcubmFtZXNwYWNlVVJJKCkp
KTsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYWRvd0NvbnRlbnRFbGVtZW50KHRhZ05hbWUs
IGRvY3VtZW50KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFkb3dDb250ZW50RWxlbWVu
dCh0YWdOYW1lLCBkb2N1bWVudCwgc2VsZWN0KSk7CiB9CiAKLVNoYWRvd0NvbnRlbnRFbGVtZW50
OjpTaGFkb3dDb250ZW50RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBEb2N1bWVu
dCogZG9jdW1lbnQpCitTaGFkb3dDb250ZW50RWxlbWVudDo6U2hhZG93Q29udGVudEVsZW1lbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBBdG9t
aWNTdHJpbmcmIHNlbGVjdCkKICAgICA6IFN0eWxlZEVsZW1lbnQobmFtZSwgZG9jdW1lbnQsIENy
ZWF0ZUhUTUxFbGVtZW50KQogICAgICwgbV9pbmNsdXNpb25zKGFkb3B0UHRyKG5ldyBTaGFkb3dJ
bmNsdXNpb25MaXN0KCkpKQogeworICAgIHNldEF0dHJpYnV0ZShzZWxlY3RBdHRyKCksIHNlbGVj
dCk7CiB9CiAKIFNoYWRvd0NvbnRlbnRFbGVtZW50Ojp+U2hhZG93Q29udGVudEVsZW1lbnQoKQpA
QCAtNzYsMTAgKzg2LDkgQEAgdm9pZCBTaGFkb3dDb250ZW50RWxlbWVudDo6ZGV0YWNoKCkKICAg
ICBTdHlsZWRFbGVtZW50OjpkZXRhY2goKTsKIH0KIAotYm9vbCBTaGFkb3dDb250ZW50RWxlbWVu
dDo6c2hvdWxkSW5jbHVkZShOb2RlKikKK2NvbnN0IEF0b21pY1N0cmluZyYgU2hhZG93Q29udGVu
dEVsZW1lbnQ6OnNlbGVjdCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJu
IGdldEF0dHJpYnV0ZShzZWxlY3RBdHRyKCkpOwogfQogCi0KIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TaGFkb3dDb250ZW50RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L1NoYWRvd0NvbnRlbnRFbGVtZW50LmgKaW5kZXggN2IzNjY2MjFiN2I5NjNhNDMwZmMxNDMwOWJk
NDY1ZWFlZGZhMDRhNC4uMDlmODM4NzMwYmMxY2Y4NGE0NjJiNGU3YjAxZTY1ZGRmNGRkZWRkZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50LmgKQEAgLTM2LDIzICsz
NiwyOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFNoYWRvd0NvbnRlbnRTZWxl
Y3RvclF1ZXJ5OwogY2xhc3MgU2hhZG93SW5jbHVzaW9uTGlzdDsKIAogLy8gTk9URTogQ3VycmVu
dCBpbXBsZW1lbnRhdGlvbiBkb2Vzbid0IHN1cHBvcnQgZHluYW1pYyBpbnNlcnRpb24vZGVsZXRp
b24gb2YgU2hhZG93Q29udGVudEVsZW1lbnQuCiAvLyBZb3Ugc2hvdWxkIGNyZWF0ZSBTaGFkb3dD
b250ZW50RWxlbWVudCBkdXJpbmcgdGhlIGhvc3QgY29uc3RydWN0aW9uLgogY2xhc3MgU2hhZG93
Q29udGVudEVsZW1lbnQgOiBwdWJsaWMgU3R5bGVkRWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8U2hhZG93Q29udGVudEVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCopOwor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNoYWRvd0NvbnRlbnRFbGVtZW50PiBjcmVhdGUoRG9jdW1l
bnQqLCBjb25zdCBBdG9taWNTdHJpbmcmIHNlbGVjdCk7CiAKICAgICB2aXJ0dWFsIH5TaGFkb3dD
b250ZW50RWxlbWVudCgpOwotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRJbmNsdWRlKE5vZGUqKTsK
ICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCk7CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaCgpOwog
CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBzZWxlY3QoKSBjb25zdDsKKwogICAgIGNvbnN0IFNo
YWRvd0luY2x1c2lvbkxpc3QqIGluY2x1c2lvbnMoKSBjb25zdCB7IHJldHVybiBtX2luY2x1c2lv
bnMuZ2V0KCk7IH0KIAogcHJvdGVjdGVkOgotICAgIFNoYWRvd0NvbnRlbnRFbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOworICAgIC8vIEZJWE1FOiBDdXJyZW50bHkgdGhp
cyBjb25zdHJ1Y3RvciBhY2NlcHRzIHdpZGVyIHF1ZXJ5IHRoYW4gc2hhZG93IGRvbSBzcGVjLgor
ICAgIC8vIEZvciBleGFtcGxlLCBhIHNlbGVjdG9yIHF1ZXJ5IHNob3VsZCBub3QgaW5jbHVkZSBj
b250ZXh0dWFsIHNlbGVjdG9ycy4KKyAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTc1OTQ2CisgICAgU2hhZG93Q29udGVudEVsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIERvY3VtZW50KiwgY29uc3QgQXRvbWljU3RyaW5nJiBzZWxlY3QpOwogCiBw
cml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBpc0NvbnRlbnRFbGVtZW50KCkgY29uc3QgeyByZXR1
cm4gdHJ1ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0NvbnRlbnRT
ZWxlY3RvclF1ZXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dDb250ZW50U2VsZWN0
b3JRdWVyeS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmY1NjgyMzMwZWNhMjQ3Y2ZjNTYyNTA5YmVkMDJkZTE5
MWYwODc3NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dDb250
ZW50U2VsZWN0b3JRdWVyeS5jcHAKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJTaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeS5oIgorCisjaW5jbHVkZSAi
Q1NTUGFyc2VyLmgiCisjaW5jbHVkZSAiQ1NTU2VsZWN0b3JMaXN0LmgiCisjaW5jbHVkZSAiU2hh
ZG93Q29udGVudEVsZW1lbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitTaGFkb3dDb250
ZW50U2VsZWN0b3JRdWVyeTo6U2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnkoU2hhZG93Q29udGVu
dEVsZW1lbnQqIGVsZW1lbnQpCisgICAgOiBtX2NvbnRlbnRFbGVtZW50KGVsZW1lbnQpCisgICAg
LCBtX3NlbGVjdG9yQ2hlY2tlcihlbGVtZW50LT5kb2N1bWVudCgpLCAhZWxlbWVudC0+ZG9jdW1l
bnQoKS0+aW5RdWlya3NNb2RlKCkpCit7CisgICAgbV9zZWxlY3RvckNoZWNrZXIuc2V0Q29sbGVj
dGluZ1J1bGVzT25seSh0cnVlKTsKKworICAgIGlmIChlbGVtZW50LT5zZWxlY3QoKS5pc0VtcHR5
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIENTU1BhcnNlciBwYXJzZXIodHJ1ZSk7CisgICAg
cGFyc2VyLnBhcnNlU2VsZWN0b3IoZWxlbWVudC0+c2VsZWN0KCksIGVsZW1lbnQtPmRvY3VtZW50
KCksIG1fc2VsZWN0b3JMaXN0KTsKKworICAgIG1fc2VsZWN0b3JzLmluaXRpYWxpemUobV9zZWxl
Y3Rvckxpc3QpOworfQorCitib29sIFNoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5OjptYXRjaGVz
KE5vZGUqIG5vZGUpIGNvbnN0Cit7CisgICAgQVNTRVJUKG5vZGUpOworICAgIGlmICghbm9kZSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgQVNTRVJUKG5vZGUtPnBhcmVudE5vZGUoKSA9
PSBtX2NvbnRlbnRFbGVtZW50LT5zaGFkb3dUcmVlUm9vdE5vZGUoKS0+c2hhZG93SG9zdCgpKTsK
KworICAgIGlmIChtX2NvbnRlbnRFbGVtZW50LT5zZWxlY3QoKS5pc0VtcHR5KCkpCisgICAgICAg
IHJldHVybiB0cnVlOworCisgICAgaWYgKCFub2RlLT5pc0VsZW1lbnROb2RlKCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBtX3NlbGVjdG9ycy5tYXRjaGVzKG1fc2VsZWN0
b3JDaGVja2VyLCBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obm9kZSkpOworfQorCit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnkuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmQ1Njg3M2IzNDMwYzNhMmMyNDdhMTgwYWU0ZGEzZGIxMDRmMDczMGEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnkuaApAQCAt
MCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBt
ZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBTaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeV9oCisjZGVmaW5l
IFNoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5X2gKKworI2luY2x1ZGUgIkNTU1NlbGVjdG9yTGlz
dC5oIgorI2luY2x1ZGUgIlNlbGVjdG9yQ2hlY2tlci5oIgorI2luY2x1ZGUgIlNlbGVjdG9yUXVl
cnkuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBEb2N1bWVudDsKK2NsYXNzIE5vZGU7Citj
bGFzcyBTaGFkb3dDb250ZW50RWxlbWVudDsKKworY2xhc3MgU2hhZG93Q29udGVudFNlbGVjdG9y
UXVlcnkgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNoYWRvd0NvbnRlbnRTZWxlY3RvclF1
ZXJ5KTsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBTaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeShT
aGFkb3dDb250ZW50RWxlbWVudCopOworCisgICAgYm9vbCBtYXRjaGVzKE5vZGUqKSBjb25zdDsK
KworcHJpdmF0ZToKKyAgICBTaGFkb3dDb250ZW50RWxlbWVudCogbV9jb250ZW50RWxlbWVudDsK
KyAgICBTZWxlY3RvckRhdGFMaXN0IG1fc2VsZWN0b3JzOworICAgIENTU1NlbGVjdG9yTGlzdCBt
X3NlbGVjdG9yTGlzdDsKKyAgICBTZWxlY3RvckNoZWNrZXIgbV9zZWxlY3RvckNoZWNrZXI7Cit9
OworCit9CisKKworCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFk
b3dJbmNsdXNpb25TZWxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93SW5jbHVz
aW9uU2VsZWN0b3IuY3BwCmluZGV4IDk4NDFmNTU2NDg4N2M4OTYzNDUzNzQ5ZjIzNzE2NmNhMmU0
NWUxMDUuLjU3ZTlkNDJiZTUxYjVlNDUyYzRkNDA1NGUyMGJhNGM3Yjg1NTQ4YTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dJbmNsdXNpb25TZWxlY3Rvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0luY2x1c2lvblNlbGVjdG9yLmNwcApAQCAtMjgsNiAr
MjgsNyBAQAogI2luY2x1ZGUgIlNoYWRvd0luY2x1c2lvblNlbGVjdG9yLmgiCiAKICNpbmNsdWRl
ICJTaGFkb3dDb250ZW50RWxlbWVudC5oIgorI2luY2x1ZGUgIlNoYWRvd0NvbnRlbnRTZWxlY3Rv
clF1ZXJ5LmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgogCiAKQEAgLTExMSwxMSArMTEyLDEy
IEBAIHZvaWQgU2hhZG93SW5jbHVzaW9uU2VsZWN0b3I6OnNlbGVjdChTaGFkb3dDb250ZW50RWxl
bWVudCogY29udGVudEVsZW1lbnQsIFNoYWRvCiB7CiAgICAgQVNTRVJUKGluY2x1c2lvbnMtPmlz
RW1wdHkoKSk7CiAKKyAgICBTaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeSBxdWVyeShjb250ZW50
RWxlbWVudCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2NhbmRpZGF0ZXMuc2l6ZSgp
OyArK2kpIHsKICAgICAgICAgTm9kZSogY2hpbGQgPSBtX2NhbmRpZGF0ZXNbaV0uZ2V0KCk7CiAg
ICAgICAgIGlmICghY2hpbGQpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKCFj
b250ZW50RWxlbWVudC0+c2hvdWxkSW5jbHVkZShjaGlsZCkpCisgICAgICAgIGlmICghcXVlcnku
bWF0Y2hlcyhjaGlsZCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBSZWZQdHI8
U2hhZG93SW5jbHVzaW9uPiBpbmNsdXNpb24gPSBTaGFkb3dJbmNsdXNpb246OmNyZWF0ZShjb250
ZW50RWxlbWVudCwgY2hpbGQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRv
d0luY2x1c2lvblNlbGVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93SW5jbHVzaW9u
U2VsZWN0b3IuaAppbmRleCBmMWFkYWVlM2Y1NDNhODFjM2ZlZmJmYzQ2ZTAxYjFmZDdmM2IwZThm
Li5kMWE4NzE3NDQxYjE5YzJkNmFmYTBlOGYzNDA3NTg0MTAyMThiNGU1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vU2hhZG93SW5jbHVzaW9uU2VsZWN0b3IuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2hhZG93SW5jbHVzaW9uU2VsZWN0b3IuaApAQCAtMTM3LDcgKzEzNyw2IEBA
IHB1YmxpYzoKICAgICB2b2lkIGRpZFNlbGVjdCgpOwogICAgIGJvb2wgaGFzQ2FuZGlkYXRlcygp
IGNvbnN0IHsgcmV0dXJuICFtX2NhbmRpZGF0ZXMuaXNFbXB0eSgpOyB9CiAKLQogcHJpdmF0ZToK
ICAgICB2b2lkIHJlbW92ZUZyb21TZXQoU2hhZG93SW5jbHVzaW9uTGlzdCopOwogICAgIHZvaWQg
YWRkVG9TZXQoU2hhZG93SW5jbHVzaW9uTGlzdCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RGV0YWlsc0VsZW1lbnQuY3BwCmluZGV4IGZhZDlhZjgwNDQxNDU3MGMxZTc2Y2EyOGM1ZWI1YjE2
MjdjNzAyMjAuLmZjODk1MDk3YjFhZTk2YTM4YWI5YjY1MTc5YzM1MTFjOGEwZDIyNGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHAKQEAgLTM2LDE3ICszNiwy
MSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAK
K3N0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHN1bW1hcnlRdWVyeVNlbGVjdG9yKCkKK3sKKyAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgc2VsZWN0b3IsICgic3VtbWFyeTpm
aXJzdC1vZi10eXBlIikpOworICAgIHJldHVybiBzZWxlY3RvcjsKK307CisKIGNsYXNzIERldGFp
bHNDb250ZW50RWxlbWVudCA6IHB1YmxpYyBTaGFkb3dDb250ZW50RWxlbWVudCB7CiBwdWJsaWM6
CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8RGV0YWlsc0NvbnRlbnRFbGVtZW50PiBjcmVhdGUoRG9j
dW1lbnQqKTsKIAogcHJpdmF0ZToKICAgICBEZXRhaWxzQ29udGVudEVsZW1lbnQoRG9jdW1lbnQq
IGRvY3VtZW50KQotICAgICAgICA6IFNoYWRvd0NvbnRlbnRFbGVtZW50KEhUTUxOYW1lczo6ZGl2
VGFnLCBkb2N1bWVudCkKKyAgICAgICAgOiBTaGFkb3dDb250ZW50RWxlbWVudChIVE1MTmFtZXM6
OmRpdlRhZywgZG9jdW1lbnQsIFdURjo6ZW1wdHlBdG9tKQogICAgIHsKICAgICB9Ci0KLSAgICB2
aXJ0dWFsIGJvb2wgc2hvdWxkSW5jbHVkZShOb2RlKik7CiB9OwogCiBQYXNzUmVmUHRyPERldGFp
bHNDb250ZW50RWxlbWVudD4gRGV0YWlsc0NvbnRlbnRFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQq
IGRvY3VtZW50KQpAQCAtNTQsMjQgKzU4LDE1IEBAIFBhc3NSZWZQdHI8RGV0YWlsc0NvbnRlbnRF
bGVtZW50PiBEZXRhaWxzQ29udGVudEVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lCiAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBEZXRhaWxzQ29udGVudEVsZW1lbnQoZG9jdW1lbnQpKTsK
IH0KIAotYm9vbCBEZXRhaWxzQ29udGVudEVsZW1lbnQ6OnNob3VsZEluY2x1ZGUoTm9kZSogbm9k
ZSkKLXsKLSAgICBIVE1MRGV0YWlsc0VsZW1lbnQqIGRldGFpbHMgPSBzdGF0aWNfY2FzdDxIVE1M
RGV0YWlsc0VsZW1lbnQqPihzaGFkb3dBbmNlc3Rvck5vZGUoKSk7Ci0gICAgcmV0dXJuIGRldGFp
bHMtPm1haW5TdW1tYXJ5KCkgIT0gbm9kZTsKLX0KLQotCiBjbGFzcyBEZXRhaWxzU3VtbWFyeUVs
ZW1lbnQgOiBwdWJsaWMgU2hhZG93Q29udGVudEVsZW1lbnQgewogcHVibGljOgogICAgIHN0YXRp
YyBQYXNzUmVmUHRyPERldGFpbHNTdW1tYXJ5RWxlbWVudD4gY3JlYXRlKERvY3VtZW50Kik7CiAK
IHByaXZhdGU6CiAgICAgRGV0YWlsc1N1bW1hcnlFbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCkK
LSAgICAgICAgOiBTaGFkb3dDb250ZW50RWxlbWVudChIVE1MTmFtZXM6OmRpdlRhZywgZG9jdW1l
bnQpCisgICAgICAgIDogU2hhZG93Q29udGVudEVsZW1lbnQoSFRNTE5hbWVzOjpkaXZUYWcsIGRv
Y3VtZW50LCBzdW1tYXJ5UXVlcnlTZWxlY3RvcigpKQogICAgIHsKICAgICB9Ci0KLSAgICB2aXJ0
dWFsIGJvb2wgc2hvdWxkSW5jbHVkZShOb2RlKik7CiB9OwogCiBQYXNzUmVmUHRyPERldGFpbHNT
dW1tYXJ5RWxlbWVudD4gRGV0YWlsc1N1bW1hcnlFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRv
Y3VtZW50KQpAQCAtNzksMTMgKzc0LDYgQEAgUGFzc1JlZlB0cjxEZXRhaWxzU3VtbWFyeUVsZW1l
bnQ+IERldGFpbHNTdW1tYXJ5RWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWUKICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IERldGFpbHNTdW1tYXJ5RWxlbWVudChkb2N1bWVudCkpOwogfQog
Ci1ib29sIERldGFpbHNTdW1tYXJ5RWxlbWVudDo6c2hvdWxkSW5jbHVkZShOb2RlKiBub2RlKQot
ewotICAgIEhUTUxEZXRhaWxzRWxlbWVudCogZGV0YWlscyA9IHN0YXRpY19jYXN0PEhUTUxEZXRh
aWxzRWxlbWVudCo+KHNoYWRvd0FuY2VzdG9yTm9kZSgpKTsKLSAgICByZXR1cm4gZGV0YWlscy0+
bWFpblN1bW1hcnkoKSA9PSBub2RlOwotfQotCi0KIFBhc3NSZWZQdHI8SFRNTERldGFpbHNFbGVt
ZW50PiBIVE1MRGV0YWlsc0VsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdO
YW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiB7CiAgICAgUmVmUHRyPEhUTUxEZXRhaWxzRWxlbWVu
dD4gcmVzdWx0ID0gYWRvcHRSZWYobmV3IEhUTUxEZXRhaWxzRWxlbWVudCh0YWdOYW1lLCBkb2N1
bWVudCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3VtbWFyeUVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3VtbWFyeUVsZW1lbnQuY3BwCmluZGV4
IGVjZjEwODVjZTMwZmUwZjNiOTNlMWNkZTI1ZWI1NDRmYTdkYjRmNGIuLmNjOGMwNTk4YmZlMWY4
ZmQ2ZDYxYmZlZjE1MmU0MjIwMzZlNTVkYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFN1bW1hcnlFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxT
dW1tYXJ5RWxlbWVudC5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgog
ICAgIFN1bW1hcnlDb250ZW50RWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCi0gICAgICAgIDog
U2hhZG93Q29udGVudEVsZW1lbnQoSFRNTE5hbWVzOjpkaXZUYWcsIGRvY3VtZW50KQorICAgICAg
ICA6IFNoYWRvd0NvbnRlbnRFbGVtZW50KEhUTUxOYW1lczo6ZGl2VGFnLCBkb2N1bWVudCwgZW1w
dHlBdG9tKQogICAgIHsKICAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3Bw
CmluZGV4IDc4M2MzODA1NjkzYWVjNjNkNGQ5ODViZDc4YzM4NGZkNDQ4NGM0ZWMuLjZjMGFhMjQ1
NmNlZWVkYzFhN2FhMDRjZmU5MjRiNjUwNTA5MzU5NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5jcHAKQEAgLTEyNiwxNCArMTI2LDE0IEBAIGJvb2wgSW50ZXJuYWxzOjppc1ByZWxv
YWRlZChEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgdXJsKQogICAgIHJldHVybiBk
b2N1bWVudC0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+aXNQcmVsb2FkZWQodXJsKTsKIH0KIAot
UGFzc1JlZlB0cjxFbGVtZW50PiBJbnRlcm5hbHM6OmNyZWF0ZVNoYWRvd0NvbnRlbnRFbGVtZW50
KERvY3VtZW50KiBkb2N1bWVudCwgRXhjZXB0aW9uQ29kZSYgZWMpCitQYXNzUmVmUHRyPEVsZW1l
bnQ+IEludGVybmFsczo6Y3JlYXRlU2hhZG93Q29udGVudEVsZW1lbnQoRG9jdW1lbnQqIGRvY3Vt
ZW50LCBjb25zdCBTdHJpbmcmIHNlbGVjdCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYg
KCFkb2N1bWVudCkgewogICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKICAgICAgICAg
cmV0dXJuIDA7CiAgICAgfQogCi0gICAgcmV0dXJuIFNoYWRvd0NvbnRlbnRFbGVtZW50OjpjcmVh
dGUoZG9jdW1lbnQpOworICAgIHJldHVybiBTaGFkb3dDb250ZW50RWxlbWVudDo6Y3JlYXRlKGRv
Y3VtZW50LCBzZWxlY3QpOwogfQogCiBFbGVtZW50KiBJbnRlcm5hbHM6OmdldEVsZW1lbnRCeUlk
SW5TaGFkb3dSb290KE5vZGUqIHNoYWRvd1Jvb3QsIGNvbnN0IFN0cmluZyYgaWQsIEV4Y2VwdGlv
bkNvZGUmIGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
aCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggZWQ0NzM3MDU1Yjk5
MzgzZGE5YjI4MDIxYWYzZjY5NTljNjFkMzVmNy4uYzk2N2ZjZWU3NTgzMDlhZTIxODI3ZDlmMmRk
MTlhMDMzOTgyYmJiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC01Nyw3ICs1
Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZVNoYWRvd1Jvb3QoRWxlbWVudCogaG9zdCwg
RXhjZXB0aW9uQ29kZSYpOwogICAgIEVsZW1lbnQqIGluY2x1ZGVyRm9yKE5vZGUqLCBFeGNlcHRp
b25Db2RlJik7CiAgICAgU3RyaW5nIHNoYWRvd1BzZXVkb0lkKEVsZW1lbnQqLCBFeGNlcHRpb25D
b2RlJik7Ci0gICAgUGFzc1JlZlB0cjxFbGVtZW50PiBjcmVhdGVTaGFkb3dDb250ZW50RWxlbWVu
dChEb2N1bWVudCosIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNzUmVmUHRyPEVsZW1lbnQ+IGNy
ZWF0ZVNoYWRvd0NvbnRlbnRFbGVtZW50KERvY3VtZW50KiwgY29uc3QgU3RyaW5nJiwgRXhjZXB0
aW9uQ29kZSYpOwogICAgIEVsZW1lbnQqIGdldEVsZW1lbnRCeUlkSW5TaGFkb3dSb290KE5vZGUq
IHNoYWRvd1Jvb3QsIGNvbnN0IFN0cmluZyYgaWQsIEV4Y2VwdGlvbkNvZGUmKTsKIAogI2lmIEVO
QUJMRShJTlBVVF9DT0xPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCBm
NTZkMWFmNzRhOGUzNWRkNDdiZDRlNmM0OWYxMjVlN2VhYWMzYTU1Li41ZjAwOGQwYThhZmI2OGQ2
MDUwMjU4ZDhiNjU0YzhmNzE1M2E3MGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
aWRsCkBAIC0zNSw3ICszNSw3IEBAIG1vZHVsZSB3aW5kb3cgewogICAgICAgICBFbGVtZW50IGlu
Y2x1ZGVyRm9yKGluIE5vZGUgbm9kZSkgcmFpc2VzIChET01FeGNlcHRpb24pOwogICAgICAgICB2
b2lkIHJlbW92ZVNoYWRvd1Jvb3QoaW4gRWxlbWVudCBob3N0KSByYWlzZXMgKERPTUV4Y2VwdGlv
bik7CiAgICAgICAgIERPTVN0cmluZyBzaGFkb3dQc2V1ZG9JZChpbiBFbGVtZW50IGVsZW1lbnQp
IHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKLSAgICAgICAgRWxlbWVudCBjcmVhdGVTaGFkb3dDb250
ZW50RWxlbWVudChpbiBEb2N1bWVudCBkb2N1bWVudCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7Cisg
ICAgICAgIEVsZW1lbnQgY3JlYXRlU2hhZG93Q29udGVudEVsZW1lbnQoaW4gRG9jdW1lbnQgZG9j
dW1lbnQsIGluIFtPcHRpb25hbD1DYWxsV2l0aE51bGxWYWx1ZV0gRE9NU3RyaW5nIHNlbGVjdCkg
cmFpc2VzKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIEVsZW1lbnQgZ2V0RWxlbWVudEJ5SWRJblNo
YWRvd1Jvb3QoaW4gTm9kZSBzaGFkb3dSb290LCBpbiBET01TdHJpbmcgaWQpIHJhaXNlcyhET01F
eGNlcHRpb24pOwogCiAjaWYgZGVmaW5lZChFTkFCTEVfSU5QVVRfQ09MT1IpICYmIEVOQUJMRV9J
TlBVVF9DT0xPUgpkaWZmIC0tZ2l0IGEvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlciBi
L1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKaW5kZXggMTViNjk1N2E5ZTI0MjMxOTBi
YWMxZGQyMWNmYjE2NzNmZDczMThkYS4uYjIyNWYwNmJmOWQyNDU2MzExZGRlYjgxNDE1NWE5Y2I1
NjJjNWI2YiAxMDA2NDQKLS0tIGEvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgorKysg
Yi9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCkBAIC01Myw3ICs1Myw3IEBAIF9aTjdX
ZWJDb3JlMTdjYWNoZURPTVN0cnVjdHVyZUVQTlNfMTdKU0RPTUdsb2JhbE9iamVjdEVQTjNKU0M5
U3RydWN0dXJlRVBLTlMyXzlDCiBfWk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjM5c2V0
UmVzb3VyY2VzRGF0YVNpemVMaW1pdHNGcm9tSW50ZXJuYWxzRWlpOwogX1pON1dlYkNvcmUyME5v
ZGVSZW5kZXJpbmdDb250ZXh0QzFFUE5TXzROb2RlRTsKIF9aTjdXZWJDb3JlMjBOb2RlUmVuZGVy
aW5nQ29udGV4dEQxRXY7Ci1fWk43V2ViQ29yZTIwU2hhZG93Q29udGVudEVsZW1lbnQ2Y3JlYXRl
RVBOU184RG9jdW1lbnRFOworX1pON1dlYkNvcmUyMFNoYWRvd0NvbnRlbnRFbGVtZW50NmNyZWF0
ZUVQTlNfOERvY3VtZW50RVJLTjNXVEYxMkF0b21pY1N0cmluZ0U7CiBfWk43V2ViQ29yZTIxZ2V0
Q2FjaGVkRE9NU3RydWN0dXJlRVBOU18xN0pTRE9NR2xvYmFsT2JqZWN0RVBLTjNKU0M5Q2xhc3NJ
bmZvRTsKIF9aTjdXZWJDb3JlMjJleHRlcm5hbFJlcHJlc2VudGF0aW9uRVBOU183RWxlbWVudEVq
OwogX1pON1dlYkNvcmUyNERvY3VtZW50TWFya2VyQ29udHJvbGxlcjEwbWFya2Vyc0ZvckVQTlNf
NE5vZGVFTlNfMTREb2N1bWVudE1hcmtlcjExTWFya2VyVHlwZXNFOwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDY3NjUwNTUw
ODU3ZjNhNGMzNmI4ZjE5Yzg4YzljOGJjMjI4MzcxMTcuLjQ4NWQ5ODZjNDllOTg3MzgwN2QzMzll
NTE0MDExZTA1OGVmOGMxNTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wMS0xMSAgU2hp
bnlhIEthd2FuYWthICA8c2hpbnlha0Bnb29nbGUuY29tPgorCisgICAgICAgIFNoYWRvd0NvbnRl
bnRFbGVtZW50IHNob3VsZCBiZSBhYmxlIHRvIHVzZSBxdWVyeS4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc1MzAyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgSGFqaW1lIE1vcml0YS4KKworICAgICAgICBUZXN0cyBmb3IgU2hhZG93Q29udGVudEVsZW1l
bnQgcXVlcnkuCisKKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWNvbnRlbnRzLXNl
bGVjdC1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvc2hh
ZG93LWNvbnRlbnRzLXNlbGVjdC5odG1sOiBBZGRlZC4KKwogMjAxMi0wMS0xMSAgRGFuIEJlcm5z
dGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMDY3OTAz
NT4gSW1wbGVtZW50IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IHtuby19Y29tbW9uLWxpZ2F0dXJl
cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1jb250ZW50
cy1zZWxlY3QtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFk
b3ctY29udGVudHMtc2VsZWN0LWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDM3OTY1YmEyYzky
N2JjMjQ4Njk1ODQ1M2MxY2M2NzUyOTczZTVlMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctY29udGVudHMtc2VsZWN0LWV4cGVjdGVkLmh0bWwK
QEAgLTAsMCArMSw0MSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHN0eWxl
PgorLyogcmVsYXRpdmUgcG9zaXRpb25pbmcgZW5zdXJlcyB1bmRlcmx5aW5nIFJlbmRlckxheWVy
ICovCisuY29udGFpbmVyIHsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cit9Cis8L3N0eWxlPgor
PC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJjb250YWluZXIiPgorPCEtLSB0ZXN0U2VsZWN0SXNO
dWxsIC0tPgorPGRpdj48c3Bhbj5IZWxsbyw8L3NwYW4+PHNwYW4+Y29udGVudDwvc3Bhbj48c3Bh
bj5Xb3JsZC48L3NwYW4+PC9kaXY+Cis8IS0tIHRlc3RTZWxlY3RJc0lkIC0tPgorPGRpdj48c3Bh
bj5IZWxsbyw8L3NwYW4+PHNwYW4+Y29udGVudDwvc3Bhbj48c3Bhbj5Xb3JsZC48L3NwYW4+PC9k
aXY+Cis8IS0tIHRlc3RTZWxlY3RJc0lkQnV0Tm90TWF0Y2hlZCAtLT4KKzxkaXY+PHNwYW4+SGVs
bG8sPC9zcGFuPjxzcGFuPldvcmxkLjwvc3Bhbj48L2Rpdj4KKzwhLS0gdGVzdFNlbGVjdElzSWRC
dXROb3RDaGlsZCAtLT4KKzxkaXY+PHNwYW4+SGVsbG8sPC9zcGFuPjxzcGFuPldvcmxkLjwvc3Bh
bj48L2Rpdj4KKzwhLS0gdGVzdFNlbGVjdElzTXVsdGlJZCAtLT4KKzxkaXY+PHNwYW4+SGVsbG8s
PC9zcGFuPjxzcGFuPmNvbnRlbnQ8L3NwYW4+PHNwYW4+Y29udGVudDwvc3Bhbj48c3Bhbj5Xb3Js
ZC48L3NwYW4+PC9kaXY+Cis8IS0tIHRlc3RTZWxlY3RJc1R5cGUgLS0+Cis8ZGl2PjxzcGFuPkhl
bGxvLDwvc3Bhbj48c3Bhbj5jb250ZW50PC9zcGFuPjxzcGFuPldvcmxkLjwvc3Bhbj48L2Rpdj4K
KzwhLS0gdGVzdFNlbGVjdElzVHlwZVdpdGhBdHRyaWJ1dGUgLS0+Cis8ZGl2PjxzcGFuPkhlbGxv
LDwvc3Bhbj48c3Bhbj5jb250ZW50PC9zcGFuPjxzcGFuPldvcmxkLjwvc3Bhbj48L2Rpdj4KKzwh
LS0gdGVzdFNlbGVjdElzVHlwZVdpdGhGaXJzdE9mVHlwZSAtLT4KKzxkaXY+PHNwYW4+SGVsbG8s
PC9zcGFuPjxzcGFuPmNvbnRlbnQ8L3NwYW4+PHNwYW4+V29ybGQuPC9zcGFuPjwvZGl2PgorPCEt
LSB0ZXN0U2VsZWN0SXNUeXBlV2l0aEZpcnN0T2ZUeXBlMiAtLT4KKzxkaXY+PHNwYW4+SGVsbG8s
PC9zcGFuPjxzcGFuPmNvbnRlbnQ8L3NwYW4+PHNwYW4+V29ybGQuPC9zcGFuPjwvZGl2PgorPCEt
LSB0ZXN0U2VsZWN0SXNUeXBlV2l0aExhc3RPZlR5cGUgLS0+Cis8ZGl2PjxzcGFuPkhlbGxvLDwv
c3Bhbj48c3Bhbj5jb250ZW50PC9zcGFuPjxzcGFuPldvcmxkLjwvc3Bhbj48L2Rpdj4KKzwhLS0g
dGVzdFNlbGVjdElzRGV0YWlscyAtLT4KKzxkaXY+PHNwYW4+SGVsbG8sPC9zcGFuPjxkZXRhaWxz
PmNvbnRlbnQ8L2RldGFpbHM+PHNwYW4+V29ybGQuPC9zcGFuPjwvZGl2PgorPCEtLSB0ZXN0U2Vs
ZWN0SXNEZXRhaWxzMiAtLT4KKzxkaXY+PHNwYW4+SGVsbG8sPC9zcGFuPjxkZXRhaWxzPjxzdW1t
YXJ5PmNvbnRlbnQ8L3N1bW1hcnk+PC9kZXRhaWxzPjxzcGFuPldvcmxkLjwvc3Bhbj48L2Rpdj4K
KzwhLS0gdGVzdFNlbGVjdFdoZW5EeW5hbWljYWxseUNoaWxkcmVuQ2hhbmdlZCAtLT4KKzxkaXY+
PHNwYW4+SGVsbG8sPC9zcGFuPjxzcGFuPmNvbnRlbnQ8L3NwYW4+PHNwYW4+V29ybGQuPC9zcGFu
PjwvZGl2PgorPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LWNvbnRlbnRzLXNlbGVjdC5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1jb250ZW50cy1zZWxlY3QuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42NzkyOTY3YTkzZTU5NjJkYjVhZTdmMjliYjI5YmNhMDFjZWNmNTFmCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1jb250ZW50cy1zZWxlY3Qu
aHRtbApAQCAtMCwwICsxLDE3MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PHN0eWxlPgorLyogcmVsYXRpdmUgcG9zaXRpb25pbmcgZW5zdXJlcyB1bmRlcmx5aW5nIFJlbmRl
ckxheWVyICovCisuY29udGFpbmVyIHsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cit9Cis8L3N0
eWxlPgorPHNjcmlwdD4KK2Z1bmN0aW9uIGFwcGVuZFNoYWRvdyh0YXJnZXQsIHNlbGVjdCkgewor
ICAgIHZhciByb290ID0gaW50ZXJuYWxzLmVuc3VyZVNoYWRvd1Jvb3QodGFyZ2V0KTsKKworICAg
IHZhciBjaGlsZDAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CisgICAgY2hpbGQw
LmlubmVySFRNTCA9ICJIZWxsbywiOworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY2hpbGQwKTsKKwor
ICAgIHZhciBjb250ZW50ID0gaW50ZXJuYWxzLmNyZWF0ZVNoYWRvd0NvbnRlbnRFbGVtZW50KGRv
Y3VtZW50LCBzZWxlY3QpOworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY29udGVudCk7CisKKyAgICB2
YXIgY2hpbGQxID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOworICAgIGNoaWxkMS5p
bm5lckhUTUwgPSAiV29ybGQuIjsKKyAgICByb290LmFwcGVuZENoaWxkKGNoaWxkMSk7Cit9CisK
K2Z1bmN0aW9uIHRlc3RTZWxlY3RJc051bGwoKSB7CisgICAgdmFyIHRhcmdldCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHRhcmdldC5pbm5lckhUTUwgPSAiPHNwYW4+Y29u
dGVudDwvc3Bhbj4iOworCisgICAgYXBwZW5kU2hhZG93KHRhcmdldCwgIiIpOworCisgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRhaW5lcicpLmFwcGVuZENoaWxkKHRhcmdldCk7Cit9
CisKK2Z1bmN0aW9uIHRlc3RTZWxlY3RJc0lkKCkgeworICAgIHZhciB0YXJnZXQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICB0YXJnZXQuaW5uZXJIVE1MID0gIjxzcGFuIGlk
PSdmb28nPmNvbnRlbnQ8L3NwYW4+PHNwYW4gaWQ9J2F6dW55YW4nPnBlcm9wZXJvPC9zcGFuPiI7
CisKKyAgICBhcHBlbmRTaGFkb3codGFyZ2V0LCAiI2ZvbyIpOworCisgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2NvbnRhaW5lcicpLmFwcGVuZENoaWxkKHRhcmdldCk7Cit9CisKK2Z1bmN0
aW9uIHRlc3RTZWxlY3RJc0lkQnV0Tm90TWF0Y2hlZCgpIHsKKyAgICB2YXIgdGFyZ2V0ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgdGFyZ2V0LmlubmVySFRNTCA9ICI8c3Bh
biBpZD0nZm9vJz5jb250ZW50PC9zcGFuPjxzcGFuIGlkPSdhenVueWFuJz5wZXJvcGVybzwvc3Bh
bj4iOworCisgICAgYXBwZW5kU2hhZG93KHRhcmdldCwgIiNmb29iYXIiKTsKKworICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdjb250YWluZXInKS5hcHBlbmRDaGlsZCh0YXJnZXQpOworfQor
CitmdW5jdGlvbiB0ZXN0U2VsZWN0SXNJZEJ1dE5vdENoaWxkKCkgeworICAgIHZhciB0YXJnZXQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICB0YXJnZXQuaW5uZXJIVE1MID0g
IjxzcGFuPjxzcGFuIGlkPSdmb28nPmNvbnRlbnQ8L3NwYW4+PHNwYW4gaWQ9J2F6dW55YW4nPnBl
cm9wZXJvPC9zcGFuPjwvc3Bhbj4iOworCisgICAgYXBwZW5kU2hhZG93KHRhcmdldCwgIiNmb28i
KTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250YWluZXInKS5hcHBlbmRDaGls
ZCh0YXJnZXQpOworfQorCitmdW5jdGlvbiB0ZXN0U2VsZWN0SXNNdWx0aUlkKCkgeworICAgIHZh
ciB0YXJnZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICB0YXJnZXQuaW5u
ZXJIVE1MID0gIjxzcGFuIGlkPSdmb28nPmNvbnRlbnQ8L3NwYW4+PHNwYW4gaWQ9J2F6dW55YW4n
PnBlcm9wZXJvPC9zcGFuPjxzcGFuIGlkPSdmb28nPmNvbnRlbnQ8L3NwYW4+IjsKKworICAgIGFw
cGVuZFNoYWRvdyh0YXJnZXQsICIjZm9vIik7CisKKyAgICAvLyBBbGwgbWF0Y2hlZCBlbGVtZW50
cyB3aWxsIGJlIHNlbGVjdGVkLgorICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250YWlu
ZXInKS5hcHBlbmRDaGlsZCh0YXJnZXQpOworfQorCitmdW5jdGlvbiB0ZXN0U2VsZWN0SXNUeXBl
KCkgeworICAgIHZhciB0YXJnZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAg
ICB0YXJnZXQuaW5uZXJIVE1MID0gIjxkaXY+YXp1bnlhbjwvZGl2PjxzcGFuPmNvbnRlbnQ8L3Nw
YW4+PGRpdj5wZXJvcGVybzwvZGl2PiI7CisKKyAgICBhcHBlbmRTaGFkb3codGFyZ2V0LCAic3Bh
biIpOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRhaW5lcicpLmFwcGVuZENo
aWxkKHRhcmdldCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RTZWxlY3RJc1R5cGVXaXRoQXR0cmlidXRl
KCkgeworICAgIHZhciB0YXJnZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAg
ICB0YXJnZXQuaW5uZXJIVE1MID0gIjxzcGFuPmF6dW55YW48L3NwYW4+PHNwYW4gdGl0bGU9J2Nv
bnRlbnQnPmNvbnRlbnQ8L3NwYW4+PHNwYW4+cGVyb3Blcm88L3NwYW4+IjsKKworICAgIGFwcGVu
ZFNoYWRvdyh0YXJnZXQsICJzcGFuW3RpdGxlPSdjb250ZW50J10iKTsKKworICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdjb250YWluZXInKS5hcHBlbmRDaGlsZCh0YXJnZXQpOworfQorCitm
dW5jdGlvbiB0ZXN0U2VsZWN0SXNUeXBlV2l0aEZpcnN0T2ZUeXBlKCkgeworICAgIHZhciB0YXJn
ZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICB0YXJnZXQuaW5uZXJIVE1M
ID0gIjxkaXY+YXp1bnlhbjwvZGl2PjxzcGFuPmNvbnRlbnQ8L3NwYW4+PHNwYW4+cGVyb3Blcm88
L3NwYW4+IjsKKworICAgIGFwcGVuZFNoYWRvdyh0YXJnZXQsICJzcGFuOmZpcnN0LW9mLXR5cGUi
KTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250YWluZXInKS5hcHBlbmRDaGls
ZCh0YXJnZXQpOworfQorCitmdW5jdGlvbiB0ZXN0U2VsZWN0SXNUeXBlV2l0aEZpcnN0T2ZUeXBl
MigpIHsKKyAgICB2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Cisg
ICAgdGFyZ2V0LmlubmVySFRNTCA9ICI8ZGl2PjxzcGFuPmF6dW55YW48L3NwYW4+PC9kaXY+PHNw
YW4+Y29udGVudDwvc3Bhbj48c3Bhbj5wZXJvcGVybzwvc3Bhbj4iOworCisgICAgYXBwZW5kU2hh
ZG93KHRhcmdldCwgInNwYW46Zmlyc3Qtb2YtdHlwZSIpOworCisgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2NvbnRhaW5lcicpLmFwcGVuZENoaWxkKHRhcmdldCk7Cit9CisKK2Z1bmN0aW9u
IHRlc3RTZWxlY3RJc1R5cGVXaXRoTGFzdE9mVHlwZSgpIHsKKyAgICB2YXIgdGFyZ2V0ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgdGFyZ2V0LmlubmVySFRNTCA9ICI8c3Bh
bj5henVueWFuPC9zcGFuPjxzcGFuPmNvbnRlbnQ8L3NwYW4+PGRpdj5wZXJvcGVybzwvZGl2PiI7
CisKKyAgICBhcHBlbmRTaGFkb3codGFyZ2V0LCAic3BhbjpsYXN0LW9mLXR5cGUiKTsKKworICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250YWluZXInKS5hcHBlbmRDaGlsZCh0YXJnZXQp
OworfQorCitmdW5jdGlvbiB0ZXN0U2VsZWN0SXNEZXRhaWxzKCkgeworICAgIHZhciB0YXJnZXQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICB0YXJnZXQuaW5uZXJIVE1MID0g
IjxkZXRhaWxzPmNvbnRlbnQ8L2RldGFpbHM+IjsKKworICAgIGFwcGVuZFNoYWRvdyh0YXJnZXQs
ICJkZXRhaWxzIik7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29udGFpbmVyJyku
YXBwZW5kQ2hpbGQodGFyZ2V0KTsKK30KKworZnVuY3Rpb24gdGVzdFNlbGVjdElzRGV0YWlsczIo
KSB7CisgICAgdmFyIHRhcmdldCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAg
IHRhcmdldC5pbm5lckhUTUwgPSAiPGRldGFpbHM+PHN1bW1hcnk+Y29udGVudDwvc3VtbWFyeT48
L2RldGFpbHM+IjsKKworICAgIGFwcGVuZFNoYWRvdyh0YXJnZXQsICJkZXRhaWxzIik7CisKKyAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29udGFpbmVyJykuYXBwZW5kQ2hpbGQodGFyZ2V0
KTsKK30KKworZnVuY3Rpb24gdGVzdFNlbGVjdFdoZW5EeW5hbWljYWxseUNoaWxkcmVuQ2hhbmdl
ZCgpIHsKKyAgICB2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Cisg
ICAgdGFyZ2V0LmlubmVySFRNTCA9ICI8c3Bhbj5jb250ZW50PC9zcGFuPjxzcGFuIGlkPSd0b2Jl
cmVtb3ZlZCc+YW51bnlhbiBwZXJvcGVybzwvc3Bhbj4iOworCisgICAgYXBwZW5kU2hhZG93KHRh
cmdldCwgInNwYW4iKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250YWluZXIn
KS5hcHBlbmRDaGlsZCh0YXJnZXQpOworCisgICAgdmFyIGVsZW0gPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgndG9iZXJlbW92ZWQnKTsKKyAgICBlbGVtLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQo
ZWxlbSk7Cit9CisKK3ZhciB0ZXN0RnVuY3MgPSBbCisgICAgdGVzdFNlbGVjdElzTnVsbCwKKyAg
ICB0ZXN0U2VsZWN0SXNJZCwKKyAgICB0ZXN0U2VsZWN0SXNJZEJ1dE5vdE1hdGNoZWQsCisgICAg
dGVzdFNlbGVjdElzSWRCdXROb3RDaGlsZCwKKyAgICB0ZXN0U2VsZWN0SXNNdWx0aUlkLAorICAg
IHRlc3RTZWxlY3RJc1R5cGUsCisgICAgdGVzdFNlbGVjdElzVHlwZVdpdGhBdHRyaWJ1dGUsCisg
ICAgdGVzdFNlbGVjdElzVHlwZVdpdGhGaXJzdE9mVHlwZSwKKyAgICB0ZXN0U2VsZWN0SXNUeXBl
V2l0aEZpcnN0T2ZUeXBlMiwKKyAgICB0ZXN0U2VsZWN0SXNUeXBlV2l0aExhc3RPZlR5cGUsCisg
ICAgdGVzdFNlbGVjdElzRGV0YWlscywKKyAgICB0ZXN0U2VsZWN0SXNEZXRhaWxzMiwKKyAgICB0
ZXN0U2VsZWN0V2hlbkR5bmFtaWNhbGx5Q2hpbGRyZW5DaGFuZ2VkLAorXQorCitmdW5jdGlvbiBk
b1Rlc3QoKSB7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0ZXN0RnVuY3MubGVuZ3RoOyArK2kp
IHsKKyAgICAgICB0ZXN0RnVuY3NbaV0oKTsKKyAgICB9Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5IG9ubG9hZD0iZG9UZXN0KCkiPgorPGRpdiBpZD0iY29udGFpbmVyIj48L2Rpdj4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBj
MjFiOTRkYjBjMzBkNWQyM2MzN2QzMDc5MDgwOTllMjBjNTFlNGY0Li4wOWRhM2EzYzg4ZTEyNjc3
YjdkYmMyOTk1MzQzMjc1N2Q3YmQ3NjYxIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTItMDEtMTEgIFNoaW55YSBLYXdhbmFrYSAgPHNo
aW55YWtAZ29vZ2xlLmNvbT4KKworICAgICAgICBTaGFkb3dDb250ZW50RWxlbWVudCBzaG91bGQg
YmUgYWJsZSB0byB1c2UgcXVlcnkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03NTMwMgorCisgICAgICAgIFJldmlld2VkIGJ5IEhhamltZSBNb3JpdGEu
CisKKyAgICAgICAgKiBTb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyOiBFeHBvc2VkIG5l
Y2Vzc2FyeSBzeW1ib2xzLgorCiAyMDEyLTAxLTExICBVbGFuIERlZ2VuYmFldiAgPHVsYW5AY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFt2OF0gSW50MTZBcnJheS5zZXQoYXJyYXksIG9mZnNldCkg
ZmFpbHMgb24gZmlyc3QgZXhlY3V0aW9uCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122188</attachid>
            <date>2012-01-12 01:26:04 -0800</date>
            <delta_ts>2012-01-12 01:36:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-75302-20120112182603.patch</filename>
            <type>text/plain</type>
            <size>46042</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA0Nzk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2E0YjgyMzIyNWI0MDMx
MGZjZmQ1YmU4OThjMGRjNjI1NzAwZGIwYS4uMWRlYjI0ZDhiMTI5OTg0Y2Q2ZWViMjlhYTA4YzI4
NzVmMmE0MjEyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDEyLTAxLTExICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGdvb2dsZS5jb20+CisKKyAgICAgICAgU2hhZG93Q29udGVu
dEVsZW1lbnQgc2hvdWxkIGJlIGFibGUgdG8gdXNlIHF1ZXJ5LgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzUzMDIKKworICAgICAgICBSZXZpZXdlZCBi
eSBIYWppbWUgTW9yaXRhLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIHNlbGVj
dG9yIHRvIHF1ZXJ5IGVsZW1lbnRzIGluIFNoYWRvd0NvbnRlbnRFbGVtZW50LgorICAgICAgICBU
aGlzIGNhbiBiZSB1c2VkIGluc3RlYWQgb2YgU2hhZG93Q29udGVudEVsZW1lbnQ6OnNob3VsZElu
Y2x1ZGUgaW4gbW9yZSBzb3BoaXN0aWNhdGVkIHdheXMuCisKKyAgICAgICAgVGVzdHM6IGZhc3Qv
ZG9tL3NoYWRvdy9zaGFkb3ctY29udGVudHMtc2VsZWN0LWV4cGVjdGVkLmh0bWwKKyAgICAgICAg
ICAgICAgIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctY29udGVudHMtc2VsZWN0Lmh0bWwKKworICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06Cisg
ICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAg
KiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6
CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IGRvbS9ET01BbGxJbk9uZS5jcHA6CisgICAgICAgICogZG9tL1NlbGVjdG9yUXVlcnkuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JEYXRhTGlzdDo6U2VsZWN0b3JEYXRhTGlzdCk6Cisg
ICAgICAgICAgRXh0cmFjdGVkIGZyb20gU2VsZWN0b3JRdWVyeXRvIHNoYXJlIGNvZGVzIHdpdGgg
U2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnkuCisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckRh
dGFMaXN0Ojppbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yRGF0YUxpc3Q6
Om1hdGNoZXMpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JEYXRhTGlzdDo6cXVlcnlBbGwp
OgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JEYXRhTGlzdDo6cXVlcnlGaXJzdCk6CisgICAg
ICAgIChXZWJDb3JlOjpTZWxlY3RvckRhdGFMaXN0OjpjYW5Vc2VJZExvb2t1cCk6CisgICAgICAg
IChXZWJDb3JlOjpTZWxlY3RvckRhdGFMaXN0OjpleGVjdXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNlbGVjdG9yUXVlcnk6OlNlbGVjdG9yUXVlcnkpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0
b3JRdWVyeTo6cXVlcnlBbGwpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JRdWVyeTo6cXVl
cnlGaXJzdCk6CisgICAgICAgICogZG9tL1NlbGVjdG9yUXVlcnkuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlNlbGVjdG9yRGF0YUxpc3Q6OnNpemUpOgorICAgICAgICAqIGRvbS9TaGFkb3dDb250ZW50
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZWxlY3RBdHRyKToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYWRvd0NvbnRlbnRFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhZG93Q29udGVudEVsZW1lbnQ6OlNoYWRvd0NvbnRlbnRFbGVtZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYWRvd0NvbnRlbnRFbGVtZW50OjpzZWxlY3QpOgorICAgICAgICAqIGRvbS9TaGFk
b3dDb250ZW50RWxlbWVudC5oOgorICAgICAgICAqIGRvbS9TaGFkb3dDb250ZW50U2VsZWN0b3JR
dWVyeS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Q29udGVudFNlbGVjdG9y
UXVlcnk6OlNoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlNo
YWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5OjptYXRjaGVzKToKKyAgICAgICAgICBSZXR1cm5zIHRy
dWUgaWYgTm9kZSBpcyBtYXRjaGVkIGJ5IHRoZSBxdWVyeS4KKyAgICAgICAgKiBkb20vU2hhZG93
Q29udGVudFNlbGVjdG9yUXVlcnkuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvZG9tL1No
YWRvd0NvbnRlbnRFbGVtZW50LmguCisgICAgICAgICogZG9tL1NoYWRvd0luY2x1c2lvblNlbGVj
dG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0luY2x1c2lvblNlbGVjdG9yOjpzZWxl
Y3QpOgorICAgICAgICAqIGRvbS9TaGFkb3dJbmNsdXNpb25TZWxlY3Rvci5oOgorICAgICAgICAq
IGh0bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnN1bW1hcnlR
dWVyeVNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkRldGFpbHNDb250ZW50RWxlbWVudDo6
RGV0YWlsc0NvbnRlbnRFbGVtZW50KTogUmUtaW1wbGVtZW50ZWQgdXNpbmcgcXVlcnkuCisgICAg
ICAgIChXZWJDb3JlOjpEZXRhaWxzU3VtbWFyeUVsZW1lbnQ6OkRldGFpbHNTdW1tYXJ5RWxlbWVu
dCk6IGRpdHRvLgorICAgICAgICAqIGh0bWwvSFRNTFN1bW1hcnlFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlN1bW1hcnlDb250ZW50RWxlbWVudDo6U3VtbWFyeUNvbnRlbnRFbGVtZW50
KToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnRlcm5hbHM6OmNyZWF0ZVNoYWRvd0NvbnRlbnRFbGVtZW50KToKKyAgICAgICAgKiB0ZXN0aW5n
L0ludGVybmFscy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKwogMjAxMi0w
MS0xMSAgS3dhbmdIeXVrIEtpbSAgPGh5dWtpLmtpbUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBb
RUZMXSBSZW5hbWUgcGFyYW1ldGVyIGFuZCB2YXJpYWJsZSBuYW1lICdyJyB0byAncmVjdCcgaW4g
SW50UmVjdEVmbC5jcHAuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDU5ZmNlZTI0NjgwNDc5OTUx
NTY1NWIwN2VhNTFjMzdlZDE2NDUyZDkuLjYwYjU3OGNmMDIwYTU0NTBlZGI4ZDNlNWE3NDgxNmRk
YTQwZDFlNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC01OTQsNiArNTk0LDcgQEAgU0VUKFdl
YkNvcmVfU09VUkNFUwogICAgIGRvbS9TZWN1cml0eUNvbnRleHQuY3BwCiAgICAgZG9tL1NlbGVj
dG9yUXVlcnkuY3BwCiAgICAgZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50LmNwcAorICAgIGRvbS9T
aGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeS5jcHAKICAgICBkb20vU2hhZG93SW5jbHVzaW9uU2Vs
ZWN0b3IuY3BwCiAgICAgZG9tL1NoYWRvd1Jvb3QuY3BwCiAgICAgZG9tL1NwYWNlU3BsaXRTdHJp
bmcuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIv
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA5ZWFhZWNhZTM4ODZkMzU4
ZWFiNTAwOWVlZjUyZjgxYzQ2ODIyN2M1Li5mMTQ0ZjBkMmQxNTY1MjFiZTlmZDc3ZWRjZjk3M2Jj
YzI5ZDc2MGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTE2NDUsNiArMTY0
NSw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9y
UXVlcnkuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50LmNwcCBc
CiAJU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50LmggXAorCVNvdXJjZS9X
ZWJDb3JlL2RvbS9TaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeS5jcHAgXAorCVNvdXJjZS9XZWJD
b3JlL2RvbS9TaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9k
b20vU2hhZG93SW5jbHVzaW9uU2VsZWN0b3IuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vU2hh
ZG93SW5jbHVzaW9uU2VsZWN0b3IuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3Qu
Y3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2Vi
Q29yZS9UYXJnZXQucHJpCmluZGV4IDRiZWMyMTRmYWRjNGY2ZGE4NDY5MTQxODcwMDExOGMxNDNk
YzE2MzMuLmUzZGI4OGQ0ZWJhMDIxZGNjZjgwZjI4ODBjOTkzZTcwODgwYTY5MTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0
LnByaQpAQCAtNTYwLDYgKzU2MCw3IEBAIFNPVVJDRVMgKz0gXAogICAgIGRvbS9TZWN1cml0eUNv
bnRleHQuY3BwIFwKICAgICBkb20vU2VsZWN0b3JRdWVyeS5jcHAgXAogICAgIGRvbS9TaGFkb3dD
b250ZW50RWxlbWVudC5jcHAgXAorICAgIGRvbS9TaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeS5j
cHAgXAogICAgIGRvbS9TaGFkb3dJbmNsdXNpb25TZWxlY3Rvci5jcHAgXAogICAgIGRvbS9TaGFk
b3dSb290LmNwcCBcCiAgICAgZG9tL1NwYWNlU3BsaXRTdHJpbmcuY3BwIFwKQEAgLTE2NjAsNiAr
MTY2MSw3IEBAIEhFQURFUlMgKz0gXAogICAgIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmgg
XAogICAgIGRvbS9TZWxlY3RvclF1ZXJ5LmggXAogICAgIGRvbS9TaGFkb3dDb250ZW50RWxlbWVu
dC5oIFwKKyAgICBkb20vU2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnkuaCBcCiAgICAgZG9tL1No
YWRvd0luY2x1c2lvblNlbGVjdG9yLmggXAogICAgIGRvbS9TaGFkb3dSb290LmggXAogICAgIGRv
bS9TcGFjZVNwbGl0U3RyaW5nLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCA1ZGIzN2JiNDE0
MjVkNWRjOTQ1YjMxOTVmZTM4Y2U0YjUzNzNhNGI5Li5lYjhmOGQxZWEyNDhkMzUyMTk2MGQ0YWFi
NDQ5ZGY3MTliNmVmOGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5p
bgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtNjAwLDcgKzYwMCw3IEBA
IF9fWk43V2ViQ29yZTIwUmVzb3VyY2VSZXNwb25zZUJhc2UyMHNldFN1Z2dlc3RlZEZpbGVuYW1l
RVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMjBSZXNvdXJjZVJlc3BvbnNlQmFzZTI0c2V0
RXhwZWN0ZWRDb250ZW50TGVuZ3RoRXgKIF9fWk43V2ViQ29yZTIwUmVzb3VyY2VSZXNwb25zZUJh
c2U2c2V0VVJMRVJLTlNfNEtVUkxFCiBfX1pON1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNl
QzJFdgotX19aTjdXZWJDb3JlMjBTaGFkb3dDb250ZW50RWxlbWVudDZjcmVhdGVFUE5TXzhEb2N1
bWVudEUKK19fWk43V2ViQ29yZTIwU2hhZG93Q29udGVudEVsZW1lbnQ2Y3JlYXRlRVBOU184RG9j
dW1lbnRFUktOM1dURjEyQXRvbWljU3RyaW5nRQogX19aTjdXZWJDb3JlMjBVc2VyR2VzdHVyZUlu
ZGljYXRvcjdzX3N0YXRlRQogX19aTjdXZWJDb3JlMjBVc2VyR2VzdHVyZUluZGljYXRvckMxRU5T
XzI2UHJvY2Vzc2luZ1VzZXJHZXN0dXJlU3RhdGVFCiBfX1pON1dlYkNvcmUyMFVzZXJHZXN0dXJl
SW5kaWNhdG9yRDFFdgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDVmYjVkMGY3NDBjMzhjMGY4ZDQ3MmIy
ZjdjY2M0YWYwOTY5ZmFiZmIuLjBmZTQ5M2UzY2E5NGRkNGM1YTgwZjgzMzBiYmQ5OWQ2ZGM5NDY1
NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTEwNDcsNiArMTA0Nyw3IEBACiAgICAgICAgICAgICAn
ZG9tL1NjcmlwdFJ1bm5lci5oJywKICAgICAgICAgICAgICdkb20vU2hhZG93Um9vdC5oJywKICAg
ICAgICAgICAgICdkb20vU2hhZG93Q29udGVudEVsZW1lbnQuaCcsCisgICAgICAgICAgICAnZG9t
L1NoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmgnLAogICAgICAgICAgICAgJ2RvbS9TcGFjZVNw
bGl0U3RyaW5nLmgnLAogICAgICAgICAgICAgJ2RvbS9TdHlsZWRFbGVtZW50LmgnLAogICAgICAg
ICAgICAgJ2RvbS9UZXh0LmgnLApAQCAtNTQ1NSw2ICs1NDU2LDggQEAKICAgICAgICAgICAgICdk
b20vU2VsZWN0b3JRdWVyeS5oJywKICAgICAgICAgICAgICdkb20vU2hhZG93Q29udGVudEVsZW1l
bnQuY3BwJywKICAgICAgICAgICAgICdkb20vU2hhZG93Q29udGVudEVsZW1lbnQuaCcsCisgICAg
ICAgICAgICAnZG9tL1NoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmNwcCcsCisgICAgICAgICAg
ICAnZG9tL1NoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmgnLAogICAgICAgICAgICAgJ2RvbS9T
aGFkb3dJbmNsdXNpb25TZWxlY3Rvci5jcHAnLAogICAgICAgICAgICAgJ2RvbS9TaGFkb3dJbmNs
dXNpb25TZWxlY3Rvci5oJywKICAgICAgICAgICAgICdkb20vU2hhZG93Um9vdC5jcHAnLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCBhZTc4NzA5
MjVhYWFhNWE1OTUyYTdlZDJjZGRkYjM5ZWFmMDI2MWYxLi5hMmU5ZmQyOWViNDRhMjdiZjQ5NGQz
ZjczYjY2Zjg5OGMyMzZmMWE4IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvagpAQCAtNTExMDYsNiArNTExMDYsMTQgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+
CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXFNoYWRvd0NvbnRlbnRTZWxlY3Rv
clF1ZXJ5LmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0
aD0iLi5cZG9tXFNoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmgiCisJCQkJPgorCQkJPC9GaWxl
PgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxTaGFkb3dJbmNsdXNpb25TZWxl
Y3Rvci5jcHAiCiAJCQkJPgogCQkJCTxGaWxlQ29uZmlndXJhdGlvbgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDNiNzc5OWRhN2E2
NDBkMGYxOWExY2FiMmY4NDkwZTRkMDVhZjZlYTQuLjRjMGI4YjkxM2E4NGFiMDFmZjUzMGZhMmU1
NDQzOTMyOTQ4MDNjZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTE1NjIsNiArMTU2Miw4IEBACiAJCTUzQzgyOThFMTNEOEQ5
MjcwMERFMkRFQiAvKiBSZW5kZXJGbGV4aWJsZUJveC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNDODI5OEMxM0Q4RDkyNzAwREUyREVCIC8qIFJlbmRl
ckZsZXhpYmxlQm94LmggKi87IH07CiAJCTU1MEEwQkM5MDg1RjYwMzkwMDczNTNENiAvKiBRdWFs
aWZpZWROYW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDU1MEEwQkM3MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmNwcCAqLzsgfTsK
IAkJNTUwQTBCQ0EwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1MEEwQkM4MDg1RjYwMzkwMDcz
NTNENiAvKiBRdWFsaWZpZWROYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJNTcwREJBODExNEI1ODA0OTAwREFFRkEwIC8qIFNoYWRvd0NvbnRl
bnRTZWxlY3RvclF1ZXJ5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDU3MERCN0E4MTRCNTY5NkEwMERBRUZBMCAvKiBTaGFkb3dDb250ZW50U2VsZWN0
b3JRdWVyeS5jcHAgKi87IH07CisJCTU3MERCQTgyMTRCNTgwNEIwMERBRUZBMCAvKiBTaGFkb3dD
b250ZW50U2VsZWN0b3JRdWVyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTcwREI3QTkxNEI1Njk2QTAwREFFRkEwIC8qIFNoYWRvd0NvbnRlbnRTZWxl
Y3RvclF1ZXJ5LmggKi87IH07CiAJCTU5MDVBREJGMTMwMkYzQ0UwMEYxMTZERiAvKiBYTUxUcmVl
Vmlld2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDU5MDVBREJEMTMwMkYzQ0UwMEYxMTZERiAvKiBYTUxUcmVlVmlld2VyLmNwcCAqLzsgfTsKIAkJ
NTkwNUFEQzAxMzAyRjNDRTAwRjExNkRGIC8qIFhNTFRyZWVWaWV3ZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU5MDVBREJFMTMwMkYzQ0UwMEYxMTZE
RiAvKiBYTUxUcmVlVmlld2VyLmggKi87IH07CiAJCTU5MEUxQjQ5MTFFNEVGNEIwMDY5Rjc4NCAv
KiBEZXZpY2VPcmllbnRhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTkwRTFCNDgxMUU0RUY0QjAwNjlGNzg0IC8qIERldmljZU9yaWVudGF0aW9u
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTg4
NTIsNiArODg1NCw4IEBACiAJCTUzQzgyOThDMTNEOEQ5MjcwMERFMkRFQiAvKiBSZW5kZXJGbGV4
aWJsZUJveC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJGbGV4aWJs
ZUJveC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NTBBMEJDNzA4NUY2MDM5MDA3
MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBRdWFsaWZpZWROYW1lLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCTU1MEEwQkM4MDg1
RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFF1YWxpZmllZE5hbWUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CisJCTU3MERCN0E4MTRC
NTY5NkEwMERBRUZBMCAvKiBTaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3MERCN0E5MTRCNTY5NkEwMERBRUZB
MCAvKiBTaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1OTA1QURCRDEzMDJGM0NFMDBGMTE2REYgLyogWE1MVHJlZVZpZXdlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBYTUxUcmVlVmlld2VyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTkwNUFEQkUxMzAyRjNDRTAwRjExNkRG
IC8qIFhNTFRyZWVWaWV3ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWE1M
VHJlZVZpZXdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1OTBFMUI0ODExRTRF
RjRCMDA2OUY3ODQgLyogRGV2aWNlT3JpZW50YXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRGV2aWNlT3JpZW50YXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTIxNDY0LDYgKzIxNDY4LDggQEAKIAkJCQlFNDUzMjJBQTE0MENFMjY3MDA1QTBGOTIg
LyogU2VsZWN0b3JRdWVyeS5oICovLAogCQkJCUE3NjZDRjhCMTM4MTBFMEMwMDExQTBCMyAvKiBT
aGFkb3dDb250ZW50RWxlbWVudC5jcHAgKi8sCiAJCQkJQTc0QzJEM0IxMzgxMUUwRDAwRjgzNTcy
IC8qIFNoYWRvd0NvbnRlbnRFbGVtZW50LmggKi8sCisJCQkJNTcwREI3QTgxNEI1Njk2QTAwREFF
RkEwIC8qIFNoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmNwcCAqLywKKwkJCQk1NzBEQjdBOTE0
QjU2OTZBMDBEQUVGQTAgLyogU2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnkuaCAqLywKIAkJCQlB
NzFDMzBCNjEzODEyNjVFMDBEQkMzNTEgLyogU2hhZG93SW5jbHVzaW9uU2VsZWN0b3IuY3BwICov
LAogCQkJCUE3MUMzMEI3MTM4MTI2NUUwMERCQzM1MSAvKiBTaGFkb3dJbmNsdXNpb25TZWxlY3Rv
ci5oICovLAogCQkJCUE2RDE2OTYxMTM0NkI0OUIwMDBFQjc3MCAvKiBTaGFkb3dSb290LmNwcCAq
LywKQEAgLTI0MzE5LDYgKzI0MzI1LDcgQEAKIAkJCQk0OTg3NzBFOTEyNDJDNTM1MDAyMjI2QkEg
LyogU2hhZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjNERDQ1MDEyRjVFQTFCMDAwRDkxOTAg
LyogU2hhZG93Qmx1ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc0QzJEM0MxMzgxMUUwRDAwRjgz
NTcyIC8qIFNoYWRvd0NvbnRlbnRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk1NzBEQkE4
MjE0QjU4MDRCMDBEQUVGQTAgLyogU2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnkuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDNUVCOEM0MEU4MjAzMUIwMEIyNTk2NSAvKiBTaGFkb3dEYXRhLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBNzFDMzBCOTEzODEyNjVFMDBEQkMzNTEgLyogU2hhZG93SW5jbHVz
aW9uU2VsZWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUE2RDE2OTY0MTM0NkI0QzEwMDBFQjc3
MCAvKiBTaGFkb3dSb290LmggaW4gSGVhZGVycyAqLywKQEAgLTI3MzUyLDYgKzI3MzU5LDcgQEAK
IAkJCQk0OTg3NzBFODEyNDJDNTM1MDAyMjI2QkEgLyogU2hhZGVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGM0RENDRGMTJGNUVBMUIwMDBEOTE5MCAvKiBTaGFkb3dCbHVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUE3NjZDRjhDMTM4MTBFMEMwMDExQTBCMyAvKiBTaGFkb3dDb250ZW50RWxl
bWVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1NzBEQkE4MTE0QjU4MDQ5MDBEQUVGQTAgLyog
U2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM1RUI4
QzMwRTgyMDMxQjAwQjI1OTY1IC8qIFNoYWRvd0RhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTcxQzMwQjgxMzgxMjY1RTAwREJDMzUxIC8qIFNoYWRvd0luY2x1c2lvblNlbGVjdG9yLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUE2RDE2OTYyMTM0NkI0OUIwMDBFQjc3MCAvKiBTaGFkb3dSb290
LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RPTUFs
bEluT25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01BbGxJbk9uZS5jcHAKaW5kZXggNTUw
OTQ2NTNmNWYyMzk0NmZkNDQzZTQ4OWYxMzczMzM4MTRmYjY2Mi4uNTViNjA1MjhhYWEyOTNjZDY2
NWM0YzkyMjdiYTg4NDc4ODVmNmEzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RP
TUFsbEluT25lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NQWxsSW5PbmUuY3BwCkBA
IC0xMTMsNiArMTEzLDcgQEAKICNpbmNsdWRlICJTZWN1cml0eUNvbnRleHQuY3BwIgogI2luY2x1
ZGUgIlNlbGVjdG9yUXVlcnkuY3BwIgogI2luY2x1ZGUgIlNoYWRvd0NvbnRlbnRFbGVtZW50LmNw
cCIKKyNpbmNsdWRlICJTaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeS5jcHAiCiAjaW5jbHVkZSAi
U2hhZG93SW5jbHVzaW9uU2VsZWN0b3IuY3BwIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuY3BwIgog
I2luY2x1ZGUgIlNwYWNlU3BsaXRTdHJpbmcuY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL1NlbGVjdG9yUXVlcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9yUXVl
cnkuY3BwCmluZGV4IDA4MjY2ZWYzMTM2YTkxYTI4Y2Y2MjIzZDRhNTVhZmQxMjg0MmZhZDIuLjFh
NjJkMGZiMTk5NjVkZjBjYmM0YTM0MmU1NzgxMDg2YzExMTQ4MjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
U2VsZWN0b3JRdWVyeS5jcHAKQEAgLTMzLDI3ICszMyw0OSBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLVNlbGVjdG9yUXVlcnk6OlNlbGVjdG9yUXVlcnkoTm9kZSogcm9vdE5vZGUsIGNvbnN0
IENTU1NlbGVjdG9yTGlzdCYgc2VsZWN0b3JMaXN0KQotICAgIDogbV9yb290Tm9kZShyb290Tm9k
ZSkKLSAgICAsIG1fc2VsZWN0b3JDaGVja2VyKHJvb3ROb2RlLT5kb2N1bWVudCgpLCAhcm9vdE5v
ZGUtPmRvY3VtZW50KCktPmluUXVpcmtzTW9kZSgpKQorU2VsZWN0b3JEYXRhTGlzdDo6U2VsZWN0
b3JEYXRhTGlzdCgpCit7Cit9CisKK1NlbGVjdG9yRGF0YUxpc3Q6OlNlbGVjdG9yRGF0YUxpc3Qo
Y29uc3QgQ1NTU2VsZWN0b3JMaXN0JiBzZWxlY3Rvckxpc3QpCit7CisgICAgaW5pdGlhbGl6ZShz
ZWxlY3Rvckxpc3QpOworfQorCit2b2lkIFNlbGVjdG9yRGF0YUxpc3Q6OmluaXRpYWxpemUoY29u
c3QgQ1NTU2VsZWN0b3JMaXN0JiBzZWxlY3Rvckxpc3QpCiB7CisgICAgQVNTRVJUKG1fc2VsZWN0
b3JzLmlzRW1wdHkoKSk7CisKICAgICBtX3NlbGVjdG9yQ2hlY2tlci5zZXRDb2xsZWN0aW5nUnVs
ZXNPbmx5KHRydWUpOwogCiAgICAgZm9yIChDU1NTZWxlY3Rvciogc2VsZWN0b3IgPSBzZWxlY3Rv
ckxpc3QuZmlyc3QoKTsgc2VsZWN0b3I7IHNlbGVjdG9yID0gQ1NTU2VsZWN0b3JMaXN0OjpuZXh0
KHNlbGVjdG9yKSkKICAgICAgICAgbV9zZWxlY3RvcnMuYXBwZW5kKFNlbGVjdG9yRGF0YShzZWxl
Y3RvciwgU2VsZWN0b3JDaGVja2VyOjppc0Zhc3RDaGVja2FibGVTZWxlY3RvcihzZWxlY3Rvcikp
KTsKIH0KLSAgICAKLVBhc3NSZWZQdHI8Tm9kZUxpc3Q+IFNlbGVjdG9yUXVlcnk6OnF1ZXJ5QWxs
KCkgY29uc3QKKworYm9vbCBTZWxlY3RvckRhdGFMaXN0OjptYXRjaGVzKGNvbnN0IFNlbGVjdG9y
Q2hlY2tlciYgc2VsZWN0b3JDaGVja2VyLCBFbGVtZW50KiB0YXJnZXRFbGVtZW50KSBjb25zdAor
eworICAgIEFTU0VSVCh0YXJnZXRFbGVtZW50KTsKKworICAgIHVuc2lnbmVkIHNlbGVjdG9yQ291
bnQgPSBtX3NlbGVjdG9ycy5zaXplKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNl
bGVjdG9yQ291bnQ7ICsraSkgeworICAgICAgICBpZiAoc2VsZWN0b3JDaGVja2VyLmNoZWNrU2Vs
ZWN0b3IobV9zZWxlY3RvcnNbaV0uc2VsZWN0b3IsIHRhcmdldEVsZW1lbnQsIG1fc2VsZWN0b3Jz
W2ldLmlzRmFzdENoZWNrYWJsZSkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKK1Bhc3NSZWZQdHI8Tm9kZUxpc3Q+IFNlbGVjdG9yRGF0
YUxpc3Q6OnF1ZXJ5QWxsKGNvbnN0IFNlbGVjdG9yQ2hlY2tlciYgc2VsZWN0b3JDaGVja2VyLCBO
b2RlKiByb290Tm9kZSkgY29uc3QKIHsKICAgICBWZWN0b3I8UmVmUHRyPE5vZGU+ID4gcmVzdWx0
OwotICAgIGV4ZWN1dGU8ZmFsc2U+KHJlc3VsdCk7CisgICAgZXhlY3V0ZTxmYWxzZT4oc2VsZWN0
b3JDaGVja2VyLCByb290Tm9kZSwgcmVzdWx0KTsKICAgICByZXR1cm4gU3RhdGljTm9kZUxpc3Q6
OmFkb3B0KHJlc3VsdCk7CiB9CiAKLVBhc3NSZWZQdHI8RWxlbWVudD4gU2VsZWN0b3JRdWVyeTo6
cXVlcnlGaXJzdCgpIGNvbnN0IAoteyAKK1Bhc3NSZWZQdHI8RWxlbWVudD4gU2VsZWN0b3JEYXRh
TGlzdDo6cXVlcnlGaXJzdChjb25zdCBTZWxlY3RvckNoZWNrZXImIHNlbGVjdG9yQ2hlY2tlciwg
Tm9kZSogcm9vdE5vZGUpIGNvbnN0Cit7CiAgICAgVmVjdG9yPFJlZlB0cjxOb2RlPiA+IHJlc3Vs
dDsKLSAgICBleGVjdXRlPHRydWU+KHJlc3VsdCk7CisgICAgZXhlY3V0ZTx0cnVlPihzZWxlY3Rv
ckNoZWNrZXIsIHJvb3ROb2RlLCByZXN1bHQpOwogICAgIGlmIChyZXN1bHQuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4gMDsKICAgICBBU1NFUlQocmVzdWx0LnNpemUoKSA9PSAxKTsKQEAgLTYx
LDcgKzgzLDcgQEAgUGFzc1JlZlB0cjxFbGVtZW50PiBTZWxlY3RvclF1ZXJ5OjpxdWVyeUZpcnN0
KCkgY29uc3QKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KHJlc3VsdC5maXJzdCgp
LmdldCgpKTsKIH0KIAotYm9vbCBTZWxlY3RvclF1ZXJ5OjpjYW5Vc2VJZExvb2t1cCgpIGNvbnN0
Citib29sIFNlbGVjdG9yRGF0YUxpc3Q6OmNhblVzZUlkTG9va3VwKE5vZGUqIHJvb3ROb2RlKSBj
b25zdAogewogICAgIC8vIFdlIG5lZWQgdG8gcmV0dXJuIHRoZSBtYXRjaGVzIGluIGRvY3VtZW50
IG9yZGVyLiBUbyB1c2UgaWQgbG9va3VwIHdoaWxlIHRoZXJlIGlzIHBvc3NpYmxpdHkgb2YgbXVs
dGlwbGUgbWF0Y2hlcwogICAgIC8vIHdlIHdvdWxkIG5lZWQgdG8gc29ydCB0aGUgcmVzdWx0cy4g
Rm9yIG5vdywganVzdCB0cmF2ZXJzZSB0aGUgZG9jdW1lbnQgaW4gdGhhdCBjYXNlLgpAQCAtNjks
MzcgKzkxLDM3IEBAIGJvb2wgU2VsZWN0b3JRdWVyeTo6Y2FuVXNlSWRMb29rdXAoKSBjb25zdAog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKG1fc2VsZWN0b3JzWzBdLnNlbGVjdG9yLT5t
X21hdGNoICE9IENTU1NlbGVjdG9yOjpJZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlm
ICghbV9yb290Tm9kZS0+aW5Eb2N1bWVudCgpKQorICAgIGlmICghcm9vdE5vZGUtPmluRG9jdW1l
bnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChtX3Jvb3ROb2RlLT5kb2N1bWVu
dCgpLT5pblF1aXJrc01vZGUoKSkKKyAgICBpZiAocm9vdE5vZGUtPmRvY3VtZW50KCktPmluUXVp
cmtzTW9kZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKG1fcm9vdE5vZGUtPmRv
Y3VtZW50KCktPmNvbnRhaW5zTXVsdGlwbGVFbGVtZW50c1dpdGhJZChtX3NlbGVjdG9yc1swXS5z
ZWxlY3Rvci0+dmFsdWUoKSkpCisgICAgaWYgKHJvb3ROb2RlLT5kb2N1bWVudCgpLT5jb250YWlu
c011bHRpcGxlRWxlbWVudHNXaXRoSWQobV9zZWxlY3RvcnNbMF0uc2VsZWN0b3ItPnZhbHVlKCkp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHRlbXBsYXRl
IDxib29sIGZpcnN0TWF0Y2hPbmx5Pgotdm9pZCBTZWxlY3RvclF1ZXJ5OjpleGVjdXRlKFZlY3Rv
cjxSZWZQdHI8Tm9kZT4gPiYgbWF0Y2hlZEVsZW1lbnRzKSBjb25zdAordm9pZCBTZWxlY3RvckRh
dGFMaXN0OjpleGVjdXRlKGNvbnN0IFNlbGVjdG9yQ2hlY2tlciYgc2VsZWN0b3JDaGVja2VyLCBO
b2RlKiByb290Tm9kZSwgVmVjdG9yPFJlZlB0cjxOb2RlPiA+JiBtYXRjaGVkRWxlbWVudHMpIGNv
bnN0CiB7Ci0gICAgaWYgKGNhblVzZUlkTG9va3VwKCkpIHsKKyAgICBpZiAoY2FuVXNlSWRMb29r
dXAocm9vdE5vZGUpKSB7CiAgICAgICAgIEFTU0VSVChtX3NlbGVjdG9ycy5zaXplKCkgPT0gMSk7
CiAgICAgICAgIENTU1NlbGVjdG9yKiBzZWxlY3RvciA9IG1fc2VsZWN0b3JzWzBdLnNlbGVjdG9y
OwotICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gbV9yb290Tm9kZS0+ZG9jdW1lbnQoKS0+Z2V0
RWxlbWVudEJ5SWQoc2VsZWN0b3ItPnZhbHVlKCkpOwotICAgICAgICBpZiAoIWVsZW1lbnQgfHwg
IShtX3Jvb3ROb2RlLT5pc0RvY3VtZW50Tm9kZSgpIHx8IGVsZW1lbnQtPmlzRGVzY2VuZGFudE9m
KG1fcm9vdE5vZGUpKSkKKyAgICAgICAgRWxlbWVudCogZWxlbWVudCA9IHJvb3ROb2RlLT5kb2N1
bWVudCgpLT5nZXRFbGVtZW50QnlJZChzZWxlY3Rvci0+dmFsdWUoKSk7CisgICAgICAgIGlmICgh
ZWxlbWVudCB8fCAhKHJvb3ROb2RlLT5pc0RvY3VtZW50Tm9kZSgpIHx8IGVsZW1lbnQtPmlzRGVz
Y2VuZGFudE9mKHJvb3ROb2RlKSkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGlmICht
X3NlbGVjdG9yQ2hlY2tlci5jaGVja1NlbGVjdG9yKHNlbGVjdG9yLCBlbGVtZW50LCBtX3NlbGVj
dG9yc1swXS5pc0Zhc3RDaGVja2FibGUpKQorICAgICAgICBpZiAoc2VsZWN0b3JDaGVja2VyLmNo
ZWNrU2VsZWN0b3IobV9zZWxlY3RvcnNbMF0uc2VsZWN0b3IsIGVsZW1lbnQsIG1fc2VsZWN0b3Jz
WzBdLmlzRmFzdENoZWNrYWJsZSkpCiAgICAgICAgICAgICBtYXRjaGVkRWxlbWVudHMuYXBwZW5k
KGVsZW1lbnQpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAorCiAgICAgdW5zaWduZWQg
c2VsZWN0b3JDb3VudCA9IG1fc2VsZWN0b3JzLnNpemUoKTsKLSAgICAKLSAgICBOb2RlKiBuID0g
bV9yb290Tm9kZS0+Zmlyc3RDaGlsZCgpOworCisgICAgTm9kZSogbiA9IHJvb3ROb2RlLT5maXJz
dENoaWxkKCk7CiAgICAgd2hpbGUgKG4pIHsKICAgICAgICAgaWYgKG4tPmlzRWxlbWVudE5vZGUo
KSkgewogICAgICAgICAgICAgRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PEVsZW1lbnQq
PihuKTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzZWxlY3RvckNvdW50
OyArK2kpIHsKLSAgICAgICAgICAgICAgICBpZiAobV9zZWxlY3RvckNoZWNrZXIuY2hlY2tTZWxl
Y3RvcihtX3NlbGVjdG9yc1tpXS5zZWxlY3RvciwgZWxlbWVudCwgbV9zZWxlY3RvcnNbaV0uaXNG
YXN0Q2hlY2thYmxlKSkgeworICAgICAgICAgICAgICAgIGlmIChzZWxlY3RvckNoZWNrZXIuY2hl
Y2tTZWxlY3RvcihtX3NlbGVjdG9yc1tpXS5zZWxlY3RvciwgZWxlbWVudCwgbV9zZWxlY3RvcnNb
aV0uaXNGYXN0Q2hlY2thYmxlKSkgewogICAgICAgICAgICAgICAgICAgICBtYXRjaGVkRWxlbWVu
dHMuYXBwZW5kKGVsZW1lbnQpOwogICAgICAgICAgICAgICAgICAgICBpZiAoZmlyc3RNYXRjaE9u
bHkpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0xMTMsMTEgKzEzNSwyOCBA
QCB2b2lkIFNlbGVjdG9yUXVlcnk6OmV4ZWN1dGUoVmVjdG9yPFJlZlB0cjxOb2RlPiA+JiBtYXRj
aGVkRWxlbWVudHMpIGNvbnN0CiAgICAgICAgIH0KICAgICAgICAgd2hpbGUgKCFuLT5uZXh0U2li
bGluZygpKSB7CiAgICAgICAgICAgICBuID0gbi0+cGFyZW50Tm9kZSgpOwotICAgICAgICAgICAg
aWYgKG4gPT0gbV9yb290Tm9kZSkKKyAgICAgICAgICAgIGlmIChuID09IHJvb3ROb2RlKQogICAg
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBuID0gbi0+bmV4dFNpYmxp
bmcoKTsKICAgICB9CiB9CiAKK1NlbGVjdG9yUXVlcnk6OlNlbGVjdG9yUXVlcnkoTm9kZSogcm9v
dE5vZGUsIGNvbnN0IENTU1NlbGVjdG9yTGlzdCYgc2VsZWN0b3JMaXN0KQorICAgIDogbV9yb290
Tm9kZShyb290Tm9kZSkKKyAgICAsIG1fc2VsZWN0b3JDaGVja2VyKHJvb3ROb2RlLT5kb2N1bWVu
dCgpLCAhcm9vdE5vZGUtPmRvY3VtZW50KCktPmluUXVpcmtzTW9kZSgpKQorICAgICwgbV9zZWxl
Y3RvcnMoc2VsZWN0b3JMaXN0KQoreworfQorCitQYXNzUmVmUHRyPE5vZGVMaXN0PiBTZWxlY3Rv
clF1ZXJ5OjpxdWVyeUFsbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2VsZWN0b3JzLnF1ZXJ5
QWxsKG1fc2VsZWN0b3JDaGVja2VyLCBtX3Jvb3ROb2RlKTsKK30KKworUGFzc1JlZlB0cjxFbGVt
ZW50PiBTZWxlY3RvclF1ZXJ5OjpxdWVyeUZpcnN0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9z
ZWxlY3RvcnMucXVlcnlGaXJzdChtX3NlbGVjdG9yQ2hlY2tlciwgbV9yb290Tm9kZSk7Cit9CisK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2VsZWN0b3JRdWVyeS5oCmluZGV4IGI5Njk4MjM3ODQzYmJjNWVlZjlh
YjU3MTRjMmQ2NGVmMWI4ODE5NzIuLjBmMTA2NzhhZGQ4MjFjODMwY2M2NWU3NzIzYzRhMWY5MzFh
NjQ3NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9yUXVlcnkuaApAQCAtMzcsMjggKzM3LDQ0IEBA
IGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBDU1NTZWxlY3RvcjsKIGNsYXNzIENTU1NlbGVjdG9yTGlz
dDsKIAotY2xhc3MgU2VsZWN0b3JRdWVyeSB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2Vs
ZWN0b3JRdWVyeSk7CitjbGFzcyBTZWxlY3RvckRhdGFMaXN0IHsKIHB1YmxpYzoKLSAgICBTZWxl
Y3RvclF1ZXJ5KE5vZGUqIHJvb3ROb2RlLCBjb25zdCBDU1NTZWxlY3Rvckxpc3QmKTsKLSAgICAK
LSAgICBQYXNzUmVmUHRyPE5vZGVMaXN0PiBxdWVyeUFsbCgpIGNvbnN0OwotICAgIFBhc3NSZWZQ
dHI8RWxlbWVudD4gcXVlcnlGaXJzdCgpIGNvbnN0OworICAgIFNlbGVjdG9yRGF0YUxpc3QoKTsK
KyAgICBleHBsaWNpdCBTZWxlY3RvckRhdGFMaXN0KGNvbnN0IENTU1NlbGVjdG9yTGlzdCYpOwog
Ci1wcml2YXRlOgotICAgIGJvb2wgY2FuVXNlSWRMb29rdXAoKSBjb25zdDsKKyAgICB2b2lkIGlu
aXRpYWxpemUoY29uc3QgQ1NTU2VsZWN0b3JMaXN0Jik7CiAKLSAgICB0ZW1wbGF0ZSA8Ym9vbCBm
aXJzdE1hdGNoT25seT4KLSAgICB2b2lkIGV4ZWN1dGUoVmVjdG9yPFJlZlB0cjxOb2RlPiA+Jikg
Y29uc3Q7Ci0gICAgCisgICAgaW50IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NlbGVjdG9ycy5z
aXplKCk7IH0KKworICAgIGJvb2wgbWF0Y2hlcyhjb25zdCBTZWxlY3RvckNoZWNrZXImLCBFbGVt
ZW50KikgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gcXVlcnlBbGwoY29uc3QgU2Vs
ZWN0b3JDaGVja2VyJiwgTm9kZSogcm9vdE5vZGUpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8RWxl
bWVudD4gcXVlcnlGaXJzdChjb25zdCBTZWxlY3RvckNoZWNrZXImLCBOb2RlKiByb290Tm9kZSkg
Y29uc3Q7CisKK3ByaXZhdGU6CiAgICAgc3RydWN0IFNlbGVjdG9yRGF0YSB7CiAgICAgICAgIFNl
bGVjdG9yRGF0YShDU1NTZWxlY3Rvciogc2VsZWN0b3IsIGJvb2wgaXNGYXN0Q2hlY2thYmxlKSA6
IHNlbGVjdG9yKHNlbGVjdG9yKSwgaXNGYXN0Q2hlY2thYmxlKGlzRmFzdENoZWNrYWJsZSkgeyB9
CiAgICAgICAgIENTU1NlbGVjdG9yKiBzZWxlY3RvcjsKICAgICAgICAgYm9vbCBpc0Zhc3RDaGVj
a2FibGU7CiAgICAgfTsKLSAgICBOb2RlKiBtX3Jvb3ROb2RlOworCisgICAgYm9vbCBjYW5Vc2VJ
ZExvb2t1cChOb2RlKiByb290Tm9kZSkgY29uc3Q7CisgICAgdGVtcGxhdGUgPGJvb2wgZmlyc3RN
YXRjaE9ubHk+CisgICAgdm9pZCBleGVjdXRlKGNvbnN0IFNlbGVjdG9yQ2hlY2tlciYsIE5vZGUq
IHJvb3ROb2RlLCBWZWN0b3I8UmVmUHRyPE5vZGU+ID4mKSBjb25zdDsKKwogICAgIFZlY3RvcjxT
ZWxlY3RvckRhdGE+IG1fc2VsZWN0b3JzOworfTsKKworY2xhc3MgU2VsZWN0b3JRdWVyeSB7Cisg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2VsZWN0b3JRdWVyeSk7CitwdWJsaWM6CisgICAgU2Vs
ZWN0b3JRdWVyeShOb2RlKiByb290Tm9kZSwgY29uc3QgQ1NTU2VsZWN0b3JMaXN0Jik7CisKKyAg
ICBQYXNzUmVmUHRyPE5vZGVMaXN0PiBxdWVyeUFsbCgpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8
RWxlbWVudD4gcXVlcnlGaXJzdCgpIGNvbnN0OworcHJpdmF0ZToKKyAgICBOb2RlKiBtX3Jvb3RO
b2RlOwogICAgIFNlbGVjdG9yQ2hlY2tlciBtX3NlbGVjdG9yQ2hlY2tlcjsKKyAgICBTZWxlY3Rv
ckRhdGFMaXN0IG1fc2VsZWN0b3JzOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFk
b3dDb250ZW50RWxlbWVudC5jcHAKaW5kZXggZWNlZTZkMGM3ZWU3NmZkZDcyNWUyZmRjZjg3MmRk
MmJiOTNjOTdiYi4uNzNhZDEwOWUwMWE1YjIyZTdiNDg1YzgxN2RlODAzZmVjZjEzYTc5MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Q29udGVudEVsZW1lbnQuY3BwCkBAIC0yOCwyMSAr
MjgsMzEgQEAKICNpbmNsdWRlICJTaGFkb3dDb250ZW50RWxlbWVudC5oIgogCiAjaW5jbHVkZSAi
SFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiUXVhbGlmaWVkTmFtZS5oIgorI2luY2x1ZGUgIlNoYWRv
d0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmgiCiAjaW5jbHVkZSAiU2hhZG93SW5jbHVzaW9uU2VsZWN0
b3IuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJh
cy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8U2hhZG93Q29udGVudEVs
ZW1lbnQ+IFNoYWRvd0NvbnRlbnRFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQor
c3RhdGljIGNvbnN0IFF1YWxpZmllZE5hbWUmIHNlbGVjdEF0dHIoKQoreworICAgIERFRklORV9T
VEFUSUNfTE9DQUwoUXVhbGlmaWVkTmFtZSwgYXR0ciwgKG51bGxBdG9tLCAic2VsZWN0IiwgSFRN
TE5hbWVzOjp4aHRtbE5hbWVzcGFjZVVSSSkpOworICAgIHJldHVybiBhdHRyOworfQorCitQYXNz
UmVmUHRyPFNoYWRvd0NvbnRlbnRFbGVtZW50PiBTaGFkb3dDb250ZW50RWxlbWVudDo6Y3JlYXRl
KERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgQXRvbWljU3RyaW5nJiBzZWxlY3QpCiB7CiAgICAg
REVGSU5FX1NUQVRJQ19MT0NBTChRdWFsaWZpZWROYW1lLCB0YWdOYW1lLCAobnVsbEF0b20sICJ3
ZWJraXRTaGFkb3dDb250ZW50IiwgSFRNTE5hbWVzOjpkaXZUYWcubmFtZXNwYWNlVVJJKCkpKTsK
LSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYWRvd0NvbnRlbnRFbGVtZW50KHRhZ05hbWUsIGRv
Y3VtZW50KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFkb3dDb250ZW50RWxlbWVudCh0
YWdOYW1lLCBkb2N1bWVudCwgc2VsZWN0KSk7CiB9CiAKLVNoYWRvd0NvbnRlbnRFbGVtZW50OjpT
aGFkb3dDb250ZW50RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBEb2N1bWVudCog
ZG9jdW1lbnQpCitTaGFkb3dDb250ZW50RWxlbWVudDo6U2hhZG93Q29udGVudEVsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBBdG9taWNT
dHJpbmcmIHNlbGVjdCkKICAgICA6IFN0eWxlZEVsZW1lbnQobmFtZSwgZG9jdW1lbnQsIENyZWF0
ZUhUTUxFbGVtZW50KQogICAgICwgbV9pbmNsdXNpb25zKGFkb3B0UHRyKG5ldyBTaGFkb3dJbmNs
dXNpb25MaXN0KCkpKQogeworICAgIHNldEF0dHJpYnV0ZShzZWxlY3RBdHRyKCksIHNlbGVjdCk7
CiB9CiAKIFNoYWRvd0NvbnRlbnRFbGVtZW50Ojp+U2hhZG93Q29udGVudEVsZW1lbnQoKQpAQCAt
NzYsMTAgKzg2LDkgQEAgdm9pZCBTaGFkb3dDb250ZW50RWxlbWVudDo6ZGV0YWNoKCkKICAgICBT
dHlsZWRFbGVtZW50OjpkZXRhY2goKTsKIH0KIAotYm9vbCBTaGFkb3dDb250ZW50RWxlbWVudDo6
c2hvdWxkSW5jbHVkZShOb2RlKikKK2NvbnN0IEF0b21pY1N0cmluZyYgU2hhZG93Q29udGVudEVs
ZW1lbnQ6OnNlbGVjdCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGdl
dEF0dHJpYnV0ZShzZWxlY3RBdHRyKCkpOwogfQogCi0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TaGFkb3dDb250ZW50RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1No
YWRvd0NvbnRlbnRFbGVtZW50LmgKaW5kZXggN2IzNjY2MjFiN2I5NjNhNDMwZmMxNDMwOWJkNDY1
ZWFlZGZhMDRhNC4uMDlmODM4NzMwYmMxY2Y4NGE0NjJiNGU3YjAxZTY1ZGRmNGRkZWRkZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50LmgKQEAgLTM2LDIzICszNiwy
OCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFNoYWRvd0NvbnRlbnRTZWxlY3Rv
clF1ZXJ5OwogY2xhc3MgU2hhZG93SW5jbHVzaW9uTGlzdDsKIAogLy8gTk9URTogQ3VycmVudCBp
bXBsZW1lbnRhdGlvbiBkb2Vzbid0IHN1cHBvcnQgZHluYW1pYyBpbnNlcnRpb24vZGVsZXRpb24g
b2YgU2hhZG93Q29udGVudEVsZW1lbnQuCiAvLyBZb3Ugc2hvdWxkIGNyZWF0ZSBTaGFkb3dDb250
ZW50RWxlbWVudCBkdXJpbmcgdGhlIGhvc3QgY29uc3RydWN0aW9uLgogY2xhc3MgU2hhZG93Q29u
dGVudEVsZW1lbnQgOiBwdWJsaWMgU3R5bGVkRWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8U2hhZG93Q29udGVudEVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCopOworICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFNoYWRvd0NvbnRlbnRFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQq
LCBjb25zdCBBdG9taWNTdHJpbmcmIHNlbGVjdCk7CiAKICAgICB2aXJ0dWFsIH5TaGFkb3dDb250
ZW50RWxlbWVudCgpOwotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRJbmNsdWRlKE5vZGUqKTsKICAg
ICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCk7CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaCgpOwogCisg
ICAgY29uc3QgQXRvbWljU3RyaW5nJiBzZWxlY3QoKSBjb25zdDsKKwogICAgIGNvbnN0IFNoYWRv
d0luY2x1c2lvbkxpc3QqIGluY2x1c2lvbnMoKSBjb25zdCB7IHJldHVybiBtX2luY2x1c2lvbnMu
Z2V0KCk7IH0KIAogcHJvdGVjdGVkOgotICAgIFNoYWRvd0NvbnRlbnRFbGVtZW50KGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOworICAgIC8vIEZJWE1FOiBDdXJyZW50bHkgdGhpcyBj
b25zdHJ1Y3RvciBhY2NlcHRzIHdpZGVyIHF1ZXJ5IHRoYW4gc2hhZG93IGRvbSBzcGVjLgorICAg
IC8vIEZvciBleGFtcGxlLCBhIHNlbGVjdG9yIHF1ZXJ5IHNob3VsZCBub3QgaW5jbHVkZSBjb250
ZXh0dWFsIHNlbGVjdG9ycy4KKyAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTc1OTQ2CisgICAgU2hhZG93Q29udGVudEVsZW1lbnQoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIERvY3VtZW50KiwgY29uc3QgQXRvbWljU3RyaW5nJiBzZWxlY3QpOwogCiBwcml2
YXRlOgogICAgIHZpcnR1YWwgYm9vbCBpc0NvbnRlbnRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4g
dHJ1ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0NvbnRlbnRTZWxl
Y3RvclF1ZXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dDb250ZW50U2VsZWN0b3JR
dWVyeS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNDNjYzViNDYzOWNiZWM1Y2YyNjE0MjgzYmY1Mjk2ODE0ZThh
ZTMwMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dDb250ZW50
U2VsZWN0b3JRdWVyeS5jcHAKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJTaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeS5oIgorCisjaW5jbHVkZSAiQ1NT
UGFyc2VyLmgiCisjaW5jbHVkZSAiQ1NTU2VsZWN0b3JMaXN0LmgiCisjaW5jbHVkZSAiU2hhZG93
Q29udGVudEVsZW1lbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitTaGFkb3dDb250ZW50
U2VsZWN0b3JRdWVyeTo6U2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnkoU2hhZG93Q29udGVudEVs
ZW1lbnQqIGVsZW1lbnQpCisgICAgOiBtX2NvbnRlbnRFbGVtZW50KGVsZW1lbnQpCisgICAgLCBt
X3NlbGVjdG9yQ2hlY2tlcihlbGVtZW50LT5kb2N1bWVudCgpLCAhZWxlbWVudC0+ZG9jdW1lbnQo
KS0+aW5RdWlya3NNb2RlKCkpCit7CisgICAgbV9zZWxlY3RvckNoZWNrZXIuc2V0Q29sbGVjdGlu
Z1J1bGVzT25seSh0cnVlKTsKKworICAgIGlmIChlbGVtZW50LT5zZWxlY3QoKS5pc0VtcHR5KCkp
CisgICAgICAgIHJldHVybjsKKworICAgIENTU1BhcnNlciBwYXJzZXIodHJ1ZSk7CisgICAgcGFy
c2VyLnBhcnNlU2VsZWN0b3IoZWxlbWVudC0+c2VsZWN0KCksIGVsZW1lbnQtPmRvY3VtZW50KCks
IG1fc2VsZWN0b3JMaXN0KTsKKworICAgIG1fc2VsZWN0b3JzLmluaXRpYWxpemUobV9zZWxlY3Rv
ckxpc3QpOworfQorCitib29sIFNoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5OjptYXRjaGVzKE5v
ZGUqIG5vZGUpIGNvbnN0Cit7CisgICAgQVNTRVJUKG5vZGUpOworICAgIGlmICghbm9kZSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgQVNTRVJUKG5vZGUtPnBhcmVudE5vZGUoKSA9PSBt
X2NvbnRlbnRFbGVtZW50LT5zaGFkb3dUcmVlUm9vdE5vZGUoKS0+c2hhZG93SG9zdCgpKTsKKwor
ICAgIGlmIChtX2NvbnRlbnRFbGVtZW50LT5zZWxlY3QoKS5pc0VtcHR5KCkpCisgICAgICAgIHJl
dHVybiB0cnVlOworCisgICAgaWYgKCFub2RlLT5pc0VsZW1lbnROb2RlKCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIHJldHVybiBtX3NlbGVjdG9ycy5tYXRjaGVzKG1fc2VsZWN0b3JD
aGVja2VyLCB0b0VsZW1lbnQobm9kZSkpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnkuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ1Njg3M2IzNDMwYzNh
MmMyNDdhMTgwYWU0ZGEzZGIxMDRmMDczMGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnkuaApAQCAtMCwwICsxLDY0IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAq
IGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisg
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBTaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeV9oCisjZGVmaW5lIFNoYWRvd0NvbnRlbnRT
ZWxlY3RvclF1ZXJ5X2gKKworI2luY2x1ZGUgIkNTU1NlbGVjdG9yTGlzdC5oIgorI2luY2x1ZGUg
IlNlbGVjdG9yQ2hlY2tlci5oIgorI2luY2x1ZGUgIlNlbGVjdG9yUXVlcnkuaCIKKyNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBEb2N1bWVudDsKK2NsYXNzIE5vZGU7CitjbGFzcyBTaGFkb3dDb250
ZW50RWxlbWVudDsKKworY2xhc3MgU2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnkgeworICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFNoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5KTsKK3B1YmxpYzoK
KyAgICBleHBsaWNpdCBTaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeShTaGFkb3dDb250ZW50RWxl
bWVudCopOworCisgICAgYm9vbCBtYXRjaGVzKE5vZGUqKSBjb25zdDsKKworcHJpdmF0ZToKKyAg
ICBTaGFkb3dDb250ZW50RWxlbWVudCogbV9jb250ZW50RWxlbWVudDsKKyAgICBTZWxlY3RvckRh
dGFMaXN0IG1fc2VsZWN0b3JzOworICAgIENTU1NlbGVjdG9yTGlzdCBtX3NlbGVjdG9yTGlzdDsK
KyAgICBTZWxlY3RvckNoZWNrZXIgbV9zZWxlY3RvckNoZWNrZXI7Cit9OworCit9CisKKworCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dJbmNsdXNpb25TZWxl
Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93SW5jbHVzaW9uU2VsZWN0b3IuY3Bw
CmluZGV4IDk4NDFmNTU2NDg4N2M4OTYzNDUzNzQ5ZjIzNzE2NmNhMmU0NWUxMDUuLjU3ZTlkNDJi
ZTUxYjVlNDUyYzRkNDA1NGUyMGJhNGM3Yjg1NTQ4YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9TaGFkb3dJbmNsdXNpb25TZWxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1NoYWRvd0luY2x1c2lvblNlbGVjdG9yLmNwcApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1
ZGUgIlNoYWRvd0luY2x1c2lvblNlbGVjdG9yLmgiCiAKICNpbmNsdWRlICJTaGFkb3dDb250ZW50
RWxlbWVudC5oIgorI2luY2x1ZGUgIlNoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmgiCiAjaW5j
bHVkZSAiU2hhZG93Um9vdC5oIgogCiAKQEAgLTExMSwxMSArMTEyLDEyIEBAIHZvaWQgU2hhZG93
SW5jbHVzaW9uU2VsZWN0b3I6OnNlbGVjdChTaGFkb3dDb250ZW50RWxlbWVudCogY29udGVudEVs
ZW1lbnQsIFNoYWRvCiB7CiAgICAgQVNTRVJUKGluY2x1c2lvbnMtPmlzRW1wdHkoKSk7CiAKKyAg
ICBTaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeSBxdWVyeShjb250ZW50RWxlbWVudCk7CiAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2NhbmRpZGF0ZXMuc2l6ZSgpOyArK2kpIHsKICAgICAg
ICAgTm9kZSogY2hpbGQgPSBtX2NhbmRpZGF0ZXNbaV0uZ2V0KCk7CiAgICAgICAgIGlmICghY2hp
bGQpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKCFjb250ZW50RWxlbWVudC0+
c2hvdWxkSW5jbHVkZShjaGlsZCkpCisgICAgICAgIGlmICghcXVlcnkubWF0Y2hlcyhjaGlsZCkp
CiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBSZWZQdHI8U2hhZG93SW5jbHVzaW9u
PiBpbmNsdXNpb24gPSBTaGFkb3dJbmNsdXNpb246OmNyZWF0ZShjb250ZW50RWxlbWVudCwgY2hp
bGQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0luY2x1c2lvblNlbGVj
dG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93SW5jbHVzaW9uU2VsZWN0b3IuaAppbmRl
eCBmMWFkYWVlM2Y1NDNhODFjM2ZlZmJmYzQ2ZTAxYjFmZDdmM2IwZThmLi5kMWE4NzE3NDQxYjE5
YzJkNmFmYTBlOGYzNDA3NTg0MTAyMThiNGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vU2hhZG93SW5jbHVzaW9uU2VsZWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hh
ZG93SW5jbHVzaW9uU2VsZWN0b3IuaApAQCAtMTM3LDcgKzEzNyw2IEBAIHB1YmxpYzoKICAgICB2
b2lkIGRpZFNlbGVjdCgpOwogICAgIGJvb2wgaGFzQ2FuZGlkYXRlcygpIGNvbnN0IHsgcmV0dXJu
ICFtX2NhbmRpZGF0ZXMuaXNFbXB0eSgpOyB9CiAKLQogcHJpdmF0ZToKICAgICB2b2lkIHJlbW92
ZUZyb21TZXQoU2hhZG93SW5jbHVzaW9uTGlzdCopOwogICAgIHZvaWQgYWRkVG9TZXQoU2hhZG93
SW5jbHVzaW9uTGlzdCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0
YWlsc0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQu
Y3BwCmluZGV4IGZhZDlhZjgwNDQxNDU3MGMxZTc2Y2EyOGM1ZWI1YjE2MjdjNzAyMjAuLmZjODk1
MDk3YjFhZTk2YTM4YWI5YjY1MTc5YzM1MTFjOGEwZDIyNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHAKQEAgLTM2LDE3ICszNiwyMSBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKK3N0YXRpYyBjb25zdCBB
dG9taWNTdHJpbmcmIHN1bW1hcnlRdWVyeVNlbGVjdG9yKCkKK3sKKyAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKEF0b21pY1N0cmluZywgc2VsZWN0b3IsICgic3VtbWFyeTpmaXJzdC1vZi10eXBlIikp
OworICAgIHJldHVybiBzZWxlY3RvcjsKK307CisKIGNsYXNzIERldGFpbHNDb250ZW50RWxlbWVu
dCA6IHB1YmxpYyBTaGFkb3dDb250ZW50RWxlbWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBh
c3NSZWZQdHI8RGV0YWlsc0NvbnRlbnRFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQqKTsKIAogcHJp
dmF0ZToKICAgICBEZXRhaWxzQ29udGVudEVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQotICAg
ICAgICA6IFNoYWRvd0NvbnRlbnRFbGVtZW50KEhUTUxOYW1lczo6ZGl2VGFnLCBkb2N1bWVudCkK
KyAgICAgICAgOiBTaGFkb3dDb250ZW50RWxlbWVudChIVE1MTmFtZXM6OmRpdlRhZywgZG9jdW1l
bnQsIFdURjo6ZW1wdHlBdG9tKQogICAgIHsKICAgICB9Ci0KLSAgICB2aXJ0dWFsIGJvb2wgc2hv
dWxkSW5jbHVkZShOb2RlKik7CiB9OwogCiBQYXNzUmVmUHRyPERldGFpbHNDb250ZW50RWxlbWVu
dD4gRGV0YWlsc0NvbnRlbnRFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAt
NTQsMjQgKzU4LDE1IEBAIFBhc3NSZWZQdHI8RGV0YWlsc0NvbnRlbnRFbGVtZW50PiBEZXRhaWxz
Q29udGVudEVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lCiAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBEZXRhaWxzQ29udGVudEVsZW1lbnQoZG9jdW1lbnQpKTsKIH0KIAotYm9vbCBEZXRh
aWxzQ29udGVudEVsZW1lbnQ6OnNob3VsZEluY2x1ZGUoTm9kZSogbm9kZSkKLXsKLSAgICBIVE1M
RGV0YWlsc0VsZW1lbnQqIGRldGFpbHMgPSBzdGF0aWNfY2FzdDxIVE1MRGV0YWlsc0VsZW1lbnQq
PihzaGFkb3dBbmNlc3Rvck5vZGUoKSk7Ci0gICAgcmV0dXJuIGRldGFpbHMtPm1haW5TdW1tYXJ5
KCkgIT0gbm9kZTsKLX0KLQotCiBjbGFzcyBEZXRhaWxzU3VtbWFyeUVsZW1lbnQgOiBwdWJsaWMg
U2hhZG93Q29udGVudEVsZW1lbnQgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPERl
dGFpbHNTdW1tYXJ5RWxlbWVudD4gY3JlYXRlKERvY3VtZW50Kik7CiAKIHByaXZhdGU6CiAgICAg
RGV0YWlsc1N1bW1hcnlFbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCkKLSAgICAgICAgOiBTaGFk
b3dDb250ZW50RWxlbWVudChIVE1MTmFtZXM6OmRpdlRhZywgZG9jdW1lbnQpCisgICAgICAgIDog
U2hhZG93Q29udGVudEVsZW1lbnQoSFRNTE5hbWVzOjpkaXZUYWcsIGRvY3VtZW50LCBzdW1tYXJ5
UXVlcnlTZWxlY3RvcigpKQogICAgIHsKICAgICB9Ci0KLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxk
SW5jbHVkZShOb2RlKik7CiB9OwogCiBQYXNzUmVmUHRyPERldGFpbHNTdW1tYXJ5RWxlbWVudD4g
RGV0YWlsc1N1bW1hcnlFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtNzks
MTMgKzc0LDYgQEAgUGFzc1JlZlB0cjxEZXRhaWxzU3VtbWFyeUVsZW1lbnQ+IERldGFpbHNTdW1t
YXJ5RWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWUKICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IERldGFpbHNTdW1tYXJ5RWxlbWVudChkb2N1bWVudCkpOwogfQogCi1ib29sIERldGFpbHNT
dW1tYXJ5RWxlbWVudDo6c2hvdWxkSW5jbHVkZShOb2RlKiBub2RlKQotewotICAgIEhUTUxEZXRh
aWxzRWxlbWVudCogZGV0YWlscyA9IHN0YXRpY19jYXN0PEhUTUxEZXRhaWxzRWxlbWVudCo+KHNo
YWRvd0FuY2VzdG9yTm9kZSgpKTsKLSAgICByZXR1cm4gZGV0YWlscy0+bWFpblN1bW1hcnkoKSA9
PSBub2RlOwotfQotCi0KIFBhc3NSZWZQdHI8SFRNTERldGFpbHNFbGVtZW50PiBIVE1MRGV0YWls
c0VsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCog
ZG9jdW1lbnQpCiB7CiAgICAgUmVmUHRyPEhUTUxEZXRhaWxzRWxlbWVudD4gcmVzdWx0ID0gYWRv
cHRSZWYobmV3IEhUTUxEZXRhaWxzRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3VtbWFyeUVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MU3VtbWFyeUVsZW1lbnQuY3BwCmluZGV4IGVjZjEwODVjZTMwZmUw
ZjNiOTNlMWNkZTI1ZWI1NDRmYTdkYjRmNGIuLmNjOGMwNTk4YmZlMWY4ZmQ2ZDYxYmZlZjE1MmU0
MjIwMzZlNTVkYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN1bW1hcnlF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5j
cHAKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFN1bW1hcnlDb250
ZW50RWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCi0gICAgICAgIDogU2hhZG93Q29udGVudEVs
ZW1lbnQoSFRNTE5hbWVzOjpkaXZUYWcsIGRvY3VtZW50KQorICAgICAgICA6IFNoYWRvd0NvbnRl
bnRFbGVtZW50KEhUTUxOYW1lczo6ZGl2VGFnLCBkb2N1bWVudCwgZW1wdHlBdG9tKQogICAgIHsK
ICAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDc4M2MzODA1
NjkzYWVjNjNkNGQ5ODViZDc4YzM4NGZkNDQ4NGM0ZWMuLjZjMGFhMjQ1NmNlZWVkYzFhN2FhMDRj
ZmU5MjRiNjUwNTA5MzU5NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAg
LTEyNiwxNCArMTI2LDE0IEBAIGJvb2wgSW50ZXJuYWxzOjppc1ByZWxvYWRlZChEb2N1bWVudCog
ZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgdXJsKQogICAgIHJldHVybiBkb2N1bWVudC0+Y2FjaGVk
UmVzb3VyY2VMb2FkZXIoKS0+aXNQcmVsb2FkZWQodXJsKTsKIH0KIAotUGFzc1JlZlB0cjxFbGVt
ZW50PiBJbnRlcm5hbHM6OmNyZWF0ZVNoYWRvd0NvbnRlbnRFbGVtZW50KERvY3VtZW50KiBkb2N1
bWVudCwgRXhjZXB0aW9uQ29kZSYgZWMpCitQYXNzUmVmUHRyPEVsZW1lbnQ+IEludGVybmFsczo6
Y3JlYXRlU2hhZG93Q29udGVudEVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBTdHJp
bmcmIHNlbGVjdCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKCFkb2N1bWVudCkgewog
ICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
fQogCi0gICAgcmV0dXJuIFNoYWRvd0NvbnRlbnRFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwor
ICAgIHJldHVybiBTaGFkb3dDb250ZW50RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50LCBzZWxlY3Qp
OwogfQogCiBFbGVtZW50KiBJbnRlcm5hbHM6OmdldEVsZW1lbnRCeUlkSW5TaGFkb3dSb290KE5v
ZGUqIHNoYWRvd1Jvb3QsIGNvbnN0IFN0cmluZyYgaWQsIEV4Y2VwdGlvbkNvZGUmIGVjKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggZWQ0NzM3MDU1Yjk5MzgzZGE5YjI4MDIxYWYz
ZjY5NTljNjFkMzVmNy4uYzk2N2ZjZWU3NTgzMDlhZTIxODI3ZDlmMmRkMTlhMDMzOTgyYmJiMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHJlbW92ZVNoYWRvd1Jvb3QoRWxlbWVudCogaG9zdCwgRXhjZXB0aW9uQ29kZSYp
OwogICAgIEVsZW1lbnQqIGluY2x1ZGVyRm9yKE5vZGUqLCBFeGNlcHRpb25Db2RlJik7CiAgICAg
U3RyaW5nIHNoYWRvd1BzZXVkb0lkKEVsZW1lbnQqLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgUGFz
c1JlZlB0cjxFbGVtZW50PiBjcmVhdGVTaGFkb3dDb250ZW50RWxlbWVudChEb2N1bWVudCosIEV4
Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNzUmVmUHRyPEVsZW1lbnQ+IGNyZWF0ZVNoYWRvd0NvbnRl
bnRFbGVtZW50KERvY3VtZW50KiwgY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOwogICAg
IEVsZW1lbnQqIGdldEVsZW1lbnRCeUlkSW5TaGFkb3dSb290KE5vZGUqIHNoYWRvd1Jvb3QsIGNv
bnN0IFN0cmluZyYgaWQsIEV4Y2VwdGlvbkNvZGUmKTsKIAogI2lmIEVOQUJMRShJTlBVVF9DT0xP
UikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCBmNTZkMWFmNzRhOGUzNWRk
NDdiZDRlNmM0OWYxMjVlN2VhYWMzYTU1Li41ZjAwOGQwYThhZmI2OGQ2MDUwMjU4ZDhiNjU0Yzhm
NzE1M2E3MGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5p
ZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC0zNSw3ICsz
NSw3IEBAIG1vZHVsZSB3aW5kb3cgewogICAgICAgICBFbGVtZW50IGluY2x1ZGVyRm9yKGluIE5v
ZGUgbm9kZSkgcmFpc2VzIChET01FeGNlcHRpb24pOwogICAgICAgICB2b2lkIHJlbW92ZVNoYWRv
d1Jvb3QoaW4gRWxlbWVudCBob3N0KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIERP
TVN0cmluZyBzaGFkb3dQc2V1ZG9JZChpbiBFbGVtZW50IGVsZW1lbnQpIHJhaXNlcyAoRE9NRXhj
ZXB0aW9uKTsKLSAgICAgICAgRWxlbWVudCBjcmVhdGVTaGFkb3dDb250ZW50RWxlbWVudChpbiBE
b2N1bWVudCBkb2N1bWVudCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgICAgIEVsZW1lbnQg
Y3JlYXRlU2hhZG93Q29udGVudEVsZW1lbnQoaW4gRG9jdW1lbnQgZG9jdW1lbnQsIGluIFtPcHRp
b25hbD1DYWxsV2l0aE51bGxWYWx1ZV0gRE9NU3RyaW5nIHNlbGVjdCkgcmFpc2VzKERPTUV4Y2Vw
dGlvbik7CiAgICAgICAgIEVsZW1lbnQgZ2V0RWxlbWVudEJ5SWRJblNoYWRvd1Jvb3QoaW4gTm9k
ZSBzaGFkb3dSb290LCBpbiBET01TdHJpbmcgaWQpIHJhaXNlcyhET01FeGNlcHRpb24pOwogCiAj
aWYgZGVmaW5lZChFTkFCTEVfSU5QVVRfQ09MT1IpICYmIEVOQUJMRV9JTlBVVF9DT0xPUgpkaWZm
IC0tZ2l0IGEvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlciBiL1NvdXJjZS9hdXRvdG9v
bHMvc3ltYm9scy5maWx0ZXIKaW5kZXggMTViNjk1N2E5ZTI0MjMxOTBiYWMxZGQyMWNmYjE2NzNm
ZDczMThkYS4uYjIyNWYwNmJmOWQyNDU2MzExZGRlYjgxNDE1NWE5Y2I1NjJjNWI2YiAxMDA2NDQK
LS0tIGEvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgorKysgYi9Tb3VyY2UvYXV0b3Rv
b2xzL3N5bWJvbHMuZmlsdGVyCkBAIC01Myw3ICs1Myw3IEBAIF9aTjdXZWJDb3JlMTdjYWNoZURP
TVN0cnVjdHVyZUVQTlNfMTdKU0RPTUdsb2JhbE9iamVjdEVQTjNKU0M5U3RydWN0dXJlRVBLTlMy
XzlDCiBfWk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjM5c2V0UmVzb3VyY2VzRGF0YVNp
emVMaW1pdHNGcm9tSW50ZXJuYWxzRWlpOwogX1pON1dlYkNvcmUyME5vZGVSZW5kZXJpbmdDb250
ZXh0QzFFUE5TXzROb2RlRTsKIF9aTjdXZWJDb3JlMjBOb2RlUmVuZGVyaW5nQ29udGV4dEQxRXY7
Ci1fWk43V2ViQ29yZTIwU2hhZG93Q29udGVudEVsZW1lbnQ2Y3JlYXRlRVBOU184RG9jdW1lbnRF
OworX1pON1dlYkNvcmUyMFNoYWRvd0NvbnRlbnRFbGVtZW50NmNyZWF0ZUVQTlNfOERvY3VtZW50
RVJLTjNXVEYxMkF0b21pY1N0cmluZ0U7CiBfWk43V2ViQ29yZTIxZ2V0Q2FjaGVkRE9NU3RydWN0
dXJlRVBOU18xN0pTRE9NR2xvYmFsT2JqZWN0RVBLTjNKU0M5Q2xhc3NJbmZvRTsKIF9aTjdXZWJD
b3JlMjJleHRlcm5hbFJlcHJlc2VudGF0aW9uRVBOU183RWxlbWVudEVqOwogX1pON1dlYkNvcmUy
NERvY3VtZW50TWFya2VyQ29udHJvbGxlcjEwbWFya2Vyc0ZvckVQTlNfNE5vZGVFTlNfMTREb2N1
bWVudE1hcmtlcjExTWFya2VyVHlwZXNFOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDZiZDI0OGQwOWI4NzEyNDE1NjY5OWVm
ZjU1OTg2NDE1Y2M0N2M5MzEuLjU1N2RmY2UxYjFlOTM0ZjRmN2Q0NzVkZDM0NjkzMGRkNmYxZDg4
YjYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wMS0xMSAgU2hpbnlhIEthd2FuYWthICA8
c2hpbnlha0Bnb29nbGUuY29tPgorCisgICAgICAgIFNoYWRvd0NvbnRlbnRFbGVtZW50IHNob3Vs
ZCBiZSBhYmxlIHRvIHVzZSBxdWVyeS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTc1MzAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSGFqaW1lIE1vcml0
YS4KKworICAgICAgICBUZXN0cyBmb3IgU2hhZG93Q29udGVudEVsZW1lbnQgcXVlcnkuCisKKyAg
ICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWNvbnRlbnRzLXNlbGVjdC1leHBlY3RlZC5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWNvbnRlbnRzLXNl
bGVjdC5odG1sOiBBZGRlZC4KKwogMjAxMi0wMS0xMSAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcu
a2ltQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFVwZGF0ZSBza2lwcGVkIGZpbGUgZm9yIGxheW91
dCB0ZXN0IG9mIEVGTCBwb3J0LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hh
ZG93L3NoYWRvdy1jb250ZW50cy1zZWxlY3QtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvZG9tL3NoYWRvdy9zaGFkb3ctY29udGVudHMtc2VsZWN0LWV4cGVjdGVkLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMDM3OTY1YmEyYzkyN2JjMjQ4Njk1ODQ1M2MxY2M2NzUyOTczZTVlMgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctY29udGVudHMtc2Vs
ZWN0LWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSw0MSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPHN0eWxlPgorLyogcmVsYXRpdmUgcG9zaXRpb25pbmcgZW5zdXJlcyB1bmRl
cmx5aW5nIFJlbmRlckxheWVyICovCisuY29udGFpbmVyIHsKKyAgICBwb3NpdGlvbjogcmVsYXRp
dmU7Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJjb250YWluZXIiPgor
PCEtLSB0ZXN0U2VsZWN0SXNOdWxsIC0tPgorPGRpdj48c3Bhbj5IZWxsbyw8L3NwYW4+PHNwYW4+
Y29udGVudDwvc3Bhbj48c3Bhbj5Xb3JsZC48L3NwYW4+PC9kaXY+Cis8IS0tIHRlc3RTZWxlY3RJ
c0lkIC0tPgorPGRpdj48c3Bhbj5IZWxsbyw8L3NwYW4+PHNwYW4+Y29udGVudDwvc3Bhbj48c3Bh
bj5Xb3JsZC48L3NwYW4+PC9kaXY+Cis8IS0tIHRlc3RTZWxlY3RJc0lkQnV0Tm90TWF0Y2hlZCAt
LT4KKzxkaXY+PHNwYW4+SGVsbG8sPC9zcGFuPjxzcGFuPldvcmxkLjwvc3Bhbj48L2Rpdj4KKzwh
LS0gdGVzdFNlbGVjdElzSWRCdXROb3RDaGlsZCAtLT4KKzxkaXY+PHNwYW4+SGVsbG8sPC9zcGFu
PjxzcGFuPldvcmxkLjwvc3Bhbj48L2Rpdj4KKzwhLS0gdGVzdFNlbGVjdElzTXVsdGlJZCAtLT4K
KzxkaXY+PHNwYW4+SGVsbG8sPC9zcGFuPjxzcGFuPmNvbnRlbnQ8L3NwYW4+PHNwYW4+Y29udGVu
dDwvc3Bhbj48c3Bhbj5Xb3JsZC48L3NwYW4+PC9kaXY+Cis8IS0tIHRlc3RTZWxlY3RJc1R5cGUg
LS0+Cis8ZGl2PjxzcGFuPkhlbGxvLDwvc3Bhbj48c3Bhbj5jb250ZW50PC9zcGFuPjxzcGFuPldv
cmxkLjwvc3Bhbj48L2Rpdj4KKzwhLS0gdGVzdFNlbGVjdElzVHlwZVdpdGhBdHRyaWJ1dGUgLS0+
Cis8ZGl2PjxzcGFuPkhlbGxvLDwvc3Bhbj48c3Bhbj5jb250ZW50PC9zcGFuPjxzcGFuPldvcmxk
Ljwvc3Bhbj48L2Rpdj4KKzwhLS0gdGVzdFNlbGVjdElzVHlwZVdpdGhGaXJzdE9mVHlwZSAtLT4K
KzxkaXY+PHNwYW4+SGVsbG8sPC9zcGFuPjxzcGFuPmNvbnRlbnQ8L3NwYW4+PHNwYW4+V29ybGQu
PC9zcGFuPjwvZGl2PgorPCEtLSB0ZXN0U2VsZWN0SXNUeXBlV2l0aEZpcnN0T2ZUeXBlMiAtLT4K
KzxkaXY+PHNwYW4+SGVsbG8sPC9zcGFuPjxzcGFuPmNvbnRlbnQ8L3NwYW4+PHNwYW4+V29ybGQu
PC9zcGFuPjwvZGl2PgorPCEtLSB0ZXN0U2VsZWN0SXNUeXBlV2l0aExhc3RPZlR5cGUgLS0+Cis8
ZGl2PjxzcGFuPkhlbGxvLDwvc3Bhbj48c3Bhbj5jb250ZW50PC9zcGFuPjxzcGFuPldvcmxkLjwv
c3Bhbj48L2Rpdj4KKzwhLS0gdGVzdFNlbGVjdElzRGV0YWlscyAtLT4KKzxkaXY+PHNwYW4+SGVs
bG8sPC9zcGFuPjxkZXRhaWxzPmNvbnRlbnQ8L2RldGFpbHM+PHNwYW4+V29ybGQuPC9zcGFuPjwv
ZGl2PgorPCEtLSB0ZXN0U2VsZWN0SXNEZXRhaWxzMiAtLT4KKzxkaXY+PHNwYW4+SGVsbG8sPC9z
cGFuPjxkZXRhaWxzPjxzdW1tYXJ5PmNvbnRlbnQ8L3N1bW1hcnk+PC9kZXRhaWxzPjxzcGFuPldv
cmxkLjwvc3Bhbj48L2Rpdj4KKzwhLS0gdGVzdFNlbGVjdFdoZW5EeW5hbWljYWxseUNoaWxkcmVu
Q2hhbmdlZCAtLT4KKzxkaXY+PHNwYW4+SGVsbG8sPC9zcGFuPjxzcGFuPmNvbnRlbnQ8L3NwYW4+
PHNwYW4+V29ybGQuPC9zcGFuPjwvZGl2PgorPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LWNvbnRlbnRzLXNlbGVj
dC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1jb250ZW50cy1zZWxl
Y3QuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42NzkyOTY3YTkzZTU5NjJkYjVhZTdmMjliYjI5YmNhMDFjZWNm
NTFmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRv
dy1jb250ZW50cy1zZWxlY3QuaHRtbApAQCAtMCwwICsxLDE3MyBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorLyogcmVsYXRpdmUgcG9zaXRpb25pbmcgZW5zdXJl
cyB1bmRlcmx5aW5nIFJlbmRlckxheWVyICovCisuY29udGFpbmVyIHsKKyAgICBwb3NpdGlvbjog
cmVsYXRpdmU7Cit9Cis8L3N0eWxlPgorPHNjcmlwdD4KK2Z1bmN0aW9uIGFwcGVuZFNoYWRvdyh0
YXJnZXQsIHNlbGVjdCkgeworICAgIHZhciByb290ID0gaW50ZXJuYWxzLmVuc3VyZVNoYWRvd1Jv
b3QodGFyZ2V0KTsKKworICAgIHZhciBjaGlsZDAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJz
cGFuIik7CisgICAgY2hpbGQwLmlubmVySFRNTCA9ICJIZWxsbywiOworICAgIHJvb3QuYXBwZW5k
Q2hpbGQoY2hpbGQwKTsKKworICAgIHZhciBjb250ZW50ID0gaW50ZXJuYWxzLmNyZWF0ZVNoYWRv
d0NvbnRlbnRFbGVtZW50KGRvY3VtZW50LCBzZWxlY3QpOworICAgIHJvb3QuYXBwZW5kQ2hpbGQo
Y29udGVudCk7CisKKyAgICB2YXIgY2hpbGQxID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3Bh
biIpOworICAgIGNoaWxkMS5pbm5lckhUTUwgPSAiV29ybGQuIjsKKyAgICByb290LmFwcGVuZENo
aWxkKGNoaWxkMSk7Cit9CisKK2Z1bmN0aW9uIHRlc3RTZWxlY3RJc051bGwoKSB7CisgICAgdmFy
IHRhcmdldCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHRhcmdldC5pbm5l
ckhUTUwgPSAiPHNwYW4+Y29udGVudDwvc3Bhbj4iOworCisgICAgYXBwZW5kU2hhZG93KHRhcmdl
dCwgIiIpOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRhaW5lcicpLmFwcGVu
ZENoaWxkKHRhcmdldCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RTZWxlY3RJc0lkKCkgeworICAgIHZh
ciB0YXJnZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICB0YXJnZXQuaW5u
ZXJIVE1MID0gIjxzcGFuIGlkPSdmb28nPmNvbnRlbnQ8L3NwYW4+PHNwYW4gaWQ9J2F6dW55YW4n
PnBlcm9wZXJvPC9zcGFuPiI7CisKKyAgICBhcHBlbmRTaGFkb3codGFyZ2V0LCAiI2ZvbyIpOwor
CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRhaW5lcicpLmFwcGVuZENoaWxkKHRh
cmdldCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RTZWxlY3RJc0lkQnV0Tm90TWF0Y2hlZCgpIHsKKyAg
ICB2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgdGFyZ2V0
LmlubmVySFRNTCA9ICI8c3BhbiBpZD0nZm9vJz5jb250ZW50PC9zcGFuPjxzcGFuIGlkPSdhenVu
eWFuJz5wZXJvcGVybzwvc3Bhbj4iOworCisgICAgYXBwZW5kU2hhZG93KHRhcmdldCwgIiNmb29i
YXIiKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250YWluZXInKS5hcHBlbmRD
aGlsZCh0YXJnZXQpOworfQorCitmdW5jdGlvbiB0ZXN0U2VsZWN0SXNJZEJ1dE5vdENoaWxkKCkg
eworICAgIHZhciB0YXJnZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICB0
YXJnZXQuaW5uZXJIVE1MID0gIjxzcGFuPjxzcGFuIGlkPSdmb28nPmNvbnRlbnQ8L3NwYW4+PHNw
YW4gaWQ9J2F6dW55YW4nPnBlcm9wZXJvPC9zcGFuPjwvc3Bhbj4iOworCisgICAgYXBwZW5kU2hh
ZG93KHRhcmdldCwgIiNmb28iKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250
YWluZXInKS5hcHBlbmRDaGlsZCh0YXJnZXQpOworfQorCitmdW5jdGlvbiB0ZXN0U2VsZWN0SXNN
dWx0aUlkKCkgeworICAgIHZhciB0YXJnZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYn
KTsKKyAgICB0YXJnZXQuaW5uZXJIVE1MID0gIjxzcGFuIGlkPSdmb28nPmNvbnRlbnQ8L3NwYW4+
PHNwYW4gaWQ9J2F6dW55YW4nPnBlcm9wZXJvPC9zcGFuPjxzcGFuIGlkPSdmb28nPmNvbnRlbnQ8
L3NwYW4+IjsKKworICAgIGFwcGVuZFNoYWRvdyh0YXJnZXQsICIjZm9vIik7CisKKyAgICAvLyBB
bGwgbWF0Y2hlZCBlbGVtZW50cyB3aWxsIGJlIHNlbGVjdGVkLgorICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdjb250YWluZXInKS5hcHBlbmRDaGlsZCh0YXJnZXQpOworfQorCitmdW5jdGlv
biB0ZXN0U2VsZWN0SXNUeXBlKCkgeworICAgIHZhciB0YXJnZXQgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdkaXYnKTsKKyAgICB0YXJnZXQuaW5uZXJIVE1MID0gIjxkaXY+YXp1bnlhbjwvZGl2
PjxzcGFuPmNvbnRlbnQ8L3NwYW4+PGRpdj5wZXJvcGVybzwvZGl2PiI7CisKKyAgICBhcHBlbmRT
aGFkb3codGFyZ2V0LCAic3BhbiIpOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Nv
bnRhaW5lcicpLmFwcGVuZENoaWxkKHRhcmdldCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RTZWxlY3RJ
c1R5cGVXaXRoQXR0cmlidXRlKCkgeworICAgIHZhciB0YXJnZXQgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdkaXYnKTsKKyAgICB0YXJnZXQuaW5uZXJIVE1MID0gIjxzcGFuPmF6dW55YW48L3Nw
YW4+PHNwYW4gdGl0bGU9J2NvbnRlbnQnPmNvbnRlbnQ8L3NwYW4+PHNwYW4+cGVyb3Blcm88L3Nw
YW4+IjsKKworICAgIGFwcGVuZFNoYWRvdyh0YXJnZXQsICJzcGFuW3RpdGxlPSdjb250ZW50J10i
KTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250YWluZXInKS5hcHBlbmRDaGls
ZCh0YXJnZXQpOworfQorCitmdW5jdGlvbiB0ZXN0U2VsZWN0SXNUeXBlV2l0aEZpcnN0T2ZUeXBl
KCkgeworICAgIHZhciB0YXJnZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAg
ICB0YXJnZXQuaW5uZXJIVE1MID0gIjxkaXY+YXp1bnlhbjwvZGl2PjxzcGFuPmNvbnRlbnQ8L3Nw
YW4+PHNwYW4+cGVyb3Blcm88L3NwYW4+IjsKKworICAgIGFwcGVuZFNoYWRvdyh0YXJnZXQsICJz
cGFuOmZpcnN0LW9mLXR5cGUiKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250
YWluZXInKS5hcHBlbmRDaGlsZCh0YXJnZXQpOworfQorCitmdW5jdGlvbiB0ZXN0U2VsZWN0SXNU
eXBlV2l0aEZpcnN0T2ZUeXBlMigpIHsKKyAgICB2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnZGl2Jyk7CisgICAgdGFyZ2V0LmlubmVySFRNTCA9ICI8ZGl2PjxzcGFuPmF6dW55
YW48L3NwYW4+PC9kaXY+PHNwYW4+Y29udGVudDwvc3Bhbj48c3Bhbj5wZXJvcGVybzwvc3Bhbj4i
OworCisgICAgYXBwZW5kU2hhZG93KHRhcmdldCwgInNwYW46Zmlyc3Qtb2YtdHlwZSIpOworCisg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRhaW5lcicpLmFwcGVuZENoaWxkKHRhcmdl
dCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RTZWxlY3RJc1R5cGVXaXRoTGFzdE9mVHlwZSgpIHsKKyAg
ICB2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgdGFyZ2V0
LmlubmVySFRNTCA9ICI8c3Bhbj5henVueWFuPC9zcGFuPjxzcGFuPmNvbnRlbnQ8L3NwYW4+PGRp
dj5wZXJvcGVybzwvZGl2PiI7CisKKyAgICBhcHBlbmRTaGFkb3codGFyZ2V0LCAic3BhbjpsYXN0
LW9mLXR5cGUiKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250YWluZXInKS5h
cHBlbmRDaGlsZCh0YXJnZXQpOworfQorCitmdW5jdGlvbiB0ZXN0U2VsZWN0SXNEZXRhaWxzKCkg
eworICAgIHZhciB0YXJnZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICB0
YXJnZXQuaW5uZXJIVE1MID0gIjxkZXRhaWxzPmNvbnRlbnQ8L2RldGFpbHM+IjsKKworICAgIGFw
cGVuZFNoYWRvdyh0YXJnZXQsICJkZXRhaWxzIik7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnY29udGFpbmVyJykuYXBwZW5kQ2hpbGQodGFyZ2V0KTsKK30KKworZnVuY3Rpb24gdGVz
dFNlbGVjdElzRGV0YWlsczIoKSB7CisgICAgdmFyIHRhcmdldCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ2RpdicpOworICAgIHRhcmdldC5pbm5lckhUTUwgPSAiPGRldGFpbHM+PHN1bW1hcnk+
Y29udGVudDwvc3VtbWFyeT48L2RldGFpbHM+IjsKKworICAgIGFwcGVuZFNoYWRvdyh0YXJnZXQs
ICJkZXRhaWxzIik7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29udGFpbmVyJyku
YXBwZW5kQ2hpbGQodGFyZ2V0KTsKK30KKworZnVuY3Rpb24gdGVzdFNlbGVjdFdoZW5EeW5hbWlj
YWxseUNoaWxkcmVuQ2hhbmdlZCgpIHsKKyAgICB2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnZGl2Jyk7CisgICAgdGFyZ2V0LmlubmVySFRNTCA9ICI8c3Bhbj5jb250ZW50PC9z
cGFuPjxzcGFuIGlkPSd0b2JlcmVtb3ZlZCc+YW51bnlhbiBwZXJvcGVybzwvc3Bhbj4iOworCisg
ICAgYXBwZW5kU2hhZG93KHRhcmdldCwgInNwYW4iKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdjb250YWluZXInKS5hcHBlbmRDaGlsZCh0YXJnZXQpOworCisgICAgdmFyIGVsZW0g
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9iZXJlbW92ZWQnKTsKKyAgICBlbGVtLnBhcmVu
dE5vZGUucmVtb3ZlQ2hpbGQoZWxlbSk7Cit9CisKK3ZhciB0ZXN0RnVuY3MgPSBbCisgICAgdGVz
dFNlbGVjdElzTnVsbCwKKyAgICB0ZXN0U2VsZWN0SXNJZCwKKyAgICB0ZXN0U2VsZWN0SXNJZEJ1
dE5vdE1hdGNoZWQsCisgICAgdGVzdFNlbGVjdElzSWRCdXROb3RDaGlsZCwKKyAgICB0ZXN0U2Vs
ZWN0SXNNdWx0aUlkLAorICAgIHRlc3RTZWxlY3RJc1R5cGUsCisgICAgdGVzdFNlbGVjdElzVHlw
ZVdpdGhBdHRyaWJ1dGUsCisgICAgdGVzdFNlbGVjdElzVHlwZVdpdGhGaXJzdE9mVHlwZSwKKyAg
ICB0ZXN0U2VsZWN0SXNUeXBlV2l0aEZpcnN0T2ZUeXBlMiwKKyAgICB0ZXN0U2VsZWN0SXNUeXBl
V2l0aExhc3RPZlR5cGUsCisgICAgdGVzdFNlbGVjdElzRGV0YWlscywKKyAgICB0ZXN0U2VsZWN0
SXNEZXRhaWxzMiwKKyAgICB0ZXN0U2VsZWN0V2hlbkR5bmFtaWNhbGx5Q2hpbGRyZW5DaGFuZ2Vk
LAorXQorCitmdW5jdGlvbiBkb1Rlc3QoKSB7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0ZXN0
RnVuY3MubGVuZ3RoOyArK2kpIHsKKyAgICAgICB0ZXN0RnVuY3NbaV0oKTsKKyAgICB9Cit9Cis8
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0iZG9UZXN0KCkiPgorPGRpdiBpZD0iY29u
dGFpbmVyIj48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBi
L0NoYW5nZUxvZwppbmRleCBjMjFiOTRkYjBjMzBkNWQyM2MzN2QzMDc5MDgwOTllMjBjNTFlNGY0
Li4wOWRhM2EzYzg4ZTEyNjc3YjdkYmMyOTk1MzQzMjc1N2Q3YmQ3NjYxIDEwMDY0NAotLS0gYS9D
aGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTItMDEtMTEgIFNo
aW55YSBLYXdhbmFrYSAgPHNoaW55YWtAZ29vZ2xlLmNvbT4KKworICAgICAgICBTaGFkb3dDb250
ZW50RWxlbWVudCBzaG91bGQgYmUgYWJsZSB0byB1c2UgcXVlcnkuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NTMwMgorCisgICAgICAgIFJldmlld2Vk
IGJ5IEhhamltZSBNb3JpdGEuCisKKyAgICAgICAgKiBTb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMu
ZmlsdGVyOiBFeHBvc2VkIG5lY2Vzc2FyeSBzeW1ib2xzLgorCiAyMDEyLTAxLTExICBVbGFuIERl
Z2VuYmFldiAgPHVsYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFt2OF0gSW50MTZBcnJheS5z
ZXQoYXJyYXksIG9mZnNldCkgZmFpbHMgb24gZmlyc3QgZXhlY3V0aW9uCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122189</attachid>
            <date>2012-01-12 01:36:44 -0800</date>
            <delta_ts>2012-01-12 18:02:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-75302-20120112183643.patch</filename>
            <type>text/plain</type>
            <size>46093</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA0Nzk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2E0YjgyMzIyNWI0MDMx
MGZjZmQ1YmU4OThjMGRjNjI1NzAwZGIwYS4uMWRlYjI0ZDhiMTI5OTg0Y2Q2ZWViMjlhYTA4YzI4
NzVmMmE0MjEyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDEyLTAxLTExICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGdvb2dsZS5jb20+CisKKyAgICAgICAgU2hhZG93Q29udGVu
dEVsZW1lbnQgc2hvdWxkIGJlIGFibGUgdG8gdXNlIHF1ZXJ5LgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzUzMDIKKworICAgICAgICBSZXZpZXdlZCBi
eSBIYWppbWUgTW9yaXRhLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIHNlbGVj
dG9yIHRvIHF1ZXJ5IGVsZW1lbnRzIGluIFNoYWRvd0NvbnRlbnRFbGVtZW50LgorICAgICAgICBU
aGlzIGNhbiBiZSB1c2VkIGluc3RlYWQgb2YgU2hhZG93Q29udGVudEVsZW1lbnQ6OnNob3VsZElu
Y2x1ZGUgaW4gbW9yZSBzb3BoaXN0aWNhdGVkIHdheXMuCisKKyAgICAgICAgVGVzdHM6IGZhc3Qv
ZG9tL3NoYWRvdy9zaGFkb3ctY29udGVudHMtc2VsZWN0LWV4cGVjdGVkLmh0bWwKKyAgICAgICAg
ICAgICAgIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctY29udGVudHMtc2VsZWN0Lmh0bWwKKworICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06Cisg
ICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAg
KiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6
CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IGRvbS9ET01BbGxJbk9uZS5jcHA6CisgICAgICAgICogZG9tL1NlbGVjdG9yUXVlcnkuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JEYXRhTGlzdDo6U2VsZWN0b3JEYXRhTGlzdCk6Cisg
ICAgICAgICAgRXh0cmFjdGVkIGZyb20gU2VsZWN0b3JRdWVyeXRvIHNoYXJlIGNvZGVzIHdpdGgg
U2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnkuCisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckRh
dGFMaXN0Ojppbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yRGF0YUxpc3Q6
Om1hdGNoZXMpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JEYXRhTGlzdDo6cXVlcnlBbGwp
OgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JEYXRhTGlzdDo6cXVlcnlGaXJzdCk6CisgICAg
ICAgIChXZWJDb3JlOjpTZWxlY3RvckRhdGFMaXN0OjpjYW5Vc2VJZExvb2t1cCk6CisgICAgICAg
IChXZWJDb3JlOjpTZWxlY3RvckRhdGFMaXN0OjpleGVjdXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNlbGVjdG9yUXVlcnk6OlNlbGVjdG9yUXVlcnkpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0
b3JRdWVyeTo6cXVlcnlBbGwpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JRdWVyeTo6cXVl
cnlGaXJzdCk6CisgICAgICAgICogZG9tL1NlbGVjdG9yUXVlcnkuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlNlbGVjdG9yRGF0YUxpc3Q6OnNpemUpOgorICAgICAgICAqIGRvbS9TaGFkb3dDb250ZW50
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZWxlY3RBdHRyKToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYWRvd0NvbnRlbnRFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhZG93Q29udGVudEVsZW1lbnQ6OlNoYWRvd0NvbnRlbnRFbGVtZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYWRvd0NvbnRlbnRFbGVtZW50OjpzZWxlY3QpOgorICAgICAgICAqIGRvbS9TaGFk
b3dDb250ZW50RWxlbWVudC5oOgorICAgICAgICAqIGRvbS9TaGFkb3dDb250ZW50U2VsZWN0b3JR
dWVyeS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Q29udGVudFNlbGVjdG9y
UXVlcnk6OlNoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlNo
YWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5OjptYXRjaGVzKToKKyAgICAgICAgICBSZXR1cm5zIHRy
dWUgaWYgTm9kZSBpcyBtYXRjaGVkIGJ5IHRoZSBxdWVyeS4KKyAgICAgICAgKiBkb20vU2hhZG93
Q29udGVudFNlbGVjdG9yUXVlcnkuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvZG9tL1No
YWRvd0NvbnRlbnRFbGVtZW50LmguCisgICAgICAgICogZG9tL1NoYWRvd0luY2x1c2lvblNlbGVj
dG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0luY2x1c2lvblNlbGVjdG9yOjpzZWxl
Y3QpOgorICAgICAgICAqIGRvbS9TaGFkb3dJbmNsdXNpb25TZWxlY3Rvci5oOgorICAgICAgICAq
IGh0bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnN1bW1hcnlR
dWVyeVNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkRldGFpbHNDb250ZW50RWxlbWVudDo6
RGV0YWlsc0NvbnRlbnRFbGVtZW50KTogUmUtaW1wbGVtZW50ZWQgdXNpbmcgcXVlcnkuCisgICAg
ICAgIChXZWJDb3JlOjpEZXRhaWxzU3VtbWFyeUVsZW1lbnQ6OkRldGFpbHNTdW1tYXJ5RWxlbWVu
dCk6IGRpdHRvLgorICAgICAgICAqIGh0bWwvSFRNTFN1bW1hcnlFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlN1bW1hcnlDb250ZW50RWxlbWVudDo6U3VtbWFyeUNvbnRlbnRFbGVtZW50
KToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnRlcm5hbHM6OmNyZWF0ZVNoYWRvd0NvbnRlbnRFbGVtZW50KToKKyAgICAgICAgKiB0ZXN0aW5n
L0ludGVybmFscy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKwogMjAxMi0w
MS0xMSAgS3dhbmdIeXVrIEtpbSAgPGh5dWtpLmtpbUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBb
RUZMXSBSZW5hbWUgcGFyYW1ldGVyIGFuZCB2YXJpYWJsZSBuYW1lICdyJyB0byAncmVjdCcgaW4g
SW50UmVjdEVmbC5jcHAuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDU5ZmNlZTI0NjgwNDc5OTUx
NTY1NWIwN2VhNTFjMzdlZDE2NDUyZDkuLjYwYjU3OGNmMDIwYTU0NTBlZGI4ZDNlNWE3NDgxNmRk
YTQwZDFlNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC01OTQsNiArNTk0LDcgQEAgU0VUKFdl
YkNvcmVfU09VUkNFUwogICAgIGRvbS9TZWN1cml0eUNvbnRleHQuY3BwCiAgICAgZG9tL1NlbGVj
dG9yUXVlcnkuY3BwCiAgICAgZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50LmNwcAorICAgIGRvbS9T
aGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeS5jcHAKICAgICBkb20vU2hhZG93SW5jbHVzaW9uU2Vs
ZWN0b3IuY3BwCiAgICAgZG9tL1NoYWRvd1Jvb3QuY3BwCiAgICAgZG9tL1NwYWNlU3BsaXRTdHJp
bmcuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIv
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA5ZWFhZWNhZTM4ODZkMzU4
ZWFiNTAwOWVlZjUyZjgxYzQ2ODIyN2M1Li5mMTQ0ZjBkMmQxNTY1MjFiZTlmZDc3ZWRjZjk3M2Jj
YzI5ZDc2MGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTE2NDUsNiArMTY0
NSw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9y
UXVlcnkuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50LmNwcCBc
CiAJU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50LmggXAorCVNvdXJjZS9X
ZWJDb3JlL2RvbS9TaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeS5jcHAgXAorCVNvdXJjZS9XZWJD
b3JlL2RvbS9TaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9k
b20vU2hhZG93SW5jbHVzaW9uU2VsZWN0b3IuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vU2hh
ZG93SW5jbHVzaW9uU2VsZWN0b3IuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3Qu
Y3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2Vi
Q29yZS9UYXJnZXQucHJpCmluZGV4IDRiZWMyMTRmYWRjNGY2ZGE4NDY5MTQxODcwMDExOGMxNDNk
YzE2MzMuLmUzZGI4OGQ0ZWJhMDIxZGNjZjgwZjI4ODBjOTkzZTcwODgwYTY5MTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0
LnByaQpAQCAtNTYwLDYgKzU2MCw3IEBAIFNPVVJDRVMgKz0gXAogICAgIGRvbS9TZWN1cml0eUNv
bnRleHQuY3BwIFwKICAgICBkb20vU2VsZWN0b3JRdWVyeS5jcHAgXAogICAgIGRvbS9TaGFkb3dD
b250ZW50RWxlbWVudC5jcHAgXAorICAgIGRvbS9TaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeS5j
cHAgXAogICAgIGRvbS9TaGFkb3dJbmNsdXNpb25TZWxlY3Rvci5jcHAgXAogICAgIGRvbS9TaGFk
b3dSb290LmNwcCBcCiAgICAgZG9tL1NwYWNlU3BsaXRTdHJpbmcuY3BwIFwKQEAgLTE2NjAsNiAr
MTY2MSw3IEBAIEhFQURFUlMgKz0gXAogICAgIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmgg
XAogICAgIGRvbS9TZWxlY3RvclF1ZXJ5LmggXAogICAgIGRvbS9TaGFkb3dDb250ZW50RWxlbWVu
dC5oIFwKKyAgICBkb20vU2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnkuaCBcCiAgICAgZG9tL1No
YWRvd0luY2x1c2lvblNlbGVjdG9yLmggXAogICAgIGRvbS9TaGFkb3dSb290LmggXAogICAgIGRv
bS9TcGFjZVNwbGl0U3RyaW5nLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCA1ZGIzN2JiNDE0
MjVkNWRjOTQ1YjMxOTVmZTM4Y2U0YjUzNzNhNGI5Li5lYjhmOGQxZWEyNDhkMzUyMTk2MGQ0YWFi
NDQ5ZGY3MTliNmVmOGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5p
bgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtNjAwLDcgKzYwMCw3IEBA
IF9fWk43V2ViQ29yZTIwUmVzb3VyY2VSZXNwb25zZUJhc2UyMHNldFN1Z2dlc3RlZEZpbGVuYW1l
RVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMjBSZXNvdXJjZVJlc3BvbnNlQmFzZTI0c2V0
RXhwZWN0ZWRDb250ZW50TGVuZ3RoRXgKIF9fWk43V2ViQ29yZTIwUmVzb3VyY2VSZXNwb25zZUJh
c2U2c2V0VVJMRVJLTlNfNEtVUkxFCiBfX1pON1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNl
QzJFdgotX19aTjdXZWJDb3JlMjBTaGFkb3dDb250ZW50RWxlbWVudDZjcmVhdGVFUE5TXzhEb2N1
bWVudEUKK19fWk43V2ViQ29yZTIwU2hhZG93Q29udGVudEVsZW1lbnQ2Y3JlYXRlRVBOU184RG9j
dW1lbnRFUktOM1dURjEyQXRvbWljU3RyaW5nRQogX19aTjdXZWJDb3JlMjBVc2VyR2VzdHVyZUlu
ZGljYXRvcjdzX3N0YXRlRQogX19aTjdXZWJDb3JlMjBVc2VyR2VzdHVyZUluZGljYXRvckMxRU5T
XzI2UHJvY2Vzc2luZ1VzZXJHZXN0dXJlU3RhdGVFCiBfX1pON1dlYkNvcmUyMFVzZXJHZXN0dXJl
SW5kaWNhdG9yRDFFdgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDVmYjVkMGY3NDBjMzhjMGY4ZDQ3MmIy
ZjdjY2M0YWYwOTY5ZmFiZmIuLjBmZTQ5M2UzY2E5NGRkNGM1YTgwZjgzMzBiYmQ5OWQ2ZGM5NDY1
NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTEwNDcsNiArMTA0Nyw3IEBACiAgICAgICAgICAgICAn
ZG9tL1NjcmlwdFJ1bm5lci5oJywKICAgICAgICAgICAgICdkb20vU2hhZG93Um9vdC5oJywKICAg
ICAgICAgICAgICdkb20vU2hhZG93Q29udGVudEVsZW1lbnQuaCcsCisgICAgICAgICAgICAnZG9t
L1NoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmgnLAogICAgICAgICAgICAgJ2RvbS9TcGFjZVNw
bGl0U3RyaW5nLmgnLAogICAgICAgICAgICAgJ2RvbS9TdHlsZWRFbGVtZW50LmgnLAogICAgICAg
ICAgICAgJ2RvbS9UZXh0LmgnLApAQCAtNTQ1NSw2ICs1NDU2LDggQEAKICAgICAgICAgICAgICdk
b20vU2VsZWN0b3JRdWVyeS5oJywKICAgICAgICAgICAgICdkb20vU2hhZG93Q29udGVudEVsZW1l
bnQuY3BwJywKICAgICAgICAgICAgICdkb20vU2hhZG93Q29udGVudEVsZW1lbnQuaCcsCisgICAg
ICAgICAgICAnZG9tL1NoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmNwcCcsCisgICAgICAgICAg
ICAnZG9tL1NoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmgnLAogICAgICAgICAgICAgJ2RvbS9T
aGFkb3dJbmNsdXNpb25TZWxlY3Rvci5jcHAnLAogICAgICAgICAgICAgJ2RvbS9TaGFkb3dJbmNs
dXNpb25TZWxlY3Rvci5oJywKICAgICAgICAgICAgICdkb20vU2hhZG93Um9vdC5jcHAnLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCBhZTc4NzA5
MjVhYWFhNWE1OTUyYTdlZDJjZGRkYjM5ZWFmMDI2MWYxLi5hMmU5ZmQyOWViNDRhMjdiZjQ5NGQz
ZjczYjY2Zjg5OGMyMzZmMWE4IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvagpAQCAtNTExMDYsNiArNTExMDYsMTQgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+
CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXFNoYWRvd0NvbnRlbnRTZWxlY3Rv
clF1ZXJ5LmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0
aD0iLi5cZG9tXFNoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmgiCisJCQkJPgorCQkJPC9GaWxl
PgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxTaGFkb3dJbmNsdXNpb25TZWxl
Y3Rvci5jcHAiCiAJCQkJPgogCQkJCTxGaWxlQ29uZmlndXJhdGlvbgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDNiNzc5OWRhN2E2
NDBkMGYxOWExY2FiMmY4NDkwZTRkMDVhZjZlYTQuLjRjMGI4YjkxM2E4NGFiMDFmZjUzMGZhMmU1
NDQzOTMyOTQ4MDNjZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTE1NjIsNiArMTU2Miw4IEBACiAJCTUzQzgyOThFMTNEOEQ5
MjcwMERFMkRFQiAvKiBSZW5kZXJGbGV4aWJsZUJveC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNDODI5OEMxM0Q4RDkyNzAwREUyREVCIC8qIFJlbmRl
ckZsZXhpYmxlQm94LmggKi87IH07CiAJCTU1MEEwQkM5MDg1RjYwMzkwMDczNTNENiAvKiBRdWFs
aWZpZWROYW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDU1MEEwQkM3MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmNwcCAqLzsgfTsK
IAkJNTUwQTBCQ0EwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1MEEwQkM4MDg1RjYwMzkwMDcz
NTNENiAvKiBRdWFsaWZpZWROYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJNTcwREJBODExNEI1ODA0OTAwREFFRkEwIC8qIFNoYWRvd0NvbnRl
bnRTZWxlY3RvclF1ZXJ5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDU3MERCN0E4MTRCNTY5NkEwMERBRUZBMCAvKiBTaGFkb3dDb250ZW50U2VsZWN0
b3JRdWVyeS5jcHAgKi87IH07CisJCTU3MERCQTgyMTRCNTgwNEIwMERBRUZBMCAvKiBTaGFkb3dD
b250ZW50U2VsZWN0b3JRdWVyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTcwREI3QTkxNEI1Njk2QTAwREFFRkEwIC8qIFNoYWRvd0NvbnRlbnRTZWxl
Y3RvclF1ZXJ5LmggKi87IH07CiAJCTU5MDVBREJGMTMwMkYzQ0UwMEYxMTZERiAvKiBYTUxUcmVl
Vmlld2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDU5MDVBREJEMTMwMkYzQ0UwMEYxMTZERiAvKiBYTUxUcmVlVmlld2VyLmNwcCAqLzsgfTsKIAkJ
NTkwNUFEQzAxMzAyRjNDRTAwRjExNkRGIC8qIFhNTFRyZWVWaWV3ZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU5MDVBREJFMTMwMkYzQ0UwMEYxMTZE
RiAvKiBYTUxUcmVlVmlld2VyLmggKi87IH07CiAJCTU5MEUxQjQ5MTFFNEVGNEIwMDY5Rjc4NCAv
KiBEZXZpY2VPcmllbnRhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTkwRTFCNDgxMUU0RUY0QjAwNjlGNzg0IC8qIERldmljZU9yaWVudGF0aW9u
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTg4
NTIsNiArODg1NCw4IEBACiAJCTUzQzgyOThDMTNEOEQ5MjcwMERFMkRFQiAvKiBSZW5kZXJGbGV4
aWJsZUJveC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJGbGV4aWJs
ZUJveC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NTBBMEJDNzA4NUY2MDM5MDA3
MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBRdWFsaWZpZWROYW1lLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCTU1MEEwQkM4MDg1
RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFF1YWxpZmllZE5hbWUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CisJCTU3MERCN0E4MTRC
NTY5NkEwMERBRUZBMCAvKiBTaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3MERCN0E5MTRCNTY5NkEwMERBRUZB
MCAvKiBTaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1OTA1QURCRDEzMDJGM0NFMDBGMTE2REYgLyogWE1MVHJlZVZpZXdlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBYTUxUcmVlVmlld2VyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTkwNUFEQkUxMzAyRjNDRTAwRjExNkRG
IC8qIFhNTFRyZWVWaWV3ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWE1M
VHJlZVZpZXdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1OTBFMUI0ODExRTRF
RjRCMDA2OUY3ODQgLyogRGV2aWNlT3JpZW50YXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRGV2aWNlT3JpZW50YXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTIxNDY0LDYgKzIxNDY4LDggQEAKIAkJCQlFNDUzMjJBQTE0MENFMjY3MDA1QTBGOTIg
LyogU2VsZWN0b3JRdWVyeS5oICovLAogCQkJCUE3NjZDRjhCMTM4MTBFMEMwMDExQTBCMyAvKiBT
aGFkb3dDb250ZW50RWxlbWVudC5jcHAgKi8sCiAJCQkJQTc0QzJEM0IxMzgxMUUwRDAwRjgzNTcy
IC8qIFNoYWRvd0NvbnRlbnRFbGVtZW50LmggKi8sCisJCQkJNTcwREI3QTgxNEI1Njk2QTAwREFF
RkEwIC8qIFNoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmNwcCAqLywKKwkJCQk1NzBEQjdBOTE0
QjU2OTZBMDBEQUVGQTAgLyogU2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnkuaCAqLywKIAkJCQlB
NzFDMzBCNjEzODEyNjVFMDBEQkMzNTEgLyogU2hhZG93SW5jbHVzaW9uU2VsZWN0b3IuY3BwICov
LAogCQkJCUE3MUMzMEI3MTM4MTI2NUUwMERCQzM1MSAvKiBTaGFkb3dJbmNsdXNpb25TZWxlY3Rv
ci5oICovLAogCQkJCUE2RDE2OTYxMTM0NkI0OUIwMDBFQjc3MCAvKiBTaGFkb3dSb290LmNwcCAq
LywKQEAgLTI0MzE5LDYgKzI0MzI1LDcgQEAKIAkJCQk0OTg3NzBFOTEyNDJDNTM1MDAyMjI2QkEg
LyogU2hhZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjNERDQ1MDEyRjVFQTFCMDAwRDkxOTAg
LyogU2hhZG93Qmx1ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc0QzJEM0MxMzgxMUUwRDAwRjgz
NTcyIC8qIFNoYWRvd0NvbnRlbnRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk1NzBEQkE4
MjE0QjU4MDRCMDBEQUVGQTAgLyogU2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnkuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDNUVCOEM0MEU4MjAzMUIwMEIyNTk2NSAvKiBTaGFkb3dEYXRhLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBNzFDMzBCOTEzODEyNjVFMDBEQkMzNTEgLyogU2hhZG93SW5jbHVz
aW9uU2VsZWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUE2RDE2OTY0MTM0NkI0QzEwMDBFQjc3
MCAvKiBTaGFkb3dSb290LmggaW4gSGVhZGVycyAqLywKQEAgLTI3MzUyLDYgKzI3MzU5LDcgQEAK
IAkJCQk0OTg3NzBFODEyNDJDNTM1MDAyMjI2QkEgLyogU2hhZGVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGM0RENDRGMTJGNUVBMUIwMDBEOTE5MCAvKiBTaGFkb3dCbHVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUE3NjZDRjhDMTM4MTBFMEMwMDExQTBCMyAvKiBTaGFkb3dDb250ZW50RWxl
bWVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1NzBEQkE4MTE0QjU4MDQ5MDBEQUVGQTAgLyog
U2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM1RUI4
QzMwRTgyMDMxQjAwQjI1OTY1IC8qIFNoYWRvd0RhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTcxQzMwQjgxMzgxMjY1RTAwREJDMzUxIC8qIFNoYWRvd0luY2x1c2lvblNlbGVjdG9yLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUE2RDE2OTYyMTM0NkI0OUIwMDBFQjc3MCAvKiBTaGFkb3dSb290
LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RPTUFs
bEluT25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01BbGxJbk9uZS5jcHAKaW5kZXggNTUw
OTQ2NTNmNWYyMzk0NmZkNDQzZTQ4OWYxMzczMzM4MTRmYjY2Mi4uNTViNjA1MjhhYWEyOTNjZDY2
NWM0YzkyMjdiYTg4NDc4ODVmNmEzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RP
TUFsbEluT25lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NQWxsSW5PbmUuY3BwCkBA
IC0xMTMsNiArMTEzLDcgQEAKICNpbmNsdWRlICJTZWN1cml0eUNvbnRleHQuY3BwIgogI2luY2x1
ZGUgIlNlbGVjdG9yUXVlcnkuY3BwIgogI2luY2x1ZGUgIlNoYWRvd0NvbnRlbnRFbGVtZW50LmNw
cCIKKyNpbmNsdWRlICJTaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeS5jcHAiCiAjaW5jbHVkZSAi
U2hhZG93SW5jbHVzaW9uU2VsZWN0b3IuY3BwIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuY3BwIgog
I2luY2x1ZGUgIlNwYWNlU3BsaXRTdHJpbmcuY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL1NlbGVjdG9yUXVlcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9yUXVl
cnkuY3BwCmluZGV4IDA4MjY2ZWYzMTM2YTkxYTI4Y2Y2MjIzZDRhNTVhZmQxMjg0MmZhZDIuLmE4
ODlmOWYyYmNhNTBiNGEzN2IyYzAzZDY1YWRkZTA2ZDY5MzQyNWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
U2VsZWN0b3JRdWVyeS5jcHAKQEAgLTMzLDI3ICszMyw0NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLVNlbGVjdG9yUXVlcnk6OlNlbGVjdG9yUXVlcnkoTm9kZSogcm9vdE5vZGUsIGNvbnN0
IENTU1NlbGVjdG9yTGlzdCYgc2VsZWN0b3JMaXN0KQotICAgIDogbV9yb290Tm9kZShyb290Tm9k
ZSkKLSAgICAsIG1fc2VsZWN0b3JDaGVja2VyKHJvb3ROb2RlLT5kb2N1bWVudCgpLCAhcm9vdE5v
ZGUtPmRvY3VtZW50KCktPmluUXVpcmtzTW9kZSgpKQorU2VsZWN0b3JEYXRhTGlzdDo6U2VsZWN0
b3JEYXRhTGlzdCgpCiB7Ci0gICAgbV9zZWxlY3RvckNoZWNrZXIuc2V0Q29sbGVjdGluZ1J1bGVz
T25seSh0cnVlKTsKK30KKworU2VsZWN0b3JEYXRhTGlzdDo6U2VsZWN0b3JEYXRhTGlzdChjb25z
dCBDU1NTZWxlY3Rvckxpc3QmIHNlbGVjdG9yTGlzdCkKK3sKKyAgICBpbml0aWFsaXplKHNlbGVj
dG9yTGlzdCk7Cit9CisKK3ZvaWQgU2VsZWN0b3JEYXRhTGlzdDo6aW5pdGlhbGl6ZShjb25zdCBD
U1NTZWxlY3Rvckxpc3QmIHNlbGVjdG9yTGlzdCkKK3sKKyAgICBBU1NFUlQobV9zZWxlY3RvcnMu
aXNFbXB0eSgpKTsKIAogICAgIGZvciAoQ1NTU2VsZWN0b3IqIHNlbGVjdG9yID0gc2VsZWN0b3JM
aXN0LmZpcnN0KCk7IHNlbGVjdG9yOyBzZWxlY3RvciA9IENTU1NlbGVjdG9yTGlzdDo6bmV4dChz
ZWxlY3RvcikpCiAgICAgICAgIG1fc2VsZWN0b3JzLmFwcGVuZChTZWxlY3RvckRhdGEoc2VsZWN0
b3IsIFNlbGVjdG9yQ2hlY2tlcjo6aXNGYXN0Q2hlY2thYmxlU2VsZWN0b3Ioc2VsZWN0b3IpKSk7
CiB9Ci0gICAgCi1QYXNzUmVmUHRyPE5vZGVMaXN0PiBTZWxlY3RvclF1ZXJ5OjpxdWVyeUFsbCgp
IGNvbnN0CisKK2Jvb2wgU2VsZWN0b3JEYXRhTGlzdDo6bWF0Y2hlcyhjb25zdCBTZWxlY3RvckNo
ZWNrZXImIHNlbGVjdG9yQ2hlY2tlciwgRWxlbWVudCogdGFyZ2V0RWxlbWVudCkgY29uc3QKK3sK
KyAgICBBU1NFUlQodGFyZ2V0RWxlbWVudCk7CisKKyAgICB1bnNpZ25lZCBzZWxlY3RvckNvdW50
ID0gbV9zZWxlY3RvcnMuc2l6ZSgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzZWxl
Y3RvckNvdW50OyArK2kpIHsKKyAgICAgICAgaWYgKHNlbGVjdG9yQ2hlY2tlci5jaGVja1NlbGVj
dG9yKG1fc2VsZWN0b3JzW2ldLnNlbGVjdG9yLCB0YXJnZXRFbGVtZW50LCBtX3NlbGVjdG9yc1tp
XS5pc0Zhc3RDaGVja2FibGUpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisg
ICAgcmV0dXJuIGZhbHNlOworfQorCitQYXNzUmVmUHRyPE5vZGVMaXN0PiBTZWxlY3RvckRhdGFM
aXN0OjpxdWVyeUFsbChjb25zdCBTZWxlY3RvckNoZWNrZXImIHNlbGVjdG9yQ2hlY2tlciwgTm9k
ZSogcm9vdE5vZGUpIGNvbnN0CiB7CiAgICAgVmVjdG9yPFJlZlB0cjxOb2RlPiA+IHJlc3VsdDsK
LSAgICBleGVjdXRlPGZhbHNlPihyZXN1bHQpOworICAgIGV4ZWN1dGU8ZmFsc2U+KHNlbGVjdG9y
Q2hlY2tlciwgcm9vdE5vZGUsIHJlc3VsdCk7CiAgICAgcmV0dXJuIFN0YXRpY05vZGVMaXN0Ojph
ZG9wdChyZXN1bHQpOwogfQogCi1QYXNzUmVmUHRyPEVsZW1lbnQ+IFNlbGVjdG9yUXVlcnk6OnF1
ZXJ5Rmlyc3QoKSBjb25zdCAKLXsgCitQYXNzUmVmUHRyPEVsZW1lbnQ+IFNlbGVjdG9yRGF0YUxp
c3Q6OnF1ZXJ5Rmlyc3QoY29uc3QgU2VsZWN0b3JDaGVja2VyJiBzZWxlY3RvckNoZWNrZXIsIE5v
ZGUqIHJvb3ROb2RlKSBjb25zdAorewogICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiByZXN1bHQ7
Ci0gICAgZXhlY3V0ZTx0cnVlPihyZXN1bHQpOworICAgIGV4ZWN1dGU8dHJ1ZT4oc2VsZWN0b3JD
aGVja2VyLCByb290Tm9kZSwgcmVzdWx0KTsKICAgICBpZiAocmVzdWx0LmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgQVNTRVJUKHJlc3VsdC5zaXplKCkgPT0gMSk7CkBAIC02MSw3
ICs4MSw3IEBAIFBhc3NSZWZQdHI8RWxlbWVudD4gU2VsZWN0b3JRdWVyeTo6cXVlcnlGaXJzdCgp
IGNvbnN0CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEVsZW1lbnQqPihyZXN1bHQuZmlyc3QoKS5n
ZXQoKSk7CiB9CiAKLWJvb2wgU2VsZWN0b3JRdWVyeTo6Y2FuVXNlSWRMb29rdXAoKSBjb25zdAor
Ym9vbCBTZWxlY3RvckRhdGFMaXN0OjpjYW5Vc2VJZExvb2t1cChOb2RlKiByb290Tm9kZSkgY29u
c3QKIHsKICAgICAvLyBXZSBuZWVkIHRvIHJldHVybiB0aGUgbWF0Y2hlcyBpbiBkb2N1bWVudCBv
cmRlci4gVG8gdXNlIGlkIGxvb2t1cCB3aGlsZSB0aGVyZSBpcyBwb3NzaWJsaXR5IG9mIG11bHRp
cGxlIG1hdGNoZXMKICAgICAvLyB3ZSB3b3VsZCBuZWVkIHRvIHNvcnQgdGhlIHJlc3VsdHMuIEZv
ciBub3csIGp1c3QgdHJhdmVyc2UgdGhlIGRvY3VtZW50IGluIHRoYXQgY2FzZS4KQEAgLTY5LDM3
ICs4OSwzNyBAQCBib29sIFNlbGVjdG9yUXVlcnk6OmNhblVzZUlkTG9va3VwKCkgY29uc3QKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmIChtX3NlbGVjdG9yc1swXS5zZWxlY3Rvci0+bV9t
YXRjaCAhPSBDU1NTZWxlY3Rvcjo6SWQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAo
IW1fcm9vdE5vZGUtPmluRG9jdW1lbnQoKSkKKyAgICBpZiAoIXJvb3ROb2RlLT5pbkRvY3VtZW50
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAobV9yb290Tm9kZS0+ZG9jdW1lbnQo
KS0+aW5RdWlya3NNb2RlKCkpCisgICAgaWYgKHJvb3ROb2RlLT5kb2N1bWVudCgpLT5pblF1aXJr
c01vZGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChtX3Jvb3ROb2RlLT5kb2N1
bWVudCgpLT5jb250YWluc011bHRpcGxlRWxlbWVudHNXaXRoSWQobV9zZWxlY3RvcnNbMF0uc2Vs
ZWN0b3ItPnZhbHVlKCkpKQorICAgIGlmIChyb290Tm9kZS0+ZG9jdW1lbnQoKS0+Y29udGFpbnNN
dWx0aXBsZUVsZW1lbnRzV2l0aElkKG1fc2VsZWN0b3JzWzBdLnNlbGVjdG9yLT52YWx1ZSgpKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiB0cnVlOwogfQogCiB0ZW1wbGF0ZSA8
Ym9vbCBmaXJzdE1hdGNoT25seT4KLXZvaWQgU2VsZWN0b3JRdWVyeTo6ZXhlY3V0ZShWZWN0b3I8
UmVmUHRyPE5vZGU+ID4mIG1hdGNoZWRFbGVtZW50cykgY29uc3QKK3ZvaWQgU2VsZWN0b3JEYXRh
TGlzdDo6ZXhlY3V0ZShjb25zdCBTZWxlY3RvckNoZWNrZXImIHNlbGVjdG9yQ2hlY2tlciwgTm9k
ZSogcm9vdE5vZGUsIFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiYgbWF0Y2hlZEVsZW1lbnRzKSBjb25z
dAogewotICAgIGlmIChjYW5Vc2VJZExvb2t1cCgpKSB7CisgICAgaWYgKGNhblVzZUlkTG9va3Vw
KHJvb3ROb2RlKSkgewogICAgICAgICBBU1NFUlQobV9zZWxlY3RvcnMuc2l6ZSgpID09IDEpOwog
ICAgICAgICBDU1NTZWxlY3Rvciogc2VsZWN0b3IgPSBtX3NlbGVjdG9yc1swXS5zZWxlY3RvcjsK
LSAgICAgICAgRWxlbWVudCogZWxlbWVudCA9IG1fcm9vdE5vZGUtPmRvY3VtZW50KCktPmdldEVs
ZW1lbnRCeUlkKHNlbGVjdG9yLT52YWx1ZSgpKTsKLSAgICAgICAgaWYgKCFlbGVtZW50IHx8ICEo
bV9yb290Tm9kZS0+aXNEb2N1bWVudE5vZGUoKSB8fCBlbGVtZW50LT5pc0Rlc2NlbmRhbnRPZiht
X3Jvb3ROb2RlKSkpCisgICAgICAgIEVsZW1lbnQqIGVsZW1lbnQgPSByb290Tm9kZS0+ZG9jdW1l
bnQoKS0+Z2V0RWxlbWVudEJ5SWQoc2VsZWN0b3ItPnZhbHVlKCkpOworICAgICAgICBpZiAoIWVs
ZW1lbnQgfHwgIShyb290Tm9kZS0+aXNEb2N1bWVudE5vZGUoKSB8fCBlbGVtZW50LT5pc0Rlc2Nl
bmRhbnRPZihyb290Tm9kZSkpKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBpZiAobV9z
ZWxlY3RvckNoZWNrZXIuY2hlY2tTZWxlY3RvcihzZWxlY3RvciwgZWxlbWVudCwgbV9zZWxlY3Rv
cnNbMF0uaXNGYXN0Q2hlY2thYmxlKSkKKyAgICAgICAgaWYgKHNlbGVjdG9yQ2hlY2tlci5jaGVj
a1NlbGVjdG9yKG1fc2VsZWN0b3JzWzBdLnNlbGVjdG9yLCBlbGVtZW50LCBtX3NlbGVjdG9yc1sw
XS5pc0Zhc3RDaGVja2FibGUpKQogICAgICAgICAgICAgbWF0Y2hlZEVsZW1lbnRzLmFwcGVuZChl
bGVtZW50KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKKwogICAgIHVuc2lnbmVkIHNl
bGVjdG9yQ291bnQgPSBtX3NlbGVjdG9ycy5zaXplKCk7Ci0gICAgCi0gICAgTm9kZSogbiA9IG1f
cm9vdE5vZGUtPmZpcnN0Q2hpbGQoKTsKKworICAgIE5vZGUqIG4gPSByb290Tm9kZS0+Zmlyc3RD
aGlsZCgpOwogICAgIHdoaWxlIChuKSB7CiAgICAgICAgIGlmIChuLT5pc0VsZW1lbnROb2RlKCkp
IHsKICAgICAgICAgICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4o
bik7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2VsZWN0b3JDb3VudDsg
KytpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKG1fc2VsZWN0b3JDaGVja2VyLmNoZWNrU2VsZWN0
b3IobV9zZWxlY3RvcnNbaV0uc2VsZWN0b3IsIGVsZW1lbnQsIG1fc2VsZWN0b3JzW2ldLmlzRmFz
dENoZWNrYWJsZSkpIHsKKyAgICAgICAgICAgICAgICBpZiAoc2VsZWN0b3JDaGVja2VyLmNoZWNr
U2VsZWN0b3IobV9zZWxlY3RvcnNbaV0uc2VsZWN0b3IsIGVsZW1lbnQsIG1fc2VsZWN0b3JzW2ld
LmlzRmFzdENoZWNrYWJsZSkpIHsKICAgICAgICAgICAgICAgICAgICAgbWF0Y2hlZEVsZW1lbnRz
LmFwcGVuZChlbGVtZW50KTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGZpcnN0TWF0Y2hPbmx5
KQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTEzLDExICsxMzMsMjkgQEAg
dm9pZCBTZWxlY3RvclF1ZXJ5OjpleGVjdXRlKFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiYgbWF0Y2hl
ZEVsZW1lbnRzKSBjb25zdAogICAgICAgICB9CiAgICAgICAgIHdoaWxlICghbi0+bmV4dFNpYmxp
bmcoKSkgewogICAgICAgICAgICAgbiA9IG4tPnBhcmVudE5vZGUoKTsKLSAgICAgICAgICAgIGlm
IChuID09IG1fcm9vdE5vZGUpCisgICAgICAgICAgICBpZiAobiA9PSByb290Tm9kZSkKICAgICAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgbiA9IG4tPm5leHRTaWJsaW5n
KCk7CiAgICAgfQogfQogCitTZWxlY3RvclF1ZXJ5OjpTZWxlY3RvclF1ZXJ5KE5vZGUqIHJvb3RO
b2RlLCBjb25zdCBDU1NTZWxlY3Rvckxpc3QmIHNlbGVjdG9yTGlzdCkKKyAgICA6IG1fcm9vdE5v
ZGUocm9vdE5vZGUpCisgICAgLCBtX3NlbGVjdG9yQ2hlY2tlcihyb290Tm9kZS0+ZG9jdW1lbnQo
KSwgIXJvb3ROb2RlLT5kb2N1bWVudCgpLT5pblF1aXJrc01vZGUoKSkKKyAgICAsIG1fc2VsZWN0
b3JzKHNlbGVjdG9yTGlzdCkKK3sKKyAgICBtX3NlbGVjdG9yQ2hlY2tlci5zZXRDb2xsZWN0aW5n
UnVsZXNPbmx5KHRydWUpOworfQorCitQYXNzUmVmUHRyPE5vZGVMaXN0PiBTZWxlY3RvclF1ZXJ5
OjpxdWVyeUFsbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2VsZWN0b3JzLnF1ZXJ5QWxsKG1f
c2VsZWN0b3JDaGVja2VyLCBtX3Jvb3ROb2RlKTsKK30KKworUGFzc1JlZlB0cjxFbGVtZW50PiBT
ZWxlY3RvclF1ZXJ5OjpxdWVyeUZpcnN0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zZWxlY3Rv
cnMucXVlcnlGaXJzdChtX3NlbGVjdG9yQ2hlY2tlciwgbV9yb290Tm9kZSk7Cit9CisKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5LmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2VsZWN0b3JRdWVyeS5oCmluZGV4IGI5Njk4MjM3ODQzYmJjNWVlZjlhYjU3MTRj
MmQ2NGVmMWI4ODE5NzIuLjBmMTA2NzhhZGQ4MjFjODMwY2M2NWU3NzIzYzRhMWY5MzFhNjQ3Nzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9yUXVlcnkuaApAQCAtMzcsMjggKzM3LDQ0IEBAIGNsYXNz
IEVsZW1lbnQ7CiBjbGFzcyBDU1NTZWxlY3RvcjsKIGNsYXNzIENTU1NlbGVjdG9yTGlzdDsKIAot
Y2xhc3MgU2VsZWN0b3JRdWVyeSB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2VsZWN0b3JR
dWVyeSk7CitjbGFzcyBTZWxlY3RvckRhdGFMaXN0IHsKIHB1YmxpYzoKLSAgICBTZWxlY3RvclF1
ZXJ5KE5vZGUqIHJvb3ROb2RlLCBjb25zdCBDU1NTZWxlY3Rvckxpc3QmKTsKLSAgICAKLSAgICBQ
YXNzUmVmUHRyPE5vZGVMaXN0PiBxdWVyeUFsbCgpIGNvbnN0OwotICAgIFBhc3NSZWZQdHI8RWxl
bWVudD4gcXVlcnlGaXJzdCgpIGNvbnN0OworICAgIFNlbGVjdG9yRGF0YUxpc3QoKTsKKyAgICBl
eHBsaWNpdCBTZWxlY3RvckRhdGFMaXN0KGNvbnN0IENTU1NlbGVjdG9yTGlzdCYpOwogCi1wcml2
YXRlOgotICAgIGJvb2wgY2FuVXNlSWRMb29rdXAoKSBjb25zdDsKKyAgICB2b2lkIGluaXRpYWxp
emUoY29uc3QgQ1NTU2VsZWN0b3JMaXN0Jik7CiAKLSAgICB0ZW1wbGF0ZSA8Ym9vbCBmaXJzdE1h
dGNoT25seT4KLSAgICB2b2lkIGV4ZWN1dGUoVmVjdG9yPFJlZlB0cjxOb2RlPiA+JikgY29uc3Q7
Ci0gICAgCisgICAgaW50IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NlbGVjdG9ycy5zaXplKCk7
IH0KKworICAgIGJvb2wgbWF0Y2hlcyhjb25zdCBTZWxlY3RvckNoZWNrZXImLCBFbGVtZW50Kikg
Y29uc3Q7CisgICAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gcXVlcnlBbGwoY29uc3QgU2VsZWN0b3JD
aGVja2VyJiwgTm9kZSogcm9vdE5vZGUpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8RWxlbWVudD4g
cXVlcnlGaXJzdChjb25zdCBTZWxlY3RvckNoZWNrZXImLCBOb2RlKiByb290Tm9kZSkgY29uc3Q7
CisKK3ByaXZhdGU6CiAgICAgc3RydWN0IFNlbGVjdG9yRGF0YSB7CiAgICAgICAgIFNlbGVjdG9y
RGF0YShDU1NTZWxlY3Rvciogc2VsZWN0b3IsIGJvb2wgaXNGYXN0Q2hlY2thYmxlKSA6IHNlbGVj
dG9yKHNlbGVjdG9yKSwgaXNGYXN0Q2hlY2thYmxlKGlzRmFzdENoZWNrYWJsZSkgeyB9CiAgICAg
ICAgIENTU1NlbGVjdG9yKiBzZWxlY3RvcjsKICAgICAgICAgYm9vbCBpc0Zhc3RDaGVja2FibGU7
CiAgICAgfTsKLSAgICBOb2RlKiBtX3Jvb3ROb2RlOworCisgICAgYm9vbCBjYW5Vc2VJZExvb2t1
cChOb2RlKiByb290Tm9kZSkgY29uc3Q7CisgICAgdGVtcGxhdGUgPGJvb2wgZmlyc3RNYXRjaE9u
bHk+CisgICAgdm9pZCBleGVjdXRlKGNvbnN0IFNlbGVjdG9yQ2hlY2tlciYsIE5vZGUqIHJvb3RO
b2RlLCBWZWN0b3I8UmVmUHRyPE5vZGU+ID4mKSBjb25zdDsKKwogICAgIFZlY3RvcjxTZWxlY3Rv
ckRhdGE+IG1fc2VsZWN0b3JzOworfTsKKworY2xhc3MgU2VsZWN0b3JRdWVyeSB7CisgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoU2VsZWN0b3JRdWVyeSk7CitwdWJsaWM6CisgICAgU2VsZWN0b3JR
dWVyeShOb2RlKiByb290Tm9kZSwgY29uc3QgQ1NTU2VsZWN0b3JMaXN0Jik7CisKKyAgICBQYXNz
UmVmUHRyPE5vZGVMaXN0PiBxdWVyeUFsbCgpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8RWxlbWVu
dD4gcXVlcnlGaXJzdCgpIGNvbnN0OworcHJpdmF0ZToKKyAgICBOb2RlKiBtX3Jvb3ROb2RlOwog
ICAgIFNlbGVjdG9yQ2hlY2tlciBtX3NlbGVjdG9yQ2hlY2tlcjsKKyAgICBTZWxlY3RvckRhdGFM
aXN0IG1fc2VsZWN0b3JzOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L1NoYWRvd0NvbnRlbnRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dDb250
ZW50RWxlbWVudC5jcHAKaW5kZXggZWNlZTZkMGM3ZWU3NmZkZDcyNWUyZmRjZjg3MmRkMmJiOTNj
OTdiYi4uNzNhZDEwOWUwMWE1YjIyZTdiNDg1YzgxN2RlODAzZmVjZjEzYTc5MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2hhZG93Q29udGVudEVsZW1lbnQuY3BwCkBAIC0yOCwyMSArMjgsMzEg
QEAKICNpbmNsdWRlICJTaGFkb3dDb250ZW50RWxlbWVudC5oIgogCiAjaW5jbHVkZSAiSFRNTE5h
bWVzLmgiCisjaW5jbHVkZSAiUXVhbGlmaWVkTmFtZS5oIgorI2luY2x1ZGUgIlNoYWRvd0NvbnRl
bnRTZWxlY3RvclF1ZXJ5LmgiCiAjaW5jbHVkZSAiU2hhZG93SW5jbHVzaW9uU2VsZWN0b3IuaCIK
ICNpbmNsdWRlICJTaGFkb3dSb290LmgiCisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8U2hhZG93Q29udGVudEVsZW1lbnQ+
IFNoYWRvd0NvbnRlbnRFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQorc3RhdGlj
IGNvbnN0IFF1YWxpZmllZE5hbWUmIHNlbGVjdEF0dHIoKQoreworICAgIERFRklORV9TVEFUSUNf
TE9DQUwoUXVhbGlmaWVkTmFtZSwgYXR0ciwgKG51bGxBdG9tLCAic2VsZWN0IiwgSFRNTE5hbWVz
Ojp4aHRtbE5hbWVzcGFjZVVSSSkpOworICAgIHJldHVybiBhdHRyOworfQorCitQYXNzUmVmUHRy
PFNoYWRvd0NvbnRlbnRFbGVtZW50PiBTaGFkb3dDb250ZW50RWxlbWVudDo6Y3JlYXRlKERvY3Vt
ZW50KiBkb2N1bWVudCwgY29uc3QgQXRvbWljU3RyaW5nJiBzZWxlY3QpCiB7CiAgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChRdWFsaWZpZWROYW1lLCB0YWdOYW1lLCAobnVsbEF0b20sICJ3ZWJraXRT
aGFkb3dDb250ZW50IiwgSFRNTE5hbWVzOjpkaXZUYWcubmFtZXNwYWNlVVJJKCkpKTsKLSAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFNoYWRvd0NvbnRlbnRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50
KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFkb3dDb250ZW50RWxlbWVudCh0YWdOYW1l
LCBkb2N1bWVudCwgc2VsZWN0KSk7CiB9CiAKLVNoYWRvd0NvbnRlbnRFbGVtZW50OjpTaGFkb3dD
b250ZW50RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBEb2N1bWVudCogZG9jdW1l
bnQpCitTaGFkb3dDb250ZW50RWxlbWVudDo6U2hhZG93Q29udGVudEVsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYgbmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBBdG9taWNTdHJpbmcm
IHNlbGVjdCkKICAgICA6IFN0eWxlZEVsZW1lbnQobmFtZSwgZG9jdW1lbnQsIENyZWF0ZUhUTUxF
bGVtZW50KQogICAgICwgbV9pbmNsdXNpb25zKGFkb3B0UHRyKG5ldyBTaGFkb3dJbmNsdXNpb25M
aXN0KCkpKQogeworICAgIHNldEF0dHJpYnV0ZShzZWxlY3RBdHRyKCksIHNlbGVjdCk7CiB9CiAK
IFNoYWRvd0NvbnRlbnRFbGVtZW50Ojp+U2hhZG93Q29udGVudEVsZW1lbnQoKQpAQCAtNzYsMTAg
Kzg2LDkgQEAgdm9pZCBTaGFkb3dDb250ZW50RWxlbWVudDo6ZGV0YWNoKCkKICAgICBTdHlsZWRF
bGVtZW50OjpkZXRhY2goKTsKIH0KIAotYm9vbCBTaGFkb3dDb250ZW50RWxlbWVudDo6c2hvdWxk
SW5jbHVkZShOb2RlKikKK2NvbnN0IEF0b21pY1N0cmluZyYgU2hhZG93Q29udGVudEVsZW1lbnQ6
OnNlbGVjdCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGdldEF0dHJp
YnV0ZShzZWxlY3RBdHRyKCkpOwogfQogCi0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TaGFkb3dDb250ZW50RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0Nv
bnRlbnRFbGVtZW50LmgKaW5kZXggN2IzNjY2MjFiN2I5NjNhNDMwZmMxNDMwOWJkNDY1ZWFlZGZh
MDRhNC4uMDlmODM4NzMwYmMxY2Y4NGE0NjJiNGU3YjAxZTY1ZGRmNGRkZWRkZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50LmgKQEAgLTM2LDIzICszNiwyOCBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFNoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5
OwogY2xhc3MgU2hhZG93SW5jbHVzaW9uTGlzdDsKIAogLy8gTk9URTogQ3VycmVudCBpbXBsZW1l
bnRhdGlvbiBkb2Vzbid0IHN1cHBvcnQgZHluYW1pYyBpbnNlcnRpb24vZGVsZXRpb24gb2YgU2hh
ZG93Q29udGVudEVsZW1lbnQuCiAvLyBZb3Ugc2hvdWxkIGNyZWF0ZSBTaGFkb3dDb250ZW50RWxl
bWVudCBkdXJpbmcgdGhlIGhvc3QgY29uc3RydWN0aW9uLgogY2xhc3MgU2hhZG93Q29udGVudEVs
ZW1lbnQgOiBwdWJsaWMgU3R5bGVkRWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8U2hhZG93Q29udGVudEVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCopOworICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFNoYWRvd0NvbnRlbnRFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQqLCBjb25z
dCBBdG9taWNTdHJpbmcmIHNlbGVjdCk7CiAKICAgICB2aXJ0dWFsIH5TaGFkb3dDb250ZW50RWxl
bWVudCgpOwotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRJbmNsdWRlKE5vZGUqKTsKICAgICB2aXJ0
dWFsIHZvaWQgYXR0YWNoKCk7CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaCgpOwogCisgICAgY29u
c3QgQXRvbWljU3RyaW5nJiBzZWxlY3QoKSBjb25zdDsKKwogICAgIGNvbnN0IFNoYWRvd0luY2x1
c2lvbkxpc3QqIGluY2x1c2lvbnMoKSBjb25zdCB7IHJldHVybiBtX2luY2x1c2lvbnMuZ2V0KCk7
IH0KIAogcHJvdGVjdGVkOgotICAgIFNoYWRvd0NvbnRlbnRFbGVtZW50KGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBEb2N1bWVudCopOworICAgIC8vIEZJWE1FOiBDdXJyZW50bHkgdGhpcyBjb25zdHJ1
Y3RvciBhY2NlcHRzIHdpZGVyIHF1ZXJ5IHRoYW4gc2hhZG93IGRvbSBzcGVjLgorICAgIC8vIEZv
ciBleGFtcGxlLCBhIHNlbGVjdG9yIHF1ZXJ5IHNob3VsZCBub3QgaW5jbHVkZSBjb250ZXh0dWFs
IHNlbGVjdG9ycy4KKyAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTc1OTQ2CisgICAgU2hhZG93Q29udGVudEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIERvY3VtZW50KiwgY29uc3QgQXRvbWljU3RyaW5nJiBzZWxlY3QpOwogCiBwcml2YXRlOgog
ICAgIHZpcnR1YWwgYm9vbCBpc0NvbnRlbnRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0NvbnRlbnRTZWxlY3RvclF1
ZXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeS5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNDNjYzViNDYzOWNiZWM1Y2YyNjE0MjgzYmY1Mjk2ODE0ZThhZTMwMAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dDb250ZW50U2VsZWN0
b3JRdWVyeS5jcHAKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisg
KiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJTaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeS5oIgorCisjaW5jbHVkZSAiQ1NTUGFyc2Vy
LmgiCisjaW5jbHVkZSAiQ1NTU2VsZWN0b3JMaXN0LmgiCisjaW5jbHVkZSAiU2hhZG93Q29udGVu
dEVsZW1lbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitTaGFkb3dDb250ZW50U2VsZWN0
b3JRdWVyeTo6U2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnkoU2hhZG93Q29udGVudEVsZW1lbnQq
IGVsZW1lbnQpCisgICAgOiBtX2NvbnRlbnRFbGVtZW50KGVsZW1lbnQpCisgICAgLCBtX3NlbGVj
dG9yQ2hlY2tlcihlbGVtZW50LT5kb2N1bWVudCgpLCAhZWxlbWVudC0+ZG9jdW1lbnQoKS0+aW5R
dWlya3NNb2RlKCkpCit7CisgICAgbV9zZWxlY3RvckNoZWNrZXIuc2V0Q29sbGVjdGluZ1J1bGVz
T25seSh0cnVlKTsKKworICAgIGlmIChlbGVtZW50LT5zZWxlY3QoKS5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIENTU1BhcnNlciBwYXJzZXIodHJ1ZSk7CisgICAgcGFyc2VyLnBh
cnNlU2VsZWN0b3IoZWxlbWVudC0+c2VsZWN0KCksIGVsZW1lbnQtPmRvY3VtZW50KCksIG1fc2Vs
ZWN0b3JMaXN0KTsKKworICAgIG1fc2VsZWN0b3JzLmluaXRpYWxpemUobV9zZWxlY3Rvckxpc3Qp
OworfQorCitib29sIFNoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5OjptYXRjaGVzKE5vZGUqIG5v
ZGUpIGNvbnN0Cit7CisgICAgQVNTRVJUKG5vZGUpOworICAgIGlmICghbm9kZSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgQVNTRVJUKG5vZGUtPnBhcmVudE5vZGUoKSA9PSBtX2NvbnRl
bnRFbGVtZW50LT5zaGFkb3dUcmVlUm9vdE5vZGUoKS0+c2hhZG93SG9zdCgpKTsKKworICAgIGlm
IChtX2NvbnRlbnRFbGVtZW50LT5zZWxlY3QoKS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB0
cnVlOworCisgICAgaWYgKCFub2RlLT5pc0VsZW1lbnROb2RlKCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIHJldHVybiBtX3NlbGVjdG9ycy5tYXRjaGVzKG1fc2VsZWN0b3JDaGVja2Vy
LCB0b0VsZW1lbnQobm9kZSkpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vU2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnkuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFk
b3dDb250ZW50U2VsZWN0b3JRdWVyeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ1Njg3M2IzNDMwYzNhMmMyNDdh
MTgwYWU0ZGEzZGIxMDRmMDczMGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vU2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnkuaApAQCAtMCwwICsxLDY0IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3Ry
aWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBT
aGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeV9oCisjZGVmaW5lIFNoYWRvd0NvbnRlbnRTZWxlY3Rv
clF1ZXJ5X2gKKworI2luY2x1ZGUgIkNTU1NlbGVjdG9yTGlzdC5oIgorI2luY2x1ZGUgIlNlbGVj
dG9yQ2hlY2tlci5oIgorI2luY2x1ZGUgIlNlbGVjdG9yUXVlcnkuaCIKKyNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBEb2N1bWVudDsKK2NsYXNzIE5vZGU7CitjbGFzcyBTaGFkb3dDb250ZW50RWxl
bWVudDsKKworY2xhc3MgU2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnkgeworICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKFNoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5KTsKK3B1YmxpYzoKKyAgICBl
eHBsaWNpdCBTaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeShTaGFkb3dDb250ZW50RWxlbWVudCop
OworCisgICAgYm9vbCBtYXRjaGVzKE5vZGUqKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBTaGFk
b3dDb250ZW50RWxlbWVudCogbV9jb250ZW50RWxlbWVudDsKKyAgICBTZWxlY3RvckRhdGFMaXN0
IG1fc2VsZWN0b3JzOworICAgIENTU1NlbGVjdG9yTGlzdCBtX3NlbGVjdG9yTGlzdDsKKyAgICBT
ZWxlY3RvckNoZWNrZXIgbV9zZWxlY3RvckNoZWNrZXI7Cit9OworCit9CisKKworCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dJbmNsdXNpb25TZWxlY3Rvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93SW5jbHVzaW9uU2VsZWN0b3IuY3BwCmluZGV4
IDk4NDFmNTU2NDg4N2M4OTYzNDUzNzQ5ZjIzNzE2NmNhMmU0NWUxMDUuLjU3ZTlkNDJiZTUxYjVl
NDUyYzRkNDA1NGUyMGJhNGM3Yjg1NTQ4YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TaGFkb3dJbmNsdXNpb25TZWxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1No
YWRvd0luY2x1c2lvblNlbGVjdG9yLmNwcApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIlNo
YWRvd0luY2x1c2lvblNlbGVjdG9yLmgiCiAKICNpbmNsdWRlICJTaGFkb3dDb250ZW50RWxlbWVu
dC5oIgorI2luY2x1ZGUgIlNoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmgiCiAjaW5jbHVkZSAi
U2hhZG93Um9vdC5oIgogCiAKQEAgLTExMSwxMSArMTEyLDEyIEBAIHZvaWQgU2hhZG93SW5jbHVz
aW9uU2VsZWN0b3I6OnNlbGVjdChTaGFkb3dDb250ZW50RWxlbWVudCogY29udGVudEVsZW1lbnQs
IFNoYWRvCiB7CiAgICAgQVNTRVJUKGluY2x1c2lvbnMtPmlzRW1wdHkoKSk7CiAKKyAgICBTaGFk
b3dDb250ZW50U2VsZWN0b3JRdWVyeSBxdWVyeShjb250ZW50RWxlbWVudCk7CiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBtX2NhbmRpZGF0ZXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgTm9k
ZSogY2hpbGQgPSBtX2NhbmRpZGF0ZXNbaV0uZ2V0KCk7CiAgICAgICAgIGlmICghY2hpbGQpCiAg
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKCFjb250ZW50RWxlbWVudC0+c2hvdWxk
SW5jbHVkZShjaGlsZCkpCisgICAgICAgIGlmICghcXVlcnkubWF0Y2hlcyhjaGlsZCkpCiAgICAg
ICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBSZWZQdHI8U2hhZG93SW5jbHVzaW9uPiBpbmNs
dXNpb24gPSBTaGFkb3dJbmNsdXNpb246OmNyZWF0ZShjb250ZW50RWxlbWVudCwgY2hpbGQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0luY2x1c2lvblNlbGVjdG9yLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93SW5jbHVzaW9uU2VsZWN0b3IuaAppbmRleCBmMWFk
YWVlM2Y1NDNhODFjM2ZlZmJmYzQ2ZTAxYjFmZDdmM2IwZThmLi5kMWE4NzE3NDQxYjE5YzJkNmFm
YTBlOGYzNDA3NTg0MTAyMThiNGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hh
ZG93SW5jbHVzaW9uU2VsZWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93SW5j
bHVzaW9uU2VsZWN0b3IuaApAQCAtMTM3LDcgKzEzNyw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGRp
ZFNlbGVjdCgpOwogICAgIGJvb2wgaGFzQ2FuZGlkYXRlcygpIGNvbnN0IHsgcmV0dXJuICFtX2Nh
bmRpZGF0ZXMuaXNFbXB0eSgpOyB9CiAKLQogcHJpdmF0ZToKICAgICB2b2lkIHJlbW92ZUZyb21T
ZXQoU2hhZG93SW5jbHVzaW9uTGlzdCopOwogICAgIHZvaWQgYWRkVG9TZXQoU2hhZG93SW5jbHVz
aW9uTGlzdCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0Vs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuY3BwCmlu
ZGV4IGZhZDlhZjgwNDQxNDU3MGMxZTc2Y2EyOGM1ZWI1YjE2MjdjNzAyMjAuLmZjODk1MDk3YjFh
ZTk2YTM4YWI5YjY1MTc5YzM1MTFjOGEwZDIyNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxEZXRhaWxzRWxlbWVudC5jcHAKQEAgLTM2LDE3ICszNiwyMSBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKK3N0YXRpYyBjb25zdCBBdG9taWNT
dHJpbmcmIHN1bW1hcnlRdWVyeVNlbGVjdG9yKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KEF0b21pY1N0cmluZywgc2VsZWN0b3IsICgic3VtbWFyeTpmaXJzdC1vZi10eXBlIikpOworICAg
IHJldHVybiBzZWxlY3RvcjsKK307CisKIGNsYXNzIERldGFpbHNDb250ZW50RWxlbWVudCA6IHB1
YmxpYyBTaGFkb3dDb250ZW50RWxlbWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8RGV0YWlsc0NvbnRlbnRFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQqKTsKIAogcHJpdmF0ZToK
ICAgICBEZXRhaWxzQ29udGVudEVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQotICAgICAgICA6
IFNoYWRvd0NvbnRlbnRFbGVtZW50KEhUTUxOYW1lczo6ZGl2VGFnLCBkb2N1bWVudCkKKyAgICAg
ICAgOiBTaGFkb3dDb250ZW50RWxlbWVudChIVE1MTmFtZXM6OmRpdlRhZywgZG9jdW1lbnQsIFdU
Rjo6ZW1wdHlBdG9tKQogICAgIHsKICAgICB9Ci0KLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSW5j
bHVkZShOb2RlKik7CiB9OwogCiBQYXNzUmVmUHRyPERldGFpbHNDb250ZW50RWxlbWVudD4gRGV0
YWlsc0NvbnRlbnRFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtNTQsMjQg
KzU4LDE1IEBAIFBhc3NSZWZQdHI8RGV0YWlsc0NvbnRlbnRFbGVtZW50PiBEZXRhaWxzQ29udGVu
dEVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBEZXRhaWxzQ29udGVudEVsZW1lbnQoZG9jdW1lbnQpKTsKIH0KIAotYm9vbCBEZXRhaWxzQ29u
dGVudEVsZW1lbnQ6OnNob3VsZEluY2x1ZGUoTm9kZSogbm9kZSkKLXsKLSAgICBIVE1MRGV0YWls
c0VsZW1lbnQqIGRldGFpbHMgPSBzdGF0aWNfY2FzdDxIVE1MRGV0YWlsc0VsZW1lbnQqPihzaGFk
b3dBbmNlc3Rvck5vZGUoKSk7Ci0gICAgcmV0dXJuIGRldGFpbHMtPm1haW5TdW1tYXJ5KCkgIT0g
bm9kZTsKLX0KLQotCiBjbGFzcyBEZXRhaWxzU3VtbWFyeUVsZW1lbnQgOiBwdWJsaWMgU2hhZG93
Q29udGVudEVsZW1lbnQgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPERldGFpbHNT
dW1tYXJ5RWxlbWVudD4gY3JlYXRlKERvY3VtZW50Kik7CiAKIHByaXZhdGU6CiAgICAgRGV0YWls
c1N1bW1hcnlFbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCkKLSAgICAgICAgOiBTaGFkb3dDb250
ZW50RWxlbWVudChIVE1MTmFtZXM6OmRpdlRhZywgZG9jdW1lbnQpCisgICAgICAgIDogU2hhZG93
Q29udGVudEVsZW1lbnQoSFRNTE5hbWVzOjpkaXZUYWcsIGRvY3VtZW50LCBzdW1tYXJ5UXVlcnlT
ZWxlY3RvcigpKQogICAgIHsKICAgICB9Ci0KLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSW5jbHVk
ZShOb2RlKik7CiB9OwogCiBQYXNzUmVmUHRyPERldGFpbHNTdW1tYXJ5RWxlbWVudD4gRGV0YWls
c1N1bW1hcnlFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtNzksMTMgKzc0
LDYgQEAgUGFzc1JlZlB0cjxEZXRhaWxzU3VtbWFyeUVsZW1lbnQ+IERldGFpbHNTdW1tYXJ5RWxl
bWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWUKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERl
dGFpbHNTdW1tYXJ5RWxlbWVudChkb2N1bWVudCkpOwogfQogCi1ib29sIERldGFpbHNTdW1tYXJ5
RWxlbWVudDo6c2hvdWxkSW5jbHVkZShOb2RlKiBub2RlKQotewotICAgIEhUTUxEZXRhaWxzRWxl
bWVudCogZGV0YWlscyA9IHN0YXRpY19jYXN0PEhUTUxEZXRhaWxzRWxlbWVudCo+KHNoYWRvd0Fu
Y2VzdG9yTm9kZSgpKTsKLSAgICByZXR1cm4gZGV0YWlscy0+bWFpblN1bW1hcnkoKSA9PSBub2Rl
OwotfQotCi0KIFBhc3NSZWZQdHI8SFRNTERldGFpbHNFbGVtZW50PiBIVE1MRGV0YWlsc0VsZW1l
bnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1l
bnQpCiB7CiAgICAgUmVmUHRyPEhUTUxEZXRhaWxzRWxlbWVudD4gcmVzdWx0ID0gYWRvcHRSZWYo
bmV3IEhUTUxEZXRhaWxzRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3VtbWFyeUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MU3VtbWFyeUVsZW1lbnQuY3BwCmluZGV4IGVjZjEwODVjZTMwZmUwZjNiOTNl
MWNkZTI1ZWI1NDRmYTdkYjRmNGIuLmNjOGMwNTk4YmZlMWY4ZmQ2ZDYxYmZlZjE1MmU0MjIwMzZl
NTVkYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN1bW1hcnlFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5jcHAKQEAg
LTQzLDcgKzQzLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFN1bW1hcnlDb250ZW50RWxl
bWVudChEb2N1bWVudCogZG9jdW1lbnQpCi0gICAgICAgIDogU2hhZG93Q29udGVudEVsZW1lbnQo
SFRNTE5hbWVzOjpkaXZUYWcsIGRvY3VtZW50KQorICAgICAgICA6IFNoYWRvd0NvbnRlbnRFbGVt
ZW50KEhUTUxOYW1lczo6ZGl2VGFnLCBkb2N1bWVudCwgZW1wdHlBdG9tKQogICAgIHsKICAgICB9
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDc4M2MzODA1NjkzYWVj
NjNkNGQ5ODViZDc4YzM4NGZkNDQ4NGM0ZWMuLjZjMGFhMjQ1NmNlZWVkYzFhN2FhMDRjZmU5MjRi
NjUwNTA5MzU5NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTEyNiwx
NCArMTI2LDE0IEBAIGJvb2wgSW50ZXJuYWxzOjppc1ByZWxvYWRlZChEb2N1bWVudCogZG9jdW1l
bnQsIGNvbnN0IFN0cmluZyYgdXJsKQogICAgIHJldHVybiBkb2N1bWVudC0+Y2FjaGVkUmVzb3Vy
Y2VMb2FkZXIoKS0+aXNQcmVsb2FkZWQodXJsKTsKIH0KIAotUGFzc1JlZlB0cjxFbGVtZW50PiBJ
bnRlcm5hbHM6OmNyZWF0ZVNoYWRvd0NvbnRlbnRFbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCwg
RXhjZXB0aW9uQ29kZSYgZWMpCitQYXNzUmVmUHRyPEVsZW1lbnQ+IEludGVybmFsczo6Y3JlYXRl
U2hhZG93Q29udGVudEVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIHNl
bGVjdCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKCFkb2N1bWVudCkgewogICAgICAg
ICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0g
ICAgcmV0dXJuIFNoYWRvd0NvbnRlbnRFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOworICAgIHJl
dHVybiBTaGFkb3dDb250ZW50RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50LCBzZWxlY3QpOwogfQog
CiBFbGVtZW50KiBJbnRlcm5hbHM6OmdldEVsZW1lbnRCeUlkSW5TaGFkb3dSb290KE5vZGUqIHNo
YWRvd1Jvb3QsIGNvbnN0IFN0cmluZyYgaWQsIEV4Y2VwdGlvbkNvZGUmIGVjKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggZWQ0NzM3MDU1Yjk5MzgzZGE5YjI4MDIxYWYzZjY5NTlj
NjFkMzVmNy4uYzk2N2ZjZWU3NTgzMDlhZTIxODI3ZDlmMmRkMTlhMDMzOTgyYmJiMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHJlbW92ZVNoYWRvd1Jvb3QoRWxlbWVudCogaG9zdCwgRXhjZXB0aW9uQ29kZSYpOwogICAg
IEVsZW1lbnQqIGluY2x1ZGVyRm9yKE5vZGUqLCBFeGNlcHRpb25Db2RlJik7CiAgICAgU3RyaW5n
IHNoYWRvd1BzZXVkb0lkKEVsZW1lbnQqLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgUGFzc1JlZlB0
cjxFbGVtZW50PiBjcmVhdGVTaGFkb3dDb250ZW50RWxlbWVudChEb2N1bWVudCosIEV4Y2VwdGlv
bkNvZGUmKTsKKyAgICBQYXNzUmVmUHRyPEVsZW1lbnQ+IGNyZWF0ZVNoYWRvd0NvbnRlbnRFbGVt
ZW50KERvY3VtZW50KiwgY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIEVsZW1l
bnQqIGdldEVsZW1lbnRCeUlkSW5TaGFkb3dSb290KE5vZGUqIHNoYWRvd1Jvb3QsIGNvbnN0IFN0
cmluZyYgaWQsIEV4Y2VwdGlvbkNvZGUmKTsKIAogI2lmIEVOQUJMRShJTlBVVF9DT0xPUikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCBmNTZkMWFmNzRhOGUzNWRkNDdiZDRl
NmM0OWYxMjVlN2VhYWMzYTU1Li41ZjAwOGQwYThhZmI2OGQ2MDUwMjU4ZDhiNjU0YzhmNzE1M2E3
MGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysr
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC0zNSw3ICszNSw3IEBA
IG1vZHVsZSB3aW5kb3cgewogICAgICAgICBFbGVtZW50IGluY2x1ZGVyRm9yKGluIE5vZGUgbm9k
ZSkgcmFpc2VzIChET01FeGNlcHRpb24pOwogICAgICAgICB2b2lkIHJlbW92ZVNoYWRvd1Jvb3Qo
aW4gRWxlbWVudCBob3N0KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIERPTVN0cmlu
ZyBzaGFkb3dQc2V1ZG9JZChpbiBFbGVtZW50IGVsZW1lbnQpIHJhaXNlcyAoRE9NRXhjZXB0aW9u
KTsKLSAgICAgICAgRWxlbWVudCBjcmVhdGVTaGFkb3dDb250ZW50RWxlbWVudChpbiBEb2N1bWVu
dCBkb2N1bWVudCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgICAgIEVsZW1lbnQgY3JlYXRl
U2hhZG93Q29udGVudEVsZW1lbnQoaW4gRG9jdW1lbnQgZG9jdW1lbnQsIGluIFtPcHRpb25hbD1D
YWxsV2l0aE51bGxWYWx1ZV0gRE9NU3RyaW5nIHNlbGVjdCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7
CiAgICAgICAgIEVsZW1lbnQgZ2V0RWxlbWVudEJ5SWRJblNoYWRvd1Jvb3QoaW4gTm9kZSBzaGFk
b3dSb290LCBpbiBET01TdHJpbmcgaWQpIHJhaXNlcyhET01FeGNlcHRpb24pOwogCiAjaWYgZGVm
aW5lZChFTkFCTEVfSU5QVVRfQ09MT1IpICYmIEVOQUJMRV9JTlBVVF9DT0xPUgpkaWZmIC0tZ2l0
IGEvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlciBiL1NvdXJjZS9hdXRvdG9vbHMvc3lt
Ym9scy5maWx0ZXIKaW5kZXggMTViNjk1N2E5ZTI0MjMxOTBiYWMxZGQyMWNmYjE2NzNmZDczMThk
YS4uYjIyNWYwNmJmOWQyNDU2MzExZGRlYjgxNDE1NWE5Y2I1NjJjNWI2YiAxMDA2NDQKLS0tIGEv
U291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgorKysgYi9Tb3VyY2UvYXV0b3Rvb2xzL3N5
bWJvbHMuZmlsdGVyCkBAIC01Myw3ICs1Myw3IEBAIF9aTjdXZWJDb3JlMTdjYWNoZURPTVN0cnVj
dHVyZUVQTlNfMTdKU0RPTUdsb2JhbE9iamVjdEVQTjNKU0M5U3RydWN0dXJlRVBLTlMyXzlDCiBf
Wk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjM5c2V0UmVzb3VyY2VzRGF0YVNpemVMaW1p
dHNGcm9tSW50ZXJuYWxzRWlpOwogX1pON1dlYkNvcmUyME5vZGVSZW5kZXJpbmdDb250ZXh0QzFF
UE5TXzROb2RlRTsKIF9aTjdXZWJDb3JlMjBOb2RlUmVuZGVyaW5nQ29udGV4dEQxRXY7Ci1fWk43
V2ViQ29yZTIwU2hhZG93Q29udGVudEVsZW1lbnQ2Y3JlYXRlRVBOU184RG9jdW1lbnRFOworX1pO
N1dlYkNvcmUyMFNoYWRvd0NvbnRlbnRFbGVtZW50NmNyZWF0ZUVQTlNfOERvY3VtZW50RVJLTjNX
VEYxMkF0b21pY1N0cmluZ0U7CiBfWk43V2ViQ29yZTIxZ2V0Q2FjaGVkRE9NU3RydWN0dXJlRVBO
U18xN0pTRE9NR2xvYmFsT2JqZWN0RVBLTjNKU0M5Q2xhc3NJbmZvRTsKIF9aTjdXZWJDb3JlMjJl
eHRlcm5hbFJlcHJlc2VudGF0aW9uRVBOU183RWxlbWVudEVqOwogX1pON1dlYkNvcmUyNERvY3Vt
ZW50TWFya2VyQ29udHJvbGxlcjEwbWFya2Vyc0ZvckVQTlNfNE5vZGVFTlNfMTREb2N1bWVudE1h
cmtlcjExTWFya2VyVHlwZXNFOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDZiZDI0OGQwOWI4NzEyNDE1NjY5OWVmZjU1OTg2
NDE1Y2M0N2M5MzEuLjU1N2RmY2UxYjFlOTM0ZjRmN2Q0NzVkZDM0NjkzMGRkNmYxZDg4YjYgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wMS0xMSAgU2hpbnlhIEthd2FuYWthICA8c2hpbnlh
a0Bnb29nbGUuY29tPgorCisgICAgICAgIFNoYWRvd0NvbnRlbnRFbGVtZW50IHNob3VsZCBiZSBh
YmxlIHRvIHVzZSBxdWVyeS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTc1MzAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSGFqaW1lIE1vcml0YS4KKwor
ICAgICAgICBUZXN0cyBmb3IgU2hhZG93Q29udGVudEVsZW1lbnQgcXVlcnkuCisKKyAgICAgICAg
KiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWNvbnRlbnRzLXNlbGVjdC1leHBlY3RlZC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWNvbnRlbnRzLXNlbGVjdC5o
dG1sOiBBZGRlZC4KKwogMjAxMi0wMS0xMSAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNh
bXN1bmcuY29tPgogCiAgICAgICAgIFVwZGF0ZSBza2lwcGVkIGZpbGUgZm9yIGxheW91dCB0ZXN0
IG9mIEVGTCBwb3J0LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3No
YWRvdy1jb250ZW50cy1zZWxlY3QtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L3NoYWRvdy9zaGFkb3ctY29udGVudHMtc2VsZWN0LWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MDM3OTY1YmEyYzkyN2JjMjQ4Njk1ODQ1M2MxY2M2NzUyOTczZTVlMgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctY29udGVudHMtc2VsZWN0LWV4
cGVjdGVkLmh0bWwKQEAgLTAsMCArMSw0MSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPHN0eWxlPgorLyogcmVsYXRpdmUgcG9zaXRpb25pbmcgZW5zdXJlcyB1bmRlcmx5aW5n
IFJlbmRlckxheWVyICovCisuY29udGFpbmVyIHsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cit9
Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJjb250YWluZXIiPgorPCEtLSB0
ZXN0U2VsZWN0SXNOdWxsIC0tPgorPGRpdj48c3Bhbj5IZWxsbyw8L3NwYW4+PHNwYW4+Y29udGVu
dDwvc3Bhbj48c3Bhbj5Xb3JsZC48L3NwYW4+PC9kaXY+Cis8IS0tIHRlc3RTZWxlY3RJc0lkIC0t
PgorPGRpdj48c3Bhbj5IZWxsbyw8L3NwYW4+PHNwYW4+Y29udGVudDwvc3Bhbj48c3Bhbj5Xb3Js
ZC48L3NwYW4+PC9kaXY+Cis8IS0tIHRlc3RTZWxlY3RJc0lkQnV0Tm90TWF0Y2hlZCAtLT4KKzxk
aXY+PHNwYW4+SGVsbG8sPC9zcGFuPjxzcGFuPldvcmxkLjwvc3Bhbj48L2Rpdj4KKzwhLS0gdGVz
dFNlbGVjdElzSWRCdXROb3RDaGlsZCAtLT4KKzxkaXY+PHNwYW4+SGVsbG8sPC9zcGFuPjxzcGFu
PldvcmxkLjwvc3Bhbj48L2Rpdj4KKzwhLS0gdGVzdFNlbGVjdElzTXVsdGlJZCAtLT4KKzxkaXY+
PHNwYW4+SGVsbG8sPC9zcGFuPjxzcGFuPmNvbnRlbnQ8L3NwYW4+PHNwYW4+Y29udGVudDwvc3Bh
bj48c3Bhbj5Xb3JsZC48L3NwYW4+PC9kaXY+Cis8IS0tIHRlc3RTZWxlY3RJc1R5cGUgLS0+Cis8
ZGl2PjxzcGFuPkhlbGxvLDwvc3Bhbj48c3Bhbj5jb250ZW50PC9zcGFuPjxzcGFuPldvcmxkLjwv
c3Bhbj48L2Rpdj4KKzwhLS0gdGVzdFNlbGVjdElzVHlwZVdpdGhBdHRyaWJ1dGUgLS0+Cis8ZGl2
PjxzcGFuPkhlbGxvLDwvc3Bhbj48c3Bhbj5jb250ZW50PC9zcGFuPjxzcGFuPldvcmxkLjwvc3Bh
bj48L2Rpdj4KKzwhLS0gdGVzdFNlbGVjdElzVHlwZVdpdGhGaXJzdE9mVHlwZSAtLT4KKzxkaXY+
PHNwYW4+SGVsbG8sPC9zcGFuPjxzcGFuPmNvbnRlbnQ8L3NwYW4+PHNwYW4+V29ybGQuPC9zcGFu
PjwvZGl2PgorPCEtLSB0ZXN0U2VsZWN0SXNUeXBlV2l0aEZpcnN0T2ZUeXBlMiAtLT4KKzxkaXY+
PHNwYW4+SGVsbG8sPC9zcGFuPjxzcGFuPmNvbnRlbnQ8L3NwYW4+PHNwYW4+V29ybGQuPC9zcGFu
PjwvZGl2PgorPCEtLSB0ZXN0U2VsZWN0SXNUeXBlV2l0aExhc3RPZlR5cGUgLS0+Cis8ZGl2Pjxz
cGFuPkhlbGxvLDwvc3Bhbj48c3Bhbj5jb250ZW50PC9zcGFuPjxzcGFuPldvcmxkLjwvc3Bhbj48
L2Rpdj4KKzwhLS0gdGVzdFNlbGVjdElzRGV0YWlscyAtLT4KKzxkaXY+PHNwYW4+SGVsbG8sPC9z
cGFuPjxkZXRhaWxzPmNvbnRlbnQ8L2RldGFpbHM+PHNwYW4+V29ybGQuPC9zcGFuPjwvZGl2Pgor
PCEtLSB0ZXN0U2VsZWN0SXNEZXRhaWxzMiAtLT4KKzxkaXY+PHNwYW4+SGVsbG8sPC9zcGFuPjxk
ZXRhaWxzPjxzdW1tYXJ5PmNvbnRlbnQ8L3N1bW1hcnk+PC9kZXRhaWxzPjxzcGFuPldvcmxkLjwv
c3Bhbj48L2Rpdj4KKzwhLS0gdGVzdFNlbGVjdFdoZW5EeW5hbWljYWxseUNoaWxkcmVuQ2hhbmdl
ZCAtLT4KKzxkaXY+PHNwYW4+SGVsbG8sPC9zcGFuPjxzcGFuPmNvbnRlbnQ8L3NwYW4+PHNwYW4+
V29ybGQuPC9zcGFuPjwvZGl2PgorPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LWNvbnRlbnRzLXNlbGVjdC5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1jb250ZW50cy1zZWxlY3QuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42NzkyOTY3YTkzZTU5NjJkYjVhZTdmMjliYjI5YmNhMDFjZWNmNTFmCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1jb250
ZW50cy1zZWxlY3QuaHRtbApAQCAtMCwwICsxLDE3MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPHN0eWxlPgorLyogcmVsYXRpdmUgcG9zaXRpb25pbmcgZW5zdXJlcyB1bmRl
cmx5aW5nIFJlbmRlckxheWVyICovCisuY29udGFpbmVyIHsKKyAgICBwb3NpdGlvbjogcmVsYXRp
dmU7Cit9Cis8L3N0eWxlPgorPHNjcmlwdD4KK2Z1bmN0aW9uIGFwcGVuZFNoYWRvdyh0YXJnZXQs
IHNlbGVjdCkgeworICAgIHZhciByb290ID0gaW50ZXJuYWxzLmVuc3VyZVNoYWRvd1Jvb3QodGFy
Z2V0KTsKKworICAgIHZhciBjaGlsZDAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7
CisgICAgY2hpbGQwLmlubmVySFRNTCA9ICJIZWxsbywiOworICAgIHJvb3QuYXBwZW5kQ2hpbGQo
Y2hpbGQwKTsKKworICAgIHZhciBjb250ZW50ID0gaW50ZXJuYWxzLmNyZWF0ZVNoYWRvd0NvbnRl
bnRFbGVtZW50KGRvY3VtZW50LCBzZWxlY3QpOworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY29udGVu
dCk7CisKKyAgICB2YXIgY2hpbGQxID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwor
ICAgIGNoaWxkMS5pbm5lckhUTUwgPSAiV29ybGQuIjsKKyAgICByb290LmFwcGVuZENoaWxkKGNo
aWxkMSk7Cit9CisKK2Z1bmN0aW9uIHRlc3RTZWxlY3RJc051bGwoKSB7CisgICAgdmFyIHRhcmdl
dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHRhcmdldC5pbm5lckhUTUwg
PSAiPHNwYW4+Y29udGVudDwvc3Bhbj4iOworCisgICAgYXBwZW5kU2hhZG93KHRhcmdldCwgIiIp
OworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRhaW5lcicpLmFwcGVuZENoaWxk
KHRhcmdldCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RTZWxlY3RJc0lkKCkgeworICAgIHZhciB0YXJn
ZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICB0YXJnZXQuaW5uZXJIVE1M
ID0gIjxzcGFuIGlkPSdmb28nPmNvbnRlbnQ8L3NwYW4+PHNwYW4gaWQ9J2F6dW55YW4nPnBlcm9w
ZXJvPC9zcGFuPiI7CisKKyAgICBhcHBlbmRTaGFkb3codGFyZ2V0LCAiI2ZvbyIpOworCisgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRhaW5lcicpLmFwcGVuZENoaWxkKHRhcmdldCk7
Cit9CisKK2Z1bmN0aW9uIHRlc3RTZWxlY3RJc0lkQnV0Tm90TWF0Y2hlZCgpIHsKKyAgICB2YXIg
dGFyZ2V0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgdGFyZ2V0LmlubmVy
SFRNTCA9ICI8c3BhbiBpZD0nZm9vJz5jb250ZW50PC9zcGFuPjxzcGFuIGlkPSdhenVueWFuJz5w
ZXJvcGVybzwvc3Bhbj4iOworCisgICAgYXBwZW5kU2hhZG93KHRhcmdldCwgIiNmb29iYXIiKTsK
KworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250YWluZXInKS5hcHBlbmRDaGlsZCh0
YXJnZXQpOworfQorCitmdW5jdGlvbiB0ZXN0U2VsZWN0SXNJZEJ1dE5vdENoaWxkKCkgeworICAg
IHZhciB0YXJnZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICB0YXJnZXQu
aW5uZXJIVE1MID0gIjxzcGFuPjxzcGFuIGlkPSdmb28nPmNvbnRlbnQ8L3NwYW4+PHNwYW4gaWQ9
J2F6dW55YW4nPnBlcm9wZXJvPC9zcGFuPjwvc3Bhbj4iOworCisgICAgYXBwZW5kU2hhZG93KHRh
cmdldCwgIiNmb28iKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250YWluZXIn
KS5hcHBlbmRDaGlsZCh0YXJnZXQpOworfQorCitmdW5jdGlvbiB0ZXN0U2VsZWN0SXNNdWx0aUlk
KCkgeworICAgIHZhciB0YXJnZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAg
ICB0YXJnZXQuaW5uZXJIVE1MID0gIjxzcGFuIGlkPSdmb28nPmNvbnRlbnQ8L3NwYW4+PHNwYW4g
aWQ9J2F6dW55YW4nPnBlcm9wZXJvPC9zcGFuPjxzcGFuIGlkPSdmb28nPmNvbnRlbnQ8L3NwYW4+
IjsKKworICAgIGFwcGVuZFNoYWRvdyh0YXJnZXQsICIjZm9vIik7CisKKyAgICAvLyBBbGwgbWF0
Y2hlZCBlbGVtZW50cyB3aWxsIGJlIHNlbGVjdGVkLgorICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdjb250YWluZXInKS5hcHBlbmRDaGlsZCh0YXJnZXQpOworfQorCitmdW5jdGlvbiB0ZXN0
U2VsZWN0SXNUeXBlKCkgeworICAgIHZhciB0YXJnZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdkaXYnKTsKKyAgICB0YXJnZXQuaW5uZXJIVE1MID0gIjxkaXY+YXp1bnlhbjwvZGl2PjxzcGFu
PmNvbnRlbnQ8L3NwYW4+PGRpdj5wZXJvcGVybzwvZGl2PiI7CisKKyAgICBhcHBlbmRTaGFkb3co
dGFyZ2V0LCAic3BhbiIpOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRhaW5l
cicpLmFwcGVuZENoaWxkKHRhcmdldCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RTZWxlY3RJc1R5cGVX
aXRoQXR0cmlidXRlKCkgeworICAgIHZhciB0YXJnZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdkaXYnKTsKKyAgICB0YXJnZXQuaW5uZXJIVE1MID0gIjxzcGFuPmF6dW55YW48L3NwYW4+PHNw
YW4gdGl0bGU9J2NvbnRlbnQnPmNvbnRlbnQ8L3NwYW4+PHNwYW4+cGVyb3Blcm88L3NwYW4+IjsK
KworICAgIGFwcGVuZFNoYWRvdyh0YXJnZXQsICJzcGFuW3RpdGxlPSdjb250ZW50J10iKTsKKwor
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250YWluZXInKS5hcHBlbmRDaGlsZCh0YXJn
ZXQpOworfQorCitmdW5jdGlvbiB0ZXN0U2VsZWN0SXNUeXBlV2l0aEZpcnN0T2ZUeXBlKCkgewor
ICAgIHZhciB0YXJnZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICB0YXJn
ZXQuaW5uZXJIVE1MID0gIjxkaXY+YXp1bnlhbjwvZGl2PjxzcGFuPmNvbnRlbnQ8L3NwYW4+PHNw
YW4+cGVyb3Blcm88L3NwYW4+IjsKKworICAgIGFwcGVuZFNoYWRvdyh0YXJnZXQsICJzcGFuOmZp
cnN0LW9mLXR5cGUiKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250YWluZXIn
KS5hcHBlbmRDaGlsZCh0YXJnZXQpOworfQorCitmdW5jdGlvbiB0ZXN0U2VsZWN0SXNUeXBlV2l0
aEZpcnN0T2ZUeXBlMigpIHsKKyAgICB2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnZGl2Jyk7CisgICAgdGFyZ2V0LmlubmVySFRNTCA9ICI8ZGl2PjxzcGFuPmF6dW55YW48L3Nw
YW4+PC9kaXY+PHNwYW4+Y29udGVudDwvc3Bhbj48c3Bhbj5wZXJvcGVybzwvc3Bhbj4iOworCisg
ICAgYXBwZW5kU2hhZG93KHRhcmdldCwgInNwYW46Zmlyc3Qtb2YtdHlwZSIpOworCisgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRhaW5lcicpLmFwcGVuZENoaWxkKHRhcmdldCk7Cit9
CisKK2Z1bmN0aW9uIHRlc3RTZWxlY3RJc1R5cGVXaXRoTGFzdE9mVHlwZSgpIHsKKyAgICB2YXIg
dGFyZ2V0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgdGFyZ2V0LmlubmVy
SFRNTCA9ICI8c3Bhbj5henVueWFuPC9zcGFuPjxzcGFuPmNvbnRlbnQ8L3NwYW4+PGRpdj5wZXJv
cGVybzwvZGl2PiI7CisKKyAgICBhcHBlbmRTaGFkb3codGFyZ2V0LCAic3BhbjpsYXN0LW9mLXR5
cGUiKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250YWluZXInKS5hcHBlbmRD
aGlsZCh0YXJnZXQpOworfQorCitmdW5jdGlvbiB0ZXN0U2VsZWN0SXNEZXRhaWxzKCkgeworICAg
IHZhciB0YXJnZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICB0YXJnZXQu
aW5uZXJIVE1MID0gIjxkZXRhaWxzPmNvbnRlbnQ8L2RldGFpbHM+IjsKKworICAgIGFwcGVuZFNo
YWRvdyh0YXJnZXQsICJkZXRhaWxzIik7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
Y29udGFpbmVyJykuYXBwZW5kQ2hpbGQodGFyZ2V0KTsKK30KKworZnVuY3Rpb24gdGVzdFNlbGVj
dElzRGV0YWlsczIoKSB7CisgICAgdmFyIHRhcmdldCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J2RpdicpOworICAgIHRhcmdldC5pbm5lckhUTUwgPSAiPGRldGFpbHM+PHN1bW1hcnk+Y29udGVu
dDwvc3VtbWFyeT48L2RldGFpbHM+IjsKKworICAgIGFwcGVuZFNoYWRvdyh0YXJnZXQsICJkZXRh
aWxzIik7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29udGFpbmVyJykuYXBwZW5k
Q2hpbGQodGFyZ2V0KTsKK30KKworZnVuY3Rpb24gdGVzdFNlbGVjdFdoZW5EeW5hbWljYWxseUNo
aWxkcmVuQ2hhbmdlZCgpIHsKKyAgICB2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnZGl2Jyk7CisgICAgdGFyZ2V0LmlubmVySFRNTCA9ICI8c3Bhbj5jb250ZW50PC9zcGFuPjxz
cGFuIGlkPSd0b2JlcmVtb3ZlZCc+YW51bnlhbiBwZXJvcGVybzwvc3Bhbj4iOworCisgICAgYXBw
ZW5kU2hhZG93KHRhcmdldCwgInNwYW4iKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdjb250YWluZXInKS5hcHBlbmRDaGlsZCh0YXJnZXQpOworCisgICAgdmFyIGVsZW0gPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgndG9iZXJlbW92ZWQnKTsKKyAgICBlbGVtLnBhcmVudE5vZGUu
cmVtb3ZlQ2hpbGQoZWxlbSk7Cit9CisKK3ZhciB0ZXN0RnVuY3MgPSBbCisgICAgdGVzdFNlbGVj
dElzTnVsbCwKKyAgICB0ZXN0U2VsZWN0SXNJZCwKKyAgICB0ZXN0U2VsZWN0SXNJZEJ1dE5vdE1h
dGNoZWQsCisgICAgdGVzdFNlbGVjdElzSWRCdXROb3RDaGlsZCwKKyAgICB0ZXN0U2VsZWN0SXNN
dWx0aUlkLAorICAgIHRlc3RTZWxlY3RJc1R5cGUsCisgICAgdGVzdFNlbGVjdElzVHlwZVdpdGhB
dHRyaWJ1dGUsCisgICAgdGVzdFNlbGVjdElzVHlwZVdpdGhGaXJzdE9mVHlwZSwKKyAgICB0ZXN0
U2VsZWN0SXNUeXBlV2l0aEZpcnN0T2ZUeXBlMiwKKyAgICB0ZXN0U2VsZWN0SXNUeXBlV2l0aExh
c3RPZlR5cGUsCisgICAgdGVzdFNlbGVjdElzRGV0YWlscywKKyAgICB0ZXN0U2VsZWN0SXNEZXRh
aWxzMiwKKyAgICB0ZXN0U2VsZWN0V2hlbkR5bmFtaWNhbGx5Q2hpbGRyZW5DaGFuZ2VkLAorXQor
CitmdW5jdGlvbiBkb1Rlc3QoKSB7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0ZXN0RnVuY3Mu
bGVuZ3RoOyArK2kpIHsKKyAgICAgICB0ZXN0RnVuY3NbaV0oKTsKKyAgICB9Cit9Cis8L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0iZG9UZXN0KCkiPgorPGRpdiBpZD0iY29udGFpbmVy
Ij48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5n
ZUxvZwppbmRleCBjMjFiOTRkYjBjMzBkNWQyM2MzN2QzMDc5MDgwOTllMjBjNTFlNGY0Li4wOWRh
M2EzYzg4ZTEyNjc3YjdkYmMyOTk1MzQzMjc1N2Q3YmQ3NjYxIDEwMDY0NAotLS0gYS9DaGFuZ2VM
b2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTItMDEtMTEgIFNoaW55YSBL
YXdhbmFrYSAgPHNoaW55YWtAZ29vZ2xlLmNvbT4KKworICAgICAgICBTaGFkb3dDb250ZW50RWxl
bWVudCBzaG91bGQgYmUgYWJsZSB0byB1c2UgcXVlcnkuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NTMwMgorCisgICAgICAgIFJldmlld2VkIGJ5IEhh
amltZSBNb3JpdGEuCisKKyAgICAgICAgKiBTb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVy
OiBFeHBvc2VkIG5lY2Vzc2FyeSBzeW1ib2xzLgorCiAyMDEyLTAxLTExICBVbGFuIERlZ2VuYmFl
diAgPHVsYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFt2OF0gSW50MTZBcnJheS5zZXQoYXJy
YXksIG9mZnNldCkgZmFpbHMgb24gZmlyc3QgZXhlY3V0aW9uCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122353</attachid>
            <date>2012-01-12 18:02:32 -0800</date>
            <delta_ts>2012-01-13 02:26:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-75302-20120113110230.patch</filename>
            <type>text/plain</type>
            <size>48028</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA0ODg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzM4NjI0YzdmNWFjYjhk
YjBiMjA1OTRmODc3ZWZjMDA3MDQyOWI0OS4uMTBiMDg0MzUzMTU0NzRkYWZlZTA3YjFkN2ZhMjBk
NDU4NDFmN2MxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDEyLTAxLTExICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGdvb2dsZS5jb20+CisKKyAgICAgICAgU2hhZG93Q29udGVu
dEVsZW1lbnQgc2hvdWxkIGJlIGFibGUgdG8gdXNlIHF1ZXJ5LgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzUzMDIKKworICAgICAgICBSZXZpZXdlZCBi
eSBIYWppbWUgTW9yaXRhLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIHNlbGVj
dG9yIHRvIHF1ZXJ5IGVsZW1lbnRzIGluIFNoYWRvd0NvbnRlbnRFbGVtZW50LgorICAgICAgICBU
aGlzIGNhbiBiZSB1c2VkIGluc3RlYWQgb2YgU2hhZG93Q29udGVudEVsZW1lbnQ6OnNob3VsZElu
Y2x1ZGUgaW4gbW9yZSBzb3BoaXN0aWNhdGVkIHdheXMuCisKKyAgICAgICAgVGVzdHM6IGZhc3Qv
ZG9tL3NoYWRvdy9zaGFkb3ctY29udGVudHMtc2VsZWN0LWV4cGVjdGVkLmh0bWwKKyAgICAgICAg
ICAgICAgIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctY29udGVudHMtc2VsZWN0Lmh0bWwKKworICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06Cisg
ICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAg
KiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6
CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IGRvbS9ET01BbGxJbk9uZS5jcHA6CisgICAgICAgICogZG9tL1NlbGVjdG9yUXVlcnkuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JEYXRhTGlzdDo6U2VsZWN0b3JEYXRhTGlzdCk6Cisg
ICAgICAgICAgRXh0cmFjdGVkIGZyb20gU2VsZWN0b3JRdWVyeXRvIHNoYXJlIGNvZGVzIHdpdGgg
U2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnkuCisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckRh
dGFMaXN0Ojppbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yRGF0YUxpc3Q6
Om1hdGNoZXMpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JEYXRhTGlzdDo6cXVlcnlBbGwp
OgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JEYXRhTGlzdDo6cXVlcnlGaXJzdCk6CisgICAg
ICAgIChXZWJDb3JlOjpTZWxlY3RvckRhdGFMaXN0OjpjYW5Vc2VJZExvb2t1cCk6CisgICAgICAg
IChXZWJDb3JlOjpTZWxlY3RvckRhdGFMaXN0OjpleGVjdXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNlbGVjdG9yUXVlcnk6OlNlbGVjdG9yUXVlcnkpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0
b3JRdWVyeTo6cXVlcnlBbGwpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JRdWVyeTo6cXVl
cnlGaXJzdCk6CisgICAgICAgICogZG9tL1NlbGVjdG9yUXVlcnkuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlNlbGVjdG9yRGF0YUxpc3Q6OnNpemUpOgorICAgICAgICAqIGRvbS9TaGFkb3dDb250ZW50
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZWxlY3RBdHRyKToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYWRvd0NvbnRlbnRFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhZG93Q29udGVudEVsZW1lbnQ6OlNoYWRvd0NvbnRlbnRFbGVtZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYWRvd0NvbnRlbnRFbGVtZW50OjpzZWxlY3QpOgorICAgICAgICAqIGRvbS9TaGFk
b3dDb250ZW50RWxlbWVudC5oOgorICAgICAgICAqIGRvbS9TaGFkb3dDb250ZW50U2VsZWN0b3JR
dWVyeS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Q29udGVudFNlbGVjdG9y
UXVlcnk6OlNoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlNo
YWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5OjptYXRjaGVzKToKKyAgICAgICAgICBSZXR1cm5zIHRy
dWUgaWYgTm9kZSBpcyBtYXRjaGVkIGJ5IHRoZSBxdWVyeS4KKyAgICAgICAgKiBkb20vU2hhZG93
Q29udGVudFNlbGVjdG9yUXVlcnkuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvZG9tL1No
YWRvd0NvbnRlbnRFbGVtZW50LmguCisgICAgICAgICogZG9tL1NoYWRvd0luY2x1c2lvblNlbGVj
dG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0luY2x1c2lvblNlbGVjdG9yOjpzZWxl
Y3QpOgorICAgICAgICAqIGRvbS9TaGFkb3dJbmNsdXNpb25TZWxlY3Rvci5oOgorICAgICAgICAq
IGh0bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnN1bW1hcnlR
dWVyeVNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkRldGFpbHNDb250ZW50RWxlbWVudDo6
RGV0YWlsc0NvbnRlbnRFbGVtZW50KTogUmUtaW1wbGVtZW50ZWQgdXNpbmcgcXVlcnkuCisgICAg
ICAgIChXZWJDb3JlOjpEZXRhaWxzU3VtbWFyeUVsZW1lbnQ6OkRldGFpbHNTdW1tYXJ5RWxlbWVu
dCk6IGRpdHRvLgorICAgICAgICAqIGh0bWwvSFRNTFN1bW1hcnlFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlN1bW1hcnlDb250ZW50RWxlbWVudDo6U3VtbWFyeUNvbnRlbnRFbGVtZW50
KToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnRlcm5hbHM6OmNyZWF0ZVNoYWRvd0NvbnRlbnRFbGVtZW50KToKKyAgICAgICAgKiB0ZXN0aW5n
L0ludGVybmFscy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKwogMjAxMi0w
MS0xMiAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBOU1VS
TCB0byBLVVJMIGNvbnZlcnNpb24gc2hvdWxkbid0IHR1cm4gcmF3IHBhdGhzIGludG8gZmlsZSBV
UkxzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDU5ZmNlZTI0NjgwNDc5OTUxNTY1NWIwN2VhNTFj
MzdlZDE2NDUyZDkuLjYwYjU3OGNmMDIwYTU0NTBlZGI4ZDNlNWE3NDgxNmRkYTQwZDFlNDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0CkBAIC01OTQsNiArNTk0LDcgQEAgU0VUKFdlYkNvcmVfU09VUkNF
UwogICAgIGRvbS9TZWN1cml0eUNvbnRleHQuY3BwCiAgICAgZG9tL1NlbGVjdG9yUXVlcnkuY3Bw
CiAgICAgZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50LmNwcAorICAgIGRvbS9TaGFkb3dDb250ZW50
U2VsZWN0b3JRdWVyeS5jcHAKICAgICBkb20vU2hhZG93SW5jbHVzaW9uU2VsZWN0b3IuY3BwCiAg
ICAgZG9tL1NoYWRvd1Jvb3QuY3BwCiAgICAgZG9tL1NwYWNlU3BsaXRTdHJpbmcuY3BwCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA5ZWFhZWNhZTM4ODZkMzU4ZWFiNTAwOWVlZjUy
ZjgxYzQ2ODIyN2M1Li5mMTQ0ZjBkMmQxNTY1MjFiZTlmZDc3ZWRjZjk3M2JjYzI5ZDc2MGMxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTE2NDUsNiArMTY0NSw4IEBAIHdlYmNv
cmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9yUXVlcnkuaCBcCiAJ
U291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50LmNwcCBcCiAJU291cmNlL1dl
YkNvcmUvZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50LmggXAorCVNvdXJjZS9XZWJDb3JlL2RvbS9T
aGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2RvbS9TaGFk
b3dDb250ZW50U2VsZWN0b3JRdWVyeS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93SW5j
bHVzaW9uU2VsZWN0b3IuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93SW5jbHVzaW9u
U2VsZWN0b3IuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwIFwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQu
cHJpCmluZGV4IDRiZWMyMTRmYWRjNGY2ZGE4NDY5MTQxODcwMDExOGMxNDNkYzE2MzMuLmUzZGI4
OGQ0ZWJhMDIxZGNjZjgwZjI4ODBjOTkzZTcwODgwYTY5MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtNTYw
LDYgKzU2MCw3IEBAIFNPVVJDRVMgKz0gXAogICAgIGRvbS9TZWN1cml0eUNvbnRleHQuY3BwIFwK
ICAgICBkb20vU2VsZWN0b3JRdWVyeS5jcHAgXAogICAgIGRvbS9TaGFkb3dDb250ZW50RWxlbWVu
dC5jcHAgXAorICAgIGRvbS9TaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeS5jcHAgXAogICAgIGRv
bS9TaGFkb3dJbmNsdXNpb25TZWxlY3Rvci5jcHAgXAogICAgIGRvbS9TaGFkb3dSb290LmNwcCBc
CiAgICAgZG9tL1NwYWNlU3BsaXRTdHJpbmcuY3BwIFwKQEAgLTE2NjAsNiArMTY2MSw3IEBAIEhF
QURFUlMgKz0gXAogICAgIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmggXAogICAgIGRvbS9T
ZWxlY3RvclF1ZXJ5LmggXAogICAgIGRvbS9TaGFkb3dDb250ZW50RWxlbWVudC5oIFwKKyAgICBk
b20vU2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnkuaCBcCiAgICAgZG9tL1NoYWRvd0luY2x1c2lv
blNlbGVjdG9yLmggXAogICAgIGRvbS9TaGFkb3dSb290LmggXAogICAgIGRvbS9TcGFjZVNwbGl0
U3RyaW5nLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCA1ZGIzN2JiNDE0MjVkNWRjOTQ1YjMx
OTVmZTM4Y2U0YjUzNzNhNGI5Li5lYjhmOGQxZWEyNDhkMzUyMTk2MGQ0YWFiNDQ5ZGY3MTliNmVm
OGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtNjAwLDcgKzYwMCw3IEBAIF9fWk43V2ViQ29y
ZTIwUmVzb3VyY2VSZXNwb25zZUJhc2UyMHNldFN1Z2dlc3RlZEZpbGVuYW1lRVJLTjNXVEY2U3Ry
aW5nRQogX19aTjdXZWJDb3JlMjBSZXNvdXJjZVJlc3BvbnNlQmFzZTI0c2V0RXhwZWN0ZWRDb250
ZW50TGVuZ3RoRXgKIF9fWk43V2ViQ29yZTIwUmVzb3VyY2VSZXNwb25zZUJhc2U2c2V0VVJMRVJL
TlNfNEtVUkxFCiBfX1pON1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlQzJFdgotX19aTjdX
ZWJDb3JlMjBTaGFkb3dDb250ZW50RWxlbWVudDZjcmVhdGVFUE5TXzhEb2N1bWVudEUKK19fWk43
V2ViQ29yZTIwU2hhZG93Q29udGVudEVsZW1lbnQ2Y3JlYXRlRVBOU184RG9jdW1lbnRFUktOM1dU
RjEyQXRvbWljU3RyaW5nRQogX19aTjdXZWJDb3JlMjBVc2VyR2VzdHVyZUluZGljYXRvcjdzX3N0
YXRlRQogX19aTjdXZWJDb3JlMjBVc2VyR2VzdHVyZUluZGljYXRvckMxRU5TXzI2UHJvY2Vzc2lu
Z1VzZXJHZXN0dXJlU3RhdGVFCiBfX1pON1dlYkNvcmUyMFVzZXJHZXN0dXJlSW5kaWNhdG9yRDFF
dgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpCmluZGV4IDIzOGE1YmE2MWFkZGM1ZGU5YjIzNmQxNzYxNjcxODg5ZTlk
YWJmMDQuLjVjZjc2NTYwYzEwMmYxNDM4MDJiN2RiNTEzZTJjMmU4YmQxMDM4MWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKQEAgLTEwNDcsNiArMTA0Nyw3IEBACiAgICAgICAgICAgICAnZG9tL1NjcmlwdFJ1
bm5lci5oJywKICAgICAgICAgICAgICdkb20vU2hhZG93Um9vdC5oJywKICAgICAgICAgICAgICdk
b20vU2hhZG93Q29udGVudEVsZW1lbnQuaCcsCisgICAgICAgICAgICAnZG9tL1NoYWRvd0NvbnRl
bnRTZWxlY3RvclF1ZXJ5LmgnLAogICAgICAgICAgICAgJ2RvbS9TcGFjZVNwbGl0U3RyaW5nLmgn
LAogICAgICAgICAgICAgJ2RvbS9TdHlsZWRFbGVtZW50LmgnLAogICAgICAgICAgICAgJ2RvbS9U
ZXh0LmgnLApAQCAtNTQ1OCw2ICs1NDU5LDggQEAKICAgICAgICAgICAgICdkb20vU2VsZWN0b3JR
dWVyeS5oJywKICAgICAgICAgICAgICdkb20vU2hhZG93Q29udGVudEVsZW1lbnQuY3BwJywKICAg
ICAgICAgICAgICdkb20vU2hhZG93Q29udGVudEVsZW1lbnQuaCcsCisgICAgICAgICAgICAnZG9t
L1NoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmNwcCcsCisgICAgICAgICAgICAnZG9tL1NoYWRv
d0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmgnLAogICAgICAgICAgICAgJ2RvbS9TaGFkb3dJbmNsdXNp
b25TZWxlY3Rvci5jcHAnLAogICAgICAgICAgICAgJ2RvbS9TaGFkb3dJbmNsdXNpb25TZWxlY3Rv
ci5oJywKICAgICAgICAgICAgICdkb20vU2hhZG93Um9vdC5jcHAnLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCBhZTc4NzA5MjVhYWFhNWE1OTUy
YTdlZDJjZGRkYjM5ZWFmMDI2MWYxLi5hMmU5ZmQyOWViNDRhMjdiZjQ5NGQzZjczYjY2Zjg5OGMy
MzZmMWE4IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
agpAQCAtNTExMDYsNiArNTExMDYsMTQgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQor
CQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXFNoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmNwcCIK
KwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXFNo
YWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUK
IAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxTaGFkb3dJbmNsdXNpb25TZWxlY3Rvci5jcHAiCiAJ
CQkJPgogCQkJCTxGaWxlQ29uZmlndXJhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGU1ZTY3MDdkYTFmNjgyOTk1OWY3ZGFm
MmJlOTUxYWIwOWNiMmRjMjYuLmQ1NjE2ODdlZTVhY2M2MWI5YWRlMjczYjNiNjQyMTJjYzA1NTAw
ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTE1NjIsNiArMTU2Miw4IEBACiAJCTUzQzgyOThFMTNEOEQ5MjcwMERFMkRFQiAv
KiBSZW5kZXJGbGV4aWJsZUJveC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTNDODI5OEMxM0Q4RDkyNzAwREUyREVCIC8qIFJlbmRlckZsZXhpYmxlQm94
LmggKi87IH07CiAJCTU1MEEwQkM5MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1MEEwQkM3
MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmNwcCAqLzsgfTsKIAkJNTUwQTBCQ0Ew
ODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1MEEwQkM4MDg1RjYwMzkwMDczNTNENiAvKiBRdWFs
aWZpZWROYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJNTcwREJBODExNEI1ODA0OTAwREFFRkEwIC8qIFNoYWRvd0NvbnRlbnRTZWxlY3RvclF1
ZXJ5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3
MERCN0E4MTRCNTY5NkEwMERBRUZBMCAvKiBTaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeS5jcHAg
Ki87IH07CisJCTU3MERCQTgyMTRCNTgwNEIwMERBRUZBMCAvKiBTaGFkb3dDb250ZW50U2VsZWN0
b3JRdWVyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTcwREI3QTkxNEI1Njk2QTAwREFFRkEwIC8qIFNoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5Lmgg
Ki87IH07CiAJCTU5MDVBREJGMTMwMkYzQ0UwMEYxMTZERiAvKiBYTUxUcmVlVmlld2VyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU5MDVBREJEMTMw
MkYzQ0UwMEYxMTZERiAvKiBYTUxUcmVlVmlld2VyLmNwcCAqLzsgfTsKIAkJNTkwNUFEQzAxMzAy
RjNDRTAwRjExNkRGIC8qIFhNTFRyZWVWaWV3ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU5MDVBREJFMTMwMkYzQ0UwMEYxMTZERiAvKiBYTUxUcmVl
Vmlld2VyLmggKi87IH07CiAJCTU5MEUxQjQ5MTFFNEVGNEIwMDY5Rjc4NCAvKiBEZXZpY2VPcmll
bnRhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTkwRTFCNDgxMUU0RUY0QjAwNjlGNzg0IC8qIERldmljZU9yaWVudGF0aW9uLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTgzNzQsNiArODM3Niw4
IEBACiAJCTUzQzgyOThDMTNEOEQ5MjcwMERFMkRFQiAvKiBSZW5kZXJGbGV4aWJsZUJveC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJGbGV4aWJsZUJveC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NTBBMEJDNzA4NUY2MDM5MDA3MzUzRDYgLyogUXVh
bGlmaWVkTmFtZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBRdWFsaWZpZWROYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
dGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCTU1MEEwQkM4MDg1RjYwMzkwMDczNTNE
NiAvKiBRdWFsaWZpZWROYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFF1YWxpZmllZE5hbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
dGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CisJCTU3MERCN0E4MTRCNTY5NkEwMERBRUZB
MCAvKiBTaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3MERCN0E5MTRCNTY5NkEwMERBRUZBMCAvKiBTaGFkb3dD
b250ZW50U2VsZWN0b3JRdWVyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
aGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1OTA1QURCRDEzMDJGM0NFMDBGMTE2REYgLyogWE1MVHJlZVZpZXdlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBYTUxUcmVlVmlld2VyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTkwNUFEQkUxMzAyRjNDRTAwRjExNkRGIC8qIFhNTFRyZWVW
aWV3ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWE1MVHJlZVZpZXdlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1OTBFMUI0ODExRTRFRjRCMDA2OUY3ODQg
LyogRGV2aWNlT3JpZW50YXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RGV2aWNlT3JpZW50YXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwNTA4
LDYgKzIwNTEyLDggQEAKIAkJCQlFNDUzMjJBQTE0MENFMjY3MDA1QTBGOTIgLyogU2VsZWN0b3JR
dWVyeS5oICovLAogCQkJCUE3NjZDRjhCMTM4MTBFMEMwMDExQTBCMyAvKiBTaGFkb3dDb250ZW50
RWxlbWVudC5jcHAgKi8sCiAJCQkJQTc0QzJEM0IxMzgxMUUwRDAwRjgzNTcyIC8qIFNoYWRvd0Nv
bnRlbnRFbGVtZW50LmggKi8sCisJCQkJNTcwREI3QTgxNEI1Njk2QTAwREFFRkEwIC8qIFNoYWRv
d0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmNwcCAqLywKKwkJCQk1NzBEQjdBOTE0QjU2OTZBMDBEQUVG
QTAgLyogU2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnkuaCAqLywKIAkJCQlBNzFDMzBCNjEzODEy
NjVFMDBEQkMzNTEgLyogU2hhZG93SW5jbHVzaW9uU2VsZWN0b3IuY3BwICovLAogCQkJCUE3MUMz
MEI3MTM4MTI2NUUwMERCQzM1MSAvKiBTaGFkb3dJbmNsdXNpb25TZWxlY3Rvci5oICovLAogCQkJ
CUE2RDE2OTYxMTM0NkI0OUIwMDBFQjc3MCAvKiBTaGFkb3dSb290LmNwcCAqLywKQEAgLTIzMzYz
LDYgKzIzMzY5LDcgQEAKIAkJCQk0OTg3NzBFOTEyNDJDNTM1MDAyMjI2QkEgLyogU2hhZGVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjNERDQ1MDEyRjVFQTFCMDAwRDkxOTAgLyogU2hhZG93Qmx1
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc0QzJEM0MxMzgxMUUwRDAwRjgzNTcyIC8qIFNoYWRv
d0NvbnRlbnRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk1NzBEQkE4MjE0QjU4MDRCMDBE
QUVGQTAgLyogU2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnkuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDNUVCOEM0MEU4MjAzMUIwMEIyNTk2NSAvKiBTaGFkb3dEYXRhLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBNzFDMzBCOTEzODEyNjVFMDBEQkMzNTEgLyogU2hhZG93SW5jbHVzaW9uU2VsZWN0b3Iu
aCBpbiBIZWFkZXJzICovLAogCQkJCUE2RDE2OTY0MTM0NkI0QzEwMDBFQjc3MCAvKiBTaGFkb3dS
b290LmggaW4gSGVhZGVycyAqLywKQEAgLTI2Mzk2LDYgKzI2NDAzLDcgQEAKIAkJCQk0OTg3NzBF
ODEyNDJDNTM1MDAyMjI2QkEgLyogU2hhZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGM0RE
NDRGMTJGNUVBMUIwMDBEOTE5MCAvKiBTaGFkb3dCbHVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUE3NjZDRjhDMTM4MTBFMEMwMDExQTBCMyAvKiBTaGFkb3dDb250ZW50RWxlbWVudC5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQk1NzBEQkE4MTE0QjU4MDQ5MDBEQUVGQTAgLyogU2hhZG93Q29udGVu
dFNlbGVjdG9yUXVlcnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM1RUI4QzMwRTgyMDMxQjAw
QjI1OTY1IC8qIFNoYWRvd0RhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTcxQzMwQjgxMzgx
MjY1RTAwREJDMzUxIC8qIFNoYWRvd0luY2x1c2lvblNlbGVjdG9yLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUE2RDE2OTYyMTM0NkI0OUIwMDBFQjc3MCAvKiBTaGFkb3dSb290LmNwcCBpbiBTb3Vy
Y2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RPTUFsbEluT25lLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9ET01BbGxJbk9uZS5jcHAKaW5kZXggNTUwOTQ2NTNmNWYyMzk0
NmZkNDQzZTQ4OWYxMzczMzM4MTRmYjY2Mi4uNTViNjA1MjhhYWEyOTNjZDY2NWM0YzkyMjdiYTg4
NDc4ODVmNmEzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RPTUFsbEluT25lLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NQWxsSW5PbmUuY3BwCkBAIC0xMTMsNiArMTEz
LDcgQEAKICNpbmNsdWRlICJTZWN1cml0eUNvbnRleHQuY3BwIgogI2luY2x1ZGUgIlNlbGVjdG9y
UXVlcnkuY3BwIgogI2luY2x1ZGUgIlNoYWRvd0NvbnRlbnRFbGVtZW50LmNwcCIKKyNpbmNsdWRl
ICJTaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeS5jcHAiCiAjaW5jbHVkZSAiU2hhZG93SW5jbHVz
aW9uU2VsZWN0b3IuY3BwIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuY3BwIgogI2luY2x1ZGUgIlNw
YWNlU3BsaXRTdHJpbmcuY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NlbGVj
dG9yUXVlcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9yUXVlcnkuY3BwCmluZGV4
IDA4MjY2ZWYzMTM2YTkxYTI4Y2Y2MjIzZDRhNTVhZmQxMjg0MmZhZDIuLmE4ODlmOWYyYmNhNTBi
NGEzN2IyYzAzZDY1YWRkZTA2ZDY5MzQyNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TZWxlY3RvclF1ZXJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0b3JRdWVy
eS5jcHAKQEAgLTMzLDI3ICszMyw0NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNlbGVj
dG9yUXVlcnk6OlNlbGVjdG9yUXVlcnkoTm9kZSogcm9vdE5vZGUsIGNvbnN0IENTU1NlbGVjdG9y
TGlzdCYgc2VsZWN0b3JMaXN0KQotICAgIDogbV9yb290Tm9kZShyb290Tm9kZSkKLSAgICAsIG1f
c2VsZWN0b3JDaGVja2VyKHJvb3ROb2RlLT5kb2N1bWVudCgpLCAhcm9vdE5vZGUtPmRvY3VtZW50
KCktPmluUXVpcmtzTW9kZSgpKQorU2VsZWN0b3JEYXRhTGlzdDo6U2VsZWN0b3JEYXRhTGlzdCgp
CiB7Ci0gICAgbV9zZWxlY3RvckNoZWNrZXIuc2V0Q29sbGVjdGluZ1J1bGVzT25seSh0cnVlKTsK
K30KKworU2VsZWN0b3JEYXRhTGlzdDo6U2VsZWN0b3JEYXRhTGlzdChjb25zdCBDU1NTZWxlY3Rv
ckxpc3QmIHNlbGVjdG9yTGlzdCkKK3sKKyAgICBpbml0aWFsaXplKHNlbGVjdG9yTGlzdCk7Cit9
CisKK3ZvaWQgU2VsZWN0b3JEYXRhTGlzdDo6aW5pdGlhbGl6ZShjb25zdCBDU1NTZWxlY3Rvckxp
c3QmIHNlbGVjdG9yTGlzdCkKK3sKKyAgICBBU1NFUlQobV9zZWxlY3RvcnMuaXNFbXB0eSgpKTsK
IAogICAgIGZvciAoQ1NTU2VsZWN0b3IqIHNlbGVjdG9yID0gc2VsZWN0b3JMaXN0LmZpcnN0KCk7
IHNlbGVjdG9yOyBzZWxlY3RvciA9IENTU1NlbGVjdG9yTGlzdDo6bmV4dChzZWxlY3RvcikpCiAg
ICAgICAgIG1fc2VsZWN0b3JzLmFwcGVuZChTZWxlY3RvckRhdGEoc2VsZWN0b3IsIFNlbGVjdG9y
Q2hlY2tlcjo6aXNGYXN0Q2hlY2thYmxlU2VsZWN0b3Ioc2VsZWN0b3IpKSk7CiB9Ci0gICAgCi1Q
YXNzUmVmUHRyPE5vZGVMaXN0PiBTZWxlY3RvclF1ZXJ5OjpxdWVyeUFsbCgpIGNvbnN0CisKK2Jv
b2wgU2VsZWN0b3JEYXRhTGlzdDo6bWF0Y2hlcyhjb25zdCBTZWxlY3RvckNoZWNrZXImIHNlbGVj
dG9yQ2hlY2tlciwgRWxlbWVudCogdGFyZ2V0RWxlbWVudCkgY29uc3QKK3sKKyAgICBBU1NFUlQo
dGFyZ2V0RWxlbWVudCk7CisKKyAgICB1bnNpZ25lZCBzZWxlY3RvckNvdW50ID0gbV9zZWxlY3Rv
cnMuc2l6ZSgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzZWxlY3RvckNvdW50OyAr
K2kpIHsKKyAgICAgICAgaWYgKHNlbGVjdG9yQ2hlY2tlci5jaGVja1NlbGVjdG9yKG1fc2VsZWN0
b3JzW2ldLnNlbGVjdG9yLCB0YXJnZXRFbGVtZW50LCBtX3NlbGVjdG9yc1tpXS5pc0Zhc3RDaGVj
a2FibGUpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcmV0dXJuIGZh
bHNlOworfQorCitQYXNzUmVmUHRyPE5vZGVMaXN0PiBTZWxlY3RvckRhdGFMaXN0OjpxdWVyeUFs
bChjb25zdCBTZWxlY3RvckNoZWNrZXImIHNlbGVjdG9yQ2hlY2tlciwgTm9kZSogcm9vdE5vZGUp
IGNvbnN0CiB7CiAgICAgVmVjdG9yPFJlZlB0cjxOb2RlPiA+IHJlc3VsdDsKLSAgICBleGVjdXRl
PGZhbHNlPihyZXN1bHQpOworICAgIGV4ZWN1dGU8ZmFsc2U+KHNlbGVjdG9yQ2hlY2tlciwgcm9v
dE5vZGUsIHJlc3VsdCk7CiAgICAgcmV0dXJuIFN0YXRpY05vZGVMaXN0OjphZG9wdChyZXN1bHQp
OwogfQogCi1QYXNzUmVmUHRyPEVsZW1lbnQ+IFNlbGVjdG9yUXVlcnk6OnF1ZXJ5Rmlyc3QoKSBj
b25zdCAKLXsgCitQYXNzUmVmUHRyPEVsZW1lbnQ+IFNlbGVjdG9yRGF0YUxpc3Q6OnF1ZXJ5Rmly
c3QoY29uc3QgU2VsZWN0b3JDaGVja2VyJiBzZWxlY3RvckNoZWNrZXIsIE5vZGUqIHJvb3ROb2Rl
KSBjb25zdAorewogICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiByZXN1bHQ7Ci0gICAgZXhlY3V0
ZTx0cnVlPihyZXN1bHQpOworICAgIGV4ZWN1dGU8dHJ1ZT4oc2VsZWN0b3JDaGVja2VyLCByb290
Tm9kZSwgcmVzdWx0KTsKICAgICBpZiAocmVzdWx0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
IDA7CiAgICAgQVNTRVJUKHJlc3VsdC5zaXplKCkgPT0gMSk7CkBAIC02MSw3ICs4MSw3IEBAIFBh
c3NSZWZQdHI8RWxlbWVudD4gU2VsZWN0b3JRdWVyeTo6cXVlcnlGaXJzdCgpIGNvbnN0CiAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PEVsZW1lbnQqPihyZXN1bHQuZmlyc3QoKS5nZXQoKSk7CiB9CiAK
LWJvb2wgU2VsZWN0b3JRdWVyeTo6Y2FuVXNlSWRMb29rdXAoKSBjb25zdAorYm9vbCBTZWxlY3Rv
ckRhdGFMaXN0OjpjYW5Vc2VJZExvb2t1cChOb2RlKiByb290Tm9kZSkgY29uc3QKIHsKICAgICAv
LyBXZSBuZWVkIHRvIHJldHVybiB0aGUgbWF0Y2hlcyBpbiBkb2N1bWVudCBvcmRlci4gVG8gdXNl
IGlkIGxvb2t1cCB3aGlsZSB0aGVyZSBpcyBwb3NzaWJsaXR5IG9mIG11bHRpcGxlIG1hdGNoZXMK
ICAgICAvLyB3ZSB3b3VsZCBuZWVkIHRvIHNvcnQgdGhlIHJlc3VsdHMuIEZvciBub3csIGp1c3Qg
dHJhdmVyc2UgdGhlIGRvY3VtZW50IGluIHRoYXQgY2FzZS4KQEAgLTY5LDM3ICs4OSwzNyBAQCBi
b29sIFNlbGVjdG9yUXVlcnk6OmNhblVzZUlkTG9va3VwKCkgY29uc3QKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIGlmIChtX3NlbGVjdG9yc1swXS5zZWxlY3Rvci0+bV9tYXRjaCAhPSBDU1NT
ZWxlY3Rvcjo6SWQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIW1fcm9vdE5vZGUt
PmluRG9jdW1lbnQoKSkKKyAgICBpZiAoIXJvb3ROb2RlLT5pbkRvY3VtZW50KCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICBpZiAobV9yb290Tm9kZS0+ZG9jdW1lbnQoKS0+aW5RdWlya3NN
b2RlKCkpCisgICAgaWYgKHJvb3ROb2RlLT5kb2N1bWVudCgpLT5pblF1aXJrc01vZGUoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChtX3Jvb3ROb2RlLT5kb2N1bWVudCgpLT5jb250
YWluc011bHRpcGxlRWxlbWVudHNXaXRoSWQobV9zZWxlY3RvcnNbMF0uc2VsZWN0b3ItPnZhbHVl
KCkpKQorICAgIGlmIChyb290Tm9kZS0+ZG9jdW1lbnQoKS0+Y29udGFpbnNNdWx0aXBsZUVsZW1l
bnRzV2l0aElkKG1fc2VsZWN0b3JzWzBdLnNlbGVjdG9yLT52YWx1ZSgpKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIHJldHVybiB0cnVlOwogfQogCiB0ZW1wbGF0ZSA8Ym9vbCBmaXJzdE1h
dGNoT25seT4KLXZvaWQgU2VsZWN0b3JRdWVyeTo6ZXhlY3V0ZShWZWN0b3I8UmVmUHRyPE5vZGU+
ID4mIG1hdGNoZWRFbGVtZW50cykgY29uc3QKK3ZvaWQgU2VsZWN0b3JEYXRhTGlzdDo6ZXhlY3V0
ZShjb25zdCBTZWxlY3RvckNoZWNrZXImIHNlbGVjdG9yQ2hlY2tlciwgTm9kZSogcm9vdE5vZGUs
IFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiYgbWF0Y2hlZEVsZW1lbnRzKSBjb25zdAogewotICAgIGlm
IChjYW5Vc2VJZExvb2t1cCgpKSB7CisgICAgaWYgKGNhblVzZUlkTG9va3VwKHJvb3ROb2RlKSkg
ewogICAgICAgICBBU1NFUlQobV9zZWxlY3RvcnMuc2l6ZSgpID09IDEpOwogICAgICAgICBDU1NT
ZWxlY3Rvciogc2VsZWN0b3IgPSBtX3NlbGVjdG9yc1swXS5zZWxlY3RvcjsKLSAgICAgICAgRWxl
bWVudCogZWxlbWVudCA9IG1fcm9vdE5vZGUtPmRvY3VtZW50KCktPmdldEVsZW1lbnRCeUlkKHNl
bGVjdG9yLT52YWx1ZSgpKTsKLSAgICAgICAgaWYgKCFlbGVtZW50IHx8ICEobV9yb290Tm9kZS0+
aXNEb2N1bWVudE5vZGUoKSB8fCBlbGVtZW50LT5pc0Rlc2NlbmRhbnRPZihtX3Jvb3ROb2RlKSkp
CisgICAgICAgIEVsZW1lbnQqIGVsZW1lbnQgPSByb290Tm9kZS0+ZG9jdW1lbnQoKS0+Z2V0RWxl
bWVudEJ5SWQoc2VsZWN0b3ItPnZhbHVlKCkpOworICAgICAgICBpZiAoIWVsZW1lbnQgfHwgIShy
b290Tm9kZS0+aXNEb2N1bWVudE5vZGUoKSB8fCBlbGVtZW50LT5pc0Rlc2NlbmRhbnRPZihyb290
Tm9kZSkpKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBpZiAobV9zZWxlY3RvckNoZWNr
ZXIuY2hlY2tTZWxlY3RvcihzZWxlY3RvciwgZWxlbWVudCwgbV9zZWxlY3RvcnNbMF0uaXNGYXN0
Q2hlY2thYmxlKSkKKyAgICAgICAgaWYgKHNlbGVjdG9yQ2hlY2tlci5jaGVja1NlbGVjdG9yKG1f
c2VsZWN0b3JzWzBdLnNlbGVjdG9yLCBlbGVtZW50LCBtX3NlbGVjdG9yc1swXS5pc0Zhc3RDaGVj
a2FibGUpKQogICAgICAgICAgICAgbWF0Y2hlZEVsZW1lbnRzLmFwcGVuZChlbGVtZW50KTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKKwogICAgIHVuc2lnbmVkIHNlbGVjdG9yQ291bnQg
PSBtX3NlbGVjdG9ycy5zaXplKCk7Ci0gICAgCi0gICAgTm9kZSogbiA9IG1fcm9vdE5vZGUtPmZp
cnN0Q2hpbGQoKTsKKworICAgIE5vZGUqIG4gPSByb290Tm9kZS0+Zmlyc3RDaGlsZCgpOwogICAg
IHdoaWxlIChuKSB7CiAgICAgICAgIGlmIChuLT5pc0VsZW1lbnROb2RlKCkpIHsKICAgICAgICAg
ICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obik7CiAgICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2VsZWN0b3JDb3VudDsgKytpKSB7Ci0gICAg
ICAgICAgICAgICAgaWYgKG1fc2VsZWN0b3JDaGVja2VyLmNoZWNrU2VsZWN0b3IobV9zZWxlY3Rv
cnNbaV0uc2VsZWN0b3IsIGVsZW1lbnQsIG1fc2VsZWN0b3JzW2ldLmlzRmFzdENoZWNrYWJsZSkp
IHsKKyAgICAgICAgICAgICAgICBpZiAoc2VsZWN0b3JDaGVja2VyLmNoZWNrU2VsZWN0b3IobV9z
ZWxlY3RvcnNbaV0uc2VsZWN0b3IsIGVsZW1lbnQsIG1fc2VsZWN0b3JzW2ldLmlzRmFzdENoZWNr
YWJsZSkpIHsKICAgICAgICAgICAgICAgICAgICAgbWF0Y2hlZEVsZW1lbnRzLmFwcGVuZChlbGVt
ZW50KTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGZpcnN0TWF0Y2hPbmx5KQogICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTEzLDExICsxMzMsMjkgQEAgdm9pZCBTZWxlY3Rv
clF1ZXJ5OjpleGVjdXRlKFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiYgbWF0Y2hlZEVsZW1lbnRzKSBj
b25zdAogICAgICAgICB9CiAgICAgICAgIHdoaWxlICghbi0+bmV4dFNpYmxpbmcoKSkgewogICAg
ICAgICAgICAgbiA9IG4tPnBhcmVudE5vZGUoKTsKLSAgICAgICAgICAgIGlmIChuID09IG1fcm9v
dE5vZGUpCisgICAgICAgICAgICBpZiAobiA9PSByb290Tm9kZSkKICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgbiA9IG4tPm5leHRTaWJsaW5nKCk7CiAgICAgfQog
fQogCitTZWxlY3RvclF1ZXJ5OjpTZWxlY3RvclF1ZXJ5KE5vZGUqIHJvb3ROb2RlLCBjb25zdCBD
U1NTZWxlY3Rvckxpc3QmIHNlbGVjdG9yTGlzdCkKKyAgICA6IG1fcm9vdE5vZGUocm9vdE5vZGUp
CisgICAgLCBtX3NlbGVjdG9yQ2hlY2tlcihyb290Tm9kZS0+ZG9jdW1lbnQoKSwgIXJvb3ROb2Rl
LT5kb2N1bWVudCgpLT5pblF1aXJrc01vZGUoKSkKKyAgICAsIG1fc2VsZWN0b3JzKHNlbGVjdG9y
TGlzdCkKK3sKKyAgICBtX3NlbGVjdG9yQ2hlY2tlci5zZXRDb2xsZWN0aW5nUnVsZXNPbmx5KHRy
dWUpOworfQorCitQYXNzUmVmUHRyPE5vZGVMaXN0PiBTZWxlY3RvclF1ZXJ5OjpxdWVyeUFsbCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2VsZWN0b3JzLnF1ZXJ5QWxsKG1fc2VsZWN0b3JDaGVj
a2VyLCBtX3Jvb3ROb2RlKTsKK30KKworUGFzc1JlZlB0cjxFbGVtZW50PiBTZWxlY3RvclF1ZXJ5
OjpxdWVyeUZpcnN0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zZWxlY3RvcnMucXVlcnlGaXJz
dChtX3NlbGVjdG9yQ2hlY2tlciwgbV9yb290Tm9kZSk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2Vs
ZWN0b3JRdWVyeS5oCmluZGV4IGI5Njk4MjM3ODQzYmJjNWVlZjlhYjU3MTRjMmQ2NGVmMWI4ODE5
NzIuLjBmMTA2NzhhZGQ4MjFjODMwY2M2NWU3NzIzYzRhMWY5MzFhNjQ3NzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1NlbGVjdG9yUXVlcnkuaApAQCAtMzcsMjggKzM3LDQ0IEBAIGNsYXNzIEVsZW1lbnQ7CiBj
bGFzcyBDU1NTZWxlY3RvcjsKIGNsYXNzIENTU1NlbGVjdG9yTGlzdDsKIAotY2xhc3MgU2VsZWN0
b3JRdWVyeSB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2VsZWN0b3JRdWVyeSk7CitjbGFz
cyBTZWxlY3RvckRhdGFMaXN0IHsKIHB1YmxpYzoKLSAgICBTZWxlY3RvclF1ZXJ5KE5vZGUqIHJv
b3ROb2RlLCBjb25zdCBDU1NTZWxlY3Rvckxpc3QmKTsKLSAgICAKLSAgICBQYXNzUmVmUHRyPE5v
ZGVMaXN0PiBxdWVyeUFsbCgpIGNvbnN0OwotICAgIFBhc3NSZWZQdHI8RWxlbWVudD4gcXVlcnlG
aXJzdCgpIGNvbnN0OworICAgIFNlbGVjdG9yRGF0YUxpc3QoKTsKKyAgICBleHBsaWNpdCBTZWxl
Y3RvckRhdGFMaXN0KGNvbnN0IENTU1NlbGVjdG9yTGlzdCYpOwogCi1wcml2YXRlOgotICAgIGJv
b2wgY2FuVXNlSWRMb29rdXAoKSBjb25zdDsKKyAgICB2b2lkIGluaXRpYWxpemUoY29uc3QgQ1NT
U2VsZWN0b3JMaXN0Jik7CiAKLSAgICB0ZW1wbGF0ZSA8Ym9vbCBmaXJzdE1hdGNoT25seT4KLSAg
ICB2b2lkIGV4ZWN1dGUoVmVjdG9yPFJlZlB0cjxOb2RlPiA+JikgY29uc3Q7Ci0gICAgCisgICAg
aW50IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NlbGVjdG9ycy5zaXplKCk7IH0KKworICAgIGJv
b2wgbWF0Y2hlcyhjb25zdCBTZWxlY3RvckNoZWNrZXImLCBFbGVtZW50KikgY29uc3Q7CisgICAg
UGFzc1JlZlB0cjxOb2RlTGlzdD4gcXVlcnlBbGwoY29uc3QgU2VsZWN0b3JDaGVja2VyJiwgTm9k
ZSogcm9vdE5vZGUpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8RWxlbWVudD4gcXVlcnlGaXJzdChj
b25zdCBTZWxlY3RvckNoZWNrZXImLCBOb2RlKiByb290Tm9kZSkgY29uc3Q7CisKK3ByaXZhdGU6
CiAgICAgc3RydWN0IFNlbGVjdG9yRGF0YSB7CiAgICAgICAgIFNlbGVjdG9yRGF0YShDU1NTZWxl
Y3Rvciogc2VsZWN0b3IsIGJvb2wgaXNGYXN0Q2hlY2thYmxlKSA6IHNlbGVjdG9yKHNlbGVjdG9y
KSwgaXNGYXN0Q2hlY2thYmxlKGlzRmFzdENoZWNrYWJsZSkgeyB9CiAgICAgICAgIENTU1NlbGVj
dG9yKiBzZWxlY3RvcjsKICAgICAgICAgYm9vbCBpc0Zhc3RDaGVja2FibGU7CiAgICAgfTsKLSAg
ICBOb2RlKiBtX3Jvb3ROb2RlOworCisgICAgYm9vbCBjYW5Vc2VJZExvb2t1cChOb2RlKiByb290
Tm9kZSkgY29uc3Q7CisgICAgdGVtcGxhdGUgPGJvb2wgZmlyc3RNYXRjaE9ubHk+CisgICAgdm9p
ZCBleGVjdXRlKGNvbnN0IFNlbGVjdG9yQ2hlY2tlciYsIE5vZGUqIHJvb3ROb2RlLCBWZWN0b3I8
UmVmUHRyPE5vZGU+ID4mKSBjb25zdDsKKwogICAgIFZlY3RvcjxTZWxlY3RvckRhdGE+IG1fc2Vs
ZWN0b3JzOworfTsKKworY2xhc3MgU2VsZWN0b3JRdWVyeSB7CisgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoU2VsZWN0b3JRdWVyeSk7CitwdWJsaWM6CisgICAgU2VsZWN0b3JRdWVyeShOb2RlKiBy
b290Tm9kZSwgY29uc3QgQ1NTU2VsZWN0b3JMaXN0Jik7CisKKyAgICBQYXNzUmVmUHRyPE5vZGVM
aXN0PiBxdWVyeUFsbCgpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8RWxlbWVudD4gcXVlcnlGaXJz
dCgpIGNvbnN0OworcHJpdmF0ZToKKyAgICBOb2RlKiBtX3Jvb3ROb2RlOwogICAgIFNlbGVjdG9y
Q2hlY2tlciBtX3NlbGVjdG9yQ2hlY2tlcjsKKyAgICBTZWxlY3RvckRhdGFMaXN0IG1fc2VsZWN0
b3JzOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0NvbnRl
bnRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dDb250ZW50RWxlbWVudC5j
cHAKaW5kZXggZWNlZTZkMGM3ZWU3NmZkZDcyNWUyZmRjZjg3MmRkMmJiOTNjOTdiYi4uNzNhZDEw
OWUwMWE1YjIyZTdiNDg1YzgxN2RlODAzZmVjZjEzYTc5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vU2hhZG93Q29udGVudEVsZW1lbnQuY3BwCkBAIC0yOCwyMSArMjgsMzEgQEAKICNpbmNsdWRl
ICJTaGFkb3dDb250ZW50RWxlbWVudC5oIgogCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5j
bHVkZSAiUXVhbGlmaWVkTmFtZS5oIgorI2luY2x1ZGUgIlNoYWRvd0NvbnRlbnRTZWxlY3RvclF1
ZXJ5LmgiCiAjaW5jbHVkZSAiU2hhZG93SW5jbHVzaW9uU2VsZWN0b3IuaCIKICNpbmNsdWRlICJT
aGFkb3dSb290LmgiCisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8U2hhZG93Q29udGVudEVsZW1lbnQ+IFNoYWRvd0NvbnRl
bnRFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQorc3RhdGljIGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHNlbGVjdEF0dHIoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoUXVhbGlm
aWVkTmFtZSwgYXR0ciwgKG51bGxBdG9tLCAic2VsZWN0IiwgSFRNTE5hbWVzOjp4aHRtbE5hbWVz
cGFjZVVSSSkpOworICAgIHJldHVybiBhdHRyOworfQorCitQYXNzUmVmUHRyPFNoYWRvd0NvbnRl
bnRFbGVtZW50PiBTaGFkb3dDb250ZW50RWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVu
dCwgY29uc3QgQXRvbWljU3RyaW5nJiBzZWxlY3QpCiB7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChRdWFsaWZpZWROYW1lLCB0YWdOYW1lLCAobnVsbEF0b20sICJ3ZWJraXRTaGFkb3dDb250ZW50
IiwgSFRNTE5hbWVzOjpkaXZUYWcubmFtZXNwYWNlVVJJKCkpKTsKLSAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFNoYWRvd0NvbnRlbnRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CisgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBTaGFkb3dDb250ZW50RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCwg
c2VsZWN0KSk7CiB9CiAKLVNoYWRvd0NvbnRlbnRFbGVtZW50OjpTaGFkb3dDb250ZW50RWxlbWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCitTaGFkb3dD
b250ZW50RWxlbWVudDo6U2hhZG93Q29udGVudEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYg
bmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIHNlbGVjdCkKICAg
ICA6IFN0eWxlZEVsZW1lbnQobmFtZSwgZG9jdW1lbnQsIENyZWF0ZUhUTUxFbGVtZW50KQogICAg
ICwgbV9pbmNsdXNpb25zKGFkb3B0UHRyKG5ldyBTaGFkb3dJbmNsdXNpb25MaXN0KCkpKQogewor
ICAgIHNldEF0dHJpYnV0ZShzZWxlY3RBdHRyKCksIHNlbGVjdCk7CiB9CiAKIFNoYWRvd0NvbnRl
bnRFbGVtZW50Ojp+U2hhZG93Q29udGVudEVsZW1lbnQoKQpAQCAtNzYsMTAgKzg2LDkgQEAgdm9p
ZCBTaGFkb3dDb250ZW50RWxlbWVudDo6ZGV0YWNoKCkKICAgICBTdHlsZWRFbGVtZW50OjpkZXRh
Y2goKTsKIH0KIAotYm9vbCBTaGFkb3dDb250ZW50RWxlbWVudDo6c2hvdWxkSW5jbHVkZShOb2Rl
KikKK2NvbnN0IEF0b21pY1N0cmluZyYgU2hhZG93Q29udGVudEVsZW1lbnQ6OnNlbGVjdCgpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGdldEF0dHJpYnV0ZShzZWxlY3RB
dHRyKCkpOwogfQogCi0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dD
b250ZW50RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50
LmgKaW5kZXggN2IzNjY2MjFiN2I5NjNhNDMwZmMxNDMwOWJkNDY1ZWFlZGZhMDRhNC4uMDlmODM4
NzMwYmMxY2Y4NGE0NjJiNGU3YjAxZTY1ZGRmNGRkZWRkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1NoYWRvd0NvbnRlbnRFbGVtZW50LmgKQEAgLTM2LDIzICszNiwyOCBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKK2NsYXNzIFNoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5OwogY2xhc3MgU2hh
ZG93SW5jbHVzaW9uTGlzdDsKIAogLy8gTk9URTogQ3VycmVudCBpbXBsZW1lbnRhdGlvbiBkb2Vz
bid0IHN1cHBvcnQgZHluYW1pYyBpbnNlcnRpb24vZGVsZXRpb24gb2YgU2hhZG93Q29udGVudEVs
ZW1lbnQuCiAvLyBZb3Ugc2hvdWxkIGNyZWF0ZSBTaGFkb3dDb250ZW50RWxlbWVudCBkdXJpbmcg
dGhlIGhvc3QgY29uc3RydWN0aW9uLgogY2xhc3MgU2hhZG93Q29udGVudEVsZW1lbnQgOiBwdWJs
aWMgU3R5bGVkRWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U2hhZG93
Q29udGVudEVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCopOworICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFNoYWRvd0NvbnRlbnRFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQqLCBjb25zdCBBdG9taWNTdHJp
bmcmIHNlbGVjdCk7CiAKICAgICB2aXJ0dWFsIH5TaGFkb3dDb250ZW50RWxlbWVudCgpOwotICAg
IHZpcnR1YWwgYm9vbCBzaG91bGRJbmNsdWRlKE5vZGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgYXR0
YWNoKCk7CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaCgpOwogCisgICAgY29uc3QgQXRvbWljU3Ry
aW5nJiBzZWxlY3QoKSBjb25zdDsKKwogICAgIGNvbnN0IFNoYWRvd0luY2x1c2lvbkxpc3QqIGlu
Y2x1c2lvbnMoKSBjb25zdCB7IHJldHVybiBtX2luY2x1c2lvbnMuZ2V0KCk7IH0KIAogcHJvdGVj
dGVkOgotICAgIFNoYWRvd0NvbnRlbnRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1
bWVudCopOworICAgIC8vIEZJWE1FOiBDdXJyZW50bHkgdGhpcyBjb25zdHJ1Y3RvciBhY2NlcHRz
IHdpZGVyIHF1ZXJ5IHRoYW4gc2hhZG93IGRvbSBzcGVjLgorICAgIC8vIEZvciBleGFtcGxlLCBh
IHNlbGVjdG9yIHF1ZXJ5IHNob3VsZCBub3QgaW5jbHVkZSBjb250ZXh0dWFsIHNlbGVjdG9ycy4K
KyAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc1OTQ2
CisgICAgU2hhZG93Q29udGVudEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50
KiwgY29uc3QgQXRvbWljU3RyaW5nJiBzZWxlY3QpOwogCiBwcml2YXRlOgogICAgIHZpcnR1YWwg
Ym9vbCBpc0NvbnRlbnRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNDNjYzViNDYzOWNiZWM1Y2YyNjE0MjgzYmY1Mjk2ODE0ZThhZTMwMAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeS5jcHAK
QEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
ICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTaGFkb3dD
b250ZW50U2VsZWN0b3JRdWVyeS5oIgorCisjaW5jbHVkZSAiQ1NTUGFyc2VyLmgiCisjaW5jbHVk
ZSAiQ1NTU2VsZWN0b3JMaXN0LmgiCisjaW5jbHVkZSAiU2hhZG93Q29udGVudEVsZW1lbnQuaCIK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitTaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeTo6U2hh
ZG93Q29udGVudFNlbGVjdG9yUXVlcnkoU2hhZG93Q29udGVudEVsZW1lbnQqIGVsZW1lbnQpCisg
ICAgOiBtX2NvbnRlbnRFbGVtZW50KGVsZW1lbnQpCisgICAgLCBtX3NlbGVjdG9yQ2hlY2tlcihl
bGVtZW50LT5kb2N1bWVudCgpLCAhZWxlbWVudC0+ZG9jdW1lbnQoKS0+aW5RdWlya3NNb2RlKCkp
Cit7CisgICAgbV9zZWxlY3RvckNoZWNrZXIuc2V0Q29sbGVjdGluZ1J1bGVzT25seSh0cnVlKTsK
KworICAgIGlmIChlbGVtZW50LT5zZWxlY3QoKS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsK
KworICAgIENTU1BhcnNlciBwYXJzZXIodHJ1ZSk7CisgICAgcGFyc2VyLnBhcnNlU2VsZWN0b3Io
ZWxlbWVudC0+c2VsZWN0KCksIGVsZW1lbnQtPmRvY3VtZW50KCksIG1fc2VsZWN0b3JMaXN0KTsK
KworICAgIG1fc2VsZWN0b3JzLmluaXRpYWxpemUobV9zZWxlY3Rvckxpc3QpOworfQorCitib29s
IFNoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5OjptYXRjaGVzKE5vZGUqIG5vZGUpIGNvbnN0Cit7
CisgICAgQVNTRVJUKG5vZGUpOworICAgIGlmICghbm9kZSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgQVNTRVJUKG5vZGUtPnBhcmVudE5vZGUoKSA9PSBtX2NvbnRlbnRFbGVtZW50LT5z
aGFkb3dUcmVlUm9vdE5vZGUoKS0+c2hhZG93SG9zdCgpKTsKKworICAgIGlmIChtX2NvbnRlbnRF
bGVtZW50LT5zZWxlY3QoKS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAg
aWYgKCFub2RlLT5pc0VsZW1lbnROb2RlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IHJldHVybiBtX3NlbGVjdG9ycy5tYXRjaGVzKG1fc2VsZWN0b3JDaGVja2VyLCB0b0VsZW1lbnQo
bm9kZSkpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Q29u
dGVudFNlbGVjdG9yUXVlcnkuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dDb250ZW50U2Vs
ZWN0b3JRdWVyeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ1Njg3M2IzNDMwYzNhMmMyNDdhMTgwYWU0ZGEzZGIx
MDRmMDczMGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Q29u
dGVudFNlbGVjdG9yUXVlcnkuaApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTaGFkb3dDb250ZW50
U2VsZWN0b3JRdWVyeV9oCisjZGVmaW5lIFNoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5X2gKKwor
I2luY2x1ZGUgIkNTU1NlbGVjdG9yTGlzdC5oIgorI2luY2x1ZGUgIlNlbGVjdG9yQ2hlY2tlci5o
IgorI2luY2x1ZGUgIlNlbGVjdG9yUXVlcnkuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgor
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBE
b2N1bWVudDsKK2NsYXNzIE5vZGU7CitjbGFzcyBTaGFkb3dDb250ZW50RWxlbWVudDsKKworY2xh
c3MgU2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnkgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFNoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5KTsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBTaGFk
b3dDb250ZW50U2VsZWN0b3JRdWVyeShTaGFkb3dDb250ZW50RWxlbWVudCopOworCisgICAgYm9v
bCBtYXRjaGVzKE5vZGUqKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBTaGFkb3dDb250ZW50RWxl
bWVudCogbV9jb250ZW50RWxlbWVudDsKKyAgICBTZWxlY3RvckRhdGFMaXN0IG1fc2VsZWN0b3Jz
OworICAgIENTU1NlbGVjdG9yTGlzdCBtX3NlbGVjdG9yTGlzdDsKKyAgICBTZWxlY3RvckNoZWNr
ZXIgbV9zZWxlY3RvckNoZWNrZXI7Cit9OworCit9CisKKworCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dJbmNsdXNpb25TZWxlY3Rvci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2hhZG93SW5jbHVzaW9uU2VsZWN0b3IuY3BwCmluZGV4IDk4NDFmNTU2NDg4
N2M4OTYzNDUzNzQ5ZjIzNzE2NmNhMmU0NWUxMDUuLjU3ZTlkNDJiZTUxYjVlNDUyYzRkNDA1NGUy
MGJhNGM3Yjg1NTQ4YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dJbmNs
dXNpb25TZWxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0luY2x1c2lv
blNlbGVjdG9yLmNwcApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIlNoYWRvd0luY2x1c2lv
blNlbGVjdG9yLmgiCiAKICNpbmNsdWRlICJTaGFkb3dDb250ZW50RWxlbWVudC5oIgorI2luY2x1
ZGUgIlNoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5o
IgogCiAKQEAgLTExMSwxMSArMTEyLDEyIEBAIHZvaWQgU2hhZG93SW5jbHVzaW9uU2VsZWN0b3I6
OnNlbGVjdChTaGFkb3dDb250ZW50RWxlbWVudCogY29udGVudEVsZW1lbnQsIFNoYWRvCiB7CiAg
ICAgQVNTRVJUKGluY2x1c2lvbnMtPmlzRW1wdHkoKSk7CiAKKyAgICBTaGFkb3dDb250ZW50U2Vs
ZWN0b3JRdWVyeSBxdWVyeShjb250ZW50RWxlbWVudCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBtX2NhbmRpZGF0ZXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgTm9kZSogY2hpbGQgPSBt
X2NhbmRpZGF0ZXNbaV0uZ2V0KCk7CiAgICAgICAgIGlmICghY2hpbGQpCiAgICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgaWYgKCFjb250ZW50RWxlbWVudC0+c2hvdWxkSW5jbHVkZShjaGls
ZCkpCisgICAgICAgIGlmICghcXVlcnkubWF0Y2hlcyhjaGlsZCkpCiAgICAgICAgICAgICBjb250
aW51ZTsKIAogICAgICAgICBSZWZQdHI8U2hhZG93SW5jbHVzaW9uPiBpbmNsdXNpb24gPSBTaGFk
b3dJbmNsdXNpb246OmNyZWF0ZShjb250ZW50RWxlbWVudCwgY2hpbGQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0luY2x1c2lvblNlbGVjdG9yLmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2hhZG93SW5jbHVzaW9uU2VsZWN0b3IuaAppbmRleCBmMWFkYWVlM2Y1NDNhODFj
M2ZlZmJmYzQ2ZTAxYjFmZDdmM2IwZThmLi5kMWE4NzE3NDQxYjE5YzJkNmFmYTBlOGYzNDA3NTg0
MTAyMThiNGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93SW5jbHVzaW9u
U2VsZWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93SW5jbHVzaW9uU2VsZWN0
b3IuaApAQCAtMTM3LDcgKzEzNyw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFNlbGVjdCgpOwog
ICAgIGJvb2wgaGFzQ2FuZGlkYXRlcygpIGNvbnN0IHsgcmV0dXJuICFtX2NhbmRpZGF0ZXMuaXNF
bXB0eSgpOyB9CiAKLQogcHJpdmF0ZToKICAgICB2b2lkIHJlbW92ZUZyb21TZXQoU2hhZG93SW5j
bHVzaW9uTGlzdCopOwogICAgIHZvaWQgYWRkVG9TZXQoU2hhZG93SW5jbHVzaW9uTGlzdCopOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuY3BwCmluZGV4IGZhZDlhZjgw
NDQxNDU3MGMxZTc2Y2EyOGM1ZWI1YjE2MjdjNzAyMjAuLmZjODk1MDk3YjFhZTk2YTM4YWI5YjY1
MTc5YzM1MTFjOGEwZDIyNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERl
dGFpbHNFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxl
bWVudC5jcHAKQEAgLTM2LDE3ICszNiwyMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5n
IG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKK3N0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHN1bW1h
cnlRdWVyeVNlbGVjdG9yKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmlu
Zywgc2VsZWN0b3IsICgic3VtbWFyeTpmaXJzdC1vZi10eXBlIikpOworICAgIHJldHVybiBzZWxl
Y3RvcjsKK307CisKIGNsYXNzIERldGFpbHNDb250ZW50RWxlbWVudCA6IHB1YmxpYyBTaGFkb3dD
b250ZW50RWxlbWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8RGV0YWlsc0Nv
bnRlbnRFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQqKTsKIAogcHJpdmF0ZToKICAgICBEZXRhaWxz
Q29udGVudEVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQotICAgICAgICA6IFNoYWRvd0NvbnRl
bnRFbGVtZW50KEhUTUxOYW1lczo6ZGl2VGFnLCBkb2N1bWVudCkKKyAgICAgICAgOiBTaGFkb3dD
b250ZW50RWxlbWVudChIVE1MTmFtZXM6OmRpdlRhZywgZG9jdW1lbnQsIFdURjo6ZW1wdHlBdG9t
KQogICAgIHsKICAgICB9Ci0KLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSW5jbHVkZShOb2RlKik7
CiB9OwogCiBQYXNzUmVmUHRyPERldGFpbHNDb250ZW50RWxlbWVudD4gRGV0YWlsc0NvbnRlbnRF
bGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtNTQsMjQgKzU4LDE1IEBAIFBh
c3NSZWZQdHI8RGV0YWlsc0NvbnRlbnRFbGVtZW50PiBEZXRhaWxzQ29udGVudEVsZW1lbnQ6OmNy
ZWF0ZShEb2N1bWVudCogZG9jdW1lCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBEZXRhaWxzQ29u
dGVudEVsZW1lbnQoZG9jdW1lbnQpKTsKIH0KIAotYm9vbCBEZXRhaWxzQ29udGVudEVsZW1lbnQ6
OnNob3VsZEluY2x1ZGUoTm9kZSogbm9kZSkKLXsKLSAgICBIVE1MRGV0YWlsc0VsZW1lbnQqIGRl
dGFpbHMgPSBzdGF0aWNfY2FzdDxIVE1MRGV0YWlsc0VsZW1lbnQqPihzaGFkb3dBbmNlc3Rvck5v
ZGUoKSk7Ci0gICAgcmV0dXJuIGRldGFpbHMtPm1haW5TdW1tYXJ5KCkgIT0gbm9kZTsKLX0KLQot
CiBjbGFzcyBEZXRhaWxzU3VtbWFyeUVsZW1lbnQgOiBwdWJsaWMgU2hhZG93Q29udGVudEVsZW1l
bnQgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPERldGFpbHNTdW1tYXJ5RWxlbWVu
dD4gY3JlYXRlKERvY3VtZW50Kik7CiAKIHByaXZhdGU6CiAgICAgRGV0YWlsc1N1bW1hcnlFbGVt
ZW50KERvY3VtZW50KiBkb2N1bWVudCkKLSAgICAgICAgOiBTaGFkb3dDb250ZW50RWxlbWVudChI
VE1MTmFtZXM6OmRpdlRhZywgZG9jdW1lbnQpCisgICAgICAgIDogU2hhZG93Q29udGVudEVsZW1l
bnQoSFRNTE5hbWVzOjpkaXZUYWcsIGRvY3VtZW50LCBzdW1tYXJ5UXVlcnlTZWxlY3RvcigpKQog
ICAgIHsKICAgICB9Ci0KLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSW5jbHVkZShOb2RlKik7CiB9
OwogCiBQYXNzUmVmUHRyPERldGFpbHNTdW1tYXJ5RWxlbWVudD4gRGV0YWlsc1N1bW1hcnlFbGVt
ZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtNzksMTMgKzc0LDYgQEAgUGFzc1Jl
ZlB0cjxEZXRhaWxzU3VtbWFyeUVsZW1lbnQ+IERldGFpbHNTdW1tYXJ5RWxlbWVudDo6Y3JlYXRl
KERvY3VtZW50KiBkb2N1bWUKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERldGFpbHNTdW1tYXJ5
RWxlbWVudChkb2N1bWVudCkpOwogfQogCi1ib29sIERldGFpbHNTdW1tYXJ5RWxlbWVudDo6c2hv
dWxkSW5jbHVkZShOb2RlKiBub2RlKQotewotICAgIEhUTUxEZXRhaWxzRWxlbWVudCogZGV0YWls
cyA9IHN0YXRpY19jYXN0PEhUTUxEZXRhaWxzRWxlbWVudCo+KHNoYWRvd0FuY2VzdG9yTm9kZSgp
KTsKLSAgICByZXR1cm4gZGV0YWlscy0+bWFpblN1bW1hcnkoKSA9PSBub2RlOwotfQotCi0KIFBh
c3NSZWZQdHI8SFRNTERldGFpbHNFbGVtZW50PiBIVE1MRGV0YWlsc0VsZW1lbnQ6OmNyZWF0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiB7CiAgICAg
UmVmUHRyPEhUTUxEZXRhaWxzRWxlbWVudD4gcmVzdWx0ID0gYWRvcHRSZWYobmV3IEhUTUxEZXRh
aWxzRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MU3VtbWFyeUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
U3VtbWFyeUVsZW1lbnQuY3BwCmluZGV4IGVjZjEwODVjZTMwZmUwZjNiOTNlMWNkZTI1ZWI1NDRm
YTdkYjRmNGIuLmNjOGMwNTk4YmZlMWY4ZmQ2ZDYxYmZlZjE1MmU0MjIwMzZlNTVkYWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN1bW1hcnlFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5jcHAKQEAgLTQzLDcgKzQzLDcg
QEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFN1bW1hcnlDb250ZW50RWxlbWVudChEb2N1bWVu
dCogZG9jdW1lbnQpCi0gICAgICAgIDogU2hhZG93Q29udGVudEVsZW1lbnQoSFRNTE5hbWVzOjpk
aXZUYWcsIGRvY3VtZW50KQorICAgICAgICA6IFNoYWRvd0NvbnRlbnRFbGVtZW50KEhUTUxOYW1l
czo6ZGl2VGFnLCBkb2N1bWVudCwgZW1wdHlBdG9tKQogICAgIHsKICAgICB9CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDc4M2MzODA1NjkzYWVjNjNkNGQ5ODViZDc4
YzM4NGZkNDQ4NGM0ZWMuLjZjMGFhMjQ1NmNlZWVkYzFhN2FhMDRjZmU5MjRiNjUwNTA5MzU5NTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTEyNiwxNCArMTI2LDE0IEBA
IGJvb2wgSW50ZXJuYWxzOjppc1ByZWxvYWRlZChEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0
cmluZyYgdXJsKQogICAgIHJldHVybiBkb2N1bWVudC0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+
aXNQcmVsb2FkZWQodXJsKTsKIH0KIAotUGFzc1JlZlB0cjxFbGVtZW50PiBJbnRlcm5hbHM6OmNy
ZWF0ZVNoYWRvd0NvbnRlbnRFbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCwgRXhjZXB0aW9uQ29k
ZSYgZWMpCitQYXNzUmVmUHRyPEVsZW1lbnQ+IEludGVybmFsczo6Y3JlYXRlU2hhZG93Q29udGVu
dEVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIHNlbGVjdCwgRXhjZXB0
aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKCFkb2N1bWVudCkgewogICAgICAgICBlYyA9IElOVkFM
SURfQUNDRVNTX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgcmV0dXJuIFNo
YWRvd0NvbnRlbnRFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOworICAgIHJldHVybiBTaGFkb3dD
b250ZW50RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50LCBzZWxlY3QpOwogfQogCiBFbGVtZW50KiBJ
bnRlcm5hbHM6OmdldEVsZW1lbnRCeUlkSW5TaGFkb3dSb290KE5vZGUqIHNoYWRvd1Jvb3QsIGNv
bnN0IFN0cmluZyYgaWQsIEV4Y2VwdGlvbkNvZGUmIGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmgKaW5kZXggZWQ0NzM3MDU1Yjk5MzgzZGE5YjI4MDIxYWYzZjY5NTljNjFkMzVmNy4uYzk2
N2ZjZWU3NTgzMDlhZTIxODI3ZDlmMmRkMTlhMDMzOTgyYmJiMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZVNo
YWRvd1Jvb3QoRWxlbWVudCogaG9zdCwgRXhjZXB0aW9uQ29kZSYpOwogICAgIEVsZW1lbnQqIGlu
Y2x1ZGVyRm9yKE5vZGUqLCBFeGNlcHRpb25Db2RlJik7CiAgICAgU3RyaW5nIHNoYWRvd1BzZXVk
b0lkKEVsZW1lbnQqLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgUGFzc1JlZlB0cjxFbGVtZW50PiBj
cmVhdGVTaGFkb3dDb250ZW50RWxlbWVudChEb2N1bWVudCosIEV4Y2VwdGlvbkNvZGUmKTsKKyAg
ICBQYXNzUmVmUHRyPEVsZW1lbnQ+IGNyZWF0ZVNoYWRvd0NvbnRlbnRFbGVtZW50KERvY3VtZW50
KiwgY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIEVsZW1lbnQqIGdldEVsZW1l
bnRCeUlkSW5TaGFkb3dSb290KE5vZGUqIHNoYWRvd1Jvb3QsIGNvbnN0IFN0cmluZyYgaWQsIEV4
Y2VwdGlvbkNvZGUmKTsKIAogI2lmIEVOQUJMRShJTlBVVF9DT0xPUikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmlkbAppbmRleCBmNTZkMWFmNzRhOGUzNWRkNDdiZDRlNmM0OWYxMjVlN2Vh
YWMzYTU1Li41ZjAwOGQwYThhZmI2OGQ2MDUwMjU4ZDhiNjU0YzhmNzE1M2E3MGEzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC0zNSw3ICszNSw3IEBAIG1vZHVsZSB3aW5k
b3cgewogICAgICAgICBFbGVtZW50IGluY2x1ZGVyRm9yKGluIE5vZGUgbm9kZSkgcmFpc2VzIChE
T01FeGNlcHRpb24pOwogICAgICAgICB2b2lkIHJlbW92ZVNoYWRvd1Jvb3QoaW4gRWxlbWVudCBo
b3N0KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIERPTVN0cmluZyBzaGFkb3dQc2V1
ZG9JZChpbiBFbGVtZW50IGVsZW1lbnQpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKLSAgICAgICAg
RWxlbWVudCBjcmVhdGVTaGFkb3dDb250ZW50RWxlbWVudChpbiBEb2N1bWVudCBkb2N1bWVudCkg
cmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgICAgIEVsZW1lbnQgY3JlYXRlU2hhZG93Q29udGVu
dEVsZW1lbnQoaW4gRG9jdW1lbnQgZG9jdW1lbnQsIGluIFtPcHRpb25hbD1DYWxsV2l0aE51bGxW
YWx1ZV0gRE9NU3RyaW5nIHNlbGVjdCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIEVs
ZW1lbnQgZ2V0RWxlbWVudEJ5SWRJblNoYWRvd1Jvb3QoaW4gTm9kZSBzaGFkb3dSb290LCBpbiBE
T01TdHJpbmcgaWQpIHJhaXNlcyhET01FeGNlcHRpb24pOwogCiAjaWYgZGVmaW5lZChFTkFCTEVf
SU5QVVRfQ09MT1IpICYmIEVOQUJMRV9JTlBVVF9DT0xPUgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvd2luL1dlYktpdDIuZGVmIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmCmlu
ZGV4IDFhYTg0ODE2N2JlZGM4NTY0OGVjNGY0YTdlN2ZiYTFiNDIyODJjZmIuLjEyZWU0OTU5ZDFm
NWU5NTFkODc1YWFmMzlmNzJkMTdiNGZlYmJiNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L3dpbi9XZWJLaXQyLmRlZgorKysgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYKQEAg
LTE1MCw3ICsxNTAsNiBAQCBFWFBPUlRTCiAgICAgICAgID9hZGRTbG93Q2FzZUBBdG9taWNTdHJp
bmdAV1RGQEBDQT9BVj8kUGFzc1JlZlB0ckBWU3RyaW5nSW1wbEBXVEZAQEAyQFBBVlN0cmluZ0lt
cGxAMkBAWgogICAgICAgICA/Y2FjaGVET01TdHJ1Y3R1cmVAV2ViQ29yZUBAWUFQQVZTdHJ1Y3R1
cmVASlNDQEBQQVZKU0RPTUdsb2JhbE9iamVjdEAxQFBBVjIzQFBCVUNsYXNzSW5mb0AzQEBaCiAg
ICAgICAgID9jcmVhdGVAUmFuZ2VAV2ViQ29yZUBAU0E/QVY/JFBhc3NSZWZQdHJAVlJhbmdlQFdl
YkNvcmVAQEBXVEZAQFY/JFBhc3NSZWZQdHJAVkRvY3VtZW50QFdlYkNvcmVAQEA0QFY/JFBhc3NS
ZWZQdHJAVk5vZGVAV2ViQ29yZUBAQDRASDFIQFoKLSAgICAgICAgP2NyZWF0ZUBTaGFkb3dDb250
ZW50RWxlbWVudEBXZWJDb3JlQEBTQT9BVj8kUGFzc1JlZlB0ckBWU2hhZG93Q29udGVudEVsZW1l
bnRAV2ViQ29yZUBAQFdURkBAUEFWRG9jdW1lbnRAMkBAWgogICAgICAgICA/Y3JlYXRlV3JhcHBl
ckBXZWJDb3JlQEBZQT9BVkpTVmFsdWVASlNDQEBQQVZFeGVjU3RhdGVAM0BQQVZKU0RPTUdsb2Jh
bE9iamVjdEAxQFBBVk5vZGVAMUBAWgogICAgICAgICA/ZW5zdXJlU2hhZG93Um9vdEBFbGVtZW50
QFdlYkNvcmVAQFFBRVBBVlNoYWRvd1Jvb3RAMkBYWgogICAgICAgICA/ZXF1YWxAV1RGQEBZQV9O
UEJWU3RyaW5nSW1wbEAxQFBCRUBaCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2Vi
S2l0MkNGTGl0ZS5kZWYgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNGTGl0ZS5kZWYKaW5k
ZXggNmI2NDQ4ZGIxNjFhZWI2NzE4OTA2ZDYyZjc3MGI5YTdlNGE4ZWMwZC4uYTk1YjVmZTAzNjZl
MWZjNzI0ZTNlODNhMGFiYjI0YTkzMzc5NGFjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
d2luL1dlYktpdDJDRkxpdGUuZGVmCisrKyBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyQ0ZM
aXRlLmRlZgpAQCAtMTQzLDcgKzE0Myw2IEBAIEVYUE9SVFMKICAgICAgICAgP2FkZFNsb3dDYXNl
QEF0b21pY1N0cmluZ0BXVEZAQENBP0FWPyRQYXNzUmVmUHRyQFZTdHJpbmdJbXBsQFdURkBAQDJA
UEFWU3RyaW5nSW1wbEAyQEBaCiAgICAgICAgID9jYWNoZURPTVN0cnVjdHVyZUBXZWJDb3JlQEBZ
QVBBVlN0cnVjdHVyZUBKU0NAQFBBVkpTRE9NR2xvYmFsT2JqZWN0QDFAUEFWMjNAUEJVQ2xhc3NJ
bmZvQDNAQFoKICAgICAgICAgP2NyZWF0ZUBSYW5nZUBXZWJDb3JlQEBTQT9BVj8kUGFzc1JlZlB0
ckBWUmFuZ2VAV2ViQ29yZUBAQFdURkBAVj8kUGFzc1JlZlB0ckBWRG9jdW1lbnRAV2ViQ29yZUBA
QDRAVj8kUGFzc1JlZlB0ckBWTm9kZUBXZWJDb3JlQEBANEBIMUhAWgotICAgICAgICA/Y3JlYXRl
QFNoYWRvd0NvbnRlbnRFbGVtZW50QFdlYkNvcmVAQFNBP0FWPyRQYXNzUmVmUHRyQFZTaGFkb3dD
b250ZW50RWxlbWVudEBXZWJDb3JlQEBAV1RGQEBQQVZEb2N1bWVudEAyQEBaCiAgICAgICAgID9j
cmVhdGVXcmFwcGVyQFdlYkNvcmVAQFlBP0FWSlNWYWx1ZUBKU0NAQFBBVkV4ZWNTdGF0ZUAzQFBB
VkpTRE9NR2xvYmFsT2JqZWN0QDFAUEFWTm9kZUAxQEBaCiAgICAgICAgID9lbnN1cmVTaGFkb3dS
b290QEVsZW1lbnRAV2ViQ29yZUBAUUFFUEFWU2hhZG93Um9vdEAyQFhaCiAgICAgICAgID9lcXVh
bEBXVEZAQFlBX05QQlZTdHJpbmdJbXBsQDFAUEJFQFoKZGlmZiAtLWdpdCBhL1NvdXJjZS9hdXRv
dG9vbHMvc3ltYm9scy5maWx0ZXIgYi9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCmlu
ZGV4IDE1YjY5NTdhOWUyNDIzMTkwYmFjMWRkMjFjZmIxNjczZmQ3MzE4ZGEuLmIyMjVmMDZiZjlk
MjQ1NjMxMWRkZWI4MTQxNTVhOWNiNTYyYzViNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9hdXRvdG9v
bHMvc3ltYm9scy5maWx0ZXIKKysrIGIvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgpA
QCAtNTMsNyArNTMsNyBAQCBfWk43V2ViQ29yZTE3Y2FjaGVET01TdHJ1Y3R1cmVFUE5TXzE3SlNE
T01HbG9iYWxPYmplY3RFUE4zSlNDOVN0cnVjdHVyZUVQS05TMl85QwogX1pON1dlYkNvcmUxOUlu
c3BlY3RvckNvbnRyb2xsZXIzOXNldFJlc291cmNlc0RhdGFTaXplTGltaXRzRnJvbUludGVybmFs
c0VpaTsKIF9aTjdXZWJDb3JlMjBOb2RlUmVuZGVyaW5nQ29udGV4dEMxRVBOU180Tm9kZUU7CiBf
Wk43V2ViQ29yZTIwTm9kZVJlbmRlcmluZ0NvbnRleHREMUV2OwotX1pON1dlYkNvcmUyMFNoYWRv
d0NvbnRlbnRFbGVtZW50NmNyZWF0ZUVQTlNfOERvY3VtZW50RTsKK19aTjdXZWJDb3JlMjBTaGFk
b3dDb250ZW50RWxlbWVudDZjcmVhdGVFUE5TXzhEb2N1bWVudEVSS04zV1RGMTJBdG9taWNTdHJp
bmdFOwogX1pON1dlYkNvcmUyMWdldENhY2hlZERPTVN0cnVjdHVyZUVQTlNfMTdKU0RPTUdsb2Jh
bE9iamVjdEVQS04zSlNDOUNsYXNzSW5mb0U7CiBfWk43V2ViQ29yZTIyZXh0ZXJuYWxSZXByZXNl
bnRhdGlvbkVQTlNfN0VsZW1lbnRFajsKIF9aTjdXZWJDb3JlMjREb2N1bWVudE1hcmtlckNvbnRy
b2xsZXIxMG1hcmtlcnNGb3JFUE5TXzROb2RlRU5TXzE0RG9jdW1lbnRNYXJrZXIxMU1hcmtlclR5
cGVzRTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwppbmRleCA1NmJjNzE0MDRhOGE1NjRjYTdlOWY3Zjk5Yzc5ZWQ3MTc1NzRmNzkxLi5i
ZTM5Y2RmMDI3OWI1NzM4OTQ1YmEwZTA4YTEzMmFjOWNlNmMxMmQ0IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTUgQEAKKzIwMTItMDEtMTEgIFNoaW55YSBLYXdhbmFrYSAgPHNoaW55YWtAZ29vZ2xlLmNvbT4K
KworICAgICAgICBTaGFkb3dDb250ZW50RWxlbWVudCBzaG91bGQgYmUgYWJsZSB0byB1c2UgcXVl
cnkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NTMw
MgorCisgICAgICAgIFJldmlld2VkIGJ5IEhhamltZSBNb3JpdGEuCisKKyAgICAgICAgVGVzdHMg
Zm9yIFNoYWRvd0NvbnRlbnRFbGVtZW50IHF1ZXJ5LgorCisgICAgICAgICogZmFzdC9kb20vc2hh
ZG93L3NoYWRvdy1jb250ZW50cy1zZWxlY3QtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1jb250ZW50cy1zZWxlY3QuaHRtbDogQWRkZWQuCisK
IDIwMTItMDEtMTIgIERtaXRyeSBUaXRvdiAgPGRpbWljaEBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgW0Nocm9taXVtXSBSZWJhc2VsaW5lIGZvciBhIHRlc3QgbW9kaWZpZWQgaW4gaHR0cDovL3Ry
YWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTA0ODUxCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9zaGFkb3cvc2hhZG93LWNvbnRlbnRzLXNlbGVjdC1leHBlY3RlZC5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1jb250ZW50cy1zZWxlY3QtZXhwZWN0ZWQu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wMzc5NjViYTJjOTI3YmMyNDg2OTU4NDUzYzFjYzY3NTI5NzNlNWUy
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1j
b250ZW50cy1zZWxlY3QtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDQxIEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+CisvKiByZWxhdGl2ZSBwb3NpdGlvbmluZyBl
bnN1cmVzIHVuZGVybHlpbmcgUmVuZGVyTGF5ZXIgKi8KKy5jb250YWluZXIgeworICAgIHBvc2l0
aW9uOiByZWxhdGl2ZTsKK30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImNv
bnRhaW5lciI+Cis8IS0tIHRlc3RTZWxlY3RJc051bGwgLS0+Cis8ZGl2PjxzcGFuPkhlbGxvLDwv
c3Bhbj48c3Bhbj5jb250ZW50PC9zcGFuPjxzcGFuPldvcmxkLjwvc3Bhbj48L2Rpdj4KKzwhLS0g
dGVzdFNlbGVjdElzSWQgLS0+Cis8ZGl2PjxzcGFuPkhlbGxvLDwvc3Bhbj48c3Bhbj5jb250ZW50
PC9zcGFuPjxzcGFuPldvcmxkLjwvc3Bhbj48L2Rpdj4KKzwhLS0gdGVzdFNlbGVjdElzSWRCdXRO
b3RNYXRjaGVkIC0tPgorPGRpdj48c3Bhbj5IZWxsbyw8L3NwYW4+PHNwYW4+V29ybGQuPC9zcGFu
PjwvZGl2PgorPCEtLSB0ZXN0U2VsZWN0SXNJZEJ1dE5vdENoaWxkIC0tPgorPGRpdj48c3Bhbj5I
ZWxsbyw8L3NwYW4+PHNwYW4+V29ybGQuPC9zcGFuPjwvZGl2PgorPCEtLSB0ZXN0U2VsZWN0SXNN
dWx0aUlkIC0tPgorPGRpdj48c3Bhbj5IZWxsbyw8L3NwYW4+PHNwYW4+Y29udGVudDwvc3Bhbj48
c3Bhbj5jb250ZW50PC9zcGFuPjxzcGFuPldvcmxkLjwvc3Bhbj48L2Rpdj4KKzwhLS0gdGVzdFNl
bGVjdElzVHlwZSAtLT4KKzxkaXY+PHNwYW4+SGVsbG8sPC9zcGFuPjxzcGFuPmNvbnRlbnQ8L3Nw
YW4+PHNwYW4+V29ybGQuPC9zcGFuPjwvZGl2PgorPCEtLSB0ZXN0U2VsZWN0SXNUeXBlV2l0aEF0
dHJpYnV0ZSAtLT4KKzxkaXY+PHNwYW4+SGVsbG8sPC9zcGFuPjxzcGFuPmNvbnRlbnQ8L3NwYW4+
PHNwYW4+V29ybGQuPC9zcGFuPjwvZGl2PgorPCEtLSB0ZXN0U2VsZWN0SXNUeXBlV2l0aEZpcnN0
T2ZUeXBlIC0tPgorPGRpdj48c3Bhbj5IZWxsbyw8L3NwYW4+PHNwYW4+Y29udGVudDwvc3Bhbj48
c3Bhbj5Xb3JsZC48L3NwYW4+PC9kaXY+Cis8IS0tIHRlc3RTZWxlY3RJc1R5cGVXaXRoRmlyc3RP
ZlR5cGUyIC0tPgorPGRpdj48c3Bhbj5IZWxsbyw8L3NwYW4+PHNwYW4+Y29udGVudDwvc3Bhbj48
c3Bhbj5Xb3JsZC48L3NwYW4+PC9kaXY+Cis8IS0tIHRlc3RTZWxlY3RJc1R5cGVXaXRoTGFzdE9m
VHlwZSAtLT4KKzxkaXY+PHNwYW4+SGVsbG8sPC9zcGFuPjxzcGFuPmNvbnRlbnQ8L3NwYW4+PHNw
YW4+V29ybGQuPC9zcGFuPjwvZGl2PgorPCEtLSB0ZXN0U2VsZWN0SXNEZXRhaWxzIC0tPgorPGRp
dj48c3Bhbj5IZWxsbyw8L3NwYW4+PGRldGFpbHM+Y29udGVudDwvZGV0YWlscz48c3Bhbj5Xb3Js
ZC48L3NwYW4+PC9kaXY+Cis8IS0tIHRlc3RTZWxlY3RJc0RldGFpbHMyIC0tPgorPGRpdj48c3Bh
bj5IZWxsbyw8L3NwYW4+PGRldGFpbHM+PHN1bW1hcnk+Y29udGVudDwvc3VtbWFyeT48L2RldGFp
bHM+PHNwYW4+V29ybGQuPC9zcGFuPjwvZGl2PgorPCEtLSB0ZXN0U2VsZWN0V2hlbkR5bmFtaWNh
bGx5Q2hpbGRyZW5DaGFuZ2VkIC0tPgorPGRpdj48c3Bhbj5IZWxsbyw8L3NwYW4+PHNwYW4+Y29u
dGVudDwvc3Bhbj48c3Bhbj5Xb3JsZC48L3NwYW4+PC9kaXY+Cis8L2Rpdj4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctY29u
dGVudHMtc2VsZWN0Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LWNv
bnRlbnRzLXNlbGVjdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY3OTI5NjdhOTNlNTk2MmRiNWFlN2YyOWJi
MjliY2EwMWNlY2Y1MWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9z
aGFkb3cvc2hhZG93LWNvbnRlbnRzLXNlbGVjdC5odG1sCkBAIC0wLDAgKzEsMTczIEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+CisvKiByZWxhdGl2ZSBwb3NpdGlv
bmluZyBlbnN1cmVzIHVuZGVybHlpbmcgUmVuZGVyTGF5ZXIgKi8KKy5jb250YWluZXIgeworICAg
IHBvc2l0aW9uOiByZWxhdGl2ZTsKK30KKzwvc3R5bGU+Cis8c2NyaXB0PgorZnVuY3Rpb24gYXBw
ZW5kU2hhZG93KHRhcmdldCwgc2VsZWN0KSB7CisgICAgdmFyIHJvb3QgPSBpbnRlcm5hbHMuZW5z
dXJlU2hhZG93Um9vdCh0YXJnZXQpOworCisgICAgdmFyIGNoaWxkMCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoInNwYW4iKTsKKyAgICBjaGlsZDAuaW5uZXJIVE1MID0gIkhlbGxvLCI7CisgICAg
cm9vdC5hcHBlbmRDaGlsZChjaGlsZDApOworCisgICAgdmFyIGNvbnRlbnQgPSBpbnRlcm5hbHMu
Y3JlYXRlU2hhZG93Q29udGVudEVsZW1lbnQoZG9jdW1lbnQsIHNlbGVjdCk7CisgICAgcm9vdC5h
cHBlbmRDaGlsZChjb250ZW50KTsKKworICAgIHZhciBjaGlsZDEgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJzcGFuIik7CisgICAgY2hpbGQxLmlubmVySFRNTCA9ICJXb3JsZC4iOworICAgIHJv
b3QuYXBwZW5kQ2hpbGQoY2hpbGQxKTsKK30KKworZnVuY3Rpb24gdGVzdFNlbGVjdElzTnVsbCgp
IHsKKyAgICB2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAg
dGFyZ2V0LmlubmVySFRNTCA9ICI8c3Bhbj5jb250ZW50PC9zcGFuPiI7CisKKyAgICBhcHBlbmRT
aGFkb3codGFyZ2V0LCAiIik7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29udGFp
bmVyJykuYXBwZW5kQ2hpbGQodGFyZ2V0KTsKK30KKworZnVuY3Rpb24gdGVzdFNlbGVjdElzSWQo
KSB7CisgICAgdmFyIHRhcmdldCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAg
IHRhcmdldC5pbm5lckhUTUwgPSAiPHNwYW4gaWQ9J2Zvbyc+Y29udGVudDwvc3Bhbj48c3BhbiBp
ZD0nYXp1bnlhbic+cGVyb3Blcm88L3NwYW4+IjsKKworICAgIGFwcGVuZFNoYWRvdyh0YXJnZXQs
ICIjZm9vIik7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29udGFpbmVyJykuYXBw
ZW5kQ2hpbGQodGFyZ2V0KTsKK30KKworZnVuY3Rpb24gdGVzdFNlbGVjdElzSWRCdXROb3RNYXRj
aGVkKCkgeworICAgIHZhciB0YXJnZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsK
KyAgICB0YXJnZXQuaW5uZXJIVE1MID0gIjxzcGFuIGlkPSdmb28nPmNvbnRlbnQ8L3NwYW4+PHNw
YW4gaWQ9J2F6dW55YW4nPnBlcm9wZXJvPC9zcGFuPiI7CisKKyAgICBhcHBlbmRTaGFkb3codGFy
Z2V0LCAiI2Zvb2JhciIpOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRhaW5l
cicpLmFwcGVuZENoaWxkKHRhcmdldCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RTZWxlY3RJc0lkQnV0
Tm90Q2hpbGQoKSB7CisgICAgdmFyIHRhcmdldCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rp
dicpOworICAgIHRhcmdldC5pbm5lckhUTUwgPSAiPHNwYW4+PHNwYW4gaWQ9J2Zvbyc+Y29udGVu
dDwvc3Bhbj48c3BhbiBpZD0nYXp1bnlhbic+cGVyb3Blcm88L3NwYW4+PC9zcGFuPiI7CisKKyAg
ICBhcHBlbmRTaGFkb3codGFyZ2V0LCAiI2ZvbyIpOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2NvbnRhaW5lcicpLmFwcGVuZENoaWxkKHRhcmdldCk7Cit9CisKK2Z1bmN0aW9uIHRl
c3RTZWxlY3RJc011bHRpSWQoKSB7CisgICAgdmFyIHRhcmdldCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ2RpdicpOworICAgIHRhcmdldC5pbm5lckhUTUwgPSAiPHNwYW4gaWQ9J2Zvbyc+Y29u
dGVudDwvc3Bhbj48c3BhbiBpZD0nYXp1bnlhbic+cGVyb3Blcm88L3NwYW4+PHNwYW4gaWQ9J2Zv
byc+Y29udGVudDwvc3Bhbj4iOworCisgICAgYXBwZW5kU2hhZG93KHRhcmdldCwgIiNmb28iKTsK
KworICAgIC8vIEFsbCBtYXRjaGVkIGVsZW1lbnRzIHdpbGwgYmUgc2VsZWN0ZWQuCisgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRhaW5lcicpLmFwcGVuZENoaWxkKHRhcmdldCk7Cit9
CisKK2Z1bmN0aW9uIHRlc3RTZWxlY3RJc1R5cGUoKSB7CisgICAgdmFyIHRhcmdldCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHRhcmdldC5pbm5lckhUTUwgPSAiPGRpdj5h
enVueWFuPC9kaXY+PHNwYW4+Y29udGVudDwvc3Bhbj48ZGl2PnBlcm9wZXJvPC9kaXY+IjsKKwor
ICAgIGFwcGVuZFNoYWRvdyh0YXJnZXQsICJzcGFuIik7CisKKyAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnY29udGFpbmVyJykuYXBwZW5kQ2hpbGQodGFyZ2V0KTsKK30KKworZnVuY3Rpb24g
dGVzdFNlbGVjdElzVHlwZVdpdGhBdHRyaWJ1dGUoKSB7CisgICAgdmFyIHRhcmdldCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHRhcmdldC5pbm5lckhUTUwgPSAiPHNwYW4+
YXp1bnlhbjwvc3Bhbj48c3BhbiB0aXRsZT0nY29udGVudCc+Y29udGVudDwvc3Bhbj48c3Bhbj5w
ZXJvcGVybzwvc3Bhbj4iOworCisgICAgYXBwZW5kU2hhZG93KHRhcmdldCwgInNwYW5bdGl0bGU9
J2NvbnRlbnQnXSIpOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRhaW5lcicp
LmFwcGVuZENoaWxkKHRhcmdldCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RTZWxlY3RJc1R5cGVXaXRo
Rmlyc3RPZlR5cGUoKSB7CisgICAgdmFyIHRhcmdldCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J2RpdicpOworICAgIHRhcmdldC5pbm5lckhUTUwgPSAiPGRpdj5henVueWFuPC9kaXY+PHNwYW4+
Y29udGVudDwvc3Bhbj48c3Bhbj5wZXJvcGVybzwvc3Bhbj4iOworCisgICAgYXBwZW5kU2hhZG93
KHRhcmdldCwgInNwYW46Zmlyc3Qtb2YtdHlwZSIpOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2NvbnRhaW5lcicpLmFwcGVuZENoaWxkKHRhcmdldCk7Cit9CisKK2Z1bmN0aW9uIHRl
c3RTZWxlY3RJc1R5cGVXaXRoRmlyc3RPZlR5cGUyKCkgeworICAgIHZhciB0YXJnZXQgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICB0YXJnZXQuaW5uZXJIVE1MID0gIjxkaXY+
PHNwYW4+YXp1bnlhbjwvc3Bhbj48L2Rpdj48c3Bhbj5jb250ZW50PC9zcGFuPjxzcGFuPnBlcm9w
ZXJvPC9zcGFuPiI7CisKKyAgICBhcHBlbmRTaGFkb3codGFyZ2V0LCAic3BhbjpmaXJzdC1vZi10
eXBlIik7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29udGFpbmVyJykuYXBwZW5k
Q2hpbGQodGFyZ2V0KTsKK30KKworZnVuY3Rpb24gdGVzdFNlbGVjdElzVHlwZVdpdGhMYXN0T2ZU
eXBlKCkgeworICAgIHZhciB0YXJnZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsK
KyAgICB0YXJnZXQuaW5uZXJIVE1MID0gIjxzcGFuPmF6dW55YW48L3NwYW4+PHNwYW4+Y29udGVu
dDwvc3Bhbj48ZGl2PnBlcm9wZXJvPC9kaXY+IjsKKworICAgIGFwcGVuZFNoYWRvdyh0YXJnZXQs
ICJzcGFuOmxhc3Qtb2YtdHlwZSIpOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Nv
bnRhaW5lcicpLmFwcGVuZENoaWxkKHRhcmdldCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RTZWxlY3RJ
c0RldGFpbHMoKSB7CisgICAgdmFyIHRhcmdldCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rp
dicpOworICAgIHRhcmdldC5pbm5lckhUTUwgPSAiPGRldGFpbHM+Y29udGVudDwvZGV0YWlscz4i
OworCisgICAgYXBwZW5kU2hhZG93KHRhcmdldCwgImRldGFpbHMiKTsKKworICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdjb250YWluZXInKS5hcHBlbmRDaGlsZCh0YXJnZXQpOworfQorCitm
dW5jdGlvbiB0ZXN0U2VsZWN0SXNEZXRhaWxzMigpIHsKKyAgICB2YXIgdGFyZ2V0ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgdGFyZ2V0LmlubmVySFRNTCA9ICI8ZGV0YWls
cz48c3VtbWFyeT5jb250ZW50PC9zdW1tYXJ5PjwvZGV0YWlscz4iOworCisgICAgYXBwZW5kU2hh
ZG93KHRhcmdldCwgImRldGFpbHMiKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdj
b250YWluZXInKS5hcHBlbmRDaGlsZCh0YXJnZXQpOworfQorCitmdW5jdGlvbiB0ZXN0U2VsZWN0
V2hlbkR5bmFtaWNhbGx5Q2hpbGRyZW5DaGFuZ2VkKCkgeworICAgIHZhciB0YXJnZXQgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICB0YXJnZXQuaW5uZXJIVE1MID0gIjxzcGFu
PmNvbnRlbnQ8L3NwYW4+PHNwYW4gaWQ9J3RvYmVyZW1vdmVkJz5hbnVueWFuIHBlcm9wZXJvPC9z
cGFuPiI7CisKKyAgICBhcHBlbmRTaGFkb3codGFyZ2V0LCAic3BhbiIpOworCisgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRhaW5lcicpLmFwcGVuZENoaWxkKHRhcmdldCk7CisKKyAg
ICB2YXIgZWxlbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2JlcmVtb3ZlZCcpOworICAg
IGVsZW0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlbGVtKTsKK30KKwordmFyIHRlc3RGdW5jcyA9
IFsKKyAgICB0ZXN0U2VsZWN0SXNOdWxsLAorICAgIHRlc3RTZWxlY3RJc0lkLAorICAgIHRlc3RT
ZWxlY3RJc0lkQnV0Tm90TWF0Y2hlZCwKKyAgICB0ZXN0U2VsZWN0SXNJZEJ1dE5vdENoaWxkLAor
ICAgIHRlc3RTZWxlY3RJc011bHRpSWQsCisgICAgdGVzdFNlbGVjdElzVHlwZSwKKyAgICB0ZXN0
U2VsZWN0SXNUeXBlV2l0aEF0dHJpYnV0ZSwKKyAgICB0ZXN0U2VsZWN0SXNUeXBlV2l0aEZpcnN0
T2ZUeXBlLAorICAgIHRlc3RTZWxlY3RJc1R5cGVXaXRoRmlyc3RPZlR5cGUyLAorICAgIHRlc3RT
ZWxlY3RJc1R5cGVXaXRoTGFzdE9mVHlwZSwKKyAgICB0ZXN0U2VsZWN0SXNEZXRhaWxzLAorICAg
IHRlc3RTZWxlY3RJc0RldGFpbHMyLAorICAgIHRlc3RTZWxlY3RXaGVuRHluYW1pY2FsbHlDaGls
ZHJlbkNoYW5nZWQsCitdCisKK2Z1bmN0aW9uIGRvVGVzdCgpIHsKKyAgICBmb3IgKHZhciBpID0g
MDsgaSA8IHRlc3RGdW5jcy5sZW5ndGg7ICsraSkgeworICAgICAgIHRlc3RGdW5jc1tpXSgpOwor
ICAgIH0KK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJkb1Rlc3QoKSI+Cis8
ZGl2IGlkPSJjb250YWluZXIiPjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
Q2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IGRiMjgzNTgzYjlkYWNhNTc1NjI1ZmI3OTM4YWFi
MDBjNDM4NmI5ZWUuLjRiNTAxNjk4NWU3MjhiNWUzNWRkYjg4NTYzZmI4MTIyNjNiNDAzNDIgMTAw
NjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAx
Mi0wMS0xMSAgU2hpbnlhIEthd2FuYWthICA8c2hpbnlha0Bnb29nbGUuY29tPgorCisgICAgICAg
IFNoYWRvd0NvbnRlbnRFbGVtZW50IHNob3VsZCBiZSBhYmxlIHRvIHVzZSBxdWVyeS4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc1MzAyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgSGFqaW1lIE1vcml0YS4KKworICAgICAgICAqIFNvdXJjZS9hdXRvdG9v
bHMvc3ltYm9scy5maWx0ZXI6IEV4cG9zZWQgbmVjZXNzYXJ5IHN5bWJvbHMuCisKIDIwMTItMDEt
MTIgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAg
IFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMDQ4MDUuCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122402</attachid>
            <date>2012-01-13 02:26:35 -0800</date>
            <delta_ts>2012-01-13 05:05:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-75302-20120113192634.patch</filename>
            <type>text/plain</type>
            <size>39750</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA0ODk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjQxNGNlOTI3MjU3ZjM5
YWI2YmU3NGVlZTc4MzY5NmVlMDAwZjMxMi4uYzQxYzgzYzYzM2NhY2NkOGQzOTQwM2FlMWM3Mzk3
OGM4NzVmMDJhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDEyLTAxLTEzICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGdvb2dsZS5jb20+CisKKyAgICAgICAgU2hhZG93Q29udGVu
dEVsZW1lbnQgc2hvdWxkIGJlIGFibGUgdG8gdXNlIHF1ZXJ5LgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzUzMDIKKworICAgICAgICBSZXZpZXdlZCBi
eSBIYWppbWUgTW9yaXRhLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIHNlbGVj
dG9yIHRvIHF1ZXJ5IGVsZW1lbnRzIGluIFNoYWRvd0NvbnRlbnRFbGVtZW50LgorICAgICAgICBU
aGlzIGNhbiBiZSB1c2VkIGluc3RlYWQgb2YgU2hhZG93Q29udGVudEVsZW1lbnQ6OnNob3VsZElu
Y2x1ZGUgaW4gbW9yZSBzb3BoaXN0aWNhdGVkIHdheXMuCisKKyAgICAgICAgVGVzdHM6IGZhc3Qv
ZG9tL3NoYWRvdy9zaGFkb3ctY29udGVudHMtc2VsZWN0LWV4cGVjdGVkLmh0bWwKKyAgICAgICAg
ICAgICAgIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctY29udGVudHMtc2VsZWN0Lmh0bWwKKworICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06Cisg
ICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICog
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9ET01BbGxJbk9uZS5jcHA6CisgICAg
ICAgICogZG9tL1NlbGVjdG9yUXVlcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JE
YXRhTGlzdDo6U2VsZWN0b3JEYXRhTGlzdCk6CisgICAgICAgICAgRXh0cmFjdGVkIGZyb20gU2Vs
ZWN0b3JRdWVyeXRvIHNoYXJlIGNvZGVzIHdpdGggU2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnku
CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckRhdGFMaXN0Ojppbml0aWFsaXplKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNlbGVjdG9yRGF0YUxpc3Q6Om1hdGNoZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6U2VsZWN0b3JEYXRhTGlzdDo6cXVlcnlBbGwpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0
b3JEYXRhTGlzdDo6cXVlcnlGaXJzdCk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckRhdGFM
aXN0OjpjYW5Vc2VJZExvb2t1cCk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckRhdGFMaXN0
OjpleGVjdXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yUXVlcnk6OlNlbGVjdG9yUXVl
cnkpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JRdWVyeTo6cXVlcnlBbGwpOgorICAgICAg
ICAoV2ViQ29yZTo6U2VsZWN0b3JRdWVyeTo6cXVlcnlGaXJzdCk6CisgICAgICAgICogZG9tL1Nl
bGVjdG9yUXVlcnkuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yRGF0YUxpc3Q6OnNpemUp
OgorICAgICAgICAqIGRvbS9TaGFkb3dDb250ZW50RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTaGFkb3dDb250ZW50RWxlbWVudDo6c2VsZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNo
YWRvd0NvbnRlbnRFbGVtZW50OjpzZXRTZWxlY3QpOgorICAgICAgICAqIGRvbS9TaGFkb3dDb250
ZW50RWxlbWVudC5oOgorICAgICAgICAqIGRvbS9TaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeS5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnk6
OlNoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0Nv
bnRlbnRTZWxlY3RvclF1ZXJ5OjptYXRjaGVzKToKKyAgICAgICAgICBSZXR1cm5zIHRydWUgaWYg
Tm9kZSBpcyBtYXRjaGVkIGJ5IHRoZSBxdWVyeS4KKyAgICAgICAgKiBkb20vU2hhZG93Q29udGVu
dFNlbGVjdG9yUXVlcnkuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0Nv
bnRlbnRFbGVtZW50LmguCisgICAgICAgICogZG9tL1NoYWRvd0luY2x1c2lvblNlbGVjdG9yLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0luY2x1c2lvblNlbGVjdG9yOjpzZWxlY3QpOgor
ICAgICAgICAqIGRvbS9TaGFkb3dJbmNsdXNpb25TZWxlY3Rvci5oOgorICAgICAgICAqIGh0bWwv
SFRNTEF0dHJpYnV0ZU5hbWVzLmluOgorICAgICAgICAqIGh0bWwvSFRNTERldGFpbHNFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnN1bW1hcnlRdWVyeVNlbGVjdG9yKToKKyAgICAgICAg
KFdlYkNvcmU6OkRldGFpbHNDb250ZW50RWxlbWVudDo6RGV0YWlsc0NvbnRlbnRFbGVtZW50KTog
UmUtaW1wbGVtZW50ZWQgdXNpbmcgcXVlcnkuCisgICAgICAgIChXZWJDb3JlOjpEZXRhaWxzU3Vt
bWFyeUVsZW1lbnQ6OkRldGFpbHNTdW1tYXJ5RWxlbWVudCk6IGRpdHRvLgorCiAyMDEyLTAxLTEy
ICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgogCiAgICAgICAgIFtDaHJvbWl1
bV0gSlNFeHBvcnRNYWNyb3MuaCBzaG91bGQgYmUgdmlzaWJsZS4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQK
aW5kZXggNTlmY2VlMjQ2ODA0Nzk5NTE1NjU1YjA3ZWE1MWMzN2VkMTY0NTJkOS4uNjBiNTc4Y2Yw
MjBhNTQ1MGVkYjhkM2U1YTc0ODE2ZGRhNDBkMWU0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAg
LTU5NCw2ICs1OTQsNyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgZG9tL1NlY3VyaXR5Q29u
dGV4dC5jcHAKICAgICBkb20vU2VsZWN0b3JRdWVyeS5jcHAKICAgICBkb20vU2hhZG93Q29udGVu
dEVsZW1lbnQuY3BwCisgICAgZG9tL1NoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmNwcAogICAg
IGRvbS9TaGFkb3dJbmNsdXNpb25TZWxlY3Rvci5jcHAKICAgICBkb20vU2hhZG93Um9vdC5jcHAK
ICAgICBkb20vU3BhY2VTcGxpdFN0cmluZy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CmluZGV4IDU1YmQ2MzQ2MGI5ZGFmOTM5ZjAwNzFjMjNjY2ZmOTFiMWY0YTdkZDIuLmIzMzBmZjIy
ZWIyNDRiNGZlOWE4YTY1NmQwNWQwMTk5ZGZjNzY1ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbQpAQCAtMTY0NSw2ICsxNjQ1LDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3Vy
Y2UvV2ViQ29yZS9kb20vU2VsZWN0b3JRdWVyeS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vU2hh
ZG93Q29udGVudEVsZW1lbnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Q29udGVu
dEVsZW1lbnQuaCBcCisJU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0NvbnRlbnRTZWxlY3RvclF1
ZXJ5LmNwcCBcCisJU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5
LmggXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dJbmNsdXNpb25TZWxlY3Rvci5jcHAgXAog
CVNvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dJbmNsdXNpb25TZWxlY3Rvci5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
VGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKaW5kZXggZGZhZmQ0MDY1MjFl
MWU4ZjI5YmU1OGE5NWM2Njk4OWMzMzE1NjQ3Zi4uMzY2OTU0NTE2ZGYzNTE2NmY1MzVkYjgzNTRm
ODMwNTM4ZDJhYmVhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC01NjAsNiArNTYwLDcgQEAgU09VUkNFUyAr
PSBcCiAgICAgZG9tL1NlY3VyaXR5Q29udGV4dC5jcHAgXAogICAgIGRvbS9TZWxlY3RvclF1ZXJ5
LmNwcCBcCiAgICAgZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50LmNwcCBcCisgICAgZG9tL1NoYWRv
d0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmNwcCBcCiAgICAgZG9tL1NoYWRvd0luY2x1c2lvblNlbGVj
dG9yLmNwcCBcCiAgICAgZG9tL1NoYWRvd1Jvb3QuY3BwIFwKICAgICBkb20vU3BhY2VTcGxpdFN0
cmluZy5jcHAgXApAQCAtMTY2MCw2ICsxNjYxLDcgQEAgSEVBREVSUyArPSBcCiAgICAgZG9tL1Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaCBcCiAgICAgZG9tL1NlbGVjdG9yUXVlcnkuaCBcCiAgICAg
ZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50LmggXAorICAgIGRvbS9TaGFkb3dDb250ZW50U2VsZWN0
b3JRdWVyeS5oIFwKICAgICBkb20vU2hhZG93SW5jbHVzaW9uU2VsZWN0b3IuaCBcCiAgICAgZG9t
L1NoYWRvd1Jvb3QuaCBcCiAgICAgZG9tL1NwYWNlU3BsaXRTdHJpbmcuaCBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKaW5kZXggZmU1YTdlZmQyNTg0OWE5OTQ1NjVmOTY0NmUyNGYzNDA1ZTQ4ZjkyOS4uYWYwZTNi
OTYzYThmOTQ4MTIzYmVlN2ZjMzc4N2E5MTQ1MWI4NDE4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAt
MTA0Nyw2ICsxMDQ3LDcgQEAKICAgICAgICAgICAgICdkb20vU2NyaXB0UnVubmVyLmgnLAogICAg
ICAgICAgICAgJ2RvbS9TaGFkb3dSb290LmgnLAogICAgICAgICAgICAgJ2RvbS9TaGFkb3dDb250
ZW50RWxlbWVudC5oJywKKyAgICAgICAgICAgICdkb20vU2hhZG93Q29udGVudFNlbGVjdG9yUXVl
cnkuaCcsCiAgICAgICAgICAgICAnZG9tL1NwYWNlU3BsaXRTdHJpbmcuaCcsCiAgICAgICAgICAg
ICAnZG9tL1N0eWxlZEVsZW1lbnQuaCcsCiAgICAgICAgICAgICAnZG9tL1RleHQuaCcsCkBAIC01
NDU5LDYgKzU0NjAsOCBAQAogICAgICAgICAgICAgJ2RvbS9TZWxlY3RvclF1ZXJ5LmgnLAogICAg
ICAgICAgICAgJ2RvbS9TaGFkb3dDb250ZW50RWxlbWVudC5jcHAnLAogICAgICAgICAgICAgJ2Rv
bS9TaGFkb3dDb250ZW50RWxlbWVudC5oJywKKyAgICAgICAgICAgICdkb20vU2hhZG93Q29udGVu
dFNlbGVjdG9yUXVlcnkuY3BwJywKKyAgICAgICAgICAgICdkb20vU2hhZG93Q29udGVudFNlbGVj
dG9yUXVlcnkuaCcsCiAgICAgICAgICAgICAnZG9tL1NoYWRvd0luY2x1c2lvblNlbGVjdG9yLmNw
cCcsCiAgICAgICAgICAgICAnZG9tL1NoYWRvd0luY2x1c2lvblNlbGVjdG9yLmgnLAogICAgICAg
ICAgICAgJ2RvbS9TaGFkb3dSb290LmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IGFlNzg3MDkyNWFhYWE1YTU5NTJhN2VkMmNkZGRiMzll
YWYwMjYxZjEuLmEyZTlmZDI5ZWI0NGEyN2JmNDk0ZDNmNzNiNjZmODk4YzIzNmYxYTggMTAwNzU1
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC01MTEwNiw2
ICs1MTEwNiwxNCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxkb21cU2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnkuY3BwIgorCQkJCT4KKwkJCTwv
RmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cU2hhZG93Q29udGVudFNl
bGVjdG9yUXVlcnkuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZl
UGF0aD0iLi5cZG9tXFNoYWRvd0luY2x1c2lvblNlbGVjdG9yLmNwcCIKIAkJCQk+CiAJCQkJPEZp
bGVDb25maWd1cmF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggMzlmNmNjMzY1ZTcyZjBlYzNjNGEzOGM5NzJjZWZkYmRiZmRl
MjQzOS4uMjQ3OTYyMzFmMDg4N2I5NWMzNDU5Y2VkNGFiYWUwZjRlOGIyYmU2OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTU2
Miw2ICsxNTYyLDggQEAKIAkJNTNDODI5OEUxM0Q4RDkyNzAwREUyREVCIC8qIFJlbmRlckZsZXhp
YmxlQm94LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
M0M4Mjk4QzEzRDhEOTI3MDBERTJERUIgLyogUmVuZGVyRmxleGlibGVCb3guaCAqLzsgfTsKIAkJ
NTUwQTBCQzkwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTUwQTBCQzcwODVGNjAzOTAwNzM1
M0Q2IC8qIFF1YWxpZmllZE5hbWUuY3BwICovOyB9OwogCQk1NTBBMEJDQTA4NUY2MDM5MDA3MzUz
RDYgLyogUXVhbGlmaWVkTmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTUwQTBCQzgwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1NzBEQkE4
MTE0QjU4MDQ5MDBEQUVGQTAgLyogU2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnkuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcwREI3QTgxNEI1Njk2
QTAwREFFRkEwIC8qIFNoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmNwcCAqLzsgfTsKKwkJNTcw
REJBODIxNEI1ODA0QjAwREFFRkEwIC8qIFNoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzBEQjdBOTE0QjU2
OTZBMDBEQUVGQTAgLyogU2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnkuaCAqLzsgfTsKIAkJNTkw
NUFEQkYxMzAyRjNDRTAwRjExNkRGIC8qIFhNTFRyZWVWaWV3ZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTkwNUFEQkQxMzAyRjNDRTAwRjExNkRG
IC8qIFhNTFRyZWVWaWV3ZXIuY3BwICovOyB9OwogCQk1OTA1QURDMDEzMDJGM0NFMDBGMTE2REYg
LyogWE1MVHJlZVZpZXdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTkwNUFEQkUxMzAyRjNDRTAwRjExNkRGIC8qIFhNTFRyZWVWaWV3ZXIuaCAqLzsg
fTsKIAkJNTkwRTFCNDkxMUU0RUY0QjAwNjlGNzg0IC8qIERldmljZU9yaWVudGF0aW9uLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OTBFMUI0ODExRTRF
RjRCMDA2OUY3ODQgLyogRGV2aWNlT3JpZW50YXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtODM3NSw2ICs4Mzc3LDggQEAKIAkJNTNDODI5
OEMxM0Q4RDkyNzAwREUyREVCIC8qIFJlbmRlckZsZXhpYmxlQm94LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlckZsZXhpYmxlQm94Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTU1MEEwQkM3MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50
V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFF1YWxpZmllZE5hbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7
IHVzZXNUYWJzID0gMDsgfTsKIAkJNTUwQTBCQzgwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmll
ZE5hbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
aW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUXVhbGlmaWVkTmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7
IHVzZXNUYWJzID0gMDsgfTsKKwkJNTcwREI3QTgxNEI1Njk2QTAwREFFRkEwIC8qIFNoYWRvd0Nv
bnRlbnRTZWxlY3RvclF1ZXJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFNoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNTcwREI3QTkxNEI1Njk2QTAwREFFRkEwIC8qIFNoYWRvd0NvbnRlbnRTZWxlY3Rv
clF1ZXJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYWRvd0NvbnRlbnRT
ZWxlY3RvclF1ZXJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU5MDVBREJEMTMw
MkYzQ0UwMEYxMTZERiAvKiBYTUxUcmVlVmlld2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFhNTFRyZWVWaWV3ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1OTA1QURCRTEzMDJGM0NFMDBGMTE2REYgLyogWE1MVHJlZVZpZXdlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBYTUxUcmVlVmlld2VyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTU5MEUxQjQ4MTFFNEVGNEIwMDY5Rjc4NCAvKiBEZXZpY2VPcmll
bnRhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEZXZpY2VPcmllbnRh
dGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjA1MTAsNiArMjA1MTQsOCBA
QAogCQkJCUU0NTMyMkFBMTQwQ0UyNjcwMDVBMEY5MiAvKiBTZWxlY3RvclF1ZXJ5LmggKi8sCiAJ
CQkJQTc2NkNGOEIxMzgxMEUwQzAwMTFBMEIzIC8qIFNoYWRvd0NvbnRlbnRFbGVtZW50LmNwcCAq
LywKIAkJCQlBNzRDMkQzQjEzODExRTBEMDBGODM1NzIgLyogU2hhZG93Q29udGVudEVsZW1lbnQu
aCAqLywKKwkJCQk1NzBEQjdBODE0QjU2OTZBMDBEQUVGQTAgLyogU2hhZG93Q29udGVudFNlbGVj
dG9yUXVlcnkuY3BwICovLAorCQkJCTU3MERCN0E5MTRCNTY5NkEwMERBRUZBMCAvKiBTaGFkb3dD
b250ZW50U2VsZWN0b3JRdWVyeS5oICovLAogCQkJCUE3MUMzMEI2MTM4MTI2NUUwMERCQzM1MSAv
KiBTaGFkb3dJbmNsdXNpb25TZWxlY3Rvci5jcHAgKi8sCiAJCQkJQTcxQzMwQjcxMzgxMjY1RTAw
REJDMzUxIC8qIFNoYWRvd0luY2x1c2lvblNlbGVjdG9yLmggKi8sCiAJCQkJQTZEMTY5NjExMzQ2
QjQ5QjAwMEVCNzcwIC8qIFNoYWRvd1Jvb3QuY3BwICovLApAQCAtMjMzNjYsNiArMjMzNzIsNyBA
QAogCQkJCTQ5ODc3MEU5MTI0MkM1MzUwMDIyMjZCQSAvKiBTaGFkZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGM0RENDUwMTJGNUVBMUIwMDBEOTE5MCAvKiBTaGFkb3dCbHVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBNzRDMkQzQzEzODExRTBEMDBGODM1NzIgLyogU2hhZG93Q29udGVudEVsZW1l
bnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTU3MERCQTgyMTRCNTgwNEIwMERBRUZBMCAvKiBTaGFk
b3dDb250ZW50U2VsZWN0b3JRdWVyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1RUI4QzQwRTgy
MDMxQjAwQjI1OTY1IC8qIFNoYWRvd0RhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3MUMzMEI5
MTM4MTI2NUUwMERCQzM1MSAvKiBTaGFkb3dJbmNsdXNpb25TZWxlY3Rvci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTZEMTY5NjQxMzQ2QjRDMTAwMEVCNzcwIC8qIFNoYWRvd1Jvb3QuaCBpbiBIZWFk
ZXJzICovLApAQCAtMjY0MDAsNiArMjY0MDcsNyBAQAogCQkJCTQ5ODc3MEU4MTI0MkM1MzUwMDIy
MjZCQSAvKiBTaGFkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYzREQ0NEYxMkY1RUExQjAw
MEQ5MTkwIC8qIFNoYWRvd0JsdXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTc2NkNGOEMxMzgx
MEUwQzAwMTFBMEIzIC8qIFNoYWRvd0NvbnRlbnRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTU3MERCQTgxMTRCNTgwNDkwMERBRUZBMCAvKiBTaGFkb3dDb250ZW50U2VsZWN0b3JRdWVy
eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzVFQjhDMzBFODIwMzFCMDBCMjU5NjUgLyogU2hh
ZG93RGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzFDMzBCODEzODEyNjVFMDBEQkMzNTEg
LyogU2hhZG93SW5jbHVzaW9uU2VsZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTZEMTY5
NjIxMzQ2QjQ5QjAwMEVCNzcwIC8qIFNoYWRvd1Jvb3QuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NQWxsSW5PbmUuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RPTUFsbEluT25lLmNwcAppbmRleCA1NTA5NDY1M2Y1ZjIzOTQ2ZmQ0NDNlNDg5ZjEz
NzMzMzgxNGZiNjYyLi41NWI2MDUyOGFhYTI5M2NkNjY1YzRjOTIyN2JhODg0Nzg4NWY2YTNlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NQWxsSW5PbmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9ET01BbGxJbk9uZS5jcHAKQEAgLTExMyw2ICsxMTMsNyBAQAogI2luY2x1
ZGUgIlNlY3VyaXR5Q29udGV4dC5jcHAiCiAjaW5jbHVkZSAiU2VsZWN0b3JRdWVyeS5jcHAiCiAj
aW5jbHVkZSAiU2hhZG93Q29udGVudEVsZW1lbnQuY3BwIgorI2luY2x1ZGUgIlNoYWRvd0NvbnRl
bnRTZWxlY3RvclF1ZXJ5LmNwcCIKICNpbmNsdWRlICJTaGFkb3dJbmNsdXNpb25TZWxlY3Rvci5j
cHAiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5jcHAiCiAjaW5jbHVkZSAiU3BhY2VTcGxpdFN0cmlu
Zy5jcHAiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0b3JRdWVyeS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0b3JRdWVyeS5jcHAKaW5kZXggMDgyNjZlZjMxMzZh
OTFhMjhjZjYyMjNkNGE1NWFmZDEyODQyZmFkMi4uYTg4OWY5ZjJiY2E1MGI0YTM3YjJjMDNkNjVh
ZGRlMDZkNjkzNDI1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9yUXVl
cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5LmNwcApAQCAtMzMs
MjcgKzMzLDQ3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU2VsZWN0b3JRdWVyeTo6U2Vs
ZWN0b3JRdWVyeShOb2RlKiByb290Tm9kZSwgY29uc3QgQ1NTU2VsZWN0b3JMaXN0JiBzZWxlY3Rv
ckxpc3QpCi0gICAgOiBtX3Jvb3ROb2RlKHJvb3ROb2RlKQotICAgICwgbV9zZWxlY3RvckNoZWNr
ZXIocm9vdE5vZGUtPmRvY3VtZW50KCksICFyb290Tm9kZS0+ZG9jdW1lbnQoKS0+aW5RdWlya3NN
b2RlKCkpCitTZWxlY3RvckRhdGFMaXN0OjpTZWxlY3RvckRhdGFMaXN0KCkKIHsKLSAgICBtX3Nl
bGVjdG9yQ2hlY2tlci5zZXRDb2xsZWN0aW5nUnVsZXNPbmx5KHRydWUpOworfQorCitTZWxlY3Rv
ckRhdGFMaXN0OjpTZWxlY3RvckRhdGFMaXN0KGNvbnN0IENTU1NlbGVjdG9yTGlzdCYgc2VsZWN0
b3JMaXN0KQoreworICAgIGluaXRpYWxpemUoc2VsZWN0b3JMaXN0KTsKK30KKwordm9pZCBTZWxl
Y3RvckRhdGFMaXN0Ojppbml0aWFsaXplKGNvbnN0IENTU1NlbGVjdG9yTGlzdCYgc2VsZWN0b3JM
aXN0KQoreworICAgIEFTU0VSVChtX3NlbGVjdG9ycy5pc0VtcHR5KCkpOwogCiAgICAgZm9yIChD
U1NTZWxlY3Rvciogc2VsZWN0b3IgPSBzZWxlY3Rvckxpc3QuZmlyc3QoKTsgc2VsZWN0b3I7IHNl
bGVjdG9yID0gQ1NTU2VsZWN0b3JMaXN0OjpuZXh0KHNlbGVjdG9yKSkKICAgICAgICAgbV9zZWxl
Y3RvcnMuYXBwZW5kKFNlbGVjdG9yRGF0YShzZWxlY3RvciwgU2VsZWN0b3JDaGVja2VyOjppc0Zh
c3RDaGVja2FibGVTZWxlY3RvcihzZWxlY3RvcikpKTsKIH0KLSAgICAKLVBhc3NSZWZQdHI8Tm9k
ZUxpc3Q+IFNlbGVjdG9yUXVlcnk6OnF1ZXJ5QWxsKCkgY29uc3QKKworYm9vbCBTZWxlY3RvckRh
dGFMaXN0OjptYXRjaGVzKGNvbnN0IFNlbGVjdG9yQ2hlY2tlciYgc2VsZWN0b3JDaGVja2VyLCBF
bGVtZW50KiB0YXJnZXRFbGVtZW50KSBjb25zdAoreworICAgIEFTU0VSVCh0YXJnZXRFbGVtZW50
KTsKKworICAgIHVuc2lnbmVkIHNlbGVjdG9yQ291bnQgPSBtX3NlbGVjdG9ycy5zaXplKCk7Cisg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNlbGVjdG9yQ291bnQ7ICsraSkgeworICAgICAg
ICBpZiAoc2VsZWN0b3JDaGVja2VyLmNoZWNrU2VsZWN0b3IobV9zZWxlY3RvcnNbaV0uc2VsZWN0
b3IsIHRhcmdldEVsZW1lbnQsIG1fc2VsZWN0b3JzW2ldLmlzRmFzdENoZWNrYWJsZSkpCisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK1Bh
c3NSZWZQdHI8Tm9kZUxpc3Q+IFNlbGVjdG9yRGF0YUxpc3Q6OnF1ZXJ5QWxsKGNvbnN0IFNlbGVj
dG9yQ2hlY2tlciYgc2VsZWN0b3JDaGVja2VyLCBOb2RlKiByb290Tm9kZSkgY29uc3QKIHsKICAg
ICBWZWN0b3I8UmVmUHRyPE5vZGU+ID4gcmVzdWx0OwotICAgIGV4ZWN1dGU8ZmFsc2U+KHJlc3Vs
dCk7CisgICAgZXhlY3V0ZTxmYWxzZT4oc2VsZWN0b3JDaGVja2VyLCByb290Tm9kZSwgcmVzdWx0
KTsKICAgICByZXR1cm4gU3RhdGljTm9kZUxpc3Q6OmFkb3B0KHJlc3VsdCk7CiB9CiAKLVBhc3NS
ZWZQdHI8RWxlbWVudD4gU2VsZWN0b3JRdWVyeTo6cXVlcnlGaXJzdCgpIGNvbnN0IAoteyAKK1Bh
c3NSZWZQdHI8RWxlbWVudD4gU2VsZWN0b3JEYXRhTGlzdDo6cXVlcnlGaXJzdChjb25zdCBTZWxl
Y3RvckNoZWNrZXImIHNlbGVjdG9yQ2hlY2tlciwgTm9kZSogcm9vdE5vZGUpIGNvbnN0Cit7CiAg
ICAgVmVjdG9yPFJlZlB0cjxOb2RlPiA+IHJlc3VsdDsKLSAgICBleGVjdXRlPHRydWU+KHJlc3Vs
dCk7CisgICAgZXhlY3V0ZTx0cnVlPihzZWxlY3RvckNoZWNrZXIsIHJvb3ROb2RlLCByZXN1bHQp
OwogICAgIGlmIChyZXN1bHQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gMDsKICAgICBBU1NF
UlQocmVzdWx0LnNpemUoKSA9PSAxKTsKQEAgLTYxLDcgKzgxLDcgQEAgUGFzc1JlZlB0cjxFbGVt
ZW50PiBTZWxlY3RvclF1ZXJ5OjpxdWVyeUZpcnN0KCkgY29uc3QKICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8RWxlbWVudCo+KHJlc3VsdC5maXJzdCgpLmdldCgpKTsKIH0KIAotYm9vbCBTZWxlY3Rv
clF1ZXJ5OjpjYW5Vc2VJZExvb2t1cCgpIGNvbnN0Citib29sIFNlbGVjdG9yRGF0YUxpc3Q6OmNh
blVzZUlkTG9va3VwKE5vZGUqIHJvb3ROb2RlKSBjb25zdAogewogICAgIC8vIFdlIG5lZWQgdG8g
cmV0dXJuIHRoZSBtYXRjaGVzIGluIGRvY3VtZW50IG9yZGVyLiBUbyB1c2UgaWQgbG9va3VwIHdo
aWxlIHRoZXJlIGlzIHBvc3NpYmxpdHkgb2YgbXVsdGlwbGUgbWF0Y2hlcwogICAgIC8vIHdlIHdv
dWxkIG5lZWQgdG8gc29ydCB0aGUgcmVzdWx0cy4gRm9yIG5vdywganVzdCB0cmF2ZXJzZSB0aGUg
ZG9jdW1lbnQgaW4gdGhhdCBjYXNlLgpAQCAtNjksMzcgKzg5LDM3IEBAIGJvb2wgU2VsZWN0b3JR
dWVyeTo6Y2FuVXNlSWRMb29rdXAoKSBjb25zdAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
aWYgKG1fc2VsZWN0b3JzWzBdLnNlbGVjdG9yLT5tX21hdGNoICE9IENTU1NlbGVjdG9yOjpJZCkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghbV9yb290Tm9kZS0+aW5Eb2N1bWVudCgp
KQorICAgIGlmICghcm9vdE5vZGUtPmluRG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIGlmIChtX3Jvb3ROb2RlLT5kb2N1bWVudCgpLT5pblF1aXJrc01vZGUoKSkKKyAgICBp
ZiAocm9vdE5vZGUtPmRvY3VtZW50KCktPmluUXVpcmtzTW9kZSgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgaWYgKG1fcm9vdE5vZGUtPmRvY3VtZW50KCktPmNvbnRhaW5zTXVsdGlwbGVF
bGVtZW50c1dpdGhJZChtX3NlbGVjdG9yc1swXS5zZWxlY3Rvci0+dmFsdWUoKSkpCisgICAgaWYg
KHJvb3ROb2RlLT5kb2N1bWVudCgpLT5jb250YWluc011bHRpcGxlRWxlbWVudHNXaXRoSWQobV9z
ZWxlY3RvcnNbMF0uc2VsZWN0b3ItPnZhbHVlKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKIHRlbXBsYXRlIDxib29sIGZpcnN0TWF0Y2hPbmx5Pgotdm9p
ZCBTZWxlY3RvclF1ZXJ5OjpleGVjdXRlKFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiYgbWF0Y2hlZEVs
ZW1lbnRzKSBjb25zdAordm9pZCBTZWxlY3RvckRhdGFMaXN0OjpleGVjdXRlKGNvbnN0IFNlbGVj
dG9yQ2hlY2tlciYgc2VsZWN0b3JDaGVja2VyLCBOb2RlKiByb290Tm9kZSwgVmVjdG9yPFJlZlB0
cjxOb2RlPiA+JiBtYXRjaGVkRWxlbWVudHMpIGNvbnN0CiB7Ci0gICAgaWYgKGNhblVzZUlkTG9v
a3VwKCkpIHsKKyAgICBpZiAoY2FuVXNlSWRMb29rdXAocm9vdE5vZGUpKSB7CiAgICAgICAgIEFT
U0VSVChtX3NlbGVjdG9ycy5zaXplKCkgPT0gMSk7CiAgICAgICAgIENTU1NlbGVjdG9yKiBzZWxl
Y3RvciA9IG1fc2VsZWN0b3JzWzBdLnNlbGVjdG9yOwotICAgICAgICBFbGVtZW50KiBlbGVtZW50
ID0gbV9yb290Tm9kZS0+ZG9jdW1lbnQoKS0+Z2V0RWxlbWVudEJ5SWQoc2VsZWN0b3ItPnZhbHVl
KCkpOwotICAgICAgICBpZiAoIWVsZW1lbnQgfHwgIShtX3Jvb3ROb2RlLT5pc0RvY3VtZW50Tm9k
ZSgpIHx8IGVsZW1lbnQtPmlzRGVzY2VuZGFudE9mKG1fcm9vdE5vZGUpKSkKKyAgICAgICAgRWxl
bWVudCogZWxlbWVudCA9IHJvb3ROb2RlLT5kb2N1bWVudCgpLT5nZXRFbGVtZW50QnlJZChzZWxl
Y3Rvci0+dmFsdWUoKSk7CisgICAgICAgIGlmICghZWxlbWVudCB8fCAhKHJvb3ROb2RlLT5pc0Rv
Y3VtZW50Tm9kZSgpIHx8IGVsZW1lbnQtPmlzRGVzY2VuZGFudE9mKHJvb3ROb2RlKSkpCiAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIGlmIChtX3NlbGVjdG9yQ2hlY2tlci5jaGVja1NlbGVj
dG9yKHNlbGVjdG9yLCBlbGVtZW50LCBtX3NlbGVjdG9yc1swXS5pc0Zhc3RDaGVja2FibGUpKQor
ICAgICAgICBpZiAoc2VsZWN0b3JDaGVja2VyLmNoZWNrU2VsZWN0b3IobV9zZWxlY3RvcnNbMF0u
c2VsZWN0b3IsIGVsZW1lbnQsIG1fc2VsZWN0b3JzWzBdLmlzRmFzdENoZWNrYWJsZSkpCiAgICAg
ICAgICAgICBtYXRjaGVkRWxlbWVudHMuYXBwZW5kKGVsZW1lbnQpOwogICAgICAgICByZXR1cm47
CiAgICAgfQotICAgIAorCiAgICAgdW5zaWduZWQgc2VsZWN0b3JDb3VudCA9IG1fc2VsZWN0b3Jz
LnNpemUoKTsKLSAgICAKLSAgICBOb2RlKiBuID0gbV9yb290Tm9kZS0+Zmlyc3RDaGlsZCgpOwor
CisgICAgTm9kZSogbiA9IHJvb3ROb2RlLT5maXJzdENoaWxkKCk7CiAgICAgd2hpbGUgKG4pIHsK
ICAgICAgICAgaWYgKG4tPmlzRWxlbWVudE5vZGUoKSkgewogICAgICAgICAgICAgRWxlbWVudCog
ZWxlbWVudCA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihuKTsKICAgICAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBzZWxlY3RvckNvdW50OyArK2kpIHsKLSAgICAgICAgICAgICAgICBp
ZiAobV9zZWxlY3RvckNoZWNrZXIuY2hlY2tTZWxlY3RvcihtX3NlbGVjdG9yc1tpXS5zZWxlY3Rv
ciwgZWxlbWVudCwgbV9zZWxlY3RvcnNbaV0uaXNGYXN0Q2hlY2thYmxlKSkgeworICAgICAgICAg
ICAgICAgIGlmIChzZWxlY3RvckNoZWNrZXIuY2hlY2tTZWxlY3RvcihtX3NlbGVjdG9yc1tpXS5z
ZWxlY3RvciwgZWxlbWVudCwgbV9zZWxlY3RvcnNbaV0uaXNGYXN0Q2hlY2thYmxlKSkgewogICAg
ICAgICAgICAgICAgICAgICBtYXRjaGVkRWxlbWVudHMuYXBwZW5kKGVsZW1lbnQpOwogICAgICAg
ICAgICAgICAgICAgICBpZiAoZmlyc3RNYXRjaE9ubHkpCiAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm47CkBAIC0xMTMsMTEgKzEzMywyOSBAQCB2b2lkIFNlbGVjdG9yUXVlcnk6OmV4ZWN1
dGUoVmVjdG9yPFJlZlB0cjxOb2RlPiA+JiBtYXRjaGVkRWxlbWVudHMpIGNvbnN0CiAgICAgICAg
IH0KICAgICAgICAgd2hpbGUgKCFuLT5uZXh0U2libGluZygpKSB7CiAgICAgICAgICAgICBuID0g
bi0+cGFyZW50Tm9kZSgpOwotICAgICAgICAgICAgaWYgKG4gPT0gbV9yb290Tm9kZSkKKyAgICAg
ICAgICAgIGlmIChuID09IHJvb3ROb2RlKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogICAgICAgICBuID0gbi0+bmV4dFNpYmxpbmcoKTsKICAgICB9CiB9CiAKK1NlbGVjdG9y
UXVlcnk6OlNlbGVjdG9yUXVlcnkoTm9kZSogcm9vdE5vZGUsIGNvbnN0IENTU1NlbGVjdG9yTGlz
dCYgc2VsZWN0b3JMaXN0KQorICAgIDogbV9yb290Tm9kZShyb290Tm9kZSkKKyAgICAsIG1fc2Vs
ZWN0b3JDaGVja2VyKHJvb3ROb2RlLT5kb2N1bWVudCgpLCAhcm9vdE5vZGUtPmRvY3VtZW50KCkt
PmluUXVpcmtzTW9kZSgpKQorICAgICwgbV9zZWxlY3RvcnMoc2VsZWN0b3JMaXN0KQoreworICAg
IG1fc2VsZWN0b3JDaGVja2VyLnNldENvbGxlY3RpbmdSdWxlc09ubHkodHJ1ZSk7Cit9CisKK1Bh
c3NSZWZQdHI8Tm9kZUxpc3Q+IFNlbGVjdG9yUXVlcnk6OnF1ZXJ5QWxsKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9zZWxlY3RvcnMucXVlcnlBbGwobV9zZWxlY3RvckNoZWNrZXIsIG1fcm9vdE5v
ZGUpOworfQorCitQYXNzUmVmUHRyPEVsZW1lbnQ+IFNlbGVjdG9yUXVlcnk6OnF1ZXJ5Rmlyc3Qo
KSBjb25zdAoreworICAgIHJldHVybiBtX3NlbGVjdG9ycy5xdWVyeUZpcnN0KG1fc2VsZWN0b3JD
aGVja2VyLCBtX3Jvb3ROb2RlKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL1NlbGVjdG9yUXVlcnkuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5LmgK
aW5kZXggYjk2OTgyMzc4NDNiYmM1ZWVmOWFiNTcxNGMyZDY0ZWYxYjg4MTk3Mi4uMGYxMDY3OGFk
ZDgyMWM4MzBjYzY1ZTc3MjNjNGExZjkzMWE2NDc3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL1NlbGVjdG9yUXVlcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0b3JR
dWVyeS5oCkBAIC0zNywyOCArMzcsNDQgQEAgY2xhc3MgRWxlbWVudDsKIGNsYXNzIENTU1NlbGVj
dG9yOwogY2xhc3MgQ1NTU2VsZWN0b3JMaXN0OwogCi1jbGFzcyBTZWxlY3RvclF1ZXJ5IHsKLSAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShTZWxlY3RvclF1ZXJ5KTsKK2NsYXNzIFNlbGVjdG9yRGF0
YUxpc3QgewogcHVibGljOgotICAgIFNlbGVjdG9yUXVlcnkoTm9kZSogcm9vdE5vZGUsIGNvbnN0
IENTU1NlbGVjdG9yTGlzdCYpOwotICAgIAotICAgIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IHF1ZXJ5
QWxsKCkgY29uc3Q7Ci0gICAgUGFzc1JlZlB0cjxFbGVtZW50PiBxdWVyeUZpcnN0KCkgY29uc3Q7
CisgICAgU2VsZWN0b3JEYXRhTGlzdCgpOworICAgIGV4cGxpY2l0IFNlbGVjdG9yRGF0YUxpc3Qo
Y29uc3QgQ1NTU2VsZWN0b3JMaXN0Jik7CiAKLXByaXZhdGU6Ci0gICAgYm9vbCBjYW5Vc2VJZExv
b2t1cCgpIGNvbnN0OworICAgIHZvaWQgaW5pdGlhbGl6ZShjb25zdCBDU1NTZWxlY3Rvckxpc3Qm
KTsKIAotICAgIHRlbXBsYXRlIDxib29sIGZpcnN0TWF0Y2hPbmx5PgotICAgIHZvaWQgZXhlY3V0
ZShWZWN0b3I8UmVmUHRyPE5vZGU+ID4mKSBjb25zdDsKLSAgICAKKyAgICBpbnQgc2l6ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc2VsZWN0b3JzLnNpemUoKTsgfQorCisgICAgYm9vbCBtYXRjaGVzKGNv
bnN0IFNlbGVjdG9yQ2hlY2tlciYsIEVsZW1lbnQqKSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPE5v
ZGVMaXN0PiBxdWVyeUFsbChjb25zdCBTZWxlY3RvckNoZWNrZXImLCBOb2RlKiByb290Tm9kZSkg
Y29uc3Q7CisgICAgUGFzc1JlZlB0cjxFbGVtZW50PiBxdWVyeUZpcnN0KGNvbnN0IFNlbGVjdG9y
Q2hlY2tlciYsIE5vZGUqIHJvb3ROb2RlKSBjb25zdDsKKworcHJpdmF0ZToKICAgICBzdHJ1Y3Qg
U2VsZWN0b3JEYXRhIHsKICAgICAgICAgU2VsZWN0b3JEYXRhKENTU1NlbGVjdG9yKiBzZWxlY3Rv
ciwgYm9vbCBpc0Zhc3RDaGVja2FibGUpIDogc2VsZWN0b3Ioc2VsZWN0b3IpLCBpc0Zhc3RDaGVj
a2FibGUoaXNGYXN0Q2hlY2thYmxlKSB7IH0KICAgICAgICAgQ1NTU2VsZWN0b3IqIHNlbGVjdG9y
OwogICAgICAgICBib29sIGlzRmFzdENoZWNrYWJsZTsKICAgICB9OwotICAgIE5vZGUqIG1fcm9v
dE5vZGU7CisKKyAgICBib29sIGNhblVzZUlkTG9va3VwKE5vZGUqIHJvb3ROb2RlKSBjb25zdDsK
KyAgICB0ZW1wbGF0ZSA8Ym9vbCBmaXJzdE1hdGNoT25seT4KKyAgICB2b2lkIGV4ZWN1dGUoY29u
c3QgU2VsZWN0b3JDaGVja2VyJiwgTm9kZSogcm9vdE5vZGUsIFZlY3RvcjxSZWZQdHI8Tm9kZT4g
PiYpIGNvbnN0OworCiAgICAgVmVjdG9yPFNlbGVjdG9yRGF0YT4gbV9zZWxlY3RvcnM7Cit9Owor
CitjbGFzcyBTZWxlY3RvclF1ZXJ5IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTZWxlY3Rv
clF1ZXJ5KTsKK3B1YmxpYzoKKyAgICBTZWxlY3RvclF1ZXJ5KE5vZGUqIHJvb3ROb2RlLCBjb25z
dCBDU1NTZWxlY3Rvckxpc3QmKTsKKworICAgIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IHF1ZXJ5QWxs
KCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxFbGVtZW50PiBxdWVyeUZpcnN0KCkgY29uc3Q7Citw
cml2YXRlOgorICAgIE5vZGUqIG1fcm9vdE5vZGU7CiAgICAgU2VsZWN0b3JDaGVja2VyIG1fc2Vs
ZWN0b3JDaGVja2VyOworICAgIFNlbGVjdG9yRGF0YUxpc3QgbV9zZWxlY3RvcnM7CiB9OwogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Q29udGVudEVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50LmNwcAppbmRleCBlY2Vl
NmQwYzdlZTc2ZmRkNzI1ZTJmZGNmODcyZGQyYmI5M2M5N2JiLi42M2JjZjAxZTMwZjA5OGI2MTJl
YTk3NDZkMjAzM2JjNzU3NTc5ZTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hh
ZG93Q29udGVudEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dDb250
ZW50RWxlbWVudC5jcHAKQEAgLTI4LDExICsyOCwxNiBAQAogI2luY2x1ZGUgIlNoYWRvd0NvbnRl
bnRFbGVtZW50LmgiCiAKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJRdWFsaWZp
ZWROYW1lLmgiCisjaW5jbHVkZSAiU2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnkuaCIKICNpbmNs
dWRlICJTaGFkb3dJbmNsdXNpb25TZWxlY3Rvci5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIK
KyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
dXNpbmcgSFRNTE5hbWVzOjpzZWxlY3RBdHRyOworCiBQYXNzUmVmUHRyPFNoYWRvd0NvbnRlbnRF
bGVtZW50PiBTaGFkb3dDb250ZW50RWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkK
IHsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFF1YWxpZmllZE5hbWUsIHRhZ05hbWUsIChudWxs
QXRvbSwgIndlYmtpdFNoYWRvd0NvbnRlbnQiLCBIVE1MTmFtZXM6OmRpdlRhZy5uYW1lc3BhY2VV
UkkoKSkpOwpAQCAtNzYsMTAgKzgxLDE0IEBAIHZvaWQgU2hhZG93Q29udGVudEVsZW1lbnQ6OmRl
dGFjaCgpCiAgICAgU3R5bGVkRWxlbWVudDo6ZGV0YWNoKCk7CiB9CiAKLWJvb2wgU2hhZG93Q29u
dGVudEVsZW1lbnQ6OnNob3VsZEluY2x1ZGUoTm9kZSopCitjb25zdCBBdG9taWNTdHJpbmcmIFNo
YWRvd0NvbnRlbnRFbGVtZW50OjpzZWxlY3QoKSBjb25zdAogewotICAgIHJldHVybiB0cnVlOwor
ICAgIHJldHVybiBnZXRBdHRyaWJ1dGUoc2VsZWN0QXR0cik7CiB9CiAKK3ZvaWQgU2hhZG93Q29u
dGVudEVsZW1lbnQ6OnNldFNlbGVjdChjb25zdCBBdG9taWNTdHJpbmcmIHNlbGVjdFZhbHVlKQor
eworICAgIHNldEF0dHJpYnV0ZShzZWxlY3RBdHRyLCBzZWxlY3RWYWx1ZSk7Cit9CiAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dDb250ZW50RWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50LmgKaW5kZXggN2IzNjY2MjFiN2I5
NjNhNDMwZmMxNDMwOWJkNDY1ZWFlZGZhMDRhNC4uYWNlNDdhZGMxMTNmZmEzODNjZDI5OGU4MTRj
YTRiN2Q5YjhkY2ZmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0NvbnRl
bnRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50
LmgKQEAgLTM2LDYgKzM2LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBTaGFk
b3dDb250ZW50U2VsZWN0b3JRdWVyeTsKIGNsYXNzIFNoYWRvd0luY2x1c2lvbkxpc3Q7CiAKIC8v
IE5PVEU6IEN1cnJlbnQgaW1wbGVtZW50YXRpb24gZG9lc24ndCBzdXBwb3J0IGR5bmFtaWMgaW5z
ZXJ0aW9uL2RlbGV0aW9uIG9mIFNoYWRvd0NvbnRlbnRFbGVtZW50LgpAQCAtNDUsMTAgKzQ2LDE4
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTaGFkb3dDb250ZW50RWxlbWVudD4g
Y3JlYXRlKERvY3VtZW50Kik7CiAKICAgICB2aXJ0dWFsIH5TaGFkb3dDb250ZW50RWxlbWVudCgp
OwotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRJbmNsdWRlKE5vZGUqKTsKICAgICB2aXJ0dWFsIHZv
aWQgYXR0YWNoKCk7CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaCgpOwogCisgICAgY29uc3QgQXRv
bWljU3RyaW5nJiBzZWxlY3QoKSBjb25zdDsKKworICAgIC8vIEZJWE1FOiBDdXJyZW50bHkgdGhp
cyBjb25zdHJ1Y3RvciBhY2NlcHRzIHdpZGVyIHF1ZXJ5IHRoYW4gc2hhZG93IGRvbSBzcGVjLgor
ICAgIC8vIEZvciBleGFtcGxlLCBhIHNlbGVjdG9yIHF1ZXJ5IHNob3VsZCBub3QgaW5jbHVkZSBj
b250ZXh0dWFsIHNlbGVjdG9ycy4KKyAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTc1OTQ2CisgICAgLy8gRklYTUU6IEN1cnJlbnRseSB3ZSBkb24ndCBz
dXBwb3J0IHNldHRpbmcgc2VsZWN0IHZhbHVlIGR5bmFtaWNhbGx5LgorICAgIC8vIFNlZSBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYyNjEKKyAgICB2b2lkIHNldFNl
bGVjdChjb25zdCBBdG9taWNTdHJpbmcmKTsKKwogICAgIGNvbnN0IFNoYWRvd0luY2x1c2lvbkxp
c3QqIGluY2x1c2lvbnMoKSBjb25zdCB7IHJldHVybiBtX2luY2x1c2lvbnMuZ2V0KCk7IH0KIAog
cHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0NvbnRlbnRT
ZWxlY3RvclF1ZXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dDb250ZW50U2VsZWN0
b3JRdWVyeS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWEwNjFlNzg2N2IyNWJlNWZlYWYxY2JmNGY3NDQ4ZDIz
OWI3NDJjYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dDb250
ZW50U2VsZWN0b3JRdWVyeS5jcHAKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJTaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeS5oIgorCisjaW5jbHVkZSAi
Q1NTUGFyc2VyLmgiCisjaW5jbHVkZSAiQ1NTU2VsZWN0b3JMaXN0LmgiCisjaW5jbHVkZSAiU2hh
ZG93Q29udGVudEVsZW1lbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitTaGFkb3dDb250
ZW50U2VsZWN0b3JRdWVyeTo6U2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnkoU2hhZG93Q29udGVu
dEVsZW1lbnQqIGVsZW1lbnQpCisgICAgOiBtX2NvbnRlbnRFbGVtZW50KGVsZW1lbnQpCisgICAg
LCBtX3NlbGVjdG9yQ2hlY2tlcihlbGVtZW50LT5kb2N1bWVudCgpLCAhZWxlbWVudC0+ZG9jdW1l
bnQoKS0+aW5RdWlya3NNb2RlKCkpCit7CisgICAgbV9zZWxlY3RvckNoZWNrZXIuc2V0Q29sbGVj
dGluZ1J1bGVzT25seSh0cnVlKTsKKworICAgIGlmIChlbGVtZW50LT5zZWxlY3QoKS5pc051bGwo
KSB8fCBlbGVtZW50LT5zZWxlY3QoKS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAg
IENTU1BhcnNlciBwYXJzZXIodHJ1ZSk7CisgICAgcGFyc2VyLnBhcnNlU2VsZWN0b3IoZWxlbWVu
dC0+c2VsZWN0KCksIGVsZW1lbnQtPmRvY3VtZW50KCksIG1fc2VsZWN0b3JMaXN0KTsKKworICAg
IG1fc2VsZWN0b3JzLmluaXRpYWxpemUobV9zZWxlY3Rvckxpc3QpOworfQorCitib29sIFNoYWRv
d0NvbnRlbnRTZWxlY3RvclF1ZXJ5OjptYXRjaGVzKE5vZGUqIG5vZGUpIGNvbnN0Cit7CisgICAg
QVNTRVJUKG5vZGUpOworICAgIGlmICghbm9kZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgQVNTRVJUKG5vZGUtPnBhcmVudE5vZGUoKSA9PSBtX2NvbnRlbnRFbGVtZW50LT5zaGFkb3dU
cmVlUm9vdE5vZGUoKS0+c2hhZG93SG9zdCgpKTsKKworICAgIGlmIChtX2NvbnRlbnRFbGVtZW50
LT5zZWxlY3QoKS5pc051bGwoKSB8fCBtX2NvbnRlbnRFbGVtZW50LT5zZWxlY3QoKS5pc0VtcHR5
KCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKCFub2RlLT5pc0VsZW1lbnROb2Rl
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBtX3NlbGVjdG9ycy5tYXRj
aGVzKG1fc2VsZWN0b3JDaGVja2VyLCB0b0VsZW1lbnQobm9kZSkpOworfQorCit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnkuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmQ1Njg3M2IzNDMwYzNhMmMyNDdhMTgwYWU0ZGEzZGIxMDRmMDczMGEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Q29udGVudFNlbGVjdG9yUXVlcnkuaApAQCAt
MCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBt
ZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBTaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeV9oCisjZGVmaW5l
IFNoYWRvd0NvbnRlbnRTZWxlY3RvclF1ZXJ5X2gKKworI2luY2x1ZGUgIkNTU1NlbGVjdG9yTGlz
dC5oIgorI2luY2x1ZGUgIlNlbGVjdG9yQ2hlY2tlci5oIgorI2luY2x1ZGUgIlNlbGVjdG9yUXVl
cnkuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBEb2N1bWVudDsKK2NsYXNzIE5vZGU7Citj
bGFzcyBTaGFkb3dDb250ZW50RWxlbWVudDsKKworY2xhc3MgU2hhZG93Q29udGVudFNlbGVjdG9y
UXVlcnkgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNoYWRvd0NvbnRlbnRTZWxlY3RvclF1
ZXJ5KTsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBTaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeShT
aGFkb3dDb250ZW50RWxlbWVudCopOworCisgICAgYm9vbCBtYXRjaGVzKE5vZGUqKSBjb25zdDsK
KworcHJpdmF0ZToKKyAgICBTaGFkb3dDb250ZW50RWxlbWVudCogbV9jb250ZW50RWxlbWVudDsK
KyAgICBTZWxlY3RvckRhdGFMaXN0IG1fc2VsZWN0b3JzOworICAgIENTU1NlbGVjdG9yTGlzdCBt
X3NlbGVjdG9yTGlzdDsKKyAgICBTZWxlY3RvckNoZWNrZXIgbV9zZWxlY3RvckNoZWNrZXI7Cit9
OworCit9CisKKworCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFk
b3dJbmNsdXNpb25TZWxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93SW5jbHVz
aW9uU2VsZWN0b3IuY3BwCmluZGV4IDk4NDFmNTU2NDg4N2M4OTYzNDUzNzQ5ZjIzNzE2NmNhMmU0
NWUxMDUuLjU3ZTlkNDJiZTUxYjVlNDUyYzRkNDA1NGUyMGJhNGM3Yjg1NTQ4YTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dJbmNsdXNpb25TZWxlY3Rvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0luY2x1c2lvblNlbGVjdG9yLmNwcApAQCAtMjgsNiAr
MjgsNyBAQAogI2luY2x1ZGUgIlNoYWRvd0luY2x1c2lvblNlbGVjdG9yLmgiCiAKICNpbmNsdWRl
ICJTaGFkb3dDb250ZW50RWxlbWVudC5oIgorI2luY2x1ZGUgIlNoYWRvd0NvbnRlbnRTZWxlY3Rv
clF1ZXJ5LmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgogCiAKQEAgLTExMSwxMSArMTEyLDEy
IEBAIHZvaWQgU2hhZG93SW5jbHVzaW9uU2VsZWN0b3I6OnNlbGVjdChTaGFkb3dDb250ZW50RWxl
bWVudCogY29udGVudEVsZW1lbnQsIFNoYWRvCiB7CiAgICAgQVNTRVJUKGluY2x1c2lvbnMtPmlz
RW1wdHkoKSk7CiAKKyAgICBTaGFkb3dDb250ZW50U2VsZWN0b3JRdWVyeSBxdWVyeShjb250ZW50
RWxlbWVudCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2NhbmRpZGF0ZXMuc2l6ZSgp
OyArK2kpIHsKICAgICAgICAgTm9kZSogY2hpbGQgPSBtX2NhbmRpZGF0ZXNbaV0uZ2V0KCk7CiAg
ICAgICAgIGlmICghY2hpbGQpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKCFj
b250ZW50RWxlbWVudC0+c2hvdWxkSW5jbHVkZShjaGlsZCkpCisgICAgICAgIGlmICghcXVlcnku
bWF0Y2hlcyhjaGlsZCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBSZWZQdHI8
U2hhZG93SW5jbHVzaW9uPiBpbmNsdXNpb24gPSBTaGFkb3dJbmNsdXNpb246OmNyZWF0ZShjb250
ZW50RWxlbWVudCwgY2hpbGQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRv
d0luY2x1c2lvblNlbGVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93SW5jbHVzaW9u
U2VsZWN0b3IuaAppbmRleCBmMWFkYWVlM2Y1NDNhODFjM2ZlZmJmYzQ2ZTAxYjFmZDdmM2IwZThm
Li5kMWE4NzE3NDQxYjE5YzJkNmFmYTBlOGYzNDA3NTg0MTAyMThiNGU1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vU2hhZG93SW5jbHVzaW9uU2VsZWN0b3IuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2hhZG93SW5jbHVzaW9uU2VsZWN0b3IuaApAQCAtMTM3LDcgKzEzNyw2IEBA
IHB1YmxpYzoKICAgICB2b2lkIGRpZFNlbGVjdCgpOwogICAgIGJvb2wgaGFzQ2FuZGlkYXRlcygp
IGNvbnN0IHsgcmV0dXJuICFtX2NhbmRpZGF0ZXMuaXNFbXB0eSgpOyB9CiAKLQogcHJpdmF0ZToK
ICAgICB2b2lkIHJlbW92ZUZyb21TZXQoU2hhZG93SW5jbHVzaW9uTGlzdCopOwogICAgIHZvaWQg
YWRkVG9TZXQoU2hhZG93SW5jbHVzaW9uTGlzdCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4gYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxB
dHRyaWJ1dGVOYW1lcy5pbgppbmRleCBhNmRkYTk0YjljN2FjMzVmZjA4YTRjZjYzYzI5MmFmN2I0
Yjc0OTQ4Li42MGQ5NmQ1M2Q4MmJlODFhYTJiYjA1MWMzMThkYmU1YjY4OWIyMTIyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgpAQCAtMjc5LDYgKzI3OSw3IEBA
IHNjb3BlZAogc2Nyb2xsYW1vdW50CiBzY3JvbGxkZWxheQogc2Nyb2xsaW5nCitzZWxlY3QKIHNl
bGVjdGVkCiBzaGFwZQogc2l6ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RGV0YWlsc0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1l
bnQuY3BwCmluZGV4IGZhZDlhZjgwNDQxNDU3MGMxZTc2Y2EyOGM1ZWI1YjE2MjdjNzAyMjAuLmFh
YTA1ZTE0NTc0ZDQwNzlmY2UwOGUxNTY2Y2UwYmJkZDY0ZjczNjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHAKQEAgLTM2LDYgKzM2LDEyIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAorc3RhdGljIGNvbnN0
IEF0b21pY1N0cmluZyYgc3VtbWFyeVF1ZXJ5U2VsZWN0b3IoKQoreworICAgIERFRklORV9TVEFU
SUNfTE9DQUwoQXRvbWljU3RyaW5nLCBzZWxlY3RvciwgKCJzdW1tYXJ5OmZpcnN0LW9mLXR5cGUi
KSk7CisgICAgcmV0dXJuIHNlbGVjdG9yOworfTsKKwogY2xhc3MgRGV0YWlsc0NvbnRlbnRFbGVt
ZW50IDogcHVibGljIFNoYWRvd0NvbnRlbnRFbGVtZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxEZXRhaWxzQ29udGVudEVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCopOwpAQCAt
NDUsOCArNTEsNiBAQCBwcml2YXRlOgogICAgICAgICA6IFNoYWRvd0NvbnRlbnRFbGVtZW50KEhU
TUxOYW1lczo6ZGl2VGFnLCBkb2N1bWVudCkKICAgICB7CiAgICAgfQotCi0gICAgdmlydHVhbCBi
b29sIHNob3VsZEluY2x1ZGUoTm9kZSopOwogfTsKIAogUGFzc1JlZlB0cjxEZXRhaWxzQ29udGVu
dEVsZW1lbnQ+IERldGFpbHNDb250ZW50RWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVu
dCkKQEAgLTU0LDEzICs1OCw2IEBAIFBhc3NSZWZQdHI8RGV0YWlsc0NvbnRlbnRFbGVtZW50PiBE
ZXRhaWxzQ29udGVudEVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lCiAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBEZXRhaWxzQ29udGVudEVsZW1lbnQoZG9jdW1lbnQpKTsKIH0KIAotYm9v
bCBEZXRhaWxzQ29udGVudEVsZW1lbnQ6OnNob3VsZEluY2x1ZGUoTm9kZSogbm9kZSkKLXsKLSAg
ICBIVE1MRGV0YWlsc0VsZW1lbnQqIGRldGFpbHMgPSBzdGF0aWNfY2FzdDxIVE1MRGV0YWlsc0Vs
ZW1lbnQqPihzaGFkb3dBbmNlc3Rvck5vZGUoKSk7Ci0gICAgcmV0dXJuIGRldGFpbHMtPm1haW5T
dW1tYXJ5KCkgIT0gbm9kZTsKLX0KLQotCiBjbGFzcyBEZXRhaWxzU3VtbWFyeUVsZW1lbnQgOiBw
dWJsaWMgU2hhZG93Q29udGVudEVsZW1lbnQgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVm
UHRyPERldGFpbHNTdW1tYXJ5RWxlbWVudD4gY3JlYXRlKERvY3VtZW50Kik7CkBAIC02OSw5ICs2
Niw4IEBAIHByaXZhdGU6CiAgICAgRGV0YWlsc1N1bW1hcnlFbGVtZW50KERvY3VtZW50KiBkb2N1
bWVudCkKICAgICAgICAgOiBTaGFkb3dDb250ZW50RWxlbWVudChIVE1MTmFtZXM6OmRpdlRhZywg
ZG9jdW1lbnQpCiAgICAgeworICAgICAgICBzZXRTZWxlY3Qoc3VtbWFyeVF1ZXJ5U2VsZWN0b3Io
KSk7CiAgICAgfQotCi0gICAgdmlydHVhbCBib29sIHNob3VsZEluY2x1ZGUoTm9kZSopOwogfTsK
IAogUGFzc1JlZlB0cjxEZXRhaWxzU3VtbWFyeUVsZW1lbnQ+IERldGFpbHNTdW1tYXJ5RWxlbWVu
dDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKQEAgLTc5LDEzICs3NSw2IEBAIFBhc3NSZWZQ
dHI8RGV0YWlsc1N1bW1hcnlFbGVtZW50PiBEZXRhaWxzU3VtbWFyeUVsZW1lbnQ6OmNyZWF0ZShE
b2N1bWVudCogZG9jdW1lCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBEZXRhaWxzU3VtbWFyeUVs
ZW1lbnQoZG9jdW1lbnQpKTsKIH0KIAotYm9vbCBEZXRhaWxzU3VtbWFyeUVsZW1lbnQ6OnNob3Vs
ZEluY2x1ZGUoTm9kZSogbm9kZSkKLXsKLSAgICBIVE1MRGV0YWlsc0VsZW1lbnQqIGRldGFpbHMg
PSBzdGF0aWNfY2FzdDxIVE1MRGV0YWlsc0VsZW1lbnQqPihzaGFkb3dBbmNlc3Rvck5vZGUoKSk7
Ci0gICAgcmV0dXJuIGRldGFpbHMtPm1haW5TdW1tYXJ5KCkgPT0gbm9kZTsKLX0KLQotCiBQYXNz
UmVmUHRyPEhUTUxEZXRhaWxzRWxlbWVudD4gSFRNTERldGFpbHNFbGVtZW50OjpjcmVhdGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogewogICAgIFJl
ZlB0cjxIVE1MRGV0YWlsc0VsZW1lbnQ+IHJlc3VsdCA9IGFkb3B0UmVmKG5ldyBIVE1MRGV0YWls
c0VsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBkMTBlOTE0ZTIzOTU5OTMwZTdm
MTIyN2EzMTQyNGM1ZGNjNWNlYjY2Li5lNmRjNTQwOTc0YzYyYzUxYTBmYWQ3NWNhNTI3MzA5ODFi
ZjdmNmIwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDEtMTMgIFNoaW55YSBLYXdhbmFr
YSAgPHNoaW55YWtAZ29vZ2xlLmNvbT4KKworICAgICAgICBTaGFkb3dDb250ZW50RWxlbWVudCBz
aG91bGQgYmUgYWJsZSB0byB1c2UgcXVlcnkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03NTMwMgorCisgICAgICAgIFJldmlld2VkIGJ5IEhhamltZSBN
b3JpdGEuCisKKyAgICAgICAgVGVzdHMgZm9yIFNoYWRvd0NvbnRlbnRFbGVtZW50IHF1ZXJ5Lgor
CisgICAgICAgICogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1jb250ZW50cy1zZWxlY3QtZXhwZWN0
ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1jb250ZW50
cy1zZWxlY3QuaHRtbDogQWRkZWQuCisKIDIwMTItMDEtMTIgIEVtaWwgQSBFa2x1bmQgIDxlYWVA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIEFkZCBtYWMtc25vd2xlb3BhcmQgcGl4ZWwgcmVzdWx0
cyBmb3IgdGVzdHMgd2l0aCBzY3JvbGxiYXJzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9zaGFkb3cvc2hhZG93LWNvbnRlbnRzLXNlbGVjdC1leHBlY3RlZC5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1jb250ZW50cy1zZWxlY3QtZXhwZWN0ZWQuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wMzc5NjViYTJjOTI3YmMyNDg2OTU4NDUzYzFjYzY3NTI5NzNlNWUyCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1jb250
ZW50cy1zZWxlY3QtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDQxIEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+CisvKiByZWxhdGl2ZSBwb3NpdGlvbmluZyBlbnN1
cmVzIHVuZGVybHlpbmcgUmVuZGVyTGF5ZXIgKi8KKy5jb250YWluZXIgeworICAgIHBvc2l0aW9u
OiByZWxhdGl2ZTsKK30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImNvbnRh
aW5lciI+Cis8IS0tIHRlc3RTZWxlY3RJc051bGwgLS0+Cis8ZGl2PjxzcGFuPkhlbGxvLDwvc3Bh
bj48c3Bhbj5jb250ZW50PC9zcGFuPjxzcGFuPldvcmxkLjwvc3Bhbj48L2Rpdj4KKzwhLS0gdGVz
dFNlbGVjdElzSWQgLS0+Cis8ZGl2PjxzcGFuPkhlbGxvLDwvc3Bhbj48c3Bhbj5jb250ZW50PC9z
cGFuPjxzcGFuPldvcmxkLjwvc3Bhbj48L2Rpdj4KKzwhLS0gdGVzdFNlbGVjdElzSWRCdXROb3RN
YXRjaGVkIC0tPgorPGRpdj48c3Bhbj5IZWxsbyw8L3NwYW4+PHNwYW4+V29ybGQuPC9zcGFuPjwv
ZGl2PgorPCEtLSB0ZXN0U2VsZWN0SXNJZEJ1dE5vdENoaWxkIC0tPgorPGRpdj48c3Bhbj5IZWxs
byw8L3NwYW4+PHNwYW4+V29ybGQuPC9zcGFuPjwvZGl2PgorPCEtLSB0ZXN0U2VsZWN0SXNNdWx0
aUlkIC0tPgorPGRpdj48c3Bhbj5IZWxsbyw8L3NwYW4+PHNwYW4+Y29udGVudDwvc3Bhbj48c3Bh
bj5jb250ZW50PC9zcGFuPjxzcGFuPldvcmxkLjwvc3Bhbj48L2Rpdj4KKzwhLS0gdGVzdFNlbGVj
dElzVHlwZSAtLT4KKzxkaXY+PHNwYW4+SGVsbG8sPC9zcGFuPjxzcGFuPmNvbnRlbnQ8L3NwYW4+
PHNwYW4+V29ybGQuPC9zcGFuPjwvZGl2PgorPCEtLSB0ZXN0U2VsZWN0SXNUeXBlV2l0aEF0dHJp
YnV0ZSAtLT4KKzxkaXY+PHNwYW4+SGVsbG8sPC9zcGFuPjxzcGFuPmNvbnRlbnQ8L3NwYW4+PHNw
YW4+V29ybGQuPC9zcGFuPjwvZGl2PgorPCEtLSB0ZXN0U2VsZWN0SXNUeXBlV2l0aEZpcnN0T2ZU
eXBlIC0tPgorPGRpdj48c3Bhbj5IZWxsbyw8L3NwYW4+PHNwYW4+Y29udGVudDwvc3Bhbj48c3Bh
bj5Xb3JsZC48L3NwYW4+PC9kaXY+Cis8IS0tIHRlc3RTZWxlY3RJc1R5cGVXaXRoRmlyc3RPZlR5
cGUyIC0tPgorPGRpdj48c3Bhbj5IZWxsbyw8L3NwYW4+PHNwYW4+Y29udGVudDwvc3Bhbj48c3Bh
bj5Xb3JsZC48L3NwYW4+PC9kaXY+Cis8IS0tIHRlc3RTZWxlY3RJc1R5cGVXaXRoTGFzdE9mVHlw
ZSAtLT4KKzxkaXY+PHNwYW4+SGVsbG8sPC9zcGFuPjxzcGFuPmNvbnRlbnQ8L3NwYW4+PHNwYW4+
V29ybGQuPC9zcGFuPjwvZGl2PgorPCEtLSB0ZXN0U2VsZWN0SXNEZXRhaWxzIC0tPgorPGRpdj48
c3Bhbj5IZWxsbyw8L3NwYW4+PGRldGFpbHM+Y29udGVudDwvZGV0YWlscz48c3Bhbj5Xb3JsZC48
L3NwYW4+PC9kaXY+Cis8IS0tIHRlc3RTZWxlY3RJc0RldGFpbHMyIC0tPgorPGRpdj48c3Bhbj5I
ZWxsbyw8L3NwYW4+PGRldGFpbHM+PHN1bW1hcnk+Y29udGVudDwvc3VtbWFyeT48L2RldGFpbHM+
PHNwYW4+V29ybGQuPC9zcGFuPjwvZGl2PgorPCEtLSB0ZXN0U2VsZWN0V2hlbkR5bmFtaWNhbGx5
Q2hpbGRyZW5DaGFuZ2VkIC0tPgorPGRpdj48c3Bhbj5IZWxsbyw8L3NwYW4+PHNwYW4+Y29udGVu
dDwvc3Bhbj48c3Bhbj5Xb3JsZC48L3NwYW4+PC9kaXY+Cis8L2Rpdj4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctY29udGVu
dHMtc2VsZWN0Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LWNvbnRl
bnRzLXNlbGVjdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNkODFkNDU2Y2FlNDU4ZmU1OGQ5ZWI5MjE1MzUw
OTljZWMxNDU0YTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFk
b3cvc2hhZG93LWNvbnRlbnRzLXNlbGVjdC5odG1sCkBAIC0wLDAgKzEsMTc0IEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+CisvKiByZWxhdGl2ZSBwb3NpdGlvbmlu
ZyBlbnN1cmVzIHVuZGVybHlpbmcgUmVuZGVyTGF5ZXIgKi8KKy5jb250YWluZXIgeworICAgIHBv
c2l0aW9uOiByZWxhdGl2ZTsKK30KKzwvc3R5bGU+Cis8c2NyaXB0PgorZnVuY3Rpb24gYXBwZW5k
U2hhZG93KHRhcmdldCwgc2VsZWN0KSB7CisgICAgdmFyIHJvb3QgPSBpbnRlcm5hbHMuZW5zdXJl
U2hhZG93Um9vdCh0YXJnZXQpOworCisgICAgdmFyIGNoaWxkMCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoInNwYW4iKTsKKyAgICBjaGlsZDAuaW5uZXJIVE1MID0gIkhlbGxvLCI7CisgICAgcm9v
dC5hcHBlbmRDaGlsZChjaGlsZDApOworCisgICAgdmFyIGNvbnRlbnQgPSBpbnRlcm5hbHMuY3Jl
YXRlU2hhZG93Q29udGVudEVsZW1lbnQoZG9jdW1lbnQpOworICAgIGNvbnRlbnQuc2V0QXR0cmli
dXRlKCdzZWxlY3QnLCBzZWxlY3QpOworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY29udGVudCk7CisK
KyAgICB2YXIgY2hpbGQxID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOworICAgIGNo
aWxkMS5pbm5lckhUTUwgPSAiV29ybGQuIjsKKyAgICByb290LmFwcGVuZENoaWxkKGNoaWxkMSk7
Cit9CisKK2Z1bmN0aW9uIHRlc3RTZWxlY3RJc051bGwoKSB7CisgICAgdmFyIHRhcmdldCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHRhcmdldC5pbm5lckhUTUwgPSAiPHNw
YW4+Y29udGVudDwvc3Bhbj4iOworCisgICAgYXBwZW5kU2hhZG93KHRhcmdldCwgIiIpOworCisg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRhaW5lcicpLmFwcGVuZENoaWxkKHRhcmdl
dCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RTZWxlY3RJc0lkKCkgeworICAgIHZhciB0YXJnZXQgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICB0YXJnZXQuaW5uZXJIVE1MID0gIjxz
cGFuIGlkPSdmb28nPmNvbnRlbnQ8L3NwYW4+PHNwYW4gaWQ9J2F6dW55YW4nPnBlcm9wZXJvPC9z
cGFuPiI7CisKKyAgICBhcHBlbmRTaGFkb3codGFyZ2V0LCAiI2ZvbyIpOworCisgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRhaW5lcicpLmFwcGVuZENoaWxkKHRhcmdldCk7Cit9CisK
K2Z1bmN0aW9uIHRlc3RTZWxlY3RJc0lkQnV0Tm90TWF0Y2hlZCgpIHsKKyAgICB2YXIgdGFyZ2V0
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgdGFyZ2V0LmlubmVySFRNTCA9
ICI8c3BhbiBpZD0nZm9vJz5jb250ZW50PC9zcGFuPjxzcGFuIGlkPSdhenVueWFuJz5wZXJvcGVy
bzwvc3Bhbj4iOworCisgICAgYXBwZW5kU2hhZG93KHRhcmdldCwgIiNmb29iYXIiKTsKKworICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250YWluZXInKS5hcHBlbmRDaGlsZCh0YXJnZXQp
OworfQorCitmdW5jdGlvbiB0ZXN0U2VsZWN0SXNJZEJ1dE5vdENoaWxkKCkgeworICAgIHZhciB0
YXJnZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICB0YXJnZXQuaW5uZXJI
VE1MID0gIjxzcGFuPjxzcGFuIGlkPSdmb28nPmNvbnRlbnQ8L3NwYW4+PHNwYW4gaWQ9J2F6dW55
YW4nPnBlcm9wZXJvPC9zcGFuPjwvc3Bhbj4iOworCisgICAgYXBwZW5kU2hhZG93KHRhcmdldCwg
IiNmb28iKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250YWluZXInKS5hcHBl
bmRDaGlsZCh0YXJnZXQpOworfQorCitmdW5jdGlvbiB0ZXN0U2VsZWN0SXNNdWx0aUlkKCkgewor
ICAgIHZhciB0YXJnZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICB0YXJn
ZXQuaW5uZXJIVE1MID0gIjxzcGFuIGlkPSdmb28nPmNvbnRlbnQ8L3NwYW4+PHNwYW4gaWQ9J2F6
dW55YW4nPnBlcm9wZXJvPC9zcGFuPjxzcGFuIGlkPSdmb28nPmNvbnRlbnQ8L3NwYW4+IjsKKwor
ICAgIGFwcGVuZFNoYWRvdyh0YXJnZXQsICIjZm9vIik7CisKKyAgICAvLyBBbGwgbWF0Y2hlZCBl
bGVtZW50cyB3aWxsIGJlIHNlbGVjdGVkLgorICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdj
b250YWluZXInKS5hcHBlbmRDaGlsZCh0YXJnZXQpOworfQorCitmdW5jdGlvbiB0ZXN0U2VsZWN0
SXNUeXBlKCkgeworICAgIHZhciB0YXJnZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYn
KTsKKyAgICB0YXJnZXQuaW5uZXJIVE1MID0gIjxkaXY+YXp1bnlhbjwvZGl2PjxzcGFuPmNvbnRl
bnQ8L3NwYW4+PGRpdj5wZXJvcGVybzwvZGl2PiI7CisKKyAgICBhcHBlbmRTaGFkb3codGFyZ2V0
LCAic3BhbiIpOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRhaW5lcicpLmFw
cGVuZENoaWxkKHRhcmdldCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RTZWxlY3RJc1R5cGVXaXRoQXR0
cmlidXRlKCkgeworICAgIHZhciB0YXJnZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYn
KTsKKyAgICB0YXJnZXQuaW5uZXJIVE1MID0gIjxzcGFuPmF6dW55YW48L3NwYW4+PHNwYW4gdGl0
bGU9J2NvbnRlbnQnPmNvbnRlbnQ8L3NwYW4+PHNwYW4+cGVyb3Blcm88L3NwYW4+IjsKKworICAg
IGFwcGVuZFNoYWRvdyh0YXJnZXQsICJzcGFuW3RpdGxlPSdjb250ZW50J10iKTsKKworICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250YWluZXInKS5hcHBlbmRDaGlsZCh0YXJnZXQpOwor
fQorCitmdW5jdGlvbiB0ZXN0U2VsZWN0SXNUeXBlV2l0aEZpcnN0T2ZUeXBlKCkgeworICAgIHZh
ciB0YXJnZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICB0YXJnZXQuaW5u
ZXJIVE1MID0gIjxkaXY+YXp1bnlhbjwvZGl2PjxzcGFuPmNvbnRlbnQ8L3NwYW4+PHNwYW4+cGVy
b3Blcm88L3NwYW4+IjsKKworICAgIGFwcGVuZFNoYWRvdyh0YXJnZXQsICJzcGFuOmZpcnN0LW9m
LXR5cGUiKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250YWluZXInKS5hcHBl
bmRDaGlsZCh0YXJnZXQpOworfQorCitmdW5jdGlvbiB0ZXN0U2VsZWN0SXNUeXBlV2l0aEZpcnN0
T2ZUeXBlMigpIHsKKyAgICB2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2
Jyk7CisgICAgdGFyZ2V0LmlubmVySFRNTCA9ICI8ZGl2PjxzcGFuPmF6dW55YW48L3NwYW4+PC9k
aXY+PHNwYW4+Y29udGVudDwvc3Bhbj48c3Bhbj5wZXJvcGVybzwvc3Bhbj4iOworCisgICAgYXBw
ZW5kU2hhZG93KHRhcmdldCwgInNwYW46Zmlyc3Qtb2YtdHlwZSIpOworCisgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2NvbnRhaW5lcicpLmFwcGVuZENoaWxkKHRhcmdldCk7Cit9CisKK2Z1
bmN0aW9uIHRlc3RTZWxlY3RJc1R5cGVXaXRoTGFzdE9mVHlwZSgpIHsKKyAgICB2YXIgdGFyZ2V0
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgdGFyZ2V0LmlubmVySFRNTCA9
ICI8c3Bhbj5henVueWFuPC9zcGFuPjxzcGFuPmNvbnRlbnQ8L3NwYW4+PGRpdj5wZXJvcGVybzwv
ZGl2PiI7CisKKyAgICBhcHBlbmRTaGFkb3codGFyZ2V0LCAic3BhbjpsYXN0LW9mLXR5cGUiKTsK
KworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250YWluZXInKS5hcHBlbmRDaGlsZCh0
YXJnZXQpOworfQorCitmdW5jdGlvbiB0ZXN0U2VsZWN0SXNEZXRhaWxzKCkgeworICAgIHZhciB0
YXJnZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICB0YXJnZXQuaW5uZXJI
VE1MID0gIjxkZXRhaWxzPmNvbnRlbnQ8L2RldGFpbHM+IjsKKworICAgIGFwcGVuZFNoYWRvdyh0
YXJnZXQsICJkZXRhaWxzIik7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29udGFp
bmVyJykuYXBwZW5kQ2hpbGQodGFyZ2V0KTsKK30KKworZnVuY3Rpb24gdGVzdFNlbGVjdElzRGV0
YWlsczIoKSB7CisgICAgdmFyIHRhcmdldCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rpdicp
OworICAgIHRhcmdldC5pbm5lckhUTUwgPSAiPGRldGFpbHM+PHN1bW1hcnk+Y29udGVudDwvc3Vt
bWFyeT48L2RldGFpbHM+IjsKKworICAgIGFwcGVuZFNoYWRvdyh0YXJnZXQsICJkZXRhaWxzIik7
CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29udGFpbmVyJykuYXBwZW5kQ2hpbGQo
dGFyZ2V0KTsKK30KKworZnVuY3Rpb24gdGVzdFNlbGVjdFdoZW5EeW5hbWljYWxseUNoaWxkcmVu
Q2hhbmdlZCgpIHsKKyAgICB2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2
Jyk7CisgICAgdGFyZ2V0LmlubmVySFRNTCA9ICI8c3Bhbj5jb250ZW50PC9zcGFuPjxzcGFuIGlk
PSd0b2JlcmVtb3ZlZCc+YW51bnlhbiBwZXJvcGVybzwvc3Bhbj4iOworCisgICAgYXBwZW5kU2hh
ZG93KHRhcmdldCwgInNwYW4iKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250
YWluZXInKS5hcHBlbmRDaGlsZCh0YXJnZXQpOworCisgICAgdmFyIGVsZW0gPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgndG9iZXJlbW92ZWQnKTsKKyAgICBlbGVtLnBhcmVudE5vZGUucmVtb3Zl
Q2hpbGQoZWxlbSk7Cit9CisKK3ZhciB0ZXN0RnVuY3MgPSBbCisgICAgdGVzdFNlbGVjdElzTnVs
bCwKKyAgICB0ZXN0U2VsZWN0SXNJZCwKKyAgICB0ZXN0U2VsZWN0SXNJZEJ1dE5vdE1hdGNoZWQs
CisgICAgdGVzdFNlbGVjdElzSWRCdXROb3RDaGlsZCwKKyAgICB0ZXN0U2VsZWN0SXNNdWx0aUlk
LAorICAgIHRlc3RTZWxlY3RJc1R5cGUsCisgICAgdGVzdFNlbGVjdElzVHlwZVdpdGhBdHRyaWJ1
dGUsCisgICAgdGVzdFNlbGVjdElzVHlwZVdpdGhGaXJzdE9mVHlwZSwKKyAgICB0ZXN0U2VsZWN0
SXNUeXBlV2l0aEZpcnN0T2ZUeXBlMiwKKyAgICB0ZXN0U2VsZWN0SXNUeXBlV2l0aExhc3RPZlR5
cGUsCisgICAgdGVzdFNlbGVjdElzRGV0YWlscywKKyAgICB0ZXN0U2VsZWN0SXNEZXRhaWxzMiwK
KyAgICB0ZXN0U2VsZWN0V2hlbkR5bmFtaWNhbGx5Q2hpbGRyZW5DaGFuZ2VkLAorXQorCitmdW5j
dGlvbiBkb1Rlc3QoKSB7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0ZXN0RnVuY3MubGVuZ3Ro
OyArK2kpIHsKKyAgICAgICB0ZXN0RnVuY3NbaV0oKTsKKyAgICB9Cit9Cis8L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5IG9ubG9hZD0iZG9UZXN0KCkiPgorPGRpdiBpZD0iY29udGFpbmVyIj48L2Rp
dj4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>