<?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>84646</bug_id>
          
          <creation_ts>2012-04-23 15:58:31 -0700</creation_ts>
          <short_desc>Implement Document.parse</short_desc>
          <delta_ts>2012-11-28 12:16:34 -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>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>WebExposed</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Rafael Weinstein">rafaelw</reporter>
          <assigned_to name="Rafael Weinstein">rafaelw</assigned_to>
          <cc>abarth</cc>
    
    <cc>adamk</cc>
    
    <cc>aestes</cc>
    
    <cc>annevk</cc>
    
    <cc>ap</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dominicc</cc>
    
    <cc>eoconnor</cc>
    
    <cc>ericbidelman</cc>
    
    <cc>eric</cc>
    
    <cc>gustavo</cc>
    
    <cc>ian</cc>
    
    <cc>mjs</cc>
    
    <cc>Ms2ger</cc>
    
    <cc>ojan</cc>
    
    <cc>peter</cc>
    
    <cc>philn</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>608136</commentid>
    <comment_count>0</comment_count>
    <who name="Rafael Weinstein">rafaelw</who>
    <bug_when>2012-04-23 15:58:31 -0700</bug_when>
    <thetext>Should be willing to parse without a context element. I.e.

df.innerHTML = &apos;&lt;tr&gt;&lt;td&gt;Foo&lt;/td&gt;&lt;/tr&gt;&apos;

creates a single child for the fragment which is a &lt;tr&gt;, which has a single &lt;td&gt; child, which has a single &apos;Foo&apos; textNode child.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608138</commentid>
    <comment_count>1</comment_count>
      <attachid>138447</attachid>
    <who name="Rafael Weinstein">rafaelw</who>
    <bug_when>2012-04-23 16:00:40 -0700</bug_when>
    <thetext>Created attachment 138447
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608141</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-23 16:02:59 -0700</bug_when>
    <thetext>Attachment 138447 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 1 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608144</commentid>
    <comment_count>3</comment_count>
    <who name="Rafael Weinstein">rafaelw</who>
    <bug_when>2012-04-23 16:03:17 -0700</bug_when>
    <thetext>The discussion on public-webapps about the template element has gotten very focused on the semantics of the template elements&apos; children. What doesn&apos;t seem to be controversial is the changes to allow context-free parsing.

Given that this has come up before and been requested as an independently useful thing, I thought a good way to make progress would be to separate the concerns.

This patch just adds innerHTML to DocumentFragment and makes the parser changes.

I&apos;d looking for opinions on if this makes sense and if this is good way to make forward progress.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608153</commentid>
    <comment_count>4</comment_count>
      <attachid>138447</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-04-23 16:11:50 -0700</bug_when>
    <thetext>Comment on attachment 138447
Patch

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

&gt; Source/WebCore/html/parser/HTMLTreeBuilder.cpp:390
&gt; +    m_tree.openElements()-&gt;pushRootNode(fragment);
&gt; +    resetInsertionModeAppropriately();

I remember this being a kinda big deal.  Having a non-element on the element stack causes a lot of complexity in the parser.  I feel like there was a dream of removing this contextElement stuff at some point.  Or maybe it was the other way... of always requiring a context element.  This part of the change scares me, and I need to page this all back in to be sure it&apos;s OK.

&gt; Source/WebCore/html/parser/HTMLTreeBuilder.h:96
&gt;      enum InsertionMode {
&gt; +        ContextFreeMode,

I take it this is a new section fo the spec?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608161</commentid>
    <comment_count>5</comment_count>
      <attachid>138447</attachid>
    <who name="Rafael Weinstein">rafaelw</who>
    <bug_when>2012-04-23 16:18:51 -0700</bug_when>
    <thetext>Comment on attachment 138447
Patch

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

&gt;&gt; Source/WebCore/html/parser/HTMLTreeBuilder.cpp:390
&gt;&gt; +    resetInsertionModeAppropriately();
&gt; 
&gt; I remember this being a kinda big deal.  Having a non-element on the element stack causes a lot of complexity in the parser.  I feel like there was a dream of removing this contextElement stuff at some point.  Or maybe it was the other way... of always requiring a context element.  This part of the change scares me, and I need to page this all back in to be sure it&apos;s OK.

Any and all guidance is apppreciated

&gt;&gt; Source/WebCore/html/parser/HTMLTreeBuilder.h:96
&gt;&gt; +        ContextFreeMode,
&gt; 
&gt; I take it this is a new section fo the spec?

Yes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608364</commentid>
    <comment_count>6</comment_count>
      <attachid>138447</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-04-23 22:42:53 -0700</bug_when>
    <thetext>Comment on attachment 138447
Patch

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

Clearing r? since I don&apos;t think you&apos;re looking for a formal review.

&gt; Source/WebCore/dom/DocumentFragment.cpp:104
&gt; +    if (!document()-&gt;isHTMLDocument()) {
&gt; +        ec = INVALID_STATE_ERR;
&gt; +        return;
&gt; +    }

The last time I checked, folks on public-webapp wanted to be able to parse both HTML and SVG properly.
If we&apos;re going without a proper SVG support, then I&apos;d like to know why.

Also we should do a feature-announcement for this since this is a pretty significant change to the DOM API.

&gt; Source/WebCore/dom/DocumentFragment.cpp:107
&gt; +    RefPtr&lt;DocumentFragment&gt; fragment = createFragmentFromSource(html, document(), 0 /* contextElement */, ec);
&gt; +    if (fragment)

WebKit style is to declare fragment inside the if&apos;s parenthesis or exit early when !fragment.
Also, we don&apos;t normally add inline comments like /* contextElement */.

&gt; Source/WebCore/html/parser/HTMLTreeBuilder.cpp:1470
&gt; +        if (isCaptionColOrColgroupTag(token.name()) || isTableBodyContextTag(token.name()))
&gt; +            setInsertionMode(InTableMode);
&gt; +        else if (token.name() == trTag)
&gt; +            setInsertionMode(InTableBodyMode);
&gt; +        else if (isTableCellContextTag(token.name()))
&gt; +            setInsertionMode(InRowMode);
&gt; +        else
&gt; +            setInsertionMode(InBodyMode);

It seems like a bad idea to modify insertion mode like this. Can&apos;t we by-pass the code where the insertion mode is checked?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608804</commentid>
    <comment_count>7</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-04-24 10:21:41 -0700</bug_when>
    <thetext>See also bug 60316 (saying in particular that support for document.innerHTML was removed from spec, making WebKit happier).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>610322</commentid>
    <comment_count>8</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-04-25 21:02:02 -0700</bug_when>
    <thetext>
&gt; 
&gt; &gt; Source/WebCore/html/parser/HTMLTreeBuilder.cpp:1470
&gt; &gt; +        if (isCaptionColOrColgroupTag(token.name()) || isTableBodyContextTag(token.name()))
&gt; &gt; +            setInsertionMode(InTableMode);
&gt; &gt; +        else if (token.name() == trTag)
&gt; &gt; +            setInsertionMode(InTableBodyMode);
&gt; &gt; +        else if (isTableCellContextTag(token.name()))
&gt; &gt; +            setInsertionMode(InRowMode);
&gt; &gt; +        else
&gt; &gt; +            setInsertionMode(InBodyMode);
&gt; 
&gt; It seems like a bad idea to modify insertion mode like this. Can&apos;t we by-pass the code where the insertion mode is checked?

Actually, it&apos;s exactly the opposite -- bypassing insertion mode checks would bring the entire state machine to its knees.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>613059</commentid>
    <comment_count>9</comment_count>
      <attachid>139544</attachid>
    <who name="Rafael Weinstein">rafaelw</who>
    <bug_when>2012-04-30 16:43:40 -0700</bug_when>
    <thetext>Created attachment 139544
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>613062</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-30 16:45:13 -0700</bug_when>
    <thetext>Attachment 139544 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebCore/ChangeLog:11:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 1 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>613069</commentid>
    <comment_count>11</comment_count>
    <who name="Rafael Weinstein">rafaelw</who>
    <bug_when>2012-04-30 16:50:02 -0700</bug_when>
    <thetext>Ok, this patch implements the current proposal: http://lists.w3.org/Archives/Public/public-webapps/2012AprJun/0334.html.

This no longer requires any parser changes (the only code changes here are to change the contextElement to a contextTag within the parser, so as to avoid having to create elements for the implied case).

Full review not necessary yet as I still need to add parser tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>613073</commentid>
    <comment_count>12</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-04-30 17:02:03 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; If any of these errors are false positives, please file a bug against check-webkit-style.

You can use webkit-patch --no-review to avoid setting r? flag.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>615790</commentid>
    <comment_count>13</comment_count>
      <attachid>140125</attachid>
    <who name="Rafael Weinstein">rafaelw</who>
    <bug_when>2012-05-03 16:47:00 -0700</bug_when>
    <thetext>Created attachment 140125
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>615795</commentid>
    <comment_count>14</comment_count>
      <attachid>140125</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2012-05-03 17:00:05 -0700</bug_when>
    <thetext>Comment on attachment 140125
Patch

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

&gt; Source/WebCore/dom/QualifiedName.h:109
&gt; +inline const QualifiedName&amp; nullQName() { return anyName; }

Typo? This should be return nullName, I assume. Any idea why you need nullQName() in addition to nullName?

&gt; Source/WebCore/dom/ShadowRoot.cpp:-147
&gt; -    RefPtr&lt;DocumentFragment&gt; fragment = createFragmentFromSource(markup, host(), ec);

You&apos;re changing behavior of ShadowRoot, since you&apos;re now using the new parsing mode instead of using the host&apos;s context. Is this intentional?

&gt; Source/WebCore/html/parser/HTMLTreeBuilder.cpp:1685
&gt; +        if (tagName.matches(selectTag)) {

Why matches() instead of operator==? matches() seems not quite as strict (it allows non-matching prefixes, not clear if this matters here).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>615805</commentid>
    <comment_count>15</comment_count>
      <attachid>140125</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-05-03 17:13:20 -0700</bug_when>
    <thetext>Comment on attachment 140125
Patch

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

Looks very reasonable.  aklein asks some good questions.

&gt; Source/WebCore/html/parser/HTMLDocumentParser.cpp:284
&gt; +        if (m_queuedAtomicTokens.size()) {

There should be an isEmpty() function on m_queuedAtomicTokens that&apos;s more idiomatic than size().

&gt; Source/WebCore/html/parser/HTMLDocumentParser.cpp:286
&gt; +                m_treeBuilder-&gt;constructTreeFromAtomicToken(*(it-&gt;get()));

What happens if this causes us to re-enter this loop?  It&apos;s better to make this code re-entrant, just in case.  For example, you can move the queue from m_queuedAtomicTokens to a local variable and then iterate over the local variable.  That when we won&apos;t get confused if we get re-entered.

&gt; Source/WebCore/html/parser/HTMLTreeBuilder.cpp:1634
&gt; +static const QualifiedName&amp; getImpliedContextTag(const AtomicString&amp; tagName)

getImpliedContextTag =&gt; toImpliedContextTag ?

&gt; Source/WebCore/html/parser/HTMLTreeBuilder.cpp:1640
&gt; +    if (tagName == tbodyTag
&gt; +        || tagName == tfootTag
&gt; +        || tagName == theadTag
&gt; +        || tagName == captionTag
&gt; +        || tagName == colgroupTag) {

Isn&apos;t there a inline helper function for this set?  Something like isTableContext()?  Maybe that was just in dglazkov&apos;s patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616405</commentid>
    <comment_count>16</comment_count>
      <attachid>140125</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-05-04 10:46:55 -0700</bug_when>
    <thetext>Comment on attachment 140125
Patch

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

&gt;&gt; Source/WebCore/html/parser/HTMLDocumentParser.cpp:284
&gt;&gt; +        if (m_queuedAtomicTokens.size()) {
&gt; 
&gt; There should be an isEmpty() function on m_queuedAtomicTokens that&apos;s more idiomatic than size().

No reason for this if statement. Iterating should be fast on an empty vector, and clear should also be fast. Just leave the if statement out. Unless Adam’s suggestions make the code expensive enough that you need it.

&gt;&gt; Source/WebCore/html/parser/HTMLTreeBuilder.cpp:1634
&gt;&gt; +static const QualifiedName&amp; getImpliedContextTag(const AtomicString&amp; tagName)
&gt; 
&gt; getImpliedContextTag =&gt; toImpliedContextTag ?

I’d suggest just impliedContextTag. I see no reason for a “get” or a “to” prefix on the function name.

&gt;&gt; Source/WebCore/html/parser/HTMLTreeBuilder.cpp:1640
&gt;&gt; +        || tagName == colgroupTag) {
&gt; 
&gt; Isn&apos;t there a inline helper function for this set?  Something like isTableContext()?  Maybe that was just in dglazkov&apos;s patch.

It’s good to have a named helper even if there isn’t already one, especially if there is a name in the HTML standard document we can use.

&gt; Source/WebCore/html/parser/HTMLTreeBuilder.h:90
&gt; +    inline bool canContinue(HTMLToken&amp; token) { return !m_fragmentContext.fragment() || m_fragmentContext.contextTag() != nullQName() || tryToSetImpliedContextTag(token); }

The “inline” here is unneeded and has no effect.

This member function should be const.

&gt; Source/WebCore/xml/parser/MarkupTokenBase.h:525
&gt; +    WTF::Vector&lt;UChar&gt; m_internalCharacters;

No WTF:: prefix is needed here.

Is it the right tradeoff to always pay the overhead of a vector for internal characters? A Vector is a reasonable data structure if the buffer will be resized. If not, then an OwnArrayPtr plus a separate size would be more efficient.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>617737</commentid>
    <comment_count>17</comment_count>
      <attachid>140125</attachid>
    <who name="Rafael Weinstein">rafaelw</who>
    <bug_when>2012-05-07 11:13:25 -0700</bug_when>
    <thetext>Comment on attachment 140125
Patch

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

&gt;&gt; Source/WebCore/dom/QualifiedName.h:109
&gt;&gt; +inline const QualifiedName&amp; nullQName() { return anyName; }
&gt; 
&gt; Typo? This should be return nullName, I assume. Any idea why you need nullQName() in addition to nullName?

Copy &amp; paste error, yes. Thanks for the catch. This appears to be a GCC static initialization issue, but to be honest, I&apos;m not clear on exactly what the issue is.

&gt;&gt; Source/WebCore/dom/ShadowRoot.cpp:-147
&gt;&gt; -    RefPtr&lt;DocumentFragment&gt; fragment = createFragmentFromSource(markup, host(), ec);
&gt; 
&gt; You&apos;re changing behavior of ShadowRoot, since you&apos;re now using the new parsing mode instead of using the host&apos;s context. Is this intentional?

Yes. Dimitri says this is what ShadowRoot wants.

&gt;&gt;&gt; Source/WebCore/html/parser/HTMLDocumentParser.cpp:284
&gt;&gt;&gt; +        if (m_queuedAtomicTokens.size()) {
&gt;&gt; 
&gt;&gt; There should be an isEmpty() function on m_queuedAtomicTokens that&apos;s more idiomatic than size().
&gt; 
&gt; No reason for this if statement. Iterating should be fast on an empty vector, and clear should also be fast. Just leave the if statement out. Unless Adam’s suggestions make the code expensive enough that you need it.

Yeah, I&apos;m going to take adam&apos;s suggestion, so I&apos;ll swap to a local Vector if not empty, and leave this check in place.

&gt;&gt; Source/WebCore/html/parser/HTMLDocumentParser.cpp:286
&gt;&gt; +                m_treeBuilder-&gt;constructTreeFromAtomicToken(*(it-&gt;get()));
&gt; 
&gt; What happens if this causes us to re-enter this loop?  It&apos;s better to make this code re-entrant, just in case.  For example, you can move the queue from m_queuedAtomicTokens to a local variable and then iterate over the local variable.  That when we won&apos;t get confused if we get re-entered.

This seems like a good safety measure so that the failure case is bad output and not a crash. However, I think it&apos;s strictly an error to end up in the case. Adding ASSERTs to this effect.

&gt;&gt;&gt; Source/WebCore/html/parser/HTMLTreeBuilder.cpp:1634
&gt;&gt;&gt; +static const QualifiedName&amp; getImpliedContextTag(const AtomicString&amp; tagName)
&gt;&gt; 
&gt;&gt; getImpliedContextTag =&gt; toImpliedContextTag ?
&gt; 
&gt; I’d suggest just impliedContextTag. I see no reason for a “get” or a “to” prefix on the function name.

done

&gt;&gt;&gt; Source/WebCore/html/parser/HTMLTreeBuilder.cpp:1640
&gt;&gt;&gt; +        || tagName == colgroupTag) {
&gt;&gt; 
&gt;&gt; Isn&apos;t there a inline helper function for this set?  Something like isTableContext()?  Maybe that was just in dglazkov&apos;s patch.
&gt; 
&gt; It’s good to have a named helper even if there isn’t already one, especially if there is a name in the HTML standard document we can use.

Yup. done.

&gt;&gt; Source/WebCore/html/parser/HTMLTreeBuilder.cpp:1685
&gt;&gt; +        if (tagName.matches(selectTag)) {
&gt; 
&gt; Why matches() instead of operator==? matches() seems not quite as strict (it allows non-matching prefixes, not clear if this matters here).

Honestly, I don&apos;t know. That&apos;s what node-&gt;hasTagName does for it&apos;s implementation, and I didn&apos;t want to risk changing the semantics here. Abarth? Is it safe you make these ==?

&gt;&gt; Source/WebCore/html/parser/HTMLTreeBuilder.h:90
&gt;&gt; +    inline bool canContinue(HTMLToken&amp; token) { return !m_fragmentContext.fragment() || m_fragmentContext.contextTag() != nullQName() || tryToSetImpliedContextTag(token); }
&gt; 
&gt; The “inline” here is unneeded and has no effect.
&gt; 
&gt; This member function should be const.

inline removed. It can&apos;t be const because it calls non-const member functions transitively

&gt;&gt; Source/WebCore/xml/parser/MarkupTokenBase.h:525
&gt;&gt; +    WTF::Vector&lt;UChar&gt; m_internalCharacters;
&gt; 
&gt; No WTF:: prefix is needed here.
&gt; 
&gt; Is it the right tradeoff to always pay the overhead of a vector for internal characters? A Vector is a reasonable data structure if the buffer will be resized. If not, then an OwnArrayPtr plus a separate size would be more efficient.

Now using an OwnArrayPtr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>617743</commentid>
    <comment_count>18</comment_count>
    <who name="Rafael Weinstein">rafaelw</who>
    <bug_when>2012-05-07 11:15:00 -0700</bug_when>
    <thetext>Thanks, everyone for the review comments. This patch addresses all comments. Tests coming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>617763</commentid>
    <comment_count>19</comment_count>
      <attachid>140560</attachid>
    <who name="Rafael Weinstein">rafaelw</who>
    <bug_when>2012-05-07 11:28:06 -0700</bug_when>
    <thetext>Created attachment 140560
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>619910</commentid>
    <comment_count>20</comment_count>
      <attachid>141027</attachid>
    <who name="Rafael Weinstein">rafaelw</who>
    <bug_when>2012-05-09 15:25:18 -0700</bug_when>
    <thetext>Created attachment 141027
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>619913</commentid>
    <comment_count>21</comment_count>
    <who name="Rafael Weinstein">rafaelw</who>
    <bug_when>2012-05-09 15:26:51 -0700</bug_when>
    <thetext>removed incorrect ASSERT(). pumpTokenizer needs to be called at any point so that new network IO can be processed. This isn&apos;t a problem is practice for this patch, but it&apos;s a conceptual problem since the HTMLDocumentParser is stateful WRT network io.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>620688</commentid>
    <comment_count>22</comment_count>
      <attachid>141194</attachid>
    <who name="Rafael Weinstein">rafaelw</who>
    <bug_when>2012-05-10 10:23:00 -0700</bug_when>
    <thetext>Created attachment 141194
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>620780</commentid>
    <comment_count>23</comment_count>
      <attachid>141194</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-05-10 11:36:00 -0700</bug_when>
    <thetext>Comment on attachment 141194
Patch

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

&gt; Source/WebCore/dom/DocumentFragment.h:42
&gt; +    String innerHTML() const;
&gt; +    void setInnerHTML(const String&amp;, ExceptionCode&amp;);

Should we be adding this without a define? I mean, I trust that you&apos;re awesome, but if we have to adjust our approach,  I&apos;d hate to have a shipping implementation out there somewhere with the old bits.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>625979</commentid>
    <comment_count>24</comment_count>
      <attachid>142363</attachid>
    <who name="Rafael Weinstein">rafaelw</who>
    <bug_when>2012-05-16 16:21:48 -0700</bug_when>
    <thetext>Created attachment 142363
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>626116</commentid>
    <comment_count>25</comment_count>
    <who name="Rafael Weinstein">rafaelw</who>
    <bug_when>2012-05-16 18:33:49 -0700</bug_when>
    <thetext>This last patch now represents the consensus with Mozilla about the details, which includes moving the API call from DocumentFragment.innerHTML to Document.parse().

This patch also now includes tests.

The main thing left to do here is to support the inference of SVG and MathML elements.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>626205</commentid>
    <comment_count>26</comment_count>
      <attachid>142363</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-05-16 20:40:53 -0700</bug_when>
    <thetext>Comment on attachment 142363
Patch

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

This looks great.  Thanks for talking this through with folks on the standards lists.  I think this is a great result.

&gt; Source/WebCore/dom/Document.idl:359
&gt; +#if defined(ENABLE_IMPLIED_CONTEXT_PARSING) &amp;&amp; ENABLE_IMPLIED_CONTEXT_PARSING

You can just use the [Conditional] IDL attribute as on line 357 of this file.

&gt; Source/WebCore/dom/ShadowRoot.cpp:151
&gt; -    RefPtr&lt;DocumentFragment&gt; fragment = createFragmentFromSource(markup, host(), ec);
&gt; +#if ENABLE(IMPLIED_CONTEXT_PARSING)
&gt; +    RefPtr&lt;DocumentFragment&gt; fragment = createFragmentFromSource(markup, document(), 0 /* contextElement */, ec);
&gt; +#else
&gt; +    RefPtr&lt;DocumentFragment&gt; fragment = createFragmentFromSource(markup, document(), host(), ec);
&gt; +#endif

Is this part of the change still correct?

&gt; Source/WebCore/html/parser/HTMLTreeBuilder.cpp:247
&gt; +// DocumentFragment.innerHTML is based on the identity of the tagName of the first startTag token encountered

DocumentFragment.innerHTML -&gt; document.parse?  Or maybe we&apos;re doing both.

&gt; Source/WebCore/html/parser/HTMLTreeBuilder.cpp:257
&gt; +        || tagName == colgroupTag) {
&gt; +        return tableTag;
&gt; +    }

No { } in WebKit style, I believe.

&gt; Source/WebCore/html/parser/HTMLTreeBuilder.cpp:1482
&gt; +    case ImpliedContextMode:

Ah, so we&apos;re using a mode.  Interesting.

&gt; Source/WebCore/html/parser/HTMLTreeBuilder.cpp:1491
&gt; +

nit: I think we&apos;ve been skipping this blank line in this file.

&gt; Source/WebCore/html/parser/HTMLTreeBuilder.cpp:1500
&gt; +        ASSERT(false);

ASSERT_NOT_REACHED()

&gt; Source/WebCore/html/parser/HTMLTreeBuilder.cpp:2285
&gt; +        ASSERT(false);

ASSERT_NOT_REACHED

&gt; LayoutTests/html5lib/resources/runner.js:160
&gt; +                element = document.parse(input);

That is pretty hot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>626722</commentid>
    <comment_count>27</comment_count>
      <attachid>142504</attachid>
    <who name="Rafael Weinstein">rafaelw</who>
    <bug_when>2012-05-17 11:01:29 -0700</bug_when>
    <thetext>Created attachment 142504
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>626723</commentid>
    <comment_count>28</comment_count>
      <attachid>142363</attachid>
    <who name="Rafael Weinstein">rafaelw</who>
    <bug_when>2012-05-17 11:01:47 -0700</bug_when>
    <thetext>Comment on attachment 142363
Patch

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

&gt;&gt; Source/WebCore/dom/ShadowRoot.cpp:151
&gt;&gt; +#endif
&gt; 
&gt; Is this part of the change still correct?

I asked Dimitri about this and he said that they want ShadowRoot.innerHTML to parse context-free, but to be honest I can&apos;t remember the use case. It seems naively that it makes more sense to use the host() as the context element. I&apos;m going to remove this and leave it up the ShadowRoot people to re-enable implied-context parsing if that&apos;s what they really want.

&gt;&gt; Source/WebCore/html/parser/HTMLTreeBuilder.cpp:247
&gt;&gt; +// DocumentFragment.innerHTML is based on the identity of the tagName of the first startTag token encountered
&gt; 
&gt; DocumentFragment.innerHTML -&gt; document.parse?  Or maybe we&apos;re doing both.

Nope. The comment just needed an update.

&gt;&gt; LayoutTests/html5lib/resources/runner.js:160
&gt;&gt; +                element = document.parse(input);
&gt; 
&gt; That is pretty hot.

;-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>632247</commentid>
    <comment_count>29</comment_count>
      <attachid>142504</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-05-23 17:35:36 -0700</bug_when>
    <thetext>Comment on attachment 142504
Patch

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

&gt; Source/WebCore/dom/Document.cpp:834
&gt; +    return createFragmentFromSource(html, document(), 0 /* contextElement */, ec);

Since we want parsed script elements to run when it&apos;s inserted to somewhere in the document, we can&apos;t use createFragmentFromSource.
I&apos;ll give these functions more descriptive names. We&apos;ve accumulated so many functions of obnoxious names in this area.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>632268</commentid>
    <comment_count>30</comment_count>
      <attachid>142504</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-05-23 18:11:27 -0700</bug_when>
    <thetext>Comment on attachment 142504
Patch

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

&gt; Source/WebCore/html/parser/HTMLTreeBuilder.cpp:254
&gt; +    if (isTableBodyContextTag(tagName)
&gt; +        || tagName == captionTag
&gt; +        || tagName == colgroupTag)

Would read better all on one line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>633111</commentid>
    <comment_count>31</comment_count>
      <attachid>143878</attachid>
    <who name="Rafael Weinstein">rafaelw</who>
    <bug_when>2012-05-24 13:22:34 -0700</bug_when>
    <thetext>Created attachment 143878
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>633114</commentid>
    <comment_count>32</comment_count>
      <attachid>142504</attachid>
    <who name="Rafael Weinstein">rafaelw</who>
    <bug_when>2012-05-24 13:24:18 -0700</bug_when>
    <thetext>Comment on attachment 142504
Patch

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

&gt;&gt; Source/WebCore/dom/Document.cpp:834
&gt;&gt; +    return createFragmentFromSource(html, document(), 0 /* contextElement */, ec);
&gt; 
&gt; Since we want parsed script elements to run when it&apos;s inserted to somewhere in the document, we can&apos;t use createFragmentFromSource.
&gt; I&apos;ll give these functions more descriptive names. We&apos;ve accumulated so many functions of obnoxious names in this area.

createFragmentFromSource now takes an optional FragmentScriptingPermission argument which is set to AllowScriptingContentAndDoNotMarkAlreadyStarted in this case.

&gt;&gt; Source/WebCore/html/parser/HTMLTreeBuilder.cpp:254
&gt;&gt; +        || tagName == colgroupTag)
&gt; 
&gt; Would read better all on one line.

done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>633128</commentid>
    <comment_count>33</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-05-24 13:33:14 -0700</bug_when>
    <thetext>(In reply to comment #32)
&gt; (From update of attachment 142504 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=142504&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/dom/Document.cpp:834
&gt; &gt;&gt; +    return createFragmentFromSource(html, document(), 0 /* contextElement */, ec);
&gt; &gt; 
&gt; &gt; Since we want parsed script elements to run when it&apos;s inserted to somewhere in the document, we can&apos;t use createFragmentFromSource.
&gt; &gt; I&apos;ll give these functions more descriptive names. We&apos;ve accumulated so many functions of obnoxious names in this area.
&gt; 
&gt; createFragmentFromSource now takes an optional FragmentScriptingPermission argument which is set to AllowScriptingContentAndDoNotMarkAlreadyStarted in this case.

Sorry, I have a patch on https://bugs.webkit.org/show_bug.cgi?id=87339 that&apos;s going to conflict with your patch. The function is renamed to createFragmentForInnerOuterHTML. However, I&apos;m intending to do another around of cleanups once that patch is landed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>633175</commentid>
    <comment_count>34</comment_count>
      <attachid>143878</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-05-24 13:49:36 -0700</bug_when>
    <thetext>Comment on attachment 143878
Patch

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

Just some drive-by nits:

&gt; Source/WebCore/ChangeLog:3
&gt; +        Implement HTMLTemplateElement

IIRC, you&apos;ve changed the title of the bug.

&gt; Source/WebCore/dom/Document.idl:359
&gt; +        [Conditional=IMPLIED_CONTEXT_PARSING] DocumentFragment parse(in [TreatNullAs=NullString,Optional=DefaultIsUndefined] DOMString tagname)

Is our style to not have spaces between attribute options?

&gt; Source/WebCore/dom/QualifiedName.cpp:117
&gt; +        new ((void*)&amp;nullName) QualifiedName(nullAtom, nullAtom, nullAtom);

It makes me very suspicious that we&apos;ve survived this long w/o this and that we&apos;d now need it...

&gt; Source/WebCore/html/parser/HTMLTreeBuilder.cpp:250
&gt; +const QualifiedName&amp; getImpliedContextTag(const AtomicString&amp; tagName)

I think a more webkity-name would be something like impliedContextForTag().  The style-guide is kinda anti &quot;get&quot; on &quot;getters&quot; (not that this is an explicit getter per-say).

&gt; Source/WebCore/html/parser/HTMLTreeBuilder.cpp:1486
&gt; +        if (token.name() == styleTag
&gt; +            || token.name() == scriptTag
&gt; +            || token.name() == metaTag
&gt; +            || token.name() == linkTag) {

Do we have a name for this class of tag names?

&gt; Source/WebCore/html/parser/HTMLTreeBuilder.cpp:1698
&gt; -        if (node-&gt;hasTagName(tbodyTag) || node-&gt;hasTagName(theadTag) || node-&gt;hasTagName(tfootTag))
&gt; +        if (tagName.matches(tbodyTag) || tagName.matches(theadTag) || tagName.matches(tfootTag))

I believe we have helper functions for some classes of tag names, like possibly this one.  Something like isTableSection(tagName) might already exist for you.

&gt; Source/WebCore/html/parser/HTMLTreeBuilder.cpp:1725
&gt; +            ASSERT(tagName != nullQName());

QualifiedName doesn&apos;t have an isNull()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>633221</commentid>
    <comment_count>35</comment_count>
      <attachid>143878</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-05-24 14:25:29 -0700</bug_when>
    <thetext>Comment on attachment 143878
Patch

Attachment 143878 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/12803249</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>633223</commentid>
    <comment_count>36</comment_count>
      <attachid>143878</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-05-24 14:27:18 -0700</bug_when>
    <thetext>Comment on attachment 143878
Patch

Attachment 143878 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/12801244</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>633645</commentid>
    <comment_count>37</comment_count>
    <who name="Ms2ger (he/him; ⌚ UTC+1/+2)">Ms2ger</who>
    <bug_when>2012-05-25 00:30:54 -0700</bug_when>
    <thetext>Do ensure to test that:

* document.parse() throws a TypeError
* document.parse(null) returns a fragment with a single text node &quot;null&quot;
* document.parse(undefined) returns a fragment with a single text node &quot;undefined&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>634322</commentid>
    <comment_count>38</comment_count>
    <who name="Rafael Weinstein">rafaelw</who>
    <bug_when>2012-05-25 15:05:48 -0700</bug_when>
    <thetext>@Ms2ger: So it would seem the most natural thing would be to have the same behavior as range.createContextualFragment.

In Webkit this is:

empty &amp; undefined =&gt; &quot;undefined&quot;
null =&gt; &quot;null&quot;

This doesn&apos;t appear to match Gecko, which is

empty =&gt; throws
undefined =&gt; &quot;undefined&quot;
null =&gt; empty fragment (no children)

=-(.

It seems like this is an IDL issue. Anyone else have opinions here?

(For now, I&apos;ll update the patch such that this is consistent with WebKit&apos;s createContextualFragment, and adds tests for these cases).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>634368</commentid>
    <comment_count>39</comment_count>
      <attachid>143878</attachid>
    <who name="Rafael Weinstein">rafaelw</who>
    <bug_when>2012-05-25 15:49:25 -0700</bug_when>
    <thetext>Comment on attachment 143878
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:3
&gt;&gt; +        Implement HTMLTemplateElement
&gt; 
&gt; IIRC, you&apos;ve changed the title of the bug.

Yes. Sorry. This is actually the wrong changelog. Git fail. Fixing...

&gt;&gt; Source/WebCore/dom/Document.idl:359
&gt;&gt; +        [Conditional=IMPLIED_CONTEXT_PARSING] DocumentFragment parse(in [TreatNullAs=NullString,Optional=DefaultIsUndefined] DOMString tagname)
&gt; 
&gt; Is our style to not have spaces between attribute options?

It appears to be mixed, but I&apos;ve changed this to match Range.createContextualFragment, so now there&apos;s only one k/v

&gt;&gt; Source/WebCore/html/parser/HTMLTreeBuilder.cpp:250
&gt;&gt; +const QualifiedName&amp; getImpliedContextTag(const AtomicString&amp; tagName)
&gt; 
&gt; I think a more webkity-name would be something like impliedContextForTag().  The style-guide is kinda anti &quot;get&quot; on &quot;getters&quot; (not that this is an explicit getter per-say).

done

&gt;&gt; Source/WebCore/html/parser/HTMLTreeBuilder.cpp:1486
&gt;&gt; +            || token.name() == linkTag) {
&gt; 
&gt; Do we have a name for this class of tag names?

unfortunately, no.

&gt;&gt; Source/WebCore/html/parser/HTMLTreeBuilder.cpp:1698
&gt;&gt; +        if (tagName.matches(tbodyTag) || tagName.matches(theadTag) || tagName.matches(tfootTag))
&gt; 
&gt; I believe we have helper functions for some classes of tag names, like possibly this one.  Something like isTableSection(tagName) might already exist for you.

This is matching qualified names. the helper functions you&apos;re describing only match local name. There may be no impact, but I&apos;d be nervous about changing the semantics here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>634407</commentid>
    <comment_count>40</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-05-25 16:13:43 -0700</bug_when>
    <thetext>&gt; It seems like this is an IDL issue. Anyone else have opinions here?

The behavior for empty in range.createContextualFragment is likely a result of WebKit&apos;s previous lax treatment of missing parameters.  We&apos;ve kept the legacy behavior in many places to avoid breaking existing content.  For new APIs like this one, we&apos;re trying to follow the specs and throw when we have too few arguments, like Gecko does.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>634418</commentid>
    <comment_count>41</comment_count>
    <who name="Rafael Weinstein">rafaelw</who>
    <bug_when>2012-05-25 16:25:53 -0700</bug_when>
    <thetext>fair enough. doing as Ms2ger &amp; abarth suggest...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>634692</commentid>
    <comment_count>42</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-05-26 17:15:01 -0700</bug_when>
    <thetext>(In reply to comment #40)
&gt; &gt; It seems like this is an IDL issue. Anyone else have opinions here?
&gt; 
&gt; The behavior for empty in range.createContextualFragment is likely a result of WebKit&apos;s previous lax treatment of missing parameters.  We&apos;ve kept the legacy behavior in many places to avoid breaking existing content.  For new APIs like this one, we&apos;re trying to follow the specs and throw when we have too few arguments, like Gecko does.

That covers the no-argument case, but there’s also the null case. The way that normally works is that we set the proper flags in the IDL (or perhaps it’s the default behavior) so that null turns into a null string at the binding layer. That’s distinct from an empty string; the function in the DOM can check with isNull and handle it properly, or if the handling for null and an empty string are identical, it can just omit an explicit isNull check and typically get the correct result without any special code, since null strings return true for isEmpty and 0 for length.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>638606</commentid>
    <comment_count>43</comment_count>
      <attachid>145123</attachid>
    <who name="Rafael Weinstein">rafaelw</who>
    <bug_when>2012-05-31 11:46:02 -0700</bug_when>
    <thetext>Created attachment 145123
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>638610</commentid>
    <comment_count>44</comment_count>
    <who name="Rafael Weinstein">rafaelw</who>
    <bug_when>2012-05-31 11:48:56 -0700</bug_when>
    <thetext>Recent comments addressed. Tests added for empty/null/undefined argument.

@darin: Simply removing the TreatNullAs=NullString from the IDL brought the behavior inline what Ms2ger &amp; Abarth are asking for. I&apos;m honestly unsure if this is what you had wanted. Please let me know.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>639509</commentid>
    <comment_count>45</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-06-01 10:43:56 -0700</bug_when>
    <thetext>(In reply to comment #44)
&gt; Recent comments addressed. Tests added for empty/null/undefined argument.
&gt; 
&gt; @darin: Simply removing the TreatNullAs=NullString from the IDL brought the behavior inline what Ms2ger &amp; Abarth are asking for.

Good.

&gt; I&apos;m honestly unsure if this is what you had wanted. Please let me know.

I’m sorry you had trouble understanding.

I wanted you to both set the flag in the IDL and change the C++ function if needed, to get the desired result. Sounds like you did. I assume that the test results provide the proof that it’s right.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>640831</commentid>
    <comment_count>46</comment_count>
      <attachid>145123</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-06-04 14:20:53 -0700</bug_when>
    <thetext>Comment on attachment 145123
Patch

Attachment 145123 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/12902299</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>640836</commentid>
    <comment_count>47</comment_count>
      <attachid>145123</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-06-04 14:24:17 -0700</bug_when>
    <thetext>Comment on attachment 145123
Patch

Attachment 145123 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/12906082</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>640839</commentid>
    <comment_count>48</comment_count>
      <attachid>145123</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-06-04 14:27:59 -0700</bug_when>
    <thetext>Comment on attachment 145123
Patch

Attachment 145123 did not pass win-ews (win):
Output: http://queues.webkit.org/results/12902300</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>640870</commentid>
    <comment_count>49</comment_count>
      <attachid>145123</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-06-04 15:04:12 -0700</bug_when>
    <thetext>Comment on attachment 145123
Patch

Attachment 145123 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/12900295</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>640879</commentid>
    <comment_count>50</comment_count>
      <attachid>145123</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-06-04 15:08:59 -0700</bug_when>
    <thetext>Comment on attachment 145123
Patch

Attachment 145123 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/12895398</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>640905</commentid>
    <comment_count>51</comment_count>
      <attachid>145640</attachid>
    <who name="Rafael Weinstein">rafaelw</who>
    <bug_when>2012-06-04 15:30:21 -0700</bug_when>
    <thetext>Created attachment 145640
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>640906</commentid>
    <comment_count>52</comment_count>
    <who name="Rafael Weinstein">rafaelw</who>
    <bug_when>2012-06-04 15:31:31 -0700</bug_when>
    <thetext>(lastest patch: missing semi-colon broke llvm builds)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>702412</commentid>
    <comment_count>53</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-08-22 15:24:44 -0700</bug_when>
    <thetext>Unclear what the next step here is.  Is this just missing a technical review, or is this caught up in standards work still?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>702451</commentid>
    <comment_count>54</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-08-22 15:39:12 -0700</bug_when>
    <thetext>(In reply to comment #53)
&gt; Unclear what the next step here is.  Is this just missing a technical review, or is this caught up in standards work still?

Standards work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719990</commentid>
    <comment_count>55</comment_count>
      <attachid>145640</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-09-13 15:03:52 -0700</bug_when>
    <thetext>Comment on attachment 145640
Patch

Clearing r? flag until the standards discussion settles.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>744436</commentid>
    <comment_count>56</comment_count>
    <who name="Rafael Weinstein">rafaelw</who>
    <bug_when>2012-10-17 11:17:35 -0700</bug_when>
    <thetext>Document.parse() is now superceeded by the HTMLTemplateElement:

http://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/templates/index.html

https://bugs.webkit.org/show_bug.cgi?id=86031</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>138447</attachid>
            <date>2012-04-23 16:00:40 -0700</date>
            <delta_ts>2012-04-30 16:43:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84646-20120423160039.patch</filename>
            <type>text/plain</type>
            <size>13206</size>
            <attacher name="Rafael Weinstein">rafaelw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE0Nzc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2ZmODc1MjY3N2UwODU3
NTczOWFhMjE4YWZmNjk3OGM5MTJlZWQwOS4uZjdjZDRhMTI0MWY1ZmFmYmZlZjdlODAwN2I2OWMy
YWUzMGVkZmQxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDEyLTA0LTIzICBSYWZh
ZWwgV2VpbnN0ZWluICA8cmFmYWVsd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW1wbGVtZW50
IERvY3VtZW50RnJhZ21lbnQuaW5uZXJIVE1MCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04NDY0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gKE9PUFMhKQorCisgICAgICAgICogZG9t
L0RvY3VtZW50RnJhZ21lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRGcmFnbWVu
dDo6aW5uZXJIVE1MKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRGcmFnbWVudDo6c2V0SW5uZXJIVE1MKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnRGcmFn
bWVudC5oOgorICAgICAgICAoRG9jdW1lbnRGcmFnbWVudCk6CisgICAgICAgICogZG9tL0RvY3Vt
ZW50RnJhZ21lbnQuaWRsOgorICAgICAgICAqIGRvbS9TaGFkb3dSb290LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OnNldElubmVySFRNTCk6CisgICAgICAgICogZWRpdGluZy9t
YXJrdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRnJhZ21lbnRGcm9tU291cmNlKToK
KyAgICAgICAgKiBlZGl0aW5nL21hcmt1cC5oOgorICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OnNldElubmVySFRNTCk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6c2V0T3V0ZXJIVE1MKToKKyAgICAgICAgKiBodG1s
L3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVC
dWlsZGVyOjpIVE1MVHJlZUJ1aWxkZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWls
ZGVyOjpwcm9jZXNzU3RhcnRUYWcpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVy
OjpyZXNldEluc2VydGlvbk1vZGVBcHByb3ByaWF0ZWx5KToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRhZyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJl
ZUJ1aWxkZXI6OnByb2Nlc3NDaGFyYWN0ZXJCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFRyZWVCdWlsZGVyOjpwcm9jZXNzRW5kT2ZGaWxlKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9I
VE1MVHJlZUJ1aWxkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6RnJh
Z21lbnRQYXJzaW5nQ29udGV4dDo6Y29udGV4dEVsZW1lbnQpOgorCiAyMDEyLTA0LTIwICBFbWls
IEEgRWtsdW5kICA8ZWFlQGNocm9taXVtLm9yZz4KIAogICAgICAgICBGaXggdXNlIG9mIExheW91
dFVuaXRzIGluIERPTU5vZGVIaWdobGlnaHRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50RnJhZ21lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJh
Z21lbnQuY3BwCmluZGV4IGY3Y2ZhZGZjYzc5ZjMxZDUxNjYzZWFhYzA0MmIzNDVkYTczNGMxOWEu
LjliY2MzM2M3MDFiYjcwYjQ4ODU3ZTM5NTI1ZWE0N2QwYjNiNTMxZGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnRGcmFnbWVudC5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJQ
YWdlLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJYTUxEb2N1bWVudFBhcnNl
ci5oIgorI2luY2x1ZGUgIm1hcmt1cC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTkw
LDQgKzkxLDIxIEBAIGJvb2wgRG9jdW1lbnRGcmFnbWVudDo6cGFyc2VYTUwoY29uc3QgU3RyaW5n
JiBzb3VyY2UsIEVsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBGCiAjZW5kaWYKIH0KIAorU3RyaW5n
IERvY3VtZW50RnJhZ21lbnQ6OmlubmVySFRNTCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNyZWF0
ZU1hcmt1cCh0aGlzLCBDaGlsZHJlbk9ubHkpOworfQorCit2b2lkIERvY3VtZW50RnJhZ21lbnQ6
OnNldElubmVySFRNTChjb25zdCBTdHJpbmcmIGh0bWwsIEV4Y2VwdGlvbkNvZGUmIGVjKQorewor
ICAgIGlmICghZG9jdW1lbnQoKS0+aXNIVE1MRG9jdW1lbnQoKSkgeworICAgICAgICBlYyA9IElO
VkFMSURfU1RBVEVfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgUmVmUHRyPERv
Y3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRGcm9tU291cmNlKGh0bWws
IGRvY3VtZW50KCksIDAgLyogY29udGV4dEVsZW1lbnQgKi8sIGVjKTsKKyAgICBpZiAoZnJhZ21l
bnQpCisgICAgICAgIHJlcGxhY2VDaGlsZHJlbldpdGhGcmFnbWVudCh0aGlzLCBmcmFnbWVudC5y
ZWxlYXNlKCksIGVjKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50RnJhZ21lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmgK
aW5kZXggMWVhNGRjYjMyNjVmZjJhODY2OGI0MGRmNGZhZjczZGY1ZTBlNGQ1NC4uNWNjOTZiNzJi
NzQyYzkxYmRlZmQ0Y2ExNjA4M2MzM2U0MGY3Njc4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnRGcmFnbWVudC5oCkBAIC0zOCw2ICszOCw5IEBAIHB1YmxpYzoKICAgICAKICAgICB2aXJ0dWFs
IGJvb2wgY2FuQ29udGFpblJhbmdlRW5kUG9pbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAK
KyAgICBTdHJpbmcgaW5uZXJIVE1MKCkgY29uc3Q7CisgICAgdm9pZCBzZXRJbm5lckhUTUwoY29u
c3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOworCiBwcm90ZWN0ZWQ6CiAgICAgRG9jdW1lbnRG
cmFnbWVudChEb2N1bWVudCosIENvbnN0cnVjdGlvblR5cGUgPSBDcmVhdGVDb250YWluZXIpOwog
ICAgIHZpcnR1YWwgU3RyaW5nIG5vZGVOYW1lKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnRGcmFnbWVudC5pZGwKaW5kZXggODgyYjYyZGIzOWViN2YyZTA1MDQ3ODIwNDkyYjdlOTM2
MWE4ZWRlZC4uZjVmNTkxMzk3MmRiN2VkMDA0MTg4MmE2NjhlYTYzMzFhY2M3M2ZlZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuaWRsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmlkbApAQCAtMjUsNiArMjUsOCBAQCBtb2R1
bGUgY29yZSB7CiAgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICAgICAgTm9k
ZUxpc3QgcXVlcnlTZWxlY3RvckFsbChpbiBET01TdHJpbmcgc2VsZWN0b3JzKQogICAgICAgICAg
ICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgICAgIGF0dHJpYnV0ZSBbVHJlYXROdWxsQXM9
TnVsbFN0cmluZ10gRE9NU3RyaW5nIGlubmVySFRNTAorICAgICAgICAgICAgc2V0dGVyIHJhaXNl
cyhET01FeGNlcHRpb24pOwogICAgIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TaGFkb3dSb290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcApp
bmRleCBlNzUwYmMyMmI0NGRiNzVhN2VlNDk2YmU5OTQxYmJlOWY4NDIzZWE1Li43MjA4ZDI5NGFh
Y2ZmMmRiN2ZkMmNkZjczNjBmNDVmMTcwMmYyMzEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2hhZG93Um9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3Qu
Y3BwCkBAIC0xNDQsNyArMTQ0LDcgQEAgU3RyaW5nIFNoYWRvd1Jvb3Q6OmlubmVySFRNTCgpIGNv
bnN0CiAKIHZvaWQgU2hhZG93Um9vdDo6c2V0SW5uZXJIVE1MKGNvbnN0IFN0cmluZyYgbWFya3Vw
LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJh
Z21lbnQgPSBjcmVhdGVGcmFnbWVudEZyb21Tb3VyY2UobWFya3VwLCBob3N0KCksIGVjKTsKKyAg
ICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEZyb21T
b3VyY2UobWFya3VwLCBkb2N1bWVudCgpLCBob3N0KCksIGVjKTsKICAgICBpZiAoZnJhZ21lbnQp
CiAgICAgICAgIHJlcGxhY2VDaGlsZHJlbldpdGhGcmFnbWVudCh0aGlzLCBmcmFnbWVudC5yZWxl
YXNlKCksIGVjKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3Vw
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAppbmRleCAzNjRhMTdjNWM4
MDI3MDVlNzY5ZTM3MmE0NmU1Y2Q2ZWQ0NjZiMzZkLi44NjBmZTVlYWMwMjg1ZjU0ZmE3OTYxZDBh
ZTBkNDk2MGEyMGIyNGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1
cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCkBAIC05OTIsOSAr
OTkyLDggQEAgU3RyaW5nIHVybFRvTWFya3VwKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiB0aXRsZSkKICAgICByZXR1cm4gbWFya3VwLnRvU3RyaW5nKCk7CiB9CiAKLVBhc3NSZWZQdHI8
RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGcm9tU291cmNlKGNvbnN0IFN0cmluZyYg
bWFya3VwLCBFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgRXhjZXB0aW9uQ29kZSYgZWMpCitQYXNz
UmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJvbVNvdXJjZShjb25zdCBT
dHJpbmcmIG1hcmt1cCwgRG9jdW1lbnQqIGRvY3VtZW50LCBFbGVtZW50KiBjb250ZXh0RWxlbWVu
dCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gY29udGV4
dEVsZW1lbnQtPmRvY3VtZW50KCk7CiAgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdt
ZW50ID0gRG9jdW1lbnRGcmFnbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKIAogICAgIGlmIChkb2N1
bWVudC0+aXNIVE1MRG9jdW1lbnQoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9tYXJrdXAuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmgKaW5kZXggOTE4
YWU5YjEzZTkxY2E3OGI4YjdhZmE0ZGNmN2Q3NmVkNjg2MzkwZC4uNTRlZDhjMDFjZWNlNzY2MTlh
NzZhNDM1NzI3NTZiMDZlZmQ2ZDdiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9tYXJrdXAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5oCkBAIC01MCw3
ICs1MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBQYXNzUmVmUHRyPERvY3VtZW50RnJh
Z21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cChEb2N1bWVudCosIGNvbnN0IFN0cmluZyYg
bWFya3VwLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lv
biA9IEZyYWdtZW50U2NyaXB0aW5nQWxsb3dlZCk7CiAgICAgUGFzc1JlZlB0cjxEb2N1bWVudEZy
YWdtZW50PiBjcmVhdGVGcmFnbWVudEZyb21NYXJrdXBXaXRoQ29udGV4dChEb2N1bWVudCosIGNv
bnN0IFN0cmluZyYgbWFya3VwLCB1bnNpZ25lZCBmcmFnbWVudFN0YXJ0LCB1bnNpZ25lZCBmcmFn
bWVudEVuZCwgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Np
b24pOwogICAgIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGcm9t
Tm9kZXMoRG9jdW1lbnQqLCBjb25zdCBWZWN0b3I8Tm9kZSo+Jik7Ci0gICAgUGFzc1JlZlB0cjxE
b2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZyb21Tb3VyY2UoY29uc3QgU3RyaW5nJiwg
RWxlbWVudCosIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21l
bnQ+IGNyZWF0ZUZyYWdtZW50RnJvbVNvdXJjZShjb25zdCBTdHJpbmcmLCBEb2N1bWVudCosIEVs
ZW1lbnQqLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICBib29sIGlzUGxhaW5UZXh0TWFya3VwKE5v
ZGUgKm5vZGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCmluZGV4IDVmOGIyMjNk
YWFmODEwNmFlYWU5NWQ2ZGExYTU4YmQwNmM3ODIwYzUuLmNjMzcwMWY4OWQ3MTFjYTE0NDU3NWEx
MmFiNjI3ZmU2N2QxZTc0NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCkBAIC0z
NDQsNyArMzQ0LDcgQEAgU3RyaW5nIEhUTUxFbGVtZW50OjpvdXRlckhUTUwoKSBjb25zdAogCiB2
b2lkIEhUTUxFbGVtZW50OjpzZXRJbm5lckhUTUwoY29uc3QgU3RyaW5nJiBodG1sLCBFeGNlcHRp
b25Db2RlJiBlYykKIHsKLSAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSBj
cmVhdGVGcmFnbWVudEZyb21Tb3VyY2UoaHRtbCwgdGhpcywgZWMpOworICAgIFJlZlB0cjxEb2N1
bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50RnJvbVNvdXJjZShodG1sLCBk
b2N1bWVudCgpLCB0aGlzLCBlYyk7CiAgICAgaWYgKGZyYWdtZW50KQogICAgICAgICByZXBsYWNl
Q2hpbGRyZW5XaXRoRnJhZ21lbnQodGhpcywgZnJhZ21lbnQucmVsZWFzZSgpLCBlYyk7CiB9CkBA
IC0zNzYsNyArMzc2LDcgQEAgdm9pZCBIVE1MRWxlbWVudDo6c2V0T3V0ZXJIVE1MKGNvbnN0IFN0
cmluZyYgaHRtbCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgUmVmUHRyPE5vZGU+IHByZXYgPSBw
cmV2aW91c1NpYmxpbmcoKTsKICAgICBSZWZQdHI8Tm9kZT4gbmV4dCA9IG5leHRTaWJsaW5nKCk7
CiAKLSAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVu
dEZyb21Tb3VyY2UoaHRtbCwgcGFyZW50LmdldCgpLCBlYyk7CisgICAgUmVmUHRyPERvY3VtZW50
RnJhZ21lbnQ+IGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRGcm9tU291cmNlKGh0bWwsIGRvY3Vt
ZW50KCksIHBhcmVudC5nZXQoKSwgZWMpOwogICAgIGlmIChlYykKICAgICAgICAgcmV0dXJuOwog
ICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1
aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNw
cAppbmRleCA4MDYyZWJkMTc2NDZlY2EyYWU5ZmQxMmUxMGM2ZGZhMTc2YTBhMjJkLi5mZWEzZWUy
NmQwZjQ1ZTg3MjE1Y2NmYzU5YmY2M2ZhMDczYWIxMzFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAKQEAgLTM4MSwxNyArMzgxLDE1IEBAIEhU
TUxUcmVlQnVpbGRlcjo6SFRNTFRyZWVCdWlsZGVyKEhUTUxEb2N1bWVudFBhcnNlciogcGFyc2Vy
LCBEb2N1bWVudEZyYWdtZW50KiBmCiAgICAgLCBtX2xhc3RTY3JpcHRFbGVtZW50U3RhcnRQb3Np
dGlvbihUZXh0UG9zaXRpb246OmJlbG93UmFuZ2VQb3NpdGlvbigpKQogICAgICwgbV91c2VQcmVI
VE1MNVBhcnNlclF1aXJrcyh1c2VQcmVIVE1MNVBhcnNlclF1aXJrcykKIHsKLSAgICAvLyBGSVhN
RTogVGhpcyBhc3NlcnRpb24gd2lsbCBiZWNvbWUgaW52YWxpZCBpZiA8aHR0cDovL3dlYmtpdC5v
cmcvYi82MDMxNj4gaXMgZml4ZWQuCi0gICAgQVNTRVJUKGNvbnRleHRFbGVtZW50KTsKLSAgICBp
ZiAoY29udGV4dEVsZW1lbnQpIHsKLSAgICAgICAgLy8gU3RlcHMgNC4yLTQuNiBvZiB0aGUgSFRN
TDUgRnJhZ21lbnQgQ2FzZSBwYXJzaW5nIGFsZ29yaXRobToKLSAgICAgICAgLy8gaHR0cDovL3d3
dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2UvdGhlLWVu
ZC5odG1sI2ZyYWdtZW50LWNhc2UKLSAgICAgICAgLy8gRm9yIGVmZmljaWVuY3ksIHdlIHNraXAg
c3RlcCA0LjIgKCJMZXQgcm9vdCBiZSBhIG5ldyBodG1sIGVsZW1lbnQgd2l0aCBubyBhdHRyaWJ1
dGVzIikKLSAgICAgICAgLy8gYW5kIGluc3RlYWQgdXNlIHRoZSBEb2N1bWVudEZyYWdtZW50IGFz
IGEgcm9vdCBub2RlLgotICAgICAgICBtX3RyZWUub3BlbkVsZW1lbnRzKCktPnB1c2hSb290Tm9k
ZShmcmFnbWVudCk7Ci0gICAgICAgIHJlc2V0SW5zZXJ0aW9uTW9kZUFwcHJvcHJpYXRlbHkoKTsK
KworICAgIC8vIFN0ZXBzIDQuMi00LjYgb2YgdGhlIEhUTUw1IEZyYWdtZW50IENhc2UgcGFyc2lu
ZyBhbGdvcml0aG06CisgICAgLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBz
L2N1cnJlbnQtd29yay9tdWx0aXBhZ2UvdGhlLWVuZC5odG1sI2ZyYWdtZW50LWNhc2UKKyAgICAv
LyBGb3IgZWZmaWNpZW5jeSwgd2Ugc2tpcCBzdGVwIDQuMiAoIkxldCByb290IGJlIGEgbmV3IGh0
bWwgZWxlbWVudCB3aXRoIG5vIGF0dHJpYnV0ZXMiKQorICAgIC8vIGFuZCBpbnN0ZWFkIHVzZSB0
aGUgRG9jdW1lbnRGcmFnbWVudCBhcyBhIHJvb3Qgbm9kZS4KKyAgICBtX3RyZWUub3BlbkVsZW1l
bnRzKCktPnB1c2hSb290Tm9kZShmcmFnbWVudCk7CisgICAgcmVzZXRJbnNlcnRpb25Nb2RlQXBw
cm9wcmlhdGVseSgpOworICAgIGlmIChjb250ZXh0RWxlbWVudCkKICAgICAgICAgbV90cmVlLnNl
dEZvcm0oY2xvc2VzdEZvcm1BbmNlc3Rvcihjb250ZXh0RWxlbWVudCkpOwotICAgIH0KIH0KIAog
SFRNTFRyZWVCdWlsZGVyOjp+SFRNTFRyZWVCdWlsZGVyKCkKQEAgLTE0NjEsNiArMTQ1OSwxOCBA
QCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFnKEF0b21pY0hUTUxUb2tlbiYg
dG9rZW4pCiAgICAgY2FzZSBUZXh0TW9kZToKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ29udGV4dEZyZWVNb2RlOgorICAgICAgICBpZiAo
aXNDYXB0aW9uQ29sT3JDb2xncm91cFRhZyh0b2tlbi5uYW1lKCkpIHx8IGlzVGFibGVCb2R5Q29u
dGV4dFRhZyh0b2tlbi5uYW1lKCkpKQorICAgICAgICAgICAgc2V0SW5zZXJ0aW9uTW9kZShJblRh
YmxlTW9kZSk7CisgICAgICAgIGVsc2UgaWYgKHRva2VuLm5hbWUoKSA9PSB0clRhZykKKyAgICAg
ICAgICAgIHNldEluc2VydGlvbk1vZGUoSW5UYWJsZUJvZHlNb2RlKTsKKyAgICAgICAgZWxzZSBp
ZiAoaXNUYWJsZUNlbGxDb250ZXh0VGFnKHRva2VuLm5hbWUoKSkpCisgICAgICAgICAgICBzZXRJ
bnNlcnRpb25Nb2RlKEluUm93TW9kZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNldElu
c2VydGlvbk1vZGUoSW5Cb2R5TW9kZSk7CisKKyAgICAgICAgcHJvY2Vzc1N0YXJ0VGFnKHRva2Vu
KTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogfQogCkBAIC0xNjUxLDcgKzE2NjEsOCBAQCB2b2lk
IEhUTUxUcmVlQnVpbGRlcjo6cmVzZXRJbnNlcnRpb25Nb2RlQXBwcm9wcmlhdGVseSgpCiAgICAg
ICAgIGlmIChub2RlID09IG1fdHJlZS5vcGVuRWxlbWVudHMoKS0+cm9vdE5vZGUoKSkgewogICAg
ICAgICAgICAgQVNTRVJUKGlzUGFyc2luZ0ZyYWdtZW50KCkpOwogICAgICAgICAgICAgbGFzdCA9
IHRydWU7Ci0gICAgICAgICAgICBub2RlID0gbV9mcmFnbWVudENvbnRleHQuY29udGV4dEVsZW1l
bnQoKTsKKyAgICAgICAgICAgIGlmIChtX2ZyYWdtZW50Q29udGV4dC5jb250ZXh0RWxlbWVudCgp
KQorICAgICAgICAgICAgICAgIG5vZGUgPSBtX2ZyYWdtZW50Q29udGV4dC5jb250ZXh0RWxlbWVu
dCgpOwogICAgICAgICB9CiAgICAgICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKHNlbGVjdFRhZykp
IHsKICAgICAgICAgICAgIEFTU0VSVChpc1BhcnNpbmdGcmFnbWVudCgpKTsKQEAgLTE2ODcsNiAr
MTY5OCw5IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpyZXNldEluc2VydGlvbk1vZGVBcHByb3By
aWF0ZWx5KCkKICAgICAgICAgfQogICAgICAgICBpZiAobGFzdCkgewogICAgICAgICAgICAgQVNT
RVJUKGlzUGFyc2luZ0ZyYWdtZW50KCkpOworICAgICAgICAgICAgaWYgKG5vZGUtPm5vZGVUeXBl
KCkgPT0gTm9kZTo6RE9DVU1FTlRfRlJBR01FTlRfTk9ERSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gc2V0SW5zZXJ0aW9uTW9kZShDb250ZXh0RnJlZU1vZGUpOworCiAgICAgICAgICAgICByZXR1
cm4gc2V0SW5zZXJ0aW9uTW9kZShJbkJvZHlNb2RlKTsKICAgICAgICAgfQogICAgICAgICBub2Rl
UmVjb3JkID0gbm9kZVJlY29yZC0+bmV4dCgpOwpAQCAtMjA0Miw2ICsyMDU2LDcgQEAgdm9pZCBI
VE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWcoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKICAg
ICAgICAgfQogICAgICAgICBkZWZhdWx0Rm9yQWZ0ZXJIZWFkKCk7CiAgICAgICAgIC8vIEZhbGwg
dGhyb3VnaAorICAgIGNhc2UgQ29udGV4dEZyZWVNb2RlOgogICAgIGNhc2UgSW5Cb2R5TW9kZToK
ICAgICAgICAgQVNTRVJUKGluc2VydGlvbk1vZGUoKSA9PSBJbkJvZHlNb2RlKTsKICAgICAgICAg
cHJvY2Vzc0VuZFRhZ0ZvckluQm9keSh0b2tlbik7CkBAIC0yMzM0LDEwICsyMzQ5LDExIEBAIFJl
cHJvY2Vzc0J1ZmZlcjoKICAgICAgICAgZGVmYXVsdEZvckFmdGVySGVhZCgpOwogICAgICAgICAv
LyBGYWxsIHRocm91Z2guCiAgICAgfQorICAgIGNhc2UgQ29udGV4dEZyZWVNb2RlOgogICAgIGNh
c2UgSW5Cb2R5TW9kZToKICAgICBjYXNlIEluQ2FwdGlvbk1vZGU6CiAgICAgY2FzZSBJbkNlbGxN
b2RlOiB7Ci0gICAgICAgIEFTU0VSVChpbnNlcnRpb25Nb2RlKCkgPT0gSW5Cb2R5TW9kZSB8fCBp
bnNlcnRpb25Nb2RlKCkgPT0gSW5DYXB0aW9uTW9kZSB8fCBpbnNlcnRpb25Nb2RlKCkgPT0gSW5D
ZWxsTW9kZSk7CisgICAgICAgIEFTU0VSVChpbnNlcnRpb25Nb2RlKCkgPT0gQ29udGV4dEZyZWVN
b2RlIHx8IGluc2VydGlvbk1vZGUoKSA9PSBJbkJvZHlNb2RlIHx8IGluc2VydGlvbk1vZGUoKSA9
PSBJbkNhcHRpb25Nb2RlIHx8IGluc2VydGlvbk1vZGUoKSA9PSBJbkNlbGxNb2RlKTsKICAgICAg
ICAgcHJvY2Vzc0NoYXJhY3RlckJ1ZmZlckZvckluQm9keShidWZmZXIpOwogICAgICAgICBicmVh
azsKICAgICB9CkBAIC0yNDY4LDExICsyNDg0LDEyIEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpw
cm9jZXNzRW5kT2ZGaWxlKEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiAgICAgICAgIEFTU0VSVChp
bnNlcnRpb25Nb2RlKCkgPT0gQWZ0ZXJIZWFkTW9kZSk7CiAgICAgICAgIGRlZmF1bHRGb3JBZnRl
ckhlYWQoKTsKICAgICAgICAgLy8gRmFsbCB0aHJvdWdoCisgICAgY2FzZSBDb250ZXh0RnJlZU1v
ZGU6CiAgICAgY2FzZSBJbkJvZHlNb2RlOgogICAgIGNhc2UgSW5DZWxsTW9kZToKICAgICBjYXNl
IEluQ2FwdGlvbk1vZGU6CiAgICAgY2FzZSBJblJvd01vZGU6Ci0gICAgICAgIEFTU0VSVChpbnNl
cnRpb25Nb2RlKCkgPT0gSW5Cb2R5TW9kZSB8fCBpbnNlcnRpb25Nb2RlKCkgPT0gSW5DZWxsTW9k
ZSB8fCBpbnNlcnRpb25Nb2RlKCkgPT0gSW5DYXB0aW9uTW9kZSB8fCBpbnNlcnRpb25Nb2RlKCkg
PT0gSW5Sb3dNb2RlKTsKKyAgICAgICAgQVNTRVJUKGluc2VydGlvbk1vZGUoKSA9PSBDb250ZXh0
RnJlZU1vZGUgfHwgaW5zZXJ0aW9uTW9kZSgpID09IEluQm9keU1vZGUgfHwgaW5zZXJ0aW9uTW9k
ZSgpID09IEluQ2VsbE1vZGUgfHwgaW5zZXJ0aW9uTW9kZSgpID09IEluQ2FwdGlvbk1vZGUgfHwg
aW5zZXJ0aW9uTW9kZSgpID09IEluUm93TW9kZSk7CiAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7
IC8vIEVtaXQgcGFyc2UgZXJyb3IgYmFzZWQgb24gd2hhdCBlbGVtZW50cyBhcmUgc3RpbGwgb3Bl
bi4KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBZnRlckJvZHlNb2RlOgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuaAppbmRleCAzNTAyNGY4ODhjOWM5YjQ1
ZjU3NDYzNTM0N2M2NDVmMGUxMWUyMWNhLi5hYjc4NTEzNDcwMzM4YWFkOGQ5N2EzODQ4YTVhZmQ2
ZjNjZmI3NTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJl
ZUJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxk
ZXIuaApAQCAtOTMsNiArOTMsNyBAQCBwcml2YXRlOgogICAgIC8vIFJlcHJlc2VudHMgSFRNTDUg
Imluc2VydGlvbiBtb2RlIgogICAgIC8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWIt
YXBwcy9jdXJyZW50LXdvcmsvbXVsdGlwYWdlL3BhcnNpbmcuaHRtbCNpbnNlcnRpb24tbW9kZQog
ICAgIGVudW0gSW5zZXJ0aW9uTW9kZSB7CisgICAgICAgIENvbnRleHRGcmVlTW9kZSwKICAgICAg
ICAgSW5pdGlhbE1vZGUsCiAgICAgICAgIEJlZm9yZUhUTUxNb2RlLAogICAgICAgICBCZWZvcmVI
ZWFkTW9kZSwKQEAgLTE5OSw3ICsyMDAsNyBAQCBwcml2YXRlOgogICAgICAgICB+RnJhZ21lbnRQ
YXJzaW5nQ29udGV4dCgpOwogCiAgICAgICAgIERvY3VtZW50RnJhZ21lbnQqIGZyYWdtZW50KCkg
Y29uc3QgeyByZXR1cm4gbV9mcmFnbWVudDsgfQotICAgICAgICBFbGVtZW50KiBjb250ZXh0RWxl
bWVudCgpIGNvbnN0IHsgQVNTRVJUKG1fZnJhZ21lbnQpOyByZXR1cm4gbV9jb250ZXh0RWxlbWVu
dDsgfQorICAgICAgICBFbGVtZW50KiBjb250ZXh0RWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1f
Y29udGV4dEVsZW1lbnQ7IH0KICAgICAgICAgRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uIHNj
cmlwdGluZ1Blcm1pc3Npb24oKSBjb25zdCB7IEFTU0VSVChtX2ZyYWdtZW50KTsgcmV0dXJuIG1f
c2NyaXB0aW5nUGVybWlzc2lvbjsgfQogCiAgICAgcHJpdmF0ZToK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>139544</attachid>
            <date>2012-04-30 16:43:40 -0700</date>
            <delta_ts>2012-05-03 16:46:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84646-20120430164339.patch</filename>
            <type>text/plain</type>
            <size>27510</size>
            <attacher name="Rafael Weinstein">rafaelw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE1Njc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGU1NGJkYmQ4YTg5NjYz
ZjllNmI0YjQ4NGY0YzQ0NzM3OGM3M2Y3Yy4uNDhiNGM0YjRiYWE1MTljYjM3YTVkZjcyMTRkZTBh
ZTRiYzA5OTljNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEyLTA0LTIzICBSYWZh
ZWwgV2VpbnN0ZWluICA8cmFmYWVsd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW1wbGVtZW50
IERvY3VtZW50RnJhZ21lbnQuaW5uZXJIVE1MCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04NDY0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIERvY3VtZW50RnJhZ21lbnQuaW5uZXJIVE1MIG5vdyBwYXJzZXMg
YmFzZWQgb24gYW4gImltcGxpZWQgY29udGV4dCBlbGVtZW50IiB3aGljaCBpcyBwaWNrcyBiYXNl
ZAorICAgICAgICBvbiB0aGUgbmFtZSBvZiB0aGUgZmlyc3QgdGFnIHdoaWNoIGFwcGVhcnMgaW4g
dGhlIHByb3ZpZGVkIG1hcmt1cC4KKworICAgICAgICBObyBuZXcgdGVzdHMuIChPT1BTISkKKwor
ICAgICAgICAqIGRvbS9Eb2N1bWVudEZyYWdtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50RnJhZ21lbnQ6OmlubmVySFRNTCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50RnJhZ21lbnQ6OnNldElubmVySFRNTCk6CisgICAgICAgICogZG9t
L0RvY3VtZW50RnJhZ21lbnQuaDoKKyAgICAgICAgKERvY3VtZW50RnJhZ21lbnQpOgorICAgICAg
ICAqIGRvbS9Eb2N1bWVudEZyYWdtZW50LmlkbDoKKyAgICAgICAgKiBkb20vU2hhZG93Um9vdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290OjpzZXRJbm5lckhUTUwpOgorICAgICAg
ICAqIGVkaXRpbmcvbWFya3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZyYWdtZW50
RnJvbVNvdXJjZSk6CisgICAgICAgICogZWRpdGluZy9tYXJrdXAuaDoKKyAgICAgICAgKiBodG1s
L0hUTUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjpzZXRJbm5l
ckhUTUwpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OnNldE91dGVySFRNTCk6Cisg
ICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxUcmVlQnVpbGRlcjo6SFRNTFRyZWVCdWlsZGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFnKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxUcmVlQnVpbGRlcjo6cmVzZXRJbnNlcnRpb25Nb2RlQXBwcm9wcmlhdGVseSk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWcpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzQ2hhcmFjdGVyQnVmZmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZE9mRmlsZSk6CisgICAgICAgICog
aHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJl
ZUJ1aWxkZXI6OkZyYWdtZW50UGFyc2luZ0NvbnRleHQ6OmNvbnRleHRFbGVtZW50KToKKwogMjAx
Mi0wNC0zMCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAg
IEFkZCBhIHdheSB0byBhc3luY2hyb25vdXNseSBjYWxsIGEgZnVuY3Rpb24gb25jZSB0aGUgc2Ny
b2xsIHBvc2l0aW9uIG9mIGEgcGFnZSBoYXMgYmVlbiB1cGRhdGVkCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnRGcmFnbWVudC5jcHAKaW5kZXggZjdjZmFkZmNjNzlmMzFkNTE2NjNlYWFjMDQyYjM0
NWRhNzM0YzE5YS4uOWJjYzMzYzcwMWJiNzBiNDg4NTdlMzk1MjVlYTQ3ZDBiM2I1MzFkZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmNwcApAQCAtMjksNiArMjksNyBAQAog
I2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlhNTERv
Y3VtZW50UGFyc2VyLmgiCisjaW5jbHVkZSAibWFya3VwLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApAQCAtOTAsNCArOTEsMjEgQEAgYm9vbCBEb2N1bWVudEZyYWdtZW50OjpwYXJzZVhNTChj
b25zdCBTdHJpbmcmIHNvdXJjZSwgRWxlbWVudCogY29udGV4dEVsZW1lbnQsIEYKICNlbmRpZgog
fQogCitTdHJpbmcgRG9jdW1lbnRGcmFnbWVudDo6aW5uZXJIVE1MKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gY3JlYXRlTWFya3VwKHRoaXMsIENoaWxkcmVuT25seSk7Cit9CisKK3ZvaWQgRG9jdW1l
bnRGcmFnbWVudDo6c2V0SW5uZXJIVE1MKGNvbnN0IFN0cmluZyYgaHRtbCwgRXhjZXB0aW9uQ29k
ZSYgZWMpCit7CisgICAgaWYgKCFkb2N1bWVudCgpLT5pc0hUTUxEb2N1bWVudCgpKSB7CisgICAg
ICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEZyb21T
b3VyY2UoaHRtbCwgZG9jdW1lbnQoKSwgMCAvKiBjb250ZXh0RWxlbWVudCAqLywgZWMpOworICAg
IGlmIChmcmFnbWVudCkKKyAgICAgICAgcmVwbGFjZUNoaWxkcmVuV2l0aEZyYWdtZW50KHRoaXMs
IGZyYWdtZW50LnJlbGVhc2UoKSwgZWMpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
RnJhZ21lbnQuaAppbmRleCAxZWE0ZGNiMzI2NWZmMmE4NjY4YjQwZGY0ZmFmNzNkZjVlMGU0ZDU0
Li41Y2M5NmI3MmI3NDJjOTFiZGVmZDRjYTE2MDgzYzMzZTQwZjc2NzgzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudEZyYWdtZW50LmgKQEAgLTM4LDYgKzM4LDkgQEAgcHVibGljOgogICAgIAog
ICAgIHZpcnR1YWwgYm9vbCBjYW5Db250YWluUmFuZ2VFbmRQb2ludCgpIGNvbnN0IHsgcmV0dXJu
IHRydWU7IH0KIAorICAgIFN0cmluZyBpbm5lckhUTUwoKSBjb25zdDsKKyAgICB2b2lkIHNldElu
bmVySFRNTChjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7CisKIHByb3RlY3RlZDoKICAg
ICBEb2N1bWVudEZyYWdtZW50KERvY3VtZW50KiwgQ29uc3RydWN0aW9uVHlwZSA9IENyZWF0ZUNv
bnRhaW5lcik7CiAgICAgdmlydHVhbCBTdHJpbmcgbm9kZU5hbWUoKSBjb25zdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmlkbCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmlkbAppbmRleCA4ODJiNjJkYjM5ZWI3ZjJlMDUwNDc4
MjA0OTJiN2U5MzYxYThlZGVkLi5mNWY1OTEzOTcyZGI3ZWQwMDQxODgyYTY2OGVhNjMzMWFjYzcz
ZmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5pZGwK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuaWRsCkBAIC0yNSw2ICsy
NSw4IEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOwog
ICAgICAgICBOb2RlTGlzdCBxdWVyeVNlbGVjdG9yQWxsKGluIERPTVN0cmluZyBzZWxlY3RvcnMp
CiAgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgYXR0cmlidXRlIFtU
cmVhdE51bGxBcz1OdWxsU3RyaW5nXSBET01TdHJpbmcgaW5uZXJIVE1MCisgICAgICAgICAgICBz
ZXR0ZXIgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAgICAgfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1F1
YWxpZmllZE5hbWUuY3BwCmluZGV4IGUwODU1MDcwYTdjYjMyNTM0Y2NiZjhhYjhkMDUyNjY3ZGEz
MTlmMTUuLmZhYjFjMmI2YjI3MjM3OGY2YjliMDdjODBhNjQ3ZTMwYzQ4NTYzMWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1lLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vUXVhbGlmaWVkTmFtZS5jcHAKQEAgLTEwNCw2ICsxMDQsNyBAQCBTdHJpbmcgUXVh
bGlmaWVkTmFtZTo6dG9TdHJpbmcoKSBjb25zdAogCiAvLyBHbG9iYWwgaW5pdCByb3V0aW5lcwog
REVGSU5FX0dMT0JBTChRdWFsaWZpZWROYW1lLCBhbnlOYW1lLCBudWxsQXRvbSwgc3RhckF0b20s
IHN0YXJBdG9tKQorREVGSU5FX0dMT0JBTChRdWFsaWZpZWROYW1lLCBudWxsTmFtZSwgbnVsbEF0
b20sIG51bGxBdG9tLCBudWxsQXRvbSkKIAogdm9pZCBRdWFsaWZpZWROYW1lOjppbml0KCkKIHsK
QEAgLTExMyw2ICsxMTQsNyBAQCB2b2lkIFF1YWxpZmllZE5hbWU6OmluaXQoKQogICAgICAgICAK
ICAgICAgICAgQXRvbWljU3RyaW5nOjppbml0KCk7CiAgICAgICAgIG5ldyAoKHZvaWQqKSZhbnlO
YW1lKSBRdWFsaWZpZWROYW1lKG51bGxBdG9tLCBzdGFyQXRvbSwgc3RhckF0b20pOworICAgICAg
ICBuZXcgKCh2b2lkKikmbnVsbE5hbWUpIFF1YWxpZmllZE5hbWUobnVsbEF0b20sIG51bGxBdG9t
LCBudWxsQXRvbSk7CiAgICAgICAgIGluaXRpYWxpemVkID0gdHJ1ZTsKICAgICB9CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL1F1YWxpZmllZE5hbWUuaAppbmRleCA2MzZiMmE1MTUwYzllOTg3YzAyN2U3NTY5Nzky
ZDliYWMzNGE4OWU5Li4wZTdhNWQzNDJmOTZhODk1MTM4NDZlZWJkODA2YThkYjgzNGUxODBiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1lLmgKQEAgLTEwNSw2ICsxMDUsOCBAQCBwcml2YXRl
OgogI2lmbmRlZiBXRUJDT1JFX1FVQUxJRklFRE5BTUVfSElERV9HTE9CQUxTCiBleHRlcm4gY29u
c3QgUXVhbGlmaWVkTmFtZSBhbnlOYW1lOwogaW5saW5lIGNvbnN0IFF1YWxpZmllZE5hbWUmIGFu
eVFOYW1lKCkgeyByZXR1cm4gYW55TmFtZTsgfQorZXh0ZXJuIGNvbnN0IFF1YWxpZmllZE5hbWUg
bnVsbE5hbWU7CitpbmxpbmUgY29uc3QgUXVhbGlmaWVkTmFtZSYgbnVsbFFOYW1lKCkgeyByZXR1
cm4gYW55TmFtZTsgfQogI2VuZGlmCiAKIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgQXRv
bWljU3RyaW5nJiBhLCBjb25zdCBRdWFsaWZpZWROYW1lJiBxKSB7IHJldHVybiBhID09IHEubG9j
YWxOYW1lKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAppbmRleCA4YzFkOGIyZDhjNjQ5
N2VlMGQ0ZDE5MGMzZjdhNjQyNmI2NjQ3NzM4Li5iNTU3MDIwODI3MzBiODZmYTUzNThhMTExZmM2
ODVlNzZjNGM2NzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCkBAIC0xMzcsMTggKzEz
Nyw2IEBAIFBhc3NSZWZQdHI8Tm9kZT4gU2hhZG93Um9vdDo6Y2xvbmVOb2RlKGJvb2wpCiAgICAg
cmV0dXJuIDA7CiB9CiAKLVN0cmluZyBTaGFkb3dSb290Ojppbm5lckhUTUwoKSBjb25zdAotewot
ICAgIHJldHVybiBjcmVhdGVNYXJrdXAodGhpcywgQ2hpbGRyZW5Pbmx5KTsKLX0KLQotdm9pZCBT
aGFkb3dSb290OjpzZXRJbm5lckhUTUwoY29uc3QgU3RyaW5nJiBtYXJrdXAsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQotewotICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGNyZWF0
ZUZyYWdtZW50RnJvbVNvdXJjZShtYXJrdXAsIGhvc3QoKSwgZWMpOwotICAgIGlmIChmcmFnbWVu
dCkKLSAgICAgICAgcmVwbGFjZUNoaWxkcmVuV2l0aEZyYWdtZW50KHRoaXMsIGZyYWdtZW50LnJl
bGVhc2UoKSwgZWMpOwotfQotCiBET01TZWxlY3Rpb24qIFNoYWRvd1Jvb3Q6OnNlbGVjdGlvbigp
CiB7CiAgICAgaWYgKGRvY3VtZW50KCkgJiYgZG9jdW1lbnQoKS0+ZG9tV2luZG93KCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1NoYWRvd1Jvb3QuaAppbmRleCBlNWIyMjFiNzNhMzM3MWEwNTQ1ZjBjNDk1OTcxNjY4ZGE4
MjY5YWE4Li5hNDJlNjM1Y2JjMzMyN2E0YjAzYjg2MTFkYTk5ZTNhMmQxZGI1ZDA5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TaGFkb3dSb290LmgKQEAgLTczLDkgKzczLDYgQEAgcHVibGljOgogICAgIEVsZW1lbnQq
IGhvc3QoKSBjb25zdCB7IHJldHVybiBzaGFkb3dIb3N0KCk7IH0KICAgICBTaGFkb3dUcmVlKiB0
cmVlKCkgY29uc3Q7CiAKLSAgICBTdHJpbmcgaW5uZXJIVE1MKCkgY29uc3Q7Ci0gICAgdm9pZCBz
ZXRJbm5lckhUTUwoY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOwotCiAgICAgRWxlbWVu
dCogYWN0aXZlRWxlbWVudCgpIGNvbnN0OwogCiAgICAgRE9NU2VsZWN0aW9uKiBzZWxlY3Rpb24o
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmlkbCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmlkbAppbmRleCA1ZWU1NjYzMzI5ZjZhNzYwNmE0NjQx
NTE1MDQxNmVjMDgyZTcwMGEyLi42NWUxMWQ3ZjZmOTYwYjdjNzc2MjE1MjhmMjRkNDg2Y2I4YjRj
MzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5pZGwKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaWRsCkBAIC0zNiw5ICszNiw2IEBAIG1vZHVs
ZSBjb3JlIHsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEVsZW1lbnQgYWN0aXZlRWxlbWVu
dDsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVNlbGVjdGlvbiBzZWxlY3Rpb247CiAK
LSAgICAgICAgYXR0cmlidXRlIFtUcmVhdE51bGxBcz1OdWxsU3RyaW5nXSBET01TdHJpbmcgaW5u
ZXJIVE1MCi0gICAgICAgICAgICBzZXR0ZXIgcmFpc2VzKERPTUV4Y2VwdGlvbik7Ci0KICAgICAg
ICAgRWxlbWVudCBnZXRFbGVtZW50QnlJZChpbiBbT3B0aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVk
XSBET01TdHJpbmcgZWxlbWVudElkKTsKICAgICAgICAgTm9kZUxpc3QgZ2V0RWxlbWVudHNCeUNs
YXNzTmFtZShpbiBbT3B0aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVkXSBET01TdHJpbmcgY2xhc3NO
YW1lKTsKICAgICAgICAgTm9kZUxpc3QgZ2V0RWxlbWVudHNCeVRhZ05hbWUoaW4gW09wdGlvbmFs
PURlZmF1bHRJc1VuZGVmaW5lZF0gRE9NU3RyaW5nIHRhZ05hbWUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9t
YXJrdXAuY3BwCmluZGV4IGJiNDliMzcyZjRiM2JiNTJiNjdkZGQ0NjRmMGU0OWFmMzQ3MmU5NTIu
LmE5ZWU0OGI1Nzg0OTBhMGZhODQyYzQ5YzVmY2FkZmI0NDRlYmM1YzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL21hcmt1cC5jcHAKQEAgLTk5Miw5ICs5OTIsOCBAQCBTdHJpbmcgdXJsVG9NYXJrdXAoY29u
c3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlKQogICAgIHJldHVybiBtYXJrdXAudG9T
dHJpbmcoKTsKIH0KIAotUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVu
dEZyb21Tb3VyY2UoY29uc3QgU3RyaW5nJiBtYXJrdXAsIEVsZW1lbnQqIGNvbnRleHRFbGVtZW50
LCBFeGNlcHRpb25Db2RlJiBlYykKK1Bhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRl
RnJhZ21lbnRGcm9tU291cmNlKGNvbnN0IFN0cmluZyYgbWFya3VwLCBEb2N1bWVudCogZG9jdW1l
bnQsIEVsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBE
b2N1bWVudCogZG9jdW1lbnQgPSBjb250ZXh0RWxlbWVudC0+ZG9jdW1lbnQoKTsKICAgICBSZWZQ
dHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSBEb2N1bWVudEZyYWdtZW50OjpjcmVhdGUo
ZG9jdW1lbnQpOwogCiAgICAgaWYgKGRvY3VtZW50LT5pc0hUTUxEb2N1bWVudCgpKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5oIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9tYXJrdXAuaAppbmRleCA5MThhZTliMTNlOTFjYTc4YjhiN2FmYTRkY2Y3ZDc2ZWQ2
ODYzOTBkLi41NGVkOGMwMWNlY2U3NjYxOWE3NmE0MzU3Mjc1NmIwNmVmZDZkN2JjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvbWFya3VwLmgKQEAgLTUwLDcgKzUwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGcm9tTWFya3Vw
KERvY3VtZW50KiwgY29uc3QgU3RyaW5nJiBtYXJrdXAsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwg
RnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uID0gRnJhZ21lbnRTY3JpcHRpbmdBbGxvd2VkKTsK
ICAgICBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1
cFdpdGhDb250ZXh0KERvY3VtZW50KiwgY29uc3QgU3RyaW5nJiBtYXJrdXAsIHVuc2lnbmVkIGZy
YWdtZW50U3RhcnQsIHVuc2lnbmVkIGZyYWdtZW50RW5kLCBjb25zdCBTdHJpbmcmIGJhc2VVUkws
IEZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbik7CiAgICAgUGFzc1JlZlB0cjxEb2N1bWVudEZy
YWdtZW50PiBjcmVhdGVGcmFnbWVudEZyb21Ob2RlcyhEb2N1bWVudCosIGNvbnN0IFZlY3RvcjxO
b2RlKj4mKTsKLSAgICBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50
RnJvbVNvdXJjZShjb25zdCBTdHJpbmcmLCBFbGVtZW50KiwgRXhjZXB0aW9uQ29kZSYpOworICAg
IFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGcm9tU291cmNlKGNv
bnN0IFN0cmluZyYsIERvY3VtZW50KiwgRWxlbWVudCosIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAg
IGJvb2wgaXNQbGFpblRleHRNYXJrdXAoTm9kZSAqbm9kZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RWxlbWVudC5jcHAKaW5kZXggNWY4YjIyM2RhYWY4MTA2YWVhZTk1ZDZkYTFhNThiZDA2Yzc4MjBj
NS4uY2MzNzAxZjg5ZDcxMWNhMTQ0NTc1YTEyYWI2MjdmZTY3ZDFlNzQ0MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRWxlbWVudC5jcHAKQEAgLTM0NCw3ICszNDQsNyBAQCBTdHJpbmcgSFRNTEVsZW1l
bnQ6Om91dGVySFRNTCgpIGNvbnN0CiAKIHZvaWQgSFRNTEVsZW1lbnQ6OnNldElubmVySFRNTChj
b25zdCBTdHJpbmcmIGh0bWwsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIFJlZlB0cjxEb2N1
bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50RnJvbVNvdXJjZShodG1sLCB0
aGlzLCBlYyk7CisgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gY3JlYXRl
RnJhZ21lbnRGcm9tU291cmNlKGh0bWwsIGRvY3VtZW50KCksIHRoaXMsIGVjKTsKICAgICBpZiAo
ZnJhZ21lbnQpCiAgICAgICAgIHJlcGxhY2VDaGlsZHJlbldpdGhGcmFnbWVudCh0aGlzLCBmcmFn
bWVudC5yZWxlYXNlKCksIGVjKTsKIH0KQEAgLTM3Niw3ICszNzYsNyBAQCB2b2lkIEhUTUxFbGVt
ZW50OjpzZXRPdXRlckhUTUwoY29uc3QgU3RyaW5nJiBodG1sLCBFeGNlcHRpb25Db2RlJiBlYykK
ICAgICBSZWZQdHI8Tm9kZT4gcHJldiA9IHByZXZpb3VzU2libGluZygpOwogICAgIFJlZlB0cjxO
b2RlPiBuZXh0ID0gbmV4dFNpYmxpbmcoKTsKIAotICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50
PiBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50RnJvbVNvdXJjZShodG1sLCBwYXJlbnQuZ2V0KCks
IGVjKTsKKyAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSBjcmVhdGVGcmFn
bWVudEZyb21Tb3VyY2UoaHRtbCwgZG9jdW1lbnQoKSwgcGFyZW50LmdldCgpLCBlYyk7CiAgICAg
aWYgKGVjKQogICAgICAgICByZXR1cm47CiAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IDdhMDZiNDIzOTY5MTNkOWQ5
NmQ0ZTU3MWQ1YjIzM2E5MjM3MDQyOTUuLjUyOWY1YzI4ZWU5YzNmNmU2NWRjOWM1NjNmYmMzNjcw
MjNlYzgwYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1
bWVudFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3Vt
ZW50UGFyc2VyLmNwcApAQCAtNDksMjAgKzQ5LDE2IEBAIG5hbWVzcGFjZSB7CiAKIC8vIFRoaXMg
aXMgYSBkaXJlY3QgdHJhbnNjcmlwdGlvbiBvZiBzdGVwIDQgZnJvbToKIC8vIGh0dHA6Ly93d3cu
d2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvbXVsdGlwYWdlL3RoZS1lbmQu
aHRtbCNmcmFnbWVudC1jYXNlCi1IVE1MVG9rZW5pemVyU3RhdGU6OlN0YXRlIHRva2VuaXplclN0
YXRlRm9yQ29udGV4dEVsZW1lbnQoRWxlbWVudCogY29udGV4dEVsZW1lbnQsIGJvb2wgcmVwb3J0
RXJyb3JzKQorSFRNTFRva2VuaXplclN0YXRlOjpTdGF0ZSB0b2tlbml6ZXJTdGF0ZUZvckNvbnRl
eHRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIGNvbnRleHRUYWcsIERvY3VtZW50KiBkb2N1
bWVudCwgYm9vbCByZXBvcnRFcnJvcnMpCiB7Ci0gICAgaWYgKCFjb250ZXh0RWxlbWVudCkKLSAg
ICAgICAgcmV0dXJuIEhUTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlOwotCi0gICAgY29uc3Qg
UXVhbGlmaWVkTmFtZSYgY29udGV4dFRhZyA9IGNvbnRleHRFbGVtZW50LT50YWdRTmFtZSgpOwot
CisgICAgQVNTRVJUKGNvbnRleHRUYWcgIT0gbnVsbFFOYW1lKCkgJiYgY29udGV4dFRhZyAhPSBh
bnlRTmFtZSgpKTsKICAgICBpZiAoY29udGV4dFRhZy5tYXRjaGVzKHRpdGxlVGFnKSB8fCBjb250
ZXh0VGFnLm1hdGNoZXModGV4dGFyZWFUYWcpKQogICAgICAgICByZXR1cm4gSFRNTFRva2VuaXpl
clN0YXRlOjpSQ0RBVEFTdGF0ZTsKICAgICBpZiAoY29udGV4dFRhZy5tYXRjaGVzKHN0eWxlVGFn
KQogICAgICAgICB8fCBjb250ZXh0VGFnLm1hdGNoZXMoeG1wVGFnKQogICAgICAgICB8fCBjb250
ZXh0VGFnLm1hdGNoZXMoaWZyYW1lVGFnKQotICAgICAgICB8fCAoY29udGV4dFRhZy5tYXRjaGVz
KG5vZW1iZWRUYWcpICYmIEhUTUxUcmVlQnVpbGRlcjo6cGx1Z2luc0VuYWJsZWQoY29udGV4dEVs
ZW1lbnQtPmRvY3VtZW50KCktPmZyYW1lKCkpKQotICAgICAgICB8fCAoY29udGV4dFRhZy5tYXRj
aGVzKG5vc2NyaXB0VGFnKSAmJiBIVE1MVHJlZUJ1aWxkZXI6OnNjcmlwdEVuYWJsZWQoY29udGV4
dEVsZW1lbnQtPmRvY3VtZW50KCktPmZyYW1lKCkpKQorICAgICAgICB8fCAoY29udGV4dFRhZy5t
YXRjaGVzKG5vZW1iZWRUYWcpICYmIEhUTUxUcmVlQnVpbGRlcjo6cGx1Z2luc0VuYWJsZWQoZG9j
dW1lbnQtPmZyYW1lKCkpKQorICAgICAgICB8fCAoY29udGV4dFRhZy5tYXRjaGVzKG5vc2NyaXB0
VGFnKSAmJiBIVE1MVHJlZUJ1aWxkZXI6OnNjcmlwdEVuYWJsZWQoZG9jdW1lbnQtPmZyYW1lKCkp
KQogICAgICAgICB8fCBjb250ZXh0VGFnLm1hdGNoZXMobm9mcmFtZXNUYWcpKQogICAgICAgICBy
ZXR1cm4gcmVwb3J0RXJyb3JzID8gSFRNTFRva2VuaXplclN0YXRlOjpSQVdURVhUU3RhdGUgOiBI
VE1MVG9rZW5pemVyU3RhdGU6OlBMQUlOVEVYVFN0YXRlOwogICAgIGlmIChjb250ZXh0VGFnLm1h
dGNoZXMoc2NyaXB0VGFnKSkKQEAgLTg4LDE2ICs4NCwxNiBAQCBIVE1MRG9jdW1lbnRQYXJzZXI6
OkhUTUxEb2N1bWVudFBhcnNlcihIVE1MRG9jdW1lbnQqIGRvY3VtZW50LCBib29sIHJlcG9ydEVy
cm9ycwogCiAvLyBGSVhNRTogTWVtYmVyIHZhcmlhYmxlcyBzaG91bGQgYmUgZ3JvdXBlZCBpbnRv
IHNlbGYtaW5pdGlhbGl6aW5nIHN0cnVjdHMgdG8KIC8vIG1pbmltaXplIGNvZGUgZHVwbGljYXRp
b24gYmV0d2VlbiB0aGVzZSBjb25zdHJ1Y3RvcnMuCi1IVE1MRG9jdW1lbnRQYXJzZXI6OkhUTUxE
b2N1bWVudFBhcnNlcihEb2N1bWVudEZyYWdtZW50KiBmcmFnbWVudCwgRWxlbWVudCogY29udGV4
dEVsZW1lbnQsIEZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbiBzY3JpcHRpbmdQZXJtaXNzaW9u
KQorSFRNTERvY3VtZW50UGFyc2VyOjpIVE1MRG9jdW1lbnRQYXJzZXIoRG9jdW1lbnRGcmFnbWVu
dCogZnJhZ21lbnQsIEVsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1l
JiBjb250ZXh0VGFnLCBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24gc2NyaXB0aW5nUGVybWlz
c2lvbikKICAgICA6IFNjcmlwdGFibGVEb2N1bWVudFBhcnNlcihmcmFnbWVudC0+ZG9jdW1lbnQo
KSkKICAgICAsIG1fdG9rZW5pemVyKEhUTUxUb2tlbml6ZXI6OmNyZWF0ZSh1c2VQcmVIVE1MNVBh
cnNlclF1aXJrcyhmcmFnbWVudC0+ZG9jdW1lbnQoKSkpKQotICAgICwgbV90cmVlQnVpbGRlcihI
VE1MVHJlZUJ1aWxkZXI6OmNyZWF0ZSh0aGlzLCBmcmFnbWVudCwgY29udGV4dEVsZW1lbnQsIHNj
cmlwdGluZ1Blcm1pc3Npb24sIHVzZVByZUhUTUw1UGFyc2VyUXVpcmtzKGZyYWdtZW50LT5kb2N1
bWVudCgpKSwgbWF4aW11bURPTVRyZWVEZXB0aChmcmFnbWVudC0+ZG9jdW1lbnQoKSkpKQorICAg
ICwgbV90cmVlQnVpbGRlcihIVE1MVHJlZUJ1aWxkZXI6OmNyZWF0ZSh0aGlzLCBmcmFnbWVudCwg
Y29udGV4dEVsZW1lbnQsIGNvbnRleHRUYWcsIHNjcmlwdGluZ1Blcm1pc3Npb24sIHVzZVByZUhU
TUw1UGFyc2VyUXVpcmtzKGZyYWdtZW50LT5kb2N1bWVudCgpKSwgbWF4aW11bURPTVRyZWVEZXB0
aChmcmFnbWVudC0+ZG9jdW1lbnQoKSkpKQogICAgICwgbV94c3NBdWRpdG9yKHRoaXMpCiAgICAg
LCBtX2VuZFdhc0RlbGF5ZWQoZmFsc2UpCiAgICAgLCBtX3B1bXBTZXNzaW9uTmVzdGluZ0xldmVs
KDApCiB7CiAgICAgYm9vbCByZXBvcnRFcnJvcnMgPSBmYWxzZTsgLy8gRm9yIG5vdyBkb2N1bWVu
dCBmcmFnbWVudCBwYXJzaW5nIG5ldmVyIHJlcG9ydHMgZXJyb3JzLgotICAgIG1fdG9rZW5pemVy
LT5zZXRTdGF0ZSh0b2tlbml6ZXJTdGF0ZUZvckNvbnRleHRFbGVtZW50KGNvbnRleHRFbGVtZW50
LCByZXBvcnRFcnJvcnMpKTsKKyAgICBtX3Rva2VuaXplci0+c2V0U3RhdGUodG9rZW5pemVyU3Rh
dGVGb3JDb250ZXh0RWxlbWVudChjb250ZXh0VGFnLCBmcmFnbWVudC0+ZG9jdW1lbnQoKSwgcmVw
b3J0RXJyb3JzKSk7CiB9CiAKIEhUTUxEb2N1bWVudFBhcnNlcjo6fkhUTUxEb2N1bWVudFBhcnNl
cigpCkBAIC01NTEsOSArNTQ3LDUyIEBAIFNjcmlwdENvbnRyb2xsZXIqIEhUTUxEb2N1bWVudFBh
cnNlcjo6c2NyaXB0KCkgY29uc3QKICAgICByZXR1cm4gZG9jdW1lbnQoKS0+ZnJhbWUoKSA/IGRv
Y3VtZW50KCktPmZyYW1lKCktPnNjcmlwdCgpIDogMDsKIH0KIAorLy8gRklYTUU6IFJlZmVyZW5j
ZSB0byBET000IHNwZWMgZGVzY3JpYmluZyB0aGUgZm9sbG93aW5nOiBUaGUgaW1wbGllZCBjb250
ZXh0IGVsZW1lbnQgb2YKKy8vIERvY3VtZW50RnJhZ21lbnQuaW5uZXJIVE1MIGlzIGJhc2VkIG9u
IHRoZSBpZGVudGl0eSBvZiB0aGUgdGFnTmFtZSBvZiB0aGUgZmlyc3Qgc3RhcnRUYWcgdG9rZW4g
ZW5jb3VudGVyZWQuCisvLyBGSVhNRTogRWxlbWVudC5pbm5lckhUTUwgZG9lc24ndCB3b3JrIGZv
ciBYTUwgZWxlbWVudHMuIFdoZW4gaXQgaXMgZml4ZWQsIHRoaXMgbmVlZHMgdG8gaWRlbml0aWZ5
CisvLyB0YWdOYW1lcyBwYXJ0aWN1bGFyIHRvIGVpdGhlciBuYW1lc3BhY2UgYW5kIHBpY2sgYW4g
YXBwcm9wcmlhdGUgaW1wbGllZCBjb250ZXh0IGVsZW1lbnQuCitzdGF0aWMgY29uc3QgUXVhbGlm
aWVkTmFtZSYgZ2V0SW1wbGllZENvbnRleHRUYWcoY29uc3QgU3RyaW5nJiBodG1sLCBib29sIHVz
ZVByZUhUTUw1UGFyc2VyUXVpcmtzKQoreworICAgIE93blB0cjxIVE1MVG9rZW5pemVyPiB0b2tl
bml6ZXIgPSBIVE1MVG9rZW5pemVyOjpjcmVhdGUodXNlUHJlSFRNTDVQYXJzZXJRdWlya3MpOwor
ICAgIFNlZ21lbnRlZFN0cmluZyBzb3VyY2UoaHRtbCk7CisgICAgSFRNTFRva2VuIGh0bWxUb2tl
bjsKKyAgICBib29sIHN0YXJ0VGFnRm91bmQgPSBmYWxzZTsKKyAgICB3aGlsZSAodG9rZW5pemVy
LT5uZXh0VG9rZW4oc291cmNlLCBodG1sVG9rZW4pKSB7CisgICAgICAgIGlmIChodG1sVG9rZW4u
dHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZykgeworICAgICAgICAgICAgc3RhcnRU
YWdGb3VuZCA9IHRydWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBo
dG1sVG9rZW4uY2xlYXIoKTsKKyAgICB9CisgICAgaWYgKCFzdGFydFRhZ0ZvdW5kKQorICAgICAg
ICByZXR1cm4gYm9keVRhZzsKKworICAgIEF0b21pY0hUTUxUb2tlbiB0b2tlbihodG1sVG9rZW4p
OworICAgIGlmICh0b2tlbi5uYW1lKCkgPT0gdGJvZHlUYWcKKyAgICAgICAgfHwgdG9rZW4ubmFt
ZSgpID09IHRmb290VGFnCisgICAgICAgIHx8IHRva2VuLm5hbWUoKSA9PSB0aGVhZFRhZworICAg
ICAgICB8fCB0b2tlbi5uYW1lKCkgPT0gY2FwdGlvblRhZworICAgICAgICB8fCB0b2tlbi5uYW1l
KCkgPT0gY29sZ3JvdXBUYWcpIHsKKyAgICAgICAgcmV0dXJuIHRhYmxlVGFnOworICAgIH0KKyAg
ICBpZiAodG9rZW4ubmFtZSgpID09IHRyVGFnKQorICAgICAgICByZXR1cm4gdGJvZHlUYWc7Cisg
ICAgaWYgKHRva2VuLm5hbWUoKSA9PSBjb2xUYWcpCisgICAgICAgIHJldHVybiBjb2xncm91cFRh
ZzsKKyAgICBpZiAodG9rZW4ubmFtZSgpID09IHRoVGFnIHx8IHRva2VuLm5hbWUoKSA9PSB0ZFRh
ZykKKyAgICAgICAgcmV0dXJuIHRyVGFnOworICAgIGlmICh0b2tlbi5uYW1lKCkgPT0gaGVhZFRh
ZyB8fCB0b2tlbi5uYW1lKCkgPT0gYm9keVRhZykKKyAgICAgICAgcmV0dXJuIGh0bWxUYWc7Cisg
ICAgaWYgKHRva2VuLm5hbWUoKSA9PSBycFRhZyB8fCB0b2tlbi5uYW1lKCkgPT0gcnRUYWcpCisg
ICAgICAgIHJldHVybiBydWJ5VGFnOworCisgICAgcmV0dXJuIGJvZHlUYWc7Cit9CisKIHZvaWQg
SFRNTERvY3VtZW50UGFyc2VyOjpwYXJzZURvY3VtZW50RnJhZ21lbnQoY29uc3QgU3RyaW5nJiBz
b3VyY2UsIERvY3VtZW50RnJhZ21lbnQqIGZyYWdtZW50LCBFbGVtZW50KiBjb250ZXh0RWxlbWVu
dCwgRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uIHNjcmlwdGluZ1Blcm1pc3Npb24pCiB7Ci0g
ICAgUmVmUHRyPEhUTUxEb2N1bWVudFBhcnNlcj4gcGFyc2VyID0gSFRNTERvY3VtZW50UGFyc2Vy
OjpjcmVhdGUoZnJhZ21lbnQsIGNvbnRleHRFbGVtZW50LCBzY3JpcHRpbmdQZXJtaXNzaW9uKTsK
KyAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBjb250ZXh0VGFnID0gY29udGV4dEVsZW1lbnQgPyBj
b250ZXh0RWxlbWVudC0+dGFnUU5hbWUoKSA6IGdldEltcGxpZWRDb250ZXh0VGFnKHNvdXJjZSwg
SFRNTERvY3VtZW50UGFyc2VyOjp1c2VQcmVIVE1MNVBhcnNlclF1aXJrcyhmcmFnbWVudC0+ZG9j
dW1lbnQoKSkpOworICAgIFJlZlB0cjxIVE1MRG9jdW1lbnRQYXJzZXI+IHBhcnNlciA9IEhUTUxE
b2N1bWVudFBhcnNlcjo6Y3JlYXRlKGZyYWdtZW50LCBjb250ZXh0RWxlbWVudCwgY29udGV4dFRh
Zywgc2NyaXB0aW5nUGVybWlzc2lvbik7CiAgICAgcGFyc2VyLT5pbnNlcnQoc291cmNlKTsgLy8g
VXNlIGluc2VydCgpIHNvIHRoYXQgdGhlIHBhcnNlciB3aWxsIG5vdCB5aWVsZC4KICAgICBwYXJz
ZXItPmZpbmlzaCgpOwogICAgIEFTU0VSVCghcGFyc2VyLT5wcm9jZXNzaW5nRGF0YSgpKTsgLy8g
TWFrZSBzdXJlIHdlJ3JlIGRvbmUuIDxyZGFyOi8vcHJvYmxlbS8zOTYzMTUxPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuaAppbmRleCBlZWU4ODJj
NzI0ZTNlM2IwZDZkZDc0ZmJkNmE4NmQ1Y2I3MjJiYWM0Li5kNWQ1NThiYTk1MWE3Y2E4MGMyZTcx
MTRmMTI0YWJiOTIyY2M3NjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MRG9jdW1lbnRQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9I
VE1MRG9jdW1lbnRQYXJzZXIuaApAQCAtNDgsNiArNDgsNyBAQCBjbGFzcyBIVE1MVG9rZW5pemVy
OwogY2xhc3MgSFRNTFNjcmlwdFJ1bm5lcjsKIGNsYXNzIEhUTUxUcmVlQnVpbGRlcjsKIGNsYXNz
IEhUTUxQcmVsb2FkU2Nhbm5lcjsKK2NsYXNzIFF1YWxpZmllZE5hbWU7CiBjbGFzcyBTY3JpcHRD
b250cm9sbGVyOwogY2xhc3MgU2NyaXB0U291cmNlQ29kZTsKIApAQCAtNjAsOSArNjEsOSBAQCBw
dWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxEb2N1bWVudFBh
cnNlcihkb2N1bWVudCwgcmVwb3J0RXJyb3JzKSk7CiAgICAgfQotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEhUTUxEb2N1bWVudFBhcnNlcj4gY3JlYXRlKERvY3VtZW50RnJhZ21lbnQqIGZyYWdtZW50
LCBFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uIHBl
cm1pc3Npb24pCisgICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTERvY3VtZW50UGFyc2VyPiBjcmVh
dGUoRG9jdW1lbnRGcmFnbWVudCogZnJhZ21lbnQsIEVsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBj
b25zdCBRdWFsaWZpZWROYW1lJiBjb250ZXh0VGFnLCBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Np
b24gcGVybWlzc2lvbikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTERv
Y3VtZW50UGFyc2VyKGZyYWdtZW50LCBjb250ZXh0RWxlbWVudCwgcGVybWlzc2lvbikpOworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxEb2N1bWVudFBhcnNlcihmcmFnbWVudCwgY29u
dGV4dEVsZW1lbnQsIGNvbnRleHRUYWcsIHBlcm1pc3Npb24pKTsKICAgICB9CiAKICAgICB2aXJ0
dWFsIH5IVE1MRG9jdW1lbnRQYXJzZXIoKTsKQEAgLTcxLDcgKzcyLDcgQEAgcHVibGljOgogICAg
IHZvaWQgcmVzdW1lUGFyc2luZ0FmdGVyWWllbGQoKTsKIAogICAgIHN0YXRpYyB2b2lkIHBhcnNl
RG9jdW1lbnRGcmFnbWVudChjb25zdCBTdHJpbmcmLCBEb2N1bWVudEZyYWdtZW50KiwgRWxlbWVu
dCogY29udGV4dEVsZW1lbnQsIEZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbiA9IEZyYWdtZW50
U2NyaXB0aW5nQWxsb3dlZCk7Ci0gICAgCisKICAgICBzdGF0aWMgYm9vbCB1c2VQcmVIVE1MNVBh
cnNlclF1aXJrcyhEb2N1bWVudCopOwogICAgIHN0YXRpYyB1bnNpZ25lZCBtYXhpbXVtRE9NVHJl
ZURlcHRoKERvY3VtZW50Kik7CiAKQEAgLTkwLDcgKzkxLDcgQEAgcHJvdGVjdGVkOgogICAgIHZp
cnR1YWwgdm9pZCBmaW5pc2goKTsKIAogICAgIEhUTUxEb2N1bWVudFBhcnNlcihIVE1MRG9jdW1l
bnQqLCBib29sIHJlcG9ydEVycm9ycyk7Ci0gICAgSFRNTERvY3VtZW50UGFyc2VyKERvY3VtZW50
RnJhZ21lbnQqLCBFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgRnJhZ21lbnRTY3JpcHRpbmdQZXJt
aXNzaW9uKTsKKyAgICBIVE1MRG9jdW1lbnRQYXJzZXIoRG9jdW1lbnRGcmFnbWVudCosIEVsZW1l
bnQqIGNvbnRleHRFbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBjb250ZXh0VGFnLCBGcmFn
bWVudFNjcmlwdGluZ1Blcm1pc3Npb24pOwogCiAgICAgSFRNTFRyZWVCdWlsZGVyKiB0cmVlQnVp
bGRlcigpIGNvbnN0IHsgcmV0dXJuIG1fdHJlZUJ1aWxkZXIuZ2V0KCk7IH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAKaW5kZXggMmIwYzAyZTVm
NmY4OTc2ZmU5NjdjNzI4MGJjNDEwZGYxNzZkNGQ1MS4uMWIyMmE2OGM5NmE4Njc0YjNjNmI4YmVi
MDM4YWNmNDljMTQxZTc1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTFRyZWVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
VHJlZUJ1aWxkZXIuY3BwCkBAIC0zNjYsOSArMzY2LDkgQEAgSFRNTFRyZWVCdWlsZGVyOjpIVE1M
VHJlZUJ1aWxkZXIoSFRNTERvY3VtZW50UGFyc2VyKiBwYXJzZXIsIEhUTUxEb2N1bWVudCogZG9j
dW0KIAogLy8gRklYTUU6IE1lbWJlciB2YXJpYWJsZXMgc2hvdWxkIGJlIGdyb3VwZWQgaW50byBz
ZWxmLWluaXRpYWxpemluZyBzdHJ1Y3RzIHRvCiAvLyBtaW5pbWl6ZSBjb2RlIGR1cGxpY2F0aW9u
IGJldHdlZW4gdGhlc2UgY29uc3RydWN0b3JzLgotSFRNTFRyZWVCdWlsZGVyOjpIVE1MVHJlZUJ1
aWxkZXIoSFRNTERvY3VtZW50UGFyc2VyKiBwYXJzZXIsIERvY3VtZW50RnJhZ21lbnQqIGZyYWdt
ZW50LCBFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9u
IHNjcmlwdGluZ1Blcm1pc3Npb24sIGJvb2wgdXNlUHJlSFRNTDVQYXJzZXJRdWlya3MsIHVuc2ln
bmVkIG1heGltdW1ET01UcmVlRGVwdGgpCitIVE1MVHJlZUJ1aWxkZXI6OkhUTUxUcmVlQnVpbGRl
cihIVE1MRG9jdW1lbnRQYXJzZXIqIHBhcnNlciwgRG9jdW1lbnRGcmFnbWVudCogZnJhZ21lbnQs
IEVsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBjb250ZXh0VGFn
LCBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24gc2NyaXB0aW5nUGVybWlzc2lvbiwgYm9vbCB1
c2VQcmVIVE1MNVBhcnNlclF1aXJrcywgdW5zaWduZWQgbWF4aW11bURPTVRyZWVEZXB0aCkKICAg
ICA6IG1fZnJhbWVzZXRPayh0cnVlKQotICAgICwgbV9mcmFnbWVudENvbnRleHQoZnJhZ21lbnQs
IGNvbnRleHRFbGVtZW50LCBzY3JpcHRpbmdQZXJtaXNzaW9uKQorICAgICwgbV9mcmFnbWVudENv
bnRleHQoZnJhZ21lbnQsIGNvbnRleHRUYWcsIHNjcmlwdGluZ1Blcm1pc3Npb24pCiAgICAgLCBt
X2RvY3VtZW50KGZyYWdtZW50LT5kb2N1bWVudCgpKQogICAgICwgbV90cmVlKGZyYWdtZW50LCBz
Y3JpcHRpbmdQZXJtaXNzaW9uLCBtYXhpbXVtRE9NVHJlZURlcHRoKQogICAgICwgbV9yZXBvcnRF
cnJvcnMoZmFsc2UpIC8vIEZJWE1FOiBXaHkgbm90IHJlcG9ydCBlcnJvcnMgaW4gZnJhZ21lbnRz
PwpAQCAtMzgxLDE3ICszODEsMTQgQEAgSFRNTFRyZWVCdWlsZGVyOjpIVE1MVHJlZUJ1aWxkZXIo
SFRNTERvY3VtZW50UGFyc2VyKiBwYXJzZXIsIERvY3VtZW50RnJhZ21lbnQqIGYKICAgICAsIG1f
bGFzdFNjcmlwdEVsZW1lbnRTdGFydFBvc2l0aW9uKFRleHRQb3NpdGlvbjo6YmVsb3dSYW5nZVBv
c2l0aW9uKCkpCiAgICAgLCBtX3VzZVByZUhUTUw1UGFyc2VyUXVpcmtzKHVzZVByZUhUTUw1UGFy
c2VyUXVpcmtzKQogewotICAgIC8vIEZJWE1FOiBUaGlzIGFzc2VydGlvbiB3aWxsIGJlY29tZSBp
bnZhbGlkIGlmIDxodHRwOi8vd2Via2l0Lm9yZy9iLzYwMzE2PiBpcyBmaXhlZC4KLSAgICBBU1NF
UlQoY29udGV4dEVsZW1lbnQpOwotICAgIGlmIChjb250ZXh0RWxlbWVudCkgewotICAgICAgICAv
LyBTdGVwcyA0LjItNC42IG9mIHRoZSBIVE1MNSBGcmFnbWVudCBDYXNlIHBhcnNpbmcgYWxnb3Jp
dGhtOgotICAgICAgICAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3Vy
cmVudC13b3JrL211bHRpcGFnZS90aGUtZW5kLmh0bWwjZnJhZ21lbnQtY2FzZQotICAgICAgICAv
LyBGb3IgZWZmaWNpZW5jeSwgd2Ugc2tpcCBzdGVwIDQuMiAoIkxldCByb290IGJlIGEgbmV3IGh0
bWwgZWxlbWVudCB3aXRoIG5vIGF0dHJpYnV0ZXMiKQotICAgICAgICAvLyBhbmQgaW5zdGVhZCB1
c2UgdGhlIERvY3VtZW50RnJhZ21lbnQgYXMgYSByb290IG5vZGUuCi0gICAgICAgIG1fdHJlZS5v
cGVuRWxlbWVudHMoKS0+cHVzaFJvb3ROb2RlKGZyYWdtZW50KTsKLSAgICAgICAgcmVzZXRJbnNl
cnRpb25Nb2RlQXBwcm9wcmlhdGVseSgpOworICAgIC8vIFN0ZXBzIDQuMi00LjYgb2YgdGhlIEhU
TUw1IEZyYWdtZW50IENhc2UgcGFyc2luZyBhbGdvcml0aG06CisgICAgLy8gaHR0cDovL3d3dy53
aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2UvdGhlLWVuZC5o
dG1sI2ZyYWdtZW50LWNhc2UKKyAgICAvLyBGb3IgZWZmaWNpZW5jeSwgd2Ugc2tpcCBzdGVwIDQu
MiAoIkxldCByb290IGJlIGEgbmV3IGh0bWwgZWxlbWVudCB3aXRoIG5vIGF0dHJpYnV0ZXMiKQor
ICAgIC8vIGFuZCBpbnN0ZWFkIHVzZSB0aGUgRG9jdW1lbnRGcmFnbWVudCBhcyBhIHJvb3Qgbm9k
ZS4KKyAgICBtX3RyZWUub3BlbkVsZW1lbnRzKCktPnB1c2hSb290Tm9kZShmcmFnbWVudCk7Cisg
ICAgcmVzZXRJbnNlcnRpb25Nb2RlQXBwcm9wcmlhdGVseSgpOworICAgIGlmIChjb250ZXh0RWxl
bWVudCkKICAgICAgICAgbV90cmVlLnNldEZvcm0oY2xvc2VzdEZvcm1BbmNlc3Rvcihjb250ZXh0
RWxlbWVudCkpOwotICAgIH0KIH0KIAogSFRNTFRyZWVCdWlsZGVyOjp+SFRNTFRyZWVCdWlsZGVy
KCkKQEAgLTQxMCwxNCArNDA3LDE0IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpkZXRhY2goKQog
CiBIVE1MVHJlZUJ1aWxkZXI6OkZyYWdtZW50UGFyc2luZ0NvbnRleHQ6OkZyYWdtZW50UGFyc2lu
Z0NvbnRleHQoKQogICAgIDogbV9mcmFnbWVudCgwKQotICAgICwgbV9jb250ZXh0RWxlbWVudCgw
KQorICAgICwgbV9jb250ZXh0VGFnKG51bGxRTmFtZSgpKQogICAgICwgbV9zY3JpcHRpbmdQZXJt
aXNzaW9uKEZyYWdtZW50U2NyaXB0aW5nQWxsb3dlZCkKIHsKIH0KIAotSFRNTFRyZWVCdWlsZGVy
OjpGcmFnbWVudFBhcnNpbmdDb250ZXh0OjpGcmFnbWVudFBhcnNpbmdDb250ZXh0KERvY3VtZW50
RnJhZ21lbnQqIGZyYWdtZW50LCBFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgRnJhZ21lbnRTY3Jp
cHRpbmdQZXJtaXNzaW9uIHNjcmlwdGluZ1Blcm1pc3Npb24pCitIVE1MVHJlZUJ1aWxkZXI6OkZy
YWdtZW50UGFyc2luZ0NvbnRleHQ6OkZyYWdtZW50UGFyc2luZ0NvbnRleHQoRG9jdW1lbnRGcmFn
bWVudCogZnJhZ21lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGNvbnRleHRUYWcsIEZyYWdtZW50
U2NyaXB0aW5nUGVybWlzc2lvbiBzY3JpcHRpbmdQZXJtaXNzaW9uKQogICAgIDogbV9mcmFnbWVu
dChmcmFnbWVudCkKLSAgICAsIG1fY29udGV4dEVsZW1lbnQoY29udGV4dEVsZW1lbnQpCisgICAg
LCBtX2NvbnRleHRUYWcoY29udGV4dFRhZykKICAgICAsIG1fc2NyaXB0aW5nUGVybWlzc2lvbihz
Y3JpcHRpbmdQZXJtaXNzaW9uKQogewogICAgIEFTU0VSVCghZnJhZ21lbnQtPmhhc0NoaWxkTm9k
ZXMoKSk7CkBAIC0xNjM3LDQwICsxNjM0LDQwIEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpyZXNl
dEluc2VydGlvbk1vZGVBcHByb3ByaWF0ZWx5KCkKICAgICBIVE1MRWxlbWVudFN0YWNrOjpFbGVt
ZW50UmVjb3JkKiBub2RlUmVjb3JkID0gbV90cmVlLm9wZW5FbGVtZW50cygpLT50b3BSZWNvcmQo
KTsKICAgICB3aGlsZSAoMSkgewogICAgICAgICBDb250YWluZXJOb2RlKiBub2RlID0gbm9kZVJl
Y29yZC0+bm9kZSgpOworICAgICAgICBjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lID0gbm9k
ZSA9PSBtX3RyZWUub3BlbkVsZW1lbnRzKCktPnJvb3ROb2RlKCkgPyBtX2ZyYWdtZW50Q29udGV4
dC5jb250ZXh0VGFnKCkgOiBub2RlUmVjb3JkLT5lbGVtZW50KCktPnRhZ1FOYW1lKCk7CiAgICAg
ICAgIGlmIChub2RlID09IG1fdHJlZS5vcGVuRWxlbWVudHMoKS0+cm9vdE5vZGUoKSkgewogICAg
ICAgICAgICAgQVNTRVJUKGlzUGFyc2luZ0ZyYWdtZW50KCkpOwogICAgICAgICAgICAgbGFzdCA9
IHRydWU7Ci0gICAgICAgICAgICBub2RlID0gbV9mcmFnbWVudENvbnRleHQuY29udGV4dEVsZW1l
bnQoKTsKICAgICAgICAgfQotICAgICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZShzZWxlY3RUYWcp
KSB7CisgICAgICAgIGlmICh0YWdOYW1lLm1hdGNoZXMoc2VsZWN0VGFnKSkgewogICAgICAgICAg
ICAgQVNTRVJUKGlzUGFyc2luZ0ZyYWdtZW50KCkpOwogICAgICAgICAgICAgcmV0dXJuIHNldElu
c2VydGlvbk1vZGUoSW5TZWxlY3RNb2RlKTsKICAgICAgICAgfQotICAgICAgICBpZiAobm9kZS0+
aGFzVGFnTmFtZSh0ZFRhZykgfHwgbm9kZS0+aGFzVGFnTmFtZSh0aFRhZykpCisgICAgICAgIGlm
ICh0YWdOYW1lLm1hdGNoZXModGRUYWcpIHx8IHRhZ05hbWUubWF0Y2hlcyh0aFRhZykpCiAgICAg
ICAgICAgICByZXR1cm4gc2V0SW5zZXJ0aW9uTW9kZShJbkNlbGxNb2RlKTsKLSAgICAgICAgaWYg
KG5vZGUtPmhhc1RhZ05hbWUodHJUYWcpKQorICAgICAgICBpZiAodGFnTmFtZS5tYXRjaGVzKHRy
VGFnKSkKICAgICAgICAgICAgIHJldHVybiBzZXRJbnNlcnRpb25Nb2RlKEluUm93TW9kZSk7Ci0g
ICAgICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKHRib2R5VGFnKSB8fCBub2RlLT5oYXNUYWdOYW1l
KHRoZWFkVGFnKSB8fCBub2RlLT5oYXNUYWdOYW1lKHRmb290VGFnKSkKKyAgICAgICAgaWYgKHRh
Z05hbWUubWF0Y2hlcyh0Ym9keVRhZykgfHwgdGFnTmFtZS5tYXRjaGVzKHRoZWFkVGFnKSB8fCB0
YWdOYW1lLm1hdGNoZXModGZvb3RUYWcpKQogICAgICAgICAgICAgcmV0dXJuIHNldEluc2VydGlv
bk1vZGUoSW5UYWJsZUJvZHlNb2RlKTsKLSAgICAgICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUoY2Fw
dGlvblRhZykpCisgICAgICAgIGlmICh0YWdOYW1lLm1hdGNoZXMoY2FwdGlvblRhZykpCiAgICAg
ICAgICAgICByZXR1cm4gc2V0SW5zZXJ0aW9uTW9kZShJbkNhcHRpb25Nb2RlKTsKLSAgICAgICAg
aWYgKG5vZGUtPmhhc1RhZ05hbWUoY29sZ3JvdXBUYWcpKSB7CisgICAgICAgIGlmICh0YWdOYW1l
Lm1hdGNoZXMoY29sZ3JvdXBUYWcpKSB7CiAgICAgICAgICAgICBBU1NFUlQoaXNQYXJzaW5nRnJh
Z21lbnQoKSk7CiAgICAgICAgICAgICByZXR1cm4gc2V0SW5zZXJ0aW9uTW9kZShJbkNvbHVtbkdy
b3VwTW9kZSk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUodGFibGVU
YWcpKQorICAgICAgICBpZiAodGFnTmFtZS5tYXRjaGVzKHRhYmxlVGFnKSkKICAgICAgICAgICAg
IHJldHVybiBzZXRJbnNlcnRpb25Nb2RlKEluVGFibGVNb2RlKTsKLSAgICAgICAgaWYgKG5vZGUt
Pmhhc1RhZ05hbWUoaGVhZFRhZykpIHsKKyAgICAgICAgaWYgKHRhZ05hbWUubWF0Y2hlcyhoZWFk
VGFnKSkgewogICAgICAgICAgICAgQVNTRVJUKGlzUGFyc2luZ0ZyYWdtZW50KCkpOwogICAgICAg
ICAgICAgcmV0dXJuIHNldEluc2VydGlvbk1vZGUoSW5Cb2R5TW9kZSk7CiAgICAgICAgIH0KLSAg
ICAgICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUoYm9keVRhZykpCisgICAgICAgIGlmICh0YWdOYW1l
Lm1hdGNoZXMoYm9keVRhZykpCiAgICAgICAgICAgICByZXR1cm4gc2V0SW5zZXJ0aW9uTW9kZShJ
bkJvZHlNb2RlKTsKLSAgICAgICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUoZnJhbWVzZXRUYWcpKSB7
CisgICAgICAgIGlmICh0YWdOYW1lLm1hdGNoZXMoZnJhbWVzZXRUYWcpKSB7CiAgICAgICAgICAg
ICBBU1NFUlQoaXNQYXJzaW5nRnJhZ21lbnQoKSk7CiAgICAgICAgICAgICByZXR1cm4gc2V0SW5z
ZXJ0aW9uTW9kZShJbkZyYW1lc2V0TW9kZSk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKG5vZGUt
Pmhhc1RhZ05hbWUoaHRtbFRhZykpIHsKKyAgICAgICAgaWYgKHRhZ05hbWUubWF0Y2hlcyhodG1s
VGFnKSkgewogICAgICAgICAgICAgQVNTRVJUKGlzUGFyc2luZ0ZyYWdtZW50KCkpOwogICAgICAg
ICAgICAgcmV0dXJuIHNldEluc2VydGlvbk1vZGUoQmVmb3JlSGVhZE1vZGUpOwogICAgICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5oCmluZGV4IDY0
YTkzYjM0ZmZiZjFmMDRhYTBiNzM0MjIzN2M3OWQ5YWRkNWJiMjMuLmFhN2MwZmQ3NWJhNTliNjll
OGY0OGFlZjQ2Y2ViNjBmZTU2NDFlMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxUcmVlQnVpbGRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxUcmVlQnVpbGRlci5oCkBAIC01MCw2ICs1MCw3IEBAIGNsYXNzIERvY3VtZW50RnJhZ21l
bnQ7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEhUTUxUb2tlbjsKIGNsYXNzIEhUTUxEb2N1bWVudDsK
K2NsYXNzIFF1YWxpZmllZE5hbWU7CiBjbGFzcyBOb2RlOwogY2xhc3MgSFRNTERvY3VtZW50UGFy
c2VyOwogCkBAIC02MCw5ICs2MSw5IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBh
ZG9wdFB0cihuZXcgSFRNTFRyZWVCdWlsZGVyKHBhcnNlciwgZG9jdW1lbnQsIHJlcG9ydEVycm9y
cywgdXNlUHJlSFRNTDVQYXJzZXJRdWlya3MsIG1heGltdW1ET01UcmVlRGVwdGgpKTsKICAgICB9
Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8SFRNTFRyZWVCdWlsZGVyPiBjcmVhdGUoSFRNTERvY3Vt
ZW50UGFyc2VyKiBwYXJzZXIsIERvY3VtZW50RnJhZ21lbnQqIGZyYWdtZW50LCBFbGVtZW50KiBj
b250ZXh0RWxlbWVudCwgRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uIHNjcmlwdGluZ1Blcm1p
c3Npb24sIGJvb2wgdXNlUHJlSFRNTDVQYXJzZXJRdWlya3MsIHVuc2lnbmVkIG1heGltdW1ET01U
cmVlRGVwdGgpCisgICAgc3RhdGljIFBhc3NPd25QdHI8SFRNTFRyZWVCdWlsZGVyPiBjcmVhdGUo
SFRNTERvY3VtZW50UGFyc2VyKiBwYXJzZXIsIERvY3VtZW50RnJhZ21lbnQqIGZyYWdtZW50LCBF
bGVtZW50KiBjb250ZXh0RWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgY29udGV4dFRhZywg
RnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uIHNjcmlwdGluZ1Blcm1pc3Npb24sIGJvb2wgdXNl
UHJlSFRNTDVQYXJzZXJRdWlya3MsIHVuc2lnbmVkIG1heGltdW1ET01UcmVlRGVwdGgpCiAgICAg
ewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEhUTUxUcmVlQnVpbGRlcihwYXJzZXIsIGZy
YWdtZW50LCBjb250ZXh0RWxlbWVudCwgc2NyaXB0aW5nUGVybWlzc2lvbiwgdXNlUHJlSFRNTDVQ
YXJzZXJRdWlya3MsIG1heGltdW1ET01UcmVlRGVwdGgpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UHRyKG5ldyBIVE1MVHJlZUJ1aWxkZXIocGFyc2VyLCBmcmFnbWVudCwgY29udGV4dEVsZW1lbnQs
IGNvbnRleHRUYWcsIHNjcmlwdGluZ1Blcm1pc3Npb24sIHVzZVByZUhUTUw1UGFyc2VyUXVpcmtz
LCBtYXhpbXVtRE9NVHJlZURlcHRoKSk7CiAgICAgfQogICAgIH5IVE1MVHJlZUJ1aWxkZXIoKTsK
IApAQCAtMTE4LDcgKzExOSw3IEBAIHByaXZhdGU6CiAgICAgfTsKIAogICAgIEhUTUxUcmVlQnVp
bGRlcihIVE1MRG9jdW1lbnRQYXJzZXIqLCBIVE1MRG9jdW1lbnQqLCBib29sIHJlcG9ydEVycm9y
cywgYm9vbCB1c2VQcmVIVE1MNVBhcnNlclF1aXJrcywgdW5zaWduZWQgbWF4aW11bURPTVRyZWVE
ZXB0aCk7Ci0gICAgSFRNTFRyZWVCdWlsZGVyKEhUTUxEb2N1bWVudFBhcnNlciosIERvY3VtZW50
RnJhZ21lbnQqLCBFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgRnJhZ21lbnRTY3JpcHRpbmdQZXJt
aXNzaW9uLCBib29sIHVzZVByZUhUTUw1UGFyc2VyUXVpcmtzLCB1bnNpZ25lZCBtYXhpbXVtRE9N
VHJlZURlcHRoKTsKKyAgICBIVE1MVHJlZUJ1aWxkZXIoSFRNTERvY3VtZW50UGFyc2VyKiwgRG9j
dW1lbnRGcmFnbWVudCosIEVsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBjb25zdCBRdWFsaWZpZWRO
YW1lJiBjb250ZXh0VGFnLCBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24sIGJvb2wgdXNlUHJl
SFRNTDVQYXJzZXJRdWlya3MsIHVuc2lnbmVkIG1heGltdW1ET01UcmVlRGVwdGgpOwogCiAgICAg
dm9pZCBwcm9jZXNzVG9rZW4oQXRvbWljSFRNTFRva2VuJik7CiAKQEAgLTE5NSwxNiArMTk2LDE2
IEBAIHByaXZhdGU6CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEZyYWdtZW50UGFyc2lu
Z0NvbnRleHQpOwogICAgIHB1YmxpYzoKICAgICAgICAgRnJhZ21lbnRQYXJzaW5nQ29udGV4dCgp
OwotICAgICAgICBGcmFnbWVudFBhcnNpbmdDb250ZXh0KERvY3VtZW50RnJhZ21lbnQqLCBFbGVt
ZW50KiBjb250ZXh0RWxlbWVudCwgRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uKTsKKyAgICAg
ICAgRnJhZ21lbnRQYXJzaW5nQ29udGV4dChEb2N1bWVudEZyYWdtZW50KiwgY29uc3QgUXVhbGlm
aWVkTmFtZSYgY29udGV4dFRhZywgRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uKTsKICAgICAg
ICAgfkZyYWdtZW50UGFyc2luZ0NvbnRleHQoKTsKIAogICAgICAgICBEb2N1bWVudEZyYWdtZW50
KiBmcmFnbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhZ21lbnQ7IH0KLSAgICAgICAgRWxlbWVu
dCogY29udGV4dEVsZW1lbnQoKSBjb25zdCB7IEFTU0VSVChtX2ZyYWdtZW50KTsgcmV0dXJuIG1f
Y29udGV4dEVsZW1lbnQ7IH0KKyAgICAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgY29udGV4dFRh
ZygpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dFRhZzsgfQogICAgICAgICBGcmFnbWVudFNjcmlw
dGluZ1Blcm1pc3Npb24gc2NyaXB0aW5nUGVybWlzc2lvbigpIGNvbnN0IHsgQVNTRVJUKG1fZnJh
Z21lbnQpOyByZXR1cm4gbV9zY3JpcHRpbmdQZXJtaXNzaW9uOyB9CiAKICAgICBwcml2YXRlOgog
ICAgICAgICBEb2N1bWVudEZyYWdtZW50KiBtX2ZyYWdtZW50OwotICAgICAgICBFbGVtZW50KiBt
X2NvbnRleHRFbGVtZW50OworICAgICAgICBRdWFsaWZpZWROYW1lIG1fY29udGV4dFRhZzsKIAog
ICAgICAgICAvLyBGcmFnbWVudFNjcmlwdGluZ05vdEFsbG93ZWQgY2F1c2VzIHRoZSBQYXJzZXIg
dG8gcmVtb3ZlIGNoaWxkcmVuCiAgICAgICAgIC8vIGZyb20gPHNjcmlwdD4gdGFncyAoc28gamF2
YXNjcmlwdCBkb2Vzbid0IHNob3cgdXAgaW4gcGFzdGVzKS4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140125</attachid>
            <date>2012-05-03 16:47:00 -0700</date>
            <delta_ts>2012-05-07 11:28:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84646-20120503164659.patch</filename>
            <type>text/plain</type>
            <size>28649</size>
            <attacher name="Rafael Weinstein">rafaelw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE1OTk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTMxNWFjMTk1YWVlODdk
ZGYxMzJiOTQ2Mzg1NmFhYjBhNzA4YmUyYS4uN2FjOWU5NTY2Nzk3OWZiYmFiMmUxNDY1ZmI2Mjc1
OWJmNjk5YWM3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEyLTA0LTIzICBSYWZh
ZWwgV2VpbnN0ZWluICA8cmFmYWVsd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW1wbGVtZW50
IERvY3VtZW50RnJhZ21lbnQuaW5uZXJIVE1MCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04NDY0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIERvY3VtZW50RnJhZ21lbnQuaW5uZXJIVE1MIG5vdyBwYXJzZXMg
YmFzZWQgb24gYW4gImltcGxpZWQgY29udGV4dCBlbGVtZW50IiB3aGljaCBpcyBwaWNrcyBiYXNl
ZAorICAgICAgICBvbiB0aGUgbmFtZSBvZiB0aGUgZmlyc3QgdGFnIHdoaWNoIGFwcGVhcnMgaW4g
dGhlIHByb3ZpZGVkIG1hcmt1cC4KKworICAgICAgICBObyBuZXcgdGVzdHMuIChPT1BTISkKKwor
ICAgICAgICAqIGRvbS9Eb2N1bWVudEZyYWdtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50RnJhZ21lbnQ6OmlubmVySFRNTCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50RnJhZ21lbnQ6OnNldElubmVySFRNTCk6CisgICAgICAgICogZG9t
L0RvY3VtZW50RnJhZ21lbnQuaDoKKyAgICAgICAgKERvY3VtZW50RnJhZ21lbnQpOgorICAgICAg
ICAqIGRvbS9Eb2N1bWVudEZyYWdtZW50LmlkbDoKKyAgICAgICAgKiBkb20vU2hhZG93Um9vdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290OjpzZXRJbm5lckhUTUwpOgorICAgICAg
ICAqIGVkaXRpbmcvbWFya3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZyYWdtZW50
RnJvbVNvdXJjZSk6CisgICAgICAgICogZWRpdGluZy9tYXJrdXAuaDoKKyAgICAgICAgKiBodG1s
L0hUTUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjpzZXRJbm5l
ckhUTUwpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OnNldE91dGVySFRNTCk6Cisg
ICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxUcmVlQnVpbGRlcjo6SFRNTFRyZWVCdWlsZGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFnKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxUcmVlQnVpbGRlcjo6cmVzZXRJbnNlcnRpb25Nb2RlQXBwcm9wcmlhdGVseSk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWcpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzQ2hhcmFjdGVyQnVmZmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZE9mRmlsZSk6CisgICAgICAgICog
aHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJl
ZUJ1aWxkZXI6OkZyYWdtZW50UGFyc2luZ0NvbnRleHQ6OmNvbnRleHRFbGVtZW50KToKKwogMjAx
Mi0wNS0wMyAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZW1vdmUgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpkaWRTdGFydEFjY2VsZXJhdGVkQW5pbWF0
aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmNwcAppbmRleCBmN2NmYWRm
Y2M3OWYzMWQ1MTY2M2VhYWMwNDJiMzQ1ZGE3MzRjMTlhLi45YmNjMzNjNzAxYmI3MGI0ODg1N2Uz
OTUyNWVhNDdkMGIzYjUzMWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnRGcmFnbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQu
Y3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlNldHRp
bmdzLmgiCiAjaW5jbHVkZSAiWE1MRG9jdW1lbnRQYXJzZXIuaCIKKyNpbmNsdWRlICJtYXJrdXAu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC05MCw0ICs5MSwyMSBAQCBib29sIERvY3Vt
ZW50RnJhZ21lbnQ6OnBhcnNlWE1MKGNvbnN0IFN0cmluZyYgc291cmNlLCBFbGVtZW50KiBjb250
ZXh0RWxlbWVudCwgRgogI2VuZGlmCiB9CiAKK1N0cmluZyBEb2N1bWVudEZyYWdtZW50Ojppbm5l
ckhUTUwoKSBjb25zdAoreworICAgIHJldHVybiBjcmVhdGVNYXJrdXAodGhpcywgQ2hpbGRyZW5P
bmx5KTsKK30KKwordm9pZCBEb2N1bWVudEZyYWdtZW50OjpzZXRJbm5lckhUTUwoY29uc3QgU3Ry
aW5nJiBodG1sLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoIWRvY3VtZW50KCktPmlz
SFRNTERvY3VtZW50KCkpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVu
dCA9IGNyZWF0ZUZyYWdtZW50RnJvbVNvdXJjZShodG1sLCBkb2N1bWVudCgpLCAwIC8qIGNvbnRl
eHRFbGVtZW50ICovLCBlYyk7CisgICAgaWYgKGZyYWdtZW50KQorICAgICAgICByZXBsYWNlQ2hp
bGRyZW5XaXRoRnJhZ21lbnQodGhpcywgZnJhZ21lbnQucmVsZWFzZSgpLCBlYyk7Cit9CisKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5oCmluZGV4IDFlYTRkY2IzMjY1ZmYyYTg2
NjhiNDBkZjRmYWY3M2RmNWUwZTRkNTQuLjVjYzk2YjcyYjc0MmM5MWJkZWZkNGNhMTYwODNjMzNl
NDBmNzY3ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuaApAQCAtMzgsNiAr
MzgsOSBAQCBwdWJsaWM6CiAgICAgCiAgICAgdmlydHVhbCBib29sIGNhbkNvbnRhaW5SYW5nZUVu
ZFBvaW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCisgICAgU3RyaW5nIGlubmVySFRNTCgp
IGNvbnN0OworICAgIHZvaWQgc2V0SW5uZXJIVE1MKGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNv
ZGUmKTsKKwogcHJvdGVjdGVkOgogICAgIERvY3VtZW50RnJhZ21lbnQoRG9jdW1lbnQqLCBDb25z
dHJ1Y3Rpb25UeXBlID0gQ3JlYXRlQ29udGFpbmVyKTsKICAgICB2aXJ0dWFsIFN0cmluZyBub2Rl
TmFtZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJh
Z21lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuaWRsCmluZGV4
IDg4MmI2MmRiMzllYjdmMmUwNTA0NzgyMDQ5MmI3ZTkzNjFhOGVkZWQuLmY1ZjU5MTM5NzJkYjdl
ZDAwNDE4ODJhNjY4ZWE2MzMxYWNjNzNmZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudEZyYWdtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRG
cmFnbWVudC5pZGwKQEAgLTI1LDYgKzI1LDggQEAgbW9kdWxlIGNvcmUgewogICAgICAgICAgICAg
cmFpc2VzKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIE5vZGVMaXN0IHF1ZXJ5U2VsZWN0b3JBbGwo
aW4gRE9NU3RyaW5nIHNlbGVjdG9ycykKICAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24p
OworICAgICAgICBhdHRyaWJ1dGUgW1RyZWF0TnVsbEFzPU51bGxTdHJpbmddIERPTVN0cmluZyBp
bm5lckhUTUwKKyAgICAgICAgICAgIHNldHRlciByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICB9
OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5jcHAKaW5kZXggZTA4NTUwNzBhN2Ni
MzI1MzRjY2JmOGFiOGQwNTI2NjdkYTMxOWYxNS4uZmFiMWMyYjZiMjcyMzc4ZjZiOWIwN2M4MGE2
NDdlMzBjNDg1NjMxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1F1YWxpZmllZE5h
bWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1lLmNwcApAQCAtMTA0
LDYgKzEwNCw3IEBAIFN0cmluZyBRdWFsaWZpZWROYW1lOjp0b1N0cmluZygpIGNvbnN0CiAKIC8v
IEdsb2JhbCBpbml0IHJvdXRpbmVzCiBERUZJTkVfR0xPQkFMKFF1YWxpZmllZE5hbWUsIGFueU5h
bWUsIG51bGxBdG9tLCBzdGFyQXRvbSwgc3RhckF0b20pCitERUZJTkVfR0xPQkFMKFF1YWxpZmll
ZE5hbWUsIG51bGxOYW1lLCBudWxsQXRvbSwgbnVsbEF0b20sIG51bGxBdG9tKQogCiB2b2lkIFF1
YWxpZmllZE5hbWU6OmluaXQoKQogewpAQCAtMTEzLDYgKzExNCw3IEBAIHZvaWQgUXVhbGlmaWVk
TmFtZTo6aW5pdCgpCiAgICAgICAgIAogICAgICAgICBBdG9taWNTdHJpbmc6OmluaXQoKTsKICAg
ICAgICAgbmV3ICgodm9pZCopJmFueU5hbWUpIFF1YWxpZmllZE5hbWUobnVsbEF0b20sIHN0YXJB
dG9tLCBzdGFyQXRvbSk7CisgICAgICAgIG5ldyAoKHZvaWQqKSZudWxsTmFtZSkgUXVhbGlmaWVk
TmFtZShudWxsQXRvbSwgbnVsbEF0b20sIG51bGxBdG9tKTsKICAgICAgICAgaW5pdGlhbGl6ZWQg
PSB0cnVlOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9RdWFsaWZp
ZWROYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5oCmluZGV4IDYzNmIy
YTUxNTBjOWU5ODdjMDI3ZTc1Njk3OTJkOWJhYzM0YTg5ZTkuLjBlN2E1ZDM0MmY5NmE4OTUxMzg0
NmVlYmQ4MDZhOGRiODM0ZTE4MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9RdWFs
aWZpZWROYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuaApAQCAt
MTA1LDYgKzEwNSw4IEBAIHByaXZhdGU6CiAjaWZuZGVmIFdFQkNPUkVfUVVBTElGSUVETkFNRV9I
SURFX0dMT0JBTFMKIGV4dGVybiBjb25zdCBRdWFsaWZpZWROYW1lIGFueU5hbWU7CiBpbmxpbmUg
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYW55UU5hbWUoKSB7IHJldHVybiBhbnlOYW1lOyB9CitleHRl
cm4gY29uc3QgUXVhbGlmaWVkTmFtZSBudWxsTmFtZTsKK2lubGluZSBjb25zdCBRdWFsaWZpZWRO
YW1lJiBudWxsUU5hbWUoKSB7IHJldHVybiBhbnlOYW1lOyB9CiAjZW5kaWYKIAogaW5saW5lIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBBdG9taWNTdHJpbmcmIGEsIGNvbnN0IFF1YWxpZmllZE5hbWUm
IHEpIHsgcmV0dXJuIGEgPT0gcS5sb2NhbE5hbWUoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3Qu
Y3BwCmluZGV4IDhjMWQ4YjJkOGM2NDk3ZWUwZDRkMTkwYzNmN2E2NDI2YjY2NDc3MzguLmI1NTcw
MjA4MjczMGI4NmZhNTM1OGExMTFmYzY4NWU3NmM0YzY3NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93
Um9vdC5jcHAKQEAgLTEzNywxOCArMTM3LDYgQEAgUGFzc1JlZlB0cjxOb2RlPiBTaGFkb3dSb290
OjpjbG9uZU5vZGUoYm9vbCkKICAgICByZXR1cm4gMDsKIH0KIAotU3RyaW5nIFNoYWRvd1Jvb3Q6
OmlubmVySFRNTCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGNyZWF0ZU1hcmt1cCh0aGlzLCBDaGls
ZHJlbk9ubHkpOwotfQotCi12b2lkIFNoYWRvd1Jvb3Q6OnNldElubmVySFRNTChjb25zdCBTdHJp
bmcmIG1hcmt1cCwgRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAgUmVmUHRyPERvY3VtZW50RnJh
Z21lbnQ+IGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRGcm9tU291cmNlKG1hcmt1cCwgaG9zdCgp
LCBlYyk7Ci0gICAgaWYgKGZyYWdtZW50KQotICAgICAgICByZXBsYWNlQ2hpbGRyZW5XaXRoRnJh
Z21lbnQodGhpcywgZnJhZ21lbnQucmVsZWFzZSgpLCBlYyk7Ci19Ci0KIERPTVNlbGVjdGlvbiog
U2hhZG93Um9vdDo6c2VsZWN0aW9uKCkKIHsKICAgICBpZiAoZG9jdW1lbnQoKSAmJiBkb2N1bWVu
dCgpLT5kb21XaW5kb3coKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dS
b290LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCmluZGV4IGU1YjIyMWI3M2Ez
MzcxYTA1NDVmMGM0OTU5NzE2NjhkYTgyNjlhYTguLmE0MmU2MzVjYmMzMzI3YTRiMDNiODYxMWRh
OTllM2EyZDFkYjVkMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaApAQCAtNzMsOSArNzMsNiBA
QCBwdWJsaWM6CiAgICAgRWxlbWVudCogaG9zdCgpIGNvbnN0IHsgcmV0dXJuIHNoYWRvd0hvc3Qo
KTsgfQogICAgIFNoYWRvd1RyZWUqIHRyZWUoKSBjb25zdDsKIAotICAgIFN0cmluZyBpbm5lckhU
TUwoKSBjb25zdDsKLSAgICB2b2lkIHNldElubmVySFRNTChjb25zdCBTdHJpbmcmLCBFeGNlcHRp
b25Db2RlJik7Ci0KICAgICBFbGVtZW50KiBhY3RpdmVFbGVtZW50KCkgY29uc3Q7CiAKICAgICBE
T01TZWxlY3Rpb24qIHNlbGVjdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L1NoYWRvd1Jvb3QuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaWRsCmluZGV4
IDVlZTU2NjMzMjlmNmE3NjA2YTQ2NDE1MTUwNDE2ZWMwODJlNzAwYTIuLjY1ZTExZDdmNmY5NjBi
N2M3NzYyMTUyOGYyNGQ0ODZjYjhiNGMzOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TaGFkb3dSb290LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5pZGwK
QEAgLTM2LDkgKzM2LDYgQEAgbW9kdWxlIGNvcmUgewogICAgICAgICByZWFkb25seSBhdHRyaWJ1
dGUgRWxlbWVudCBhY3RpdmVFbGVtZW50OwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9N
U2VsZWN0aW9uIHNlbGVjdGlvbjsKIAotICAgICAgICBhdHRyaWJ1dGUgW1RyZWF0TnVsbEFzPU51
bGxTdHJpbmddIERPTVN0cmluZyBpbm5lckhUTUwKLSAgICAgICAgICAgIHNldHRlciByYWlzZXMo
RE9NRXhjZXB0aW9uKTsKLQogICAgICAgICBFbGVtZW50IGdldEVsZW1lbnRCeUlkKGluIFtPcHRp
b25hbD1EZWZhdWx0SXNVbmRlZmluZWRdIERPTVN0cmluZyBlbGVtZW50SWQpOwogICAgICAgICBO
b2RlTGlzdCBnZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGluIFtPcHRpb25hbD1EZWZhdWx0SXNVbmRl
ZmluZWRdIERPTVN0cmluZyBjbGFzc05hbWUpOwogICAgICAgICBOb2RlTGlzdCBnZXRFbGVtZW50
c0J5VGFnTmFtZShpbiBbT3B0aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVkXSBET01TdHJpbmcgdGFn
TmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKaW5kZXggYmI0OWIzNzJmNGIzYmI1MmI2
N2RkZDQ2NGYwZTQ5YWYzNDcyZTk1Mi4uYTllZTQ4YjU3ODQ5MGEwZmE4NDJjNDljNWZjYWRmYjQ0
NGViYzVjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcApAQCAtOTkyLDkgKzk5Miw4IEBA
IFN0cmluZyB1cmxUb01hcmt1cChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUp
CiAgICAgcmV0dXJuIG1hcmt1cC50b1N0cmluZygpOwogfQogCi1QYXNzUmVmUHRyPERvY3VtZW50
RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJvbVNvdXJjZShjb25zdCBTdHJpbmcmIG1hcmt1cCwg
RWxlbWVudCogY29udGV4dEVsZW1lbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxE
b2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZyb21Tb3VyY2UoY29uc3QgU3RyaW5nJiBt
YXJrdXAsIERvY3VtZW50KiBkb2N1bWVudCwgRWxlbWVudCogY29udGV4dEVsZW1lbnQsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogewotICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGNvbnRleHRFbGVtZW50
LT5kb2N1bWVudCgpOwogICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IERv
Y3VtZW50RnJhZ21lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CiAKICAgICBpZiAoZG9jdW1lbnQtPmlz
SFRNTERvY3VtZW50KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFy
a3VwLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5oCmluZGV4IDkxOGFlOWIxM2U5
MWNhNzhiOGI3YWZhNGRjZjdkNzZlZDY4NjM5MGQuLjU0ZWQ4YzAxY2VjZTc2NjE5YTc2YTQzNTcy
NzU2YjA2ZWZkNmQ3YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3Vw
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuaApAQCAtNTAsNyArNTAsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBj
cmVhdGVGcmFnbWVudEZyb21NYXJrdXAoRG9jdW1lbnQqLCBjb25zdCBTdHJpbmcmIG1hcmt1cCwg
Y29uc3QgU3RyaW5nJiBiYXNlVVJMLCBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24gPSBGcmFn
bWVudFNjcmlwdGluZ0FsbG93ZWQpOwogICAgIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4g
Y3JlYXRlRnJhZ21lbnRGcm9tTWFya3VwV2l0aENvbnRleHQoRG9jdW1lbnQqLCBjb25zdCBTdHJp
bmcmIG1hcmt1cCwgdW5zaWduZWQgZnJhZ21lbnRTdGFydCwgdW5zaWduZWQgZnJhZ21lbnRFbmQs
IGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uKTsKICAg
ICBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJvbU5vZGVzKERv
Y3VtZW50KiwgY29uc3QgVmVjdG9yPE5vZGUqPiYpOwotICAgIFBhc3NSZWZQdHI8RG9jdW1lbnRG
cmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGcm9tU291cmNlKGNvbnN0IFN0cmluZyYsIEVsZW1lbnQq
LCBFeGNlcHRpb25Db2RlJik7CisgICAgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVh
dGVGcmFnbWVudEZyb21Tb3VyY2UoY29uc3QgU3RyaW5nJiwgRG9jdW1lbnQqLCBFbGVtZW50Kiwg
RXhjZXB0aW9uQ29kZSYpOwogCiAgICAgYm9vbCBpc1BsYWluVGV4dE1hcmt1cChOb2RlICpub2Rl
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAppbmRleCA1ZjhiMjIzZGFhZjgxMDZh
ZWFlOTVkNmRhMWE1OGJkMDZjNzgyMGM1Li5jYzM3MDFmODlkNzExY2ExNDQ1NzVhMTJhYjYyN2Zl
NjdkMWU3NDQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcApAQCAtMzQ0LDcgKzM0
NCw3IEBAIFN0cmluZyBIVE1MRWxlbWVudDo6b3V0ZXJIVE1MKCkgY29uc3QKIAogdm9pZCBIVE1M
RWxlbWVudDo6c2V0SW5uZXJIVE1MKGNvbnN0IFN0cmluZyYgaHRtbCwgRXhjZXB0aW9uQ29kZSYg
ZWMpCiB7Ci0gICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gY3JlYXRlRnJh
Z21lbnRGcm9tU291cmNlKGh0bWwsIHRoaXMsIGVjKTsKKyAgICBSZWZQdHI8RG9jdW1lbnRGcmFn
bWVudD4gZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEZyb21Tb3VyY2UoaHRtbCwgZG9jdW1lbnQo
KSwgdGhpcywgZWMpOwogICAgIGlmIChmcmFnbWVudCkKICAgICAgICAgcmVwbGFjZUNoaWxkcmVu
V2l0aEZyYWdtZW50KHRoaXMsIGZyYWdtZW50LnJlbGVhc2UoKSwgZWMpOwogfQpAQCAtMzc2LDcg
KzM3Niw3IEBAIHZvaWQgSFRNTEVsZW1lbnQ6OnNldE91dGVySFRNTChjb25zdCBTdHJpbmcmIGh0
bWwsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIFJlZlB0cjxOb2RlPiBwcmV2ID0gcHJldmlvdXNT
aWJsaW5nKCk7CiAgICAgUmVmUHRyPE5vZGU+IG5leHQgPSBuZXh0U2libGluZygpOwogCi0gICAg
UmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRGcm9tU291
cmNlKGh0bWwsIHBhcmVudC5nZXQoKSwgZWMpOworICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50
PiBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50RnJvbVNvdXJjZShodG1sLCBkb2N1bWVudCgpLCBw
YXJlbnQuZ2V0KCksIGVjKTsKICAgICBpZiAoZWMpCiAgICAgICAgIHJldHVybjsKICAgICAgIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2Vy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAK
aW5kZXggN2EwNmI0MjM5NjkxM2Q5ZDk2ZDRlNTcxZDViMjMzYTkyMzcwNDI5NS4uNjVkYjYyM2I5
MGYzMGI4OTA3ODUyZjFlZGFiODRlM2VmYTA4NGRhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCkBAIC0yNzUsNiArMjc1LDE4IEBA
IHZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpwdW1wVG9rZW5pemVyKFN5bmNocm9ub3VzTW9kZSBt
b2RlKQogICAgICAgICAgICAgbV94c3NBdWRpdG9yLmZpbHRlclRva2VuKG1fdG9rZW4pOwogICAg
ICAgICB9CiAKKyAgICAgICAgaWYgKCFtX3RyZWVCdWlsZGVyLT5jYW5Db250aW51ZShtX3Rva2Vu
KSkgeworICAgICAgICAgICAgbV9xdWV1ZWRBdG9taWNUb2tlbnMuYXBwZW5kKEF0b21pY0hUTUxU
b2tlbjo6Y3JlYXRlKG1fdG9rZW4pKTsKKyAgICAgICAgICAgIG1fdG9rZW4uY2xlYXIoKTsKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1fcXVldWVkQXRv
bWljVG9rZW5zLnNpemUoKSkgeworICAgICAgICAgICAgZm9yIChWZWN0b3I8T3duUHRyPEF0b21p
Y0hUTUxUb2tlbj4gPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3F1ZXVlZEF0b21pY1Rva2Vucy5i
ZWdpbigpOyBpdCAhPSBtX3F1ZXVlZEF0b21pY1Rva2Vucy5lbmQoKTsgKytpdCkKKyAgICAgICAg
ICAgICAgICBtX3RyZWVCdWlsZGVyLT5jb25zdHJ1Y3RUcmVlRnJvbUF0b21pY1Rva2VuKCooaXQt
PmdldCgpKSk7CisgICAgICAgICAgICBtX3F1ZXVlZEF0b21pY1Rva2Vucy5jbGVhcigpOworICAg
ICAgICB9CisKICAgICAgICAgbV90cmVlQnVpbGRlci0+Y29uc3RydWN0VHJlZUZyb21Ub2tlbiht
X3Rva2VuKTsKICAgICAgICAgQVNTRVJUKG1fdG9rZW4uaXNVbmluaXRpYWxpemVkKCkpOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBh
cnNlci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmgK
aW5kZXggZWVlODgyYzcyNGUzZTNiMGQ2ZGQ3NGZiZDZhODZkNWNiNzIyYmFjNC4uMzZjY2JhNTA1
MGQ1ZjQwZWJjY2U0N2NkY2U2YTAzZTkxZDJkMmJmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmgKQEAgLTcxLDcgKzcxLDcgQEAgcHVibGlj
OgogICAgIHZvaWQgcmVzdW1lUGFyc2luZ0FmdGVyWWllbGQoKTsKIAogICAgIHN0YXRpYyB2b2lk
IHBhcnNlRG9jdW1lbnRGcmFnbWVudChjb25zdCBTdHJpbmcmLCBEb2N1bWVudEZyYWdtZW50Kiwg
RWxlbWVudCogY29udGV4dEVsZW1lbnQsIEZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbiA9IEZy
YWdtZW50U2NyaXB0aW5nQWxsb3dlZCk7Ci0gICAgCisKICAgICBzdGF0aWMgYm9vbCB1c2VQcmVI
VE1MNVBhcnNlclF1aXJrcyhEb2N1bWVudCopOwogICAgIHN0YXRpYyB1bnNpZ25lZCBtYXhpbXVt
RE9NVHJlZURlcHRoKERvY3VtZW50Kik7CiAKQEAgLTE0NSw2ICsxNDUsNyBAQCBwcml2YXRlOgog
ICAgIC8vIFdlIGhvbGQgbV90b2tlbiBoZXJlIGJlY2F1c2UgaXQgbWlnaHQgYmUgcGFydGlhbGx5
IGNvbXBsZXRlLgogICAgIEhUTUxUb2tlbiBtX3Rva2VuOwogCisgICAgVmVjdG9yPE93blB0cjxB
dG9taWNIVE1MVG9rZW4+ID4gbV9xdWV1ZWRBdG9taWNUb2tlbnM7CiAgICAgT3duUHRyPEhUTUxU
b2tlbml6ZXI+IG1fdG9rZW5pemVyOwogICAgIE93blB0cjxIVE1MU2NyaXB0UnVubmVyPiBtX3Nj
cmlwdFJ1bm5lcjsKICAgICBPd25QdHI8SFRNTFRyZWVCdWlsZGVyPiBtX3RyZWVCdWlsZGVyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW4uaAppbmRleCA0YWNmZWM5Zjg3NWY3Njk5
NWJjMGFlYWZlNjdiN2JjYTI2MDBiZWEzLi5kOTg5OWI5NjVjNjIzNWVhMTZmZTcxZDc1M2VkZjU4
ZDNkNTI4NjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9r
ZW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW4uaApAQCAtODQs
NyArODQsMTIgQEAgcHVibGljOgogY2xhc3MgQXRvbWljSFRNTFRva2VuIDogcHVibGljIEF0b21p
Y01hcmt1cFRva2VuQmFzZTxIVE1MVG9rZW4+IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShB
dG9taWNIVE1MVG9rZW4pOwogcHVibGljOgotICAgIEF0b21pY0hUTUxUb2tlbihIVE1MVG9rZW4m
IHRva2VuKSA6IEF0b21pY01hcmt1cFRva2VuQmFzZTxIVE1MVG9rZW4+KCZ0b2tlbikgeyB9Cisg
ICAgc3RhdGljIFBhc3NPd25QdHI8QXRvbWljSFRNTFRva2VuPiBjcmVhdGUoSFRNTFRva2VuJiB0
b2tlbikKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgQXRvbWljSFRNTFRva2Vu
KHRva2VuLCBJbnRlcm5hbGl6ZUNoYXJhY3RlcnMpKTsKKyAgICB9CisKKyAgICBBdG9taWNIVE1M
VG9rZW4oSFRNTFRva2VuJiB0b2tlbiwgQ2hhcmFjdGVyU3RvcmFnZU1vZGUgY2hhcmFjdGVyU3Rv
cmFnZSA9IFJlZmVyZW5jZUV4dGVybmFsQ2hhcmFjdGVycykgOiBBdG9taWNNYXJrdXBUb2tlbkJh
c2U8SFRNTFRva2VuPigmdG9rZW4sIGNoYXJhY3RlclN0b3JhZ2UpIHsgfQogCiAgICAgQXRvbWlj
SFRNTFRva2VuKEhUTUxUb2tlblR5cGVzOjpUeXBlIHR5cGUsIEF0b21pY1N0cmluZyBuYW1lLCBj
b25zdCBWZWN0b3I8QXR0cmlidXRlPiYgYXR0cmlidXRlcyA9IFZlY3RvcjxBdHRyaWJ1dGU+KCkp
CiAgICAgICAgIDogQXRvbWljTWFya3VwVG9rZW5CYXNlPEhUTUxUb2tlbj4odHlwZSwgbmFtZSwg
YXR0cmlidXRlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxU
cmVlQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxk
ZXIuY3BwCmluZGV4IDVkNTM0MmJiMDA0ZTZjZjQ0OWM5ODZlMjQ0OGQ1NDQ2NjdmODZmYTYuLjFl
MTgwYTI1N2I5YzMyMjgxZmYxMDEyNzNiMzk0NTU1YWVkYTIwMWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcApAQCAtMjQ4LDggKzI0OCw4IEBA
IGNsYXNzIEhUTUxUcmVlQnVpbGRlcjo6RXh0ZXJuYWxDaGFyYWN0ZXJUb2tlbkJ1ZmZlciB7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRXh0ZXJuYWxDaGFyYWN0ZXJUb2tlbkJ1ZmZlcik7CiBw
dWJsaWM6CiAgICAgZXhwbGljaXQgRXh0ZXJuYWxDaGFyYWN0ZXJUb2tlbkJ1ZmZlcihBdG9taWNI
VE1MVG9rZW4mIHRva2VuKQotICAgICAgICA6IG1fY3VycmVudCh0b2tlbi5jaGFyYWN0ZXJzKCku
ZGF0YSgpKQotICAgICAgICAsIG1fZW5kKG1fY3VycmVudCArIHRva2VuLmNoYXJhY3RlcnMoKS5z
aXplKCkpCisgICAgICAgIDogbV9jdXJyZW50KHRva2VuLmNoYXJhY3RlckRhdGEoKSkKKyAgICAg
ICAgLCBtX2VuZChtX2N1cnJlbnQgKyB0b2tlbi5jaGFyYWN0ZXJEYXRhU2l6ZSgpKQogICAgIHsK
ICAgICAgICAgQVNTRVJUKCFpc0VtcHR5KCkpOwogICAgIH0KQEAgLTM2OCw3ICszNjgsNyBAQCBI
VE1MVHJlZUJ1aWxkZXI6OkhUTUxUcmVlQnVpbGRlcihIVE1MRG9jdW1lbnRQYXJzZXIqIHBhcnNl
ciwgSFRNTERvY3VtZW50KiBkb2N1bQogLy8gbWluaW1pemUgY29kZSBkdXBsaWNhdGlvbiBiZXR3
ZWVuIHRoZXNlIGNvbnN0cnVjdG9ycy4KIEhUTUxUcmVlQnVpbGRlcjo6SFRNTFRyZWVCdWlsZGVy
KEhUTUxEb2N1bWVudFBhcnNlciogcGFyc2VyLCBEb2N1bWVudEZyYWdtZW50KiBmcmFnbWVudCwg
RWxlbWVudCogY29udGV4dEVsZW1lbnQsIEZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbiBzY3Jp
cHRpbmdQZXJtaXNzaW9uLCBib29sIHVzZVByZUhUTUw1UGFyc2VyUXVpcmtzLCB1bnNpZ25lZCBt
YXhpbXVtRE9NVHJlZURlcHRoKQogICAgIDogbV9mcmFtZXNldE9rKHRydWUpCi0gICAgLCBtX2Zy
YWdtZW50Q29udGV4dChmcmFnbWVudCwgY29udGV4dEVsZW1lbnQsIHNjcmlwdGluZ1Blcm1pc3Np
b24pCisgICAgLCBtX2ZyYWdtZW50Q29udGV4dChmcmFnbWVudCwgY29udGV4dEVsZW1lbnQgPyBj
b250ZXh0RWxlbWVudC0+dGFnUU5hbWUoKSA6IG51bGxRTmFtZSgpLCBzY3JpcHRpbmdQZXJtaXNz
aW9uKQogICAgICwgbV9kb2N1bWVudChmcmFnbWVudC0+ZG9jdW1lbnQoKSkKICAgICAsIG1fdHJl
ZShmcmFnbWVudCwgc2NyaXB0aW5nUGVybWlzc2lvbiwgbWF4aW11bURPTVRyZWVEZXB0aCkKICAg
ICAsIG1fcmVwb3J0RXJyb3JzKGZhbHNlKSAvLyBGSVhNRTogV2h5IG5vdCByZXBvcnQgZXJyb3Jz
IGluIGZyYWdtZW50cz8KQEAgLTM4MSwxNyArMzgxLDE0IEBAIEhUTUxUcmVlQnVpbGRlcjo6SFRN
TFRyZWVCdWlsZGVyKEhUTUxEb2N1bWVudFBhcnNlciogcGFyc2VyLCBEb2N1bWVudEZyYWdtZW50
KiBmCiAgICAgLCBtX2xhc3RTY3JpcHRFbGVtZW50U3RhcnRQb3NpdGlvbihUZXh0UG9zaXRpb246
OmJlbG93UmFuZ2VQb3NpdGlvbigpKQogICAgICwgbV91c2VQcmVIVE1MNVBhcnNlclF1aXJrcyh1
c2VQcmVIVE1MNVBhcnNlclF1aXJrcykKIHsKLSAgICAvLyBGSVhNRTogVGhpcyBhc3NlcnRpb24g
d2lsbCBiZWNvbWUgaW52YWxpZCBpZiA8aHR0cDovL3dlYmtpdC5vcmcvYi82MDMxNj4gaXMgZml4
ZWQuCi0gICAgQVNTRVJUKGNvbnRleHRFbGVtZW50KTsKLSAgICBpZiAoY29udGV4dEVsZW1lbnQp
IHsKLSAgICAgICAgLy8gU3RlcHMgNC4yLTQuNiBvZiB0aGUgSFRNTDUgRnJhZ21lbnQgQ2FzZSBw
YXJzaW5nIGFsZ29yaXRobToKLSAgICAgICAgLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNz
L3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2UvdGhlLWVuZC5odG1sI2ZyYWdtZW50LWNh
c2UKLSAgICAgICAgLy8gRm9yIGVmZmljaWVuY3ksIHdlIHNraXAgc3RlcCA0LjIgKCJMZXQgcm9v
dCBiZSBhIG5ldyBodG1sIGVsZW1lbnQgd2l0aCBubyBhdHRyaWJ1dGVzIikKLSAgICAgICAgLy8g
YW5kIGluc3RlYWQgdXNlIHRoZSBEb2N1bWVudEZyYWdtZW50IGFzIGEgcm9vdCBub2RlLgotICAg
ICAgICBtX3RyZWUub3BlbkVsZW1lbnRzKCktPnB1c2hSb290Tm9kZShmcmFnbWVudCk7Ci0gICAg
ICAgIHJlc2V0SW5zZXJ0aW9uTW9kZUFwcHJvcHJpYXRlbHkoKTsKKyAgICAvLyBTdGVwcyA0LjIt
NC42IG9mIHRoZSBIVE1MNSBGcmFnbWVudCBDYXNlIHBhcnNpbmcgYWxnb3JpdGhtOgorICAgIC8v
IGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvbXVsdGlw
YWdlL3RoZS1lbmQuaHRtbCNmcmFnbWVudC1jYXNlCisgICAgLy8gRm9yIGVmZmljaWVuY3ksIHdl
IHNraXAgc3RlcCA0LjIgKCJMZXQgcm9vdCBiZSBhIG5ldyBodG1sIGVsZW1lbnQgd2l0aCBubyBh
dHRyaWJ1dGVzIikKKyAgICAvLyBhbmQgaW5zdGVhZCB1c2UgdGhlIERvY3VtZW50RnJhZ21lbnQg
YXMgYSByb290IG5vZGUuCisgICAgbV90cmVlLm9wZW5FbGVtZW50cygpLT5wdXNoUm9vdE5vZGUo
ZnJhZ21lbnQpOworICAgIHJlc2V0SW5zZXJ0aW9uTW9kZUFwcHJvcHJpYXRlbHkoKTsKKyAgICBp
ZiAoY29udGV4dEVsZW1lbnQpCiAgICAgICAgIG1fdHJlZS5zZXRGb3JtKGNsb3Nlc3RGb3JtQW5j
ZXN0b3IoY29udGV4dEVsZW1lbnQpKTsKLSAgICB9CiB9CiAKIEhUTUxUcmVlQnVpbGRlcjo6fkhU
TUxUcmVlQnVpbGRlcigpCkBAIC00MTAsMTQgKzQwNywxNCBAQCB2b2lkIEhUTUxUcmVlQnVpbGRl
cjo6ZGV0YWNoKCkKIAogSFRNTFRyZWVCdWlsZGVyOjpGcmFnbWVudFBhcnNpbmdDb250ZXh0OjpG
cmFnbWVudFBhcnNpbmdDb250ZXh0KCkKICAgICA6IG1fZnJhZ21lbnQoMCkKLSAgICAsIG1fY29u
dGV4dEVsZW1lbnQoMCkKKyAgICAsIG1fY29udGV4dFRhZyhudWxsUU5hbWUoKSkKICAgICAsIG1f
c2NyaXB0aW5nUGVybWlzc2lvbihGcmFnbWVudFNjcmlwdGluZ0FsbG93ZWQpCiB7CiB9CiAKLUhU
TUxUcmVlQnVpbGRlcjo6RnJhZ21lbnRQYXJzaW5nQ29udGV4dDo6RnJhZ21lbnRQYXJzaW5nQ29u
dGV4dChEb2N1bWVudEZyYWdtZW50KiBmcmFnbWVudCwgRWxlbWVudCogY29udGV4dEVsZW1lbnQs
IEZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbiBzY3JpcHRpbmdQZXJtaXNzaW9uKQorSFRNTFRy
ZWVCdWlsZGVyOjpGcmFnbWVudFBhcnNpbmdDb250ZXh0OjpGcmFnbWVudFBhcnNpbmdDb250ZXh0
KERvY3VtZW50RnJhZ21lbnQqIGZyYWdtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBjb250ZXh0
VGFnLCBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24gc2NyaXB0aW5nUGVybWlzc2lvbikKICAg
ICA6IG1fZnJhZ21lbnQoZnJhZ21lbnQpCi0gICAgLCBtX2NvbnRleHRFbGVtZW50KGNvbnRleHRF
bGVtZW50KQorICAgICwgbV9jb250ZXh0VGFnKGNvbnRleHRUYWcpCiAgICAgLCBtX3NjcmlwdGlu
Z1Blcm1pc3Npb24oc2NyaXB0aW5nUGVybWlzc2lvbikKIHsKICAgICBBU1NFUlQoIWZyYWdtZW50
LT5oYXNDaGlsZE5vZGVzKCkpOwpAQCAtNDQ3LDcgKzQ0NCw3IEBAIHZvaWQgSFRNTFRyZWVCdWls
ZGVyOjpjb25zdHJ1Y3RUcmVlRnJvbVRva2VuKEhUTUxUb2tlbiYgcmF3VG9rZW4pCiAgICAgLy8g
c3luY2hyb25vdXNseSByZS1lbnRlcnMgdGhlIHBhcnNlci4gV2UgZG9uJ3QgY2xlYXIgdGhlIHRv
a2VuIGltbWVkYXRlbHkKICAgICAvLyBmb3IgQ2hhcmFjdGVyIHRva2VucyBiZWNhdXNlIHRoZSBB
dG9taWNIVE1MVG9rZW4gYXZvaWRzIGNvcHlpbmcgdGhlCiAgICAgLy8gY2hhcmFjdGVycyBieSBr
ZWVwaW5nIGEgcG9pbnRlciB0byB0aGUgdW5kZXJseWluZyBidWZmZXIgaW4gdGhlCi0gICAgLy8g
SFRNTFRva2VuLiBGb3J0dWFudGVseSwgQ2hhcmFjdGVyIHRva2VucyBjYW4ndCBjYXVzZSB1c2Ug
dG8gcmUtZW50ZXIKKyAgICAvLyBIVE1MVG9rZW4uIEZvcnR1bmF0ZWx5LCBDaGFyYWN0ZXIgdG9r
ZW5zIGNhbid0IGNhdXNlIHVzZSB0byByZS1lbnRlcgogICAgIC8vIHRoZSBwYXJzZXIuCiAgICAg
Ly8KICAgICAvLyBGSVhNRTogU3RvcCBjbGVhcmluZyB0aGUgcmF3VG9rZW4gb25jZSB3ZSBzdGFy
dCBydW5uaW5nIHRoZSBwYXJzZXIgb2ZmCkBAIC0xNjMwLDYgKzE2MjcsNDkgQEAgdm9pZCBIVE1M
VHJlZUJ1aWxkZXI6OmNhbGxUaGVBZG9wdGlvbkFnZW5jeShBdG9taWNIVE1MVG9rZW4mIHRva2Vu
KQogICAgIH0KIH0KIAorLy8gRklYTUU6IFJlZmVyZW5jZSB0byBET000IHNwZWMgZGVzY3JpYmlu
ZyB0aGUgZm9sbG93aW5nOiBUaGUgaW1wbGllZCBjb250ZXh0IGVsZW1lbnQgb2YKKy8vIERvY3Vt
ZW50RnJhZ21lbnQuaW5uZXJIVE1MIGlzIGJhc2VkIG9uIHRoZSBpZGVudGl0eSBvZiB0aGUgdGFn
TmFtZSBvZiB0aGUgZmlyc3Qgc3RhcnRUYWcgdG9rZW4gZW5jb3VudGVyZWQuCisvLyBGSVhNRTog
RWxlbWVudC5pbm5lckhUTUwgZG9lc24ndCB3b3JrIGZvciBYTUwgZWxlbWVudHMuIFdoZW4gaXQg
aXMgZml4ZWQsIHRoaXMgbmVlZHMgdG8gaWRlbml0aWZ5CisvLyB0YWdOYW1lcyBwYXJ0aWN1bGFy
IHRvIGVpdGhlciBuYW1lc3BhY2UgYW5kIHBpY2sgYW4gYXBwcm9wcmlhdGUgaW1wbGllZCBjb250
ZXh0IGVsZW1lbnQuCitzdGF0aWMgY29uc3QgUXVhbGlmaWVkTmFtZSYgZ2V0SW1wbGllZENvbnRl
eHRUYWcoY29uc3QgQXRvbWljU3RyaW5nJiB0YWdOYW1lKQoreworICAgIGlmICh0YWdOYW1lID09
IHRib2R5VGFnCisgICAgICAgIHx8IHRhZ05hbWUgPT0gdGZvb3RUYWcKKyAgICAgICAgfHwgdGFn
TmFtZSA9PSB0aGVhZFRhZworICAgICAgICB8fCB0YWdOYW1lID09IGNhcHRpb25UYWcKKyAgICAg
ICAgfHwgdGFnTmFtZSA9PSBjb2xncm91cFRhZykgeworICAgICAgICByZXR1cm4gdGFibGVUYWc7
CisgICAgfQorICAgIGlmICh0YWdOYW1lID09IHRyVGFnKQorICAgICAgICByZXR1cm4gdGJvZHlU
YWc7CisgICAgaWYgKHRhZ05hbWUgPT0gY29sVGFnKQorICAgICAgICByZXR1cm4gY29sZ3JvdXBU
YWc7CisgICAgaWYgKHRhZ05hbWUgPT0gdGhUYWcgfHwgdGFnTmFtZSA9PSB0ZFRhZykKKyAgICAg
ICAgcmV0dXJuIHRyVGFnOworICAgIGlmICh0YWdOYW1lID09IGhlYWRUYWcgfHwgdGFnTmFtZSA9
PSBib2R5VGFnKQorICAgICAgICByZXR1cm4gaHRtbFRhZzsKKyAgICBpZiAodGFnTmFtZSA9PSBy
cFRhZyB8fCB0YWdOYW1lID09IHJ0VGFnKQorICAgICAgICByZXR1cm4gcnVieVRhZzsKKworICAg
IHJldHVybiBib2R5VGFnOworfQorCitib29sIEhUTUxUcmVlQnVpbGRlcjo6dHJ5VG9TZXRJbXBs
aWVkQ29udGV4dFRhZyhIVE1MVG9rZW4mIHRva2VuKQoreworICAgIEFTU0VSVChtX2ZyYWdtZW50
Q29udGV4dC5mcmFnbWVudCgpICYmIG1fZnJhZ21lbnRDb250ZXh0LmNvbnRleHRUYWcoKSA9PSBu
dWxsUU5hbWUoKSk7CisgICAgaWYgKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6RW5k
T2ZGaWxlKSB7CisgICAgICAgIG1fZnJhZ21lbnRDb250ZXh0LnNldENvbnRleHRUYWcoYm9keVRh
Zyk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGlmICh0b2tlbi50eXBlKCkg
IT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBtX2ZyYWdtZW50Q29udGV4dC5zZXRDb250ZXh0VGFnKGdldEltcGxpZWRDb250ZXh0VGFnKEF0
b21pY1N0cmluZyh0b2tlbi5uYW1lKCkuZGF0YSgpLCB0b2tlbi5uYW1lKCkuc2l6ZSgpKSkpOwor
ICAgIHJlc2V0SW5zZXJ0aW9uTW9kZUFwcHJvcHJpYXRlbHkoKTsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKwogdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnJlc2V0SW5zZXJ0aW9uTW9kZUFwcHJvcHJpYXRl
bHkoKQogewogICAgIC8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJy
ZW50LXdvcmsvbXVsdGlwYWdlL3BhcnNpbmcuaHRtbCNyZXNldC10aGUtaW5zZXJ0aW9uLW1vZGUt
YXBwcm9wcmlhdGVseQpAQCAtMTYzNyw0MCArMTY3Nyw0MCBAQCB2b2lkIEhUTUxUcmVlQnVpbGRl
cjo6cmVzZXRJbnNlcnRpb25Nb2RlQXBwcm9wcmlhdGVseSgpCiAgICAgSFRNTEVsZW1lbnRTdGFj
azo6RWxlbWVudFJlY29yZCogbm9kZVJlY29yZCA9IG1fdHJlZS5vcGVuRWxlbWVudHMoKS0+dG9w
UmVjb3JkKCk7CiAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgQ29udGFpbmVyTm9kZSogbm9kZSA9
IG5vZGVSZWNvcmQtPm5vZGUoKTsKKyAgICAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSA9IG5vZGUgPT0gbV90cmVlLm9wZW5FbGVtZW50cygpLT5yb290Tm9kZSgpID8gbV9mcmFnbWVu
dENvbnRleHQuY29udGV4dFRhZygpIDogbm9kZVJlY29yZC0+ZWxlbWVudCgpLT50YWdRTmFtZSgp
OwogICAgICAgICBpZiAobm9kZSA9PSBtX3RyZWUub3BlbkVsZW1lbnRzKCktPnJvb3ROb2RlKCkp
IHsKICAgICAgICAgICAgIEFTU0VSVChpc1BhcnNpbmdGcmFnbWVudCgpKTsKICAgICAgICAgICAg
IGxhc3QgPSB0cnVlOwotICAgICAgICAgICAgbm9kZSA9IG1fZnJhZ21lbnRDb250ZXh0LmNvbnRl
eHRFbGVtZW50KCk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUoc2Vs
ZWN0VGFnKSkgeworICAgICAgICBpZiAodGFnTmFtZS5tYXRjaGVzKHNlbGVjdFRhZykpIHsKICAg
ICAgICAgICAgIEFTU0VSVChpc1BhcnNpbmdGcmFnbWVudCgpKTsKICAgICAgICAgICAgIHJldHVy
biBzZXRJbnNlcnRpb25Nb2RlKEluU2VsZWN0TW9kZSk7CiAgICAgICAgIH0KLSAgICAgICAgaWYg
KG5vZGUtPmhhc1RhZ05hbWUodGRUYWcpIHx8IG5vZGUtPmhhc1RhZ05hbWUodGhUYWcpKQorICAg
ICAgICBpZiAodGFnTmFtZS5tYXRjaGVzKHRkVGFnKSB8fCB0YWdOYW1lLm1hdGNoZXModGhUYWcp
KQogICAgICAgICAgICAgcmV0dXJuIHNldEluc2VydGlvbk1vZGUoSW5DZWxsTW9kZSk7Ci0gICAg
ICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKHRyVGFnKSkKKyAgICAgICAgaWYgKHRhZ05hbWUubWF0
Y2hlcyh0clRhZykpCiAgICAgICAgICAgICByZXR1cm4gc2V0SW5zZXJ0aW9uTW9kZShJblJvd01v
ZGUpOwotICAgICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZSh0Ym9keVRhZykgfHwgbm9kZS0+aGFz
VGFnTmFtZSh0aGVhZFRhZykgfHwgbm9kZS0+aGFzVGFnTmFtZSh0Zm9vdFRhZykpCisgICAgICAg
IGlmICh0YWdOYW1lLm1hdGNoZXModGJvZHlUYWcpIHx8IHRhZ05hbWUubWF0Y2hlcyh0aGVhZFRh
ZykgfHwgdGFnTmFtZS5tYXRjaGVzKHRmb290VGFnKSkKICAgICAgICAgICAgIHJldHVybiBzZXRJ
bnNlcnRpb25Nb2RlKEluVGFibGVCb2R5TW9kZSk7Ci0gICAgICAgIGlmIChub2RlLT5oYXNUYWdO
YW1lKGNhcHRpb25UYWcpKQorICAgICAgICBpZiAodGFnTmFtZS5tYXRjaGVzKGNhcHRpb25UYWcp
KQogICAgICAgICAgICAgcmV0dXJuIHNldEluc2VydGlvbk1vZGUoSW5DYXB0aW9uTW9kZSk7Ci0g
ICAgICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKGNvbGdyb3VwVGFnKSkgeworICAgICAgICBpZiAo
dGFnTmFtZS5tYXRjaGVzKGNvbGdyb3VwVGFnKSkgewogICAgICAgICAgICAgQVNTRVJUKGlzUGFy
c2luZ0ZyYWdtZW50KCkpOwogICAgICAgICAgICAgcmV0dXJuIHNldEluc2VydGlvbk1vZGUoSW5D
b2x1bW5Hcm91cE1vZGUpOwogICAgICAgICB9Ci0gICAgICAgIGlmIChub2RlLT5oYXNUYWdOYW1l
KHRhYmxlVGFnKSkKKyAgICAgICAgaWYgKHRhZ05hbWUubWF0Y2hlcyh0YWJsZVRhZykpCiAgICAg
ICAgICAgICByZXR1cm4gc2V0SW5zZXJ0aW9uTW9kZShJblRhYmxlTW9kZSk7Ci0gICAgICAgIGlm
IChub2RlLT5oYXNUYWdOYW1lKGhlYWRUYWcpKSB7CisgICAgICAgIGlmICh0YWdOYW1lLm1hdGNo
ZXMoaGVhZFRhZykpIHsKICAgICAgICAgICAgIEFTU0VSVChpc1BhcnNpbmdGcmFnbWVudCgpKTsK
ICAgICAgICAgICAgIHJldHVybiBzZXRJbnNlcnRpb25Nb2RlKEluQm9keU1vZGUpOwogICAgICAg
ICB9Ci0gICAgICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKGJvZHlUYWcpKQorICAgICAgICBpZiAo
dGFnTmFtZS5tYXRjaGVzKGJvZHlUYWcpKQogICAgICAgICAgICAgcmV0dXJuIHNldEluc2VydGlv
bk1vZGUoSW5Cb2R5TW9kZSk7Ci0gICAgICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKGZyYW1lc2V0
VGFnKSkgeworICAgICAgICBpZiAodGFnTmFtZS5tYXRjaGVzKGZyYW1lc2V0VGFnKSkgewogICAg
ICAgICAgICAgQVNTRVJUKGlzUGFyc2luZ0ZyYWdtZW50KCkpOwogICAgICAgICAgICAgcmV0dXJu
IHNldEluc2VydGlvbk1vZGUoSW5GcmFtZXNldE1vZGUpOwogICAgICAgICB9Ci0gICAgICAgIGlm
IChub2RlLT5oYXNUYWdOYW1lKGh0bWxUYWcpKSB7CisgICAgICAgIGlmICh0YWdOYW1lLm1hdGNo
ZXMoaHRtbFRhZykpIHsKICAgICAgICAgICAgIEFTU0VSVChpc1BhcnNpbmdGcmFnbWVudCgpKTsK
ICAgICAgICAgICAgIHJldHVybiBzZXRJbnNlcnRpb25Nb2RlKEJlZm9yZUhlYWRNb2RlKTsKICAg
ICAgICAgfQpAQCAtMjc4NSw3ICsyODI1LDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nl
c3NUb2tlbkluRm9yZWlnbkNvbnRlbnQoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKICAgICAgICAg
bV90cmVlLmluc2VydENvbW1lbnQodG9rZW4pOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBI
VE1MVG9rZW5UeXBlczo6Q2hhcmFjdGVyOiB7Ci0gICAgICAgIFN0cmluZyBjaGFyYWN0ZXJzID0g
U3RyaW5nKHRva2VuLmNoYXJhY3RlcnMoKS5kYXRhKCksIHRva2VuLmNoYXJhY3RlcnMoKS5zaXpl
KCkpOworICAgICAgICBTdHJpbmcgY2hhcmFjdGVycyA9IFN0cmluZyh0b2tlbi5jaGFyYWN0ZXJE
YXRhKCksIHRva2VuLmNoYXJhY3RlckRhdGFTaXplKCkpOwogICAgICAgICBtX3RyZWUuaW5zZXJ0
VGV4dE5vZGUoY2hhcmFjdGVycyk7CiAgICAgICAgIGlmIChtX2ZyYW1lc2V0T2sgJiYgIWlzQWxs
V2hpdGVzcGFjZU9yUmVwbGFjZW1lbnRDaGFyYWN0ZXJzKGNoYXJhY3RlcnMpKQogICAgICAgICAg
ICAgbV9mcmFtZXNldE9rID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxUcmVlQnVpbGRlci5oCmluZGV4IDY0YTkzYjM0ZmZiZjFmMDRhYTBiNzM0MjIzN2M3OWQ5YWRk
NWJiMjMuLjE4ZmU2MGYzNGE0NDVmMjdhZTA2ODJhOGI0MTRiMTQ1ZDliNjBmOTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5oCkBAIC01MCw2ICs1MCw3
IEBAIGNsYXNzIERvY3VtZW50RnJhZ21lbnQ7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEhUTUxUb2tl
bjsKIGNsYXNzIEhUTUxEb2N1bWVudDsKK2NsYXNzIFF1YWxpZmllZE5hbWU7CiBjbGFzcyBOb2Rl
OwogY2xhc3MgSFRNTERvY3VtZW50UGFyc2VyOwogCkBAIC04NSw2ICs4Niw5IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgc2V0U2hvdWxkU2tpcExlYWRpbmdOZXdsaW5lKGJvb2wgc2hvdWxkU2tpcCkg
eyBtX3Nob3VsZFNraXBMZWFkaW5nTmV3bGluZSA9IHNob3VsZFNraXA7IH0KIAorICAgIGJvb2wg
dHJ5VG9TZXRJbXBsaWVkQ29udGV4dFRhZyhIVE1MVG9rZW4mKTsKKyAgICBpbmxpbmUgYm9vbCBj
YW5Db250aW51ZShIVE1MVG9rZW4mIHRva2VuKSB7IHJldHVybiAhbV9mcmFnbWVudENvbnRleHQu
ZnJhZ21lbnQoKSB8fCBtX2ZyYWdtZW50Q29udGV4dC5jb250ZXh0VGFnKCkgIT0gbnVsbFFOYW1l
KCkgfHwgdHJ5VG9TZXRJbXBsaWVkQ29udGV4dFRhZyh0b2tlbik7IH0KKwogICAgIHN0YXRpYyBi
b29sIHNjcmlwdEVuYWJsZWQoRnJhbWUqKTsKICAgICBzdGF0aWMgYm9vbCBwbHVnaW5zRW5hYmxl
ZChGcmFtZSopOwogCkBAIC0xOTUsMTYgKzE5OSwxNyBAQCBwcml2YXRlOgogICAgICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShGcmFnbWVudFBhcnNpbmdDb250ZXh0KTsKICAgICBwdWJsaWM6CiAg
ICAgICAgIEZyYWdtZW50UGFyc2luZ0NvbnRleHQoKTsKLSAgICAgICAgRnJhZ21lbnRQYXJzaW5n
Q29udGV4dChEb2N1bWVudEZyYWdtZW50KiwgRWxlbWVudCogY29udGV4dEVsZW1lbnQsIEZyYWdt
ZW50U2NyaXB0aW5nUGVybWlzc2lvbik7CisgICAgICAgIEZyYWdtZW50UGFyc2luZ0NvbnRleHQo
RG9jdW1lbnRGcmFnbWVudCosIGNvbnN0IFF1YWxpZmllZE5hbWUmIGNvbnRleHRUYWcsIEZyYWdt
ZW50U2NyaXB0aW5nUGVybWlzc2lvbik7CiAgICAgICAgIH5GcmFnbWVudFBhcnNpbmdDb250ZXh0
KCk7CiAKICAgICAgICAgRG9jdW1lbnRGcmFnbWVudCogZnJhZ21lbnQoKSBjb25zdCB7IHJldHVy
biBtX2ZyYWdtZW50OyB9Ci0gICAgICAgIEVsZW1lbnQqIGNvbnRleHRFbGVtZW50KCkgY29uc3Qg
eyBBU1NFUlQobV9mcmFnbWVudCk7IHJldHVybiBtX2NvbnRleHRFbGVtZW50OyB9CisgICAgICAg
IGNvbnN0IFF1YWxpZmllZE5hbWUmIGNvbnRleHRUYWcoKSBjb25zdCB7IHJldHVybiBtX2NvbnRl
eHRUYWc7IH0KKyAgICAgICAgdm9pZCBzZXRDb250ZXh0VGFnKGNvbnN0IFF1YWxpZmllZE5hbWUm
IGNvbnRleHRUYWcpIHsgbV9jb250ZXh0VGFnID0gY29udGV4dFRhZzsgfQogICAgICAgICBGcmFn
bWVudFNjcmlwdGluZ1Blcm1pc3Npb24gc2NyaXB0aW5nUGVybWlzc2lvbigpIGNvbnN0IHsgQVNT
RVJUKG1fZnJhZ21lbnQpOyByZXR1cm4gbV9zY3JpcHRpbmdQZXJtaXNzaW9uOyB9CiAKICAgICBw
cml2YXRlOgogICAgICAgICBEb2N1bWVudEZyYWdtZW50KiBtX2ZyYWdtZW50OwotICAgICAgICBF
bGVtZW50KiBtX2NvbnRleHRFbGVtZW50OworICAgICAgICBRdWFsaWZpZWROYW1lIG1fY29udGV4
dFRhZzsKIAogICAgICAgICAvLyBGcmFnbWVudFNjcmlwdGluZ05vdEFsbG93ZWQgY2F1c2VzIHRo
ZSBQYXJzZXIgdG8gcmVtb3ZlIGNoaWxkcmVuCiAgICAgICAgIC8vIGZyb20gPHNjcmlwdD4gdGFn
cyAoc28gamF2YXNjcmlwdCBkb2Vzbid0IHNob3cgdXAgaW4gcGFzdGVzKS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvTWFya3VwVG9rZW5CYXNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS94bWwvcGFyc2VyL01hcmt1cFRva2VuQmFzZS5oCmluZGV4IGM5NjJhNmFiYTMzYTRiNWU1
MTRjMWVhM2RlMDEwYzk4ZDFiZGViZjIuLjRiZTA2N2RmNjQ1MGY5ZTU3YzcwZDA5OWRkMDNlOTZh
MjRlNmFkMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvTWFya3VwVG9r
ZW5CYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9NYXJrdXBUb2tlbkJhc2Uu
aApAQCAtMzcyLDExICszNzIsMTMgQEAgcHJvdGVjdGVkOgogICAgIEF0dHJpYnV0ZSogbV9jdXJy
ZW50QXR0cmlidXRlOwogfTsKIAorZW51bSBDaGFyYWN0ZXJTdG9yYWdlTW9kZSB7IEludGVybmFs
aXplQ2hhcmFjdGVycywgUmVmZXJlbmNlRXh0ZXJuYWxDaGFyYWN0ZXJzIH07CisKIHRlbXBsYXRl
PHR5cGVuYW1lIFRva2VuPgogY2xhc3MgQXRvbWljTWFya3VwVG9rZW5CYXNlIHsKICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShBdG9taWNNYXJrdXBUb2tlbkJhc2UpOwogcHVibGljOgotICAgIEF0
b21pY01hcmt1cFRva2VuQmFzZShUb2tlbiogdG9rZW4pCisgICAgQXRvbWljTWFya3VwVG9rZW5C
YXNlKFRva2VuKiB0b2tlbiwgQ2hhcmFjdGVyU3RvcmFnZU1vZGUgY2hhcmFjdGVyU3RvcmFnZSA9
IFJlZmVyZW5jZUV4dGVybmFsQ2hhcmFjdGVycykKICAgICAgICAgOiBtX3R5cGUodG9rZW4tPnR5
cGUoKSkKICAgICB7CiAgICAgICAgIEFTU0VSVCh0b2tlbik7CkBAIC00MDIsNyArNDA0LDEwIEBA
IHB1YmxpYzoKICAgICAgICAgICAgIG1fZGF0YSA9IFN0cmluZyh0b2tlbi0+Y29tbWVudCgpLmRh
dGEoKSwgdG9rZW4tPmNvbW1lbnQoKS5zaXplKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgVG9rZW46OlR5cGU6OkNoYXJhY3RlcjoKLSAgICAgICAgICAgIG1fZXh0ZXJuYWxD
aGFyYWN0ZXJzID0gJnRva2VuLT5jaGFyYWN0ZXJzKCk7CisgICAgICAgICAgICBpZiAoY2hhcmFj
dGVyU3RvcmFnZSA9PSBJbnRlcm5hbGl6ZUNoYXJhY3RlcnMpCisgICAgICAgICAgICAgICAgbV9p
bnRlcm5hbENoYXJhY3RlcnMuYXBwZW5kUmFuZ2UodG9rZW4tPmNoYXJhY3RlcnMoKS5iZWdpbigp
LCB0b2tlbi0+Y2hhcmFjdGVycygpLmVuZCgpKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICBtX2V4dGVybmFsQ2hhcmFjdGVycyA9ICZ0b2tlbi0+Y2hhcmFjdGVycygpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVhazsKQEAg
LTQ1NiwxMCArNDYxLDE2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fYXR0cmlidXRlczsK
ICAgICB9CiAKLSAgICBjb25zdCB0eXBlbmFtZSBUb2tlbjo6RGF0YVZlY3RvciYgY2hhcmFjdGVy
cygpIGNvbnN0CisgICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlckRhdGEoKSBjb25zdAorICAgIHsK
KyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUb2tlbjo6VHlwZTo6Q2hhcmFjdGVyKTsKKyAgICAg
ICAgcmV0dXJuIG1fZXh0ZXJuYWxDaGFyYWN0ZXJzID8gbV9leHRlcm5hbENoYXJhY3RlcnMtPmRh
dGEoKSA6IG1faW50ZXJuYWxDaGFyYWN0ZXJzLmRhdGEoKTsKKyAgICB9CisKKyAgICBjb25zdCBz
aXplX3QgY2hhcmFjdGVyRGF0YVNpemUoKSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUKG1f
dHlwZSA9PSBUb2tlbjo6VHlwZTo6Q2hhcmFjdGVyKTsKLSAgICAgICAgcmV0dXJuICptX2V4dGVy
bmFsQ2hhcmFjdGVyczsKKyAgICAgICAgcmV0dXJuIG1fZXh0ZXJuYWxDaGFyYWN0ZXJzID8gbV9l
eHRlcm5hbENoYXJhY3RlcnMtPnNpemUoKSA6IG1faW50ZXJuYWxDaGFyYWN0ZXJzLnNpemUoKTsK
ICAgICB9CiAKICAgICBjb25zdCBTdHJpbmcmIGNvbW1lbnQoKSBjb25zdApAQCAtNTAwLDEzICs1
MTEsMTggQEAgcHJvdGVjdGVkOgogCiAgICAgLy8gImNoYXJhY3RlcnMiIGZvciBDaGFyYWN0ZXIK
ICAgICAvLwotICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gY29weSB0aGUgdGhlIGNoYXJhY3RlcnMg
b3V0IG9mIHRoZSBUb2tlbiwgc28gd2UKLSAgICAvLyBrZWVwIGEgcG9pbnRlciB0byBpdHMgYnVm
ZmVyIGluc3RlYWQuIFRoaXMgYnVmZmVyIGlzIG93bmVkIGJ5IHRoZQotICAgIC8vIFRva2VuIGFu
ZCBjYXVzZXMgYSBsaWZldGltZSBkZXBlbmRlbmNlIGJldHdlZW4gdGhlc2Ugb2JqZWN0cy4KKyAg
ICAvLyBJbiBzdGVhZHktc3RhdGUgY2FzZSwgd2UgZG9uJ3Qgd2FudCB0byBjb3B5IHRoZSB0aGUg
Y2hhcmFjdGVycyBvdXQgb2YgdGhlCisgICAgLy8gVG9rZW4sIHNvIHdlIGtlZXAgYSBwb2ludGVy
IHRvIGl0cyBidWZmZXIgaW5zdGVhZC4gVGhpcyBidWZmZXIgaXMgb3duZWQKKyAgICAvLyBieSB0
aGUgVG9rZW4gYW5kIGNhdXNlcyBhIGxpZmV0aW1lIGRlcGVuZGVuY2UgYmV0d2VlbiB0aGVzZSBv
YmplY3RzLiBUaGlzCisgICAgLy8gaXMgdGhlIGJlaGF2aW9yIHdoZW4gY29uc3RydWN0ZWQgd2l0
aCBSZWZlcmVuY2VFeHRlcm5hbENoYXJhY3RlcnMuCiAgICAgLy8KLSAgICAvLyBGSVhNRTogQWRk
IGEgbWVjaGFuaXNtIGZvciAiaW50ZXJuYWxpemluZyIgdGhlIGNoYXJhY3RlcnMgd2hlbiB0aGUK
LSAgICAvLyAgICAgICAgSFRNTFRva2VuIGlzIGRlc3RydWN0ZWQuCisgICAgLy8gSW4gdGhlICJp
bXBsaWVkIGNvbnRleHQiIGZyYWdtZW50IGNhc2UsIHdlIG5lZWQgdG8gbGV0IHRoZSB0b2tlbml6
ZXIKKyAgICAvLyBzY2FuIGFoZWFkIGFuZCBxdWV1ZSB0b2tlbnMgZm9yIGxhdGVyIGRlbGl2ZXJ5
LiBJbiB0aGlzIGNhc2UsIHdlIG1ha2UgYW4KKyAgICAvLyBpbnRlcm5hbCBjb3B5IG9mIHRoZSBj
aGFyYWN0ZXJzIHNvIHRoYXQgaXQgaXMgc2FmZSB0byBsZXQgdGhlIHVuZGVybHlpbmcKKyAgICAv
LyBUb2tlbiBiZSBmcmVlZC4gVGhpcyBpcyB0aGUgYmVoYXZpb3Igd2hlbiBjb25zdHJ1Y3RlZCB3
aXRoCisgICAgLy8gSW50ZXJuYWxpemVDaGFyYWN0ZXJzCiAgICAgY29uc3QgdHlwZW5hbWUgVG9r
ZW46OkRhdGFWZWN0b3IqIG1fZXh0ZXJuYWxDaGFyYWN0ZXJzOworICAgIFdURjo6VmVjdG9yPFVD
aGFyPiBtX2ludGVybmFsQ2hhcmFjdGVyczsKIAogICAgIC8vIEZvciBET0NUWVBFCiAgICAgT3du
UHRyPHR5cGVuYW1lIFRva2VuOjpEb2N0eXBlRGF0YT4gbV9kb2N0eXBlRGF0YTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MVHJlZUJ1aWxkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUveG1sL3BhcnNlci9YTUxUcmVlQnVpbGRlci5jcHAKaW5kZXggZGIyMTNjZDYyZWU5
M2Q1NDdhZjEzYzU5ZDNmMTAyZjVjZGNjNjc5Ny4uNTFlMTQ4ZGNjYzE5NzUyNzZjZDg2Y2RmYzlm
OGE0ZTYxNDVjYTMwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxU
cmVlQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxUcmVlQnVp
bGRlci5jcHAKQEAgLTI3Miw3ICsyNzIsNyBAQCB2b2lkIFhNTFRyZWVCdWlsZGVyOjpwcm9jZXNz
RW5kVGFnKGNvbnN0IEF0b21pY1hNTFRva2VuJiB0b2tlbikKIAogdm9pZCBYTUxUcmVlQnVpbGRl
cjo6cHJvY2Vzc0NoYXJhY3Rlcihjb25zdCBBdG9taWNYTUxUb2tlbiYgdG9rZW4pCiB7Ci0gICAg
YXBwZW5kVG9UZXh0KHRva2VuLmNoYXJhY3RlcnMoKS5kYXRhKCksIHRva2VuLmNoYXJhY3RlcnMo
KS5zaXplKCkpOworICAgIGFwcGVuZFRvVGV4dCh0b2tlbi5jaGFyYWN0ZXJEYXRhKCksIHRva2Vu
LmNoYXJhY3RlckRhdGFTaXplKCkpOwogfQogCiB2b2lkIFhNTFRyZWVCdWlsZGVyOjpwcm9jZXNz
Q0RBVEEoY29uc3QgQXRvbWljWE1MVG9rZW4mIHRva2VuKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140560</attachid>
            <date>2012-05-07 11:28:06 -0700</date>
            <delta_ts>2012-05-09 15:25:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84646-20120507112805.patch</filename>
            <type>text/plain</type>
            <size>29772</size>
            <attacher name="Rafael Weinstein">rafaelw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE2MzIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjdmNjk0ZWY4NmU1MGQ2
NmM3M2ZiNzViNzJjY2Y4MDhmNmViZWVjZC4uOWFmNjM1ZTQ0ODFhNDFjZjllOTQzYmFjMWU0YTI2
MmIyMzU2ZTllYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEyLTA0LTIzICBSYWZh
ZWwgV2VpbnN0ZWluICA8cmFmYWVsd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW1wbGVtZW50
IERvY3VtZW50RnJhZ21lbnQuaW5uZXJIVE1MCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04NDY0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIERvY3VtZW50RnJhZ21lbnQuaW5uZXJIVE1MIG5vdyBwYXJzZXMg
YmFzZWQgb24gYW4gImltcGxpZWQgY29udGV4dCBlbGVtZW50IiB3aGljaCBpcyBwaWNrcyBiYXNl
ZAorICAgICAgICBvbiB0aGUgbmFtZSBvZiB0aGUgZmlyc3QgdGFnIHdoaWNoIGFwcGVhcnMgaW4g
dGhlIHByb3ZpZGVkIG1hcmt1cC4KKworICAgICAgICBObyBuZXcgdGVzdHMuIChPT1BTISkKKwor
ICAgICAgICAqIGRvbS9Eb2N1bWVudEZyYWdtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50RnJhZ21lbnQ6OmlubmVySFRNTCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50RnJhZ21lbnQ6OnNldElubmVySFRNTCk6CisgICAgICAgICogZG9t
L0RvY3VtZW50RnJhZ21lbnQuaDoKKyAgICAgICAgKERvY3VtZW50RnJhZ21lbnQpOgorICAgICAg
ICAqIGRvbS9Eb2N1bWVudEZyYWdtZW50LmlkbDoKKyAgICAgICAgKiBkb20vU2hhZG93Um9vdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290OjpzZXRJbm5lckhUTUwpOgorICAgICAg
ICAqIGVkaXRpbmcvbWFya3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZyYWdtZW50
RnJvbVNvdXJjZSk6CisgICAgICAgICogZWRpdGluZy9tYXJrdXAuaDoKKyAgICAgICAgKiBodG1s
L0hUTUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjpzZXRJbm5l
ckhUTUwpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OnNldE91dGVySFRNTCk6Cisg
ICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxUcmVlQnVpbGRlcjo6SFRNTFRyZWVCdWlsZGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFnKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxUcmVlQnVpbGRlcjo6cmVzZXRJbnNlcnRpb25Nb2RlQXBwcm9wcmlhdGVseSk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWcpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzQ2hhcmFjdGVyQnVmZmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZE9mRmlsZSk6CisgICAgICAgICog
aHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJl
ZUJ1aWxkZXI6OkZyYWdtZW50UGFyc2luZ0NvbnRleHQ6OmNvbnRleHRFbGVtZW50KToKKwogMjAx
Mi0wNS0wNyAgVG9tbXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KIAogICAgICAg
ICBNZWRpYVN0cmVhbSBBUEk6IFJlbmFtZSBNZWRpYVN0cmVhbUNlbnRlcjo6ZGlkQ29uc3RydWN0
TWVkaWFTdHJlYW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmNwcAppbmRleCBm
N2NmYWRmY2M3OWYzMWQ1MTY2M2VhYWMwNDJiMzQ1ZGE3MzRjMTlhLi45YmNjMzNjNzAxYmI3MGI0
ODg1N2UzOTUyNWVhNDdkMGIzYjUzMWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnRGcmFnbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJh
Z21lbnQuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUg
IlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiWE1MRG9jdW1lbnRQYXJzZXIuaCIKKyNpbmNsdWRlICJt
YXJrdXAuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC05MCw0ICs5MSwyMSBAQCBib29s
IERvY3VtZW50RnJhZ21lbnQ6OnBhcnNlWE1MKGNvbnN0IFN0cmluZyYgc291cmNlLCBFbGVtZW50
KiBjb250ZXh0RWxlbWVudCwgRgogI2VuZGlmCiB9CiAKK1N0cmluZyBEb2N1bWVudEZyYWdtZW50
Ojppbm5lckhUTUwoKSBjb25zdAoreworICAgIHJldHVybiBjcmVhdGVNYXJrdXAodGhpcywgQ2hp
bGRyZW5Pbmx5KTsKK30KKwordm9pZCBEb2N1bWVudEZyYWdtZW50OjpzZXRJbm5lckhUTUwoY29u
c3QgU3RyaW5nJiBodG1sLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoIWRvY3VtZW50
KCktPmlzSFRNTERvY3VtZW50KCkpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBm
cmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50RnJvbVNvdXJjZShodG1sLCBkb2N1bWVudCgpLCAwIC8q
IGNvbnRleHRFbGVtZW50ICovLCBlYyk7CisgICAgaWYgKGZyYWdtZW50KQorICAgICAgICByZXBs
YWNlQ2hpbGRyZW5XaXRoRnJhZ21lbnQodGhpcywgZnJhZ21lbnQucmVsZWFzZSgpLCBlYyk7Cit9
CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5oCmluZGV4IDFlYTRkY2IzMjY1
ZmYyYTg2NjhiNDBkZjRmYWY3M2RmNWUwZTRkNTQuLjVjYzk2YjcyYjc0MmM5MWJkZWZkNGNhMTYw
ODNjMzNlNDBmNzY3ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZy
YWdtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuaApAQCAt
MzgsNiArMzgsOSBAQCBwdWJsaWM6CiAgICAgCiAgICAgdmlydHVhbCBib29sIGNhbkNvbnRhaW5S
YW5nZUVuZFBvaW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCisgICAgU3RyaW5nIGlubmVy
SFRNTCgpIGNvbnN0OworICAgIHZvaWQgc2V0SW5uZXJIVE1MKGNvbnN0IFN0cmluZyYsIEV4Y2Vw
dGlvbkNvZGUmKTsKKwogcHJvdGVjdGVkOgogICAgIERvY3VtZW50RnJhZ21lbnQoRG9jdW1lbnQq
LCBDb25zdHJ1Y3Rpb25UeXBlID0gQ3JlYXRlQ29udGFpbmVyKTsKICAgICB2aXJ0dWFsIFN0cmlu
ZyBub2RlTmFtZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50RnJhZ21lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuaWRs
CmluZGV4IDg4MmI2MmRiMzllYjdmMmUwNTA0NzgyMDQ5MmI3ZTkzNjFhOGVkZWQuLmY1ZjU5MTM5
NzJkYjdlZDAwNDE4ODJhNjY4ZWE2MzMxYWNjNzNmZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnRGcmFnbWVudC5pZGwKQEAgLTI1LDYgKzI1LDggQEAgbW9kdWxlIGNvcmUgewogICAgICAg
ICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIE5vZGVMaXN0IHF1ZXJ5U2VsZWN0
b3JBbGwoaW4gRE9NU3RyaW5nIHNlbGVjdG9ycykKICAgICAgICAgICAgIHJhaXNlcyhET01FeGNl
cHRpb24pOworICAgICAgICBhdHRyaWJ1dGUgW1RyZWF0TnVsbEFzPU51bGxTdHJpbmddIERPTVN0
cmluZyBpbm5lckhUTUwKKyAgICAgICAgICAgIHNldHRlciByYWlzZXMoRE9NRXhjZXB0aW9uKTsK
ICAgICB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFt
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5jcHAKaW5kZXggZTA4NTUw
NzBhN2NiMzI1MzRjY2JmOGFiOGQwNTI2NjdkYTMxOWYxNS4uZmFiMWMyYjZiMjcyMzc4ZjZiOWIw
N2M4MGE2NDdlMzBjNDg1NjMxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1F1YWxp
ZmllZE5hbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1lLmNwcApA
QCAtMTA0LDYgKzEwNCw3IEBAIFN0cmluZyBRdWFsaWZpZWROYW1lOjp0b1N0cmluZygpIGNvbnN0
CiAKIC8vIEdsb2JhbCBpbml0IHJvdXRpbmVzCiBERUZJTkVfR0xPQkFMKFF1YWxpZmllZE5hbWUs
IGFueU5hbWUsIG51bGxBdG9tLCBzdGFyQXRvbSwgc3RhckF0b20pCitERUZJTkVfR0xPQkFMKFF1
YWxpZmllZE5hbWUsIG51bGxOYW1lLCBudWxsQXRvbSwgbnVsbEF0b20sIG51bGxBdG9tKQogCiB2
b2lkIFF1YWxpZmllZE5hbWU6OmluaXQoKQogewpAQCAtMTEzLDYgKzExNCw3IEBAIHZvaWQgUXVh
bGlmaWVkTmFtZTo6aW5pdCgpCiAgICAgICAgIAogICAgICAgICBBdG9taWNTdHJpbmc6OmluaXQo
KTsKICAgICAgICAgbmV3ICgodm9pZCopJmFueU5hbWUpIFF1YWxpZmllZE5hbWUobnVsbEF0b20s
IHN0YXJBdG9tLCBzdGFyQXRvbSk7CisgICAgICAgIG5ldyAoKHZvaWQqKSZudWxsTmFtZSkgUXVh
bGlmaWVkTmFtZShudWxsQXRvbSwgbnVsbEF0b20sIG51bGxBdG9tKTsKICAgICAgICAgaW5pdGlh
bGl6ZWQgPSB0cnVlOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9R
dWFsaWZpZWROYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5oCmluZGV4
IDYzNmIyYTUxNTBjOWU5ODdjMDI3ZTc1Njk3OTJkOWJhYzM0YTg5ZTkuLjllZmI4ODEyNzM2OTc2
ZTFjNTQzODlhMDM3ZTIxYzA4YTlmZDc3ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9RdWFsaWZpZWROYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUu
aApAQCAtMTA1LDYgKzEwNSw4IEBAIHByaXZhdGU6CiAjaWZuZGVmIFdFQkNPUkVfUVVBTElGSUVE
TkFNRV9ISURFX0dMT0JBTFMKIGV4dGVybiBjb25zdCBRdWFsaWZpZWROYW1lIGFueU5hbWU7CiBp
bmxpbmUgY29uc3QgUXVhbGlmaWVkTmFtZSYgYW55UU5hbWUoKSB7IHJldHVybiBhbnlOYW1lOyB9
CitleHRlcm4gY29uc3QgUXVhbGlmaWVkTmFtZSBudWxsTmFtZTsKK2lubGluZSBjb25zdCBRdWFs
aWZpZWROYW1lJiBudWxsUU5hbWUoKSB7IHJldHVybiBudWxsTmFtZTsgfQogI2VuZGlmCiAKIGlu
bGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgQXRvbWljU3RyaW5nJiBhLCBjb25zdCBRdWFsaWZp
ZWROYW1lJiBxKSB7IHJldHVybiBhID09IHEubG9jYWxOYW1lKCk7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFk
b3dSb290LmNwcAppbmRleCA3NzI2MTNmNzE3OGU1OGM1Y2RkMjUwOTU4ZDEzMzJiODZlZTE3NDA3
Li5kYWM5NTMxNDYyYWQwYWQyN2YwNmRmNjYzMjJhMGM2OTdiOWM3YjMwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1NoYWRvd1Jvb3QuY3BwCkBAIC0xMzcsMTggKzEzNyw2IEBAIFBhc3NSZWZQdHI8Tm9kZT4gU2hh
ZG93Um9vdDo6Y2xvbmVOb2RlKGJvb2wpCiAgICAgcmV0dXJuIDA7CiB9CiAKLVN0cmluZyBTaGFk
b3dSb290Ojppbm5lckhUTUwoKSBjb25zdAotewotICAgIHJldHVybiBjcmVhdGVNYXJrdXAodGhp
cywgQ2hpbGRyZW5Pbmx5KTsKLX0KLQotdm9pZCBTaGFkb3dSb290OjpzZXRJbm5lckhUTUwoY29u
c3QgU3RyaW5nJiBtYXJrdXAsIEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIFJlZlB0cjxEb2N1
bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50RnJvbVNvdXJjZShtYXJrdXAs
IGhvc3QoKSwgZWMpOwotICAgIGlmIChmcmFnbWVudCkKLSAgICAgICAgcmVwbGFjZUNoaWxkcmVu
V2l0aEZyYWdtZW50KHRoaXMsIGZyYWdtZW50LnJlbGVhc2UoKSwgZWMpOwotfQotCiBET01TZWxl
Y3Rpb24qIFNoYWRvd1Jvb3Q6OnNlbGVjdGlvbigpCiB7CiAgICAgaWYgKGRvY3VtZW50KCkgJiYg
ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
U2hhZG93Um9vdC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaAppbmRleCA2OGJj
NDdhZjZmYzIxNTg0ZmQ0YjgyZDA0YjllYjZlNTdhODBmYzE4Li4wZDgyMjNiOGIwNTIwMmJiNjM4
MDhiZjQ5MzBlYmU4YjExOWQwMGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hh
ZG93Um9vdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgKQEAgLTczLDkg
KzczLDYgQEAgcHVibGljOgogICAgIEVsZW1lbnQqIGhvc3QoKSBjb25zdCB7IHJldHVybiBzaGFk
b3dIb3N0KCk7IH0KICAgICBFbGVtZW50U2hhZG93KiBvd25lcigpIGNvbnN0OwogCi0gICAgU3Ry
aW5nIGlubmVySFRNTCgpIGNvbnN0OwotICAgIHZvaWQgc2V0SW5uZXJIVE1MKGNvbnN0IFN0cmlu
ZyYsIEV4Y2VwdGlvbkNvZGUmKTsKLQogICAgIEVsZW1lbnQqIGFjdGl2ZUVsZW1lbnQoKSBjb25z
dDsKIAogICAgIERPTVNlbGVjdGlvbiogc2VsZWN0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2hhZG93Um9vdC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9v
dC5pZGwKaW5kZXggNWVlNTY2MzMyOWY2YTc2MDZhNDY0MTUxNTA0MTZlYzA4MmU3MDBhMi4uNjVl
MTFkN2Y2Zjk2MGI3Yzc3NjIxNTI4ZjI0ZDQ4NmNiOGI0YzM4ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFk
b3dSb290LmlkbApAQCAtMzYsOSArMzYsNiBAQCBtb2R1bGUgY29yZSB7CiAgICAgICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBFbGVtZW50IGFjdGl2ZUVsZW1lbnQ7CiAgICAgICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBET01TZWxlY3Rpb24gc2VsZWN0aW9uOwogCi0gICAgICAgIGF0dHJpYnV0ZSBbVHJl
YXROdWxsQXM9TnVsbFN0cmluZ10gRE9NU3RyaW5nIGlubmVySFRNTAotICAgICAgICAgICAgc2V0
dGVyIHJhaXNlcyhET01FeGNlcHRpb24pOwotCiAgICAgICAgIEVsZW1lbnQgZ2V0RWxlbWVudEJ5
SWQoaW4gW09wdGlvbmFsPURlZmF1bHRJc1VuZGVmaW5lZF0gRE9NU3RyaW5nIGVsZW1lbnRJZCk7
CiAgICAgICAgIE5vZGVMaXN0IGdldEVsZW1lbnRzQnlDbGFzc05hbWUoaW4gW09wdGlvbmFsPURl
ZmF1bHRJc1VuZGVmaW5lZF0gRE9NU3RyaW5nIGNsYXNzTmFtZSk7CiAgICAgICAgIE5vZGVMaXN0
IGdldEVsZW1lbnRzQnlUYWdOYW1lKGluIFtPcHRpb25hbD1EZWZhdWx0SXNVbmRlZmluZWRdIERP
TVN0cmluZyB0YWdOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFy
a3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAppbmRleCBiYjQ5YjM3
MmY0YjNiYjUyYjY3ZGRkNDY0ZjBlNDlhZjM0NzJlOTUyLi5hOWVlNDhiNTc4NDkwYTBmYTg0MmM0
OWM1ZmNhZGZiNDQ0ZWJjNWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21h
cmt1cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCkBAIC05OTIs
OSArOTkyLDggQEAgU3RyaW5nIHVybFRvTWFya3VwKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiB0aXRsZSkKICAgICByZXR1cm4gbWFya3VwLnRvU3RyaW5nKCk7CiB9CiAKLVBhc3NSZWZQ
dHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGcm9tU291cmNlKGNvbnN0IFN0cmlu
ZyYgbWFya3VwLCBFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgRXhjZXB0aW9uQ29kZSYgZWMpCitQ
YXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJvbVNvdXJjZShjb25z
dCBTdHJpbmcmIG1hcmt1cCwgRG9jdW1lbnQqIGRvY3VtZW50LCBFbGVtZW50KiBjb250ZXh0RWxl
bWVudCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gY29u
dGV4dEVsZW1lbnQtPmRvY3VtZW50KCk7CiAgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZy
YWdtZW50ID0gRG9jdW1lbnRGcmFnbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKIAogICAgIGlmIChk
b2N1bWVudC0+aXNIVE1MRG9jdW1lbnQoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9tYXJrdXAuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmgKaW5kZXgg
OTE4YWU5YjEzZTkxY2E3OGI4YjdhZmE0ZGNmN2Q3NmVkNjg2MzkwZC4uNTRlZDhjMDFjZWNlNzY2
MTlhNzZhNDM1NzI3NTZiMDZlZmQ2ZDdiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9tYXJrdXAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5oCkBAIC01
MCw3ICs1MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBQYXNzUmVmUHRyPERvY3VtZW50
RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cChEb2N1bWVudCosIGNvbnN0IFN0cmlu
ZyYgbWFya3VwLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEZyYWdtZW50U2NyaXB0aW5nUGVybWlz
c2lvbiA9IEZyYWdtZW50U2NyaXB0aW5nQWxsb3dlZCk7CiAgICAgUGFzc1JlZlB0cjxEb2N1bWVu
dEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZyb21NYXJrdXBXaXRoQ29udGV4dChEb2N1bWVudCos
IGNvbnN0IFN0cmluZyYgbWFya3VwLCB1bnNpZ25lZCBmcmFnbWVudFN0YXJ0LCB1bnNpZ25lZCBm
cmFnbWVudEVuZCwgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBGcmFnbWVudFNjcmlwdGluZ1Blcm1p
c3Npb24pOwogICAgIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRG
cm9tTm9kZXMoRG9jdW1lbnQqLCBjb25zdCBWZWN0b3I8Tm9kZSo+Jik7Ci0gICAgUGFzc1JlZlB0
cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZyb21Tb3VyY2UoY29uc3QgU3RyaW5n
JiwgRWxlbWVudCosIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNzUmVmUHRyPERvY3VtZW50RnJh
Z21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJvbVNvdXJjZShjb25zdCBTdHJpbmcmLCBEb2N1bWVudCos
IEVsZW1lbnQqLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICBib29sIGlzUGxhaW5UZXh0TWFya3Vw
KE5vZGUgKm5vZGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCmluZGV4IDVmOGIy
MjNkYWFmODEwNmFlYWU5NWQ2ZGExYTU4YmQwNmM3ODIwYzUuLmNjMzcwMWY4OWQ3MTFjYTE0NDU3
NWExMmFiNjI3ZmU2N2QxZTc0NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCkBA
IC0zNDQsNyArMzQ0LDcgQEAgU3RyaW5nIEhUTUxFbGVtZW50OjpvdXRlckhUTUwoKSBjb25zdAog
CiB2b2lkIEhUTUxFbGVtZW50OjpzZXRJbm5lckhUTUwoY29uc3QgU3RyaW5nJiBodG1sLCBFeGNl
cHRpb25Db2RlJiBlYykKIHsKLSAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQg
PSBjcmVhdGVGcmFnbWVudEZyb21Tb3VyY2UoaHRtbCwgdGhpcywgZWMpOworICAgIFJlZlB0cjxE
b2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50RnJvbVNvdXJjZShodG1s
LCBkb2N1bWVudCgpLCB0aGlzLCBlYyk7CiAgICAgaWYgKGZyYWdtZW50KQogICAgICAgICByZXBs
YWNlQ2hpbGRyZW5XaXRoRnJhZ21lbnQodGhpcywgZnJhZ21lbnQucmVsZWFzZSgpLCBlYyk7CiB9
CkBAIC0zNzYsNyArMzc2LDcgQEAgdm9pZCBIVE1MRWxlbWVudDo6c2V0T3V0ZXJIVE1MKGNvbnN0
IFN0cmluZyYgaHRtbCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgUmVmUHRyPE5vZGU+IHByZXYg
PSBwcmV2aW91c1NpYmxpbmcoKTsKICAgICBSZWZQdHI8Tm9kZT4gbmV4dCA9IG5leHRTaWJsaW5n
KCk7CiAKLSAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSBjcmVhdGVGcmFn
bWVudEZyb21Tb3VyY2UoaHRtbCwgcGFyZW50LmdldCgpLCBlYyk7CisgICAgUmVmUHRyPERvY3Vt
ZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRGcm9tU291cmNlKGh0bWwsIGRv
Y3VtZW50KCksIHBhcmVudC5nZXQoKSwgZWMpOwogICAgIGlmIChlYykKICAgICAgICAgcmV0dXJu
OwogICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9j
dW1lbnRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50
UGFyc2VyLmNwcAppbmRleCA3YTA2YjQyMzk2OTEzZDlkOTZkNGU1NzFkNWIyMzNhOTIzNzA0Mjk1
Li5kYzg2NGJmZjllYTNhN2NkNGNjMTJiNGY5YzVhNTM5ZjE0NWQ2Y2Q0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKQEAgLTI1MCw2
ICsyNTAsOCBAQCB2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6cHVtcFRva2VuaXplcihTeW5jaHJv
bm91c01vZGUgbW9kZSkKICAgICBBU1NFUlQoIWlzU2NoZWR1bGVkRm9yUmVzdW1lKCkpOwogICAg
IC8vIEFTU0VSVCB0aGF0IHRoaXMgb2JqZWN0IGlzIGJvdGggYXR0YWNoZWQgdG8gdGhlIERvY3Vt
ZW50IGFuZCBwcm90ZWN0ZWQuCiAgICAgQVNTRVJUKHJlZkNvdW50KCkgPj0gMik7CisgICAgLy8g
QVNTRVJUIHRoYXQgcnVubmluZyBxdWV1ZWRBdG9taWNUb2tlbnMgaGFzbid0IGNhdXNlZCByZS1l
bnRyeS4gUGVuZGluZyB0b2tlbnMgc2hvdWxkIG5vdCBiZSBhYmxlIHRvIGNvbnRhaW4gc2NyaXB0
LgorICAgIEFTU0VSVChtX3F1ZXVlZEF0b21pY1Rva2Vucy5pc0VtcHR5KCkpOwogCiAgICAgUHVt
cFNlc3Npb24gc2Vzc2lvbihtX3B1bXBTZXNzaW9uTmVzdGluZ0xldmVsKTsKIApAQCAtMjc1LDYg
KzI3NywyMyBAQCB2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6cHVtcFRva2VuaXplcihTeW5jaHJv
bm91c01vZGUgbW9kZSkKICAgICAgICAgICAgIG1feHNzQXVkaXRvci5maWx0ZXJUb2tlbihtX3Rv
a2VuKTsKICAgICAgICAgfQogCisgICAgICAgIGlmICghbV90cmVlQnVpbGRlci0+Y2FuQ29udGlu
dWUobV90b2tlbikpIHsKKyAgICAgICAgICAgIC8vIFRyZWUgY29uc3RydWN0aW9uIHNob3VsZCBv
bmx5IGJlIGJsb2NrZWQgYnkgd2FpdGluZyBvbiB0aGUgbmV4dAorICAgICAgICAgICAgLy8gc3Rh
cnQgdGFnLgorICAgICAgICAgICAgQVNTRVJUKG1fdG9rZW4udHlwZSgpICE9IEhUTUxUb2tlblR5
cGVzOjpTdGFydFRhZworICAgICAgICAgICAgICAgICAgICYmIG1fdG9rZW4udHlwZSgpICE9IEhU
TUxUb2tlblR5cGVzOjpFbmRPZkZpbGUpOworICAgICAgICAgICAgbV9xdWV1ZWRBdG9taWNUb2tl
bnMuYXBwZW5kKEF0b21pY0hUTUxUb2tlbjo6Y3JlYXRlKG1fdG9rZW4pKTsKKyAgICAgICAgICAg
IG1fdG9rZW4uY2xlYXIoKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAg
ICAgICAgaWYgKCFtX3F1ZXVlZEF0b21pY1Rva2Vucy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAg
IFZlY3RvcjxPd25QdHI8QXRvbWljSFRNTFRva2VuPiA+IHF1ZXVlZFRva2VuczsKKyAgICAgICAg
ICAgIHF1ZXVlZFRva2Vucy5zd2FwKG1fcXVldWVkQXRvbWljVG9rZW5zKTsKKyAgICAgICAgICAg
IGZvciAoVmVjdG9yPE93blB0cjxBdG9taWNIVE1MVG9rZW4+ID46OmNvbnN0X2l0ZXJhdG9yIGl0
ID0gcXVldWVkVG9rZW5zLmJlZ2luKCk7IGl0ICE9IHF1ZXVlZFRva2Vucy5lbmQoKTsgKytpdCkK
KyAgICAgICAgICAgICAgICBtX3RyZWVCdWlsZGVyLT5jb25zdHJ1Y3RUcmVlRnJvbUF0b21pY1Rv
a2VuKCooaXQtPmdldCgpKSk7CisgICAgICAgIH0KKwogICAgICAgICBtX3RyZWVCdWlsZGVyLT5j
b25zdHJ1Y3RUcmVlRnJvbVRva2VuKG1fdG9rZW4pOwogICAgICAgICBBU1NFUlQobV90b2tlbi5p
c1VuaW5pdGlhbGl6ZWQoKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MRG9jdW1lbnRQYXJzZXIuaAppbmRleCBlZWU4ODJjNzI0ZTNlM2IwZDZkZDc0ZmJkNmE4
NmQ1Y2I3MjJiYWM0Li4zNmNjYmE1MDUwZDVmNDBlYmNjZTQ3Y2RjZTZhMDNlOTFkMmQyYmZjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuaApA
QCAtNzEsNyArNzEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXN1bWVQYXJzaW5nQWZ0ZXJZaWVs
ZCgpOwogCiAgICAgc3RhdGljIHZvaWQgcGFyc2VEb2N1bWVudEZyYWdtZW50KGNvbnN0IFN0cmlu
ZyYsIERvY3VtZW50RnJhZ21lbnQqLCBFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgRnJhZ21lbnRT
Y3JpcHRpbmdQZXJtaXNzaW9uID0gRnJhZ21lbnRTY3JpcHRpbmdBbGxvd2VkKTsKLSAgICAKKwog
ICAgIHN0YXRpYyBib29sIHVzZVByZUhUTUw1UGFyc2VyUXVpcmtzKERvY3VtZW50Kik7CiAgICAg
c3RhdGljIHVuc2lnbmVkIG1heGltdW1ET01UcmVlRGVwdGgoRG9jdW1lbnQqKTsKIApAQCAtMTQ1
LDYgKzE0NSw3IEBAIHByaXZhdGU6CiAgICAgLy8gV2UgaG9sZCBtX3Rva2VuIGhlcmUgYmVjYXVz
ZSBpdCBtaWdodCBiZSBwYXJ0aWFsbHkgY29tcGxldGUuCiAgICAgSFRNTFRva2VuIG1fdG9rZW47
CiAKKyAgICBWZWN0b3I8T3duUHRyPEF0b21pY0hUTUxUb2tlbj4gPiBtX3F1ZXVlZEF0b21pY1Rv
a2VuczsKICAgICBPd25QdHI8SFRNTFRva2VuaXplcj4gbV90b2tlbml6ZXI7CiAgICAgT3duUHRy
PEhUTUxTY3JpcHRSdW5uZXI+IG1fc2NyaXB0UnVubmVyOwogICAgIE93blB0cjxIVE1MVHJlZUJ1
aWxkZXI+IG1fdHJlZUJ1aWxkZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MVG9rZW4uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbi5o
CmluZGV4IDRhY2ZlYzlmODc1Zjc2OTk1YmMwYWVhZmU2N2I3YmNhMjYwMGJlYTMuLmQ5ODk5Yjk2
NWM2MjM1ZWExNmZlNzFkNzUzZWRmNThkM2Q1Mjg2MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxUb2tlbi5oCkBAIC04NCw3ICs4NCwxMiBAQCBwdWJsaWM6CiBjbGFzcyBBdG9taWNI
VE1MVG9rZW4gOiBwdWJsaWMgQXRvbWljTWFya3VwVG9rZW5CYXNlPEhUTUxUb2tlbj4gewogICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKEF0b21pY0hUTUxUb2tlbik7CiBwdWJsaWM6Ci0gICAgQXRv
bWljSFRNTFRva2VuKEhUTUxUb2tlbiYgdG9rZW4pIDogQXRvbWljTWFya3VwVG9rZW5CYXNlPEhU
TUxUb2tlbj4oJnRva2VuKSB7IH0KKyAgICBzdGF0aWMgUGFzc093blB0cjxBdG9taWNIVE1MVG9r
ZW4+IGNyZWF0ZShIVE1MVG9rZW4mIHRva2VuKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UHRyKG5ldyBBdG9taWNIVE1MVG9rZW4odG9rZW4sIEludGVybmFsaXplQ2hhcmFjdGVycykpOwor
ICAgIH0KKworICAgIEF0b21pY0hUTUxUb2tlbihIVE1MVG9rZW4mIHRva2VuLCBDaGFyYWN0ZXJT
dG9yYWdlTW9kZSBjaGFyYWN0ZXJTdG9yYWdlID0gUmVmZXJlbmNlRXh0ZXJuYWxDaGFyYWN0ZXJz
KSA6IEF0b21pY01hcmt1cFRva2VuQmFzZTxIVE1MVG9rZW4+KCZ0b2tlbiwgY2hhcmFjdGVyU3Rv
cmFnZSkgeyB9CiAKICAgICBBdG9taWNIVE1MVG9rZW4oSFRNTFRva2VuVHlwZXM6OlR5cGUgdHlw
ZSwgQXRvbWljU3RyaW5nIG5hbWUsIGNvbnN0IFZlY3RvcjxBdHRyaWJ1dGU+JiBhdHRyaWJ1dGVz
ID0gVmVjdG9yPEF0dHJpYnV0ZT4oKSkKICAgICAgICAgOiBBdG9taWNNYXJrdXBUb2tlbkJhc2U8
SFRNTFRva2VuPih0eXBlLCBuYW1lLCBhdHRyaWJ1dGVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAKaW5kZXggNWQ1MzQyYmIwMDRlNmNmNDQ5Yzk4
NmUyNDQ4ZDU0NDY2N2Y4NmZhNi4uNDNmN2FkNWY3MmI1MTE2YTlhMDM0Y2NiMjRjMjg5YWZmMTdi
NDFjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWls
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIu
Y3BwCkBAIC0yNDgsOCArMjQ4LDggQEAgY2xhc3MgSFRNTFRyZWVCdWlsZGVyOjpFeHRlcm5hbENo
YXJhY3RlclRva2VuQnVmZmVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShFeHRlcm5hbENo
YXJhY3RlclRva2VuQnVmZmVyKTsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBFeHRlcm5hbENoYXJh
Y3RlclRva2VuQnVmZmVyKEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCi0gICAgICAgIDogbV9jdXJy
ZW50KHRva2VuLmNoYXJhY3RlcnMoKS5kYXRhKCkpCi0gICAgICAgICwgbV9lbmQobV9jdXJyZW50
ICsgdG9rZW4uY2hhcmFjdGVycygpLnNpemUoKSkKKyAgICAgICAgOiBtX2N1cnJlbnQodG9rZW4u
Y2hhcmFjdGVyRGF0YSgpKQorICAgICAgICAsIG1fZW5kKG1fY3VycmVudCArIHRva2VuLmNoYXJh
Y3RlckRhdGFTaXplKCkpCiAgICAgewogICAgICAgICBBU1NFUlQoIWlzRW1wdHkoKSk7CiAgICAg
fQpAQCAtMzY4LDcgKzM2OCw3IEBAIEhUTUxUcmVlQnVpbGRlcjo6SFRNTFRyZWVCdWlsZGVyKEhU
TUxEb2N1bWVudFBhcnNlciogcGFyc2VyLCBIVE1MRG9jdW1lbnQqIGRvY3VtCiAvLyBtaW5pbWl6
ZSBjb2RlIGR1cGxpY2F0aW9uIGJldHdlZW4gdGhlc2UgY29uc3RydWN0b3JzLgogSFRNTFRyZWVC
dWlsZGVyOjpIVE1MVHJlZUJ1aWxkZXIoSFRNTERvY3VtZW50UGFyc2VyKiBwYXJzZXIsIERvY3Vt
ZW50RnJhZ21lbnQqIGZyYWdtZW50LCBFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgRnJhZ21lbnRT
Y3JpcHRpbmdQZXJtaXNzaW9uIHNjcmlwdGluZ1Blcm1pc3Npb24sIGJvb2wgdXNlUHJlSFRNTDVQ
YXJzZXJRdWlya3MsIHVuc2lnbmVkIG1heGltdW1ET01UcmVlRGVwdGgpCiAgICAgOiBtX2ZyYW1l
c2V0T2sodHJ1ZSkKLSAgICAsIG1fZnJhZ21lbnRDb250ZXh0KGZyYWdtZW50LCBjb250ZXh0RWxl
bWVudCwgc2NyaXB0aW5nUGVybWlzc2lvbikKKyAgICAsIG1fZnJhZ21lbnRDb250ZXh0KGZyYWdt
ZW50LCBjb250ZXh0RWxlbWVudCA/IGNvbnRleHRFbGVtZW50LT50YWdRTmFtZSgpIDogbnVsbFFO
YW1lKCksIHNjcmlwdGluZ1Blcm1pc3Npb24pCiAgICAgLCBtX2RvY3VtZW50KGZyYWdtZW50LT5k
b2N1bWVudCgpKQogICAgICwgbV90cmVlKGZyYWdtZW50LCBzY3JpcHRpbmdQZXJtaXNzaW9uLCBt
YXhpbXVtRE9NVHJlZURlcHRoKQogICAgICwgbV9yZXBvcnRFcnJvcnMoZmFsc2UpIC8vIEZJWE1F
OiBXaHkgbm90IHJlcG9ydCBlcnJvcnMgaW4gZnJhZ21lbnRzPwpAQCAtMzgxLDE3ICszODEsMTQg
QEAgSFRNTFRyZWVCdWlsZGVyOjpIVE1MVHJlZUJ1aWxkZXIoSFRNTERvY3VtZW50UGFyc2VyKiBw
YXJzZXIsIERvY3VtZW50RnJhZ21lbnQqIGYKICAgICAsIG1fbGFzdFNjcmlwdEVsZW1lbnRTdGFy
dFBvc2l0aW9uKFRleHRQb3NpdGlvbjo6YmVsb3dSYW5nZVBvc2l0aW9uKCkpCiAgICAgLCBtX3Vz
ZVByZUhUTUw1UGFyc2VyUXVpcmtzKHVzZVByZUhUTUw1UGFyc2VyUXVpcmtzKQogewotICAgIC8v
IEZJWE1FOiBUaGlzIGFzc2VydGlvbiB3aWxsIGJlY29tZSBpbnZhbGlkIGlmIDxodHRwOi8vd2Vi
a2l0Lm9yZy9iLzYwMzE2PiBpcyBmaXhlZC4KLSAgICBBU1NFUlQoY29udGV4dEVsZW1lbnQpOwot
ICAgIGlmIChjb250ZXh0RWxlbWVudCkgewotICAgICAgICAvLyBTdGVwcyA0LjItNC42IG9mIHRo
ZSBIVE1MNSBGcmFnbWVudCBDYXNlIHBhcnNpbmcgYWxnb3JpdGhtOgotICAgICAgICAvLyBodHRw
Oi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS90
aGUtZW5kLmh0bWwjZnJhZ21lbnQtY2FzZQotICAgICAgICAvLyBGb3IgZWZmaWNpZW5jeSwgd2Ug
c2tpcCBzdGVwIDQuMiAoIkxldCByb290IGJlIGEgbmV3IGh0bWwgZWxlbWVudCB3aXRoIG5vIGF0
dHJpYnV0ZXMiKQotICAgICAgICAvLyBhbmQgaW5zdGVhZCB1c2UgdGhlIERvY3VtZW50RnJhZ21l
bnQgYXMgYSByb290IG5vZGUuCi0gICAgICAgIG1fdHJlZS5vcGVuRWxlbWVudHMoKS0+cHVzaFJv
b3ROb2RlKGZyYWdtZW50KTsKLSAgICAgICAgcmVzZXRJbnNlcnRpb25Nb2RlQXBwcm9wcmlhdGVs
eSgpOworICAgIC8vIFN0ZXBzIDQuMi00LjYgb2YgdGhlIEhUTUw1IEZyYWdtZW50IENhc2UgcGFy
c2luZyBhbGdvcml0aG06CisgICAgLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1h
cHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2UvdGhlLWVuZC5odG1sI2ZyYWdtZW50LWNhc2UKKyAg
ICAvLyBGb3IgZWZmaWNpZW5jeSwgd2Ugc2tpcCBzdGVwIDQuMiAoIkxldCByb290IGJlIGEgbmV3
IGh0bWwgZWxlbWVudCB3aXRoIG5vIGF0dHJpYnV0ZXMiKQorICAgIC8vIGFuZCBpbnN0ZWFkIHVz
ZSB0aGUgRG9jdW1lbnRGcmFnbWVudCBhcyBhIHJvb3Qgbm9kZS4KKyAgICBtX3RyZWUub3BlbkVs
ZW1lbnRzKCktPnB1c2hSb290Tm9kZShmcmFnbWVudCk7CisgICAgcmVzZXRJbnNlcnRpb25Nb2Rl
QXBwcm9wcmlhdGVseSgpOworICAgIGlmIChjb250ZXh0RWxlbWVudCkKICAgICAgICAgbV90cmVl
LnNldEZvcm0oY2xvc2VzdEZvcm1BbmNlc3Rvcihjb250ZXh0RWxlbWVudCkpOwotICAgIH0KIH0K
IAogSFRNTFRyZWVCdWlsZGVyOjp+SFRNTFRyZWVCdWlsZGVyKCkKQEAgLTQxMCwxNCArNDA3LDE0
IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpkZXRhY2goKQogCiBIVE1MVHJlZUJ1aWxkZXI6OkZy
YWdtZW50UGFyc2luZ0NvbnRleHQ6OkZyYWdtZW50UGFyc2luZ0NvbnRleHQoKQogICAgIDogbV9m
cmFnbWVudCgwKQotICAgICwgbV9jb250ZXh0RWxlbWVudCgwKQorICAgICwgbV9jb250ZXh0VGFn
KG51bGxRTmFtZSgpKQogICAgICwgbV9zY3JpcHRpbmdQZXJtaXNzaW9uKEZyYWdtZW50U2NyaXB0
aW5nQWxsb3dlZCkKIHsKIH0KIAotSFRNTFRyZWVCdWlsZGVyOjpGcmFnbWVudFBhcnNpbmdDb250
ZXh0OjpGcmFnbWVudFBhcnNpbmdDb250ZXh0KERvY3VtZW50RnJhZ21lbnQqIGZyYWdtZW50LCBF
bGVtZW50KiBjb250ZXh0RWxlbWVudCwgRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uIHNjcmlw
dGluZ1Blcm1pc3Npb24pCitIVE1MVHJlZUJ1aWxkZXI6OkZyYWdtZW50UGFyc2luZ0NvbnRleHQ6
OkZyYWdtZW50UGFyc2luZ0NvbnRleHQoRG9jdW1lbnRGcmFnbWVudCogZnJhZ21lbnQsIGNvbnN0
IFF1YWxpZmllZE5hbWUmIGNvbnRleHRUYWcsIEZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbiBz
Y3JpcHRpbmdQZXJtaXNzaW9uKQogICAgIDogbV9mcmFnbWVudChmcmFnbWVudCkKLSAgICAsIG1f
Y29udGV4dEVsZW1lbnQoY29udGV4dEVsZW1lbnQpCisgICAgLCBtX2NvbnRleHRUYWcoY29udGV4
dFRhZykKICAgICAsIG1fc2NyaXB0aW5nUGVybWlzc2lvbihzY3JpcHRpbmdQZXJtaXNzaW9uKQog
ewogICAgIEFTU0VSVCghZnJhZ21lbnQtPmhhc0NoaWxkTm9kZXMoKSk7CkBAIC00NDcsNyArNDQ0
LDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OmNvbnN0cnVjdFRyZWVGcm9tVG9rZW4oSFRNTFRv
a2VuJiByYXdUb2tlbikKICAgICAvLyBzeW5jaHJvbm91c2x5IHJlLWVudGVycyB0aGUgcGFyc2Vy
LiBXZSBkb24ndCBjbGVhciB0aGUgdG9rZW4gaW1tZWRhdGVseQogICAgIC8vIGZvciBDaGFyYWN0
ZXIgdG9rZW5zIGJlY2F1c2UgdGhlIEF0b21pY0hUTUxUb2tlbiBhdm9pZHMgY29weWluZyB0aGUK
ICAgICAvLyBjaGFyYWN0ZXJzIGJ5IGtlZXBpbmcgYSBwb2ludGVyIHRvIHRoZSB1bmRlcmx5aW5n
IGJ1ZmZlciBpbiB0aGUKLSAgICAvLyBIVE1MVG9rZW4uIEZvcnR1YW50ZWx5LCBDaGFyYWN0ZXIg
dG9rZW5zIGNhbid0IGNhdXNlIHVzZSB0byByZS1lbnRlcgorICAgIC8vIEhUTUxUb2tlbi4gRm9y
dHVuYXRlbHksIENoYXJhY3RlciB0b2tlbnMgY2FuJ3QgY2F1c2UgdXNlIHRvIHJlLWVudGVyCiAg
ICAgLy8gdGhlIHBhcnNlci4KICAgICAvLwogICAgIC8vIEZJWE1FOiBTdG9wIGNsZWFyaW5nIHRo
ZSByYXdUb2tlbiBvbmNlIHdlIHN0YXJ0IHJ1bm5pbmcgdGhlIHBhcnNlciBvZmYKQEAgLTE2MzAs
NiArMTYyNyw0NyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6Y2FsbFRoZUFkb3B0aW9uQWdlbmN5
KEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiAgICAgfQogfQogCisvLyBGSVhNRTogUmVmZXJlbmNl
IHRvIERPTTQgc3BlYyBkZXNjcmliaW5nIHRoZSBmb2xsb3dpbmc6IFRoZSBpbXBsaWVkIGNvbnRl
eHQgZWxlbWVudCBvZgorLy8gRG9jdW1lbnRGcmFnbWVudC5pbm5lckhUTUwgaXMgYmFzZWQgb24g
dGhlIGlkZW50aXR5IG9mIHRoZSB0YWdOYW1lIG9mIHRoZSBmaXJzdCBzdGFydFRhZyB0b2tlbiBl
bmNvdW50ZXJlZC4KKy8vIEZJWE1FOiBFbGVtZW50LmlubmVySFRNTCBkb2Vzbid0IHdvcmsgZm9y
IFhNTCBlbGVtZW50cy4gV2hlbiBpdCBpcyBmaXhlZCwgdGhpcyBuZWVkcyB0byBpZGVuaXRpZnkK
Ky8vIHRhZ05hbWVzIHBhcnRpY3VsYXIgdG8gZWl0aGVyIG5hbWVzcGFjZSBhbmQgcGljayBhbiBh
cHByb3ByaWF0ZSBpbXBsaWVkIGNvbnRleHQgZWxlbWVudC4KK3N0YXRpYyBjb25zdCBRdWFsaWZp
ZWROYW1lJiBnZXRJbXBsaWVkQ29udGV4dFRhZyhjb25zdCBBdG9taWNTdHJpbmcmIHRhZ05hbWUp
Cit7CisgICAgaWYgKGlzVGFibGVCb2R5Q29udGV4dFRhZyh0YWdOYW1lKQorICAgICAgICB8fCB0
YWdOYW1lID09IGNhcHRpb25UYWcKKyAgICAgICAgfHwgdGFnTmFtZSA9PSBjb2xncm91cFRhZykg
eworICAgICAgICByZXR1cm4gdGFibGVUYWc7CisgICAgfQorICAgIGlmICh0YWdOYW1lID09IHRy
VGFnKQorICAgICAgICByZXR1cm4gdGJvZHlUYWc7CisgICAgaWYgKHRhZ05hbWUgPT0gY29sVGFn
KQorICAgICAgICByZXR1cm4gY29sZ3JvdXBUYWc7CisgICAgaWYgKGlzVGFibGVDZWxsQ29udGV4
dFRhZyh0YWdOYW1lKSkKKyAgICAgICAgcmV0dXJuIHRyVGFnOworICAgIGlmICh0YWdOYW1lID09
IGhlYWRUYWcgfHwgdGFnTmFtZSA9PSBib2R5VGFnKQorICAgICAgICByZXR1cm4gaHRtbFRhZzsK
KyAgICBpZiAodGFnTmFtZSA9PSBycFRhZyB8fCB0YWdOYW1lID09IHJ0VGFnKQorICAgICAgICBy
ZXR1cm4gcnVieVRhZzsKKworICAgIHJldHVybiBib2R5VGFnOworfQorCitib29sIEhUTUxUcmVl
QnVpbGRlcjo6aW1wbGllZENvbnRleHRUYWcoSFRNTFRva2VuJiB0b2tlbikKK3sKKyAgICBBU1NF
UlQobV9mcmFnbWVudENvbnRleHQuZnJhZ21lbnQoKSAmJiBtX2ZyYWdtZW50Q29udGV4dC5jb250
ZXh0VGFnKCkgPT0gbnVsbFFOYW1lKCkpOworICAgIGlmICh0b2tlbi50eXBlKCkgPT0gSFRNTFRv
a2VuVHlwZXM6OkVuZE9mRmlsZSkgeworICAgICAgICBtX2ZyYWdtZW50Q29udGV4dC5zZXRDb250
ZXh0VGFnKGJvZHlUYWcpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBpZiAo
dG9rZW4udHlwZSgpICE9IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZykKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgbV9mcmFnbWVudENvbnRleHQuc2V0Q29udGV4dFRhZyhnZXRJbXBsaWVk
Q29udGV4dFRhZyhBdG9taWNTdHJpbmcodG9rZW4ubmFtZSgpLmRhdGEoKSwgdG9rZW4ubmFtZSgp
LnNpemUoKSkpKTsKKyAgICByZXNldEluc2VydGlvbk1vZGVBcHByb3ByaWF0ZWx5KCk7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpyZXNldEluc2VydGlvbk1v
ZGVBcHByb3ByaWF0ZWx5KCkKIHsKICAgICAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mv
d2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS9wYXJzaW5nLmh0bWwjcmVzZXQtdGhlLWlu
c2VydGlvbi1tb2RlLWFwcHJvcHJpYXRlbHkKQEAgLTE2MzcsNDAgKzE2NzUsNDAgQEAgdm9pZCBI
VE1MVHJlZUJ1aWxkZXI6OnJlc2V0SW5zZXJ0aW9uTW9kZUFwcHJvcHJpYXRlbHkoKQogICAgIEhU
TUxFbGVtZW50U3RhY2s6OkVsZW1lbnRSZWNvcmQqIG5vZGVSZWNvcmQgPSBtX3RyZWUub3BlbkVs
ZW1lbnRzKCktPnRvcFJlY29yZCgpOwogICAgIHdoaWxlICgxKSB7CiAgICAgICAgIENvbnRhaW5l
ck5vZGUqIG5vZGUgPSBub2RlUmVjb3JkLT5ub2RlKCk7CisgICAgICAgIGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUgPSBub2RlID09IG1fdHJlZS5vcGVuRWxlbWVudHMoKS0+cm9vdE5vZGUo
KSA/IG1fZnJhZ21lbnRDb250ZXh0LmNvbnRleHRUYWcoKSA6IG5vZGVSZWNvcmQtPmVsZW1lbnQo
KS0+dGFnUU5hbWUoKTsKICAgICAgICAgaWYgKG5vZGUgPT0gbV90cmVlLm9wZW5FbGVtZW50cygp
LT5yb290Tm9kZSgpKSB7CiAgICAgICAgICAgICBBU1NFUlQoaXNQYXJzaW5nRnJhZ21lbnQoKSk7
CiAgICAgICAgICAgICBsYXN0ID0gdHJ1ZTsKLSAgICAgICAgICAgIG5vZGUgPSBtX2ZyYWdtZW50
Q29udGV4dC5jb250ZXh0RWxlbWVudCgpOwogICAgICAgICB9Ci0gICAgICAgIGlmIChub2RlLT5o
YXNUYWdOYW1lKHNlbGVjdFRhZykpIHsKKyAgICAgICAgaWYgKHRhZ05hbWUubWF0Y2hlcyhzZWxl
Y3RUYWcpKSB7CiAgICAgICAgICAgICBBU1NFUlQoaXNQYXJzaW5nRnJhZ21lbnQoKSk7CiAgICAg
ICAgICAgICByZXR1cm4gc2V0SW5zZXJ0aW9uTW9kZShJblNlbGVjdE1vZGUpOwogICAgICAgICB9
Ci0gICAgICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKHRkVGFnKSB8fCBub2RlLT5oYXNUYWdOYW1l
KHRoVGFnKSkKKyAgICAgICAgaWYgKHRhZ05hbWUubWF0Y2hlcyh0ZFRhZykgfHwgdGFnTmFtZS5t
YXRjaGVzKHRoVGFnKSkKICAgICAgICAgICAgIHJldHVybiBzZXRJbnNlcnRpb25Nb2RlKEluQ2Vs
bE1vZGUpOwotICAgICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZSh0clRhZykpCisgICAgICAgIGlm
ICh0YWdOYW1lLm1hdGNoZXModHJUYWcpKQogICAgICAgICAgICAgcmV0dXJuIHNldEluc2VydGlv
bk1vZGUoSW5Sb3dNb2RlKTsKLSAgICAgICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUodGJvZHlUYWcp
IHx8IG5vZGUtPmhhc1RhZ05hbWUodGhlYWRUYWcpIHx8IG5vZGUtPmhhc1RhZ05hbWUodGZvb3RU
YWcpKQorICAgICAgICBpZiAodGFnTmFtZS5tYXRjaGVzKHRib2R5VGFnKSB8fCB0YWdOYW1lLm1h
dGNoZXModGhlYWRUYWcpIHx8IHRhZ05hbWUubWF0Y2hlcyh0Zm9vdFRhZykpCiAgICAgICAgICAg
ICByZXR1cm4gc2V0SW5zZXJ0aW9uTW9kZShJblRhYmxlQm9keU1vZGUpOwotICAgICAgICBpZiAo
bm9kZS0+aGFzVGFnTmFtZShjYXB0aW9uVGFnKSkKKyAgICAgICAgaWYgKHRhZ05hbWUubWF0Y2hl
cyhjYXB0aW9uVGFnKSkKICAgICAgICAgICAgIHJldHVybiBzZXRJbnNlcnRpb25Nb2RlKEluQ2Fw
dGlvbk1vZGUpOwotICAgICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZShjb2xncm91cFRhZykpIHsK
KyAgICAgICAgaWYgKHRhZ05hbWUubWF0Y2hlcyhjb2xncm91cFRhZykpIHsKICAgICAgICAgICAg
IEFTU0VSVChpc1BhcnNpbmdGcmFnbWVudCgpKTsKICAgICAgICAgICAgIHJldHVybiBzZXRJbnNl
cnRpb25Nb2RlKEluQ29sdW1uR3JvdXBNb2RlKTsKICAgICAgICAgfQotICAgICAgICBpZiAobm9k
ZS0+aGFzVGFnTmFtZSh0YWJsZVRhZykpCisgICAgICAgIGlmICh0YWdOYW1lLm1hdGNoZXModGFi
bGVUYWcpKQogICAgICAgICAgICAgcmV0dXJuIHNldEluc2VydGlvbk1vZGUoSW5UYWJsZU1vZGUp
OwotICAgICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZShoZWFkVGFnKSkgeworICAgICAgICBpZiAo
dGFnTmFtZS5tYXRjaGVzKGhlYWRUYWcpKSB7CiAgICAgICAgICAgICBBU1NFUlQoaXNQYXJzaW5n
RnJhZ21lbnQoKSk7CiAgICAgICAgICAgICByZXR1cm4gc2V0SW5zZXJ0aW9uTW9kZShJbkJvZHlN
b2RlKTsKICAgICAgICAgfQotICAgICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZShib2R5VGFnKSkK
KyAgICAgICAgaWYgKHRhZ05hbWUubWF0Y2hlcyhib2R5VGFnKSkKICAgICAgICAgICAgIHJldHVy
biBzZXRJbnNlcnRpb25Nb2RlKEluQm9keU1vZGUpOwotICAgICAgICBpZiAobm9kZS0+aGFzVGFn
TmFtZShmcmFtZXNldFRhZykpIHsKKyAgICAgICAgaWYgKHRhZ05hbWUubWF0Y2hlcyhmcmFtZXNl
dFRhZykpIHsKICAgICAgICAgICAgIEFTU0VSVChpc1BhcnNpbmdGcmFnbWVudCgpKTsKICAgICAg
ICAgICAgIHJldHVybiBzZXRJbnNlcnRpb25Nb2RlKEluRnJhbWVzZXRNb2RlKTsKICAgICAgICAg
fQotICAgICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZShodG1sVGFnKSkgeworICAgICAgICBpZiAo
dGFnTmFtZS5tYXRjaGVzKGh0bWxUYWcpKSB7CiAgICAgICAgICAgICBBU1NFUlQoaXNQYXJzaW5n
RnJhZ21lbnQoKSk7CiAgICAgICAgICAgICByZXR1cm4gc2V0SW5zZXJ0aW9uTW9kZShCZWZvcmVI
ZWFkTW9kZSk7CiAgICAgICAgIH0KQEAgLTI3ODUsNyArMjgyMyw3IEBAIHZvaWQgSFRNTFRyZWVC
dWlsZGVyOjpwcm9jZXNzVG9rZW5JbkZvcmVpZ25Db250ZW50KEF0b21pY0hUTUxUb2tlbiYgdG9r
ZW4pCiAgICAgICAgIG1fdHJlZS5pbnNlcnRDb21tZW50KHRva2VuKTsKICAgICAgICAgcmV0dXJu
OwogICAgIGNhc2UgSFRNTFRva2VuVHlwZXM6OkNoYXJhY3RlcjogewotICAgICAgICBTdHJpbmcg
Y2hhcmFjdGVycyA9IFN0cmluZyh0b2tlbi5jaGFyYWN0ZXJzKCkuZGF0YSgpLCB0b2tlbi5jaGFy
YWN0ZXJzKCkuc2l6ZSgpKTsKKyAgICAgICAgU3RyaW5nIGNoYXJhY3RlcnMgPSBTdHJpbmcodG9r
ZW4uY2hhcmFjdGVyRGF0YSgpLCB0b2tlbi5jaGFyYWN0ZXJEYXRhU2l6ZSgpKTsKICAgICAgICAg
bV90cmVlLmluc2VydFRleHROb2RlKGNoYXJhY3RlcnMpOwogICAgICAgICBpZiAobV9mcmFtZXNl
dE9rICYmICFpc0FsbFdoaXRlc3BhY2VPclJlcGxhY2VtZW50Q2hhcmFjdGVycyhjaGFyYWN0ZXJz
KSkKICAgICAgICAgICAgIG1fZnJhbWVzZXRPayA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuaAppbmRleCA2NGE5M2IzNGZmYmYxZjA0YWEwYjcz
NDIyMzdjNzlkOWFkZDViYjIzLi5iMmZhYjlhZWQ1ZmJkZTZiOGE2ODYxZTNjNWJjOTI4NjI0YTFi
NGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxk
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuaApA
QCAtNTAsNiArNTAsNyBAQCBjbGFzcyBEb2N1bWVudEZyYWdtZW50OwogY2xhc3MgRnJhbWU7CiBj
bGFzcyBIVE1MVG9rZW47CiBjbGFzcyBIVE1MRG9jdW1lbnQ7CitjbGFzcyBRdWFsaWZpZWROYW1l
OwogY2xhc3MgTm9kZTsKIGNsYXNzIEhUTUxEb2N1bWVudFBhcnNlcjsKIApAQCAtODUsNiArODYs
OSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFNob3VsZFNraXBMZWFkaW5nTmV3bGluZShib29s
IHNob3VsZFNraXApIHsgbV9zaG91bGRTa2lwTGVhZGluZ05ld2xpbmUgPSBzaG91bGRTa2lwOyB9
CiAKKyAgICBib29sIGltcGxpZWRDb250ZXh0VGFnKEhUTUxUb2tlbiYpOworICAgIGJvb2wgY2Fu
Q29udGludWUoSFRNTFRva2VuJiB0b2tlbikgeyByZXR1cm4gIW1fZnJhZ21lbnRDb250ZXh0LmZy
YWdtZW50KCkgfHwgbV9mcmFnbWVudENvbnRleHQuY29udGV4dFRhZygpICE9IG51bGxRTmFtZSgp
IHx8IGltcGxpZWRDb250ZXh0VGFnKHRva2VuKTsgfQorCiAgICAgc3RhdGljIGJvb2wgc2NyaXB0
RW5hYmxlZChGcmFtZSopOwogICAgIHN0YXRpYyBib29sIHBsdWdpbnNFbmFibGVkKEZyYW1lKik7
CiAKQEAgLTE5NSwxNiArMTk5LDE3IEBAIHByaXZhdGU6CiAgICAgICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKEZyYWdtZW50UGFyc2luZ0NvbnRleHQpOwogICAgIHB1YmxpYzoKICAgICAgICAgRnJh
Z21lbnRQYXJzaW5nQ29udGV4dCgpOwotICAgICAgICBGcmFnbWVudFBhcnNpbmdDb250ZXh0KERv
Y3VtZW50RnJhZ21lbnQqLCBFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgRnJhZ21lbnRTY3JpcHRp
bmdQZXJtaXNzaW9uKTsKKyAgICAgICAgRnJhZ21lbnRQYXJzaW5nQ29udGV4dChEb2N1bWVudEZy
YWdtZW50KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYgY29udGV4dFRhZywgRnJhZ21lbnRTY3JpcHRp
bmdQZXJtaXNzaW9uKTsKICAgICAgICAgfkZyYWdtZW50UGFyc2luZ0NvbnRleHQoKTsKIAogICAg
ICAgICBEb2N1bWVudEZyYWdtZW50KiBmcmFnbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhZ21l
bnQ7IH0KLSAgICAgICAgRWxlbWVudCogY29udGV4dEVsZW1lbnQoKSBjb25zdCB7IEFTU0VSVCht
X2ZyYWdtZW50KTsgcmV0dXJuIG1fY29udGV4dEVsZW1lbnQ7IH0KKyAgICAgICAgY29uc3QgUXVh
bGlmaWVkTmFtZSYgY29udGV4dFRhZygpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dFRhZzsgfQor
ICAgICAgICB2b2lkIHNldENvbnRleHRUYWcoY29uc3QgUXVhbGlmaWVkTmFtZSYgY29udGV4dFRh
ZykgeyBtX2NvbnRleHRUYWcgPSBjb250ZXh0VGFnOyB9CiAgICAgICAgIEZyYWdtZW50U2NyaXB0
aW5nUGVybWlzc2lvbiBzY3JpcHRpbmdQZXJtaXNzaW9uKCkgY29uc3QgeyBBU1NFUlQobV9mcmFn
bWVudCk7IHJldHVybiBtX3NjcmlwdGluZ1Blcm1pc3Npb247IH0KIAogICAgIHByaXZhdGU6CiAg
ICAgICAgIERvY3VtZW50RnJhZ21lbnQqIG1fZnJhZ21lbnQ7Ci0gICAgICAgIEVsZW1lbnQqIG1f
Y29udGV4dEVsZW1lbnQ7CisgICAgICAgIFF1YWxpZmllZE5hbWUgbV9jb250ZXh0VGFnOwogCiAg
ICAgICAgIC8vIEZyYWdtZW50U2NyaXB0aW5nTm90QWxsb3dlZCBjYXVzZXMgdGhlIFBhcnNlciB0
byByZW1vdmUgY2hpbGRyZW4KICAgICAgICAgLy8gZnJvbSA8c2NyaXB0PiB0YWdzIChzbyBqYXZh
c2NyaXB0IGRvZXNuJ3Qgc2hvdyB1cCBpbiBwYXN0ZXMpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUveG1sL3BhcnNlci9NYXJrdXBUb2tlbkJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3htbC9w
YXJzZXIvTWFya3VwVG9rZW5CYXNlLmgKaW5kZXggYzk2MmE2YWJhMzNhNGI1ZTUxNGMxZWEzZGUw
MTBjOThkMWJkZWJmMi4uMjUwZGExNmZhMDJiMTIzNDY0ZDZkNzQ1MDk5ODM0OWQyMTllOWJkNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9NYXJrdXBUb2tlbkJhc2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL01hcmt1cFRva2VuQmFzZS5oCkBAIC0yOCw2
ICsyOCw3IEBACiAjZGVmaW5lIE1hcmt1cFRva2VuQmFzZV9oCiAKICNpbmNsdWRlICJFbGVtZW50
QXR0cmlidXRlRGF0YS5oIgorI2luY2x1ZGUgPHd0Zi9Pd25BcnJheVB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KIAogI2lmbmRlZiBOREVCVUcKQEAgLTM3MiwxMiArMzczLDE1IEBAIHBy
b3RlY3RlZDoKICAgICBBdHRyaWJ1dGUqIG1fY3VycmVudEF0dHJpYnV0ZTsKIH07CiAKK2VudW0g
Q2hhcmFjdGVyU3RvcmFnZU1vZGUgeyBJbnRlcm5hbGl6ZUNoYXJhY3RlcnMsIFJlZmVyZW5jZUV4
dGVybmFsQ2hhcmFjdGVycyB9OworCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUb2tlbj4KIGNsYXNzIEF0
b21pY01hcmt1cFRva2VuQmFzZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQXRvbWljTWFy
a3VwVG9rZW5CYXNlKTsKIHB1YmxpYzoKLSAgICBBdG9taWNNYXJrdXBUb2tlbkJhc2UoVG9rZW4q
IHRva2VuKQorICAgIEF0b21pY01hcmt1cFRva2VuQmFzZShUb2tlbiogdG9rZW4sIENoYXJhY3Rl
clN0b3JhZ2VNb2RlIGNoYXJhY3RlclN0b3JhZ2UgPSBSZWZlcmVuY2VFeHRlcm5hbENoYXJhY3Rl
cnMpCiAgICAgICAgIDogbV90eXBlKHRva2VuLT50eXBlKCkpCisgICAgICAgICwgbV9leHRlcm5h
bENoYXJhY3RlcnMoMCkKICAgICB7CiAgICAgICAgIEFTU0VSVCh0b2tlbik7CiAKQEAgLTQwMiw3
ICs0MDYsMTUgQEAgcHVibGljOgogICAgICAgICAgICAgbV9kYXRhID0gU3RyaW5nKHRva2VuLT5j
b21tZW50KCkuZGF0YSgpLCB0b2tlbi0+Y29tbWVudCgpLnNpemUoKSk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY2FzZSBUb2tlbjo6VHlwZTo6Q2hhcmFjdGVyOgotICAgICAgICAgICAg
bV9leHRlcm5hbENoYXJhY3RlcnMgPSAmdG9rZW4tPmNoYXJhY3RlcnMoKTsKKyAgICAgICAgICAg
IGlmIChjaGFyYWN0ZXJTdG9yYWdlID09IFJlZmVyZW5jZUV4dGVybmFsQ2hhcmFjdGVycykgewor
ICAgICAgICAgICAgICAgIG1fZXh0ZXJuYWxDaGFyYWN0ZXJzID0gJnRva2VuLT5jaGFyYWN0ZXJz
KCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IG1faW50ZXJuYWxDaGFyYWN0ZXJzU2l6ZSA9IHRva2VuLT5jaGFyYWN0ZXJzKCkuc2l6ZSgpOwor
ICAgICAgICAgICAgbV9pbnRlcm5hbENoYXJhY3RlcnMgPSBhZG9wdEFycmF5UHRyKG5ldyBVQ2hh
clttX2ludGVybmFsQ2hhcmFjdGVyc1NpemVdKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBtX2ludGVybmFsQ2hhcmFjdGVyc1NpemU7IGkrKykKKyAgICAgICAgICAgICAg
ICBtX2ludGVybmFsQ2hhcmFjdGVyc1tpXSA9IHRva2VuLT5jaGFyYWN0ZXJzKCkuZGF0YSgpW2ld
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVh
azsKQEAgLTQ1NiwxMCArNDY4LDE2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fYXR0cmli
dXRlczsKICAgICB9CiAKLSAgICBjb25zdCB0eXBlbmFtZSBUb2tlbjo6RGF0YVZlY3RvciYgY2hh
cmFjdGVycygpIGNvbnN0CisgICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlckRhdGEoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUb2tlbjo6VHlwZTo6Q2hhcmFjdGVyKTsK
KyAgICAgICAgcmV0dXJuIG1fZXh0ZXJuYWxDaGFyYWN0ZXJzID8gbV9leHRlcm5hbENoYXJhY3Rl
cnMtPmRhdGEoKSA6IG1faW50ZXJuYWxDaGFyYWN0ZXJzLmdldCgpOworICAgIH0KKworICAgIGNv
bnN0IHNpemVfdCBjaGFyYWN0ZXJEYXRhU2l6ZSgpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NF
UlQobV90eXBlID09IFRva2VuOjpUeXBlOjpDaGFyYWN0ZXIpOwotICAgICAgICByZXR1cm4gKm1f
ZXh0ZXJuYWxDaGFyYWN0ZXJzOworICAgICAgICByZXR1cm4gbV9leHRlcm5hbENoYXJhY3RlcnMg
PyBtX2V4dGVybmFsQ2hhcmFjdGVycy0+c2l6ZSgpIDogbV9pbnRlcm5hbENoYXJhY3RlcnNTaXpl
OwogICAgIH0KIAogICAgIGNvbnN0IFN0cmluZyYgY29tbWVudCgpIGNvbnN0CkBAIC01MDAsMTMg
KzUxOCwxOSBAQCBwcm90ZWN0ZWQ6CiAKICAgICAvLyAiY2hhcmFjdGVycyIgZm9yIENoYXJhY3Rl
cgogICAgIC8vCi0gICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBjb3B5IHRoZSB0aGUgY2hhcmFjdGVy
cyBvdXQgb2YgdGhlIFRva2VuLCBzbyB3ZQotICAgIC8vIGtlZXAgYSBwb2ludGVyIHRvIGl0cyBi
dWZmZXIgaW5zdGVhZC4gVGhpcyBidWZmZXIgaXMgb3duZWQgYnkgdGhlCi0gICAgLy8gVG9rZW4g
YW5kIGNhdXNlcyBhIGxpZmV0aW1lIGRlcGVuZGVuY2UgYmV0d2VlbiB0aGVzZSBvYmplY3RzLgor
ICAgIC8vIEluIHN0ZWFkeS1zdGF0ZSBjYXNlLCB3ZSBkb24ndCB3YW50IHRvIGNvcHkgdGhlIHRo
ZSBjaGFyYWN0ZXJzIG91dCBvZiB0aGUKKyAgICAvLyBUb2tlbiwgc28gd2Uga2VlcCBhIHBvaW50
ZXIgdG8gaXRzIGJ1ZmZlciBpbnN0ZWFkLiBUaGlzIGJ1ZmZlciBpcyBvd25lZAorICAgIC8vIGJ5
IHRoZSBUb2tlbiBhbmQgY2F1c2VzIGEgbGlmZXRpbWUgZGVwZW5kZW5jZSBiZXR3ZWVuIHRoZXNl
IG9iamVjdHMuIFRoaXMKKyAgICAvLyBpcyB0aGUgYmVoYXZpb3Igd2hlbiBjb25zdHJ1Y3RlZCB3
aXRoIFJlZmVyZW5jZUV4dGVybmFsQ2hhcmFjdGVycy4KICAgICAvLwotICAgIC8vIEZJWE1FOiBB
ZGQgYSBtZWNoYW5pc20gZm9yICJpbnRlcm5hbGl6aW5nIiB0aGUgY2hhcmFjdGVycyB3aGVuIHRo
ZQotICAgIC8vICAgICAgICBIVE1MVG9rZW4gaXMgZGVzdHJ1Y3RlZC4KKyAgICAvLyBJbiB0aGUg
ImltcGxpZWQgY29udGV4dCIgZnJhZ21lbnQgY2FzZSwgd2UgbmVlZCB0byBsZXQgdGhlIHRva2Vu
aXplcgorICAgIC8vIHNjYW4gYWhlYWQgYW5kIHF1ZXVlIHRva2VucyBmb3IgbGF0ZXIgZGVsaXZl
cnkuIEluIHRoaXMgY2FzZSwgd2UgbWFrZSBhbgorICAgIC8vIGludGVybmFsIGNvcHkgb2YgdGhl
IGNoYXJhY3RlcnMgc28gdGhhdCBpdCBpcyBzYWZlIHRvIGxldCB0aGUgdW5kZXJseWluZworICAg
IC8vIFRva2VuIGJlIGZyZWVkLiBUaGlzIGlzIHRoZSBiZWhhdmlvciB3aGVuIGNvbnN0cnVjdGVk
IHdpdGgKKyAgICAvLyBJbnRlcm5hbGl6ZUNoYXJhY3RlcnMKICAgICBjb25zdCB0eXBlbmFtZSBU
b2tlbjo6RGF0YVZlY3RvciogbV9leHRlcm5hbENoYXJhY3RlcnM7CisgICAgT3duQXJyYXlQdHI8
VUNoYXI+IG1faW50ZXJuYWxDaGFyYWN0ZXJzOworICAgIHNpemVfdCBtX2ludGVybmFsQ2hhcmFj
dGVyc1NpemU7CiAKICAgICAvLyBGb3IgRE9DVFlQRQogICAgIE93blB0cjx0eXBlbmFtZSBUb2tl
bjo6RG9jdHlwZURhdGE+IG1fZG9jdHlwZURhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS94bWwvcGFyc2VyL1hNTFRyZWVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJz
ZXIvWE1MVHJlZUJ1aWxkZXIuY3BwCmluZGV4IGRiMjEzY2Q2MmVlOTNkNTQ3YWYxM2M1OWQzZjEw
MmY1Y2RjYzY3OTcuLjUxZTE0OGRjY2MxOTc1Mjc2Y2Q4NmNkZmM5ZjhhNGU2MTQ1Y2EzMDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MVHJlZUJ1aWxkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MVHJlZUJ1aWxkZXIuY3BwCkBAIC0yNzIs
NyArMjcyLDcgQEAgdm9pZCBYTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRhZyhjb25zdCBBdG9t
aWNYTUxUb2tlbiYgdG9rZW4pCiAKIHZvaWQgWE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NDaGFyYWN0
ZXIoY29uc3QgQXRvbWljWE1MVG9rZW4mIHRva2VuKQogewotICAgIGFwcGVuZFRvVGV4dCh0b2tl
bi5jaGFyYWN0ZXJzKCkuZGF0YSgpLCB0b2tlbi5jaGFyYWN0ZXJzKCkuc2l6ZSgpKTsKKyAgICBh
cHBlbmRUb1RleHQodG9rZW4uY2hhcmFjdGVyRGF0YSgpLCB0b2tlbi5jaGFyYWN0ZXJEYXRhU2l6
ZSgpKTsKIH0KIAogdm9pZCBYTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0NEQVRBKGNvbnN0IEF0b21p
Y1hNTFRva2VuJiB0b2tlbikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>141027</attachid>
            <date>2012-05-09 15:25:18 -0700</date>
            <delta_ts>2012-05-10 10:22:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84646-20120509152517.patch</filename>
            <type>text/plain</type>
            <size>29351</size>
            <attacher name="Rafael Weinstein">rafaelw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE2NTYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGU3ZWI4N2E2NzE3NTJh
ZTgyNzc0ZTU4N2EyOWJkYjQ0NzMwMmMwNy4uYWI0MzIxMTYwNWIxYTdiZTgwZmMwOWY4ZGJlYTMz
ZjRlZDg2OTJlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEyLTA0LTIzICBSYWZh
ZWwgV2VpbnN0ZWluICA8cmFmYWVsd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW1wbGVtZW50
IERvY3VtZW50RnJhZ21lbnQuaW5uZXJIVE1MCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04NDY0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIERvY3VtZW50RnJhZ21lbnQuaW5uZXJIVE1MIG5vdyBwYXJzZXMg
YmFzZWQgb24gYW4gImltcGxpZWQgY29udGV4dCBlbGVtZW50IiB3aGljaCBpcyBwaWNrcyBiYXNl
ZAorICAgICAgICBvbiB0aGUgbmFtZSBvZiB0aGUgZmlyc3QgdGFnIHdoaWNoIGFwcGVhcnMgaW4g
dGhlIHByb3ZpZGVkIG1hcmt1cC4KKworICAgICAgICBObyBuZXcgdGVzdHMuIChPT1BTISkKKwor
ICAgICAgICAqIGRvbS9Eb2N1bWVudEZyYWdtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50RnJhZ21lbnQ6OmlubmVySFRNTCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50RnJhZ21lbnQ6OnNldElubmVySFRNTCk6CisgICAgICAgICogZG9t
L0RvY3VtZW50RnJhZ21lbnQuaDoKKyAgICAgICAgKERvY3VtZW50RnJhZ21lbnQpOgorICAgICAg
ICAqIGRvbS9Eb2N1bWVudEZyYWdtZW50LmlkbDoKKyAgICAgICAgKiBkb20vU2hhZG93Um9vdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290OjpzZXRJbm5lckhUTUwpOgorICAgICAg
ICAqIGVkaXRpbmcvbWFya3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZyYWdtZW50
RnJvbVNvdXJjZSk6CisgICAgICAgICogZWRpdGluZy9tYXJrdXAuaDoKKyAgICAgICAgKiBodG1s
L0hUTUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjpzZXRJbm5l
ckhUTUwpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OnNldE91dGVySFRNTCk6Cisg
ICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxUcmVlQnVpbGRlcjo6SFRNTFRyZWVCdWlsZGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFnKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxUcmVlQnVpbGRlcjo6cmVzZXRJbnNlcnRpb25Nb2RlQXBwcm9wcmlhdGVseSk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWcpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzQ2hhcmFjdGVyQnVmZmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZE9mRmlsZSk6CisgICAgICAgICog
aHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJl
ZUJ1aWxkZXI6OkZyYWdtZW50UGFyc2luZ0NvbnRleHQ6OmNvbnRleHRFbGVtZW50KToKKwogMjAx
Mi0wNS0wOSAgSm9jaGVuIEVpc2luZ2VyICA8am9jaGVuQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBXaGVuIGNyZWF0aW5nIGEgbmV3IHBhZ2UgZHVyaW5nIGEgbmF2aWdhdGlvbiwgcHJpbWUgdGhl
IGluaXRpYWwgZG9jdW1lbnQgd2l0aCB0aGUgY29ycmVjdCByZWZlcnJlciBwb2xpY3kKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmNwcAppbmRleCBmN2NmYWRmY2M3OWYzMWQ1MTY2
M2VhYWMwNDJiMzQ1ZGE3MzRjMTlhLi45YmNjMzNjNzAxYmI3MGI0ODg1N2UzOTUyNWVhNDdkMGIz
YjUzMWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuY3BwCkBAIC0yOSw2
ICsyOSw3IEBACiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5j
bHVkZSAiWE1MRG9jdW1lbnRQYXJzZXIuaCIKKyNpbmNsdWRlICJtYXJrdXAuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCkBAIC05MCw0ICs5MSwyMSBAQCBib29sIERvY3VtZW50RnJhZ21lbnQ6
OnBhcnNlWE1MKGNvbnN0IFN0cmluZyYgc291cmNlLCBFbGVtZW50KiBjb250ZXh0RWxlbWVudCwg
RgogI2VuZGlmCiB9CiAKK1N0cmluZyBEb2N1bWVudEZyYWdtZW50Ojppbm5lckhUTUwoKSBjb25z
dAoreworICAgIHJldHVybiBjcmVhdGVNYXJrdXAodGhpcywgQ2hpbGRyZW5Pbmx5KTsKK30KKwor
dm9pZCBEb2N1bWVudEZyYWdtZW50OjpzZXRJbm5lckhUTUwoY29uc3QgU3RyaW5nJiBodG1sLCBF
eGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoIWRvY3VtZW50KCktPmlzSFRNTERvY3VtZW50
KCkpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGNyZWF0ZUZy
YWdtZW50RnJvbVNvdXJjZShodG1sLCBkb2N1bWVudCgpLCAwIC8qIGNvbnRleHRFbGVtZW50ICov
LCBlYyk7CisgICAgaWYgKGZyYWdtZW50KQorICAgICAgICByZXBsYWNlQ2hpbGRyZW5XaXRoRnJh
Z21lbnQodGhpcywgZnJhZ21lbnQucmVsZWFzZSgpLCBlYyk7Cit9CisKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnRGcmFnbWVudC5oCmluZGV4IDFlYTRkY2IzMjY1ZmYyYTg2NjhiNDBkZjRmYWY3
M2RmNWUwZTRkNTQuLjVjYzk2YjcyYjc0MmM5MWJkZWZkNGNhMTYwODNjMzNlNDBmNzY3ODMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuaApAQCAtMzgsNiArMzgsOSBAQCBwdWJs
aWM6CiAgICAgCiAgICAgdmlydHVhbCBib29sIGNhbkNvbnRhaW5SYW5nZUVuZFBvaW50KCkgY29u
c3QgeyByZXR1cm4gdHJ1ZTsgfQogCisgICAgU3RyaW5nIGlubmVySFRNTCgpIGNvbnN0OworICAg
IHZvaWQgc2V0SW5uZXJIVE1MKGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKKwogcHJv
dGVjdGVkOgogICAgIERvY3VtZW50RnJhZ21lbnQoRG9jdW1lbnQqLCBDb25zdHJ1Y3Rpb25UeXBl
ID0gQ3JlYXRlQ29udGFpbmVyKTsKICAgICB2aXJ0dWFsIFN0cmluZyBub2RlTmFtZSgpIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuaWRsIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuaWRsCmluZGV4IDg4MmI2MmRiMzll
YjdmMmUwNTA0NzgyMDQ5MmI3ZTkzNjFhOGVkZWQuLmY1ZjU5MTM5NzJkYjdlZDAwNDE4ODJhNjY4
ZWE2MzMxYWNjNzNmZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZy
YWdtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5pZGwK
QEAgLTI1LDYgKzI1LDggQEAgbW9kdWxlIGNvcmUgewogICAgICAgICAgICAgcmFpc2VzKERPTUV4
Y2VwdGlvbik7CiAgICAgICAgIE5vZGVMaXN0IHF1ZXJ5U2VsZWN0b3JBbGwoaW4gRE9NU3RyaW5n
IHNlbGVjdG9ycykKICAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOworICAgICAgICBh
dHRyaWJ1dGUgW1RyZWF0TnVsbEFzPU51bGxTdHJpbmddIERPTVN0cmluZyBpbm5lckhUTUwKKyAg
ICAgICAgICAgIHNldHRlciByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICB9OwogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vUXVhbGlmaWVkTmFtZS5jcHAKaW5kZXggZTA4NTUwNzBhN2NiMzI1MzRjY2JmOGFi
OGQwNTI2NjdkYTMxOWYxNS4uZmFiMWMyYjZiMjcyMzc4ZjZiOWIwN2M4MGE2NDdlMzBjNDg1NjMx
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1lLmNwcApAQCAtMTA0LDYgKzEwNCw3IEBA
IFN0cmluZyBRdWFsaWZpZWROYW1lOjp0b1N0cmluZygpIGNvbnN0CiAKIC8vIEdsb2JhbCBpbml0
IHJvdXRpbmVzCiBERUZJTkVfR0xPQkFMKFF1YWxpZmllZE5hbWUsIGFueU5hbWUsIG51bGxBdG9t
LCBzdGFyQXRvbSwgc3RhckF0b20pCitERUZJTkVfR0xPQkFMKFF1YWxpZmllZE5hbWUsIG51bGxO
YW1lLCBudWxsQXRvbSwgbnVsbEF0b20sIG51bGxBdG9tKQogCiB2b2lkIFF1YWxpZmllZE5hbWU6
OmluaXQoKQogewpAQCAtMTEzLDYgKzExNCw3IEBAIHZvaWQgUXVhbGlmaWVkTmFtZTo6aW5pdCgp
CiAgICAgICAgIAogICAgICAgICBBdG9taWNTdHJpbmc6OmluaXQoKTsKICAgICAgICAgbmV3ICgo
dm9pZCopJmFueU5hbWUpIFF1YWxpZmllZE5hbWUobnVsbEF0b20sIHN0YXJBdG9tLCBzdGFyQXRv
bSk7CisgICAgICAgIG5ldyAoKHZvaWQqKSZudWxsTmFtZSkgUXVhbGlmaWVkTmFtZShudWxsQXRv
bSwgbnVsbEF0b20sIG51bGxBdG9tKTsKICAgICAgICAgaW5pdGlhbGl6ZWQgPSB0cnVlOwogICAg
IH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1lLmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5oCmluZGV4IDYzNmIyYTUxNTBjOWU5ODdj
MDI3ZTc1Njk3OTJkOWJhYzM0YTg5ZTkuLjllZmI4ODEyNzM2OTc2ZTFjNTQzODlhMDM3ZTIxYzA4
YTlmZDc3ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1lLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuaApAQCAtMTA1LDYgKzEwNSw4
IEBAIHByaXZhdGU6CiAjaWZuZGVmIFdFQkNPUkVfUVVBTElGSUVETkFNRV9ISURFX0dMT0JBTFMK
IGV4dGVybiBjb25zdCBRdWFsaWZpZWROYW1lIGFueU5hbWU7CiBpbmxpbmUgY29uc3QgUXVhbGlm
aWVkTmFtZSYgYW55UU5hbWUoKSB7IHJldHVybiBhbnlOYW1lOyB9CitleHRlcm4gY29uc3QgUXVh
bGlmaWVkTmFtZSBudWxsTmFtZTsKK2lubGluZSBjb25zdCBRdWFsaWZpZWROYW1lJiBudWxsUU5h
bWUoKSB7IHJldHVybiBudWxsTmFtZTsgfQogI2VuZGlmCiAKIGlubGluZSBib29sIG9wZXJhdG9y
PT0oY29uc3QgQXRvbWljU3RyaW5nJiBhLCBjb25zdCBRdWFsaWZpZWROYW1lJiBxKSB7IHJldHVy
biBhID09IHEubG9jYWxOYW1lKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9T
aGFkb3dSb290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAppbmRleCBh
YTAzNGJhMzAwZTI3NTYxN2U1YjdmOTVhY2I3NTdhNzM2Njk1NmQ1Li5hMWJlNDJlYWVmYzgzYzYz
NjBkMzVhYTE2NDVhZjgxMTNhNjY4NTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
U2hhZG93Um9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCkBA
IC0xMzcsMTggKzEzNyw2IEBAIFBhc3NSZWZQdHI8Tm9kZT4gU2hhZG93Um9vdDo6Y2xvbmVOb2Rl
KGJvb2wpCiAgICAgcmV0dXJuIDA7CiB9CiAKLVN0cmluZyBTaGFkb3dSb290Ojppbm5lckhUTUwo
KSBjb25zdAotewotICAgIHJldHVybiBjcmVhdGVNYXJrdXAodGhpcywgQ2hpbGRyZW5Pbmx5KTsK
LX0KLQotdm9pZCBTaGFkb3dSb290OjpzZXRJbm5lckhUTUwoY29uc3QgU3RyaW5nJiBtYXJrdXAs
IEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFn
bWVudCA9IGNyZWF0ZUZyYWdtZW50RnJvbVNvdXJjZShtYXJrdXAsIGhvc3QoKSwgZWMpOwotICAg
IGlmIChmcmFnbWVudCkKLSAgICAgICAgcmVwbGFjZUNoaWxkcmVuV2l0aEZyYWdtZW50KHRoaXMs
IGZyYWdtZW50LnJlbGVhc2UoKSwgZWMpOwotfQotCiBET01TZWxlY3Rpb24qIFNoYWRvd1Jvb3Q6
OnNlbGVjdGlvbigpCiB7CiAgICAgaWYgKGRvY3VtZW50KCkgJiYgZG9jdW1lbnQoKS0+ZG9tV2lu
ZG93KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaAppbmRleCBjMDAyNGM3MTY3MzIzMDk5NzBmMWJl
ODE3MDc1MTY4NWZmMDQxOWUwLi5jYjhhMjBjMjNkNWJjZjY1YmQ5MTFhN2IzOWRhY2I2ODVkOWIy
ZDlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgKQEAgLTczLDkgKzczLDYgQEAgcHVibGljOgog
ICAgIEVsZW1lbnQqIGhvc3QoKSBjb25zdCB7IHJldHVybiBzaGFkb3dIb3N0KCk7IH0KICAgICBF
bGVtZW50U2hhZG93KiBvd25lcigpIGNvbnN0OwogCi0gICAgU3RyaW5nIGlubmVySFRNTCgpIGNv
bnN0OwotICAgIHZvaWQgc2V0SW5uZXJIVE1MKGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUm
KTsKLQogICAgIEVsZW1lbnQqIGFjdGl2ZUVsZW1lbnQoKSBjb25zdDsKIAogICAgIERPTVNlbGVj
dGlvbiogc2VsZWN0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93
Um9vdC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5pZGwKaW5kZXggNTUwNTdi
NjgwNmQ1M2IzYzJkNTFjOTczZmY0NWEwY2Y5ZWY4YWJhNy4uODQ5ZTc1NjI0MDY1YTMwMzgxZTg3
MTA5MGQ0MWNkYzk4NGE0MjY1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRv
d1Jvb3QuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmlkbApAQCAtMzcs
OSArMzcsNiBAQCBtb2R1bGUgY29yZSB7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01T
ZWxlY3Rpb24gc2VsZWN0aW9uOwogICAgICAgICBhdHRyaWJ1dGUgYm9vbGVhbiBhcHBseUF1dGhv
clN0eWxlczsKIAotICAgICAgICBhdHRyaWJ1dGUgW1RyZWF0TnVsbEFzPU51bGxTdHJpbmddIERP
TVN0cmluZyBpbm5lckhUTUwKLSAgICAgICAgICAgIHNldHRlciByYWlzZXMoRE9NRXhjZXB0aW9u
KTsKLQogICAgICAgICBFbGVtZW50IGdldEVsZW1lbnRCeUlkKGluIFtPcHRpb25hbD1EZWZhdWx0
SXNVbmRlZmluZWRdIERPTVN0cmluZyBlbGVtZW50SWQpOwogICAgICAgICBOb2RlTGlzdCBnZXRF
bGVtZW50c0J5Q2xhc3NOYW1lKGluIFtPcHRpb25hbD1EZWZhdWx0SXNVbmRlZmluZWRdIERPTVN0
cmluZyBjbGFzc05hbWUpOwogICAgICAgICBOb2RlTGlzdCBnZXRFbGVtZW50c0J5VGFnTmFtZShp
biBbT3B0aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVkXSBET01TdHJpbmcgdGFnTmFtZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL21hcmt1cC5jcHAKaW5kZXggZDJjODMzYzY0MDhmYjAxNGZmMDgyMjQ1ZDA3Njkw
ZWM2MWQ3ZWQxNy4uMDQzY2M0MTc3OTIxMDJkM2U0Nzc3Y2JkMTZiNjVkYzVjNWY3NTQ0NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcApAQCAtOTkyLDkgKzk5Miw4IEBAIFN0cmluZyB1cmxU
b01hcmt1cChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUpCiAgICAgcmV0dXJu
IG1hcmt1cC50b1N0cmluZygpOwogfQogCi1QYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNy
ZWF0ZUZyYWdtZW50RnJvbVNvdXJjZShjb25zdCBTdHJpbmcmIG1hcmt1cCwgRWxlbWVudCogY29u
dGV4dEVsZW1lbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdt
ZW50PiBjcmVhdGVGcmFnbWVudEZyb21Tb3VyY2UoY29uc3QgU3RyaW5nJiBtYXJrdXAsIERvY3Vt
ZW50KiBkb2N1bWVudCwgRWxlbWVudCogY29udGV4dEVsZW1lbnQsIEV4Y2VwdGlvbkNvZGUmIGVj
KQogewotICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGNvbnRleHRFbGVtZW50LT5kb2N1bWVudCgp
OwogICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IERvY3VtZW50RnJhZ21l
bnQ6OmNyZWF0ZShkb2N1bWVudCk7CiAKICAgICBpZiAoZG9jdW1lbnQtPmlzSFRNTERvY3VtZW50
KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5oCmluZGV4IDkxOGFlOWIxM2U5MWNhNzhiOGI3YWZh
NGRjZjdkNzZlZDY4NjM5MGQuLjU0ZWQ4YzAxY2VjZTc2NjE5YTc2YTQzNTcyNzU2YjA2ZWZkNmQ3
YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuaApAQCAtNTAsNyArNTAsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVu
dEZyb21NYXJrdXAoRG9jdW1lbnQqLCBjb25zdCBTdHJpbmcmIG1hcmt1cCwgY29uc3QgU3RyaW5n
JiBiYXNlVVJMLCBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24gPSBGcmFnbWVudFNjcmlwdGlu
Z0FsbG93ZWQpOwogICAgIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21l
bnRGcm9tTWFya3VwV2l0aENvbnRleHQoRG9jdW1lbnQqLCBjb25zdCBTdHJpbmcmIG1hcmt1cCwg
dW5zaWduZWQgZnJhZ21lbnRTdGFydCwgdW5zaWduZWQgZnJhZ21lbnRFbmQsIGNvbnN0IFN0cmlu
ZyYgYmFzZVVSTCwgRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uKTsKICAgICBQYXNzUmVmUHRy
PERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJvbU5vZGVzKERvY3VtZW50KiwgY29u
c3QgVmVjdG9yPE5vZGUqPiYpOwotICAgIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3Jl
YXRlRnJhZ21lbnRGcm9tU291cmNlKGNvbnN0IFN0cmluZyYsIEVsZW1lbnQqLCBFeGNlcHRpb25D
b2RlJik7CisgICAgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZy
b21Tb3VyY2UoY29uc3QgU3RyaW5nJiwgRG9jdW1lbnQqLCBFbGVtZW50KiwgRXhjZXB0aW9uQ29k
ZSYpOwogCiAgICAgYm9vbCBpc1BsYWluVGV4dE1hcmt1cChOb2RlICpub2RlKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxFbGVtZW50LmNwcAppbmRleCBkMzY3ZjliYmFhYTg5ODljMDZiZjcwMGQ2MTc4
YTVmMGU2ZWM1ODgwLi44N2JkYzI0NGYwZTA1ZjlhYmJiOWZhMTliMjM1NzZhYmNkM2IzYjU4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcApAQCAtMzQ0LDcgKzM0NCw3IEBAIFN0cmlu
ZyBIVE1MRWxlbWVudDo6b3V0ZXJIVE1MKCkgY29uc3QKIAogdm9pZCBIVE1MRWxlbWVudDo6c2V0
SW5uZXJIVE1MKGNvbnN0IFN0cmluZyYgaHRtbCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAg
UmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRGcm9tU291
cmNlKGh0bWwsIHRoaXMsIGVjKTsKKyAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21l
bnQgPSBjcmVhdGVGcmFnbWVudEZyb21Tb3VyY2UoaHRtbCwgZG9jdW1lbnQoKSwgdGhpcywgZWMp
OwogICAgIGlmIChmcmFnbWVudCkKICAgICAgICAgcmVwbGFjZUNoaWxkcmVuV2l0aEZyYWdtZW50
KHRoaXMsIGZyYWdtZW50LnJlbGVhc2UoKSwgZWMpOwogfQpAQCAtMzc2LDcgKzM3Niw3IEBAIHZv
aWQgSFRNTEVsZW1lbnQ6OnNldE91dGVySFRNTChjb25zdCBTdHJpbmcmIGh0bWwsIEV4Y2VwdGlv
bkNvZGUmIGVjKQogICAgIFJlZlB0cjxOb2RlPiBwcmV2ID0gcHJldmlvdXNTaWJsaW5nKCk7CiAg
ICAgUmVmUHRyPE5vZGU+IG5leHQgPSBuZXh0U2libGluZygpOwogCi0gICAgUmVmUHRyPERvY3Vt
ZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRGcm9tU291cmNlKGh0bWwsIHBh
cmVudC5nZXQoKSwgZWMpOworICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9
IGNyZWF0ZUZyYWdtZW50RnJvbVNvdXJjZShodG1sLCBkb2N1bWVudCgpLCBwYXJlbnQuZ2V0KCks
IGVjKTsKICAgICBpZiAoZWMpCiAgICAgICAgIHJldHVybjsKICAgICAgIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKaW5kZXggN2EwNmI0
MjM5NjkxM2Q5ZDk2ZDRlNTcxZDViMjMzYTkyMzcwNDI5NS4uZjg2ZjczOTBlZWNlZTQ3MjUzZTgz
YzNmODgxNTdjYmNkNWI2Y2JhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCkBAIC0yNzUsNiArMjc1LDIzIEBAIHZvaWQgSFRNTERv
Y3VtZW50UGFyc2VyOjpwdW1wVG9rZW5pemVyKFN5bmNocm9ub3VzTW9kZSBtb2RlKQogICAgICAg
ICAgICAgbV94c3NBdWRpdG9yLmZpbHRlclRva2VuKG1fdG9rZW4pOwogICAgICAgICB9CiAKKyAg
ICAgICAgaWYgKCFtX3RyZWVCdWlsZGVyLT5jYW5Db250aW51ZShtX3Rva2VuKSkgeworICAgICAg
ICAgICAgLy8gVHJlZSBjb25zdHJ1Y3Rpb24gc2hvdWxkIG9ubHkgYmUgYmxvY2tlZCBieSB3YWl0
aW5nIG9uIHRoZSBuZXh0CisgICAgICAgICAgICAvLyBzdGFydCB0YWcuCisgICAgICAgICAgICBB
U1NFUlQobV90b2tlbi50eXBlKCkgIT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnCisgICAgICAg
ICAgICAgICAgICAgJiYgbV90b2tlbi50eXBlKCkgIT0gSFRNTFRva2VuVHlwZXM6OkVuZE9mRmls
ZSk7CisgICAgICAgICAgICBtX3F1ZXVlZEF0b21pY1Rva2Vucy5hcHBlbmQoQXRvbWljSFRNTFRv
a2VuOjpjcmVhdGUobV90b2tlbikpOworICAgICAgICAgICAgbV90b2tlbi5jbGVhcigpOworICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIW1fcXVldWVkQXRv
bWljVG9rZW5zLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgVmVjdG9yPE93blB0cjxBdG9taWNI
VE1MVG9rZW4+ID4gcXVldWVkVG9rZW5zOworICAgICAgICAgICAgcXVldWVkVG9rZW5zLnN3YXAo
bV9xdWV1ZWRBdG9taWNUb2tlbnMpOworICAgICAgICAgICAgZm9yIChWZWN0b3I8T3duUHRyPEF0
b21pY0hUTUxUb2tlbj4gPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBxdWV1ZWRUb2tlbnMuYmVnaW4o
KTsgaXQgIT0gcXVldWVkVG9rZW5zLmVuZCgpOyArK2l0KQorICAgICAgICAgICAgICAgIG1fdHJl
ZUJ1aWxkZXItPmNvbnN0cnVjdFRyZWVGcm9tQXRvbWljVG9rZW4oKihpdC0+Z2V0KCkpKTsKKyAg
ICAgICAgfQorCiAgICAgICAgIG1fdHJlZUJ1aWxkZXItPmNvbnN0cnVjdFRyZWVGcm9tVG9rZW4o
bV90b2tlbik7CiAgICAgICAgIEFTU0VSVChtX3Rva2VuLmlzVW5pbml0aWFsaXplZCgpKTsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQ
YXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5o
CmluZGV4IGVlZTg4MmM3MjRlM2UzYjBkNmRkNzRmYmQ2YTg2ZDVjYjcyMmJhYzQuLjM2Y2NiYTUw
NTBkNWY0MGViY2NlNDdjZGNlNmEwM2U5MWQyZDJiZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5oCkBAIC03MSw3ICs3MSw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHJlc3VtZVBhcnNpbmdBZnRlcllpZWxkKCk7CiAKICAgICBzdGF0aWMgdm9p
ZCBwYXJzZURvY3VtZW50RnJhZ21lbnQoY29uc3QgU3RyaW5nJiwgRG9jdW1lbnRGcmFnbWVudCos
IEVsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24gPSBG
cmFnbWVudFNjcmlwdGluZ0FsbG93ZWQpOwotICAgIAorCiAgICAgc3RhdGljIGJvb2wgdXNlUHJl
SFRNTDVQYXJzZXJRdWlya3MoRG9jdW1lbnQqKTsKICAgICBzdGF0aWMgdW5zaWduZWQgbWF4aW11
bURPTVRyZWVEZXB0aChEb2N1bWVudCopOwogCkBAIC0xNDUsNiArMTQ1LDcgQEAgcHJpdmF0ZToK
ICAgICAvLyBXZSBob2xkIG1fdG9rZW4gaGVyZSBiZWNhdXNlIGl0IG1pZ2h0IGJlIHBhcnRpYWxs
eSBjb21wbGV0ZS4KICAgICBIVE1MVG9rZW4gbV90b2tlbjsKIAorICAgIFZlY3RvcjxPd25QdHI8
QXRvbWljSFRNTFRva2VuPiA+IG1fcXVldWVkQXRvbWljVG9rZW5zOwogICAgIE93blB0cjxIVE1M
VG9rZW5pemVyPiBtX3Rva2VuaXplcjsKICAgICBPd25QdHI8SFRNTFNjcmlwdFJ1bm5lcj4gbV9z
Y3JpcHRSdW5uZXI7CiAgICAgT3duUHRyPEhUTUxUcmVlQnVpbGRlcj4gbV90cmVlQnVpbGRlcjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbi5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuLmgKaW5kZXggNGFjZmVjOWY4NzVmNzY5
OTViYzBhZWFmZTY3YjdiY2EyNjAwYmVhMy4uZDk4OTliOTY1YzYyMzVlYTE2ZmU3MWQ3NTNlZGY1
OGQzZDUyODYxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRv
a2VuLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuLmgKQEAgLTg0
LDcgKzg0LDEyIEBAIHB1YmxpYzoKIGNsYXNzIEF0b21pY0hUTUxUb2tlbiA6IHB1YmxpYyBBdG9t
aWNNYXJrdXBUb2tlbkJhc2U8SFRNTFRva2VuPiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
QXRvbWljSFRNTFRva2VuKTsKIHB1YmxpYzoKLSAgICBBdG9taWNIVE1MVG9rZW4oSFRNTFRva2Vu
JiB0b2tlbikgOiBBdG9taWNNYXJrdXBUb2tlbkJhc2U8SFRNTFRva2VuPigmdG9rZW4pIHsgfQor
ICAgIHN0YXRpYyBQYXNzT3duUHRyPEF0b21pY0hUTUxUb2tlbj4gY3JlYXRlKEhUTUxUb2tlbiYg
dG9rZW4pCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEF0b21pY0hUTUxUb2tl
bih0b2tlbiwgSW50ZXJuYWxpemVDaGFyYWN0ZXJzKSk7CisgICAgfQorCisgICAgQXRvbWljSFRN
TFRva2VuKEhUTUxUb2tlbiYgdG9rZW4sIENoYXJhY3RlclN0b3JhZ2VNb2RlIGNoYXJhY3RlclN0
b3JhZ2UgPSBSZWZlcmVuY2VFeHRlcm5hbENoYXJhY3RlcnMpIDogQXRvbWljTWFya3VwVG9rZW5C
YXNlPEhUTUxUb2tlbj4oJnRva2VuLCBjaGFyYWN0ZXJTdG9yYWdlKSB7IH0KIAogICAgIEF0b21p
Y0hUTUxUb2tlbihIVE1MVG9rZW5UeXBlczo6VHlwZSB0eXBlLCBBdG9taWNTdHJpbmcgbmFtZSwg
Y29uc3QgVmVjdG9yPEF0dHJpYnV0ZT4mIGF0dHJpYnV0ZXMgPSBWZWN0b3I8QXR0cmlidXRlPigp
KQogICAgICAgICA6IEF0b21pY01hcmt1cFRva2VuQmFzZTxIVE1MVG9rZW4+KHR5cGUsIG5hbWUs
IGF0dHJpYnV0ZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
VHJlZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWls
ZGVyLmNwcAppbmRleCA1ZDUzNDJiYjAwNGU2Y2Y0NDljOTg2ZTI0NDhkNTQ0NjY3Zjg2ZmE2Li40
M2Y3YWQ1ZjcyYjUxMTZhOWEwMzRjY2IyNGMyODlhZmYxN2I0MWNjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAKQEAgLTI0OCw4ICsyNDgsOCBA
QCBjbGFzcyBIVE1MVHJlZUJ1aWxkZXI6OkV4dGVybmFsQ2hhcmFjdGVyVG9rZW5CdWZmZXIgewog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEV4dGVybmFsQ2hhcmFjdGVyVG9rZW5CdWZmZXIpOwog
cHVibGljOgogICAgIGV4cGxpY2l0IEV4dGVybmFsQ2hhcmFjdGVyVG9rZW5CdWZmZXIoQXRvbWlj
SFRNTFRva2VuJiB0b2tlbikKLSAgICAgICAgOiBtX2N1cnJlbnQodG9rZW4uY2hhcmFjdGVycygp
LmRhdGEoKSkKLSAgICAgICAgLCBtX2VuZChtX2N1cnJlbnQgKyB0b2tlbi5jaGFyYWN0ZXJzKCku
c2l6ZSgpKQorICAgICAgICA6IG1fY3VycmVudCh0b2tlbi5jaGFyYWN0ZXJEYXRhKCkpCisgICAg
ICAgICwgbV9lbmQobV9jdXJyZW50ICsgdG9rZW4uY2hhcmFjdGVyRGF0YVNpemUoKSkKICAgICB7
CiAgICAgICAgIEFTU0VSVCghaXNFbXB0eSgpKTsKICAgICB9CkBAIC0zNjgsNyArMzY4LDcgQEAg
SFRNTFRyZWVCdWlsZGVyOjpIVE1MVHJlZUJ1aWxkZXIoSFRNTERvY3VtZW50UGFyc2VyKiBwYXJz
ZXIsIEhUTUxEb2N1bWVudCogZG9jdW0KIC8vIG1pbmltaXplIGNvZGUgZHVwbGljYXRpb24gYmV0
d2VlbiB0aGVzZSBjb25zdHJ1Y3RvcnMuCiBIVE1MVHJlZUJ1aWxkZXI6OkhUTUxUcmVlQnVpbGRl
cihIVE1MRG9jdW1lbnRQYXJzZXIqIHBhcnNlciwgRG9jdW1lbnRGcmFnbWVudCogZnJhZ21lbnQs
IEVsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24gc2Ny
aXB0aW5nUGVybWlzc2lvbiwgYm9vbCB1c2VQcmVIVE1MNVBhcnNlclF1aXJrcywgdW5zaWduZWQg
bWF4aW11bURPTVRyZWVEZXB0aCkKICAgICA6IG1fZnJhbWVzZXRPayh0cnVlKQotICAgICwgbV9m
cmFnbWVudENvbnRleHQoZnJhZ21lbnQsIGNvbnRleHRFbGVtZW50LCBzY3JpcHRpbmdQZXJtaXNz
aW9uKQorICAgICwgbV9mcmFnbWVudENvbnRleHQoZnJhZ21lbnQsIGNvbnRleHRFbGVtZW50ID8g
Y29udGV4dEVsZW1lbnQtPnRhZ1FOYW1lKCkgOiBudWxsUU5hbWUoKSwgc2NyaXB0aW5nUGVybWlz
c2lvbikKICAgICAsIG1fZG9jdW1lbnQoZnJhZ21lbnQtPmRvY3VtZW50KCkpCiAgICAgLCBtX3Ry
ZWUoZnJhZ21lbnQsIHNjcmlwdGluZ1Blcm1pc3Npb24sIG1heGltdW1ET01UcmVlRGVwdGgpCiAg
ICAgLCBtX3JlcG9ydEVycm9ycyhmYWxzZSkgLy8gRklYTUU6IFdoeSBub3QgcmVwb3J0IGVycm9y
cyBpbiBmcmFnbWVudHM/CkBAIC0zODEsMTcgKzM4MSwxNCBAQCBIVE1MVHJlZUJ1aWxkZXI6OkhU
TUxUcmVlQnVpbGRlcihIVE1MRG9jdW1lbnRQYXJzZXIqIHBhcnNlciwgRG9jdW1lbnRGcmFnbWVu
dCogZgogICAgICwgbV9sYXN0U2NyaXB0RWxlbWVudFN0YXJ0UG9zaXRpb24oVGV4dFBvc2l0aW9u
OjpiZWxvd1JhbmdlUG9zaXRpb24oKSkKICAgICAsIG1fdXNlUHJlSFRNTDVQYXJzZXJRdWlya3Mo
dXNlUHJlSFRNTDVQYXJzZXJRdWlya3MpCiB7Ci0gICAgLy8gRklYTUU6IFRoaXMgYXNzZXJ0aW9u
IHdpbGwgYmVjb21lIGludmFsaWQgaWYgPGh0dHA6Ly93ZWJraXQub3JnL2IvNjAzMTY+IGlzIGZp
eGVkLgotICAgIEFTU0VSVChjb250ZXh0RWxlbWVudCk7Ci0gICAgaWYgKGNvbnRleHRFbGVtZW50
KSB7Ci0gICAgICAgIC8vIFN0ZXBzIDQuMi00LjYgb2YgdGhlIEhUTUw1IEZyYWdtZW50IENhc2Ug
cGFyc2luZyBhbGdvcml0aG06Ci0gICAgICAgIC8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVj
cy93ZWItYXBwcy9jdXJyZW50LXdvcmsvbXVsdGlwYWdlL3RoZS1lbmQuaHRtbCNmcmFnbWVudC1j
YXNlCi0gICAgICAgIC8vIEZvciBlZmZpY2llbmN5LCB3ZSBza2lwIHN0ZXAgNC4yICgiTGV0IHJv
b3QgYmUgYSBuZXcgaHRtbCBlbGVtZW50IHdpdGggbm8gYXR0cmlidXRlcyIpCi0gICAgICAgIC8v
IGFuZCBpbnN0ZWFkIHVzZSB0aGUgRG9jdW1lbnRGcmFnbWVudCBhcyBhIHJvb3Qgbm9kZS4KLSAg
ICAgICAgbV90cmVlLm9wZW5FbGVtZW50cygpLT5wdXNoUm9vdE5vZGUoZnJhZ21lbnQpOwotICAg
ICAgICByZXNldEluc2VydGlvbk1vZGVBcHByb3ByaWF0ZWx5KCk7CisgICAgLy8gU3RlcHMgNC4y
LTQuNiBvZiB0aGUgSFRNTDUgRnJhZ21lbnQgQ2FzZSBwYXJzaW5nIGFsZ29yaXRobToKKyAgICAv
LyBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRp
cGFnZS90aGUtZW5kLmh0bWwjZnJhZ21lbnQtY2FzZQorICAgIC8vIEZvciBlZmZpY2llbmN5LCB3
ZSBza2lwIHN0ZXAgNC4yICgiTGV0IHJvb3QgYmUgYSBuZXcgaHRtbCBlbGVtZW50IHdpdGggbm8g
YXR0cmlidXRlcyIpCisgICAgLy8gYW5kIGluc3RlYWQgdXNlIHRoZSBEb2N1bWVudEZyYWdtZW50
IGFzIGEgcm9vdCBub2RlLgorICAgIG1fdHJlZS5vcGVuRWxlbWVudHMoKS0+cHVzaFJvb3ROb2Rl
KGZyYWdtZW50KTsKKyAgICByZXNldEluc2VydGlvbk1vZGVBcHByb3ByaWF0ZWx5KCk7CisgICAg
aWYgKGNvbnRleHRFbGVtZW50KQogICAgICAgICBtX3RyZWUuc2V0Rm9ybShjbG9zZXN0Rm9ybUFu
Y2VzdG9yKGNvbnRleHRFbGVtZW50KSk7Ci0gICAgfQogfQogCiBIVE1MVHJlZUJ1aWxkZXI6On5I
VE1MVHJlZUJ1aWxkZXIoKQpAQCAtNDEwLDE0ICs0MDcsMTQgQEAgdm9pZCBIVE1MVHJlZUJ1aWxk
ZXI6OmRldGFjaCgpCiAKIEhUTUxUcmVlQnVpbGRlcjo6RnJhZ21lbnRQYXJzaW5nQ29udGV4dDo6
RnJhZ21lbnRQYXJzaW5nQ29udGV4dCgpCiAgICAgOiBtX2ZyYWdtZW50KDApCi0gICAgLCBtX2Nv
bnRleHRFbGVtZW50KDApCisgICAgLCBtX2NvbnRleHRUYWcobnVsbFFOYW1lKCkpCiAgICAgLCBt
X3NjcmlwdGluZ1Blcm1pc3Npb24oRnJhZ21lbnRTY3JpcHRpbmdBbGxvd2VkKQogewogfQogCi1I
VE1MVHJlZUJ1aWxkZXI6OkZyYWdtZW50UGFyc2luZ0NvbnRleHQ6OkZyYWdtZW50UGFyc2luZ0Nv
bnRleHQoRG9jdW1lbnRGcmFnbWVudCogZnJhZ21lbnQsIEVsZW1lbnQqIGNvbnRleHRFbGVtZW50
LCBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24gc2NyaXB0aW5nUGVybWlzc2lvbikKK0hUTUxU
cmVlQnVpbGRlcjo6RnJhZ21lbnRQYXJzaW5nQ29udGV4dDo6RnJhZ21lbnRQYXJzaW5nQ29udGV4
dChEb2N1bWVudEZyYWdtZW50KiBmcmFnbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgY29udGV4
dFRhZywgRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uIHNjcmlwdGluZ1Blcm1pc3Npb24pCiAg
ICAgOiBtX2ZyYWdtZW50KGZyYWdtZW50KQotICAgICwgbV9jb250ZXh0RWxlbWVudChjb250ZXh0
RWxlbWVudCkKKyAgICAsIG1fY29udGV4dFRhZyhjb250ZXh0VGFnKQogICAgICwgbV9zY3JpcHRp
bmdQZXJtaXNzaW9uKHNjcmlwdGluZ1Blcm1pc3Npb24pCiB7CiAgICAgQVNTRVJUKCFmcmFnbWVu
dC0+aGFzQ2hpbGROb2RlcygpKTsKQEAgLTQ0Nyw3ICs0NDQsNyBAQCB2b2lkIEhUTUxUcmVlQnVp
bGRlcjo6Y29uc3RydWN0VHJlZUZyb21Ub2tlbihIVE1MVG9rZW4mIHJhd1Rva2VuKQogICAgIC8v
IHN5bmNocm9ub3VzbHkgcmUtZW50ZXJzIHRoZSBwYXJzZXIuIFdlIGRvbid0IGNsZWFyIHRoZSB0
b2tlbiBpbW1lZGF0ZWx5CiAgICAgLy8gZm9yIENoYXJhY3RlciB0b2tlbnMgYmVjYXVzZSB0aGUg
QXRvbWljSFRNTFRva2VuIGF2b2lkcyBjb3B5aW5nIHRoZQogICAgIC8vIGNoYXJhY3RlcnMgYnkg
a2VlcGluZyBhIHBvaW50ZXIgdG8gdGhlIHVuZGVybHlpbmcgYnVmZmVyIGluIHRoZQotICAgIC8v
IEhUTUxUb2tlbi4gRm9ydHVhbnRlbHksIENoYXJhY3RlciB0b2tlbnMgY2FuJ3QgY2F1c2UgdXNl
IHRvIHJlLWVudGVyCisgICAgLy8gSFRNTFRva2VuLiBGb3J0dW5hdGVseSwgQ2hhcmFjdGVyIHRv
a2VucyBjYW4ndCBjYXVzZSB1c2UgdG8gcmUtZW50ZXIKICAgICAvLyB0aGUgcGFyc2VyLgogICAg
IC8vCiAgICAgLy8gRklYTUU6IFN0b3AgY2xlYXJpbmcgdGhlIHJhd1Rva2VuIG9uY2Ugd2Ugc3Rh
cnQgcnVubmluZyB0aGUgcGFyc2VyIG9mZgpAQCAtMTYzMCw2ICsxNjI3LDQ3IEBAIHZvaWQgSFRN
TFRyZWVCdWlsZGVyOjpjYWxsVGhlQWRvcHRpb25BZ2VuY3koQXRvbWljSFRNTFRva2VuJiB0b2tl
bikKICAgICB9CiB9CiAKKy8vIEZJWE1FOiBSZWZlcmVuY2UgdG8gRE9NNCBzcGVjIGRlc2NyaWJp
bmcgdGhlIGZvbGxvd2luZzogVGhlIGltcGxpZWQgY29udGV4dCBlbGVtZW50IG9mCisvLyBEb2N1
bWVudEZyYWdtZW50LmlubmVySFRNTCBpcyBiYXNlZCBvbiB0aGUgaWRlbnRpdHkgb2YgdGhlIHRh
Z05hbWUgb2YgdGhlIGZpcnN0IHN0YXJ0VGFnIHRva2VuIGVuY291bnRlcmVkLgorLy8gRklYTUU6
IEVsZW1lbnQuaW5uZXJIVE1MIGRvZXNuJ3Qgd29yayBmb3IgWE1MIGVsZW1lbnRzLiBXaGVuIGl0
IGlzIGZpeGVkLCB0aGlzIG5lZWRzIHRvIGlkZW5pdGlmeQorLy8gdGFnTmFtZXMgcGFydGljdWxh
ciB0byBlaXRoZXIgbmFtZXNwYWNlIGFuZCBwaWNrIGFuIGFwcHJvcHJpYXRlIGltcGxpZWQgY29u
dGV4dCBlbGVtZW50Lgorc3RhdGljIGNvbnN0IFF1YWxpZmllZE5hbWUmIGdldEltcGxpZWRDb250
ZXh0VGFnKGNvbnN0IEF0b21pY1N0cmluZyYgdGFnTmFtZSkKK3sKKyAgICBpZiAoaXNUYWJsZUJv
ZHlDb250ZXh0VGFnKHRhZ05hbWUpCisgICAgICAgIHx8IHRhZ05hbWUgPT0gY2FwdGlvblRhZwor
ICAgICAgICB8fCB0YWdOYW1lID09IGNvbGdyb3VwVGFnKSB7CisgICAgICAgIHJldHVybiB0YWJs
ZVRhZzsKKyAgICB9CisgICAgaWYgKHRhZ05hbWUgPT0gdHJUYWcpCisgICAgICAgIHJldHVybiB0
Ym9keVRhZzsKKyAgICBpZiAodGFnTmFtZSA9PSBjb2xUYWcpCisgICAgICAgIHJldHVybiBjb2xn
cm91cFRhZzsKKyAgICBpZiAoaXNUYWJsZUNlbGxDb250ZXh0VGFnKHRhZ05hbWUpKQorICAgICAg
ICByZXR1cm4gdHJUYWc7CisgICAgaWYgKHRhZ05hbWUgPT0gaGVhZFRhZyB8fCB0YWdOYW1lID09
IGJvZHlUYWcpCisgICAgICAgIHJldHVybiBodG1sVGFnOworICAgIGlmICh0YWdOYW1lID09IHJw
VGFnIHx8IHRhZ05hbWUgPT0gcnRUYWcpCisgICAgICAgIHJldHVybiBydWJ5VGFnOworCisgICAg
cmV0dXJuIGJvZHlUYWc7Cit9CisKK2Jvb2wgSFRNTFRyZWVCdWlsZGVyOjppbXBsaWVkQ29udGV4
dFRhZyhIVE1MVG9rZW4mIHRva2VuKQoreworICAgIEFTU0VSVChtX2ZyYWdtZW50Q29udGV4dC5m
cmFnbWVudCgpICYmIG1fZnJhZ21lbnRDb250ZXh0LmNvbnRleHRUYWcoKSA9PSBudWxsUU5hbWUo
KSk7CisgICAgaWYgKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6RW5kT2ZGaWxlKSB7
CisgICAgICAgIG1fZnJhZ21lbnRDb250ZXh0LnNldENvbnRleHRUYWcoYm9keVRhZyk7CisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGlmICh0b2tlbi50eXBlKCkgIT0gSFRNTFRv
a2VuVHlwZXM6OlN0YXJ0VGFnKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBtX2ZyYWdt
ZW50Q29udGV4dC5zZXRDb250ZXh0VGFnKGdldEltcGxpZWRDb250ZXh0VGFnKEF0b21pY1N0cmlu
Zyh0b2tlbi5uYW1lKCkuZGF0YSgpLCB0b2tlbi5uYW1lKCkuc2l6ZSgpKSkpOworICAgIHJlc2V0
SW5zZXJ0aW9uTW9kZUFwcHJvcHJpYXRlbHkoKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9p
ZCBIVE1MVHJlZUJ1aWxkZXI6OnJlc2V0SW5zZXJ0aW9uTW9kZUFwcHJvcHJpYXRlbHkoKQogewog
ICAgIC8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsv
bXVsdGlwYWdlL3BhcnNpbmcuaHRtbCNyZXNldC10aGUtaW5zZXJ0aW9uLW1vZGUtYXBwcm9wcmlh
dGVseQpAQCAtMTYzNyw0MCArMTY3NSw0MCBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cmVzZXRJ
bnNlcnRpb25Nb2RlQXBwcm9wcmlhdGVseSgpCiAgICAgSFRNTEVsZW1lbnRTdGFjazo6RWxlbWVu
dFJlY29yZCogbm9kZVJlY29yZCA9IG1fdHJlZS5vcGVuRWxlbWVudHMoKS0+dG9wUmVjb3JkKCk7
CiAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgQ29udGFpbmVyTm9kZSogbm9kZSA9IG5vZGVSZWNv
cmQtPm5vZGUoKTsKKyAgICAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSA9IG5vZGUg
PT0gbV90cmVlLm9wZW5FbGVtZW50cygpLT5yb290Tm9kZSgpID8gbV9mcmFnbWVudENvbnRleHQu
Y29udGV4dFRhZygpIDogbm9kZVJlY29yZC0+ZWxlbWVudCgpLT50YWdRTmFtZSgpOwogICAgICAg
ICBpZiAobm9kZSA9PSBtX3RyZWUub3BlbkVsZW1lbnRzKCktPnJvb3ROb2RlKCkpIHsKICAgICAg
ICAgICAgIEFTU0VSVChpc1BhcnNpbmdGcmFnbWVudCgpKTsKICAgICAgICAgICAgIGxhc3QgPSB0
cnVlOwotICAgICAgICAgICAgbm9kZSA9IG1fZnJhZ21lbnRDb250ZXh0LmNvbnRleHRFbGVtZW50
KCk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUoc2VsZWN0VGFnKSkg
eworICAgICAgICBpZiAodGFnTmFtZS5tYXRjaGVzKHNlbGVjdFRhZykpIHsKICAgICAgICAgICAg
IEFTU0VSVChpc1BhcnNpbmdGcmFnbWVudCgpKTsKICAgICAgICAgICAgIHJldHVybiBzZXRJbnNl
cnRpb25Nb2RlKEluU2VsZWN0TW9kZSk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKG5vZGUtPmhh
c1RhZ05hbWUodGRUYWcpIHx8IG5vZGUtPmhhc1RhZ05hbWUodGhUYWcpKQorICAgICAgICBpZiAo
dGFnTmFtZS5tYXRjaGVzKHRkVGFnKSB8fCB0YWdOYW1lLm1hdGNoZXModGhUYWcpKQogICAgICAg
ICAgICAgcmV0dXJuIHNldEluc2VydGlvbk1vZGUoSW5DZWxsTW9kZSk7Ci0gICAgICAgIGlmIChu
b2RlLT5oYXNUYWdOYW1lKHRyVGFnKSkKKyAgICAgICAgaWYgKHRhZ05hbWUubWF0Y2hlcyh0clRh
ZykpCiAgICAgICAgICAgICByZXR1cm4gc2V0SW5zZXJ0aW9uTW9kZShJblJvd01vZGUpOwotICAg
ICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZSh0Ym9keVRhZykgfHwgbm9kZS0+aGFzVGFnTmFtZSh0
aGVhZFRhZykgfHwgbm9kZS0+aGFzVGFnTmFtZSh0Zm9vdFRhZykpCisgICAgICAgIGlmICh0YWdO
YW1lLm1hdGNoZXModGJvZHlUYWcpIHx8IHRhZ05hbWUubWF0Y2hlcyh0aGVhZFRhZykgfHwgdGFn
TmFtZS5tYXRjaGVzKHRmb290VGFnKSkKICAgICAgICAgICAgIHJldHVybiBzZXRJbnNlcnRpb25N
b2RlKEluVGFibGVCb2R5TW9kZSk7Ci0gICAgICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKGNhcHRp
b25UYWcpKQorICAgICAgICBpZiAodGFnTmFtZS5tYXRjaGVzKGNhcHRpb25UYWcpKQogICAgICAg
ICAgICAgcmV0dXJuIHNldEluc2VydGlvbk1vZGUoSW5DYXB0aW9uTW9kZSk7Ci0gICAgICAgIGlm
IChub2RlLT5oYXNUYWdOYW1lKGNvbGdyb3VwVGFnKSkgeworICAgICAgICBpZiAodGFnTmFtZS5t
YXRjaGVzKGNvbGdyb3VwVGFnKSkgewogICAgICAgICAgICAgQVNTRVJUKGlzUGFyc2luZ0ZyYWdt
ZW50KCkpOwogICAgICAgICAgICAgcmV0dXJuIHNldEluc2VydGlvbk1vZGUoSW5Db2x1bW5Hcm91
cE1vZGUpOwogICAgICAgICB9Ci0gICAgICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKHRhYmxlVGFn
KSkKKyAgICAgICAgaWYgKHRhZ05hbWUubWF0Y2hlcyh0YWJsZVRhZykpCiAgICAgICAgICAgICBy
ZXR1cm4gc2V0SW5zZXJ0aW9uTW9kZShJblRhYmxlTW9kZSk7Ci0gICAgICAgIGlmIChub2RlLT5o
YXNUYWdOYW1lKGhlYWRUYWcpKSB7CisgICAgICAgIGlmICh0YWdOYW1lLm1hdGNoZXMoaGVhZFRh
ZykpIHsKICAgICAgICAgICAgIEFTU0VSVChpc1BhcnNpbmdGcmFnbWVudCgpKTsKICAgICAgICAg
ICAgIHJldHVybiBzZXRJbnNlcnRpb25Nb2RlKEluQm9keU1vZGUpOwogICAgICAgICB9Ci0gICAg
ICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKGJvZHlUYWcpKQorICAgICAgICBpZiAodGFnTmFtZS5t
YXRjaGVzKGJvZHlUYWcpKQogICAgICAgICAgICAgcmV0dXJuIHNldEluc2VydGlvbk1vZGUoSW5C
b2R5TW9kZSk7Ci0gICAgICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKGZyYW1lc2V0VGFnKSkgewor
ICAgICAgICBpZiAodGFnTmFtZS5tYXRjaGVzKGZyYW1lc2V0VGFnKSkgewogICAgICAgICAgICAg
QVNTRVJUKGlzUGFyc2luZ0ZyYWdtZW50KCkpOwogICAgICAgICAgICAgcmV0dXJuIHNldEluc2Vy
dGlvbk1vZGUoSW5GcmFtZXNldE1vZGUpOwogICAgICAgICB9Ci0gICAgICAgIGlmIChub2RlLT5o
YXNUYWdOYW1lKGh0bWxUYWcpKSB7CisgICAgICAgIGlmICh0YWdOYW1lLm1hdGNoZXMoaHRtbFRh
ZykpIHsKICAgICAgICAgICAgIEFTU0VSVChpc1BhcnNpbmdGcmFnbWVudCgpKTsKICAgICAgICAg
ICAgIHJldHVybiBzZXRJbnNlcnRpb25Nb2RlKEJlZm9yZUhlYWRNb2RlKTsKICAgICAgICAgfQpA
QCAtMjc4NSw3ICsyODIzLDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NUb2tlbklu
Rm9yZWlnbkNvbnRlbnQoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKICAgICAgICAgbV90cmVlLmlu
c2VydENvbW1lbnQodG9rZW4pOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBIVE1MVG9rZW5U
eXBlczo6Q2hhcmFjdGVyOiB7Ci0gICAgICAgIFN0cmluZyBjaGFyYWN0ZXJzID0gU3RyaW5nKHRv
a2VuLmNoYXJhY3RlcnMoKS5kYXRhKCksIHRva2VuLmNoYXJhY3RlcnMoKS5zaXplKCkpOworICAg
ICAgICBTdHJpbmcgY2hhcmFjdGVycyA9IFN0cmluZyh0b2tlbi5jaGFyYWN0ZXJEYXRhKCksIHRv
a2VuLmNoYXJhY3RlckRhdGFTaXplKCkpOwogICAgICAgICBtX3RyZWUuaW5zZXJ0VGV4dE5vZGUo
Y2hhcmFjdGVycyk7CiAgICAgICAgIGlmIChtX2ZyYW1lc2V0T2sgJiYgIWlzQWxsV2hpdGVzcGFj
ZU9yUmVwbGFjZW1lbnRDaGFyYWN0ZXJzKGNoYXJhY3RlcnMpKQogICAgICAgICAgICAgbV9mcmFt
ZXNldE9rID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9I
VE1MVHJlZUJ1aWxkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVp
bGRlci5oCmluZGV4IDY0YTkzYjM0ZmZiZjFmMDRhYTBiNzM0MjIzN2M3OWQ5YWRkNWJiMjMuLmIy
ZmFiOWFlZDVmYmRlNmI4YTY4NjFlM2M1YmM5Mjg2MjRhMWI0Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5oCkBAIC01MCw2ICs1MCw3IEBAIGNsYXNz
IERvY3VtZW50RnJhZ21lbnQ7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEhUTUxUb2tlbjsKIGNsYXNz
IEhUTUxEb2N1bWVudDsKK2NsYXNzIFF1YWxpZmllZE5hbWU7CiBjbGFzcyBOb2RlOwogY2xhc3Mg
SFRNTERvY3VtZW50UGFyc2VyOwogCkBAIC04NSw2ICs4Niw5IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgc2V0U2hvdWxkU2tpcExlYWRpbmdOZXdsaW5lKGJvb2wgc2hvdWxkU2tpcCkgeyBtX3Nob3Vs
ZFNraXBMZWFkaW5nTmV3bGluZSA9IHNob3VsZFNraXA7IH0KIAorICAgIGJvb2wgaW1wbGllZENv
bnRleHRUYWcoSFRNTFRva2VuJik7CisgICAgYm9vbCBjYW5Db250aW51ZShIVE1MVG9rZW4mIHRv
a2VuKSB7IHJldHVybiAhbV9mcmFnbWVudENvbnRleHQuZnJhZ21lbnQoKSB8fCBtX2ZyYWdtZW50
Q29udGV4dC5jb250ZXh0VGFnKCkgIT0gbnVsbFFOYW1lKCkgfHwgaW1wbGllZENvbnRleHRUYWco
dG9rZW4pOyB9CisKICAgICBzdGF0aWMgYm9vbCBzY3JpcHRFbmFibGVkKEZyYW1lKik7CiAgICAg
c3RhdGljIGJvb2wgcGx1Z2luc0VuYWJsZWQoRnJhbWUqKTsKIApAQCAtMTk1LDE2ICsxOTksMTcg
QEAgcHJpdmF0ZToKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRnJhZ21lbnRQYXJzaW5n
Q29udGV4dCk7CiAgICAgcHVibGljOgogICAgICAgICBGcmFnbWVudFBhcnNpbmdDb250ZXh0KCk7
Ci0gICAgICAgIEZyYWdtZW50UGFyc2luZ0NvbnRleHQoRG9jdW1lbnRGcmFnbWVudCosIEVsZW1l
bnQqIGNvbnRleHRFbGVtZW50LCBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24pOworICAgICAg
ICBGcmFnbWVudFBhcnNpbmdDb250ZXh0KERvY3VtZW50RnJhZ21lbnQqLCBjb25zdCBRdWFsaWZp
ZWROYW1lJiBjb250ZXh0VGFnLCBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24pOwogICAgICAg
ICB+RnJhZ21lbnRQYXJzaW5nQ29udGV4dCgpOwogCiAgICAgICAgIERvY3VtZW50RnJhZ21lbnQq
IGZyYWdtZW50KCkgY29uc3QgeyByZXR1cm4gbV9mcmFnbWVudDsgfQotICAgICAgICBFbGVtZW50
KiBjb250ZXh0RWxlbWVudCgpIGNvbnN0IHsgQVNTRVJUKG1fZnJhZ21lbnQpOyByZXR1cm4gbV9j
b250ZXh0RWxlbWVudDsgfQorICAgICAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBjb250ZXh0VGFn
KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0VGFnOyB9CisgICAgICAgIHZvaWQgc2V0Q29udGV4
dFRhZyhjb25zdCBRdWFsaWZpZWROYW1lJiBjb250ZXh0VGFnKSB7IG1fY29udGV4dFRhZyA9IGNv
bnRleHRUYWc7IH0KICAgICAgICAgRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uIHNjcmlwdGlu
Z1Blcm1pc3Npb24oKSBjb25zdCB7IEFTU0VSVChtX2ZyYWdtZW50KTsgcmV0dXJuIG1fc2NyaXB0
aW5nUGVybWlzc2lvbjsgfQogCiAgICAgcHJpdmF0ZToKICAgICAgICAgRG9jdW1lbnRGcmFnbWVu
dCogbV9mcmFnbWVudDsKLSAgICAgICAgRWxlbWVudCogbV9jb250ZXh0RWxlbWVudDsKKyAgICAg
ICAgUXVhbGlmaWVkTmFtZSBtX2NvbnRleHRUYWc7CiAKICAgICAgICAgLy8gRnJhZ21lbnRTY3Jp
cHRpbmdOb3RBbGxvd2VkIGNhdXNlcyB0aGUgUGFyc2VyIHRvIHJlbW92ZSBjaGlsZHJlbgogICAg
ICAgICAvLyBmcm9tIDxzY3JpcHQ+IHRhZ3MgKHNvIGphdmFzY3JpcHQgZG9lc24ndCBzaG93IHVw
IGluIHBhc3RlcykuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL01hcmt1
cFRva2VuQmFzZS5oIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9NYXJrdXBUb2tlbkJhc2Uu
aAppbmRleCBjOTYyYTZhYmEzM2E0YjVlNTE0YzFlYTNkZTAxMGM5OGQxYmRlYmYyLi4yNTBkYTE2
ZmEwMmIxMjM0NjRkNmQ3NDUwOTk4MzQ5ZDIxOWU5YmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS94bWwvcGFyc2VyL01hcmt1cFRva2VuQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9wYXJzZXIvTWFya3VwVG9rZW5CYXNlLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNkZWZpbmUgTWFy
a3VwVG9rZW5CYXNlX2gKIAogI2luY2x1ZGUgIkVsZW1lbnRBdHRyaWJ1dGVEYXRhLmgiCisjaW5j
bHVkZSA8d3RmL093bkFycmF5UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiAjaWZu
ZGVmIE5ERUJVRwpAQCAtMzcyLDEyICszNzMsMTUgQEAgcHJvdGVjdGVkOgogICAgIEF0dHJpYnV0
ZSogbV9jdXJyZW50QXR0cmlidXRlOwogfTsKIAorZW51bSBDaGFyYWN0ZXJTdG9yYWdlTW9kZSB7
IEludGVybmFsaXplQ2hhcmFjdGVycywgUmVmZXJlbmNlRXh0ZXJuYWxDaGFyYWN0ZXJzIH07CisK
IHRlbXBsYXRlPHR5cGVuYW1lIFRva2VuPgogY2xhc3MgQXRvbWljTWFya3VwVG9rZW5CYXNlIHsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBdG9taWNNYXJrdXBUb2tlbkJhc2UpOwogcHVibGlj
OgotICAgIEF0b21pY01hcmt1cFRva2VuQmFzZShUb2tlbiogdG9rZW4pCisgICAgQXRvbWljTWFy
a3VwVG9rZW5CYXNlKFRva2VuKiB0b2tlbiwgQ2hhcmFjdGVyU3RvcmFnZU1vZGUgY2hhcmFjdGVy
U3RvcmFnZSA9IFJlZmVyZW5jZUV4dGVybmFsQ2hhcmFjdGVycykKICAgICAgICAgOiBtX3R5cGUo
dG9rZW4tPnR5cGUoKSkKKyAgICAgICAgLCBtX2V4dGVybmFsQ2hhcmFjdGVycygwKQogICAgIHsK
ICAgICAgICAgQVNTRVJUKHRva2VuKTsKIApAQCAtNDAyLDcgKzQwNiwxNSBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICBtX2RhdGEgPSBTdHJpbmcodG9rZW4tPmNvbW1lbnQoKS5kYXRhKCksIHRva2Vu
LT5jb21tZW50KCkuc2l6ZSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFRv
a2VuOjpUeXBlOjpDaGFyYWN0ZXI6Ci0gICAgICAgICAgICBtX2V4dGVybmFsQ2hhcmFjdGVycyA9
ICZ0b2tlbi0+Y2hhcmFjdGVycygpOworICAgICAgICAgICAgaWYgKGNoYXJhY3RlclN0b3JhZ2Ug
PT0gUmVmZXJlbmNlRXh0ZXJuYWxDaGFyYWN0ZXJzKSB7CisgICAgICAgICAgICAgICAgbV9leHRl
cm5hbENoYXJhY3RlcnMgPSAmdG9rZW4tPmNoYXJhY3RlcnMoKTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbV9pbnRlcm5hbENoYXJhY3RlcnNT
aXplID0gdG9rZW4tPmNoYXJhY3RlcnMoKS5zaXplKCk7CisgICAgICAgICAgICBtX2ludGVybmFs
Q2hhcmFjdGVycyA9IGFkb3B0QXJyYXlQdHIobmV3IFVDaGFyW21faW50ZXJuYWxDaGFyYWN0ZXJz
U2l6ZV0pOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1faW50ZXJuYWxD
aGFyYWN0ZXJzU2l6ZTsgaSsrKQorICAgICAgICAgICAgICAgIG1faW50ZXJuYWxDaGFyYWN0ZXJz
W2ldID0gdG9rZW4tPmNoYXJhY3RlcnMoKS5kYXRhKClbaV07CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDU2LDEwICs0NjgsMTYg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9hdHRyaWJ1dGVzOwogICAgIH0KIAotICAgIGNv
bnN0IHR5cGVuYW1lIFRva2VuOjpEYXRhVmVjdG9yJiBjaGFyYWN0ZXJzKCkgY29uc3QKKyAgICBj
b25zdCBVQ2hhciogY2hhcmFjdGVyRGF0YSgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQo
bV90eXBlID09IFRva2VuOjpUeXBlOjpDaGFyYWN0ZXIpOworICAgICAgICByZXR1cm4gbV9leHRl
cm5hbENoYXJhY3RlcnMgPyBtX2V4dGVybmFsQ2hhcmFjdGVycy0+ZGF0YSgpIDogbV9pbnRlcm5h
bENoYXJhY3RlcnMuZ2V0KCk7CisgICAgfQorCisgICAgY29uc3Qgc2l6ZV90IGNoYXJhY3RlckRh
dGFTaXplKCkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVG9rZW46OlR5
cGU6OkNoYXJhY3Rlcik7Ci0gICAgICAgIHJldHVybiAqbV9leHRlcm5hbENoYXJhY3RlcnM7Cisg
ICAgICAgIHJldHVybiBtX2V4dGVybmFsQ2hhcmFjdGVycyA/IG1fZXh0ZXJuYWxDaGFyYWN0ZXJz
LT5zaXplKCkgOiBtX2ludGVybmFsQ2hhcmFjdGVyc1NpemU7CiAgICAgfQogCiAgICAgY29uc3Qg
U3RyaW5nJiBjb21tZW50KCkgY29uc3QKQEAgLTUwMCwxMyArNTE4LDE5IEBAIHByb3RlY3RlZDoK
IAogICAgIC8vICJjaGFyYWN0ZXJzIiBmb3IgQ2hhcmFjdGVyCiAgICAgLy8KLSAgICAvLyBXZSBk
b24ndCB3YW50IHRvIGNvcHkgdGhlIHRoZSBjaGFyYWN0ZXJzIG91dCBvZiB0aGUgVG9rZW4sIHNv
IHdlCi0gICAgLy8ga2VlcCBhIHBvaW50ZXIgdG8gaXRzIGJ1ZmZlciBpbnN0ZWFkLiBUaGlzIGJ1
ZmZlciBpcyBvd25lZCBieSB0aGUKLSAgICAvLyBUb2tlbiBhbmQgY2F1c2VzIGEgbGlmZXRpbWUg
ZGVwZW5kZW5jZSBiZXR3ZWVuIHRoZXNlIG9iamVjdHMuCisgICAgLy8gSW4gc3RlYWR5LXN0YXRl
IGNhc2UsIHdlIGRvbid0IHdhbnQgdG8gY29weSB0aGUgdGhlIGNoYXJhY3RlcnMgb3V0IG9mIHRo
ZQorICAgIC8vIFRva2VuLCBzbyB3ZSBrZWVwIGEgcG9pbnRlciB0byBpdHMgYnVmZmVyIGluc3Rl
YWQuIFRoaXMgYnVmZmVyIGlzIG93bmVkCisgICAgLy8gYnkgdGhlIFRva2VuIGFuZCBjYXVzZXMg
YSBsaWZldGltZSBkZXBlbmRlbmNlIGJldHdlZW4gdGhlc2Ugb2JqZWN0cy4gVGhpcworICAgIC8v
IGlzIHRoZSBiZWhhdmlvciB3aGVuIGNvbnN0cnVjdGVkIHdpdGggUmVmZXJlbmNlRXh0ZXJuYWxD
aGFyYWN0ZXJzLgogICAgIC8vCi0gICAgLy8gRklYTUU6IEFkZCBhIG1lY2hhbmlzbSBmb3IgImlu
dGVybmFsaXppbmciIHRoZSBjaGFyYWN0ZXJzIHdoZW4gdGhlCi0gICAgLy8gICAgICAgIEhUTUxU
b2tlbiBpcyBkZXN0cnVjdGVkLgorICAgIC8vIEluIHRoZSAiaW1wbGllZCBjb250ZXh0IiBmcmFn
bWVudCBjYXNlLCB3ZSBuZWVkIHRvIGxldCB0aGUgdG9rZW5pemVyCisgICAgLy8gc2NhbiBhaGVh
ZCBhbmQgcXVldWUgdG9rZW5zIGZvciBsYXRlciBkZWxpdmVyeS4gSW4gdGhpcyBjYXNlLCB3ZSBt
YWtlIGFuCisgICAgLy8gaW50ZXJuYWwgY29weSBvZiB0aGUgY2hhcmFjdGVycyBzbyB0aGF0IGl0
IGlzIHNhZmUgdG8gbGV0IHRoZSB1bmRlcmx5aW5nCisgICAgLy8gVG9rZW4gYmUgZnJlZWQuIFRo
aXMgaXMgdGhlIGJlaGF2aW9yIHdoZW4gY29uc3RydWN0ZWQgd2l0aAorICAgIC8vIEludGVybmFs
aXplQ2hhcmFjdGVycwogICAgIGNvbnN0IHR5cGVuYW1lIFRva2VuOjpEYXRhVmVjdG9yKiBtX2V4
dGVybmFsQ2hhcmFjdGVyczsKKyAgICBPd25BcnJheVB0cjxVQ2hhcj4gbV9pbnRlcm5hbENoYXJh
Y3RlcnM7CisgICAgc2l6ZV90IG1faW50ZXJuYWxDaGFyYWN0ZXJzU2l6ZTsKIAogICAgIC8vIEZv
ciBET0NUWVBFCiAgICAgT3duUHRyPHR5cGVuYW1lIFRva2VuOjpEb2N0eXBlRGF0YT4gbV9kb2N0
eXBlRGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MVHJlZUJ1
aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxUcmVlQnVpbGRlci5jcHAK
aW5kZXggZGIyMTNjZDYyZWU5M2Q1NDdhZjEzYzU5ZDNmMTAyZjVjZGNjNjc5Ny4uNTFlMTQ4ZGNj
YzE5NzUyNzZjZDg2Y2RmYzlmOGE0ZTYxNDVjYTMwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUveG1sL3BhcnNlci9YTUxUcmVlQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1s
L3BhcnNlci9YTUxUcmVlQnVpbGRlci5jcHAKQEAgLTI3Miw3ICsyNzIsNyBAQCB2b2lkIFhNTFRy
ZWVCdWlsZGVyOjpwcm9jZXNzRW5kVGFnKGNvbnN0IEF0b21pY1hNTFRva2VuJiB0b2tlbikKIAog
dm9pZCBYTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0NoYXJhY3Rlcihjb25zdCBBdG9taWNYTUxUb2tl
biYgdG9rZW4pCiB7Ci0gICAgYXBwZW5kVG9UZXh0KHRva2VuLmNoYXJhY3RlcnMoKS5kYXRhKCks
IHRva2VuLmNoYXJhY3RlcnMoKS5zaXplKCkpOworICAgIGFwcGVuZFRvVGV4dCh0b2tlbi5jaGFy
YWN0ZXJEYXRhKCksIHRva2VuLmNoYXJhY3RlckRhdGFTaXplKCkpOwogfQogCiB2b2lkIFhNTFRy
ZWVCdWlsZGVyOjpwcm9jZXNzQ0RBVEEoY29uc3QgQXRvbWljWE1MVG9rZW4mIHRva2VuKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>141194</attachid>
            <date>2012-05-10 10:23:00 -0700</date>
            <delta_ts>2012-05-16 16:21:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84646-20120510102259.patch</filename>
            <type>text/plain</type>
            <size>29345</size>
            <attacher name="Rafael Weinstein">rafaelw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE2NTYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGU3ZWI4N2E2NzE3NTJh
ZTgyNzc0ZTU4N2EyOWJkYjQ0NzMwMmMwNy4uYWI0MzIxMTYwNWIxYTdiZTgwZmMwOWY4ZGJlYTMz
ZjRlZDg2OTJlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEyLTA0LTIzICBSYWZh
ZWwgV2VpbnN0ZWluICA8cmFmYWVsd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW1wbGVtZW50
IERvY3VtZW50RnJhZ21lbnQuaW5uZXJIVE1MCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04NDY0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIERvY3VtZW50RnJhZ21lbnQuaW5uZXJIVE1MIG5vdyBwYXJzZXMg
YmFzZWQgb24gYW4gImltcGxpZWQgY29udGV4dCBlbGVtZW50IiB3aGljaCBpcyBwaWNrcyBiYXNl
ZAorICAgICAgICBvbiB0aGUgbmFtZSBvZiB0aGUgZmlyc3QgdGFnIHdoaWNoIGFwcGVhcnMgaW4g
dGhlIHByb3ZpZGVkIG1hcmt1cC4KKworICAgICAgICBObyBuZXcgdGVzdHMuIChPT1BTISkKKwor
ICAgICAgICAqIGRvbS9Eb2N1bWVudEZyYWdtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50RnJhZ21lbnQ6OmlubmVySFRNTCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50RnJhZ21lbnQ6OnNldElubmVySFRNTCk6CisgICAgICAgICogZG9t
L0RvY3VtZW50RnJhZ21lbnQuaDoKKyAgICAgICAgKERvY3VtZW50RnJhZ21lbnQpOgorICAgICAg
ICAqIGRvbS9Eb2N1bWVudEZyYWdtZW50LmlkbDoKKyAgICAgICAgKiBkb20vU2hhZG93Um9vdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290OjpzZXRJbm5lckhUTUwpOgorICAgICAg
ICAqIGVkaXRpbmcvbWFya3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZyYWdtZW50
RnJvbVNvdXJjZSk6CisgICAgICAgICogZWRpdGluZy9tYXJrdXAuaDoKKyAgICAgICAgKiBodG1s
L0hUTUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjpzZXRJbm5l
ckhUTUwpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OnNldE91dGVySFRNTCk6Cisg
ICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxUcmVlQnVpbGRlcjo6SFRNTFRyZWVCdWlsZGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFnKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxUcmVlQnVpbGRlcjo6cmVzZXRJbnNlcnRpb25Nb2RlQXBwcm9wcmlhdGVseSk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWcpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzQ2hhcmFjdGVyQnVmZmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZE9mRmlsZSk6CisgICAgICAgICog
aHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJl
ZUJ1aWxkZXI6OkZyYWdtZW50UGFyc2luZ0NvbnRleHQ6OmNvbnRleHRFbGVtZW50KToKKwogMjAx
Mi0wNS0wOSAgSm9jaGVuIEVpc2luZ2VyICA8am9jaGVuQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBXaGVuIGNyZWF0aW5nIGEgbmV3IHBhZ2UgZHVyaW5nIGEgbmF2aWdhdGlvbiwgcHJpbWUgdGhl
IGluaXRpYWwgZG9jdW1lbnQgd2l0aCB0aGUgY29ycmVjdCByZWZlcnJlciBwb2xpY3kKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmNwcAppbmRleCBmN2NmYWRmY2M3OWYzMWQ1MTY2
M2VhYWMwNDJiMzQ1ZGE3MzRjMTlhLi45YmNjMzNjNzAxYmI3MGI0ODg1N2UzOTUyNWVhNDdkMGIz
YjUzMWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuY3BwCkBAIC0yOSw2
ICsyOSw3IEBACiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5j
bHVkZSAiWE1MRG9jdW1lbnRQYXJzZXIuaCIKKyNpbmNsdWRlICJtYXJrdXAuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCkBAIC05MCw0ICs5MSwyMSBAQCBib29sIERvY3VtZW50RnJhZ21lbnQ6
OnBhcnNlWE1MKGNvbnN0IFN0cmluZyYgc291cmNlLCBFbGVtZW50KiBjb250ZXh0RWxlbWVudCwg
RgogI2VuZGlmCiB9CiAKK1N0cmluZyBEb2N1bWVudEZyYWdtZW50Ojppbm5lckhUTUwoKSBjb25z
dAoreworICAgIHJldHVybiBjcmVhdGVNYXJrdXAodGhpcywgQ2hpbGRyZW5Pbmx5KTsKK30KKwor
dm9pZCBEb2N1bWVudEZyYWdtZW50OjpzZXRJbm5lckhUTUwoY29uc3QgU3RyaW5nJiBodG1sLCBF
eGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoIWRvY3VtZW50KCktPmlzSFRNTERvY3VtZW50
KCkpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGNyZWF0ZUZy
YWdtZW50RnJvbVNvdXJjZShodG1sLCBkb2N1bWVudCgpLCAwIC8qIGNvbnRleHRFbGVtZW50ICov
LCBlYyk7CisgICAgaWYgKGZyYWdtZW50KQorICAgICAgICByZXBsYWNlQ2hpbGRyZW5XaXRoRnJh
Z21lbnQodGhpcywgZnJhZ21lbnQucmVsZWFzZSgpLCBlYyk7Cit9CisKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnRGcmFnbWVudC5oCmluZGV4IDFlYTRkY2IzMjY1ZmYyYTg2NjhiNDBkZjRmYWY3
M2RmNWUwZTRkNTQuLjVjYzk2YjcyYjc0MmM5MWJkZWZkNGNhMTYwODNjMzNlNDBmNzY3ODMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuaApAQCAtMzgsNiArMzgsOSBAQCBwdWJs
aWM6CiAgICAgCiAgICAgdmlydHVhbCBib29sIGNhbkNvbnRhaW5SYW5nZUVuZFBvaW50KCkgY29u
c3QgeyByZXR1cm4gdHJ1ZTsgfQogCisgICAgU3RyaW5nIGlubmVySFRNTCgpIGNvbnN0OworICAg
IHZvaWQgc2V0SW5uZXJIVE1MKGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKKwogcHJv
dGVjdGVkOgogICAgIERvY3VtZW50RnJhZ21lbnQoRG9jdW1lbnQqLCBDb25zdHJ1Y3Rpb25UeXBl
ID0gQ3JlYXRlQ29udGFpbmVyKTsKICAgICB2aXJ0dWFsIFN0cmluZyBub2RlTmFtZSgpIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuaWRsIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuaWRsCmluZGV4IDg4MmI2MmRiMzll
YjdmMmUwNTA0NzgyMDQ5MmI3ZTkzNjFhOGVkZWQuLmY1ZjU5MTM5NzJkYjdlZDAwNDE4ODJhNjY4
ZWE2MzMxYWNjNzNmZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZy
YWdtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5pZGwK
QEAgLTI1LDYgKzI1LDggQEAgbW9kdWxlIGNvcmUgewogICAgICAgICAgICAgcmFpc2VzKERPTUV4
Y2VwdGlvbik7CiAgICAgICAgIE5vZGVMaXN0IHF1ZXJ5U2VsZWN0b3JBbGwoaW4gRE9NU3RyaW5n
IHNlbGVjdG9ycykKICAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOworICAgICAgICBh
dHRyaWJ1dGUgW1RyZWF0TnVsbEFzPU51bGxTdHJpbmddIERPTVN0cmluZyBpbm5lckhUTUwKKyAg
ICAgICAgICAgIHNldHRlciByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICB9OwogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vUXVhbGlmaWVkTmFtZS5jcHAKaW5kZXggZTA4NTUwNzBhN2NiMzI1MzRjY2JmOGFi
OGQwNTI2NjdkYTMxOWYxNS4uZmFiMWMyYjZiMjcyMzc4ZjZiOWIwN2M4MGE2NDdlMzBjNDg1NjMx
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1lLmNwcApAQCAtMTA0LDYgKzEwNCw3IEBA
IFN0cmluZyBRdWFsaWZpZWROYW1lOjp0b1N0cmluZygpIGNvbnN0CiAKIC8vIEdsb2JhbCBpbml0
IHJvdXRpbmVzCiBERUZJTkVfR0xPQkFMKFF1YWxpZmllZE5hbWUsIGFueU5hbWUsIG51bGxBdG9t
LCBzdGFyQXRvbSwgc3RhckF0b20pCitERUZJTkVfR0xPQkFMKFF1YWxpZmllZE5hbWUsIG51bGxO
YW1lLCBudWxsQXRvbSwgbnVsbEF0b20sIG51bGxBdG9tKQogCiB2b2lkIFF1YWxpZmllZE5hbWU6
OmluaXQoKQogewpAQCAtMTEzLDYgKzExNCw3IEBAIHZvaWQgUXVhbGlmaWVkTmFtZTo6aW5pdCgp
CiAgICAgICAgIAogICAgICAgICBBdG9taWNTdHJpbmc6OmluaXQoKTsKICAgICAgICAgbmV3ICgo
dm9pZCopJmFueU5hbWUpIFF1YWxpZmllZE5hbWUobnVsbEF0b20sIHN0YXJBdG9tLCBzdGFyQXRv
bSk7CisgICAgICAgIG5ldyAoKHZvaWQqKSZudWxsTmFtZSkgUXVhbGlmaWVkTmFtZShudWxsQXRv
bSwgbnVsbEF0b20sIG51bGxBdG9tKTsKICAgICAgICAgaW5pdGlhbGl6ZWQgPSB0cnVlOwogICAg
IH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1lLmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5oCmluZGV4IDYzNmIyYTUxNTBjOWU5ODdj
MDI3ZTc1Njk3OTJkOWJhYzM0YTg5ZTkuLjllZmI4ODEyNzM2OTc2ZTFjNTQzODlhMDM3ZTIxYzA4
YTlmZDc3ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1lLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuaApAQCAtMTA1LDYgKzEwNSw4
IEBAIHByaXZhdGU6CiAjaWZuZGVmIFdFQkNPUkVfUVVBTElGSUVETkFNRV9ISURFX0dMT0JBTFMK
IGV4dGVybiBjb25zdCBRdWFsaWZpZWROYW1lIGFueU5hbWU7CiBpbmxpbmUgY29uc3QgUXVhbGlm
aWVkTmFtZSYgYW55UU5hbWUoKSB7IHJldHVybiBhbnlOYW1lOyB9CitleHRlcm4gY29uc3QgUXVh
bGlmaWVkTmFtZSBudWxsTmFtZTsKK2lubGluZSBjb25zdCBRdWFsaWZpZWROYW1lJiBudWxsUU5h
bWUoKSB7IHJldHVybiBudWxsTmFtZTsgfQogI2VuZGlmCiAKIGlubGluZSBib29sIG9wZXJhdG9y
PT0oY29uc3QgQXRvbWljU3RyaW5nJiBhLCBjb25zdCBRdWFsaWZpZWROYW1lJiBxKSB7IHJldHVy
biBhID09IHEubG9jYWxOYW1lKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9T
aGFkb3dSb290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAppbmRleCBh
YTAzNGJhMzAwZTI3NTYxN2U1YjdmOTVhY2I3NTdhNzM2Njk1NmQ1Li5hMWJlNDJlYWVmYzgzYzYz
NjBkMzVhYTE2NDVhZjgxMTNhNjY4NTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
U2hhZG93Um9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCkBA
IC0xMzcsMTggKzEzNyw2IEBAIFBhc3NSZWZQdHI8Tm9kZT4gU2hhZG93Um9vdDo6Y2xvbmVOb2Rl
KGJvb2wpCiAgICAgcmV0dXJuIDA7CiB9CiAKLVN0cmluZyBTaGFkb3dSb290Ojppbm5lckhUTUwo
KSBjb25zdAotewotICAgIHJldHVybiBjcmVhdGVNYXJrdXAodGhpcywgQ2hpbGRyZW5Pbmx5KTsK
LX0KLQotdm9pZCBTaGFkb3dSb290OjpzZXRJbm5lckhUTUwoY29uc3QgU3RyaW5nJiBtYXJrdXAs
IEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFn
bWVudCA9IGNyZWF0ZUZyYWdtZW50RnJvbVNvdXJjZShtYXJrdXAsIGhvc3QoKSwgZWMpOwotICAg
IGlmIChmcmFnbWVudCkKLSAgICAgICAgcmVwbGFjZUNoaWxkcmVuV2l0aEZyYWdtZW50KHRoaXMs
IGZyYWdtZW50LnJlbGVhc2UoKSwgZWMpOwotfQotCiBET01TZWxlY3Rpb24qIFNoYWRvd1Jvb3Q6
OnNlbGVjdGlvbigpCiB7CiAgICAgaWYgKGRvY3VtZW50KCkgJiYgZG9jdW1lbnQoKS0+ZG9tV2lu
ZG93KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaAppbmRleCBjMDAyNGM3MTY3MzIzMDk5NzBmMWJl
ODE3MDc1MTY4NWZmMDQxOWUwLi5jYjhhMjBjMjNkNWJjZjY1YmQ5MTFhN2IzOWRhY2I2ODVkOWIy
ZDlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgKQEAgLTczLDkgKzczLDYgQEAgcHVibGljOgog
ICAgIEVsZW1lbnQqIGhvc3QoKSBjb25zdCB7IHJldHVybiBzaGFkb3dIb3N0KCk7IH0KICAgICBF
bGVtZW50U2hhZG93KiBvd25lcigpIGNvbnN0OwogCi0gICAgU3RyaW5nIGlubmVySFRNTCgpIGNv
bnN0OwotICAgIHZvaWQgc2V0SW5uZXJIVE1MKGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUm
KTsKLQogICAgIEVsZW1lbnQqIGFjdGl2ZUVsZW1lbnQoKSBjb25zdDsKIAogICAgIERPTVNlbGVj
dGlvbiogc2VsZWN0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93
Um9vdC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5pZGwKaW5kZXggNTUwNTdi
NjgwNmQ1M2IzYzJkNTFjOTczZmY0NWEwY2Y5ZWY4YWJhNy4uODQ5ZTc1NjI0MDY1YTMwMzgxZTg3
MTA5MGQ0MWNkYzk4NGE0MjY1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRv
d1Jvb3QuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmlkbApAQCAtMzcs
OSArMzcsNiBAQCBtb2R1bGUgY29yZSB7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01T
ZWxlY3Rpb24gc2VsZWN0aW9uOwogICAgICAgICBhdHRyaWJ1dGUgYm9vbGVhbiBhcHBseUF1dGhv
clN0eWxlczsKIAotICAgICAgICBhdHRyaWJ1dGUgW1RyZWF0TnVsbEFzPU51bGxTdHJpbmddIERP
TVN0cmluZyBpbm5lckhUTUwKLSAgICAgICAgICAgIHNldHRlciByYWlzZXMoRE9NRXhjZXB0aW9u
KTsKLQogICAgICAgICBFbGVtZW50IGdldEVsZW1lbnRCeUlkKGluIFtPcHRpb25hbD1EZWZhdWx0
SXNVbmRlZmluZWRdIERPTVN0cmluZyBlbGVtZW50SWQpOwogICAgICAgICBOb2RlTGlzdCBnZXRF
bGVtZW50c0J5Q2xhc3NOYW1lKGluIFtPcHRpb25hbD1EZWZhdWx0SXNVbmRlZmluZWRdIERPTVN0
cmluZyBjbGFzc05hbWUpOwogICAgICAgICBOb2RlTGlzdCBnZXRFbGVtZW50c0J5VGFnTmFtZShp
biBbT3B0aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVkXSBET01TdHJpbmcgdGFnTmFtZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL21hcmt1cC5jcHAKaW5kZXggZDJjODMzYzY0MDhmYjAxNGZmMDgyMjQ1ZDA3Njkw
ZWM2MWQ3ZWQxNy4uMDQzY2M0MTc3OTIxMDJkM2U0Nzc3Y2JkMTZiNjVkYzVjNWY3NTQ0NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcApAQCAtOTkyLDkgKzk5Miw4IEBAIFN0cmluZyB1cmxU
b01hcmt1cChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUpCiAgICAgcmV0dXJu
IG1hcmt1cC50b1N0cmluZygpOwogfQogCi1QYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNy
ZWF0ZUZyYWdtZW50RnJvbVNvdXJjZShjb25zdCBTdHJpbmcmIG1hcmt1cCwgRWxlbWVudCogY29u
dGV4dEVsZW1lbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdt
ZW50PiBjcmVhdGVGcmFnbWVudEZyb21Tb3VyY2UoY29uc3QgU3RyaW5nJiBtYXJrdXAsIERvY3Vt
ZW50KiBkb2N1bWVudCwgRWxlbWVudCogY29udGV4dEVsZW1lbnQsIEV4Y2VwdGlvbkNvZGUmIGVj
KQogewotICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGNvbnRleHRFbGVtZW50LT5kb2N1bWVudCgp
OwogICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IERvY3VtZW50RnJhZ21l
bnQ6OmNyZWF0ZShkb2N1bWVudCk7CiAKICAgICBpZiAoZG9jdW1lbnQtPmlzSFRNTERvY3VtZW50
KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5oCmluZGV4IDkxOGFlOWIxM2U5MWNhNzhiOGI3YWZh
NGRjZjdkNzZlZDY4NjM5MGQuLjU0ZWQ4YzAxY2VjZTc2NjE5YTc2YTQzNTcyNzU2YjA2ZWZkNmQ3
YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuaApAQCAtNTAsNyArNTAsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVu
dEZyb21NYXJrdXAoRG9jdW1lbnQqLCBjb25zdCBTdHJpbmcmIG1hcmt1cCwgY29uc3QgU3RyaW5n
JiBiYXNlVVJMLCBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24gPSBGcmFnbWVudFNjcmlwdGlu
Z0FsbG93ZWQpOwogICAgIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21l
bnRGcm9tTWFya3VwV2l0aENvbnRleHQoRG9jdW1lbnQqLCBjb25zdCBTdHJpbmcmIG1hcmt1cCwg
dW5zaWduZWQgZnJhZ21lbnRTdGFydCwgdW5zaWduZWQgZnJhZ21lbnRFbmQsIGNvbnN0IFN0cmlu
ZyYgYmFzZVVSTCwgRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uKTsKICAgICBQYXNzUmVmUHRy
PERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJvbU5vZGVzKERvY3VtZW50KiwgY29u
c3QgVmVjdG9yPE5vZGUqPiYpOwotICAgIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3Jl
YXRlRnJhZ21lbnRGcm9tU291cmNlKGNvbnN0IFN0cmluZyYsIEVsZW1lbnQqLCBFeGNlcHRpb25D
b2RlJik7CisgICAgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZy
b21Tb3VyY2UoY29uc3QgU3RyaW5nJiwgRG9jdW1lbnQqLCBFbGVtZW50KiwgRXhjZXB0aW9uQ29k
ZSYpOwogCiAgICAgYm9vbCBpc1BsYWluVGV4dE1hcmt1cChOb2RlICpub2RlKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxFbGVtZW50LmNwcAppbmRleCBkMzY3ZjliYmFhYTg5ODljMDZiZjcwMGQ2MTc4
YTVmMGU2ZWM1ODgwLi44N2JkYzI0NGYwZTA1ZjlhYmJiOWZhMTliMjM1NzZhYmNkM2IzYjU4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcApAQCAtMzQ0LDcgKzM0NCw3IEBAIFN0cmlu
ZyBIVE1MRWxlbWVudDo6b3V0ZXJIVE1MKCkgY29uc3QKIAogdm9pZCBIVE1MRWxlbWVudDo6c2V0
SW5uZXJIVE1MKGNvbnN0IFN0cmluZyYgaHRtbCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAg
UmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRGcm9tU291
cmNlKGh0bWwsIHRoaXMsIGVjKTsKKyAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21l
bnQgPSBjcmVhdGVGcmFnbWVudEZyb21Tb3VyY2UoaHRtbCwgZG9jdW1lbnQoKSwgdGhpcywgZWMp
OwogICAgIGlmIChmcmFnbWVudCkKICAgICAgICAgcmVwbGFjZUNoaWxkcmVuV2l0aEZyYWdtZW50
KHRoaXMsIGZyYWdtZW50LnJlbGVhc2UoKSwgZWMpOwogfQpAQCAtMzc2LDcgKzM3Niw3IEBAIHZv
aWQgSFRNTEVsZW1lbnQ6OnNldE91dGVySFRNTChjb25zdCBTdHJpbmcmIGh0bWwsIEV4Y2VwdGlv
bkNvZGUmIGVjKQogICAgIFJlZlB0cjxOb2RlPiBwcmV2ID0gcHJldmlvdXNTaWJsaW5nKCk7CiAg
ICAgUmVmUHRyPE5vZGU+IG5leHQgPSBuZXh0U2libGluZygpOwogCi0gICAgUmVmUHRyPERvY3Vt
ZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRGcm9tU291cmNlKGh0bWwsIHBh
cmVudC5nZXQoKSwgZWMpOworICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9
IGNyZWF0ZUZyYWdtZW50RnJvbVNvdXJjZShodG1sLCBkb2N1bWVudCgpLCBwYXJlbnQuZ2V0KCks
IGVjKTsKICAgICBpZiAoZWMpCiAgICAgICAgIHJldHVybjsKICAgICAgIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKaW5kZXggN2EwNmI0
MjM5NjkxM2Q5ZDk2ZDRlNTcxZDViMjMzYTkyMzcwNDI5NS4uZjg2ZjczOTBlZWNlZTQ3MjUzZTgz
YzNmODgxNTdjYmNkNWI2Y2JhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCkBAIC0yNzUsNiArMjc1LDIzIEBAIHZvaWQgSFRNTERv
Y3VtZW50UGFyc2VyOjpwdW1wVG9rZW5pemVyKFN5bmNocm9ub3VzTW9kZSBtb2RlKQogICAgICAg
ICAgICAgbV94c3NBdWRpdG9yLmZpbHRlclRva2VuKG1fdG9rZW4pOwogICAgICAgICB9CiAKKyAg
ICAgICAgaWYgKCFtX3RyZWVCdWlsZGVyLT5jYW5Db250aW51ZShtX3Rva2VuKSkgeworICAgICAg
ICAgICAgLy8gVHJlZSBjb25zdHJ1Y3Rpb24gc2hvdWxkIG9ubHkgYmUgYmxvY2tlZCBieSB3YWl0
aW5nIG9uIHRoZSBuZXh0CisgICAgICAgICAgICAvLyBzdGFydCB0YWcuCisgICAgICAgICAgICBB
U1NFUlQobV90b2tlbi50eXBlKCkgIT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnCisgICAgICAg
ICAgICAgICAgICAgJiYgbV90b2tlbi50eXBlKCkgIT0gSFRNTFRva2VuVHlwZXM6OkVuZE9mRmls
ZSk7CisgICAgICAgICAgICBtX3F1ZXVlZEF0b21pY1Rva2Vucy5hcHBlbmQoQXRvbWljSFRNTFRv
a2VuOjpjcmVhdGUobV90b2tlbikpOworICAgICAgICAgICAgbV90b2tlbi5jbGVhcigpOworICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIW1fcXVldWVkQXRv
bWljVG9rZW5zLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgVmVjdG9yPE93blB0cjxBdG9taWNI
VE1MVG9rZW4+ID4gcXVldWVkVG9rZW5zOworICAgICAgICAgICAgcXVldWVkVG9rZW5zLnN3YXAo
bV9xdWV1ZWRBdG9taWNUb2tlbnMpOworICAgICAgICAgICAgZm9yIChWZWN0b3I8T3duUHRyPEF0
b21pY0hUTUxUb2tlbj4gPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBxdWV1ZWRUb2tlbnMuYmVnaW4o
KTsgaXQgIT0gcXVldWVkVG9rZW5zLmVuZCgpOyArK2l0KQorICAgICAgICAgICAgICAgIG1fdHJl
ZUJ1aWxkZXItPmNvbnN0cnVjdFRyZWVGcm9tQXRvbWljVG9rZW4oKihpdC0+Z2V0KCkpKTsKKyAg
ICAgICAgfQorCiAgICAgICAgIG1fdHJlZUJ1aWxkZXItPmNvbnN0cnVjdFRyZWVGcm9tVG9rZW4o
bV90b2tlbik7CiAgICAgICAgIEFTU0VSVChtX3Rva2VuLmlzVW5pbml0aWFsaXplZCgpKTsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQ
YXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5o
CmluZGV4IGVlZTg4MmM3MjRlM2UzYjBkNmRkNzRmYmQ2YTg2ZDVjYjcyMmJhYzQuLjM2Y2NiYTUw
NTBkNWY0MGViY2NlNDdjZGNlNmEwM2U5MWQyZDJiZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5oCkBAIC03MSw3ICs3MSw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHJlc3VtZVBhcnNpbmdBZnRlcllpZWxkKCk7CiAKICAgICBzdGF0aWMgdm9p
ZCBwYXJzZURvY3VtZW50RnJhZ21lbnQoY29uc3QgU3RyaW5nJiwgRG9jdW1lbnRGcmFnbWVudCos
IEVsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24gPSBG
cmFnbWVudFNjcmlwdGluZ0FsbG93ZWQpOwotICAgIAorCiAgICAgc3RhdGljIGJvb2wgdXNlUHJl
SFRNTDVQYXJzZXJRdWlya3MoRG9jdW1lbnQqKTsKICAgICBzdGF0aWMgdW5zaWduZWQgbWF4aW11
bURPTVRyZWVEZXB0aChEb2N1bWVudCopOwogCkBAIC0xNDUsNiArMTQ1LDcgQEAgcHJpdmF0ZToK
ICAgICAvLyBXZSBob2xkIG1fdG9rZW4gaGVyZSBiZWNhdXNlIGl0IG1pZ2h0IGJlIHBhcnRpYWxs
eSBjb21wbGV0ZS4KICAgICBIVE1MVG9rZW4gbV90b2tlbjsKIAorICAgIFZlY3RvcjxPd25QdHI8
QXRvbWljSFRNTFRva2VuPiA+IG1fcXVldWVkQXRvbWljVG9rZW5zOwogICAgIE93blB0cjxIVE1M
VG9rZW5pemVyPiBtX3Rva2VuaXplcjsKICAgICBPd25QdHI8SFRNTFNjcmlwdFJ1bm5lcj4gbV9z
Y3JpcHRSdW5uZXI7CiAgICAgT3duUHRyPEhUTUxUcmVlQnVpbGRlcj4gbV90cmVlQnVpbGRlcjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbi5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuLmgKaW5kZXggNGFjZmVjOWY4NzVmNzY5
OTViYzBhZWFmZTY3YjdiY2EyNjAwYmVhMy4uZDk4OTliOTY1YzYyMzVlYTE2ZmU3MWQ3NTNlZGY1
OGQzZDUyODYxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRv
a2VuLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuLmgKQEAgLTg0
LDcgKzg0LDEyIEBAIHB1YmxpYzoKIGNsYXNzIEF0b21pY0hUTUxUb2tlbiA6IHB1YmxpYyBBdG9t
aWNNYXJrdXBUb2tlbkJhc2U8SFRNTFRva2VuPiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
QXRvbWljSFRNTFRva2VuKTsKIHB1YmxpYzoKLSAgICBBdG9taWNIVE1MVG9rZW4oSFRNTFRva2Vu
JiB0b2tlbikgOiBBdG9taWNNYXJrdXBUb2tlbkJhc2U8SFRNTFRva2VuPigmdG9rZW4pIHsgfQor
ICAgIHN0YXRpYyBQYXNzT3duUHRyPEF0b21pY0hUTUxUb2tlbj4gY3JlYXRlKEhUTUxUb2tlbiYg
dG9rZW4pCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEF0b21pY0hUTUxUb2tl
bih0b2tlbiwgSW50ZXJuYWxpemVDaGFyYWN0ZXJzKSk7CisgICAgfQorCisgICAgQXRvbWljSFRN
TFRva2VuKEhUTUxUb2tlbiYgdG9rZW4sIENoYXJhY3RlclN0b3JhZ2VNb2RlIGNoYXJhY3RlclN0
b3JhZ2UgPSBSZWZlcmVuY2VFeHRlcm5hbENoYXJhY3RlcnMpIDogQXRvbWljTWFya3VwVG9rZW5C
YXNlPEhUTUxUb2tlbj4oJnRva2VuLCBjaGFyYWN0ZXJTdG9yYWdlKSB7IH0KIAogICAgIEF0b21p
Y0hUTUxUb2tlbihIVE1MVG9rZW5UeXBlczo6VHlwZSB0eXBlLCBBdG9taWNTdHJpbmcgbmFtZSwg
Y29uc3QgVmVjdG9yPEF0dHJpYnV0ZT4mIGF0dHJpYnV0ZXMgPSBWZWN0b3I8QXR0cmlidXRlPigp
KQogICAgICAgICA6IEF0b21pY01hcmt1cFRva2VuQmFzZTxIVE1MVG9rZW4+KHR5cGUsIG5hbWUs
IGF0dHJpYnV0ZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
VHJlZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWls
ZGVyLmNwcAppbmRleCA1ZDUzNDJiYjAwNGU2Y2Y0NDljOTg2ZTI0NDhkNTQ0NjY3Zjg2ZmE2Li40
M2Y3YWQ1ZjcyYjUxMTZhOWEwMzRjY2IyNGMyODlhZmYxN2I0MWNjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAKQEAgLTI0OCw4ICsyNDgsOCBA
QCBjbGFzcyBIVE1MVHJlZUJ1aWxkZXI6OkV4dGVybmFsQ2hhcmFjdGVyVG9rZW5CdWZmZXIgewog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEV4dGVybmFsQ2hhcmFjdGVyVG9rZW5CdWZmZXIpOwog
cHVibGljOgogICAgIGV4cGxpY2l0IEV4dGVybmFsQ2hhcmFjdGVyVG9rZW5CdWZmZXIoQXRvbWlj
SFRNTFRva2VuJiB0b2tlbikKLSAgICAgICAgOiBtX2N1cnJlbnQodG9rZW4uY2hhcmFjdGVycygp
LmRhdGEoKSkKLSAgICAgICAgLCBtX2VuZChtX2N1cnJlbnQgKyB0b2tlbi5jaGFyYWN0ZXJzKCku
c2l6ZSgpKQorICAgICAgICA6IG1fY3VycmVudCh0b2tlbi5jaGFyYWN0ZXJEYXRhKCkpCisgICAg
ICAgICwgbV9lbmQobV9jdXJyZW50ICsgdG9rZW4uY2hhcmFjdGVyRGF0YVNpemUoKSkKICAgICB7
CiAgICAgICAgIEFTU0VSVCghaXNFbXB0eSgpKTsKICAgICB9CkBAIC0zNjgsNyArMzY4LDcgQEAg
SFRNTFRyZWVCdWlsZGVyOjpIVE1MVHJlZUJ1aWxkZXIoSFRNTERvY3VtZW50UGFyc2VyKiBwYXJz
ZXIsIEhUTUxEb2N1bWVudCogZG9jdW0KIC8vIG1pbmltaXplIGNvZGUgZHVwbGljYXRpb24gYmV0
d2VlbiB0aGVzZSBjb25zdHJ1Y3RvcnMuCiBIVE1MVHJlZUJ1aWxkZXI6OkhUTUxUcmVlQnVpbGRl
cihIVE1MRG9jdW1lbnRQYXJzZXIqIHBhcnNlciwgRG9jdW1lbnRGcmFnbWVudCogZnJhZ21lbnQs
IEVsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24gc2Ny
aXB0aW5nUGVybWlzc2lvbiwgYm9vbCB1c2VQcmVIVE1MNVBhcnNlclF1aXJrcywgdW5zaWduZWQg
bWF4aW11bURPTVRyZWVEZXB0aCkKICAgICA6IG1fZnJhbWVzZXRPayh0cnVlKQotICAgICwgbV9m
cmFnbWVudENvbnRleHQoZnJhZ21lbnQsIGNvbnRleHRFbGVtZW50LCBzY3JpcHRpbmdQZXJtaXNz
aW9uKQorICAgICwgbV9mcmFnbWVudENvbnRleHQoZnJhZ21lbnQsIGNvbnRleHRFbGVtZW50ID8g
Y29udGV4dEVsZW1lbnQtPnRhZ1FOYW1lKCkgOiBudWxsUU5hbWUoKSwgc2NyaXB0aW5nUGVybWlz
c2lvbikKICAgICAsIG1fZG9jdW1lbnQoZnJhZ21lbnQtPmRvY3VtZW50KCkpCiAgICAgLCBtX3Ry
ZWUoZnJhZ21lbnQsIHNjcmlwdGluZ1Blcm1pc3Npb24sIG1heGltdW1ET01UcmVlRGVwdGgpCiAg
ICAgLCBtX3JlcG9ydEVycm9ycyhmYWxzZSkgLy8gRklYTUU6IFdoeSBub3QgcmVwb3J0IGVycm9y
cyBpbiBmcmFnbWVudHM/CkBAIC0zODEsMTcgKzM4MSwxNCBAQCBIVE1MVHJlZUJ1aWxkZXI6OkhU
TUxUcmVlQnVpbGRlcihIVE1MRG9jdW1lbnRQYXJzZXIqIHBhcnNlciwgRG9jdW1lbnRGcmFnbWVu
dCogZgogICAgICwgbV9sYXN0U2NyaXB0RWxlbWVudFN0YXJ0UG9zaXRpb24oVGV4dFBvc2l0aW9u
OjpiZWxvd1JhbmdlUG9zaXRpb24oKSkKICAgICAsIG1fdXNlUHJlSFRNTDVQYXJzZXJRdWlya3Mo
dXNlUHJlSFRNTDVQYXJzZXJRdWlya3MpCiB7Ci0gICAgLy8gRklYTUU6IFRoaXMgYXNzZXJ0aW9u
IHdpbGwgYmVjb21lIGludmFsaWQgaWYgPGh0dHA6Ly93ZWJraXQub3JnL2IvNjAzMTY+IGlzIGZp
eGVkLgotICAgIEFTU0VSVChjb250ZXh0RWxlbWVudCk7Ci0gICAgaWYgKGNvbnRleHRFbGVtZW50
KSB7Ci0gICAgICAgIC8vIFN0ZXBzIDQuMi00LjYgb2YgdGhlIEhUTUw1IEZyYWdtZW50IENhc2Ug
cGFyc2luZyBhbGdvcml0aG06Ci0gICAgICAgIC8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVj
cy93ZWItYXBwcy9jdXJyZW50LXdvcmsvbXVsdGlwYWdlL3RoZS1lbmQuaHRtbCNmcmFnbWVudC1j
YXNlCi0gICAgICAgIC8vIEZvciBlZmZpY2llbmN5LCB3ZSBza2lwIHN0ZXAgNC4yICgiTGV0IHJv
b3QgYmUgYSBuZXcgaHRtbCBlbGVtZW50IHdpdGggbm8gYXR0cmlidXRlcyIpCi0gICAgICAgIC8v
IGFuZCBpbnN0ZWFkIHVzZSB0aGUgRG9jdW1lbnRGcmFnbWVudCBhcyBhIHJvb3Qgbm9kZS4KLSAg
ICAgICAgbV90cmVlLm9wZW5FbGVtZW50cygpLT5wdXNoUm9vdE5vZGUoZnJhZ21lbnQpOwotICAg
ICAgICByZXNldEluc2VydGlvbk1vZGVBcHByb3ByaWF0ZWx5KCk7CisgICAgLy8gU3RlcHMgNC4y
LTQuNiBvZiB0aGUgSFRNTDUgRnJhZ21lbnQgQ2FzZSBwYXJzaW5nIGFsZ29yaXRobToKKyAgICAv
LyBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRp
cGFnZS90aGUtZW5kLmh0bWwjZnJhZ21lbnQtY2FzZQorICAgIC8vIEZvciBlZmZpY2llbmN5LCB3
ZSBza2lwIHN0ZXAgNC4yICgiTGV0IHJvb3QgYmUgYSBuZXcgaHRtbCBlbGVtZW50IHdpdGggbm8g
YXR0cmlidXRlcyIpCisgICAgLy8gYW5kIGluc3RlYWQgdXNlIHRoZSBEb2N1bWVudEZyYWdtZW50
IGFzIGEgcm9vdCBub2RlLgorICAgIG1fdHJlZS5vcGVuRWxlbWVudHMoKS0+cHVzaFJvb3ROb2Rl
KGZyYWdtZW50KTsKKyAgICByZXNldEluc2VydGlvbk1vZGVBcHByb3ByaWF0ZWx5KCk7CisgICAg
aWYgKGNvbnRleHRFbGVtZW50KQogICAgICAgICBtX3RyZWUuc2V0Rm9ybShjbG9zZXN0Rm9ybUFu
Y2VzdG9yKGNvbnRleHRFbGVtZW50KSk7Ci0gICAgfQogfQogCiBIVE1MVHJlZUJ1aWxkZXI6On5I
VE1MVHJlZUJ1aWxkZXIoKQpAQCAtNDEwLDE0ICs0MDcsMTQgQEAgdm9pZCBIVE1MVHJlZUJ1aWxk
ZXI6OmRldGFjaCgpCiAKIEhUTUxUcmVlQnVpbGRlcjo6RnJhZ21lbnRQYXJzaW5nQ29udGV4dDo6
RnJhZ21lbnRQYXJzaW5nQ29udGV4dCgpCiAgICAgOiBtX2ZyYWdtZW50KDApCi0gICAgLCBtX2Nv
bnRleHRFbGVtZW50KDApCisgICAgLCBtX2NvbnRleHRUYWcobnVsbFFOYW1lKCkpCiAgICAgLCBt
X3NjcmlwdGluZ1Blcm1pc3Npb24oRnJhZ21lbnRTY3JpcHRpbmdBbGxvd2VkKQogewogfQogCi1I
VE1MVHJlZUJ1aWxkZXI6OkZyYWdtZW50UGFyc2luZ0NvbnRleHQ6OkZyYWdtZW50UGFyc2luZ0Nv
bnRleHQoRG9jdW1lbnRGcmFnbWVudCogZnJhZ21lbnQsIEVsZW1lbnQqIGNvbnRleHRFbGVtZW50
LCBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24gc2NyaXB0aW5nUGVybWlzc2lvbikKK0hUTUxU
cmVlQnVpbGRlcjo6RnJhZ21lbnRQYXJzaW5nQ29udGV4dDo6RnJhZ21lbnRQYXJzaW5nQ29udGV4
dChEb2N1bWVudEZyYWdtZW50KiBmcmFnbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgY29udGV4
dFRhZywgRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uIHNjcmlwdGluZ1Blcm1pc3Npb24pCiAg
ICAgOiBtX2ZyYWdtZW50KGZyYWdtZW50KQotICAgICwgbV9jb250ZXh0RWxlbWVudChjb250ZXh0
RWxlbWVudCkKKyAgICAsIG1fY29udGV4dFRhZyhjb250ZXh0VGFnKQogICAgICwgbV9zY3JpcHRp
bmdQZXJtaXNzaW9uKHNjcmlwdGluZ1Blcm1pc3Npb24pCiB7CiAgICAgQVNTRVJUKCFmcmFnbWVu
dC0+aGFzQ2hpbGROb2RlcygpKTsKQEAgLTQ0Nyw3ICs0NDQsNyBAQCB2b2lkIEhUTUxUcmVlQnVp
bGRlcjo6Y29uc3RydWN0VHJlZUZyb21Ub2tlbihIVE1MVG9rZW4mIHJhd1Rva2VuKQogICAgIC8v
IHN5bmNocm9ub3VzbHkgcmUtZW50ZXJzIHRoZSBwYXJzZXIuIFdlIGRvbid0IGNsZWFyIHRoZSB0
b2tlbiBpbW1lZGF0ZWx5CiAgICAgLy8gZm9yIENoYXJhY3RlciB0b2tlbnMgYmVjYXVzZSB0aGUg
QXRvbWljSFRNTFRva2VuIGF2b2lkcyBjb3B5aW5nIHRoZQogICAgIC8vIGNoYXJhY3RlcnMgYnkg
a2VlcGluZyBhIHBvaW50ZXIgdG8gdGhlIHVuZGVybHlpbmcgYnVmZmVyIGluIHRoZQotICAgIC8v
IEhUTUxUb2tlbi4gRm9ydHVhbnRlbHksIENoYXJhY3RlciB0b2tlbnMgY2FuJ3QgY2F1c2UgdXNl
IHRvIHJlLWVudGVyCisgICAgLy8gSFRNTFRva2VuLiBGb3J0dW5hdGVseSwgQ2hhcmFjdGVyIHRv
a2VucyBjYW4ndCBjYXVzZSB1c2UgdG8gcmUtZW50ZXIKICAgICAvLyB0aGUgcGFyc2VyLgogICAg
IC8vCiAgICAgLy8gRklYTUU6IFN0b3AgY2xlYXJpbmcgdGhlIHJhd1Rva2VuIG9uY2Ugd2Ugc3Rh
cnQgcnVubmluZyB0aGUgcGFyc2VyIG9mZgpAQCAtMTYzMCw2ICsxNjI3LDQ3IEBAIHZvaWQgSFRN
TFRyZWVCdWlsZGVyOjpjYWxsVGhlQWRvcHRpb25BZ2VuY3koQXRvbWljSFRNTFRva2VuJiB0b2tl
bikKICAgICB9CiB9CiAKKy8vIEZJWE1FOiBSZWZlcmVuY2UgdG8gRE9NNCBzcGVjIGRlc2NyaWJp
bmcgdGhlIGZvbGxvd2luZzogVGhlIGltcGxpZWQgY29udGV4dCBlbGVtZW50IG9mCisvLyBEb2N1
bWVudEZyYWdtZW50LmlubmVySFRNTCBpcyBiYXNlZCBvbiB0aGUgaWRlbnRpdHkgb2YgdGhlIHRh
Z05hbWUgb2YgdGhlIGZpcnN0IHN0YXJ0VGFnIHRva2VuIGVuY291bnRlcmVkLgorLy8gRklYTUU6
IEVsZW1lbnQuaW5uZXJIVE1MIGRvZXNuJ3Qgd29yayBmb3IgWE1MIGVsZW1lbnRzLiBXaGVuIGl0
IGlzIGZpeGVkLCB0aGlzIG5lZWRzIHRvIGlkZW5pdGlmeQorLy8gdGFnTmFtZXMgcGFydGljdWxh
ciB0byBlaXRoZXIgbmFtZXNwYWNlIGFuZCBwaWNrIGFuIGFwcHJvcHJpYXRlIGltcGxpZWQgY29u
dGV4dCBlbGVtZW50Lgorc3RhdGljIGNvbnN0IFF1YWxpZmllZE5hbWUmIGdldEltcGxpZWRDb250
ZXh0VGFnKGNvbnN0IEF0b21pY1N0cmluZyYgdGFnTmFtZSkKK3sKKyAgICBpZiAoaXNUYWJsZUJv
ZHlDb250ZXh0VGFnKHRhZ05hbWUpCisgICAgICAgIHx8IHRhZ05hbWUgPT0gY2FwdGlvblRhZwor
ICAgICAgICB8fCB0YWdOYW1lID09IGNvbGdyb3VwVGFnKSB7CisgICAgICAgIHJldHVybiB0YWJs
ZVRhZzsKKyAgICB9CisgICAgaWYgKHRhZ05hbWUgPT0gdHJUYWcpCisgICAgICAgIHJldHVybiB0
Ym9keVRhZzsKKyAgICBpZiAodGFnTmFtZSA9PSBjb2xUYWcpCisgICAgICAgIHJldHVybiBjb2xn
cm91cFRhZzsKKyAgICBpZiAoaXNUYWJsZUNlbGxDb250ZXh0VGFnKHRhZ05hbWUpKQorICAgICAg
ICByZXR1cm4gdHJUYWc7CisgICAgaWYgKHRhZ05hbWUgPT0gaGVhZFRhZyB8fCB0YWdOYW1lID09
IGJvZHlUYWcpCisgICAgICAgIHJldHVybiBodG1sVGFnOworICAgIGlmICh0YWdOYW1lID09IHJw
VGFnIHx8IHRhZ05hbWUgPT0gcnRUYWcpCisgICAgICAgIHJldHVybiBydWJ5VGFnOworCisgICAg
cmV0dXJuIGJvZHlUYWc7Cit9CisKK2Jvb2wgSFRNTFRyZWVCdWlsZGVyOjppbXBsaWVkQ29udGV4
dFRhZyhIVE1MVG9rZW4mIHRva2VuKQoreworICAgIEFTU0VSVChtX2ZyYWdtZW50Q29udGV4dC5m
cmFnbWVudCgpICYmIG1fZnJhZ21lbnRDb250ZXh0LmNvbnRleHRUYWcoKSA9PSBudWxsUU5hbWUo
KSk7CisgICAgaWYgKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6RW5kT2ZGaWxlKSB7
CisgICAgICAgIG1fZnJhZ21lbnRDb250ZXh0LnNldENvbnRleHRUYWcoYm9keVRhZyk7CisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGlmICh0b2tlbi50eXBlKCkgIT0gSFRNTFRv
a2VuVHlwZXM6OlN0YXJ0VGFnKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBtX2ZyYWdt
ZW50Q29udGV4dC5zZXRDb250ZXh0VGFnKGdldEltcGxpZWRDb250ZXh0VGFnKEF0b21pY1N0cmlu
Zyh0b2tlbi5uYW1lKCkuZGF0YSgpLCB0b2tlbi5uYW1lKCkuc2l6ZSgpKSkpOworICAgIHJlc2V0
SW5zZXJ0aW9uTW9kZUFwcHJvcHJpYXRlbHkoKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9p
ZCBIVE1MVHJlZUJ1aWxkZXI6OnJlc2V0SW5zZXJ0aW9uTW9kZUFwcHJvcHJpYXRlbHkoKQogewog
ICAgIC8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsv
bXVsdGlwYWdlL3BhcnNpbmcuaHRtbCNyZXNldC10aGUtaW5zZXJ0aW9uLW1vZGUtYXBwcm9wcmlh
dGVseQpAQCAtMTYzNyw0MCArMTY3NSw0MCBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cmVzZXRJ
bnNlcnRpb25Nb2RlQXBwcm9wcmlhdGVseSgpCiAgICAgSFRNTEVsZW1lbnRTdGFjazo6RWxlbWVu
dFJlY29yZCogbm9kZVJlY29yZCA9IG1fdHJlZS5vcGVuRWxlbWVudHMoKS0+dG9wUmVjb3JkKCk7
CiAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgQ29udGFpbmVyTm9kZSogbm9kZSA9IG5vZGVSZWNv
cmQtPm5vZGUoKTsKKyAgICAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSA9IG5vZGUg
PT0gbV90cmVlLm9wZW5FbGVtZW50cygpLT5yb290Tm9kZSgpID8gbV9mcmFnbWVudENvbnRleHQu
Y29udGV4dFRhZygpIDogbm9kZVJlY29yZC0+ZWxlbWVudCgpLT50YWdRTmFtZSgpOwogICAgICAg
ICBpZiAobm9kZSA9PSBtX3RyZWUub3BlbkVsZW1lbnRzKCktPnJvb3ROb2RlKCkpIHsKICAgICAg
ICAgICAgIEFTU0VSVChpc1BhcnNpbmdGcmFnbWVudCgpKTsKICAgICAgICAgICAgIGxhc3QgPSB0
cnVlOwotICAgICAgICAgICAgbm9kZSA9IG1fZnJhZ21lbnRDb250ZXh0LmNvbnRleHRFbGVtZW50
KCk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUoc2VsZWN0VGFnKSkg
eworICAgICAgICBpZiAodGFnTmFtZS5tYXRjaGVzKHNlbGVjdFRhZykpIHsKICAgICAgICAgICAg
IEFTU0VSVChpc1BhcnNpbmdGcmFnbWVudCgpKTsKICAgICAgICAgICAgIHJldHVybiBzZXRJbnNl
cnRpb25Nb2RlKEluU2VsZWN0TW9kZSk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKG5vZGUtPmhh
c1RhZ05hbWUodGRUYWcpIHx8IG5vZGUtPmhhc1RhZ05hbWUodGhUYWcpKQorICAgICAgICBpZiAo
dGFnTmFtZS5tYXRjaGVzKHRkVGFnKSB8fCB0YWdOYW1lLm1hdGNoZXModGhUYWcpKQogICAgICAg
ICAgICAgcmV0dXJuIHNldEluc2VydGlvbk1vZGUoSW5DZWxsTW9kZSk7Ci0gICAgICAgIGlmIChu
b2RlLT5oYXNUYWdOYW1lKHRyVGFnKSkKKyAgICAgICAgaWYgKHRhZ05hbWUubWF0Y2hlcyh0clRh
ZykpCiAgICAgICAgICAgICByZXR1cm4gc2V0SW5zZXJ0aW9uTW9kZShJblJvd01vZGUpOwotICAg
ICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZSh0Ym9keVRhZykgfHwgbm9kZS0+aGFzVGFnTmFtZSh0
aGVhZFRhZykgfHwgbm9kZS0+aGFzVGFnTmFtZSh0Zm9vdFRhZykpCisgICAgICAgIGlmICh0YWdO
YW1lLm1hdGNoZXModGJvZHlUYWcpIHx8IHRhZ05hbWUubWF0Y2hlcyh0aGVhZFRhZykgfHwgdGFn
TmFtZS5tYXRjaGVzKHRmb290VGFnKSkKICAgICAgICAgICAgIHJldHVybiBzZXRJbnNlcnRpb25N
b2RlKEluVGFibGVCb2R5TW9kZSk7Ci0gICAgICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKGNhcHRp
b25UYWcpKQorICAgICAgICBpZiAodGFnTmFtZS5tYXRjaGVzKGNhcHRpb25UYWcpKQogICAgICAg
ICAgICAgcmV0dXJuIHNldEluc2VydGlvbk1vZGUoSW5DYXB0aW9uTW9kZSk7Ci0gICAgICAgIGlm
IChub2RlLT5oYXNUYWdOYW1lKGNvbGdyb3VwVGFnKSkgeworICAgICAgICBpZiAodGFnTmFtZS5t
YXRjaGVzKGNvbGdyb3VwVGFnKSkgewogICAgICAgICAgICAgQVNTRVJUKGlzUGFyc2luZ0ZyYWdt
ZW50KCkpOwogICAgICAgICAgICAgcmV0dXJuIHNldEluc2VydGlvbk1vZGUoSW5Db2x1bW5Hcm91
cE1vZGUpOwogICAgICAgICB9Ci0gICAgICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKHRhYmxlVGFn
KSkKKyAgICAgICAgaWYgKHRhZ05hbWUubWF0Y2hlcyh0YWJsZVRhZykpCiAgICAgICAgICAgICBy
ZXR1cm4gc2V0SW5zZXJ0aW9uTW9kZShJblRhYmxlTW9kZSk7Ci0gICAgICAgIGlmIChub2RlLT5o
YXNUYWdOYW1lKGhlYWRUYWcpKSB7CisgICAgICAgIGlmICh0YWdOYW1lLm1hdGNoZXMoaGVhZFRh
ZykpIHsKICAgICAgICAgICAgIEFTU0VSVChpc1BhcnNpbmdGcmFnbWVudCgpKTsKICAgICAgICAg
ICAgIHJldHVybiBzZXRJbnNlcnRpb25Nb2RlKEluQm9keU1vZGUpOwogICAgICAgICB9Ci0gICAg
ICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKGJvZHlUYWcpKQorICAgICAgICBpZiAodGFnTmFtZS5t
YXRjaGVzKGJvZHlUYWcpKQogICAgICAgICAgICAgcmV0dXJuIHNldEluc2VydGlvbk1vZGUoSW5C
b2R5TW9kZSk7Ci0gICAgICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKGZyYW1lc2V0VGFnKSkgewor
ICAgICAgICBpZiAodGFnTmFtZS5tYXRjaGVzKGZyYW1lc2V0VGFnKSkgewogICAgICAgICAgICAg
QVNTRVJUKGlzUGFyc2luZ0ZyYWdtZW50KCkpOwogICAgICAgICAgICAgcmV0dXJuIHNldEluc2Vy
dGlvbk1vZGUoSW5GcmFtZXNldE1vZGUpOwogICAgICAgICB9Ci0gICAgICAgIGlmIChub2RlLT5o
YXNUYWdOYW1lKGh0bWxUYWcpKSB7CisgICAgICAgIGlmICh0YWdOYW1lLm1hdGNoZXMoaHRtbFRh
ZykpIHsKICAgICAgICAgICAgIEFTU0VSVChpc1BhcnNpbmdGcmFnbWVudCgpKTsKICAgICAgICAg
ICAgIHJldHVybiBzZXRJbnNlcnRpb25Nb2RlKEJlZm9yZUhlYWRNb2RlKTsKICAgICAgICAgfQpA
QCAtMjc4NSw3ICsyODIzLDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NUb2tlbklu
Rm9yZWlnbkNvbnRlbnQoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKICAgICAgICAgbV90cmVlLmlu
c2VydENvbW1lbnQodG9rZW4pOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBIVE1MVG9rZW5U
eXBlczo6Q2hhcmFjdGVyOiB7Ci0gICAgICAgIFN0cmluZyBjaGFyYWN0ZXJzID0gU3RyaW5nKHRv
a2VuLmNoYXJhY3RlcnMoKS5kYXRhKCksIHRva2VuLmNoYXJhY3RlcnMoKS5zaXplKCkpOworICAg
ICAgICBTdHJpbmcgY2hhcmFjdGVycyA9IFN0cmluZyh0b2tlbi5jaGFyYWN0ZXJEYXRhKCksIHRv
a2VuLmNoYXJhY3RlckRhdGFTaXplKCkpOwogICAgICAgICBtX3RyZWUuaW5zZXJ0VGV4dE5vZGUo
Y2hhcmFjdGVycyk7CiAgICAgICAgIGlmIChtX2ZyYW1lc2V0T2sgJiYgIWlzQWxsV2hpdGVzcGFj
ZU9yUmVwbGFjZW1lbnRDaGFyYWN0ZXJzKGNoYXJhY3RlcnMpKQogICAgICAgICAgICAgbV9mcmFt
ZXNldE9rID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9I
VE1MVHJlZUJ1aWxkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVp
bGRlci5oCmluZGV4IDY0YTkzYjM0ZmZiZjFmMDRhYTBiNzM0MjIzN2M3OWQ5YWRkNWJiMjMuLmIy
ZmFiOWFlZDVmYmRlNmI4YTY4NjFlM2M1YmM5Mjg2MjRhMWI0Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5oCkBAIC01MCw2ICs1MCw3IEBAIGNsYXNz
IERvY3VtZW50RnJhZ21lbnQ7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEhUTUxUb2tlbjsKIGNsYXNz
IEhUTUxEb2N1bWVudDsKK2NsYXNzIFF1YWxpZmllZE5hbWU7CiBjbGFzcyBOb2RlOwogY2xhc3Mg
SFRNTERvY3VtZW50UGFyc2VyOwogCkBAIC04NSw2ICs4Niw5IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgc2V0U2hvdWxkU2tpcExlYWRpbmdOZXdsaW5lKGJvb2wgc2hvdWxkU2tpcCkgeyBtX3Nob3Vs
ZFNraXBMZWFkaW5nTmV3bGluZSA9IHNob3VsZFNraXA7IH0KIAorICAgIGJvb2wgaW1wbGllZENv
bnRleHRUYWcoSFRNTFRva2VuJik7CisgICAgYm9vbCBjYW5Db250aW51ZShIVE1MVG9rZW4mIHRv
a2VuKSB7IHJldHVybiAhbV9mcmFnbWVudENvbnRleHQuZnJhZ21lbnQoKSB8fCBtX2ZyYWdtZW50
Q29udGV4dC5jb250ZXh0VGFnKCkgIT0gbnVsbFFOYW1lKCkgfHwgaW1wbGllZENvbnRleHRUYWco
dG9rZW4pOyB9CisKICAgICBzdGF0aWMgYm9vbCBzY3JpcHRFbmFibGVkKEZyYW1lKik7CiAgICAg
c3RhdGljIGJvb2wgcGx1Z2luc0VuYWJsZWQoRnJhbWUqKTsKIApAQCAtMTk1LDE2ICsxOTksMTcg
QEAgcHJpdmF0ZToKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRnJhZ21lbnRQYXJzaW5n
Q29udGV4dCk7CiAgICAgcHVibGljOgogICAgICAgICBGcmFnbWVudFBhcnNpbmdDb250ZXh0KCk7
Ci0gICAgICAgIEZyYWdtZW50UGFyc2luZ0NvbnRleHQoRG9jdW1lbnRGcmFnbWVudCosIEVsZW1l
bnQqIGNvbnRleHRFbGVtZW50LCBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24pOworICAgICAg
ICBGcmFnbWVudFBhcnNpbmdDb250ZXh0KERvY3VtZW50RnJhZ21lbnQqLCBjb25zdCBRdWFsaWZp
ZWROYW1lJiBjb250ZXh0VGFnLCBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24pOwogICAgICAg
ICB+RnJhZ21lbnRQYXJzaW5nQ29udGV4dCgpOwogCiAgICAgICAgIERvY3VtZW50RnJhZ21lbnQq
IGZyYWdtZW50KCkgY29uc3QgeyByZXR1cm4gbV9mcmFnbWVudDsgfQotICAgICAgICBFbGVtZW50
KiBjb250ZXh0RWxlbWVudCgpIGNvbnN0IHsgQVNTRVJUKG1fZnJhZ21lbnQpOyByZXR1cm4gbV9j
b250ZXh0RWxlbWVudDsgfQorICAgICAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBjb250ZXh0VGFn
KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0VGFnOyB9CisgICAgICAgIHZvaWQgc2V0Q29udGV4
dFRhZyhjb25zdCBRdWFsaWZpZWROYW1lJiBjb250ZXh0VGFnKSB7IG1fY29udGV4dFRhZyA9IGNv
bnRleHRUYWc7IH0KICAgICAgICAgRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uIHNjcmlwdGlu
Z1Blcm1pc3Npb24oKSBjb25zdCB7IEFTU0VSVChtX2ZyYWdtZW50KTsgcmV0dXJuIG1fc2NyaXB0
aW5nUGVybWlzc2lvbjsgfQogCiAgICAgcHJpdmF0ZToKICAgICAgICAgRG9jdW1lbnRGcmFnbWVu
dCogbV9mcmFnbWVudDsKLSAgICAgICAgRWxlbWVudCogbV9jb250ZXh0RWxlbWVudDsKKyAgICAg
ICAgUXVhbGlmaWVkTmFtZSBtX2NvbnRleHRUYWc7CiAKICAgICAgICAgLy8gRnJhZ21lbnRTY3Jp
cHRpbmdOb3RBbGxvd2VkIGNhdXNlcyB0aGUgUGFyc2VyIHRvIHJlbW92ZSBjaGlsZHJlbgogICAg
ICAgICAvLyBmcm9tIDxzY3JpcHQ+IHRhZ3MgKHNvIGphdmFzY3JpcHQgZG9lc24ndCBzaG93IHVw
IGluIHBhc3RlcykuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL01hcmt1
cFRva2VuQmFzZS5oIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9NYXJrdXBUb2tlbkJhc2Uu
aAppbmRleCBjOTYyYTZhYmEzM2E0YjVlNTE0YzFlYTNkZTAxMGM5OGQxYmRlYmYyLi4yYmRiZGVl
YzA0OWU1OTJmMjM4Mzk3NThkMDNjZDdmMTY2OTYxMjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS94bWwvcGFyc2VyL01hcmt1cFRva2VuQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9wYXJzZXIvTWFya3VwVG9rZW5CYXNlLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNkZWZpbmUgTWFy
a3VwVG9rZW5CYXNlX2gKIAogI2luY2x1ZGUgIkVsZW1lbnRBdHRyaWJ1dGVEYXRhLmgiCisjaW5j
bHVkZSA8d3RmL093bkFycmF5UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiAjaWZu
ZGVmIE5ERUJVRwpAQCAtMzcyLDEyICszNzMsMTUgQEAgcHJvdGVjdGVkOgogICAgIEF0dHJpYnV0
ZSogbV9jdXJyZW50QXR0cmlidXRlOwogfTsKIAorZW51bSBDaGFyYWN0ZXJTdG9yYWdlTW9kZSB7
IEludGVybmFsaXplQ2hhcmFjdGVycywgUmVmZXJlbmNlRXh0ZXJuYWxDaGFyYWN0ZXJzIH07CisK
IHRlbXBsYXRlPHR5cGVuYW1lIFRva2VuPgogY2xhc3MgQXRvbWljTWFya3VwVG9rZW5CYXNlIHsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBdG9taWNNYXJrdXBUb2tlbkJhc2UpOwogcHVibGlj
OgotICAgIEF0b21pY01hcmt1cFRva2VuQmFzZShUb2tlbiogdG9rZW4pCisgICAgQXRvbWljTWFy
a3VwVG9rZW5CYXNlKFRva2VuKiB0b2tlbiwgQ2hhcmFjdGVyU3RvcmFnZU1vZGUgY2hhcmFjdGVy
U3RvcmFnZSA9IFJlZmVyZW5jZUV4dGVybmFsQ2hhcmFjdGVycykKICAgICAgICAgOiBtX3R5cGUo
dG9rZW4tPnR5cGUoKSkKKyAgICAgICAgLCBtX2V4dGVybmFsQ2hhcmFjdGVycygwKQogICAgIHsK
ICAgICAgICAgQVNTRVJUKHRva2VuKTsKIApAQCAtNDAyLDcgKzQwNiwxNSBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICBtX2RhdGEgPSBTdHJpbmcodG9rZW4tPmNvbW1lbnQoKS5kYXRhKCksIHRva2Vu
LT5jb21tZW50KCkuc2l6ZSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFRv
a2VuOjpUeXBlOjpDaGFyYWN0ZXI6Ci0gICAgICAgICAgICBtX2V4dGVybmFsQ2hhcmFjdGVycyA9
ICZ0b2tlbi0+Y2hhcmFjdGVycygpOworICAgICAgICAgICAgaWYgKGNoYXJhY3RlclN0b3JhZ2Ug
PT0gUmVmZXJlbmNlRXh0ZXJuYWxDaGFyYWN0ZXJzKSB7CisgICAgICAgICAgICAgICAgbV9leHRl
cm5hbENoYXJhY3RlcnMgPSAmdG9rZW4tPmNoYXJhY3RlcnMoKTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbV9pbnRlcm5hbENoYXJhY3RlcnNT
aXplID0gdG9rZW4tPmNoYXJhY3RlcnMoKS5zaXplKCk7CisgICAgICAgICAgICBtX2ludGVybmFs
Q2hhcmFjdGVycyA9IGFkb3B0QXJyYXlQdHIobmV3IFVDaGFyW21faW50ZXJuYWxDaGFyYWN0ZXJz
U2l6ZV0pOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1faW50ZXJuYWxD
aGFyYWN0ZXJzU2l6ZTsgaSsrKQorICAgICAgICAgICAgICAgIG1faW50ZXJuYWxDaGFyYWN0ZXJz
W2ldID0gdG9rZW4tPmNoYXJhY3RlcnMoKS5kYXRhKClbaV07CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDU2LDEwICs0NjgsMTYg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9hdHRyaWJ1dGVzOwogICAgIH0KIAotICAgIGNv
bnN0IHR5cGVuYW1lIFRva2VuOjpEYXRhVmVjdG9yJiBjaGFyYWN0ZXJzKCkgY29uc3QKKyAgICBj
b25zdCBVQ2hhciogY2hhcmFjdGVyRGF0YSgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQo
bV90eXBlID09IFRva2VuOjpUeXBlOjpDaGFyYWN0ZXIpOworICAgICAgICByZXR1cm4gbV9leHRl
cm5hbENoYXJhY3RlcnMgPyBtX2V4dGVybmFsQ2hhcmFjdGVycy0+ZGF0YSgpIDogbV9pbnRlcm5h
bENoYXJhY3RlcnMuZ2V0KCk7CisgICAgfQorCisgICAgc2l6ZV90IGNoYXJhY3RlckRhdGFTaXpl
KCkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVG9rZW46OlR5cGU6OkNo
YXJhY3Rlcik7Ci0gICAgICAgIHJldHVybiAqbV9leHRlcm5hbENoYXJhY3RlcnM7CisgICAgICAg
IHJldHVybiBtX2V4dGVybmFsQ2hhcmFjdGVycyA/IG1fZXh0ZXJuYWxDaGFyYWN0ZXJzLT5zaXpl
KCkgOiBtX2ludGVybmFsQ2hhcmFjdGVyc1NpemU7CiAgICAgfQogCiAgICAgY29uc3QgU3RyaW5n
JiBjb21tZW50KCkgY29uc3QKQEAgLTUwMCwxMyArNTE4LDE5IEBAIHByb3RlY3RlZDoKIAogICAg
IC8vICJjaGFyYWN0ZXJzIiBmb3IgQ2hhcmFjdGVyCiAgICAgLy8KLSAgICAvLyBXZSBkb24ndCB3
YW50IHRvIGNvcHkgdGhlIHRoZSBjaGFyYWN0ZXJzIG91dCBvZiB0aGUgVG9rZW4sIHNvIHdlCi0g
ICAgLy8ga2VlcCBhIHBvaW50ZXIgdG8gaXRzIGJ1ZmZlciBpbnN0ZWFkLiBUaGlzIGJ1ZmZlciBp
cyBvd25lZCBieSB0aGUKLSAgICAvLyBUb2tlbiBhbmQgY2F1c2VzIGEgbGlmZXRpbWUgZGVwZW5k
ZW5jZSBiZXR3ZWVuIHRoZXNlIG9iamVjdHMuCisgICAgLy8gSW4gc3RlYWR5LXN0YXRlIGNhc2Us
IHdlIGRvbid0IHdhbnQgdG8gY29weSB0aGUgdGhlIGNoYXJhY3RlcnMgb3V0IG9mIHRoZQorICAg
IC8vIFRva2VuLCBzbyB3ZSBrZWVwIGEgcG9pbnRlciB0byBpdHMgYnVmZmVyIGluc3RlYWQuIFRo
aXMgYnVmZmVyIGlzIG93bmVkCisgICAgLy8gYnkgdGhlIFRva2VuIGFuZCBjYXVzZXMgYSBsaWZl
dGltZSBkZXBlbmRlbmNlIGJldHdlZW4gdGhlc2Ugb2JqZWN0cy4gVGhpcworICAgIC8vIGlzIHRo
ZSBiZWhhdmlvciB3aGVuIGNvbnN0cnVjdGVkIHdpdGggUmVmZXJlbmNlRXh0ZXJuYWxDaGFyYWN0
ZXJzLgogICAgIC8vCi0gICAgLy8gRklYTUU6IEFkZCBhIG1lY2hhbmlzbSBmb3IgImludGVybmFs
aXppbmciIHRoZSBjaGFyYWN0ZXJzIHdoZW4gdGhlCi0gICAgLy8gICAgICAgIEhUTUxUb2tlbiBp
cyBkZXN0cnVjdGVkLgorICAgIC8vIEluIHRoZSAiaW1wbGllZCBjb250ZXh0IiBmcmFnbWVudCBj
YXNlLCB3ZSBuZWVkIHRvIGxldCB0aGUgdG9rZW5pemVyCisgICAgLy8gc2NhbiBhaGVhZCBhbmQg
cXVldWUgdG9rZW5zIGZvciBsYXRlciBkZWxpdmVyeS4gSW4gdGhpcyBjYXNlLCB3ZSBtYWtlIGFu
CisgICAgLy8gaW50ZXJuYWwgY29weSBvZiB0aGUgY2hhcmFjdGVycyBzbyB0aGF0IGl0IGlzIHNh
ZmUgdG8gbGV0IHRoZSB1bmRlcmx5aW5nCisgICAgLy8gVG9rZW4gYmUgZnJlZWQuIFRoaXMgaXMg
dGhlIGJlaGF2aW9yIHdoZW4gY29uc3RydWN0ZWQgd2l0aAorICAgIC8vIEludGVybmFsaXplQ2hh
cmFjdGVycwogICAgIGNvbnN0IHR5cGVuYW1lIFRva2VuOjpEYXRhVmVjdG9yKiBtX2V4dGVybmFs
Q2hhcmFjdGVyczsKKyAgICBPd25BcnJheVB0cjxVQ2hhcj4gbV9pbnRlcm5hbENoYXJhY3RlcnM7
CisgICAgc2l6ZV90IG1faW50ZXJuYWxDaGFyYWN0ZXJzU2l6ZTsKIAogICAgIC8vIEZvciBET0NU
WVBFCiAgICAgT3duUHRyPHR5cGVuYW1lIFRva2VuOjpEb2N0eXBlRGF0YT4gbV9kb2N0eXBlRGF0
YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MVHJlZUJ1aWxkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxUcmVlQnVpbGRlci5jcHAKaW5kZXgg
ZGIyMTNjZDYyZWU5M2Q1NDdhZjEzYzU5ZDNmMTAyZjVjZGNjNjc5Ny4uNTFlMTQ4ZGNjYzE5NzUy
NzZjZDg2Y2RmYzlmOGE0ZTYxNDVjYTMwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1s
L3BhcnNlci9YTUxUcmVlQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNl
ci9YTUxUcmVlQnVpbGRlci5jcHAKQEAgLTI3Miw3ICsyNzIsNyBAQCB2b2lkIFhNTFRyZWVCdWls
ZGVyOjpwcm9jZXNzRW5kVGFnKGNvbnN0IEF0b21pY1hNTFRva2VuJiB0b2tlbikKIAogdm9pZCBY
TUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0NoYXJhY3Rlcihjb25zdCBBdG9taWNYTUxUb2tlbiYgdG9r
ZW4pCiB7Ci0gICAgYXBwZW5kVG9UZXh0KHRva2VuLmNoYXJhY3RlcnMoKS5kYXRhKCksIHRva2Vu
LmNoYXJhY3RlcnMoKS5zaXplKCkpOworICAgIGFwcGVuZFRvVGV4dCh0b2tlbi5jaGFyYWN0ZXJE
YXRhKCksIHRva2VuLmNoYXJhY3RlckRhdGFTaXplKCkpOwogfQogCiB2b2lkIFhNTFRyZWVCdWls
ZGVyOjpwcm9jZXNzQ0RBVEEoY29uc3QgQXRvbWljWE1MVG9rZW4mIHRva2VuKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>142363</attachid>
            <date>2012-05-16 16:21:48 -0700</date>
            <delta_ts>2012-05-17 11:01:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84646-20120516162147.patch</filename>
            <type>text/plain</type>
            <size>30598</size>
            <attacher name="Rafael Weinstein">rafaelw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE3MzU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjlkOWVhNjQwN2YwMzhh
OGMzNzhmZjk4OGJmN2Y4ZGVmNTc4N2Q4MS4uZTAzOWJkNGUzODJlY2NiZjQ3N2QyMTlhNWI4NDM0
YjZlMWM5N2Y0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDEyLTA1LTE2ICBSYWZh
ZWwgV2VpbnN0ZWluICA8cmFmYWVsd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW1wbGVtZW50
IERvY3VtZW50LnBhcnNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD04NDY0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIERvY3VtZW50LnBhcnNlKCkgbm93IHBhcnNlcyBiYXNlZCBvbiBhbiAiaW1wbGllZCBj
b250ZXh0IGVsZW1lbnQiIHdoaWNoIGl0IHBpY2tzIGJhc2VkIG9uIHRoZSBuYW1lCisgICAgICAg
IG9mIHRoZSBmaXJzdCAobm9uIHN0eWxlLCBzY3JpcHQsIG1ldGEsIGxpbmspIHN0YXJ0IHRhZyB3
aGljaCBhcHBlYXJzIGluIHRoZSBwcm92aWRlZCBtYXJrdXAuCisKKyAgICAgICAgVGVzdDogaHRt
bDVsaWIvcnVuLWRvY3VtZW50LXBhcnNlLmh0bWwKKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpwYXJz
ZSk6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIChEb2N1bWVudCk6CisgICAg
ICAgICogZG9tL0RvY3VtZW50LmlkbDoKKyAgICAgICAgKiBkb20vUXVhbGlmaWVkTmFtZS5jcHA6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlF1YWxpZmllZE5hbWU6Omlu
aXQpOgorICAgICAgICAqIGRvbS9RdWFsaWZpZWROYW1lLmg6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6Om51bGxRTmFtZSk6CisgICAgICAgICogZG9tL1NoYWRvd1Jvb3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6c2V0SW5uZXJIVE1MKToKKyAgICAg
ICAgKiBlZGl0aW5nL21hcmt1cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGcmFnbWVu
dEZyb21Tb3VyY2UpOgorICAgICAgICAqIGVkaXRpbmcvbWFya3VwLmg6CisgICAgICAgICogaHRt
bC9IVE1MRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6c2V0SW5u
ZXJIVE1MKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjpzZXRPdXRlckhUTUwpOgor
ICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTmFtZXM6OnRva2VuaXplclN0YXRlRm9yQ29udGV4dEVsZW1lbnQpOgorICAg
ICAgICAqIGh0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6SFRNTFRyZWVCdWlsZGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6RnJhZ21lbnRQYXJzaW5nQ29udGV4
dDo6RnJhZ21lbnRQYXJzaW5nQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1
aWxkZXI6OmNvbnN0cnVjdFRyZWVGcm9tVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRy
ZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWcpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVC
dWlsZGVyOjpyZXNldEluc2VydGlvbk1vZGVBcHByb3ByaWF0ZWx5KToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRhZyk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NDb21tZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxU
cmVlQnVpbGRlcjo6cHJvY2Vzc0NoYXJhY3RlckJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRPZkZpbGUpOgorICAgICAgICAqIGh0bWwvcGFyc2Vy
L0hUTUxUcmVlQnVpbGRlci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChGcmFnbWVu
dFBhcnNpbmdDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6RnJh
Z21lbnRQYXJzaW5nQ29udGV4dDo6Y29udGV4dFRhZyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
VHJlZUJ1aWxkZXI6OkZyYWdtZW50UGFyc2luZ0NvbnRleHQ6OnNldENvbnRleHRUYWcpOgorCiAy
MDEyLTA1LTE2ICBOb2VsIEdvcmRvbiAgPG5vZWwuZ29yZG9uQGdtYWlsLmNvbT4KIAogICAgICAg
ICBbY2hyb21pdW1dIFJlbW92ZSBJbWFnZURlY29kZXJDRy5jcHAgZnJvbSBwbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBjOGMxN2FlZjZlMDU3N2Rh
YjZhNGIxNmIwY2I3NDVjZGYyYWNiMzY5Li4wZjJkMDViMGU0NTgyOTRlN2ZkNTYzZjRmODhmOWZh
YTdiNzQ2NTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisy
MDEyLTA1LTE2ICBSYWZhZWwgV2VpbnN0ZWluICA8cmFmYWVsd0BjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgSW1wbGVtZW50IERvY3VtZW50LnBhcnNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NDY0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogZmVhdHVyZXMuZ3lwaToKKwogMjAxMi0wNS0xNiAgSm9z
aHVhIEJlbGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0gSW5k
ZXhlZERCOiBXZWJLaXQgQVBJIGZvciBJREJPYmplY3RTdG9yZS5hdXRvSW5jcmVtZW50IHByb3Bl
cnR5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA0MWE2ZGVkYTRkNWU4MjQxZTVhOGU1YzNk
NGI1MzM0MDY4MjNiYzliLi4wMWQ4ZTE1NjdiNjFjZTM4MGU5ZGM0OWE2NmY1MmZiNTI3MWI3YjU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTE2MCw2ICsxNjAsNyBAQAogI2luY2x1ZGUg
IlhQYXRoTlNSZXNvbHZlci5oIgogI2luY2x1ZGUgIlhQYXRoUmVzdWx0LmgiCiAjaW5jbHVkZSAi
aHRtbGVkaXRpbmcuaCIKKyNpbmNsdWRlICJtYXJrdXAuaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVu
dFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaEZ1bmN0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9N
YWluVGhyZWFkLmg+CkBAIC04MjcsNiArODI4LDEzIEBAIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFn
bWVudD4gRG9jdW1lbnQ6OmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKQogICAgIHJldHVybiBEb2N1
bWVudEZyYWdtZW50OjpjcmVhdGUoZG9jdW1lbnQoKSk7CiB9CiAKKyNpZiBFTkFCTEUoSU1QTElF
RF9DT05URVhUX1BBUlNJTkcpCitQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IERvY3VtZW50
OjpwYXJzZShjb25zdCBTdHJpbmcmIGh0bWwsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIHJl
dHVybiBjcmVhdGVGcmFnbWVudEZyb21Tb3VyY2UoaHRtbCwgZG9jdW1lbnQoKSwgMCAvKiBjb250
ZXh0RWxlbWVudCAqLywgZWMpOworfQorI2VuZGlmCisKIFBhc3NSZWZQdHI8VGV4dD4gRG9jdW1l
bnQ6OmNyZWF0ZVRleHROb2RlKGNvbnN0IFN0cmluZyYgZGF0YSkKIHsKICAgICByZXR1cm4gVGV4
dDo6Y3JlYXRlKHRoaXMsIGRhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCBkZjRiNjY0N2Vk
ODE4Zjk0OTlkZWVhZGI5ZDZmNTdjNGEyZmY0MzQ2Li44ODIxMDk3Nzg2YmFlNTViNjdlNWVhNTI0
NDZhMGNiNjlmMDNkMDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMzQ4LDYgKzM0OCw5IEBA
IHB1YmxpYzoKICAgICAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RWxlbWVudD4gY3JlYXRlRWxl
bWVudChjb25zdCBBdG9taWNTdHJpbmcmIHRhZ05hbWUsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBQ
YXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKKyNp
ZiBFTkFCTEUoSU1QTElFRF9DT05URVhUX1BBUlNJTkcpCisgICAgUGFzc1JlZlB0cjxEb2N1bWVu
dEZyYWdtZW50PiBwYXJzZShjb25zdCBTdHJpbmcmIGh0bWwsIEV4Y2VwdGlvbkNvZGUmKTsKKyNl
bmRpZgogICAgIFBhc3NSZWZQdHI8VGV4dD4gY3JlYXRlVGV4dE5vZGUoY29uc3QgU3RyaW5nJiBk
YXRhKTsKICAgICBQYXNzUmVmUHRyPENvbW1lbnQ+IGNyZWF0ZUNvbW1lbnQoY29uc3QgU3RyaW5n
JiBkYXRhKTsKICAgICBQYXNzUmVmUHRyPENEQVRBU2VjdGlvbj4gY3JlYXRlQ0RBVEFTZWN0aW9u
KGNvbnN0IFN0cmluZyYgZGF0YSwgRXhjZXB0aW9uQ29kZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5p
ZGwKaW5kZXggNGU0YjdlM2JmZTFiMWZjOWNkYjMyNGZlOWQ4YjQ3MTViMWRlYmMwNy4uZjQ0M2Iw
M2RkZGI3ODVhM2Q0YTJmM2UzMWViYWRlNzY3M2E2NjA5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
aWRsCkBAIC0zNTYsNiArMzU2LDEwIEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIFtDb25kaXRpb25hbD1QQUdFX1ZJU0lCSUxJVFlfQVBJXSBET01TdHJpbmcgd2Vi
a2l0VmlzaWJpbGl0eVN0YXRlOwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW0NvbmRpdGlv
bmFsPVBBR0VfVklTSUJJTElUWV9BUEldIGJvb2xlYW4gd2Via2l0SGlkZGVuOwogCisjaWYgZGVm
aW5lZChFTkFCTEVfSU1QTElFRF9DT05URVhUX1BBUlNJTkcpICYmIEVOQUJMRV9JTVBMSUVEX0NP
TlRFWFRfUEFSU0lORworICAgICAgICBEb2N1bWVudEZyYWdtZW50IHBhcnNlKGluIFtUcmVhdE51
bGxBcz1OdWxsU3RyaW5nLE9wdGlvbmFsPURlZmF1bHRJc1VuZGVmaW5lZF0gRE9NU3RyaW5nIHRh
Z25hbWUpCisgICAgICAgICAgICByYWlzZXMgKERPTUV4Y2VwdGlvbik7CisjZW5kaWYKICAgICB9
OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5jcHAKaW5kZXggZTA4NTUwNzBhN2Ni
MzI1MzRjY2JmOGFiOGQwNTI2NjdkYTMxOWYxNS4uZmFiMWMyYjZiMjcyMzc4ZjZiOWIwN2M4MGE2
NDdlMzBjNDg1NjMxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1F1YWxpZmllZE5h
bWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1lLmNwcApAQCAtMTA0
LDYgKzEwNCw3IEBAIFN0cmluZyBRdWFsaWZpZWROYW1lOjp0b1N0cmluZygpIGNvbnN0CiAKIC8v
IEdsb2JhbCBpbml0IHJvdXRpbmVzCiBERUZJTkVfR0xPQkFMKFF1YWxpZmllZE5hbWUsIGFueU5h
bWUsIG51bGxBdG9tLCBzdGFyQXRvbSwgc3RhckF0b20pCitERUZJTkVfR0xPQkFMKFF1YWxpZmll
ZE5hbWUsIG51bGxOYW1lLCBudWxsQXRvbSwgbnVsbEF0b20sIG51bGxBdG9tKQogCiB2b2lkIFF1
YWxpZmllZE5hbWU6OmluaXQoKQogewpAQCAtMTEzLDYgKzExNCw3IEBAIHZvaWQgUXVhbGlmaWVk
TmFtZTo6aW5pdCgpCiAgICAgICAgIAogICAgICAgICBBdG9taWNTdHJpbmc6OmluaXQoKTsKICAg
ICAgICAgbmV3ICgodm9pZCopJmFueU5hbWUpIFF1YWxpZmllZE5hbWUobnVsbEF0b20sIHN0YXJB
dG9tLCBzdGFyQXRvbSk7CisgICAgICAgIG5ldyAoKHZvaWQqKSZudWxsTmFtZSkgUXVhbGlmaWVk
TmFtZShudWxsQXRvbSwgbnVsbEF0b20sIG51bGxBdG9tKTsKICAgICAgICAgaW5pdGlhbGl6ZWQg
PSB0cnVlOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9RdWFsaWZp
ZWROYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5oCmluZGV4IDYzNmIy
YTUxNTBjOWU5ODdjMDI3ZTc1Njk3OTJkOWJhYzM0YTg5ZTkuLjllZmI4ODEyNzM2OTc2ZTFjNTQz
ODlhMDM3ZTIxYzA4YTlmZDc3ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9RdWFs
aWZpZWROYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuaApAQCAt
MTA1LDYgKzEwNSw4IEBAIHByaXZhdGU6CiAjaWZuZGVmIFdFQkNPUkVfUVVBTElGSUVETkFNRV9I
SURFX0dMT0JBTFMKIGV4dGVybiBjb25zdCBRdWFsaWZpZWROYW1lIGFueU5hbWU7CiBpbmxpbmUg
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYW55UU5hbWUoKSB7IHJldHVybiBhbnlOYW1lOyB9CitleHRl
cm4gY29uc3QgUXVhbGlmaWVkTmFtZSBudWxsTmFtZTsKK2lubGluZSBjb25zdCBRdWFsaWZpZWRO
YW1lJiBudWxsUU5hbWUoKSB7IHJldHVybiBudWxsTmFtZTsgfQogI2VuZGlmCiAKIGlubGluZSBi
b29sIG9wZXJhdG9yPT0oY29uc3QgQXRvbWljU3RyaW5nJiBhLCBjb25zdCBRdWFsaWZpZWROYW1l
JiBxKSB7IHJldHVybiBhID09IHEubG9jYWxOYW1lKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290
LmNwcAppbmRleCA4MjFlMWIwNTFlNmMyZjBhZmJjODg5ZTc5M2ZjMDhjZDNmOTBmZDBkLi5iOWVj
NmU0NDZlZTFhYzQ4OWUyODNkYmZiZWU2MGQ5MjJmYThlYmRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRv
d1Jvb3QuY3BwCkBAIC0xNDQsNyArMTQ0LDExIEBAIFN0cmluZyBTaGFkb3dSb290Ojppbm5lckhU
TUwoKSBjb25zdAogCiB2b2lkIFNoYWRvd1Jvb3Q6OnNldElubmVySFRNTChjb25zdCBTdHJpbmcm
IG1hcmt1cCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgUmVmUHRyPERvY3VtZW50RnJhZ21l
bnQ+IGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRGcm9tU291cmNlKG1hcmt1cCwgaG9zdCgpLCBl
Yyk7CisjaWYgRU5BQkxFKElNUExJRURfQ09OVEVYVF9QQVJTSU5HKQorICAgIFJlZlB0cjxEb2N1
bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50RnJvbVNvdXJjZShtYXJrdXAs
IGRvY3VtZW50KCksIDAgLyogY29udGV4dEVsZW1lbnQgKi8sIGVjKTsKKyNlbHNlCisgICAgUmVm
UHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRGcm9tU291cmNl
KG1hcmt1cCwgZG9jdW1lbnQoKSwgaG9zdCgpLCBlYyk7CisjZW5kaWYKICAgICBpZiAoZnJhZ21l
bnQpCiAgICAgICAgIHJlcGxhY2VDaGlsZHJlbldpdGhGcmFnbWVudCh0aGlzLCBmcmFnbWVudC5y
ZWxlYXNlKCksIGVjKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFy
a3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAppbmRleCBhMWM1YTMz
NjIxNWQ5ZTY5Yzg2OGM1ODgwMDg1NjhmZDZhNTRjMjE0Li5jODE1NTlhMDEyMzBkMmJiNGU5NDFl
MWUyZTA5ZmUxOTQxZjg3ZGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21h
cmt1cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCkBAIC05OTIs
MTYgKzk5MiwyNyBAQCBTdHJpbmcgdXJsVG9NYXJrdXAoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIHRpdGxlKQogICAgIHJldHVybiBtYXJrdXAudG9TdHJpbmcoKTsKIH0KIAotUGFzc1Jl
ZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZyb21Tb3VyY2UoY29uc3QgU3Ry
aW5nJiBtYXJrdXAsIEVsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBFeGNlcHRpb25Db2RlJiBlYykK
K1Bhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGcm9tU291cmNlKGNv
bnN0IFN0cmluZyYgbWFya3VwLCBEb2N1bWVudCogZG9jdW1lbnQsIEVsZW1lbnQqIGNvbnRleHRF
bGVtZW50LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBj
b250ZXh0RWxlbWVudC0+ZG9jdW1lbnQoKTsKICAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4g
ZnJhZ21lbnQgPSBEb2N1bWVudEZyYWdtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwogCisjaWYgIUVO
QUJMRShJTVBMSUVEX0NPTlRFWFRfUEFSU0lORykKKyAgICBBU1NFUlQoY29udGV4dEVsZW1lbnQp
OworI2VuZGlmCisKICAgICBpZiAoZG9jdW1lbnQtPmlzSFRNTERvY3VtZW50KCkpIHsKICAgICAg
ICAgZnJhZ21lbnQtPnBhcnNlSFRNTChtYXJrdXAsIGNvbnRleHRFbGVtZW50KTsKICAgICAgICAg
cmV0dXJuIGZyYWdtZW50OwogICAgIH0KIAorI2lmIEVOQUJMRShJTVBMSUVEX0NPTlRFWFRfUEFS
U0lORykKKyAgICAvLyBGSVhNRTogSFRNTCBoYXMgbm90IGRlZmluZWQgd2hhdCBpdCBtZWFucyB0
byBwYXJzZSBYTUwgd2l0aG91dCBhIGNvbnRleHQgZWxlbWVudC4KKyAgICBpZiAoIWNvbnRleHRF
bGVtZW50KSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIHJldHVy
biAwOworICAgIH0KKyNlbmRpZgorCiAgICAgYm9vbCB3YXNWYWxpZCA9IGZyYWdtZW50LT5wYXJz
ZVhNTChtYXJrdXAsIGNvbnRleHRFbGVtZW50KTsKICAgICBpZiAoIXdhc1ZhbGlkKSB7CiAgICAg
ICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL21hcmt1cC5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuaAppbmRleCA2
MjVmZDZlYjQzZWQ5NjQzYjUyN2QwZDBjNGRjNWNjNGM1Mzk0NTYxLi44ZTg3MzQ3NmY4YTM1N2I3
ZWUzZDE4MjkyNjFiZTVhOTdkMzQyNDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL21hcmt1cC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmgKQEAgLTUx
LDcgKzUxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIFBhc3NSZWZQdHI8RG9jdW1lbnRG
cmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGcm9tTWFya3VwKERvY3VtZW50KiwgY29uc3QgU3RyaW5n
JiBtYXJrdXAsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNz
aW9uID0gRnJhZ21lbnRTY3JpcHRpbmdBbGxvd2VkKTsKICAgICBQYXNzUmVmUHRyPERvY3VtZW50
RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cFdpdGhDb250ZXh0KERvY3VtZW50Kiwg
Y29uc3QgU3RyaW5nJiBtYXJrdXAsIHVuc2lnbmVkIGZyYWdtZW50U3RhcnQsIHVuc2lnbmVkIGZy
YWdtZW50RW5kLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEZyYWdtZW50U2NyaXB0aW5nUGVybWlz
c2lvbik7CiAgICAgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZy
b21Ob2RlcyhEb2N1bWVudCosIGNvbnN0IFZlY3RvcjxOb2RlKj4mKTsKLSAgICBQYXNzUmVmUHRy
PERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJvbVNvdXJjZShjb25zdCBTdHJpbmcm
LCBFbGVtZW50KiwgRXhjZXB0aW9uQ29kZSYpOworICAgIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFn
bWVudD4gY3JlYXRlRnJhZ21lbnRGcm9tU291cmNlKGNvbnN0IFN0cmluZyYsIERvY3VtZW50Kiwg
RWxlbWVudCosIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIGJvb2wgaXNQbGFpblRleHRNYXJrdXAo
Tm9kZSAqbm9kZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKaW5kZXggMWZhMjQ5
NjAxOGViNzg5NGZhNTdkNjc1NzRlN2U2NDljMDg2ZmVmZi4uNTZhOGUyMTE5OWVhYmE3NTg3ZTFk
NDQyMGI3ZDUwMzY4NDRiMTZmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKQEAg
LTM0Miw3ICszNDIsNyBAQCBTdHJpbmcgSFRNTEVsZW1lbnQ6Om91dGVySFRNTCgpIGNvbnN0CiAK
IHZvaWQgSFRNTEVsZW1lbnQ6OnNldElubmVySFRNTChjb25zdCBTdHJpbmcmIGh0bWwsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogewotICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9
IGNyZWF0ZUZyYWdtZW50RnJvbVNvdXJjZShodG1sLCB0aGlzLCBlYyk7CisgICAgUmVmUHRyPERv
Y3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRGcm9tU291cmNlKGh0bWws
IGRvY3VtZW50KCksIHRoaXMsIGVjKTsKICAgICBpZiAoZnJhZ21lbnQpCiAgICAgICAgIHJlcGxh
Y2VDaGlsZHJlbldpdGhGcmFnbWVudCh0aGlzLCBmcmFnbWVudC5yZWxlYXNlKCksIGVjKTsKIH0K
QEAgLTM3NCw3ICszNzQsNyBAQCB2b2lkIEhUTUxFbGVtZW50OjpzZXRPdXRlckhUTUwoY29uc3Qg
U3RyaW5nJiBodG1sLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICBSZWZQdHI8Tm9kZT4gcHJldiA9
IHByZXZpb3VzU2libGluZygpOwogICAgIFJlZlB0cjxOb2RlPiBuZXh0ID0gbmV4dFNpYmxpbmco
KTsKIAotICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGNyZWF0ZUZyYWdt
ZW50RnJvbVNvdXJjZShodG1sLCBwYXJlbnQuZ2V0KCksIGVjKTsKKyAgICBSZWZQdHI8RG9jdW1l
bnRGcmFnbWVudD4gZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEZyb21Tb3VyY2UoaHRtbCwgZG9j
dW1lbnQoKSwgcGFyZW50LmdldCgpLCBlYyk7CiAgICAgaWYgKGVjKQogICAgICAgICByZXR1cm47
CiAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1
bWVudFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQ
YXJzZXIuY3BwCmluZGV4IDdhMDZiNDIzOTY5MTNkOWQ5NmQ0ZTU3MWQ1YjIzM2E5MjM3MDQyOTUu
LmUxNWM3YjUzMmNlMTE5YjNjZWU5OWYyZWE0YTk2YjQ2ODMxODc5NTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcApAQCAtNTEsNiAr
NTEsMTAgQEAgbmFtZXNwYWNlIHsKIC8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWIt
YXBwcy9jdXJyZW50LXdvcmsvbXVsdGlwYWdlL3RoZS1lbmQuaHRtbCNmcmFnbWVudC1jYXNlCiBI
VE1MVG9rZW5pemVyU3RhdGU6OlN0YXRlIHRva2VuaXplclN0YXRlRm9yQ29udGV4dEVsZW1lbnQo
RWxlbWVudCogY29udGV4dEVsZW1lbnQsIGJvb2wgcmVwb3J0RXJyb3JzKQogeworI2lmICFFTkFC
TEUoSU1QTElFRF9DT05URVhUX1BBUlNJTkcpCisgICAgQVNTRVJUKGNvbnRleHRFbGVtZW50KTsK
KyNlbmRpZgorCiAgICAgaWYgKCFjb250ZXh0RWxlbWVudCkKICAgICAgICAgcmV0dXJuIEhUTUxU
b2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTFRyZWVCdWlsZGVyLmNwcAppbmRleCA1ZDUzNDJiYjAwNGU2Y2Y0NDljOTg2ZTI0NDhk
NTQ0NjY3Zjg2ZmE2Li5jZWY2OWU1YzRhYjk0MjBmNGFmYzhiMjYwNzcwMzgwMzNiMWMyZTIzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAKQEAg
LTI0Miw2ICsyNDIsMzQgQEAgSFRNTEZvcm1FbGVtZW50KiBjbG9zZXN0Rm9ybUFuY2VzdG9yKEVs
ZW1lbnQqIGVsZW1lbnQpCiAgICAgcmV0dXJuIDA7CiB9CiAKKyNpZiBFTkFCTEUoSU1QTElFRF9D
T05URVhUX1BBUlNJTkcpCisvLyBGSVhNRTogUmVmZXJlbmNlIHRvIERPTTQgc3BlYyBkZXNjcmli
aW5nIHRoZSBmb2xsb3dpbmc6IFRoZSBpbXBsaWVkIGNvbnRleHQgZWxlbWVudCBvZgorLy8gRG9j
dW1lbnRGcmFnbWVudC5pbm5lckhUTUwgaXMgYmFzZWQgb24gdGhlIGlkZW50aXR5IG9mIHRoZSB0
YWdOYW1lIG9mIHRoZSBmaXJzdCBzdGFydFRhZyB0b2tlbiBlbmNvdW50ZXJlZAorLy8gd2hpY2gg
aXMgbm90IDxzdHlsZT4sIDxzY3JpcHQ+LCA8bWV0YT4sIG9yIDxsaW5rPi4KKy8vIEZJWE1FOiBF
bGVtZW50LmlubmVySFRNTCBkb2Vzbid0IHdvcmsgZm9yIFhNTCBlbGVtZW50cy4gV2hlbiBpdCBp
cyBmaXhlZCwgdGhpcyBuZWVkcyB0byBpZGVuaXRpZnkKKy8vIHRhZ05hbWVzIHBhcnRpY3VsYXIg
dG8gZWl0aGVyIG5hbWVzcGFjZSBhbmQgcGljayBhbiBhcHByb3ByaWF0ZSBpbXBsaWVkIGNvbnRl
eHQgZWxlbWVudC4KK2NvbnN0IFF1YWxpZmllZE5hbWUmIGdldEltcGxpZWRDb250ZXh0VGFnKGNv
bnN0IEF0b21pY1N0cmluZyYgdGFnTmFtZSkKK3sKKyAgICBpZiAoaXNUYWJsZUJvZHlDb250ZXh0
VGFnKHRhZ05hbWUpCisgICAgICAgIHx8IHRhZ05hbWUgPT0gY2FwdGlvblRhZworICAgICAgICB8
fCB0YWdOYW1lID09IGNvbGdyb3VwVGFnKSB7CisgICAgICAgIHJldHVybiB0YWJsZVRhZzsKKyAg
ICB9CisgICAgaWYgKHRhZ05hbWUgPT0gdHJUYWcpCisgICAgICAgIHJldHVybiB0Ym9keVRhZzsK
KyAgICBpZiAodGFnTmFtZSA9PSBjb2xUYWcpCisgICAgICAgIHJldHVybiBjb2xncm91cFRhZzsK
KyAgICBpZiAoaXNUYWJsZUNlbGxDb250ZXh0VGFnKHRhZ05hbWUpKQorICAgICAgICByZXR1cm4g
dHJUYWc7CisgICAgaWYgKHRhZ05hbWUgPT0gaGVhZFRhZyB8fCB0YWdOYW1lID09IGJvZHlUYWcp
CisgICAgICAgIHJldHVybiBodG1sVGFnOworICAgIGlmICh0YWdOYW1lID09IHJwVGFnIHx8IHRh
Z05hbWUgPT0gcnRUYWcpCisgICAgICAgIHJldHVybiBydWJ5VGFnOworCisgICAgcmV0dXJuIGJv
ZHlUYWc7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UKIAogY2xhc3MgSFRNTFRyZWVCdWls
ZGVyOjpFeHRlcm5hbENoYXJhY3RlclRva2VuQnVmZmVyIHsKQEAgLTM2OCw3ICszOTYsNyBAQCBI
VE1MVHJlZUJ1aWxkZXI6OkhUTUxUcmVlQnVpbGRlcihIVE1MRG9jdW1lbnRQYXJzZXIqIHBhcnNl
ciwgSFRNTERvY3VtZW50KiBkb2N1bQogLy8gbWluaW1pemUgY29kZSBkdXBsaWNhdGlvbiBiZXR3
ZWVuIHRoZXNlIGNvbnN0cnVjdG9ycy4KIEhUTUxUcmVlQnVpbGRlcjo6SFRNTFRyZWVCdWlsZGVy
KEhUTUxEb2N1bWVudFBhcnNlciogcGFyc2VyLCBEb2N1bWVudEZyYWdtZW50KiBmcmFnbWVudCwg
RWxlbWVudCogY29udGV4dEVsZW1lbnQsIEZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbiBzY3Jp
cHRpbmdQZXJtaXNzaW9uLCBib29sIHVzZVByZUhUTUw1UGFyc2VyUXVpcmtzLCB1bnNpZ25lZCBt
YXhpbXVtRE9NVHJlZURlcHRoKQogICAgIDogbV9mcmFtZXNldE9rKHRydWUpCi0gICAgLCBtX2Zy
YWdtZW50Q29udGV4dChmcmFnbWVudCwgY29udGV4dEVsZW1lbnQsIHNjcmlwdGluZ1Blcm1pc3Np
b24pCisgICAgLCBtX2ZyYWdtZW50Q29udGV4dChmcmFnbWVudCwgY29udGV4dEVsZW1lbnQgPyBj
b250ZXh0RWxlbWVudC0+dGFnUU5hbWUoKSA6IG51bGxRTmFtZSgpLCBzY3JpcHRpbmdQZXJtaXNz
aW9uKQogICAgICwgbV9kb2N1bWVudChmcmFnbWVudC0+ZG9jdW1lbnQoKSkKICAgICAsIG1fdHJl
ZShmcmFnbWVudCwgc2NyaXB0aW5nUGVybWlzc2lvbiwgbWF4aW11bURPTVRyZWVEZXB0aCkKICAg
ICAsIG1fcmVwb3J0RXJyb3JzKGZhbHNlKSAvLyBGSVhNRTogV2h5IG5vdCByZXBvcnQgZXJyb3Jz
IGluIGZyYWdtZW50cz8KQEAgLTM4MSwxNyArNDA5LDE4IEBAIEhUTUxUcmVlQnVpbGRlcjo6SFRN
TFRyZWVCdWlsZGVyKEhUTUxEb2N1bWVudFBhcnNlciogcGFyc2VyLCBEb2N1bWVudEZyYWdtZW50
KiBmCiAgICAgLCBtX2xhc3RTY3JpcHRFbGVtZW50U3RhcnRQb3NpdGlvbihUZXh0UG9zaXRpb246
OmJlbG93UmFuZ2VQb3NpdGlvbigpKQogICAgICwgbV91c2VQcmVIVE1MNVBhcnNlclF1aXJrcyh1
c2VQcmVIVE1MNVBhcnNlclF1aXJrcykKIHsKLSAgICAvLyBGSVhNRTogVGhpcyBhc3NlcnRpb24g
d2lsbCBiZWNvbWUgaW52YWxpZCBpZiA8aHR0cDovL3dlYmtpdC5vcmcvYi82MDMxNj4gaXMgZml4
ZWQuCisjaWYgIUVOQUJMRShJTVBMSUVEX0NPTlRFWFRfUEFSU0lORykKICAgICBBU1NFUlQoY29u
dGV4dEVsZW1lbnQpOwotICAgIGlmIChjb250ZXh0RWxlbWVudCkgewotICAgICAgICAvLyBTdGVw
cyA0LjItNC42IG9mIHRoZSBIVE1MNSBGcmFnbWVudCBDYXNlIHBhcnNpbmcgYWxnb3JpdGhtOgot
ICAgICAgICAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13
b3JrL211bHRpcGFnZS90aGUtZW5kLmh0bWwjZnJhZ21lbnQtY2FzZQotICAgICAgICAvLyBGb3Ig
ZWZmaWNpZW5jeSwgd2Ugc2tpcCBzdGVwIDQuMiAoIkxldCByb290IGJlIGEgbmV3IGh0bWwgZWxl
bWVudCB3aXRoIG5vIGF0dHJpYnV0ZXMiKQotICAgICAgICAvLyBhbmQgaW5zdGVhZCB1c2UgdGhl
IERvY3VtZW50RnJhZ21lbnQgYXMgYSByb290IG5vZGUuCi0gICAgICAgIG1fdHJlZS5vcGVuRWxl
bWVudHMoKS0+cHVzaFJvb3ROb2RlKGZyYWdtZW50KTsKLSAgICAgICAgcmVzZXRJbnNlcnRpb25N
b2RlQXBwcm9wcmlhdGVseSgpOworI2VuZGlmCisKKyAgICAvLyBTdGVwcyA0LjItNC42IG9mIHRo
ZSBIVE1MNSBGcmFnbWVudCBDYXNlIHBhcnNpbmcgYWxnb3JpdGhtOgorICAgIC8vIGh0dHA6Ly93
d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvbXVsdGlwYWdlL3RoZS1l
bmQuaHRtbCNmcmFnbWVudC1jYXNlCisgICAgLy8gRm9yIGVmZmljaWVuY3ksIHdlIHNraXAgc3Rl
cCA0LjIgKCJMZXQgcm9vdCBiZSBhIG5ldyBodG1sIGVsZW1lbnQgd2l0aCBubyBhdHRyaWJ1dGVz
IikKKyAgICAvLyBhbmQgaW5zdGVhZCB1c2UgdGhlIERvY3VtZW50RnJhZ21lbnQgYXMgYSByb290
IG5vZGUuCisgICAgbV90cmVlLm9wZW5FbGVtZW50cygpLT5wdXNoUm9vdE5vZGUoZnJhZ21lbnQp
OworICAgIHJlc2V0SW5zZXJ0aW9uTW9kZUFwcHJvcHJpYXRlbHkoKTsKKyAgICBpZiAoY29udGV4
dEVsZW1lbnQpCiAgICAgICAgIG1fdHJlZS5zZXRGb3JtKGNsb3Nlc3RGb3JtQW5jZXN0b3IoY29u
dGV4dEVsZW1lbnQpKTsKLSAgICB9CiB9CiAKIEhUTUxUcmVlQnVpbGRlcjo6fkhUTUxUcmVlQnVp
bGRlcigpCkBAIC00MTAsMTQgKzQzOSwxNCBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6ZGV0YWNo
KCkKIAogSFRNTFRyZWVCdWlsZGVyOjpGcmFnbWVudFBhcnNpbmdDb250ZXh0OjpGcmFnbWVudFBh
cnNpbmdDb250ZXh0KCkKICAgICA6IG1fZnJhZ21lbnQoMCkKLSAgICAsIG1fY29udGV4dEVsZW1l
bnQoMCkKKyAgICAsIG1fY29udGV4dFRhZyhudWxsUU5hbWUoKSkKICAgICAsIG1fc2NyaXB0aW5n
UGVybWlzc2lvbihGcmFnbWVudFNjcmlwdGluZ0FsbG93ZWQpCiB7CiB9CiAKLUhUTUxUcmVlQnVp
bGRlcjo6RnJhZ21lbnRQYXJzaW5nQ29udGV4dDo6RnJhZ21lbnRQYXJzaW5nQ29udGV4dChEb2N1
bWVudEZyYWdtZW50KiBmcmFnbWVudCwgRWxlbWVudCogY29udGV4dEVsZW1lbnQsIEZyYWdtZW50
U2NyaXB0aW5nUGVybWlzc2lvbiBzY3JpcHRpbmdQZXJtaXNzaW9uKQorSFRNTFRyZWVCdWlsZGVy
OjpGcmFnbWVudFBhcnNpbmdDb250ZXh0OjpGcmFnbWVudFBhcnNpbmdDb250ZXh0KERvY3VtZW50
RnJhZ21lbnQqIGZyYWdtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBjb250ZXh0VGFnLCBGcmFn
bWVudFNjcmlwdGluZ1Blcm1pc3Npb24gc2NyaXB0aW5nUGVybWlzc2lvbikKICAgICA6IG1fZnJh
Z21lbnQoZnJhZ21lbnQpCi0gICAgLCBtX2NvbnRleHRFbGVtZW50KGNvbnRleHRFbGVtZW50KQor
ICAgICwgbV9jb250ZXh0VGFnKGNvbnRleHRUYWcpCiAgICAgLCBtX3NjcmlwdGluZ1Blcm1pc3Np
b24oc2NyaXB0aW5nUGVybWlzc2lvbikKIHsKICAgICBBU1NFUlQoIWZyYWdtZW50LT5oYXNDaGls
ZE5vZGVzKCkpOwpAQCAtNDQ3LDcgKzQ3Niw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpjb25z
dHJ1Y3RUcmVlRnJvbVRva2VuKEhUTUxUb2tlbiYgcmF3VG9rZW4pCiAgICAgLy8gc3luY2hyb25v
dXNseSByZS1lbnRlcnMgdGhlIHBhcnNlci4gV2UgZG9uJ3QgY2xlYXIgdGhlIHRva2VuIGltbWVk
YXRlbHkKICAgICAvLyBmb3IgQ2hhcmFjdGVyIHRva2VucyBiZWNhdXNlIHRoZSBBdG9taWNIVE1M
VG9rZW4gYXZvaWRzIGNvcHlpbmcgdGhlCiAgICAgLy8gY2hhcmFjdGVycyBieSBrZWVwaW5nIGEg
cG9pbnRlciB0byB0aGUgdW5kZXJseWluZyBidWZmZXIgaW4gdGhlCi0gICAgLy8gSFRNTFRva2Vu
LiBGb3J0dWFudGVseSwgQ2hhcmFjdGVyIHRva2VucyBjYW4ndCBjYXVzZSB1c2UgdG8gcmUtZW50
ZXIKKyAgICAvLyBIVE1MVG9rZW4uIEZvcnR1bmF0ZWx5LCBDaGFyYWN0ZXIgdG9rZW5zIGNhbid0
IGNhdXNlIHVzZSB0byByZS1lbnRlcgogICAgIC8vIHRoZSBwYXJzZXIuCiAgICAgLy8KICAgICAv
LyBGSVhNRTogU3RvcCBjbGVhcmluZyB0aGUgcmF3VG9rZW4gb25jZSB3ZSBzdGFydCBydW5uaW5n
IHRoZSBwYXJzZXIgb2ZmCkBAIC0xNDUwLDYgKzE0NzksMjcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxk
ZXI6OnByb2Nlc3NTdGFydFRhZyhBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogICAgIGNhc2UgVGV4
dE1vZGU6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKKyAg
ICBjYXNlIEltcGxpZWRDb250ZXh0TW9kZToKKyNpZiBFTkFCTEUoSU1QTElFRF9DT05URVhUX1BB
UlNJTkcpCisgICAgICAgIEFTU0VSVChpc1BhcnNpbmdGcmFnbWVudCgpKTsKKyAgICAgICAgQVNT
RVJUKG1fZnJhZ21lbnRDb250ZXh0LmNvbnRleHRUYWcoKSA9PSBudWxsUU5hbWUoKSk7CisKKyAg
ICAgICAgaWYgKHRva2VuLm5hbWUoKSA9PSBzdHlsZVRhZworICAgICAgICAgICAgfHwgdG9rZW4u
bmFtZSgpID09IHNjcmlwdFRhZworICAgICAgICAgICAgfHwgdG9rZW4ubmFtZSgpID09IG1ldGFU
YWcKKyAgICAgICAgICAgIHx8IHRva2VuLm5hbWUoKSA9PSBsaW5rVGFnKSB7CisKKyAgICAgICAg
ICAgIHByb2Nlc3NTdGFydFRhZ0ZvckluSGVhZCh0b2tlbik7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKworICAgICAgICBtX2ZyYWdtZW50Q29udGV4dC5zZXRDb250ZXh0VGFnKGdl
dEltcGxpZWRDb250ZXh0VGFnKHRva2VuLm5hbWUoKSkpOworICAgICAgICByZXNldEluc2VydGlv
bk1vZGVBcHByb3ByaWF0ZWx5KCk7CisgICAgICAgIHByb2Nlc3NTdGFydFRhZyh0b2tlbik7Cisj
ZWxzZQorICAgICAgICBBU1NFUlQoZmFsc2UpOworI2VuZGlmCisgICAgICAgIGJyZWFrOwogICAg
IH0KIH0KIApAQCAtMTYzNyw0NiArMTY4Nyw0OSBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cmVz
ZXRJbnNlcnRpb25Nb2RlQXBwcm9wcmlhdGVseSgpCiAgICAgSFRNTEVsZW1lbnRTdGFjazo6RWxl
bWVudFJlY29yZCogbm9kZVJlY29yZCA9IG1fdHJlZS5vcGVuRWxlbWVudHMoKS0+dG9wUmVjb3Jk
KCk7CiAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgQ29udGFpbmVyTm9kZSogbm9kZSA9IG5vZGVS
ZWNvcmQtPm5vZGUoKTsKKyAgICAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSA9IG5v
ZGUgPT0gbV90cmVlLm9wZW5FbGVtZW50cygpLT5yb290Tm9kZSgpID8gbV9mcmFnbWVudENvbnRl
eHQuY29udGV4dFRhZygpIDogbm9kZVJlY29yZC0+ZWxlbWVudCgpLT50YWdRTmFtZSgpOwogICAg
ICAgICBpZiAobm9kZSA9PSBtX3RyZWUub3BlbkVsZW1lbnRzKCktPnJvb3ROb2RlKCkpIHsKICAg
ICAgICAgICAgIEFTU0VSVChpc1BhcnNpbmdGcmFnbWVudCgpKTsKICAgICAgICAgICAgIGxhc3Qg
PSB0cnVlOwotICAgICAgICAgICAgbm9kZSA9IG1fZnJhZ21lbnRDb250ZXh0LmNvbnRleHRFbGVt
ZW50KCk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUoc2VsZWN0VGFn
KSkgeworICAgICAgICBpZiAodGFnTmFtZS5tYXRjaGVzKHNlbGVjdFRhZykpIHsKICAgICAgICAg
ICAgIEFTU0VSVChpc1BhcnNpbmdGcmFnbWVudCgpKTsKICAgICAgICAgICAgIHJldHVybiBzZXRJ
bnNlcnRpb25Nb2RlKEluU2VsZWN0TW9kZSk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKG5vZGUt
Pmhhc1RhZ05hbWUodGRUYWcpIHx8IG5vZGUtPmhhc1RhZ05hbWUodGhUYWcpKQorICAgICAgICBp
ZiAodGFnTmFtZS5tYXRjaGVzKHRkVGFnKSB8fCB0YWdOYW1lLm1hdGNoZXModGhUYWcpKQogICAg
ICAgICAgICAgcmV0dXJuIHNldEluc2VydGlvbk1vZGUoSW5DZWxsTW9kZSk7Ci0gICAgICAgIGlm
IChub2RlLT5oYXNUYWdOYW1lKHRyVGFnKSkKKyAgICAgICAgaWYgKHRhZ05hbWUubWF0Y2hlcyh0
clRhZykpCiAgICAgICAgICAgICByZXR1cm4gc2V0SW5zZXJ0aW9uTW9kZShJblJvd01vZGUpOwot
ICAgICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZSh0Ym9keVRhZykgfHwgbm9kZS0+aGFzVGFnTmFt
ZSh0aGVhZFRhZykgfHwgbm9kZS0+aGFzVGFnTmFtZSh0Zm9vdFRhZykpCisgICAgICAgIGlmICh0
YWdOYW1lLm1hdGNoZXModGJvZHlUYWcpIHx8IHRhZ05hbWUubWF0Y2hlcyh0aGVhZFRhZykgfHwg
dGFnTmFtZS5tYXRjaGVzKHRmb290VGFnKSkKICAgICAgICAgICAgIHJldHVybiBzZXRJbnNlcnRp
b25Nb2RlKEluVGFibGVCb2R5TW9kZSk7Ci0gICAgICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKGNh
cHRpb25UYWcpKQorICAgICAgICBpZiAodGFnTmFtZS5tYXRjaGVzKGNhcHRpb25UYWcpKQogICAg
ICAgICAgICAgcmV0dXJuIHNldEluc2VydGlvbk1vZGUoSW5DYXB0aW9uTW9kZSk7Ci0gICAgICAg
IGlmIChub2RlLT5oYXNUYWdOYW1lKGNvbGdyb3VwVGFnKSkgeworICAgICAgICBpZiAodGFnTmFt
ZS5tYXRjaGVzKGNvbGdyb3VwVGFnKSkgewogICAgICAgICAgICAgQVNTRVJUKGlzUGFyc2luZ0Zy
YWdtZW50KCkpOwogICAgICAgICAgICAgcmV0dXJuIHNldEluc2VydGlvbk1vZGUoSW5Db2x1bW5H
cm91cE1vZGUpOwogICAgICAgICB9Ci0gICAgICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKHRhYmxl
VGFnKSkKKyAgICAgICAgaWYgKHRhZ05hbWUubWF0Y2hlcyh0YWJsZVRhZykpCiAgICAgICAgICAg
ICByZXR1cm4gc2V0SW5zZXJ0aW9uTW9kZShJblRhYmxlTW9kZSk7Ci0gICAgICAgIGlmIChub2Rl
LT5oYXNUYWdOYW1lKGhlYWRUYWcpKSB7CisgICAgICAgIGlmICh0YWdOYW1lLm1hdGNoZXMoaGVh
ZFRhZykpIHsKICAgICAgICAgICAgIEFTU0VSVChpc1BhcnNpbmdGcmFnbWVudCgpKTsKICAgICAg
ICAgICAgIHJldHVybiBzZXRJbnNlcnRpb25Nb2RlKEluQm9keU1vZGUpOwogICAgICAgICB9Ci0g
ICAgICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKGJvZHlUYWcpKQorICAgICAgICBpZiAodGFnTmFt
ZS5tYXRjaGVzKGJvZHlUYWcpKQogICAgICAgICAgICAgcmV0dXJuIHNldEluc2VydGlvbk1vZGUo
SW5Cb2R5TW9kZSk7Ci0gICAgICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKGZyYW1lc2V0VGFnKSkg
eworICAgICAgICBpZiAodGFnTmFtZS5tYXRjaGVzKGZyYW1lc2V0VGFnKSkgewogICAgICAgICAg
ICAgQVNTRVJUKGlzUGFyc2luZ0ZyYWdtZW50KCkpOwogICAgICAgICAgICAgcmV0dXJuIHNldElu
c2VydGlvbk1vZGUoSW5GcmFtZXNldE1vZGUpOwogICAgICAgICB9Ci0gICAgICAgIGlmIChub2Rl
LT5oYXNUYWdOYW1lKGh0bWxUYWcpKSB7CisgICAgICAgIGlmICh0YWdOYW1lLm1hdGNoZXMoaHRt
bFRhZykpIHsKICAgICAgICAgICAgIEFTU0VSVChpc1BhcnNpbmdGcmFnbWVudCgpKTsKICAgICAg
ICAgICAgIHJldHVybiBzZXRJbnNlcnRpb25Nb2RlKEJlZm9yZUhlYWRNb2RlKTsKICAgICAgICAg
fQogICAgICAgICBpZiAobGFzdCkgewogICAgICAgICAgICAgQVNTRVJUKGlzUGFyc2luZ0ZyYWdt
ZW50KCkpOwotICAgICAgICAgICAgcmV0dXJuIHNldEluc2VydGlvbk1vZGUoSW5Cb2R5TW9kZSk7
CisjaWYgIUVOQUJMRShJTVBMSUVEX0NPTlRFWFRfUEFSU0lORykKKyAgICAgICAgICAgIEFTU0VS
VCh0YWdOYW1lICE9IG51bGxRTmFtZSgpKTsKKyNlbmRpZgorICAgICAgICAgICAgcmV0dXJuIHNl
dEluc2VydGlvbk1vZGUodGFnTmFtZSA9PSBudWxsUU5hbWUoKSA/IEltcGxpZWRDb250ZXh0TW9k
ZSA6IEluQm9keU1vZGUpOwogICAgICAgICB9CiAgICAgICAgIG5vZGVSZWNvcmQgPSBub2RlUmVj
b3JkLT5uZXh0KCk7CiAgICAgfQpAQCAtMjIyNSw2ICsyMjc4LDEzIEBAIHZvaWQgSFRNTFRyZWVC
dWlsZGVyOjpwcm9jZXNzRW5kVGFnKEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiAgICAgICAgIGRl
ZmF1bHRGb3JJblRhYmxlVGV4dCgpOwogICAgICAgICBwcm9jZXNzRW5kVGFnKHRva2VuKTsKICAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBJbXBsaWVkQ29udGV4dE1vZGU6CisjaWYgRU5BQkxFKElN
UExJRURfQ09OVEVYVF9QQVJTSU5HKQorICAgICAgICBwYXJzZUVycm9yKHRva2VuKTsKKyNlbHNl
CisgICAgICAgIEFTU0VSVChmYWxzZSk7CisjZW5kaWYKKyAgICAgICAgYnJlYWs7CiAgICAgfQog
fQogCkBAIC0yMjM0LDcgKzIyOTQsMTEgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3ND
b21tZW50KEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiAgICAgaWYgKG1faW5zZXJ0aW9uTW9kZSA9
PSBJbml0aWFsTW9kZQogICAgICAgICB8fCBtX2luc2VydGlvbk1vZGUgPT0gQmVmb3JlSFRNTE1v
ZGUKICAgICAgICAgfHwgbV9pbnNlcnRpb25Nb2RlID09IEFmdGVyQWZ0ZXJCb2R5TW9kZQorICAg
ICAgICB8fCBtX2luc2VydGlvbk1vZGUgPT0gSW1wbGllZENvbnRleHRNb2RlCiAgICAgICAgIHx8
IG1faW5zZXJ0aW9uTW9kZSA9PSBBZnRlckFmdGVyRnJhbWVzZXRNb2RlKSB7CisjaWYgIUVOQUJM
RShJTVBMSUVEX0NPTlRFWFRfUEFSU0lORykKKyAgICAgICAgQVNTRVJUKG1faW5zZXJ0aW9uTW9k
ZSAhPSBJbXBsaWVkQ29udGV4dE1vZGUpOworI2VuZGlmCiAgICAgICAgIG1fdHJlZS5pbnNlcnRD
b21tZW50T25Eb2N1bWVudCh0b2tlbik7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yMzI1
LDggKzIzODksMTIgQEAgUmVwcm9jZXNzQnVmZmVyOgogICAgIH0KICAgICBjYXNlIEluQm9keU1v
ZGU6CiAgICAgY2FzZSBJbkNhcHRpb25Nb2RlOgorICAgIGNhc2UgSW1wbGllZENvbnRleHRNb2Rl
OgogICAgIGNhc2UgSW5DZWxsTW9kZTogewotICAgICAgICBBU1NFUlQoaW5zZXJ0aW9uTW9kZSgp
ID09IEluQm9keU1vZGUgfHwgaW5zZXJ0aW9uTW9kZSgpID09IEluQ2FwdGlvbk1vZGUgfHwgaW5z
ZXJ0aW9uTW9kZSgpID09IEluQ2VsbE1vZGUpOworI2lmICFFTkFCTEUoSU1QTElFRF9DT05URVhU
X1BBUlNJTkcpCisgICAgICAgIEFTU0VSVChpbnNlcnRpb25Nb2RlKCkgIT0gSW1wbGllZENvbnRl
eHRNb2RlKQorI2VuZGlmCisgICAgICAgIEFTU0VSVChpbnNlcnRpb25Nb2RlKCkgPT0gSW5Cb2R5
TW9kZSB8fCBpbnNlcnRpb25Nb2RlKCkgPT0gSW5DYXB0aW9uTW9kZSB8fCBpbnNlcnRpb25Nb2Rl
KCkgPT0gSW5DZWxsTW9kZSB8fCBpbnNlcnRpb25Nb2RlKCkgPT0gSW1wbGllZENvbnRleHRNb2Rl
KTsKICAgICAgICAgcHJvY2Vzc0NoYXJhY3RlckJ1ZmZlckZvckluQm9keShidWZmZXIpOwogICAg
ICAgICBicmVhazsKICAgICB9CkBAIC0yNDYwLDggKzI1MjgsMTIgQEAgdm9pZCBIVE1MVHJlZUJ1
aWxkZXI6OnByb2Nlc3NFbmRPZkZpbGUoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKICAgICBjYXNl
IEluQm9keU1vZGU6CiAgICAgY2FzZSBJbkNlbGxNb2RlOgogICAgIGNhc2UgSW5DYXB0aW9uTW9k
ZToKKyAgICBjYXNlIEltcGxpZWRDb250ZXh0TW9kZToKICAgICBjYXNlIEluUm93TW9kZToKLSAg
ICAgICAgQVNTRVJUKGluc2VydGlvbk1vZGUoKSA9PSBJbkJvZHlNb2RlIHx8IGluc2VydGlvbk1v
ZGUoKSA9PSBJbkNlbGxNb2RlIHx8IGluc2VydGlvbk1vZGUoKSA9PSBJbkNhcHRpb25Nb2RlIHx8
IGluc2VydGlvbk1vZGUoKSA9PSBJblJvd01vZGUpOworI2lmICFFTkFCTEUoSU1QTElFRF9DT05U
RVhUX1BBUlNJTkcpCisgICAgICAgIEFTU0VSVChpbnNlcnRpb25Nb2RlKCkgIT0gSW1wbGllZENv
bnRleHRNb2RlKTsKKyNlbmRpZgorICAgICAgICBBU1NFUlQoaW5zZXJ0aW9uTW9kZSgpID09IElu
Qm9keU1vZGUgfHwgaW5zZXJ0aW9uTW9kZSgpID09IEluQ2VsbE1vZGUgfHwgaW5zZXJ0aW9uTW9k
ZSgpID09IEluQ2FwdGlvbk1vZGUgfHwgaW5zZXJ0aW9uTW9kZSgpID09IEluUm93TW9kZSB8fCBp
bnNlcnRpb25Nb2RlKCkgPT0gSW1wbGllZENvbnRleHRNb2RlKTsKICAgICAgICAgbm90SW1wbGVt
ZW50ZWQoKTsgLy8gRW1pdCBwYXJzZSBlcnJvciBiYXNlZCBvbiB3aGF0IGVsZW1lbnRzIGFyZSBz
dGlsbCBvcGVuLgogICAgICAgICBicmVhazsKICAgICBjYXNlIEFmdGVyQm9keU1vZGU6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5oCmluZGV4IDY0YTkzYjM0
ZmZiZjFmMDRhYTBiNzM0MjIzN2M3OWQ5YWRkNWJiMjMuLmVmZjg1ZTA0ZGMzNmRhMmRjMGY5MTQ2
MTIyYjAxODI2YThjMzNhMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxUcmVlQnVpbGRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxU
cmVlQnVpbGRlci5oCkBAIC01MCw2ICs1MCw3IEBAIGNsYXNzIERvY3VtZW50RnJhZ21lbnQ7CiBj
bGFzcyBGcmFtZTsKIGNsYXNzIEhUTUxUb2tlbjsKIGNsYXNzIEhUTUxEb2N1bWVudDsKK2NsYXNz
IFF1YWxpZmllZE5hbWU7CiBjbGFzcyBOb2RlOwogY2xhc3MgSFRNTERvY3VtZW50UGFyc2VyOwog
CkBAIC05OSw2ICsxMDAsNyBAQCBwcml2YXRlOgogICAgICAgICBJbkhlYWRNb2RlLAogICAgICAg
ICBJbkhlYWROb3NjcmlwdE1vZGUsCiAgICAgICAgIEFmdGVySGVhZE1vZGUsCisgICAgICAgIElt
cGxpZWRDb250ZXh0TW9kZSwKICAgICAgICAgSW5Cb2R5TW9kZSwKICAgICAgICAgVGV4dE1vZGUs
CiAgICAgICAgIEluVGFibGVNb2RlLApAQCAtMTk1LDE2ICsxOTcsMTcgQEAgcHJpdmF0ZToKICAg
ICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRnJhZ21lbnRQYXJzaW5nQ29udGV4dCk7CiAgICAg
cHVibGljOgogICAgICAgICBGcmFnbWVudFBhcnNpbmdDb250ZXh0KCk7Ci0gICAgICAgIEZyYWdt
ZW50UGFyc2luZ0NvbnRleHQoRG9jdW1lbnRGcmFnbWVudCosIEVsZW1lbnQqIGNvbnRleHRFbGVt
ZW50LCBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24pOworICAgICAgICBGcmFnbWVudFBhcnNp
bmdDb250ZXh0KERvY3VtZW50RnJhZ21lbnQqLCBjb25zdCBRdWFsaWZpZWROYW1lJiBjb250ZXh0
VGFnLCBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24pOwogICAgICAgICB+RnJhZ21lbnRQYXJz
aW5nQ29udGV4dCgpOwogCiAgICAgICAgIERvY3VtZW50RnJhZ21lbnQqIGZyYWdtZW50KCkgY29u
c3QgeyByZXR1cm4gbV9mcmFnbWVudDsgfQotICAgICAgICBFbGVtZW50KiBjb250ZXh0RWxlbWVu
dCgpIGNvbnN0IHsgQVNTRVJUKG1fZnJhZ21lbnQpOyByZXR1cm4gbV9jb250ZXh0RWxlbWVudDsg
fQorICAgICAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBjb250ZXh0VGFnKCkgY29uc3QgeyByZXR1
cm4gbV9jb250ZXh0VGFnOyB9CisgICAgICAgIHZvaWQgc2V0Q29udGV4dFRhZyhjb25zdCBRdWFs
aWZpZWROYW1lJiBjb250ZXh0VGFnKSB7IG1fY29udGV4dFRhZyA9IGNvbnRleHRUYWc7IH0KICAg
ICAgICAgRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uIHNjcmlwdGluZ1Blcm1pc3Npb24oKSBj
b25zdCB7IEFTU0VSVChtX2ZyYWdtZW50KTsgcmV0dXJuIG1fc2NyaXB0aW5nUGVybWlzc2lvbjsg
fQogCiAgICAgcHJpdmF0ZToKICAgICAgICAgRG9jdW1lbnRGcmFnbWVudCogbV9mcmFnbWVudDsK
LSAgICAgICAgRWxlbWVudCogbV9jb250ZXh0RWxlbWVudDsKKyAgICAgICAgUXVhbGlmaWVkTmFt
ZSBtX2NvbnRleHRUYWc7CiAKICAgICAgICAgLy8gRnJhZ21lbnRTY3JpcHRpbmdOb3RBbGxvd2Vk
IGNhdXNlcyB0aGUgUGFyc2VyIHRvIHJlbW92ZSBjaGlsZHJlbgogICAgICAgICAvLyBmcm9tIDxz
Y3JpcHQ+IHRhZ3MgKHNvIGphdmFzY3JpcHQgZG9lc24ndCBzaG93IHVwIGluIHBhc3RlcykuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkKaW5kZXggMDc2ZmMzOGE5YTliZDFhYWRkODk0
ODk2NjE4MTQxNDllMTM5NzRlZS4uNzU3ODAzYmE0ODUzMjUxMDQ5MjljNmM5NmJmY2UzOGRkMGM5
YTU1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lwaQpAQCAtNTUsNiArNTUsNyBA
QAogICAgICAgJ0VOQUJMRV9HQU1FUEFEPTEnLAogICAgICAgJ0VOQUJMRV9HRU9MT0NBVElPTj0x
JywKICAgICAgICdFTkFCTEVfR0VTVFVSRV9FVkVOVFM9MScsCisgICAgICAnRU5BQkxFX0lNUExJ
RURfQ09OVEVYVF9QQVJTSU5HPTEnLAogICAgICAgJ0VOQUJMRV9JQ09OREFUQUJBU0U9MCcsCiAg
ICAgICAnRU5BQkxFX0lGUkFNRV9TRUFNTEVTUz0xJywKICAgICAgICdFTkFCTEVfSU5ERVhFRF9E
QVRBQkFTRT0xJywKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCBhNTRiZmU5Yzg3NzljN2E0NDBhYjU5MTJkMWQ3YzE1NTBhOTkx
ZmU3Li5iMmI4MjM2ZDIyN2I5NTAzNGQyNGRjOTA2YTJlNzFjZWNiZDljZmQyIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTUgQEAKKzIwMTItMDUtMTYgIFJhZmFlbCBXZWluc3RlaW4gIDxyYWZhZWx3QGNocm9t
aXVtLm9yZz4KKworICAgICAgICBJbXBsZW1lbnQgRG9jdW1lbnQucGFyc2UKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg0NjQ2CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodG1sNWxpYi9yZXNvdXJjZXMv
ZG9jdW1lbnQtcGFyc2UuZGF0OiBBZGRlZC4KKyAgICAgICAgKiBodG1sNWxpYi9yZXNvdXJjZXMv
cnVubmVyLmpzOgorICAgICAgICAqIGh0bWw1bGliL3J1bi1kb2N1bWVudC1wYXJzZS1leHBlY3Rl
ZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodG1sNWxpYi9ydW4tZG9jdW1lbnQtcGFyc2UuaHRt
bDogQWRkZWQuCisKIDIwMTItMDUtMTYgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIEdUSyBnYXJkZW5pbmcuCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odG1sNWxpYi9yZXNvdXJjZXMvZG9jdW1lbnQtcGFyc2UuZGF0IGIvTGF5
b3V0VGVzdHMvaHRtbDVsaWIvcmVzb3VyY2VzL2RvY3VtZW50LXBhcnNlLmRhdApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5lZGJhNjdlMTBkZjNkZDdmNDM4M2Y1ZjhiZDIzODFiMGQwOWFiYTZlCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaHRtbDVsaWIvcmVzb3VyY2VzL2RvY3VtZW50LXBhcnNlLmRhdApA
QCAtMCwwICsxLDEyOCBAQAorI2RhdGEKK0hlbGxvCisjZXJyb3JzCisjZG9jdW1lbnQtZnJhZ21l
bnQKKyNkb2N1bWVudAorfCAiSGVsbG8iCisKKyNkYXRhCis8L2Rpdj5IZWxsbworI2Vycm9ycwor
I2RvY3VtZW50LWZyYWdtZW50CisjZG9jdW1lbnQKK3wgIkhlbGxvIgorCisjZGF0YQorPGRpdj48
c3Bhbj4KKyNlcnJvcnMKKyNkb2N1bWVudC1mcmFnbWVudAorI2RvY3VtZW50Cit8IDxkaXY+Cit8
ICAgPHNwYW4+CisKKyNkYXRhCitIZWxsbzxkaXY+PHNwYW4+CisjZXJyb3JzCisjZG9jdW1lbnQt
ZnJhZ21lbnQKKyNkb2N1bWVudAorfCAiSGVsbG8iCit8IDxkaXY+Cit8ICAgPHNwYW4+CisKKyNk
YXRhCis8IURPQ1RZUEUgaHRtbD48ZGl2PjxzcGFuPgorI2Vycm9ycworI2RvY3VtZW50LWZyYWdt
ZW50CisjZG9jdW1lbnQKK3wgPGRpdj4KK3wgICA8c3Bhbj4KKworI2RhdGEKKzxvcHRpb24+SGVs
bG8KKyNlcnJvcnMKKyNkb2N1bWVudC1mcmFnbWVudAorI2RvY3VtZW50Cit8IDxvcHRpb24+Cit8
ICAgIkhlbGxvIgorCisjZGF0YQorSGVsbG88b3B0aW9uPkdvb2RieWU8b3B0aW9uPldvcmxkCisj
ZXJyb3JzCisjZG9jdW1lbnQtZnJhZ21lbnQKKyNkb2N1bWVudAorfCAiSGVsbG8iCit8IDxvcHRp
b24+Cit8ICAgIkdvb2RieWUiCit8IDxvcHRpb24+Cit8ICAgIldvcmxkIgorCisjZGF0YQorPHRk
PgorI2Vycm9ycworI2RvY3VtZW50LWZyYWdtZW50CisjZG9jdW1lbnQKK3wgPHRkPgorCisjZGF0
YQorPC90ZD5IZWxsbzx0ZD5Hb29kYnllCisjZXJyb3JzCisjZG9jdW1lbnQtZnJhZ21lbnQKKyNk
b2N1bWVudAorfCAiSGVsbG8iCit8IDx0ZD4KK3wgICAiR29vZGJ5ZSIKKworI2RhdGEKKzx0aGVh
ZD4KKyNlcnJvcnMKKyNkb2N1bWVudC1mcmFnbWVudAorI2RvY3VtZW50Cit8IDx0aGVhZD4KKwor
I2RhdGEKKzx0cj4KKyNlcnJvcnMKKyNkb2N1bWVudC1mcmFnbWVudAorI2RvY3VtZW50Cit8IDx0
cj4KKworI2RhdGEKKzx0ZD4KKyNlcnJvcnMKKyNkb2N1bWVudC1mcmFnbWVudAorI2RvY3VtZW50
Cit8IDx0ZD4KKworI2RhdGEKKzxtZXRhPjx0ZD4KKyNlcnJvcnMKKyNkb2N1bWVudC1mcmFnbWVu
dAorI2RvY3VtZW50Cit8IDxtZXRhPgorfCA8dGQ+CisKKyNkYXRhCis8bGluaz48dHI+CisjZXJy
b3JzCisjZG9jdW1lbnQtZnJhZ21lbnQKKyNkb2N1bWVudAorfCA8bGluaz4KK3wgPHRyPgorCisj
ZGF0YQorPHN0eWxlPmgxIHsgYmFja2dyb3VuZC1jb2xvcjogYmx1ZTt9PC9zdHlsZT48dGhlYWQ+
CisjZXJyb3JzCisjZG9jdW1lbnQtZnJhZ21lbnQKKyNkb2N1bWVudAorfCA8c3R5bGU+Cit8ICAg
ImgxIHsgYmFja2dyb3VuZC1jb2xvcjogYmx1ZTt9IgorfCA8dGhlYWQ+CisKKyNkYXRhCis8c2Ny
aXB0PnZhciBmb28gPSAiYmFyIjs8L3NjcmlwdD48b3B0aW9uPgorI2Vycm9ycworI2RvY3VtZW50
LWZyYWdtZW50CisjZG9jdW1lbnQKK3wgPHNjcmlwdD4KK3wgICAidmFyIGZvbyA9ICJiYXIiOyIK
K3wgPG9wdGlvbj4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0bWw1bGliL3Jlc291cmNlcy9y
dW5uZXIuanMgYi9MYXlvdXRUZXN0cy9odG1sNWxpYi9yZXNvdXJjZXMvcnVubmVyLmpzCmluZGV4
IDQwYTFjMGVmYjQ5NjZiYjFhYmI4OTg0YTkyYzQ4NjQzMDQ2NTE4ZjQuLjUwMmMxMWE0YmI3Njk5
MDAzYTgyMWI4OGUwOTc5ZmRhMTllM2ZlNTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0bWw1
bGliL3Jlc291cmNlcy9ydW5uZXIuanMKKysrIGIvTGF5b3V0VGVzdHMvaHRtbDVsaWIvcmVzb3Vy
Y2VzL3J1bm5lci5qcwpAQCAtODQsNyArODQsNyBAQCBmdW5jdGlvbiBydW4oKQogCiBmdW5jdGlv
biB0ZXN0KCkKIHsKLSAgICB2YXIgaW5wdXQsIGVycm9yc1N0YXJ0LCBmcmFnbWVudFN0YXJ0LCBj
b250ZXh0RWxlbWVudCwgZG9tU3RhcnQsIGRvbTsKKyAgICB2YXIgaW5wdXQsIGVycm9yc1N0YXJ0
LCBmcmFnbWVudCwgZnJhZ21lbnRTdGFydCwgY29udGV4dEVsZW1lbnQsIGRvbVN0YXJ0LCBkb207
CiAgICAgaWYgKGRhdGEgPSB0ZXN0cy5zaGlmdCgpKQogICAgIHsKICAgICAgICAgc3RhdC5kYXRh
ID0gIlJ1bm5pbmcgdGVzdCAiICsgdGVzdF9udW1iZXIgKyAiIG9mICIgKyAodGVzdF9udW1iZXIg
KyB0ZXN0cy5sZW5ndGgpICsgIiBpbiAiICsgZmlsZTsKQEAgLTk2LDYgKzk2LDcgQEAgZnVuY3Rp
b24gdGVzdCgpCiAgICAgICAgICAgICBkb21TdGFydCA9IGRhdGEuaW5kZXhPZigiXG4jZG9jdW1l
bnRcbiIpCiAgICAgICAgICAgICBpZiAoZnJhZ21lbnRTdGFydCAhPT0gLTEpCiAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgZnJhZ21lbnQgPSB0cnVlOwogICAgICAgICAgICAgICAgIGNv
bnRleHRFbGVtZW50ID0gZGF0YS5zdWJzdHJpbmcoZnJhZ21lbnRTdGFydCArIDIwLCBkb21TdGFy
dCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoZG9tU3RhcnQgIT09IC0xKQpAQCAt
MTA1LDcgKzEwNiw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgICAgIHsKICAgICAg
ICAgICAgICAgICAgICAgZG9tID0gZG9tLnN1YnN0cmluZygwLCBkb20ubGVuZ3RoIC0gMSk7CiAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJ1bl90ZXN0KGlucHV0LCBjb250ZXh0
RWxlbWVudCwgZG9tKTsKKyAgICAgICAgICAgICAgICBydW5fdGVzdChpbnB1dCwgZnJhZ21lbnQs
IGNvbnRleHRFbGVtZW50LnRyaW0oKSwgZG9tKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTE0MiwxNiArMTQzLDIzIEBAIGZ1bmN0aW9uIHRl
c3QoKQogICAgIH0KIH0KIAotZnVuY3Rpb24gcnVuX3Rlc3QoaW5wdXQsIGNvbnRleHRFbGVtZW50
LCBleHBlY3RlZCkKK2Z1bmN0aW9uIHJ1bl90ZXN0KGlucHV0LCBmcmFnbWVudCwgY29udGV4dEVs
ZW1lbnQsIGV4cGVjdGVkKQogewotICAgIGlmIChjb250ZXh0RWxlbWVudCkKKyAgICBpZiAoZnJh
Z21lbnQpCiAgICAgewotICAgICAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoY29udGV4dEVsZW1lbnQpOwotICAgICAgICB0cnkKLSAgICAgICAgewotICAgICAgICAgICAg
ZWxlbWVudC5pbm5lckhUTUwgPSBpbnB1dDsKKyAgICAgICAgdmFyIGVsZW1lbnQ7CisgICAgICAg
IGlmIChjb250ZXh0RWxlbWVudCkgeworICAgICAgICAgICAgZWxlbWVudCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoY29udGV4dEVsZW1lbnQpOworICAgICAgICAgICAgdHJ5CisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgZWxlbWVudC5pbm5lckhUTUwgPSBpbnB1dDsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGNhdGNoKGUpIHt9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICB0cnkgeworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBkb2N1bWVudC5wYXJzZShpbnB1
dCk7CisgICAgICAgICAgICB9IGNhdGNoIChlKSB7fQogICAgICAgICB9Ci0gICAgICAgIGNhdGNo
KGUpIHt9CiAgICAgICAgIHByb2Nlc3NfcmVzdWx0KGlucHV0LCBlbGVtZW50LCBleHBlY3RlZCk7
CiAgICAgfQogICAgIGVsc2UgaWYgKHdyaXRlKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHRt
bDVsaWIvcnVuLWRvY3VtZW50LXBhcnNlLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9odG1s
NWxpYi9ydW4tZG9jdW1lbnQtcGFyc2UtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZWZlMzI0
YjAxMjllNjFjOTEyNGU1NTgwOTI4MmE5NWQwYmFhYWU3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHRtbDVsaWIvcnVuLWRvY3VtZW50LXBhcnNlLWV4cGVjdGVkLmh0bWwKQEAgLTAs
MCArMSBAQAorcmVzb3VyY2VzL3RlbXBsYXRlLmRhdDogUEFTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHRtbDVsaWIvcnVuLWRvY3VtZW50LXBhcnNlLmh0bWwgYi9MYXlvdXRUZXN0cy9odG1s
NWxpYi9ydW4tZG9jdW1lbnQtcGFyc2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOTA0ZWE3NTdiOTgyY2Q5
M2NlMmRjMWQ5NTRiMTNmZWFiYWQ5Y2I4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aHRtbDVsaWIvcnVuLWRvY3VtZW50LXBhcnNlLmh0bWwKQEAgLTAsMCArMSw4IEBACis8IWRvY3R5
cGUgaHRtbD4KKzxzY3JpcHQ+Cit2YXIgdGVzdF9maWxlcyA9IFsKKyAgJ3Jlc291cmNlcy9kb2N1
bWVudC1wYXJzZS5kYXQnLAorXQorPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2Vz
L2R1bXAtYXMtbWFya3VwLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcnVu
bmVyLmpzIj48L3NjcmlwdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>142504</attachid>
            <date>2012-05-17 11:01:29 -0700</date>
            <delta_ts>2012-05-24 13:24:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84646-20120517110129.patch</filename>
            <type>text/plain</type>
            <size>31162</size>
            <attacher name="Rafael Weinstein">rafaelw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE3MzU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjlkOWVhNjQwN2YwMzhh
OGMzNzhmZjk4OGJmN2Y4ZGVmNTc4N2Q4MS4uZTAzOWJkNGUzODJlY2NiZjQ3N2QyMTlhNWI4NDM0
YjZlMWM5N2Y0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDEyLTA1LTE2ICBSYWZh
ZWwgV2VpbnN0ZWluICA8cmFmYWVsd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW1wbGVtZW50
IERvY3VtZW50LnBhcnNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD04NDY0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIERvY3VtZW50LnBhcnNlKCkgbm93IHBhcnNlcyBiYXNlZCBvbiBhbiAiaW1wbGllZCBj
b250ZXh0IGVsZW1lbnQiIHdoaWNoIGl0IHBpY2tzIGJhc2VkIG9uIHRoZSBuYW1lCisgICAgICAg
IG9mIHRoZSBmaXJzdCAobm9uIHN0eWxlLCBzY3JpcHQsIG1ldGEsIGxpbmspIHN0YXJ0IHRhZyB3
aGljaCBhcHBlYXJzIGluIHRoZSBwcm92aWRlZCBtYXJrdXAuCisKKyAgICAgICAgVGVzdDogaHRt
bDVsaWIvcnVuLWRvY3VtZW50LXBhcnNlLmh0bWwKKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpwYXJz
ZSk6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIChEb2N1bWVudCk6CisgICAg
ICAgICogZG9tL0RvY3VtZW50LmlkbDoKKyAgICAgICAgKiBkb20vUXVhbGlmaWVkTmFtZS5jcHA6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlF1YWxpZmllZE5hbWU6Omlu
aXQpOgorICAgICAgICAqIGRvbS9RdWFsaWZpZWROYW1lLmg6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6Om51bGxRTmFtZSk6CisgICAgICAgICogZG9tL1NoYWRvd1Jvb3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6c2V0SW5uZXJIVE1MKToKKyAgICAg
ICAgKiBlZGl0aW5nL21hcmt1cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGcmFnbWVu
dEZyb21Tb3VyY2UpOgorICAgICAgICAqIGVkaXRpbmcvbWFya3VwLmg6CisgICAgICAgICogaHRt
bC9IVE1MRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6c2V0SW5u
ZXJIVE1MKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjpzZXRPdXRlckhUTUwpOgor
ICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTmFtZXM6OnRva2VuaXplclN0YXRlRm9yQ29udGV4dEVsZW1lbnQpOgorICAg
ICAgICAqIGh0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6SFRNTFRyZWVCdWlsZGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6RnJhZ21lbnRQYXJzaW5nQ29udGV4
dDo6RnJhZ21lbnRQYXJzaW5nQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1
aWxkZXI6OmNvbnN0cnVjdFRyZWVGcm9tVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRy
ZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWcpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVC
dWlsZGVyOjpyZXNldEluc2VydGlvbk1vZGVBcHByb3ByaWF0ZWx5KToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRhZyk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NDb21tZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxU
cmVlQnVpbGRlcjo6cHJvY2Vzc0NoYXJhY3RlckJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRPZkZpbGUpOgorICAgICAgICAqIGh0bWwvcGFyc2Vy
L0hUTUxUcmVlQnVpbGRlci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChGcmFnbWVu
dFBhcnNpbmdDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6RnJh
Z21lbnRQYXJzaW5nQ29udGV4dDo6Y29udGV4dFRhZyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
VHJlZUJ1aWxkZXI6OkZyYWdtZW50UGFyc2luZ0NvbnRleHQ6OnNldENvbnRleHRUYWcpOgorCiAy
MDEyLTA1LTE2ICBOb2VsIEdvcmRvbiAgPG5vZWwuZ29yZG9uQGdtYWlsLmNvbT4KIAogICAgICAg
ICBbY2hyb21pdW1dIFJlbW92ZSBJbWFnZURlY29kZXJDRy5jcHAgZnJvbSBwbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBjOGMxN2FlZjZlMDU3N2Rh
YjZhNGIxNmIwY2I3NDVjZGYyYWNiMzY5Li4wZjJkMDViMGU0NTgyOTRlN2ZkNTYzZjRmODhmOWZh
YTdiNzQ2NTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisy
MDEyLTA1LTE2ICBSYWZhZWwgV2VpbnN0ZWluICA8cmFmYWVsd0BjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgSW1wbGVtZW50IERvY3VtZW50LnBhcnNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NDY0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogZmVhdHVyZXMuZ3lwaToKKwogMjAxMi0wNS0xNiAgSm9z
aHVhIEJlbGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0gSW5k
ZXhlZERCOiBXZWJLaXQgQVBJIGZvciBJREJPYmplY3RTdG9yZS5hdXRvSW5jcmVtZW50IHByb3Bl
cnR5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA0MWE2ZGVkYTRkNWU4MjQxZTVhOGU1YzNk
NGI1MzM0MDY4MjNiYzliLi4wMWQ4ZTE1NjdiNjFjZTM4MGU5ZGM0OWE2NmY1MmZiNTI3MWI3YjU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTE2MCw2ICsxNjAsNyBAQAogI2luY2x1ZGUg
IlhQYXRoTlNSZXNvbHZlci5oIgogI2luY2x1ZGUgIlhQYXRoUmVzdWx0LmgiCiAjaW5jbHVkZSAi
aHRtbGVkaXRpbmcuaCIKKyNpbmNsdWRlICJtYXJrdXAuaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVu
dFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaEZ1bmN0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9N
YWluVGhyZWFkLmg+CkBAIC04MjcsNiArODI4LDEzIEBAIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFn
bWVudD4gRG9jdW1lbnQ6OmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKQogICAgIHJldHVybiBEb2N1
bWVudEZyYWdtZW50OjpjcmVhdGUoZG9jdW1lbnQoKSk7CiB9CiAKKyNpZiBFTkFCTEUoSU1QTElF
RF9DT05URVhUX1BBUlNJTkcpCitQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IERvY3VtZW50
OjpwYXJzZShjb25zdCBTdHJpbmcmIGh0bWwsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIHJl
dHVybiBjcmVhdGVGcmFnbWVudEZyb21Tb3VyY2UoaHRtbCwgZG9jdW1lbnQoKSwgMCAvKiBjb250
ZXh0RWxlbWVudCAqLywgZWMpOworfQorI2VuZGlmCisKIFBhc3NSZWZQdHI8VGV4dD4gRG9jdW1l
bnQ6OmNyZWF0ZVRleHROb2RlKGNvbnN0IFN0cmluZyYgZGF0YSkKIHsKICAgICByZXR1cm4gVGV4
dDo6Y3JlYXRlKHRoaXMsIGRhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCBkZjRiNjY0N2Vk
ODE4Zjk0OTlkZWVhZGI5ZDZmNTdjNGEyZmY0MzQ2Li44ODIxMDk3Nzg2YmFlNTViNjdlNWVhNTI0
NDZhMGNiNjlmMDNkMDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMzQ4LDYgKzM0OCw5IEBA
IHB1YmxpYzoKICAgICAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RWxlbWVudD4gY3JlYXRlRWxl
bWVudChjb25zdCBBdG9taWNTdHJpbmcmIHRhZ05hbWUsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBQ
YXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKKyNp
ZiBFTkFCTEUoSU1QTElFRF9DT05URVhUX1BBUlNJTkcpCisgICAgUGFzc1JlZlB0cjxEb2N1bWVu
dEZyYWdtZW50PiBwYXJzZShjb25zdCBTdHJpbmcmIGh0bWwsIEV4Y2VwdGlvbkNvZGUmKTsKKyNl
bmRpZgogICAgIFBhc3NSZWZQdHI8VGV4dD4gY3JlYXRlVGV4dE5vZGUoY29uc3QgU3RyaW5nJiBk
YXRhKTsKICAgICBQYXNzUmVmUHRyPENvbW1lbnQ+IGNyZWF0ZUNvbW1lbnQoY29uc3QgU3RyaW5n
JiBkYXRhKTsKICAgICBQYXNzUmVmUHRyPENEQVRBU2VjdGlvbj4gY3JlYXRlQ0RBVEFTZWN0aW9u
KGNvbnN0IFN0cmluZyYgZGF0YSwgRXhjZXB0aW9uQ29kZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5p
ZGwKaW5kZXggNGU0YjdlM2JmZTFiMWZjOWNkYjMyNGZlOWQ4YjQ3MTViMWRlYmMwNy4uN2MxZTli
NGZiMzlmOTFlZjZmZGFkMGQ4MzRmNjYyZDQzYTAzOWJmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
aWRsCkBAIC0zNTYsNiArMzU2LDggQEAgbW9kdWxlIGNvcmUgewogICAgICAgICByZWFkb25seSBh
dHRyaWJ1dGUgW0NvbmRpdGlvbmFsPVBBR0VfVklTSUJJTElUWV9BUEldIERPTVN0cmluZyB3ZWJr
aXRWaXNpYmlsaXR5U3RhdGU7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbQ29uZGl0aW9u
YWw9UEFHRV9WSVNJQklMSVRZX0FQSV0gYm9vbGVhbiB3ZWJraXRIaWRkZW47CiAKKyAgICAgICAg
W0NvbmRpdGlvbmFsPUlNUExJRURfQ09OVEVYVF9QQVJTSU5HXSBEb2N1bWVudEZyYWdtZW50IHBh
cnNlKGluIFtUcmVhdE51bGxBcz1OdWxsU3RyaW5nLE9wdGlvbmFsPURlZmF1bHRJc1VuZGVmaW5l
ZF0gRE9NU3RyaW5nIHRhZ25hbWUpCisgICAgICAgICAgICByYWlzZXMgKERPTUV4Y2VwdGlvbik7
CiAgICAgfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1F1YWxpZmllZE5h
bWUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuY3BwCmluZGV4IGUwODU1
MDcwYTdjYjMyNTM0Y2NiZjhhYjhkMDUyNjY3ZGEzMTlmMTUuLmZhYjFjMmI2YjI3MjM3OGY2Yjli
MDdjODBhNjQ3ZTMwYzQ4NTYzMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9RdWFs
aWZpZWROYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5jcHAK
QEAgLTEwNCw2ICsxMDQsNyBAQCBTdHJpbmcgUXVhbGlmaWVkTmFtZTo6dG9TdHJpbmcoKSBjb25z
dAogCiAvLyBHbG9iYWwgaW5pdCByb3V0aW5lcwogREVGSU5FX0dMT0JBTChRdWFsaWZpZWROYW1l
LCBhbnlOYW1lLCBudWxsQXRvbSwgc3RhckF0b20sIHN0YXJBdG9tKQorREVGSU5FX0dMT0JBTChR
dWFsaWZpZWROYW1lLCBudWxsTmFtZSwgbnVsbEF0b20sIG51bGxBdG9tLCBudWxsQXRvbSkKIAog
dm9pZCBRdWFsaWZpZWROYW1lOjppbml0KCkKIHsKQEAgLTExMyw2ICsxMTQsNyBAQCB2b2lkIFF1
YWxpZmllZE5hbWU6OmluaXQoKQogICAgICAgICAKICAgICAgICAgQXRvbWljU3RyaW5nOjppbml0
KCk7CiAgICAgICAgIG5ldyAoKHZvaWQqKSZhbnlOYW1lKSBRdWFsaWZpZWROYW1lKG51bGxBdG9t
LCBzdGFyQXRvbSwgc3RhckF0b20pOworICAgICAgICBuZXcgKCh2b2lkKikmbnVsbE5hbWUpIFF1
YWxpZmllZE5hbWUobnVsbEF0b20sIG51bGxBdG9tLCBudWxsQXRvbSk7CiAgICAgICAgIGluaXRp
YWxpemVkID0gdHJ1ZTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
UXVhbGlmaWVkTmFtZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuaAppbmRl
eCA2MzZiMmE1MTUwYzllOTg3YzAyN2U3NTY5NzkyZDliYWMzNGE4OWU5Li45ZWZiODgxMjczNjk3
NmUxYzU0Mzg5YTAzN2UyMWMwOGE5ZmQ3N2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vUXVhbGlmaWVkTmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1l
LmgKQEAgLTEwNSw2ICsxMDUsOCBAQCBwcml2YXRlOgogI2lmbmRlZiBXRUJDT1JFX1FVQUxJRklF
RE5BTUVfSElERV9HTE9CQUxTCiBleHRlcm4gY29uc3QgUXVhbGlmaWVkTmFtZSBhbnlOYW1lOwog
aW5saW5lIGNvbnN0IFF1YWxpZmllZE5hbWUmIGFueVFOYW1lKCkgeyByZXR1cm4gYW55TmFtZTsg
fQorZXh0ZXJuIGNvbnN0IFF1YWxpZmllZE5hbWUgbnVsbE5hbWU7CitpbmxpbmUgY29uc3QgUXVh
bGlmaWVkTmFtZSYgbnVsbFFOYW1lKCkgeyByZXR1cm4gbnVsbE5hbWU7IH0KICNlbmRpZgogCiBp
bmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEF0b21pY1N0cmluZyYgYSwgY29uc3QgUXVhbGlm
aWVkTmFtZSYgcSkgeyByZXR1cm4gYSA9PSBxLmxvY2FsTmFtZSgpOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hh
ZG93Um9vdC5jcHAKaW5kZXggODIxZTFiMDUxZTZjMmYwYWZiYzg4OWU3OTNmYzA4Y2QzZjkwZmQw
ZC4uMTk2NGIzYzUyNmU3OWVjOThhMmUyZTYxZTUwNWZiMGJjOGIxYTU5MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TaGFkb3dSb290LmNwcApAQCAtMTQ0LDcgKzE0NCw3IEBAIFN0cmluZyBTaGFkb3dSb290Ojpp
bm5lckhUTUwoKSBjb25zdAogCiB2b2lkIFNoYWRvd1Jvb3Q6OnNldElubmVySFRNTChjb25zdCBT
dHJpbmcmIG1hcmt1cCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgUmVmUHRyPERvY3VtZW50
RnJhZ21lbnQ+IGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRGcm9tU291cmNlKG1hcmt1cCwgaG9z
dCgpLCBlYyk7CisgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gY3JlYXRl
RnJhZ21lbnRGcm9tU291cmNlKG1hcmt1cCwgZG9jdW1lbnQoKSwgaG9zdCgpLCBlYyk7CiAgICAg
aWYgKGZyYWdtZW50KQogICAgICAgICByZXBsYWNlQ2hpbGRyZW5XaXRoRnJhZ21lbnQodGhpcywg
ZnJhZ21lbnQucmVsZWFzZSgpLCBlYyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL21hcmt1cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKaW5k
ZXggYTFjNWEzMzYyMTVkOWU2OWM4NjhjNTg4MDA4NTY4ZmQ2YTU0YzIxNC4uYzgxNTU5YTAxMjMw
ZDJiYjRlOTQxZTFlMmUwOWZlMTk0MWY4N2RlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9tYXJrdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNw
cApAQCAtOTkyLDE2ICs5OTIsMjcgQEAgU3RyaW5nIHVybFRvTWFya3VwKGNvbnN0IEtVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiB0aXRsZSkKICAgICByZXR1cm4gbWFya3VwLnRvU3RyaW5nKCk7CiB9
CiAKLVBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGcm9tU291cmNl
KGNvbnN0IFN0cmluZyYgbWFya3VwLCBFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgRXhjZXB0aW9u
Q29kZSYgZWMpCitQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJv
bVNvdXJjZShjb25zdCBTdHJpbmcmIG1hcmt1cCwgRG9jdW1lbnQqIGRvY3VtZW50LCBFbGVtZW50
KiBjb250ZXh0RWxlbWVudCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgRG9jdW1lbnQqIGRv
Y3VtZW50ID0gY29udGV4dEVsZW1lbnQtPmRvY3VtZW50KCk7CiAgICAgUmVmUHRyPERvY3VtZW50
RnJhZ21lbnQ+IGZyYWdtZW50ID0gRG9jdW1lbnRGcmFnbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsK
IAorI2lmICFFTkFCTEUoSU1QTElFRF9DT05URVhUX1BBUlNJTkcpCisgICAgQVNTRVJUKGNvbnRl
eHRFbGVtZW50KTsKKyNlbmRpZgorCiAgICAgaWYgKGRvY3VtZW50LT5pc0hUTUxEb2N1bWVudCgp
KSB7CiAgICAgICAgIGZyYWdtZW50LT5wYXJzZUhUTUwobWFya3VwLCBjb250ZXh0RWxlbWVudCk7
CiAgICAgICAgIHJldHVybiBmcmFnbWVudDsKICAgICB9CiAKKyNpZiBFTkFCTEUoSU1QTElFRF9D
T05URVhUX1BBUlNJTkcpCisgICAgLy8gRklYTUU6IEhUTUwgaGFzIG5vdCBkZWZpbmVkIHdoYXQg
aXQgbWVhbnMgdG8gcGFyc2UgWE1MIHdpdGhvdXQgYSBjb250ZXh0IGVsZW1lbnQuCisgICAgaWYg
KCFjb250ZXh0RWxlbWVudCkgeworICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOworICAg
ICAgICByZXR1cm4gMDsKKyAgICB9CisjZW5kaWYKKwogICAgIGJvb2wgd2FzVmFsaWQgPSBmcmFn
bWVudC0+cGFyc2VYTUwobWFya3VwLCBjb250ZXh0RWxlbWVudCk7CiAgICAgaWYgKCF3YXNWYWxp
ZCkgewogICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3Vw
LmgKaW5kZXggNjI1ZmQ2ZWI0M2VkOTY0M2I1MjdkMGQwYzRkYzVjYzRjNTM5NDU2MS4uOGU4NzM0
NzZmOGEzNTdiN2VlM2QxODI5MjYxYmU1YTk3ZDM0MjQyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9tYXJrdXAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1
cC5oCkBAIC01MSw3ICs1MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBQYXNzUmVmUHRy
PERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cChEb2N1bWVudCosIGNv
bnN0IFN0cmluZyYgbWFya3VwLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEZyYWdtZW50U2NyaXB0
aW5nUGVybWlzc2lvbiA9IEZyYWdtZW50U2NyaXB0aW5nQWxsb3dlZCk7CiAgICAgUGFzc1JlZlB0
cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZyb21NYXJrdXBXaXRoQ29udGV4dChE
b2N1bWVudCosIGNvbnN0IFN0cmluZyYgbWFya3VwLCB1bnNpZ25lZCBmcmFnbWVudFN0YXJ0LCB1
bnNpZ25lZCBmcmFnbWVudEVuZCwgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBGcmFnbWVudFNjcmlw
dGluZ1Blcm1pc3Npb24pOwogICAgIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRl
RnJhZ21lbnRGcm9tTm9kZXMoRG9jdW1lbnQqLCBjb25zdCBWZWN0b3I8Tm9kZSo+Jik7Ci0gICAg
UGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZyb21Tb3VyY2UoY29u
c3QgU3RyaW5nJiwgRWxlbWVudCosIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNzUmVmUHRyPERv
Y3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJvbVNvdXJjZShjb25zdCBTdHJpbmcmLCBE
b2N1bWVudCosIEVsZW1lbnQqLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICBib29sIGlzUGxhaW5U
ZXh0TWFya3VwKE5vZGUgKm5vZGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCmlu
ZGV4IDFmYTI0OTYwMThlYjc4OTRmYTU3ZDY3NTc0ZTdlNjQ5YzA4NmZlZmYuLjU2YThlMjExOTll
YWJhNzU4N2UxZDQ0MjBiN2Q1MDM2ODQ0YjE2ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1l
bnQuY3BwCkBAIC0zNDIsNyArMzQyLDcgQEAgU3RyaW5nIEhUTUxFbGVtZW50OjpvdXRlckhUTUwo
KSBjb25zdAogCiB2b2lkIEhUTUxFbGVtZW50OjpzZXRJbm5lckhUTUwoY29uc3QgU3RyaW5nJiBo
dG1sLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4g
ZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEZyb21Tb3VyY2UoaHRtbCwgdGhpcywgZWMpOworICAg
IFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50RnJvbVNv
dXJjZShodG1sLCBkb2N1bWVudCgpLCB0aGlzLCBlYyk7CiAgICAgaWYgKGZyYWdtZW50KQogICAg
ICAgICByZXBsYWNlQ2hpbGRyZW5XaXRoRnJhZ21lbnQodGhpcywgZnJhZ21lbnQucmVsZWFzZSgp
LCBlYyk7CiB9CkBAIC0zNzQsNyArMzc0LDcgQEAgdm9pZCBIVE1MRWxlbWVudDo6c2V0T3V0ZXJI
VE1MKGNvbnN0IFN0cmluZyYgaHRtbCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgUmVmUHRyPE5v
ZGU+IHByZXYgPSBwcmV2aW91c1NpYmxpbmcoKTsKICAgICBSZWZQdHI8Tm9kZT4gbmV4dCA9IG5l
eHRTaWJsaW5nKCk7CiAKLSAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSBj
cmVhdGVGcmFnbWVudEZyb21Tb3VyY2UoaHRtbCwgcGFyZW50LmdldCgpLCBlYyk7CisgICAgUmVm
UHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRGcm9tU291cmNl
KGh0bWwsIGRvY3VtZW50KCksIHBhcmVudC5nZXQoKSwgZWMpOwogICAgIGlmIChlYykKICAgICAg
ICAgcmV0dXJuOwogICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRN
TERvY3VtZW50UGFyc2VyLmNwcAppbmRleCA3YTA2YjQyMzk2OTEzZDlkOTZkNGU1NzFkNWIyMzNh
OTIzNzA0Mjk1Li5lMTVjN2I1MzJjZTExOWIzY2VlOTlmMmVhNGE5NmI0NjgzMTg3OTUyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAK
QEAgLTUxLDYgKzUxLDEwIEBAIG5hbWVzcGFjZSB7CiAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcv
c3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS90aGUtZW5kLmh0bWwjZnJhZ21l
bnQtY2FzZQogSFRNTFRva2VuaXplclN0YXRlOjpTdGF0ZSB0b2tlbml6ZXJTdGF0ZUZvckNvbnRl
eHRFbGVtZW50KEVsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBib29sIHJlcG9ydEVycm9ycykKIHsK
KyNpZiAhRU5BQkxFKElNUExJRURfQ09OVEVYVF9QQVJTSU5HKQorICAgIEFTU0VSVChjb250ZXh0
RWxlbWVudCk7CisjZW5kaWYKKwogICAgIGlmICghY29udGV4dEVsZW1lbnQpCiAgICAgICAgIHJl
dHVybiBIVE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAKaW5kZXggNWQ1MzQyYmIwMDRlNmNmNDQ5
Yzk4NmUyNDQ4ZDU0NDY2N2Y4NmZhNi4uYjI2NWIyMzIwNzQ2Mzc2YmQ4MmRhNjYyNjkxMzg1N2I5
NmQwYzRjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVC
dWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxk
ZXIuY3BwCkBAIC0yNDIsNiArMjQyLDMyIEBAIEhUTUxGb3JtRWxlbWVudCogY2xvc2VzdEZvcm1B
bmNlc3RvcihFbGVtZW50KiBlbGVtZW50KQogICAgIHJldHVybiAwOwogfQogCisjaWYgRU5BQkxF
KElNUExJRURfQ09OVEVYVF9QQVJTSU5HKQorLy8gRklYTUU6IFJlZmVyZW5jZSB0byBET000IHNw
ZWMgZGVzY3JpYmluZyB0aGUgZm9sbG93aW5nOiBUaGUgaW1wbGllZCBjb250ZXh0IGVsZW1lbnQg
b2YKKy8vIERvY3VtZW50LnBhcnNlIGlzIGJhc2VkIG9uIHRoZSBpZGVudGl0eSBvZiB0aGUgdGFn
TmFtZSBvZiB0aGUgZmlyc3Qgc3RhcnRUYWcgdG9rZW4gZW5jb3VudGVyZWQKKy8vIHdoaWNoIGlz
IG5vdCA8c3R5bGU+LCA8c2NyaXB0PiwgPG1ldGE+LCBvciA8bGluaz4uCisvLyBGSVhNRTogQWRk
IHN1cHBvcnQgZm9yIGluZmVycmluZyBTVkcgYW5kIE1hdGhNTCBlbGVtZW50cy4KK2NvbnN0IFF1
YWxpZmllZE5hbWUmIGdldEltcGxpZWRDb250ZXh0VGFnKGNvbnN0IEF0b21pY1N0cmluZyYgdGFn
TmFtZSkKK3sKKyAgICBpZiAoaXNUYWJsZUJvZHlDb250ZXh0VGFnKHRhZ05hbWUpCisgICAgICAg
IHx8IHRhZ05hbWUgPT0gY2FwdGlvblRhZworICAgICAgICB8fCB0YWdOYW1lID09IGNvbGdyb3Vw
VGFnKQorICAgICAgICByZXR1cm4gdGFibGVUYWc7CisgICAgaWYgKHRhZ05hbWUgPT0gdHJUYWcp
CisgICAgICAgIHJldHVybiB0Ym9keVRhZzsKKyAgICBpZiAodGFnTmFtZSA9PSBjb2xUYWcpCisg
ICAgICAgIHJldHVybiBjb2xncm91cFRhZzsKKyAgICBpZiAoaXNUYWJsZUNlbGxDb250ZXh0VGFn
KHRhZ05hbWUpKQorICAgICAgICByZXR1cm4gdHJUYWc7CisgICAgaWYgKHRhZ05hbWUgPT0gaGVh
ZFRhZyB8fCB0YWdOYW1lID09IGJvZHlUYWcpCisgICAgICAgIHJldHVybiBodG1sVGFnOworICAg
IGlmICh0YWdOYW1lID09IHJwVGFnIHx8IHRhZ05hbWUgPT0gcnRUYWcpCisgICAgICAgIHJldHVy
biBydWJ5VGFnOworCisgICAgcmV0dXJuIGJvZHlUYWc7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1l
c3BhY2UKIAogY2xhc3MgSFRNTFRyZWVCdWlsZGVyOjpFeHRlcm5hbENoYXJhY3RlclRva2VuQnVm
ZmVyIHsKQEAgLTM2OCw3ICszOTQsNyBAQCBIVE1MVHJlZUJ1aWxkZXI6OkhUTUxUcmVlQnVpbGRl
cihIVE1MRG9jdW1lbnRQYXJzZXIqIHBhcnNlciwgSFRNTERvY3VtZW50KiBkb2N1bQogLy8gbWlu
aW1pemUgY29kZSBkdXBsaWNhdGlvbiBiZXR3ZWVuIHRoZXNlIGNvbnN0cnVjdG9ycy4KIEhUTUxU
cmVlQnVpbGRlcjo6SFRNTFRyZWVCdWlsZGVyKEhUTUxEb2N1bWVudFBhcnNlciogcGFyc2VyLCBE
b2N1bWVudEZyYWdtZW50KiBmcmFnbWVudCwgRWxlbWVudCogY29udGV4dEVsZW1lbnQsIEZyYWdt
ZW50U2NyaXB0aW5nUGVybWlzc2lvbiBzY3JpcHRpbmdQZXJtaXNzaW9uLCBib29sIHVzZVByZUhU
TUw1UGFyc2VyUXVpcmtzLCB1bnNpZ25lZCBtYXhpbXVtRE9NVHJlZURlcHRoKQogICAgIDogbV9m
cmFtZXNldE9rKHRydWUpCi0gICAgLCBtX2ZyYWdtZW50Q29udGV4dChmcmFnbWVudCwgY29udGV4
dEVsZW1lbnQsIHNjcmlwdGluZ1Blcm1pc3Npb24pCisgICAgLCBtX2ZyYWdtZW50Q29udGV4dChm
cmFnbWVudCwgY29udGV4dEVsZW1lbnQgPyBjb250ZXh0RWxlbWVudC0+dGFnUU5hbWUoKSA6IG51
bGxRTmFtZSgpLCBzY3JpcHRpbmdQZXJtaXNzaW9uKQogICAgICwgbV9kb2N1bWVudChmcmFnbWVu
dC0+ZG9jdW1lbnQoKSkKICAgICAsIG1fdHJlZShmcmFnbWVudCwgc2NyaXB0aW5nUGVybWlzc2lv
biwgbWF4aW11bURPTVRyZWVEZXB0aCkKICAgICAsIG1fcmVwb3J0RXJyb3JzKGZhbHNlKSAvLyBG
SVhNRTogV2h5IG5vdCByZXBvcnQgZXJyb3JzIGluIGZyYWdtZW50cz8KQEAgLTM4MSwxNyArNDA3
LDE4IEBAIEhUTUxUcmVlQnVpbGRlcjo6SFRNTFRyZWVCdWlsZGVyKEhUTUxEb2N1bWVudFBhcnNl
ciogcGFyc2VyLCBEb2N1bWVudEZyYWdtZW50KiBmCiAgICAgLCBtX2xhc3RTY3JpcHRFbGVtZW50
U3RhcnRQb3NpdGlvbihUZXh0UG9zaXRpb246OmJlbG93UmFuZ2VQb3NpdGlvbigpKQogICAgICwg
bV91c2VQcmVIVE1MNVBhcnNlclF1aXJrcyh1c2VQcmVIVE1MNVBhcnNlclF1aXJrcykKIHsKLSAg
ICAvLyBGSVhNRTogVGhpcyBhc3NlcnRpb24gd2lsbCBiZWNvbWUgaW52YWxpZCBpZiA8aHR0cDov
L3dlYmtpdC5vcmcvYi82MDMxNj4gaXMgZml4ZWQuCisjaWYgIUVOQUJMRShJTVBMSUVEX0NPTlRF
WFRfUEFSU0lORykKICAgICBBU1NFUlQoY29udGV4dEVsZW1lbnQpOwotICAgIGlmIChjb250ZXh0
RWxlbWVudCkgewotICAgICAgICAvLyBTdGVwcyA0LjItNC42IG9mIHRoZSBIVE1MNSBGcmFnbWVu
dCBDYXNlIHBhcnNpbmcgYWxnb3JpdGhtOgotICAgICAgICAvLyBodHRwOi8vd3d3LndoYXR3Zy5v
cmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS90aGUtZW5kLmh0bWwjZnJh
Z21lbnQtY2FzZQotICAgICAgICAvLyBGb3IgZWZmaWNpZW5jeSwgd2Ugc2tpcCBzdGVwIDQuMiAo
IkxldCByb290IGJlIGEgbmV3IGh0bWwgZWxlbWVudCB3aXRoIG5vIGF0dHJpYnV0ZXMiKQotICAg
ICAgICAvLyBhbmQgaW5zdGVhZCB1c2UgdGhlIERvY3VtZW50RnJhZ21lbnQgYXMgYSByb290IG5v
ZGUuCi0gICAgICAgIG1fdHJlZS5vcGVuRWxlbWVudHMoKS0+cHVzaFJvb3ROb2RlKGZyYWdtZW50
KTsKLSAgICAgICAgcmVzZXRJbnNlcnRpb25Nb2RlQXBwcm9wcmlhdGVseSgpOworI2VuZGlmCisK
KyAgICAvLyBTdGVwcyA0LjItNC42IG9mIHRoZSBIVE1MNSBGcmFnbWVudCBDYXNlIHBhcnNpbmcg
YWxnb3JpdGhtOgorICAgIC8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9j
dXJyZW50LXdvcmsvbXVsdGlwYWdlL3RoZS1lbmQuaHRtbCNmcmFnbWVudC1jYXNlCisgICAgLy8g
Rm9yIGVmZmljaWVuY3ksIHdlIHNraXAgc3RlcCA0LjIgKCJMZXQgcm9vdCBiZSBhIG5ldyBodG1s
IGVsZW1lbnQgd2l0aCBubyBhdHRyaWJ1dGVzIikKKyAgICAvLyBhbmQgaW5zdGVhZCB1c2UgdGhl
IERvY3VtZW50RnJhZ21lbnQgYXMgYSByb290IG5vZGUuCisgICAgbV90cmVlLm9wZW5FbGVtZW50
cygpLT5wdXNoUm9vdE5vZGUoZnJhZ21lbnQpOworICAgIHJlc2V0SW5zZXJ0aW9uTW9kZUFwcHJv
cHJpYXRlbHkoKTsKKyAgICBpZiAoY29udGV4dEVsZW1lbnQpCiAgICAgICAgIG1fdHJlZS5zZXRG
b3JtKGNsb3Nlc3RGb3JtQW5jZXN0b3IoY29udGV4dEVsZW1lbnQpKTsKLSAgICB9CiB9CiAKIEhU
TUxUcmVlQnVpbGRlcjo6fkhUTUxUcmVlQnVpbGRlcigpCkBAIC00MTAsMTQgKzQzNywxNCBAQCB2
b2lkIEhUTUxUcmVlQnVpbGRlcjo6ZGV0YWNoKCkKIAogSFRNTFRyZWVCdWlsZGVyOjpGcmFnbWVu
dFBhcnNpbmdDb250ZXh0OjpGcmFnbWVudFBhcnNpbmdDb250ZXh0KCkKICAgICA6IG1fZnJhZ21l
bnQoMCkKLSAgICAsIG1fY29udGV4dEVsZW1lbnQoMCkKKyAgICAsIG1fY29udGV4dFRhZyhudWxs
UU5hbWUoKSkKICAgICAsIG1fc2NyaXB0aW5nUGVybWlzc2lvbihGcmFnbWVudFNjcmlwdGluZ0Fs
bG93ZWQpCiB7CiB9CiAKLUhUTUxUcmVlQnVpbGRlcjo6RnJhZ21lbnRQYXJzaW5nQ29udGV4dDo6
RnJhZ21lbnRQYXJzaW5nQ29udGV4dChEb2N1bWVudEZyYWdtZW50KiBmcmFnbWVudCwgRWxlbWVu
dCogY29udGV4dEVsZW1lbnQsIEZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbiBzY3JpcHRpbmdQ
ZXJtaXNzaW9uKQorSFRNTFRyZWVCdWlsZGVyOjpGcmFnbWVudFBhcnNpbmdDb250ZXh0OjpGcmFn
bWVudFBhcnNpbmdDb250ZXh0KERvY3VtZW50RnJhZ21lbnQqIGZyYWdtZW50LCBjb25zdCBRdWFs
aWZpZWROYW1lJiBjb250ZXh0VGFnLCBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24gc2NyaXB0
aW5nUGVybWlzc2lvbikKICAgICA6IG1fZnJhZ21lbnQoZnJhZ21lbnQpCi0gICAgLCBtX2NvbnRl
eHRFbGVtZW50KGNvbnRleHRFbGVtZW50KQorICAgICwgbV9jb250ZXh0VGFnKGNvbnRleHRUYWcp
CiAgICAgLCBtX3NjcmlwdGluZ1Blcm1pc3Npb24oc2NyaXB0aW5nUGVybWlzc2lvbikKIHsKICAg
ICBBU1NFUlQoIWZyYWdtZW50LT5oYXNDaGlsZE5vZGVzKCkpOwpAQCAtNDQ3LDcgKzQ3NCw3IEBA
IHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpjb25zdHJ1Y3RUcmVlRnJvbVRva2VuKEhUTUxUb2tlbiYg
cmF3VG9rZW4pCiAgICAgLy8gc3luY2hyb25vdXNseSByZS1lbnRlcnMgdGhlIHBhcnNlci4gV2Ug
ZG9uJ3QgY2xlYXIgdGhlIHRva2VuIGltbWVkYXRlbHkKICAgICAvLyBmb3IgQ2hhcmFjdGVyIHRv
a2VucyBiZWNhdXNlIHRoZSBBdG9taWNIVE1MVG9rZW4gYXZvaWRzIGNvcHlpbmcgdGhlCiAgICAg
Ly8gY2hhcmFjdGVycyBieSBrZWVwaW5nIGEgcG9pbnRlciB0byB0aGUgdW5kZXJseWluZyBidWZm
ZXIgaW4gdGhlCi0gICAgLy8gSFRNTFRva2VuLiBGb3J0dWFudGVseSwgQ2hhcmFjdGVyIHRva2Vu
cyBjYW4ndCBjYXVzZSB1c2UgdG8gcmUtZW50ZXIKKyAgICAvLyBIVE1MVG9rZW4uIEZvcnR1bmF0
ZWx5LCBDaGFyYWN0ZXIgdG9rZW5zIGNhbid0IGNhdXNlIHVzZSB0byByZS1lbnRlcgogICAgIC8v
IHRoZSBwYXJzZXIuCiAgICAgLy8KICAgICAvLyBGSVhNRTogU3RvcCBjbGVhcmluZyB0aGUgcmF3
VG9rZW4gb25jZSB3ZSBzdGFydCBydW5uaW5nIHRoZSBwYXJzZXIgb2ZmCkBAIC0xNDUwLDYgKzE0
NzcsMjYgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRhZyhBdG9taWNIVE1M
VG9rZW4mIHRva2VuKQogICAgIGNhc2UgVGV4dE1vZGU6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEltcGxpZWRDb250ZXh0TW9kZToKKyNp
ZiBFTkFCTEUoSU1QTElFRF9DT05URVhUX1BBUlNJTkcpCisgICAgICAgIEFTU0VSVChpc1BhcnNp
bmdGcmFnbWVudCgpKTsKKyAgICAgICAgQVNTRVJUKG1fZnJhZ21lbnRDb250ZXh0LmNvbnRleHRU
YWcoKSA9PSBudWxsUU5hbWUoKSk7CisKKyAgICAgICAgaWYgKHRva2VuLm5hbWUoKSA9PSBzdHls
ZVRhZworICAgICAgICAgICAgfHwgdG9rZW4ubmFtZSgpID09IHNjcmlwdFRhZworICAgICAgICAg
ICAgfHwgdG9rZW4ubmFtZSgpID09IG1ldGFUYWcKKyAgICAgICAgICAgIHx8IHRva2VuLm5hbWUo
KSA9PSBsaW5rVGFnKSB7CisgICAgICAgICAgICBwcm9jZXNzU3RhcnRUYWdGb3JJbkhlYWQodG9r
ZW4pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgbV9mcmFnbWVu
dENvbnRleHQuc2V0Q29udGV4dFRhZyhnZXRJbXBsaWVkQ29udGV4dFRhZyh0b2tlbi5uYW1lKCkp
KTsKKyAgICAgICAgcmVzZXRJbnNlcnRpb25Nb2RlQXBwcm9wcmlhdGVseSgpOworICAgICAgICBw
cm9jZXNzU3RhcnRUYWcodG9rZW4pOworI2Vsc2UKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisjZW5kaWYKKyAgICAgICAgYnJlYWs7CiAgICAgfQogfQogCkBAIC0xNjM3LDQ2ICsxNjg0
LDQ5IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpyZXNldEluc2VydGlvbk1vZGVBcHByb3ByaWF0
ZWx5KCkKICAgICBIVE1MRWxlbWVudFN0YWNrOjpFbGVtZW50UmVjb3JkKiBub2RlUmVjb3JkID0g
bV90cmVlLm9wZW5FbGVtZW50cygpLT50b3BSZWNvcmQoKTsKICAgICB3aGlsZSAoMSkgewogICAg
ICAgICBDb250YWluZXJOb2RlKiBub2RlID0gbm9kZVJlY29yZC0+bm9kZSgpOworICAgICAgICBj
b25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lID0gbm9kZSA9PSBtX3RyZWUub3BlbkVsZW1lbnRz
KCktPnJvb3ROb2RlKCkgPyBtX2ZyYWdtZW50Q29udGV4dC5jb250ZXh0VGFnKCkgOiBub2RlUmVj
b3JkLT5lbGVtZW50KCktPnRhZ1FOYW1lKCk7CiAgICAgICAgIGlmIChub2RlID09IG1fdHJlZS5v
cGVuRWxlbWVudHMoKS0+cm9vdE5vZGUoKSkgewogICAgICAgICAgICAgQVNTRVJUKGlzUGFyc2lu
Z0ZyYWdtZW50KCkpOwogICAgICAgICAgICAgbGFzdCA9IHRydWU7Ci0gICAgICAgICAgICBub2Rl
ID0gbV9mcmFnbWVudENvbnRleHQuY29udGV4dEVsZW1lbnQoKTsKICAgICAgICAgfQotICAgICAg
ICBpZiAobm9kZS0+aGFzVGFnTmFtZShzZWxlY3RUYWcpKSB7CisgICAgICAgIGlmICh0YWdOYW1l
Lm1hdGNoZXMoc2VsZWN0VGFnKSkgewogICAgICAgICAgICAgQVNTRVJUKGlzUGFyc2luZ0ZyYWdt
ZW50KCkpOwogICAgICAgICAgICAgcmV0dXJuIHNldEluc2VydGlvbk1vZGUoSW5TZWxlY3RNb2Rl
KTsKICAgICAgICAgfQotICAgICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZSh0ZFRhZykgfHwgbm9k
ZS0+aGFzVGFnTmFtZSh0aFRhZykpCisgICAgICAgIGlmICh0YWdOYW1lLm1hdGNoZXModGRUYWcp
IHx8IHRhZ05hbWUubWF0Y2hlcyh0aFRhZykpCiAgICAgICAgICAgICByZXR1cm4gc2V0SW5zZXJ0
aW9uTW9kZShJbkNlbGxNb2RlKTsKLSAgICAgICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUodHJUYWcp
KQorICAgICAgICBpZiAodGFnTmFtZS5tYXRjaGVzKHRyVGFnKSkKICAgICAgICAgICAgIHJldHVy
biBzZXRJbnNlcnRpb25Nb2RlKEluUm93TW9kZSk7Ci0gICAgICAgIGlmIChub2RlLT5oYXNUYWdO
YW1lKHRib2R5VGFnKSB8fCBub2RlLT5oYXNUYWdOYW1lKHRoZWFkVGFnKSB8fCBub2RlLT5oYXNU
YWdOYW1lKHRmb290VGFnKSkKKyAgICAgICAgaWYgKHRhZ05hbWUubWF0Y2hlcyh0Ym9keVRhZykg
fHwgdGFnTmFtZS5tYXRjaGVzKHRoZWFkVGFnKSB8fCB0YWdOYW1lLm1hdGNoZXModGZvb3RUYWcp
KQogICAgICAgICAgICAgcmV0dXJuIHNldEluc2VydGlvbk1vZGUoSW5UYWJsZUJvZHlNb2RlKTsK
LSAgICAgICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUoY2FwdGlvblRhZykpCisgICAgICAgIGlmICh0
YWdOYW1lLm1hdGNoZXMoY2FwdGlvblRhZykpCiAgICAgICAgICAgICByZXR1cm4gc2V0SW5zZXJ0
aW9uTW9kZShJbkNhcHRpb25Nb2RlKTsKLSAgICAgICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUoY29s
Z3JvdXBUYWcpKSB7CisgICAgICAgIGlmICh0YWdOYW1lLm1hdGNoZXMoY29sZ3JvdXBUYWcpKSB7
CiAgICAgICAgICAgICBBU1NFUlQoaXNQYXJzaW5nRnJhZ21lbnQoKSk7CiAgICAgICAgICAgICBy
ZXR1cm4gc2V0SW5zZXJ0aW9uTW9kZShJbkNvbHVtbkdyb3VwTW9kZSk7CiAgICAgICAgIH0KLSAg
ICAgICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUodGFibGVUYWcpKQorICAgICAgICBpZiAodGFnTmFt
ZS5tYXRjaGVzKHRhYmxlVGFnKSkKICAgICAgICAgICAgIHJldHVybiBzZXRJbnNlcnRpb25Nb2Rl
KEluVGFibGVNb2RlKTsKLSAgICAgICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUoaGVhZFRhZykpIHsK
KyAgICAgICAgaWYgKHRhZ05hbWUubWF0Y2hlcyhoZWFkVGFnKSkgewogICAgICAgICAgICAgQVNT
RVJUKGlzUGFyc2luZ0ZyYWdtZW50KCkpOwogICAgICAgICAgICAgcmV0dXJuIHNldEluc2VydGlv
bk1vZGUoSW5Cb2R5TW9kZSk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKG5vZGUtPmhhc1RhZ05h
bWUoYm9keVRhZykpCisgICAgICAgIGlmICh0YWdOYW1lLm1hdGNoZXMoYm9keVRhZykpCiAgICAg
ICAgICAgICByZXR1cm4gc2V0SW5zZXJ0aW9uTW9kZShJbkJvZHlNb2RlKTsKLSAgICAgICAgaWYg
KG5vZGUtPmhhc1RhZ05hbWUoZnJhbWVzZXRUYWcpKSB7CisgICAgICAgIGlmICh0YWdOYW1lLm1h
dGNoZXMoZnJhbWVzZXRUYWcpKSB7CiAgICAgICAgICAgICBBU1NFUlQoaXNQYXJzaW5nRnJhZ21l
bnQoKSk7CiAgICAgICAgICAgICByZXR1cm4gc2V0SW5zZXJ0aW9uTW9kZShJbkZyYW1lc2V0TW9k
ZSk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUoaHRtbFRhZykpIHsK
KyAgICAgICAgaWYgKHRhZ05hbWUubWF0Y2hlcyhodG1sVGFnKSkgewogICAgICAgICAgICAgQVNT
RVJUKGlzUGFyc2luZ0ZyYWdtZW50KCkpOwogICAgICAgICAgICAgcmV0dXJuIHNldEluc2VydGlv
bk1vZGUoQmVmb3JlSGVhZE1vZGUpOwogICAgICAgICB9CiAgICAgICAgIGlmIChsYXN0KSB7CiAg
ICAgICAgICAgICBBU1NFUlQoaXNQYXJzaW5nRnJhZ21lbnQoKSk7Ci0gICAgICAgICAgICByZXR1
cm4gc2V0SW5zZXJ0aW9uTW9kZShJbkJvZHlNb2RlKTsKKyNpZiAhRU5BQkxFKElNUExJRURfQ09O
VEVYVF9QQVJTSU5HKQorICAgICAgICAgICAgQVNTRVJUKHRhZ05hbWUgIT0gbnVsbFFOYW1lKCkp
OworI2VuZGlmCisgICAgICAgICAgICByZXR1cm4gc2V0SW5zZXJ0aW9uTW9kZSh0YWdOYW1lID09
IG51bGxRTmFtZSgpID8gSW1wbGllZENvbnRleHRNb2RlIDogSW5Cb2R5TW9kZSk7CiAgICAgICAg
IH0KICAgICAgICAgbm9kZVJlY29yZCA9IG5vZGVSZWNvcmQtPm5leHQoKTsKICAgICB9CkBAIC0y
MjI1LDYgKzIyNzUsMTMgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWcoQXRv
bWljSFRNTFRva2VuJiB0b2tlbikKICAgICAgICAgZGVmYXVsdEZvckluVGFibGVUZXh0KCk7CiAg
ICAgICAgIHByb2Nlc3NFbmRUYWcodG9rZW4pOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIElt
cGxpZWRDb250ZXh0TW9kZToKKyNpZiBFTkFCTEUoSU1QTElFRF9DT05URVhUX1BBUlNJTkcpCisg
ICAgICAgIHBhcnNlRXJyb3IodG9rZW4pOworI2Vsc2UKKyAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisjZW5kaWYKKyAgICAgICAgYnJlYWs7CiAgICAgfQogfQogCkBAIC0yMjM0LDcgKzIy
OTEsMTEgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NDb21tZW50KEF0b21pY0hUTUxU
b2tlbiYgdG9rZW4pCiAgICAgaWYgKG1faW5zZXJ0aW9uTW9kZSA9PSBJbml0aWFsTW9kZQogICAg
ICAgICB8fCBtX2luc2VydGlvbk1vZGUgPT0gQmVmb3JlSFRNTE1vZGUKICAgICAgICAgfHwgbV9p
bnNlcnRpb25Nb2RlID09IEFmdGVyQWZ0ZXJCb2R5TW9kZQorICAgICAgICB8fCBtX2luc2VydGlv
bk1vZGUgPT0gSW1wbGllZENvbnRleHRNb2RlCiAgICAgICAgIHx8IG1faW5zZXJ0aW9uTW9kZSA9
PSBBZnRlckFmdGVyRnJhbWVzZXRNb2RlKSB7CisjaWYgIUVOQUJMRShJTVBMSUVEX0NPTlRFWFRf
UEFSU0lORykKKyAgICAgICAgQVNTRVJUKG1faW5zZXJ0aW9uTW9kZSAhPSBJbXBsaWVkQ29udGV4
dE1vZGUpOworI2VuZGlmCiAgICAgICAgIG1fdHJlZS5pbnNlcnRDb21tZW50T25Eb2N1bWVudCh0
b2tlbik7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yMzI1LDggKzIzODYsMTIgQEAgUmVw
cm9jZXNzQnVmZmVyOgogICAgIH0KICAgICBjYXNlIEluQm9keU1vZGU6CiAgICAgY2FzZSBJbkNh
cHRpb25Nb2RlOgorICAgIGNhc2UgSW1wbGllZENvbnRleHRNb2RlOgogICAgIGNhc2UgSW5DZWxs
TW9kZTogewotICAgICAgICBBU1NFUlQoaW5zZXJ0aW9uTW9kZSgpID09IEluQm9keU1vZGUgfHwg
aW5zZXJ0aW9uTW9kZSgpID09IEluQ2FwdGlvbk1vZGUgfHwgaW5zZXJ0aW9uTW9kZSgpID09IElu
Q2VsbE1vZGUpOworI2lmICFFTkFCTEUoSU1QTElFRF9DT05URVhUX1BBUlNJTkcpCisgICAgICAg
IEFTU0VSVChpbnNlcnRpb25Nb2RlKCkgIT0gSW1wbGllZENvbnRleHRNb2RlKQorI2VuZGlmCisg
ICAgICAgIEFTU0VSVChpbnNlcnRpb25Nb2RlKCkgPT0gSW5Cb2R5TW9kZSB8fCBpbnNlcnRpb25N
b2RlKCkgPT0gSW5DYXB0aW9uTW9kZSB8fCBpbnNlcnRpb25Nb2RlKCkgPT0gSW5DZWxsTW9kZSB8
fCBpbnNlcnRpb25Nb2RlKCkgPT0gSW1wbGllZENvbnRleHRNb2RlKTsKICAgICAgICAgcHJvY2Vz
c0NoYXJhY3RlckJ1ZmZlckZvckluQm9keShidWZmZXIpOwogICAgICAgICBicmVhazsKICAgICB9
CkBAIC0yNDYwLDggKzI1MjUsMTIgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRP
ZkZpbGUoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKICAgICBjYXNlIEluQm9keU1vZGU6CiAgICAg
Y2FzZSBJbkNlbGxNb2RlOgogICAgIGNhc2UgSW5DYXB0aW9uTW9kZToKKyAgICBjYXNlIEltcGxp
ZWRDb250ZXh0TW9kZToKICAgICBjYXNlIEluUm93TW9kZToKLSAgICAgICAgQVNTRVJUKGluc2Vy
dGlvbk1vZGUoKSA9PSBJbkJvZHlNb2RlIHx8IGluc2VydGlvbk1vZGUoKSA9PSBJbkNlbGxNb2Rl
IHx8IGluc2VydGlvbk1vZGUoKSA9PSBJbkNhcHRpb25Nb2RlIHx8IGluc2VydGlvbk1vZGUoKSA9
PSBJblJvd01vZGUpOworI2lmICFFTkFCTEUoSU1QTElFRF9DT05URVhUX1BBUlNJTkcpCisgICAg
ICAgIEFTU0VSVChpbnNlcnRpb25Nb2RlKCkgIT0gSW1wbGllZENvbnRleHRNb2RlKTsKKyNlbmRp
ZgorICAgICAgICBBU1NFUlQoaW5zZXJ0aW9uTW9kZSgpID09IEluQm9keU1vZGUgfHwgaW5zZXJ0
aW9uTW9kZSgpID09IEluQ2VsbE1vZGUgfHwgaW5zZXJ0aW9uTW9kZSgpID09IEluQ2FwdGlvbk1v
ZGUgfHwgaW5zZXJ0aW9uTW9kZSgpID09IEluUm93TW9kZSB8fCBpbnNlcnRpb25Nb2RlKCkgPT0g
SW1wbGllZENvbnRleHRNb2RlKTsKICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsgLy8gRW1pdCBw
YXJzZSBlcnJvciBiYXNlZCBvbiB3aGF0IGVsZW1lbnRzIGFyZSBzdGlsbCBvcGVuLgogICAgICAg
ICBicmVhazsKICAgICBjYXNlIEFmdGVyQm9keU1vZGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxUcmVlQnVpbGRlci5oCmluZGV4IDY0YTkzYjM0ZmZiZjFmMDRhYTBiNzM0MjIz
N2M3OWQ5YWRkNWJiMjMuLmVmZjg1ZTA0ZGMzNmRhMmRjMGY5MTQ2MTIyYjAxODI2YThjMzNhMDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5oCkBAIC01
MCw2ICs1MCw3IEBAIGNsYXNzIERvY3VtZW50RnJhZ21lbnQ7CiBjbGFzcyBGcmFtZTsKIGNsYXNz
IEhUTUxUb2tlbjsKIGNsYXNzIEhUTUxEb2N1bWVudDsKK2NsYXNzIFF1YWxpZmllZE5hbWU7CiBj
bGFzcyBOb2RlOwogY2xhc3MgSFRNTERvY3VtZW50UGFyc2VyOwogCkBAIC05OSw2ICsxMDAsNyBA
QCBwcml2YXRlOgogICAgICAgICBJbkhlYWRNb2RlLAogICAgICAgICBJbkhlYWROb3NjcmlwdE1v
ZGUsCiAgICAgICAgIEFmdGVySGVhZE1vZGUsCisgICAgICAgIEltcGxpZWRDb250ZXh0TW9kZSwK
ICAgICAgICAgSW5Cb2R5TW9kZSwKICAgICAgICAgVGV4dE1vZGUsCiAgICAgICAgIEluVGFibGVN
b2RlLApAQCAtMTk1LDE2ICsxOTcsMTcgQEAgcHJpdmF0ZToKICAgICAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoRnJhZ21lbnRQYXJzaW5nQ29udGV4dCk7CiAgICAgcHVibGljOgogICAgICAgICBG
cmFnbWVudFBhcnNpbmdDb250ZXh0KCk7Ci0gICAgICAgIEZyYWdtZW50UGFyc2luZ0NvbnRleHQo
RG9jdW1lbnRGcmFnbWVudCosIEVsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBGcmFnbWVudFNjcmlw
dGluZ1Blcm1pc3Npb24pOworICAgICAgICBGcmFnbWVudFBhcnNpbmdDb250ZXh0KERvY3VtZW50
RnJhZ21lbnQqLCBjb25zdCBRdWFsaWZpZWROYW1lJiBjb250ZXh0VGFnLCBGcmFnbWVudFNjcmlw
dGluZ1Blcm1pc3Npb24pOwogICAgICAgICB+RnJhZ21lbnRQYXJzaW5nQ29udGV4dCgpOwogCiAg
ICAgICAgIERvY3VtZW50RnJhZ21lbnQqIGZyYWdtZW50KCkgY29uc3QgeyByZXR1cm4gbV9mcmFn
bWVudDsgfQotICAgICAgICBFbGVtZW50KiBjb250ZXh0RWxlbWVudCgpIGNvbnN0IHsgQVNTRVJU
KG1fZnJhZ21lbnQpOyByZXR1cm4gbV9jb250ZXh0RWxlbWVudDsgfQorICAgICAgICBjb25zdCBR
dWFsaWZpZWROYW1lJiBjb250ZXh0VGFnKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0VGFnOyB9
CisgICAgICAgIHZvaWQgc2V0Q29udGV4dFRhZyhjb25zdCBRdWFsaWZpZWROYW1lJiBjb250ZXh0
VGFnKSB7IG1fY29udGV4dFRhZyA9IGNvbnRleHRUYWc7IH0KICAgICAgICAgRnJhZ21lbnRTY3Jp
cHRpbmdQZXJtaXNzaW9uIHNjcmlwdGluZ1Blcm1pc3Npb24oKSBjb25zdCB7IEFTU0VSVChtX2Zy
YWdtZW50KTsgcmV0dXJuIG1fc2NyaXB0aW5nUGVybWlzc2lvbjsgfQogCiAgICAgcHJpdmF0ZToK
ICAgICAgICAgRG9jdW1lbnRGcmFnbWVudCogbV9mcmFnbWVudDsKLSAgICAgICAgRWxlbWVudCog
bV9jb250ZXh0RWxlbWVudDsKKyAgICAgICAgUXVhbGlmaWVkTmFtZSBtX2NvbnRleHRUYWc7CiAK
ICAgICAgICAgLy8gRnJhZ21lbnRTY3JpcHRpbmdOb3RBbGxvd2VkIGNhdXNlcyB0aGUgUGFyc2Vy
IHRvIHJlbW92ZSBjaGlsZHJlbgogICAgICAgICAvLyBmcm9tIDxzY3JpcHQ+IHRhZ3MgKHNvIGph
dmFzY3JpcHQgZG9lc24ndCBzaG93IHVwIGluIHBhc3RlcykuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL2Zl
YXR1cmVzLmd5cGkKaW5kZXggMDc2ZmMzOGE5YTliZDFhYWRkODk0ODk2NjE4MTQxNDllMTM5NzRl
ZS4uNzU3ODAzYmE0ODUzMjUxMDQ5MjljNmM5NmJmY2UzOGRkMGM5YTU1ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vZmVhdHVyZXMuZ3lwaQpAQCAtNTUsNiArNTUsNyBAQAogICAgICAgJ0VOQUJMRV9H
QU1FUEFEPTEnLAogICAgICAgJ0VOQUJMRV9HRU9MT0NBVElPTj0xJywKICAgICAgICdFTkFCTEVf
R0VTVFVSRV9FVkVOVFM9MScsCisgICAgICAnRU5BQkxFX0lNUExJRURfQ09OVEVYVF9QQVJTSU5H
PTEnLAogICAgICAgJ0VOQUJMRV9JQ09OREFUQUJBU0U9MCcsCiAgICAgICAnRU5BQkxFX0lGUkFN
RV9TRUFNTEVTUz0xJywKICAgICAgICdFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRT0xJywKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCBhNTRiZmU5Yzg3NzljN2E0NDBhYjU5MTJkMWQ3YzE1NTBhOTkxZmU3Li5iMmI4MjM2ZDIyN2I5
NTAzNGQyNGRjOTA2YTJlNzFjZWNiZDljZmQyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTIt
MDUtMTYgIFJhZmFlbCBXZWluc3RlaW4gIDxyYWZhZWx3QGNocm9taXVtLm9yZz4KKworICAgICAg
ICBJbXBsZW1lbnQgRG9jdW1lbnQucGFyc2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTg0NjQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBodG1sNWxpYi9yZXNvdXJjZXMvZG9jdW1lbnQtcGFyc2UuZGF0
OiBBZGRlZC4KKyAgICAgICAgKiBodG1sNWxpYi9yZXNvdXJjZXMvcnVubmVyLmpzOgorICAgICAg
ICAqIGh0bWw1bGliL3J1bi1kb2N1bWVudC1wYXJzZS1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBodG1sNWxpYi9ydW4tZG9jdW1lbnQtcGFyc2UuaHRtbDogQWRkZWQuCisKIDIwMTIt
MDUtMTYgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAg
IFVucmV2aWV3ZWQsIEdUSyBnYXJkZW5pbmcuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odG1s
NWxpYi9yZXNvdXJjZXMvZG9jdW1lbnQtcGFyc2UuZGF0IGIvTGF5b3V0VGVzdHMvaHRtbDVsaWIv
cmVzb3VyY2VzL2RvY3VtZW50LXBhcnNlLmRhdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MmYwNjU1MzU3ZjgxMWFi
NmZjNzlmNzUxNDZmZjhiNDZmMzQwYzc5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aHRtbDVsaWIvcmVzb3VyY2VzL2RvY3VtZW50LXBhcnNlLmRhdApAQCAtMCwwICsxLDE0MCBAQAor
I2RhdGEKK0hlbGxvCisjZXJyb3JzCisjZG9jdW1lbnQtZnJhZ21lbnQKKyNkb2N1bWVudAorfCAi
SGVsbG8iCisKKyNkYXRhCis8L2Rpdj5IZWxsbworI2Vycm9ycworI2RvY3VtZW50LWZyYWdtZW50
CisjZG9jdW1lbnQKK3wgIkhlbGxvIgorCisjZGF0YQorPGRpdj48c3Bhbj4KKyNlcnJvcnMKKyNk
b2N1bWVudC1mcmFnbWVudAorI2RvY3VtZW50Cit8IDxkaXY+Cit8ICAgPHNwYW4+CisKKyNkYXRh
CitIZWxsbzxkaXY+PHNwYW4+CisjZXJyb3JzCisjZG9jdW1lbnQtZnJhZ21lbnQKKyNkb2N1bWVu
dAorfCAiSGVsbG8iCit8IDxkaXY+Cit8ICAgPHNwYW4+CisKKyNkYXRhCis8IURPQ1RZUEUgaHRt
bD48ZGl2PjxzcGFuPgorI2Vycm9ycworI2RvY3VtZW50LWZyYWdtZW50CisjZG9jdW1lbnQKK3wg
PGRpdj4KK3wgICA8c3Bhbj4KKworI2RhdGEKKzxvcHRpb24+SGVsbG8KKyNlcnJvcnMKKyNkb2N1
bWVudC1mcmFnbWVudAorI2RvY3VtZW50Cit8IDxvcHRpb24+Cit8ICAgIkhlbGxvIgorCisjZGF0
YQorSGVsbG88b3B0aW9uPkdvb2RieWU8b3B0aW9uPldvcmxkCisjZXJyb3JzCisjZG9jdW1lbnQt
ZnJhZ21lbnQKKyNkb2N1bWVudAorfCAiSGVsbG8iCit8IDxvcHRpb24+Cit8ICAgIkdvb2RieWUi
Cit8IDxvcHRpb24+Cit8ICAgIldvcmxkIgorCisjZGF0YQorPHRkPgorI2Vycm9ycworI2RvY3Vt
ZW50LWZyYWdtZW50CisjZG9jdW1lbnQKK3wgPHRkPgorCisjZGF0YQorPC90ZD5IZWxsbzx0ZD5H
b29kYnllCisjZXJyb3JzCisjZG9jdW1lbnQtZnJhZ21lbnQKKyNkb2N1bWVudAorfCAiSGVsbG8i
Cit8IDx0ZD4KK3wgICAiR29vZGJ5ZSIKKworI2RhdGEKKzx0aGVhZD4KKyNlcnJvcnMKKyNkb2N1
bWVudC1mcmFnbWVudAorI2RvY3VtZW50Cit8IDx0aGVhZD4KKworI2RhdGEKKzx0cj4KKyNlcnJv
cnMKKyNkb2N1bWVudC1mcmFnbWVudAorI2RvY3VtZW50Cit8IDx0cj4KKworI2RhdGEKKzx0ZD4K
KyNlcnJvcnMKKyNkb2N1bWVudC1mcmFnbWVudAorI2RvY3VtZW50Cit8IDx0ZD4KKworI2RhdGEK
KzxtZXRhPjx0ZD4KKyNlcnJvcnMKKyNkb2N1bWVudC1mcmFnbWVudAorI2RvY3VtZW50Cit8IDxt
ZXRhPgorfCA8dGQ+CisKKyNkYXRhCis8bGluaz48dHI+CisjZXJyb3JzCisjZG9jdW1lbnQtZnJh
Z21lbnQKKyNkb2N1bWVudAorfCA8bGluaz4KK3wgPHRyPgorCisjZGF0YQorPHN0eWxlPmgxIHsg
YmFja2dyb3VuZC1jb2xvcjogYmx1ZTt9PC9zdHlsZT48dGhlYWQ+CisjZXJyb3JzCisjZG9jdW1l
bnQtZnJhZ21lbnQKKyNkb2N1bWVudAorfCA8c3R5bGU+Cit8ICAgImgxIHsgYmFja2dyb3VuZC1j
b2xvcjogYmx1ZTt9IgorfCA8dGhlYWQ+CisKKyNkYXRhCis8c2NyaXB0PnZhciBmb28gPSAiYmFy
Ijs8L3NjcmlwdD48b3B0aW9uPgorI2Vycm9ycworI2RvY3VtZW50LWZyYWdtZW50CisjZG9jdW1l
bnQKK3wgPHNjcmlwdD4KK3wgICAidmFyIGZvbyA9ICJiYXIiOyIKK3wgPG9wdGlvbj4KKworI2Rh
dGEKK3BhcnNlIGFzIHRleHQ8c2NyaXB0PnBhcnNlIGFzIDxzcGFuPnNjcmlwdDwvc3Bhbj48L3Nj
cmlwdD48dHI+PHRkPnRhYmxlIGNvbnRlbnQ8L3RkPjwvdHI+CisjZXJyb3JzCisjZG9jdW1lbnQt
ZnJhZ21lbnQKKyNkb2N1bWVudAorfCAicGFyc2UgYXMgdGV4dCIKK3wgPHNjcmlwdD4KK3wgICAi
cGFyc2UgYXMgPHNwYW4+c2NyaXB0PC9zcGFuPiIKK3wgPHRyPgorfCAgIDx0ZD4KK3wgICAgICJ0
YWJsZSBjb250ZW50IgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0bWw1bGliL3Jlc291cmNlcy9ydW5uZXIuanMgYi9MYXlvdXRUZXN0cy9odG1s
NWxpYi9yZXNvdXJjZXMvcnVubmVyLmpzCmluZGV4IDQwYTFjMGVmYjQ5NjZiYjFhYmI4OTg0YTky
YzQ4NjQzMDQ2NTE4ZjQuLmM4NTU1ZTFiNWNmODI4MGY3MmJhZWE1NzQyZGRkN2ZkOTNjN2JiY2Eg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0bWw1bGliL3Jlc291cmNlcy9ydW5uZXIuanMKKysr
IGIvTGF5b3V0VGVzdHMvaHRtbDVsaWIvcmVzb3VyY2VzL3J1bm5lci5qcwpAQCAtODQsNyArODQs
NyBAQCBmdW5jdGlvbiBydW4oKQogCiBmdW5jdGlvbiB0ZXN0KCkKIHsKLSAgICB2YXIgaW5wdXQs
IGVycm9yc1N0YXJ0LCBmcmFnbWVudFN0YXJ0LCBjb250ZXh0RWxlbWVudCwgZG9tU3RhcnQsIGRv
bTsKKyAgICB2YXIgaW5wdXQsIGVycm9yc1N0YXJ0LCBmcmFnbWVudCwgZnJhZ21lbnRTdGFydCwg
Y29udGV4dEVsZW1lbnQsIGRvbVN0YXJ0LCBkb207CiAgICAgaWYgKGRhdGEgPSB0ZXN0cy5zaGlm
dCgpKQogICAgIHsKICAgICAgICAgc3RhdC5kYXRhID0gIlJ1bm5pbmcgdGVzdCAiICsgdGVzdF9u
dW1iZXIgKyAiIG9mICIgKyAodGVzdF9udW1iZXIgKyB0ZXN0cy5sZW5ndGgpICsgIiBpbiAiICsg
ZmlsZTsKQEAgLTk2LDcgKzk2LDggQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICBkb21T
dGFydCA9IGRhdGEuaW5kZXhPZigiXG4jZG9jdW1lbnRcbiIpCiAgICAgICAgICAgICBpZiAoZnJh
Z21lbnRTdGFydCAhPT0gLTEpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29udGV4
dEVsZW1lbnQgPSBkYXRhLnN1YnN0cmluZyhmcmFnbWVudFN0YXJ0ICsgMjAsIGRvbVN0YXJ0KTsK
KyAgICAgICAgICAgICAgICBmcmFnbWVudCA9IHRydWU7CisgICAgICAgICAgICAgICAgY29udGV4
dEVsZW1lbnQgPSBkYXRhLnN1YnN0cmluZyhmcmFnbWVudFN0YXJ0ICsgMjAsIGRvbVN0YXJ0KS50
cmltKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoZG9tU3RhcnQgIT09IC0xKQog
ICAgICAgICAgICAgewpAQCAtMTA1LDcgKzEwNiw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAg
ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgZG9tID0gZG9tLnN1YnN0cmluZygwLCBk
b20ubGVuZ3RoIC0gMSk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJ1bl90
ZXN0KGlucHV0LCBjb250ZXh0RWxlbWVudCwgZG9tKTsKKyAgICAgICAgICAgICAgICBydW5fdGVz
dChpbnB1dCwgZnJhZ21lbnQsIGNvbnRleHRFbGVtZW50LCBkb20pOwogICAgICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMTQyLDE2ICsxNDMsMjMgQEAg
ZnVuY3Rpb24gdGVzdCgpCiAgICAgfQogfQogCi1mdW5jdGlvbiBydW5fdGVzdChpbnB1dCwgY29u
dGV4dEVsZW1lbnQsIGV4cGVjdGVkKQorZnVuY3Rpb24gcnVuX3Rlc3QoaW5wdXQsIGZyYWdtZW50
LCBjb250ZXh0RWxlbWVudCwgZXhwZWN0ZWQpCiB7Ci0gICAgaWYgKGNvbnRleHRFbGVtZW50KQor
ICAgIGlmIChmcmFnbWVudCkKICAgICB7Ci0gICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudChjb250ZXh0RWxlbWVudCk7Ci0gICAgICAgIHRyeQotICAgICAgICB7Ci0g
ICAgICAgICAgICBlbGVtZW50LmlubmVySFRNTCA9IGlucHV0OworICAgICAgICB2YXIgZWxlbWVu
dDsKKyAgICAgICAgaWYgKGNvbnRleHRFbGVtZW50KSB7CisgICAgICAgICAgICBlbGVtZW50ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChjb250ZXh0RWxlbWVudCk7CisgICAgICAgICAgICB0cnkK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBlbGVtZW50LmlubmVySFRNTCA9IGlucHV0
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2F0Y2goZSkge30KKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGRvY3VtZW50
LnBhcnNlKGlucHV0KTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9CiAgICAgICAgIH0KLSAg
ICAgICAgY2F0Y2goZSkge30KICAgICAgICAgcHJvY2Vzc19yZXN1bHQoaW5wdXQsIGVsZW1lbnQs
IGV4cGVjdGVkKTsKICAgICB9CiAgICAgZWxzZSBpZiAod3JpdGUpCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odG1sNWxpYi9ydW4tZG9jdW1lbnQtcGFyc2UtZXhwZWN0ZWQuaHRtbCBiL0xheW91
dFRlc3RzL2h0bWw1bGliL3J1bi1kb2N1bWVudC1wYXJzZS1leHBlY3RlZC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjllZmUzMjRiMDEyOWU2MWM5MTI0ZTU1ODA5MjgyYTk1ZDBiYWFhZTcKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9odG1sNWxpYi9ydW4tZG9jdW1lbnQtcGFyc2UtZXhwZWN0ZWQu
aHRtbApAQCAtMCwwICsxIEBACityZXNvdXJjZXMvdGVtcGxhdGUuZGF0OiBQQVNTCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odG1sNWxpYi9ydW4tZG9jdW1lbnQtcGFyc2UuaHRtbCBiL0xheW91
dFRlc3RzL2h0bWw1bGliL3J1bi1kb2N1bWVudC1wYXJzZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY5MDRl
YTc1N2I5ODJjZDkzY2UyZGMxZDk1NGIxM2ZlYWJhZDljYjgKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9odG1sNWxpYi9ydW4tZG9jdW1lbnQtcGFyc2UuaHRtbApAQCAtMCwwICsxLDgg
QEAKKzwhZG9jdHlwZSBodG1sPgorPHNjcmlwdD4KK3ZhciB0ZXN0X2ZpbGVzID0gWworICAncmVz
b3VyY2VzL2RvY3VtZW50LXBhcnNlLmRhdCcsCitdCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li9yZXNvdXJjZXMvZHVtcC1hcy1tYXJrdXAuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJl
c291cmNlcy9ydW5uZXIuanMiPjwvc2NyaXB0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21kdi90ZW1wbGF0ZS5odG1sIGIvTGF5b3V0VGVzdHMv
bWR2L3RlbXBsYXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWNlNTNmYmRlZDRiNTVhM2E2ODNmOGVlMzg0
ODJmZTgxNTQyYWM3NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21kdi90ZW1wbGF0
ZS5odG1sCkBAIC0wLDAgKzEsMTcgQEAKKzxodG1sPgorPGhlYWQ+CisgIDxzY3JpcHQ+Cit3aW5k
b3cuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZ1bmN0aW9uKCkgeworICAg
ZG9jdW1lbnQuYm9keS5tb2RlbCA9IHt9OworfSk7CisgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+CisgIDx0ZW1wbGF0ZT4KKyAgICA8ZGl2PkZvbzwvZGl2PgorICAgIDx0ZW1wbGF0ZT4KKyAg
ICAgIDxkaXY+QmFyPC9kaXY+CisgICAgPC90ZW1wbGF0ZT4KKyAgPC90ZW1wbGF0ZT4KKzwvYm9k
eT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>143878</attachid>
            <date>2012-05-24 13:22:34 -0700</date>
            <delta_ts>2012-05-31 11:45:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84646-20120524132234.patch</filename>
            <type>text/plain</type>
            <size>31846</size>
            <attacher name="Rafael Weinstein">rafaelw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4NDA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzc5ZDQ3ZTlmMjEwOGU2
MDM0YjllYjI3OGZmYTRiNzUwZGZkZjM2Ni4uZmUwZGQzNTBmYTY2YjJlYmJkMWNiNWQzN2MxOWZk
ODM4YmVhOTNiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDEyLTA1LTI0ICBSYWZh
ZWwgV2VpbnN0ZWluICA8cmFmYWVsd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW1wbGVtZW50
IEhUTUxUZW1wbGF0ZUVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTg2MDMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGVzdDogaHRtbDVsaWIvcnVuLXRlbXBsYXRlLmh0bWwKKworICAgICAgICAq
IFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBlZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1hcmt1cEFjY3VtdWxhdG9yOjpzZXJpYWxpemVOb2Rlc1dpdGhO
YW1lc3BhY2VzKToKKyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50c0FsbEluT25lLmNwcDoKKyAg
ICAgICAgKiBodG1sL0hUTUxUYWdOYW1lcy5pbjoKKyAgICAgICAgKiBodG1sL0hUTUxUZW1wbGF0
ZUVsZW1lbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFRlbXBsYXRlRWxlbWVudDo6SFRNTFRlbXBsYXRlRWxlbWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MVGVtcGxhdGVFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTFRlbXBsYXRlRWxlbWVudDo6Y29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGVt
cGxhdGVFbGVtZW50OjpzZXRJbm5lckhUTUwpOgorICAgICAgICAqIGh0bWwvSFRNTFRlbXBsYXRl
RWxlbWVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSFRNTFRlbXBs
YXRlRWxlbWVudCk6CisgICAgICAgICogaHRtbC9IVE1MVGVtcGxhdGVFbGVtZW50LmlkbDogQWRk
ZWQuCisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTENvbnN0cnVjdGlvblNpdGU6OmZpbmRGb3N0ZXJTaXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxDb25zdHJ1Y3Rpb25TaXRlOjpzaG91bGRGb3N0ZXJQYXJlbnQp
OgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxFbGVtZW50U3RhY2suY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTE5hbWVzOjppc1Njb3BlTWFya2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxOYW1lczo6aXNUYWJsZVNjb3BlTWFya2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxOYW1l
czo6aXNUYWJsZUJvZHlTY29wZU1hcmtlcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTmFtZXM6
OmlzVGFibGVSb3dTY29wZU1hcmtlcik6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFRyZWVC
dWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0
YXJ0VGFnRm9ySW5Cb2R5KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTFRyZWVCdWlsZGVyOjpvcGVuVGVtcGxhdGVGcmFnbWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MVHJlZUJ1aWxkZXI6OmNsb3NlVGVtcGxhdGVGcmFnbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRhZ0ZvckluVGFibGUpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWcpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpyZXNldEluc2VydGlvbk1vZGVBcHByb3ByaWF0ZWx5
KToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuaDoKKyAgICAgICAgKEhU
TUxUcmVlQnVpbGRlcik6CisgICAgICAgIChGcmFnbWVudFBhcnNpbmdDb250ZXh0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6RnJhZ21lbnRQYXJzaW5nQ29udGV4dDo6ZnJh
Z21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpGcmFnbWVudFBhcnNp
bmdDb250ZXh0Ojpjb250ZXh0VGFnKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRl
cjo6RnJhZ21lbnRQYXJzaW5nQ29udGV4dDo6c2V0Q29udGV4dFRhZyk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MVHJlZUJ1aWxkZXI6OkZyYWdtZW50UGFyc2luZ0NvbnRleHQ6OnB1c2gpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpGcmFnbWVudFBhcnNpbmdDb250ZXh0Ojpw
b3ApOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpGcmFnbWVudFBhcnNpbmdD
b250ZXh0OjpzY3JpcHRpbmdQZXJtaXNzaW9uKToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5p
ZGw6CisKIDIwMTItMDUtMjQgIEpvaG4gTWVsbG9yICA8am9obm1lQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBGb250IEJvb3N0aW5nOiBBZGQgY29tcGlsZSBmbGFnIGFuZCBydW50aW1lIHNldHRp
bmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNjUwOGM2ZTM5ZGM1ZDMxZDIxZWMzYzg4
YjMyZjM2Y2NiMDc3NTVlMC4uOTg5YmY1MTMyZTU4ZjA2NGVjMjJmOTJjMjkzZDg3YTFhYjhmMDc1
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMi0wNS0y
NCAgUmFmYWVsIFdlaW5zdGVpbiAgPHJhZmFlbHdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIElt
cGxlbWVudCBIVE1MVGVtcGxhdGVFbGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04NjAzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogZmVhdHVyZXMuZ3lwaToKKwogMjAxMi0wNS0yNCAgSm9obiBN
ZWxsb3IgIDxqb2hubWVAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEZvbnQgQm9vc3Rpbmc6IEFk
ZCBjb21waWxlIGZsYWcgYW5kIHJ1bnRpbWUgc2V0dGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
aW5kZXggNTQ2NGYwZTUwOTE1NzI4NjdkMzA4YTFlMWYxMTY4NThkM2NjYWJhNC4uMmY0NzkwZWVh
Y2UxYTBmMGRhMWE5ZjQwZmRlOTY0MTc0MjY2NmFiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CkBAIC0xNjEsNiArMTYxLDcgQEAKICNpbmNsdWRlICJYUGF0aE5TUmVzb2x2ZXIuaCIKICNpbmNs
dWRlICJYUGF0aFJlc3VsdC5oIgogI2luY2x1ZGUgImh0bWxlZGl0aW5nLmgiCisjaW5jbHVkZSAi
bWFya3VwLmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL0hh
c2hGdW5jdGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgpAQCAtODI2LDYgKzgy
NywxMyBAQCBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IERvY3VtZW50OjpjcmVhdGVEb2N1
bWVudEZyYWdtZW50KCkKICAgICByZXR1cm4gRG9jdW1lbnRGcmFnbWVudDo6Y3JlYXRlKGRvY3Vt
ZW50KCkpOwogfQogCisjaWYgRU5BQkxFKElNUExJRURfQ09OVEVYVF9QQVJTSU5HKQorUGFzc1Jl
ZlB0cjxEb2N1bWVudEZyYWdtZW50PiBEb2N1bWVudDo6cGFyc2UoY29uc3QgU3RyaW5nJiBodG1s
LCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICByZXR1cm4gY3JlYXRlRnJhZ21lbnRGcm9tU291
cmNlKGh0bWwsIGRvY3VtZW50KCksIDAgLyogY29udGV4dEVsZW1lbnQgKi8sIGVjLCBBbGxvd1Nj
cmlwdGluZ0NvbnRlbnRBbmREb05vdE1hcmtBbHJlYWR5U3RhcnRlZCk7Cit9CisjZW5kaWYKKwog
UGFzc1JlZlB0cjxUZXh0PiBEb2N1bWVudDo6Y3JlYXRlVGV4dE5vZGUoY29uc3QgU3RyaW5nJiBk
YXRhKQogewogICAgIHJldHVybiBUZXh0OjpjcmVhdGUodGhpcywgZGF0YSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5oCmluZGV4IDY1OWRkNzJiNGQzYzNmN2QxNDU5ODMzNGY3ZGJjMDM0MTgwMGRlYzkuLmEx
ZTU5MGY2ZTk4OWU0YTdlNTUyODU2ZGY5Zjk3Y2FmYzQ1MTRjZTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5oCkBAIC0zNDgsNiArMzQ4LDkgQEAgcHVibGljOgogICAgIAogICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxFbGVtZW50PiBjcmVhdGVFbGVtZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdGFnTmFtZSwg
RXhjZXB0aW9uQ29kZSYpOwogICAgIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRl
RG9jdW1lbnRGcmFnbWVudCgpOworI2lmIEVOQUJMRShJTVBMSUVEX0NPTlRFWFRfUEFSU0lORykK
KyAgICBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IHBhcnNlKGNvbnN0IFN0cmluZyYgaHRt
bCwgRXhjZXB0aW9uQ29kZSYpOworI2VuZGlmCiAgICAgUGFzc1JlZlB0cjxUZXh0PiBjcmVhdGVU
ZXh0Tm9kZShjb25zdCBTdHJpbmcmIGRhdGEpOwogICAgIFBhc3NSZWZQdHI8Q29tbWVudD4gY3Jl
YXRlQ29tbWVudChjb25zdCBTdHJpbmcmIGRhdGEpOwogICAgIFBhc3NSZWZQdHI8Q0RBVEFTZWN0
aW9uPiBjcmVhdGVDREFUQVNlY3Rpb24oY29uc3QgU3RyaW5nJiBkYXRhLCBFeGNlcHRpb25Db2Rl
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAppbmRleCBlOTM5YWEzOTlhMTUyZDM0NjliMTU3ZjRh
NGNmNzQ4YTYwYTU1ZDY5Li45M2U4YTVjNjYxNjA0NTA3MzZhMmUxN2I5MDRlM2RlZDA1MTIzYWM0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwKQEAgLTM1Niw2ICszNTYsOCBAQCBtb2R1bGUgY29y
ZSB7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbQ29uZGl0aW9uYWw9UEFHRV9WSVNJQklM
SVRZX0FQSV0gRE9NU3RyaW5nIHdlYmtpdFZpc2liaWxpdHlTdGF0ZTsKICAgICAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIFtDb25kaXRpb25hbD1QQUdFX1ZJU0lCSUxJVFlfQVBJXSBib29sZWFuIHdl
YmtpdEhpZGRlbjsKIAorICAgICAgICBbQ29uZGl0aW9uYWw9SU1QTElFRF9DT05URVhUX1BBUlNJ
TkddIERvY3VtZW50RnJhZ21lbnQgcGFyc2UoaW4gW1RyZWF0TnVsbEFzPU51bGxTdHJpbmcsT3B0
aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVkXSBET01TdHJpbmcgdGFnbmFtZSkKKyAgICAgICAgICAg
IHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKICAgICB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUXVhbGlm
aWVkTmFtZS5jcHAKaW5kZXggZTA4NTUwNzBhN2NiMzI1MzRjY2JmOGFiOGQwNTI2NjdkYTMxOWYx
NS4uZmFiMWMyYjZiMjcyMzc4ZjZiOWIwN2M4MGE2NDdlMzBjNDg1NjMxZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9RdWFsaWZpZWROYW1lLmNwcApAQCAtMTA0LDYgKzEwNCw3IEBAIFN0cmluZyBRdWFsaWZp
ZWROYW1lOjp0b1N0cmluZygpIGNvbnN0CiAKIC8vIEdsb2JhbCBpbml0IHJvdXRpbmVzCiBERUZJ
TkVfR0xPQkFMKFF1YWxpZmllZE5hbWUsIGFueU5hbWUsIG51bGxBdG9tLCBzdGFyQXRvbSwgc3Rh
ckF0b20pCitERUZJTkVfR0xPQkFMKFF1YWxpZmllZE5hbWUsIG51bGxOYW1lLCBudWxsQXRvbSwg
bnVsbEF0b20sIG51bGxBdG9tKQogCiB2b2lkIFF1YWxpZmllZE5hbWU6OmluaXQoKQogewpAQCAt
MTEzLDYgKzExNCw3IEBAIHZvaWQgUXVhbGlmaWVkTmFtZTo6aW5pdCgpCiAgICAgICAgIAogICAg
ICAgICBBdG9taWNTdHJpbmc6OmluaXQoKTsKICAgICAgICAgbmV3ICgodm9pZCopJmFueU5hbWUp
IFF1YWxpZmllZE5hbWUobnVsbEF0b20sIHN0YXJBdG9tLCBzdGFyQXRvbSk7CisgICAgICAgIG5l
dyAoKHZvaWQqKSZudWxsTmFtZSkgUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgbnVsbEF0b20sIG51
bGxBdG9tKTsKICAgICAgICAgaW5pdGlhbGl6ZWQgPSB0cnVlOwogICAgIH0KIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vUXVhbGlmaWVkTmFtZS5oCmluZGV4IDYzNmIyYTUxNTBjOWU5ODdjMDI3ZTc1Njk3OTJkOWJh
YzM0YTg5ZTkuLjllZmI4ODEyNzM2OTc2ZTFjNTQzODlhMDM3ZTIxYzA4YTlmZDc3ZDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1lLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuaApAQCAtMTA1LDYgKzEwNSw4IEBAIHByaXZhdGU6CiAj
aWZuZGVmIFdFQkNPUkVfUVVBTElGSUVETkFNRV9ISURFX0dMT0JBTFMKIGV4dGVybiBjb25zdCBR
dWFsaWZpZWROYW1lIGFueU5hbWU7CiBpbmxpbmUgY29uc3QgUXVhbGlmaWVkTmFtZSYgYW55UU5h
bWUoKSB7IHJldHVybiBhbnlOYW1lOyB9CitleHRlcm4gY29uc3QgUXVhbGlmaWVkTmFtZSBudWxs
TmFtZTsKK2lubGluZSBjb25zdCBRdWFsaWZpZWROYW1lJiBudWxsUU5hbWUoKSB7IHJldHVybiBu
dWxsTmFtZTsgfQogI2VuZGlmCiAKIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgQXRvbWlj
U3RyaW5nJiBhLCBjb25zdCBRdWFsaWZpZWROYW1lJiBxKSB7IHJldHVybiBhID09IHEubG9jYWxO
YW1lKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAppbmRleCBmZmM1OTUyN2QzNGRhZDA5
NTYxY2JlOTU0ODg0YWI1YmI4NmJkZTQzLi5jNTI3ZTFmYzEwYWIwMzVjOTg4OGZkOTcxNGM2NzAw
YmE0OWYyN2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCkBAIC0xNDQsNyArMTQ0LDcg
QEAgU3RyaW5nIFNoYWRvd1Jvb3Q6OmlubmVySFRNTCgpIGNvbnN0CiAKIHZvaWQgU2hhZG93Um9v
dDo6c2V0SW5uZXJIVE1MKGNvbnN0IFN0cmluZyYgbWFya3VwLCBFeGNlcHRpb25Db2RlJiBlYykK
IHsKLSAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVu
dEZyb21Tb3VyY2UobWFya3VwLCBob3N0KCksIGVjKTsKKyAgICBSZWZQdHI8RG9jdW1lbnRGcmFn
bWVudD4gZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEZyb21Tb3VyY2UobWFya3VwLCBkb2N1bWVu
dCgpLCBob3N0KCksIGVjKTsKICAgICBpZiAoZnJhZ21lbnQpCiAgICAgICAgIHJlcGxhY2VDaGls
ZHJlbldpdGhGcmFnbWVudCh0aGlzLCBmcmFnbWVudC5yZWxlYXNlKCksIGVjKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvbWFya3VwLmNwcAppbmRleCBhMWM1YTMzNjIxNWQ5ZTY5Yzg2OGM1ODgwMDg1Njhm
ZDZhNTRjMjE0Li5kZWUyMGJiYjBhYTY2ZjY3YmU0NWUzZGFiZDViZjk0ZWE0NmU3ZWQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCkBAIC05OTIsMTcgKzk5MiwyOCBAQCBTdHJpbmcgdXJs
VG9NYXJrdXAoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlKQogICAgIHJldHVy
biBtYXJrdXAudG9TdHJpbmcoKTsKIH0KIAotUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBj
cmVhdGVGcmFnbWVudEZyb21Tb3VyY2UoY29uc3QgU3RyaW5nJiBtYXJrdXAsIEVsZW1lbnQqIGNv
bnRleHRFbGVtZW50LCBFeGNlcHRpb25Db2RlJiBlYykKK1Bhc3NSZWZQdHI8RG9jdW1lbnRGcmFn
bWVudD4gY3JlYXRlRnJhZ21lbnRGcm9tU291cmNlKGNvbnN0IFN0cmluZyYgbWFya3VwLCBEb2N1
bWVudCogZG9jdW1lbnQsIEVsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBFeGNlcHRpb25Db2RlJiBl
YywgRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uIHNjcmlwdGluZ1Blcm1pc3Npb24pCiB7Ci0g
ICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gY29udGV4dEVsZW1lbnQtPmRvY3VtZW50KCk7CiAgICAg
UmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gRG9jdW1lbnRGcmFnbWVudDo6Y3Jl
YXRlKGRvY3VtZW50KTsKIAorI2lmICFFTkFCTEUoSU1QTElFRF9DT05URVhUX1BBUlNJTkcpCisg
ICAgQVNTRVJUKGNvbnRleHRFbGVtZW50KTsKKyNlbmRpZgorCiAgICAgaWYgKGRvY3VtZW50LT5p
c0hUTUxEb2N1bWVudCgpKSB7Ci0gICAgICAgIGZyYWdtZW50LT5wYXJzZUhUTUwobWFya3VwLCBj
b250ZXh0RWxlbWVudCk7CisgICAgICAgIGZyYWdtZW50LT5wYXJzZUhUTUwobWFya3VwLCBjb250
ZXh0RWxlbWVudCwgc2NyaXB0aW5nUGVybWlzc2lvbik7CiAgICAgICAgIHJldHVybiBmcmFnbWVu
dDsKICAgICB9CiAKLSAgICBib29sIHdhc1ZhbGlkID0gZnJhZ21lbnQtPnBhcnNlWE1MKG1hcmt1
cCwgY29udGV4dEVsZW1lbnQpOworI2lmIEVOQUJMRShJTVBMSUVEX0NPTlRFWFRfUEFSU0lORykK
KyAgICAvLyBGSVhNRTogSFRNTCBoYXMgbm90IGRlZmluZWQgd2hhdCBpdCBtZWFucyB0byBwYXJz
ZSBYTUwgd2l0aG91dCBhIGNvbnRleHQgZWxlbWVudC4KKyAgICBpZiAoIWNvbnRleHRFbGVtZW50
KSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIHJldHVybiAwOwor
ICAgIH0KKyNlbmRpZgorCisgICAgYm9vbCB3YXNWYWxpZCA9IGZyYWdtZW50LT5wYXJzZVhNTCht
YXJrdXAsIGNvbnRleHRFbGVtZW50LCBzY3JpcHRpbmdQZXJtaXNzaW9uKTsKICAgICBpZiAoIXdh
c1ZhbGlkKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CiAgICAgICAgIHJldHVy
biAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuaCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmgKaW5kZXggZjEyZjU2MjUwN2MzNGQ4YmUwMTJhNDZh
YjIxOWU5NjU0NzVhYTI5Ni4uMTkyNDE5ZGRmZDhjY2M2NjEwZjgzZDQ3NTA2NGIzOTUxNWI2MGE5
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5oCkBAIC01MSw3ICs1MSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50
RnJvbU1hcmt1cChEb2N1bWVudCosIGNvbnN0IFN0cmluZyYgbWFya3VwLCBjb25zdCBTdHJpbmcm
IGJhc2VVUkwsIEZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbiA9IEFsbG93U2NyaXB0aW5nQ29u
dGVudCk7CiAgICAgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZy
b21NYXJrdXBXaXRoQ29udGV4dChEb2N1bWVudCosIGNvbnN0IFN0cmluZyYgbWFya3VwLCB1bnNp
Z25lZCBmcmFnbWVudFN0YXJ0LCB1bnNpZ25lZCBmcmFnbWVudEVuZCwgY29uc3QgU3RyaW5nJiBi
YXNlVVJMLCBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24pOwogICAgIFBhc3NSZWZQdHI8RG9j
dW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGcm9tTm9kZXMoRG9jdW1lbnQqLCBjb25zdCBW
ZWN0b3I8Tm9kZSo+Jik7Ci0gICAgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVG
cmFnbWVudEZyb21Tb3VyY2UoY29uc3QgU3RyaW5nJiwgRWxlbWVudCosIEV4Y2VwdGlvbkNvZGUm
KTsKKyAgICBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJvbVNv
dXJjZShjb25zdCBTdHJpbmcmLCBEb2N1bWVudCosIEVsZW1lbnQqLCBFeGNlcHRpb25Db2RlJiwg
RnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uID0gQWxsb3dTY3JpcHRpbmdDb250ZW50KTsKIAog
ICAgIGJvb2wgaXNQbGFpblRleHRNYXJrdXAoTm9kZSAqbm9kZSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRWxlbWVudC5jcHAKaW5kZXggMWZhMjQ5NjAxOGViNzg5NGZhNTdkNjc1NzRlN2U2NDljMDg2
ZmVmZi4uNTZhOGUyMTE5OWVhYmE3NTg3ZTFkNDQyMGI3ZDUwMzY4NDRiMTZmOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKQEAgLTM0Miw3ICszNDIsNyBAQCBTdHJpbmcgSFRNTEVs
ZW1lbnQ6Om91dGVySFRNTCgpIGNvbnN0CiAKIHZvaWQgSFRNTEVsZW1lbnQ6OnNldElubmVySFRN
TChjb25zdCBTdHJpbmcmIGh0bWwsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIFJlZlB0cjxE
b2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50RnJvbVNvdXJjZShodG1s
LCB0aGlzLCBlYyk7CisgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gY3Jl
YXRlRnJhZ21lbnRGcm9tU291cmNlKGh0bWwsIGRvY3VtZW50KCksIHRoaXMsIGVjKTsKICAgICBp
ZiAoZnJhZ21lbnQpCiAgICAgICAgIHJlcGxhY2VDaGlsZHJlbldpdGhGcmFnbWVudCh0aGlzLCBm
cmFnbWVudC5yZWxlYXNlKCksIGVjKTsKIH0KQEAgLTM3NCw3ICszNzQsNyBAQCB2b2lkIEhUTUxF
bGVtZW50OjpzZXRPdXRlckhUTUwoY29uc3QgU3RyaW5nJiBodG1sLCBFeGNlcHRpb25Db2RlJiBl
YykKICAgICBSZWZQdHI8Tm9kZT4gcHJldiA9IHByZXZpb3VzU2libGluZygpOwogICAgIFJlZlB0
cjxOb2RlPiBuZXh0ID0gbmV4dFNpYmxpbmcoKTsKIAotICAgIFJlZlB0cjxEb2N1bWVudEZyYWdt
ZW50PiBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50RnJvbVNvdXJjZShodG1sLCBwYXJlbnQuZ2V0
KCksIGVjKTsKKyAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSBjcmVhdGVG
cmFnbWVudEZyb21Tb3VyY2UoaHRtbCwgZG9jdW1lbnQoKSwgcGFyZW50LmdldCgpLCBlYyk7CiAg
ICAgaWYgKGVjKQogICAgICAgICByZXR1cm47CiAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IDdhMDZiNDIzOTY5MTNk
OWQ5NmQ0ZTU3MWQ1YjIzM2E5MjM3MDQyOTUuLmUxNWM3YjUzMmNlMTE5YjNjZWU5OWYyZWE0YTk2
YjQ2ODMxODc5NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxE
b2N1bWVudFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERv
Y3VtZW50UGFyc2VyLmNwcApAQCAtNTEsNiArNTEsMTAgQEAgbmFtZXNwYWNlIHsKIC8vIGh0dHA6
Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvbXVsdGlwYWdlL3Ro
ZS1lbmQuaHRtbCNmcmFnbWVudC1jYXNlCiBIVE1MVG9rZW5pemVyU3RhdGU6OlN0YXRlIHRva2Vu
aXplclN0YXRlRm9yQ29udGV4dEVsZW1lbnQoRWxlbWVudCogY29udGV4dEVsZW1lbnQsIGJvb2wg
cmVwb3J0RXJyb3JzKQogeworI2lmICFFTkFCTEUoSU1QTElFRF9DT05URVhUX1BBUlNJTkcpCisg
ICAgQVNTRVJUKGNvbnRleHRFbGVtZW50KTsKKyNlbmRpZgorCiAgICAgaWYgKCFjb250ZXh0RWxl
bWVudCkKICAgICAgICAgcmV0dXJuIEhUTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcAppbmRleCA3
NTlkMjNiMWYzMjc0NDIwZGY0MzQwYjlkMmI3ZGZhOTc1MTNkMTk0Li40Mjg5M2Y2MDdjZGE5MTA0
OTUyYWM1MjZjZWY0MjQxNjQ2OTU0NDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxUcmVlQnVpbGRlci5jcHAKQEAgLTI0Miw2ICsyNDIsMzAgQEAgSFRNTEZvcm1FbGVt
ZW50KiBjbG9zZXN0Rm9ybUFuY2VzdG9yKEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgcmV0dXJuIDA7
CiB9CiAKKyNpZiBFTkFCTEUoSU1QTElFRF9DT05URVhUX1BBUlNJTkcpCisvLyBGSVhNRTogUmVm
ZXJlbmNlIHRvIERPTTQgc3BlYyBkZXNjcmliaW5nIHRoZSBmb2xsb3dpbmc6IFRoZSBpbXBsaWVk
IGNvbnRleHQgZWxlbWVudCBvZgorLy8gRG9jdW1lbnQucGFyc2UgaXMgYmFzZWQgb24gdGhlIGlk
ZW50aXR5IG9mIHRoZSB0YWdOYW1lIG9mIHRoZSBmaXJzdCBzdGFydFRhZyB0b2tlbiBlbmNvdW50
ZXJlZAorLy8gd2hpY2ggaXMgbm90IDxzdHlsZT4sIDxzY3JpcHQ+LCA8bWV0YT4sIG9yIDxsaW5r
Pi4KKy8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgaW5mZXJyaW5nIFNWRyBhbmQgTWF0aE1MIGVs
ZW1lbnRzLgorY29uc3QgUXVhbGlmaWVkTmFtZSYgZ2V0SW1wbGllZENvbnRleHRUYWcoY29uc3Qg
QXRvbWljU3RyaW5nJiB0YWdOYW1lKQoreworICAgIGlmIChpc1RhYmxlQm9keUNvbnRleHRUYWco
dGFnTmFtZSkgfHwgdGFnTmFtZSA9PSBjYXB0aW9uVGFnIHx8IHRhZ05hbWUgPT0gY29sZ3JvdXBU
YWcpCisgICAgICAgIHJldHVybiB0YWJsZVRhZzsKKyAgICBpZiAodGFnTmFtZSA9PSB0clRhZykK
KyAgICAgICAgcmV0dXJuIHRib2R5VGFnOworICAgIGlmICh0YWdOYW1lID09IGNvbFRhZykKKyAg
ICAgICAgcmV0dXJuIGNvbGdyb3VwVGFnOworICAgIGlmIChpc1RhYmxlQ2VsbENvbnRleHRUYWco
dGFnTmFtZSkpCisgICAgICAgIHJldHVybiB0clRhZzsKKyAgICBpZiAodGFnTmFtZSA9PSBoZWFk
VGFnIHx8IHRhZ05hbWUgPT0gYm9keVRhZykKKyAgICAgICAgcmV0dXJuIGh0bWxUYWc7CisgICAg
aWYgKHRhZ05hbWUgPT0gcnBUYWcgfHwgdGFnTmFtZSA9PSBydFRhZykKKyAgICAgICAgcmV0dXJu
IHJ1YnlUYWc7CisKKyAgICByZXR1cm4gYm9keVRhZzsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVz
cGFjZQogCiBjbGFzcyBIVE1MVHJlZUJ1aWxkZXI6OkV4dGVybmFsQ2hhcmFjdGVyVG9rZW5CdWZm
ZXIgewpAQCAtMzY4LDcgKzM5Miw3IEBAIEhUTUxUcmVlQnVpbGRlcjo6SFRNTFRyZWVCdWlsZGVy
KEhUTUxEb2N1bWVudFBhcnNlciogcGFyc2VyLCBIVE1MRG9jdW1lbnQqIGRvY3VtCiAvLyBtaW5p
bWl6ZSBjb2RlIGR1cGxpY2F0aW9uIGJldHdlZW4gdGhlc2UgY29uc3RydWN0b3JzLgogSFRNTFRy
ZWVCdWlsZGVyOjpIVE1MVHJlZUJ1aWxkZXIoSFRNTERvY3VtZW50UGFyc2VyKiBwYXJzZXIsIERv
Y3VtZW50RnJhZ21lbnQqIGZyYWdtZW50LCBFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgRnJhZ21l
bnRTY3JpcHRpbmdQZXJtaXNzaW9uIHNjcmlwdGluZ1Blcm1pc3Npb24sIGJvb2wgdXNlUHJlSFRN
TDVQYXJzZXJRdWlya3MsIHVuc2lnbmVkIG1heGltdW1ET01UcmVlRGVwdGgpCiAgICAgOiBtX2Zy
YW1lc2V0T2sodHJ1ZSkKLSAgICAsIG1fZnJhZ21lbnRDb250ZXh0KGZyYWdtZW50LCBjb250ZXh0
RWxlbWVudCwgc2NyaXB0aW5nUGVybWlzc2lvbikKKyAgICAsIG1fZnJhZ21lbnRDb250ZXh0KGZy
YWdtZW50LCBjb250ZXh0RWxlbWVudCA/IGNvbnRleHRFbGVtZW50LT50YWdRTmFtZSgpIDogbnVs
bFFOYW1lKCksIHNjcmlwdGluZ1Blcm1pc3Npb24pCiAgICAgLCBtX2RvY3VtZW50KGZyYWdtZW50
LT5kb2N1bWVudCgpKQogICAgICwgbV90cmVlKGZyYWdtZW50LCBzY3JpcHRpbmdQZXJtaXNzaW9u
LCBtYXhpbXVtRE9NVHJlZURlcHRoKQogICAgICwgbV9yZXBvcnRFcnJvcnMoZmFsc2UpIC8vIEZJ
WE1FOiBXaHkgbm90IHJlcG9ydCBlcnJvcnMgaW4gZnJhZ21lbnRzPwpAQCAtMzgxLDE3ICs0MDUs
MTggQEAgSFRNTFRyZWVCdWlsZGVyOjpIVE1MVHJlZUJ1aWxkZXIoSFRNTERvY3VtZW50UGFyc2Vy
KiBwYXJzZXIsIERvY3VtZW50RnJhZ21lbnQqIGYKICAgICAsIG1fbGFzdFNjcmlwdEVsZW1lbnRT
dGFydFBvc2l0aW9uKFRleHRQb3NpdGlvbjo6YmVsb3dSYW5nZVBvc2l0aW9uKCkpCiAgICAgLCBt
X3VzZVByZUhUTUw1UGFyc2VyUXVpcmtzKHVzZVByZUhUTUw1UGFyc2VyUXVpcmtzKQogewotICAg
IC8vIEZJWE1FOiBUaGlzIGFzc2VydGlvbiB3aWxsIGJlY29tZSBpbnZhbGlkIGlmIDxodHRwOi8v
d2Via2l0Lm9yZy9iLzYwMzE2PiBpcyBmaXhlZC4KKyNpZiAhRU5BQkxFKElNUExJRURfQ09OVEVY
VF9QQVJTSU5HKQogICAgIEFTU0VSVChjb250ZXh0RWxlbWVudCk7Ci0gICAgaWYgKGNvbnRleHRF
bGVtZW50KSB7Ci0gICAgICAgIC8vIFN0ZXBzIDQuMi00LjYgb2YgdGhlIEhUTUw1IEZyYWdtZW50
IENhc2UgcGFyc2luZyBhbGdvcml0aG06Ci0gICAgICAgIC8vIGh0dHA6Ly93d3cud2hhdHdnLm9y
Zy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvbXVsdGlwYWdlL3RoZS1lbmQuaHRtbCNmcmFn
bWVudC1jYXNlCi0gICAgICAgIC8vIEZvciBlZmZpY2llbmN5LCB3ZSBza2lwIHN0ZXAgNC4yICgi
TGV0IHJvb3QgYmUgYSBuZXcgaHRtbCBlbGVtZW50IHdpdGggbm8gYXR0cmlidXRlcyIpCi0gICAg
ICAgIC8vIGFuZCBpbnN0ZWFkIHVzZSB0aGUgRG9jdW1lbnRGcmFnbWVudCBhcyBhIHJvb3Qgbm9k
ZS4KLSAgICAgICAgbV90cmVlLm9wZW5FbGVtZW50cygpLT5wdXNoUm9vdE5vZGUoZnJhZ21lbnQp
OwotICAgICAgICByZXNldEluc2VydGlvbk1vZGVBcHByb3ByaWF0ZWx5KCk7CisjZW5kaWYKKwor
ICAgIC8vIFN0ZXBzIDQuMi00LjYgb2YgdGhlIEhUTUw1IEZyYWdtZW50IENhc2UgcGFyc2luZyBh
bGdvcml0aG06CisgICAgLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1
cnJlbnQtd29yay9tdWx0aXBhZ2UvdGhlLWVuZC5odG1sI2ZyYWdtZW50LWNhc2UKKyAgICAvLyBG
b3IgZWZmaWNpZW5jeSwgd2Ugc2tpcCBzdGVwIDQuMiAoIkxldCByb290IGJlIGEgbmV3IGh0bWwg
ZWxlbWVudCB3aXRoIG5vIGF0dHJpYnV0ZXMiKQorICAgIC8vIGFuZCBpbnN0ZWFkIHVzZSB0aGUg
RG9jdW1lbnRGcmFnbWVudCBhcyBhIHJvb3Qgbm9kZS4KKyAgICBtX3RyZWUub3BlbkVsZW1lbnRz
KCktPnB1c2hSb290Tm9kZShmcmFnbWVudCk7CisgICAgcmVzZXRJbnNlcnRpb25Nb2RlQXBwcm9w
cmlhdGVseSgpOworICAgIGlmIChjb250ZXh0RWxlbWVudCkKICAgICAgICAgbV90cmVlLnNldEZv
cm0oY2xvc2VzdEZvcm1BbmNlc3Rvcihjb250ZXh0RWxlbWVudCkpOwotICAgIH0KIH0KIAogSFRN
TFRyZWVCdWlsZGVyOjp+SFRNTFRyZWVCdWlsZGVyKCkKQEAgLTQxMCwxNCArNDM1LDE0IEBAIHZv
aWQgSFRNTFRyZWVCdWlsZGVyOjpkZXRhY2goKQogCiBIVE1MVHJlZUJ1aWxkZXI6OkZyYWdtZW50
UGFyc2luZ0NvbnRleHQ6OkZyYWdtZW50UGFyc2luZ0NvbnRleHQoKQogICAgIDogbV9mcmFnbWVu
dCgwKQotICAgICwgbV9jb250ZXh0RWxlbWVudCgwKQorICAgICwgbV9jb250ZXh0VGFnKG51bGxR
TmFtZSgpKQogICAgICwgbV9zY3JpcHRpbmdQZXJtaXNzaW9uKEFsbG93U2NyaXB0aW5nQ29udGVu
dCkKIHsKIH0KIAotSFRNTFRyZWVCdWlsZGVyOjpGcmFnbWVudFBhcnNpbmdDb250ZXh0OjpGcmFn
bWVudFBhcnNpbmdDb250ZXh0KERvY3VtZW50RnJhZ21lbnQqIGZyYWdtZW50LCBFbGVtZW50KiBj
b250ZXh0RWxlbWVudCwgRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uIHNjcmlwdGluZ1Blcm1p
c3Npb24pCitIVE1MVHJlZUJ1aWxkZXI6OkZyYWdtZW50UGFyc2luZ0NvbnRleHQ6OkZyYWdtZW50
UGFyc2luZ0NvbnRleHQoRG9jdW1lbnRGcmFnbWVudCogZnJhZ21lbnQsIGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGNvbnRleHRUYWcsIEZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbiBzY3JpcHRpbmdQ
ZXJtaXNzaW9uKQogICAgIDogbV9mcmFnbWVudChmcmFnbWVudCkKLSAgICAsIG1fY29udGV4dEVs
ZW1lbnQoY29udGV4dEVsZW1lbnQpCisgICAgLCBtX2NvbnRleHRUYWcoY29udGV4dFRhZykKICAg
ICAsIG1fc2NyaXB0aW5nUGVybWlzc2lvbihzY3JpcHRpbmdQZXJtaXNzaW9uKQogewogICAgIEFT
U0VSVCghZnJhZ21lbnQtPmhhc0NoaWxkTm9kZXMoKSk7CkBAIC00NDcsNyArNDcyLDcgQEAgdm9p
ZCBIVE1MVHJlZUJ1aWxkZXI6OmNvbnN0cnVjdFRyZWVGcm9tVG9rZW4oSFRNTFRva2VuJiByYXdU
b2tlbikKICAgICAvLyBzeW5jaHJvbm91c2x5IHJlLWVudGVycyB0aGUgcGFyc2VyLiBXZSBkb24n
dCBjbGVhciB0aGUgdG9rZW4gaW1tZWRhdGVseQogICAgIC8vIGZvciBDaGFyYWN0ZXIgdG9rZW5z
IGJlY2F1c2UgdGhlIEF0b21pY0hUTUxUb2tlbiBhdm9pZHMgY29weWluZyB0aGUKICAgICAvLyBj
aGFyYWN0ZXJzIGJ5IGtlZXBpbmcgYSBwb2ludGVyIHRvIHRoZSB1bmRlcmx5aW5nIGJ1ZmZlciBp
biB0aGUKLSAgICAvLyBIVE1MVG9rZW4uIEZvcnR1YW50ZWx5LCBDaGFyYWN0ZXIgdG9rZW5zIGNh
bid0IGNhdXNlIHVzZSB0byByZS1lbnRlcgorICAgIC8vIEhUTUxUb2tlbi4gRm9ydHVuYXRlbHks
IENoYXJhY3RlciB0b2tlbnMgY2FuJ3QgY2F1c2UgdXNlIHRvIHJlLWVudGVyCiAgICAgLy8gdGhl
IHBhcnNlci4KICAgICAvLwogICAgIC8vIEZJWE1FOiBTdG9wIGNsZWFyaW5nIHRoZSByYXdUb2tl
biBvbmNlIHdlIHN0YXJ0IHJ1bm5pbmcgdGhlIHBhcnNlciBvZmYKQEAgLTE0NTAsNiArMTQ3NSwy
NiBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFnKEF0b21pY0hUTUxUb2tl
biYgdG9rZW4pCiAgICAgY2FzZSBUZXh0TW9kZToKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW1wbGllZENvbnRleHRNb2RlOgorI2lmIEVO
QUJMRShJTVBMSUVEX0NPTlRFWFRfUEFSU0lORykKKyAgICAgICAgQVNTRVJUKGlzUGFyc2luZ0Zy
YWdtZW50KCkpOworICAgICAgICBBU1NFUlQobV9mcmFnbWVudENvbnRleHQuY29udGV4dFRhZygp
ID09IG51bGxRTmFtZSgpKTsKKworICAgICAgICBpZiAodG9rZW4ubmFtZSgpID09IHN0eWxlVGFn
CisgICAgICAgICAgICB8fCB0b2tlbi5uYW1lKCkgPT0gc2NyaXB0VGFnCisgICAgICAgICAgICB8
fCB0b2tlbi5uYW1lKCkgPT0gbWV0YVRhZworICAgICAgICAgICAgfHwgdG9rZW4ubmFtZSgpID09
IGxpbmtUYWcpIHsKKyAgICAgICAgICAgIHByb2Nlc3NTdGFydFRhZ0ZvckluSGVhZCh0b2tlbik7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBtX2ZyYWdtZW50Q29u
dGV4dC5zZXRDb250ZXh0VGFnKGdldEltcGxpZWRDb250ZXh0VGFnKHRva2VuLm5hbWUoKSkpOwor
ICAgICAgICByZXNldEluc2VydGlvbk1vZGVBcHByb3ByaWF0ZWx5KCk7CisgICAgICAgIHByb2Nl
c3NTdGFydFRhZyh0b2tlbik7CisjZWxzZQorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyNlbmRpZgorICAgICAgICBicmVhazsKICAgICB9CiB9CiAKQEAgLTE2MzcsNDYgKzE2ODIsNDkg
QEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnJlc2V0SW5zZXJ0aW9uTW9kZUFwcHJvcHJpYXRlbHko
KQogICAgIEhUTUxFbGVtZW50U3RhY2s6OkVsZW1lbnRSZWNvcmQqIG5vZGVSZWNvcmQgPSBtX3Ry
ZWUub3BlbkVsZW1lbnRzKCktPnRvcFJlY29yZCgpOwogICAgIHdoaWxlICgxKSB7CiAgICAgICAg
IENvbnRhaW5lck5vZGUqIG5vZGUgPSBub2RlUmVjb3JkLT5ub2RlKCk7CisgICAgICAgIGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUgPSBub2RlID09IG1fdHJlZS5vcGVuRWxlbWVudHMoKS0+
cm9vdE5vZGUoKSA/IG1fZnJhZ21lbnRDb250ZXh0LmNvbnRleHRUYWcoKSA6IG5vZGVSZWNvcmQt
PmVsZW1lbnQoKS0+dGFnUU5hbWUoKTsKICAgICAgICAgaWYgKG5vZGUgPT0gbV90cmVlLm9wZW5F
bGVtZW50cygpLT5yb290Tm9kZSgpKSB7CiAgICAgICAgICAgICBBU1NFUlQoaXNQYXJzaW5nRnJh
Z21lbnQoKSk7CiAgICAgICAgICAgICBsYXN0ID0gdHJ1ZTsKLSAgICAgICAgICAgIG5vZGUgPSBt
X2ZyYWdtZW50Q29udGV4dC5jb250ZXh0RWxlbWVudCgpOwogICAgICAgICB9Ci0gICAgICAgIGlm
IChub2RlLT5oYXNUYWdOYW1lKHNlbGVjdFRhZykpIHsKKyAgICAgICAgaWYgKHRhZ05hbWUubWF0
Y2hlcyhzZWxlY3RUYWcpKSB7CiAgICAgICAgICAgICBBU1NFUlQoaXNQYXJzaW5nRnJhZ21lbnQo
KSk7CiAgICAgICAgICAgICByZXR1cm4gc2V0SW5zZXJ0aW9uTW9kZShJblNlbGVjdE1vZGUpOwog
ICAgICAgICB9Ci0gICAgICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKHRkVGFnKSB8fCBub2RlLT5o
YXNUYWdOYW1lKHRoVGFnKSkKKyAgICAgICAgaWYgKHRhZ05hbWUubWF0Y2hlcyh0ZFRhZykgfHwg
dGFnTmFtZS5tYXRjaGVzKHRoVGFnKSkKICAgICAgICAgICAgIHJldHVybiBzZXRJbnNlcnRpb25N
b2RlKEluQ2VsbE1vZGUpOwotICAgICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZSh0clRhZykpCisg
ICAgICAgIGlmICh0YWdOYW1lLm1hdGNoZXModHJUYWcpKQogICAgICAgICAgICAgcmV0dXJuIHNl
dEluc2VydGlvbk1vZGUoSW5Sb3dNb2RlKTsKLSAgICAgICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUo
dGJvZHlUYWcpIHx8IG5vZGUtPmhhc1RhZ05hbWUodGhlYWRUYWcpIHx8IG5vZGUtPmhhc1RhZ05h
bWUodGZvb3RUYWcpKQorICAgICAgICBpZiAodGFnTmFtZS5tYXRjaGVzKHRib2R5VGFnKSB8fCB0
YWdOYW1lLm1hdGNoZXModGhlYWRUYWcpIHx8IHRhZ05hbWUubWF0Y2hlcyh0Zm9vdFRhZykpCiAg
ICAgICAgICAgICByZXR1cm4gc2V0SW5zZXJ0aW9uTW9kZShJblRhYmxlQm9keU1vZGUpOwotICAg
ICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZShjYXB0aW9uVGFnKSkKKyAgICAgICAgaWYgKHRhZ05h
bWUubWF0Y2hlcyhjYXB0aW9uVGFnKSkKICAgICAgICAgICAgIHJldHVybiBzZXRJbnNlcnRpb25N
b2RlKEluQ2FwdGlvbk1vZGUpOwotICAgICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZShjb2xncm91
cFRhZykpIHsKKyAgICAgICAgaWYgKHRhZ05hbWUubWF0Y2hlcyhjb2xncm91cFRhZykpIHsKICAg
ICAgICAgICAgIEFTU0VSVChpc1BhcnNpbmdGcmFnbWVudCgpKTsKICAgICAgICAgICAgIHJldHVy
biBzZXRJbnNlcnRpb25Nb2RlKEluQ29sdW1uR3JvdXBNb2RlKTsKICAgICAgICAgfQotICAgICAg
ICBpZiAobm9kZS0+aGFzVGFnTmFtZSh0YWJsZVRhZykpCisgICAgICAgIGlmICh0YWdOYW1lLm1h
dGNoZXModGFibGVUYWcpKQogICAgICAgICAgICAgcmV0dXJuIHNldEluc2VydGlvbk1vZGUoSW5U
YWJsZU1vZGUpOwotICAgICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZShoZWFkVGFnKSkgeworICAg
ICAgICBpZiAodGFnTmFtZS5tYXRjaGVzKGhlYWRUYWcpKSB7CiAgICAgICAgICAgICBBU1NFUlQo
aXNQYXJzaW5nRnJhZ21lbnQoKSk7CiAgICAgICAgICAgICByZXR1cm4gc2V0SW5zZXJ0aW9uTW9k
ZShJbkJvZHlNb2RlKTsKICAgICAgICAgfQotICAgICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZShi
b2R5VGFnKSkKKyAgICAgICAgaWYgKHRhZ05hbWUubWF0Y2hlcyhib2R5VGFnKSkKICAgICAgICAg
ICAgIHJldHVybiBzZXRJbnNlcnRpb25Nb2RlKEluQm9keU1vZGUpOwotICAgICAgICBpZiAobm9k
ZS0+aGFzVGFnTmFtZShmcmFtZXNldFRhZykpIHsKKyAgICAgICAgaWYgKHRhZ05hbWUubWF0Y2hl
cyhmcmFtZXNldFRhZykpIHsKICAgICAgICAgICAgIEFTU0VSVChpc1BhcnNpbmdGcmFnbWVudCgp
KTsKICAgICAgICAgICAgIHJldHVybiBzZXRJbnNlcnRpb25Nb2RlKEluRnJhbWVzZXRNb2RlKTsK
ICAgICAgICAgfQotICAgICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZShodG1sVGFnKSkgeworICAg
ICAgICBpZiAodGFnTmFtZS5tYXRjaGVzKGh0bWxUYWcpKSB7CiAgICAgICAgICAgICBBU1NFUlQo
aXNQYXJzaW5nRnJhZ21lbnQoKSk7CiAgICAgICAgICAgICByZXR1cm4gc2V0SW5zZXJ0aW9uTW9k
ZShCZWZvcmVIZWFkTW9kZSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGxhc3QpIHsKICAgICAg
ICAgICAgIEFTU0VSVChpc1BhcnNpbmdGcmFnbWVudCgpKTsKLSAgICAgICAgICAgIHJldHVybiBz
ZXRJbnNlcnRpb25Nb2RlKEluQm9keU1vZGUpOworI2lmICFFTkFCTEUoSU1QTElFRF9DT05URVhU
X1BBUlNJTkcpCisgICAgICAgICAgICBBU1NFUlQodGFnTmFtZSAhPSBudWxsUU5hbWUoKSk7Cisj
ZW5kaWYKKyAgICAgICAgICAgIHJldHVybiBzZXRJbnNlcnRpb25Nb2RlKHRhZ05hbWUgPT0gbnVs
bFFOYW1lKCkgPyBJbXBsaWVkQ29udGV4dE1vZGUgOiBJbkJvZHlNb2RlKTsKICAgICAgICAgfQog
ICAgICAgICBub2RlUmVjb3JkID0gbm9kZVJlY29yZC0+bmV4dCgpOwogICAgIH0KQEAgLTIyMjUs
NiArMjI3MywxMyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRhZyhBdG9taWNI
VE1MVG9rZW4mIHRva2VuKQogICAgICAgICBkZWZhdWx0Rm9ySW5UYWJsZVRleHQoKTsKICAgICAg
ICAgcHJvY2Vzc0VuZFRhZyh0b2tlbik7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW1wbGll
ZENvbnRleHRNb2RlOgorI2lmIEVOQUJMRShJTVBMSUVEX0NPTlRFWFRfUEFSU0lORykKKyAgICAg
ICAgcGFyc2VFcnJvcih0b2tlbik7CisjZWxzZQorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyNlbmRpZgorICAgICAgICBicmVhazsKICAgICB9CiB9CiAKQEAgLTIyMzQsNyArMjI4OSwx
MSBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0NvbW1lbnQoQXRvbWljSFRNTFRva2Vu
JiB0b2tlbikKICAgICBpZiAobV9pbnNlcnRpb25Nb2RlID09IEluaXRpYWxNb2RlCiAgICAgICAg
IHx8IG1faW5zZXJ0aW9uTW9kZSA9PSBCZWZvcmVIVE1MTW9kZQogICAgICAgICB8fCBtX2luc2Vy
dGlvbk1vZGUgPT0gQWZ0ZXJBZnRlckJvZHlNb2RlCisgICAgICAgIHx8IG1faW5zZXJ0aW9uTW9k
ZSA9PSBJbXBsaWVkQ29udGV4dE1vZGUKICAgICAgICAgfHwgbV9pbnNlcnRpb25Nb2RlID09IEFm
dGVyQWZ0ZXJGcmFtZXNldE1vZGUpIHsKKyNpZiAhRU5BQkxFKElNUExJRURfQ09OVEVYVF9QQVJT
SU5HKQorICAgICAgICBBU1NFUlQobV9pbnNlcnRpb25Nb2RlICE9IEltcGxpZWRDb250ZXh0TW9k
ZSk7CisjZW5kaWYKICAgICAgICAgbV90cmVlLmluc2VydENvbW1lbnRPbkRvY3VtZW50KHRva2Vu
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTIzMjUsOCArMjM4NCwxMiBAQCBSZXByb2Nl
c3NCdWZmZXI6CiAgICAgfQogICAgIGNhc2UgSW5Cb2R5TW9kZToKICAgICBjYXNlIEluQ2FwdGlv
bk1vZGU6CisgICAgY2FzZSBJbXBsaWVkQ29udGV4dE1vZGU6CiAgICAgY2FzZSBJbkNlbGxNb2Rl
OiB7Ci0gICAgICAgIEFTU0VSVChpbnNlcnRpb25Nb2RlKCkgPT0gSW5Cb2R5TW9kZSB8fCBpbnNl
cnRpb25Nb2RlKCkgPT0gSW5DYXB0aW9uTW9kZSB8fCBpbnNlcnRpb25Nb2RlKCkgPT0gSW5DZWxs
TW9kZSk7CisjaWYgIUVOQUJMRShJTVBMSUVEX0NPTlRFWFRfUEFSU0lORykKKyAgICAgICAgQVNT
RVJUKGluc2VydGlvbk1vZGUoKSAhPSBJbXBsaWVkQ29udGV4dE1vZGUpCisjZW5kaWYKKyAgICAg
ICAgQVNTRVJUKGluc2VydGlvbk1vZGUoKSA9PSBJbkJvZHlNb2RlIHx8IGluc2VydGlvbk1vZGUo
KSA9PSBJbkNhcHRpb25Nb2RlIHx8IGluc2VydGlvbk1vZGUoKSA9PSBJbkNlbGxNb2RlIHx8IGlu
c2VydGlvbk1vZGUoKSA9PSBJbXBsaWVkQ29udGV4dE1vZGUpOwogICAgICAgICBwcm9jZXNzQ2hh
cmFjdGVyQnVmZmVyRm9ySW5Cb2R5KGJ1ZmZlcik7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAg
LTI0NjAsOCArMjUyMywxMiBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZE9mRmls
ZShBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogICAgIGNhc2UgSW5Cb2R5TW9kZToKICAgICBjYXNl
IEluQ2VsbE1vZGU6CiAgICAgY2FzZSBJbkNhcHRpb25Nb2RlOgorICAgIGNhc2UgSW1wbGllZENv
bnRleHRNb2RlOgogICAgIGNhc2UgSW5Sb3dNb2RlOgotICAgICAgICBBU1NFUlQoaW5zZXJ0aW9u
TW9kZSgpID09IEluQm9keU1vZGUgfHwgaW5zZXJ0aW9uTW9kZSgpID09IEluQ2VsbE1vZGUgfHwg
aW5zZXJ0aW9uTW9kZSgpID09IEluQ2FwdGlvbk1vZGUgfHwgaW5zZXJ0aW9uTW9kZSgpID09IElu
Um93TW9kZSk7CisjaWYgIUVOQUJMRShJTVBMSUVEX0NPTlRFWFRfUEFSU0lORykKKyAgICAgICAg
QVNTRVJUKGluc2VydGlvbk1vZGUoKSAhPSBJbXBsaWVkQ29udGV4dE1vZGUpOworI2VuZGlmCisg
ICAgICAgIEFTU0VSVChpbnNlcnRpb25Nb2RlKCkgPT0gSW5Cb2R5TW9kZSB8fCBpbnNlcnRpb25N
b2RlKCkgPT0gSW5DZWxsTW9kZSB8fCBpbnNlcnRpb25Nb2RlKCkgPT0gSW5DYXB0aW9uTW9kZSB8
fCBpbnNlcnRpb25Nb2RlKCkgPT0gSW5Sb3dNb2RlIHx8IGluc2VydGlvbk1vZGUoKSA9PSBJbXBs
aWVkQ29udGV4dE1vZGUpOwogICAgICAgICBub3RJbXBsZW1lbnRlZCgpOyAvLyBFbWl0IHBhcnNl
IGVycm9yIGJhc2VkIG9uIHdoYXQgZWxlbWVudHMgYXJlIHN0aWxsIG9wZW4uCiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgQWZ0ZXJCb2R5TW9kZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTFRyZWVCdWlsZGVyLmgKaW5kZXggMTliYmU5NTE5ZmZiZjVhNzY1ZmZiZTRjMzRkNzU4
YmFiZmIzZGEzNC4uYTk4ZTM0Mjg1ZWUxOWI3Y2NjZTEwYzVkOGRlZWY3NWU1MmQ0ZDZjMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmgKQEAgLTUwLDYg
KzUwLDcgQEAgY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKIGNsYXNzIEZyYW1lOwogY2xhc3MgSFRN
TFRva2VuOwogY2xhc3MgSFRNTERvY3VtZW50OworY2xhc3MgUXVhbGlmaWVkTmFtZTsKIGNsYXNz
IE5vZGU7CiBjbGFzcyBIVE1MRG9jdW1lbnRQYXJzZXI7CiAKQEAgLTk5LDYgKzEwMCw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIEluSGVhZE1vZGUsCiAgICAgICAgIEluSGVhZE5vc2NyaXB0TW9kZSwK
ICAgICAgICAgQWZ0ZXJIZWFkTW9kZSwKKyAgICAgICAgSW1wbGllZENvbnRleHRNb2RlLAogICAg
ICAgICBJbkJvZHlNb2RlLAogICAgICAgICBUZXh0TW9kZSwKICAgICAgICAgSW5UYWJsZU1vZGUs
CkBAIC0xOTUsMTYgKzE5NywxNyBAQCBwcml2YXRlOgogICAgICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShGcmFnbWVudFBhcnNpbmdDb250ZXh0KTsKICAgICBwdWJsaWM6CiAgICAgICAgIEZyYWdt
ZW50UGFyc2luZ0NvbnRleHQoKTsKLSAgICAgICAgRnJhZ21lbnRQYXJzaW5nQ29udGV4dChEb2N1
bWVudEZyYWdtZW50KiwgRWxlbWVudCogY29udGV4dEVsZW1lbnQsIEZyYWdtZW50U2NyaXB0aW5n
UGVybWlzc2lvbik7CisgICAgICAgIEZyYWdtZW50UGFyc2luZ0NvbnRleHQoRG9jdW1lbnRGcmFn
bWVudCosIGNvbnN0IFF1YWxpZmllZE5hbWUmIGNvbnRleHRUYWcsIEZyYWdtZW50U2NyaXB0aW5n
UGVybWlzc2lvbik7CiAgICAgICAgIH5GcmFnbWVudFBhcnNpbmdDb250ZXh0KCk7CiAKICAgICAg
ICAgRG9jdW1lbnRGcmFnbWVudCogZnJhZ21lbnQoKSBjb25zdCB7IHJldHVybiBtX2ZyYWdtZW50
OyB9Ci0gICAgICAgIEVsZW1lbnQqIGNvbnRleHRFbGVtZW50KCkgY29uc3QgeyBBU1NFUlQobV9m
cmFnbWVudCk7IHJldHVybiBtX2NvbnRleHRFbGVtZW50OyB9CisgICAgICAgIGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGNvbnRleHRUYWcoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHRUYWc7IH0KKyAg
ICAgICAgdm9pZCBzZXRDb250ZXh0VGFnKGNvbnN0IFF1YWxpZmllZE5hbWUmIGNvbnRleHRUYWcp
IHsgbV9jb250ZXh0VGFnID0gY29udGV4dFRhZzsgfQogICAgICAgICBGcmFnbWVudFNjcmlwdGlu
Z1Blcm1pc3Npb24gc2NyaXB0aW5nUGVybWlzc2lvbigpIGNvbnN0IHsgQVNTRVJUKG1fZnJhZ21l
bnQpOyByZXR1cm4gbV9zY3JpcHRpbmdQZXJtaXNzaW9uOyB9CiAKICAgICBwcml2YXRlOgogICAg
ICAgICBEb2N1bWVudEZyYWdtZW50KiBtX2ZyYWdtZW50OwotICAgICAgICBFbGVtZW50KiBtX2Nv
bnRleHRFbGVtZW50OworICAgICAgICBRdWFsaWZpZWROYW1lIG1fY29udGV4dFRhZzsKIAogICAg
ICAgICAvLyBEaXNhbGxvd1NjcmlwdGluZ0NvbnRlbnQgY2F1c2VzIHRoZSBQYXJzZXIgdG8gcmVt
b3ZlIGNoaWxkcmVuIGZyb20gPHNjcmlwdD4gdGFncyAoc28gamF2YXNjcmlwdCBkb2Vzbid0IHNo
b3cgdXAgaW4gcGFzdGVzKS4KICAgICAgICAgRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uIG1f
c2NyaXB0aW5nUGVybWlzc2lvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
ZmVhdHVyZXMuZ3lwaSBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lwaQppbmRl
eCAwNDAwYzgwYTY0MGNjOGNmY2QwODIxZDM4MzYxMWU1ODg0YzMwMjk0Li4xOWFmNmFiNzQyM2Mx
M2U2NDVmNGZkYjY4MDdkOTU4MTE3MjgzZjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL2ZlYXR1cmVzLmd5cGkKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJl
cy5neXBpCkBAIC01Nyw2ICs1Nyw3IEBACiAgICAgICAnRU5BQkxFX0dBTUVQQUQ9MScsCiAgICAg
ICAnRU5BQkxFX0dFT0xPQ0FUSU9OPTEnLAogICAgICAgJ0VOQUJMRV9HRVNUVVJFX0VWRU5UUz0x
JywKKyAgICAgICdFTkFCTEVfSU1QTElFRF9DT05URVhUX1BBUlNJTkc9MScsCiAgICAgICAnRU5B
QkxFX0lDT05EQVRBQkFTRT0wJywKICAgICAgICdFTkFCTEVfSUZSQU1FX1NFQU1MRVNTPTEnLAog
ICAgICAgJ0VOQUJMRV9JTkRFWEVEX0RBVEFCQVNFPTEnLApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDc3N2Q3Nzk3MTgwYWM4
YmQ4MTQwN2YzN2U2NzVkNjFjZTE4Y2YxOTYuLjY3NjNhYWVhYWUzYWMyOGY3OGY3M2Q3MzhjYTBh
NGRlZmM1YmY3OTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMi0wNS0yNCAgUmFmYWVsIFdl
aW5zdGVpbiAgPHJhZmFlbHdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEltcGxlbWVudCBIVE1M
VGVtcGxhdGVFbGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD04NjAzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogaHRtbDVsaWIvcmVzb3VyY2VzL3RlbXBsYXRlLmRhdDogQWRkZWQuCisgICAgICAg
ICogaHRtbDVsaWIvcnVuLXRlbXBsYXRlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
aHRtbDVsaWIvcnVuLXRlbXBsYXRlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHJlc291cmNlcy9k
dW1wLWFzLW1hcmt1cC5qczoKKyAgICAgICAgKE1hcmt1cC5fZ2V0LmlzVGVtcGxhdGVFbGVtZW50
KToKKyAgICAgICAgKE1hcmt1cC5fZ2V0KToKKyAgICAgICAgKE1hcmt1cC5fZ2V0U2VsZWN0aW9u
RnJvbU5vZGUpOgorCiAyMDEyLTA1LTI0ICBKZXNzaWUgQmVybGluICA8amJlcmxpbkBhcHBsZS5j
b20+CiAKICAgICAgICAgW1dpbl0gQ3Jhc2ggdW5kZXIgRG9jdW1lbnRMb2FkZXI6OmRpZFRlbGxD
bGllbnRBYm91dExvYWQgd2hlbiBydW5uaW5nCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odG1s
NWxpYi9yZXNvdXJjZXMvZG9jdW1lbnQtcGFyc2UuZGF0IGIvTGF5b3V0VGVzdHMvaHRtbDVsaWIv
cmVzb3VyY2VzL2RvY3VtZW50LXBhcnNlLmRhdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MmYwNjU1MzU3ZjgxMWFi
NmZjNzlmNzUxNDZmZjhiNDZmMzQwYzc5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aHRtbDVsaWIvcmVzb3VyY2VzL2RvY3VtZW50LXBhcnNlLmRhdApAQCAtMCwwICsxLDE0MCBAQAor
I2RhdGEKK0hlbGxvCisjZXJyb3JzCisjZG9jdW1lbnQtZnJhZ21lbnQKKyNkb2N1bWVudAorfCAi
SGVsbG8iCisKKyNkYXRhCis8L2Rpdj5IZWxsbworI2Vycm9ycworI2RvY3VtZW50LWZyYWdtZW50
CisjZG9jdW1lbnQKK3wgIkhlbGxvIgorCisjZGF0YQorPGRpdj48c3Bhbj4KKyNlcnJvcnMKKyNk
b2N1bWVudC1mcmFnbWVudAorI2RvY3VtZW50Cit8IDxkaXY+Cit8ICAgPHNwYW4+CisKKyNkYXRh
CitIZWxsbzxkaXY+PHNwYW4+CisjZXJyb3JzCisjZG9jdW1lbnQtZnJhZ21lbnQKKyNkb2N1bWVu
dAorfCAiSGVsbG8iCit8IDxkaXY+Cit8ICAgPHNwYW4+CisKKyNkYXRhCis8IURPQ1RZUEUgaHRt
bD48ZGl2PjxzcGFuPgorI2Vycm9ycworI2RvY3VtZW50LWZyYWdtZW50CisjZG9jdW1lbnQKK3wg
PGRpdj4KK3wgICA8c3Bhbj4KKworI2RhdGEKKzxvcHRpb24+SGVsbG8KKyNlcnJvcnMKKyNkb2N1
bWVudC1mcmFnbWVudAorI2RvY3VtZW50Cit8IDxvcHRpb24+Cit8ICAgIkhlbGxvIgorCisjZGF0
YQorSGVsbG88b3B0aW9uPkdvb2RieWU8b3B0aW9uPldvcmxkCisjZXJyb3JzCisjZG9jdW1lbnQt
ZnJhZ21lbnQKKyNkb2N1bWVudAorfCAiSGVsbG8iCit8IDxvcHRpb24+Cit8ICAgIkdvb2RieWUi
Cit8IDxvcHRpb24+Cit8ICAgIldvcmxkIgorCisjZGF0YQorPHRkPgorI2Vycm9ycworI2RvY3Vt
ZW50LWZyYWdtZW50CisjZG9jdW1lbnQKK3wgPHRkPgorCisjZGF0YQorPC90ZD5IZWxsbzx0ZD5H
b29kYnllCisjZXJyb3JzCisjZG9jdW1lbnQtZnJhZ21lbnQKKyNkb2N1bWVudAorfCAiSGVsbG8i
Cit8IDx0ZD4KK3wgICAiR29vZGJ5ZSIKKworI2RhdGEKKzx0aGVhZD4KKyNlcnJvcnMKKyNkb2N1
bWVudC1mcmFnbWVudAorI2RvY3VtZW50Cit8IDx0aGVhZD4KKworI2RhdGEKKzx0cj4KKyNlcnJv
cnMKKyNkb2N1bWVudC1mcmFnbWVudAorI2RvY3VtZW50Cit8IDx0cj4KKworI2RhdGEKKzx0ZD4K
KyNlcnJvcnMKKyNkb2N1bWVudC1mcmFnbWVudAorI2RvY3VtZW50Cit8IDx0ZD4KKworI2RhdGEK
KzxtZXRhPjx0ZD4KKyNlcnJvcnMKKyNkb2N1bWVudC1mcmFnbWVudAorI2RvY3VtZW50Cit8IDxt
ZXRhPgorfCA8dGQ+CisKKyNkYXRhCis8bGluaz48dHI+CisjZXJyb3JzCisjZG9jdW1lbnQtZnJh
Z21lbnQKKyNkb2N1bWVudAorfCA8bGluaz4KK3wgPHRyPgorCisjZGF0YQorPHN0eWxlPmgxIHsg
YmFja2dyb3VuZC1jb2xvcjogYmx1ZTt9PC9zdHlsZT48dGhlYWQ+CisjZXJyb3JzCisjZG9jdW1l
bnQtZnJhZ21lbnQKKyNkb2N1bWVudAorfCA8c3R5bGU+Cit8ICAgImgxIHsgYmFja2dyb3VuZC1j
b2xvcjogYmx1ZTt9IgorfCA8dGhlYWQ+CisKKyNkYXRhCis8c2NyaXB0PnZhciBmb28gPSAiYmFy
Ijs8L3NjcmlwdD48b3B0aW9uPgorI2Vycm9ycworI2RvY3VtZW50LWZyYWdtZW50CisjZG9jdW1l
bnQKK3wgPHNjcmlwdD4KK3wgICAidmFyIGZvbyA9ICJiYXIiOyIKK3wgPG9wdGlvbj4KKworI2Rh
dGEKK3BhcnNlIGFzIHRleHQ8c2NyaXB0PnBhcnNlIGFzIDxzcGFuPnNjcmlwdDwvc3Bhbj48L3Nj
cmlwdD48dHI+PHRkPnRhYmxlIGNvbnRlbnQ8L3RkPjwvdHI+CisjZXJyb3JzCisjZG9jdW1lbnQt
ZnJhZ21lbnQKKyNkb2N1bWVudAorfCAicGFyc2UgYXMgdGV4dCIKK3wgPHNjcmlwdD4KK3wgICAi
cGFyc2UgYXMgPHNwYW4+c2NyaXB0PC9zcGFuPiIKK3wgPHRyPgorfCAgIDx0ZD4KK3wgICAgICJ0
YWJsZSBjb250ZW50IgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0bWw1bGliL3Jlc291cmNlcy9ydW5uZXIuanMgYi9MYXlvdXRUZXN0cy9odG1s
NWxpYi9yZXNvdXJjZXMvcnVubmVyLmpzCmluZGV4IDQwYTFjMGVmYjQ5NjZiYjFhYmI4OTg0YTky
YzQ4NjQzMDQ2NTE4ZjQuLmM4NTU1ZTFiNWNmODI4MGY3MmJhZWE1NzQyZGRkN2ZkOTNjN2JiY2Eg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0bWw1bGliL3Jlc291cmNlcy9ydW5uZXIuanMKKysr
IGIvTGF5b3V0VGVzdHMvaHRtbDVsaWIvcmVzb3VyY2VzL3J1bm5lci5qcwpAQCAtODQsNyArODQs
NyBAQCBmdW5jdGlvbiBydW4oKQogCiBmdW5jdGlvbiB0ZXN0KCkKIHsKLSAgICB2YXIgaW5wdXQs
IGVycm9yc1N0YXJ0LCBmcmFnbWVudFN0YXJ0LCBjb250ZXh0RWxlbWVudCwgZG9tU3RhcnQsIGRv
bTsKKyAgICB2YXIgaW5wdXQsIGVycm9yc1N0YXJ0LCBmcmFnbWVudCwgZnJhZ21lbnRTdGFydCwg
Y29udGV4dEVsZW1lbnQsIGRvbVN0YXJ0LCBkb207CiAgICAgaWYgKGRhdGEgPSB0ZXN0cy5zaGlm
dCgpKQogICAgIHsKICAgICAgICAgc3RhdC5kYXRhID0gIlJ1bm5pbmcgdGVzdCAiICsgdGVzdF9u
dW1iZXIgKyAiIG9mICIgKyAodGVzdF9udW1iZXIgKyB0ZXN0cy5sZW5ndGgpICsgIiBpbiAiICsg
ZmlsZTsKQEAgLTk2LDcgKzk2LDggQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICBkb21T
dGFydCA9IGRhdGEuaW5kZXhPZigiXG4jZG9jdW1lbnRcbiIpCiAgICAgICAgICAgICBpZiAoZnJh
Z21lbnRTdGFydCAhPT0gLTEpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29udGV4
dEVsZW1lbnQgPSBkYXRhLnN1YnN0cmluZyhmcmFnbWVudFN0YXJ0ICsgMjAsIGRvbVN0YXJ0KTsK
KyAgICAgICAgICAgICAgICBmcmFnbWVudCA9IHRydWU7CisgICAgICAgICAgICAgICAgY29udGV4
dEVsZW1lbnQgPSBkYXRhLnN1YnN0cmluZyhmcmFnbWVudFN0YXJ0ICsgMjAsIGRvbVN0YXJ0KS50
cmltKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoZG9tU3RhcnQgIT09IC0xKQog
ICAgICAgICAgICAgewpAQCAtMTA1LDcgKzEwNiw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAg
ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgZG9tID0gZG9tLnN1YnN0cmluZygwLCBk
b20ubGVuZ3RoIC0gMSk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJ1bl90
ZXN0KGlucHV0LCBjb250ZXh0RWxlbWVudCwgZG9tKTsKKyAgICAgICAgICAgICAgICBydW5fdGVz
dChpbnB1dCwgZnJhZ21lbnQsIGNvbnRleHRFbGVtZW50LCBkb20pOwogICAgICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMTQyLDE2ICsxNDMsMjMgQEAg
ZnVuY3Rpb24gdGVzdCgpCiAgICAgfQogfQogCi1mdW5jdGlvbiBydW5fdGVzdChpbnB1dCwgY29u
dGV4dEVsZW1lbnQsIGV4cGVjdGVkKQorZnVuY3Rpb24gcnVuX3Rlc3QoaW5wdXQsIGZyYWdtZW50
LCBjb250ZXh0RWxlbWVudCwgZXhwZWN0ZWQpCiB7Ci0gICAgaWYgKGNvbnRleHRFbGVtZW50KQor
ICAgIGlmIChmcmFnbWVudCkKICAgICB7Ci0gICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudChjb250ZXh0RWxlbWVudCk7Ci0gICAgICAgIHRyeQotICAgICAgICB7Ci0g
ICAgICAgICAgICBlbGVtZW50LmlubmVySFRNTCA9IGlucHV0OworICAgICAgICB2YXIgZWxlbWVu
dDsKKyAgICAgICAgaWYgKGNvbnRleHRFbGVtZW50KSB7CisgICAgICAgICAgICBlbGVtZW50ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChjb250ZXh0RWxlbWVudCk7CisgICAgICAgICAgICB0cnkK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBlbGVtZW50LmlubmVySFRNTCA9IGlucHV0
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2F0Y2goZSkge30KKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGRvY3VtZW50
LnBhcnNlKGlucHV0KTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9CiAgICAgICAgIH0KLSAg
ICAgICAgY2F0Y2goZSkge30KICAgICAgICAgcHJvY2Vzc19yZXN1bHQoaW5wdXQsIGVsZW1lbnQs
IGV4cGVjdGVkKTsKICAgICB9CiAgICAgZWxzZSBpZiAod3JpdGUpCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odG1sNWxpYi9ydW4tZG9jdW1lbnQtcGFyc2UtZXhwZWN0ZWQuaHRtbCBiL0xheW91
dFRlc3RzL2h0bWw1bGliL3J1bi1kb2N1bWVudC1wYXJzZS1leHBlY3RlZC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjllZmUzMjRiMDEyOWU2MWM5MTI0ZTU1ODA5MjgyYTk1ZDBiYWFhZTcKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9odG1sNWxpYi9ydW4tZG9jdW1lbnQtcGFyc2UtZXhwZWN0ZWQu
aHRtbApAQCAtMCwwICsxIEBACityZXNvdXJjZXMvdGVtcGxhdGUuZGF0OiBQQVNTCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odG1sNWxpYi9ydW4tZG9jdW1lbnQtcGFyc2UuaHRtbCBiL0xheW91
dFRlc3RzL2h0bWw1bGliL3J1bi1kb2N1bWVudC1wYXJzZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY5MDRl
YTc1N2I5ODJjZDkzY2UyZGMxZDk1NGIxM2ZlYWJhZDljYjgKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9odG1sNWxpYi9ydW4tZG9jdW1lbnQtcGFyc2UuaHRtbApAQCAtMCwwICsxLDgg
QEAKKzwhZG9jdHlwZSBodG1sPgorPHNjcmlwdD4KK3ZhciB0ZXN0X2ZpbGVzID0gWworICAncmVz
b3VyY2VzL2RvY3VtZW50LXBhcnNlLmRhdCcsCitdCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li9yZXNvdXJjZXMvZHVtcC1hcy1tYXJrdXAuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJl
c291cmNlcy9ydW5uZXIuanMiPjwvc2NyaXB0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21kdi90ZW1wbGF0ZS5odG1sIGIvTGF5b3V0VGVzdHMv
bWR2L3RlbXBsYXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWNlNTNmYmRlZDRiNTVhM2E2ODNmOGVlMzg0
ODJmZTgxNTQyYWM3NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21kdi90ZW1wbGF0
ZS5odG1sCkBAIC0wLDAgKzEsMTcgQEAKKzxodG1sPgorPGhlYWQ+CisgIDxzY3JpcHQ+Cit3aW5k
b3cuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZ1bmN0aW9uKCkgeworICAg
ZG9jdW1lbnQuYm9keS5tb2RlbCA9IHt9OworfSk7CisgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+CisgIDx0ZW1wbGF0ZT4KKyAgICA8ZGl2PkZvbzwvZGl2PgorICAgIDx0ZW1wbGF0ZT4KKyAg
ICAgIDxkaXY+QmFyPC9kaXY+CisgICAgPC90ZW1wbGF0ZT4KKyAgPC90ZW1wbGF0ZT4KKzwvYm9k
eT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>145123</attachid>
            <date>2012-05-31 11:46:02 -0700</date>
            <delta_ts>2012-06-04 15:30:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84646-20120531114601.patch</filename>
            <type>text/plain</type>
            <size>34406</size>
            <attacher name="Rafael Weinstein">rafaelw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5MTI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWI2MTk4YmIzOWEyYjgy
YWNiZDA2NDIyYTJjMTc2ZmYzZDg5NzkxMC4uM2RhMDE3Y2JjMTI3NGY2YjBjMzM3YTcxOWNkMDdh
MDUwMTQ1NmNiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDEyLTA1LTMxICBSYWZh
ZWwgV2VpbnN0ZWluICA8cmFmYWVsd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW1wbGVtZW50
IERvY3VtZW50LnBhcnNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD04NDY0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIERvY3VtZW50LnBhcnNlKCkgbm93IHBhcnNlcyBiYXNlZCBvbiBhbiAiaW1wbGllZCBj
b250ZXh0IGVsZW1lbnQiIHdoaWNoIGl0IHBpY2tzIGJhc2VkIG9uIHRoZSBuYW1lCisgICAgICAg
IG9mIHRoZSBmaXJzdCAobm9uIHN0eWxlLCBzY3JpcHQsIG1ldGEsIGxpbmspIHN0YXJ0IHRhZyB3
aGljaCBhcHBlYXJzIGluIHRoZSBwcm92aWRlZCBtYXJrdXAuCisKKyAgICAgICAgVGVzdHM6IGZh
c3QvcGFyc2VyL2RvY3VtZW50LXBhcnNlLWVtcHR5LW51bGwtdW5kZWZpbmVkLmh0bWwKKyAgICAg
ICAgICAgICAgIGh0bWw1bGliL3J1bi1kb2N1bWVudC1wYXJzZS5odG1sCisKKyAgICAgICAgKiBk
b20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudDo6cGFyc2UpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAoRG9j
dW1lbnQpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5pZGw6CisgICAgICAgICogZG9tL1F1YWxp
ZmllZE5hbWUuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpRdWFs
aWZpZWROYW1lOjppbml0KToKKyAgICAgICAgKiBkb20vUXVhbGlmaWVkTmFtZS5oOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpudWxsUU5hbWUpOgorICAgICAgICAqIGRv
bS9TaGFkb3dSb290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OnNldElubmVy
SFRNTCk6CisgICAgICAgICogZWRpdGluZy9tYXJrdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y3JlYXRlRnJhZ21lbnRGb3JJbm5lck91dGVySFRNTCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVh
dGVDb250ZXh0dWFsRnJhZ21lbnQpOgorICAgICAgICAqIGVkaXRpbmcvbWFya3VwLmg6CisgICAg
ICAgICogaHRtbC9IVE1MRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVu
dDo6c2V0SW5uZXJIVE1MKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjpzZXRPdXRl
ckhUTUwpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6Omluc2VydEFkamFjZW50SFRN
TCk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxOYW1lczo6dG9rZW5pemVyU3RhdGVGb3JDb250ZXh0RWxlbWVudCk6
CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpIVE1MVHJlZUJ1aWxk
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpGcmFnbWVudFBhcnNpbmdD
b250ZXh0OjpGcmFnbWVudFBhcnNpbmdDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxU
cmVlQnVpbGRlcjo6Y29uc3RydWN0VHJlZUZyb21Ub2tlbik6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRhZyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
VHJlZUJ1aWxkZXI6OnJlc2V0SW5zZXJ0aW9uTW9kZUFwcHJvcHJpYXRlbHkpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRW5kVGFnKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0NvbW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzQ2hhcmFjdGVyQnVmZmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZE9mRmlsZSk6CisgICAgICAgICogaHRtbC9w
YXJzZXIvSFRNTFRyZWVCdWlsZGVyLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEZy
YWdtZW50UGFyc2luZ0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVy
OjpGcmFnbWVudFBhcnNpbmdDb250ZXh0Ojpjb250ZXh0VGFnKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxUcmVlQnVpbGRlcjo6RnJhZ21lbnRQYXJzaW5nQ29udGV4dDo6c2V0Q29udGV4dFRhZyk6
CisKIDIwMTItMDUtMzEgIEFtaSBGaXNjaG1hbiAgPGZpc2NobWFuQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBSZXBsYWNlIFdlYk1lZGlhUGxheWVyOjpieXRlc0xvYWRlZCgpIHdpdGggYW4gZXhw
bGljaXQgZGlkTG9hZGluZ1Byb2dyZXNzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXgg
ZDA4NmU0YWEyZTc2NDhmMWM0YTkwNDUwZWYwNjcxMDVjZDg0YTEwMy4uMTA5OTRhN2IyNzViOTAz
OTAzOTBlZTcyYjJjMTc3YzBhM2M0NmQwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMiBAQAorMjAxMi0wNS0zMSAgUmFmYWVsIFdlaW5zdGVpbiAgPHJhZmFlbHdAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIEltcGxlbWVudCBEb2N1bWVudC5wYXJzZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQ2NDYKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZlYXR1cmVzLmd5cGk6CisK
IDIwMTItMDUtMzEgIEFtaSBGaXNjaG1hbiAgPGZpc2NobWFuQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBSZXBsYWNlIFdlYk1lZGlhUGxheWVyOjpieXRlc0xvYWRlZCgpIHdpdGggYW4gZXhwbGlj
aXQgZGlkTG9hZGluZ1Byb2dyZXNzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDk0NDc4
YTg3M2ZiNWE5OWIyNGQ0NzY4MTM1OWYwNDQ0ZTBiMzFlMDAuLjA5ZmNlZGQ4YzA0NTlhZjc2NWY2
M2ZmMGRjN2E3MzdkYzYzNmEyM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMTYxLDYg
KzE2MSw3IEBACiAjaW5jbHVkZSAiWFBhdGhOU1Jlc29sdmVyLmgiCiAjaW5jbHVkZSAiWFBhdGhS
ZXN1bHQuaCIKICNpbmNsdWRlICJodG1sZWRpdGluZy5oIgorI2luY2x1ZGUgIm1hcmt1cC5oIgog
I2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoRnVuY3Rpb25z
Lmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KQEAgLTgyNiw2ICs4MjcsMTMgQEAgUGFz
c1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBEb2N1bWVudDo6Y3JlYXRlRG9jdW1lbnRGcmFnbWVu
dCgpCiAgICAgcmV0dXJuIERvY3VtZW50RnJhZ21lbnQ6OmNyZWF0ZShkb2N1bWVudCgpKTsKIH0K
IAorI2lmIEVOQUJMRShJTVBMSUVEX0NPTlRFWFRfUEFSU0lORykKK1Bhc3NSZWZQdHI8RG9jdW1l
bnRGcmFnbWVudD4gRG9jdW1lbnQ6OnBhcnNlKGNvbnN0IFN0cmluZyYgaHRtbCwgRXhjZXB0aW9u
Q29kZSYgZWMpCit7CisgICAgcmV0dXJuIGNyZWF0ZUZyYWdtZW50Rm9ySW5uZXJPdXRlckhUTUwo
aHRtbCwgZG9jdW1lbnQoKSwgMCAvKiBjb250ZXh0RWxlbWVudCAqLywgQWxsb3dTY3JpcHRpbmdD
b250ZW50QW5kRG9Ob3RNYXJrQWxyZWFkeVN0YXJ0ZWQsIGVjKTsKK30KKyNlbmRpZgorCiBQYXNz
UmVmUHRyPFRleHQ+IERvY3VtZW50OjpjcmVhdGVUZXh0Tm9kZShjb25zdCBTdHJpbmcmIGRhdGEp
CiB7CiAgICAgcmV0dXJuIFRleHQ6OmNyZWF0ZSh0aGlzLCBkYXRhKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmgKaW5kZXggNDNjNWY1Nzc0Y2U3MGY0ZDU1NzFmMGU3MWEwMGVhODBlODM2ODEzYS4uNWEzZWU3
ZjQ5Yjk3YzM5ZGJiODg2MWI4NDJkZmIxNWY5M2FjNTY4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgK
QEAgLTM0OCw2ICszNDgsOSBAQCBwdWJsaWM6CiAgICAgCiAgICAgdmlydHVhbCBQYXNzUmVmUHRy
PEVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0YWdOYW1lLCBFeGNl
cHRpb25Db2RlJik7CiAgICAgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVEb2N1
bWVudEZyYWdtZW50KCk7CisjaWYgRU5BQkxFKElNUExJRURfQ09OVEVYVF9QQVJTSU5HKQorICAg
IFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gcGFyc2UoY29uc3QgU3RyaW5nJiBodG1sLCBF
eGNlcHRpb25Db2RlJik7CisjZW5kaWYKICAgICBQYXNzUmVmUHRyPFRleHQ+IGNyZWF0ZVRleHRO
b2RlKGNvbnN0IFN0cmluZyYgZGF0YSk7CiAgICAgUGFzc1JlZlB0cjxDb21tZW50PiBjcmVhdGVD
b21tZW50KGNvbnN0IFN0cmluZyYgZGF0YSk7CiAgICAgUGFzc1JlZlB0cjxDREFUQVNlY3Rpb24+
IGNyZWF0ZUNEQVRBU2VjdGlvbihjb25zdCBTdHJpbmcmIGRhdGEsIEV4Y2VwdGlvbkNvZGUmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaWRsCmluZGV4IGI5MjJjYTZhMDg4MzkyNDAzMDUwNjNmZTBlOTA2
MTg3N2U3ZmRkMDcuLjgyZDM5ZWZjYmUxMzAwYmIwMDMyYzVhM2E3ZjM4YmRhODAyYjFhNzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmlkbApAQCAtMzU4LDYgKzM1OCw4IEBAIG1vZHVsZSBjb3JlIHsK
ICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtDb25kaXRpb25hbD1QQUdFX1ZJU0lCSUxJVFlf
QVBJXSBET01TdHJpbmcgd2Via2l0VmlzaWJpbGl0eVN0YXRlOwogICAgICAgICByZWFkb25seSBh
dHRyaWJ1dGUgW0NvbmRpdGlvbmFsPVBBR0VfVklTSUJJTElUWV9BUEldIGJvb2xlYW4gd2Via2l0
SGlkZGVuOwogCisgICAgICAgIFtDb25kaXRpb25hbD1JTVBMSUVEX0NPTlRFWFRfUEFSU0lOR10g
RG9jdW1lbnRGcmFnbWVudCBwYXJzZShpbiBET01TdHJpbmcgaHRtbCkKKyAgICAgICAgICAgIHJh
aXNlcyAoRE9NRXhjZXB0aW9uKTsKICAgICB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vUXVhbGlmaWVkTmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUXVhbGlmaWVk
TmFtZS5jcHAKaW5kZXggZTA4NTUwNzBhN2NiMzI1MzRjY2JmOGFiOGQwNTI2NjdkYTMxOWYxNS4u
ZmFiMWMyYjZiMjcyMzc4ZjZiOWIwN2M4MGE2NDdlMzBjNDg1NjMxZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9RdWFsaWZpZWROYW1lLmNwcApAQCAtMTA0LDYgKzEwNCw3IEBAIFN0cmluZyBRdWFsaWZpZWRO
YW1lOjp0b1N0cmluZygpIGNvbnN0CiAKIC8vIEdsb2JhbCBpbml0IHJvdXRpbmVzCiBERUZJTkVf
R0xPQkFMKFF1YWxpZmllZE5hbWUsIGFueU5hbWUsIG51bGxBdG9tLCBzdGFyQXRvbSwgc3RhckF0
b20pCitERUZJTkVfR0xPQkFMKFF1YWxpZmllZE5hbWUsIG51bGxOYW1lLCBudWxsQXRvbSwgbnVs
bEF0b20sIG51bGxBdG9tKQogCiB2b2lkIFF1YWxpZmllZE5hbWU6OmluaXQoKQogewpAQCAtMTEz
LDYgKzExNCw3IEBAIHZvaWQgUXVhbGlmaWVkTmFtZTo6aW5pdCgpCiAgICAgICAgIAogICAgICAg
ICBBdG9taWNTdHJpbmc6OmluaXQoKTsKICAgICAgICAgbmV3ICgodm9pZCopJmFueU5hbWUpIFF1
YWxpZmllZE5hbWUobnVsbEF0b20sIHN0YXJBdG9tLCBzdGFyQXRvbSk7CisgICAgICAgIG5ldyAo
KHZvaWQqKSZudWxsTmFtZSkgUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgbnVsbEF0b20sIG51bGxB
dG9tKTsKICAgICAgICAgaW5pdGlhbGl6ZWQgPSB0cnVlOwogICAgIH0KIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
UXVhbGlmaWVkTmFtZS5oCmluZGV4IDYzNmIyYTUxNTBjOWU5ODdjMDI3ZTc1Njk3OTJkOWJhYzM0
YTg5ZTkuLjllZmI4ODEyNzM2OTc2ZTFjNTQzODlhMDM3ZTIxYzA4YTlmZDc3ZDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1lLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL1F1YWxpZmllZE5hbWUuaApAQCAtMTA1LDYgKzEwNSw4IEBAIHByaXZhdGU6CiAjaWZu
ZGVmIFdFQkNPUkVfUVVBTElGSUVETkFNRV9ISURFX0dMT0JBTFMKIGV4dGVybiBjb25zdCBRdWFs
aWZpZWROYW1lIGFueU5hbWU7CiBpbmxpbmUgY29uc3QgUXVhbGlmaWVkTmFtZSYgYW55UU5hbWUo
KSB7IHJldHVybiBhbnlOYW1lOyB9CitleHRlcm4gY29uc3QgUXVhbGlmaWVkTmFtZSBudWxsTmFt
ZTsKK2lubGluZSBjb25zdCBRdWFsaWZpZWROYW1lJiBudWxsUU5hbWUoKSB7IHJldHVybiBudWxs
TmFtZTsgfQogI2VuZGlmCiAKIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgQXRvbWljU3Ry
aW5nJiBhLCBjb25zdCBRdWFsaWZpZWROYW1lJiBxKSB7IHJldHVybiBhID09IHEubG9jYWxOYW1l
KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAppbmRleCA2NzIzYTBmNmRkMzA5NWRkMTZl
OTUzMzdhOWJiYzJhYjkwNTY4YjFjLi4wZWVkYzkzY2EzNmZiNDllZWJlZTllMGU0ZDQ0N2RjMzA1
MDRmMmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCkBAIC0xNDQsNyArMTQ0LDcgQEAg
U3RyaW5nIFNoYWRvd1Jvb3Q6OmlubmVySFRNTCgpIGNvbnN0CiAKIHZvaWQgU2hhZG93Um9vdDo6
c2V0SW5uZXJIVE1MKGNvbnN0IFN0cmluZyYgbWFya3VwLCBFeGNlcHRpb25Db2RlJiBlYykKIHsK
LSAgICBpZiAoUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gY3JlYXRlRnJhZ21l
bnRGb3JJbm5lck91dGVySFRNTChtYXJrdXAsIGhvc3QoKSwgQWxsb3dTY3JpcHRpbmdDb250ZW50
LCBlYykpCisgICAgaWYgKFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGNyZWF0
ZUZyYWdtZW50Rm9ySW5uZXJPdXRlckhUTUwobWFya3VwLCBkb2N1bWVudCgpLCBob3N0KCksIEFs
bG93U2NyaXB0aW5nQ29udGVudCwgZWMpKQogICAgICAgICByZXBsYWNlQ2hpbGRyZW5XaXRoRnJh
Z21lbnQodGhpcywgZnJhZ21lbnQucmVsZWFzZSgpLCBlYyk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
bWFya3VwLmNwcAppbmRleCA5YWU3ZTcyYzJmMjZlOTc0MGFkNGE1ZjBjYjI0YjE5OTQ0OGQ4MDcx
Li5lZTIyMzNhYmVmZTM3Yjg0ZmZjMzE1ZDQzNzhmYzQ0NjE2ZDg1MzY5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9tYXJrdXAuY3BwCkBAIC05OTQsMTYgKzk5NCwyNyBAQCBTdHJpbmcgdXJsVG9NYXJrdXAo
Y29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlKQogICAgIHJldHVybiBtYXJrdXAu
dG9TdHJpbmcoKTsKIH0KIAotUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFn
bWVudEZvcklubmVyT3V0ZXJIVE1MKGNvbnN0IFN0cmluZyYgbWFya3VwLCBFbGVtZW50KiBjb250
ZXh0RWxlbWVudCwgRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uIHNjcmlwdGluZ1Blcm1pc3Np
b24sIEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVh
dGVGcmFnbWVudEZvcklubmVyT3V0ZXJIVE1MKGNvbnN0IFN0cmluZyYgbWFya3VwLCBEb2N1bWVu
dCogZG9jdW1lbnQsIEVsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBGcmFnbWVudFNjcmlwdGluZ1Bl
cm1pc3Npb24gc2NyaXB0aW5nUGVybWlzc2lvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAg
RG9jdW1lbnQqIGRvY3VtZW50ID0gY29udGV4dEVsZW1lbnQtPmRvY3VtZW50KCk7CiAgICAgUmVm
UHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gRG9jdW1lbnRGcmFnbWVudDo6Y3JlYXRl
KGRvY3VtZW50KTsKIAorI2lmICFFTkFCTEUoSU1QTElFRF9DT05URVhUX1BBUlNJTkcpCisgICAg
QVNTRVJUKGNvbnRleHRFbGVtZW50KTsKKyNlbmRpZgorCiAgICAgaWYgKGRvY3VtZW50LT5pc0hU
TUxEb2N1bWVudCgpKSB7CiAgICAgICAgIGZyYWdtZW50LT5wYXJzZUhUTUwobWFya3VwLCBjb250
ZXh0RWxlbWVudCwgc2NyaXB0aW5nUGVybWlzc2lvbik7CiAgICAgICAgIHJldHVybiBmcmFnbWVu
dDsKICAgICB9CiAKKyNpZiBFTkFCTEUoSU1QTElFRF9DT05URVhUX1BBUlNJTkcpCisgICAgLy8g
RklYTUU6IFhNTCBoYXMgbm90IGRlZmluZWQgd2hhdCBpdCBtZWFucyB0byBwYXJzZSB3aXRob3V0
IGEgY29udGV4dCBlbGVtZW50LgorICAgIGlmICghY29udGV4dEVsZW1lbnQpIHsKKyAgICAgICAg
ZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorI2VuZGlm
CisKICAgICBib29sIHdhc1ZhbGlkID0gZnJhZ21lbnQtPnBhcnNlWE1MKG1hcmt1cCwgY29udGV4
dEVsZW1lbnQsIHNjcmlwdGluZ1Blcm1pc3Npb24pOwogICAgIGlmICghd2FzVmFsaWQpIHsKICAg
ICAgICAgZWMgPSBTWU5UQVhfRVJSOwpAQCAtMTA2Niw3ICsxMDc3LDcgQEAgUGFzc1JlZlB0cjxE
b2N1bWVudEZyYWdtZW50PiBjcmVhdGVDb250ZXh0dWFsRnJhZ21lbnQoY29uc3QgU3RyaW5nJiBt
YXJrdXAsIEhUTUwKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgUmVmUHRyPERvY3Vt
ZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRGb3JJbm5lck91dGVySFRNTCht
YXJrdXAsIGVsZW1lbnQsIHNjcmlwdGluZ1Blcm1pc3Npb24sIGVjKTsKKyAgICBSZWZQdHI8RG9j
dW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEZvcklubmVyT3V0ZXJIVE1M
KG1hcmt1cCwgZWxlbWVudC0+ZG9jdW1lbnQoKSwgZWxlbWVudCwgc2NyaXB0aW5nUGVybWlzc2lv
biwgZWMpOwogICAgIGlmICghZnJhZ21lbnQpCiAgICAgICAgIHJldHVybiAwOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5oIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9tYXJrdXAuaAppbmRleCBjYTIwYzlhY2Y0YTg1NDAzNDlhZjE1YjRkODY3MWRlYjY2NWRi
OGM5Li4wOGZlYzhmZDA3ZDlhZWVhZDU3ZTk2MDg4MDlkYTA5ZmM1ZmZlZDg3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvbWFya3VwLmgKQEAgLTUyLDcgKzUyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
IFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGcm9tTWFya3VwKERv
Y3VtZW50KiwgY29uc3QgU3RyaW5nJiBtYXJrdXAsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgRnJh
Z21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uID0gQWxsb3dTY3JpcHRpbmdDb250ZW50KTsKICAgICBQ
YXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cFdpdGhD
b250ZXh0KERvY3VtZW50KiwgY29uc3QgU3RyaW5nJiBtYXJrdXAsIHVuc2lnbmVkIGZyYWdtZW50
U3RhcnQsIHVuc2lnbmVkIGZyYWdtZW50RW5kLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEZyYWdt
ZW50U2NyaXB0aW5nUGVybWlzc2lvbik7CiAgICAgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50
PiBjcmVhdGVGcmFnbWVudEZyb21Ob2RlcyhEb2N1bWVudCosIGNvbnN0IFZlY3RvcjxOb2RlKj4m
KTsKLSAgICBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50Rm9ySW5u
ZXJPdXRlckhUTUwoY29uc3QgU3RyaW5nJiwgRWxlbWVudCosIEZyYWdtZW50U2NyaXB0aW5nUGVy
bWlzc2lvbiwgRXhjZXB0aW9uQ29kZSYpOworICAgIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVu
dD4gY3JlYXRlRnJhZ21lbnRGb3JJbm5lck91dGVySFRNTChjb25zdCBTdHJpbmcmLCBEb2N1bWVu
dCosIEVsZW1lbnQqLCBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24sIEV4Y2VwdGlvbkNvZGUm
KTsKICAgICBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50Rm9yVHJh
bnNmb3JtVG9GcmFnbWVudChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHNvdXJjZU1JTUVU
eXBlLCBEb2N1bWVudCogb3V0cHV0RG9jKTsKICAgICBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21l
bnQ+IGNyZWF0ZUNvbnRleHR1YWxGcmFnbWVudChjb25zdCBTdHJpbmcmLCBIVE1MRWxlbWVudCos
IEZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbiwgRXhjZXB0aW9uQ29kZSYpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEVsZW1lbnQuY3BwCmluZGV4IDNkNGVlOGQyOTU3NmQ3OGQ0ZjBkNjA0MWM4ZmEx
Mjg3NjA5ZmJlZjIuLjdlNDgyMWZkNzM4NGZiNTgxNDA3ZmM4ZTQ2OWJhYTdjYjZjY2E2OGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCkBAIC0zNDIsNyArMzQyLDcgQEAgU3RyaW5n
IEhUTUxFbGVtZW50OjpvdXRlckhUTUwoKSBjb25zdAogCiB2b2lkIEhUTUxFbGVtZW50OjpzZXRJ
bm5lckhUTUwoY29uc3QgU3RyaW5nJiBodG1sLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBp
ZiAoUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRGb3JJ
bm5lck91dGVySFRNTChodG1sLCB0aGlzLCBBbGxvd1NjcmlwdGluZ0NvbnRlbnQsIGVjKSkKKyAg
ICBpZiAoUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRG
b3JJbm5lck91dGVySFRNTChodG1sLCAgZG9jdW1lbnQoKSwgdGhpcywgQWxsb3dTY3JpcHRpbmdD
b250ZW50LCBlYykpCiAgICAgICAgIHJlcGxhY2VDaGlsZHJlbldpdGhGcmFnbWVudCh0aGlzLCBm
cmFnbWVudC5yZWxlYXNlKCksIGVjKTsKIH0KIApAQCAtMzczLDEwICszNzMsMTAgQEAgdm9pZCBI
VE1MRWxlbWVudDo6c2V0T3V0ZXJIVE1MKGNvbnN0IFN0cmluZyYgaHRtbCwgRXhjZXB0aW9uQ29k
ZSYgZWMpCiAgICAgUmVmUHRyPE5vZGU+IHByZXYgPSBwcmV2aW91c1NpYmxpbmcoKTsKICAgICBS
ZWZQdHI8Tm9kZT4gbmV4dCA9IG5leHRTaWJsaW5nKCk7CiAKLSAgICBSZWZQdHI8RG9jdW1lbnRG
cmFnbWVudD4gZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEZvcklubmVyT3V0ZXJIVE1MKGh0bWws
IHBhcmVudC5nZXQoKSwgQWxsb3dTY3JpcHRpbmdDb250ZW50LCBlYyk7CisgICAgUmVmUHRyPERv
Y3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRGb3JJbm5lck91dGVySFRN
TChodG1sLCBkb2N1bWVudCgpLCBwYXJlbnQuZ2V0KCksIEFsbG93U2NyaXB0aW5nQ29udGVudCwg
ZWMpOwogICAgIGlmIChlYykKICAgICAgICAgcmV0dXJuOwotICAgICAgCisKICAgICBwYXJlbnQt
PnJlcGxhY2VDaGlsZChmcmFnbWVudC5yZWxlYXNlKCksIHRoaXMsIGVjKTsKICAgICBSZWZQdHI8
Tm9kZT4gbm9kZSA9IG5leHQgPyBuZXh0LT5wcmV2aW91c1NpYmxpbmcoKSA6IDA7CiAgICAgaWYg
KCFlYyAmJiBub2RlICYmIG5vZGUtPmlzVGV4dE5vZGUoKSkKQEAgLTU3OCw3ICs1NzgsNyBAQCB2
b2lkIEhUTUxFbGVtZW50OjppbnNlcnRBZGphY2VudEhUTUwoY29uc3QgU3RyaW5nJiB3aGVyZSwg
Y29uc3QgU3RyaW5nJiBtYXJrdXAsCiAgICAgRWxlbWVudCogY29udGV4dEVsZW1lbnQgPSBjb250
ZXh0RWxlbWVudEZvckluc2VydGlvbih3aGVyZSwgdGhpcywgZWMpOwogICAgIGlmICghY29udGV4
dEVsZW1lbnQpCiAgICAgICAgIHJldHVybjsKLSAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4g
ZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEZvcklubmVyT3V0ZXJIVE1MKG1hcmt1cCwgdGhpcywg
QWxsb3dTY3JpcHRpbmdDb250ZW50LCBlYyk7CisgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+
IGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRGb3JJbm5lck91dGVySFRNTChtYXJrdXAsIGRvY3Vt
ZW50KCksIHRoaXMsIEFsbG93U2NyaXB0aW5nQ29udGVudCwgZWMpOwogICAgIGlmICghZnJhZ21l
bnQpCiAgICAgICAgIHJldHVybjsKICAgICBpbnNlcnRBZGphY2VudCh3aGVyZSwgZnJhZ21lbnQu
Z2V0KCksIGVjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxE
b2N1bWVudFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1l
bnRQYXJzZXIuY3BwCmluZGV4IDdhMDZiNDIzOTY5MTNkOWQ5NmQ0ZTU3MWQ1YjIzM2E5MjM3MDQy
OTUuLmUxNWM3YjUzMmNlMTE5YjNjZWU5OWYyZWE0YTk2YjQ2ODMxODc5NTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcApAQCAtNTEs
NiArNTEsMTAgQEAgbmFtZXNwYWNlIHsKIC8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93
ZWItYXBwcy9jdXJyZW50LXdvcmsvbXVsdGlwYWdlL3RoZS1lbmQuaHRtbCNmcmFnbWVudC1jYXNl
CiBIVE1MVG9rZW5pemVyU3RhdGU6OlN0YXRlIHRva2VuaXplclN0YXRlRm9yQ29udGV4dEVsZW1l
bnQoRWxlbWVudCogY29udGV4dEVsZW1lbnQsIGJvb2wgcmVwb3J0RXJyb3JzKQogeworI2lmICFF
TkFCTEUoSU1QTElFRF9DT05URVhUX1BBUlNJTkcpCisgICAgQVNTRVJUKGNvbnRleHRFbGVtZW50
KTsKKyNlbmRpZgorCiAgICAgaWYgKCFjb250ZXh0RWxlbWVudCkKICAgICAgICAgcmV0dXJuIEhU
TUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcAppbmRleCA3NTlkMjNiMWYzMjc0NDIwZGY0MzQwYjlk
MmI3ZGZhOTc1MTNkMTk0Li5jYTAwNDJmYTI4NDM1NTcxOWY1MDEyMmNiNTFmNGM1M2I4ZDMzMTk1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAK
QEAgLTI0Miw2ICsyNDIsMzAgQEAgSFRNTEZvcm1FbGVtZW50KiBjbG9zZXN0Rm9ybUFuY2VzdG9y
KEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgcmV0dXJuIDA7CiB9CiAKKyNpZiBFTkFCTEUoSU1QTElF
RF9DT05URVhUX1BBUlNJTkcpCisvLyBGSVhNRTogUmVmZXJlbmNlIHRvIEhUTUwgc3BlYyBkZXNj
cmliaW5nIHRoZSBmb2xsb3dpbmc6IFRoZSBpbXBsaWVkIGNvbnRleHQgZWxlbWVudCBvZgorLy8g
RG9jdW1lbnQucGFyc2UgaXMgYmFzZWQgb24gdGhlIGlkZW50aXR5IG9mIHRoZSB0YWdOYW1lIG9m
IHRoZSBmaXJzdCBzdGFydFRhZyB0b2tlbiBlbmNvdW50ZXJlZAorLy8gd2hpY2ggaXMgbm90IDxz
dHlsZT4sIDxzY3JpcHQ+LCA8bWV0YT4sIG9yIDxsaW5rPi4KKy8vIEZJWE1FOiBBZGQgc3VwcG9y
dCBmb3IgaW5mZXJyaW5nIFNWRyBhbmQgTWF0aE1MIGVsZW1lbnRzLgorY29uc3QgUXVhbGlmaWVk
TmFtZSYgaW1wbGllZENvbnRleHRUYWcoY29uc3QgQXRvbWljU3RyaW5nJiB0YWdOYW1lKQorewor
ICAgIGlmIChpc1RhYmxlQm9keUNvbnRleHRUYWcodGFnTmFtZSkgfHwgdGFnTmFtZSA9PSBjYXB0
aW9uVGFnIHx8IHRhZ05hbWUgPT0gY29sZ3JvdXBUYWcpCisgICAgICAgIHJldHVybiB0YWJsZVRh
ZzsKKyAgICBpZiAodGFnTmFtZSA9PSB0clRhZykKKyAgICAgICAgcmV0dXJuIHRib2R5VGFnOwor
ICAgIGlmICh0YWdOYW1lID09IGNvbFRhZykKKyAgICAgICAgcmV0dXJuIGNvbGdyb3VwVGFnOwor
ICAgIGlmIChpc1RhYmxlQ2VsbENvbnRleHRUYWcodGFnTmFtZSkpCisgICAgICAgIHJldHVybiB0
clRhZzsKKyAgICBpZiAodGFnTmFtZSA9PSBoZWFkVGFnIHx8IHRhZ05hbWUgPT0gYm9keVRhZykK
KyAgICAgICAgcmV0dXJuIGh0bWxUYWc7CisgICAgaWYgKHRhZ05hbWUgPT0gcnBUYWcgfHwgdGFn
TmFtZSA9PSBydFRhZykKKyAgICAgICAgcmV0dXJuIHJ1YnlUYWc7CisKKyAgICByZXR1cm4gYm9k
eVRhZzsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZQogCiBjbGFzcyBIVE1MVHJlZUJ1aWxk
ZXI6OkV4dGVybmFsQ2hhcmFjdGVyVG9rZW5CdWZmZXIgewpAQCAtMzY4LDcgKzM5Miw3IEBAIEhU
TUxUcmVlQnVpbGRlcjo6SFRNTFRyZWVCdWlsZGVyKEhUTUxEb2N1bWVudFBhcnNlciogcGFyc2Vy
LCBIVE1MRG9jdW1lbnQqIGRvY3VtCiAvLyBtaW5pbWl6ZSBjb2RlIGR1cGxpY2F0aW9uIGJldHdl
ZW4gdGhlc2UgY29uc3RydWN0b3JzLgogSFRNTFRyZWVCdWlsZGVyOjpIVE1MVHJlZUJ1aWxkZXIo
SFRNTERvY3VtZW50UGFyc2VyKiBwYXJzZXIsIERvY3VtZW50RnJhZ21lbnQqIGZyYWdtZW50LCBF
bGVtZW50KiBjb250ZXh0RWxlbWVudCwgRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uIHNjcmlw
dGluZ1Blcm1pc3Npb24sIGJvb2wgdXNlUHJlSFRNTDVQYXJzZXJRdWlya3MsIHVuc2lnbmVkIG1h
eGltdW1ET01UcmVlRGVwdGgpCiAgICAgOiBtX2ZyYW1lc2V0T2sodHJ1ZSkKLSAgICAsIG1fZnJh
Z21lbnRDb250ZXh0KGZyYWdtZW50LCBjb250ZXh0RWxlbWVudCwgc2NyaXB0aW5nUGVybWlzc2lv
bikKKyAgICAsIG1fZnJhZ21lbnRDb250ZXh0KGZyYWdtZW50LCBjb250ZXh0RWxlbWVudCA/IGNv
bnRleHRFbGVtZW50LT50YWdRTmFtZSgpIDogbnVsbFFOYW1lKCksIHNjcmlwdGluZ1Blcm1pc3Np
b24pCiAgICAgLCBtX2RvY3VtZW50KGZyYWdtZW50LT5kb2N1bWVudCgpKQogICAgICwgbV90cmVl
KGZyYWdtZW50LCBzY3JpcHRpbmdQZXJtaXNzaW9uLCBtYXhpbXVtRE9NVHJlZURlcHRoKQogICAg
ICwgbV9yZXBvcnRFcnJvcnMoZmFsc2UpIC8vIEZJWE1FOiBXaHkgbm90IHJlcG9ydCBlcnJvcnMg
aW4gZnJhZ21lbnRzPwpAQCAtMzgxLDE3ICs0MDUsMTggQEAgSFRNTFRyZWVCdWlsZGVyOjpIVE1M
VHJlZUJ1aWxkZXIoSFRNTERvY3VtZW50UGFyc2VyKiBwYXJzZXIsIERvY3VtZW50RnJhZ21lbnQq
IGYKICAgICAsIG1fbGFzdFNjcmlwdEVsZW1lbnRTdGFydFBvc2l0aW9uKFRleHRQb3NpdGlvbjo6
YmVsb3dSYW5nZVBvc2l0aW9uKCkpCiAgICAgLCBtX3VzZVByZUhUTUw1UGFyc2VyUXVpcmtzKHVz
ZVByZUhUTUw1UGFyc2VyUXVpcmtzKQogewotICAgIC8vIEZJWE1FOiBUaGlzIGFzc2VydGlvbiB3
aWxsIGJlY29tZSBpbnZhbGlkIGlmIDxodHRwOi8vd2Via2l0Lm9yZy9iLzYwMzE2PiBpcyBmaXhl
ZC4KKyNpZiAhRU5BQkxFKElNUExJRURfQ09OVEVYVF9QQVJTSU5HKQogICAgIEFTU0VSVChjb250
ZXh0RWxlbWVudCk7Ci0gICAgaWYgKGNvbnRleHRFbGVtZW50KSB7Ci0gICAgICAgIC8vIFN0ZXBz
IDQuMi00LjYgb2YgdGhlIEhUTUw1IEZyYWdtZW50IENhc2UgcGFyc2luZyBhbGdvcml0aG06Ci0g
ICAgICAgIC8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdv
cmsvbXVsdGlwYWdlL3RoZS1lbmQuaHRtbCNmcmFnbWVudC1jYXNlCi0gICAgICAgIC8vIEZvciBl
ZmZpY2llbmN5LCB3ZSBza2lwIHN0ZXAgNC4yICgiTGV0IHJvb3QgYmUgYSBuZXcgaHRtbCBlbGVt
ZW50IHdpdGggbm8gYXR0cmlidXRlcyIpCi0gICAgICAgIC8vIGFuZCBpbnN0ZWFkIHVzZSB0aGUg
RG9jdW1lbnRGcmFnbWVudCBhcyBhIHJvb3Qgbm9kZS4KLSAgICAgICAgbV90cmVlLm9wZW5FbGVt
ZW50cygpLT5wdXNoUm9vdE5vZGUoZnJhZ21lbnQpOwotICAgICAgICByZXNldEluc2VydGlvbk1v
ZGVBcHByb3ByaWF0ZWx5KCk7CisjZW5kaWYKKworICAgIC8vIFN0ZXBzIDQuMi00LjYgb2YgdGhl
IEhUTUw1IEZyYWdtZW50IENhc2UgcGFyc2luZyBhbGdvcml0aG06CisgICAgLy8gaHR0cDovL3d3
dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2UvdGhlLWVu
ZC5odG1sI2ZyYWdtZW50LWNhc2UKKyAgICAvLyBGb3IgZWZmaWNpZW5jeSwgd2Ugc2tpcCBzdGVw
IDQuMiAoIkxldCByb290IGJlIGEgbmV3IGh0bWwgZWxlbWVudCB3aXRoIG5vIGF0dHJpYnV0ZXMi
KQorICAgIC8vIGFuZCBpbnN0ZWFkIHVzZSB0aGUgRG9jdW1lbnRGcmFnbWVudCBhcyBhIHJvb3Qg
bm9kZS4KKyAgICBtX3RyZWUub3BlbkVsZW1lbnRzKCktPnB1c2hSb290Tm9kZShmcmFnbWVudCk7
CisgICAgcmVzZXRJbnNlcnRpb25Nb2RlQXBwcm9wcmlhdGVseSgpOworICAgIGlmIChjb250ZXh0
RWxlbWVudCkKICAgICAgICAgbV90cmVlLnNldEZvcm0oY2xvc2VzdEZvcm1BbmNlc3Rvcihjb250
ZXh0RWxlbWVudCkpOwotICAgIH0KIH0KIAogSFRNTFRyZWVCdWlsZGVyOjp+SFRNTFRyZWVCdWls
ZGVyKCkKQEAgLTQxMCwxNCArNDM1LDE0IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpkZXRhY2go
KQogCiBIVE1MVHJlZUJ1aWxkZXI6OkZyYWdtZW50UGFyc2luZ0NvbnRleHQ6OkZyYWdtZW50UGFy
c2luZ0NvbnRleHQoKQogICAgIDogbV9mcmFnbWVudCgwKQotICAgICwgbV9jb250ZXh0RWxlbWVu
dCgwKQorICAgICwgbV9jb250ZXh0VGFnKG51bGxRTmFtZSgpKQogICAgICwgbV9zY3JpcHRpbmdQ
ZXJtaXNzaW9uKEFsbG93U2NyaXB0aW5nQ29udGVudCkKIHsKIH0KIAotSFRNTFRyZWVCdWlsZGVy
OjpGcmFnbWVudFBhcnNpbmdDb250ZXh0OjpGcmFnbWVudFBhcnNpbmdDb250ZXh0KERvY3VtZW50
RnJhZ21lbnQqIGZyYWdtZW50LCBFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgRnJhZ21lbnRTY3Jp
cHRpbmdQZXJtaXNzaW9uIHNjcmlwdGluZ1Blcm1pc3Npb24pCitIVE1MVHJlZUJ1aWxkZXI6OkZy
YWdtZW50UGFyc2luZ0NvbnRleHQ6OkZyYWdtZW50UGFyc2luZ0NvbnRleHQoRG9jdW1lbnRGcmFn
bWVudCogZnJhZ21lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGNvbnRleHRUYWcsIEZyYWdtZW50
U2NyaXB0aW5nUGVybWlzc2lvbiBzY3JpcHRpbmdQZXJtaXNzaW9uKQogICAgIDogbV9mcmFnbWVu
dChmcmFnbWVudCkKLSAgICAsIG1fY29udGV4dEVsZW1lbnQoY29udGV4dEVsZW1lbnQpCisgICAg
LCBtX2NvbnRleHRUYWcoY29udGV4dFRhZykKICAgICAsIG1fc2NyaXB0aW5nUGVybWlzc2lvbihz
Y3JpcHRpbmdQZXJtaXNzaW9uKQogewogICAgIEFTU0VSVCghZnJhZ21lbnQtPmhhc0NoaWxkTm9k
ZXMoKSk7CkBAIC00NDcsNyArNDcyLDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OmNvbnN0cnVj
dFRyZWVGcm9tVG9rZW4oSFRNTFRva2VuJiByYXdUb2tlbikKICAgICAvLyBzeW5jaHJvbm91c2x5
IHJlLWVudGVycyB0aGUgcGFyc2VyLiBXZSBkb24ndCBjbGVhciB0aGUgdG9rZW4gaW1tZWRhdGVs
eQogICAgIC8vIGZvciBDaGFyYWN0ZXIgdG9rZW5zIGJlY2F1c2UgdGhlIEF0b21pY0hUTUxUb2tl
biBhdm9pZHMgY29weWluZyB0aGUKICAgICAvLyBjaGFyYWN0ZXJzIGJ5IGtlZXBpbmcgYSBwb2lu
dGVyIHRvIHRoZSB1bmRlcmx5aW5nIGJ1ZmZlciBpbiB0aGUKLSAgICAvLyBIVE1MVG9rZW4uIEZv
cnR1YW50ZWx5LCBDaGFyYWN0ZXIgdG9rZW5zIGNhbid0IGNhdXNlIHVzZSB0byByZS1lbnRlcgor
ICAgIC8vIEhUTUxUb2tlbi4gRm9ydHVuYXRlbHksIENoYXJhY3RlciB0b2tlbnMgY2FuJ3QgY2F1
c2UgdXNlIHRvIHJlLWVudGVyCiAgICAgLy8gdGhlIHBhcnNlci4KICAgICAvLwogICAgIC8vIEZJ
WE1FOiBTdG9wIGNsZWFyaW5nIHRoZSByYXdUb2tlbiBvbmNlIHdlIHN0YXJ0IHJ1bm5pbmcgdGhl
IHBhcnNlciBvZmYKQEAgLTE0NTAsNiArMTQ3NSwyNiBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6
cHJvY2Vzc1N0YXJ0VGFnKEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiAgICAgY2FzZSBUZXh0TW9k
ZToKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFrOworICAgIGNh
c2UgSW1wbGllZENvbnRleHRNb2RlOgorI2lmIEVOQUJMRShJTVBMSUVEX0NPTlRFWFRfUEFSU0lO
RykKKyAgICAgICAgQVNTRVJUKGlzUGFyc2luZ0ZyYWdtZW50KCkpOworICAgICAgICBBU1NFUlQo
bV9mcmFnbWVudENvbnRleHQuY29udGV4dFRhZygpID09IG51bGxRTmFtZSgpKTsKKworICAgICAg
ICBpZiAodG9rZW4ubmFtZSgpID09IHN0eWxlVGFnCisgICAgICAgICAgICB8fCB0b2tlbi5uYW1l
KCkgPT0gc2NyaXB0VGFnCisgICAgICAgICAgICB8fCB0b2tlbi5uYW1lKCkgPT0gbWV0YVRhZwor
ICAgICAgICAgICAgfHwgdG9rZW4ubmFtZSgpID09IGxpbmtUYWcpIHsKKyAgICAgICAgICAgIHBy
b2Nlc3NTdGFydFRhZ0ZvckluSGVhZCh0b2tlbik7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKworICAgICAgICBtX2ZyYWdtZW50Q29udGV4dC5zZXRDb250ZXh0VGFnKGltcGxpZWRD
b250ZXh0VGFnKHRva2VuLm5hbWUoKSkpOworICAgICAgICByZXNldEluc2VydGlvbk1vZGVBcHBy
b3ByaWF0ZWx5KCk7CisgICAgICAgIHByb2Nlc3NTdGFydFRhZyh0b2tlbik7CisjZWxzZQorICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNlbmRpZgorICAgICAgICBicmVhazsKICAgICB9
CiB9CiAKQEAgLTE2MzcsNDYgKzE2ODIsNDkgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnJlc2V0
SW5zZXJ0aW9uTW9kZUFwcHJvcHJpYXRlbHkoKQogICAgIEhUTUxFbGVtZW50U3RhY2s6OkVsZW1l
bnRSZWNvcmQqIG5vZGVSZWNvcmQgPSBtX3RyZWUub3BlbkVsZW1lbnRzKCktPnRvcFJlY29yZCgp
OwogICAgIHdoaWxlICgxKSB7CiAgICAgICAgIENvbnRhaW5lck5vZGUqIG5vZGUgPSBub2RlUmVj
b3JkLT5ub2RlKCk7CisgICAgICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUgPSBub2Rl
ID09IG1fdHJlZS5vcGVuRWxlbWVudHMoKS0+cm9vdE5vZGUoKSA/IG1fZnJhZ21lbnRDb250ZXh0
LmNvbnRleHRUYWcoKSA6IG5vZGVSZWNvcmQtPmVsZW1lbnQoKS0+dGFnUU5hbWUoKTsKICAgICAg
ICAgaWYgKG5vZGUgPT0gbV90cmVlLm9wZW5FbGVtZW50cygpLT5yb290Tm9kZSgpKSB7CiAgICAg
ICAgICAgICBBU1NFUlQoaXNQYXJzaW5nRnJhZ21lbnQoKSk7CiAgICAgICAgICAgICBsYXN0ID0g
dHJ1ZTsKLSAgICAgICAgICAgIG5vZGUgPSBtX2ZyYWdtZW50Q29udGV4dC5jb250ZXh0RWxlbWVu
dCgpOwogICAgICAgICB9Ci0gICAgICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKHNlbGVjdFRhZykp
IHsKKyAgICAgICAgaWYgKHRhZ05hbWUubWF0Y2hlcyhzZWxlY3RUYWcpKSB7CiAgICAgICAgICAg
ICBBU1NFUlQoaXNQYXJzaW5nRnJhZ21lbnQoKSk7CiAgICAgICAgICAgICByZXR1cm4gc2V0SW5z
ZXJ0aW9uTW9kZShJblNlbGVjdE1vZGUpOwogICAgICAgICB9Ci0gICAgICAgIGlmIChub2RlLT5o
YXNUYWdOYW1lKHRkVGFnKSB8fCBub2RlLT5oYXNUYWdOYW1lKHRoVGFnKSkKKyAgICAgICAgaWYg
KHRhZ05hbWUubWF0Y2hlcyh0ZFRhZykgfHwgdGFnTmFtZS5tYXRjaGVzKHRoVGFnKSkKICAgICAg
ICAgICAgIHJldHVybiBzZXRJbnNlcnRpb25Nb2RlKEluQ2VsbE1vZGUpOwotICAgICAgICBpZiAo
bm9kZS0+aGFzVGFnTmFtZSh0clRhZykpCisgICAgICAgIGlmICh0YWdOYW1lLm1hdGNoZXModHJU
YWcpKQogICAgICAgICAgICAgcmV0dXJuIHNldEluc2VydGlvbk1vZGUoSW5Sb3dNb2RlKTsKLSAg
ICAgICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUodGJvZHlUYWcpIHx8IG5vZGUtPmhhc1RhZ05hbWUo
dGhlYWRUYWcpIHx8IG5vZGUtPmhhc1RhZ05hbWUodGZvb3RUYWcpKQorICAgICAgICBpZiAodGFn
TmFtZS5tYXRjaGVzKHRib2R5VGFnKSB8fCB0YWdOYW1lLm1hdGNoZXModGhlYWRUYWcpIHx8IHRh
Z05hbWUubWF0Y2hlcyh0Zm9vdFRhZykpCiAgICAgICAgICAgICByZXR1cm4gc2V0SW5zZXJ0aW9u
TW9kZShJblRhYmxlQm9keU1vZGUpOwotICAgICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZShjYXB0
aW9uVGFnKSkKKyAgICAgICAgaWYgKHRhZ05hbWUubWF0Y2hlcyhjYXB0aW9uVGFnKSkKICAgICAg
ICAgICAgIHJldHVybiBzZXRJbnNlcnRpb25Nb2RlKEluQ2FwdGlvbk1vZGUpOwotICAgICAgICBp
ZiAobm9kZS0+aGFzVGFnTmFtZShjb2xncm91cFRhZykpIHsKKyAgICAgICAgaWYgKHRhZ05hbWUu
bWF0Y2hlcyhjb2xncm91cFRhZykpIHsKICAgICAgICAgICAgIEFTU0VSVChpc1BhcnNpbmdGcmFn
bWVudCgpKTsKICAgICAgICAgICAgIHJldHVybiBzZXRJbnNlcnRpb25Nb2RlKEluQ29sdW1uR3Jv
dXBNb2RlKTsKICAgICAgICAgfQotICAgICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZSh0YWJsZVRh
ZykpCisgICAgICAgIGlmICh0YWdOYW1lLm1hdGNoZXModGFibGVUYWcpKQogICAgICAgICAgICAg
cmV0dXJuIHNldEluc2VydGlvbk1vZGUoSW5UYWJsZU1vZGUpOwotICAgICAgICBpZiAobm9kZS0+
aGFzVGFnTmFtZShoZWFkVGFnKSkgeworICAgICAgICBpZiAodGFnTmFtZS5tYXRjaGVzKGhlYWRU
YWcpKSB7CiAgICAgICAgICAgICBBU1NFUlQoaXNQYXJzaW5nRnJhZ21lbnQoKSk7CiAgICAgICAg
ICAgICByZXR1cm4gc2V0SW5zZXJ0aW9uTW9kZShJbkJvZHlNb2RlKTsKICAgICAgICAgfQotICAg
ICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZShib2R5VGFnKSkKKyAgICAgICAgaWYgKHRhZ05hbWUu
bWF0Y2hlcyhib2R5VGFnKSkKICAgICAgICAgICAgIHJldHVybiBzZXRJbnNlcnRpb25Nb2RlKElu
Qm9keU1vZGUpOwotICAgICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZShmcmFtZXNldFRhZykpIHsK
KyAgICAgICAgaWYgKHRhZ05hbWUubWF0Y2hlcyhmcmFtZXNldFRhZykpIHsKICAgICAgICAgICAg
IEFTU0VSVChpc1BhcnNpbmdGcmFnbWVudCgpKTsKICAgICAgICAgICAgIHJldHVybiBzZXRJbnNl
cnRpb25Nb2RlKEluRnJhbWVzZXRNb2RlKTsKICAgICAgICAgfQotICAgICAgICBpZiAobm9kZS0+
aGFzVGFnTmFtZShodG1sVGFnKSkgeworICAgICAgICBpZiAodGFnTmFtZS5tYXRjaGVzKGh0bWxU
YWcpKSB7CiAgICAgICAgICAgICBBU1NFUlQoaXNQYXJzaW5nRnJhZ21lbnQoKSk7CiAgICAgICAg
ICAgICByZXR1cm4gc2V0SW5zZXJ0aW9uTW9kZShCZWZvcmVIZWFkTW9kZSk7CiAgICAgICAgIH0K
ICAgICAgICAgaWYgKGxhc3QpIHsKICAgICAgICAgICAgIEFTU0VSVChpc1BhcnNpbmdGcmFnbWVu
dCgpKTsKLSAgICAgICAgICAgIHJldHVybiBzZXRJbnNlcnRpb25Nb2RlKEluQm9keU1vZGUpOwor
I2lmICFFTkFCTEUoSU1QTElFRF9DT05URVhUX1BBUlNJTkcpCisgICAgICAgICAgICBBU1NFUlQo
dGFnTmFtZSAhPSBudWxsUU5hbWUoKSk7CisjZW5kaWYKKyAgICAgICAgICAgIHJldHVybiBzZXRJ
bnNlcnRpb25Nb2RlKHRhZ05hbWUgPT0gbnVsbFFOYW1lKCkgPyBJbXBsaWVkQ29udGV4dE1vZGUg
OiBJbkJvZHlNb2RlKTsKICAgICAgICAgfQogICAgICAgICBub2RlUmVjb3JkID0gbm9kZVJlY29y
ZC0+bmV4dCgpOwogICAgIH0KQEAgLTIyMjUsNiArMjI3MywxMyBAQCB2b2lkIEhUTUxUcmVlQnVp
bGRlcjo6cHJvY2Vzc0VuZFRhZyhBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogICAgICAgICBkZWZh
dWx0Rm9ySW5UYWJsZVRleHQoKTsKICAgICAgICAgcHJvY2Vzc0VuZFRhZyh0b2tlbik7CiAgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgSW1wbGllZENvbnRleHRNb2RlOgorI2lmIEVOQUJMRShJTVBM
SUVEX0NPTlRFWFRfUEFSU0lORykKKyAgICAgICAgcGFyc2VFcnJvcih0b2tlbik7CisjZWxzZQor
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNlbmRpZgorICAgICAgICBicmVhazsKICAg
ICB9CiB9CiAKQEAgLTIyMzQsNyArMjI4OSwxMSBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJv
Y2Vzc0NvbW1lbnQoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKICAgICBpZiAobV9pbnNlcnRpb25N
b2RlID09IEluaXRpYWxNb2RlCiAgICAgICAgIHx8IG1faW5zZXJ0aW9uTW9kZSA9PSBCZWZvcmVI
VE1MTW9kZQogICAgICAgICB8fCBtX2luc2VydGlvbk1vZGUgPT0gQWZ0ZXJBZnRlckJvZHlNb2Rl
CisgICAgICAgIHx8IG1faW5zZXJ0aW9uTW9kZSA9PSBJbXBsaWVkQ29udGV4dE1vZGUKICAgICAg
ICAgfHwgbV9pbnNlcnRpb25Nb2RlID09IEFmdGVyQWZ0ZXJGcmFtZXNldE1vZGUpIHsKKyNpZiAh
RU5BQkxFKElNUExJRURfQ09OVEVYVF9QQVJTSU5HKQorICAgICAgICBBU1NFUlQobV9pbnNlcnRp
b25Nb2RlICE9IEltcGxpZWRDb250ZXh0TW9kZSk7CisjZW5kaWYKICAgICAgICAgbV90cmVlLmlu
c2VydENvbW1lbnRPbkRvY3VtZW50KHRva2VuKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAg
LTIzMjUsOCArMjM4NCwxMiBAQCBSZXByb2Nlc3NCdWZmZXI6CiAgICAgfQogICAgIGNhc2UgSW5C
b2R5TW9kZToKICAgICBjYXNlIEluQ2FwdGlvbk1vZGU6CisgICAgY2FzZSBJbXBsaWVkQ29udGV4
dE1vZGU6CiAgICAgY2FzZSBJbkNlbGxNb2RlOiB7Ci0gICAgICAgIEFTU0VSVChpbnNlcnRpb25N
b2RlKCkgPT0gSW5Cb2R5TW9kZSB8fCBpbnNlcnRpb25Nb2RlKCkgPT0gSW5DYXB0aW9uTW9kZSB8
fCBpbnNlcnRpb25Nb2RlKCkgPT0gSW5DZWxsTW9kZSk7CisjaWYgIUVOQUJMRShJTVBMSUVEX0NP
TlRFWFRfUEFSU0lORykKKyAgICAgICAgQVNTRVJUKGluc2VydGlvbk1vZGUoKSAhPSBJbXBsaWVk
Q29udGV4dE1vZGUpCisjZW5kaWYKKyAgICAgICAgQVNTRVJUKGluc2VydGlvbk1vZGUoKSA9PSBJ
bkJvZHlNb2RlIHx8IGluc2VydGlvbk1vZGUoKSA9PSBJbkNhcHRpb25Nb2RlIHx8IGluc2VydGlv
bk1vZGUoKSA9PSBJbkNlbGxNb2RlIHx8IGluc2VydGlvbk1vZGUoKSA9PSBJbXBsaWVkQ29udGV4
dE1vZGUpOwogICAgICAgICBwcm9jZXNzQ2hhcmFjdGVyQnVmZmVyRm9ySW5Cb2R5KGJ1ZmZlcik7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTI0NjAsOCArMjUyMywxMiBAQCB2b2lkIEhUTUxU
cmVlQnVpbGRlcjo6cHJvY2Vzc0VuZE9mRmlsZShBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogICAg
IGNhc2UgSW5Cb2R5TW9kZToKICAgICBjYXNlIEluQ2VsbE1vZGU6CiAgICAgY2FzZSBJbkNhcHRp
b25Nb2RlOgorICAgIGNhc2UgSW1wbGllZENvbnRleHRNb2RlOgogICAgIGNhc2UgSW5Sb3dNb2Rl
OgotICAgICAgICBBU1NFUlQoaW5zZXJ0aW9uTW9kZSgpID09IEluQm9keU1vZGUgfHwgaW5zZXJ0
aW9uTW9kZSgpID09IEluQ2VsbE1vZGUgfHwgaW5zZXJ0aW9uTW9kZSgpID09IEluQ2FwdGlvbk1v
ZGUgfHwgaW5zZXJ0aW9uTW9kZSgpID09IEluUm93TW9kZSk7CisjaWYgIUVOQUJMRShJTVBMSUVE
X0NPTlRFWFRfUEFSU0lORykKKyAgICAgICAgQVNTRVJUKGluc2VydGlvbk1vZGUoKSAhPSBJbXBs
aWVkQ29udGV4dE1vZGUpOworI2VuZGlmCisgICAgICAgIEFTU0VSVChpbnNlcnRpb25Nb2RlKCkg
PT0gSW5Cb2R5TW9kZSB8fCBpbnNlcnRpb25Nb2RlKCkgPT0gSW5DZWxsTW9kZSB8fCBpbnNlcnRp
b25Nb2RlKCkgPT0gSW5DYXB0aW9uTW9kZSB8fCBpbnNlcnRpb25Nb2RlKCkgPT0gSW5Sb3dNb2Rl
IHx8IGluc2VydGlvbk1vZGUoKSA9PSBJbXBsaWVkQ29udGV4dE1vZGUpOwogICAgICAgICBub3RJ
bXBsZW1lbnRlZCgpOyAvLyBFbWl0IHBhcnNlIGVycm9yIGJhc2VkIG9uIHdoYXQgZWxlbWVudHMg
YXJlIHN0aWxsIG9wZW4uCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQWZ0ZXJCb2R5TW9kZToK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmgKaW5kZXggMTli
YmU5NTE5ZmZiZjVhNzY1ZmZiZTRjMzRkNzU4YmFiZmIzZGEzNC4uYTk4ZTM0Mjg1ZWUxOWI3Y2Nj
ZTEwYzVkOGRlZWY3NWU1MmQ0ZDZjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTFRyZWVCdWlsZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTFRyZWVCdWlsZGVyLmgKQEAgLTUwLDYgKzUwLDcgQEAgY2xhc3MgRG9jdW1lbnRGcmFnbWVu
dDsKIGNsYXNzIEZyYW1lOwogY2xhc3MgSFRNTFRva2VuOwogY2xhc3MgSFRNTERvY3VtZW50Owor
Y2xhc3MgUXVhbGlmaWVkTmFtZTsKIGNsYXNzIE5vZGU7CiBjbGFzcyBIVE1MRG9jdW1lbnRQYXJz
ZXI7CiAKQEAgLTk5LDYgKzEwMCw3IEBAIHByaXZhdGU6CiAgICAgICAgIEluSGVhZE1vZGUsCiAg
ICAgICAgIEluSGVhZE5vc2NyaXB0TW9kZSwKICAgICAgICAgQWZ0ZXJIZWFkTW9kZSwKKyAgICAg
ICAgSW1wbGllZENvbnRleHRNb2RlLAogICAgICAgICBJbkJvZHlNb2RlLAogICAgICAgICBUZXh0
TW9kZSwKICAgICAgICAgSW5UYWJsZU1vZGUsCkBAIC0xOTUsMTYgKzE5NywxNyBAQCBwcml2YXRl
OgogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShGcmFnbWVudFBhcnNpbmdDb250ZXh0KTsK
ICAgICBwdWJsaWM6CiAgICAgICAgIEZyYWdtZW50UGFyc2luZ0NvbnRleHQoKTsKLSAgICAgICAg
RnJhZ21lbnRQYXJzaW5nQ29udGV4dChEb2N1bWVudEZyYWdtZW50KiwgRWxlbWVudCogY29udGV4
dEVsZW1lbnQsIEZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbik7CisgICAgICAgIEZyYWdtZW50
UGFyc2luZ0NvbnRleHQoRG9jdW1lbnRGcmFnbWVudCosIGNvbnN0IFF1YWxpZmllZE5hbWUmIGNv
bnRleHRUYWcsIEZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbik7CiAgICAgICAgIH5GcmFnbWVu
dFBhcnNpbmdDb250ZXh0KCk7CiAKICAgICAgICAgRG9jdW1lbnRGcmFnbWVudCogZnJhZ21lbnQo
KSBjb25zdCB7IHJldHVybiBtX2ZyYWdtZW50OyB9Ci0gICAgICAgIEVsZW1lbnQqIGNvbnRleHRF
bGVtZW50KCkgY29uc3QgeyBBU1NFUlQobV9mcmFnbWVudCk7IHJldHVybiBtX2NvbnRleHRFbGVt
ZW50OyB9CisgICAgICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIGNvbnRleHRUYWcoKSBjb25zdCB7
IHJldHVybiBtX2NvbnRleHRUYWc7IH0KKyAgICAgICAgdm9pZCBzZXRDb250ZXh0VGFnKGNvbnN0
IFF1YWxpZmllZE5hbWUmIGNvbnRleHRUYWcpIHsgbV9jb250ZXh0VGFnID0gY29udGV4dFRhZzsg
fQogICAgICAgICBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24gc2NyaXB0aW5nUGVybWlzc2lv
bigpIGNvbnN0IHsgQVNTRVJUKG1fZnJhZ21lbnQpOyByZXR1cm4gbV9zY3JpcHRpbmdQZXJtaXNz
aW9uOyB9CiAKICAgICBwcml2YXRlOgogICAgICAgICBEb2N1bWVudEZyYWdtZW50KiBtX2ZyYWdt
ZW50OwotICAgICAgICBFbGVtZW50KiBtX2NvbnRleHRFbGVtZW50OworICAgICAgICBRdWFsaWZp
ZWROYW1lIG1fY29udGV4dFRhZzsKIAogICAgICAgICAvLyBEaXNhbGxvd1NjcmlwdGluZ0NvbnRl
bnQgY2F1c2VzIHRoZSBQYXJzZXIgdG8gcmVtb3ZlIGNoaWxkcmVuIGZyb20gPHNjcmlwdD4gdGFn
cyAoc28gamF2YXNjcmlwdCBkb2Vzbid0IHNob3cgdXAgaW4gcGFzdGVzKS4KICAgICAgICAgRnJh
Z21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uIG1fc2NyaXB0aW5nUGVybWlzc2lvbjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lwaSBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vZmVhdHVyZXMuZ3lwaQppbmRleCBmNzczY2M0YmMyN2E5OTkyNzBhYzA3MWJmYmE1
NjM3Yzg1OGJjMjMzLi5kMjgxYjlhY2E5YWM0NDA1ZTkzZmJjOGFjMmE2MzhlOGI0MzM5MmIxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpCkBAIC01OSw2ICs1OSw3IEBACiAgICAg
ICAnRU5BQkxFX0dBTUVQQUQ9MScsCiAgICAgICAnRU5BQkxFX0dFT0xPQ0FUSU9OPTEnLAogICAg
ICAgJ0VOQUJMRV9HRVNUVVJFX0VWRU5UUz0xJywKKyAgICAgICdFTkFCTEVfSU1QTElFRF9DT05U
RVhUX1BBUlNJTkc9MScsCiAgICAgICAnRU5BQkxFX0lDT05EQVRBQkFTRT0wJywKICAgICAgICdF
TkFCTEVfSUZSQU1FX1NFQU1MRVNTPTEnLAogICAgICAgJ0VOQUJMRV9JTkRFWEVEX0RBVEFCQVNF
PTEnLApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IDg1YTAxZjdiODBiNTAyMGFmN2MyMTdiYzMyNzA0YjFkMjM4Nzc2ODQuLjU1
MjA0ZjRiMjkxYWRhNmQ0OTc2MDQ5MmVmNTk2NmRmMDVhZmI2OTYgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsNSArMSwx
OSBAQAogMjAxMi0wNS0zMSAgUmFmYWVsIFdlaW5zdGVpbiAgPHJhZmFlbHdAY2hyb21pdW0ub3Jn
PgogCisgICAgICAgIEltcGxlbWVudCBEb2N1bWVudC5wYXJzZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQ2NDYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvcGFyc2VyL2RvY3VtZW50LXBhcnNl
LWVtcHR5LW51bGwtdW5kZWZpbmVkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFz
dC9wYXJzZXIvZG9jdW1lbnQtcGFyc2UtZW1wdHktbnVsbC11bmRlZmluZWQuaHRtbDogQWRkZWQu
CisgICAgICAgICogaHRtbDVsaWIvcmVzb3VyY2VzL2RvY3VtZW50LXBhcnNlLmRhdDogQWRkZWQu
CisgICAgICAgICogaHRtbDVsaWIvcmVzb3VyY2VzL3J1bm5lci5qczoKKyAgICAgICAgKiBodG1s
NWxpYi9ydW4tZG9jdW1lbnQtcGFyc2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBo
dG1sNWxpYi9ydW4tZG9jdW1lbnQtcGFyc2UuaHRtbDogQWRkZWQuCisKKzIwMTItMDUtMzEgIFJh
ZmFlbCBXZWluc3RlaW4gIDxyYWZhZWx3QGNocm9taXVtLm9yZz4KKwogICAgICAgICBVcGRhdGlu
ZyB0ZXN0IGV4cGVjdGF0aW9ucyAoc3ZnL2FzLWltYWdlL2FuaW1hdGVkLXN2Zy1hcy1pbWFnZS5o
dG1sKQogCiAgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0
OgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9wYXJzZXIvZG9jdW1lbnQtcGFyc2UtZW1w
dHktbnVsbC11bmRlZmluZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9wYXJzZXIv
ZG9jdW1lbnQtcGFyc2UtZW1wdHktbnVsbC11bmRlZmluZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjM3MWI1NDA1MGJkNTJhZjg0YmYxNDk1YTIyZmYyNzFmYTkwYTg1NDcKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3BhcnNlci9kb2N1bWVudC1wYXJzZS1lbXB0eS1udWxs
LXVuZGVmaW5lZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMiBAQAorVGVzdCBkb2N1bWVudC5w
YXJzZSgpIHdpdGggZW1wdHkgcGFyYW1ldGVyLCB1bmRlZmluZWQgJiBudWxsCisKK09uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGRvY3VtZW50LnBhcnNlKCk7IHRocmV3IGV4Y2Vw
dGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgorUEFTUyBmcmFnbWVudC5maXJz
dENoaWxkLnRleHRDb250ZW50IGlzICJ1bmRlZmluZWQiCitQQVNTIGZyYWdtZW50LmZpcnN0Q2hp
bGQudGV4dENvbnRlbnQgaXMgIm51bGwiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9wYXJzZXIv
ZG9jdW1lbnQtcGFyc2UtZW1wdHktbnVsbC11bmRlZmluZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvcGFyc2VyL2RvY3VtZW50LXBhcnNlLWVtcHR5LW51bGwtdW5kZWZpbmVkLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYjZmMzI5NDc3Y2FkMmYwNmYzYWRhOTQ0NzZmNzFhOTI0NmI0N2Q4YgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcGFyc2VyL2RvY3VtZW50LXBhcnNlLWVtcHR5LW51
bGwtdW5kZWZpbmVkLmh0bWwKQEAgLTAsMCArMSwxOCBAQAorPCFET0NUWVBFIGh0bWw+Cis8c2Ny
aXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQ+CisKK3ZhciBmcmFnbWVudDsKKworZGVzY3JpcHRpb24oJ1Rlc3QgZG9jdW1lbnQucGFyc2Uo
KSB3aXRoIGVtcHR5IHBhcmFtZXRlciwgdW5kZWZpbmVkICYgbnVsbCcpOworCitzaG91bGRUaHJv
dygiZG9jdW1lbnQucGFyc2UoKTsiKTsKKworZnJhZ21lbnQgPSBkb2N1bWVudC5wYXJzZSh1bmRl
ZmluZWQpOworc2hvdWxkQmUoJ2ZyYWdtZW50LmZpcnN0Q2hpbGQudGV4dENvbnRlbnQnLCAnInVu
ZGVmaW5lZCInKTsKKworZnJhZ21lbnQgPSBkb2N1bWVudC5wYXJzZShudWxsKTsKK3Nob3VsZEJl
KCdmcmFnbWVudC5maXJzdENoaWxkLnRleHRDb250ZW50JywgJyJudWxsIicpOworCis8L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0bWw1bGliL3Jlc291cmNlcy9kb2N1bWVudC1w
YXJzZS5kYXQgYi9MYXlvdXRUZXN0cy9odG1sNWxpYi9yZXNvdXJjZXMvZG9jdW1lbnQtcGFyc2Uu
ZGF0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjcyZjA2NTUzNTdmODExYWI2ZmM3OWY3NTE0NmZmOGI0NmYzNDBjNzkK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odG1sNWxpYi9yZXNvdXJjZXMvZG9jdW1l
bnQtcGFyc2UuZGF0CkBAIC0wLDAgKzEsMTQwIEBACisjZGF0YQorSGVsbG8KKyNlcnJvcnMKKyNk
b2N1bWVudC1mcmFnbWVudAorI2RvY3VtZW50Cit8ICJIZWxsbyIKKworI2RhdGEKKzwvZGl2Pkhl
bGxvCisjZXJyb3JzCisjZG9jdW1lbnQtZnJhZ21lbnQKKyNkb2N1bWVudAorfCAiSGVsbG8iCisK
KyNkYXRhCis8ZGl2PjxzcGFuPgorI2Vycm9ycworI2RvY3VtZW50LWZyYWdtZW50CisjZG9jdW1l
bnQKK3wgPGRpdj4KK3wgICA8c3Bhbj4KKworI2RhdGEKK0hlbGxvPGRpdj48c3Bhbj4KKyNlcnJv
cnMKKyNkb2N1bWVudC1mcmFnbWVudAorI2RvY3VtZW50Cit8ICJIZWxsbyIKK3wgPGRpdj4KK3wg
ICA8c3Bhbj4KKworI2RhdGEKKzwhRE9DVFlQRSBodG1sPjxkaXY+PHNwYW4+CisjZXJyb3JzCisj
ZG9jdW1lbnQtZnJhZ21lbnQKKyNkb2N1bWVudAorfCA8ZGl2PgorfCAgIDxzcGFuPgorCisjZGF0
YQorPG9wdGlvbj5IZWxsbworI2Vycm9ycworI2RvY3VtZW50LWZyYWdtZW50CisjZG9jdW1lbnQK
K3wgPG9wdGlvbj4KK3wgICAiSGVsbG8iCisKKyNkYXRhCitIZWxsbzxvcHRpb24+R29vZGJ5ZTxv
cHRpb24+V29ybGQKKyNlcnJvcnMKKyNkb2N1bWVudC1mcmFnbWVudAorI2RvY3VtZW50Cit8ICJI
ZWxsbyIKK3wgPG9wdGlvbj4KK3wgICAiR29vZGJ5ZSIKK3wgPG9wdGlvbj4KK3wgICAiV29ybGQi
CisKKyNkYXRhCis8dGQ+CisjZXJyb3JzCisjZG9jdW1lbnQtZnJhZ21lbnQKKyNkb2N1bWVudAor
fCA8dGQ+CisKKyNkYXRhCis8L3RkPkhlbGxvPHRkPkdvb2RieWUKKyNlcnJvcnMKKyNkb2N1bWVu
dC1mcmFnbWVudAorI2RvY3VtZW50Cit8ICJIZWxsbyIKK3wgPHRkPgorfCAgICJHb29kYnllIgor
CisjZGF0YQorPHRoZWFkPgorI2Vycm9ycworI2RvY3VtZW50LWZyYWdtZW50CisjZG9jdW1lbnQK
K3wgPHRoZWFkPgorCisjZGF0YQorPHRyPgorI2Vycm9ycworI2RvY3VtZW50LWZyYWdtZW50Cisj
ZG9jdW1lbnQKK3wgPHRyPgorCisjZGF0YQorPHRkPgorI2Vycm9ycworI2RvY3VtZW50LWZyYWdt
ZW50CisjZG9jdW1lbnQKK3wgPHRkPgorCisjZGF0YQorPG1ldGE+PHRkPgorI2Vycm9ycworI2Rv
Y3VtZW50LWZyYWdtZW50CisjZG9jdW1lbnQKK3wgPG1ldGE+Cit8IDx0ZD4KKworI2RhdGEKKzxs
aW5rPjx0cj4KKyNlcnJvcnMKKyNkb2N1bWVudC1mcmFnbWVudAorI2RvY3VtZW50Cit8IDxsaW5r
PgorfCA8dHI+CisKKyNkYXRhCis8c3R5bGU+aDEgeyBiYWNrZ3JvdW5kLWNvbG9yOiBibHVlO308
L3N0eWxlPjx0aGVhZD4KKyNlcnJvcnMKKyNkb2N1bWVudC1mcmFnbWVudAorI2RvY3VtZW50Cit8
IDxzdHlsZT4KK3wgICAiaDEgeyBiYWNrZ3JvdW5kLWNvbG9yOiBibHVlO30iCit8IDx0aGVhZD4K
KworI2RhdGEKKzxzY3JpcHQ+dmFyIGZvbyA9ICJiYXIiOzwvc2NyaXB0PjxvcHRpb24+CisjZXJy
b3JzCisjZG9jdW1lbnQtZnJhZ21lbnQKKyNkb2N1bWVudAorfCA8c2NyaXB0PgorfCAgICJ2YXIg
Zm9vID0gImJhciI7IgorfCA8b3B0aW9uPgorCisjZGF0YQorcGFyc2UgYXMgdGV4dDxzY3JpcHQ+
cGFyc2UgYXMgPHNwYW4+c2NyaXB0PC9zcGFuPjwvc2NyaXB0Pjx0cj48dGQ+dGFibGUgY29udGVu
dDwvdGQ+PC90cj4KKyNlcnJvcnMKKyNkb2N1bWVudC1mcmFnbWVudAorI2RvY3VtZW50Cit8ICJw
YXJzZSBhcyB0ZXh0IgorfCA8c2NyaXB0PgorfCAgICJwYXJzZSBhcyA8c3Bhbj5zY3JpcHQ8L3Nw
YW4+IgorfCA8dHI+Cit8ICAgPHRkPgorfCAgICAgInRhYmxlIGNvbnRlbnQiClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHRtbDVsaWIvcmVzb3Vy
Y2VzL3J1bm5lci5qcyBiL0xheW91dFRlc3RzL2h0bWw1bGliL3Jlc291cmNlcy9ydW5uZXIuanMK
aW5kZXggNDBhMWMwZWZiNDk2NmJiMWFiYjg5ODRhOTJjNDg2NDMwNDY1MThmNC4uYzg1NTVlMWI1
Y2Y4MjgwZjcyYmFlYTU3NDJkZGQ3ZmQ5M2M3YmJjYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aHRtbDVsaWIvcmVzb3VyY2VzL3J1bm5lci5qcworKysgYi9MYXlvdXRUZXN0cy9odG1sNWxpYi9y
ZXNvdXJjZXMvcnVubmVyLmpzCkBAIC04NCw3ICs4NCw3IEBAIGZ1bmN0aW9uIHJ1bigpCiAKIGZ1
bmN0aW9uIHRlc3QoKQogewotICAgIHZhciBpbnB1dCwgZXJyb3JzU3RhcnQsIGZyYWdtZW50U3Rh
cnQsIGNvbnRleHRFbGVtZW50LCBkb21TdGFydCwgZG9tOworICAgIHZhciBpbnB1dCwgZXJyb3Jz
U3RhcnQsIGZyYWdtZW50LCBmcmFnbWVudFN0YXJ0LCBjb250ZXh0RWxlbWVudCwgZG9tU3RhcnQs
IGRvbTsKICAgICBpZiAoZGF0YSA9IHRlc3RzLnNoaWZ0KCkpCiAgICAgewogICAgICAgICBzdGF0
LmRhdGEgPSAiUnVubmluZyB0ZXN0ICIgKyB0ZXN0X251bWJlciArICIgb2YgIiArICh0ZXN0X251
bWJlciArIHRlc3RzLmxlbmd0aCkgKyAiIGluICIgKyBmaWxlOwpAQCAtOTYsNyArOTYsOCBAQCBm
dW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgIGRvbVN0YXJ0ID0gZGF0YS5pbmRleE9mKCJcbiNk
b2N1bWVudFxuIikKICAgICAgICAgICAgIGlmIChmcmFnbWVudFN0YXJ0ICE9PSAtMSkKICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0RWxlbWVudCA9IGRhdGEuc3Vic3RyaW5n
KGZyYWdtZW50U3RhcnQgKyAyMCwgZG9tU3RhcnQpOworICAgICAgICAgICAgICAgIGZyYWdtZW50
ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBjb250ZXh0RWxlbWVudCA9IGRhdGEuc3Vic3RyaW5n
KGZyYWdtZW50U3RhcnQgKyAyMCwgZG9tU3RhcnQpLnRyaW0oKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIGlmIChkb21TdGFydCAhPT0gLTEpCiAgICAgICAgICAgICB7CkBAIC0xMDUsNyAr
MTA2LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAg
ICAgICAgICBkb20gPSBkb20uc3Vic3RyaW5nKDAsIGRvbS5sZW5ndGggLSAxKTsKICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcnVuX3Rlc3QoaW5wdXQsIGNvbnRleHRFbGVtZW50
LCBkb20pOworICAgICAgICAgICAgICAgIHJ1bl90ZXN0KGlucHV0LCBmcmFnbWVudCwgY29udGV4
dEVsZW1lbnQsIGRvbSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQog
ICAgICAgICB9CkBAIC0xNDIsMTYgKzE0MywyMyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICB9CiB9
CiAKLWZ1bmN0aW9uIHJ1bl90ZXN0KGlucHV0LCBjb250ZXh0RWxlbWVudCwgZXhwZWN0ZWQpCitm
dW5jdGlvbiBydW5fdGVzdChpbnB1dCwgZnJhZ21lbnQsIGNvbnRleHRFbGVtZW50LCBleHBlY3Rl
ZCkKIHsKLSAgICBpZiAoY29udGV4dEVsZW1lbnQpCisgICAgaWYgKGZyYWdtZW50KQogICAgIHsK
LSAgICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KGNvbnRleHRFbGVt
ZW50KTsKLSAgICAgICAgdHJ5Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGVsZW1lbnQuaW5uZXJI
VE1MID0gaW5wdXQ7CisgICAgICAgIHZhciBlbGVtZW50OworICAgICAgICBpZiAoY29udGV4dEVs
ZW1lbnQpIHsKKyAgICAgICAgICAgIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KGNv
bnRleHRFbGVtZW50KTsKKyAgICAgICAgICAgIHRyeQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIGVsZW1lbnQuaW5uZXJIVE1MID0gaW5wdXQ7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBjYXRjaChlKSB7fQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdHJ5IHsKKyAg
ICAgICAgICAgICAgICBlbGVtZW50ID0gZG9jdW1lbnQucGFyc2UoaW5wdXQpOworICAgICAgICAg
ICAgfSBjYXRjaCAoZSkge30KICAgICAgICAgfQotICAgICAgICBjYXRjaChlKSB7fQogICAgICAg
ICBwcm9jZXNzX3Jlc3VsdChpbnB1dCwgZWxlbWVudCwgZXhwZWN0ZWQpOwogICAgIH0KICAgICBl
bHNlIGlmICh3cml0ZSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0bWw1bGliL3J1bi1kb2N1
bWVudC1wYXJzZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odG1sNWxpYi9ydW4tZG9jdW1l
bnQtcGFyc2UtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg2Mjg2OGIyMzY2NzJhYzdkZjZkNjZk
MmVmN2RjMWE2MDU3MDQyZWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odG1sNWxp
Yi9ydW4tZG9jdW1lbnQtcGFyc2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEgQEAKK3Jlc291cmNl
cy9kb2N1bWVudC1wYXJzZS5kYXQ6IFBBU1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0bWw1
bGliL3J1bi1kb2N1bWVudC1wYXJzZS5odG1sIGIvTGF5b3V0VGVzdHMvaHRtbDVsaWIvcnVuLWRv
Y3VtZW50LXBhcnNlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjkwNGVhNzU3Yjk4MmNkOTNjZTJkYzFkOTU0
YjEzZmVhYmFkOWNiOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0bWw1bGliL3J1
bi1kb2N1bWVudC1wYXJzZS5odG1sCkBAIC0wLDAgKzEsOCBAQAorPCFkb2N0eXBlIGh0bWw+Cis8
c2NyaXB0PgordmFyIHRlc3RfZmlsZXMgPSBbCisgICdyZXNvdXJjZXMvZG9jdW1lbnQtcGFyc2Uu
ZGF0JywKK10KKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9kdW1wLWFzLW1h
cmt1cC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3J1bm5lci5qcyI+PC9z
Y3JpcHQ+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>145640</attachid>
            <date>2012-06-04 15:30:21 -0700</date>
            <delta_ts>2012-09-13 15:03:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84646-20120604153021.patch</filename>
            <type>text/plain</type>
            <size>34324</size>
            <attacher name="Rafael Weinstein">rafaelw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5NDMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzUzNjVjODBhOTI2NTgx
YjIzNTZiY2U0MDVjZjNiZWM0NmNjYTJhOS4uZWU0MWI3OWJjMjU2NDUxMWY3YTc3ZDFlYWRlZjZh
ZDliNjIyZWI5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDEyLTA2LTA0ICBSYWZh
ZWwgV2VpbnN0ZWluICA8cmFmYWVsd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW1wbGVtZW50
IERvY3VtZW50LnBhcnNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD04NDY0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIERvY3VtZW50LnBhcnNlKCkgbm93IHBhcnNlcyBiYXNlZCBvbiBhbiAiaW1wbGllZCBj
b250ZXh0IGVsZW1lbnQiIHdoaWNoIGl0IHBpY2tzIGJhc2VkIG9uIHRoZSBuYW1lCisgICAgICAg
IG9mIHRoZSBmaXJzdCAobm9uIHN0eWxlLCBzY3JpcHQsIG1ldGEsIGxpbmspIHN0YXJ0IHRhZyB3
aGljaCBhcHBlYXJzIGluIHRoZSBwcm92aWRlZCBtYXJrdXAuCisKKyAgICAgICAgVGVzdHM6IGZh
c3QvcGFyc2VyL2RvY3VtZW50LXBhcnNlLWVtcHR5LW51bGwtdW5kZWZpbmVkLmh0bWwKKyAgICAg
ICAgICAgICAgIGh0bWw1bGliL3J1bi1kb2N1bWVudC1wYXJzZS5odG1sCisKKyAgICAgICAgKiBk
b20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudDo6cGFyc2UpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAoRG9j
dW1lbnQpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5pZGw6CisgICAgICAgICogZG9tL1F1YWxp
ZmllZE5hbWUuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpRdWFs
aWZpZWROYW1lOjppbml0KToKKyAgICAgICAgKiBkb20vUXVhbGlmaWVkTmFtZS5oOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpudWxsUU5hbWUpOgorICAgICAgICAqIGRv
bS9TaGFkb3dSb290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OnNldElubmVy
SFRNTCk6CisgICAgICAgICogZWRpdGluZy9tYXJrdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y3JlYXRlRnJhZ21lbnRGb3JJbm5lck91dGVySFRNTCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVh
dGVDb250ZXh0dWFsRnJhZ21lbnQpOgorICAgICAgICAqIGVkaXRpbmcvbWFya3VwLmg6CisgICAg
ICAgICogaHRtbC9IVE1MRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVu
dDo6c2V0SW5uZXJIVE1MKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjpzZXRPdXRl
ckhUTUwpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6Omluc2VydEFkamFjZW50SFRN
TCk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxOYW1lczo6dG9rZW5pemVyU3RhdGVGb3JDb250ZXh0RWxlbWVudCk6
CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpIVE1MVHJlZUJ1aWxk
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpGcmFnbWVudFBhcnNpbmdD
b250ZXh0OjpGcmFnbWVudFBhcnNpbmdDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxU
cmVlQnVpbGRlcjo6Y29uc3RydWN0VHJlZUZyb21Ub2tlbik6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRhZyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
VHJlZUJ1aWxkZXI6OnJlc2V0SW5zZXJ0aW9uTW9kZUFwcHJvcHJpYXRlbHkpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRW5kVGFnKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0NvbW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzQ2hhcmFjdGVyQnVmZmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZE9mRmlsZSk6CisgICAgICAgICogaHRtbC9w
YXJzZXIvSFRNTFRyZWVCdWlsZGVyLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEZy
YWdtZW50UGFyc2luZ0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVy
OjpGcmFnbWVudFBhcnNpbmdDb250ZXh0Ojpjb250ZXh0VGFnKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxUcmVlQnVpbGRlcjo6RnJhZ21lbnRQYXJzaW5nQ29udGV4dDo6c2V0Q29udGV4dFRhZyk6
CisKIDIwMTItMDYtMDQgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgTW9jayBzY3JvbGxiYXJzIGRpZmZlciBieSAxcHggaW4gRFJUIHZzLiBXS1RSCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDQxNzZmZmM3ZDMwNjVjZGY2OGQ1M2Q3NGVlOWFi
NGNkYzljYTM4NmUuLmI0ZjZhNzdmYzgzMjJhY2IyZDRhMmE1YzhjOTBjNzM2OGQ5ODkyMzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTItMDYtMDQgIFJh
ZmFlbCBXZWluc3RlaW4gIDxyYWZhZWx3QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbXBsZW1l
bnQgRG9jdW1lbnQucGFyc2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTg0NjQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBmZWF0dXJlcy5neXBpOgorCiAyMDEyLTA2LTA0ICBTaGF3biBTaW5naCAgPHNo
YXduc2luZ2hAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gQ0NEYW1hZ2VUcmFj
a2VyVGVzdC52ZXJpZnlEYW1hZ2VGb3JQZXJzcGVjdGl2ZUNsaXBwZWRMYXllciBuZWVkcyB0byBi
ZSBjbGVhbmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCAyYzk2YzFlMzQxN2FjNWU2ZmY0
NDk3YWJkMTRmYzAyMTk5ZWY2NDE0Li5lMmZjMzcxMTU3ZGMzMGM0NTRjOWRlNGMwMGIxZTBhZWI2
NmQyNmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTE2Miw2ICsxNjIsNyBAQAogI2lu
Y2x1ZGUgIlhQYXRoTlNSZXNvbHZlci5oIgogI2luY2x1ZGUgIlhQYXRoUmVzdWx0LmgiCiAjaW5j
bHVkZSAiaHRtbGVkaXRpbmcuaCIKKyNpbmNsdWRlICJtYXJrdXAuaCIKICNpbmNsdWRlIDx3dGYv
Q3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaEZ1bmN0aW9ucy5oPgogI2luY2x1ZGUg
PHd0Zi9NYWluVGhyZWFkLmg+CkBAIC04MzUsNiArODM2LDEzIEBAIFBhc3NSZWZQdHI8RG9jdW1l
bnRGcmFnbWVudD4gRG9jdW1lbnQ6OmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKQogICAgIHJldHVy
biBEb2N1bWVudEZyYWdtZW50OjpjcmVhdGUoZG9jdW1lbnQoKSk7CiB9CiAKKyNpZiBFTkFCTEUo
SU1QTElFRF9DT05URVhUX1BBUlNJTkcpCitQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IERv
Y3VtZW50OjpwYXJzZShjb25zdCBTdHJpbmcmIGh0bWwsIEV4Y2VwdGlvbkNvZGUmIGVjKQorewor
ICAgIHJldHVybiBjcmVhdGVGcmFnbWVudEZvcklubmVyT3V0ZXJIVE1MKGh0bWwsIGRvY3VtZW50
KCksIDAgLyogY29udGV4dEVsZW1lbnQgKi8sIEFsbG93U2NyaXB0aW5nQ29udGVudEFuZERvTm90
TWFya0FscmVhZHlTdGFydGVkLCBlYyk7Cit9CisjZW5kaWYKKwogUGFzc1JlZlB0cjxUZXh0PiBE
b2N1bWVudDo6Y3JlYXRlVGV4dE5vZGUoY29uc3QgU3RyaW5nJiBkYXRhKQogewogICAgIHJldHVy
biBUZXh0OjpjcmVhdGUodGhpcywgZGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDk5Yzc1
ZTk3NzJlNjI1MTRiNDA0M2RmOThhMDlkNTdmZWNlODM1MTUuLjMyZjZjZTA2Y2E4ZjYzZmNkODA1
ZTcyMjM2ZTY3YjliZWIyNDhlMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0zNTEsNiArMzUx
LDkgQEAgcHVibGljOgogICAgIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxFbGVtZW50PiBjcmVh
dGVFbGVtZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdGFnTmFtZSwgRXhjZXB0aW9uQ29kZSYpOwog
ICAgIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgp
OworI2lmIEVOQUJMRShJTVBMSUVEX0NPTlRFWFRfUEFSU0lORykKKyAgICBQYXNzUmVmUHRyPERv
Y3VtZW50RnJhZ21lbnQ+IHBhcnNlKGNvbnN0IFN0cmluZyYgaHRtbCwgRXhjZXB0aW9uQ29kZSYp
OworI2VuZGlmCiAgICAgUGFzc1JlZlB0cjxUZXh0PiBjcmVhdGVUZXh0Tm9kZShjb25zdCBTdHJp
bmcmIGRhdGEpOwogICAgIFBhc3NSZWZQdHI8Q29tbWVudD4gY3JlYXRlQ29tbWVudChjb25zdCBT
dHJpbmcmIGRhdGEpOwogICAgIFBhc3NSZWZQdHI8Q0RBVEFTZWN0aW9uPiBjcmVhdGVDREFUQVNl
Y3Rpb24oY29uc3QgU3RyaW5nJiBkYXRhLCBFeGNlcHRpb25Db2RlJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmlkbAppbmRleCBiOTIyY2E2YTA4ODM5MjQwMzA1MDYzZmUwZTkwNjE4NzdlN2ZkZDA3Li44
MmQzOWVmY2JlMTMwMGJiMDAzMmM1YTNhN2YzOGJkYTgwMmIxYTczIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5pZGwKQEAgLTM1OCw2ICszNTgsOCBAQCBtb2R1bGUgY29yZSB7CiAgICAgICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBbQ29uZGl0aW9uYWw9UEFHRV9WSVNJQklMSVRZX0FQSV0gRE9NU3RyaW5n
IHdlYmtpdFZpc2liaWxpdHlTdGF0ZTsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtDb25k
aXRpb25hbD1QQUdFX1ZJU0lCSUxJVFlfQVBJXSBib29sZWFuIHdlYmtpdEhpZGRlbjsKIAorICAg
ICAgICBbQ29uZGl0aW9uYWw9SU1QTElFRF9DT05URVhUX1BBUlNJTkddIERvY3VtZW50RnJhZ21l
bnQgcGFyc2UoaW4gRE9NU3RyaW5nIGh0bWwpCisgICAgICAgICAgICByYWlzZXMgKERPTUV4Y2Vw
dGlvbik7CiAgICAgfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1F1YWxp
ZmllZE5hbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuY3BwCmluZGV4
IGUwODU1MDcwYTdjYjMyNTM0Y2NiZjhhYjhkMDUyNjY3ZGEzMTlmMTUuLmZhYjFjMmI2YjI3MjM3
OGY2YjliMDdjODBhNjQ3ZTMwYzQ4NTYzMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9RdWFsaWZpZWROYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFt
ZS5jcHAKQEAgLTEwNCw2ICsxMDQsNyBAQCBTdHJpbmcgUXVhbGlmaWVkTmFtZTo6dG9TdHJpbmco
KSBjb25zdAogCiAvLyBHbG9iYWwgaW5pdCByb3V0aW5lcwogREVGSU5FX0dMT0JBTChRdWFsaWZp
ZWROYW1lLCBhbnlOYW1lLCBudWxsQXRvbSwgc3RhckF0b20sIHN0YXJBdG9tKQorREVGSU5FX0dM
T0JBTChRdWFsaWZpZWROYW1lLCBudWxsTmFtZSwgbnVsbEF0b20sIG51bGxBdG9tLCBudWxsQXRv
bSkKIAogdm9pZCBRdWFsaWZpZWROYW1lOjppbml0KCkKIHsKQEAgLTExMyw2ICsxMTQsNyBAQCB2
b2lkIFF1YWxpZmllZE5hbWU6OmluaXQoKQogICAgICAgICAKICAgICAgICAgQXRvbWljU3RyaW5n
Ojppbml0KCk7CiAgICAgICAgIG5ldyAoKHZvaWQqKSZhbnlOYW1lKSBRdWFsaWZpZWROYW1lKG51
bGxBdG9tLCBzdGFyQXRvbSwgc3RhckF0b20pOworICAgICAgICBuZXcgKCh2b2lkKikmbnVsbE5h
bWUpIFF1YWxpZmllZE5hbWUobnVsbEF0b20sIG51bGxBdG9tLCBudWxsQXRvbSk7CiAgICAgICAg
IGluaXRpYWxpemVkID0gdHJ1ZTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vUXVhbGlmaWVkTmFtZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUu
aAppbmRleCA2MzZiMmE1MTUwYzllOTg3YzAyN2U3NTY5NzkyZDliYWMzNGE4OWU5Li45ZWZiODgx
MjczNjk3NmUxYzU0Mzg5YTAzN2UyMWMwOGE5ZmQ3N2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vUXVhbGlmaWVkTmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9RdWFsaWZp
ZWROYW1lLmgKQEAgLTEwNSw2ICsxMDUsOCBAQCBwcml2YXRlOgogI2lmbmRlZiBXRUJDT1JFX1FV
QUxJRklFRE5BTUVfSElERV9HTE9CQUxTCiBleHRlcm4gY29uc3QgUXVhbGlmaWVkTmFtZSBhbnlO
YW1lOwogaW5saW5lIGNvbnN0IFF1YWxpZmllZE5hbWUmIGFueVFOYW1lKCkgeyByZXR1cm4gYW55
TmFtZTsgfQorZXh0ZXJuIGNvbnN0IFF1YWxpZmllZE5hbWUgbnVsbE5hbWU7CitpbmxpbmUgY29u
c3QgUXVhbGlmaWVkTmFtZSYgbnVsbFFOYW1lKCkgeyByZXR1cm4gbnVsbE5hbWU7IH0KICNlbmRp
ZgogCiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEF0b21pY1N0cmluZyYgYSwgY29uc3Qg
UXVhbGlmaWVkTmFtZSYgcSkgeyByZXR1cm4gYSA9PSBxLmxvY2FsTmFtZSgpOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vU2hhZG93Um9vdC5jcHAKaW5kZXggNjcyM2EwZjZkZDMwOTVkZDE2ZTk1MzM3YTliYmMyYWI5
MDU2OGIxYy4uMGVlZGM5M2NhMzZmYjQ5ZWViZWU5ZTBlNGQ0NDdkYzMwNTA0ZjJiNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9TaGFkb3dSb290LmNwcApAQCAtMTQ0LDcgKzE0NCw3IEBAIFN0cmluZyBTaGFkb3dS
b290Ojppbm5lckhUTUwoKSBjb25zdAogCiB2b2lkIFNoYWRvd1Jvb3Q6OnNldElubmVySFRNTChj
b25zdCBTdHJpbmcmIG1hcmt1cCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgaWYgKFJlZlB0
cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50Rm9ySW5uZXJPdXRl
ckhUTUwobWFya3VwLCBob3N0KCksIEFsbG93U2NyaXB0aW5nQ29udGVudCwgZWMpKQorICAgIGlm
IChSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEZvcklu
bmVyT3V0ZXJIVE1MKG1hcmt1cCwgZG9jdW1lbnQoKSwgaG9zdCgpLCBBbGxvd1NjcmlwdGluZ0Nv
bnRlbnQsIGVjKSkKICAgICAgICAgcmVwbGFjZUNoaWxkcmVuV2l0aEZyYWdtZW50KHRoaXMsIGZy
YWdtZW50LnJlbGVhc2UoKSwgZWMpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL21hcmt1cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKaW5k
ZXggOWFlN2U3MmMyZjI2ZTk3NDBhZDRhNWYwY2IyNGIxOTk0NDhkODA3MS4uZWUyMjMzYWJlZmUz
N2I4NGZmYzMxNWQ0Mzc4ZmM0NDYxNmQ4NTM2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9tYXJrdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNw
cApAQCAtOTk0LDE2ICs5OTQsMjcgQEAgU3RyaW5nIHVybFRvTWFya3VwKGNvbnN0IEtVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiB0aXRsZSkKICAgICByZXR1cm4gbWFya3VwLnRvU3RyaW5nKCk7CiB9
CiAKLVBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGb3JJbm5lck91
dGVySFRNTChjb25zdCBTdHJpbmcmIG1hcmt1cCwgRWxlbWVudCogY29udGV4dEVsZW1lbnQsIEZy
YWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbiBzY3JpcHRpbmdQZXJtaXNzaW9uLCBFeGNlcHRpb25D
b2RlJiBlYykKK1Bhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGb3JJ
bm5lck91dGVySFRNTChjb25zdCBTdHJpbmcmIG1hcmt1cCwgRG9jdW1lbnQqIGRvY3VtZW50LCBF
bGVtZW50KiBjb250ZXh0RWxlbWVudCwgRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uIHNjcmlw
dGluZ1Blcm1pc3Npb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIERvY3VtZW50KiBkb2N1
bWVudCA9IGNvbnRleHRFbGVtZW50LT5kb2N1bWVudCgpOwogICAgIFJlZlB0cjxEb2N1bWVudEZy
YWdtZW50PiBmcmFnbWVudCA9IERvY3VtZW50RnJhZ21lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CiAK
KyNpZiAhRU5BQkxFKElNUExJRURfQ09OVEVYVF9QQVJTSU5HKQorICAgIEFTU0VSVChjb250ZXh0
RWxlbWVudCk7CisjZW5kaWYKKwogICAgIGlmIChkb2N1bWVudC0+aXNIVE1MRG9jdW1lbnQoKSkg
ewogICAgICAgICBmcmFnbWVudC0+cGFyc2VIVE1MKG1hcmt1cCwgY29udGV4dEVsZW1lbnQsIHNj
cmlwdGluZ1Blcm1pc3Npb24pOwogICAgICAgICByZXR1cm4gZnJhZ21lbnQ7CiAgICAgfQogCisj
aWYgRU5BQkxFKElNUExJRURfQ09OVEVYVF9QQVJTSU5HKQorICAgIC8vIEZJWE1FOiBYTUwgaGFz
IG5vdCBkZWZpbmVkIHdoYXQgaXQgbWVhbnMgdG8gcGFyc2Ugd2l0aG91dCBhIGNvbnRleHQgZWxl
bWVudC4KKyAgICBpZiAoIWNvbnRleHRFbGVtZW50KSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9T
VEFURV9FUlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyNlbmRpZgorCiAgICAgYm9vbCB3
YXNWYWxpZCA9IGZyYWdtZW50LT5wYXJzZVhNTChtYXJrdXAsIGNvbnRleHRFbGVtZW50LCBzY3Jp
cHRpbmdQZXJtaXNzaW9uKTsKICAgICBpZiAoIXdhc1ZhbGlkKSB7CiAgICAgICAgIGVjID0gU1lO
VEFYX0VSUjsKQEAgLTEwNjYsNyArMTA3Nyw3IEBAIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVu
dD4gY3JlYXRlQ29udGV4dHVhbEZyYWdtZW50KGNvbnN0IFN0cmluZyYgbWFya3VwLCBIVE1MCiAg
ICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBm
cmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50Rm9ySW5uZXJPdXRlckhUTUwobWFya3VwLCBlbGVtZW50
LCBzY3JpcHRpbmdQZXJtaXNzaW9uLCBlYyk7CisgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+
IGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRGb3JJbm5lck91dGVySFRNTChtYXJrdXAsIGVsZW1l
bnQtPmRvY3VtZW50KCksIGVsZW1lbnQsIHNjcmlwdGluZ1Blcm1pc3Npb24sIGVjKTsKICAgICBp
ZiAoIWZyYWdtZW50KQogICAgICAgICByZXR1cm4gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9tYXJrdXAuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmgK
aW5kZXggY2EyMGM5YWNmNGE4NTQwMzQ5YWYxNWI0ZDg2NzFkZWI2NjVkYjhjOS4uMDhmZWM4ZmQw
N2Q5YWVlYWQ1N2U5NjA4ODA5ZGEwOWZjNWZmZWQ4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9tYXJrdXAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5o
CkBAIC01Miw3ICs1Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBQYXNzUmVmUHRyPERv
Y3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cChEb2N1bWVudCosIGNvbnN0
IFN0cmluZyYgbWFya3VwLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEZyYWdtZW50U2NyaXB0aW5n
UGVybWlzc2lvbiA9IEFsbG93U2NyaXB0aW5nQ29udGVudCk7CiAgICAgUGFzc1JlZlB0cjxEb2N1
bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZyb21NYXJrdXBXaXRoQ29udGV4dChEb2N1bWVu
dCosIGNvbnN0IFN0cmluZyYgbWFya3VwLCB1bnNpZ25lZCBmcmFnbWVudFN0YXJ0LCB1bnNpZ25l
ZCBmcmFnbWVudEVuZCwgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBGcmFnbWVudFNjcmlwdGluZ1Bl
cm1pc3Npb24pOwogICAgIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21l
bnRGcm9tTm9kZXMoRG9jdW1lbnQqLCBjb25zdCBWZWN0b3I8Tm9kZSo+Jik7Ci0gICAgUGFzc1Jl
ZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZvcklubmVyT3V0ZXJIVE1MKGNv
bnN0IFN0cmluZyYsIEVsZW1lbnQqLCBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24sIEV4Y2Vw
dGlvbkNvZGUmKTsKKyAgICBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdt
ZW50Rm9ySW5uZXJPdXRlckhUTUwoY29uc3QgU3RyaW5nJiwgRG9jdW1lbnQqLCBFbGVtZW50Kiwg
RnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uLCBFeGNlcHRpb25Db2RlJik7CiAgICAgUGFzc1Jl
ZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZvclRyYW5zZm9ybVRvRnJhZ21l
bnQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBzb3VyY2VNSU1FVHlwZSwgRG9jdW1lbnQq
IG91dHB1dERvYyk7CiAgICAgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVDb250
ZXh0dWFsRnJhZ21lbnQoY29uc3QgU3RyaW5nJiwgSFRNTEVsZW1lbnQqLCBGcmFnbWVudFNjcmlw
dGluZ1Blcm1pc3Npb24sIEV4Y2VwdGlvbkNvZGUmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVt
ZW50LmNwcAppbmRleCAzZDRlZThkMjk1NzZkNzhkNGYwZDYwNDFjOGZhMTI4NzYwOWZiZWYyLi43
ZTQ4MjFmZDczODRmYjU4MTQwN2ZjOGU0NjliYWE3Y2I2Y2NhNjhjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxFbGVtZW50LmNwcApAQCAtMzQyLDcgKzM0Miw3IEBAIFN0cmluZyBIVE1MRWxlbWVudDo6
b3V0ZXJIVE1MKCkgY29uc3QKIAogdm9pZCBIVE1MRWxlbWVudDo6c2V0SW5uZXJIVE1MKGNvbnN0
IFN0cmluZyYgaHRtbCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgaWYgKFJlZlB0cjxEb2N1
bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50Rm9ySW5uZXJPdXRlckhUTUwo
aHRtbCwgdGhpcywgQWxsb3dTY3JpcHRpbmdDb250ZW50LCBlYykpCisgICAgaWYgKFJlZlB0cjxE
b2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50Rm9ySW5uZXJPdXRlckhU
TUwoaHRtbCwgIGRvY3VtZW50KCksIHRoaXMsIEFsbG93U2NyaXB0aW5nQ29udGVudCwgZWMpKQog
ICAgICAgICByZXBsYWNlQ2hpbGRyZW5XaXRoRnJhZ21lbnQodGhpcywgZnJhZ21lbnQucmVsZWFz
ZSgpLCBlYyk7CiB9CiAKQEAgLTM3MywxMCArMzczLDEwIEBAIHZvaWQgSFRNTEVsZW1lbnQ6OnNl
dE91dGVySFRNTChjb25zdCBTdHJpbmcmIGh0bWwsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIFJl
ZlB0cjxOb2RlPiBwcmV2ID0gcHJldmlvdXNTaWJsaW5nKCk7CiAgICAgUmVmUHRyPE5vZGU+IG5l
eHQgPSBuZXh0U2libGluZygpOwogCi0gICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdt
ZW50ID0gY3JlYXRlRnJhZ21lbnRGb3JJbm5lck91dGVySFRNTChodG1sLCBwYXJlbnQuZ2V0KCks
IEFsbG93U2NyaXB0aW5nQ29udGVudCwgZWMpOworICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50
PiBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50Rm9ySW5uZXJPdXRlckhUTUwoaHRtbCwgZG9jdW1l
bnQoKSwgcGFyZW50LmdldCgpLCBBbGxvd1NjcmlwdGluZ0NvbnRlbnQsIGVjKTsKICAgICBpZiAo
ZWMpCiAgICAgICAgIHJldHVybjsKLSAgICAgIAorCiAgICAgcGFyZW50LT5yZXBsYWNlQ2hpbGQo
ZnJhZ21lbnQucmVsZWFzZSgpLCB0aGlzLCBlYyk7CiAgICAgUmVmUHRyPE5vZGU+IG5vZGUgPSBu
ZXh0ID8gbmV4dC0+cHJldmlvdXNTaWJsaW5nKCkgOiAwOwogICAgIGlmICghZWMgJiYgbm9kZSAm
JiBub2RlLT5pc1RleHROb2RlKCkpCkBAIC01NzgsNyArNTc4LDcgQEAgdm9pZCBIVE1MRWxlbWVu
dDo6aW5zZXJ0QWRqYWNlbnRIVE1MKGNvbnN0IFN0cmluZyYgd2hlcmUsIGNvbnN0IFN0cmluZyYg
bWFya3VwLAogICAgIEVsZW1lbnQqIGNvbnRleHRFbGVtZW50ID0gY29udGV4dEVsZW1lbnRGb3JJ
bnNlcnRpb24od2hlcmUsIHRoaXMsIGVjKTsKICAgICBpZiAoIWNvbnRleHRFbGVtZW50KQogICAg
ICAgICByZXR1cm47Ci0gICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gY3Jl
YXRlRnJhZ21lbnRGb3JJbm5lck91dGVySFRNTChtYXJrdXAsIHRoaXMsIEFsbG93U2NyaXB0aW5n
Q29udGVudCwgZWMpOworICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGNy
ZWF0ZUZyYWdtZW50Rm9ySW5uZXJPdXRlckhUTUwobWFya3VwLCBkb2N1bWVudCgpLCB0aGlzLCBB
bGxvd1NjcmlwdGluZ0NvbnRlbnQsIGVjKTsKICAgICBpZiAoIWZyYWdtZW50KQogICAgICAgICBy
ZXR1cm47CiAgICAgaW5zZXJ0QWRqYWNlbnQod2hlcmUsIGZyYWdtZW50LmdldCgpLCBlYyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcApp
bmRleCA3YTA2YjQyMzk2OTEzZDlkOTZkNGU1NzFkNWIyMzNhOTIzNzA0Mjk1Li5lMTVjN2I1MzJj
ZTExOWIzY2VlOTlmMmVhNGE5NmI0NjgzMTg3OTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKQEAgLTUxLDYgKzUxLDEwIEBAIG5h
bWVzcGFjZSB7CiAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVu
dC13b3JrL211bHRpcGFnZS90aGUtZW5kLmh0bWwjZnJhZ21lbnQtY2FzZQogSFRNTFRva2VuaXpl
clN0YXRlOjpTdGF0ZSB0b2tlbml6ZXJTdGF0ZUZvckNvbnRleHRFbGVtZW50KEVsZW1lbnQqIGNv
bnRleHRFbGVtZW50LCBib29sIHJlcG9ydEVycm9ycykKIHsKKyNpZiAhRU5BQkxFKElNUExJRURf
Q09OVEVYVF9QQVJTSU5HKQorICAgIEFTU0VSVChjb250ZXh0RWxlbWVudCk7CisjZW5kaWYKKwog
ICAgIGlmICghY29udGV4dEVsZW1lbnQpCiAgICAgICAgIHJldHVybiBIVE1MVG9rZW5pemVyU3Rh
dGU6OkRhdGFTdGF0ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTFRyZWVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVl
QnVpbGRlci5jcHAKaW5kZXggNzU5ZDIzYjFmMzI3NDQyMGRmNDM0MGI5ZDJiN2RmYTk3NTEzZDE5
NC4uYWQ2ZTE3ZTA0MTljZjNmOTNlZDlhZDBkZTMzY2FmM2QyMGM5NDA2ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwCkBAIC0yNDIsNiArMjQy
LDMwIEBAIEhUTUxGb3JtRWxlbWVudCogY2xvc2VzdEZvcm1BbmNlc3RvcihFbGVtZW50KiBlbGVt
ZW50KQogICAgIHJldHVybiAwOwogfQogCisjaWYgRU5BQkxFKElNUExJRURfQ09OVEVYVF9QQVJT
SU5HKQorLy8gRklYTUU6IFJlZmVyZW5jZSB0byBIVE1MIHNwZWMgZGVzY3JpYmluZyB0aGUgZm9s
bG93aW5nOiBUaGUgaW1wbGllZCBjb250ZXh0IGVsZW1lbnQgb2YKKy8vIERvY3VtZW50LnBhcnNl
IGlzIGJhc2VkIG9uIHRoZSBpZGVudGl0eSBvZiB0aGUgdGFnTmFtZSBvZiB0aGUgZmlyc3Qgc3Rh
cnRUYWcgdG9rZW4gZW5jb3VudGVyZWQKKy8vIHdoaWNoIGlzIG5vdCA8c3R5bGU+LCA8c2NyaXB0
PiwgPG1ldGE+LCBvciA8bGluaz4uCisvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIGluZmVycmlu
ZyBTVkcgYW5kIE1hdGhNTCBlbGVtZW50cy4KK2NvbnN0IFF1YWxpZmllZE5hbWUmIGltcGxpZWRD
b250ZXh0VGFnKGNvbnN0IEF0b21pY1N0cmluZyYgdGFnTmFtZSkKK3sKKyAgICBpZiAoaXNUYWJs
ZUJvZHlDb250ZXh0VGFnKHRhZ05hbWUpIHx8IHRhZ05hbWUgPT0gY2FwdGlvblRhZyB8fCB0YWdO
YW1lID09IGNvbGdyb3VwVGFnKQorICAgICAgICByZXR1cm4gdGFibGVUYWc7CisgICAgaWYgKHRh
Z05hbWUgPT0gdHJUYWcpCisgICAgICAgIHJldHVybiB0Ym9keVRhZzsKKyAgICBpZiAodGFnTmFt
ZSA9PSBjb2xUYWcpCisgICAgICAgIHJldHVybiBjb2xncm91cFRhZzsKKyAgICBpZiAoaXNUYWJs
ZUNlbGxDb250ZXh0VGFnKHRhZ05hbWUpKQorICAgICAgICByZXR1cm4gdHJUYWc7CisgICAgaWYg
KHRhZ05hbWUgPT0gaGVhZFRhZyB8fCB0YWdOYW1lID09IGJvZHlUYWcpCisgICAgICAgIHJldHVy
biBodG1sVGFnOworICAgIGlmICh0YWdOYW1lID09IHJwVGFnIHx8IHRhZ05hbWUgPT0gcnRUYWcp
CisgICAgICAgIHJldHVybiBydWJ5VGFnOworCisgICAgcmV0dXJuIGJvZHlUYWc7Cit9CisjZW5k
aWYKKwogfSAvLyBuYW1lc3BhY2UKIAogY2xhc3MgSFRNTFRyZWVCdWlsZGVyOjpFeHRlcm5hbENo
YXJhY3RlclRva2VuQnVmZmVyIHsKQEAgLTM2OCw3ICszOTIsNyBAQCBIVE1MVHJlZUJ1aWxkZXI6
OkhUTUxUcmVlQnVpbGRlcihIVE1MRG9jdW1lbnRQYXJzZXIqIHBhcnNlciwgSFRNTERvY3VtZW50
KiBkb2N1bQogLy8gbWluaW1pemUgY29kZSBkdXBsaWNhdGlvbiBiZXR3ZWVuIHRoZXNlIGNvbnN0
cnVjdG9ycy4KIEhUTUxUcmVlQnVpbGRlcjo6SFRNTFRyZWVCdWlsZGVyKEhUTUxEb2N1bWVudFBh
cnNlciogcGFyc2VyLCBEb2N1bWVudEZyYWdtZW50KiBmcmFnbWVudCwgRWxlbWVudCogY29udGV4
dEVsZW1lbnQsIEZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbiBzY3JpcHRpbmdQZXJtaXNzaW9u
LCBib29sIHVzZVByZUhUTUw1UGFyc2VyUXVpcmtzLCB1bnNpZ25lZCBtYXhpbXVtRE9NVHJlZURl
cHRoKQogICAgIDogbV9mcmFtZXNldE9rKHRydWUpCi0gICAgLCBtX2ZyYWdtZW50Q29udGV4dChm
cmFnbWVudCwgY29udGV4dEVsZW1lbnQsIHNjcmlwdGluZ1Blcm1pc3Npb24pCisgICAgLCBtX2Zy
YWdtZW50Q29udGV4dChmcmFnbWVudCwgY29udGV4dEVsZW1lbnQgPyBjb250ZXh0RWxlbWVudC0+
dGFnUU5hbWUoKSA6IG51bGxRTmFtZSgpLCBzY3JpcHRpbmdQZXJtaXNzaW9uKQogICAgICwgbV9k
b2N1bWVudChmcmFnbWVudC0+ZG9jdW1lbnQoKSkKICAgICAsIG1fdHJlZShmcmFnbWVudCwgc2Ny
aXB0aW5nUGVybWlzc2lvbiwgbWF4aW11bURPTVRyZWVEZXB0aCkKICAgICAsIG1fcmVwb3J0RXJy
b3JzKGZhbHNlKSAvLyBGSVhNRTogV2h5IG5vdCByZXBvcnQgZXJyb3JzIGluIGZyYWdtZW50cz8K
QEAgLTM4MSwxNyArNDA1LDE4IEBAIEhUTUxUcmVlQnVpbGRlcjo6SFRNTFRyZWVCdWlsZGVyKEhU
TUxEb2N1bWVudFBhcnNlciogcGFyc2VyLCBEb2N1bWVudEZyYWdtZW50KiBmCiAgICAgLCBtX2xh
c3RTY3JpcHRFbGVtZW50U3RhcnRQb3NpdGlvbihUZXh0UG9zaXRpb246OmJlbG93UmFuZ2VQb3Np
dGlvbigpKQogICAgICwgbV91c2VQcmVIVE1MNVBhcnNlclF1aXJrcyh1c2VQcmVIVE1MNVBhcnNl
clF1aXJrcykKIHsKLSAgICAvLyBGSVhNRTogVGhpcyBhc3NlcnRpb24gd2lsbCBiZWNvbWUgaW52
YWxpZCBpZiA8aHR0cDovL3dlYmtpdC5vcmcvYi82MDMxNj4gaXMgZml4ZWQuCisjaWYgIUVOQUJM
RShJTVBMSUVEX0NPTlRFWFRfUEFSU0lORykKICAgICBBU1NFUlQoY29udGV4dEVsZW1lbnQpOwot
ICAgIGlmIChjb250ZXh0RWxlbWVudCkgewotICAgICAgICAvLyBTdGVwcyA0LjItNC42IG9mIHRo
ZSBIVE1MNSBGcmFnbWVudCBDYXNlIHBhcnNpbmcgYWxnb3JpdGhtOgotICAgICAgICAvLyBodHRw
Oi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS90
aGUtZW5kLmh0bWwjZnJhZ21lbnQtY2FzZQotICAgICAgICAvLyBGb3IgZWZmaWNpZW5jeSwgd2Ug
c2tpcCBzdGVwIDQuMiAoIkxldCByb290IGJlIGEgbmV3IGh0bWwgZWxlbWVudCB3aXRoIG5vIGF0
dHJpYnV0ZXMiKQotICAgICAgICAvLyBhbmQgaW5zdGVhZCB1c2UgdGhlIERvY3VtZW50RnJhZ21l
bnQgYXMgYSByb290IG5vZGUuCi0gICAgICAgIG1fdHJlZS5vcGVuRWxlbWVudHMoKS0+cHVzaFJv
b3ROb2RlKGZyYWdtZW50KTsKLSAgICAgICAgcmVzZXRJbnNlcnRpb25Nb2RlQXBwcm9wcmlhdGVs
eSgpOworI2VuZGlmCisKKyAgICAvLyBTdGVwcyA0LjItNC42IG9mIHRoZSBIVE1MNSBGcmFnbWVu
dCBDYXNlIHBhcnNpbmcgYWxnb3JpdGhtOgorICAgIC8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9z
cGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvbXVsdGlwYWdlL3RoZS1lbmQuaHRtbCNmcmFnbWVu
dC1jYXNlCisgICAgLy8gRm9yIGVmZmljaWVuY3ksIHdlIHNraXAgc3RlcCA0LjIgKCJMZXQgcm9v
dCBiZSBhIG5ldyBodG1sIGVsZW1lbnQgd2l0aCBubyBhdHRyaWJ1dGVzIikKKyAgICAvLyBhbmQg
aW5zdGVhZCB1c2UgdGhlIERvY3VtZW50RnJhZ21lbnQgYXMgYSByb290IG5vZGUuCisgICAgbV90
cmVlLm9wZW5FbGVtZW50cygpLT5wdXNoUm9vdE5vZGUoZnJhZ21lbnQpOworICAgIHJlc2V0SW5z
ZXJ0aW9uTW9kZUFwcHJvcHJpYXRlbHkoKTsKKyAgICBpZiAoY29udGV4dEVsZW1lbnQpCiAgICAg
ICAgIG1fdHJlZS5zZXRGb3JtKGNsb3Nlc3RGb3JtQW5jZXN0b3IoY29udGV4dEVsZW1lbnQpKTsK
LSAgICB9CiB9CiAKIEhUTUxUcmVlQnVpbGRlcjo6fkhUTUxUcmVlQnVpbGRlcigpCkBAIC00MTAs
MTQgKzQzNSwxNCBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6ZGV0YWNoKCkKIAogSFRNTFRyZWVC
dWlsZGVyOjpGcmFnbWVudFBhcnNpbmdDb250ZXh0OjpGcmFnbWVudFBhcnNpbmdDb250ZXh0KCkK
ICAgICA6IG1fZnJhZ21lbnQoMCkKLSAgICAsIG1fY29udGV4dEVsZW1lbnQoMCkKKyAgICAsIG1f
Y29udGV4dFRhZyhudWxsUU5hbWUoKSkKICAgICAsIG1fc2NyaXB0aW5nUGVybWlzc2lvbihBbGxv
d1NjcmlwdGluZ0NvbnRlbnQpCiB7CiB9CiAKLUhUTUxUcmVlQnVpbGRlcjo6RnJhZ21lbnRQYXJz
aW5nQ29udGV4dDo6RnJhZ21lbnRQYXJzaW5nQ29udGV4dChEb2N1bWVudEZyYWdtZW50KiBmcmFn
bWVudCwgRWxlbWVudCogY29udGV4dEVsZW1lbnQsIEZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lv
biBzY3JpcHRpbmdQZXJtaXNzaW9uKQorSFRNTFRyZWVCdWlsZGVyOjpGcmFnbWVudFBhcnNpbmdD
b250ZXh0OjpGcmFnbWVudFBhcnNpbmdDb250ZXh0KERvY3VtZW50RnJhZ21lbnQqIGZyYWdtZW50
LCBjb25zdCBRdWFsaWZpZWROYW1lJiBjb250ZXh0VGFnLCBGcmFnbWVudFNjcmlwdGluZ1Blcm1p
c3Npb24gc2NyaXB0aW5nUGVybWlzc2lvbikKICAgICA6IG1fZnJhZ21lbnQoZnJhZ21lbnQpCi0g
ICAgLCBtX2NvbnRleHRFbGVtZW50KGNvbnRleHRFbGVtZW50KQorICAgICwgbV9jb250ZXh0VGFn
KGNvbnRleHRUYWcpCiAgICAgLCBtX3NjcmlwdGluZ1Blcm1pc3Npb24oc2NyaXB0aW5nUGVybWlz
c2lvbikKIHsKICAgICBBU1NFUlQoIWZyYWdtZW50LT5oYXNDaGlsZE5vZGVzKCkpOwpAQCAtNDQ3
LDcgKzQ3Miw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpjb25zdHJ1Y3RUcmVlRnJvbVRva2Vu
KEhUTUxUb2tlbiYgcmF3VG9rZW4pCiAgICAgLy8gc3luY2hyb25vdXNseSByZS1lbnRlcnMgdGhl
IHBhcnNlci4gV2UgZG9uJ3QgY2xlYXIgdGhlIHRva2VuIGltbWVkYXRlbHkKICAgICAvLyBmb3Ig
Q2hhcmFjdGVyIHRva2VucyBiZWNhdXNlIHRoZSBBdG9taWNIVE1MVG9rZW4gYXZvaWRzIGNvcHlp
bmcgdGhlCiAgICAgLy8gY2hhcmFjdGVycyBieSBrZWVwaW5nIGEgcG9pbnRlciB0byB0aGUgdW5k
ZXJseWluZyBidWZmZXIgaW4gdGhlCi0gICAgLy8gSFRNTFRva2VuLiBGb3J0dWFudGVseSwgQ2hh
cmFjdGVyIHRva2VucyBjYW4ndCBjYXVzZSB1c2UgdG8gcmUtZW50ZXIKKyAgICAvLyBIVE1MVG9r
ZW4uIEZvcnR1bmF0ZWx5LCBDaGFyYWN0ZXIgdG9rZW5zIGNhbid0IGNhdXNlIHVzZSB0byByZS1l
bnRlcgogICAgIC8vIHRoZSBwYXJzZXIuCiAgICAgLy8KICAgICAvLyBGSVhNRTogU3RvcCBjbGVh
cmluZyB0aGUgcmF3VG9rZW4gb25jZSB3ZSBzdGFydCBydW5uaW5nIHRoZSBwYXJzZXIgb2ZmCkBA
IC0xNDUwLDYgKzE0NzUsMjYgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRh
ZyhBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogICAgIGNhc2UgVGV4dE1vZGU6CiAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEltcGxpZWRDb250
ZXh0TW9kZToKKyNpZiBFTkFCTEUoSU1QTElFRF9DT05URVhUX1BBUlNJTkcpCisgICAgICAgIEFT
U0VSVChpc1BhcnNpbmdGcmFnbWVudCgpKTsKKyAgICAgICAgQVNTRVJUKG1fZnJhZ21lbnRDb250
ZXh0LmNvbnRleHRUYWcoKSA9PSBudWxsUU5hbWUoKSk7CisKKyAgICAgICAgaWYgKHRva2VuLm5h
bWUoKSA9PSBzdHlsZVRhZworICAgICAgICAgICAgfHwgdG9rZW4ubmFtZSgpID09IHNjcmlwdFRh
ZworICAgICAgICAgICAgfHwgdG9rZW4ubmFtZSgpID09IG1ldGFUYWcKKyAgICAgICAgICAgIHx8
IHRva2VuLm5hbWUoKSA9PSBsaW5rVGFnKSB7CisgICAgICAgICAgICBwcm9jZXNzU3RhcnRUYWdG
b3JJbkhlYWQodG9rZW4pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAg
ICAgbV9mcmFnbWVudENvbnRleHQuc2V0Q29udGV4dFRhZyhpbXBsaWVkQ29udGV4dFRhZyh0b2tl
bi5uYW1lKCkpKTsKKyAgICAgICAgcmVzZXRJbnNlcnRpb25Nb2RlQXBwcm9wcmlhdGVseSgpOwor
ICAgICAgICBwcm9jZXNzU3RhcnRUYWcodG9rZW4pOworI2Vsc2UKKyAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisjZW5kaWYKKyAgICAgICAgYnJlYWs7CiAgICAgfQogfQogCkBAIC0xNjM3
LDQ2ICsxNjgyLDQ5IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpyZXNldEluc2VydGlvbk1vZGVB
cHByb3ByaWF0ZWx5KCkKICAgICBIVE1MRWxlbWVudFN0YWNrOjpFbGVtZW50UmVjb3JkKiBub2Rl
UmVjb3JkID0gbV90cmVlLm9wZW5FbGVtZW50cygpLT50b3BSZWNvcmQoKTsKICAgICB3aGlsZSAo
MSkgewogICAgICAgICBDb250YWluZXJOb2RlKiBub2RlID0gbm9kZVJlY29yZC0+bm9kZSgpOwor
ICAgICAgICBjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lID0gbm9kZSA9PSBtX3RyZWUub3Bl
bkVsZW1lbnRzKCktPnJvb3ROb2RlKCkgPyBtX2ZyYWdtZW50Q29udGV4dC5jb250ZXh0VGFnKCkg
OiBub2RlUmVjb3JkLT5lbGVtZW50KCktPnRhZ1FOYW1lKCk7CiAgICAgICAgIGlmIChub2RlID09
IG1fdHJlZS5vcGVuRWxlbWVudHMoKS0+cm9vdE5vZGUoKSkgewogICAgICAgICAgICAgQVNTRVJU
KGlzUGFyc2luZ0ZyYWdtZW50KCkpOwogICAgICAgICAgICAgbGFzdCA9IHRydWU7Ci0gICAgICAg
ICAgICBub2RlID0gbV9mcmFnbWVudENvbnRleHQuY29udGV4dEVsZW1lbnQoKTsKICAgICAgICAg
fQotICAgICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZShzZWxlY3RUYWcpKSB7CisgICAgICAgIGlm
ICh0YWdOYW1lLm1hdGNoZXMoc2VsZWN0VGFnKSkgewogICAgICAgICAgICAgQVNTRVJUKGlzUGFy
c2luZ0ZyYWdtZW50KCkpOwogICAgICAgICAgICAgcmV0dXJuIHNldEluc2VydGlvbk1vZGUoSW5T
ZWxlY3RNb2RlKTsKICAgICAgICAgfQotICAgICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZSh0ZFRh
ZykgfHwgbm9kZS0+aGFzVGFnTmFtZSh0aFRhZykpCisgICAgICAgIGlmICh0YWdOYW1lLm1hdGNo
ZXModGRUYWcpIHx8IHRhZ05hbWUubWF0Y2hlcyh0aFRhZykpCiAgICAgICAgICAgICByZXR1cm4g
c2V0SW5zZXJ0aW9uTW9kZShJbkNlbGxNb2RlKTsKLSAgICAgICAgaWYgKG5vZGUtPmhhc1RhZ05h
bWUodHJUYWcpKQorICAgICAgICBpZiAodGFnTmFtZS5tYXRjaGVzKHRyVGFnKSkKICAgICAgICAg
ICAgIHJldHVybiBzZXRJbnNlcnRpb25Nb2RlKEluUm93TW9kZSk7Ci0gICAgICAgIGlmIChub2Rl
LT5oYXNUYWdOYW1lKHRib2R5VGFnKSB8fCBub2RlLT5oYXNUYWdOYW1lKHRoZWFkVGFnKSB8fCBu
b2RlLT5oYXNUYWdOYW1lKHRmb290VGFnKSkKKyAgICAgICAgaWYgKHRhZ05hbWUubWF0Y2hlcyh0
Ym9keVRhZykgfHwgdGFnTmFtZS5tYXRjaGVzKHRoZWFkVGFnKSB8fCB0YWdOYW1lLm1hdGNoZXMo
dGZvb3RUYWcpKQogICAgICAgICAgICAgcmV0dXJuIHNldEluc2VydGlvbk1vZGUoSW5UYWJsZUJv
ZHlNb2RlKTsKLSAgICAgICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUoY2FwdGlvblRhZykpCisgICAg
ICAgIGlmICh0YWdOYW1lLm1hdGNoZXMoY2FwdGlvblRhZykpCiAgICAgICAgICAgICByZXR1cm4g
c2V0SW5zZXJ0aW9uTW9kZShJbkNhcHRpb25Nb2RlKTsKLSAgICAgICAgaWYgKG5vZGUtPmhhc1Rh
Z05hbWUoY29sZ3JvdXBUYWcpKSB7CisgICAgICAgIGlmICh0YWdOYW1lLm1hdGNoZXMoY29sZ3Jv
dXBUYWcpKSB7CiAgICAgICAgICAgICBBU1NFUlQoaXNQYXJzaW5nRnJhZ21lbnQoKSk7CiAgICAg
ICAgICAgICByZXR1cm4gc2V0SW5zZXJ0aW9uTW9kZShJbkNvbHVtbkdyb3VwTW9kZSk7CiAgICAg
ICAgIH0KLSAgICAgICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUodGFibGVUYWcpKQorICAgICAgICBp
ZiAodGFnTmFtZS5tYXRjaGVzKHRhYmxlVGFnKSkKICAgICAgICAgICAgIHJldHVybiBzZXRJbnNl
cnRpb25Nb2RlKEluVGFibGVNb2RlKTsKLSAgICAgICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUoaGVh
ZFRhZykpIHsKKyAgICAgICAgaWYgKHRhZ05hbWUubWF0Y2hlcyhoZWFkVGFnKSkgewogICAgICAg
ICAgICAgQVNTRVJUKGlzUGFyc2luZ0ZyYWdtZW50KCkpOwogICAgICAgICAgICAgcmV0dXJuIHNl
dEluc2VydGlvbk1vZGUoSW5Cb2R5TW9kZSk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKG5vZGUt
Pmhhc1RhZ05hbWUoYm9keVRhZykpCisgICAgICAgIGlmICh0YWdOYW1lLm1hdGNoZXMoYm9keVRh
ZykpCiAgICAgICAgICAgICByZXR1cm4gc2V0SW5zZXJ0aW9uTW9kZShJbkJvZHlNb2RlKTsKLSAg
ICAgICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUoZnJhbWVzZXRUYWcpKSB7CisgICAgICAgIGlmICh0
YWdOYW1lLm1hdGNoZXMoZnJhbWVzZXRUYWcpKSB7CiAgICAgICAgICAgICBBU1NFUlQoaXNQYXJz
aW5nRnJhZ21lbnQoKSk7CiAgICAgICAgICAgICByZXR1cm4gc2V0SW5zZXJ0aW9uTW9kZShJbkZy
YW1lc2V0TW9kZSk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUoaHRt
bFRhZykpIHsKKyAgICAgICAgaWYgKHRhZ05hbWUubWF0Y2hlcyhodG1sVGFnKSkgewogICAgICAg
ICAgICAgQVNTRVJUKGlzUGFyc2luZ0ZyYWdtZW50KCkpOwogICAgICAgICAgICAgcmV0dXJuIHNl
dEluc2VydGlvbk1vZGUoQmVmb3JlSGVhZE1vZGUpOwogICAgICAgICB9CiAgICAgICAgIGlmIChs
YXN0KSB7CiAgICAgICAgICAgICBBU1NFUlQoaXNQYXJzaW5nRnJhZ21lbnQoKSk7Ci0gICAgICAg
ICAgICByZXR1cm4gc2V0SW5zZXJ0aW9uTW9kZShJbkJvZHlNb2RlKTsKKyNpZiAhRU5BQkxFKElN
UExJRURfQ09OVEVYVF9QQVJTSU5HKQorICAgICAgICAgICAgQVNTRVJUKHRhZ05hbWUgIT0gbnVs
bFFOYW1lKCkpOworI2VuZGlmCisgICAgICAgICAgICByZXR1cm4gc2V0SW5zZXJ0aW9uTW9kZSh0
YWdOYW1lID09IG51bGxRTmFtZSgpID8gSW1wbGllZENvbnRleHRNb2RlIDogSW5Cb2R5TW9kZSk7
CiAgICAgICAgIH0KICAgICAgICAgbm9kZVJlY29yZCA9IG5vZGVSZWNvcmQtPm5leHQoKTsKICAg
ICB9CkBAIC0yMjI1LDYgKzIyNzMsMTMgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NF
bmRUYWcoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKICAgICAgICAgZGVmYXVsdEZvckluVGFibGVU
ZXh0KCk7CiAgICAgICAgIHByb2Nlc3NFbmRUYWcodG9rZW4pOwogICAgICAgICBicmVhazsKKyAg
ICBjYXNlIEltcGxpZWRDb250ZXh0TW9kZToKKyNpZiBFTkFCTEUoSU1QTElFRF9DT05URVhUX1BB
UlNJTkcpCisgICAgICAgIHBhcnNlRXJyb3IodG9rZW4pOworI2Vsc2UKKyAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisjZW5kaWYKKyAgICAgICAgYnJlYWs7CiAgICAgfQogfQogCkBAIC0y
MjM0LDcgKzIyODksMTEgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NDb21tZW50KEF0
b21pY0hUTUxUb2tlbiYgdG9rZW4pCiAgICAgaWYgKG1faW5zZXJ0aW9uTW9kZSA9PSBJbml0aWFs
TW9kZQogICAgICAgICB8fCBtX2luc2VydGlvbk1vZGUgPT0gQmVmb3JlSFRNTE1vZGUKICAgICAg
ICAgfHwgbV9pbnNlcnRpb25Nb2RlID09IEFmdGVyQWZ0ZXJCb2R5TW9kZQorICAgICAgICB8fCBt
X2luc2VydGlvbk1vZGUgPT0gSW1wbGllZENvbnRleHRNb2RlCiAgICAgICAgIHx8IG1faW5zZXJ0
aW9uTW9kZSA9PSBBZnRlckFmdGVyRnJhbWVzZXRNb2RlKSB7CisjaWYgIUVOQUJMRShJTVBMSUVE
X0NPTlRFWFRfUEFSU0lORykKKyAgICAgICAgQVNTRVJUKG1faW5zZXJ0aW9uTW9kZSAhPSBJbXBs
aWVkQ29udGV4dE1vZGUpOworI2VuZGlmCiAgICAgICAgIG1fdHJlZS5pbnNlcnRDb21tZW50T25E
b2N1bWVudCh0b2tlbik7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yMzI1LDggKzIzODQs
MTIgQEAgUmVwcm9jZXNzQnVmZmVyOgogICAgIH0KICAgICBjYXNlIEluQm9keU1vZGU6CiAgICAg
Y2FzZSBJbkNhcHRpb25Nb2RlOgorICAgIGNhc2UgSW1wbGllZENvbnRleHRNb2RlOgogICAgIGNh
c2UgSW5DZWxsTW9kZTogewotICAgICAgICBBU1NFUlQoaW5zZXJ0aW9uTW9kZSgpID09IEluQm9k
eU1vZGUgfHwgaW5zZXJ0aW9uTW9kZSgpID09IEluQ2FwdGlvbk1vZGUgfHwgaW5zZXJ0aW9uTW9k
ZSgpID09IEluQ2VsbE1vZGUpOworI2lmICFFTkFCTEUoSU1QTElFRF9DT05URVhUX1BBUlNJTkcp
CisgICAgICAgIEFTU0VSVChpbnNlcnRpb25Nb2RlKCkgIT0gSW1wbGllZENvbnRleHRNb2RlKTsK
KyNlbmRpZgorICAgICAgICBBU1NFUlQoaW5zZXJ0aW9uTW9kZSgpID09IEluQm9keU1vZGUgfHwg
aW5zZXJ0aW9uTW9kZSgpID09IEluQ2FwdGlvbk1vZGUgfHwgaW5zZXJ0aW9uTW9kZSgpID09IElu
Q2VsbE1vZGUgfHwgaW5zZXJ0aW9uTW9kZSgpID09IEltcGxpZWRDb250ZXh0TW9kZSk7CiAgICAg
ICAgIHByb2Nlc3NDaGFyYWN0ZXJCdWZmZXJGb3JJbkJvZHkoYnVmZmVyKTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQpAQCAtMjQ2MCw4ICsyNTIzLDEyIEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpw
cm9jZXNzRW5kT2ZGaWxlKEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiAgICAgY2FzZSBJbkJvZHlN
b2RlOgogICAgIGNhc2UgSW5DZWxsTW9kZToKICAgICBjYXNlIEluQ2FwdGlvbk1vZGU6CisgICAg
Y2FzZSBJbXBsaWVkQ29udGV4dE1vZGU6CiAgICAgY2FzZSBJblJvd01vZGU6Ci0gICAgICAgIEFT
U0VSVChpbnNlcnRpb25Nb2RlKCkgPT0gSW5Cb2R5TW9kZSB8fCBpbnNlcnRpb25Nb2RlKCkgPT0g
SW5DZWxsTW9kZSB8fCBpbnNlcnRpb25Nb2RlKCkgPT0gSW5DYXB0aW9uTW9kZSB8fCBpbnNlcnRp
b25Nb2RlKCkgPT0gSW5Sb3dNb2RlKTsKKyNpZiAhRU5BQkxFKElNUExJRURfQ09OVEVYVF9QQVJT
SU5HKQorICAgICAgICBBU1NFUlQoaW5zZXJ0aW9uTW9kZSgpICE9IEltcGxpZWRDb250ZXh0TW9k
ZSk7CisjZW5kaWYKKyAgICAgICAgQVNTRVJUKGluc2VydGlvbk1vZGUoKSA9PSBJbkJvZHlNb2Rl
IHx8IGluc2VydGlvbk1vZGUoKSA9PSBJbkNlbGxNb2RlIHx8IGluc2VydGlvbk1vZGUoKSA9PSBJ
bkNhcHRpb25Nb2RlIHx8IGluc2VydGlvbk1vZGUoKSA9PSBJblJvd01vZGUgfHwgaW5zZXJ0aW9u
TW9kZSgpID09IEltcGxpZWRDb250ZXh0TW9kZSk7CiAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7
IC8vIEVtaXQgcGFyc2UgZXJyb3IgYmFzZWQgb24gd2hhdCBlbGVtZW50cyBhcmUgc3RpbGwgb3Bl
bi4KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBZnRlckJvZHlNb2RlOgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuaAppbmRleCAxOWJiZTk1MTlmZmJmNWE3
NjVmZmJlNGMzNGQ3NThiYWJmYjNkYTM0Li5hOThlMzQyODVlZTE5YjdjY2NlMTBjNWQ4ZGVlZjc1
ZTUyZDRkNmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJl
ZUJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxk
ZXIuaApAQCAtNTAsNiArNTAsNyBAQCBjbGFzcyBEb2N1bWVudEZyYWdtZW50OwogY2xhc3MgRnJh
bWU7CiBjbGFzcyBIVE1MVG9rZW47CiBjbGFzcyBIVE1MRG9jdW1lbnQ7CitjbGFzcyBRdWFsaWZp
ZWROYW1lOwogY2xhc3MgTm9kZTsKIGNsYXNzIEhUTUxEb2N1bWVudFBhcnNlcjsKIApAQCAtOTks
NiArMTAwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgSW5IZWFkTW9kZSwKICAgICAgICAgSW5IZWFk
Tm9zY3JpcHRNb2RlLAogICAgICAgICBBZnRlckhlYWRNb2RlLAorICAgICAgICBJbXBsaWVkQ29u
dGV4dE1vZGUsCiAgICAgICAgIEluQm9keU1vZGUsCiAgICAgICAgIFRleHRNb2RlLAogICAgICAg
ICBJblRhYmxlTW9kZSwKQEAgLTE5NSwxNiArMTk3LDE3IEBAIHByaXZhdGU6CiAgICAgICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKEZyYWdtZW50UGFyc2luZ0NvbnRleHQpOwogICAgIHB1YmxpYzoK
ICAgICAgICAgRnJhZ21lbnRQYXJzaW5nQ29udGV4dCgpOwotICAgICAgICBGcmFnbWVudFBhcnNp
bmdDb250ZXh0KERvY3VtZW50RnJhZ21lbnQqLCBFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgRnJh
Z21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uKTsKKyAgICAgICAgRnJhZ21lbnRQYXJzaW5nQ29udGV4
dChEb2N1bWVudEZyYWdtZW50KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYgY29udGV4dFRhZywgRnJh
Z21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uKTsKICAgICAgICAgfkZyYWdtZW50UGFyc2luZ0NvbnRl
eHQoKTsKIAogICAgICAgICBEb2N1bWVudEZyYWdtZW50KiBmcmFnbWVudCgpIGNvbnN0IHsgcmV0
dXJuIG1fZnJhZ21lbnQ7IH0KLSAgICAgICAgRWxlbWVudCogY29udGV4dEVsZW1lbnQoKSBjb25z
dCB7IEFTU0VSVChtX2ZyYWdtZW50KTsgcmV0dXJuIG1fY29udGV4dEVsZW1lbnQ7IH0KKyAgICAg
ICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgY29udGV4dFRhZygpIGNvbnN0IHsgcmV0dXJuIG1fY29u
dGV4dFRhZzsgfQorICAgICAgICB2b2lkIHNldENvbnRleHRUYWcoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgY29udGV4dFRhZykgeyBtX2NvbnRleHRUYWcgPSBjb250ZXh0VGFnOyB9CiAgICAgICAgIEZy
YWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbiBzY3JpcHRpbmdQZXJtaXNzaW9uKCkgY29uc3QgeyBB
U1NFUlQobV9mcmFnbWVudCk7IHJldHVybiBtX3NjcmlwdGluZ1Blcm1pc3Npb247IH0KIAogICAg
IHByaXZhdGU6CiAgICAgICAgIERvY3VtZW50RnJhZ21lbnQqIG1fZnJhZ21lbnQ7Ci0gICAgICAg
IEVsZW1lbnQqIG1fY29udGV4dEVsZW1lbnQ7CisgICAgICAgIFF1YWxpZmllZE5hbWUgbV9jb250
ZXh0VGFnOwogCiAgICAgICAgIC8vIERpc2FsbG93U2NyaXB0aW5nQ29udGVudCBjYXVzZXMgdGhl
IFBhcnNlciB0byByZW1vdmUgY2hpbGRyZW4gZnJvbSA8c2NyaXB0PiB0YWdzIChzbyBqYXZhc2Ny
aXB0IGRvZXNuJ3Qgc2hvdyB1cCBpbiBwYXN0ZXMpLgogICAgICAgICBGcmFnbWVudFNjcmlwdGlu
Z1Blcm1pc3Npb24gbV9zY3JpcHRpbmdQZXJtaXNzaW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9mZWF0
dXJlcy5neXBpCmluZGV4IGY3NzNjYzRiYzI3YTk5OTI3MGFjMDcxYmZiYTU2MzdjODU4YmMyMzMu
LmQyODFiOWFjYTlhYzQ0MDVlOTNmYmM4YWMyYTYzOGU4YjQzMzkyYjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lwaQorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL2ZlYXR1cmVzLmd5cGkKQEAgLTU5LDYgKzU5LDcgQEAKICAgICAgICdFTkFCTEVfR0FN
RVBBRD0xJywKICAgICAgICdFTkFCTEVfR0VPTE9DQVRJT049MScsCiAgICAgICAnRU5BQkxFX0dF
U1RVUkVfRVZFTlRTPTEnLAorICAgICAgJ0VOQUJMRV9JTVBMSUVEX0NPTlRFWFRfUEFSU0lORz0x
JywKICAgICAgICdFTkFCTEVfSUNPTkRBVEFCQVNFPTAnLAogICAgICAgJ0VOQUJMRV9JRlJBTUVf
U0VBTUxFU1M9MScsCiAgICAgICAnRU5BQkxFX0lOREVYRURfREFUQUJBU0U9MScsCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
OTczNmJkYmZmZmEwNWM1ZmZkZTFmYjc4NWEzMmExMmI5MjJjZWIwOS4uNGJmNzBlMWEwMzA5NDBl
ZTU4YzI1NjNmYjAxZDVhYzJjODg4ZmJmNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTA2
LTA0ICBSYWZhZWwgV2VpbnN0ZWluICA8cmFmYWVsd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
SW1wbGVtZW50IERvY3VtZW50LnBhcnNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD04NDY0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogZmFzdC9wYXJzZXIvZG9jdW1lbnQtcGFyc2UtZW1wdHktbnVsbC11
bmRlZmluZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3BhcnNlci9kb2N1
bWVudC1wYXJzZS1lbXB0eS1udWxsLXVuZGVmaW5lZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBo
dG1sNWxpYi9yZXNvdXJjZXMvZG9jdW1lbnQtcGFyc2UuZGF0OiBBZGRlZC4KKyAgICAgICAgKiBo
dG1sNWxpYi9yZXNvdXJjZXMvcnVubmVyLmpzOgorICAgICAgICAqIGh0bWw1bGliL3J1bi1kb2N1
bWVudC1wYXJzZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0bWw1bGliL3J1bi1k
b2N1bWVudC1wYXJzZS5odG1sOiBBZGRlZC4KKwogMjAxMi0wNi0wNCAgQW1pIEZpc2NobWFuICA8
ZmlzY2htYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIERvbid0IGNyYXNoIHdoZW4gcmUtcGFy
ZW50aW5nIGEgcmVtb3ZlZCBIVE1MTWVkaWFFbGVtZW50CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L3BhcnNlci9kb2N1bWVudC1wYXJzZS1lbXB0eS1udWxsLXVuZGVmaW5lZC1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3BhcnNlci9kb2N1bWVudC1wYXJzZS1lbXB0eS1udWxs
LXVuZGVmaW5lZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzcxYjU0MDUwYmQ1MmFmODRiZjE0
OTVhMjJmZjI3MWZhOTBhODU0NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
cGFyc2VyL2RvY3VtZW50LXBhcnNlLWVtcHR5LW51bGwtdW5kZWZpbmVkLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDEyIEBACitUZXN0IGRvY3VtZW50LnBhcnNlKCkgd2l0aCBlbXB0eSBwYXJhbWV0
ZXIsIHVuZGVmaW5lZCAmIG51bGwKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BB
U1MgZG9jdW1lbnQucGFyc2UoKTsgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGVub3Vn
aCBhcmd1bWVudHMuCitQQVNTIGZyYWdtZW50LmZpcnN0Q2hpbGQudGV4dENvbnRlbnQgaXMgInVu
ZGVmaW5lZCIKK1BBU1MgZnJhZ21lbnQuZmlyc3RDaGlsZC50ZXh0Q29udGVudCBpcyAibnVsbCIK
K1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3BhcnNlci9kb2N1bWVudC1wYXJzZS1lbXB0eS1udWxs
LXVuZGVmaW5lZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9wYXJzZXIvZG9jdW1lbnQtcGFyc2Ut
ZW1wdHktbnVsbC11bmRlZmluZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNmYzMjk0NzdjYWQyZjA2ZjNh
ZGE5NDQ3NmY3MWE5MjQ2YjQ3ZDhiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9wYXJzZXIvZG9jdW1lbnQtcGFyc2UtZW1wdHktbnVsbC11bmRlZmluZWQuaHRtbApAQCAtMCww
ICsxLDE4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKwordmFyIGZyYWdtZW50OworCitk
ZXNjcmlwdGlvbignVGVzdCBkb2N1bWVudC5wYXJzZSgpIHdpdGggZW1wdHkgcGFyYW1ldGVyLCB1
bmRlZmluZWQgJiBudWxsJyk7CisKK3Nob3VsZFRocm93KCJkb2N1bWVudC5wYXJzZSgpOyIpOwor
CitmcmFnbWVudCA9IGRvY3VtZW50LnBhcnNlKHVuZGVmaW5lZCk7CitzaG91bGRCZSgnZnJhZ21l
bnQuZmlyc3RDaGlsZC50ZXh0Q29udGVudCcsICcidW5kZWZpbmVkIicpOworCitmcmFnbWVudCA9
IGRvY3VtZW50LnBhcnNlKG51bGwpOworc2hvdWxkQmUoJ2ZyYWdtZW50LmZpcnN0Q2hpbGQudGV4
dENvbnRlbnQnLCAnIm51bGwiJyk7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHRtbDVsaWIvcmVzb3VyY2VzL2RvY3VtZW50LXBhcnNlLmRhdCBiL0xheW91dFRlc3RzL2h0
bWw1bGliL3Jlc291cmNlcy9kb2N1bWVudC1wYXJzZS5kYXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzJmMDY1NTM1
N2Y4MTFhYjZmYzc5Zjc1MTQ2ZmY4YjQ2ZjM0MGM3OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2h0bWw1bGliL3Jlc291cmNlcy9kb2N1bWVudC1wYXJzZS5kYXQKQEAgLTAsMCArMSwx
NDAgQEAKKyNkYXRhCitIZWxsbworI2Vycm9ycworI2RvY3VtZW50LWZyYWdtZW50CisjZG9jdW1l
bnQKK3wgIkhlbGxvIgorCisjZGF0YQorPC9kaXY+SGVsbG8KKyNlcnJvcnMKKyNkb2N1bWVudC1m
cmFnbWVudAorI2RvY3VtZW50Cit8ICJIZWxsbyIKKworI2RhdGEKKzxkaXY+PHNwYW4+CisjZXJy
b3JzCisjZG9jdW1lbnQtZnJhZ21lbnQKKyNkb2N1bWVudAorfCA8ZGl2PgorfCAgIDxzcGFuPgor
CisjZGF0YQorSGVsbG88ZGl2PjxzcGFuPgorI2Vycm9ycworI2RvY3VtZW50LWZyYWdtZW50Cisj
ZG9jdW1lbnQKK3wgIkhlbGxvIgorfCA8ZGl2PgorfCAgIDxzcGFuPgorCisjZGF0YQorPCFET0NU
WVBFIGh0bWw+PGRpdj48c3Bhbj4KKyNlcnJvcnMKKyNkb2N1bWVudC1mcmFnbWVudAorI2RvY3Vt
ZW50Cit8IDxkaXY+Cit8ICAgPHNwYW4+CisKKyNkYXRhCis8b3B0aW9uPkhlbGxvCisjZXJyb3Jz
CisjZG9jdW1lbnQtZnJhZ21lbnQKKyNkb2N1bWVudAorfCA8b3B0aW9uPgorfCAgICJIZWxsbyIK
KworI2RhdGEKK0hlbGxvPG9wdGlvbj5Hb29kYnllPG9wdGlvbj5Xb3JsZAorI2Vycm9ycworI2Rv
Y3VtZW50LWZyYWdtZW50CisjZG9jdW1lbnQKK3wgIkhlbGxvIgorfCA8b3B0aW9uPgorfCAgICJH
b29kYnllIgorfCA8b3B0aW9uPgorfCAgICJXb3JsZCIKKworI2RhdGEKKzx0ZD4KKyNlcnJvcnMK
KyNkb2N1bWVudC1mcmFnbWVudAorI2RvY3VtZW50Cit8IDx0ZD4KKworI2RhdGEKKzwvdGQ+SGVs
bG88dGQ+R29vZGJ5ZQorI2Vycm9ycworI2RvY3VtZW50LWZyYWdtZW50CisjZG9jdW1lbnQKK3wg
IkhlbGxvIgorfCA8dGQ+Cit8ICAgIkdvb2RieWUiCisKKyNkYXRhCis8dGhlYWQ+CisjZXJyb3Jz
CisjZG9jdW1lbnQtZnJhZ21lbnQKKyNkb2N1bWVudAorfCA8dGhlYWQ+CisKKyNkYXRhCis8dHI+
CisjZXJyb3JzCisjZG9jdW1lbnQtZnJhZ21lbnQKKyNkb2N1bWVudAorfCA8dHI+CisKKyNkYXRh
Cis8dGQ+CisjZXJyb3JzCisjZG9jdW1lbnQtZnJhZ21lbnQKKyNkb2N1bWVudAorfCA8dGQ+CisK
KyNkYXRhCis8bWV0YT48dGQ+CisjZXJyb3JzCisjZG9jdW1lbnQtZnJhZ21lbnQKKyNkb2N1bWVu
dAorfCA8bWV0YT4KK3wgPHRkPgorCisjZGF0YQorPGxpbms+PHRyPgorI2Vycm9ycworI2RvY3Vt
ZW50LWZyYWdtZW50CisjZG9jdW1lbnQKK3wgPGxpbms+Cit8IDx0cj4KKworI2RhdGEKKzxzdHls
ZT5oMSB7IGJhY2tncm91bmQtY29sb3I6IGJsdWU7fTwvc3R5bGU+PHRoZWFkPgorI2Vycm9ycwor
I2RvY3VtZW50LWZyYWdtZW50CisjZG9jdW1lbnQKK3wgPHN0eWxlPgorfCAgICJoMSB7IGJhY2tn
cm91bmQtY29sb3I6IGJsdWU7fSIKK3wgPHRoZWFkPgorCisjZGF0YQorPHNjcmlwdD52YXIgZm9v
ID0gImJhciI7PC9zY3JpcHQ+PG9wdGlvbj4KKyNlcnJvcnMKKyNkb2N1bWVudC1mcmFnbWVudAor
I2RvY3VtZW50Cit8IDxzY3JpcHQ+Cit8ICAgInZhciBmb28gPSAiYmFyIjsiCit8IDxvcHRpb24+
CisKKyNkYXRhCitwYXJzZSBhcyB0ZXh0PHNjcmlwdD5wYXJzZSBhcyA8c3Bhbj5zY3JpcHQ8L3Nw
YW4+PC9zY3JpcHQ+PHRyPjx0ZD50YWJsZSBjb250ZW50PC90ZD48L3RyPgorI2Vycm9ycworI2Rv
Y3VtZW50LWZyYWdtZW50CisjZG9jdW1lbnQKK3wgInBhcnNlIGFzIHRleHQiCit8IDxzY3JpcHQ+
Cit8ICAgInBhcnNlIGFzIDxzcGFuPnNjcmlwdDwvc3Bhbj4iCit8IDx0cj4KK3wgICA8dGQ+Cit8
ICAgICAidGFibGUgY29udGVudCIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odG1sNWxpYi9yZXNvdXJjZXMvcnVubmVyLmpzIGIvTGF5b3V0VGVz
dHMvaHRtbDVsaWIvcmVzb3VyY2VzL3J1bm5lci5qcwppbmRleCA0MGExYzBlZmI0OTY2YmIxYWJi
ODk4NGE5MmM0ODY0MzA0NjUxOGY0Li5jODU1NWUxYjVjZjgyODBmNzJiYWVhNTc0MmRkZDdmZDkz
YzdiYmNhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odG1sNWxpYi9yZXNvdXJjZXMvcnVubmVy
LmpzCisrKyBiL0xheW91dFRlc3RzL2h0bWw1bGliL3Jlc291cmNlcy9ydW5uZXIuanMKQEAgLTg0
LDcgKzg0LDcgQEAgZnVuY3Rpb24gcnVuKCkKIAogZnVuY3Rpb24gdGVzdCgpCiB7Ci0gICAgdmFy
IGlucHV0LCBlcnJvcnNTdGFydCwgZnJhZ21lbnRTdGFydCwgY29udGV4dEVsZW1lbnQsIGRvbVN0
YXJ0LCBkb207CisgICAgdmFyIGlucHV0LCBlcnJvcnNTdGFydCwgZnJhZ21lbnQsIGZyYWdtZW50
U3RhcnQsIGNvbnRleHRFbGVtZW50LCBkb21TdGFydCwgZG9tOwogICAgIGlmIChkYXRhID0gdGVz
dHMuc2hpZnQoKSkKICAgICB7CiAgICAgICAgIHN0YXQuZGF0YSA9ICJSdW5uaW5nIHRlc3QgIiAr
IHRlc3RfbnVtYmVyICsgIiBvZiAiICsgKHRlc3RfbnVtYmVyICsgdGVzdHMubGVuZ3RoKSArICIg
aW4gIiArIGZpbGU7CkBAIC05Niw3ICs5Niw4IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAg
ICAgZG9tU3RhcnQgPSBkYXRhLmluZGV4T2YoIlxuI2RvY3VtZW50XG4iKQogICAgICAgICAgICAg
aWYgKGZyYWdtZW50U3RhcnQgIT09IC0xKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IGNvbnRleHRFbGVtZW50ID0gZGF0YS5zdWJzdHJpbmcoZnJhZ21lbnRTdGFydCArIDIwLCBkb21T
dGFydCk7CisgICAgICAgICAgICAgICAgZnJhZ21lbnQgPSB0cnVlOworICAgICAgICAgICAgICAg
IGNvbnRleHRFbGVtZW50ID0gZGF0YS5zdWJzdHJpbmcoZnJhZ21lbnRTdGFydCArIDIwLCBkb21T
dGFydCkudHJpbSgpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGRvbVN0YXJ0ICE9
PSAtMSkKICAgICAgICAgICAgIHsKQEAgLTEwNSw3ICsxMDYsNyBAQCBmdW5jdGlvbiB0ZXN0KCkK
ICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIGRvbSA9IGRvbS5zdWJzdHJp
bmcoMCwgZG9tLmxlbmd0aCAtIDEpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICBydW5fdGVzdChpbnB1dCwgY29udGV4dEVsZW1lbnQsIGRvbSk7CisgICAgICAgICAgICAgICAg
cnVuX3Rlc3QoaW5wdXQsIGZyYWdtZW50LCBjb250ZXh0RWxlbWVudCwgZG9tKTsKICAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTE0MiwxNiArMTQz
LDIzIEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgIH0KIH0KIAotZnVuY3Rpb24gcnVuX3Rlc3QoaW5w
dXQsIGNvbnRleHRFbGVtZW50LCBleHBlY3RlZCkKK2Z1bmN0aW9uIHJ1bl90ZXN0KGlucHV0LCBm
cmFnbWVudCwgY29udGV4dEVsZW1lbnQsIGV4cGVjdGVkKQogewotICAgIGlmIChjb250ZXh0RWxl
bWVudCkKKyAgICBpZiAoZnJhZ21lbnQpCiAgICAgewotICAgICAgICB2YXIgZWxlbWVudCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoY29udGV4dEVsZW1lbnQpOwotICAgICAgICB0cnkKLSAgICAg
ICAgewotICAgICAgICAgICAgZWxlbWVudC5pbm5lckhUTUwgPSBpbnB1dDsKKyAgICAgICAgdmFy
IGVsZW1lbnQ7CisgICAgICAgIGlmIChjb250ZXh0RWxlbWVudCkgeworICAgICAgICAgICAgZWxl
bWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoY29udGV4dEVsZW1lbnQpOworICAgICAgICAg
ICAgdHJ5CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZWxlbWVudC5pbm5lckhUTUwg
PSBpbnB1dDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhdGNoKGUpIHt9CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBk
b2N1bWVudC5wYXJzZShpbnB1dCk7CisgICAgICAgICAgICB9IGNhdGNoIChlKSB7fQogICAgICAg
ICB9Ci0gICAgICAgIGNhdGNoKGUpIHt9CiAgICAgICAgIHByb2Nlc3NfcmVzdWx0KGlucHV0LCBl
bGVtZW50LCBleHBlY3RlZCk7CiAgICAgfQogICAgIGVsc2UgaWYgKHdyaXRlKQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHRtbDVsaWIvcnVuLWRvY3VtZW50LXBhcnNlLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2h0bWw1bGliL3J1bi1kb2N1bWVudC1wYXJzZS1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uODYyODY4YjIzNjY3MmFjN2RmNmQ2NmQyZWY3ZGMxYTYwNTcwNDJlZAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0bWw1bGliL3J1bi1kb2N1bWVudC1wYXJzZS1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSBAQAorcmVzb3VyY2VzL2RvY3VtZW50LXBhcnNlLmRhdDogUEFT
UwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHRtbDVsaWIvcnVuLWRvY3VtZW50LXBhcnNlLmh0
bWwgYi9MYXlvdXRUZXN0cy9odG1sNWxpYi9ydW4tZG9jdW1lbnQtcGFyc2UuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mOTA0ZWE3NTdiOTgyY2Q5M2NlMmRjMWQ5NTRiMTNmZWFiYWQ5Y2I4Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaHRtbDVsaWIvcnVuLWRvY3VtZW50LXBhcnNlLmh0bWwKQEAg
LTAsMCArMSw4IEBACis8IWRvY3R5cGUgaHRtbD4KKzxzY3JpcHQ+Cit2YXIgdGVzdF9maWxlcyA9
IFsKKyAgJ3Jlc291cmNlcy9kb2N1bWVudC1wYXJzZS5kYXQnLAorXQorPC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vcmVzb3VyY2VzL2R1bXAtYXMtbWFya3VwLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvcnVubmVyLmpzIj48L3NjcmlwdD4KXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>