<?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>95930</bug_id>
          
          <creation_ts>2012-09-05 21:14:30 -0700</creation_ts>
          <short_desc>Ensure variables are resolved for specialized CSS primitive value types.</short_desc>
          <delta_ts>2012-10-16 21:57:24 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>97752</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Luke Macpherson">macpherson</reporter>
          <assigned_to name="Luke Macpherson">macpherson</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>kling</cc>
    
    <cc>mario</cc>
    
    <cc>menard</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>712841</commentid>
    <comment_count>0</comment_count>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2012-09-05 21:14:30 -0700</bug_when>
    <thetext>Ensure variables are resolved for specialized CSS primitive value types.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712844</commentid>
    <comment_count>1</comment_count>
      <attachid>162407</attachid>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2012-09-05 21:20:53 -0700</bug_when>
    <thetext>Created attachment 162407
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712915</commentid>
    <comment_count>2</comment_count>
      <attachid>162407</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-09-05 23:09:39 -0700</bug_when>
    <thetext>Comment on attachment 162407
Patch

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

I don&apos;t know enough about CSS variables to say anything about the correctness, but here are a few comments.

The tests seem limited compared to the change. Isn&apos;t any of serializeResolvingVariables exposed to JavaScript through CSSOM?

&gt; Source/WebCore/css/CSSBasicShapes.cpp:64
&gt; -    if (m_radiusX.get()) {
&gt; +    if (!radiusX.isEmpty()) {
&gt;          result.appendLiteral(&quot;, &quot;);
&gt; -        result.append(m_radiusX-&gt;cssText());
&gt; +        result.append(radiusX);
&gt;  
&gt; -        if (m_radiusY.get()) {
&gt; +        if (!radiusY.isEmpty()) {
&gt;              result.appendLiteral(&quot;, &quot;);
&gt; -            result.append(m_radiusY-&gt;cssText());
&gt; +            result.append(radiusY);

You should be using null string when there is no value. You could replace the String::isEmpty() by a the stronger constraint isNull().

&gt; Source/WebCore/css/CSSBasicShapes.cpp:80
&gt; +                                m_radiusX.get() ? m_radiusX-&gt;cssText() : emptyString(),
&gt; +                                m_radiusY.get() ? m_radiusY-&gt;cssText() : emptyString());

This should be using Sring() instead of emptyString().

&gt; Source/WebCore/css/CSSBasicShapes.cpp:215
&gt; +StringBuilder result;

Indent.

&gt; Source/WebCore/css/CSSBasicShapes.cpp:216
&gt; +    result.reserveCapacity(32);

This looks wrong. Please add a comment justifying the value.

&gt; Source/WebCore/css/Pair.h:53
&gt; +    static String pairString(const String&amp; first, const String&amp; second)

The name is a bit misleading due to the first if().

&gt; Source/WebCore/css/Pair.h:56
&gt; +        if (first == second)
&gt; +            return first;

This is so very strange. No idea if it is correct though :)

&gt; Source/WebCore/css/Pair.h:62
&gt; +        StringBuilder result;
&gt; +        result.append(first);
&gt; +        result.append(&apos; &apos;);
&gt; +        result.append(second);
&gt; +        return result.toString();

This should use String operators:
    return first + &apos; &apos; + second;

Where there is no branch, the string operators often do a better job than SringBuilder.

&gt; Source/WebCore/css/Rect.h:89
&gt; +        StringBuilder result;
&gt; +        result.append(&quot;rect(&quot;);
&gt; +        result.append(top);
&gt; +        result.append(&apos; &apos;);
&gt; +        result.append(right);
&gt; +        result.append(&apos; &apos;);
&gt; +        result.append(bottom);
&gt; +        result.append(&apos; &apos;);
&gt; +        result.append(left);
&gt; +        result.append(&apos;)&apos;);
&gt; +        return result.toString();

This should use String operators.

&gt; Source/WebCore/css/Rect.h:90
&gt; +

blank line...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714067</commentid>
    <comment_count>3</comment_count>
      <attachid>162664</attachid>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2012-09-06 21:30:32 -0700</bug_when>
    <thetext>Created attachment 162664
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721656</commentid>
    <comment_count>4</comment_count>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2012-09-16 18:32:22 -0700</bug_when>
    <thetext>You can&apos;t access variables through CSSOM yet. That behavior isn&apos;t actually specified by CSSWG yet, though I&apos;ve been talking to Tab about it and we should have something on that front soon. All the code related feedback has been addressed in that last patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725630</commentid>
    <comment_count>5</comment_count>
      <attachid>162664</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-09-21 10:46:08 -0700</bug_when>
    <thetext>Comment on attachment 162664
Patch

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

&gt; Source/WebCore/ChangeLog:22
&gt; +        * css/CSSBasicShapes.cpp:
&gt; +        (WebCore::buildRectangleString):
&gt; +        (WebCore::CSSBasicShapeRectangle::cssText):
&gt; +        (WebCore):
&gt; +        (WebCore::CSSBasicShapeRectangle::serializeResolvingVariables):
&gt; +        (WebCore::CSSBasicShapeRectangle::hasVariableReference):
&gt; +        (WebCore::buildCircleString):
&gt; +        (WebCore::CSSBasicShapeCircle::cssText):

Please list a description of your change here.  For example, you don&apos;t need to fill in all the hasVariableReference and serializeResolvingVariables sections, but in the first one you could mention the changes you&apos;re making.  The changes in CSSPrimitiveValue.cpp and StyleResolver.cpp could use some explanation too.

&gt; Source/WebCore/css/CSSBasicShapes.cpp:151
&gt; +String CSSBasicShapePolygon::cssText() const
&gt; +{
&gt;      StringBuilder result;

The duplicated code with serializeResolvingVariables is unfortunate.  Maybe you could make a helper function that takes a Vector&lt;String&gt; and cssTest/serializeResolvingVariables would pass in the constructed Vector?

&gt; Source/WebCore/css/CSSBasicShapes.cpp:160
&gt; +    for (unsigned i = 0; i &lt; m_values.size(); i += 2) {

Nit: unsigned -&gt; size_t

&gt; Source/WebCore/css/CSSBasicShapes.cpp:185
&gt;      for (unsigned i = 0; i &lt; m_values.size(); i += 2) {

Nit: unsigned -&gt; size_t

&gt; Source/WebCore/css/CSSBasicShapes.cpp:200
&gt; +    for (unsigned i = 0; i &lt; m_values.size(); i++) {

Nits: unsigned -&gt; size_t, i++ -&gt; ++i

&gt; Source/WebCore/css/Pair.h:53
&gt; +    static String generateCssString(const String&amp; first, const String&amp; second)

Can this be private? Also, it should be generateCSSString.

&gt; Source/WebCore/css/Pair.h:55
&gt; +        if (first == second)

Comparing strings seems like it would be slower than comparing CSSPrimitiveValues.  I would probably just get rid of generateCSSString and duplicate the &apos;if values are the same don&apos;t append&apos; logic since that&apos;s only 3 lines of code and will be different for serializeResolvingVariables.

&gt; Source/WebCore/css/Pair.h:69
&gt; +        return generateCssString(first()-&gt;customSerializeResolvingVariables(variables),
&gt; +                          second()-&gt;customSerializeResolvingVariables(variables));

Nit: Indention here is weird.

&gt; Source/WebCore/css/Rect.h:77
&gt; +    static String generateCssString(const String&amp; top, const String&amp; right, const String&amp; bottom, const String&amp; left)

private, generateCSSString.

&gt; Source/WebCore/css/Rect.h:93
&gt; +        return generateCssString(top()-&gt;customSerializeResolvingVariables(variables),
&gt; +                          right()-&gt;customSerializeResolvingVariables(variables),
&gt; +                          bottom()-&gt;customSerializeResolvingVariables(variables),
&gt; +                          left()-&gt;customSerializeResolvingVariables(variables));

Nit: Indention is weird.

&gt; Source/WebCore/css/Rect.h:108
&gt; +    static String generateCssString(const String&amp; top, const String&amp; right, const String&amp; bottom, const String&amp; left)

private, generateCSSString.

&gt; LayoutTests/ChangeLog:8
&gt; +        Add tests that use specialized CSS values (eg. pairs, quads).

Can you add tests for all the different shapes (rect, basic shape rect, circle, ellipse, polygon)?

&gt; LayoutTests/fast/css/variables/root-background-size.html:4
&gt; +try { internals.settings.setCSSVariablesEnabled(true); } catch (e) {}

Why is this in a try/catch?  Shouldn&apos;t we be checking for window.internals?

&gt; LayoutTests/fast/css/variables/var-inside-pair.html:4
&gt; +internals.settings.setCSSVariablesEnabled(true);

Please wrap this in a window.internals check.

&gt; LayoutTests/fast/css/variables/var-inside-quad.html:4
&gt; +internals.settings.setCSSVariablesEnabled(true);

Please wrap this in a window.internals check.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727190</commentid>
    <comment_count>6</comment_count>
      <attachid>165498</attachid>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2012-09-24 19:02:06 -0700</bug_when>
    <thetext>Created attachment 165498
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727759</commentid>
    <comment_count>7</comment_count>
      <attachid>165498</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-09-25 10:12:46 -0700</bug_when>
    <thetext>Comment on attachment 165498
Patch

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

I didn’t review the whole patch, but I have a couple comment on some aspects of it.

&gt; Source/WebCore/css/CSSBasicShapes.cpp:40
&gt; +static String buildRectangleString(const String&amp; x, const String&amp; y, const String&amp; width, const String&amp; height, const String&amp; radiusX, const String&amp; radiusY)

This interface for the helper function guarantees lots of memory allocation and therefore slow performance. To call this we need to allocate a separate string buffer for each of these arguments and then free it as we append these all into a final string.

We should not code this in a way that is so inefficient. Instead we need to change the way we build up CSS text so that instead of the cssText function we have an appendCSSText function that takes a StringBuilder object. The design pattern here is already bad, but the code change makes it even worse and increases the challenge of refactoring to fix it.

&gt; Source/WebCore/css/CSSBasicShapes.cpp:-43
&gt; -    result.reserveCapacity(32);

Why remove this line of code? It’s a performance optimization, presumably. Did you measure and determine it’s not needed.

&gt; Source/WebCore/css/CSSBasicShapes.cpp:70
&gt; +    return buildRectangleString(m_x-&gt;cssText(),
&gt; +                                m_y-&gt;cssText(),
&gt; +                                m_width-&gt;cssText(),
&gt; +                                m_height-&gt;cssText(),
&gt; +                                m_radiusX.get() ? m_radiusX-&gt;cssText() : String(),
&gt; +                                m_radiusY.get() ? m_radiusY-&gt;cssText() : String());

Coding style guide specifically forbids this kind of function call formatting where we indent to match the function name.

&gt; Source/WebCore/css/CSSBasicShapes.cpp:179
&gt; +        points.append(m_values.at(i)-&gt;cssText());

This approach is intrinsically inefficient, allocating a separate memory buffer for the string form of each point and then destroying them all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727778</commentid>
    <comment_count>8</comment_count>
      <attachid>165498</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-09-25 10:31:57 -0700</bug_when>
    <thetext>Comment on attachment 165498
Patch

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

&gt;&gt; Source/WebCore/css/CSSBasicShapes.cpp:40
&gt;&gt; +static String buildRectangleString(const String&amp; x, const String&amp; y, const String&amp; width, const String&amp; height, const String&amp; radiusX, const String&amp; radiusY)
&gt; 
&gt; This interface for the helper function guarantees lots of memory allocation and therefore slow performance. To call this we need to allocate a separate string buffer for each of these arguments and then free it as we append these all into a final string.
&gt; 
&gt; We should not code this in a way that is so inefficient. Instead we need to change the way we build up CSS text so that instead of the cssText function we have an appendCSSText function that takes a StringBuilder object. The design pattern here is already bad, but the code change makes it even worse and increases the challenge of refactoring to fix it.

Isn&apos;t this the same as before?  Before we would call cssText() on each member variable which would also create a string buffer.

I agree that it would be more efficient to switch to an appendCSSText style interface, but this applies to all the CSS Value classes, right?  Maybe Luke would be willing to do that refactoring before landing this patch.

&gt;&gt; Source/WebCore/css/CSSBasicShapes.cpp:179
&gt;&gt; +        points.append(m_values.at(i)-&gt;cssText());
&gt; 
&gt; This approach is intrinsically inefficient, allocating a separate memory buffer for the string form of each point and then destroying them all.

I agree that this is inefficient.  The tradeoff is duplicating code inside the #if.  It wasn&apos;t clear to me that this function was performance critical.  It&apos;s only called if someone tries to read the CSS style values back out in JS or maybe if copying it to the pasteboard if it&apos;s inline.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727786</commentid>
    <comment_count>9</comment_count>
      <attachid>165498</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-09-25 10:50:43 -0700</bug_when>
    <thetext>Comment on attachment 165498
Patch

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

&gt;&gt;&gt; Source/WebCore/css/CSSBasicShapes.cpp:179
&gt;&gt;&gt; +        points.append(m_values.at(i)-&gt;cssText());
&gt;&gt; 
&gt;&gt; This approach is intrinsically inefficient, allocating a separate memory buffer for the string form of each point and then destroying them all.
&gt; 
&gt; I agree that this is inefficient.  The tradeoff is duplicating code inside the #if.  It wasn&apos;t clear to me that this function was performance critical.  It&apos;s only called if someone tries to read the CSS style values back out in JS or maybe if copying it to the pasteboard if it&apos;s inline.

Actually, the previous code was also allocating a separate memory buffer for each string by calling cssText() on each value.  The difference is in allocating the Vector.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727962</commentid>
    <comment_count>10</comment_count>
      <attachid>165498</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-09-25 14:21:42 -0700</bug_when>
    <thetext>Comment on attachment 165498
Patch

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

&gt;&gt; Source/WebCore/css/CSSBasicShapes.cpp:70
&gt;&gt; +                                m_radiusY.get() ? m_radiusY-&gt;cssText() : String());
&gt; 
&gt; Coding style guide specifically forbids this kind of function call formatting where we indent to match the function name.

I wasn&apos;t able to find this explicitly mentioned in the style guide, but I agree that this violates &quot;The indent size is 4 spaces.&quot;  I&apos;ve written a patch for check-webkit-style to warn about this: https://bugs.webkit.org/show_bug.cgi?id=97602</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728106</commentid>
    <comment_count>11</comment_count>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2012-09-25 17:59:47 -0700</bug_when>
    <thetext>Making cssText() write its output into a StringBuilder would make these complex cases faster, but perhaps it would make the simple (and probably more common) cases like simple values (eg. &quot;3px&quot;) slower. We could support two versions of cssText() everywhere, but then you&apos;d be duplicating code again which is also undesirable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728117</commentid>
    <comment_count>12</comment_count>
      <attachid>165498</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-25 18:17:34 -0700</bug_when>
    <thetext>Comment on attachment 165498
Patch

Clearing flags on attachment: 165498

Committed r129579: &lt;http://trac.webkit.org/changeset/129579&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728118</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-25 18:17:38 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728203</commentid>
    <comment_count>14</comment_count>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2012-09-25 22:40:38 -0700</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728204</commentid>
    <comment_count>15</comment_count>
      <attachid>165730</attachid>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2012-09-25 22:40:42 -0700</bug_when>
    <thetext>Created attachment 165730
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728724</commentid>
    <comment_count>16</comment_count>
      <attachid>165730</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-09-26 10:43:52 -0700</bug_when>
    <thetext>Comment on attachment 165730
Patch

OK, but normally we file a new bug for additional changes, even for small things like fixing indent style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729066</commentid>
    <comment_count>17</comment_count>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2012-09-26 16:38:55 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; (From update of attachment 165730 [details])
&gt; OK, but normally we file a new bug for additional changes, even for small things like fixing indent style.

This is confusing... I had cq+ then cleared the cq on the previous patch before it landed to make the changes, and then later in the day I webkit-patch uploaded a new patch... does webkit-patch upload insert the text &quot;Reopening to attach new patch.&quot; on my behalf, &apos;cause I sure didn&apos;t do that myself.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729081</commentid>
    <comment_count>18</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-09-26 17:03:34 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; 
&gt; This is confusing... I had cq+ then cleared the cq on the previous patch before it landed to make the changes, and then later in the day I webkit-patch uploaded a new patch... does webkit-patch upload insert the text &quot;Reopening to attach new patch.&quot; on my behalf, &apos;cause I sure didn&apos;t do that myself.

I think what happened is, we didn&apos;t clear the cq+ fast enough and the cq landed the patch and closed the bug.  Later in the day, you uploaded a new patch which reopened the bug and added the comment (I think webkit-patch does this).

I would close this bug and open a new bug with the style fixes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729694</commentid>
    <comment_count>19</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-09-27 10:49:27 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 165498 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=165498&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/css/CSSBasicShapes.cpp:40
&gt; &gt;&gt; +static String buildRectangleString(const String&amp; x, const String&amp; y, const String&amp; width, const String&amp; height, const String&amp; radiusX, const String&amp; radiusY)
&gt; &gt; 
&gt; &gt; This interface for the helper function guarantees lots of memory allocation and therefore slow performance. To call this we need to allocate a separate string buffer for each of these arguments and then free it as we append these all into a final string.
&gt; &gt; 
&gt; &gt; We should not code this in a way that is so inefficient. Instead we need to change the way we build up CSS text so that instead of the cssText function we have an appendCSSText function that takes a StringBuilder object. The design pattern here is already bad, but the code change makes it even worse and increases the challenge of refactoring to fix it.
&gt; 
&gt; Isn&apos;t this the same as before?  Before we would call cssText() on each member variable which would also create a string buffer.

What’s different is that this flawed strategy is now not only in the function, but also in the interface to the newly-added helper function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>742970</commentid>
    <comment_count>20</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2012-10-16 01:58:45 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 165498 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=165498&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/css/CSSBasicShapes.cpp:70
&gt; &gt;&gt; +                                m_radiusY.get() ? m_radiusY-&gt;cssText() : String());
&gt; &gt; 
&gt; &gt; Coding style guide specifically forbids this kind of function call formatting where we
&gt; indent to match the function name.
&gt; 
&gt; I wasn&apos;t able to find this explicitly mentioned in the style guide, but I agree that this
&gt; violates &quot;The indent size is 4 spaces.&quot;  I&apos;ve written a patch for check-webkit-style to
&gt; warn about this: https://bugs.webkit.org/show_bug.cgi?id=97602

As Luke mentioned in bug 97602 (see [1]), I also think that &quot;the style guide seems to refer more to new blocks of code than to aligning successive lines in a case like a function call.&quot;

This issue is usually causing some confusion (see [1], for instance) since bug 97602 got fixed, and so I&apos;d be very interested in clarifying what we could do from this point on.

Should we fix the check-webkit-style script? Should we force all newly written code to be written this way? Should we add an exception for some cases (e.g. GTK+ API)?

Opinions are very welcome. I understand Darin&apos;s experience in WebKit is huge and so he&apos;s probably right on his statement, but I have to ask anyway to dissipate any doubt on this regard.

Thanks in advance.

[1] https://bugs.webkit.org/show_bug.cgi?id=97602#c9
[2] https://bugs.webkit.org/show_bug.cgi?id=98874#c14)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>743301</commentid>
    <comment_count>21</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-10-16 10:53:51 -0700</bug_when>
    <thetext>We should make an exception for the GTK+ API.  Please file a bug against check-webkit-style and CC me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>743843</commentid>
    <comment_count>22</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2012-10-16 21:57:24 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; We should make an exception for the GTK+ API.  Please file a bug against
&gt; check-webkit-style and CC me.

Thanks for replying. I understand then that this is the expected indentation for a multiline statement from now on in general:

    fooBarFunction(foobarbaz,
                foobarbaz);

Darin, as the one who first raised this issue, could you comment as well on this?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162407</attachid>
            <date>2012-09-05 21:20:53 -0700</date>
            <delta_ts>2012-09-06 21:30:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95930-20120906142033.patch</filename>
            <type>text/plain</type>
            <size>27845</size>
            <attacher name="Luke Macpherson">macpherson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3NjYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2Q5MWU1YTc3MWM2MjE1
MDQwODZiMDA5YTYyODYxMGM1NmJjZjAxYi4uOTc4YzJlNmNlNGQzNjAxMGM2YzMwMGFkOGIxMmE3
NTMyYjAwMzkyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDEyLTA5LTA1ICBMdWtl
IE1hY3BoZXJzb24gICA8bWFjcGhlcnNvbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgRW5zdXJl
IHZhcmlhYmxlcyBhcmUgcmVzb2x2ZWQgZm9yIHNwZWNpYWxpemVkIENTUyBwcmltaXRpdmUgdmFs
dWUgdHlwZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05NTkzMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFNvbWV0aW1lcyBDU1NQcmltaXRpdmVWYWx1ZSBjb250YWlucyBhIGNvbGxlY3Rpb24gb2Ygb3Ro
ZXIgQ1NTUHJpbWl0aXZlVmFsdWVzIChlZy4gMiwgNCBvciBuKS4KKyAgICAgICAgVGhpcyBwYXRj
aCBtYWtlcyBzdXJlIGFueSB2YXJpYWJsZXMgY29udGFpbmVkIGluc2lkZSB0aG9zZSBjaGlsZCB2
YWx1ZXMgYXJlIHJlc29sdmVkLgorCisgICAgICAgIFRlc3RzOiBmYXN0L2Nzcy92YXJpYWJsZXMv
cm9vdC1iYWNrZ3JvdW5kLXNpemUuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9jc3MvdmFyaWFi
bGVzL3Zhci1pbnNpZGUtcGFpci5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Nzcy92YXJpYWJs
ZXMvdmFyLWluc2lkZS1xdWFkLmh0bWwKKworICAgICAgICAqIGNzcy9DU1NCYXNpY1NoYXBlcy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpidWlsZFJlY3RhbmdsZVN0cmluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NCYXNpY1NoYXBlUmVjdGFuZ2xlOjpjc3NUZXh0KToKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQmFzaWNTaGFwZVJlY3RhbmdsZTo6c2VyaWFsaXpl
UmVzb2x2aW5nVmFyaWFibGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Jhc2ljU2hhcGVSZWN0
YW5nbGU6Omhhc1ZhcmlhYmxlUmVmZXJlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkQ2ly
Y2xlU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Jhc2ljU2hhcGVDaXJjbGU6OmNzc1Rl
eHQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQmFzaWNTaGFwZUNpcmNsZTo6c2VyaWFsaXplUmVz
b2x2aW5nVmFyaWFibGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Jhc2ljU2hhcGVDaXJjbGU6
Omhhc1ZhcmlhYmxlUmVmZXJlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkRWxsaXBzZVN0
cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NCYXNpY1NoYXBlRWxsaXBzZTo6Y3NzVGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NCYXNpY1NoYXBlRWxsaXBzZTo6c2VyaWFsaXplUmVzb2x2
aW5nVmFyaWFibGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Jhc2ljU2hhcGVFbGxpcHNlOjpo
YXNWYXJpYWJsZVJlZmVyZW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NCYXNpY1NoYXBlUG9s
eWdvbjo6c2VyaWFsaXplUmVzb2x2aW5nVmFyaWFibGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U0Jhc2ljU2hhcGVQb2x5Z29uOjpoYXNWYXJpYWJsZVJlZmVyZW5jZSk6CisgICAgICAgICogY3Nz
L0NTU0Jhc2ljU2hhcGVzLmg6CisgICAgICAgIChDU1NCYXNpY1NoYXBlUmVjdGFuZ2xlKToKKyAg
ICAgICAgKENTU0Jhc2ljU2hhcGVDaXJjbGUpOgorICAgICAgICAoQ1NTQmFzaWNTaGFwZUVsbGlw
c2UpOgorICAgICAgICAoQ1NTQmFzaWNTaGFwZVBvbHlnb24pOgorICAgICAgICAqIGNzcy9DU1NQ
cmltaXRpdmVWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6
Y3VzdG9tQ3NzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6Y3Vz
dG9tU2VyaWFsaXplUmVzb2x2aW5nVmFyaWFibGVzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6Omhhc1ZhcmlhYmxlUmVmZXJlbmNlKToK
KyAgICAgICAgKiBjc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaDoKKyAgICAgICAgKENTU1ByaW1pdGl2
ZVZhbHVlKToKKyAgICAgICAgKiBjc3MvUGFpci5oOgorICAgICAgICAoV2ViQ29yZTo6UGFpcjo6
cGFpclN0cmluZyk6CisgICAgICAgIChQYWlyKToKKyAgICAgICAgKFdlYkNvcmU6OlBhaXI6OmNz
c1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6UGFpcjo6c2VyaWFsaXplUmVzb2x2aW5nVmFyaWFi
bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlBhaXI6Omhhc1ZhcmlhYmxlUmVmZXJlbmNlKToKKyAg
ICAgICAgKiBjc3MvUmVjdC5oOgorICAgICAgICAoUmVjdEJhc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVjdEJhc2U6Omhhc1ZhcmlhYmxlUmVmZXJlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
Y3Q6OnJlY3RTdHJpbmcpOgorICAgICAgICAoUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZWN0
Ojpjc3NUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlY3Q6OnNlcmlhbGl6ZVJlc29sdmluZ1Zh
cmlhYmxlcyk6CisgICAgICAgIChXZWJDb3JlOjpRdWFkOjpxdWFkU3RyaW5nKToKKyAgICAgICAg
KFF1YWQpOgorICAgICAgICAoV2ViQ29yZTo6UXVhZDo6Y3NzVGV4dCk6CisgICAgICAgIChXZWJD
b3JlOjpRdWFkOjpzZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXMpOgorICAgICAgICAqIGNzcy9T
dHlsZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmNvbGxl
Y3RNYXRjaGluZ1J1bGVzRm9yTGlzdCk6CisKIDIwMTItMDktMDUgIFBhdHJpY2sgR2Fuc3RlcmVy
ICA8cGFyb2dhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQnVpbGQgZml4IGZvciBXaW5kb3dzLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Jhc2ljU2hhcGVzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5jcHAKaW5kZXggYzA3ZDY2M2M2MzgxNzIwODQ4
NjY3Yjk1MTcwZjZhODFhMzc1ZmFjOS4uZWQwNTc2NDQ3YTdkZDM2Y2YyZWZiZWE2OTcyNmRlYTVh
ZDJhOWNmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Jhc2ljU2hhcGVzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQmFzaWNTaGFwZXMuY3BwCkBAIC0zNywzMSAr
MzcsMzEgQEAgdXNpbmcgbmFtZXNwYWNlIFdURjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1T
dHJpbmcgQ1NTQmFzaWNTaGFwZVJlY3RhbmdsZTo6Y3NzVGV4dCgpIGNvbnN0CitzdGF0aWMgU3Ry
aW5nIGJ1aWxkUmVjdGFuZ2xlU3RyaW5nKGNvbnN0IFN0cmluZyYgeCwgY29uc3QgU3RyaW5nJiB5
LCBjb25zdCBTdHJpbmcmIHdpZHRoLCBjb25zdCBTdHJpbmcmIGhlaWdodCwgY29uc3QgU3RyaW5n
JiByYWRpdXNYLCBjb25zdCBTdHJpbmcmIHJhZGl1c1kpCiB7CiAgICAgU3RyaW5nQnVpbGRlciBy
ZXN1bHQ7CiAgICAgcmVzdWx0LnJlc2VydmVDYXBhY2l0eSgzMik7CiAKICAgICByZXN1bHQuYXBw
ZW5kTGl0ZXJhbCgicmVjdGFuZ2xlKCIpOwogCi0gICAgcmVzdWx0LmFwcGVuZChtX3gtPmNzc1Rl
eHQoKSk7CisgICAgcmVzdWx0LmFwcGVuZCh4KTsKICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgi
LCAiKTsKIAotICAgIHJlc3VsdC5hcHBlbmQobV95LT5jc3NUZXh0KCkpOworICAgIHJlc3VsdC5h
cHBlbmQoeSk7CiAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiwgIik7CiAKLSAgICByZXN1bHQu
YXBwZW5kKG1fd2lkdGgtPmNzc1RleHQoKSk7CisgICAgcmVzdWx0LmFwcGVuZCh3aWR0aCk7CiAg
ICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiwgIik7CiAKLSAgICByZXN1bHQuYXBwZW5kKG1faGVp
Z2h0LT5jc3NUZXh0KCkpOworICAgIHJlc3VsdC5hcHBlbmQoaGVpZ2h0KTsKIAotICAgIGlmICht
X3JhZGl1c1guZ2V0KCkpIHsKKyAgICBpZiAoIXJhZGl1c1guaXNFbXB0eSgpKSB7CiAgICAgICAg
IHJlc3VsdC5hcHBlbmRMaXRlcmFsKCIsICIpOwotICAgICAgICByZXN1bHQuYXBwZW5kKG1fcmFk
aXVzWC0+Y3NzVGV4dCgpKTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChyYWRpdXNYKTsKIAotICAg
ICAgICBpZiAobV9yYWRpdXNZLmdldCgpKSB7CisgICAgICAgIGlmICghcmFkaXVzWS5pc0VtcHR5
KCkpIHsKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCIsICIpOwotICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZChtX3JhZGl1c1ktPmNzc1RleHQoKSk7CisgICAgICAgICAgICByZXN1
bHQuYXBwZW5kKHJhZGl1c1kpOwogICAgICAgICB9CiAgICAgfQogCkBAIC03MCw0NiArNzAsMTIw
IEBAIFN0cmluZyBDU1NCYXNpY1NoYXBlUmVjdGFuZ2xlOjpjc3NUZXh0KCkgY29uc3QKICAgICBy
ZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CiB9CiAKLVN0cmluZyBDU1NCYXNpY1NoYXBlQ2lyY2xl
Ojpjc3NUZXh0KCkgY29uc3QKK1N0cmluZyBDU1NCYXNpY1NoYXBlUmVjdGFuZ2xlOjpjc3NUZXh0
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gYnVpbGRSZWN0YW5nbGVTdHJpbmcobV94LT5jc3NUZXh0
KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1feS0+Y3NzVGV4dCgpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3dpZHRoLT5jc3NUZXh0KCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1faGVpZ2h0LT5jc3NUZXh0KCksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1fcmFkaXVzWC5nZXQoKSA/IG1fcmFkaXVzWC0+Y3NzVGV4
dCgpIDogZW1wdHlTdHJpbmcoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9y
YWRpdXNZLmdldCgpID8gbV9yYWRpdXNZLT5jc3NUZXh0KCkgOiBlbXB0eVN0cmluZygpKTsKK30K
KworI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQorU3RyaW5nIENTU0Jhc2ljU2hhcGVSZWN0YW5n
bGU6OnNlcmlhbGl6ZVJlc29sdmluZ1ZhcmlhYmxlcyhjb25zdCBIYXNoTWFwPEF0b21pY1N0cmlu
ZywgU3RyaW5nPiYgdmFyaWFibGVzKSBjb25zdAoreworICAgIHJldHVybiBidWlsZFJlY3Rhbmds
ZVN0cmluZyhtX3gtPnNlcmlhbGl6ZVJlc29sdmluZ1ZhcmlhYmxlcyh2YXJpYWJsZXMpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3ktPnNlcmlhbGl6ZVJlc29sdmluZ1Zhcmlh
Ymxlcyh2YXJpYWJsZXMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3dpZHRo
LT5zZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXModmFyaWFibGVzKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbV9oZWlnaHQtPnNlcmlhbGl6ZVJlc29sdmluZ1ZhcmlhYmxlcyh2
YXJpYWJsZXMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3JhZGl1c1guZ2V0
KCkgPyBtX3JhZGl1c1gtPnNlcmlhbGl6ZVJlc29sdmluZ1ZhcmlhYmxlcyh2YXJpYWJsZXMpIDog
ZW1wdHlTdHJpbmcoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9yYWRpdXNZ
LmdldCgpID8gbV9yYWRpdXNZLT5zZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXModmFyaWFibGVz
KSA6IGVtcHR5U3RyaW5nKCkpOworfQorCitib29sIENTU0Jhc2ljU2hhcGVSZWN0YW5nbGU6Omhh
c1ZhcmlhYmxlUmVmZXJlbmNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV94LT5oYXNWYXJpYWJs
ZVJlZmVyZW5jZSgpCisgICAgICAgIHx8IG1feS0+aGFzVmFyaWFibGVSZWZlcmVuY2UoKQorICAg
ICAgICB8fCBtX3dpZHRoLT5oYXNWYXJpYWJsZVJlZmVyZW5jZSgpCisgICAgICAgIHx8IG1faGVp
Z2h0LT5oYXNWYXJpYWJsZVJlZmVyZW5jZSgpCisgICAgICAgIHx8IChtX3JhZGl1c1guZ2V0KCkg
JiYgbV9yYWRpdXNYLT5oYXNWYXJpYWJsZVJlZmVyZW5jZSgpKQorICAgICAgICB8fCAobV9yYWRp
dXNZLmdldCgpICYmIG1fcmFkaXVzWS0+aGFzVmFyaWFibGVSZWZlcmVuY2UoKSk7Cit9CisjZW5k
aWYKKworc3RhdGljIFN0cmluZyBidWlsZENpcmNsZVN0cmluZyhjb25zdCBTdHJpbmcmIHgsIGNv
bnN0IFN0cmluZyYgeSwgY29uc3QgU3RyaW5nJiByYWRpdXMpCiB7CiAgICAgU3RyaW5nQnVpbGRl
ciByZXN1bHQ7Ci0gICAgcmVzdWx0LnJlc2VydmVDYXBhY2l0eSgzMik7CiAKICAgICByZXN1bHQu
YXBwZW5kTGl0ZXJhbCgiY2lyY2xlKCIpOwogCi0gICAgcmVzdWx0LmFwcGVuZChtX2NlbnRlclgt
PmNzc1RleHQoKSk7CisgICAgcmVzdWx0LmFwcGVuZCh4KTsKICAgICByZXN1bHQuYXBwZW5kTGl0
ZXJhbCgiLCAiKTsKIAotICAgIHJlc3VsdC5hcHBlbmQobV9jZW50ZXJZLT5jc3NUZXh0KCkpOwor
ICAgIHJlc3VsdC5hcHBlbmQoeSk7CiAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiwgIik7CiAK
LSAgICByZXN1bHQuYXBwZW5kKG1fcmFkaXVzLT5jc3NUZXh0KCkpOworICAgIHJlc3VsdC5hcHBl
bmQocmFkaXVzKTsKICAgICByZXN1bHQuYXBwZW5kKCcpJyk7CiAKICAgICByZXR1cm4gcmVzdWx0
LnRvU3RyaW5nKCk7CiB9CiAKLVN0cmluZyBDU1NCYXNpY1NoYXBlRWxsaXBzZTo6Y3NzVGV4dCgp
IGNvbnN0CitTdHJpbmcgQ1NTQmFzaWNTaGFwZUNpcmNsZTo6Y3NzVGV4dCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIGJ1aWxkQ2lyY2xlU3RyaW5nKG1fY2VudGVyWC0+Y3NzVGV4dCgpLCBtX2NlbnRl
clktPmNzc1RleHQoKSwgbV9yYWRpdXMtPmNzc1RleHQoKSk7Cit9CisKKyNpZiBFTkFCTEUoQ1NT
X1ZBUklBQkxFUykKK1N0cmluZyBDU1NCYXNpY1NoYXBlQ2lyY2xlOjpzZXJpYWxpemVSZXNvbHZp
bmdWYXJpYWJsZXMoY29uc3QgSGFzaE1hcDxBdG9taWNTdHJpbmcsIFN0cmluZz4mIHZhcmlhYmxl
cykgY29uc3QKK3sKKyAgICByZXR1cm4gYnVpbGRDaXJjbGVTdHJpbmcobV9jZW50ZXJYLT5zZXJp
YWxpemVSZXNvbHZpbmdWYXJpYWJsZXModmFyaWFibGVzKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbV9jZW50ZXJZLT5zZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXModmFyaWFibGVz
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9yYWRpdXMtPnNlcmlhbGl6ZVJlc29s
dmluZ1ZhcmlhYmxlcyh2YXJpYWJsZXMpKTsKK30KKworYm9vbCBDU1NCYXNpY1NoYXBlQ2lyY2xl
OjpoYXNWYXJpYWJsZVJlZmVyZW5jZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY2VudGVyWC0+
aGFzVmFyaWFibGVSZWZlcmVuY2UoKQorICAgICAgICB8fCBtX2NlbnRlclktPmhhc1ZhcmlhYmxl
UmVmZXJlbmNlKCkKKyAgICAgICAgfHwgbV9yYWRpdXMtPmhhc1ZhcmlhYmxlUmVmZXJlbmNlKCk7
Cit9CisjZW5kaWYKKworc3RhdGljIFN0cmluZyBidWlsZEVsbGlwc2VTdHJpbmcoY29uc3QgU3Ry
aW5nJiB4LCBjb25zdCBTdHJpbmcmIHksIGNvbnN0IFN0cmluZyYgcmFkaXVzWCwgY29uc3QgU3Ry
aW5nJiByYWRpdXNZKQogewogICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OwotICAgIHJlc3VsdC5y
ZXNlcnZlQ2FwYWNpdHkoMzIpOwogICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCJlbGxpcHNlKCIp
OwogCi0gICAgcmVzdWx0LmFwcGVuZChtX2NlbnRlclgtPmNzc1RleHQoKSk7CisgICAgcmVzdWx0
LmFwcGVuZCh4KTsKICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKIAotICAgIHJlc3Vs
dC5hcHBlbmQobV9jZW50ZXJZLT5jc3NUZXh0KCkpOworICAgIHJlc3VsdC5hcHBlbmQoeSk7CiAg
ICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiwgIik7CiAKLSAgICByZXN1bHQuYXBwZW5kKG1fcmFk
aXVzWC0+Y3NzVGV4dCgpKTsKKyAgICByZXN1bHQuYXBwZW5kKHJhZGl1c1gpOwogICAgIHJlc3Vs
dC5hcHBlbmRMaXRlcmFsKCIsICIpOwogCi0gICAgcmVzdWx0LmFwcGVuZChtX3JhZGl1c1ktPmNz
c1RleHQoKSk7CisgICAgcmVzdWx0LmFwcGVuZChyYWRpdXNZKTsKICAgICByZXN1bHQuYXBwZW5k
KCcpJyk7CiAKICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CiB9CiAKK1N0cmluZyBDU1NC
YXNpY1NoYXBlRWxsaXBzZTo6Y3NzVGV4dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGJ1aWxkRWxs
aXBzZVN0cmluZyhtX2NlbnRlclgtPmNzc1RleHQoKSwgbV9jZW50ZXJZLT5jc3NUZXh0KCksIG1f
cmFkaXVzWC0+Y3NzVGV4dCgpLCBtX3JhZGl1c1ktPmNzc1RleHQoKSk7Cit9CisKKyNpZiBFTkFC
TEUoQ1NTX1ZBUklBQkxFUykKK1N0cmluZyBDU1NCYXNpY1NoYXBlRWxsaXBzZTo6c2VyaWFsaXpl
UmVzb2x2aW5nVmFyaWFibGVzKGNvbnN0IEhhc2hNYXA8QXRvbWljU3RyaW5nLCBTdHJpbmc+JiB2
YXJpYWJsZXMpIGNvbnN0Cit7CisgICAgcmV0dXJuIGJ1aWxkRWxsaXBzZVN0cmluZyhtX2NlbnRl
clgtPnNlcmlhbGl6ZVJlc29sdmluZ1ZhcmlhYmxlcyh2YXJpYWJsZXMpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbV9jZW50ZXJZLT5zZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXMo
dmFyaWFibGVzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcmFkaXVzWC0+c2Vy
aWFsaXplUmVzb2x2aW5nVmFyaWFibGVzKHZhcmlhYmxlcyksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtX3JhZGl1c1ktPnNlcmlhbGl6ZVJlc29sdmluZ1ZhcmlhYmxlcyh2YXJpYWJs
ZXMpKTsKK30KKworYm9vbCBDU1NCYXNpY1NoYXBlRWxsaXBzZTo6aGFzVmFyaWFibGVSZWZlcmVu
Y2UoKSBjb25zdAoreworICAgIHJldHVybiBtX2NlbnRlclgtPmhhc1ZhcmlhYmxlUmVmZXJlbmNl
KCkKKyAgICAgICAgfHwgbV9jZW50ZXJZLT5oYXNWYXJpYWJsZVJlZmVyZW5jZSgpCisgICAgICAg
IHx8IG1fcmFkaXVzWC0+aGFzVmFyaWFibGVSZWZlcmVuY2UoKQorICAgICAgICB8fCBtX3JhZGl1
c1ktPmhhc1ZhcmlhYmxlUmVmZXJlbmNlKCk7Cit9CisjZW5kaWYKKwogU3RyaW5nIENTU0Jhc2lj
U2hhcGVQb2x5Z29uOjpjc3NUZXh0KCkgY29uc3QKIHsKICAgICBTdHJpbmdCdWlsZGVyIHJlc3Vs
dDsKQEAgLTEzNSw1ICsyMDksNDEgQEAgU3RyaW5nIENTU0Jhc2ljU2hhcGVQb2x5Z29uOjpjc3NU
ZXh0KCkgY29uc3QKICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CiB9CiAKKyNpZiBFTkFC
TEUoQ1NTX1ZBUklBQkxFUykKK1N0cmluZyBDU1NCYXNpY1NoYXBlUG9seWdvbjo6c2VyaWFsaXpl
UmVzb2x2aW5nVmFyaWFibGVzKGNvbnN0IEhhc2hNYXA8QXRvbWljU3RyaW5nLCBTdHJpbmc+JiB2
YXJpYWJsZXMpIGNvbnN0Cit7CitTdHJpbmdCdWlsZGVyIHJlc3VsdDsKKyAgICByZXN1bHQucmVz
ZXJ2ZUNhcGFjaXR5KDMyKTsKKworICAgIGlmIChtX3dpbmRSdWxlID09IFJVTEVfRVZFTk9ERCkK
KyAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoInBvbHlnb24oZXZlbm9kZCwgIik7CisgICAg
ZWxzZQorICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgicG9seWdvbihub256ZXJvLCAiKTsK
KworICAgIEFTU0VSVCghKG1fdmFsdWVzLnNpemUoKSAlIDIpKTsKKworICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBtX3ZhbHVlcy5zaXplKCk7IGkgKz0gMikgeworICAgICAgICBpZiAoaSkK
KyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCIsICIpOworICAgICAgICByZXN1bHQu
YXBwZW5kKG1fdmFsdWVzLmF0KGkpLT5zZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXModmFyaWFi
bGVzKSk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAnKTsKKyAgICAgICAgcmVzdWx0LmFwcGVu
ZChtX3ZhbHVlcy5hdChpICsgMSktPnNlcmlhbGl6ZVJlc29sdmluZ1ZhcmlhYmxlcyh2YXJpYWJs
ZXMpKTsKKyAgICB9CisKKyAgICByZXN1bHQuYXBwZW5kKCcpJyk7CisKKyAgICByZXR1cm4gcmVz
dWx0LnRvU3RyaW5nKCk7Cit9CisKK2Jvb2wgQ1NTQmFzaWNTaGFwZVBvbHlnb246Omhhc1Zhcmlh
YmxlUmVmZXJlbmNlKCkgY29uc3QKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV92
YWx1ZXMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgaWYgKG1fdmFsdWVzLmF0KGkpLT5oYXNWYXJp
YWJsZVJlZmVyZW5jZSgpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJl
dHVybiBmYWxzZTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5oIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0Jhc2ljU2hhcGVzLmgKaW5kZXggNTEwMmYyZjBiZDIyNjI0NGFhYzM3OTg0YTNk
NmQxMmJlOTI0ODQ2Yy4uZWJkY2UxZjMyNzdiNmNkNGIwZmJmMmRhYzY3ZTY2Mjk5NDY5ZDllZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Jhc2ljU2hhcGVzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0Jhc2ljU2hhcGVzLmgKQEAgLTUwLDYgKzUwLDExIEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFN0cmlu
ZyBjc3NUZXh0KCkgY29uc3QgPSAwOwogCisjaWYgRU5BQkxFKENTU19WQVJJQUJMRVMpCisgICAg
dmlydHVhbCBTdHJpbmcgc2VyaWFsaXplUmVzb2x2aW5nVmFyaWFibGVzKGNvbnN0IEhhc2hNYXA8
QXRvbWljU3RyaW5nLCBTdHJpbmc+JikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBoYXNW
YXJpYWJsZVJlZmVyZW5jZSgpIGNvbnN0ID0gMDsKKyNlbmRpZgorCiBwdWJsaWM6CiAgICAgdmly
dHVhbCB+Q1NTQmFzaWNTaGFwZSgpIHsgfQogCkBAIC03OCw2ICs4MywxMSBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBDU1NfQkFTSUNfU0hBUEVfUkVD
VEFOR0xFOyB9CiAgICAgdmlydHVhbCBTdHJpbmcgY3NzVGV4dCgpIGNvbnN0OwogCisjaWYgRU5B
QkxFKENTU19WQVJJQUJMRVMpCisgICAgdmlydHVhbCBTdHJpbmcgc2VyaWFsaXplUmVzb2x2aW5n
VmFyaWFibGVzKGNvbnN0IEhhc2hNYXA8QXRvbWljU3RyaW5nLCBTdHJpbmc+JikgY29uc3Q7Cisg
ICAgdmlydHVhbCBib29sIGhhc1ZhcmlhYmxlUmVmZXJlbmNlKCkgY29uc3Q7CisjZW5kaWYKKwog
cHJpdmF0ZToKICAgICBDU1NCYXNpY1NoYXBlUmVjdGFuZ2xlKCkgeyB9CiAKQEAgLTEwNCw2ICsx
MTQsMTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4g
Q1NTX0JBU0lDX1NIQVBFX0NJUkNMRTsgfQogICAgIHZpcnR1YWwgU3RyaW5nIGNzc1RleHQoKSBj
b25zdDsKIAorI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQorICAgIHZpcnR1YWwgU3RyaW5nIHNl
cmlhbGl6ZVJlc29sdmluZ1ZhcmlhYmxlcyhjb25zdCBIYXNoTWFwPEF0b21pY1N0cmluZywgU3Ry
aW5nPiYpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBoYXNWYXJpYWJsZVJlZmVyZW5jZSgpIGNv
bnN0OworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgQ1NTQmFzaWNTaGFwZUNpcmNsZSgpIHsgfQog
CkBAIC0xMjksNiArMTQ0LDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNv
bnN0IHsgcmV0dXJuIENTU19CQVNJQ19TSEFQRV9FTExJUFNFOyB9CiAgICAgdmlydHVhbCBTdHJp
bmcgY3NzVGV4dCgpIGNvbnN0OwogCisjaWYgRU5BQkxFKENTU19WQVJJQUJMRVMpCisgICAgdmly
dHVhbCBTdHJpbmcgc2VyaWFsaXplUmVzb2x2aW5nVmFyaWFibGVzKGNvbnN0IEhhc2hNYXA8QXRv
bWljU3RyaW5nLCBTdHJpbmc+JikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGhhc1ZhcmlhYmxl
UmVmZXJlbmNlKCkgY29uc3Q7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBDU1NCYXNpY1NoYXBl
RWxsaXBzZSgpIHsgfQogCkBAIC0xNTgsNiArMTc4LDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIENTU19CQVNJQ19TSEFQRV9QT0xZR09OOyB9CiAg
ICAgdmlydHVhbCBTdHJpbmcgY3NzVGV4dCgpIGNvbnN0OwogCisjaWYgRU5BQkxFKENTU19WQVJJ
QUJMRVMpCisgICAgdmlydHVhbCBTdHJpbmcgc2VyaWFsaXplUmVzb2x2aW5nVmFyaWFibGVzKGNv
bnN0IEhhc2hNYXA8QXRvbWljU3RyaW5nLCBTdHJpbmc+JikgY29uc3Q7CisgICAgdmlydHVhbCBi
b29sIGhhc1ZhcmlhYmxlUmVmZXJlbmNlKCkgY29uc3Q7CisjZW5kaWYKKwogcHJpdmF0ZToKICAg
ICBDU1NCYXNpY1NoYXBlUG9seWdvbigpCiAgICAgICAgIDogbV93aW5kUnVsZShSVUxFX05PTlpF
Uk8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAppbmRleCA1NjlkNGRj
NWJjNzUwMGJhNjNiNjU1MWY5YzU2ZjA1MzllMWZiNDI3Li42MjQyZjgyYTZmYjlhN2U2MDAxMGMx
ZmM4OTRmOTU5ZDUwNzJlYTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJp
bWl0aXZlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1
ZS5jcHAKQEAgLTk3NCwzMSArOTc0LDEyIEBAIFN0cmluZyBDU1NQcmltaXRpdmVWYWx1ZTo6Y3Vz
dG9tQ3NzVGV4dCgpIGNvbnN0CiAgICAgICAgICAgICB0ZXh0ID0gcmVzdWx0LnRvU3RyaW5nKCk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBjYXNlIENTU19SRUNUOiB7
Ci0gICAgICAgICAgICBSZWN0KiByZWN0VmFsID0gZ2V0UmVjdFZhbHVlKCk7Ci0gICAgICAgICAg
ICB0ZXh0ID0gInJlY3QoIiArIHJlY3RWYWwtPnRvcCgpLT5jc3NUZXh0KCkgKyAnICcgKyByZWN0
VmFsLT5yaWdodCgpLT5jc3NUZXh0KCkgKyAnICcgKyByZWN0VmFsLT5ib3R0b20oKS0+Y3NzVGV4
dCgpICsgJyAnICsgcmVjdFZhbC0+bGVmdCgpLT5jc3NUZXh0KCkgKyAnKSc7CisgICAgICAgIGNh
c2UgQ1NTX1JFQ1Q6CisgICAgICAgICAgICB0ZXh0ID0gZ2V0UmVjdFZhbHVlKCktPmNzc1RleHQo
KTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgQ1NTX1FVQUQ6
IHsKLSAgICAgICAgICAgIFF1YWQqIHF1YWRWYWwgPSBnZXRRdWFkVmFsdWUoKTsKLSAgICAgICAg
ICAgIFZlY3RvcjxVQ2hhcj4gcmVzdWx0OwotICAgICAgICAgICAgcmVzdWx0LnJlc2VydmVJbml0
aWFsQ2FwYWNpdHkoMzIpOwotICAgICAgICAgICAgYXBwZW5kKHJlc3VsdCwgcXVhZFZhbC0+dG9w
KCktPmNzc1RleHQoKSk7Ci0gICAgICAgICAgICBpZiAocXVhZFZhbC0+cmlnaHQoKSAhPSBxdWFk
VmFsLT50b3AoKSB8fCBxdWFkVmFsLT5ib3R0b20oKSAhPSBxdWFkVmFsLT50b3AoKSB8fCBxdWFk
VmFsLT5sZWZ0KCkgIT0gcXVhZFZhbC0+dG9wKCkpIHsKLSAgICAgICAgICAgICAgICByZXN1bHQu
YXBwZW5kKCcgJyk7Ci0gICAgICAgICAgICAgICAgYXBwZW5kKHJlc3VsdCwgcXVhZFZhbC0+cmln
aHQoKS0+Y3NzVGV4dCgpKTsKLSAgICAgICAgICAgICAgICBpZiAocXVhZFZhbC0+Ym90dG9tKCkg
IT0gcXVhZFZhbC0+dG9wKCkgfHwgcXVhZFZhbC0+cmlnaHQoKSAhPSBxdWFkVmFsLT5sZWZ0KCkp
IHsKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICcpOwotICAgICAgICAgICAg
ICAgICAgICBhcHBlbmQocmVzdWx0LCBxdWFkVmFsLT5ib3R0b20oKS0+Y3NzVGV4dCgpKTsKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKHF1YWRWYWwtPmxlZnQoKSAhPSBxdWFkVmFsLT5yaWdodCgp
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgJyk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBhcHBlbmQocmVzdWx0LCBxdWFkVmFsLT5sZWZ0KCktPmNzc1RleHQo
KSk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICB0ZXh0ID0gU3RyaW5nOjphZG9wdChyZXN1bHQpOworICAgICAgICBj
YXNlIENTU19RVUFEOgorICAgICAgICAgICAgdGV4dCA9IGdldFF1YWRWYWx1ZSgpLT5jc3NUZXh0
KCk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQogICAgICAgICBjYXNlIENTU19SR0JD
T0xPUjoKICAgICAgICAgY2FzZSBDU1NfUEFSU0VSX0hFWENPTE9SOiB7CiAgICAgICAgICAgICBS
R0JBMzIgcmdiQ29sb3IgPSBtX3ZhbHVlLnJnYmNvbG9yOwpAQCAtMTAzMywxNiArMTAxNCw5IEBA
IFN0cmluZyBDU1NQcmltaXRpdmVWYWx1ZTo6Y3VzdG9tQ3NzVGV4dCgpIGNvbnN0CiAgICAgICAg
ICAgICB0ZXh0ID0gU3RyaW5nOjphZG9wdChyZXN1bHQpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KLSAgICAgICAgY2FzZSBDU1NfUEFJUjogewotICAgICAgICAgICAgU3RyaW5nQnVp
bGRlciByZXN1bHQ7Ci0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKG1fdmFsdWUucGFpci0+Zmly
c3QoKS0+Y3NzVGV4dCgpKTsKLSAgICAgICAgICAgIGlmIChtX3ZhbHVlLnBhaXItPnNlY29uZCgp
ICE9IG1fdmFsdWUucGFpci0+Zmlyc3QoKSkgewotICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBl
bmQoJyAnKTsKLSAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKG1fdmFsdWUucGFpci0+c2Vj
b25kKCktPmNzc1RleHQoKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB0ZXh0ID0gcmVz
dWx0LnRvU3RyaW5nKCk7CisgICAgICAgIGNhc2UgQ1NTX1BBSVI6CisgICAgICAgICAgICB0ZXh0
ID0gZ2V0UGFpclZhbHVlKCktPmNzc1RleHQoKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICB9CiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKSB8fCBFTkFCTEUoV0lER0VUX1JFR0lP
TikKICAgICAgICAgY2FzZSBDU1NfREFTSEJPQVJEX1JFR0lPTjogewogICAgICAgICAgICAgU3Ry
aW5nQnVpbGRlciByZXN1bHQ7CkBAIC0xMTI3LDEwICsxMTAxLDMzIEBAIFN0cmluZyBDU1NQcmlt
aXRpdmVWYWx1ZTo6Y3VzdG9tU2VyaWFsaXplUmVzb2x2aW5nVmFyaWFibGVzKGNvbnN0IEhhc2hN
YXA8QXRvbWljCiB7CiAgICAgaWYgKGlzVmFyaWFibGVOYW1lKCkgJiYgdmFyaWFibGVzLmNvbnRh
aW5zKG1fdmFsdWUuc3RyaW5nKSkKICAgICAgICAgcmV0dXJuIHZhcmlhYmxlcy5nZXQobV92YWx1
ZS5zdHJpbmcpOwotICAgIGlmIChpc0NhbGN1bGF0ZWQoKSkKLSAgICAgICAgcmV0dXJuIGNzc0Nh
bGNWYWx1ZSgpLT5jdXN0b21TZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXModmFyaWFibGVzKTsK
KyAgICBpZiAoQ1NTQ2FsY1ZhbHVlKiBjYWxjVmFsdWUgPSBjc3NDYWxjVmFsdWUoKSkKKyAgICAg
ICAgcmV0dXJuIGNhbGNWYWx1ZS0+Y3VzdG9tU2VyaWFsaXplUmVzb2x2aW5nVmFyaWFibGVzKHZh
cmlhYmxlcyk7CisgICAgaWYgKFBhaXIqIHBhaXJWYWx1ZSA9IGdldFBhaXJWYWx1ZSgpKQorICAg
ICAgICByZXR1cm4gcGFpclZhbHVlLT5zZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXModmFyaWFi
bGVzKTsKKyAgICBpZiAoUmVjdCogcmVjdFZhbCA9IGdldFJlY3RWYWx1ZSgpKQorICAgICAgICBy
ZXR1cm4gcmVjdFZhbC0+c2VyaWFsaXplUmVzb2x2aW5nVmFyaWFibGVzKHZhcmlhYmxlcyk7Cisg
ICAgaWYgKFF1YWQqIHF1YWRWYWwgPSBnZXRRdWFkVmFsdWUoKSkKKyAgICAgICAgcmV0dXJuIHF1
YWRWYWwtPnNlcmlhbGl6ZVJlc29sdmluZ1ZhcmlhYmxlcyh2YXJpYWJsZXMpOworICAgIGlmIChD
U1NCYXNpY1NoYXBlKiBzaGFwZVZhbHVlID0gZ2V0U2hhcGVWYWx1ZSgpKQorICAgICAgICByZXR1
cm4gc2hhcGVWYWx1ZS0+c2VyaWFsaXplUmVzb2x2aW5nVmFyaWFibGVzKHZhcmlhYmxlcyk7CiAg
ICAgcmV0dXJuIGN1c3RvbUNzc1RleHQoKTsKIH0KKworYm9vbCBDU1NQcmltaXRpdmVWYWx1ZTo6
aGFzVmFyaWFibGVSZWZlcmVuY2UoKSBjb25zdAoreworICAgIGlmIChDU1NDYWxjVmFsdWUqIGNh
bGNWYWx1ZSA9IGNzc0NhbGNWYWx1ZSgpKQorICAgICAgICByZXR1cm4gY2FsY1ZhbHVlLT5oYXNW
YXJpYWJsZVJlZmVyZW5jZSgpOworICAgIGlmIChQYWlyKiBwYWlyVmFsdWUgPSBnZXRQYWlyVmFs
dWUoKSkKKyAgICAgICAgcmV0dXJuIHBhaXJWYWx1ZS0+aGFzVmFyaWFibGVSZWZlcmVuY2UoKTsK
KyAgICBpZiAoUXVhZCogcXVhZFZhbHVlID0gZ2V0UXVhZFZhbHVlKCkpCisgICAgICAgIHJldHVy
biBxdWFkVmFsdWUtPmhhc1ZhcmlhYmxlUmVmZXJlbmNlKCk7CisgICAgaWYgKFJlY3QqIHJlY3RW
YWx1ZSA9IGdldFJlY3RWYWx1ZSgpKQorICAgICAgICByZXR1cm4gcmVjdFZhbHVlLT5oYXNWYXJp
YWJsZVJlZmVyZW5jZSgpOworICAgIGlmIChDU1NCYXNpY1NoYXBlKiBzaGFwZVZhbHVlID0gZ2V0
U2hhcGVWYWx1ZSgpKQorICAgICAgICByZXR1cm4gc2hhcGVWYWx1ZS0+aGFzVmFyaWFibGVSZWZl
cmVuY2UoKTsKKyAgICByZXR1cm4gaXNWYXJpYWJsZU5hbWUoKTsKK30KICNlbmRpZgogCiB2b2lk
IENTU1ByaW1pdGl2ZVZhbHVlOjphZGRTdWJyZXNvdXJjZVN0eWxlVVJMcyhMaXN0SGFzaFNldDxL
VVJMPiYgdXJscywgY29uc3QgU3R5bGVTaGVldENvbnRlbnRzKiBzdHlsZVNoZWV0KSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaAppbmRleCBjZDZmZDQ3ZTkzYzJkY2I5
ZWYyZjFkMjdlOThkNTA3Zjc3ZmRiMDgyLi5iZTk5NzhjOWMyMjVjMjk0NzRmNjAyMzk5YTlhOGZh
NWQzZjNjNmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFs
dWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaApAQCAtMjk1
LDYgKzI5NSw3IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgY3VzdG9tQ3NzVGV4dCgpIGNvbnN0Owog
I2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQogICAgIFN0cmluZyBjdXN0b21TZXJpYWxpemVSZXNv
bHZpbmdWYXJpYWJsZXMoY29uc3QgSGFzaE1hcDxBdG9taWNTdHJpbmcsIFN0cmluZz4mKSBjb25z
dDsKKyAgICBib29sIGhhc1ZhcmlhYmxlUmVmZXJlbmNlKCkgY29uc3Q7CiAjZW5kaWYKIAogICAg
IGJvb2wgaXNRdWlya1ZhbHVlKCkgeyByZXR1cm4gbV9pc1F1aXJrVmFsdWU7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9QYWlyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUGFpci5o
CmluZGV4IGE5NTM3MGRjMzAxNTNkNjhkY2JkYzNiODhmM2MwNWE3ZDE1MDA4OTIuLmJlNTcyYjE1
MzYwMTNkNTZjYzkzZjllOGE1ZTdlMzY5NzUxODdiYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9QYWlyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1BhaXIuaApAQCAtMjQsNiAr
MjQsNyBAQAogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSAiQ1NTUHJpbWl0
aXZlVmFsdWUuaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00OSw2ICs1
MCwzNCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRGaXJzdChQYXNzUmVmUHRyPENTU1ByaW1pdGl2
ZVZhbHVlPiBmaXJzdCkgeyBtX2ZpcnN0ID0gZmlyc3Q7IH0KICAgICB2b2lkIHNldFNlY29uZChQ
YXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBzZWNvbmQpIHsgbV9zZWNvbmQgPSBzZWNvbmQ7
IH0KIAorICAgIHN0YXRpYyBTdHJpbmcgcGFpclN0cmluZyhjb25zdCBTdHJpbmcmIGZpcnN0LCBj
b25zdCBTdHJpbmcmIHNlY29uZCkKKyAgICB7CisgICAgICAgIGlmIChmaXJzdCA9PSBzZWNvbmQp
CisgICAgICAgICAgICByZXR1cm4gZmlyc3Q7CisKKyAgICAgICAgU3RyaW5nQnVpbGRlciByZXN1
bHQ7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoZmlyc3QpOworICAgICAgICByZXN1bHQuYXBwZW5k
KCcgJyk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoc2Vjb25kKTsKKyAgICAgICAgcmV0dXJuIHJl
c3VsdC50b1N0cmluZygpOworICAgIH0KKworICAgIFN0cmluZyBjc3NUZXh0KCkgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiBwYWlyU3RyaW5nKGZpcnN0KCktPmNzc1RleHQoKSwgc2Vjb25k
KCktPmNzc1RleHQoKSk7CisgICAgfQorCisjaWYgRU5BQkxFKENTU19WQVJJQUJMRVMpCisgICAg
U3RyaW5nIHNlcmlhbGl6ZVJlc29sdmluZ1ZhcmlhYmxlcyhjb25zdCBIYXNoTWFwPEF0b21pY1N0
cmluZywgU3RyaW5nPiYgdmFyaWFibGVzKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHBh
aXJTdHJpbmcoZmlyc3QoKS0+Y3VzdG9tU2VyaWFsaXplUmVzb2x2aW5nVmFyaWFibGVzKHZhcmlh
YmxlcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY29uZCgpLT5jdXN0b21TZXJpYWxp
emVSZXNvbHZpbmdWYXJpYWJsZXModmFyaWFibGVzKSk7CisgICAgfQorICAgIAorICAgIGJvb2wg
aGFzVmFyaWFibGVSZWZlcmVuY2UoKSBjb25zdCB7IHJldHVybiBmaXJzdCgpLT5oYXNWYXJpYWJs
ZVJlZmVyZW5jZSgpIHx8IHNlY29uZCgpLT5oYXNWYXJpYWJsZVJlZmVyZW5jZSgpOyB9CisjZW5k
aWYKKworCiBwcml2YXRlOgogICAgIFBhaXIoKSA6IG1fZmlyc3QoMCksIG1fc2Vjb25kKDApIHsg
fQogICAgIFBhaXIoUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gZmlyc3QsIFBhc3NSZWZQ
dHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHNlY29uZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9SZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUmVjdC5oCmluZGV4IDM1NWQ2ZmI3YmJk
OGNjZDMzZWJiYmRlMGEwODdjZDU4Yjg3NzYwNTEuLjFmMTE3N2FjOTgyMGM0OWMyZWIyZTRmODZj
MDhmMmNjODFkMmZmYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9SZWN0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL1JlY3QuaApAQCAtMjMsNiArMjMsNyBAQAogCiAjaW5jbHVk
ZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTM4LDYgKzM5LDE2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEJvdHRvbShQYXNzUmVmUHRyPENT
U1ByaW1pdGl2ZVZhbHVlPiBib3R0b20pIHsgbV9ib3R0b20gPSBib3R0b207IH0KICAgICB2b2lk
IHNldExlZnQoUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gbGVmdCkgeyBtX2xlZnQgPSBs
ZWZ0OyB9CiAKKyNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykKKyAgICBib29sIGhhc1ZhcmlhYmxl
UmVmZXJlbmNlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3RvcC0+aGFzVmFyaWFi
bGVSZWZlcmVuY2UoKQorICAgICAgICAgICAgfHwgbV9yaWdodC0+aGFzVmFyaWFibGVSZWZlcmVu
Y2UoKQorICAgICAgICAgICAgfHwgbV9ib3R0b20tPmhhc1ZhcmlhYmxlUmVmZXJlbmNlKCkKKyAg
ICAgICAgICAgIHx8IG1fbGVmdC0+aGFzVmFyaWFibGVSZWZlcmVuY2UoKTsKKyAgICB9CisjZW5k
aWYKKwogcHJvdGVjdGVkOgogICAgIFJlY3RCYXNlKCkgeyB9CiAgICAgUmVjdEJhc2UoY29uc3Qg
UmVjdEJhc2UmIGNsb25lRnJvbSkKQEAgLTYzLDYgKzc0LDM3IEBAIHB1YmxpYzoKICAgICAKICAg
ICBQYXNzUmVmUHRyPFJlY3Q+IGNsb25lRm9yQ1NTT00oKSBjb25zdCB7IHJldHVybiBhZG9wdFJl
ZihuZXcgUmVjdCgqdGhpcykpOyB9CiAKKyAgICBzdGF0aWMgU3RyaW5nIHJlY3RTdHJpbmcoY29u
c3QgU3RyaW5nJiB0b3AsIGNvbnN0IFN0cmluZyYgcmlnaHQsIGNvbnN0IFN0cmluZyYgYm90dG9t
LCBjb25zdCBTdHJpbmcmIGxlZnQpCisgICAgeworICAgICAgICBTdHJpbmdCdWlsZGVyIHJlc3Vs
dDsKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgicmVjdCgiKTsKKyAgICAgICAgcmVzdWx0LmFwcGVu
ZCh0b3ApOworICAgICAgICByZXN1bHQuYXBwZW5kKCcgJyk7CisgICAgICAgIHJlc3VsdC5hcHBl
bmQocmlnaHQpOworICAgICAgICByZXN1bHQuYXBwZW5kKCcgJyk7CisgICAgICAgIHJlc3VsdC5h
cHBlbmQoYm90dG9tKTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgnICcpOworICAgICAgICByZXN1
bHQuYXBwZW5kKGxlZnQpOworICAgICAgICByZXN1bHQuYXBwZW5kKCcpJyk7CisgICAgICAgIHJl
dHVybiByZXN1bHQudG9TdHJpbmcoKTsKKworICAgIH0KKworICAgIFN0cmluZyBjc3NUZXh0KCkg
Y29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiByZWN0U3RyaW5nKHRvcCgpLT5jc3NUZXh0KCks
IHJpZ2h0KCktPmNzc1RleHQoKSwgYm90dG9tKCktPmNzc1RleHQoKSwgbGVmdCgpLT5jc3NUZXh0
KCkpOworICAgIH0KKworI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQorICAgIFN0cmluZyBzZXJp
YWxpemVSZXNvbHZpbmdWYXJpYWJsZXMoY29uc3QgSGFzaE1hcDxBdG9taWNTdHJpbmcsIFN0cmlu
Zz4mIHZhcmlhYmxlcykgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiByZWN0U3RyaW5nKHRv
cCgpLT5jdXN0b21TZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXModmFyaWFibGVzKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmlnaHQoKS0+Y3VzdG9tU2VyaWFsaXplUmVzb2x2aW5nVmFy
aWFibGVzKHZhcmlhYmxlcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdHRvbSgpLT5j
dXN0b21TZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXModmFyaWFibGVzKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgbGVmdCgpLT5jdXN0b21TZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXMo
dmFyaWFibGVzKSk7CisgICAgfQorI2VuZGlmCisKIHByaXZhdGU6CiAgICAgUmVjdCgpIHsgfQog
ICAgIFJlY3QoY29uc3QgUmVjdCYgY2xvbmVGcm9tKSA6IFJlY3RCYXNlKGNsb25lRnJvbSksIFJl
ZkNvdW50ZWQ8UmVjdD4oKSB7IH0KQEAgLTc0LDYgKzExNiw0MCBAQCBwdWJsaWM6CiAgICAgCiAg
ICAgUGFzc1JlZlB0cjxRdWFkPiBjbG9uZUZvckNTU09NKCkgY29uc3QgeyByZXR1cm4gYWRvcHRS
ZWYobmV3IFF1YWQoKnRoaXMpKTsgfQogCisgICAgc3RhdGljIFN0cmluZyBxdWFkU3RyaW5nKGNv
bnN0IFN0cmluZyYgdG9wLCBjb25zdCBTdHJpbmcmIHJpZ2h0LCBjb25zdCBTdHJpbmcmIGJvdHRv
bSwgY29uc3QgU3RyaW5nJiBsZWZ0KQorICAgIHsKKyAgICAgICAgU3RyaW5nQnVpbGRlciByZXN1
bHQ7CisgICAgICAgIHJlc3VsdC5hcHBlbmQodG9wKTsKKyAgICAgICAgaWYgKHJpZ2h0ICE9IHRv
cCB8fCBib3R0b20gIT0gdG9wIHx8IGxlZnQgIT0gdG9wKSB7CisgICAgICAgICAgICByZXN1bHQu
YXBwZW5kKCcgJyk7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHJpZ2h0KTsKKyAgICAgICAg
ICAgIGlmIChib3R0b20gIT0gdG9wIHx8IHJpZ2h0ICE9IGxlZnQpIHsKKyAgICAgICAgICAgICAg
ICByZXN1bHQuYXBwZW5kKCcgJyk7CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChib3R0
b20pOworICAgICAgICAgICAgICAgIGlmIChsZWZ0ICE9IHJpZ2h0KSB7CisgICAgICAgICAgICAg
ICAgICAgIHJlc3VsdC5hcHBlbmQoJyAnKTsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZChsZWZ0KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOworICAgIH0KKworICAgIFN0cmluZyBj
c3NUZXh0KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBxdWFkU3RyaW5nKHRvcCgpLT5j
c3NUZXh0KCksIHJpZ2h0KCktPmNzc1RleHQoKSwgYm90dG9tKCktPmNzc1RleHQoKSwgbGVmdCgp
LT5jc3NUZXh0KCkpOworICAgIH0KKworI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQorICAgIFN0
cmluZyBzZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXMoY29uc3QgSGFzaE1hcDxBdG9taWNTdHJp
bmcsIFN0cmluZz4mIHZhcmlhYmxlcykgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBxdWFk
U3RyaW5nKHRvcCgpLT5jdXN0b21TZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXModmFyaWFibGVz
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHQoKS0+Y3VzdG9tU2VyaWFsaXplUmVz
b2x2aW5nVmFyaWFibGVzKHZhcmlhYmxlcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgIGJv
dHRvbSgpLT5jdXN0b21TZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXModmFyaWFibGVzKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgbGVmdCgpLT5jdXN0b21TZXJpYWxpemVSZXNvbHZpbmdW
YXJpYWJsZXModmFyaWFibGVzKSk7CisgICAgfQorI2VuZGlmCisKIHByaXZhdGU6CiAgICAgUXVh
ZCgpIHsgfQogICAgIFF1YWQoY29uc3QgUXVhZCYgY2xvbmVGcm9tKSA6IFJlY3RCYXNlKGNsb25l
RnJvbSksIFJlZkNvdW50ZWQ8UXVhZD4oKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVy
LmNwcAppbmRleCA3OGNjZmZhNWQxNGZhOTQ3MWMxMjQ0MzFlMDU0OTg1NDRkNWE2NDMxLi42MDI3
NzY5NGRkYjFmY2Y3ZmQ0MjY1MGRkODU1ZDBhNzFjN2FkNmQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlUmVzb2x2ZXIuY3BwCkBAIC0zMzU1LDkgKzMzNTUsNyBAQCBzdGF0aWMgYm9vbCBoYXNWYXJp
YWJsZVJlZmVyZW5jZShDU1NWYWx1ZSogdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlLT5pc1ByaW1p
dGl2ZVZhbHVlKCkpIHsKICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVl
ID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7Ci0gICAgICAgIGlmIChD
U1NDYWxjVmFsdWUqIGNhbGNWYWx1ZSA9IHByaW1pdGl2ZVZhbHVlLT5jc3NDYWxjVmFsdWUoKSkK
LSAgICAgICAgICAgIHJldHVybiBjYWxjVmFsdWUtPmhhc1ZhcmlhYmxlUmVmZXJlbmNlKCk7Ci0g
ICAgICAgIHJldHVybiBwcmltaXRpdmVWYWx1ZS0+aXNWYXJpYWJsZU5hbWUoKTsKKyAgICAgICAg
cmV0dXJuIHByaW1pdGl2ZVZhbHVlLT5oYXNWYXJpYWJsZVJlZmVyZW5jZSgpOwogICAgIH0KIAog
ICAgIGlmICh2YWx1ZS0+aXNDYWxjdWxhdGlvblZhbHVlKCkpCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNGI3MDQ3MmM4OTg1
Yzk1ZTIwM2ZmZjI2ODA0NGM0OWYyNjEzZWMxMi4uMmE4M2FkMTRhODA5YTlhZmFiNmJkYzAxN2Ri
YzZiNTE0MGQwMGY1ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTA5LTA1ICBMdWtlIE1h
Y3BoZXJzb24gICA8bWFjcGhlcnNvbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgRW5zdXJlIHZh
cmlhYmxlcyBhcmUgcmVzb2x2ZWQgZm9yIHNwZWNpYWxpemVkIENTUyBwcmltaXRpdmUgdmFsdWUg
dHlwZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05
NTkzMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZCB0ZXN0cyB0aGF0IHVzZSBzcGVjaWFsaXplZCBDU1MgdmFsdWVzIChlZy4gcGFpcnMsIHF1YWRz
KS4KKworICAgICAgICAqIGZhc3QvY3NzL3ZhcmlhYmxlcy9yb290LWJhY2tncm91bmQtc2l6ZS1l
eHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy92YXJpYWJsZXMvcm9vdC1i
YWNrZ3JvdW5kLXNpemUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3MvdmFyaWFibGVz
L3Zhci1pbnNpZGUtcGFpci1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nz
cy92YXJpYWJsZXMvdmFyLWluc2lkZS1wYWlyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
Y3NzL3ZhcmlhYmxlcy92YXItaW5zaWRlLXF1YWQtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9jc3MvdmFyaWFibGVzL3Zhci1pbnNpZGUtcXVhZC5odG1sOiBBZGRlZC4KKwog
MjAxMi0wOS0wNSAgQ2hyaXN0b3BoZSBEdW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29t
PgogCiAgICAgICAgIFtFRkxdW1dLMl0gUHJvdmlkZSBpbXBsZW1lbnRhdGlvbiBmb3IgV2ViUHJv
Y2VzcyBmdW5jdGlvbnMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL3ZhcmlhYmxl
cy9yb290LWJhY2tncm91bmQtc2l6ZS1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9j
c3MvdmFyaWFibGVzL3Jvb3QtYmFja2dyb3VuZC1zaXplLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZTM1MzY3MjYwMzVjYTU5OGY5ZDIwOWY5YmE5YTViNTJmYmQxMTRiZgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3ZhcmlhYmxlcy9yb290LWJhY2tncm91bmQtc2l6
ZS1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsNCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
K1RoaXMgdGVzdCBpcyBzdWNjZXNzZnVsIGlmIGl0IGRvZXMgbm90IGNyYXNoLgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvdmFyaWFibGVzL3Jvb3QtYmFja2dyb3Vu
ZC1zaXplLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy92YXJpYWJsZXMvcm9vdC1iYWNrZ3Jv
dW5kLXNpemUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMzNiZWVlMGU2M2U3NmZiNzBiNDBmZDgyOGUwYTFh
YTc5ODdlMTAwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvdmFyaWFi
bGVzL3Jvb3QtYmFja2dyb3VuZC1zaXplLmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxzY3JpcHQ+Cit0cnkgeyBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0Q1NT
VmFyaWFibGVzRW5hYmxlZCh0cnVlKTsgfSBjYXRjaCAoZSkge30KKzwvc2NyaXB0PgorPHN0eWxl
PgorOnJvb3QgeworICAtd2Via2l0LWJhY2tncm91bmQtc2l6ZTogLXdlYmtpdC1jYWxjKC13ZWJr
aXQtdmFyKGEpKTsKK30KKzwvc3R5bGU+Cis8c3R5bGU+PC9zdHlsZT4KK1RoaXMgdGVzdCBpcyBz
dWNjZXNzZnVsIGlmIGl0IGRvZXMgbm90IGNyYXNoLgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9jc3MvdmFyaWFibGVzL3Zhci1pbnNpZGUtcGFpci1leHBlY3RlZC5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvdmFyaWFibGVzL3Zhci1pbnNpZGUtcGFpci1leHBlY3Rl
ZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjFlMjI5YjcxM2QzYmU2ODQzYmQzNGRhN2NlZGUyOTU0MjM5Mjg5
YWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy92YXJpYWJsZXMvdmFy
LWluc2lkZS1wYWlyLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxzdHlsZT4KK2JvZHkgeworICAgIGJvcmRlcjogMXB4IHNvbGlkIGdyZWVu
OworICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDNweCA2cHg7Cit9Cis8L3N0eWxlPgorVGhp
cyB0ZXh0IHNob3VsZCBiZSBzdXJyb3VuZGVkIGJ5IGEgZ3JlZW4gYm9yZGVyIHdpdGggYSByb3Vu
ZGVkIHRvcCBsZWZ0IGNvcm5lci4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvY3NzL3ZhcmlhYmxlcy92YXItaW5zaWRlLXBhaXIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
Y3NzL3ZhcmlhYmxlcy92YXItaW5zaWRlLXBhaXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wOTliNDE1NDIx
OGJkODZmZTA2YzI0NDA1YzYxYTA1ZTBjMGU2OTA4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9jc3MvdmFyaWFibGVzL3Zhci1pbnNpZGUtcGFpci5odG1sCkBAIC0wLDAgKzEs
MTUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8c2NyaXB0PgoraW50ZXJuYWxzLnNldHRp
bmdzLnNldENTU1ZhcmlhYmxlc0VuYWJsZWQodHJ1ZSk7Cis8L3NjcmlwdD4KKzxzdHlsZT4KK2Jv
ZHkgeworICAgIGJvcmRlcjogMXB4IHNvbGlkIGdyZWVuOworICAgIGJvcmRlci10b3AtbGVmdC1y
YWRpdXM6IC13ZWJraXQtdmFyKGEpIC13ZWJraXQtdmFyKGIpOworICAgIC13ZWJraXQtdmFyLWE6
IDNweDsKKyAgICAtd2Via2l0LXZhci1iOiA2cHg7Cit9Cis8L3N0eWxlPgorVGhpcyB0ZXh0IHNo
b3VsZCBiZSBzdXJyb3VuZGVkIGJ5IGEgZ3JlZW4gYm9yZGVyIHdpdGggYSByb3VuZGVkIHRvcCBs
ZWZ0IGNvcm5lci4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL3Zh
cmlhYmxlcy92YXItaW5zaWRlLXF1YWQtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
Y3NzL3ZhcmlhYmxlcy92YXItaW5zaWRlLXF1YWQtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
MjdhZWQ3MTliMTQxYTQzMmE4YTc2N2IzODJlMGQzNTNhYjQ1NWRlCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvdmFyaWFibGVzL3Zhci1pbnNpZGUtcXVhZC1leHBlY3Rl
ZC5odG1sCkBAIC0wLDAgKzEsMTEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8c3R5bGU+
Citib2R5IHsKKyAgICBib3JkZXItY29sb3I6IGdyZWVuOworICAgIGJvcmRlci13aWR0aDogMXB4
IDJweCAzcHggNHB4OworICAgIGJvcmRlci1zdHlsZTogc29saWQ7Cit9Cis8L3N0eWxlPgorVGhp
cyB0ZXh0IHNob3VsZCBiZSBzdXJyb3VuZGVkIGJ5IGEgZ3JlZW4gYm9yZGVyIHdpdGggMXB4IHRv
cCwgMnB4IHJpZ2h0LCAzcHggYm90dG9tLCA0cHggbGVmdC4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvY3NzL3ZhcmlhYmxlcy92YXItaW5zaWRlLXF1YWQuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvY3NzL3ZhcmlhYmxlcy92YXItaW5zaWRlLXF1YWQuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5kNDA0ZDRiYmVhNWIxMjZjZGM0ZGVlMzZjN2Y1NzcyMTllMTljNjFlCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvdmFyaWFibGVzL3Zhci1pbnNpZGUtcXVhZC5o
dG1sCkBAIC0wLDAgKzEsMTggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8c2NyaXB0Pgor
aW50ZXJuYWxzLnNldHRpbmdzLnNldENTU1ZhcmlhYmxlc0VuYWJsZWQodHJ1ZSk7Cis8L3Njcmlw
dD4KKzxzdHlsZT4KK2JvZHkgeworICAgIGJvcmRlci1jb2xvcjogZ3JlZW47CisgICAgYm9yZGVy
LXdpZHRoOiAtd2Via2l0LXZhcihhKSAtd2Via2l0LXZhcihiKSAtd2Via2l0LXZhcihjKSAtd2Vi
a2l0LXZhcihkKTsKKyAgICBib3JkZXItc3R5bGU6IHNvbGlkOworICAgIC13ZWJraXQtdmFyLWE6
IDFweDsKKyAgICAtd2Via2l0LXZhci1iOiAycHg7CisgICAgLXdlYmtpdC12YXItYzogM3B4Owor
ICAgIC13ZWJraXQtdmFyLWQ6IDRweDsKK30KKzwvc3R5bGU+CitUaGlzIHRleHQgc2hvdWxkIGJl
IHN1cnJvdW5kZWQgYnkgYSBncmVlbiBib3JkZXIgd2l0aCAxcHggdG9wLCAycHggcmlnaHQsIDNw
eCBib3R0b20sIDRweCBsZWZ0LgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162664</attachid>
            <date>2012-09-06 21:30:32 -0700</date>
            <delta_ts>2012-09-24 19:02:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95930-20120907143011.patch</filename>
            <type>text/plain</type>
            <size>27866</size>
            <attacher name="Luke Macpherson">macpherson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3ODAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDU4MTk5OWU5ZDg4NmJm
NTUzYmMwMmNhMTA2NTY4YTgxN2M2ZmZkNC4uYTgxNjdhNmVlYjkxNGU0YTZlZGMyZmJiODMyYjcy
NmMxYTg0NjA2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDEyLTA5LTA1ICBMdWtl
IE1hY3BoZXJzb24gICA8bWFjcGhlcnNvbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgRW5zdXJl
IHZhcmlhYmxlcyBhcmUgcmVzb2x2ZWQgZm9yIHNwZWNpYWxpemVkIENTUyBwcmltaXRpdmUgdmFs
dWUgdHlwZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05NTkzMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFNvbWV0aW1lcyBDU1NQcmltaXRpdmVWYWx1ZSBjb250YWlucyBhIGNvbGxlY3Rpb24gb2Ygb3Ro
ZXIgQ1NTUHJpbWl0aXZlVmFsdWVzIChlZy4gMiwgNCBvciBuKS4KKyAgICAgICAgVGhpcyBwYXRj
aCBtYWtlcyBzdXJlIGFueSB2YXJpYWJsZXMgY29udGFpbmVkIGluc2lkZSB0aG9zZSBjaGlsZCB2
YWx1ZXMgYXJlIHJlc29sdmVkLgorCisgICAgICAgIFRlc3RzOiBmYXN0L2Nzcy92YXJpYWJsZXMv
cm9vdC1iYWNrZ3JvdW5kLXNpemUuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9jc3MvdmFyaWFi
bGVzL3Zhci1pbnNpZGUtcGFpci5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Nzcy92YXJpYWJs
ZXMvdmFyLWluc2lkZS1xdWFkLmh0bWwKKworICAgICAgICAqIGNzcy9DU1NCYXNpY1NoYXBlcy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpidWlsZFJlY3RhbmdsZVN0cmluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NCYXNpY1NoYXBlUmVjdGFuZ2xlOjpjc3NUZXh0KToKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQmFzaWNTaGFwZVJlY3RhbmdsZTo6c2VyaWFsaXpl
UmVzb2x2aW5nVmFyaWFibGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Jhc2ljU2hhcGVSZWN0
YW5nbGU6Omhhc1ZhcmlhYmxlUmVmZXJlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkQ2ly
Y2xlU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Jhc2ljU2hhcGVDaXJjbGU6OmNzc1Rl
eHQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQmFzaWNTaGFwZUNpcmNsZTo6c2VyaWFsaXplUmVz
b2x2aW5nVmFyaWFibGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Jhc2ljU2hhcGVDaXJjbGU6
Omhhc1ZhcmlhYmxlUmVmZXJlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkRWxsaXBzZVN0
cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NCYXNpY1NoYXBlRWxsaXBzZTo6Y3NzVGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NCYXNpY1NoYXBlRWxsaXBzZTo6c2VyaWFsaXplUmVzb2x2
aW5nVmFyaWFibGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Jhc2ljU2hhcGVFbGxpcHNlOjpo
YXNWYXJpYWJsZVJlZmVyZW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NCYXNpY1NoYXBlUG9s
eWdvbjo6c2VyaWFsaXplUmVzb2x2aW5nVmFyaWFibGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U0Jhc2ljU2hhcGVQb2x5Z29uOjpoYXNWYXJpYWJsZVJlZmVyZW5jZSk6CisgICAgICAgICogY3Nz
L0NTU0Jhc2ljU2hhcGVzLmg6CisgICAgICAgIChDU1NCYXNpY1NoYXBlUmVjdGFuZ2xlKToKKyAg
ICAgICAgKENTU0Jhc2ljU2hhcGVDaXJjbGUpOgorICAgICAgICAoQ1NTQmFzaWNTaGFwZUVsbGlw
c2UpOgorICAgICAgICAoQ1NTQmFzaWNTaGFwZVBvbHlnb24pOgorICAgICAgICAqIGNzcy9DU1NQ
cmltaXRpdmVWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6
Y3VzdG9tQ3NzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6Y3Vz
dG9tU2VyaWFsaXplUmVzb2x2aW5nVmFyaWFibGVzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6Omhhc1ZhcmlhYmxlUmVmZXJlbmNlKToK
KyAgICAgICAgKiBjc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaDoKKyAgICAgICAgKENTU1ByaW1pdGl2
ZVZhbHVlKToKKyAgICAgICAgKiBjc3MvUGFpci5oOgorICAgICAgICAoV2ViQ29yZTo6UGFpcjo6
cGFpclN0cmluZyk6CisgICAgICAgIChQYWlyKToKKyAgICAgICAgKFdlYkNvcmU6OlBhaXI6OmNz
c1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6UGFpcjo6c2VyaWFsaXplUmVzb2x2aW5nVmFyaWFi
bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlBhaXI6Omhhc1ZhcmlhYmxlUmVmZXJlbmNlKToKKyAg
ICAgICAgKiBjc3MvUmVjdC5oOgorICAgICAgICAoUmVjdEJhc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVjdEJhc2U6Omhhc1ZhcmlhYmxlUmVmZXJlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
Y3Q6OnJlY3RTdHJpbmcpOgorICAgICAgICAoUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZWN0
Ojpjc3NUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlY3Q6OnNlcmlhbGl6ZVJlc29sdmluZ1Zh
cmlhYmxlcyk6CisgICAgICAgIChXZWJDb3JlOjpRdWFkOjpxdWFkU3RyaW5nKToKKyAgICAgICAg
KFF1YWQpOgorICAgICAgICAoV2ViQ29yZTo6UXVhZDo6Y3NzVGV4dCk6CisgICAgICAgIChXZWJD
b3JlOjpRdWFkOjpzZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXMpOgorICAgICAgICAqIGNzcy9T
dHlsZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmNvbGxl
Y3RNYXRjaGluZ1J1bGVzRm9yTGlzdCk6CisKIDIwMTItMDktMDYgIExhdXJvIE5ldG8gIDxsYXVy
by5uZXRvQG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgW1F0XSBEZXByZWNhdGUgU3RyaW5nICs9
IG9wZXJhdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQmFzaWNTaGFwZXMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Jhc2ljU2hhcGVzLmNwcAppbmRleCBjMDdkNjYz
YzYzODE3MjA4NDg2NjdiOTUxNzBmNmE4MWEzNzVmYWM5Li45NzE2ODUwMmU3YWFiMzk4NzI2Y2Fi
ODEzYjg3ZWQ5ZGNjNzBiZGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQmFz
aWNTaGFwZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5jcHAK
QEAgLTM3LDgzICszNywxNDMgQEAgdXNpbmcgbmFtZXNwYWNlIFdURjsKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1TdHJpbmcgQ1NTQmFzaWNTaGFwZVJlY3RhbmdsZTo6Y3NzVGV4dCgpIGNvbnN0
CitzdGF0aWMgU3RyaW5nIGJ1aWxkUmVjdGFuZ2xlU3RyaW5nKGNvbnN0IFN0cmluZyYgeCwgY29u
c3QgU3RyaW5nJiB5LCBjb25zdCBTdHJpbmcmIHdpZHRoLCBjb25zdCBTdHJpbmcmIGhlaWdodCwg
Y29uc3QgU3RyaW5nJiByYWRpdXNYLCBjb25zdCBTdHJpbmcmIHJhZGl1c1kpCiB7CiAgICAgU3Ry
aW5nQnVpbGRlciByZXN1bHQ7Ci0gICAgcmVzdWx0LnJlc2VydmVDYXBhY2l0eSgzMik7Ci0KICAg
ICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgicmVjdGFuZ2xlKCIpOwotCi0gICAgcmVzdWx0LmFwcGVu
ZChtX3gtPmNzc1RleHQoKSk7CisgICAgcmVzdWx0LmFwcGVuZCh4KTsKICAgICByZXN1bHQuYXBw
ZW5kTGl0ZXJhbCgiLCAiKTsKLQotICAgIHJlc3VsdC5hcHBlbmQobV95LT5jc3NUZXh0KCkpOwor
ICAgIHJlc3VsdC5hcHBlbmQoeSk7CiAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiwgIik7Ci0K
LSAgICByZXN1bHQuYXBwZW5kKG1fd2lkdGgtPmNzc1RleHQoKSk7CisgICAgcmVzdWx0LmFwcGVu
ZCh3aWR0aCk7CiAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiwgIik7Ci0KLSAgICByZXN1bHQu
YXBwZW5kKG1faGVpZ2h0LT5jc3NUZXh0KCkpOwotCi0gICAgaWYgKG1fcmFkaXVzWC5nZXQoKSkg
eworICAgIHJlc3VsdC5hcHBlbmQoaGVpZ2h0KTsKKyAgICBpZiAoIXJhZGl1c1guaXNOdWxsKCkp
IHsKICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiwgIik7Ci0gICAgICAgIHJlc3VsdC5h
cHBlbmQobV9yYWRpdXNYLT5jc3NUZXh0KCkpOwotCi0gICAgICAgIGlmIChtX3JhZGl1c1kuZ2V0
KCkpIHsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChyYWRpdXNYKTsKKyAgICAgICAgaWYgKCFyYWRp
dXNZLmlzTnVsbCgpKSB7CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiLCAiKTsK
LSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQobV9yYWRpdXNZLT5jc3NUZXh0KCkpOworICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZChyYWRpdXNZKTsKICAgICAgICAgfQogICAgIH0KLQogICAgIHJl
c3VsdC5hcHBlbmQoJyknKTsKLQogICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKIH0KIAot
U3RyaW5nIENTU0Jhc2ljU2hhcGVDaXJjbGU6OmNzc1RleHQoKSBjb25zdAorU3RyaW5nIENTU0Jh
c2ljU2hhcGVSZWN0YW5nbGU6OmNzc1RleHQoKSBjb25zdAogewotICAgIFN0cmluZ0J1aWxkZXIg
cmVzdWx0OwotICAgIHJlc3VsdC5yZXNlcnZlQ2FwYWNpdHkoMzIpOworICAgIHJldHVybiBidWls
ZFJlY3RhbmdsZVN0cmluZyhtX3gtPmNzc1RleHQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbV95LT5jc3NUZXh0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1fd2lkdGgtPmNzc1RleHQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9o
ZWlnaHQtPmNzc1RleHQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9yYWRp
dXNYLmdldCgpID8gbV9yYWRpdXNYLT5jc3NUZXh0KCkgOiBTdHJpbmcoKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbV9yYWRpdXNZLmdldCgpID8gbV9yYWRpdXNZLT5jc3NUZXh0
KCkgOiBTdHJpbmcoKSk7Cit9CiAKLSAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiY2lyY2xlKCIp
OworI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQorU3RyaW5nIENTU0Jhc2ljU2hhcGVSZWN0YW5n
bGU6OnNlcmlhbGl6ZVJlc29sdmluZ1ZhcmlhYmxlcyhjb25zdCBIYXNoTWFwPEF0b21pY1N0cmlu
ZywgU3RyaW5nPiYgdmFyaWFibGVzKSBjb25zdAoreworICAgIHJldHVybiBidWlsZFJlY3Rhbmds
ZVN0cmluZyhtX3gtPnNlcmlhbGl6ZVJlc29sdmluZ1ZhcmlhYmxlcyh2YXJpYWJsZXMpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3ktPnNlcmlhbGl6ZVJlc29sdmluZ1Zhcmlh
Ymxlcyh2YXJpYWJsZXMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3dpZHRo
LT5zZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXModmFyaWFibGVzKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbV9oZWlnaHQtPnNlcmlhbGl6ZVJlc29sdmluZ1ZhcmlhYmxlcyh2
YXJpYWJsZXMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3JhZGl1c1guZ2V0
KCkgPyBtX3JhZGl1c1gtPnNlcmlhbGl6ZVJlc29sdmluZ1ZhcmlhYmxlcyh2YXJpYWJsZXMpIDog
U3RyaW5nKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcmFkaXVzWS5nZXQo
KSA/IG1fcmFkaXVzWS0+c2VyaWFsaXplUmVzb2x2aW5nVmFyaWFibGVzKHZhcmlhYmxlcykgOiBT
dHJpbmcoKSk7Cit9CiAKLSAgICByZXN1bHQuYXBwZW5kKG1fY2VudGVyWC0+Y3NzVGV4dCgpKTsK
LSAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKK2Jvb2wgQ1NTQmFzaWNTaGFwZVJlY3Rh
bmdsZTo6aGFzVmFyaWFibGVSZWZlcmVuY2UoKSBjb25zdAoreworICAgIHJldHVybiBtX3gtPmhh
c1ZhcmlhYmxlUmVmZXJlbmNlKCkKKyAgICAgICAgfHwgbV95LT5oYXNWYXJpYWJsZVJlZmVyZW5j
ZSgpCisgICAgICAgIHx8IG1fd2lkdGgtPmhhc1ZhcmlhYmxlUmVmZXJlbmNlKCkKKyAgICAgICAg
fHwgbV9oZWlnaHQtPmhhc1ZhcmlhYmxlUmVmZXJlbmNlKCkKKyAgICAgICAgfHwgKG1fcmFkaXVz
WC5nZXQoKSAmJiBtX3JhZGl1c1gtPmhhc1ZhcmlhYmxlUmVmZXJlbmNlKCkpCisgICAgICAgIHx8
IChtX3JhZGl1c1kuZ2V0KCkgJiYgbV9yYWRpdXNZLT5oYXNWYXJpYWJsZVJlZmVyZW5jZSgpKTsK
K30KKyNlbmRpZgogCi0gICAgcmVzdWx0LmFwcGVuZChtX2NlbnRlclktPmNzc1RleHQoKSk7Ci0g
ICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiwgIik7CitzdGF0aWMgU3RyaW5nIGJ1aWxkQ2lyY2xl
U3RyaW5nKGNvbnN0IFN0cmluZyYgeCwgY29uc3QgU3RyaW5nJiB5LCBjb25zdCBTdHJpbmcmIHJh
ZGl1cykKK3sKKyAgICByZXR1cm4gImNpcmNsZSgiICsgeCArICIsICIgKyB5ICsgIiwgIiArIHJh
ZGl1cyArICcpJzsKK30KIAotICAgIHJlc3VsdC5hcHBlbmQobV9yYWRpdXMtPmNzc1RleHQoKSk7
Ci0gICAgcmVzdWx0LmFwcGVuZCgnKScpOworU3RyaW5nIENTU0Jhc2ljU2hhcGVDaXJjbGU6OmNz
c1RleHQoKSBjb25zdAoreworICAgIHJldHVybiBidWlsZENpcmNsZVN0cmluZyhtX2NlbnRlclgt
PmNzc1RleHQoKSwgbV9jZW50ZXJZLT5jc3NUZXh0KCksIG1fcmFkaXVzLT5jc3NUZXh0KCkpOwor
fQogCi0gICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOworI2lmIEVOQUJMRShDU1NfVkFSSUFC
TEVTKQorU3RyaW5nIENTU0Jhc2ljU2hhcGVDaXJjbGU6OnNlcmlhbGl6ZVJlc29sdmluZ1Zhcmlh
Ymxlcyhjb25zdCBIYXNoTWFwPEF0b21pY1N0cmluZywgU3RyaW5nPiYgdmFyaWFibGVzKSBjb25z
dAoreworICAgIHJldHVybiBidWlsZENpcmNsZVN0cmluZyhtX2NlbnRlclgtPnNlcmlhbGl6ZVJl
c29sdmluZ1ZhcmlhYmxlcyh2YXJpYWJsZXMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtX2NlbnRlclktPnNlcmlhbGl6ZVJlc29sdmluZ1ZhcmlhYmxlcyh2YXJpYWJsZXMpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtX3JhZGl1cy0+c2VyaWFsaXplUmVzb2x2aW5nVmFy
aWFibGVzKHZhcmlhYmxlcykpOworfQorCitib29sIENTU0Jhc2ljU2hhcGVDaXJjbGU6Omhhc1Zh
cmlhYmxlUmVmZXJlbmNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jZW50ZXJYLT5oYXNWYXJp
YWJsZVJlZmVyZW5jZSgpCisgICAgICAgIHx8IG1fY2VudGVyWS0+aGFzVmFyaWFibGVSZWZlcmVu
Y2UoKQorICAgICAgICB8fCBtX3JhZGl1cy0+aGFzVmFyaWFibGVSZWZlcmVuY2UoKTsKK30KKyNl
bmRpZgorCitzdGF0aWMgU3RyaW5nIGJ1aWxkRWxsaXBzZVN0cmluZyhjb25zdCBTdHJpbmcmIHgs
IGNvbnN0IFN0cmluZyYgeSwgY29uc3QgU3RyaW5nJiByYWRpdXNYLCBjb25zdCBTdHJpbmcmIHJh
ZGl1c1kpCit7CisgICAgcmV0dXJuICJlbGxpcHNlKCIgKyB4ICsgIiwgIiArIHkgKyAiLCAiICsg
cmFkaXVzWCArICIsICIgKyByYWRpdXNZICsgJyknOwogfQogCiBTdHJpbmcgQ1NTQmFzaWNTaGFw
ZUVsbGlwc2U6OmNzc1RleHQoKSBjb25zdAogeworICAgIHJldHVybiBidWlsZEVsbGlwc2VTdHJp
bmcobV9jZW50ZXJYLT5jc3NUZXh0KCksIG1fY2VudGVyWS0+Y3NzVGV4dCgpLCBtX3JhZGl1c1gt
PmNzc1RleHQoKSwgbV9yYWRpdXNZLT5jc3NUZXh0KCkpOworfQorCisjaWYgRU5BQkxFKENTU19W
QVJJQUJMRVMpCitTdHJpbmcgQ1NTQmFzaWNTaGFwZUVsbGlwc2U6OnNlcmlhbGl6ZVJlc29sdmlu
Z1ZhcmlhYmxlcyhjb25zdCBIYXNoTWFwPEF0b21pY1N0cmluZywgU3RyaW5nPiYgdmFyaWFibGVz
KSBjb25zdAoreworICAgIHJldHVybiBidWlsZEVsbGlwc2VTdHJpbmcobV9jZW50ZXJYLT5zZXJp
YWxpemVSZXNvbHZpbmdWYXJpYWJsZXModmFyaWFibGVzKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1fY2VudGVyWS0+c2VyaWFsaXplUmVzb2x2aW5nVmFyaWFibGVzKHZhcmlhYmxl
cyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3JhZGl1c1gtPnNlcmlhbGl6ZVJl
c29sdmluZ1ZhcmlhYmxlcyh2YXJpYWJsZXMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbV9yYWRpdXNZLT5zZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXModmFyaWFibGVzKSk7Cit9
CisKK2Jvb2wgQ1NTQmFzaWNTaGFwZUVsbGlwc2U6Omhhc1ZhcmlhYmxlUmVmZXJlbmNlKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV9jZW50ZXJYLT5oYXNWYXJpYWJsZVJlZmVyZW5jZSgpCisgICAg
ICAgIHx8IG1fY2VudGVyWS0+aGFzVmFyaWFibGVSZWZlcmVuY2UoKQorICAgICAgICB8fCBtX3Jh
ZGl1c1gtPmhhc1ZhcmlhYmxlUmVmZXJlbmNlKCkKKyAgICAgICAgfHwgbV9yYWRpdXNZLT5oYXNW
YXJpYWJsZVJlZmVyZW5jZSgpOworfQorI2VuZGlmCisKK1N0cmluZyBDU1NCYXNpY1NoYXBlUG9s
eWdvbjo6Y3NzVGV4dCgpIGNvbnN0Cit7CiAgICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7Ci0gICAg
cmVzdWx0LnJlc2VydmVDYXBhY2l0eSgzMik7Ci0gICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoImVs
bGlwc2UoIik7CiAKLSAgICByZXN1bHQuYXBwZW5kKG1fY2VudGVyWC0+Y3NzVGV4dCgpKTsKLSAg
ICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKKyAgICBpZiAobV93aW5kUnVsZSA9PSBSVUxF
X0VWRU5PREQpCisgICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCJwb2x5Z29uKGV2ZW5vZGQs
ICIpOworICAgIGVsc2UKKyAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoInBvbHlnb24obm9u
emVybywgIik7CiAKLSAgICByZXN1bHQuYXBwZW5kKG1fY2VudGVyWS0+Y3NzVGV4dCgpKTsKLSAg
ICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKKyAgICBBU1NFUlQoIShtX3ZhbHVlcy5zaXpl
KCkgJSAyKSk7CiAKLSAgICByZXN1bHQuYXBwZW5kKG1fcmFkaXVzWC0+Y3NzVGV4dCgpKTsKLSAg
ICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbV92YWx1ZXMuc2l6ZSgpOyBpICs9IDIpIHsKKyAgICAgICAgaWYgKGkpCisgICAgICAgICAg
ICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChtX3Zh
bHVlcy5hdChpKS0+Y3NzVGV4dCgpKTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgnICcpOworICAg
ICAgICByZXN1bHQuYXBwZW5kKG1fdmFsdWVzLmF0KGkgKyAxKS0+Y3NzVGV4dCgpKTsKKyAgICB9
CiAKLSAgICByZXN1bHQuYXBwZW5kKG1fcmFkaXVzWS0+Y3NzVGV4dCgpKTsKICAgICByZXN1bHQu
YXBwZW5kKCcpJyk7CiAKICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CiB9CiAKLVN0cmlu
ZyBDU1NCYXNpY1NoYXBlUG9seWdvbjo6Y3NzVGV4dCgpIGNvbnN0CisjaWYgRU5BQkxFKENTU19W
QVJJQUJMRVMpCitTdHJpbmcgQ1NTQmFzaWNTaGFwZVBvbHlnb246OnNlcmlhbGl6ZVJlc29sdmlu
Z1ZhcmlhYmxlcyhjb25zdCBIYXNoTWFwPEF0b21pY1N0cmluZywgU3RyaW5nPiYgdmFyaWFibGVz
KSBjb25zdAogewogICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OwotICAgIHJlc3VsdC5yZXNlcnZl
Q2FwYWNpdHkoMzIpOwogCiAgICAgaWYgKG1fd2luZFJ1bGUgPT0gUlVMRV9FVkVOT0REKQogICAg
ICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgicG9seWdvbihldmVub2RkLCAiKTsKQEAgLTEyNSw5
ICsxODUsOSBAQCBTdHJpbmcgQ1NTQmFzaWNTaGFwZVBvbHlnb246OmNzc1RleHQoKSBjb25zdAog
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3ZhbHVlcy5zaXplKCk7IGkgKz0gMikgewog
ICAgICAgICBpZiAoaSkKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCIsICIpOwot
ICAgICAgICByZXN1bHQuYXBwZW5kKG1fdmFsdWVzLmF0KGkpLT5jc3NUZXh0KCkpOworICAgICAg
ICByZXN1bHQuYXBwZW5kKG1fdmFsdWVzLmF0KGkpLT5zZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJs
ZXModmFyaWFibGVzKSk7CiAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAnKTsKLSAgICAgICAgcmVz
dWx0LmFwcGVuZChtX3ZhbHVlcy5hdChpICsgMSktPmNzc1RleHQoKSk7CisgICAgICAgIHJlc3Vs
dC5hcHBlbmQobV92YWx1ZXMuYXQoaSArIDEpLT5zZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXMo
dmFyaWFibGVzKSk7CiAgICAgfQogCiAgICAgcmVzdWx0LmFwcGVuZCgnKScpOwpAQCAtMTM1LDUg
KzE5NSwxNSBAQCBTdHJpbmcgQ1NTQmFzaWNTaGFwZVBvbHlnb246OmNzc1RleHQoKSBjb25zdAog
ICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKIH0KIAorYm9vbCBDU1NCYXNpY1NoYXBlUG9s
eWdvbjo6aGFzVmFyaWFibGVSZWZlcmVuY2UoKSBjb25zdAoreworICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBtX3ZhbHVlcy5zaXplKCk7IGkrKykgeworICAgICAgICBpZiAobV92YWx1ZXMu
YXQoaSktPmhhc1ZhcmlhYmxlUmVmZXJlbmNlKCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Jhc2ljU2hhcGVzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQmFzaWNTaGFwZXMuaAppbmRleCAzNGU3ZWYwYjJiOTg0
MTc2YzljYjEwMjg4MThiY2VlMjI0MTdhZDdhLi5lZjMyMDk4OTE4NDQ2M2ZkMTJiMTc2NGE4YWI4
OGRiZWE5NjhlMDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQmFzaWNTaGFw
ZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQmFzaWNTaGFwZXMuaApAQCAtNTAsNiAr
NTAsMTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgPSAwOwogICAg
IHZpcnR1YWwgU3RyaW5nIGNzc1RleHQoKSBjb25zdCA9IDA7CiAKKyNpZiBFTkFCTEUoQ1NTX1ZB
UklBQkxFUykKKyAgICB2aXJ0dWFsIFN0cmluZyBzZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXMo
Y29uc3QgSGFzaE1hcDxBdG9taWNTdHJpbmcsIFN0cmluZz4mKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBib29sIGhhc1ZhcmlhYmxlUmVmZXJlbmNlKCkgY29uc3QgPSAwOworI2VuZGlmCisKIHB1
YmxpYzoKICAgICB2aXJ0dWFsIH5DU1NCYXNpY1NoYXBlKCkgeyB9CiAKQEAgLTc4LDYgKzgzLDEx
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIENTU19C
QVNJQ19TSEFQRV9SRUNUQU5HTEU7IH0KICAgICB2aXJ0dWFsIFN0cmluZyBjc3NUZXh0KCkgY29u
c3Q7CiAKKyNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykKKyAgICB2aXJ0dWFsIFN0cmluZyBzZXJp
YWxpemVSZXNvbHZpbmdWYXJpYWJsZXMoY29uc3QgSGFzaE1hcDxBdG9taWNTdHJpbmcsIFN0cmlu
Zz4mKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzVmFyaWFibGVSZWZlcmVuY2UoKSBjb25z
dDsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIENTU0Jhc2ljU2hhcGVSZWN0YW5nbGUoKSB7IH0K
IApAQCAtMTA0LDYgKzExNCwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBUeXBlIHR5cGUoKSBj
b25zdCB7IHJldHVybiBDU1NfQkFTSUNfU0hBUEVfQ0lSQ0xFOyB9CiAgICAgdmlydHVhbCBTdHJp
bmcgY3NzVGV4dCgpIGNvbnN0OwogCisjaWYgRU5BQkxFKENTU19WQVJJQUJMRVMpCisgICAgdmly
dHVhbCBTdHJpbmcgc2VyaWFsaXplUmVzb2x2aW5nVmFyaWFibGVzKGNvbnN0IEhhc2hNYXA8QXRv
bWljU3RyaW5nLCBTdHJpbmc+JikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGhhc1ZhcmlhYmxl
UmVmZXJlbmNlKCkgY29uc3Q7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBDU1NCYXNpY1NoYXBl
Q2lyY2xlKCkgeyB9CiAKQEAgLTEyOSw2ICsxNDQsMTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
VHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gQ1NTX0JBU0lDX1NIQVBFX0VMTElQU0U7IH0KICAg
ICB2aXJ0dWFsIFN0cmluZyBjc3NUZXh0KCkgY29uc3Q7CiAKKyNpZiBFTkFCTEUoQ1NTX1ZBUklB
QkxFUykKKyAgICB2aXJ0dWFsIFN0cmluZyBzZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXMoY29u
c3QgSGFzaE1hcDxBdG9taWNTdHJpbmcsIFN0cmluZz4mKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJv
b2wgaGFzVmFyaWFibGVSZWZlcmVuY2UoKSBjb25zdDsKKyNlbmRpZgorCiBwcml2YXRlOgogICAg
IENTU0Jhc2ljU2hhcGVFbGxpcHNlKCkgeyB9CiAKQEAgLTE1OCw2ICsxNzgsMTEgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gQ1NTX0JBU0lDX1NIQVBF
X1BPTFlHT047IH0KICAgICB2aXJ0dWFsIFN0cmluZyBjc3NUZXh0KCkgY29uc3Q7CiAKKyNpZiBF
TkFCTEUoQ1NTX1ZBUklBQkxFUykKKyAgICB2aXJ0dWFsIFN0cmluZyBzZXJpYWxpemVSZXNvbHZp
bmdWYXJpYWJsZXMoY29uc3QgSGFzaE1hcDxBdG9taWNTdHJpbmcsIFN0cmluZz4mKSBjb25zdDsK
KyAgICB2aXJ0dWFsIGJvb2wgaGFzVmFyaWFibGVSZWZlcmVuY2UoKSBjb25zdDsKKyNlbmRpZgor
CiBwcml2YXRlOgogICAgIENTU0Jhc2ljU2hhcGVQb2x5Z29uKCkKICAgICAgICAgOiBtX3dpbmRS
dWxlKFJVTEVfTk9OWkVSTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmlt
aXRpdmVWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3Bw
CmluZGV4IDU2OWQ0ZGM1YmM3NTAwYmE2M2I2NTUxZjljNTZmMDUzOWUxZmI0MjcuLjYyNDJmODJh
NmZiOWE3ZTYwMDEwYzFmYzg5NGY5NTlkNTA3MmVhODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1ByaW1pdGl2ZVZhbHVlLmNwcApAQCAtOTc0LDMxICs5NzQsMTIgQEAgU3RyaW5nIENTU1ByaW1p
dGl2ZVZhbHVlOjpjdXN0b21Dc3NUZXh0KCkgY29uc3QKICAgICAgICAgICAgIHRleHQgPSByZXN1
bHQudG9TdHJpbmcoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGNh
c2UgQ1NTX1JFQ1Q6IHsKLSAgICAgICAgICAgIFJlY3QqIHJlY3RWYWwgPSBnZXRSZWN0VmFsdWUo
KTsKLSAgICAgICAgICAgIHRleHQgPSAicmVjdCgiICsgcmVjdFZhbC0+dG9wKCktPmNzc1RleHQo
KSArICcgJyArIHJlY3RWYWwtPnJpZ2h0KCktPmNzc1RleHQoKSArICcgJyArIHJlY3RWYWwtPmJv
dHRvbSgpLT5jc3NUZXh0KCkgKyAnICcgKyByZWN0VmFsLT5sZWZ0KCktPmNzc1RleHQoKSArICcp
JzsKKyAgICAgICAgY2FzZSBDU1NfUkVDVDoKKyAgICAgICAgICAgIHRleHQgPSBnZXRSZWN0VmFs
dWUoKS0+Y3NzVGV4dCgpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAg
Y2FzZSBDU1NfUVVBRDogewotICAgICAgICAgICAgUXVhZCogcXVhZFZhbCA9IGdldFF1YWRWYWx1
ZSgpOwotICAgICAgICAgICAgVmVjdG9yPFVDaGFyPiByZXN1bHQ7Ci0gICAgICAgICAgICByZXN1
bHQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSgzMik7Ci0gICAgICAgICAgICBhcHBlbmQocmVzdWx0
LCBxdWFkVmFsLT50b3AoKS0+Y3NzVGV4dCgpKTsKLSAgICAgICAgICAgIGlmIChxdWFkVmFsLT5y
aWdodCgpICE9IHF1YWRWYWwtPnRvcCgpIHx8IHF1YWRWYWwtPmJvdHRvbSgpICE9IHF1YWRWYWwt
PnRvcCgpIHx8IHF1YWRWYWwtPmxlZnQoKSAhPSBxdWFkVmFsLT50b3AoKSkgewotICAgICAgICAg
ICAgICAgIHJlc3VsdC5hcHBlbmQoJyAnKTsKLSAgICAgICAgICAgICAgICBhcHBlbmQocmVzdWx0
LCBxdWFkVmFsLT5yaWdodCgpLT5jc3NUZXh0KCkpOwotICAgICAgICAgICAgICAgIGlmIChxdWFk
VmFsLT5ib3R0b20oKSAhPSBxdWFkVmFsLT50b3AoKSB8fCBxdWFkVmFsLT5yaWdodCgpICE9IHF1
YWRWYWwtPmxlZnQoKSkgewotICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgJyk7
Ci0gICAgICAgICAgICAgICAgICAgIGFwcGVuZChyZXN1bHQsIHF1YWRWYWwtPmJvdHRvbSgpLT5j
c3NUZXh0KCkpOwotICAgICAgICAgICAgICAgICAgICBpZiAocXVhZFZhbC0+bGVmdCgpICE9IHF1
YWRWYWwtPnJpZ2h0KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQo
JyAnKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZChyZXN1bHQsIHF1YWRWYWwtPmxl
ZnQoKS0+Y3NzVGV4dCgpKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRleHQgPSBTdHJpbmc6OmFkb3B0KHJlc3Vs
dCk7CisgICAgICAgIGNhc2UgQ1NTX1FVQUQ6CisgICAgICAgICAgICB0ZXh0ID0gZ2V0UXVhZFZh
bHVlKCktPmNzc1RleHQoKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9CiAgICAgICAg
IGNhc2UgQ1NTX1JHQkNPTE9SOgogICAgICAgICBjYXNlIENTU19QQVJTRVJfSEVYQ09MT1I6IHsK
ICAgICAgICAgICAgIFJHQkEzMiByZ2JDb2xvciA9IG1fdmFsdWUucmdiY29sb3I7CkBAIC0xMDMz
LDE2ICsxMDE0LDkgQEAgU3RyaW5nIENTU1ByaW1pdGl2ZVZhbHVlOjpjdXN0b21Dc3NUZXh0KCkg
Y29uc3QKICAgICAgICAgICAgIHRleHQgPSBTdHJpbmc6OmFkb3B0KHJlc3VsdCk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBjYXNlIENTU19QQUlSOiB7Ci0gICAgICAg
ICAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQobV92
YWx1ZS5wYWlyLT5maXJzdCgpLT5jc3NUZXh0KCkpOwotICAgICAgICAgICAgaWYgKG1fdmFsdWUu
cGFpci0+c2Vjb25kKCkgIT0gbV92YWx1ZS5wYWlyLT5maXJzdCgpKSB7Ci0gICAgICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgnICcpOwotICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQobV92
YWx1ZS5wYWlyLT5zZWNvbmQoKS0+Y3NzVGV4dCgpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIHRleHQgPSByZXN1bHQudG9TdHJpbmcoKTsKKyAgICAgICAgY2FzZSBDU1NfUEFJUjoKKyAg
ICAgICAgICAgIHRleHQgPSBnZXRQYWlyVmFsdWUoKS0+Y3NzVGV4dCgpOwogICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIH0KICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpIHx8IEVOQUJM
RShXSURHRVRfUkVHSU9OKQogICAgICAgICBjYXNlIENTU19EQVNIQk9BUkRfUkVHSU9OOiB7CiAg
ICAgICAgICAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKQEAgLTExMjcsMTAgKzExMDEsMzMgQEAg
U3RyaW5nIENTU1ByaW1pdGl2ZVZhbHVlOjpjdXN0b21TZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJs
ZXMoY29uc3QgSGFzaE1hcDxBdG9taWMKIHsKICAgICBpZiAoaXNWYXJpYWJsZU5hbWUoKSAmJiB2
YXJpYWJsZXMuY29udGFpbnMobV92YWx1ZS5zdHJpbmcpKQogICAgICAgICByZXR1cm4gdmFyaWFi
bGVzLmdldChtX3ZhbHVlLnN0cmluZyk7Ci0gICAgaWYgKGlzQ2FsY3VsYXRlZCgpKQotICAgICAg
ICByZXR1cm4gY3NzQ2FsY1ZhbHVlKCktPmN1c3RvbVNlcmlhbGl6ZVJlc29sdmluZ1ZhcmlhYmxl
cyh2YXJpYWJsZXMpOworICAgIGlmIChDU1NDYWxjVmFsdWUqIGNhbGNWYWx1ZSA9IGNzc0NhbGNW
YWx1ZSgpKQorICAgICAgICByZXR1cm4gY2FsY1ZhbHVlLT5jdXN0b21TZXJpYWxpemVSZXNvbHZp
bmdWYXJpYWJsZXModmFyaWFibGVzKTsKKyAgICBpZiAoUGFpciogcGFpclZhbHVlID0gZ2V0UGFp
clZhbHVlKCkpCisgICAgICAgIHJldHVybiBwYWlyVmFsdWUtPnNlcmlhbGl6ZVJlc29sdmluZ1Zh
cmlhYmxlcyh2YXJpYWJsZXMpOworICAgIGlmIChSZWN0KiByZWN0VmFsID0gZ2V0UmVjdFZhbHVl
KCkpCisgICAgICAgIHJldHVybiByZWN0VmFsLT5zZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXMo
dmFyaWFibGVzKTsKKyAgICBpZiAoUXVhZCogcXVhZFZhbCA9IGdldFF1YWRWYWx1ZSgpKQorICAg
ICAgICByZXR1cm4gcXVhZFZhbC0+c2VyaWFsaXplUmVzb2x2aW5nVmFyaWFibGVzKHZhcmlhYmxl
cyk7CisgICAgaWYgKENTU0Jhc2ljU2hhcGUqIHNoYXBlVmFsdWUgPSBnZXRTaGFwZVZhbHVlKCkp
CisgICAgICAgIHJldHVybiBzaGFwZVZhbHVlLT5zZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXMo
dmFyaWFibGVzKTsKICAgICByZXR1cm4gY3VzdG9tQ3NzVGV4dCgpOwogfQorCitib29sIENTU1By
aW1pdGl2ZVZhbHVlOjpoYXNWYXJpYWJsZVJlZmVyZW5jZSgpIGNvbnN0Cit7CisgICAgaWYgKENT
U0NhbGNWYWx1ZSogY2FsY1ZhbHVlID0gY3NzQ2FsY1ZhbHVlKCkpCisgICAgICAgIHJldHVybiBj
YWxjVmFsdWUtPmhhc1ZhcmlhYmxlUmVmZXJlbmNlKCk7CisgICAgaWYgKFBhaXIqIHBhaXJWYWx1
ZSA9IGdldFBhaXJWYWx1ZSgpKQorICAgICAgICByZXR1cm4gcGFpclZhbHVlLT5oYXNWYXJpYWJs
ZVJlZmVyZW5jZSgpOworICAgIGlmIChRdWFkKiBxdWFkVmFsdWUgPSBnZXRRdWFkVmFsdWUoKSkK
KyAgICAgICAgcmV0dXJuIHF1YWRWYWx1ZS0+aGFzVmFyaWFibGVSZWZlcmVuY2UoKTsKKyAgICBp
ZiAoUmVjdCogcmVjdFZhbHVlID0gZ2V0UmVjdFZhbHVlKCkpCisgICAgICAgIHJldHVybiByZWN0
VmFsdWUtPmhhc1ZhcmlhYmxlUmVmZXJlbmNlKCk7CisgICAgaWYgKENTU0Jhc2ljU2hhcGUqIHNo
YXBlVmFsdWUgPSBnZXRTaGFwZVZhbHVlKCkpCisgICAgICAgIHJldHVybiBzaGFwZVZhbHVlLT5o
YXNWYXJpYWJsZVJlZmVyZW5jZSgpOworICAgIHJldHVybiBpc1ZhcmlhYmxlTmFtZSgpOworfQog
I2VuZGlmCiAKIHZvaWQgQ1NTUHJpbWl0aXZlVmFsdWU6OmFkZFN1YnJlc291cmNlU3R5bGVVUkxz
KExpc3RIYXNoU2V0PEtVUkw+JiB1cmxzLCBjb25zdCBTdHlsZVNoZWV0Q29udGVudHMqIHN0eWxl
U2hlZXQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZl
VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5oCmluZGV4IGNk
NmZkNDdlOTNjMmRjYjllZjJmMWQyN2U5OGQ1MDdmNzdmZGIwODIuLmJlOTk3OGM5YzIyNWMyOTQ3
NGY2MDIzOTlhOWE4ZmE1ZDNmM2M2YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NQcmltaXRpdmVWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVW
YWx1ZS5oCkBAIC0yOTUsNiArMjk1LDcgQEAgcHVibGljOgogICAgIFN0cmluZyBjdXN0b21Dc3NU
ZXh0KCkgY29uc3Q7CiAjaWYgRU5BQkxFKENTU19WQVJJQUJMRVMpCiAgICAgU3RyaW5nIGN1c3Rv
bVNlcmlhbGl6ZVJlc29sdmluZ1ZhcmlhYmxlcyhjb25zdCBIYXNoTWFwPEF0b21pY1N0cmluZywg
U3RyaW5nPiYpIGNvbnN0OworICAgIGJvb2wgaGFzVmFyaWFibGVSZWZlcmVuY2UoKSBjb25zdDsK
ICNlbmRpZgogCiAgICAgYm9vbCBpc1F1aXJrVmFsdWUoKSB7IHJldHVybiBtX2lzUXVpcmtWYWx1
ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1BhaXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9QYWlyLmgKaW5kZXggYTk1MzcwZGMzMDE1M2Q2OGRjYmRjM2I4OGYzYzA1YTdkMTUw
MDg5Mi4uYmVmMzY0OWEyODc1ZWYyMjc4OTc1OTlhNTlhMDRiNmIyZTMzOWYwOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL1BhaXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUGFp
ci5oCkBAIC0yNCw2ICsyNCw3IEBACiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNs
dWRlICJDU1NQcmltaXRpdmVWYWx1ZS5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKQEAgLTQ5LDYgKzUwLDI5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEZpcnN0KFBhc3NSZWZQ
dHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGZpcnN0KSB7IG1fZmlyc3QgPSBmaXJzdDsgfQogICAgIHZv
aWQgc2V0U2Vjb25kKFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHNlY29uZCkgeyBtX3Nl
Y29uZCA9IHNlY29uZDsgfQogCisgICAgc3RhdGljIFN0cmluZyBnZW5lcmF0ZUNzc1N0cmluZyhj
b25zdCBTdHJpbmcmIGZpcnN0LCBjb25zdCBTdHJpbmcmIHNlY29uZCkKKyAgICB7CisgICAgICAg
IGlmIChmaXJzdCA9PSBzZWNvbmQpCisgICAgICAgICAgICByZXR1cm4gZmlyc3Q7CisgICAgICAg
IHJldHVybiBmaXJzdCArICcgJyArIHNlY29uZDsKKyAgICB9CisKKyAgICBTdHJpbmcgY3NzVGV4
dCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gZ2VuZXJhdGVDc3NTdHJpbmcoZmlyc3Qo
KS0+Y3NzVGV4dCgpLCBzZWNvbmQoKS0+Y3NzVGV4dCgpKTsKKyAgICB9CisKKyNpZiBFTkFCTEUo
Q1NTX1ZBUklBQkxFUykKKyAgICBTdHJpbmcgc2VyaWFsaXplUmVzb2x2aW5nVmFyaWFibGVzKGNv
bnN0IEhhc2hNYXA8QXRvbWljU3RyaW5nLCBTdHJpbmc+JiB2YXJpYWJsZXMpIGNvbnN0CisgICAg
eworICAgICAgICByZXR1cm4gZ2VuZXJhdGVDc3NTdHJpbmcoZmlyc3QoKS0+Y3VzdG9tU2VyaWFs
aXplUmVzb2x2aW5nVmFyaWFibGVzKHZhcmlhYmxlcyksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNlY29uZCgpLT5jdXN0b21TZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXModmFyaWFibGVz
KSk7CisgICAgfQorICAgIAorICAgIGJvb2wgaGFzVmFyaWFibGVSZWZlcmVuY2UoKSBjb25zdCB7
IHJldHVybiBmaXJzdCgpLT5oYXNWYXJpYWJsZVJlZmVyZW5jZSgpIHx8IHNlY29uZCgpLT5oYXNW
YXJpYWJsZVJlZmVyZW5jZSgpOyB9CisjZW5kaWYKKworCiBwcml2YXRlOgogICAgIFBhaXIoKSA6
IG1fZmlyc3QoMCksIG1fc2Vjb25kKDApIHsgfQogICAgIFBhaXIoUGFzc1JlZlB0cjxDU1NQcmlt
aXRpdmVWYWx1ZT4gZmlyc3QsIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHNlY29uZCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9SZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvUmVjdC5oCmluZGV4IDM1NWQ2ZmI3YmJkOGNjZDMzZWJiYmRlMGEwODdjZDU4Yjg3NzYwNTEu
LmFmYTY1Mjg4YjhmYjBmNzg2M2IwYmY2MGUwNTI0ZjM1N2QwODcxOTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9SZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1JlY3QuaApA
QCAtMjMsNiArMjMsNyBAQAogCiAjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIKICNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM4LDYgKzM5LDE2IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldEJvdHRvbShQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBib3R0b20pIHsgbV9i
b3R0b20gPSBib3R0b207IH0KICAgICB2b2lkIHNldExlZnQoUGFzc1JlZlB0cjxDU1NQcmltaXRp
dmVWYWx1ZT4gbGVmdCkgeyBtX2xlZnQgPSBsZWZ0OyB9CiAKKyNpZiBFTkFCTEUoQ1NTX1ZBUklB
QkxFUykKKyAgICBib29sIGhhc1ZhcmlhYmxlUmVmZXJlbmNlKCkgY29uc3QKKyAgICB7CisgICAg
ICAgIHJldHVybiBtX3RvcC0+aGFzVmFyaWFibGVSZWZlcmVuY2UoKQorICAgICAgICAgICAgfHwg
bV9yaWdodC0+aGFzVmFyaWFibGVSZWZlcmVuY2UoKQorICAgICAgICAgICAgfHwgbV9ib3R0b20t
Pmhhc1ZhcmlhYmxlUmVmZXJlbmNlKCkKKyAgICAgICAgICAgIHx8IG1fbGVmdC0+aGFzVmFyaWFi
bGVSZWZlcmVuY2UoKTsKKyAgICB9CisjZW5kaWYKKwogcHJvdGVjdGVkOgogICAgIFJlY3RCYXNl
KCkgeyB9CiAgICAgUmVjdEJhc2UoY29uc3QgUmVjdEJhc2UmIGNsb25lRnJvbSkKQEAgLTYzLDYg
Kzc0LDI2IEBAIHB1YmxpYzoKICAgICAKICAgICBQYXNzUmVmUHRyPFJlY3Q+IGNsb25lRm9yQ1NT
T00oKSBjb25zdCB7IHJldHVybiBhZG9wdFJlZihuZXcgUmVjdCgqdGhpcykpOyB9CiAKKyAgICBz
dGF0aWMgU3RyaW5nIGdlbmVyYXRlQ3NzU3RyaW5nKGNvbnN0IFN0cmluZyYgdG9wLCBjb25zdCBT
dHJpbmcmIHJpZ2h0LCBjb25zdCBTdHJpbmcmIGJvdHRvbSwgY29uc3QgU3RyaW5nJiBsZWZ0KQor
ICAgIHsKKyAgICAgICAgcmV0dXJuICJyZWN0KCIgKyB0b3AgKyAnICcgKyByaWdodCArICcgJyAr
IGJvdHRvbSArICcgJyArIGxlZnQgKyAnKSc7CisgICAgfQorCisgICAgU3RyaW5nIGNzc1RleHQo
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGdlbmVyYXRlQ3NzU3RyaW5nKHRvcCgpLT5j
c3NUZXh0KCksIHJpZ2h0KCktPmNzc1RleHQoKSwgYm90dG9tKCktPmNzc1RleHQoKSwgbGVmdCgp
LT5jc3NUZXh0KCkpOworICAgIH0KKworI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQorICAgIFN0
cmluZyBzZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXMoY29uc3QgSGFzaE1hcDxBdG9taWNTdHJp
bmcsIFN0cmluZz4mIHZhcmlhYmxlcykgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBnZW5l
cmF0ZUNzc1N0cmluZyh0b3AoKS0+Y3VzdG9tU2VyaWFsaXplUmVzb2x2aW5nVmFyaWFibGVzKHZh
cmlhYmxlcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0KCktPmN1c3RvbVNlcmlh
bGl6ZVJlc29sdmluZ1ZhcmlhYmxlcyh2YXJpYWJsZXMpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICBib3R0b20oKS0+Y3VzdG9tU2VyaWFsaXplUmVzb2x2aW5nVmFyaWFibGVzKHZhcmlhYmxl
cyksCisgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQoKS0+Y3VzdG9tU2VyaWFsaXplUmVz
b2x2aW5nVmFyaWFibGVzKHZhcmlhYmxlcykpOworICAgIH0KKyNlbmRpZgorCiBwcml2YXRlOgog
ICAgIFJlY3QoKSB7IH0KICAgICBSZWN0KGNvbnN0IFJlY3QmIGNsb25lRnJvbSkgOiBSZWN0QmFz
ZShjbG9uZUZyb20pLCBSZWZDb3VudGVkPFJlY3Q+KCkgeyB9CkBAIC03NCw2ICsxMDUsNDAgQEAg
cHVibGljOgogICAgIAogICAgIFBhc3NSZWZQdHI8UXVhZD4gY2xvbmVGb3JDU1NPTSgpIGNvbnN0
IHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBRdWFkKCp0aGlzKSk7IH0KIAorICAgIHN0YXRpYyBTdHJp
bmcgZ2VuZXJhdGVDc3NTdHJpbmcoY29uc3QgU3RyaW5nJiB0b3AsIGNvbnN0IFN0cmluZyYgcmln
aHQsIGNvbnN0IFN0cmluZyYgYm90dG9tLCBjb25zdCBTdHJpbmcmIGxlZnQpCisgICAgeworICAg
ICAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKKyAgICAgICAgcmVzdWx0LmFwcGVuZCh0b3ApOwor
ICAgICAgICBpZiAocmlnaHQgIT0gdG9wIHx8IGJvdHRvbSAhPSB0b3AgfHwgbGVmdCAhPSB0b3Ap
IHsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAnKTsKKyAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQocmlnaHQpOworICAgICAgICAgICAgaWYgKGJvdHRvbSAhPSB0b3AgfHwgcmlnaHQgIT0g
bGVmdCkgeworICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAnKTsKKyAgICAgICAgICAg
ICAgICByZXN1bHQuYXBwZW5kKGJvdHRvbSk7CisgICAgICAgICAgICAgICAgaWYgKGxlZnQgIT0g
cmlnaHQpIHsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICcpOworICAgICAg
ICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGxlZnQpOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7
CisgICAgfQorCisgICAgU3RyaW5nIGNzc1RleHQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIGdlbmVyYXRlQ3NzU3RyaW5nKHRvcCgpLT5jc3NUZXh0KCksIHJpZ2h0KCktPmNzc1RleHQo
KSwgYm90dG9tKCktPmNzc1RleHQoKSwgbGVmdCgpLT5jc3NUZXh0KCkpOworICAgIH0KKworI2lm
IEVOQUJMRShDU1NfVkFSSUFCTEVTKQorICAgIFN0cmluZyBzZXJpYWxpemVSZXNvbHZpbmdWYXJp
YWJsZXMoY29uc3QgSGFzaE1hcDxBdG9taWNTdHJpbmcsIFN0cmluZz4mIHZhcmlhYmxlcykgY29u
c3QKKyAgICB7CisgICAgICAgIHJldHVybiBnZW5lcmF0ZUNzc1N0cmluZyh0b3AoKS0+Y3VzdG9t
U2VyaWFsaXplUmVzb2x2aW5nVmFyaWFibGVzKHZhcmlhYmxlcyksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByaWdodCgpLT5jdXN0b21TZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJs
ZXModmFyaWFibGVzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdHRvbSgp
LT5jdXN0b21TZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXModmFyaWFibGVzKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQoKS0+Y3VzdG9tU2VyaWFsaXplUmVzb2x2aW5n
VmFyaWFibGVzKHZhcmlhYmxlcykpOworICAgIH0KKyNlbmRpZgorCiBwcml2YXRlOgogICAgIFF1
YWQoKSB7IH0KICAgICBRdWFkKGNvbnN0IFF1YWQmIGNsb25lRnJvbSkgOiBSZWN0QmFzZShjbG9u
ZUZyb20pLCBSZWZDb3VudGVkPFF1YWQ+KCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZl
ci5jcHAKaW5kZXggNGUzMDY1YWJmNmNhMjk1MTBmOTA2OGFmOTA2NTAxZmEyMmVmMmEwMy4uOTgw
OWU2YTBjOGIzN2QyYjRjMmRiODk4NzJjYmZjZTNiYzE2ODQwYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVJlc29sdmVyLmNwcApAQCAtMzM1NSw5ICszMzU1LDcgQEAgc3RhdGljIGJvb2wgaGFzVmFy
aWFibGVSZWZlcmVuY2UoQ1NTVmFsdWUqIHZhbHVlKQogewogICAgIGlmICh2YWx1ZS0+aXNQcmlt
aXRpdmVWYWx1ZSgpKSB7CiAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1
ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOwotICAgICAgICBpZiAo
Q1NTQ2FsY1ZhbHVlKiBjYWxjVmFsdWUgPSBwcmltaXRpdmVWYWx1ZS0+Y3NzQ2FsY1ZhbHVlKCkp
Ci0gICAgICAgICAgICByZXR1cm4gY2FsY1ZhbHVlLT5oYXNWYXJpYWJsZVJlZmVyZW5jZSgpOwot
ICAgICAgICByZXR1cm4gcHJpbWl0aXZlVmFsdWUtPmlzVmFyaWFibGVOYW1lKCk7CisgICAgICAg
IHJldHVybiBwcmltaXRpdmVWYWx1ZS0+aGFzVmFyaWFibGVSZWZlcmVuY2UoKTsKICAgICB9CiAK
ICAgICBpZiAodmFsdWUtPmlzQ2FsY3VsYXRpb25WYWx1ZSgpKQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDNmODg4YmNmZDI2
NjE2NTI5MDI0ZDYxYjFjMGRkNTE1ZmUzNTA5NTEuLjEyMDE5YmVmMzNlMTUyMWRlNjA2ZTY0MWVm
NWNiYTA1MTkwN2ViOGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMi0wOS0wNSAgTHVrZSBN
YWNwaGVyc29uICAgPG1hY3BoZXJzb25AY2hyb21pdW0ub3JnPgorCisgICAgICAgIEVuc3VyZSB2
YXJpYWJsZXMgYXJlIHJlc29sdmVkIGZvciBzcGVjaWFsaXplZCBDU1MgcHJpbWl0aXZlIHZhbHVl
IHR5cGVzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTU5MzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgdGVzdHMgdGhhdCB1c2Ugc3BlY2lhbGl6ZWQgQ1NTIHZhbHVlcyAoZWcuIHBhaXJzLCBxdWFk
cykuCisKKyAgICAgICAgKiBmYXN0L2Nzcy92YXJpYWJsZXMvcm9vdC1iYWNrZ3JvdW5kLXNpemUt
ZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3MvdmFyaWFibGVzL3Jvb3Qt
YmFja2dyb3VuZC1zaXplLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL3ZhcmlhYmxl
cy92YXItaW5zaWRlLXBhaXItZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9j
c3MvdmFyaWFibGVzL3Zhci1pbnNpZGUtcGFpci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2Nzcy92YXJpYWJsZXMvdmFyLWluc2lkZS1xdWFkLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvY3NzL3ZhcmlhYmxlcy92YXItaW5zaWRlLXF1YWQuaHRtbDogQWRkZWQuCisK
IDIwMTItMDktMDYgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBO
ZXcgdGVzdHMgaW50cm9kdWNlZCBpbiByMTI3NzA0IGZhaWwKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvY3NzL3ZhcmlhYmxlcy9yb290LWJhY2tncm91bmQtc2l6ZS1leHBlY3RlZC5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvdmFyaWFibGVzL3Jvb3QtYmFja2dyb3VuZC1zaXplLWV4
cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTM1MzY3MjYwMzVjYTU5OGY5ZDIwOWY5YmE5YTViNTJm
YmQxMTRiZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3ZhcmlhYmxl
cy9yb290LWJhY2tncm91bmQtc2l6ZS1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsNCBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KK1RoaXMgdGVzdCBpcyBzdWNjZXNzZnVsIGlmIGl0IGRvZXMg
bm90IGNyYXNoLgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvdmFy
aWFibGVzL3Jvb3QtYmFja2dyb3VuZC1zaXplLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy92
YXJpYWJsZXMvcm9vdC1iYWNrZ3JvdW5kLXNpemUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMzNiZWVlMGU2
M2U3NmZiNzBiNDBmZDgyOGUwYTFhYTc5ODdlMTAwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9jc3MvdmFyaWFibGVzL3Jvb3QtYmFja2dyb3VuZC1zaXplLmh0bWwKQEAgLTAs
MCArMSwxMyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxzY3JpcHQ+Cit0cnkgeyBpbnRl
cm5hbHMuc2V0dGluZ3Muc2V0Q1NTVmFyaWFibGVzRW5hYmxlZCh0cnVlKTsgfSBjYXRjaCAoZSkg
e30KKzwvc2NyaXB0PgorPHN0eWxlPgorOnJvb3QgeworICAtd2Via2l0LWJhY2tncm91bmQtc2l6
ZTogLXdlYmtpdC1jYWxjKC13ZWJraXQtdmFyKGEpKTsKK30KKzwvc3R5bGU+Cis8c3R5bGU+PC9z
dHlsZT4KK1RoaXMgdGVzdCBpcyBzdWNjZXNzZnVsIGlmIGl0IGRvZXMgbm90IGNyYXNoLgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvdmFyaWFibGVzL3Zhci1pbnNp
ZGUtcGFpci1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvdmFyaWFibGVzL3Zh
ci1pbnNpZGUtcGFpci1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFlMjI5YjcxM2QzYmU2ODQz
YmQzNGRhN2NlZGUyOTU0MjM5Mjg5YWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2Nzcy92YXJpYWJsZXMvdmFyLWluc2lkZS1wYWlyLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCAr
MSwxMCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxzdHlsZT4KK2JvZHkgeworICAgIGJv
cmRlcjogMXB4IHNvbGlkIGdyZWVuOworICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDNweCA2
cHg7Cit9Cis8L3N0eWxlPgorVGhpcyB0ZXh0IHNob3VsZCBiZSBzdXJyb3VuZGVkIGJ5IGEgZ3Jl
ZW4gYm9yZGVyIHdpdGggYSByb3VuZGVkIHRvcCBsZWZ0IGNvcm5lci4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL3ZhcmlhYmxlcy92YXItaW5zaWRlLXBhaXIuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3ZhcmlhYmxlcy92YXItaW5zaWRlLXBhaXIuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wOTliNDE1NDIxOGJkODZmZTA2YzI0NDA1YzYxYTA1ZTBjMGU2OTA4Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvdmFyaWFibGVzL3Zhci1pbnNpZGUt
cGFpci5odG1sCkBAIC0wLDAgKzEsMTUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8c2Ny
aXB0PgoraW50ZXJuYWxzLnNldHRpbmdzLnNldENTU1ZhcmlhYmxlc0VuYWJsZWQodHJ1ZSk7Cis8
L3NjcmlwdD4KKzxzdHlsZT4KK2JvZHkgeworICAgIGJvcmRlcjogMXB4IHNvbGlkIGdyZWVuOwor
ICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IC13ZWJraXQtdmFyKGEpIC13ZWJraXQtdmFyKGIp
OworICAgIC13ZWJraXQtdmFyLWE6IDNweDsKKyAgICAtd2Via2l0LXZhci1iOiA2cHg7Cit9Cis8
L3N0eWxlPgorVGhpcyB0ZXh0IHNob3VsZCBiZSBzdXJyb3VuZGVkIGJ5IGEgZ3JlZW4gYm9yZGVy
IHdpdGggYSByb3VuZGVkIHRvcCBsZWZ0IGNvcm5lci4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvY3NzL3ZhcmlhYmxlcy92YXItaW5zaWRlLXF1YWQtZXhwZWN0ZWQuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3ZhcmlhYmxlcy92YXItaW5zaWRlLXF1YWQtZXhwZWN0
ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42MjdhZWQ3MTliMTQxYTQzMmE4YTc2N2IzODJlMGQzNTNhYjQ1
NWRlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvdmFyaWFibGVzL3Zh
ci1pbnNpZGUtcXVhZC1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMTEgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8c3R5bGU+Citib2R5IHsKKyAgICBib3JkZXItY29sb3I6IGdyZWVuOwor
ICAgIGJvcmRlci13aWR0aDogMXB4IDJweCAzcHggNHB4OworICAgIGJvcmRlci1zdHlsZTogc29s
aWQ7Cit9Cis8L3N0eWxlPgorVGhpcyB0ZXh0IHNob3VsZCBiZSBzdXJyb3VuZGVkIGJ5IGEgZ3Jl
ZW4gYm9yZGVyIHdpdGggMXB4IHRvcCwgMnB4IHJpZ2h0LCAzcHggYm90dG9tLCA0cHggbGVmdC4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL3ZhcmlhYmxlcy92YXIt
aW5zaWRlLXF1YWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3ZhcmlhYmxlcy92YXItaW5z
aWRlLXF1YWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNDA0ZDRiYmVhNWIxMjZjZGM0ZGVlMzZjN2Y1Nzcy
MTllMTljNjFlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvdmFyaWFi
bGVzL3Zhci1pbnNpZGUtcXVhZC5odG1sCkBAIC0wLDAgKzEsMTggQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8c2NyaXB0PgoraW50ZXJuYWxzLnNldHRpbmdzLnNldENTU1ZhcmlhYmxlc0Vu
YWJsZWQodHJ1ZSk7Cis8L3NjcmlwdD4KKzxzdHlsZT4KK2JvZHkgeworICAgIGJvcmRlci1jb2xv
cjogZ3JlZW47CisgICAgYm9yZGVyLXdpZHRoOiAtd2Via2l0LXZhcihhKSAtd2Via2l0LXZhcihi
KSAtd2Via2l0LXZhcihjKSAtd2Via2l0LXZhcihkKTsKKyAgICBib3JkZXItc3R5bGU6IHNvbGlk
OworICAgIC13ZWJraXQtdmFyLWE6IDFweDsKKyAgICAtd2Via2l0LXZhci1iOiAycHg7CisgICAg
LXdlYmtpdC12YXItYzogM3B4OworICAgIC13ZWJraXQtdmFyLWQ6IDRweDsKK30KKzwvc3R5bGU+
CitUaGlzIHRleHQgc2hvdWxkIGJlIHN1cnJvdW5kZWQgYnkgYSBncmVlbiBib3JkZXIgd2l0aCAx
cHggdG9wLCAycHggcmlnaHQsIDNweCBib3R0b20sIDRweCBsZWZ0LgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165498</attachid>
            <date>2012-09-24 19:02:06 -0700</date>
            <delta_ts>2012-09-25 22:40:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95930-20120925120126.patch</filename>
            <type>text/plain</type>
            <size>31188</size>
            <attacher name="Luke Macpherson">macpherson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5NDI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTJlMGI2ODRjNjUwOWZm
YTIyYWQ0MDYyMzkwMTNhOGEwMjcwMGQ5Mi4uYWQwNDQ3NWYwODQzMjkyZGNlODVlNTg3Yjg3N2Ex
OTUwNDNmNTUyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDEyLTA5LTA1ICBMdWtl
IE1hY3BoZXJzb24gICA8bWFjcGhlcnNvbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgRW5zdXJl
IHZhcmlhYmxlcyBhcmUgcmVzb2x2ZWQgZm9yIHNwZWNpYWxpemVkIENTUyBwcmltaXRpdmUgdmFs
dWUgdHlwZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05NTkzMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFNvbWV0aW1lcyBDU1NQcmltaXRpdmVWYWx1ZSBjb250YWlucyBhIGNvbGxlY3Rpb24gb2Ygb3Ro
ZXIgQ1NTUHJpbWl0aXZlVmFsdWVzIChlZy4gMiwgNCBvciBuKS4KKyAgICAgICAgVGhpcyBwYXRj
aCBtYWtlcyBzdXJlIGFueSB2YXJpYWJsZXMgY29udGFpbmVkIGluc2lkZSB0aG9zZSBjaGlsZCB2
YWx1ZXMgYXJlIHJlc29sdmVkLgorCisgICAgICAgIFRlc3RzOiBmYXN0L2Nzcy92YXJpYWJsZXMv
cm9vdC1iYWNrZ3JvdW5kLXNpemUuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9jc3MvdmFyaWFi
bGVzL3Zhci1pbnNpZGUtcGFpci5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Nzcy92YXJpYWJs
ZXMvdmFyLWluc2lkZS1xdWFkLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvY3NzL3ZhcmlhYmxl
cy92YXItaW5zaWRlLXNoYXBlLmh0bWwKKworICAgICAgICAqIGNzcy9DU1NCYXNpY1NoYXBlcy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpidWlsZFJlY3RhbmdsZVN0cmluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NCYXNpY1NoYXBlUmVjdGFuZ2xlOjpjc3NUZXh0KToKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQmFzaWNTaGFwZVJlY3RhbmdsZTo6c2VyaWFsaXpl
UmVzb2x2aW5nVmFyaWFibGVzKToKKyAgICAgICAgR2VuZXJhdGVzIGEgc3RyaW5nIHJlcHJlc2Vu
dGF0aW9uIG9mIHRoaXMgdmFsdWUgd2l0aCB2YXJpYWJsZXMgcmVzb2x2ZWQgZnJvbSB0aGUgcHJv
dmlkZWQgSGFzaE1hcCBvZiB2YXJpYWJsZXMuCisgICAgICAgIChXZWJDb3JlOjpDU1NCYXNpY1No
YXBlUmVjdGFuZ2xlOjpoYXNWYXJpYWJsZVJlZmVyZW5jZSk6CisgICAgICAgIFJldHVybnMgdHJ1
ZSBpZiBhbnkgb2YgdGhlIHZhbHVlcyB1c2VkIHRvIGRlc2NyaWJlIHRoZSByZWN0YW5nZSBkZXBl
bmQgb24gdGhlIHZhbHVlIG9mIGEgdmFyaWFibGUuCisgICAgICAgIChXZWJDb3JlOjpidWlsZENp
cmNsZVN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NCYXNpY1NoYXBlQ2lyY2xlOjpjc3NU
ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Jhc2ljU2hhcGVDaXJjbGU6OnNlcmlhbGl6ZVJl
c29sdmluZ1ZhcmlhYmxlcyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NCYXNpY1NoYXBlQ2lyY2xl
OjpoYXNWYXJpYWJsZVJlZmVyZW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpidWlsZEVsbGlwc2VT
dHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQmFzaWNTaGFwZUVsbGlwc2U6OmNzc1RleHQp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTQmFzaWNTaGFwZUVsbGlwc2U6OnNlcmlhbGl6ZVJlc29s
dmluZ1ZhcmlhYmxlcyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NCYXNpY1NoYXBlRWxsaXBzZTo6
aGFzVmFyaWFibGVSZWZlcmVuY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQmFzaWNTaGFwZVBv
bHlnb246OnNlcmlhbGl6ZVJlc29sdmluZ1ZhcmlhYmxlcyk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NCYXNpY1NoYXBlUG9seWdvbjo6aGFzVmFyaWFibGVSZWZlcmVuY2UpOgorICAgICAgICAqIGNz
cy9DU1NCYXNpY1NoYXBlcy5oOgorICAgICAgICAoQ1NTQmFzaWNTaGFwZVJlY3RhbmdsZSk6Cisg
ICAgICAgIChDU1NCYXNpY1NoYXBlQ2lyY2xlKToKKyAgICAgICAgKENTU0Jhc2ljU2hhcGVFbGxp
cHNlKToKKyAgICAgICAgKENTU0Jhc2ljU2hhcGVQb2x5Z29uKToKKyAgICAgICAgKiBjc3MvQ1NT
UHJpbWl0aXZlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6
OmN1c3RvbUNzc1RleHQpOgorICAgICAgICBNb3ZlIHRoZSBsb2dpYyBmb3IgZ2VuZXJhdGluZyB0
aGUgc3RyaW5ncyBmb3IgUmVjdHMsIFF1YWRzLCBQYWlycyBhbmQgU2hhcGVzIGludG8gdGhlaXIg
cmVzcGVjdGl2ZSBjbGFzc2VzLgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6
OmN1c3RvbVNlcmlhbGl6ZVJlc29sdmluZ1ZhcmlhYmxlcyk6CisgICAgICAgIEhhbmRsZSBSZWN0
cywgUXVhZHMsIFBhaXJzIGFuZCBTaGFwZXMgd2hlbiB0aGV5IGNvbnRhaW4gdmFyaWFibGVzLCBi
eSBjYWxsaW5nIHRoZWlyIHNlcmlhbGl6ZVJlc29sdmluZ1ZhcmlhYmxlcyBtZXRob2QuCisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpoYXNW
YXJpYWJsZVJlZmVyZW5jZSk6CisgICAgICAgIEhhbmRsZSBSZWN0cywgUXVhZHMsIFBhaXJzIGFu
ZCBTaGFwZXMgYnkgY2FsbGluZyB0aGVpciByZXNwZWN0aXZlIGhhc1ZhcmlhYmxlUmVmZXJlbmNl
IG1ldGhvZHMuCisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmg6CisgICAgICAgIChD
U1NQcmltaXRpdmVWYWx1ZSk6CisgICAgICAgICogY3NzL1BhaXIuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlBhaXI6OnBhaXJTdHJpbmcpOgorICAgICAgICAoUGFpcik6CisgICAgICAgIChXZWJDb3Jl
OjpQYWlyOjpjc3NUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhaXI6OnNlcmlhbGl6ZVJlc29s
dmluZ1ZhcmlhYmxlcyk6CisgICAgICAgIChXZWJDb3JlOjpQYWlyOjpoYXNWYXJpYWJsZVJlZmVy
ZW5jZSk6CisgICAgICAgICogY3NzL1JlY3QuaDoKKyAgICAgICAgKFJlY3RCYXNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlY3RCYXNlOjpoYXNWYXJpYWJsZVJlZmVyZW5jZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZWN0OjpyZWN0U3RyaW5nKToKKyAgICAgICAgKFJlY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVjdDo6Y3NzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpSZWN0OjpzZXJpYWxpemVS
ZXNvbHZpbmdWYXJpYWJsZXMpOgorICAgICAgICAoV2ViQ29yZTo6UXVhZDo6cXVhZFN0cmluZyk6
CisgICAgICAgIChRdWFkKToKKyAgICAgICAgKFdlYkNvcmU6OlF1YWQ6OmNzc1RleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6UXVhZDo6c2VyaWFsaXplUmVzb2x2aW5nVmFyaWFibGVzKToKKyAgICAg
ICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29s
dmVyOjpjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QpOgorCiAyMDEyLTA5LTI0ICBNYXJrIFBp
bGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dW01hY10g
UmVtb3ZlIGxvYWRGb250IGZyb20gUGxhdGZvcm1TdXBwb3J0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTQmFzaWNTaGFwZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Jh
c2ljU2hhcGVzLmNwcAppbmRleCBjMDdkNjYzYzYzODE3MjA4NDg2NjdiOTUxNzBmNmE4MWEzNzVm
YWM5Li4zNzMzNWZmY2FkN2M1NDJkZDUwYzZkMTIzMGFmZjY3Njc5MGNmZjc0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQmFzaWNTaGFwZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5jcHAKQEAgLTM3LDk3ICszNywxMzIgQEAgdXNpbmcgbmFt
ZXNwYWNlIFdURjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TdHJpbmcgQ1NTQmFzaWNTaGFw
ZVJlY3RhbmdsZTo6Y3NzVGV4dCgpIGNvbnN0CitzdGF0aWMgU3RyaW5nIGJ1aWxkUmVjdGFuZ2xl
U3RyaW5nKGNvbnN0IFN0cmluZyYgeCwgY29uc3QgU3RyaW5nJiB5LCBjb25zdCBTdHJpbmcmIHdp
ZHRoLCBjb25zdCBTdHJpbmcmIGhlaWdodCwgY29uc3QgU3RyaW5nJiByYWRpdXNYLCBjb25zdCBT
dHJpbmcmIHJhZGl1c1kpCiB7CiAgICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7Ci0gICAgcmVzdWx0
LnJlc2VydmVDYXBhY2l0eSgzMik7Ci0KICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgicmVjdGFu
Z2xlKCIpOwotCi0gICAgcmVzdWx0LmFwcGVuZChtX3gtPmNzc1RleHQoKSk7CisgICAgcmVzdWx0
LmFwcGVuZCh4KTsKICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKLQotICAgIHJlc3Vs
dC5hcHBlbmQobV95LT5jc3NUZXh0KCkpOworICAgIHJlc3VsdC5hcHBlbmQoeSk7CiAgICAgcmVz
dWx0LmFwcGVuZExpdGVyYWwoIiwgIik7Ci0KLSAgICByZXN1bHQuYXBwZW5kKG1fd2lkdGgtPmNz
c1RleHQoKSk7CisgICAgcmVzdWx0LmFwcGVuZCh3aWR0aCk7CiAgICAgcmVzdWx0LmFwcGVuZExp
dGVyYWwoIiwgIik7Ci0KLSAgICByZXN1bHQuYXBwZW5kKG1faGVpZ2h0LT5jc3NUZXh0KCkpOwot
Ci0gICAgaWYgKG1fcmFkaXVzWC5nZXQoKSkgeworICAgIHJlc3VsdC5hcHBlbmQoaGVpZ2h0KTsK
KyAgICBpZiAoIXJhZGl1c1guaXNOdWxsKCkpIHsKICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVy
YWwoIiwgIik7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQobV9yYWRpdXNYLT5jc3NUZXh0KCkpOwot
Ci0gICAgICAgIGlmIChtX3JhZGl1c1kuZ2V0KCkpIHsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChy
YWRpdXNYKTsKKyAgICAgICAgaWYgKCFyYWRpdXNZLmlzTnVsbCgpKSB7CiAgICAgICAgICAgICBy
ZXN1bHQuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQobV9y
YWRpdXNZLT5jc3NUZXh0KCkpOworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChyYWRpdXNZKTsK
ICAgICAgICAgfQogICAgIH0KLQogICAgIHJlc3VsdC5hcHBlbmQoJyknKTsKLQogICAgIHJldHVy
biByZXN1bHQudG9TdHJpbmcoKTsKIH0KIAotU3RyaW5nIENTU0Jhc2ljU2hhcGVDaXJjbGU6OmNz
c1RleHQoKSBjb25zdAorU3RyaW5nIENTU0Jhc2ljU2hhcGVSZWN0YW5nbGU6OmNzc1RleHQoKSBj
b25zdAogewotICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OwotICAgIHJlc3VsdC5yZXNlcnZlQ2Fw
YWNpdHkoMzIpOwotCi0gICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoImNpcmNsZSgiKTsKKyAgICBy
ZXR1cm4gYnVpbGRSZWN0YW5nbGVTdHJpbmcobV94LT5jc3NUZXh0KCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1feS0+Y3NzVGV4dCgpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtX3dpZHRoLT5jc3NUZXh0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1faGVpZ2h0LT5jc3NUZXh0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1fcmFkaXVzWC5nZXQoKSA/IG1fcmFkaXVzWC0+Y3NzVGV4dCgpIDogU3RyaW5nKCksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcmFkaXVzWS5nZXQoKSA/IG1fcmFkaXVz
WS0+Y3NzVGV4dCgpIDogU3RyaW5nKCkpOworfQogCi0gICAgcmVzdWx0LmFwcGVuZChtX2NlbnRl
clgtPmNzc1RleHQoKSk7Ci0gICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiwgIik7CisjaWYgRU5B
QkxFKENTU19WQVJJQUJMRVMpCitTdHJpbmcgQ1NTQmFzaWNTaGFwZVJlY3RhbmdsZTo6c2VyaWFs
aXplUmVzb2x2aW5nVmFyaWFibGVzKGNvbnN0IEhhc2hNYXA8QXRvbWljU3RyaW5nLCBTdHJpbmc+
JiB2YXJpYWJsZXMpIGNvbnN0Cit7CisgICAgcmV0dXJuIGJ1aWxkUmVjdGFuZ2xlU3RyaW5nKG1f
eC0+c2VyaWFsaXplUmVzb2x2aW5nVmFyaWFibGVzKHZhcmlhYmxlcyksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1feS0+c2VyaWFsaXplUmVzb2x2aW5nVmFyaWFibGVzKHZhcmlh
YmxlcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fd2lkdGgtPnNlcmlhbGl6
ZVJlc29sdmluZ1ZhcmlhYmxlcyh2YXJpYWJsZXMpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtX2hlaWdodC0+c2VyaWFsaXplUmVzb2x2aW5nVmFyaWFibGVzKHZhcmlhYmxlcyks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcmFkaXVzWC5nZXQoKSA/IG1fcmFk
aXVzWC0+c2VyaWFsaXplUmVzb2x2aW5nVmFyaWFibGVzKHZhcmlhYmxlcykgOiBTdHJpbmcoKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9yYWRpdXNZLmdldCgpID8gbV9yYWRp
dXNZLT5zZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXModmFyaWFibGVzKSA6IFN0cmluZygpKTsK
K30KIAotICAgIHJlc3VsdC5hcHBlbmQobV9jZW50ZXJZLT5jc3NUZXh0KCkpOwotICAgIHJlc3Vs
dC5hcHBlbmRMaXRlcmFsKCIsICIpOworYm9vbCBDU1NCYXNpY1NoYXBlUmVjdGFuZ2xlOjpoYXNW
YXJpYWJsZVJlZmVyZW5jZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1feC0+aGFzVmFyaWFibGVS
ZWZlcmVuY2UoKQorICAgICAgICB8fCBtX3ktPmhhc1ZhcmlhYmxlUmVmZXJlbmNlKCkKKyAgICAg
ICAgfHwgbV93aWR0aC0+aGFzVmFyaWFibGVSZWZlcmVuY2UoKQorICAgICAgICB8fCBtX2hlaWdo
dC0+aGFzVmFyaWFibGVSZWZlcmVuY2UoKQorICAgICAgICB8fCAobV9yYWRpdXNYLmdldCgpICYm
IG1fcmFkaXVzWC0+aGFzVmFyaWFibGVSZWZlcmVuY2UoKSkKKyAgICAgICAgfHwgKG1fcmFkaXVz
WS5nZXQoKSAmJiBtX3JhZGl1c1ktPmhhc1ZhcmlhYmxlUmVmZXJlbmNlKCkpOworfQorI2VuZGlm
CiAKLSAgICByZXN1bHQuYXBwZW5kKG1fcmFkaXVzLT5jc3NUZXh0KCkpOwotICAgIHJlc3VsdC5h
cHBlbmQoJyknKTsKK3N0YXRpYyBTdHJpbmcgYnVpbGRDaXJjbGVTdHJpbmcoY29uc3QgU3RyaW5n
JiB4LCBjb25zdCBTdHJpbmcmIHksIGNvbnN0IFN0cmluZyYgcmFkaXVzKQoreworICAgIHJldHVy
biAiY2lyY2xlKCIgKyB4ICsgIiwgIiArIHkgKyAiLCAiICsgcmFkaXVzICsgJyknOworfQogCi0g
ICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOworU3RyaW5nIENTU0Jhc2ljU2hhcGVDaXJjbGU6
OmNzc1RleHQoKSBjb25zdAoreworICAgIHJldHVybiBidWlsZENpcmNsZVN0cmluZyhtX2NlbnRl
clgtPmNzc1RleHQoKSwgbV9jZW50ZXJZLT5jc3NUZXh0KCksIG1fcmFkaXVzLT5jc3NUZXh0KCkp
OwogfQogCi1TdHJpbmcgQ1NTQmFzaWNTaGFwZUVsbGlwc2U6OmNzc1RleHQoKSBjb25zdAorI2lm
IEVOQUJMRShDU1NfVkFSSUFCTEVTKQorU3RyaW5nIENTU0Jhc2ljU2hhcGVDaXJjbGU6OnNlcmlh
bGl6ZVJlc29sdmluZ1ZhcmlhYmxlcyhjb25zdCBIYXNoTWFwPEF0b21pY1N0cmluZywgU3RyaW5n
PiYgdmFyaWFibGVzKSBjb25zdAogewotICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OwotICAgIHJl
c3VsdC5yZXNlcnZlQ2FwYWNpdHkoMzIpOwotICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCJlbGxp
cHNlKCIpOworICAgIHJldHVybiBidWlsZENpcmNsZVN0cmluZyhtX2NlbnRlclgtPnNlcmlhbGl6
ZVJlc29sdmluZ1ZhcmlhYmxlcyh2YXJpYWJsZXMpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtX2NlbnRlclktPnNlcmlhbGl6ZVJlc29sdmluZ1ZhcmlhYmxlcyh2YXJpYWJsZXMpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3JhZGl1cy0+c2VyaWFsaXplUmVzb2x2aW5n
VmFyaWFibGVzKHZhcmlhYmxlcykpOworfQogCi0gICAgcmVzdWx0LmFwcGVuZChtX2NlbnRlclgt
PmNzc1RleHQoKSk7Ci0gICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiwgIik7Citib29sIENTU0Jh
c2ljU2hhcGVDaXJjbGU6Omhhc1ZhcmlhYmxlUmVmZXJlbmNlKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9jZW50ZXJYLT5oYXNWYXJpYWJsZVJlZmVyZW5jZSgpCisgICAgICAgIHx8IG1fY2VudGVy
WS0+aGFzVmFyaWFibGVSZWZlcmVuY2UoKQorICAgICAgICB8fCBtX3JhZGl1cy0+aGFzVmFyaWFi
bGVSZWZlcmVuY2UoKTsKK30KKyNlbmRpZgogCi0gICAgcmVzdWx0LmFwcGVuZChtX2NlbnRlclkt
PmNzc1RleHQoKSk7Ci0gICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiwgIik7CitzdGF0aWMgU3Ry
aW5nIGJ1aWxkRWxsaXBzZVN0cmluZyhjb25zdCBTdHJpbmcmIHgsIGNvbnN0IFN0cmluZyYgeSwg
Y29uc3QgU3RyaW5nJiByYWRpdXNYLCBjb25zdCBTdHJpbmcmIHJhZGl1c1kpCit7CisgICAgcmV0
dXJuICJlbGxpcHNlKCIgKyB4ICsgIiwgIiArIHkgKyAiLCAiICsgcmFkaXVzWCArICIsICIgKyBy
YWRpdXNZICsgJyknOworfQogCi0gICAgcmVzdWx0LmFwcGVuZChtX3JhZGl1c1gtPmNzc1RleHQo
KSk7Ci0gICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiwgIik7CitTdHJpbmcgQ1NTQmFzaWNTaGFw
ZUVsbGlwc2U6OmNzc1RleHQoKSBjb25zdAoreworICAgIHJldHVybiBidWlsZEVsbGlwc2VTdHJp
bmcobV9jZW50ZXJYLT5jc3NUZXh0KCksIG1fY2VudGVyWS0+Y3NzVGV4dCgpLCBtX3JhZGl1c1gt
PmNzc1RleHQoKSwgbV9yYWRpdXNZLT5jc3NUZXh0KCkpOworfQogCi0gICAgcmVzdWx0LmFwcGVu
ZChtX3JhZGl1c1ktPmNzc1RleHQoKSk7Ci0gICAgcmVzdWx0LmFwcGVuZCgnKScpOworI2lmIEVO
QUJMRShDU1NfVkFSSUFCTEVTKQorU3RyaW5nIENTU0Jhc2ljU2hhcGVFbGxpcHNlOjpzZXJpYWxp
emVSZXNvbHZpbmdWYXJpYWJsZXMoY29uc3QgSGFzaE1hcDxBdG9taWNTdHJpbmcsIFN0cmluZz4m
IHZhcmlhYmxlcykgY29uc3QKK3sKKyAgICByZXR1cm4gYnVpbGRFbGxpcHNlU3RyaW5nKG1fY2Vu
dGVyWC0+c2VyaWFsaXplUmVzb2x2aW5nVmFyaWFibGVzKHZhcmlhYmxlcyksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtX2NlbnRlclktPnNlcmlhbGl6ZVJlc29sdmluZ1ZhcmlhYmxl
cyh2YXJpYWJsZXMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9yYWRpdXNYLT5z
ZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXModmFyaWFibGVzKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1fcmFkaXVzWS0+c2VyaWFsaXplUmVzb2x2aW5nVmFyaWFibGVzKHZhcmlh
YmxlcykpOworfQogCi0gICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOworYm9vbCBDU1NCYXNp
Y1NoYXBlRWxsaXBzZTo6aGFzVmFyaWFibGVSZWZlcmVuY2UoKSBjb25zdAoreworICAgIHJldHVy
biBtX2NlbnRlclgtPmhhc1ZhcmlhYmxlUmVmZXJlbmNlKCkKKyAgICAgICAgfHwgbV9jZW50ZXJZ
LT5oYXNWYXJpYWJsZVJlZmVyZW5jZSgpCisgICAgICAgIHx8IG1fcmFkaXVzWC0+aGFzVmFyaWFi
bGVSZWZlcmVuY2UoKQorICAgICAgICB8fCBtX3JhZGl1c1ktPmhhc1ZhcmlhYmxlUmVmZXJlbmNl
KCk7CiB9CisjZW5kaWYKIAotU3RyaW5nIENTU0Jhc2ljU2hhcGVQb2x5Z29uOjpjc3NUZXh0KCkg
Y29uc3QKK3N0YXRpYyBTdHJpbmcgYnVpbGRQb2x5Z29uU3RyaW5nKGNvbnN0IFdpbmRSdWxlJiB3
aW5kUnVsZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBvaW50cykKIHsKICAgICBTdHJpbmdCdWls
ZGVyIHJlc3VsdDsKLSAgICByZXN1bHQucmVzZXJ2ZUNhcGFjaXR5KDMyKTsKIAotICAgIGlmICht
X3dpbmRSdWxlID09IFJVTEVfRVZFTk9ERCkKKyAgICBpZiAod2luZFJ1bGUgPT0gUlVMRV9FVkVO
T0REKQogICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgicG9seWdvbihldmVub2RkLCAiKTsK
ICAgICBlbHNlCiAgICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCJwb2x5Z29uKG5vbnplcm8s
ICIpOwogCi0gICAgQVNTRVJUKCEobV92YWx1ZXMuc2l6ZSgpICUgMikpOworICAgIEFTU0VSVCgh
KHBvaW50cy5zaXplKCkgJSAyKSk7CiAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV92
YWx1ZXMuc2l6ZSgpOyBpICs9IDIpIHsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBvaW50
cy5zaXplKCk7IGkgKz0gMikgewogICAgICAgICBpZiAoaSkKICAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmRMaXRlcmFsKCIsICIpOwotICAgICAgICByZXN1bHQuYXBwZW5kKG1fdmFsdWVzLmF0KGkp
LT5jc3NUZXh0KCkpOworICAgICAgICByZXN1bHQuYXBwZW5kKHBvaW50c1tpXSk7CiAgICAgICAg
IHJlc3VsdC5hcHBlbmQoJyAnKTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZChtX3ZhbHVlcy5hdChp
ICsgMSktPmNzc1RleHQoKSk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQocG9pbnRzW2kgKyAxXSk7
CiAgICAgfQogCiAgICAgcmVzdWx0LmFwcGVuZCgnKScpOwpAQCAtMTM1LDUgKzE3MCwzOCBAQCBT
dHJpbmcgQ1NTQmFzaWNTaGFwZVBvbHlnb246OmNzc1RleHQoKSBjb25zdAogICAgIHJldHVybiBy
ZXN1bHQudG9TdHJpbmcoKTsKIH0KIAorU3RyaW5nIENTU0Jhc2ljU2hhcGVQb2x5Z29uOjpjc3NU
ZXh0KCkgY29uc3QKK3sKKyAgICBWZWN0b3I8U3RyaW5nPiBwb2ludHM7CisgICAgcG9pbnRzLnJl
c2VydmVJbml0aWFsQ2FwYWNpdHkobV92YWx1ZXMuc2l6ZSgpKTsKKworICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbV92YWx1ZXMuc2l6ZSgpOyArK2kpCisgICAgICAgIHBvaW50cy5hcHBlbmQo
bV92YWx1ZXMuYXQoaSktPmNzc1RleHQoKSk7CisKKyAgICByZXR1cm4gYnVpbGRQb2x5Z29uU3Ry
aW5nKG1fd2luZFJ1bGUsIHBvaW50cyk7Cit9CisKKyNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykK
K1N0cmluZyBDU1NCYXNpY1NoYXBlUG9seWdvbjo6c2VyaWFsaXplUmVzb2x2aW5nVmFyaWFibGVz
KGNvbnN0IEhhc2hNYXA8QXRvbWljU3RyaW5nLCBTdHJpbmc+JiB2YXJpYWJsZXMpIGNvbnN0Cit7
CisgICAgVmVjdG9yPFN0cmluZz4gcG9pbnRzOworICAgIHBvaW50cy5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KG1fdmFsdWVzLnNpemUoKSk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1f
dmFsdWVzLnNpemUoKTsgKytpKQorICAgICAgICBwb2ludHMuYXBwZW5kKG1fdmFsdWVzLmF0KGkp
LT5zZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXModmFyaWFibGVzKSk7CisKKyAgICByZXR1cm4g
YnVpbGRQb2x5Z29uU3RyaW5nKG1fd2luZFJ1bGUsIHBvaW50cyk7Cit9CisKK2Jvb2wgQ1NTQmFz
aWNTaGFwZVBvbHlnb246Omhhc1ZhcmlhYmxlUmVmZXJlbmNlKCkgY29uc3QKK3sKKyAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG1fdmFsdWVzLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmICht
X3ZhbHVlcy5hdChpKS0+aGFzVmFyaWFibGVSZWZlcmVuY2UoKSkKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQmFzaWNT
aGFwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5oCmluZGV4IDM0ZTdl
ZjBiMmI5ODQxNzZjOWNiMTAyODgxOGJjZWUyMjQxN2FkN2EuLmVmMzIwOTg5MTg0NDYzZmQxMmIx
NzY0YThhYjg4ZGJlYTk2OGUwOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NC
YXNpY1NoYXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5oCkBA
IC01MCw2ICs1MCwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCA9
IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgY3NzVGV4dCgpIGNvbnN0ID0gMDsKIAorI2lmIEVOQUJM
RShDU1NfVkFSSUFCTEVTKQorICAgIHZpcnR1YWwgU3RyaW5nIHNlcmlhbGl6ZVJlc29sdmluZ1Zh
cmlhYmxlcyhjb25zdCBIYXNoTWFwPEF0b21pY1N0cmluZywgU3RyaW5nPiYpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIGJvb2wgaGFzVmFyaWFibGVSZWZlcmVuY2UoKSBjb25zdCA9IDA7CisjZW5k
aWYKKwogcHVibGljOgogICAgIHZpcnR1YWwgfkNTU0Jhc2ljU2hhcGUoKSB7IH0KIApAQCAtNzgs
NiArODMsMTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1
cm4gQ1NTX0JBU0lDX1NIQVBFX1JFQ1RBTkdMRTsgfQogICAgIHZpcnR1YWwgU3RyaW5nIGNzc1Rl
eHQoKSBjb25zdDsKIAorI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQorICAgIHZpcnR1YWwgU3Ry
aW5nIHNlcmlhbGl6ZVJlc29sdmluZ1ZhcmlhYmxlcyhjb25zdCBIYXNoTWFwPEF0b21pY1N0cmlu
ZywgU3RyaW5nPiYpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBoYXNWYXJpYWJsZVJlZmVyZW5j
ZSgpIGNvbnN0OworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgQ1NTQmFzaWNTaGFwZVJlY3Rhbmds
ZSgpIHsgfQogCkBAIC0xMDQsNiArMTE0LDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFR5cGUg
dHlwZSgpIGNvbnN0IHsgcmV0dXJuIENTU19CQVNJQ19TSEFQRV9DSVJDTEU7IH0KICAgICB2aXJ0
dWFsIFN0cmluZyBjc3NUZXh0KCkgY29uc3Q7CiAKKyNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykK
KyAgICB2aXJ0dWFsIFN0cmluZyBzZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXMoY29uc3QgSGFz
aE1hcDxBdG9taWNTdHJpbmcsIFN0cmluZz4mKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFz
VmFyaWFibGVSZWZlcmVuY2UoKSBjb25zdDsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIENTU0Jh
c2ljU2hhcGVDaXJjbGUoKSB7IH0KIApAQCAtMTI5LDYgKzE0NCwxMSBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBDU1NfQkFTSUNfU0hBUEVfRUxMSVBT
RTsgfQogICAgIHZpcnR1YWwgU3RyaW5nIGNzc1RleHQoKSBjb25zdDsKIAorI2lmIEVOQUJMRShD
U1NfVkFSSUFCTEVTKQorICAgIHZpcnR1YWwgU3RyaW5nIHNlcmlhbGl6ZVJlc29sdmluZ1Zhcmlh
Ymxlcyhjb25zdCBIYXNoTWFwPEF0b21pY1N0cmluZywgU3RyaW5nPiYpIGNvbnN0OworICAgIHZp
cnR1YWwgYm9vbCBoYXNWYXJpYWJsZVJlZmVyZW5jZSgpIGNvbnN0OworI2VuZGlmCisKIHByaXZh
dGU6CiAgICAgQ1NTQmFzaWNTaGFwZUVsbGlwc2UoKSB7IH0KIApAQCAtMTU4LDYgKzE3OCwxMSBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBDU1NfQkFT
SUNfU0hBUEVfUE9MWUdPTjsgfQogICAgIHZpcnR1YWwgU3RyaW5nIGNzc1RleHQoKSBjb25zdDsK
IAorI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQorICAgIHZpcnR1YWwgU3RyaW5nIHNlcmlhbGl6
ZVJlc29sdmluZ1ZhcmlhYmxlcyhjb25zdCBIYXNoTWFwPEF0b21pY1N0cmluZywgU3RyaW5nPiYp
IGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBoYXNWYXJpYWJsZVJlZmVyZW5jZSgpIGNvbnN0Owor
I2VuZGlmCisKIHByaXZhdGU6CiAgICAgQ1NTQmFzaWNTaGFwZVBvbHlnb24oKQogICAgICAgICA6
IG1fd2luZFJ1bGUoUlVMRV9OT05aRVJPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1ByaW1pdGl2ZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVW
YWx1ZS5jcHAKaW5kZXggOTIyYTBmNjhjNzM0MDZkOTBjOWQ0MjJjYmJhNjc3N2UwMWE3NTBlMy4u
NWNhN2NlYjkyMGUwOTkyOGIxMTkwYzUyM2ZjMjBiOGI3MGY2MTdhOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCkBAIC05ODgsMzEgKzk4OCwxMiBAQCBTdHJpbmcg
Q1NTUHJpbWl0aXZlVmFsdWU6OmN1c3RvbUNzc1RleHQoKSBjb25zdAogICAgICAgICAgICAgdGV4
dCA9IHJlc3VsdC50b1N0cmluZygpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAg
ICAgICAgY2FzZSBDU1NfUkVDVDogewotICAgICAgICAgICAgUmVjdCogcmVjdFZhbCA9IGdldFJl
Y3RWYWx1ZSgpOwotICAgICAgICAgICAgdGV4dCA9ICJyZWN0KCIgKyByZWN0VmFsLT50b3AoKS0+
Y3NzVGV4dCgpICsgJyAnICsgcmVjdFZhbC0+cmlnaHQoKS0+Y3NzVGV4dCgpICsgJyAnICsgcmVj
dFZhbC0+Ym90dG9tKCktPmNzc1RleHQoKSArICcgJyArIHJlY3RWYWwtPmxlZnQoKS0+Y3NzVGV4
dCgpICsgJyknOworICAgICAgICBjYXNlIENTU19SRUNUOgorICAgICAgICAgICAgdGV4dCA9IGdl
dFJlY3RWYWx1ZSgpLT5jc3NUZXh0KCk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQot
ICAgICAgICBjYXNlIENTU19RVUFEOiB7Ci0gICAgICAgICAgICBRdWFkKiBxdWFkVmFsID0gZ2V0
UXVhZFZhbHVlKCk7Ci0gICAgICAgICAgICBWZWN0b3I8VUNoYXI+IHJlc3VsdDsKLSAgICAgICAg
ICAgIHJlc3VsdC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KDMyKTsKLSAgICAgICAgICAgIGFwcGVu
ZChyZXN1bHQsIHF1YWRWYWwtPnRvcCgpLT5jc3NUZXh0KCkpOwotICAgICAgICAgICAgaWYgKHF1
YWRWYWwtPnJpZ2h0KCkgIT0gcXVhZFZhbC0+dG9wKCkgfHwgcXVhZFZhbC0+Ym90dG9tKCkgIT0g
cXVhZFZhbC0+dG9wKCkgfHwgcXVhZFZhbC0+bGVmdCgpICE9IHF1YWRWYWwtPnRvcCgpKSB7Ci0g
ICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICcpOwotICAgICAgICAgICAgICAgIGFwcGVu
ZChyZXN1bHQsIHF1YWRWYWwtPnJpZ2h0KCktPmNzc1RleHQoKSk7Ci0gICAgICAgICAgICAgICAg
aWYgKHF1YWRWYWwtPmJvdHRvbSgpICE9IHF1YWRWYWwtPnRvcCgpIHx8IHF1YWRWYWwtPnJpZ2h0
KCkgIT0gcXVhZFZhbC0+bGVmdCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBl
bmQoJyAnKTsKLSAgICAgICAgICAgICAgICAgICAgYXBwZW5kKHJlc3VsdCwgcXVhZFZhbC0+Ym90
dG9tKCktPmNzc1RleHQoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChxdWFkVmFsLT5sZWZ0
KCkgIT0gcXVhZFZhbC0+cmlnaHQoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZCgnICcpOwotICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kKHJlc3VsdCwgcXVh
ZFZhbC0+bGVmdCgpLT5jc3NUZXh0KCkpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgdGV4dCA9IFN0cmluZzo6YWRv
cHQocmVzdWx0KTsKKyAgICAgICAgY2FzZSBDU1NfUVVBRDoKKyAgICAgICAgICAgIHRleHQgPSBn
ZXRRdWFkVmFsdWUoKS0+Y3NzVGV4dCgpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0K
ICAgICAgICAgY2FzZSBDU1NfUkdCQ09MT1I6CiAgICAgICAgIGNhc2UgQ1NTX1BBUlNFUl9IRVhD
T0xPUjogewogICAgICAgICAgICAgUkdCQTMyIHJnYkNvbG9yID0gbV92YWx1ZS5yZ2Jjb2xvcjsK
QEAgLTEwNDcsMTYgKzEwMjgsOSBAQCBTdHJpbmcgQ1NTUHJpbWl0aXZlVmFsdWU6OmN1c3RvbUNz
c1RleHQoKSBjb25zdAogICAgICAgICAgICAgdGV4dCA9IFN0cmluZzo6YWRvcHQocmVzdWx0KTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgQ1NTX1BBSVI6IHsK
LSAgICAgICAgICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OwotICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZChtX3ZhbHVlLnBhaXItPmZpcnN0KCktPmNzc1RleHQoKSk7Ci0gICAgICAgICAgICBpZiAo
bV92YWx1ZS5wYWlyLT5zZWNvbmQoKSAhPSBtX3ZhbHVlLnBhaXItPmZpcnN0KCkpIHsKLSAgICAg
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgJyk7Ci0gICAgICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZChtX3ZhbHVlLnBhaXItPnNlY29uZCgpLT5jc3NUZXh0KCkpOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgdGV4dCA9IHJlc3VsdC50b1N0cmluZygpOworICAgICAgICBjYXNlIENTU19Q
QUlSOgorICAgICAgICAgICAgdGV4dCA9IGdldFBhaXJWYWx1ZSgpLT5jc3NUZXh0KCk7CiAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgfQogI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkg
fHwgRU5BQkxFKFdJREdFVF9SRUdJT04pCiAgICAgICAgIGNhc2UgQ1NTX0RBU0hCT0FSRF9SRUdJ
T046IHsKICAgICAgICAgICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OwpAQCAtMTE0MSwxMCArMTEx
NSwzMyBAQCBTdHJpbmcgQ1NTUHJpbWl0aXZlVmFsdWU6OmN1c3RvbVNlcmlhbGl6ZVJlc29sdmlu
Z1ZhcmlhYmxlcyhjb25zdCBIYXNoTWFwPEF0b21pYwogewogICAgIGlmIChpc1ZhcmlhYmxlTmFt
ZSgpICYmIHZhcmlhYmxlcy5jb250YWlucyhtX3ZhbHVlLnN0cmluZykpCiAgICAgICAgIHJldHVy
biB2YXJpYWJsZXMuZ2V0KG1fdmFsdWUuc3RyaW5nKTsKLSAgICBpZiAoaXNDYWxjdWxhdGVkKCkp
Ci0gICAgICAgIHJldHVybiBjc3NDYWxjVmFsdWUoKS0+Y3VzdG9tU2VyaWFsaXplUmVzb2x2aW5n
VmFyaWFibGVzKHZhcmlhYmxlcyk7CisgICAgaWYgKENTU0NhbGNWYWx1ZSogY2FsY1ZhbHVlID0g
Y3NzQ2FsY1ZhbHVlKCkpCisgICAgICAgIHJldHVybiBjYWxjVmFsdWUtPmN1c3RvbVNlcmlhbGl6
ZVJlc29sdmluZ1ZhcmlhYmxlcyh2YXJpYWJsZXMpOworICAgIGlmIChQYWlyKiBwYWlyVmFsdWUg
PSBnZXRQYWlyVmFsdWUoKSkKKyAgICAgICAgcmV0dXJuIHBhaXJWYWx1ZS0+c2VyaWFsaXplUmVz
b2x2aW5nVmFyaWFibGVzKHZhcmlhYmxlcyk7CisgICAgaWYgKFJlY3QqIHJlY3RWYWwgPSBnZXRS
ZWN0VmFsdWUoKSkKKyAgICAgICAgcmV0dXJuIHJlY3RWYWwtPnNlcmlhbGl6ZVJlc29sdmluZ1Zh
cmlhYmxlcyh2YXJpYWJsZXMpOworICAgIGlmIChRdWFkKiBxdWFkVmFsID0gZ2V0UXVhZFZhbHVl
KCkpCisgICAgICAgIHJldHVybiBxdWFkVmFsLT5zZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXMo
dmFyaWFibGVzKTsKKyAgICBpZiAoQ1NTQmFzaWNTaGFwZSogc2hhcGVWYWx1ZSA9IGdldFNoYXBl
VmFsdWUoKSkKKyAgICAgICAgcmV0dXJuIHNoYXBlVmFsdWUtPnNlcmlhbGl6ZVJlc29sdmluZ1Zh
cmlhYmxlcyh2YXJpYWJsZXMpOwogICAgIHJldHVybiBjdXN0b21Dc3NUZXh0KCk7CiB9CisKK2Jv
b2wgQ1NTUHJpbWl0aXZlVmFsdWU6Omhhc1ZhcmlhYmxlUmVmZXJlbmNlKCkgY29uc3QKK3sKKyAg
ICBpZiAoQ1NTQ2FsY1ZhbHVlKiBjYWxjVmFsdWUgPSBjc3NDYWxjVmFsdWUoKSkKKyAgICAgICAg
cmV0dXJuIGNhbGNWYWx1ZS0+aGFzVmFyaWFibGVSZWZlcmVuY2UoKTsKKyAgICBpZiAoUGFpciog
cGFpclZhbHVlID0gZ2V0UGFpclZhbHVlKCkpCisgICAgICAgIHJldHVybiBwYWlyVmFsdWUtPmhh
c1ZhcmlhYmxlUmVmZXJlbmNlKCk7CisgICAgaWYgKFF1YWQqIHF1YWRWYWx1ZSA9IGdldFF1YWRW
YWx1ZSgpKQorICAgICAgICByZXR1cm4gcXVhZFZhbHVlLT5oYXNWYXJpYWJsZVJlZmVyZW5jZSgp
OworICAgIGlmIChSZWN0KiByZWN0VmFsdWUgPSBnZXRSZWN0VmFsdWUoKSkKKyAgICAgICAgcmV0
dXJuIHJlY3RWYWx1ZS0+aGFzVmFyaWFibGVSZWZlcmVuY2UoKTsKKyAgICBpZiAoQ1NTQmFzaWNT
aGFwZSogc2hhcGVWYWx1ZSA9IGdldFNoYXBlVmFsdWUoKSkKKyAgICAgICAgcmV0dXJuIHNoYXBl
VmFsdWUtPmhhc1ZhcmlhYmxlUmVmZXJlbmNlKCk7CisgICAgcmV0dXJuIGlzVmFyaWFibGVOYW1l
KCk7Cit9CiAjZW5kaWYKIAogdm9pZCBDU1NQcmltaXRpdmVWYWx1ZTo6YWRkU3VicmVzb3VyY2VT
dHlsZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mIHVybHMsIGNvbnN0IFN0eWxlU2hlZXRDb250ZW50
cyogc3R5bGVTaGVldCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
cmltaXRpdmVWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgK
aW5kZXggMTAzZWE2YTgzZDJkNjYyYzQ1MzE0MjNmNzBiODMyOTQ5MjBmYWNiOS4uMGZiNjQ0NWIw
MmFjOTJhODM3YzBhZmRiMDVlOThiYzkxMmVlMmIxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1By
aW1pdGl2ZVZhbHVlLmgKQEAgLTI5OSw2ICsyOTksNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIGN1
c3RvbUNzc1RleHQoKSBjb25zdDsKICNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykKICAgICBTdHJp
bmcgY3VzdG9tU2VyaWFsaXplUmVzb2x2aW5nVmFyaWFibGVzKGNvbnN0IEhhc2hNYXA8QXRvbWlj
U3RyaW5nLCBTdHJpbmc+JikgY29uc3Q7CisgICAgYm9vbCBoYXNWYXJpYWJsZVJlZmVyZW5jZSgp
IGNvbnN0OwogI2VuZGlmCiAKICAgICBib29sIGlzUXVpcmtWYWx1ZSgpIHsgcmV0dXJuIG1faXNR
dWlya1ZhbHVlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUGFpci5oIGIvU291
cmNlL1dlYkNvcmUvY3NzL1BhaXIuaAppbmRleCBhOTUzNzBkYzMwMTUzZDY4ZGNiZGMzYjg4ZjNj
MDVhN2QxNTAwODkyLi4wNDFlZTIzN2ZlZjg1NmEyMTEzMTU4ZjgzZDQ0ZWIzZGNiNWEyM2UyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUGFpci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9QYWlyLmgKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgogI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQ
dHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApAQCAtNDksMTEgKzUwLDM0IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEZpcnN0
KFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGZpcnN0KSB7IG1fZmlyc3QgPSBmaXJzdDsg
fQogICAgIHZvaWQgc2V0U2Vjb25kKFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHNlY29u
ZCkgeyBtX3NlY29uZCA9IHNlY29uZDsgfQogCisgICAgU3RyaW5nIGNzc1RleHQoKSBjb25zdAor
ICAgIHsKKyAgICAKKyAgICAgICAgcmV0dXJuIGdlbmVyYXRlQ1NTU3RyaW5nKGZpcnN0KCktPmNz
c1RleHQoKSwgc2Vjb25kKCktPmNzc1RleHQoKSk7CisgICAgfQorCisjaWYgRU5BQkxFKENTU19W
QVJJQUJMRVMpCisgICAgU3RyaW5nIHNlcmlhbGl6ZVJlc29sdmluZ1ZhcmlhYmxlcyhjb25zdCBI
YXNoTWFwPEF0b21pY1N0cmluZywgU3RyaW5nPiYgdmFyaWFibGVzKSBjb25zdAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGdlbmVyYXRlQ1NTU3RyaW5nKGZpcnN0KCktPmN1c3RvbVNlcmlhbGl6ZVJl
c29sdmluZ1ZhcmlhYmxlcyh2YXJpYWJsZXMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2Vjb25kKCktPmN1c3RvbVNlcmlhbGl6ZVJlc29sdmluZ1ZhcmlhYmxlcyh2YXJpYWJs
ZXMpKTsKKyAgICB9CisgICAgCisgICAgYm9vbCBoYXNWYXJpYWJsZVJlZmVyZW5jZSgpIGNvbnN0
IHsgcmV0dXJuIGZpcnN0KCktPmhhc1ZhcmlhYmxlUmVmZXJlbmNlKCkgfHwgc2Vjb25kKCktPmhh
c1ZhcmlhYmxlUmVmZXJlbmNlKCk7IH0KKyNlbmRpZgorCiBwcml2YXRlOgogICAgIFBhaXIoKSA6
IG1fZmlyc3QoMCksIG1fc2Vjb25kKDApIHsgfQogICAgIFBhaXIoUGFzc1JlZlB0cjxDU1NQcmlt
aXRpdmVWYWx1ZT4gZmlyc3QsIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHNlY29uZCkK
ICAgICAgICAgOiBtX2ZpcnN0KGZpcnN0KSwgbV9zZWNvbmQoc2Vjb25kKSB7IH0KIAorICAgIHN0
YXRpYyBTdHJpbmcgZ2VuZXJhdGVDU1NTdHJpbmcoY29uc3QgU3RyaW5nJiBmaXJzdCwgY29uc3Qg
U3RyaW5nJiBzZWNvbmQpCisgICAgeworICAgICAgICBpZiAoZmlyc3QgPT0gc2Vjb25kKQorICAg
ICAgICAgICAgcmV0dXJuIGZpcnN0OworICAgICAgICByZXR1cm4gZmlyc3QgKyAnICcgKyBzZWNv
bmQ7CisgICAgfQorCiAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBtX2ZpcnN0OwogICAg
IFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gbV9zZWNvbmQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL1JlY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9SZWN0LmgKaW5kZXgg
MzU1ZDZmYjdiYmQ4Y2NkMzNlYmJiZGUwYTA4N2NkNThiODc3NjA1MS4uNzY2NmYxOTljNzYyODQ5
ZmU3MmNjNjk1ODM0Yzg4N2Q4YTMxMDljMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L1JlY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUmVjdC5oCkBAIC0yMyw2ICsyMyw3IEBA
CiAKICNpbmNsdWRlICJDU1NQcmltaXRpdmVWYWx1ZS5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApAQCAtMzgsNiArMzksMTYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Qm90dG9tKFBh
c3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGJvdHRvbSkgeyBtX2JvdHRvbSA9IGJvdHRvbTsg
fQogICAgIHZvaWQgc2V0TGVmdChQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBsZWZ0KSB7
IG1fbGVmdCA9IGxlZnQ7IH0KIAorI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQorICAgIGJvb2wg
aGFzVmFyaWFibGVSZWZlcmVuY2UoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fdG9w
LT5oYXNWYXJpYWJsZVJlZmVyZW5jZSgpCisgICAgICAgICAgICB8fCBtX3JpZ2h0LT5oYXNWYXJp
YWJsZVJlZmVyZW5jZSgpCisgICAgICAgICAgICB8fCBtX2JvdHRvbS0+aGFzVmFyaWFibGVSZWZl
cmVuY2UoKQorICAgICAgICAgICAgfHwgbV9sZWZ0LT5oYXNWYXJpYWJsZVJlZmVyZW5jZSgpOwor
ICAgIH0KKyNlbmRpZgorCiBwcm90ZWN0ZWQ6CiAgICAgUmVjdEJhc2UoKSB7IH0KICAgICBSZWN0
QmFzZShjb25zdCBSZWN0QmFzZSYgY2xvbmVGcm9tKQpAQCAtNjMsOSArNzQsMjggQEAgcHVibGlj
OgogICAgIAogICAgIFBhc3NSZWZQdHI8UmVjdD4gY2xvbmVGb3JDU1NPTSgpIGNvbnN0IHsgcmV0
dXJuIGFkb3B0UmVmKG5ldyBSZWN0KCp0aGlzKSk7IH0KIAorICAgIFN0cmluZyBjc3NUZXh0KCkg
Y29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBnZW5lcmF0ZUNTU1N0cmluZyh0b3AoKS0+Y3Nz
VGV4dCgpLCByaWdodCgpLT5jc3NUZXh0KCksIGJvdHRvbSgpLT5jc3NUZXh0KCksIGxlZnQoKS0+
Y3NzVGV4dCgpKTsKKyAgICB9CisKKyNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykKKyAgICBTdHJp
bmcgc2VyaWFsaXplUmVzb2x2aW5nVmFyaWFibGVzKGNvbnN0IEhhc2hNYXA8QXRvbWljU3RyaW5n
LCBTdHJpbmc+JiB2YXJpYWJsZXMpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gZ2VuZXJh
dGVDU1NTdHJpbmcodG9wKCktPmN1c3RvbVNlcmlhbGl6ZVJlc29sdmluZ1ZhcmlhYmxlcyh2YXJp
YWJsZXMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHQoKS0+Y3VzdG9t
U2VyaWFsaXplUmVzb2x2aW5nVmFyaWFibGVzKHZhcmlhYmxlcyksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBib3R0b20oKS0+Y3VzdG9tU2VyaWFsaXplUmVzb2x2aW5nVmFyaWFi
bGVzKHZhcmlhYmxlcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0KCkt
PmN1c3RvbVNlcmlhbGl6ZVJlc29sdmluZ1ZhcmlhYmxlcyh2YXJpYWJsZXMpKTsKKyAgICB9Cisj
ZW5kaWYKKwogcHJpdmF0ZToKICAgICBSZWN0KCkgeyB9CiAgICAgUmVjdChjb25zdCBSZWN0JiBj
bG9uZUZyb20pIDogUmVjdEJhc2UoY2xvbmVGcm9tKSwgUmVmQ291bnRlZDxSZWN0PigpIHsgfQor
ICAgIHN0YXRpYyBTdHJpbmcgZ2VuZXJhdGVDU1NTdHJpbmcoY29uc3QgU3RyaW5nJiB0b3AsIGNv
bnN0IFN0cmluZyYgcmlnaHQsIGNvbnN0IFN0cmluZyYgYm90dG9tLCBjb25zdCBTdHJpbmcmIGxl
ZnQpCisgICAgeworICAgICAgICByZXR1cm4gInJlY3QoIiArIHRvcCArICcgJyArIHJpZ2h0ICsg
JyAnICsgYm90dG9tICsgJyAnICsgbGVmdCArICcpJzsKKyAgICB9CiB9OwogCiBjbGFzcyBRdWFk
IDogcHVibGljIFJlY3RCYXNlLCBwdWJsaWMgUmVmQ291bnRlZDxRdWFkPiB7CkBAIC03NCw5ICsx
MDQsNDIgQEAgcHVibGljOgogICAgIAogICAgIFBhc3NSZWZQdHI8UXVhZD4gY2xvbmVGb3JDU1NP
TSgpIGNvbnN0IHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBRdWFkKCp0aGlzKSk7IH0KIAorICAgIFN0
cmluZyBjc3NUZXh0KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBnZW5lcmF0ZUNTU1N0
cmluZyh0b3AoKS0+Y3NzVGV4dCgpLCByaWdodCgpLT5jc3NUZXh0KCksIGJvdHRvbSgpLT5jc3NU
ZXh0KCksIGxlZnQoKS0+Y3NzVGV4dCgpKTsKKyAgICB9CisKKyNpZiBFTkFCTEUoQ1NTX1ZBUklB
QkxFUykKKyAgICBTdHJpbmcgc2VyaWFsaXplUmVzb2x2aW5nVmFyaWFibGVzKGNvbnN0IEhhc2hN
YXA8QXRvbWljU3RyaW5nLCBTdHJpbmc+JiB2YXJpYWJsZXMpIGNvbnN0CisgICAgeworICAgICAg
ICByZXR1cm4gZ2VuZXJhdGVDU1NTdHJpbmcodG9wKCktPmN1c3RvbVNlcmlhbGl6ZVJlc29sdmlu
Z1ZhcmlhYmxlcyh2YXJpYWJsZXMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmlnaHQoKS0+Y3VzdG9tU2VyaWFsaXplUmVzb2x2aW5nVmFyaWFibGVzKHZhcmlhYmxlcyksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3R0b20oKS0+Y3VzdG9tU2VyaWFsaXpl
UmVzb2x2aW5nVmFyaWFibGVzKHZhcmlhYmxlcyksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBsZWZ0KCktPmN1c3RvbVNlcmlhbGl6ZVJlc29sdmluZ1ZhcmlhYmxlcyh2YXJpYWJs
ZXMpKTsKKyAgICB9CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBRdWFkKCkgeyB9CiAgICAgUXVh
ZChjb25zdCBRdWFkJiBjbG9uZUZyb20pIDogUmVjdEJhc2UoY2xvbmVGcm9tKSwgUmVmQ291bnRl
ZDxRdWFkPigpIHsgfQorICAgIHN0YXRpYyBTdHJpbmcgZ2VuZXJhdGVDU1NTdHJpbmcoY29uc3Qg
U3RyaW5nJiB0b3AsIGNvbnN0IFN0cmluZyYgcmlnaHQsIGNvbnN0IFN0cmluZyYgYm90dG9tLCBj
b25zdCBTdHJpbmcmIGxlZnQpCisgICAgeworICAgICAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsK
KyAgICAgICAgcmVzdWx0LmFwcGVuZCh0b3ApOworICAgICAgICBpZiAocmlnaHQgIT0gdG9wIHx8
IGJvdHRvbSAhPSB0b3AgfHwgbGVmdCAhPSB0b3ApIHsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBl
bmQoJyAnKTsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQocmlnaHQpOworICAgICAgICAgICAg
aWYgKGJvdHRvbSAhPSB0b3AgfHwgcmlnaHQgIT0gbGVmdCkgeworICAgICAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmQoJyAnKTsKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGJvdHRvbSk7
CisgICAgICAgICAgICAgICAgaWYgKGxlZnQgIT0gcmlnaHQpIHsKKyAgICAgICAgICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgnICcpOworICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5k
KGxlZnQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CisgICAgfQogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IDExZTU0OWQ5
NzUxMTcxYWNmZWEwNWUxMThjYTY3YTI2YzQzMjIzNzQuLjZlYjBhODc5OWJlYjVjM2EyOGRjODQw
NTM0ZDUxNjRjYWFlZjM1ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJl
c29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAg
LTMzNTgsOSArMzM1OCw3IEBAIHN0YXRpYyBib29sIGhhc1ZhcmlhYmxlUmVmZXJlbmNlKENTU1Zh
bHVlKiB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgewogICAg
ICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKLSAgICAgICAgaWYgKENTU0NhbGNWYWx1ZSogY2FsY1Zh
bHVlID0gcHJpbWl0aXZlVmFsdWUtPmNzc0NhbGNWYWx1ZSgpKQotICAgICAgICAgICAgcmV0dXJu
IGNhbGNWYWx1ZS0+aGFzVmFyaWFibGVSZWZlcmVuY2UoKTsKLSAgICAgICAgcmV0dXJuIHByaW1p
dGl2ZVZhbHVlLT5pc1ZhcmlhYmxlTmFtZSgpOworICAgICAgICByZXR1cm4gcHJpbWl0aXZlVmFs
dWUtPmhhc1ZhcmlhYmxlUmVmZXJlbmNlKCk7CiAgICAgfQogCiAgICAgaWYgKHZhbHVlLT5pc0Nh
bGN1bGF0aW9uVmFsdWUoKSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAzMTE2MGU0ZWVkOTYxYzg2Mzk1NzI4M2ZjYTQ5MGVi
Zjk0ZjdiNDE0Li40Y2Y2NzIwNzFjZWEyMjJlZGZjZTJlNTc2NmUxMGViZDdkMjlmYjVlIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjEgQEAKKzIwMTItMDktMDUgIEx1a2UgTWFjcGhlcnNvbiAgIDxtYWNwaGVy
c29uQGNocm9taXVtLm9yZz4KKworICAgICAgICBFbnN1cmUgdmFyaWFibGVzIGFyZSByZXNvbHZl
ZCBmb3Igc3BlY2lhbGl6ZWQgQ1NTIHByaW1pdGl2ZSB2YWx1ZSB0eXBlcy4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1OTMwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRlc3RzIHRoYXQgdXNlIHNw
ZWNpYWxpemVkIENTUyB2YWx1ZXMgKGVnLiBwYWlycywgcXVhZHMsIHJlY3RhbmdsZSwgY2lyY2xl
LCBlbGxpcHNlIGV0Yy4pLgorCisgICAgICAgICogZmFzdC9jc3MvdmFyaWFibGVzL3Jvb3QtYmFj
a2dyb3VuZC1zaXplLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL3Zh
cmlhYmxlcy9yb290LWJhY2tncm91bmQtc2l6ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2Nzcy92YXJpYWJsZXMvdmFyLWluc2lkZS1wYWlyLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvY3NzL3ZhcmlhYmxlcy92YXItaW5zaWRlLXBhaXIuaHRtbDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9jc3MvdmFyaWFibGVzL3Zhci1pbnNpZGUtcXVhZC1leHBlY3RlZC5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy92YXJpYWJsZXMvdmFyLWluc2lkZS1xdWFkLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL3ZhcmlhYmxlcy92YXItaW5zaWRlLXNoYXBl
LWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL3ZhcmlhYmxlcy92YXIt
aW5zaWRlLXNoYXBlLmh0bWw6IEFkZGVkLgorCiAyMDEyLTA5LTI0ICBSb2dlciBGb25nICA8cm9n
ZXJfZm9uZ0BhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gTWFyayBodHRwL3Rlc3Rz
L3NlY3VyaXR5L2luYWN0aXZlLWRvY3VtZW50LXdpdGgtZW1wdHktc2VjdXJpdHktb3JpZ2luLmh0
bWwgd2hpbGUgR2VvZmYgR2FyZW4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL3Zh
cmlhYmxlcy9yb290LWJhY2tncm91bmQtc2l6ZS1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9jc3MvdmFyaWFibGVzL3Jvb3QtYmFja2dyb3VuZC1zaXplLWV4cGVjdGVkLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZTM1MzY3MjYwMzVjYTU5OGY5ZDIwOWY5YmE5YTViNTJmYmQxMTRiZgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3ZhcmlhYmxlcy9yb290LWJhY2tncm91
bmQtc2l6ZS1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsNCBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KK1RoaXMgdGVzdCBpcyBzdWNjZXNzZnVsIGlmIGl0IGRvZXMgbm90IGNyYXNoLgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvdmFyaWFibGVzL3Jvb3QtYmFj
a2dyb3VuZC1zaXplLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy92YXJpYWJsZXMvcm9vdC1i
YWNrZ3JvdW5kLXNpemUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NTg3M2M3YzE2MTMwMDVkNDYzYjE4OTQ5
NmY3MjA3NWZhMGM1NmVjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mv
dmFyaWFibGVzL3Jvb3QtYmFja2dyb3VuZC1zaXplLmh0bWwKQEAgLTAsMCArMSwxNCBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxzY3JpcHQ+CitpZiAod2luZG93LmludGVybmFscykKKyAg
ICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0Q1NTVmFyaWFibGVzRW5hYmxlZCh0cnVlKTsKKzwvc2Ny
aXB0PgorPHN0eWxlPgorOnJvb3QgeworICAtd2Via2l0LWJhY2tncm91bmQtc2l6ZTogLXdlYmtp
dC1jYWxjKC13ZWJraXQtdmFyKGEpKTsKK30KKzwvc3R5bGU+Cis8c3R5bGU+PC9zdHlsZT4KK1Ro
aXMgdGVzdCBpcyBzdWNjZXNzZnVsIGlmIGl0IGRvZXMgbm90IGNyYXNoLgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvdmFyaWFibGVzL3Zhci1pbnNpZGUtcGFpci1l
eHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvdmFyaWFibGVzL3Zhci1pbnNpZGUt
cGFpci1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFlMjI5YjcxM2QzYmU2ODQzYmQzNGRhN2Nl
ZGUyOTU0MjM5Mjg5YWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy92
YXJpYWJsZXMvdmFyLWluc2lkZS1wYWlyLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxMCBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxzdHlsZT4KK2JvZHkgeworICAgIGJvcmRlcjogMXB4
IHNvbGlkIGdyZWVuOworICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDNweCA2cHg7Cit9Cis8
L3N0eWxlPgorVGhpcyB0ZXh0IHNob3VsZCBiZSBzdXJyb3VuZGVkIGJ5IGEgZ3JlZW4gYm9yZGVy
IHdpdGggYSByb3VuZGVkIHRvcCBsZWZ0IGNvcm5lci4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvY3NzL3ZhcmlhYmxlcy92YXItaW5zaWRlLXBhaXIuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvY3NzL3ZhcmlhYmxlcy92YXItaW5zaWRlLXBhaXIuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42MTg1NGQxYWMzODk2ZjEwNDIxYTFiNzJjY2UwNGUzZDg4MTBkOTFiCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvdmFyaWFibGVzL3Zhci1pbnNpZGUtcGFpci5odG1s
CkBAIC0wLDAgKzEsMTYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8c2NyaXB0PgoraWYg
KHdpbmRvdy5pbnRlcm5hbHMpCisgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldENTU1ZhcmlhYmxl
c0VuYWJsZWQodHJ1ZSk7Cis8L3NjcmlwdD4KKzxzdHlsZT4KK2JvZHkgeworICAgIGJvcmRlcjog
MXB4IHNvbGlkIGdyZWVuOworICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IC13ZWJraXQtdmFy
KGEpIC13ZWJraXQtdmFyKGIpOworICAgIC13ZWJraXQtdmFyLWE6IDNweDsKKyAgICAtd2Via2l0
LXZhci1iOiA2cHg7Cit9Cis8L3N0eWxlPgorVGhpcyB0ZXh0IHNob3VsZCBiZSBzdXJyb3VuZGVk
IGJ5IGEgZ3JlZW4gYm9yZGVyIHdpdGggYSByb3VuZGVkIHRvcCBsZWZ0IGNvcm5lci4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL3ZhcmlhYmxlcy92YXItaW5zaWRl
LXF1YWQtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3ZhcmlhYmxlcy92YXIt
aW5zaWRlLXF1YWQtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MjdhZWQ3MTliMTQxYTQzMmE4
YTc2N2IzODJlMGQzNTNhYjQ1NWRlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9jc3MvdmFyaWFibGVzL3Zhci1pbnNpZGUtcXVhZC1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEs
MTEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8c3R5bGU+Citib2R5IHsKKyAgICBib3Jk
ZXItY29sb3I6IGdyZWVuOworICAgIGJvcmRlci13aWR0aDogMXB4IDJweCAzcHggNHB4OworICAg
IGJvcmRlci1zdHlsZTogc29saWQ7Cit9Cis8L3N0eWxlPgorVGhpcyB0ZXh0IHNob3VsZCBiZSBz
dXJyb3VuZGVkIGJ5IGEgZ3JlZW4gYm9yZGVyIHdpdGggMXB4IHRvcCwgMnB4IHJpZ2h0LCAzcHgg
Ym90dG9tLCA0cHggbGVmdC4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
Y3NzL3ZhcmlhYmxlcy92YXItaW5zaWRlLXF1YWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3Nz
L3ZhcmlhYmxlcy92YXItaW5zaWRlLXF1YWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNTllZjBlMmM5YTgx
MDE5MjI4NmYxZTJmYzE5YzYwYmZlNzdkNDAzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9jc3MvdmFyaWFibGVzL3Zhci1pbnNpZGUtcXVhZC5odG1sCkBAIC0wLDAgKzEsMTkg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5pbnRlcm5h
bHMpCisgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldENTU1ZhcmlhYmxlc0VuYWJsZWQodHJ1ZSk7
Cis8L3NjcmlwdD4KKzxzdHlsZT4KK2JvZHkgeworICAgIGJvcmRlci1jb2xvcjogZ3JlZW47Cisg
ICAgYm9yZGVyLXdpZHRoOiAtd2Via2l0LXZhcihhKSAtd2Via2l0LXZhcihiKSAtd2Via2l0LXZh
cihjKSAtd2Via2l0LXZhcihkKTsKKyAgICBib3JkZXItc3R5bGU6IHNvbGlkOworICAgIC13ZWJr
aXQtdmFyLWE6IDFweDsKKyAgICAtd2Via2l0LXZhci1iOiAycHg7CisgICAgLXdlYmtpdC12YXIt
YzogM3B4OworICAgIC13ZWJraXQtdmFyLWQ6IDRweDsKK30KKzwvc3R5bGU+CitUaGlzIHRleHQg
c2hvdWxkIGJlIHN1cnJvdW5kZWQgYnkgYSBncmVlbiBib3JkZXIgd2l0aCAxcHggdG9wLCAycHgg
cmlnaHQsIDNweCBib3R0b20sIDRweCBsZWZ0LgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9jc3MvdmFyaWFibGVzL3Zhci1pbnNpZGUtc2hhcGUtZXhwZWN0ZWQuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvY3NzL3ZhcmlhYmxlcy92YXItaW5zaWRlLXNoYXBlLWV4cGVjdGVk
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNjM2Yzg4MDdkYTdlMWE3ZGYzODliY2JhMjM0NTljMmQ4NTJkZWQ4
ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3ZhcmlhYmxlcy92YXIt
aW5zaWRlLXNoYXBlLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwyOSBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxzdHlsZT4KKy5hIHsKKyAgICAtd2Via2l0LXNoYXBlLWluc2lkZTogZWxs
aXBzZSgxMDBweCwgMTAwcHgsIDEwMHB4LCAxMDBweCk7Cit9CisuYiB7CisgICAgLXdlYmtpdC1z
aGFwZS1pbnNpZGU6IGNpcmNsZSgxMDBweCwgMTAwcHgsIDEwMHB4KTsKK30KKy5jIHsKKyAgICAt
d2Via2l0LXNoYXBlLWluc2lkZTogcmVjdGFuZ2UoMTAwcHgpOworfQorLmQgeworICAgIC13ZWJr
aXQtc2hhcGUtaW5zaWRlOiBwb2x5Z29uKDEwMHB4LCAxMDBweCwgMTAwcHgsIDEwMHB4LCAxMDBw
eCk7Cit9Cis8L3N0eWxlPgorPGRpdiBjbGFzcz0iYSI+CitTb21lIHRleHQuCis8L2Rpdj4KKzxk
aXYgY2xhc3M9ImIiPgorU29tZSB0ZXh0LgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJjIj4KK1NvbWUg
dGV4dC4KKzwvZGl2PgorPGRpdiBjbGFzcz0iZCI+CitTb21lIHRleHQuCis8L2Rpdj4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL3ZhcmlhYmxlcy92YXItaW5zaWRl
LXNoYXBlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy92YXJpYWJsZXMvdmFyLWluc2lkZS1z
aGFwZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc2NzAxYTMyMDMyMmNkNzY0NmEyYjE0YjI5ZWIwZTk2YThk
ZWIwMzkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy92YXJpYWJsZXMv
dmFyLWluc2lkZS1zaGFwZS5odG1sCkBAIC0wLDAgKzEsMzYgQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgaW50ZXJuYWxzLnNl
dHRpbmdzLnNldENTU1ZhcmlhYmxlc0VuYWJsZWQodHJ1ZSk7Cis8L3NjcmlwdD4KKzxzdHlsZT4K
Kzpyb290IHsKKyAgICAtd2Via2l0LXZhci1hOiAxMDBweDsKK30KKy5hIHsKKyAgICAtd2Via2l0
LXNoYXBlLWluc2lkZTogZWxsaXBzZSgtd2Via2l0LXZhcihhKSwgLXdlYmtpdC12YXIoYSksIC13
ZWJraXQtdmFyKGEpLCAtd2Via2l0LXZhcihhKSk7Cit9CisuYiB7CisgICAgLXdlYmtpdC1zaGFw
ZS1pbnNpZGU6IGNpcmNsZSgtd2Via2l0LXZhcihhKSwgLXdlYmtpdC12YXIoYSksIC13ZWJraXQt
dmFyKGEpKSk7Cit9CisuYyB7CisgICAgLXdlYmtpdC1zaGFwZS1pbnNpZGU6IHJlY3RhbmdlKC13
ZWJraXQtdmFyKGEpKTsKK30KKy5kIHsKKyAgICAtd2Via2l0LXNoYXBlLWluc2lkZTogcG9seWdv
bigtd2Via2l0LXZhcihhKSwgLXdlYmtpdC12YXIoYSksIC13ZWJraXQtdmFyKGEpLCAtd2Via2l0
LXZhcihhKSk7Cit9Cis8L3N0eWxlPgorPGRpdiBjbGFzcz0iYSI+CitTb21lIHRleHQuCis8L2Rp
dj4KKzxkaXYgY2xhc3M9ImIiPgorU29tZSB0ZXh0LgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJjIj4K
K1NvbWUgdGV4dC4KKzwvZGl2PgorPGRpdiBjbGFzcz0iZCI+CitTb21lIHRleHQuCis8L2Rpdj4K
KzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165730</attachid>
            <date>2012-09-25 22:40:42 -0700</date>
            <delta_ts>2012-09-26 18:02:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95930-20120926154000.patch</filename>
            <type>text/plain</type>
            <size>30995</size>
            <attacher name="Luke Macpherson">macpherson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5NTc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzQ3ZDJiYWQ4MDkwZTYz
ZmNiNGIwYzMzMmQ1MDc2ZTI0Y2RhZGRjYi4uODVjYTY0NGEzY2VlMDAwMDFkYmI1NzcwM2I4OWRk
ZThkM2JlZDg5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDEyLTA5LTA1ICBMdWtl
IE1hY3BoZXJzb24gICA8bWFjcGhlcnNvbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgRW5zdXJl
IHZhcmlhYmxlcyBhcmUgcmVzb2x2ZWQgZm9yIHNwZWNpYWxpemVkIENTUyBwcmltaXRpdmUgdmFs
dWUgdHlwZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05NTkzMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFNvbWV0aW1lcyBDU1NQcmltaXRpdmVWYWx1ZSBjb250YWlucyBhIGNvbGxlY3Rpb24gb2Ygb3Ro
ZXIgQ1NTUHJpbWl0aXZlVmFsdWVzIChlZy4gMiwgNCBvciBuKS4KKyAgICAgICAgVGhpcyBwYXRj
aCBtYWtlcyBzdXJlIGFueSB2YXJpYWJsZXMgY29udGFpbmVkIGluc2lkZSB0aG9zZSBjaGlsZCB2
YWx1ZXMgYXJlIHJlc29sdmVkLgorCisgICAgICAgIFRlc3RzOiBmYXN0L2Nzcy92YXJpYWJsZXMv
cm9vdC1iYWNrZ3JvdW5kLXNpemUuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9jc3MvdmFyaWFi
bGVzL3Zhci1pbnNpZGUtcGFpci5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Nzcy92YXJpYWJs
ZXMvdmFyLWluc2lkZS1xdWFkLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvY3NzL3ZhcmlhYmxl
cy92YXItaW5zaWRlLXNoYXBlLmh0bWwKKworICAgICAgICAqIGNzcy9DU1NCYXNpY1NoYXBlcy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpidWlsZFJlY3RhbmdsZVN0cmluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NCYXNpY1NoYXBlUmVjdGFuZ2xlOjpjc3NUZXh0KToKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQmFzaWNTaGFwZVJlY3RhbmdsZTo6c2VyaWFsaXpl
UmVzb2x2aW5nVmFyaWFibGVzKToKKyAgICAgICAgR2VuZXJhdGVzIGEgc3RyaW5nIHJlcHJlc2Vu
dGF0aW9uIG9mIHRoaXMgdmFsdWUgd2l0aCB2YXJpYWJsZXMgcmVzb2x2ZWQgZnJvbSB0aGUgcHJv
dmlkZWQgSGFzaE1hcCBvZiB2YXJpYWJsZXMuCisgICAgICAgIChXZWJDb3JlOjpDU1NCYXNpY1No
YXBlUmVjdGFuZ2xlOjpoYXNWYXJpYWJsZVJlZmVyZW5jZSk6CisgICAgICAgIFJldHVybnMgdHJ1
ZSBpZiBhbnkgb2YgdGhlIHZhbHVlcyB1c2VkIHRvIGRlc2NyaWJlIHRoZSByZWN0YW5nZSBkZXBl
bmQgb24gdGhlIHZhbHVlIG9mIGEgdmFyaWFibGUuCisgICAgICAgIChXZWJDb3JlOjpidWlsZENp
cmNsZVN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NCYXNpY1NoYXBlQ2lyY2xlOjpjc3NU
ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Jhc2ljU2hhcGVDaXJjbGU6OnNlcmlhbGl6ZVJl
c29sdmluZ1ZhcmlhYmxlcyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NCYXNpY1NoYXBlQ2lyY2xl
OjpoYXNWYXJpYWJsZVJlZmVyZW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpidWlsZEVsbGlwc2VT
dHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQmFzaWNTaGFwZUVsbGlwc2U6OmNzc1RleHQp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTQmFzaWNTaGFwZUVsbGlwc2U6OnNlcmlhbGl6ZVJlc29s
dmluZ1ZhcmlhYmxlcyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NCYXNpY1NoYXBlRWxsaXBzZTo6
aGFzVmFyaWFibGVSZWZlcmVuY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQmFzaWNTaGFwZVBv
bHlnb246OnNlcmlhbGl6ZVJlc29sdmluZ1ZhcmlhYmxlcyk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NCYXNpY1NoYXBlUG9seWdvbjo6aGFzVmFyaWFibGVSZWZlcmVuY2UpOgorICAgICAgICAqIGNz
cy9DU1NCYXNpY1NoYXBlcy5oOgorICAgICAgICAoQ1NTQmFzaWNTaGFwZVJlY3RhbmdsZSk6Cisg
ICAgICAgIChDU1NCYXNpY1NoYXBlQ2lyY2xlKToKKyAgICAgICAgKENTU0Jhc2ljU2hhcGVFbGxp
cHNlKToKKyAgICAgICAgKENTU0Jhc2ljU2hhcGVQb2x5Z29uKToKKyAgICAgICAgKiBjc3MvQ1NT
UHJpbWl0aXZlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6
OmN1c3RvbUNzc1RleHQpOgorICAgICAgICBNb3ZlIHRoZSBsb2dpYyBmb3IgZ2VuZXJhdGluZyB0
aGUgc3RyaW5ncyBmb3IgUmVjdHMsIFF1YWRzLCBQYWlycyBhbmQgU2hhcGVzIGludG8gdGhlaXIg
cmVzcGVjdGl2ZSBjbGFzc2VzLgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6
OmN1c3RvbVNlcmlhbGl6ZVJlc29sdmluZ1ZhcmlhYmxlcyk6CisgICAgICAgIEhhbmRsZSBSZWN0
cywgUXVhZHMsIFBhaXJzIGFuZCBTaGFwZXMgd2hlbiB0aGV5IGNvbnRhaW4gdmFyaWFibGVzLCBi
eSBjYWxsaW5nIHRoZWlyIHNlcmlhbGl6ZVJlc29sdmluZ1ZhcmlhYmxlcyBtZXRob2QuCisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpoYXNW
YXJpYWJsZVJlZmVyZW5jZSk6CisgICAgICAgIEhhbmRsZSBSZWN0cywgUXVhZHMsIFBhaXJzIGFu
ZCBTaGFwZXMgYnkgY2FsbGluZyB0aGVpciByZXNwZWN0aXZlIGhhc1ZhcmlhYmxlUmVmZXJlbmNl
IG1ldGhvZHMuCisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmg6CisgICAgICAgIChD
U1NQcmltaXRpdmVWYWx1ZSk6CisgICAgICAgICogY3NzL1BhaXIuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlBhaXI6OnBhaXJTdHJpbmcpOgorICAgICAgICAoUGFpcik6CisgICAgICAgIChXZWJDb3Jl
OjpQYWlyOjpjc3NUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhaXI6OnNlcmlhbGl6ZVJlc29s
dmluZ1ZhcmlhYmxlcyk6CisgICAgICAgIChXZWJDb3JlOjpQYWlyOjpoYXNWYXJpYWJsZVJlZmVy
ZW5jZSk6CisgICAgICAgICogY3NzL1JlY3QuaDoKKyAgICAgICAgKFJlY3RCYXNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlY3RCYXNlOjpoYXNWYXJpYWJsZVJlZmVyZW5jZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZWN0OjpyZWN0U3RyaW5nKToKKyAgICAgICAgKFJlY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVjdDo6Y3NzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpSZWN0OjpzZXJpYWxpemVS
ZXNvbHZpbmdWYXJpYWJsZXMpOgorICAgICAgICAoV2ViQ29yZTo6UXVhZDo6cXVhZFN0cmluZyk6
CisgICAgICAgIChRdWFkKToKKyAgICAgICAgKFdlYkNvcmU6OlF1YWQ6OmNzc1RleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6UXVhZDo6c2VyaWFsaXplUmVzb2x2aW5nVmFyaWFibGVzKToKKyAgICAg
ICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29s
dmVyOjpjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QpOgorCiAyMDEyLTA5LTI1ICBGaWxpcCBQ
aXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgSlNDIGJpbmRpbmdzIGFwcGVhciB0
byBzb21ldGltZXMgaWdub3JlIHRoZSBwb3NzaWJpbGl0eSBvZiBhcnJheXMgYmVpbmcgaW4gc3Bh
cnNlIG1vZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQmFzaWNTaGFwZXMuY3BwCmluZGV4IGMwN2Q2NjNj
NjM4MTcyMDg0ODY2N2I5NTE3MGY2YTgxYTM3NWZhYzkuLjAwNzEwZDFiNGVhMTZkNjBhYTNkNzE4
YjNlODEyNzc5ZmI4MmQzYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCYXNp
Y1NoYXBlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Jhc2ljU2hhcGVzLmNwcApA
QCAtMzcsOTcgKzM3LDEzOSBAQCB1c2luZyBuYW1lc3BhY2UgV1RGOwogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLVN0cmluZyBDU1NCYXNpY1NoYXBlUmVjdGFuZ2xlOjpjc3NUZXh0KCkgY29uc3QK
K3N0YXRpYyBTdHJpbmcgYnVpbGRSZWN0YW5nbGVTdHJpbmcoY29uc3QgU3RyaW5nJiB4LCBjb25z
dCBTdHJpbmcmIHksIGNvbnN0IFN0cmluZyYgd2lkdGgsIGNvbnN0IFN0cmluZyYgaGVpZ2h0LCBj
b25zdCBTdHJpbmcmIHJhZGl1c1gsIGNvbnN0IFN0cmluZyYgcmFkaXVzWSkKIHsKICAgICBTdHJp
bmdCdWlsZGVyIHJlc3VsdDsKLSAgICByZXN1bHQucmVzZXJ2ZUNhcGFjaXR5KDMyKTsKKyAgICBy
ZXN1bHQucmVzZXJ2ZUNhcGFjaXR5KDIyICsgeC5sZW5ndGgoKSArIHkubGVuZ3RoKCkgKyB3aWR0
aC5sZW5ndGgoKSArIGhlaWdodC5sZW5ndGgoKSArIHJhZGl1c1gubGVuZ3RoKCkgKyByYWRpdXNZ
Lmxlbmd0aCgpKTsKIAogICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCJyZWN0YW5nbGUoIik7Ci0K
LSAgICByZXN1bHQuYXBwZW5kKG1feC0+Y3NzVGV4dCgpKTsKKyAgICByZXN1bHQuYXBwZW5kKHgp
OwogICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCIsICIpOwotCi0gICAgcmVzdWx0LmFwcGVuZCht
X3ktPmNzc1RleHQoKSk7CisgICAgcmVzdWx0LmFwcGVuZCh5KTsKICAgICByZXN1bHQuYXBwZW5k
TGl0ZXJhbCgiLCAiKTsKLQotICAgIHJlc3VsdC5hcHBlbmQobV93aWR0aC0+Y3NzVGV4dCgpKTsK
KyAgICByZXN1bHQuYXBwZW5kKHdpZHRoKTsKICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiLCAi
KTsKLQotICAgIHJlc3VsdC5hcHBlbmQobV9oZWlnaHQtPmNzc1RleHQoKSk7Ci0KLSAgICBpZiAo
bV9yYWRpdXNYLmdldCgpKSB7CisgICAgcmVzdWx0LmFwcGVuZChoZWlnaHQpOworICAgIGlmICgh
cmFkaXVzWC5pc051bGwoKSkgewogICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiLCAiKTsK
LSAgICAgICAgcmVzdWx0LmFwcGVuZChtX3JhZGl1c1gtPmNzc1RleHQoKSk7Ci0KLSAgICAgICAg
aWYgKG1fcmFkaXVzWS5nZXQoKSkgeworICAgICAgICByZXN1bHQuYXBwZW5kKHJhZGl1c1gpOwor
ICAgICAgICBpZiAoIXJhZGl1c1kuaXNOdWxsKCkpIHsKICAgICAgICAgICAgIHJlc3VsdC5hcHBl
bmRMaXRlcmFsKCIsICIpOwotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChtX3JhZGl1c1ktPmNz
c1RleHQoKSk7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHJhZGl1c1kpOwogICAgICAgICB9
CiAgICAgfQotCiAgICAgcmVzdWx0LmFwcGVuZCgnKScpOwogCiAgICAgcmV0dXJuIHJlc3VsdC50
b1N0cmluZygpOwogfQogCi1TdHJpbmcgQ1NTQmFzaWNTaGFwZUNpcmNsZTo6Y3NzVGV4dCgpIGNv
bnN0CitTdHJpbmcgQ1NTQmFzaWNTaGFwZVJlY3RhbmdsZTo6Y3NzVGV4dCgpIGNvbnN0CiB7Ci0g
ICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7Ci0gICAgcmVzdWx0LnJlc2VydmVDYXBhY2l0eSgzMik7
Ci0KLSAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiY2lyY2xlKCIpOworICAgIHJldHVybiBidWls
ZFJlY3RhbmdsZVN0cmluZyhtX3gtPmNzc1RleHQoKSwKKyAgICAgICAgbV95LT5jc3NUZXh0KCks
CisgICAgICAgIG1fd2lkdGgtPmNzc1RleHQoKSwKKyAgICAgICAgbV9oZWlnaHQtPmNzc1RleHQo
KSwKKyAgICAgICAgbV9yYWRpdXNYLmdldCgpID8gbV9yYWRpdXNYLT5jc3NUZXh0KCkgOiBTdHJp
bmcoKSwKKyAgICAgICAgbV9yYWRpdXNZLmdldCgpID8gbV9yYWRpdXNZLT5jc3NUZXh0KCkgOiBT
dHJpbmcoKSk7Cit9CiAKLSAgICByZXN1bHQuYXBwZW5kKG1fY2VudGVyWC0+Y3NzVGV4dCgpKTsK
LSAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKKyNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxF
UykKK1N0cmluZyBDU1NCYXNpY1NoYXBlUmVjdGFuZ2xlOjpzZXJpYWxpemVSZXNvbHZpbmdWYXJp
YWJsZXMoY29uc3QgSGFzaE1hcDxBdG9taWNTdHJpbmcsIFN0cmluZz4mIHZhcmlhYmxlcykgY29u
c3QKK3sKKyAgICByZXR1cm4gYnVpbGRSZWN0YW5nbGVTdHJpbmcobV94LT5zZXJpYWxpemVSZXNv
bHZpbmdWYXJpYWJsZXModmFyaWFibGVzKSwKKyAgICAgICAgbV95LT5zZXJpYWxpemVSZXNvbHZp
bmdWYXJpYWJsZXModmFyaWFibGVzKSwKKyAgICAgICAgbV93aWR0aC0+c2VyaWFsaXplUmVzb2x2
aW5nVmFyaWFibGVzKHZhcmlhYmxlcyksCisgICAgICAgIG1faGVpZ2h0LT5zZXJpYWxpemVSZXNv
bHZpbmdWYXJpYWJsZXModmFyaWFibGVzKSwKKyAgICAgICAgbV9yYWRpdXNYLmdldCgpID8gbV9y
YWRpdXNYLT5zZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXModmFyaWFibGVzKSA6IFN0cmluZygp
LAorICAgICAgICBtX3JhZGl1c1kuZ2V0KCkgPyBtX3JhZGl1c1ktPnNlcmlhbGl6ZVJlc29sdmlu
Z1ZhcmlhYmxlcyh2YXJpYWJsZXMpIDogU3RyaW5nKCkpOworfQogCi0gICAgcmVzdWx0LmFwcGVu
ZChtX2NlbnRlclktPmNzc1RleHQoKSk7Ci0gICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiwgIik7
Citib29sIENTU0Jhc2ljU2hhcGVSZWN0YW5nbGU6Omhhc1ZhcmlhYmxlUmVmZXJlbmNlKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV94LT5oYXNWYXJpYWJsZVJlZmVyZW5jZSgpCisgICAgICAgIHx8
IG1feS0+aGFzVmFyaWFibGVSZWZlcmVuY2UoKQorICAgICAgICB8fCBtX3dpZHRoLT5oYXNWYXJp
YWJsZVJlZmVyZW5jZSgpCisgICAgICAgIHx8IG1faGVpZ2h0LT5oYXNWYXJpYWJsZVJlZmVyZW5j
ZSgpCisgICAgICAgIHx8IChtX3JhZGl1c1guZ2V0KCkgJiYgbV9yYWRpdXNYLT5oYXNWYXJpYWJs
ZVJlZmVyZW5jZSgpKQorICAgICAgICB8fCAobV9yYWRpdXNZLmdldCgpICYmIG1fcmFkaXVzWS0+
aGFzVmFyaWFibGVSZWZlcmVuY2UoKSk7Cit9CisjZW5kaWYKIAotICAgIHJlc3VsdC5hcHBlbmQo
bV9yYWRpdXMtPmNzc1RleHQoKSk7Ci0gICAgcmVzdWx0LmFwcGVuZCgnKScpOworc3RhdGljIFN0
cmluZyBidWlsZENpcmNsZVN0cmluZyhjb25zdCBTdHJpbmcmIHgsIGNvbnN0IFN0cmluZyYgeSwg
Y29uc3QgU3RyaW5nJiByYWRpdXMpCit7CisgICAgcmV0dXJuICJjaXJjbGUoIiArIHggKyAiLCAi
ICsgeSArICIsICIgKyByYWRpdXMgKyAnKSc7Cit9CiAKLSAgICByZXR1cm4gcmVzdWx0LnRvU3Ry
aW5nKCk7CitTdHJpbmcgQ1NTQmFzaWNTaGFwZUNpcmNsZTo6Y3NzVGV4dCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIGJ1aWxkQ2lyY2xlU3RyaW5nKG1fY2VudGVyWC0+Y3NzVGV4dCgpLCBtX2NlbnRl
clktPmNzc1RleHQoKSwgbV9yYWRpdXMtPmNzc1RleHQoKSk7CiB9CiAKLVN0cmluZyBDU1NCYXNp
Y1NoYXBlRWxsaXBzZTo6Y3NzVGV4dCgpIGNvbnN0CisjaWYgRU5BQkxFKENTU19WQVJJQUJMRVMp
CitTdHJpbmcgQ1NTQmFzaWNTaGFwZUNpcmNsZTo6c2VyaWFsaXplUmVzb2x2aW5nVmFyaWFibGVz
KGNvbnN0IEhhc2hNYXA8QXRvbWljU3RyaW5nLCBTdHJpbmc+JiB2YXJpYWJsZXMpIGNvbnN0CiB7
Ci0gICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7Ci0gICAgcmVzdWx0LnJlc2VydmVDYXBhY2l0eSgz
Mik7Ci0gICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoImVsbGlwc2UoIik7CisgICAgcmV0dXJuIGJ1
aWxkQ2lyY2xlU3RyaW5nKG1fY2VudGVyWC0+c2VyaWFsaXplUmVzb2x2aW5nVmFyaWFibGVzKHZh
cmlhYmxlcyksCisgICAgICAgIG1fY2VudGVyWS0+c2VyaWFsaXplUmVzb2x2aW5nVmFyaWFibGVz
KHZhcmlhYmxlcyksCisgICAgICAgIG1fcmFkaXVzLT5zZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJs
ZXModmFyaWFibGVzKSk7Cit9CiAKLSAgICByZXN1bHQuYXBwZW5kKG1fY2VudGVyWC0+Y3NzVGV4
dCgpKTsKLSAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKK2Jvb2wgQ1NTQmFzaWNTaGFw
ZUNpcmNsZTo6aGFzVmFyaWFibGVSZWZlcmVuY2UoKSBjb25zdAoreworICAgIHJldHVybiBtX2Nl
bnRlclgtPmhhc1ZhcmlhYmxlUmVmZXJlbmNlKCkKKyAgICAgICAgfHwgbV9jZW50ZXJZLT5oYXNW
YXJpYWJsZVJlZmVyZW5jZSgpCisgICAgICAgIHx8IG1fcmFkaXVzLT5oYXNWYXJpYWJsZVJlZmVy
ZW5jZSgpOworfQorI2VuZGlmCiAKLSAgICByZXN1bHQuYXBwZW5kKG1fY2VudGVyWS0+Y3NzVGV4
dCgpKTsKLSAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKK3N0YXRpYyBTdHJpbmcgYnVp
bGRFbGxpcHNlU3RyaW5nKGNvbnN0IFN0cmluZyYgeCwgY29uc3QgU3RyaW5nJiB5LCBjb25zdCBT
dHJpbmcmIHJhZGl1c1gsIGNvbnN0IFN0cmluZyYgcmFkaXVzWSkKK3sKKyAgICByZXR1cm4gImVs
bGlwc2UoIiArIHggKyAiLCAiICsgeSArICIsICIgKyByYWRpdXNYICsgIiwgIiArIHJhZGl1c1kg
KyAnKSc7Cit9CiAKLSAgICByZXN1bHQuYXBwZW5kKG1fcmFkaXVzWC0+Y3NzVGV4dCgpKTsKLSAg
ICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKK1N0cmluZyBDU1NCYXNpY1NoYXBlRWxsaXBz
ZTo6Y3NzVGV4dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGJ1aWxkRWxsaXBzZVN0cmluZyhtX2Nl
bnRlclgtPmNzc1RleHQoKSwgbV9jZW50ZXJZLT5jc3NUZXh0KCksIG1fcmFkaXVzWC0+Y3NzVGV4
dCgpLCBtX3JhZGl1c1ktPmNzc1RleHQoKSk7Cit9CiAKLSAgICByZXN1bHQuYXBwZW5kKG1fcmFk
aXVzWS0+Y3NzVGV4dCgpKTsKLSAgICByZXN1bHQuYXBwZW5kKCcpJyk7CisjaWYgRU5BQkxFKENT
U19WQVJJQUJMRVMpCitTdHJpbmcgQ1NTQmFzaWNTaGFwZUVsbGlwc2U6OnNlcmlhbGl6ZVJlc29s
dmluZ1ZhcmlhYmxlcyhjb25zdCBIYXNoTWFwPEF0b21pY1N0cmluZywgU3RyaW5nPiYgdmFyaWFi
bGVzKSBjb25zdAoreworICAgIHJldHVybiBidWlsZEVsbGlwc2VTdHJpbmcobV9jZW50ZXJYLT5z
ZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXModmFyaWFibGVzKSwKKyAgICAgICAgbV9jZW50ZXJZ
LT5zZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXModmFyaWFibGVzKSwKKyAgICAgICAgbV9yYWRp
dXNYLT5zZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXModmFyaWFibGVzKSwKKyAgICAgICAgbV9y
YWRpdXNZLT5zZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXModmFyaWFibGVzKSk7Cit9CiAKLSAg
ICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7Citib29sIENTU0Jhc2ljU2hhcGVFbGxpcHNlOjpo
YXNWYXJpYWJsZVJlZmVyZW5jZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY2VudGVyWC0+aGFz
VmFyaWFibGVSZWZlcmVuY2UoKQorICAgICAgICB8fCBtX2NlbnRlclktPmhhc1ZhcmlhYmxlUmVm
ZXJlbmNlKCkKKyAgICAgICAgfHwgbV9yYWRpdXNYLT5oYXNWYXJpYWJsZVJlZmVyZW5jZSgpCisg
ICAgICAgIHx8IG1fcmFkaXVzWS0+aGFzVmFyaWFibGVSZWZlcmVuY2UoKTsKIH0KKyNlbmRpZgog
Ci1TdHJpbmcgQ1NTQmFzaWNTaGFwZVBvbHlnb246OmNzc1RleHQoKSBjb25zdAorc3RhdGljIFN0
cmluZyBidWlsZFBvbHlnb25TdHJpbmcoY29uc3QgV2luZFJ1bGUmIHdpbmRSdWxlLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgcG9pbnRzKQogewogICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OwotICAg
IHJlc3VsdC5yZXNlcnZlQ2FwYWNpdHkoMzIpOworICAgIHNpemVfdCBsZW5ndGggPSAxOSArICgz
ICogKHBvaW50cy5zaXplKCkgLyAyKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwb2lu
dHMuc2l6ZSgpOyArK2kpCisgICAgICAgIGxlbmd0aCArPSBwb2ludHNbaV0ubGVuZ3RoKCk7Cisg
ICAgcmVzdWx0LnJlc2VydmVDYXBhY2l0eShsZW5ndGgpOwogCi0gICAgaWYgKG1fd2luZFJ1bGUg
PT0gUlVMRV9FVkVOT0REKQorICAgIGlmICh3aW5kUnVsZSA9PSBSVUxFX0VWRU5PREQpCiAgICAg
ICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCJwb2x5Z29uKGV2ZW5vZGQsICIpOwogICAgIGVsc2UK
ICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoInBvbHlnb24obm9uemVybywgIik7CiAKLSAg
ICBBU1NFUlQoIShtX3ZhbHVlcy5zaXplKCkgJSAyKSk7CisgICAgQVNTRVJUKCEocG9pbnRzLnNp
emUoKSAlIDIpKTsKIAotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3ZhbHVlcy5zaXpl
KCk7IGkgKz0gMikgeworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcG9pbnRzLnNpemUoKTsg
aSArPSAyKSB7CiAgICAgICAgIGlmIChpKQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVy
YWwoIiwgIik7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQobV92YWx1ZXMuYXQoaSktPmNzc1RleHQo
KSk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQocG9pbnRzW2ldKTsKICAgICAgICAgcmVzdWx0LmFw
cGVuZCgnICcpOwotICAgICAgICByZXN1bHQuYXBwZW5kKG1fdmFsdWVzLmF0KGkgKyAxKS0+Y3Nz
VGV4dCgpKTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChwb2ludHNbaSArIDFdKTsKICAgICB9CiAK
ICAgICByZXN1bHQuYXBwZW5kKCcpJyk7CkBAIC0xMzUsNSArMTc3LDM4IEBAIFN0cmluZyBDU1NC
YXNpY1NoYXBlUG9seWdvbjo6Y3NzVGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIHJlc3VsdC50b1N0
cmluZygpOwogfQogCitTdHJpbmcgQ1NTQmFzaWNTaGFwZVBvbHlnb246OmNzc1RleHQoKSBjb25z
dAoreworICAgIFZlY3RvcjxTdHJpbmc+IHBvaW50czsKKyAgICBwb2ludHMucmVzZXJ2ZUluaXRp
YWxDYXBhY2l0eShtX3ZhbHVlcy5zaXplKCkpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBtX3ZhbHVlcy5zaXplKCk7ICsraSkKKyAgICAgICAgcG9pbnRzLmFwcGVuZChtX3ZhbHVlcy5h
dChpKS0+Y3NzVGV4dCgpKTsKKworICAgIHJldHVybiBidWlsZFBvbHlnb25TdHJpbmcobV93aW5k
UnVsZSwgcG9pbnRzKTsKK30KKworI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQorU3RyaW5nIENT
U0Jhc2ljU2hhcGVQb2x5Z29uOjpzZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXMoY29uc3QgSGFz
aE1hcDxBdG9taWNTdHJpbmcsIFN0cmluZz4mIHZhcmlhYmxlcykgY29uc3QKK3sKKyAgICBWZWN0
b3I8U3RyaW5nPiBwb2ludHM7CisgICAgcG9pbnRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV92
YWx1ZXMuc2l6ZSgpKTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV92YWx1ZXMuc2l6
ZSgpOyArK2kpCisgICAgICAgIHBvaW50cy5hcHBlbmQobV92YWx1ZXMuYXQoaSktPnNlcmlhbGl6
ZVJlc29sdmluZ1ZhcmlhYmxlcyh2YXJpYWJsZXMpKTsKKworICAgIHJldHVybiBidWlsZFBvbHln
b25TdHJpbmcobV93aW5kUnVsZSwgcG9pbnRzKTsKK30KKworYm9vbCBDU1NCYXNpY1NoYXBlUG9s
eWdvbjo6aGFzVmFyaWFibGVSZWZlcmVuY2UoKSBjb25zdAoreworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbV92YWx1ZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKG1fdmFsdWVzLmF0
KGkpLT5oYXNWYXJpYWJsZVJlZmVyZW5jZSgpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5oIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0Jhc2ljU2hhcGVzLmgKaW5kZXggMzRlN2VmMGIyYjk4NDE3
NmM5Y2IxMDI4ODE4YmNlZTIyNDE3YWQ3YS4uZWYzMjA5ODkxODQ0NjNmZDEyYjE3NjRhOGFiODhk
YmVhOTY4ZTA5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Jhc2ljU2hhcGVz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Jhc2ljU2hhcGVzLmgKQEAgLTUwLDYgKzUw
LDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0ID0gMDsKICAgICB2
aXJ0dWFsIFN0cmluZyBjc3NUZXh0KCkgY29uc3QgPSAwOwogCisjaWYgRU5BQkxFKENTU19WQVJJ
QUJMRVMpCisgICAgdmlydHVhbCBTdHJpbmcgc2VyaWFsaXplUmVzb2x2aW5nVmFyaWFibGVzKGNv
bnN0IEhhc2hNYXA8QXRvbWljU3RyaW5nLCBTdHJpbmc+JikgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgYm9vbCBoYXNWYXJpYWJsZVJlZmVyZW5jZSgpIGNvbnN0ID0gMDsKKyNlbmRpZgorCiBwdWJs
aWM6CiAgICAgdmlydHVhbCB+Q1NTQmFzaWNTaGFwZSgpIHsgfQogCkBAIC03OCw2ICs4MywxMSBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBDU1NfQkFT
SUNfU0hBUEVfUkVDVEFOR0xFOyB9CiAgICAgdmlydHVhbCBTdHJpbmcgY3NzVGV4dCgpIGNvbnN0
OwogCisjaWYgRU5BQkxFKENTU19WQVJJQUJMRVMpCisgICAgdmlydHVhbCBTdHJpbmcgc2VyaWFs
aXplUmVzb2x2aW5nVmFyaWFibGVzKGNvbnN0IEhhc2hNYXA8QXRvbWljU3RyaW5nLCBTdHJpbmc+
JikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGhhc1ZhcmlhYmxlUmVmZXJlbmNlKCkgY29uc3Q7
CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBDU1NCYXNpY1NoYXBlUmVjdGFuZ2xlKCkgeyB9CiAK
QEAgLTEwNCw2ICsxMTQsMTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29u
c3QgeyByZXR1cm4gQ1NTX0JBU0lDX1NIQVBFX0NJUkNMRTsgfQogICAgIHZpcnR1YWwgU3RyaW5n
IGNzc1RleHQoKSBjb25zdDsKIAorI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQorICAgIHZpcnR1
YWwgU3RyaW5nIHNlcmlhbGl6ZVJlc29sdmluZ1ZhcmlhYmxlcyhjb25zdCBIYXNoTWFwPEF0b21p
Y1N0cmluZywgU3RyaW5nPiYpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBoYXNWYXJpYWJsZVJl
ZmVyZW5jZSgpIGNvbnN0OworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgQ1NTQmFzaWNTaGFwZUNp
cmNsZSgpIHsgfQogCkBAIC0xMjksNiArMTQ0LDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFR5
cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIENTU19CQVNJQ19TSEFQRV9FTExJUFNFOyB9CiAgICAg
dmlydHVhbCBTdHJpbmcgY3NzVGV4dCgpIGNvbnN0OwogCisjaWYgRU5BQkxFKENTU19WQVJJQUJM
RVMpCisgICAgdmlydHVhbCBTdHJpbmcgc2VyaWFsaXplUmVzb2x2aW5nVmFyaWFibGVzKGNvbnN0
IEhhc2hNYXA8QXRvbWljU3RyaW5nLCBTdHJpbmc+JikgY29uc3Q7CisgICAgdmlydHVhbCBib29s
IGhhc1ZhcmlhYmxlUmVmZXJlbmNlKCkgY29uc3Q7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBD
U1NCYXNpY1NoYXBlRWxsaXBzZSgpIHsgfQogCkBAIC0xNTgsNiArMTc4LDExIEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIENTU19CQVNJQ19TSEFQRV9Q
T0xZR09OOyB9CiAgICAgdmlydHVhbCBTdHJpbmcgY3NzVGV4dCgpIGNvbnN0OwogCisjaWYgRU5B
QkxFKENTU19WQVJJQUJMRVMpCisgICAgdmlydHVhbCBTdHJpbmcgc2VyaWFsaXplUmVzb2x2aW5n
VmFyaWFibGVzKGNvbnN0IEhhc2hNYXA8QXRvbWljU3RyaW5nLCBTdHJpbmc+JikgY29uc3Q7Cisg
ICAgdmlydHVhbCBib29sIGhhc1ZhcmlhYmxlUmVmZXJlbmNlKCkgY29uc3Q7CisjZW5kaWYKKwog
cHJpdmF0ZToKICAgICBDU1NCYXNpY1NoYXBlUG9seWdvbigpCiAgICAgICAgIDogbV93aW5kUnVs
ZShSVUxFX05PTlpFUk8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0
aXZlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcApp
bmRleCA5MjJhMGY2OGM3MzQwNmQ5MGM5ZDQyMmNiYmE2Nzc3ZTAxYTc1MGUzLi41Y2E3Y2ViOTIw
ZTA5OTI4YjExOTBjNTIzZmMyMGI4YjcwZjYxN2E4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
cmltaXRpdmVWYWx1ZS5jcHAKQEAgLTk4OCwzMSArOTg4LDEyIEBAIFN0cmluZyBDU1NQcmltaXRp
dmVWYWx1ZTo6Y3VzdG9tQ3NzVGV4dCgpIGNvbnN0CiAgICAgICAgICAgICB0ZXh0ID0gcmVzdWx0
LnRvU3RyaW5nKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBjYXNl
IENTU19SRUNUOiB7Ci0gICAgICAgICAgICBSZWN0KiByZWN0VmFsID0gZ2V0UmVjdFZhbHVlKCk7
Ci0gICAgICAgICAgICB0ZXh0ID0gInJlY3QoIiArIHJlY3RWYWwtPnRvcCgpLT5jc3NUZXh0KCkg
KyAnICcgKyByZWN0VmFsLT5yaWdodCgpLT5jc3NUZXh0KCkgKyAnICcgKyByZWN0VmFsLT5ib3R0
b20oKS0+Y3NzVGV4dCgpICsgJyAnICsgcmVjdFZhbC0+bGVmdCgpLT5jc3NUZXh0KCkgKyAnKSc7
CisgICAgICAgIGNhc2UgQ1NTX1JFQ1Q6CisgICAgICAgICAgICB0ZXh0ID0gZ2V0UmVjdFZhbHVl
KCktPmNzc1RleHQoKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNh
c2UgQ1NTX1FVQUQ6IHsKLSAgICAgICAgICAgIFF1YWQqIHF1YWRWYWwgPSBnZXRRdWFkVmFsdWUo
KTsKLSAgICAgICAgICAgIFZlY3RvcjxVQ2hhcj4gcmVzdWx0OwotICAgICAgICAgICAgcmVzdWx0
LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoMzIpOwotICAgICAgICAgICAgYXBwZW5kKHJlc3VsdCwg
cXVhZFZhbC0+dG9wKCktPmNzc1RleHQoKSk7Ci0gICAgICAgICAgICBpZiAocXVhZFZhbC0+cmln
aHQoKSAhPSBxdWFkVmFsLT50b3AoKSB8fCBxdWFkVmFsLT5ib3R0b20oKSAhPSBxdWFkVmFsLT50
b3AoKSB8fCBxdWFkVmFsLT5sZWZ0KCkgIT0gcXVhZFZhbC0+dG9wKCkpIHsKLSAgICAgICAgICAg
ICAgICByZXN1bHQuYXBwZW5kKCcgJyk7Ci0gICAgICAgICAgICAgICAgYXBwZW5kKHJlc3VsdCwg
cXVhZFZhbC0+cmlnaHQoKS0+Y3NzVGV4dCgpKTsKLSAgICAgICAgICAgICAgICBpZiAocXVhZFZh
bC0+Ym90dG9tKCkgIT0gcXVhZFZhbC0+dG9wKCkgfHwgcXVhZFZhbC0+cmlnaHQoKSAhPSBxdWFk
VmFsLT5sZWZ0KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICcpOwot
ICAgICAgICAgICAgICAgICAgICBhcHBlbmQocmVzdWx0LCBxdWFkVmFsLT5ib3R0b20oKS0+Y3Nz
VGV4dCgpKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHF1YWRWYWwtPmxlZnQoKSAhPSBxdWFk
VmFsLT5yaWdodCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcg
Jyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmQocmVzdWx0LCBxdWFkVmFsLT5sZWZ0
KCktPmNzc1RleHQoKSk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB0ZXh0ID0gU3RyaW5nOjphZG9wdChyZXN1bHQp
OworICAgICAgICBjYXNlIENTU19RVUFEOgorICAgICAgICAgICAgdGV4dCA9IGdldFF1YWRWYWx1
ZSgpLT5jc3NUZXh0KCk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQogICAgICAgICBj
YXNlIENTU19SR0JDT0xPUjoKICAgICAgICAgY2FzZSBDU1NfUEFSU0VSX0hFWENPTE9SOiB7CiAg
ICAgICAgICAgICBSR0JBMzIgcmdiQ29sb3IgPSBtX3ZhbHVlLnJnYmNvbG9yOwpAQCAtMTA0Nywx
NiArMTAyOCw5IEBAIFN0cmluZyBDU1NQcmltaXRpdmVWYWx1ZTo6Y3VzdG9tQ3NzVGV4dCgpIGNv
bnN0CiAgICAgICAgICAgICB0ZXh0ID0gU3RyaW5nOjphZG9wdChyZXN1bHQpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBDU1NfUEFJUjogewotICAgICAgICAg
ICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7Ci0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKG1fdmFs
dWUucGFpci0+Zmlyc3QoKS0+Y3NzVGV4dCgpKTsKLSAgICAgICAgICAgIGlmIChtX3ZhbHVlLnBh
aXItPnNlY29uZCgpICE9IG1fdmFsdWUucGFpci0+Zmlyc3QoKSkgewotICAgICAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmQoJyAnKTsKLSAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKG1fdmFs
dWUucGFpci0+c2Vjb25kKCktPmNzc1RleHQoKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICB0ZXh0ID0gcmVzdWx0LnRvU3RyaW5nKCk7CisgICAgICAgIGNhc2UgQ1NTX1BBSVI6CisgICAg
ICAgICAgICB0ZXh0ID0gZ2V0UGFpclZhbHVlKCktPmNzc1RleHQoKTsKICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICB9CiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKSB8fCBFTkFCTEUo
V0lER0VUX1JFR0lPTikKICAgICAgICAgY2FzZSBDU1NfREFTSEJPQVJEX1JFR0lPTjogewogICAg
ICAgICAgICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7CkBAIC0xMTQxLDEwICsxMTE1LDMzIEBAIFN0
cmluZyBDU1NQcmltaXRpdmVWYWx1ZTo6Y3VzdG9tU2VyaWFsaXplUmVzb2x2aW5nVmFyaWFibGVz
KGNvbnN0IEhhc2hNYXA8QXRvbWljCiB7CiAgICAgaWYgKGlzVmFyaWFibGVOYW1lKCkgJiYgdmFy
aWFibGVzLmNvbnRhaW5zKG1fdmFsdWUuc3RyaW5nKSkKICAgICAgICAgcmV0dXJuIHZhcmlhYmxl
cy5nZXQobV92YWx1ZS5zdHJpbmcpOwotICAgIGlmIChpc0NhbGN1bGF0ZWQoKSkKLSAgICAgICAg
cmV0dXJuIGNzc0NhbGNWYWx1ZSgpLT5jdXN0b21TZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXMo
dmFyaWFibGVzKTsKKyAgICBpZiAoQ1NTQ2FsY1ZhbHVlKiBjYWxjVmFsdWUgPSBjc3NDYWxjVmFs
dWUoKSkKKyAgICAgICAgcmV0dXJuIGNhbGNWYWx1ZS0+Y3VzdG9tU2VyaWFsaXplUmVzb2x2aW5n
VmFyaWFibGVzKHZhcmlhYmxlcyk7CisgICAgaWYgKFBhaXIqIHBhaXJWYWx1ZSA9IGdldFBhaXJW
YWx1ZSgpKQorICAgICAgICByZXR1cm4gcGFpclZhbHVlLT5zZXJpYWxpemVSZXNvbHZpbmdWYXJp
YWJsZXModmFyaWFibGVzKTsKKyAgICBpZiAoUmVjdCogcmVjdFZhbCA9IGdldFJlY3RWYWx1ZSgp
KQorICAgICAgICByZXR1cm4gcmVjdFZhbC0+c2VyaWFsaXplUmVzb2x2aW5nVmFyaWFibGVzKHZh
cmlhYmxlcyk7CisgICAgaWYgKFF1YWQqIHF1YWRWYWwgPSBnZXRRdWFkVmFsdWUoKSkKKyAgICAg
ICAgcmV0dXJuIHF1YWRWYWwtPnNlcmlhbGl6ZVJlc29sdmluZ1ZhcmlhYmxlcyh2YXJpYWJsZXMp
OworICAgIGlmIChDU1NCYXNpY1NoYXBlKiBzaGFwZVZhbHVlID0gZ2V0U2hhcGVWYWx1ZSgpKQor
ICAgICAgICByZXR1cm4gc2hhcGVWYWx1ZS0+c2VyaWFsaXplUmVzb2x2aW5nVmFyaWFibGVzKHZh
cmlhYmxlcyk7CiAgICAgcmV0dXJuIGN1c3RvbUNzc1RleHQoKTsKIH0KKworYm9vbCBDU1NQcmlt
aXRpdmVWYWx1ZTo6aGFzVmFyaWFibGVSZWZlcmVuY2UoKSBjb25zdAoreworICAgIGlmIChDU1ND
YWxjVmFsdWUqIGNhbGNWYWx1ZSA9IGNzc0NhbGNWYWx1ZSgpKQorICAgICAgICByZXR1cm4gY2Fs
Y1ZhbHVlLT5oYXNWYXJpYWJsZVJlZmVyZW5jZSgpOworICAgIGlmIChQYWlyKiBwYWlyVmFsdWUg
PSBnZXRQYWlyVmFsdWUoKSkKKyAgICAgICAgcmV0dXJuIHBhaXJWYWx1ZS0+aGFzVmFyaWFibGVS
ZWZlcmVuY2UoKTsKKyAgICBpZiAoUXVhZCogcXVhZFZhbHVlID0gZ2V0UXVhZFZhbHVlKCkpCisg
ICAgICAgIHJldHVybiBxdWFkVmFsdWUtPmhhc1ZhcmlhYmxlUmVmZXJlbmNlKCk7CisgICAgaWYg
KFJlY3QqIHJlY3RWYWx1ZSA9IGdldFJlY3RWYWx1ZSgpKQorICAgICAgICByZXR1cm4gcmVjdFZh
bHVlLT5oYXNWYXJpYWJsZVJlZmVyZW5jZSgpOworICAgIGlmIChDU1NCYXNpY1NoYXBlKiBzaGFw
ZVZhbHVlID0gZ2V0U2hhcGVWYWx1ZSgpKQorICAgICAgICByZXR1cm4gc2hhcGVWYWx1ZS0+aGFz
VmFyaWFibGVSZWZlcmVuY2UoKTsKKyAgICByZXR1cm4gaXNWYXJpYWJsZU5hbWUoKTsKK30KICNl
bmRpZgogCiB2b2lkIENTU1ByaW1pdGl2ZVZhbHVlOjphZGRTdWJyZXNvdXJjZVN0eWxlVVJMcyhM
aXN0SGFzaFNldDxLVVJMPiYgdXJscywgY29uc3QgU3R5bGVTaGVldENvbnRlbnRzKiBzdHlsZVNo
ZWV0KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZh
bHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaAppbmRleCAxMDNl
YTZhODNkMmQ2NjJjNDUzMTQyM2Y3MGI4MzI5NDkyMGZhY2I5Li4wZmI2NDQ1YjAyYWM5MmE4Mzdj
MGFmZGIwNWU5OGJjOTEyZWUyYjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UHJpbWl0aXZlVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFs
dWUuaApAQCAtMjk5LDYgKzI5OSw3IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgY3VzdG9tQ3NzVGV4
dCgpIGNvbnN0OwogI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQogICAgIFN0cmluZyBjdXN0b21T
ZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXMoY29uc3QgSGFzaE1hcDxBdG9taWNTdHJpbmcsIFN0
cmluZz4mKSBjb25zdDsKKyAgICBib29sIGhhc1ZhcmlhYmxlUmVmZXJlbmNlKCkgY29uc3Q7CiAj
ZW5kaWYKIAogICAgIGJvb2wgaXNRdWlya1ZhbHVlKCkgeyByZXR1cm4gbV9pc1F1aXJrVmFsdWU7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9QYWlyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvUGFpci5oCmluZGV4IGE5NTM3MGRjMzAxNTNkNjhkY2JkYzNiODhmM2MwNWE3ZDE1MDA4
OTIuLjViYzE2MmM0MGQ2OWRjZjA2YzZjNzM0YmIyMzY5M2IxODZhMDIxOGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9QYWlyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1BhaXIu
aApAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVk
ZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC00OSwxMSArNTAsMzQgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Rmlyc3QoUGFzc1JlZlB0
cjxDU1NQcmltaXRpdmVWYWx1ZT4gZmlyc3QpIHsgbV9maXJzdCA9IGZpcnN0OyB9CiAgICAgdm9p
ZCBzZXRTZWNvbmQoUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gc2Vjb25kKSB7IG1fc2Vj
b25kID0gc2Vjb25kOyB9CiAKKyAgICBTdHJpbmcgY3NzVGV4dCgpIGNvbnN0CisgICAgeworICAg
IAorICAgICAgICByZXR1cm4gZ2VuZXJhdGVDU1NTdHJpbmcoZmlyc3QoKS0+Y3NzVGV4dCgpLCBz
ZWNvbmQoKS0+Y3NzVGV4dCgpKTsKKyAgICB9CisKKyNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykK
KyAgICBTdHJpbmcgc2VyaWFsaXplUmVzb2x2aW5nVmFyaWFibGVzKGNvbnN0IEhhc2hNYXA8QXRv
bWljU3RyaW5nLCBTdHJpbmc+JiB2YXJpYWJsZXMpIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4gZ2VuZXJhdGVDU1NTdHJpbmcoZmlyc3QoKS0+Y3VzdG9tU2VyaWFsaXplUmVzb2x2aW5nVmFy
aWFibGVzKHZhcmlhYmxlcyksCisgICAgICAgICAgICBzZWNvbmQoKS0+Y3VzdG9tU2VyaWFsaXpl
UmVzb2x2aW5nVmFyaWFibGVzKHZhcmlhYmxlcykpOworICAgIH0KKyAgICAKKyAgICBib29sIGhh
c1ZhcmlhYmxlUmVmZXJlbmNlKCkgY29uc3QgeyByZXR1cm4gZmlyc3QoKS0+aGFzVmFyaWFibGVS
ZWZlcmVuY2UoKSB8fCBzZWNvbmQoKS0+aGFzVmFyaWFibGVSZWZlcmVuY2UoKTsgfQorI2VuZGlm
CisKIHByaXZhdGU6CiAgICAgUGFpcigpIDogbV9maXJzdCgwKSwgbV9zZWNvbmQoMCkgeyB9CiAg
ICAgUGFpcihQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBmaXJzdCwgUGFzc1JlZlB0cjxD
U1NQcmltaXRpdmVWYWx1ZT4gc2Vjb25kKQogICAgICAgICA6IG1fZmlyc3QoZmlyc3QpLCBtX3Nl
Y29uZChzZWNvbmQpIHsgfQogCisgICAgc3RhdGljIFN0cmluZyBnZW5lcmF0ZUNTU1N0cmluZyhj
b25zdCBTdHJpbmcmIGZpcnN0LCBjb25zdCBTdHJpbmcmIHNlY29uZCkKKyAgICB7CisgICAgICAg
IGlmIChmaXJzdCA9PSBzZWNvbmQpCisgICAgICAgICAgICByZXR1cm4gZmlyc3Q7CisgICAgICAg
IHJldHVybiBmaXJzdCArICcgJyArIHNlY29uZDsKKyAgICB9CisKICAgICBSZWZQdHI8Q1NTUHJp
bWl0aXZlVmFsdWU+IG1fZmlyc3Q7CiAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBtX3Nl
Y29uZDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUmVjdC5oIGIvU291cmNl
L1dlYkNvcmUvY3NzL1JlY3QuaAppbmRleCAzNTVkNmZiN2JiZDhjY2QzM2ViYmJkZTBhMDg3Y2Q1
OGI4Nzc2MDUxLi45MjA5NzIyMmExNTg5MDRjZTgyYmRjNDQ4MTVkYjZiN2Q4OTE3MzRhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUmVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9SZWN0LmgKQEAgLTIzLDYgKzIzLDcgQEAKIAogI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVl
LmgiCiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1
aWxkZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zOCw2ICszOSwxNiBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRCb3R0b20oUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gYm90
dG9tKSB7IG1fYm90dG9tID0gYm90dG9tOyB9CiAgICAgdm9pZCBzZXRMZWZ0KFBhc3NSZWZQdHI8
Q1NTUHJpbWl0aXZlVmFsdWU+IGxlZnQpIHsgbV9sZWZ0ID0gbGVmdDsgfQogCisjaWYgRU5BQkxF
KENTU19WQVJJQUJMRVMpCisgICAgYm9vbCBoYXNWYXJpYWJsZVJlZmVyZW5jZSgpIGNvbnN0Cisg
ICAgeworICAgICAgICByZXR1cm4gbV90b3AtPmhhc1ZhcmlhYmxlUmVmZXJlbmNlKCkKKyAgICAg
ICAgICAgIHx8IG1fcmlnaHQtPmhhc1ZhcmlhYmxlUmVmZXJlbmNlKCkKKyAgICAgICAgICAgIHx8
IG1fYm90dG9tLT5oYXNWYXJpYWJsZVJlZmVyZW5jZSgpCisgICAgICAgICAgICB8fCBtX2xlZnQt
Pmhhc1ZhcmlhYmxlUmVmZXJlbmNlKCk7CisgICAgfQorI2VuZGlmCisKIHByb3RlY3RlZDoKICAg
ICBSZWN0QmFzZSgpIHsgfQogICAgIFJlY3RCYXNlKGNvbnN0IFJlY3RCYXNlJiBjbG9uZUZyb20p
CkBAIC02Myw5ICs3NCwyOCBAQCBwdWJsaWM6CiAgICAgCiAgICAgUGFzc1JlZlB0cjxSZWN0PiBj
bG9uZUZvckNTU09NKCkgY29uc3QgeyByZXR1cm4gYWRvcHRSZWYobmV3IFJlY3QoKnRoaXMpKTsg
fQogCisgICAgU3RyaW5nIGNzc1RleHQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGdl
bmVyYXRlQ1NTU3RyaW5nKHRvcCgpLT5jc3NUZXh0KCksIHJpZ2h0KCktPmNzc1RleHQoKSwgYm90
dG9tKCktPmNzc1RleHQoKSwgbGVmdCgpLT5jc3NUZXh0KCkpOworICAgIH0KKworI2lmIEVOQUJM
RShDU1NfVkFSSUFCTEVTKQorICAgIFN0cmluZyBzZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXMo
Y29uc3QgSGFzaE1hcDxBdG9taWNTdHJpbmcsIFN0cmluZz4mIHZhcmlhYmxlcykgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiBnZW5lcmF0ZUNTU1N0cmluZyh0b3AoKS0+Y3VzdG9tU2VyaWFs
aXplUmVzb2x2aW5nVmFyaWFibGVzKHZhcmlhYmxlcyksCisgICAgICAgICAgICByaWdodCgpLT5j
dXN0b21TZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXModmFyaWFibGVzKSwKKyAgICAgICAgICAg
IGJvdHRvbSgpLT5jdXN0b21TZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXModmFyaWFibGVzKSwK
KyAgICAgICAgICAgIGxlZnQoKS0+Y3VzdG9tU2VyaWFsaXplUmVzb2x2aW5nVmFyaWFibGVzKHZh
cmlhYmxlcykpOworICAgIH0KKyNlbmRpZgorCiBwcml2YXRlOgogICAgIFJlY3QoKSB7IH0KICAg
ICBSZWN0KGNvbnN0IFJlY3QmIGNsb25lRnJvbSkgOiBSZWN0QmFzZShjbG9uZUZyb20pLCBSZWZD
b3VudGVkPFJlY3Q+KCkgeyB9CisgICAgc3RhdGljIFN0cmluZyBnZW5lcmF0ZUNTU1N0cmluZyhj
b25zdCBTdHJpbmcmIHRvcCwgY29uc3QgU3RyaW5nJiByaWdodCwgY29uc3QgU3RyaW5nJiBib3R0
b20sIGNvbnN0IFN0cmluZyYgbGVmdCkKKyAgICB7CisgICAgICAgIHJldHVybiAicmVjdCgiICsg
dG9wICsgJyAnICsgcmlnaHQgKyAnICcgKyBib3R0b20gKyAnICcgKyBsZWZ0ICsgJyknOworICAg
IH0KIH07CiAKIGNsYXNzIFF1YWQgOiBwdWJsaWMgUmVjdEJhc2UsIHB1YmxpYyBSZWZDb3VudGVk
PFF1YWQ+IHsKQEAgLTc0LDkgKzEwNCw0MiBAQCBwdWJsaWM6CiAgICAgCiAgICAgUGFzc1JlZlB0
cjxRdWFkPiBjbG9uZUZvckNTU09NKCkgY29uc3QgeyByZXR1cm4gYWRvcHRSZWYobmV3IFF1YWQo
KnRoaXMpKTsgfQogCisgICAgU3RyaW5nIGNzc1RleHQoKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuIGdlbmVyYXRlQ1NTU3RyaW5nKHRvcCgpLT5jc3NUZXh0KCksIHJpZ2h0KCktPmNzc1Rl
eHQoKSwgYm90dG9tKCktPmNzc1RleHQoKSwgbGVmdCgpLT5jc3NUZXh0KCkpOworICAgIH0KKwor
I2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQorICAgIFN0cmluZyBzZXJpYWxpemVSZXNvbHZpbmdW
YXJpYWJsZXMoY29uc3QgSGFzaE1hcDxBdG9taWNTdHJpbmcsIFN0cmluZz4mIHZhcmlhYmxlcykg
Y29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBnZW5lcmF0ZUNTU1N0cmluZyh0b3AoKS0+Y3Vz
dG9tU2VyaWFsaXplUmVzb2x2aW5nVmFyaWFibGVzKHZhcmlhYmxlcyksCisgICAgICAgICAgICBy
aWdodCgpLT5jdXN0b21TZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXModmFyaWFibGVzKSwKKyAg
ICAgICAgICAgIGJvdHRvbSgpLT5jdXN0b21TZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXModmFy
aWFibGVzKSwKKyAgICAgICAgICAgIGxlZnQoKS0+Y3VzdG9tU2VyaWFsaXplUmVzb2x2aW5nVmFy
aWFibGVzKHZhcmlhYmxlcykpOworICAgIH0KKyNlbmRpZgorCiBwcml2YXRlOgogICAgIFF1YWQo
KSB7IH0KICAgICBRdWFkKGNvbnN0IFF1YWQmIGNsb25lRnJvbSkgOiBSZWN0QmFzZShjbG9uZUZy
b20pLCBSZWZDb3VudGVkPFF1YWQ+KCkgeyB9CisgICAgc3RhdGljIFN0cmluZyBnZW5lcmF0ZUNT
U1N0cmluZyhjb25zdCBTdHJpbmcmIHRvcCwgY29uc3QgU3RyaW5nJiByaWdodCwgY29uc3QgU3Ry
aW5nJiBib3R0b20sIGNvbnN0IFN0cmluZyYgbGVmdCkKKyAgICB7CisgICAgICAgIFN0cmluZ0J1
aWxkZXIgcmVzdWx0OworICAgICAgICByZXN1bHQuYXBwZW5kKHRvcCk7CisgICAgICAgIGlmIChy
aWdodCAhPSB0b3AgfHwgYm90dG9tICE9IHRvcCB8fCBsZWZ0ICE9IHRvcCkgeworICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgnICcpOworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChyaWdodCk7
CisgICAgICAgICAgICBpZiAoYm90dG9tICE9IHRvcCB8fCByaWdodCAhPSBsZWZ0KSB7CisgICAg
ICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICcpOworICAgICAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQoYm90dG9tKTsKKyAgICAgICAgICAgICAgICBpZiAobGVmdCAhPSByaWdodCkgeworICAg
ICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgJyk7CisgICAgICAgICAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmQobGVmdCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKKyAgICB9CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAK
aW5kZXggNmFlMzVhY2Y4YzMzY2M4MjgwZTJkZTMxMzBkMjhiOWE5NGUyNTYwNC4uOTdjZjk4NWFh
NzMwNTNhZDc2YjJlOTlmZGZlNTQ3NzIxN2Y2YWYwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJl
c29sdmVyLmNwcApAQCAtMzM1OSw5ICszMzU5LDcgQEAgc3RhdGljIGJvb2wgaGFzVmFyaWFibGVS
ZWZlcmVuY2UoQ1NTVmFsdWUqIHZhbHVlKQogewogICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVW
YWx1ZSgpKSB7CiAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0
YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOwotICAgICAgICBpZiAoQ1NTQ2Fs
Y1ZhbHVlKiBjYWxjVmFsdWUgPSBwcmltaXRpdmVWYWx1ZS0+Y3NzQ2FsY1ZhbHVlKCkpCi0gICAg
ICAgICAgICByZXR1cm4gY2FsY1ZhbHVlLT5oYXNWYXJpYWJsZVJlZmVyZW5jZSgpOwotICAgICAg
ICByZXR1cm4gcHJpbWl0aXZlVmFsdWUtPmlzVmFyaWFibGVOYW1lKCk7CisgICAgICAgIHJldHVy
biBwcmltaXRpdmVWYWx1ZS0+aGFzVmFyaWFibGVSZWZlcmVuY2UoKTsKICAgICB9CiAKICAgICBp
ZiAodmFsdWUtPmlzQ2FsY3VsYXRpb25WYWx1ZSgpKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGNhNjYzN2MyNWZmNmNmZDM0
Mjg0YWIxMjAzMzQwNjJkODI2M2ZmNWIuLjI5ZmNlOThhZDE1YjliY2IyOTFmMWNiNTg1ZGIyY2M3
Mjk0MTNhYmMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMi0wOS0wNSAgTHVrZSBNYWNwaGVy
c29uICAgPG1hY3BoZXJzb25AY2hyb21pdW0ub3JnPgorCisgICAgICAgIEVuc3VyZSB2YXJpYWJs
ZXMgYXJlIHJlc29sdmVkIGZvciBzcGVjaWFsaXplZCBDU1MgcHJpbWl0aXZlIHZhbHVlIHR5cGVz
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU5MzAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGVz
dHMgdGhhdCB1c2Ugc3BlY2lhbGl6ZWQgQ1NTIHZhbHVlcyAoZWcuIHBhaXJzLCBxdWFkcywgcmVj
dGFuZ2xlLCBjaXJjbGUsIGVsbGlwc2UgZXRjLikuCisKKyAgICAgICAgKiBmYXN0L2Nzcy92YXJp
YWJsZXMvcm9vdC1iYWNrZ3JvdW5kLXNpemUtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9jc3MvdmFyaWFibGVzL3Jvb3QtYmFja2dyb3VuZC1zaXplLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvY3NzL3ZhcmlhYmxlcy92YXItaW5zaWRlLXBhaXItZXhwZWN0ZWQuaHRt
bDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3MvdmFyaWFibGVzL3Zhci1pbnNpZGUtcGFpci5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy92YXJpYWJsZXMvdmFyLWluc2lkZS1xdWFk
LWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL3ZhcmlhYmxlcy92YXIt
aW5zaWRlLXF1YWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3MvdmFyaWFibGVzL3Zh
ci1pbnNpZGUtc2hhcGUtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3Mv
dmFyaWFibGVzL3Zhci1pbnNpZGUtc2hhcGUuaHRtbDogQWRkZWQuCisKIDIwMTItMDktMjUgIE1p
a2UgV2VzdCAgPG1rd3N0QGNocm9taXVtLm9yZz4KIAogICAgICAgICBDU1AgbG9nZ2luZzogQmUg
bW9yZSBkZXZlbG9wZXItZnJpZW5kbHkgd2hlbiAnZGVmYXVsdC1zcmMnIGlzIHZpb2xhdGVkLgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvdmFyaWFibGVzL3Jvb3QtYmFja2dyb3Vu
ZC1zaXplLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy92YXJpYWJsZXMvcm9v
dC1iYWNrZ3JvdW5kLXNpemUtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMzUzNjcyNjAzNWNh
NTk4ZjlkMjA5ZjliYTlhNWI1MmZiZDExNGJmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9jc3MvdmFyaWFibGVzL3Jvb3QtYmFja2dyb3VuZC1zaXplLWV4cGVjdGVkLmh0bWwK
QEAgLTAsMCArMSw0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorVGhpcyB0ZXN0IGlzIHN1
Y2Nlc3NmdWwgaWYgaXQgZG9lcyBub3QgY3Jhc2guCis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2Nzcy92YXJpYWJsZXMvcm9vdC1iYWNrZ3JvdW5kLXNpemUuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvY3NzL3ZhcmlhYmxlcy9yb290LWJhY2tncm91bmQtc2l6ZS5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjQ1ODczYzdjMTYxMzAwNWQ0NjNiMTg5NDk2ZjcyMDc1ZmEwYzU2ZWMKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy92YXJpYWJsZXMvcm9vdC1iYWNrZ3Jv
dW5kLXNpemUuaHRtbApAQCAtMCwwICsxLDE0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PHNjcmlwdD4KK2lmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgIGludGVybmFscy5zZXR0aW5ncy5z
ZXRDU1NWYXJpYWJsZXNFbmFibGVkKHRydWUpOworPC9zY3JpcHQ+Cis8c3R5bGU+Cis6cm9vdCB7
CisgIC13ZWJraXQtYmFja2dyb3VuZC1zaXplOiAtd2Via2l0LWNhbGMoLXdlYmtpdC12YXIoYSkp
OworfQorPC9zdHlsZT4KKzxzdHlsZT48L3N0eWxlPgorVGhpcyB0ZXN0IGlzIHN1Y2Nlc3NmdWwg
aWYgaXQgZG9lcyBub3QgY3Jhc2guCis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2Nzcy92YXJpYWJsZXMvdmFyLWluc2lkZS1wYWlyLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L2Nzcy92YXJpYWJsZXMvdmFyLWluc2lkZS1wYWlyLWV4cGVjdGVkLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMWUyMjliNzEzZDNiZTY4NDNiZDM0ZGE3Y2VkZTI5NTQyMzkyODlhYQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3ZhcmlhYmxlcy92YXItaW5zaWRlLXBh
aXItZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDEwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPHN0eWxlPgorYm9keSB7CisgICAgYm9yZGVyOiAxcHggc29saWQgZ3JlZW47CisgICAgYm9y
ZGVyLXRvcC1sZWZ0LXJhZGl1czogM3B4IDZweDsKK30KKzwvc3R5bGU+CitUaGlzIHRleHQgc2hv
dWxkIGJlIHN1cnJvdW5kZWQgYnkgYSBncmVlbiBib3JkZXIgd2l0aCBhIHJvdW5kZWQgdG9wIGxl
ZnQgY29ybmVyLgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvdmFy
aWFibGVzL3Zhci1pbnNpZGUtcGFpci5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvdmFyaWFi
bGVzL3Zhci1pbnNpZGUtcGFpci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYxODU0ZDFhYzM4OTZmMTA0MjFh
MWI3MmNjZTA0ZTNkODgxMGQ5MWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2Nzcy92YXJpYWJsZXMvdmFyLWluc2lkZS1wYWlyLmh0bWwKQEAgLTAsMCArMSwxNiBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxzY3JpcHQ+CitpZiAod2luZG93LmludGVybmFscykKKyAg
ICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0Q1NTVmFyaWFibGVzRW5hYmxlZCh0cnVlKTsKKzwvc2Ny
aXB0PgorPHN0eWxlPgorYm9keSB7CisgICAgYm9yZGVyOiAxcHggc29saWQgZ3JlZW47CisgICAg
Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czogLXdlYmtpdC12YXIoYSkgLXdlYmtpdC12YXIoYik7Cisg
ICAgLXdlYmtpdC12YXItYTogM3B4OworICAgIC13ZWJraXQtdmFyLWI6IDZweDsKK30KKzwvc3R5
bGU+CitUaGlzIHRleHQgc2hvdWxkIGJlIHN1cnJvdW5kZWQgYnkgYSBncmVlbiBib3JkZXIgd2l0
aCBhIHJvdW5kZWQgdG9wIGxlZnQgY29ybmVyLgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9jc3MvdmFyaWFibGVzL3Zhci1pbnNpZGUtcXVhZC1leHBlY3RlZC5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC9jc3MvdmFyaWFibGVzL3Zhci1pbnNpZGUtcXVhZC1leHBlY3RlZC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjYyN2FlZDcxOWIxNDFhNDMyYThhNzY3YjM4MmUwZDM1M2FiNDU1ZGUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy92YXJpYWJsZXMvdmFyLWlu
c2lkZS1xdWFkLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxMSBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxzdHlsZT4KK2JvZHkgeworICAgIGJvcmRlci1jb2xvcjogZ3JlZW47CisgICAg
Ym9yZGVyLXdpZHRoOiAxcHggMnB4IDNweCA0cHg7CisgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDsK
K30KKzwvc3R5bGU+CitUaGlzIHRleHQgc2hvdWxkIGJlIHN1cnJvdW5kZWQgYnkgYSBncmVlbiBi
b3JkZXIgd2l0aCAxcHggdG9wLCAycHggcmlnaHQsIDNweCBib3R0b20sIDRweCBsZWZ0LgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvdmFyaWFibGVzL3Zhci1pbnNp
ZGUtcXVhZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvdmFyaWFibGVzL3Zhci1pbnNpZGUt
cXVhZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ1OWVmMGUyYzlhODEwMTkyMjg2ZjFlMmZjMTljNjBiZmU3
N2Q0MDMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy92YXJpYWJsZXMv
dmFyLWluc2lkZS1xdWFkLmh0bWwKQEAgLTAsMCArMSwxOSBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxzY3JpcHQ+CitpZiAod2luZG93LmludGVybmFscykKKyAgICBpbnRlcm5hbHMuc2V0
dGluZ3Muc2V0Q1NTVmFyaWFibGVzRW5hYmxlZCh0cnVlKTsKKzwvc2NyaXB0PgorPHN0eWxlPgor
Ym9keSB7CisgICAgYm9yZGVyLWNvbG9yOiBncmVlbjsKKyAgICBib3JkZXItd2lkdGg6IC13ZWJr
aXQtdmFyKGEpIC13ZWJraXQtdmFyKGIpIC13ZWJraXQtdmFyKGMpIC13ZWJraXQtdmFyKGQpOwor
ICAgIGJvcmRlci1zdHlsZTogc29saWQ7CisgICAgLXdlYmtpdC12YXItYTogMXB4OworICAgIC13
ZWJraXQtdmFyLWI6IDJweDsKKyAgICAtd2Via2l0LXZhci1jOiAzcHg7CisgICAgLXdlYmtpdC12
YXItZDogNHB4OworfQorPC9zdHlsZT4KK1RoaXMgdGV4dCBzaG91bGQgYmUgc3Vycm91bmRlZCBi
eSBhIGdyZWVuIGJvcmRlciB3aXRoIDFweCB0b3AsIDJweCByaWdodCwgM3B4IGJvdHRvbSwgNHB4
IGxlZnQuCis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy92YXJpYWJs
ZXMvdmFyLWluc2lkZS1zaGFwZS1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mv
dmFyaWFibGVzL3Zhci1pbnNpZGUtc2hhcGUtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MzZj
ODgwN2RhN2UxYTdkZjM4OWJjYmEyMzQ1OWMyZDg1MmRlZDhmCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9jc3MvdmFyaWFibGVzL3Zhci1pbnNpZGUtc2hhcGUtZXhwZWN0ZWQu
aHRtbApAQCAtMCwwICsxLDI5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPHN0eWxlPgor
LmEgeworICAgIC13ZWJraXQtc2hhcGUtaW5zaWRlOiBlbGxpcHNlKDEwMHB4LCAxMDBweCwgMTAw
cHgsIDEwMHB4KTsKK30KKy5iIHsKKyAgICAtd2Via2l0LXNoYXBlLWluc2lkZTogY2lyY2xlKDEw
MHB4LCAxMDBweCwgMTAwcHgpOworfQorLmMgeworICAgIC13ZWJraXQtc2hhcGUtaW5zaWRlOiBy
ZWN0YW5nZSgxMDBweCk7Cit9CisuZCB7CisgICAgLXdlYmtpdC1zaGFwZS1pbnNpZGU6IHBvbHln
b24oMTAwcHgsIDEwMHB4LCAxMDBweCwgMTAwcHgsIDEwMHB4KTsKK30KKzwvc3R5bGU+Cis8ZGl2
IGNsYXNzPSJhIj4KK1NvbWUgdGV4dC4KKzwvZGl2PgorPGRpdiBjbGFzcz0iYiI+CitTb21lIHRl
eHQuCis8L2Rpdj4KKzxkaXYgY2xhc3M9ImMiPgorU29tZSB0ZXh0LgorPC9kaXY+Cis8ZGl2IGNs
YXNzPSJkIj4KK1NvbWUgdGV4dC4KKzwvZGl2PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9jc3MvdmFyaWFibGVzL3Zhci1pbnNpZGUtc2hhcGUuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvY3NzL3ZhcmlhYmxlcy92YXItaW5zaWRlLXNoYXBlLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NzY3MDFhMzIwMzIyY2Q3NjQ2YTJiMTRiMjllYjBlOTZhOGRlYjAzOQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3ZhcmlhYmxlcy92YXItaW5zaWRlLXNoYXBlLmh0bWwK
QEAgLTAsMCArMSwzNiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxzY3JpcHQ+CitpZiAo
d2luZG93LmludGVybmFscykKKyAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0Q1NTVmFyaWFibGVz
RW5hYmxlZCh0cnVlKTsKKzwvc2NyaXB0PgorPHN0eWxlPgorOnJvb3QgeworICAgIC13ZWJraXQt
dmFyLWE6IDEwMHB4OworfQorLmEgeworICAgIC13ZWJraXQtc2hhcGUtaW5zaWRlOiBlbGxpcHNl
KC13ZWJraXQtdmFyKGEpLCAtd2Via2l0LXZhcihhKSwgLXdlYmtpdC12YXIoYSksIC13ZWJraXQt
dmFyKGEpKTsKK30KKy5iIHsKKyAgICAtd2Via2l0LXNoYXBlLWluc2lkZTogY2lyY2xlKC13ZWJr
aXQtdmFyKGEpLCAtd2Via2l0LXZhcihhKSwgLXdlYmtpdC12YXIoYSkpKTsKK30KKy5jIHsKKyAg
ICAtd2Via2l0LXNoYXBlLWluc2lkZTogcmVjdGFuZ2UoLXdlYmtpdC12YXIoYSkpOworfQorLmQg
eworICAgIC13ZWJraXQtc2hhcGUtaW5zaWRlOiBwb2x5Z29uKC13ZWJraXQtdmFyKGEpLCAtd2Vi
a2l0LXZhcihhKSwgLXdlYmtpdC12YXIoYSksIC13ZWJraXQtdmFyKGEpKTsKK30KKzwvc3R5bGU+
Cis8ZGl2IGNsYXNzPSJhIj4KK1NvbWUgdGV4dC4KKzwvZGl2PgorPGRpdiBjbGFzcz0iYiI+CitT
b21lIHRleHQuCis8L2Rpdj4KKzxkaXYgY2xhc3M9ImMiPgorU29tZSB0ZXh0LgorPC9kaXY+Cis8
ZGl2IGNsYXNzPSJkIj4KK1NvbWUgdGV4dC4KKzwvZGl2PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>