<?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>142799</bug_id>
          
          <creation_ts>2015-03-17 15:47:58 -0700</creation_ts>
          <short_desc>content extensions should have special path for global selectors</short_desc>
          <delta_ts>2015-03-19 08:58:01 -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>WebCore Misc.</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>beidson</cc>
    
    <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1078000</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-03-17 15:47:58 -0700</bug_when>
    <thetext>Lots of selectors will apply to every page, so we should have a special path to compile these once and use them automatically.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078006</commentid>
    <comment_count>1</comment_count>
      <attachid>248880</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-03-17 15:54:31 -0700</bug_when>
    <thetext>Created attachment 248880
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078012</commentid>
    <comment_count>2</comment_count>
      <attachid>248880</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-03-17 16:09:02 -0700</bug_when>
    <thetext>Comment on attachment 248880
Patch

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

&gt; Source/WebCore/contentextensions/CompiledContentExtension.cpp:50
&gt; +    const SerializedActionByte* begin = actions();
&gt; +    unsigned length = actionsLength();
&gt; +    RELEASE_ASSERT(length &gt;= sizeof(unsigned));
&gt; +    unsigned selectorCount = *reinterpret_cast&lt;const unsigned*&gt;(begin);
&gt; +    Vector&lt;String&gt; selectors;
&gt; +    selectors.reserveInitialCapacity(selectorCount);
&gt; +    unsigned position = sizeof(unsigned);
&gt; +    for (unsigned i = 0; i &lt; selectorCount; i++)
&gt; +        selectors.append(deserializeSelector(begin, length, position));
&gt; +    return selectors;

Could use more paragraphing (empty lines between obviously connected chunks of code) - This is dense to read through.

&gt; Source/WebCore/contentextensions/ContentExtensionCompiler.cpp:60
&gt; +    unsigned stringStartIndex = location + sizeof(unsigned) + sizeof(bool);
&gt; +    RELEASE_ASSERT(actionsLength &gt;= stringStartIndex);
&gt; +    unsigned selectorLength = *reinterpret_cast&lt;const unsigned*&gt;(&amp;actions[location]);
&gt; +    bool wideCharacters = actions[location + sizeof(ActionType) + sizeof(unsigned)];
&gt; +    if (wideCharacters) {
&gt; +        RELEASE_ASSERT(actionsLength &gt;= stringStartIndex + selectorLength * sizeof(UChar));
&gt; +        location += sizeof(unsigned) + sizeof(bool) + selectorLength * sizeof(UChar);
&gt; +        return String(reinterpret_cast&lt;const UChar*&gt;(&amp;actions[stringStartIndex]), selectorLength);
&gt; +    }
&gt; +    RELEASE_ASSERT(actionsLength &gt;= stringStartIndex + selectorLength * sizeof(LChar));
&gt; +    location += sizeof(unsigned) + sizeof(bool) + selectorLength * sizeof(LChar);
&gt; +    return String(reinterpret_cast&lt;const LChar*&gt;(&amp;actions[stringStartIndex]), selectorLength);

Ditto

&gt; Source/WebCore/contentextensions/ContentExtensionCompiler.cpp:79
&gt; +    unsigned selectorLength = selector.length();
&gt; +    actions.resize(actions.size() + sizeof(unsigned));
&gt; +    *reinterpret_cast&lt;unsigned*&gt;(&amp;actions[actions.size() - sizeof(unsigned)]) = selectorLength;
&gt; +    bool wideCharacters = !selector.is8Bit();
&gt; +    actions.append(wideCharacters);
&gt; +    if (wideCharacters) {
&gt; +        for (unsigned i = 0; i &lt; selectorLength; i++) {
&gt; +            actions.resize(actions.size() + sizeof(UChar));
&gt; +            *reinterpret_cast&lt;UChar*&gt;(&amp;actions[actions.size() - sizeof(UChar)]) = selector[i];
&gt; +        }
&gt; +    } else {
&gt; +        for (unsigned i = 0; i &lt; selectorLength; i++)
&gt; +            actions.append(selector[i]);
&gt; +    }
&gt; +}

Etc... etc...

&gt; LayoutTests/http/tests/contentextensions/css-display-none.html.json:34
&gt; +    {
&gt; +        &quot;action&quot;: {
&gt; +            &quot;type&quot;: &quot;css-display-none&quot;,
&gt; +            &quot;selector&quot;: &quot;.always_hidden&quot;
&gt; +        },
&gt;      }

This patch adds a new option to the json file, which is an action without a trigger.

But what if the json author writes the action with a trigger that always triggers?  i.e. - url-filter: &quot;.*&quot; ?

Shouldn&apos;t those go to the global selector collection as well?

And if they do, do we even need the triggerlesss actions at all?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078017</commentid>
    <comment_count>3</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-03-17 16:16:56 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; But what if the json author writes the action with a trigger that always
&gt; triggers?  i.e. - url-filter: &quot;.*&quot; ?
Ben, correct me if I&apos;m wrong, but those would be actions on the root of the DFA, right?
&gt; Shouldn&apos;t those go to the global selector collection as well?
Yes.
&gt; And if they do, do we even need the triggerlesss actions at all?
Probably not.  Just have .* mean triggerless and not change the parser.  That&apos;s probably a cleaner solution.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078020</commentid>
    <comment_count>4</comment_count>
      <attachid>248880</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-03-17 16:28:48 -0700</bug_when>
    <thetext>Comment on attachment 248880
Patch

Based on agreement that things should work a little differently from this, r-</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078025</commentid>
    <comment_count>5</comment_count>
      <attachid>248885</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-03-17 16:42:37 -0700</bug_when>
    <thetext>Created attachment 248885
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078042</commentid>
    <comment_count>6</comment_count>
      <attachid>248885</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-03-17 17:20:41 -0700</bug_when>
    <thetext>Comment on attachment 248885
Patch

A new byte code is not necessary for this.  We should just add a loop at the beginning of the interpreter.  There are many optimizations we could do related to detecting if a regex matches everything.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078045</commentid>
    <comment_count>7</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-03-17 17:21:46 -0700</bug_when>
    <thetext>And ignore-previous-rules could cause problems.  I think we should start by only allowing rules that match everything at the beginning, so that ignore-previous-rules would simply disable use of the whole compiled stylesheet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078053</commentid>
    <comment_count>8</comment_count>
      <attachid>248891</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-03-17 17:44:02 -0700</bug_when>
    <thetext>Created attachment 248891
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078200</commentid>
    <comment_count>9</comment_count>
      <attachid>248891</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-03-18 08:38:59 -0700</bug_when>
    <thetext>Comment on attachment 248891
Patch

I don&apos;t see how the DFA code change above can possibly cause the layout test changes in this patch...?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078259</commentid>
    <comment_count>10</comment_count>
      <attachid>248945</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-03-18 11:30:20 -0700</bug_when>
    <thetext>Created attachment 248945
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078331</commentid>
    <comment_count>11</comment_count>
      <attachid>248945</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-03-18 15:42:55 -0700</bug_when>
    <thetext>Comment on attachment 248945
Patch

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

&gt; Source/WebCore/contentextensions/ContentExtensionCompiler.cpp:127
&gt; +                WTFLogAlways(&quot;Trigger matching everything found not at beginning.  This may cause incorrect behavior with ignore-previous-rules&quot;);

Is it enough to simply log an error for bad outside data? In general we understand that outside data cannot be trusted and might be malformed, and therefore we should handle it correctly.

&gt; Source/WebCore/contentextensions/URLFilterParser.cpp:451
&gt; +        if (matchesEverything)
&gt; +            fail(ASCIILiteral(&quot;Matches everything.&quot;));

It&apos;s unclear why &quot;matches everything&quot; is an error.

Also, representing and error that you reference elsewhere (up above) by a non-shared ASCII literal string seems like a maintenance nightmare.

&gt; Tools/TestWebKitAPI/Tests/WebCore/ContentExtensions.cpp:350
&gt; +    testPatternError(&quot;a*b?.*.?[a-z]?[a-z]*&quot;, &quot;Matches everything.&quot;);

And is this relevant to the whole &quot;matches everything&quot; string up above?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078339</commentid>
    <comment_count>12</comment_count>
      <attachid>248945</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-03-18 15:57:27 -0700</bug_when>
    <thetext>Comment on attachment 248945
Patch

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

&gt;&gt; Source/WebCore/contentextensions/ContentExtensionCompiler.cpp:127
&gt;&gt; +                WTFLogAlways(&quot;Trigger matching everything found not at beginning.  This may cause incorrect behavior with ignore-previous-rules&quot;);
&gt; 
&gt; Is it enough to simply log an error for bad outside data? In general we understand that outside data cannot be trusted and might be malformed, and therefore we should handle it correctly.

I&apos;m not sure.  I think we should fail completely, but Ben thinks we should succeed, but inform developers about semi-bad data like this.

&gt;&gt; Source/WebCore/contentextensions/URLFilterParser.cpp:451
&gt;&gt; +            fail(ASCIILiteral(&quot;Matches everything.&quot;));
&gt; 
&gt; It&apos;s unclear why &quot;matches everything&quot; is an error.
&gt; 
&gt; Also, representing and error that you reference elsewhere (up above) by a non-shared ASCII literal string seems like a maintenance nightmare.

It&apos;s not an error.  If a regex matches everything we should not compile it in the NFA because we will put it directly in the root of the DFA later.  

I agree, failure cases should be an enum.  There are a lot of them, and that might be a switch for another patch, though.

&gt;&gt; Tools/TestWebKitAPI/Tests/WebCore/ContentExtensions.cpp:350
&gt;&gt; +    testPatternError(&quot;a*b?.*.?[a-z]?[a-z]*&quot;, &quot;Matches everything.&quot;);
&gt; 
&gt; And is this relevant to the whole &quot;matches everything&quot; string up above?

Yes.  This is the failure string.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078341</commentid>
    <comment_count>13</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-03-18 16:07:54 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; Comment on attachment 248945 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=248945&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/contentextensions/ContentExtensionCompiler.cpp:127
&gt; &gt;&gt; +                WTFLogAlways(&quot;Trigger matching everything found not at beginning.  This may cause incorrect behavior with ignore-previous-rules&quot;);
&gt; &gt; 
&gt; &gt; Is it enough to simply log an error for bad outside data? In general we understand that outside data cannot be trusted and might be malformed, and therefore we should handle it correctly.
&gt; 
&gt; I&apos;m not sure.  I think we should fail completely, but Ben thinks we should
&gt; succeed, but inform developers about semi-bad data like this.

I don&apos;t understand why this is not a case that we can make work correctly?

But I would rather see failure with a log message than see incorrect success with an error message.

&gt; 
&gt; &gt;&gt; Source/WebCore/contentextensions/URLFilterParser.cpp:451
&gt; &gt;&gt; +            fail(ASCIILiteral(&quot;Matches everything.&quot;));
&gt; &gt; 
&gt; &gt; It&apos;s unclear why &quot;matches everything&quot; is an error.
&gt; &gt; 
&gt; &gt; Also, representing and error that you reference elsewhere (up above) by a non-shared ASCII literal string seems like a maintenance nightmare.
&gt; 
&gt; It&apos;s not an error.  If a regex matches everything we should not compile it
&gt; in the NFA because we will put it directly in the root of the DFA later.  
&gt; 
&gt; I agree, failure cases should be an enum.  There are a lot of them, and that
&gt; might be a switch for another patch, though.

Can we not add new ones in the meantime? Especially since it is apparently just to support a test...?

&gt; 
&gt; &gt;&gt; Tools/TestWebKitAPI/Tests/WebCore/ContentExtensions.cpp:350
&gt; &gt;&gt; +    testPatternError(&quot;a*b?.*.?[a-z]?[a-z]*&quot;, &quot;Matches everything.&quot;);
&gt; &gt; 
&gt; &gt; And is this relevant to the whole &quot;matches everything&quot; string up above?
&gt; 
&gt; Yes.  This is the failure string.

Having a string in a test hard coded in the code itself just to support the test is highly irregular. Please don&apos;t do that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078343</commentid>
    <comment_count>14</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-03-18 16:16:59 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #12)
&gt; &gt; Comment on attachment 248945 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=248945&amp;action=review
&gt; &gt; 
&gt; &gt; &gt;&gt; Source/WebCore/contentextensions/ContentExtensionCompiler.cpp:127
&gt; &gt; &gt;&gt; +                WTFLogAlways(&quot;Trigger matching everything found not at beginning.  This may cause incorrect behavior with ignore-previous-rules&quot;);
&gt; &gt; &gt; 
&gt; &gt; &gt; Is it enough to simply log an error for bad outside data? In general we understand that outside data cannot be trusted and might be malformed, and therefore we should handle it correctly.
&gt; &gt; 
&gt; &gt; I&apos;m not sure.  I think we should fail completely, but Ben thinks we should
&gt; &gt; succeed, but inform developers about semi-bad data like this.
&gt; 
&gt; I don&apos;t understand why this is not a case that we can make work correctly?
If there is ignore-previous-rules between rules that match anything and we compiled a stylesheet of everything that matches everything, then we would not be able to use the compiled stylesheet or we would have incorrect behavior. 
&gt; But I would rather see failure with a log message than see incorrect success
&gt; with an error message.
I agree.  I think it should fail completely.
&gt; 
&gt; &gt; 
&gt; &gt; &gt;&gt; Source/WebCore/contentextensions/URLFilterParser.cpp:451
&gt; &gt; &gt;&gt; +            fail(ASCIILiteral(&quot;Matches everything.&quot;));
&gt; &gt; &gt; 
&gt; &gt; &gt; It&apos;s unclear why &quot;matches everything&quot; is an error.
&gt; &gt; &gt; 
&gt; &gt; &gt; Also, representing and error that you reference elsewhere (up above) by a non-shared ASCII literal string seems like a maintenance nightmare.
&gt; &gt; 
&gt; &gt; It&apos;s not an error.  If a regex matches everything we should not compile it
&gt; &gt; in the NFA because we will put it directly in the root of the DFA later.  
&gt; &gt; 
&gt; &gt; I agree, failure cases should be an enum.  There are a lot of them, and that
&gt; &gt; might be a switch for another patch, though.
&gt; 
&gt; Can we not add new ones in the meantime? Especially since it is apparently
&gt; just to support a test...?
It&apos;s not just to support a test.  Regular expressions that match everything are not compiled through the NFA because that would just add a lot of transitions, slow down compiling, and end up having all those actions in the root anyways.  We are shortcutting that process to speed up compiling.  I added the test to make sure we are taking the shortcut at the correct times.
&gt; 
&gt; &gt; 
&gt; &gt; &gt;&gt; Tools/TestWebKitAPI/Tests/WebCore/ContentExtensions.cpp:350
&gt; &gt; &gt;&gt; +    testPatternError(&quot;a*b?.*.?[a-z]?[a-z]*&quot;, &quot;Matches everything.&quot;);
&gt; &gt; &gt; 
&gt; &gt; &gt; And is this relevant to the whole &quot;matches everything&quot; string up above?
&gt; &gt; 
&gt; &gt; Yes.  This is the failure string.
&gt; 
&gt; Having a string in a test hard coded in the code itself just to support the
&gt; test is highly irregular. Please don&apos;t do that?
I&apos;ll replace fail(const String&amp;) with fail(enum FailureReason)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078350</commentid>
    <comment_count>15</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-03-18 16:29:47 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (In reply to comment #13)
&gt; &gt; (In reply to comment #12)
&gt; &gt; &gt; Comment on attachment 248945 [details]
&gt; &gt; &gt; Patch
&gt; &gt; &gt; 
&gt; &gt; &gt; View in context:
&gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=248945&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt;&gt; Source/WebCore/contentextensions/ContentExtensionCompiler.cpp:127
&gt; &gt; &gt; &gt;&gt; +                WTFLogAlways(&quot;Trigger matching everything found not at beginning.  This may cause incorrect behavior with ignore-previous-rules&quot;);
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Is it enough to simply log an error for bad outside data? In general we understand that outside data cannot be trusted and might be malformed, and therefore we should handle it correctly.
&gt; &gt; &gt; 
&gt; &gt; &gt; I&apos;m not sure.  I think we should fail completely, but Ben thinks we should
&gt; &gt; &gt; succeed, but inform developers about semi-bad data like this.
&gt; &gt; 
&gt; &gt; I don&apos;t understand why this is not a case that we can make work correctly?
&gt; If there is ignore-previous-rules between rules that match anything and we
&gt; compiled a stylesheet of everything that matches everything, then we would
&gt; not be able to use the compiled stylesheet or we would have incorrect
&gt; behavior. 

The ContentExtensionCompiler is NOT compiling a stylesheet. It&apos;s simply collecting a set of selectors that will be used in the match-all case.

So if the match-all case says &quot;do these 20 selectors, then ignore previous rules, then do these other 30 selectors&quot;... we could simply toss the first 20 and use only the following 30.

The stylesheet will be put together later in the backend.

Does this make sense?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078412</commentid>
    <comment_count>16</comment_count>
      <attachid>249006</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-03-18 18:30:47 -0700</bug_when>
    <thetext>Created attachment 249006
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078414</commentid>
    <comment_count>17</comment_count>
      <attachid>249006</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-03-18 18:48:55 -0700</bug_when>
    <thetext>Comment on attachment 249006
Patch

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

&gt; Source/WebCore/contentextensions/CompiledContentExtension.cpp:41
&gt; +    // FIXME: This needs to be cleaned up, optimized, and moved to DFABytecodeInterpreter.

Why a FIXME, and not doing it now?  Especially since a class friend&apos;ing is required as-is

&gt; Source/WebCore/contentextensions/CompiledContentExtension.cpp:58
&gt; +        // FIXME: Make sure only css selectors can get here.

Why a FIXME, and not doing it in this patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078415</commentid>
    <comment_count>18</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-03-18 18:49:26 -0700</bug_when>
    <thetext>Also, does this patch actually affect the CSS display none test that is changed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078425</commentid>
    <comment_count>19</comment_count>
      <attachid>249008</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-03-18 19:26:16 -0700</bug_when>
    <thetext>Created attachment 249008
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078426</commentid>
    <comment_count>20</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-03-18 19:29:45 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; Comment on attachment 249006 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=249006&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/contentextensions/CompiledContentExtension.cpp:41
&gt; &gt; +    // FIXME: This needs to be cleaned up, optimized, and moved to DFABytecodeInterpreter.
Done.
&gt; 
&gt; Why a FIXME, and not doing it now?  Especially since a class friend&apos;ing is
&gt; required as-is
&gt; 
&gt; &gt; Source/WebCore/contentextensions/CompiledContentExtension.cpp:58
&gt; &gt; +        // FIXME: Make sure only css selectors can get here.
&gt; 
&gt; Why a FIXME, and not doing it in this patch?
Nothing terrible would happen if a non-css action matched everything.  We could add a test for that later if we want to do something special.
(In reply to comment #17)
&gt; Also, does this patch actually affect the CSS display none test that is changed?
I removed the changes to LayoutTests.  They were not really related to this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078453</commentid>
    <comment_count>21</comment_count>
      <attachid>249008</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-18 21:57:57 -0700</bug_when>
    <thetext>Comment on attachment 249008
Patch

Clearing flags on attachment: 249008

Committed r181726: &lt;http://trac.webkit.org/changeset/181726&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078454</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-18 21:58:03 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078541</commentid>
    <comment_count>23</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-03-19 08:58:01 -0700</bug_when>
    <thetext>*** Bug 142298 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248880</attachid>
            <date>2015-03-17 15:54:31 -0700</date>
            <delta_ts>2015-03-17 16:42:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142799-20150317155401.patch</filename>
            <type>text/plain</type>
            <size>16017</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MTY2NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDE1LTAzLTE3ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW0NvbnRlbnRF
eHRlbnNpb25zXSBBbGxvdyBzZWxlY3RvcnMgd2l0aCBubyBhY3Rpb25zIHRvIGFwcGx5IHRvIGV2
ZXJ5IHBhZ2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNDI3OTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIGNvbnRlbnRleHRlbnNpb25zL0NvbXBpbGVkQ29udGVudEV4dGVuc2lvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Q29tcGlsZWRDb250ZW50RXh0ZW5zaW9u
OjpnbG9iYWxEaXNwbGF5Tm9uZVNlbGVjdG9ycyk6CisgICAgICAgICogY29udGVudGV4dGVuc2lv
bnMvQ29tcGlsZWRDb250ZW50RXh0ZW5zaW9uLmg6CisgICAgICAgIEFkZGVkIGhlbHBlciB0byBk
ZXNlcmlhbGl6ZSBnbG9iYWwgc2VsZWN0b3JzLgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25z
L0NvbnRlbnRFeHRlbnNpb25Db21waWxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50
RXh0ZW5zaW9uczo6ZGVzZXJpYWxpemVTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50RXh0ZW5zaW9uczo6c2VyaWFsaXplU2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGVudEV4dGVuc2lvbnM6OnNlcmlhbGl6ZUFjdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGVudEV4dGVuc2lvbnM6OmNvbXBpbGVSdWxlTGlzdCk6CisgICAgICAgICogY29udGVudGV4dGVu
c2lvbnMvQ29udGVudEV4dGVuc2lvbkNvbXBpbGVyLmg6CisgICAgICAgIFJlZmFjdG9yZWQgc2Vs
ZWN0b3Igc2VyaWFsaXppbmcgYW5kIGRlc2VyaWFsaXppbmcgY29kZSB0byBiZSB1c2VkIGJ5IGds
b2JhbERpc3BsYXlOb25lU2VsZWN0b3JzLgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0Nv
bnRlbnRFeHRlbnNpb25QYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVu
c2lvbnM6OmxvYWRUcmlnZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25z
Ojpsb2FkUnVsZSk6CisgICAgICAgIEFsbG93IGNzcy1kaXNwbGF5LW5vbmUgcnVsZXMgd2l0aCBu
byBleHBsaWNpdCB0cmlnZ2Vycy4KKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50
RXh0ZW5zaW9uUnVsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6
QWN0aW9uOjpkZXNlcmlhbGl6ZSk6CisgICAgICAgIE1vdmVkIGRlc2VyaWFsaXppbmcgY29kZSB0
byBDb250ZW50RXh0ZW5zaW9uQ29tcGlsZXIuCisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMv
Q29udGVudEV4dGVuc2lvblJ1bGUuaDoKKwogMjAxNS0wMy0xNyAgWmFsYW4gQnVqdGFzICA8emFs
YW5AYXBwbGUuY29tPgogCiAgICAgICAgIFNpbXBsZSBsaW5lIGxheW91dDogU3BsaXQgZnJhZ21l
bnRzIG9uIHJlbmRlcmVyIGJvdW5kYXJ5IG9uIHRoZSBmbHkuCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9jb250ZW50ZXh0ZW5zaW9ucy9Db21waWxlZENvbnRlbnRFeHRlbnNpb24uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbXBpbGVkQ29udGVudEV4
dGVuc2lvbi5jcHAJKHJldmlzaW9uIDE4MTY2NCkKKysrIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRl
eHRlbnNpb25zL0NvbXBpbGVkQ29udGVudEV4dGVuc2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI1LDYgKzI1LDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNvbXBpbGVk
Q29udGVudEV4dGVuc2lvbi5oIgorI2luY2x1ZGUgIkNvbnRlbnRFeHRlbnNpb25Db21waWxlci5o
IgogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKIApAQCAtMzUsNiArMzYsMjAgQEAg
Q29tcGlsZWRDb250ZW50RXh0ZW5zaW9uOjp+Q29tcGlsZWRDb250ZQogewogfQogCitWZWN0b3I8
U3RyaW5nPiBDb21waWxlZENvbnRlbnRFeHRlbnNpb246Omdsb2JhbERpc3BsYXlOb25lU2VsZWN0
b3JzKCkgY29uc3QKK3sKKyAgICBjb25zdCBTZXJpYWxpemVkQWN0aW9uQnl0ZSogYmVnaW4gPSBh
Y3Rpb25zKCk7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gYWN0aW9uc0xlbmd0aCgpOworICAgIFJF
TEVBU0VfQVNTRVJUKGxlbmd0aCA+PSBzaXplb2YodW5zaWduZWQpKTsKKyAgICB1bnNpZ25lZCBz
ZWxlY3RvckNvdW50ID0gKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQqPihiZWdpbik7
CisgICAgVmVjdG9yPFN0cmluZz4gc2VsZWN0b3JzOworICAgIHNlbGVjdG9ycy5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KHNlbGVjdG9yQ291bnQpOworICAgIHVuc2lnbmVkIHBvc2l0aW9uID0gc2l6
ZW9mKHVuc2lnbmVkKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2VsZWN0b3JDb3Vu
dDsgaSsrKQorICAgICAgICBzZWxlY3RvcnMuYXBwZW5kKGRlc2VyaWFsaXplU2VsZWN0b3IoYmVn
aW4sIGxlbmd0aCwgcG9zaXRpb24pKTsKKyAgICByZXR1cm4gc2VsZWN0b3JzOworfQorCiB9IC8v
IG5hbWVzcGFjZSBDb250ZW50RXh0ZW5zaW9ucwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db21waWxlZENvbnRlbnRFeHRl
bnNpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9D
b21waWxlZENvbnRlbnRFeHRlbnNpb24uaAkocmV2aXNpb24gMTgxNjY0KQorKysgU291cmNlL1dl
YkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29tcGlsZWRDb250ZW50RXh0ZW5zaW9uLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQ0LDYgKzQ0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdW5zaWduZWQg
Ynl0ZWNvZGVMZW5ndGgoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBjb25zdCBTZXJpYWxpemVk
QWN0aW9uQnl0ZSogYWN0aW9ucygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGFj
dGlvbnNMZW5ndGgoKSBjb25zdCA9IDA7CisgICAgVmVjdG9yPFN0cmluZz4gZ2xvYmFsRGlzcGxh
eU5vbmVTZWxlY3RvcnMoKSBjb25zdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIENvbnRlbnRFeHRl
bnNpb25zCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0
ZW5zaW9uQ29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRl
eHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25Db21waWxlci5jcHAJKHJldmlzaW9uIDE4MTY2NCkK
KysrIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25Db21w
aWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDE0ICs0NCw2MSBAQAogbmFtZXNwYWNlIFdl
YkNvcmUgewogbmFtZXNwYWNlIENvbnRlbnRFeHRlbnNpb25zIHsKIAorU3RyaW5nIGRlc2VyaWFs
aXplU2VsZWN0b3IoY29uc3QgU2VyaWFsaXplZEFjdGlvbkJ5dGUqIGFjdGlvbnMsIGNvbnN0IHVu
c2lnbmVkIGFjdGlvbnNMZW5ndGgsIHVuc2lnbmVkJiBsb2NhdGlvbikKK3sKKyAgICB1bnNpZ25l
ZCBzdHJpbmdTdGFydEluZGV4ID0gbG9jYXRpb24gKyBzaXplb2YodW5zaWduZWQpICsgc2l6ZW9m
KGJvb2wpOworICAgIFJFTEVBU0VfQVNTRVJUKGFjdGlvbnNMZW5ndGggPj0gc3RyaW5nU3RhcnRJ
bmRleCk7CisgICAgdW5zaWduZWQgc2VsZWN0b3JMZW5ndGggPSAqcmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1bnNpZ25lZCo+KCZhY3Rpb25zW2xvY2F0aW9uXSk7CisgICAgYm9vbCB3aWRlQ2hhcmFj
dGVycyA9IGFjdGlvbnNbbG9jYXRpb24gKyBzaXplb2YoQWN0aW9uVHlwZSkgKyBzaXplb2YodW5z
aWduZWQpXTsKKyAgICBpZiAod2lkZUNoYXJhY3RlcnMpIHsKKyAgICAgICAgUkVMRUFTRV9BU1NF
UlQoYWN0aW9uc0xlbmd0aCA+PSBzdHJpbmdTdGFydEluZGV4ICsgc2VsZWN0b3JMZW5ndGggKiBz
aXplb2YoVUNoYXIpKTsKKyAgICAgICAgbG9jYXRpb24gKz0gc2l6ZW9mKHVuc2lnbmVkKSArIHNp
emVvZihib29sKSArIHNlbGVjdG9yTGVuZ3RoICogc2l6ZW9mKFVDaGFyKTsKKyAgICAgICAgcmV0
dXJuIFN0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFyKj4oJmFjdGlvbnNbc3RyaW5n
U3RhcnRJbmRleF0pLCBzZWxlY3Rvckxlbmd0aCk7CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJU
KGFjdGlvbnNMZW5ndGggPj0gc3RyaW5nU3RhcnRJbmRleCArIHNlbGVjdG9yTGVuZ3RoICogc2l6
ZW9mKExDaGFyKSk7CisgICAgbG9jYXRpb24gKz0gc2l6ZW9mKHVuc2lnbmVkKSArIHNpemVvZihi
b29sKSArIHNlbGVjdG9yTGVuZ3RoICogc2l6ZW9mKExDaGFyKTsKKyAgICByZXR1cm4gU3RyaW5n
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigmYWN0aW9uc1tzdHJpbmdTdGFydEluZGV4
XSksIHNlbGVjdG9yTGVuZ3RoKTsKK30KKworc3RhdGljIHZvaWQgc2VyaWFsaXplU2VsZWN0b3Io
VmVjdG9yPFNlcmlhbGl6ZWRBY3Rpb25CeXRlPiYgYWN0aW9ucywgY29uc3QgU3RyaW5nJiBzZWxl
Y3RvcikKK3sKKyAgICB1bnNpZ25lZCBzZWxlY3Rvckxlbmd0aCA9IHNlbGVjdG9yLmxlbmd0aCgp
OworICAgIGFjdGlvbnMucmVzaXplKGFjdGlvbnMuc2l6ZSgpICsgc2l6ZW9mKHVuc2lnbmVkKSk7
CisgICAgKnJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQqPigmYWN0aW9uc1thY3Rpb25zLnNpemUo
KSAtIHNpemVvZih1bnNpZ25lZCldKSA9IHNlbGVjdG9yTGVuZ3RoOworICAgIGJvb2wgd2lkZUNo
YXJhY3RlcnMgPSAhc2VsZWN0b3IuaXM4Qml0KCk7CisgICAgYWN0aW9ucy5hcHBlbmQod2lkZUNo
YXJhY3RlcnMpOworICAgIGlmICh3aWRlQ2hhcmFjdGVycykgeworICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgc2VsZWN0b3JMZW5ndGg7IGkrKykgeworICAgICAgICAgICAgYWN0aW9u
cy5yZXNpemUoYWN0aW9ucy5zaXplKCkgKyBzaXplb2YoVUNoYXIpKTsKKyAgICAgICAgICAgICpy
ZWludGVycHJldF9jYXN0PFVDaGFyKj4oJmFjdGlvbnNbYWN0aW9ucy5zaXplKCkgLSBzaXplb2Yo
VUNoYXIpXSkgPSBzZWxlY3RvcltpXTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzZWxlY3Rvckxlbmd0aDsgaSsrKQorICAgICAgICAg
ICAgYWN0aW9ucy5hcHBlbmQoc2VsZWN0b3JbaV0pOworICAgIH0KK30KKwogc3RhdGljIFZlY3Rv
cjx1bnNpZ25lZD4gc2VyaWFsaXplQWN0aW9ucyhjb25zdCBWZWN0b3I8Q29udGVudEV4dGVuc2lv
blJ1bGU+JiBydWxlTGlzdCwgVmVjdG9yPFNlcmlhbGl6ZWRBY3Rpb25CeXRlPiYgYWN0aW9ucykK
IHsKICAgICBBU1NFUlQoIWFjdGlvbnMuc2l6ZSgpKTsKICAgICAKKyAgICAvLyBTZXJpYWxpemUg
dGhlIGFjdGlvbnMgdGhhdCBtYXRjaCBldmVyeXRoaW5nIGF0IHRoZSBiZWdpbm5pbmcuCisgICAg
YWN0aW9ucy5yZXNpemUoc2l6ZW9mKHVuc2lnbmVkKSk7CisgICAgdW5zaWduZWQgZ2xvYmFsU2Vs
ZWN0b3JzID0gMDsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHJ1bGUgOiBydWxlTGlzdCkgeworICAg
ICAgICBpZiAocnVsZS50cmlnZ2VyKCkuZ2xvYmFsU2VsZWN0b3IpIHsKKyAgICAgICAgICAgIEFT
U0VSVChydWxlLmFjdGlvbigpLnR5cGUoKSA9PSBBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZSk7
CisgICAgICAgICAgICBzZXJpYWxpemVTZWxlY3RvcihhY3Rpb25zLCBydWxlLmFjdGlvbigpLmNz
c1NlbGVjdG9yKCkpOworICAgICAgICAgICAgZ2xvYmFsU2VsZWN0b3JzKys7CisgICAgICAgIH0K
KyAgICB9CisgICAgKnJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQqPigmYWN0aW9uc1swXSkgPSBn
bG9iYWxTZWxlY3RvcnM7CisKICAgICBWZWN0b3I8dW5zaWduZWQ+IGFjdGlvbkxvY2F0aW9uczsK
LSAgICAgICAgCiAgICAgZm9yICh1bnNpZ25lZCBydWxlSW5kZXggPSAwOyBydWxlSW5kZXggPCBy
dWxlTGlzdC5zaXplKCk7ICsrcnVsZUluZGV4KSB7CiAgICAgICAgIGNvbnN0IENvbnRlbnRFeHRl
bnNpb25SdWxlJiBydWxlID0gcnVsZUxpc3RbcnVsZUluZGV4XTsKKyAgICAgICAgaWYgKHJ1bGUu
dHJpZ2dlcigpLmdsb2JhbFNlbGVjdG9yKQorICAgICAgICAgICAgY29udGludWU7IC8vIFRoZXNl
IGFjdGlvbnMgYXJlIHNlcmlhbGl6ZWQgYXQgdGhlIGJlZ2lubmluZy4KICAgICAgICAgCiAgICAg
ICAgIC8vIElkZW50aWNhbCBzZXF1ZW50aWFsIGFjdGlvbnMgc2hvdWxkIG5vdCBiZSByZXdyaXR0
ZW4uCiAgICAgICAgIGlmIChydWxlSW5kZXggJiYgcnVsZS5hY3Rpb24oKSA9PSBydWxlTGlzdFty
dWxlSW5kZXggLSAxXS5hY3Rpb24oKSkgewpAQCAtNzQsMjIgKzEyMSw3IEBAIHN0YXRpYyBWZWN0
b3I8dW5zaWduZWQ+IHNlcmlhbGl6ZUFjdGlvbnMKICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYg
c2VsZWN0b3IgPSBydWxlLmFjdGlvbigpLmNzc1NlbGVjdG9yKCk7CiAgICAgICAgICAgICAvLyBB
cHBlbmQgYWN0aW9uIHR5cGUgKDEgYnl0ZSkuCiAgICAgICAgICAgICBhY3Rpb25zLmFwcGVuZChz
dGF0aWNfY2FzdDxTZXJpYWxpemVkQWN0aW9uQnl0ZT4oQWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5v
bmUpKTsKLSAgICAgICAgICAgIC8vIEFwcGVuZCBTZWxlY3RvciBsZW5ndGggKDQgYnl0ZXMpLgot
ICAgICAgICAgICAgdW5zaWduZWQgc2VsZWN0b3JMZW5ndGggPSBzZWxlY3Rvci5sZW5ndGgoKTsK
LSAgICAgICAgICAgIGFjdGlvbnMucmVzaXplKGFjdGlvbnMuc2l6ZSgpICsgc2l6ZW9mKHVuc2ln
bmVkKSk7Ci0gICAgICAgICAgICAqcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCo+KCZhY3Rpb25z
W2FjdGlvbnMuc2l6ZSgpIC0gc2l6ZW9mKHVuc2lnbmVkKV0pID0gc2VsZWN0b3JMZW5ndGg7Ci0g
ICAgICAgICAgICBib29sIHdpZGVDaGFyYWN0ZXJzID0gIXNlbGVjdG9yLmlzOEJpdCgpOwotICAg
ICAgICAgICAgYWN0aW9ucy5hcHBlbmQod2lkZUNoYXJhY3RlcnMpOwotICAgICAgICAgICAgLy8g
QXBwZW5kIFNlbGVjdG9yLgotICAgICAgICAgICAgaWYgKHdpZGVDaGFyYWN0ZXJzKSB7Ci0gICAg
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNlbGVjdG9yTGVuZ3RoOyBpKysp
IHsKLSAgICAgICAgICAgICAgICAgICAgYWN0aW9ucy5yZXNpemUoYWN0aW9ucy5zaXplKCkgKyBz
aXplb2YoVUNoYXIpKTsKLSAgICAgICAgICAgICAgICAgICAgKnJlaW50ZXJwcmV0X2Nhc3Q8VUNo
YXIqPigmYWN0aW9uc1thY3Rpb25zLnNpemUoKSAtIHNpemVvZihVQ2hhcildKSA9IHNlbGVjdG9y
W2ldOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNlbGVjdG9yTGVuZ3RoOyBpKyspCi0gICAg
ICAgICAgICAgICAgICAgIGFjdGlvbnMuYXBwZW5kKHNlbGVjdG9yW2ldKTsKLSAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIHNlcmlhbGl6ZVNlbGVjdG9yKGFjdGlvbnMsIHNlbGVjdG9yKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIH0KQEAgLTExNCw2ICsxNDYsOCBA
QCBDb21waWxlZENvbnRlbnRFeHRlbnNpb25EYXRhIGNvbXBpbGVSdWxlCiAgICAgZm9yICh1bnNp
Z25lZCBydWxlSW5kZXggPSAwOyBydWxlSW5kZXggPCBwYXJzZWRSdWxlTGlzdC5zaXplKCk7ICsr
cnVsZUluZGV4KSB7CiAgICAgICAgIGNvbnN0IENvbnRlbnRFeHRlbnNpb25SdWxlJiBjb250ZW50
RXh0ZW5zaW9uUnVsZSA9IHBhcnNlZFJ1bGVMaXN0W3J1bGVJbmRleF07CiAgICAgICAgIGNvbnN0
IFRyaWdnZXImIHRyaWdnZXIgPSBjb250ZW50RXh0ZW5zaW9uUnVsZS50cmlnZ2VyKCk7CisgICAg
ICAgIGlmICh0cmlnZ2VyLmdsb2JhbFNlbGVjdG9yKQorICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgIEFTU0VSVCh0cmlnZ2VyLnVybEZpbHRlci5sZW5ndGgoKSk7CiAKICAgICAgICAgLy8g
SGlnaCBiaXRzIGFyZSB1c2VkIGZvciBmbGFncy4gVGhpcyBzaG91bGQgbWF0Y2ggaG93IHRoZXkg
YXJlIHVzZWQgaW4gREZBQnl0ZWNvZGVDb21waWxlcjo6Y29tcGlsZU5vZGUuCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uQ29tcGlsZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0
ZW5zaW9uQ29tcGlsZXIuaAkocmV2aXNpb24gMTgxNjY0KQorKysgU291cmNlL1dlYkNvcmUvY29u
dGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkNvbXBpbGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQwLDYgKzQwLDggQEAgc3RydWN0IENvbXBpbGVkQ29udGVudEV4dGVuc2lvbkRhdGEgewog
ICAgIFZlY3RvcjxTZXJpYWxpemVkQWN0aW9uQnl0ZT4gYWN0aW9uczsKIH07CiAKK1N0cmluZyBk
ZXNlcmlhbGl6ZVNlbGVjdG9yKGNvbnN0IFNlcmlhbGl6ZWRBY3Rpb25CeXRlKiBhY3Rpb25zLCBj
b25zdCB1bnNpZ25lZCBhY3Rpb25zTGVuZ3RoLCB1bnNpZ25lZCYgbG9jYXRpb24pOworICAgIAog
V0VCQ09SRV9FWFBPUlQgQ29tcGlsZWRDb250ZW50RXh0ZW5zaW9uRGF0YSBjb21waWxlUnVsZUxp
c3QoY29uc3QgU3RyaW5nJik7CiAKIH0gLy8gbmFtZXNwYWNlIENvbnRlbnRFeHRlbnNpb25zCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUGFy
c2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9D
b250ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcAkocmV2aXNpb24gMTgxNjY0KQorKysgU291cmNlL1dl
YkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblBhcnNlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTgyLDggKzgyLDggQEAgc3RhdGljIGJvb2wgbG9hZFRyaWdnZXIoRXhlY1N0
YXRlJiBleGVjLAogewogICAgIEpTVmFsdWUgdHJpZ2dlck9iamVjdCA9IHJ1bGVPYmplY3QuZ2V0
KCZleGVjLCBJZGVudGlmaWVyKCZleGVjLCAidHJpZ2dlciIpKTsKICAgICBpZiAoIXRyaWdnZXJP
YmplY3QgfHwgZXhlYy5oYWRFeGNlcHRpb24oKSB8fCAhdHJpZ2dlck9iamVjdC5pc09iamVjdCgp
KSB7Ci0gICAgICAgIFdURkxvZ0Fsd2F5cygiSW52YWxpZCB0cmlnZ2VyIG9iamVjdC4iKTsKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB0cmlnZ2VyLmdsb2JhbFNlbGVjdG9yID0gdHJ1
ZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAgSlNWYWx1ZSB1cmxGaWx0ZXJP
YmplY3QgPSB0cmlnZ2VyT2JqZWN0LmdldCgmZXhlYywgSWRlbnRpZmllcigmZXhlYywgInVybC1m
aWx0ZXIiKSk7CkBAIC0xNjAsNiArMTYwLDExIEBAIHN0YXRpYyB2b2lkIGxvYWRSdWxlKEV4ZWNT
dGF0ZSYgZXhlYywgSlMKICAgICBBY3Rpb24gYWN0aW9uOwogICAgIGlmICghbG9hZEFjdGlvbihl
eGVjLCBydWxlT2JqZWN0LCBhY3Rpb24pKQogICAgICAgICByZXR1cm47CisgICAgCisgICAgaWYg
KHRyaWdnZXIuZ2xvYmFsU2VsZWN0b3IgJiYgYWN0aW9uLnR5cGUoKSAhPSBBY3Rpb25UeXBlOjpD
U1NEaXNwbGF5Tm9uZSkgeworICAgICAgICBXVEZMb2dBbHdheXMoIkFjdGlvbnMgd2l0aG91dCB0
cmlnZ2VycyBtdXN0IGJlIGNzcy1kaXNwbGF5LW5vbmUiKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KIAogICAgIHJ1bGVMaXN0LmFwcGVuZChDb250ZW50RXh0ZW5zaW9uUnVsZSh0cmlnZ2VyLCBh
Y3Rpb24pKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRl
bnRFeHRlbnNpb25SdWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jb250ZW50
ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUnVsZS5jcHAJKHJldmlzaW9uIDE4MTY2NCkKKysr
IFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25SdWxlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiQ29udGVudEV4dGVuc2lvblJ1bGUuaCIKKyNpbmNsdWRlICJDb250ZW50RXh0
ZW5zaW9uQ29tcGlsZXIuaCIKIAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCiAKQEAg
LTUwLDE5ICs1MSw5IEBAIEFjdGlvbiBBY3Rpb246OmRlc2VyaWFsaXplKGNvbnN0IFNlcmlhbGkK
ICAgICAgICAgcmV0dXJuIEFjdGlvblR5cGU6Oklnbm9yZVByZXZpb3VzUnVsZXM7CiAgICAgY2Fz
ZSBBY3Rpb25UeXBlOjpJbnZhbGlkQWN0aW9uOgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgIGNhc2UgQWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmU6IHsKLSAgICAg
ICAgdW5zaWduZWQgc3RyaW5nU3RhcnRJbmRleCA9IGxvY2F0aW9uICsgc2l6ZW9mKEFjdGlvblR5
cGUpICsgc2l6ZW9mKHVuc2lnbmVkKSArIHNpemVvZihib29sKTsKLSAgICAgICAgUkVMRUFTRV9B
U1NFUlQoYWN0aW9uc0xlbmd0aCA+PSBzdHJpbmdTdGFydEluZGV4KTsKLSAgICAgICAgdW5zaWdu
ZWQgc2VsZWN0b3JMZW5ndGggPSAqcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCo+KCZh
Y3Rpb25zW2xvY2F0aW9uICsgc2l6ZW9mKEFjdGlvblR5cGUpXSk7Ci0gICAgICAgIGJvb2wgd2lk
ZUNoYXJhY3RlcnMgPSBhY3Rpb25zW2xvY2F0aW9uICsgc2l6ZW9mKEFjdGlvblR5cGUpICsgc2l6
ZW9mKHVuc2lnbmVkKV07Ci0gICAgICAgIAotICAgICAgICBpZiAod2lkZUNoYXJhY3RlcnMpIHsK
LSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGFjdGlvbnNMZW5ndGggPj0gc3RyaW5nU3RhcnRJ
bmRleCArIHNlbGVjdG9yTGVuZ3RoICogc2l6ZW9mKFVDaGFyKSk7Ci0gICAgICAgICAgICByZXR1
cm4gQWN0aW9uKEFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lLCBTdHJpbmcocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBVQ2hhcio+KCZhY3Rpb25zW3N0cmluZ1N0YXJ0SW5kZXhdKSwgc2VsZWN0b3JM
ZW5ndGgpKTsKLSAgICAgICAgfQotICAgICAgICBSRUxFQVNFX0FTU0VSVChhY3Rpb25zTGVuZ3Ro
ID49IHN0cmluZ1N0YXJ0SW5kZXggKyBzZWxlY3Rvckxlbmd0aCAqIHNpemVvZihMQ2hhcikpOwot
ICAgICAgICByZXR1cm4gQWN0aW9uKEFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lLCBTdHJpbmco
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCZhY3Rpb25zW3N0cmluZ1N0YXJ0SW5kZXhd
KSwgc2VsZWN0b3JMZW5ndGgpKTsKLSAgICB9CisgICAgY2FzZSBBY3Rpb25UeXBlOjpDU1NEaXNw
bGF5Tm9uZToKKyAgICAgICAgbG9jYXRpb24gKz0gc2l6ZW9mKEFjdGlvblR5cGUpOworICAgICAg
ICByZXR1cm4gQWN0aW9uKEFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lLCBkZXNlcmlhbGl6ZVNl
bGVjdG9yKGFjdGlvbnMsIGFjdGlvbnNMZW5ndGgsIGxvY2F0aW9uKSk7CiAgICAgfQogfQogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUnVs
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRl
bnRFeHRlbnNpb25SdWxlLmgJKHJldmlzaW9uIDE4MTY2NCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nv
bnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25SdWxlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ0LDYgKzQ0LDcgQEAgbmFtZXNwYWNlIENvbnRlbnRFeHRlbnNpb25zIHsKIHN0cnVjdCBUcmln
Z2VyIHsKICAgICBTdHJpbmcgdXJsRmlsdGVyOwogICAgIGJvb2wgdXJsRmlsdGVySXNDYXNlU2Vu
c2l0aXZlIHsgZmFsc2UgfTsKKyAgICBib29sIGdsb2JhbFNlbGVjdG9yIHsgZmFsc2UgfTsKICAg
ICBSZXNvdXJjZUZsYWdzIGZsYWdzIHsgMCB9OwogfTsKICAgICAKSW5kZXg6IExheW91dFRlc3Rz
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9u
IDE4MTY2NykKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE1IEBACisyMDE1LTAzLTE3ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgW0NvbnRlbnRFeHRlbnNpb25zXSBBbGxvdyBzZWxlY3RvcnMg
d2l0aCBubyBhY3Rpb25zIHRvIGFwcGx5IHRvIGV2ZXJ5IHBhZ2UuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI3OTkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvY29udGVudGV4dGVu
c2lvbnMvY3NzLWRpc3BsYXktbm9uZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0
cy9jb250ZW50ZXh0ZW5zaW9ucy9jc3MtZGlzcGxheS1ub25lLmh0bWw6CisgICAgICAgICogaHR0
cC90ZXN0cy9jb250ZW50ZXh0ZW5zaW9ucy9jc3MtZGlzcGxheS1ub25lLmh0bWwuanNvbjoKKyAg
ICAgICAgQWRkZWQgc2VsZWN0b3JzIHdpdGggbm8gdHJpZ2dlci4KKwogMjAxNS0wMy0xNyAgWmFs
YW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFNpbXBsZSBsaW5lIGxheW91
dDogU3BsaXQgZnJhZ21lbnRzIG9uIHJlbmRlcmVyIGJvdW5kYXJ5IG9uIHRoZSBmbHkuCkluZGV4
OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NvbnRlbnRleHRlbnNpb25zL2Nzcy1kaXNwbGF5LW5v
bmUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvY29u
dGVudGV4dGVuc2lvbnMvY3NzLWRpc3BsYXktbm9uZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE4
MTY2NCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvY29udGVudGV4dGVuc2lvbnMvY3NzLWRp
c3BsYXktbm9uZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEwLDUgKzEwLDExIEBA
IGxheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAogICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0g
YXQgKDAsMCkgc2l6ZSA1MjJ4MTgKICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA1
MjI6ICJUaGlzIHRleHQgc2hvdWxkIGFsc28gbm90IGJlIHZpc2libGUgb25jZSB0aGUgY3NzIHNl
bGVjdG9yIGlzIGFwcGxpZWQgKG5vdCBkb25lIHlldCkuIgogICAgICAgUmVuZGVyQmxvY2sge1B9
IGF0ICgwLDY4KSBzaXplIDc4NHgxOAorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAs
MCkgc2l6ZSA1MjJ4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA1MjI6ICJU
aGlzIHRleHQgc2hvdWxkIGFsc28gbm90IGJlIHZpc2libGUgb25jZSB0aGUgY3NzIHNlbGVjdG9y
IGlzIGFwcGxpZWQgKG5vdCBkb25lIHlldCkuIgorICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgw
LDEwMikgc2l6ZSA3ODR4MTgKICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNp
emUgMTczeDE4CiAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMTczOiAiVGhpcyB0
ZXh0IHNob3VsZCBiZSB2aXNpYmxlLiIKKyAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwxMzYp
IHNpemUgNzg0eDE4CisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDIw
M3gxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDIwMzogIlRoaXMgdGV4dCBz
aG91bGQgYWxzbyBiZSB2aXNpYmxlLiIKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvY29u
dGVudGV4dGVuc2lvbnMvY3NzLWRpc3BsYXktbm9uZS5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvY29udGVudGV4dGVuc2lvbnMvY3NzLWRpc3BsYXktbm9uZS5odG1s
CShyZXZpc2lvbiAxODE2NjQpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NvbnRlbnRleHRl
bnNpb25zL2Nzcy1kaXNwbGF5LW5vbmUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDcg
QEAKIDxib2R5PgogPHAgY2xhc3M9ImhpZGRlbiI+VGhpcyB0ZXh0IHNob3VsZCBub3QgYmUgdmlz
aWJsZSBvbmNlIHRoZSBjc3Mgc2VsZWN0b3IgaXMgYXBwbGllZCAobm90IGRvbmUgeWV0KS48L3A+
CiA8cCBjbGFzcz0iaGlkZGVuX8W9Ij5UaGlzIHRleHQgc2hvdWxkIGFsc28gbm90IGJlIHZpc2li
bGUgb25jZSB0aGUgY3NzIHNlbGVjdG9yIGlzIGFwcGxpZWQgKG5vdCBkb25lIHlldCkuPC9wPgor
PHAgY2xhc3M9ImFsd2F5c19oaWRkZW4iPlRoaXMgdGV4dCBzaG91bGQgYWxzbyBub3QgYmUgdmlz
aWJsZSBvbmNlIHRoZSBjc3Mgc2VsZWN0b3IgaXMgYXBwbGllZCAobm90IGRvbmUgeWV0KS48L3A+
CiA8cCBjbGFzcz0ibm90X2hpZGRlbiI+VGhpcyB0ZXh0IHNob3VsZCBiZSB2aXNpYmxlLjwvcD4K
KzxwIGNsYXNzPSJub3RfcmVsYXRlZCI+VGhpcyB0ZXh0IHNob3VsZCBhbHNvIGJlIHZpc2libGUu
PC9wPgogPC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb250ZW50ZXh0ZW5z
aW9ucy9jc3MtZGlzcGxheS1ub25lLmh0bWwuanNvbgo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2NvbnRlbnRleHRlbnNpb25zL2Nzcy1kaXNwbGF5LW5vbmUuaHRtbC5qc29u
CShyZXZpc2lvbiAxODE2NjQpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NvbnRlbnRleHRl
bnNpb25zL2Nzcy1kaXNwbGF5LW5vbmUuaHRtbC5qc29uCSh3b3JraW5nIGNvcHkpCkBAIC0xNiw1
ICsxNiwyMCBAQAogICAgICAgICAidHJpZ2dlciI6IHsKICAgICAgICAgICAgICJ1cmwtZmlsdGVy
IjogIi4qY3NzLWRpc3BsYXktbm9uZS5odG1sIgogICAgICAgICB9CisgICAgfSwKKyAgICB7Cisg
ICAgICAgICJhY3Rpb24iOiB7CisgICAgICAgICAgICAidHlwZSI6ICJjc3MtZGlzcGxheS1ub25l
IiwKKyAgICAgICAgICAgICJzZWxlY3RvciI6ICIubm90X2hpZGRlbiIKKyAgICAgICAgfSwKKyAg
ICAgICAgInRyaWdnZXIiOiB7CisgICAgICAgICAgICAidXJsLWZpbHRlciI6ICIuKm5vdF9jc3Mt
ZGlzcGxheS1ub25lLmh0bWwiCisgICAgICAgIH0KKyAgICB9LAorICAgIHsKKyAgICAgICAgImFj
dGlvbiI6IHsKKyAgICAgICAgICAgICJ0eXBlIjogImNzcy1kaXNwbGF5LW5vbmUiLAorICAgICAg
ICAgICAgInNlbGVjdG9yIjogIi5hbHdheXNfaGlkZGVuIgorICAgICAgICB9LAogICAgIH0KIF0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248885</attachid>
            <date>2015-03-17 16:42:37 -0700</date>
            <delta_ts>2015-03-17 17:43:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142799-20150317164206.patch</filename>
            <type>text/plain</type>
            <size>9886</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MTY3MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDE1LTAzLTE3ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW0NvbnRlbnRF
eHRlbnNpb25zXSBQcmVwYXJlIGZvciBjb21waWxpbmcgc3R5bGVzaGVldHMgb2Ygc2VsZWN0b3Jz
IHRvIGJlIHVzZWQgb24gZXZlcnkgcGFnZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0Mjc5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvREZBQnl0ZWNvZGUuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjppbnN0cnVjdGlvblNpemVXaXRoQXJn
dW1lbnRzKToKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9ERkFCeXRlY29kZUNvbXBpbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpERkFCeXRlY29kZUNv
bXBpbGVyOjplbWl0QXBwZW5kR2xvYmFsQWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRl
bnRFeHRlbnNpb25zOjpERkFCeXRlY29kZUNvbXBpbGVyOjpjb21waWxlTm9kZSk6CisgICAgICAg
IChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZBQnl0ZWNvZGVDb21waWxlcjo6Y29tcGls
ZSk6CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvREZBQnl0ZWNvZGVDb21waWxlci5oOgor
ICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0RGQUJ5dGVjb2RlSW50ZXJwcmV0ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQUJ5dGVjb2RlSW50ZXJwcmV0
ZXI6OmludGVycHJldCk6CisgICAgICAgIEFkZGVkIG5ldyBieXRlY29kZSBBcHBlbmRHbG9iYWxB
Y3Rpb24gdG8gc2VwYXJhdGUgYWN0aW9ucyBmcm9tIGdsb2JhbCBhY3Rpb25zLCB3aGljaCBhcHBs
eSB0byBldmVyeSBwYWdlLgorCiAyMDE1LTAzLTE3ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0
b25AYXBwbGUuY29tPgogCiAgICAgICAgIENhbm5vdCBpbnZva2UgYWN0aW9uIG1lbnVzIGFueW1v
cmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQUJ5dGVjb2RlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZBQnl0ZWNv
ZGUuaAkocmV2aXNpb24gMTgxNjY0KQorKysgU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lv
bnMvREZBQnl0ZWNvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNiArNTEsMTEgQEAgZW51bSBj
bGFzcyBERkFCeXRlY29kZUluc3RydWN0aW9uIDogdWludAogICAgIC8vIFRoZSBhY3Rpb24gdG8g
YXBwZW5kICg0IGJ5dGVzKS4KICAgICBBcHBlbmRBY3Rpb24sCiAgICAgCisgICAgLy8gQXBwZW5k
R2xvYmFsQWN0aW9uIGlzIGxpa2UgQXBwZW5kQWN0aW9uLCBidXQgaXQgaXMgYW4gYWN0aW9uIGZy
b20gdGhlIHJvb3Qgb2YgdGhlIERGQSwgc28gaXQgaXMgYWx3YXlzIHRyaWdnZXJlZC4KKyAgICAv
LyBBcHBlbmRHbG9iYWxBY3Rpb24gaGFzIG9uZSBhcmd1bWVudDoKKyAgICAvLyBUaGUgYWN0aW9u
IHRvIGFwcGVuZCAoNCBieXRlcykuCisgICAgQXBwZW5kR2xvYmFsQWN0aW9uLAorICAgIAogICAg
IC8vIFRlc3RGbGFnc0FuZEFwcGVuZEFjdGlvbiBoYXMgdHdvIGFyZ3VtZW50czoKICAgICAvLyBU
aGUgZmxhZ3MgdG8gY2hlY2sgYmVmb3JlIGFwcGVuZGluZyAoMiBieXRlcyksCiAgICAgLy8gVGhl
IGFjdGlvbiB0byBhcHBlbmQgKDRieXRlcykuCkBAIC03Miw2ICs3Nyw3IEBAIHN0YXRpYyBpbmxp
bmUgc2l6ZV90IGluc3RydWN0aW9uU2l6ZVdpdGgKICAgICBjYXNlIERGQUJ5dGVjb2RlSW5zdHJ1
Y3Rpb246OkNoZWNrVmFsdWVSYW5nZToKICAgICAgICAgcmV0dXJuIHNpemVvZihERkFCeXRlY29k
ZUluc3RydWN0aW9uKSArIHNpemVvZih1aW50OF90KSArIHNpemVvZih1aW50OF90KSArIHNpemVv
Zih1bnNpZ25lZCk7CiAgICAgY2FzZSBERkFCeXRlY29kZUluc3RydWN0aW9uOjpBcHBlbmRBY3Rp
b246CisgICAgY2FzZSBERkFCeXRlY29kZUluc3RydWN0aW9uOjpBcHBlbmRHbG9iYWxBY3Rpb246
CiAgICAgICAgIHJldHVybiBzaXplb2YoREZBQnl0ZWNvZGVJbnN0cnVjdGlvbikgKyBzaXplb2Yo
dW5zaWduZWQpOwogICAgIGNhc2UgREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6VGVzdEZsYWdzQW5k
QXBwZW5kQWN0aW9uOgogICAgICAgICByZXR1cm4gc2l6ZW9mKERGQUJ5dGVjb2RlSW5zdHJ1Y3Rp
b24pICsgc2l6ZW9mKHVpbnQxNl90KSArIHNpemVvZih1bnNpZ25lZCk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkFCeXRlY29kZUNvbXBpbGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkFCeXRlY29kZUNvbXBp
bGVyLmNwcAkocmV2aXNpb24gMTgxNjY0KQorKysgU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVu
c2lvbnMvREZBQnl0ZWNvZGVDb21waWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDYgKzU0
LDEyIEBAIHZvaWQgREZBQnl0ZWNvZGVDb21waWxlcjo6ZW1pdEFwcGVuZEFjdGkKICAgICBhcHBl
bmQ8dW5zaWduZWQ+KG1fYnl0ZWNvZGUsIGFjdGlvbik7CiB9CiAKK3ZvaWQgREZBQnl0ZWNvZGVD
b21waWxlcjo6ZW1pdEFwcGVuZEdsb2JhbEFjdGlvbih1bnNpZ25lZCBhY3Rpb24pCit7CisgICAg
YXBwZW5kPERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb24+KG1fYnl0ZWNvZGUsIERGQUJ5dGVjb2RlSW5z
dHJ1Y3Rpb246OkFwcGVuZEdsb2JhbEFjdGlvbik7CisgICAgYXBwZW5kPHVuc2lnbmVkPihtX2J5
dGVjb2RlLCBhY3Rpb24pOworfQorCiB2b2lkIERGQUJ5dGVjb2RlQ29tcGlsZXI6OmVtaXRUZXN0
RmxhZ3NBbmRBcHBlbmRBY3Rpb24odWludDE2X3QgZmxhZ3MsIHVuc2lnbmVkIGFjdGlvbikKIHsK
ICAgICBBU1NFUlQoZmxhZ3MpOwpAQCAtOTQsNyArMTAwLDcgQEAgdm9pZCBERkFCeXRlY29kZUNv
bXBpbGVyOjplbWl0VGVybWluYXRlKAogICAgIGFwcGVuZDxERkFCeXRlY29kZUluc3RydWN0aW9u
PihtX2J5dGVjb2RlLCBERkFCeXRlY29kZUluc3RydWN0aW9uOjpUZXJtaW5hdGUpOwogfQogCi12
b2lkIERGQUJ5dGVjb2RlQ29tcGlsZXI6OmNvbXBpbGVOb2RlKHVuc2lnbmVkIGluZGV4KQordm9p
ZCBERkFCeXRlY29kZUNvbXBpbGVyOjpjb21waWxlTm9kZSh1bnNpZ25lZCBpbmRleCwgYm9vbCBp
c1Jvb3QpCiB7CiAgICAgY29uc3QgREZBTm9kZSYgbm9kZSA9IG1fZGZhLm5vZGVBdChpbmRleCk7
CiAKQEAgLTEwNSw2ICsxMTEsOCBAQCB2b2lkIERGQUJ5dGVjb2RlQ29tcGlsZXI6OmNvbXBpbGVO
b2RlKHVuCiAgICAgICAgIC8vIEhpZ2ggYml0cyBhcmUgdXNlZCB0byBzdG9yZSBmbGFncy4gU2Vl
IGNvbXBpbGVSdWxlTGlzdC4KICAgICAgICAgaWYgKGFjdGlvbiAmIDB4RkZGRjAwMDAwMDAwKQog
ICAgICAgICAgICAgZW1pdFRlc3RGbGFnc0FuZEFwcGVuZEFjdGlvbihzdGF0aWNfY2FzdDx1aW50
MTZfdD4oYWN0aW9uID4+IDMyKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGFjdGlvbikpOworICAg
ICAgICBlbHNlIGlmIChpc1Jvb3QpCisgICAgICAgICAgICBlbWl0QXBwZW5kR2xvYmFsQWN0aW9u
KHN0YXRpY19jYXN0PHVuc2lnbmVkPihhY3Rpb24pKTsKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgZW1pdEFwcGVuZEFjdGlvbihzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYWN0aW9uKSk7CiAgICAg
fQpAQCAtMTcxLDEwICsxNzksMTAgQEAgdm9pZCBERkFCeXRlY29kZUNvbXBpbGVyOjpjb21waWxl
KCkKICAgICBtX25vZGVTdGFydE9mZnNldHMucmVzaXplKG1fZGZhLnNpemUoKSk7CiAgICAgCiAg
ICAgLy8gTWFrZSBzdXJlIHRoZSByb290IGlzIGFsd2F5cyBhdCB0aGUgYmVnaW5uaW5nIG9mIHRo
ZSBieXRlY29kZS4KLSAgICBjb21waWxlTm9kZShtX2RmYS5yb290KCkpOworICAgIGNvbXBpbGVO
b2RlKG1fZGZhLnJvb3QoKSwgdHJ1ZSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1f
ZGZhLnNpemUoKTsgaSsrKSB7CiAgICAgICAgIGlmIChpICE9IG1fZGZhLnJvb3QoKSkKLSAgICAg
ICAgICAgIGNvbXBpbGVOb2RlKGkpOworICAgICAgICAgICAgY29tcGlsZU5vZGUoaSwgZmFsc2Up
OwogICAgIH0KIAogICAgIC8vIExpbmsuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0
ZW5zaW9ucy9ERkFCeXRlY29kZUNvbXBpbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvY29udGVudGV4dGVuc2lvbnMvREZBQnl0ZWNvZGVDb21waWxlci5oCShyZXZpc2lvbiAxODE2
NjQpCisrKyBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkFCeXRlY29kZUNvbXBp
bGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDExICs0OSwxMiBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBjb21waWxlKCk7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBjb21waWxlTm9kZSh1bnNpZ25lZCk7
CisgICAgdm9pZCBjb21waWxlTm9kZSh1bnNpZ25lZCwgYm9vbCBpc1Jvb3QpOwogICAgIHZvaWQg
Y29tcGlsZU5vZGVUcmFuc2l0aW9ucyhjb25zdCBERkFOb2RlJik7CiAgICAgdm9pZCBjb21waWxl
Q2hlY2tGb3JSYW5nZSh1aW50MTZfdCBsb3dWYWx1ZSwgdWludDE2X3QgaGlnaFZhbHVlLCB1bnNp
Z25lZCBkZXN0aW5hdGlvbk5vZGVJbmRleCk7CiAKICAgICB2b2lkIGVtaXRBcHBlbmRBY3Rpb24o
dW5zaWduZWQpOworICAgIHZvaWQgZW1pdEFwcGVuZEdsb2JhbEFjdGlvbih1bnNpZ25lZCk7CiAg
ICAgdm9pZCBlbWl0VGVzdEZsYWdzQW5kQXBwZW5kQWN0aW9uKHVpbnQxNl90IGZsYWdzLCB1bnNp
Z25lZCk7CiAgICAgdm9pZCBlbWl0SnVtcCh1bnNpZ25lZCBkZXN0aW5hdGlvbk5vZGVJbmRleCk7
CiAgICAgdm9pZCBlbWl0Q2hlY2tWYWx1ZSh1aW50OF90IHZhbHVlLCB1bnNpZ25lZCBkZXN0aW5h
dGlvbk5vZGVJbmRleCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9E
RkFCeXRlY29kZUludGVycHJldGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9j
b250ZW50ZXh0ZW5zaW9ucy9ERkFCeXRlY29kZUludGVycHJldGVyLmNwcAkocmV2aXNpb24gMTgx
NjY0KQorKysgU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZBQnl0ZWNvZGVJbnRl
cnByZXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk3LDYgKzk3LDkgQEAgREZBQnl0ZWNvZGVJ
bnRlcnByZXRlcjo6QWN0aW9ucyBERkFCeXRlYwogICAgICAgICAgICAgdXJsSW5kZXgrKzsgLy8g
VGhpcyByZXByZXNlbnRzIGFuIGVkZ2UgaW4gdGhlIERGQS4KICAgICAgICAgICAgIGJyZWFrOwog
CisgICAgICAgIGNhc2UgREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6QXBwZW5kR2xvYmFsQWN0aW9u
OgorICAgICAgICAvLyBGSVhNRTogVGhlc2Ugc2hvdWxkIGJlIGFkZGVkIHRvIGEgZGlmZmVyZW50
IHNldCBvZiBhY3Rpb25zIGlmIHdlIGFyZSBjb21waWxpbmcgdGhhdCBzdHlsZSBzaGVldCBmb3Ig
dGhlIGZpcnN0IHRpbWUuCisgICAgICAgIC8vIEZJWE1FOiBXaGF0IGlmIGEgQmxvY2sgb3IgQmxv
Y2tDb29raWVzIGFjdGlvbiBpcyBhIGdsb2JhbCBhY3Rpb24/CiAgICAgICAgIGNhc2UgREZBQnl0
ZWNvZGVJbnN0cnVjdGlvbjo6QXBwZW5kQWN0aW9uOgogICAgICAgICAgICAgYWN0aW9ucy5hZGQo
c3RhdGljX2Nhc3Q8dWludDY0X3Q+KGdldEJpdHM8dW5zaWduZWQ+KG1fYnl0ZWNvZGUsIG1fYnl0
ZWNvZGVMZW5ndGgsIHByb2dyYW1Db3VudGVyICsgc2l6ZW9mKERGQUJ5dGVjb2RlKSkpKTsKICAg
ICAgICAgICAgIHByb2dyYW1Db3VudGVyICs9IGluc3RydWN0aW9uU2l6ZVdpdGhBcmd1bWVudHMo
REZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6QXBwZW5kQWN0aW9uKTsKSW5kZXg6IExheW91dFRlc3Rz
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9u
IDE4MTY2NykKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE1IEBACisyMDE1LTAzLTE3ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgW0NvbnRlbnRFeHRlbnNpb25zXSBQcmVwYXJlIGZvciBjb21w
aWxpbmcgc3R5bGVzaGVldHMgb2Ygc2VsZWN0b3JzIHRvIGJlIHVzZWQgb24gZXZlcnkgcGFnZS4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0Mjc5OQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaHR0cC90
ZXN0cy9jb250ZW50ZXh0ZW5zaW9ucy9jc3MtZGlzcGxheS1ub25lLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiBodHRwL3Rlc3RzL2NvbnRlbnRleHRlbnNpb25zL2Nzcy1kaXNwbGF5LW5vbmUuaHRt
bDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2NvbnRlbnRleHRlbnNpb25zL2Nzcy1kaXNwbGF5LW5v
bmUuaHRtbC5qc29uOgorICAgICAgICBBZGRlZCBzZWxlY3RvcnMgd2l0aCBubyB0cmlnZ2VyLgor
CiAyMDE1LTAzLTE3ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAg
U2ltcGxlIGxpbmUgbGF5b3V0OiBTcGxpdCBmcmFnbWVudHMgb24gcmVuZGVyZXIgYm91bmRhcnkg
b24gdGhlIGZseS4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvY29udGVudGV4dGVuc2lv
bnMvY3NzLWRpc3BsYXktbm9uZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9jb250ZW50ZXh0ZW5zaW9ucy9jc3MtZGlzcGxheS1ub25lLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMTgxNjY0KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb250ZW50
ZXh0ZW5zaW9ucy9jc3MtZGlzcGxheS1ub25lLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMTAsNSArMTAsMTEgQEAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCiAgICAgICAgIFJl
bmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDUyMngxOAogICAgICAgICAgIHRleHQgcnVu
IGF0ICgwLDApIHdpZHRoIDUyMjogIlRoaXMgdGV4dCBzaG91bGQgYWxzbyBub3QgYmUgdmlzaWJs
ZSBvbmNlIHRoZSBjc3Mgc2VsZWN0b3IgaXMgYXBwbGllZCAobm90IGRvbmUgeWV0KS4iCiAgICAg
ICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsNjgpIHNpemUgNzg0eDE4CisgICAgICAgIFJlbmRlclRl
eHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDUyMngxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgw
LDApIHdpZHRoIDUyMjogIlRoaXMgdGV4dCBzaG91bGQgYWxzbyBub3QgYmUgdmlzaWJsZSBvbmNl
IHRoZSBjc3Mgc2VsZWN0b3IgaXMgYXBwbGllZCAobm90IGRvbmUgeWV0KS4iCisgICAgICBSZW5k
ZXJCbG9jayB7UH0gYXQgKDAsMTAyKSBzaXplIDc4NHgxOAogICAgICAgICBSZW5kZXJUZXh0IHsj
dGV4dH0gYXQgKDAsMCkgc2l6ZSAxNzN4MTgKICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3
aWR0aCAxNzM6ICJUaGlzIHRleHQgc2hvdWxkIGJlIHZpc2libGUuIgorICAgICAgUmVuZGVyQmxv
Y2sge1B9IGF0ICgwLDEzNikgc2l6ZSA3ODR4MTgKKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9
IGF0ICgwLDApIHNpemUgMjAzeDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGgg
MjAzOiAiVGhpcyB0ZXh0IHNob3VsZCBhbHNvIGJlIHZpc2libGUuIgpJbmRleDogTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9jb250ZW50ZXh0ZW5zaW9ucy9jc3MtZGlzcGxheS1ub25lLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb250ZW50ZXh0ZW5zaW9ucy9jc3Mt
ZGlzcGxheS1ub25lLmh0bWwJKHJldmlzaW9uIDE4MTY2NCkKKysrIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvY29udGVudGV4dGVuc2lvbnMvY3NzLWRpc3BsYXktbm9uZS5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNyBAQAogPGJvZHk+CiA8cCBjbGFzcz0iaGlkZGVuIj5UaGlzIHRleHQg
c2hvdWxkIG5vdCBiZSB2aXNpYmxlIG9uY2UgdGhlIGNzcyBzZWxlY3RvciBpcyBhcHBsaWVkIChu
b3QgZG9uZSB5ZXQpLjwvcD4KIDxwIGNsYXNzPSJoaWRkZW5fxb0iPlRoaXMgdGV4dCBzaG91bGQg
YWxzbyBub3QgYmUgdmlzaWJsZSBvbmNlIHRoZSBjc3Mgc2VsZWN0b3IgaXMgYXBwbGllZCAobm90
IGRvbmUgeWV0KS48L3A+Cis8cCBjbGFzcz0iYWx3YXlzX2hpZGRlbiI+VGhpcyB0ZXh0IHNob3Vs
ZCBhbHNvIG5vdCBiZSB2aXNpYmxlIG9uY2UgdGhlIGNzcyBzZWxlY3RvciBpcyBhcHBsaWVkIChu
b3QgZG9uZSB5ZXQpLjwvcD4KIDxwIGNsYXNzPSJub3RfaGlkZGVuIj5UaGlzIHRleHQgc2hvdWxk
IGJlIHZpc2libGUuPC9wPgorPHAgY2xhc3M9Im5vdF9yZWxhdGVkIj5UaGlzIHRleHQgc2hvdWxk
IGFsc28gYmUgdmlzaWJsZS48L3A+CiA8L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2NvbnRlbnRleHRlbnNpb25zL2Nzcy1kaXNwbGF5LW5vbmUuaHRtbC5qc29uCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvY29udGVudGV4dGVuc2lvbnMvY3NzLWRpc3Bs
YXktbm9uZS5odG1sLmpzb24JKHJldmlzaW9uIDE4MTY2NCkKKysrIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvY29udGVudGV4dGVuc2lvbnMvY3NzLWRpc3BsYXktbm9uZS5odG1sLmpzb24JKHdvcmtp
bmcgY29weSkKQEAgLTE2LDUgKzE2LDIzIEBACiAgICAgICAgICJ0cmlnZ2VyIjogewogICAgICAg
ICAgICAgInVybC1maWx0ZXIiOiAiLipjc3MtZGlzcGxheS1ub25lLmh0bWwiCiAgICAgICAgIH0K
KyAgICB9LAorICAgIHsKKyAgICAgICAgImFjdGlvbiI6IHsKKyAgICAgICAgICAgICJ0eXBlIjog
ImNzcy1kaXNwbGF5LW5vbmUiLAorICAgICAgICAgICAgInNlbGVjdG9yIjogIi5ub3RfaGlkZGVu
IgorICAgICAgICB9LAorICAgICAgICAidHJpZ2dlciI6IHsKKyAgICAgICAgICAgICJ1cmwtZmls
dGVyIjogIi4qbm90X2Nzcy1kaXNwbGF5LW5vbmUuaHRtbCIKKyAgICAgICAgfQorICAgIH0sCisg
ICAgeworICAgICAgICAiYWN0aW9uIjogeworICAgICAgICAgICAgInR5cGUiOiAiY3NzLWRpc3Bs
YXktbm9uZSIsCisgICAgICAgICAgICAic2VsZWN0b3IiOiAiLmFsd2F5c19oaWRkZW4iCisgICAg
ICAgIH0sCisgICAgICAgICJ0cmlnZ2VyIjogeworICAgICAgICAgICAgInVybC1maWx0ZXIiOiAi
LioiCisgICAgICAgIH0KICAgICB9CiBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248891</attachid>
            <date>2015-03-17 17:44:02 -0700</date>
            <delta_ts>2015-03-18 11:30:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142799-20150317174331.patch</filename>
            <type>text/plain</type>
            <size>5668</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MTY3MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDE1LTAzLTE3ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW0NvbnRlbnRF
eHRlbnNpb25zXSBQcmVwYXJlIGZvciBjb21waWxpbmcgc3R5bGVzaGVldHMgb2Ygc2VsZWN0b3Jz
IHRvIGJlIHVzZWQgb24gZXZlcnkgcGFnZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0Mjc5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvREZBQnl0ZWNvZGVJbnRlcnBy
ZXRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZBQnl0ZWNv
ZGVJbnRlcnByZXRlcjo6aW50ZXJwcmV0KToKKyAgICAgICAgUHJvY2VzcyBnbG9iYWwgYWN0aW9u
cyBiZWZvcmUgaW50ZXJwcmV0aW5nIHJlbWFpbmluZyBieXRlY29kZS4KKwogMjAxNS0wMy0xNyAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFtNYWNdW2lPU10gc2V0
U2hhcmVkVGltZXJGaXJlSW50ZXJ2YWwoKSAvIHN0b3BTaGFyZWRUaW1lcigpIGFyZSBleHBlbnNp
dmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQUJ5dGVjb2RlSW50
ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNp
b25zL0RGQUJ5dGVjb2RlSW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAxODE2NjQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkFCeXRlY29kZUludGVycHJldGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTEsNiArNTEsMTMgQEAgREZBQnl0ZWNvZGVJbnRlcnByZXRlcjo6
QWN0aW9ucyBERkFCeXRlYwogICAgIGJvb2wgdXJsSW5kZXhJc0FmdGVyRW5kT2ZTdHJpbmcgPSBm
YWxzZTsKICAgICBBY3Rpb25zIGFjdGlvbnM7CiAgICAgCisgICAgLy8gRklYTUU6IFRoZXNlIGFy
ZSBnbG9iYWwgYWN0aW9ucyB0byBiZSBhcHBsaWVkIHRvIGFsbCByZXF1ZXN0cy4gVGhlc2UgYXJl
IGNzcyBzZWxlY3RvcnMgYW5kIHNob3VsZCBiZSBjb21waWxlZCBpbnRvIGEgc3R5bGVzaGVldCB0
aGUgZmlyc3QgdGltZS4KKyAgICAvLyBGSVhNRTogV2UgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCB0
aGVzZSBhcmUgb25seSBjc3Mgc2VsZWN0b3JzIGFuZCB0aGF0IHRoZXJlIGFyZSBubyBydWxlcyB0
aGF0IGRvIG5vdCBtYXRjaCBldmVyeXRoaW5nIGJldHdlZW4gcnVsZXMgdGhhdCBkbyBmb3IgaWdu
b3JlLXByZXZpb3VzLXJ1bGVzIHRvIHdvcmsgY29ycmVjdGx5LgorICAgIHdoaWxlIChzdGF0aWNf
Y2FzdDxERkFCeXRlY29kZUluc3RydWN0aW9uPihtX2J5dGVjb2RlW3Byb2dyYW1Db3VudGVyXSkg
PT0gREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6QXBwZW5kQWN0aW9uKSB7CisgICAgICAgIGFjdGlv
bnMuYWRkKHN0YXRpY19jYXN0PHVpbnQ2NF90PihnZXRCaXRzPHVuc2lnbmVkPihtX2J5dGVjb2Rl
LCBtX2J5dGVjb2RlTGVuZ3RoLCBwcm9ncmFtQ291bnRlciArIHNpemVvZihERkFCeXRlY29kZSkp
KSk7CisgICAgICAgIHByb2dyYW1Db3VudGVyICs9IGluc3RydWN0aW9uU2l6ZVdpdGhBcmd1bWVu
dHMoREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6QXBwZW5kQWN0aW9uKTsKKyAgICB9CisgICAgCiAg
ICAgLy8gVGhpcyBzaG91bGQgYWx3YXlzIHRlcm1pbmF0ZSBpZiBpbnRlcnByZXRpbmcgY29ycmVj
dGx5IGNvbXBpbGVkIGJ5dGVjb2RlLgogICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgIEFTU0VS
VChwcm9ncmFtQ291bnRlciA8PSBtX2J5dGVjb2RlTGVuZ3RoKTsKSW5kZXg6IExheW91dFRlc3Rz
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9u
IDE4MTY2NykKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE1IEBACisyMDE1LTAzLTE3ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgW0NvbnRlbnRFeHRlbnNpb25zXSBQcmVwYXJlIGZvciBjb21w
aWxpbmcgc3R5bGVzaGVldHMgb2Ygc2VsZWN0b3JzIHRvIGJlIHVzZWQgb24gZXZlcnkgcGFnZS4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0Mjc5OQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaHR0cC90
ZXN0cy9jb250ZW50ZXh0ZW5zaW9ucy9jc3MtZGlzcGxheS1ub25lLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiBodHRwL3Rlc3RzL2NvbnRlbnRleHRlbnNpb25zL2Nzcy1kaXNwbGF5LW5vbmUuaHRt
bDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2NvbnRlbnRleHRlbnNpb25zL2Nzcy1kaXNwbGF5LW5v
bmUuaHRtbC5qc29uOgorICAgICAgICBBZGRlZCBzZWxlY3RvcnMgd2l0aCBubyB0cmlnZ2VyLgor
CiAyMDE1LTAzLTE3ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAg
U2ltcGxlIGxpbmUgbGF5b3V0OiBTcGxpdCBmcmFnbWVudHMgb24gcmVuZGVyZXIgYm91bmRhcnkg
b24gdGhlIGZseS4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvY29udGVudGV4dGVuc2lv
bnMvY3NzLWRpc3BsYXktbm9uZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9jb250ZW50ZXh0ZW5zaW9ucy9jc3MtZGlzcGxheS1ub25lLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMTgxNjY0KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb250ZW50
ZXh0ZW5zaW9ucy9jc3MtZGlzcGxheS1ub25lLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMTAsNSArMTAsMTEgQEAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCiAgICAgICAgIFJl
bmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDUyMngxOAogICAgICAgICAgIHRleHQgcnVu
IGF0ICgwLDApIHdpZHRoIDUyMjogIlRoaXMgdGV4dCBzaG91bGQgYWxzbyBub3QgYmUgdmlzaWJs
ZSBvbmNlIHRoZSBjc3Mgc2VsZWN0b3IgaXMgYXBwbGllZCAobm90IGRvbmUgeWV0KS4iCiAgICAg
ICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsNjgpIHNpemUgNzg0eDE4CisgICAgICAgIFJlbmRlclRl
eHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDUyMngxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgw
LDApIHdpZHRoIDUyMjogIlRoaXMgdGV4dCBzaG91bGQgYWxzbyBub3QgYmUgdmlzaWJsZSBvbmNl
IHRoZSBjc3Mgc2VsZWN0b3IgaXMgYXBwbGllZCAobm90IGRvbmUgeWV0KS4iCisgICAgICBSZW5k
ZXJCbG9jayB7UH0gYXQgKDAsMTAyKSBzaXplIDc4NHgxOAogICAgICAgICBSZW5kZXJUZXh0IHsj
dGV4dH0gYXQgKDAsMCkgc2l6ZSAxNzN4MTgKICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3
aWR0aCAxNzM6ICJUaGlzIHRleHQgc2hvdWxkIGJlIHZpc2libGUuIgorICAgICAgUmVuZGVyQmxv
Y2sge1B9IGF0ICgwLDEzNikgc2l6ZSA3ODR4MTgKKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9
IGF0ICgwLDApIHNpemUgMjAzeDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGgg
MjAzOiAiVGhpcyB0ZXh0IHNob3VsZCBhbHNvIGJlIHZpc2libGUuIgpJbmRleDogTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9jb250ZW50ZXh0ZW5zaW9ucy9jc3MtZGlzcGxheS1ub25lLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb250ZW50ZXh0ZW5zaW9ucy9jc3Mt
ZGlzcGxheS1ub25lLmh0bWwJKHJldmlzaW9uIDE4MTY2NCkKKysrIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvY29udGVudGV4dGVuc2lvbnMvY3NzLWRpc3BsYXktbm9uZS5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNyBAQAogPGJvZHk+CiA8cCBjbGFzcz0iaGlkZGVuIj5UaGlzIHRleHQg
c2hvdWxkIG5vdCBiZSB2aXNpYmxlIG9uY2UgdGhlIGNzcyBzZWxlY3RvciBpcyBhcHBsaWVkIChu
b3QgZG9uZSB5ZXQpLjwvcD4KIDxwIGNsYXNzPSJoaWRkZW5fxb0iPlRoaXMgdGV4dCBzaG91bGQg
YWxzbyBub3QgYmUgdmlzaWJsZSBvbmNlIHRoZSBjc3Mgc2VsZWN0b3IgaXMgYXBwbGllZCAobm90
IGRvbmUgeWV0KS48L3A+Cis8cCBjbGFzcz0iYWx3YXlzX2hpZGRlbiI+VGhpcyB0ZXh0IHNob3Vs
ZCBhbHNvIG5vdCBiZSB2aXNpYmxlIG9uY2UgdGhlIGNzcyBzZWxlY3RvciBpcyBhcHBsaWVkIChu
b3QgZG9uZSB5ZXQpLjwvcD4KIDxwIGNsYXNzPSJub3RfaGlkZGVuIj5UaGlzIHRleHQgc2hvdWxk
IGJlIHZpc2libGUuPC9wPgorPHAgY2xhc3M9Im5vdF9yZWxhdGVkIj5UaGlzIHRleHQgc2hvdWxk
IGFsc28gYmUgdmlzaWJsZS48L3A+CiA8L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2NvbnRlbnRleHRlbnNpb25zL2Nzcy1kaXNwbGF5LW5vbmUuaHRtbC5qc29uCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvY29udGVudGV4dGVuc2lvbnMvY3NzLWRpc3Bs
YXktbm9uZS5odG1sLmpzb24JKHJldmlzaW9uIDE4MTY2NCkKKysrIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvY29udGVudGV4dGVuc2lvbnMvY3NzLWRpc3BsYXktbm9uZS5odG1sLmpzb24JKHdvcmtp
bmcgY29weSkKQEAgLTE2LDUgKzE2LDIzIEBACiAgICAgICAgICJ0cmlnZ2VyIjogewogICAgICAg
ICAgICAgInVybC1maWx0ZXIiOiAiLipjc3MtZGlzcGxheS1ub25lLmh0bWwiCiAgICAgICAgIH0K
KyAgICB9LAorICAgIHsKKyAgICAgICAgImFjdGlvbiI6IHsKKyAgICAgICAgICAgICJ0eXBlIjog
ImNzcy1kaXNwbGF5LW5vbmUiLAorICAgICAgICAgICAgInNlbGVjdG9yIjogIi5ub3RfaGlkZGVu
IgorICAgICAgICB9LAorICAgICAgICAidHJpZ2dlciI6IHsKKyAgICAgICAgICAgICJ1cmwtZmls
dGVyIjogIi4qbm90X2Nzcy1kaXNwbGF5LW5vbmUuaHRtbCIKKyAgICAgICAgfQorICAgIH0sCisg
ICAgeworICAgICAgICAiYWN0aW9uIjogeworICAgICAgICAgICAgInR5cGUiOiAiY3NzLWRpc3Bs
YXktbm9uZSIsCisgICAgICAgICAgICAic2VsZWN0b3IiOiAiLmFsd2F5c19oaWRkZW4iCisgICAg
ICAgIH0sCisgICAgICAgICJ0cmlnZ2VyIjogeworICAgICAgICAgICAgInVybC1maWx0ZXIiOiAi
LioiCisgICAgICAgIH0KICAgICB9CiBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248945</attachid>
            <date>2015-03-18 11:30:20 -0700</date>
            <delta_ts>2015-03-18 18:30:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142799-20150318112949.patch</filename>
            <type>text/plain</type>
            <size>20751</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MTcwMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBACisyMDE1LTAzLTE4ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW0NvbnRlbnRF
eHRlbnNpb25zXSBQcmVwYXJlIGZvciBjb21waWxpbmcgc3R5bGVzaGVldHMgb2Ygc2VsZWN0b3Jz
IHRvIGJlIHVzZWQgb24gZXZlcnkgcGFnZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0Mjc5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZGVkIEFQSSB0ZXN0cy4KKworICAgICAgICAqIFdlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9D
b250ZW50RXh0ZW5zaW9uQ29tcGlsZXIuY3BwOgorICAgICAgICBQdXQgYWN0aW9ucyB3aXRoIHRy
aWdnZXJzIHRoYXQgbWF0Y2ggZXZlcnl0aGluZyBkaXJlY3RseSBpbiB0aGUgcm9vdCBvZiB0aGUg
REZBLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OmNvbXBpbGVSdWxlTGlz
dCk6CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvREZBLmg6CisgICAgICAgIChXZWJDb3Jl
OjpDb250ZW50RXh0ZW5zaW9uczo6REZBOjpub2RlQXQpOgorICAgICAgICAqIGNvbnRlbnRleHRl
bnNpb25zL0RGQUJ5dGVjb2RlSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGVudEV4dGVuc2lvbnM6OkRGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OmludGVycHJldCk6CisgICAg
ICAgICogY29udGVudGV4dGVuc2lvbnMvTkZBLmg6CisgICAgICAgICogY29udGVudGV4dGVuc2lv
bnMvVVJMRmlsdGVyUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNp
b25zOjpUZXJtOjpxdWFudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNp
b25zOjpHcmFwaEJ1aWxkZXI6OmZpbmFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRF
eHRlbnNpb25zOjpHcmFwaEJ1aWxkZXI6OnNpbmtGbG9hdGluZ1Rlcm1JZk5lY2Vzc2FyeSk6Cisg
ICAgICAgIFNpbmsgdGVybXMgdG8gYSB2ZWN0b3IgdGhlbiBhZGQgbm9kZXMgdG8gTkZBIHdoZW4g
ZmluYWxpemluZyBhZnRlciBjaGVja2luZyBmb3IgcmVnZXhlcyB0aGF0IG1hdGNoIGV2ZXJ5dGhp
bmcuCisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvVVJMRmlsdGVyUGFyc2VyLmg6CisKIDIw
MTUtMDMtMTggIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAg
ICAgICBDYWxsIENURm9udFNldFJlbmRlcmluZ1BhcmFtZXRlcnMgYmVmb3JlIHJlbmRlcmluZyB0
ZXh0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCShyZXZpc2lvbiAxODE2NjQpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTk5Myw3ICs5OTMsNyBA
QAogCQkyNEY1NEVBRDEwMUZFOTE0MDAwQUU3NDEgLyogQXBwbGljYXRpb25DYWNoZUhvc3QuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI0RjU0RUFCMTAx
RkU5MTQwMDBBRTc0MSAvKiBBcHBsaWNhdGlvbkNhY2hlSG9zdC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTI1NDJGNERBMTE2NkMyNUEwMEU4OUE4
NiAvKiBVc2VyR2VzdHVyZUluZGljYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAyNTQyRjREODExNjZDMjVBMDBFODlBODYgLyogVXNlckdlc3R1
cmVJbmRpY2F0b3IuY3BwICovOyB9OwogCQkyNTQyRjREQjExNjZDMjVBMDBFODlBODYgLyogVXNl
ckdlc3R1cmVJbmRpY2F0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDI1NDJGNEQ5MTE2NkMyNUEwMEU4OUE4NiAvKiBVc2VyR2VzdHVyZUluZGljYXRv
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTI2
MjM5MTM2MUE2NDhDRUUwMDcyNTFBMyAvKiBDb250ZW50RXh0ZW5zaW9uc0RlYnVnZ2luZy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjYyMzkxMzUxQTY0
OENFRTAwNzI1MUEzIC8qIENvbnRlbnRFeHRlbnNpb25zRGVidWdnaW5nLmggKi87IH07CisJCTI2
MjM5MTM2MUE2NDhDRUUwMDcyNTFBMyAvKiBDb250ZW50RXh0ZW5zaW9uc0RlYnVnZ2luZy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjYyMzkxMzUxQTY0
OENFRTAwNzI1MUEzIC8qIENvbnRlbnRFeHRlbnNpb25zRGVidWdnaW5nLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMjYyNTVGMDAxODg3OERGRjAw
MDZFMUZEIC8qIFVzZXJBZ2VudElPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDI2MjU1RUZGMTg4NzhERkYwMDA2RTFGRCAvKiBVc2VyQWdlbnRJT1Mu
bW0gKi87IH07CiAJCTI2MjU1RjAzMTg4NzhFMTEwMDA2RTFGRCAvKiBVc2VyQWdlbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2MjU1RjAxMTg4NzhF
MTEwMDA2RTFGRCAvKiBVc2VyQWdlbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkyNjI1NUYwNDE4ODc4RTExMDAwNkUxRkQgLyogVXNlckFnZW50
TWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjYy
NTVGMDIxODg3OEUxMTAwMDZFMUZEIC8qIFVzZXJBZ2VudE1hYy5tbSAqLzsgfTsKQEAgLTEwMDgs
MTAgKzEwMDgsMTAgQEAKIAkJMjY3NzI2MDAxQTVCM0FEOTAwM0MyNEREIC8qIE5GQVRvREZBLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2NzcyNUZB
MUE1QjNBRDkwMDNDMjRERCAvKiBORkFUb0RGQS5jcHAgKi87IH07CiAJCTI2NzcyNjAxMUE1QjNB
RDkwMDNDMjRERCAvKiBORkFUb0RGQS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMjY3NzI1RkIxQTVCM0FEOTAwM0MyNEREIC8qIE5GQVRvREZBLmggKi87
IH07CiAJCTI2NzcyNjA0MUE1REY2RjIwMDNDMjRERCAvKiBVUkxGaWx0ZXJQYXJzZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjY3NzI2MDIxQTVE
RjZGMjAwM0MyNEREIC8qIFVSTEZpbHRlclBhcnNlci5jcHAgKi87IH07Ci0JCTI2NzcyNjA1MUE1
REY2RjIwMDNDMjRERCAvKiBVUkxGaWx0ZXJQYXJzZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2NzcyNjAzMUE1REY2RjIwMDNDMjRERCAvKiBVUkxG
aWx0ZXJQYXJzZXIuaCAqLzsgfTsKKwkJMjY3NzI2MDUxQTVERjZGMjAwM0MyNEREIC8qIFVSTEZp
bHRlclBhcnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMjY3NzI2MDMxQTVERjZGMjAwM0MyNEREIC8qIFVSTEZpbHRlclBhcnNlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTI2OTIzOTk2MTUwNUUx
QUEwMDlFNTdGQyAvKiBKU0lEQlZlcnNpb25DaGFuZ2VFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjY5MjM5OTIxNTA1RTFBQTAwOUU1N0ZDIC8q
IEpTSURCVmVyc2lvbkNoYW5nZUV2ZW50LmggKi87IH07Ci0JCTI2OTM5NzIyMUE0QTQxMkYwMEU4
MzQ5RCAvKiBORkFOb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyNjkzOTcyMDFBNEE0MTJGMDBFODM0OUQgLyogTkZBTm9kZS5oICovOyB9OwotCQky
NjkzOTcyNDFBNEE1QjY0MDBFODM0OUQgLyogTkZBLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNjkzOTcyMzFBNEE1QjY0MDBFODM0OUQgLyogTkZBLmgg
Ki87IH07CisJCTI2OTM5NzIyMUE0QTQxMkYwMEU4MzQ5RCAvKiBORkFOb2RlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNjkzOTcyMDFBNEE0MTJGMDBF
ODM0OUQgLyogTkZBTm9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTI2OTM5NzI0MUE0QTVCNjQwMEU4MzQ5RCAvKiBORkEuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2OTM5NzIzMUE0QTVCNjQwMEU4
MzQ5RCAvKiBORkEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkyNjkzOTcyNjFBNEE1RkJEMDBFODM0OUQgLyogTkZBLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2OTM5NzI1MUE0QTVGQkQwMEU4MzQ5
RCAvKiBORkEuY3BwICovOyB9OwogCQkyNkFBMEY5RTE4RDJBMThCMDA0MTkzODEgLyogU2VsZWN0
b3JQc2V1ZG9FbGVtZW50VHlwZU1hcC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyNkFBMEY5RDE4RDJBMThCMDA0MTkzODEgLyogU2VsZWN0b3JQc2V1
ZG9FbGVtZW50VHlwZU1hcC5jcHAgKi87IH07CiAJCTI2Qjk5OThGMTgwM0FFNzIwMEQwMTEyMSAv
KiBSZWdpc3RlckFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMjZCOTk5OEUxODAzQUU3MjAwRDAxMTIxIC8qIFJlZ2lzdGVyQWxsb2NhdG9y
LmggKi87IH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50
RXh0ZW5zaW9uQ29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NvbnRl
bnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25Db21waWxlci5jcHAJKHJldmlzaW9uIDE4MTY2
NCkKKysrIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25D
b21waWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwOCwxNyArMTA4LDI3IEBAIENvbXBpbGVk
Q29udGVudEV4dGVuc2lvbkRhdGEgY29tcGlsZVJ1bGUKIAogICAgIFZlY3RvcjxTZXJpYWxpemVk
QWN0aW9uQnl0ZT4gYWN0aW9uczsKICAgICBWZWN0b3I8dW5zaWduZWQ+IGFjdGlvbkxvY2F0aW9u
cyA9IHNlcmlhbGl6ZUFjdGlvbnMocGFyc2VkUnVsZUxpc3QsIGFjdGlvbnMpOworICAgIFZlY3Rv
cjx1aW50NjRfdD4gdW5pdmVyc2FsQWN0aW9uTG9jYXRpb25zOwogCiAgICAgTkZBIG5mYTsKICAg
ICBVUkxGaWx0ZXJQYXJzZXIgdXJsRmlsdGVyUGFyc2VyKG5mYSk7CisgICAgYm9vbCBub25Vbml2
ZXJzYWxBY3Rpb25TZWVuID0gZmFsc2U7CiAgICAgZm9yICh1bnNpZ25lZCBydWxlSW5kZXggPSAw
OyBydWxlSW5kZXggPCBwYXJzZWRSdWxlTGlzdC5zaXplKCk7ICsrcnVsZUluZGV4KSB7CiAgICAg
ICAgIGNvbnN0IENvbnRlbnRFeHRlbnNpb25SdWxlJiBjb250ZW50RXh0ZW5zaW9uUnVsZSA9IHBh
cnNlZFJ1bGVMaXN0W3J1bGVJbmRleF07CiAgICAgICAgIGNvbnN0IFRyaWdnZXImIHRyaWdnZXIg
PSBjb250ZW50RXh0ZW5zaW9uUnVsZS50cmlnZ2VyKCk7CiAgICAgICAgIEFTU0VSVCh0cmlnZ2Vy
LnVybEZpbHRlci5sZW5ndGgoKSk7CiAKICAgICAgICAgLy8gSGlnaCBiaXRzIGFyZSB1c2VkIGZv
ciBmbGFncy4gVGhpcyBzaG91bGQgbWF0Y2ggaG93IHRoZXkgYXJlIHVzZWQgaW4gREZBQnl0ZWNv
ZGVDb21waWxlcjo6Y29tcGlsZU5vZGUuCi0gICAgICAgIFN0cmluZyBlcnJvciA9IHVybEZpbHRl
clBhcnNlci5hZGRQYXR0ZXJuKHRyaWdnZXIudXJsRmlsdGVyLCB0cmlnZ2VyLnVybEZpbHRlcklz
Q2FzZVNlbnNpdGl2ZSwgKHN0YXRpY19jYXN0PHVpbnQ2NF90Pih0cmlnZ2VyLmZsYWdzKSA8PCAz
MikgfCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oYWN0aW9uTG9jYXRpb25zW3J1bGVJbmRleF0pKTsK
KyAgICAgICAgdWludDY0X3QgYWN0aW9uTG9jYXRpb25BbmRGbGFncyA9KHN0YXRpY19jYXN0PHVp
bnQ2NF90Pih0cmlnZ2VyLmZsYWdzKSA8PCAzMikgfCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oYWN0
aW9uTG9jYXRpb25zW3J1bGVJbmRleF0pOworICAgICAgICBTdHJpbmcgZXJyb3IgPSB1cmxGaWx0
ZXJQYXJzZXIuYWRkUGF0dGVybih0cmlnZ2VyLnVybEZpbHRlciwgdHJpZ2dlci51cmxGaWx0ZXJJ
c0Nhc2VTZW5zaXRpdmUsIGFjdGlvbkxvY2F0aW9uQW5kRmxhZ3MpOwogCisgICAgICAgIGlmIChl
cnJvciA9PSAiTWF0Y2hlcyBldmVyeXRoaW5nLiIpIHsKKyAgICAgICAgICAgIGlmIChub25Vbml2
ZXJzYWxBY3Rpb25TZWVuKQorICAgICAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiVHJpZ2dlciBt
YXRjaGluZyBldmVyeXRoaW5nIGZvdW5kIG5vdCBhdCBiZWdpbm5pbmcuICBUaGlzIG1heSBjYXVz
ZSBpbmNvcnJlY3QgYmVoYXZpb3Igd2l0aCBpZ25vcmUtcHJldmlvdXMtcnVsZXMiKTsKKyAgICAg
ICAgICAgIHVuaXZlcnNhbEFjdGlvbkxvY2F0aW9ucy5hcHBlbmQoYWN0aW9uTG9jYXRpb25BbmRG
bGFncyk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgbm9uVW5pdmVyc2FsQWN0aW9uU2Vl
biA9IHRydWU7CisgICAgICAgIAogICAgICAgICBpZiAoIWVycm9yLmlzTnVsbCgpKSB7CiAgICAg
ICAgICAgICBkYXRhTG9nRigiRXJyb3Igd2hpbGUgcGFyc2luZyAlczogJXNcbiIsIHRyaWdnZXIu
dXJsRmlsdGVyLnV0ZjgoKS5kYXRhKCksIGVycm9yLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAg
ICAgY29udGludWU7CkBAIC0xMzgsNyArMTQ4LDkgQEAgQ29tcGlsZWRDb250ZW50RXh0ZW5zaW9u
RGF0YSBjb21waWxlUnVsZQogICAgIGRvdWJsZSBkZmFCdWlsZFRpbWVTdGFydCA9IG1vbm90b25p
Y2FsbHlJbmNyZWFzaW5nVGltZSgpOwogI2VuZGlmCiAKLSAgICBjb25zdCBERkEgZGZhID0gTkZB
VG9ERkE6OmNvbnZlcnQobmZhKTsKKyAgICBERkEgZGZhID0gTkZBVG9ERkE6OmNvbnZlcnQobmZh
KTsKKyAgICBmb3IgKHVpbnQ2NF90IGFjdGlvbkxvY2F0aW9uIDogdW5pdmVyc2FsQWN0aW9uTG9j
YXRpb25zKQorICAgICAgICBkZmEubm9kZUF0KGRmYS5yb290KCkpLmFjdGlvbnMuYXBwZW5kKGFj
dGlvbkxvY2F0aW9uKTsKIAogI2lmIENPTlRFTlRfRVhURU5TSU9OU19QRVJGT1JNQU5DRV9SRVBP
UlRJTkcKICAgICBkb3VibGUgZGZhQnVpbGRUaW1lRW5kID0gbW9ub3RvbmljYWxseUluY3JlYXNp
bmdUaW1lKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkEuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkEuaAkocmV2
aXNpb24gMTgxNjY0KQorKysgU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZBLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDcgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIHJv
b3QoKSBjb25zdCB7IHJldHVybiBtX3Jvb3Q7IH0KICAgICB1bnNpZ25lZCBzaXplKCkgY29uc3Qg
eyByZXR1cm4gbV9ub2Rlcy5zaXplKCk7IH0KICAgICBjb25zdCBERkFOb2RlJiBub2RlQXQodW5z
aWduZWQgaSkgY29uc3QgeyByZXR1cm4gbV9ub2Rlc1tpXTsgfQorICAgIERGQU5vZGUmIG5vZGVB
dCh1bnNpZ25lZCBpKSB7IHJldHVybiBtX25vZGVzW2ldOyB9CiAKICNpZiBDT05URU5UX0VYVEVO
U0lPTlNfU1RBVEVfTUFDSElORV9ERUJVR0dJTkcKICAgICB2b2lkIGRlYnVnUHJpbnREb3QoKSBj
b25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQUJ5dGVjb2Rl
SW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRl
bnNpb25zL0RGQUJ5dGVjb2RlSW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAxODE2NjQpCisrKyBT
b3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkFCeXRlY29kZUludGVycHJldGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTEsNiArNTEsMTQgQEAgREZBQnl0ZWNvZGVJbnRlcnByZXRl
cjo6QWN0aW9ucyBERkFCeXRlYwogICAgIGJvb2wgdXJsSW5kZXhJc0FmdGVyRW5kT2ZTdHJpbmcg
PSBmYWxzZTsKICAgICBBY3Rpb25zIGFjdGlvbnM7CiAgICAgCisgICAgLy8gRklYTUU6IFRoZXNl
IGFyZSBnbG9iYWwgYWN0aW9ucyB0byBiZSBhcHBsaWVkIHRvIGFsbCByZXF1ZXN0cy4gVGhlc2Ug
YXJlIGNzcyBzZWxlY3RvcnMgYW5kIHNob3VsZCBiZSBjb21waWxlZCBpbnRvIGEgc3R5bGVzaGVl
dCB0aGUgZmlyc3QgdGltZS4KKyAgICAvLyBGSVhNRTogV2UgbmVlZCB0byBtYWtlIHN1cmUgdGhh
dCB0aGVzZSBhcmUgb25seSBjc3Mgc2VsZWN0b3JzIGFuZCB0aGF0IHRoZXJlIGFyZSBubyBydWxl
cyB0aGF0IGRvIG5vdCBtYXRjaCBldmVyeXRoaW5nIGJldHdlZW4gcnVsZXMgdGhhdCBkbyBmb3Ig
aWdub3JlLXByZXZpb3VzLXJ1bGVzIHRvIHdvcmsgY29ycmVjdGx5LgorICAgIC8vIEZJWE1FOiBB
cHBlbmRBY3Rpb24gc2hvdWxkIGJlIEFwcGVuZEFjdGlvbnMgc28gd2UgY2FuIHF1aWNrbHkgc2tp
cCBhbiBhcnJheSBvZiBhY3Rpb25zIGlmIHdlIGhhdmUgYWxyZWFkeSBjb21waWxlZCB0aGUgc3R5
bGVzaGVldC4KKyAgICB3aGlsZSAoc3RhdGljX2Nhc3Q8REZBQnl0ZWNvZGVJbnN0cnVjdGlvbj4o
bV9ieXRlY29kZVtwcm9ncmFtQ291bnRlcl0pID09IERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OkFw
cGVuZEFjdGlvbikgeworICAgICAgICBhY3Rpb25zLmFkZChzdGF0aWNfY2FzdDx1aW50NjRfdD4o
Z2V0Qml0czx1bnNpZ25lZD4obV9ieXRlY29kZSwgbV9ieXRlY29kZUxlbmd0aCwgcHJvZ3JhbUNv
dW50ZXIgKyBzaXplb2YoREZBQnl0ZWNvZGUpKSkpOworICAgICAgICBwcm9ncmFtQ291bnRlciAr
PSBpbnN0cnVjdGlvblNpemVXaXRoQXJndW1lbnRzKERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OkFw
cGVuZEFjdGlvbik7CisgICAgfQorICAgIAogICAgIC8vIFRoaXMgc2hvdWxkIGFsd2F5cyB0ZXJt
aW5hdGUgaWYgaW50ZXJwcmV0aW5nIGNvcnJlY3RseSBjb21waWxlZCBieXRlY29kZS4KICAgICB3
aGlsZSAodHJ1ZSkgewogICAgICAgICBBU1NFUlQocHJvZ3JhbUNvdW50ZXIgPD0gbV9ieXRlY29k
ZUxlbmd0aCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ORkEuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ORkEuaAkocmV2
aXNpb24gMTgxNjY0KQorKysgU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvTkZBLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgY2xhc3MgTkZBVG9ERkE7CiAvLyBUaGUg
bm9kZXMgYXJlIGFjY2Vzc2VkIHRocm91Z2ggYW4gaWRlbnRpZmllci4KIGNsYXNzIE5GQSB7CiBw
dWJsaWM6Ci0gICAgTkZBKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgTkZBKCk7CiAgICAgdW5zaWdu
ZWQgcm9vdCgpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdDsgfQogICAgIHVuc2lnbmVkIGNyZWF0ZU5v
ZGUoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvVVJMRmlsdGVy
UGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9u
cy9VUkxGaWx0ZXJQYXJzZXIuY3BwCShyZXZpc2lvbiAxODE2NjQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9jb250ZW50ZXh0ZW5zaW9ucy9VUkxGaWx0ZXJQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNzQsNiArMTc0LDcgQEAgcHVibGljOgogICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKG1f
cXVhbnRpZmllciA9PSBBdG9tUXVhbnRpZmllcjo6T25lLCAiVHJhbnNpdGlvbiB0byBxdWFudGlm
aWVkIHRlcm0gc2hvdWxkIG9ubHkgaGFwcGVuIG9uY2UuIik7CiAgICAgICAgIG1fcXVhbnRpZmll
ciA9IHF1YW50aWZpZXI7CiAgICAgfQorICAgIEF0b21RdWFudGlmaWVyIHF1YW50aWZpZXIoKSBj
b25zdCB7IHJldHVybiBtX3F1YW50aWZpZXI7IH0KIAogICAgIHVuc2lnbmVkIGdlbmVyYXRlR3Jh
cGgoTkZBJiBuZmEsIHVpbnQ2NF90IHBhdHRlcm5JZCwgdW5zaWduZWQgc3RhcnQpIGNvbnN0CiAg
ICAgewpAQCAtNDM4LDYgKzQzOSw0MiBAQCBwdWJsaWM6CiAKICAgICAgICAgc2lua0Zsb2F0aW5n
VGVybUlmTmVjZXNzYXJ5KCk7CiAKKyAgICAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHRoZXJlIGFy
ZSBhbnkgdGVybXMgd2l0aG91dCA/IG9yICouCisgICAgICAgIGJvb2wgbWF0Y2hlc0V2ZXJ5dGhp
bmcgPSB0cnVlOworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHRlcm0gOiBtX3N1bmtUZXJtcykg
eworICAgICAgICAgICAgaWYgKHRlcm0ucXVhbnRpZmllcigpID09IEF0b21RdWFudGlmaWVyOjpP
bmUgfHwgdGVybS5xdWFudGlmaWVyKCkgPT0gQXRvbVF1YW50aWZpZXI6Ok9uZU9yTW9yZSkgewor
ICAgICAgICAgICAgICAgIG1hdGNoZXNFdmVyeXRoaW5nID0gZmFsc2U7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1hdGNoZXNF
dmVyeXRoaW5nKQorICAgICAgICAgICAgZmFpbChBU0NJSUxpdGVyYWwoIk1hdGNoZXMgZXZlcnl0
aGluZy4iKSk7CisKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiB0ZXJtIDogbV9zdW5rVGVybXMp
IHsKKyAgICAgICAgICAgIEFTU0VSVChtX2xhc3RQcmVmaXhUcmVlRW50cnkpOworICAgICAgICAg
ICAgYXV0byBuZXh0RW50cnkgPSBtX2xhc3RQcmVmaXhUcmVlRW50cnktPm5leHRQYXR0ZXJuLmZp
bmQodGVybSk7CisgICAgICAgICAgICBpZiAobmV4dEVudHJ5ICE9IG1fbGFzdFByZWZpeFRyZWVF
bnRyeS0+bmV4dFBhdHRlcm4uZW5kKCkpIHsKKyAgICAgICAgICAgICAgICBtX2xhc3RQcmVmaXhU
cmVlRW50cnkgPSBuZXh0RW50cnktPnZhbHVlLmdldCgpOworICAgICAgICAgICAgICAgIG1fbmZh
LmFkZFJ1bGVJZChtX2xhc3RQcmVmaXhUcmVlRW50cnktPm5mYU5vZGUsIG1fcGF0dGVybklkKTsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFBy
ZWZpeFRyZWVFbnRyeT4gbmV4dFByZWZpeFRyZWVFbnRyeSA9IHN0ZDo6bWFrZV91bmlxdWU8UHJl
Zml4VHJlZUVudHJ5PigpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHVuc2ln
bmVkIG5ld0VuZCA9IHRlcm0uZ2VuZXJhdGVHcmFwaChtX25mYSwgbV9wYXR0ZXJuSWQsIG1fbGFz
dFByZWZpeFRyZWVFbnRyeS0+bmZhTm9kZSk7CisgICAgICAgICAgICAgICAgbmV4dFByZWZpeFRy
ZWVFbnRyeS0+bmZhTm9kZSA9IG5ld0VuZDsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAg
ICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fbGFzdFByZWZpeFRyZWVFbnRyeS0+bmV4dFBhdHRlcm4u
c2V0KHRlcm0sIFdURjo6bW92ZShuZXh0UHJlZml4VHJlZUVudHJ5KSk7CisgICAgICAgICAgICAg
ICAgQVNTRVJUKGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKKyAgICAgICAgICAgICAgICAKKyAgICAg
ICAgICAgICAgICBpZiAoIW1fbmV3UHJlZml4U3VidHJlZVJvb3QpIHsKKyAgICAgICAgICAgICAg
ICAgICAgbV9uZXdQcmVmaXhTdWJ0cmVlUm9vdCA9IG1fbGFzdFByZWZpeFRyZWVFbnRyeTsKKyAg
ICAgICAgICAgICAgICAgICAgbV9uZXdQcmVmaXhTdGFyaW5nUG9pbnQgPSB0ZXJtOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBtX2xhc3RQcmVm
aXhUcmVlRW50cnkgPSBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgpOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgbV9zdWJ0cmVlRW5kID0gbV9sYXN0UHJlZml4VHJlZUVudHJ5LT5u
ZmFOb2RlOworICAgICAgICB9CisgICAgICAgIAogICAgICAgICBpZiAoIW1fb3Blbkdyb3Vwcy5p
c0VtcHR5KCkpIHsKICAgICAgICAgICAgIGZhaWwoQVNDSUlMaXRlcmFsKCJUaGUgZXhwcmVzc2lv
biBoYXMgdW5jbG9zZWQgZ3JvdXBzLiIpKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTYzNCw4
ICs2NzEsNiBAQCBwcml2YXRlOgogICAgICAgICBpZiAoIW1fZmxvYXRpbmdUZXJtLmlzVmFsaWQo
KSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBBU1NFUlQobV9sYXN0UHJlZml4VHJl
ZUVudHJ5KTsKLQogICAgICAgICBpZiAobV9oYXNQcm9jZXNzZWRFbmRPZkxpbmVBc3NlcnRpb24p
IHsKICAgICAgICAgICAgIGZhaWwoQVNDSUlMaXRlcmFsKCJUaGUgZW5kIG9mIGxpbmUgYXNzZXJ0
aW9uIG11c3QgYmUgdGhlIGxhc3QgdGVybSBpbiBhbiBleHByZXNzaW9uLiIpKTsKICAgICAgICAg
ICAgIG1fZmxvYXRpbmdUZXJtID0gVGVybSgpOwpAQCAtNjUxLDMwICs2ODYsOCBAQCBwcml2YXRl
OgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgYXV0byBuZXh0RW50
cnkgPSBtX2xhc3RQcmVmaXhUcmVlRW50cnktPm5leHRQYXR0ZXJuLmZpbmQobV9mbG9hdGluZ1Rl
cm0pOwotICAgICAgICBpZiAobmV4dEVudHJ5ICE9IG1fbGFzdFByZWZpeFRyZWVFbnRyeS0+bmV4
dFBhdHRlcm4uZW5kKCkpIHsKLSAgICAgICAgICAgIG1fbGFzdFByZWZpeFRyZWVFbnRyeSA9IG5l
eHRFbnRyeS0+dmFsdWUuZ2V0KCk7Ci0gICAgICAgICAgICBtX25mYS5hZGRSdWxlSWQobV9sYXN0
UHJlZml4VHJlZUVudHJ5LT5uZmFOb2RlLCBtX3BhdHRlcm5JZCk7Ci0gICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJlZml4VHJlZUVudHJ5PiBuZXh0UHJlZml4
VHJlZUVudHJ5ID0gc3RkOjptYWtlX3VuaXF1ZTxQcmVmaXhUcmVlRW50cnk+KCk7Ci0KLSAgICAg
ICAgICAgIHVuc2lnbmVkIG5ld0VuZCA9IG1fZmxvYXRpbmdUZXJtLmdlbmVyYXRlR3JhcGgobV9u
ZmEsIG1fcGF0dGVybklkLCBtX2xhc3RQcmVmaXhUcmVlRW50cnktPm5mYU5vZGUpOwotICAgICAg
ICAgICAgbmV4dFByZWZpeFRyZWVFbnRyeS0+bmZhTm9kZSA9IG5ld0VuZDsKLQotICAgICAgICAg
ICAgYXV0byBhZGRSZXN1bHQgPSBtX2xhc3RQcmVmaXhUcmVlRW50cnktPm5leHRQYXR0ZXJuLnNl
dChtX2Zsb2F0aW5nVGVybSwgV1RGOjptb3ZlKG5leHRQcmVmaXhUcmVlRW50cnkpKTsKLSAgICAg
ICAgICAgIEFTU0VSVChhZGRSZXN1bHQuaXNOZXdFbnRyeSk7Ci0KLSAgICAgICAgICAgIGlmICgh
bV9uZXdQcmVmaXhTdWJ0cmVlUm9vdCkgewotICAgICAgICAgICAgICAgIG1fbmV3UHJlZml4U3Vi
dHJlZVJvb3QgPSBtX2xhc3RQcmVmaXhUcmVlRW50cnk7Ci0gICAgICAgICAgICAgICAgbV9uZXdQ
cmVmaXhTdGFyaW5nUG9pbnQgPSBtX2Zsb2F0aW5nVGVybTsKLSAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgbV9sYXN0UHJlZml4VHJlZUVudHJ5ID0gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZS5nZXQoKTsKLSAgICAgICAgfQotICAgICAgICBtX3N1YnRyZWVFbmQgPSBtX2xhc3RQcmVmaXhU
cmVlRW50cnktPm5mYU5vZGU7Ci0KKyAgICAgICAgbV9zdW5rVGVybXMuYXBwZW5kKG1fZmxvYXRp
bmdUZXJtKTsKICAgICAgICAgbV9mbG9hdGluZ1Rlcm0gPSBUZXJtKCk7Ci0gICAgICAgIEFTU0VS
VChtX2xhc3RQcmVmaXhUcmVlRW50cnkpOwogICAgIH0KIAogICAgIE5GQSYgbV9uZmE7CkBAIC02
ODYsNiArNjk5LDcgQEAgcHJpdmF0ZToKIAogICAgIFByZWZpeFRyZWVFbnRyeSogbV9sYXN0UHJl
Zml4VHJlZUVudHJ5OwogICAgIERlcXVlPFRlcm0+IG1fb3Blbkdyb3VwczsKKyAgICBWZWN0b3I8
VGVybT4gbV9zdW5rVGVybXM7CiAgICAgVGVybSBtX2Zsb2F0aW5nVGVybTsKICAgICBib29sIG1f
aGFzUHJvY2Vzc2VkRW5kT2ZMaW5lQXNzZXJ0aW9uIHsgZmFsc2UgfTsKIApJbmRleDogU291cmNl
L1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvVVJMRmlsdGVyUGFyc2VyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvVVJMRmlsdGVyUGFyc2VyLmgJKHJl
dmlzaW9uIDE4MTY2NCkKKysrIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL1VSTEZp
bHRlclBhcnNlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIGNsYXNzIE5GQTsK
IAogc3RydWN0IFByZWZpeFRyZWVFbnRyeTsKIAotY2xhc3MgVVJMRmlsdGVyUGFyc2VyIHsKK2Ns
YXNzIFdFQkNPUkVfRVhQT1JUIFVSTEZpbHRlclBhcnNlciB7CiBwdWJsaWM6CiAgICAgZXhwbGlj
aXQgVVJMRmlsdGVyUGFyc2VyKE5GQSYpOwogICAgIH5VUkxGaWx0ZXJQYXJzZXIoKTsKSW5kZXg6
IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9u
IDE4MTcwMykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1
IEBACisyMDE1LTAzLTE4ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgW0NvbnRlbnRFeHRlbnNpb25zXSBQcmVwYXJlIGZvciBjb21waWxpbmcg
c3R5bGVzaGVldHMgb2Ygc2VsZWN0b3JzIHRvIGJlIHVzZWQgb24gZXZlcnkgcGFnZS4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0Mjc5OQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25zLmNwcDoKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OnRlc3RQYXR0ZXJuKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6Cisg
ICAgICAgIFN0YXJ0IHRlc3RpbmcgcmVnZXggZmFpbHVyZXMuCisKIDIwMTUtMDMtMTggIERhbiBC
ZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBwcmVwYXJlLUNoYW5nZUxvZyBk
b2Vzbid0IHVuZGVyc3RhbmQgQyBzdHJpbmcgbGl0ZXJhbHMgc3BsaXQgYWNyb3NzIG11bHRpcGxl
IGxpbmVzIHdpdGggXApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Nv
bnRlbnRFeHRlbnNpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvQ29udGVudEV4dGVuc2lvbnMuY3BwCShyZXZpc2lvbiAxODE2NjQpCisrKyBU
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29udGVudEV4dGVuc2lvbnMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yOSwxMCArMjksMTMgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9Jbml0aWFsaXplVGhyZWFkaW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50RXh0ZW5z
aW9uQ29tcGlsZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25zQmFja2Vu
ZC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTkZBLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJj
ZUxvYWRJbmZvLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1VSTEZpbHRlclBhcnNlci5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVk
ZSA8d3RmL1J1bkxvb3AuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBDb250ZW50RXh0ZW5zaW9ucyB7CkBAIC0zMzUsNCAr
MzM4LDE4IEBAIFRFU1RfRihDb250ZW50RXh0ZW5zaW9uVGVzdCwgUmVzb3VyY2VUeXAKICAgICB0
ZXN0UmVxdWVzdChiYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwOi8vYmxvY2tfb25s
eV9pbWFnZXMub3JnIiwgUmVzb3VyY2VUeXBlOjpEb2N1bWVudCksIHsgfSk7CiB9CiAKK3N0YXRp
YyB2b2lkIHRlc3RQYXR0ZXJuRXJyb3IoY29uc3QgY2hhciogcGF0dGVybiwgY29uc3QgY2hhciog
ZXhwZWN0ZWRFcnJvcikKK3sKKyAgICBDb250ZW50RXh0ZW5zaW9uczo6TkZBIG5mYTsKKyAgICBD
b250ZW50RXh0ZW5zaW9uczo6VVJMRmlsdGVyUGFyc2VyIHBhcnNlcihuZmEpOworICAgIEVYUEVD
VF9TVFJFUShleHBlY3RlZEVycm9yLCBwYXJzZXIuYWRkUGF0dGVybihBU0NJSUxpdGVyYWwocGF0
dGVybiksIGZhbHNlLCAwKS51dGY4KCkuZGF0YSgpKTsKK30KKyAgICAKK1RFU1RfRihDb250ZW50
RXh0ZW5zaW9uVGVzdCwgUGFyc2luZ0ZhaWx1cmVzKQoreworICAgIHRlc3RQYXR0ZXJuRXJyb3Io
ImEqYj8uKi4/W2Etel0/W2Etel0qIiwgIk1hdGNoZXMgZXZlcnl0aGluZy4iKTsKKyAgICB0ZXN0
UGF0dGVybkVycm9yKCJhKmI/LiouP1thLXpdP1thLXpdKyIsICIiKTsKKyAgICB0ZXN0UGF0dGVy
bkVycm9yKCJhKmI/LiouP1thLXpdP1thLXpdIiwgIiIpOworfQorCiB9IC8vIG5hbWVzcGFjZSBU
ZXN0V2ViS2l0QVBJCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxODE3MDMpCisrKyBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxNS0wMy0xOCAgQWxl
eCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFtDb250
ZW50RXh0ZW5zaW9uc10gUHJlcGFyZSBmb3IgY29tcGlsaW5nIHN0eWxlc2hlZXRzIG9mIHNlbGVj
dG9ycyB0byBiZSB1c2VkIG9uIGV2ZXJ5IHBhZ2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI3OTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvY29udGVudGV4dGVuc2lvbnMvY3Nz
LWRpc3BsYXktbm9uZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy9jb250ZW50
ZXh0ZW5zaW9ucy9jc3MtZGlzcGxheS1ub25lLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9j
b250ZW50ZXh0ZW5zaW9ucy9jc3MtZGlzcGxheS1ub25lLmh0bWwuanNvbjoKKwogMjAxNS0wMy0x
OCAgTWFyY29zIENoYXZhcnLDrWEgVGVpamVpcm8gIDxjaGF2YXJyaWExOTkxQGdtYWlsLmNvbT4K
IAogICAgICAgICBVbnJldmlld2VkIEdUSyBHYXJkZW5pbmcgMTh0aCBNYXJjaApJbmRleDogTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9jb250ZW50ZXh0ZW5zaW9ucy9jc3MtZGlzcGxheS1ub25lLWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NvbnRlbnRl
eHRlbnNpb25zL2Nzcy1kaXNwbGF5LW5vbmUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxODE2NjQp
CisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NvbnRlbnRleHRlbnNpb25zL2Nzcy1kaXNwbGF5
LW5vbmUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMCw1ICsxMCwxMSBAQCBsYXll
ciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgw
LDApIHNpemUgNTIyeDE4CiAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNTIyOiAi
VGhpcyB0ZXh0IHNob3VsZCBhbHNvIG5vdCBiZSB2aXNpYmxlIG9uY2UgdGhlIGNzcyBzZWxlY3Rv
ciBpcyBhcHBsaWVkIChub3QgZG9uZSB5ZXQpLiIKICAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAo
MCw2OCkgc2l6ZSA3ODR4MTgKKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNp
emUgNTIyeDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNTIyOiAiVGhpcyB0
ZXh0IHNob3VsZCBhbHNvIG5vdCBiZSB2aXNpYmxlIG9uY2UgdGhlIGNzcyBzZWxlY3RvciBpcyBh
cHBsaWVkIChub3QgZG9uZSB5ZXQpLiIKKyAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwxMDIp
IHNpemUgNzg0eDE4CiAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDE3
M3gxOAogICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDE3MzogIlRoaXMgdGV4dCBz
aG91bGQgYmUgdmlzaWJsZS4iCisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMTM2KSBzaXpl
IDc4NHgxOAorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAyMDN4MTgK
KyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAyMDM6ICJUaGlzIHRleHQgc2hvdWxk
IGFsc28gYmUgdmlzaWJsZS4iCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NvbnRlbnRl
eHRlbnNpb25zL2Nzcy1kaXNwbGF5LW5vbmUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2NvbnRlbnRleHRlbnNpb25zL2Nzcy1kaXNwbGF5LW5vbmUuaHRtbAkocmV2
aXNpb24gMTgxNjY0KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb250ZW50ZXh0ZW5zaW9u
cy9jc3MtZGlzcGxheS1ub25lLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw3IEBACiA8
Ym9keT4KIDxwIGNsYXNzPSJoaWRkZW4iPlRoaXMgdGV4dCBzaG91bGQgbm90IGJlIHZpc2libGUg
b25jZSB0aGUgY3NzIHNlbGVjdG9yIGlzIGFwcGxpZWQgKG5vdCBkb25lIHlldCkuPC9wPgogPHAg
Y2xhc3M9ImhpZGRlbl/FvSI+VGhpcyB0ZXh0IHNob3VsZCBhbHNvIG5vdCBiZSB2aXNpYmxlIG9u
Y2UgdGhlIGNzcyBzZWxlY3RvciBpcyBhcHBsaWVkIChub3QgZG9uZSB5ZXQpLjwvcD4KKzxwIGNs
YXNzPSJhbHdheXNfaGlkZGVuIj5UaGlzIHRleHQgc2hvdWxkIGFsc28gbm90IGJlIHZpc2libGUg
b25jZSB0aGUgY3NzIHNlbGVjdG9yIGlzIGFwcGxpZWQgKG5vdCBkb25lIHlldCkuPC9wPgogPHAg
Y2xhc3M9Im5vdF9oaWRkZW4iPlRoaXMgdGV4dCBzaG91bGQgYmUgdmlzaWJsZS48L3A+Cis8cCBj
bGFzcz0ibm90X3JlbGF0ZWQiPlRoaXMgdGV4dCBzaG91bGQgYWxzbyBiZSB2aXNpYmxlLjwvcD4K
IDwvYm9keT4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvY29udGVudGV4dGVuc2lvbnMv
Y3NzLWRpc3BsYXktbm9uZS5odG1sLmpzb24KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9jb250ZW50ZXh0ZW5zaW9ucy9jc3MtZGlzcGxheS1ub25lLmh0bWwuanNvbgkocmV2
aXNpb24gMTgxNjY0KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb250ZW50ZXh0ZW5zaW9u
cy9jc3MtZGlzcGxheS1ub25lLmh0bWwuanNvbgkod29ya2luZyBjb3B5KQpAQCAtMTYsNSArMTYs
MjMgQEAKICAgICAgICAgInRyaWdnZXIiOiB7CiAgICAgICAgICAgICAidXJsLWZpbHRlciI6ICIu
KmNzcy1kaXNwbGF5LW5vbmUuaHRtbCIKICAgICAgICAgfQorICAgIH0sCisgICAgeworICAgICAg
ICAiYWN0aW9uIjogeworICAgICAgICAgICAgInR5cGUiOiAiY3NzLWRpc3BsYXktbm9uZSIsCisg
ICAgICAgICAgICAic2VsZWN0b3IiOiAiLm5vdF9oaWRkZW4iCisgICAgICAgIH0sCisgICAgICAg
ICJ0cmlnZ2VyIjogeworICAgICAgICAgICAgInVybC1maWx0ZXIiOiAiLipub3RfY3NzLWRpc3Bs
YXktbm9uZS5odG1sIgorICAgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAgICJhY3Rpb24i
OiB7CisgICAgICAgICAgICAidHlwZSI6ICJjc3MtZGlzcGxheS1ub25lIiwKKyAgICAgICAgICAg
ICJzZWxlY3RvciI6ICIuYWx3YXlzX2hpZGRlbiIKKyAgICAgICAgfSwKKyAgICAgICAgInRyaWdn
ZXIiOiB7CisgICAgICAgICAgICAidXJsLWZpbHRlciI6ICIuKiIKKyAgICAgICAgfQogICAgIH0K
IF0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249006</attachid>
            <date>2015-03-18 18:30:47 -0700</date>
            <delta_ts>2015-03-18 19:26:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142799-20150318183016.patch</filename>
            <type>text/plain</type>
            <size>35620</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MTcxNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU0IEBACisyMDE1LTAzLTE4ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW0NvbnRlbnRF
eHRlbnNpb25zXSBQcmVwYXJlIGZvciBjb21waWxpbmcgc3R5bGVzaGVldHMgb2Ygc2VsZWN0b3Jz
IHRvIGJlIHVzZWQgb24gZXZlcnkgcGFnZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0Mjc5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICBNYWtlIHByaXZhdGUgaGVhZGVycyB0byB1c2Ugd2l0aCBBUEkgdGVzdHMuCisgICAg
ICAgICogY29udGVudGV4dGVuc2lvbnMvQ29tcGlsZWRDb250ZW50RXh0ZW5zaW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpDb21waWxlZENvbnRlbnRFeHRlbnNp
b246Omdsb2JhbERpc3BsYXlOb25lU2VsZWN0b3JzKToKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5z
aW9ucy9Db21waWxlZENvbnRlbnRFeHRlbnNpb24uaDoKKyAgICAgICAgQWRkZWQgbWV0aG9kIHRv
IGdldCBvbmx5IHRoZSBzZWxlY3RvcnMgZnJvbSB0aGUgcm9vdCBvZiB0aGUgREZBLCB3aGljaCBh
cHBseSB0byBhbGwgVVJMcy4KKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0
ZW5zaW9uQ29tcGlsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6
OmNvbXBpbGVSdWxlTGlzdCk6CisgICAgICAgIEFkZGVkIGNoZWNraW5nIGlmIHRoZSB0cmlnZ2Vy
IHdpbGwgbWF0Y2ggZXZlcnl0aGluZy4KKyAgICAgICAgVGhlc2UgYWN0aW9ucyBjYW4gYmUgcHV0
IGRpcmVjdGx5IG9uIHRoZSByb290IG9mIHRoZSBERkEgd2l0aG91dCBhZGRpbmcgZXh0cmEgZXBz
aWxvbiB0cmFuc2l0aW9ucyB0byB0aGUgTkZBLgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25z
L0RGQS5oOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQTo6bm9kZUF0
KToKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9ERkFCeXRlY29kZUludGVycHJldGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpERkFCeXRlY29kZUludGVy
cHJldGVyOjppbnRlcnByZXQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6
OmdldEJpdHMpOiBEZWxldGVkLgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0RGQUJ5dGVj
b2RlSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpE
RkFCeXRlY29kZUludGVycHJldGVyOjpnZXRCaXRzKToKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5z
aW9ucy9ORkEuaDoKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9VUkxGaWx0ZXJQYXJzZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OlRlcm06OnF1YW50aWZp
ZXIpOgorICAgICAgICBTaW5rIHRlcm1zIHRvIGEgdmVjdG9yIHRoZW4gYWRkIG5vZGVzIHRvIE5G
QSB3aGVuIGZpbmFsaXppbmcgYWZ0ZXIgY2hlY2tpbmcgZm9yIHJlZ2V4ZXMgdGhhdCBtYXRjaCBl
dmVyeXRoaW5nLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkdyYXBoQnVp
bGRlcjo6R3JhcGhCdWlsZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25z
OjpHcmFwaEJ1aWxkZXI6OmZpbmFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRl
bnNpb25zOjpHcmFwaEJ1aWxkZXI6OnBhcnNlU3RhdHVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRlbnRFeHRlbnNpb25zOjpHcmFwaEJ1aWxkZXI6OmF0b21QYXR0ZXJuQ2hhcmFjdGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpHcmFwaEJ1aWxkZXI6OmF0b21CdWls
dEluQ2hhcmFjdGVyQ2xhc3MpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6
OkdyYXBoQnVpbGRlcjo6cXVhbnRpZnlBdG9tKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRF
eHRlbnNpb25zOjpHcmFwaEJ1aWxkZXI6OmF0b21CYWNrUmVmZXJlbmNlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpHcmFwaEJ1aWxkZXI6OmFzc2VydGlvbkJPTCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6R3JhcGhCdWlsZGVyOjphc3NlcnRp
b25Xb3JkQm91bmRhcnkpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6Okdy
YXBoQnVpbGRlcjo6YXRvbUNoYXJhY3RlckNsYXNzQXRvbSk6CisgICAgICAgIChXZWJDb3JlOjpD
b250ZW50RXh0ZW5zaW9uczo6R3JhcGhCdWlsZGVyOjphdG9tQ2hhcmFjdGVyQ2xhc3NSYW5nZSk6
CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6R3JhcGhCdWlsZGVyOjphdG9t
Q2hhcmFjdGVyQ2xhc3NCdWlsdEluKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNp
b25zOjpHcmFwaEJ1aWxkZXI6OmF0b21QYXJlbnRoZXRpY2FsQXNzZXJ0aW9uQmVnaW4pOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkdyYXBoQnVpbGRlcjo6ZGlzanVuY3Rp
b24pOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkdyYXBoQnVpbGRlcjo6
aGFzRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkdyYXBoQnVp
bGRlcjo6ZmFpbCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6R3JhcGhC
dWlsZGVyOjpzaW5rRmxvYXRpbmdUZXJtSWZOZWNlc3NhcnkpOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudEV4dGVuc2lvbnM6OlVSTEZpbHRlclBhcnNlcjo6YWRkUGF0dGVybik6CisgICAgICAg
IChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6VVJMRmlsdGVyUGFyc2VyOjpzdGF0dXNTdHJp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkdyYXBoQnVpbGRlcjo6
ZXJyb3JNZXNzYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9VUkxG
aWx0ZXJQYXJzZXIuaDoKKyAgICAgICAgVXNlIGFuIGVudW0gaW5zdGVhZCBvZiBzdHJpbmdzIGZv
ciB0aGUgc3RhdHVzIHRvIGF2b2lkIGNoZWNraW5nIHN0cmluZ3Mgd2hlbiB3ZSBoYXZlIGEgcmVn
ZXggdGhhdCBtYXRjaGVzIGV2ZXJ5dGhpbmcuCisKIDIwMTUtMDMtMTggIEplcmVteSBKb25lcyAg
PGplcmVteWpAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCB0eXBvIGluIHBsYXllclZpZXdDb250
cm9sbGVyV2lsbENhbmNlbE9wdGltaXplZEZ1bGxzY3JlZS4KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE4MTY2
NCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
d29ya2luZyBjb3B5KQpAQCAtOTkzLDcgKzk5Myw3IEBACiAJCTI0RjU0RUFEMTAxRkU5MTQwMDBB
RTc0MSAvKiBBcHBsaWNhdGlvbkNhY2hlSG9zdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMjRGNTRFQUIxMDFGRTkxNDAwMEFFNzQxIC8qIEFwcGxpY2F0
aW9uQ2FjaGVIb3N0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMjU0MkY0REExMTY2QzI1QTAwRTg5QTg2IC8qIFVzZXJHZXN0dXJlSW5kaWNhdG9y
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI1NDJG
NEQ4MTE2NkMyNUEwMEU4OUE4NiAvKiBVc2VyR2VzdHVyZUluZGljYXRvci5jcHAgKi87IH07CiAJ
CTI1NDJGNERCMTE2NkMyNUEwMEU4OUE4NiAvKiBVc2VyR2VzdHVyZUluZGljYXRvci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjU0MkY0RDkxMTY2QzI1
QTAwRTg5QTg2IC8qIFVzZXJHZXN0dXJlSW5kaWNhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMjYyMzkxMzYxQTY0OENFRTAwNzI1MUEzIC8q
IENvbnRlbnRFeHRlbnNpb25zRGVidWdnaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAyNjIzOTEzNTFBNjQ4Q0VFMDA3MjUxQTMgLyogQ29udGVudEV4
dGVuc2lvbnNEZWJ1Z2dpbmcuaCAqLzsgfTsKKwkJMjYyMzkxMzYxQTY0OENFRTAwNzI1MUEzIC8q
IENvbnRlbnRFeHRlbnNpb25zRGVidWdnaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAyNjIzOTEzNTFBNjQ4Q0VFMDA3MjUxQTMgLyogQ29udGVudEV4
dGVuc2lvbnNEZWJ1Z2dpbmcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkyNjI1NUYwMDE4ODc4REZGMDAwNkUxRkQgLyogVXNlckFnZW50SU9TLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjYyNTVFRkYx
ODg3OERGRjAwMDZFMUZEIC8qIFVzZXJBZ2VudElPUy5tbSAqLzsgfTsKIAkJMjYyNTVGMDMxODg3
OEUxMTAwMDZFMUZEIC8qIFVzZXJBZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMjYyNTVGMDExODg3OEUxMTAwMDZFMUZEIC8qIFVzZXJBZ2VudC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTI2MjU1
RjA0MTg4NzhFMTEwMDA2RTFGRCAvKiBVc2VyQWdlbnRNYWMubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNjI1NUYwMjE4ODc4RTExMDAwNkUxRkQgLyog
VXNlckFnZW50TWFjLm1tICovOyB9OwpAQCAtMTAwOCwxMCArMTAwOCwxMCBAQAogCQkyNjc3MjYw
MDFBNUIzQUQ5MDAzQzI0REQgLyogTkZBVG9ERkEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjY3NzI1RkExQTVCM0FEOTAwM0MyNEREIC8qIE5GQVRv
REZBLmNwcCAqLzsgfTsKIAkJMjY3NzI2MDExQTVCM0FEOTAwM0MyNEREIC8qIE5GQVRvREZBLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNjc3MjVGQjFB
NUIzQUQ5MDAzQzI0REQgLyogTkZBVG9ERkEuaCAqLzsgfTsKIAkJMjY3NzI2MDQxQTVERjZGMjAw
M0MyNEREIC8qIFVSTEZpbHRlclBhcnNlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAyNjc3MjYwMjFBNURGNkYyMDAzQzI0REQgLyogVVJMRmlsdGVy
UGFyc2VyLmNwcCAqLzsgfTsKLQkJMjY3NzI2MDUxQTVERjZGMjAwM0MyNEREIC8qIFVSTEZpbHRl
clBhcnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MjY3NzI2MDMxQTVERjZGMjAwM0MyNEREIC8qIFVSTEZpbHRlclBhcnNlci5oICovOyB9OworCQky
Njc3MjYwNTFBNURGNkYyMDAzQzI0REQgLyogVVJMRmlsdGVyUGFyc2VyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNjc3MjYwMzFBNURGNkYyMDAzQzI0
REQgLyogVVJMRmlsdGVyUGFyc2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJMjY5MjM5OTYxNTA1RTFBQTAwOUU1N0ZDIC8qIEpTSURCVmVyc2lv
bkNoYW5nZUV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyNjkyMzk5MjE1MDVFMUFBMDA5RTU3RkMgLyogSlNJREJWZXJzaW9uQ2hhbmdlRXZlbnQu
aCAqLzsgfTsKLQkJMjY5Mzk3MjIxQTRBNDEyRjAwRTgzNDlEIC8qIE5GQU5vZGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2OTM5NzIwMUE0QTQxMkYw
MEU4MzQ5RCAvKiBORkFOb2RlLmggKi87IH07Ci0JCTI2OTM5NzI0MUE0QTVCNjQwMEU4MzQ5RCAv
KiBORkEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2
OTM5NzIzMUE0QTVCNjQwMEU4MzQ5RCAvKiBORkEuaCAqLzsgfTsKKwkJMjY5Mzk3MjIxQTRBNDEy
RjAwRTgzNDlEIC8qIE5GQU5vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDI2OTM5NzIwMUE0QTQxMkYwMEU4MzQ5RCAvKiBORkFOb2RlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMjY5Mzk3MjQxQTRB
NUI2NDAwRTgzNDlEIC8qIE5GQS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMjY5Mzk3MjMxQTRBNUI2NDAwRTgzNDlEIC8qIE5GQS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTI2OTM5NzI2MUE0QTVGQkQw
MEU4MzQ5RCAvKiBORkEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMjY5Mzk3MjUxQTRBNUZCRDAwRTgzNDlEIC8qIE5GQS5jcHAgKi87IH07CiAJCTI2
QUEwRjlFMThEMkExOEIwMDQxOTM4MSAvKiBTZWxlY3RvclBzZXVkb0VsZW1lbnRUeXBlTWFwLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2QUEwRjlE
MThEMkExOEIwMDQxOTM4MSAvKiBTZWxlY3RvclBzZXVkb0VsZW1lbnRUeXBlTWFwLmNwcCAqLzsg
fTsKIAkJMjZCOTk5OEYxODAzQUU3MjAwRDAxMTIxIC8qIFJlZ2lzdGVyQWxsb2NhdG9yLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNkI5OTk4RTE4MDNB
RTcyMDBEMDExMjEgLyogUmVnaXN0ZXJBbGxvY2F0b3IuaCAqLzsgfTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbXBpbGVkQ29udGVudEV4dGVuc2lvbi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29tcGlsZWRDb250
ZW50RXh0ZW5zaW9uLmNwcAkocmV2aXNpb24gMTgxNjY0KQorKysgU291cmNlL1dlYkNvcmUvY29u
dGVudGV4dGVuc2lvbnMvQ29tcGlsZWRDb250ZW50RXh0ZW5zaW9uLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjUsNiArMjUsNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ29t
cGlsZWRDb250ZW50RXh0ZW5zaW9uLmgiCisjaW5jbHVkZSAiREZBQnl0ZWNvZGVJbnRlcnByZXRl
ci5oIgogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKIApAQCAtMzUsNiArMzYsMzMg
QEAgQ29tcGlsZWRDb250ZW50RXh0ZW5zaW9uOjp+Q29tcGlsZWRDb250ZQogewogfQogCitWZWN0
b3I8U3RyaW5nPiBDb21waWxlZENvbnRlbnRFeHRlbnNpb246Omdsb2JhbERpc3BsYXlOb25lU2Vs
ZWN0b3JzKCkKK3sKKyAgICAvLyBGSVhNRTogVGhpcyBuZWVkcyB0byBiZSBjbGVhbmVkIHVwLCBv
cHRpbWl6ZWQsIGFuZCBtb3ZlZCB0byBERkFCeXRlY29kZUludGVycHJldGVyLgorICAgIGNvbnN0
IERGQUJ5dGVjb2RlKiBiID0gYnl0ZWNvZGUoKTsKKyAgICB1bnNpZ25lZCBwcm9ncmFtQ291bnRl
ciA9IDA7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gYnl0ZWNvZGVMZW5ndGgoKTsKKyAgICAKKyAg
ICBERkFCeXRlY29kZUludGVycHJldGVyOjpBY3Rpb25zIGdsb2JhbEFjdGlvbkxvY2F0aW9uczsK
KyAgICB3aGlsZSAoc3RhdGljX2Nhc3Q8REZBQnl0ZWNvZGVJbnN0cnVjdGlvbj4oYltwcm9ncmFt
Q291bnRlcl0pID09IERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OkFwcGVuZEFjdGlvbikgeworICAg
ICAgICBnbG9iYWxBY3Rpb25Mb2NhdGlvbnMuYWRkKHN0YXRpY19jYXN0PHVpbnQ2NF90PihERkFC
eXRlY29kZUludGVycHJldGVyOjpnZXRCaXRzPHVuc2lnbmVkPihiLCBsZW5ndGgsIHByb2dyYW1D
b3VudGVyICsgc2l6ZW9mKERGQUJ5dGVjb2RlKSkpKTsKKyAgICAgICAgcHJvZ3JhbUNvdW50ZXIg
Kz0gaW5zdHJ1Y3Rpb25TaXplV2l0aEFyZ3VtZW50cyhERkFCeXRlY29kZUluc3RydWN0aW9uOjpB
cHBlbmRBY3Rpb24pOworICAgIH0KKyAgICAKKyAgICBWZWN0b3I8QWN0aW9uPiBnbG9iYWxBY3Rp
b25zOworICAgIGZvciAodWludDY0X3QgYWN0aW9uTG9jYXRpb24gOiBnbG9iYWxBY3Rpb25Mb2Nh
dGlvbnMpCisgICAgICAgIGdsb2JhbEFjdGlvbnMuYXBwZW5kKEFjdGlvbjo6ZGVzZXJpYWxpemUo
YWN0aW9ucygpLCBhY3Rpb25zTGVuZ3RoKCksIGFjdGlvbkxvY2F0aW9uKSk7CisgICAgCisgICAg
VmVjdG9yPFN0cmluZz4gc2VsZWN0b3JzOworICAgIGZvciAoQWN0aW9uJiBhY3Rpb24gOiBnbG9i
YWxBY3Rpb25zKSB7CisgICAgICAgIC8vIEZJWE1FOiBNYWtlIHN1cmUgb25seSBjc3Mgc2VsZWN0
b3JzIGNhbiBnZXQgaGVyZS4KKyAgICAgICAgaWYgKGFjdGlvbi5jc3NTZWxlY3RvcigpLmxlbmd0
aCgpKQorICAgICAgICAgICAgc2VsZWN0b3JzLmFwcGVuZChhY3Rpb24uY3NzU2VsZWN0b3IoKSk7
CisgICAgfQorICAgIAorICAgIHJldHVybiBzZWxlY3RvcnM7Cit9CisgICAgCiB9IC8vIG5hbWVz
cGFjZSBDb250ZW50RXh0ZW5zaW9ucwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db21waWxlZENvbnRlbnRFeHRlbnNpb24u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db21waWxl
ZENvbnRlbnRFeHRlbnNpb24uaAkocmV2aXNpb24gMTgxNjY0KQorKysgU291cmNlL1dlYkNvcmUv
Y29udGVudGV4dGVuc2lvbnMvQ29tcGlsZWRDb250ZW50RXh0ZW5zaW9uLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ0LDYgKzQ0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdW5zaWduZWQgYnl0ZWNv
ZGVMZW5ndGgoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBjb25zdCBTZXJpYWxpemVkQWN0aW9u
Qnl0ZSogYWN0aW9ucygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGFjdGlvbnNM
ZW5ndGgoKSBjb25zdCA9IDA7CisgICAgVmVjdG9yPFN0cmluZz4gZ2xvYmFsRGlzcGxheU5vbmVT
ZWxlY3RvcnMoKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIENvbnRlbnRFeHRlbnNpb25zCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uQ29tcGls
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0Nv
bnRlbnRFeHRlbnNpb25Db21waWxlci5jcHAJKHJldmlzaW9uIDE4MTY2NCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25Db21waWxlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEwOCwxOSArMTA4LDI5IEBAIENvbXBpbGVkQ29udGVudEV4dGVuc2lv
bkRhdGEgY29tcGlsZVJ1bGUKIAogICAgIFZlY3RvcjxTZXJpYWxpemVkQWN0aW9uQnl0ZT4gYWN0
aW9uczsKICAgICBWZWN0b3I8dW5zaWduZWQ+IGFjdGlvbkxvY2F0aW9ucyA9IHNlcmlhbGl6ZUFj
dGlvbnMocGFyc2VkUnVsZUxpc3QsIGFjdGlvbnMpOworICAgIFZlY3Rvcjx1aW50NjRfdD4gdW5p
dmVyc2FsQWN0aW9uTG9jYXRpb25zOwogCiAgICAgTkZBIG5mYTsKICAgICBVUkxGaWx0ZXJQYXJz
ZXIgdXJsRmlsdGVyUGFyc2VyKG5mYSk7CisgICAgYm9vbCBub25Vbml2ZXJzYWxBY3Rpb25TZWVu
ID0gZmFsc2U7CiAgICAgZm9yICh1bnNpZ25lZCBydWxlSW5kZXggPSAwOyBydWxlSW5kZXggPCBw
YXJzZWRSdWxlTGlzdC5zaXplKCk7ICsrcnVsZUluZGV4KSB7CiAgICAgICAgIGNvbnN0IENvbnRl
bnRFeHRlbnNpb25SdWxlJiBjb250ZW50RXh0ZW5zaW9uUnVsZSA9IHBhcnNlZFJ1bGVMaXN0W3J1
bGVJbmRleF07CiAgICAgICAgIGNvbnN0IFRyaWdnZXImIHRyaWdnZXIgPSBjb250ZW50RXh0ZW5z
aW9uUnVsZS50cmlnZ2VyKCk7CiAgICAgICAgIEFTU0VSVCh0cmlnZ2VyLnVybEZpbHRlci5sZW5n
dGgoKSk7CiAKICAgICAgICAgLy8gSGlnaCBiaXRzIGFyZSB1c2VkIGZvciBmbGFncy4gVGhpcyBz
aG91bGQgbWF0Y2ggaG93IHRoZXkgYXJlIHVzZWQgaW4gREZBQnl0ZWNvZGVDb21waWxlcjo6Y29t
cGlsZU5vZGUuCi0gICAgICAgIFN0cmluZyBlcnJvciA9IHVybEZpbHRlclBhcnNlci5hZGRQYXR0
ZXJuKHRyaWdnZXIudXJsRmlsdGVyLCB0cmlnZ2VyLnVybEZpbHRlcklzQ2FzZVNlbnNpdGl2ZSwg
KHN0YXRpY19jYXN0PHVpbnQ2NF90Pih0cmlnZ2VyLmZsYWdzKSA8PCAzMikgfCBzdGF0aWNfY2Fz
dDx1aW50NjRfdD4oYWN0aW9uTG9jYXRpb25zW3J1bGVJbmRleF0pKTsKKyAgICAgICAgdWludDY0
X3QgYWN0aW9uTG9jYXRpb25BbmRGbGFncyA9KHN0YXRpY19jYXN0PHVpbnQ2NF90Pih0cmlnZ2Vy
LmZsYWdzKSA8PCAzMikgfCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oYWN0aW9uTG9jYXRpb25zW3J1
bGVJbmRleF0pOworICAgICAgICBVUkxGaWx0ZXJQYXJzZXI6OlBhcnNlU3RhdHVzIHN0YXR1cyA9
IHVybEZpbHRlclBhcnNlci5hZGRQYXR0ZXJuKHRyaWdnZXIudXJsRmlsdGVyLCB0cmlnZ2VyLnVy
bEZpbHRlcklzQ2FzZVNlbnNpdGl2ZSwgYWN0aW9uTG9jYXRpb25BbmRGbGFncyk7CiAKLSAgICAg
ICAgaWYgKCFlcnJvci5pc051bGwoKSkgewotICAgICAgICAgICAgZGF0YUxvZ0YoIkVycm9yIHdo
aWxlIHBhcnNpbmcgJXM6ICVzXG4iLCB0cmlnZ2VyLnVybEZpbHRlci51dGY4KCkuZGF0YSgpLCBl
cnJvci51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgaWYgKHN0YXR1cyA9PSBVUkxGaWx0ZXJQYXJz
ZXI6Ok1hdGNoZXNFdmVyeXRoaW5nKSB7CisgICAgICAgICAgICBpZiAobm9uVW5pdmVyc2FsQWN0
aW9uU2VlbikKKyAgICAgICAgICAgICAgICBkYXRhTG9nRigiVHJpZ2dlciBtYXRjaGluZyBldmVy
eXRoaW5nIGZvdW5kIG5vdCBhdCBiZWdpbm5pbmcuICBUaGlzIG1heSBjYXVzZSBpbmNvcnJlY3Qg
YmVoYXZpb3Igd2l0aCBpZ25vcmUtcHJldmlvdXMtcnVsZXMiKTsKKyAgICAgICAgICAgIHVuaXZl
cnNhbEFjdGlvbkxvY2F0aW9ucy5hcHBlbmQoYWN0aW9uTG9jYXRpb25BbmRGbGFncyk7CisgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgbm9uVW5pdmVyc2FsQWN0aW9uU2VlbiA9IHRydWU7Cisg
ICAgICAgIAorICAgICAgICBpZiAoc3RhdHVzICE9IFVSTEZpbHRlclBhcnNlcjo6T2sgJiYgc3Rh
dHVzICE9IFVSTEZpbHRlclBhcnNlcjo6TWF0Y2hlc0V2ZXJ5dGhpbmcpIHsKKyAgICAgICAgICAg
IGRhdGFMb2dGKCJFcnJvciB3aGlsZSBwYXJzaW5nICVzOiAlc1xuIiwgdHJpZ2dlci51cmxGaWx0
ZXIudXRmOCgpLmRhdGEoKSwgVVJMRmlsdGVyUGFyc2VyOjpzdGF0dXNTdHJpbmcoc3RhdHVzKS51
dGY4KCkuZGF0YSgpKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgfQpA
QCAtMTM4LDcgKzE0OCw5IEBAIENvbXBpbGVkQ29udGVudEV4dGVuc2lvbkRhdGEgY29tcGlsZVJ1
bGUKICAgICBkb3VibGUgZGZhQnVpbGRUaW1lU3RhcnQgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2lu
Z1RpbWUoKTsKICNlbmRpZgogCi0gICAgY29uc3QgREZBIGRmYSA9IE5GQVRvREZBOjpjb252ZXJ0
KG5mYSk7CisgICAgREZBIGRmYSA9IE5GQVRvREZBOjpjb252ZXJ0KG5mYSk7CisgICAgZm9yICh1
aW50NjRfdCBhY3Rpb25Mb2NhdGlvbiA6IHVuaXZlcnNhbEFjdGlvbkxvY2F0aW9ucykKKyAgICAg
ICAgZGZhLm5vZGVBdChkZmEucm9vdCgpKS5hY3Rpb25zLmFwcGVuZChhY3Rpb25Mb2NhdGlvbik7
CiAKICNpZiBDT05URU5UX0VYVEVOU0lPTlNfUEVSRk9STUFOQ0VfUkVQT1JUSU5HCiAgICAgZG91
YmxlIGRmYUJ1aWxkVGltZUVuZCA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZBLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZBLmgJKHJldmlzaW9uIDE4MTY2NCkK
KysrIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQS5oCSh3b3JraW5nIGNvcHkp
CkBAIC00OCw2ICs0OCw3IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCByb290KCkgY29uc3QgeyBy
ZXR1cm4gbV9yb290OyB9CiAgICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbm9k
ZXMuc2l6ZSgpOyB9CiAgICAgY29uc3QgREZBTm9kZSYgbm9kZUF0KHVuc2lnbmVkIGkpIGNvbnN0
IHsgcmV0dXJuIG1fbm9kZXNbaV07IH0KKyAgICBERkFOb2RlJiBub2RlQXQodW5zaWduZWQgaSkg
eyByZXR1cm4gbV9ub2Rlc1tpXTsgfQogCiAjaWYgQ09OVEVOVF9FWFRFTlNJT05TX1NUQVRFX01B
Q0hJTkVfREVCVUdHSU5HCiAgICAgdm9pZCBkZWJ1Z1ByaW50RG90KCkgY29uc3Q7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkFCeXRlY29kZUludGVycHJldGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkFCeXRl
Y29kZUludGVycHJldGVyLmNwcAkocmV2aXNpb24gMTgxNjY0KQorKysgU291cmNlL1dlYkNvcmUv
Y29udGVudGV4dGVuc2lvbnMvREZBQnl0ZWNvZGVJbnRlcnByZXRlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM0LDEzICszNCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKIG5hbWVzcGFj
ZSBDb250ZW50RXh0ZW5zaW9ucyB7CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBJbnRUeXBlPgotc3Rh
dGljIGlubGluZSBJbnRUeXBlIGdldEJpdHMoY29uc3QgREZBQnl0ZWNvZGUqIGJ5dGVjb2RlLCB1
bnNpZ25lZCBieXRlY29kZUxlbmd0aCwgdW5zaWduZWQgaW5kZXgpCi17Ci0gICAgQVNTRVJUX1VO
VVNFRChieXRlY29kZUxlbmd0aCwgaW5kZXggKyBzaXplb2YoSW50VHlwZSkgPD0gYnl0ZWNvZGVM
ZW5ndGgpOwotICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxjb25zdCBJbnRUeXBlKj4oJmJ5
dGVjb2RlW2luZGV4XSk7Ci19Ci0KIERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OkFjdGlvbnMgREZB
Qnl0ZWNvZGVJbnRlcnByZXRlcjo6aW50ZXJwcmV0KGNvbnN0IENTdHJpbmcmIHVybENTdHJpbmcs
IHVpbnQxNl90IGZsYWdzKQogewogICAgIGNvbnN0IGNoYXIqIHVybCA9IHVybENTdHJpbmcuZGF0
YSgpOwpAQCAtNTEsNiArNDQsMTEgQEAgREZBQnl0ZWNvZGVJbnRlcnByZXRlcjo6QWN0aW9ucyBE
RkFCeXRlYwogICAgIGJvb2wgdXJsSW5kZXhJc0FmdGVyRW5kT2ZTdHJpbmcgPSBmYWxzZTsKICAg
ICBBY3Rpb25zIGFjdGlvbnM7CiAgICAgCisgICAgLy8gVGhlIGFjdGlvbnMgZnJvbSB0aGUgREZB
IHJvb3QgYXJlIGFsd2F5cyB1c2VkLCBzbyB0aGV5IGFyZSBhY2Nlc3NlZCB0aHJvdWdoIENvbXBp
bGVkQ29udGVudEV4dGVuc2lvbjo6Z2xvYmFsRGlzcGxheU5vbmVTZWxlY3RvcnMuCisgICAgLy8g
RklYTUU6IENoYW5nZSBBcHBlbmRBY3Rpb24gdG8gQXBwZW5kQWN0aW9ucyB0byBtYWtlIHRoaXMg
ZmFzdGVyLgorICAgIHdoaWxlIChzdGF0aWNfY2FzdDxERkFCeXRlY29kZUluc3RydWN0aW9uPiht
X2J5dGVjb2RlW3Byb2dyYW1Db3VudGVyXSkgPT0gREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6QXBw
ZW5kQWN0aW9uKQorICAgICAgICBwcm9ncmFtQ291bnRlciArPSBpbnN0cnVjdGlvblNpemVXaXRo
QXJndW1lbnRzKERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OkFwcGVuZEFjdGlvbik7CisgICAgCiAg
ICAgLy8gVGhpcyBzaG91bGQgYWx3YXlzIHRlcm1pbmF0ZSBpZiBpbnRlcnByZXRpbmcgY29ycmVj
dGx5IGNvbXBpbGVkIGJ5dGVjb2RlLgogICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgIEFTU0VS
VChwcm9ncmFtQ291bnRlciA8PSBtX2J5dGVjb2RlTGVuZ3RoKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQUJ5dGVjb2RlSW50ZXJwcmV0ZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkFCeXRlY29kZUludGVycHJl
dGVyLmgJKHJldmlzaW9uIDE4MTY2NCkKKysrIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNp
b25zL0RGQUJ5dGVjb2RlSW50ZXJwcmV0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsNiArNTIs
MTQgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBjb25zdCBERkFCeXRlY29kZSogbV9ieXRlY29k
ZTsKICAgICBjb25zdCB1bnNpZ25lZCBtX2J5dGVjb2RlTGVuZ3RoOworCisgICAgZnJpZW5kIGNs
YXNzIENvbXBpbGVkQ29udGVudEV4dGVuc2lvbjsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSW50
VHlwZT4KKyAgICBzdGF0aWMgaW5saW5lIEludFR5cGUgZ2V0Qml0cyhjb25zdCBERkFCeXRlY29k
ZSogYnl0ZWNvZGUsIHVuc2lnbmVkIGJ5dGVjb2RlTGVuZ3RoLCB1bnNpZ25lZCBpbmRleCkKKyAg
ICB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoYnl0ZWNvZGVMZW5ndGgsIGluZGV4ICsgc2l6ZW9m
KEludFR5cGUpIDw9IGJ5dGVjb2RlTGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuICpyZWludGVycHJl
dF9jYXN0PGNvbnN0IEludFR5cGUqPigmYnl0ZWNvZGVbaW5kZXhdKTsKKyAgICB9CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBDb250ZW50RXh0ZW5zaW9ucwpJbmRleDogU291cmNlL1dlYkNvcmUvY29u
dGVudGV4dGVuc2lvbnMvTkZBLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY29udGVu
dGV4dGVuc2lvbnMvTkZBLmgJKHJldmlzaW9uIDE4MTY2NCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nv
bnRlbnRleHRlbnNpb25zL05GQS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBAIGNs
YXNzIE5GQVRvREZBOwogLy8gVGhlIG5vZGVzIGFyZSBhY2Nlc3NlZCB0aHJvdWdoIGFuIGlkZW50
aWZpZXIuCiBjbGFzcyBORkEgewogcHVibGljOgotICAgIE5GQSgpOworICAgIFdFQkNPUkVfRVhQ
T1JUIE5GQSgpOwogICAgIHVuc2lnbmVkIHJvb3QoKSBjb25zdCB7IHJldHVybiBtX3Jvb3Q7IH0K
ICAgICB1bnNpZ25lZCBjcmVhdGVOb2RlKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NvbnRl
bnRleHRlbnNpb25zL1VSTEZpbHRlclBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvY29udGVudGV4dGVuc2lvbnMvVVJMRmlsdGVyUGFyc2VyLmNwcAkocmV2aXNpb24gMTgx
NjY0KQorKysgU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvVVJMRmlsdGVyUGFyc2Vy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL1lhcnJQYXJzZXIuaD4KICNpbmNsdWRlIDx3dGYvQml0VmVjdG9yLmg+CiAjaW5jbHVk
ZSA8d3RmL0RlcXVlLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKQEAgLTE3NCw2ICsxNzUsNyBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VS
VF9XSVRIX01FU1NBR0UobV9xdWFudGlmaWVyID09IEF0b21RdWFudGlmaWVyOjpPbmUsICJUcmFu
c2l0aW9uIHRvIHF1YW50aWZpZWQgdGVybSBzaG91bGQgb25seSBoYXBwZW4gb25jZS4iKTsKICAg
ICAgICAgbV9xdWFudGlmaWVyID0gcXVhbnRpZmllcjsKICAgICB9CisgICAgQXRvbVF1YW50aWZp
ZXIgcXVhbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fcXVhbnRpZmllcjsgfQogCiAgICAgdW5z
aWduZWQgZ2VuZXJhdGVHcmFwaChORkEmIG5mYSwgdWludDY0X3QgcGF0dGVybklkLCB1bnNpZ25l
ZCBzdGFydCkgY29uc3QKICAgICB7CkBAIC00MjgsNiArNDMwLDcgQEAgcHVibGljOgogICAgICAg
ICAsIG1fc3VidHJlZVN0YXJ0KG5mYS5yb290KCkpCiAgICAgICAgICwgbV9zdWJ0cmVlRW5kKG5m
YS5yb290KCkpCiAgICAgICAgICwgbV9sYXN0UHJlZml4VHJlZUVudHJ5KCZwcmVmaXhUcmVlUm9v
dCkKKyAgICAgICAgLCBtX3BhcnNlU3RhdHVzKFVSTEZpbHRlclBhcnNlcjo6T2spCiAgICAgewog
ICAgIH0KIApAQCAtNDM4LDIwICs0NDEsNTYgQEAgcHVibGljOgogCiAgICAgICAgIHNpbmtGbG9h
dGluZ1Rlcm1JZk5lY2Vzc2FyeSgpOwogCisgICAgICAgIC8vIENoZWNrIHRvIHNlZSBpZiB0aGVy
ZSBhcmUgYW55IHRlcm1zIHdpdGhvdXQgPyBvciAqLgorICAgICAgICBib29sIG1hdGNoZXNFdmVy
eXRoaW5nID0gdHJ1ZTsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiB0ZXJtIDogbV9zdW5rVGVy
bXMpIHsKKyAgICAgICAgICAgIGlmICh0ZXJtLnF1YW50aWZpZXIoKSA9PSBBdG9tUXVhbnRpZmll
cjo6T25lIHx8IHRlcm0ucXVhbnRpZmllcigpID09IEF0b21RdWFudGlmaWVyOjpPbmVPck1vcmUp
IHsKKyAgICAgICAgICAgICAgICBtYXRjaGVzRXZlcnl0aGluZyA9IGZhbHNlOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChtYXRj
aGVzRXZlcnl0aGluZykKKyAgICAgICAgICAgIGZhaWwoVVJMRmlsdGVyUGFyc2VyOjpNYXRjaGVz
RXZlcnl0aGluZyk7CisKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiB0ZXJtIDogbV9zdW5rVGVy
bXMpIHsKKyAgICAgICAgICAgIEFTU0VSVChtX2xhc3RQcmVmaXhUcmVlRW50cnkpOworICAgICAg
ICAgICAgYXV0byBuZXh0RW50cnkgPSBtX2xhc3RQcmVmaXhUcmVlRW50cnktPm5leHRQYXR0ZXJu
LmZpbmQodGVybSk7CisgICAgICAgICAgICBpZiAobmV4dEVudHJ5ICE9IG1fbGFzdFByZWZpeFRy
ZWVFbnRyeS0+bmV4dFBhdHRlcm4uZW5kKCkpIHsKKyAgICAgICAgICAgICAgICBtX2xhc3RQcmVm
aXhUcmVlRW50cnkgPSBuZXh0RW50cnktPnZhbHVlLmdldCgpOworICAgICAgICAgICAgICAgIG1f
bmZhLmFkZFJ1bGVJZChtX2xhc3RQcmVmaXhUcmVlRW50cnktPm5mYU5vZGUsIG1fcGF0dGVybklk
KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PFByZWZpeFRyZWVFbnRyeT4gbmV4dFByZWZpeFRyZWVFbnRyeSA9IHN0ZDo6bWFrZV91bmlxdWU8
UHJlZml4VHJlZUVudHJ5PigpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHVu
c2lnbmVkIG5ld0VuZCA9IHRlcm0uZ2VuZXJhdGVHcmFwaChtX25mYSwgbV9wYXR0ZXJuSWQsIG1f
bGFzdFByZWZpeFRyZWVFbnRyeS0+bmZhTm9kZSk7CisgICAgICAgICAgICAgICAgbmV4dFByZWZp
eFRyZWVFbnRyeS0+bmZhTm9kZSA9IG5ld0VuZDsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAg
ICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fbGFzdFByZWZpeFRyZWVFbnRyeS0+bmV4dFBhdHRl
cm4uc2V0KHRlcm0sIFdURjo6bW92ZShuZXh0UHJlZml4VHJlZUVudHJ5KSk7CisgICAgICAgICAg
ICAgICAgQVNTRVJUKGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKKyAgICAgICAgICAgICAgICAKKyAg
ICAgICAgICAgICAgICBpZiAoIW1fbmV3UHJlZml4U3VidHJlZVJvb3QpIHsKKyAgICAgICAgICAg
ICAgICAgICAgbV9uZXdQcmVmaXhTdWJ0cmVlUm9vdCA9IG1fbGFzdFByZWZpeFRyZWVFbnRyeTsK
KyAgICAgICAgICAgICAgICAgICAgbV9uZXdQcmVmaXhTdGFyaW5nUG9pbnQgPSB0ZXJtOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBtX2xhc3RQ
cmVmaXhUcmVlRW50cnkgPSBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgpOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgbV9zdWJ0cmVlRW5kID0gbV9sYXN0UHJlZml4VHJlZUVudHJ5
LT5uZmFOb2RlOworICAgICAgICB9CisgICAgICAgIAogICAgICAgICBpZiAoIW1fb3Blbkdyb3Vw
cy5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIGZhaWwoQVNDSUlMaXRlcmFsKCJUaGUgZXhwcmVz
c2lvbiBoYXMgdW5jbG9zZWQgZ3JvdXBzLiIpKTsKKyAgICAgICAgICAgIGZhaWwoVVJMRmlsdGVy
UGFyc2VyOjpVbmNsb3NlZEdyb3Vwcyk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
IAogICAgICAgICBpZiAobV9zdWJ0cmVlU3RhcnQgIT0gbV9zdWJ0cmVlRW5kKQogICAgICAgICAg
ICAgbV9uZmEuc2V0RmluYWwobV9zdWJ0cmVlRW5kLCBtX3BhdHRlcm5JZCk7CiAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgIGZhaWwoQVNDSUlMaXRlcmFsKCJUaGUgcGF0dGVybiBjYW5ub3QgbWF0
Y2ggYW55dGhpbmcuIikpOworICAgICAgICAgICAgZmFpbChVUkxGaWx0ZXJQYXJzZXI6OkNhbm5v
dE1hdGNoQW55dGhpbmcpOwogICAgIH0KIAotICAgIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdl
KCkgY29uc3QKKyAgICBVUkxGaWx0ZXJQYXJzZXI6OlBhcnNlU3RhdHVzIHBhcnNlU3RhdHVzKCkg
Y29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBtX2Vycm9yTWVzc2FnZTsKKyAgICAgICAgcmV0
dXJuIG1fcGFyc2VTdGF0dXM7CiAgICAgfQogCiAgICAgdm9pZCBhdG9tUGF0dGVybkNoYXJhY3Rl
cihVQ2hhciBjaGFyYWN0ZXIpCkBAIC00NjAsNyArNDk5LDcgQEAgcHVibGljOgogICAgICAgICAg
ICAgcmV0dXJuOwogCiAgICAgICAgIGlmICghaXNBU0NJSShjaGFyYWN0ZXIpKSB7Ci0gICAgICAg
ICAgICBmYWlsKEFTQ0lJTGl0ZXJhbCgiT25seSBBU0NJSSBjaGFyYWN0ZXJzIGFyZSBzdXBwb3J0
ZWQgaW4gcGF0dGVybi4iKSk7CisgICAgICAgICAgICBmYWlsKFVSTEZpbHRlclBhcnNlcjo6Tm9u
QVNDSUkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTQ4Miw3ICs1MjEs
NyBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChidWlsdEluQ2hhcmFjdGVyQ2xhc3NJRCA9PSBKU0M6
OllhcnI6Ok5ld2xpbmVDbGFzc0lEICYmIGludmVydGVkKQogICAgICAgICAgICAgbV9mbG9hdGlu
Z1Rlcm0gPSBUZXJtKFRlcm06OlVuaXZlcnNhbFRyYW5zaXRpb24pOwogICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBmYWlsKEFTQ0lJTGl0ZXJhbCgiQ2hhcmFjdGVyIGNsYXNzIGlzIG5vdCBzdXBw
b3J0ZWQuIikpOworICAgICAgICAgICAgZmFpbChVUkxGaWx0ZXJQYXJzZXI6OlVuc3VwcG9ydGVk
Q2hhcmFjdGVyQ2xhc3MpOwogICAgIH0KIAogICAgIHZvaWQgcXVhbnRpZnlBdG9tKHVuc2lnbmVk
IG1pbmltdW0sIHVuc2lnbmVkIG1heGltdW0sIGJvb2wpCkBAIC00OTEsNyArNTMwLDcgQEAgcHVi
bGljOgogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmICghbV9mbG9hdGluZ1Rlcm0u
aXNWYWxpZCgpKQotICAgICAgICAgICAgZmFpbChBU0NJSUxpdGVyYWwoIlF1YW50aWZpZXIgd2l0
aG91dCBjb3JyZXNwb25kaW5nIHRlcm0gdG8gcXVhbnRpZnkuIikpOworICAgICAgICAgICAgZmFp
bChVUkxGaWx0ZXJQYXJzZXI6Ok1pc3BsYWNlZFF1YW50aWZpZXIpOwogCiAgICAgICAgIGlmICgh
bWluaW11bSAmJiBtYXhpbXVtID09IDEpCiAgICAgICAgICAgICBtX2Zsb2F0aW5nVGVybS5xdWFu
dGlmeShBdG9tUXVhbnRpZmllcjo6WmVyb09yT25lKTsKQEAgLTUwMCwxMiArNTM5LDEyIEBAIHB1
YmxpYzoKICAgICAgICAgZWxzZSBpZiAobWluaW11bSA9PSAxICYmIG1heGltdW0gPT0gSlNDOjpZ
YXJyOjpxdWFudGlmeUluZmluaXRlKQogICAgICAgICAgICAgbV9mbG9hdGluZ1Rlcm0ucXVhbnRp
ZnkoQXRvbVF1YW50aWZpZXI6Ok9uZU9yTW9yZSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
IGZhaWwoQVNDSUlMaXRlcmFsKCJBcmJpdHJhcnkgYXRvbSByZXBldGl0aW9ucyBhcmUgbm90IHN1
cHBvcnRlZC4iKSk7CisgICAgICAgICAgICBmYWlsKFVSTEZpbHRlclBhcnNlcjo6SW52YWxpZFF1
YW50aWZpZXIpOwogICAgIH0KIAogICAgIHZvaWQgYXRvbUJhY2tSZWZlcmVuY2UodW5zaWduZWQp
CiAgICAgewotICAgICAgICBmYWlsKEFTQ0lJTGl0ZXJhbCgiUGF0dGVybnMgY2Fubm90IGNvbnRh
aW4gYmFja3JlZmVyZW5jZXMuIikpOworICAgICAgICBmYWlsKFVSTEZpbHRlclBhcnNlcjo6QmFj
a1JlZmVyZW5jZSk7CiAgICAgfQogCiAgICAgdm9pZCBhc3NlcnRpb25CT0woKQpAQCAtNTE0LDcg
KzU1Myw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBpZiAobV9z
dWJ0cmVlU3RhcnQgIT0gbV9zdWJ0cmVlRW5kIHx8IG1fZmxvYXRpbmdUZXJtLmlzVmFsaWQoKSB8
fCAhbV9vcGVuR3JvdXBzLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGZhaWwoQVNDSUlMaXRlcmFs
KCJTdGFydCBvZiBsaW5lIGFzc2VydGlvbiBjYW4gb25seSBhcHBlYXIgYXMgdGhlIGZpcnN0IHRl
cm0gaW4gYSBmaWx0ZXIuIikpOworICAgICAgICAgICAgZmFpbChVUkxGaWx0ZXJQYXJzZXI6Ok1p
c3BsYWNlZFN0YXJ0T2ZMaW5lKTsKICAgICB9CiAKICAgICB2b2lkIGFzc2VydGlvbkVPTCgpCkBA
IC01MzAsNyArNTY5LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBhc3NlcnRpb25Xb3JkQm91bmRh
cnkoYm9vbCkKICAgICB7Ci0gICAgICAgIGZhaWwoQVNDSUlMaXRlcmFsKCJXb3JkIGJvdW5kYXJp
ZXMgYXNzZXJ0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCB5ZXQuIikpOworICAgICAgICBmYWlsKFVS
TEZpbHRlclBhcnNlcjo6V29yZEJvdW5kYXJ5KTsKICAgICB9CiAKICAgICB2b2lkIGF0b21DaGFy
YWN0ZXJDbGFzc0JlZ2luKGJvb2wgaW52ZXJ0ZWQgPSBmYWxzZSkKQEAgLTU0OSwxMCArNTg4LDcg
QEAgcHVibGljOgogICAgICAgICBpZiAoaGFzRXJyb3IoKSkKICAgICAgICAgICAgIHJldHVybjsK
IAotICAgICAgICBpZiAoIWlzQVNDSUkoY2hhcmFjdGVyKSkgewotICAgICAgICAgICAgZmFpbChB
U0NJSUxpdGVyYWwoIk5vbiBBU0NJSSBDaGFyYWN0ZXIgaW4gYSBjaGFyYWN0ZXIgc2V0LiIpKTsK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQorICAgICAgICBBU1NFUlQoaXNBU0NJSShj
aGFyYWN0ZXIpKTsKIAogICAgICAgICBtX2Zsb2F0aW5nVGVybS5hZGRDaGFyYWN0ZXIoY2hhcmFj
dGVyLCBtX3BhdHRlcm5Jc0Nhc2VTZW5zaXRpdmUpOwogICAgIH0KQEAgLTU2MiwxMCArNTk4LDEw
IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKGhhc0Vycm9yKCkpCiAgICAgICAgICAgICByZXR1cm47
CiAKLSAgICAgICAgaWYgKCFhIHx8ICFiIHx8ICFpc0FTQ0lJKGEpIHx8ICFpc0FTQ0lJKGIpKSB7
Ci0gICAgICAgICAgICBmYWlsKEFTQ0lJTGl0ZXJhbCgiTm9uIEFTQ0lJIENoYXJhY3RlciBpbiBh
IGNoYXJhY3RlciByYW5nZSBvZiBhIGNoYXJhY3RlciBzZXQuIikpOwotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB9CisgICAgICAgIEFTU0VSVChhKTsKKyAgICAgICAgQVNTRVJUKGIpOwor
ICAgICAgICBBU1NFUlQoaXNBU0NJSShhKSk7CisgICAgICAgIEFTU0VSVChpc0FTQ0lJKGIpKTsK
IAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBhOyBpIDw9IGI7ICsraSkKICAgICAgICAgICAg
IG1fZmxvYXRpbmdUZXJtLmFkZENoYXJhY3RlcihzdGF0aWNfY2FzdDxVQ2hhcj4oaSksIG1fcGF0
dGVybklzQ2FzZVNlbnNpdGl2ZSk7CkBAIC01NzgsNyArNjE0LDcgQEAgcHVibGljOgogCiAgICAg
dm9pZCBhdG9tQ2hhcmFjdGVyQ2xhc3NCdWlsdEluKEpTQzo6WWFycjo6QnVpbHRJbkNoYXJhY3Rl
ckNsYXNzSUQsIGJvb2wpCiAgICAgewotICAgICAgICBmYWlsKEFTQ0lJTGl0ZXJhbCgiQnVpbHRp
bnMgY2hhcmFjdGVyIGNsYXNzIGF0b21zIGFyZSBub3Qgc3VwcG9ydGVkIHlldC4iKSk7CisgICAg
ICAgIGZhaWwoVVJMRmlsdGVyUGFyc2VyOjpBdG9tQ2hhcmFjdGVyKTsKICAgICB9CiAKICAgICB2
b2lkIGF0b21QYXJlbnRoZXNlc1N1YnBhdHRlcm5CZWdpbihib29sID0gdHJ1ZSkKQEAgLTU5Myw3
ICs2MjksNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGF0b21QYXJlbnRoZXRpY2FsQXNzZXJ0aW9u
QmVnaW4oYm9vbCA9IGZhbHNlKQogICAgIHsKLSAgICAgICAgZmFpbChBU0NJSUxpdGVyYWwoIkdy
b3VwcyBhcmUgbm90IHN1cHBvcnRlZCB5ZXQuIikpOworICAgICAgICBmYWlsKFVSTEZpbHRlclBh
cnNlcjo6R3JvdXApOwogICAgIH0KIAogICAgIHZvaWQgYXRvbVBhcmVudGhlc2VzRW5kKCkKQEAg
LTYwOSwxNiArNjQ1LDE2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGlzanVuY3Rpb24oKQogICAg
IHsKLSAgICAgICAgZmFpbChBU0NJSUxpdGVyYWwoIkRpc2p1bmN0aW9ucyBhcmUgbm90IHN1cHBv
cnRlZCB5ZXQuIikpOworICAgICAgICBmYWlsKFVSTEZpbHRlclBhcnNlcjo6RGlzanVuY3Rpb24p
OwogICAgIH0KIAogcHJpdmF0ZToKICAgICBib29sIGhhc0Vycm9yKCkgY29uc3QKICAgICB7Ci0g
ICAgICAgIHJldHVybiAhbV9lcnJvck1lc3NhZ2UuaXNOdWxsKCk7CisgICAgICAgIHJldHVybiBt
X3BhcnNlU3RhdHVzICE9IFVSTEZpbHRlclBhcnNlcjo6T2s7CiAgICAgfQogCi0gICAgdm9pZCBm
YWlsKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQorICAgIHZvaWQgZmFpbChVUkxGaWx0ZXJQ
YXJzZXI6OlBhcnNlU3RhdHVzIHJlYXNvbikKICAgICB7CiAgICAgICAgIGlmIChoYXNFcnJvcigp
KQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNjI2LDcgKzY2Miw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIGlmIChtX25ld1ByZWZpeFN1YnRyZWVSb290KQogICAgICAgICAgICAgbV9uZXdQcmVmaXhT
dWJ0cmVlUm9vdC0+bmV4dFBhdHRlcm4ucmVtb3ZlKG1fbmV3UHJlZml4U3RhcmluZ1BvaW50KTsK
IAotICAgICAgICBtX2Vycm9yTWVzc2FnZSA9IGVycm9yTWVzc2FnZTsKKyAgICAgICAgbV9wYXJz
ZVN0YXR1cyA9IHJlYXNvbjsKICAgICB9CiAKICAgICB2b2lkIHNpbmtGbG9hdGluZ1Rlcm1JZk5l
Y2Vzc2FyeSgpCkBAIC02MzQsMTAgKzY3MCw4IEBAIHByaXZhdGU6CiAgICAgICAgIGlmICghbV9m
bG9hdGluZ1Rlcm0uaXNWYWxpZCgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIEFT
U0VSVChtX2xhc3RQcmVmaXhUcmVlRW50cnkpOwotCiAgICAgICAgIGlmIChtX2hhc1Byb2Nlc3Nl
ZEVuZE9mTGluZUFzc2VydGlvbikgewotICAgICAgICAgICAgZmFpbChBU0NJSUxpdGVyYWwoIlRo
ZSBlbmQgb2YgbGluZSBhc3NlcnRpb24gbXVzdCBiZSB0aGUgbGFzdCB0ZXJtIGluIGFuIGV4cHJl
c3Npb24uIikpOworICAgICAgICAgICAgZmFpbChVUkxGaWx0ZXJQYXJzZXI6Ok1pc3BsYWNlZEVu
ZE9mTGluZSk7CiAgICAgICAgICAgICBtX2Zsb2F0aW5nVGVybSA9IFRlcm0oKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtNjUxLDMwICs2ODUsOCBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgYXV0byBuZXh0RW50cnkgPSBt
X2xhc3RQcmVmaXhUcmVlRW50cnktPm5leHRQYXR0ZXJuLmZpbmQobV9mbG9hdGluZ1Rlcm0pOwot
ICAgICAgICBpZiAobmV4dEVudHJ5ICE9IG1fbGFzdFByZWZpeFRyZWVFbnRyeS0+bmV4dFBhdHRl
cm4uZW5kKCkpIHsKLSAgICAgICAgICAgIG1fbGFzdFByZWZpeFRyZWVFbnRyeSA9IG5leHRFbnRy
eS0+dmFsdWUuZ2V0KCk7Ci0gICAgICAgICAgICBtX25mYS5hZGRSdWxlSWQobV9sYXN0UHJlZml4
VHJlZUVudHJ5LT5uZmFOb2RlLCBtX3BhdHRlcm5JZCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJlZml4VHJlZUVudHJ5PiBuZXh0UHJlZml4VHJlZUVu
dHJ5ID0gc3RkOjptYWtlX3VuaXF1ZTxQcmVmaXhUcmVlRW50cnk+KCk7Ci0KLSAgICAgICAgICAg
IHVuc2lnbmVkIG5ld0VuZCA9IG1fZmxvYXRpbmdUZXJtLmdlbmVyYXRlR3JhcGgobV9uZmEsIG1f
cGF0dGVybklkLCBtX2xhc3RQcmVmaXhUcmVlRW50cnktPm5mYU5vZGUpOwotICAgICAgICAgICAg
bmV4dFByZWZpeFRyZWVFbnRyeS0+bmZhTm9kZSA9IG5ld0VuZDsKLQotICAgICAgICAgICAgYXV0
byBhZGRSZXN1bHQgPSBtX2xhc3RQcmVmaXhUcmVlRW50cnktPm5leHRQYXR0ZXJuLnNldChtX2Zs
b2F0aW5nVGVybSwgV1RGOjptb3ZlKG5leHRQcmVmaXhUcmVlRW50cnkpKTsKLSAgICAgICAgICAg
IEFTU0VSVChhZGRSZXN1bHQuaXNOZXdFbnRyeSk7Ci0KLSAgICAgICAgICAgIGlmICghbV9uZXdQ
cmVmaXhTdWJ0cmVlUm9vdCkgewotICAgICAgICAgICAgICAgIG1fbmV3UHJlZml4U3VidHJlZVJv
b3QgPSBtX2xhc3RQcmVmaXhUcmVlRW50cnk7Ci0gICAgICAgICAgICAgICAgbV9uZXdQcmVmaXhT
dGFyaW5nUG9pbnQgPSBtX2Zsb2F0aW5nVGVybTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgbV9sYXN0UHJlZml4VHJlZUVudHJ5ID0gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQo
KTsKLSAgICAgICAgfQotICAgICAgICBtX3N1YnRyZWVFbmQgPSBtX2xhc3RQcmVmaXhUcmVlRW50
cnktPm5mYU5vZGU7Ci0KKyAgICAgICAgbV9zdW5rVGVybXMuYXBwZW5kKG1fZmxvYXRpbmdUZXJt
KTsKICAgICAgICAgbV9mbG9hdGluZ1Rlcm0gPSBUZXJtKCk7Ci0gICAgICAgIEFTU0VSVChtX2xh
c3RQcmVmaXhUcmVlRW50cnkpOwogICAgIH0KIAogICAgIE5GQSYgbV9uZmE7CkBAIC02ODYsMTMg
KzY5OCwxNCBAQCBwcml2YXRlOgogCiAgICAgUHJlZml4VHJlZUVudHJ5KiBtX2xhc3RQcmVmaXhU
cmVlRW50cnk7CiAgICAgRGVxdWU8VGVybT4gbV9vcGVuR3JvdXBzOworICAgIFZlY3RvcjxUZXJt
PiBtX3N1bmtUZXJtczsKICAgICBUZXJtIG1fZmxvYXRpbmdUZXJtOwogICAgIGJvb2wgbV9oYXNQ
cm9jZXNzZWRFbmRPZkxpbmVBc3NlcnRpb24geyBmYWxzZSB9OwogCiAgICAgUHJlZml4VHJlZUVu
dHJ5KiBtX25ld1ByZWZpeFN1YnRyZWVSb290ID0gbnVsbHB0cjsKICAgICBUZXJtIG1fbmV3UHJl
Zml4U3RhcmluZ1BvaW50OwogCi0gICAgU3RyaW5nIG1fZXJyb3JNZXNzYWdlOworICAgIFVSTEZp
bHRlclBhcnNlcjo6UGFyc2VTdGF0dXMgbV9wYXJzZVN0YXR1czsKIH07CiAKIFVSTEZpbHRlclBh
cnNlcjo6VVJMRmlsdGVyUGFyc2VyKE5GQSYgbmZhKQpAQCAtNzA2LDMzICs3MTksNzQgQEAgVVJM
RmlsdGVyUGFyc2VyOjp+VVJMRmlsdGVyUGFyc2VyKCkKIHsKIH0KIAotU3RyaW5nIFVSTEZpbHRl
clBhcnNlcjo6YWRkUGF0dGVybihjb25zdCBTdHJpbmcmIHBhdHRlcm4sIGJvb2wgcGF0dGVybklz
Q2FzZVNlbnNpdGl2ZSwgdWludDY0X3QgcGF0dGVybklkKQorVVJMRmlsdGVyUGFyc2VyOjpQYXJz
ZVN0YXR1cyBVUkxGaWx0ZXJQYXJzZXI6OmFkZFBhdHRlcm4oY29uc3QgU3RyaW5nJiBwYXR0ZXJu
LCBib29sIHBhdHRlcm5Jc0Nhc2VTZW5zaXRpdmUsIHVpbnQ2NF90IHBhdHRlcm5JZCkKIHsKICAg
ICBpZiAoIXBhdHRlcm4uY29udGFpbnNPbmx5QVNDSUkoKSkKLSAgICAgICAgcmV0dXJuIEFTQ0lJ
TGl0ZXJhbCgiVVJMRmlsdGVyUGFyc2VyIG9ubHkgc3VwcG9ydHMgQVNDSUkgcGF0dGVybnMuIik7
CisgICAgICAgIHJldHVybiBOb25BU0NJSTsKICAgICBBU1NFUlQoIXBhdHRlcm4uaXNFbXB0eSgp
KTsKIAogICAgIGlmIChwYXR0ZXJuLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIEFTQ0lJTGl0
ZXJhbCgiRW1wdHkgcGF0dGVybi4iKTsKKyAgICAgICAgcmV0dXJuIEVtcHR5UGF0dGVybjsKIAog
ICAgIHVuc2lnbmVkIG9sZFNpemUgPSBtX25mYS5ncmFwaFNpemUoKTsKIAotICAgIFN0cmluZyBl
cnJvcjsKLQorICAgIFBhcnNlU3RhdHVzIHN0YXR1cyA9IE9rOwogICAgIEdyYXBoQnVpbGRlciBn
cmFwaEJ1aWxkZXIobV9uZmEsICptX3ByZWZpeFRyZWVSb290LCBwYXR0ZXJuSXNDYXNlU2Vuc2l0
aXZlLCBwYXR0ZXJuSWQpOwotICAgIGVycm9yID0gU3RyaW5nKEpTQzo6WWFycjo6cGFyc2UoZ3Jh
cGhCdWlsZGVyLCBwYXR0ZXJuLCAwKSk7CisgICAgU3RyaW5nIGVycm9yID0gU3RyaW5nKEpTQzo6
WWFycjo6cGFyc2UoZ3JhcGhCdWlsZGVyLCBwYXR0ZXJuLCAwKSk7CiAgICAgaWYgKGVycm9yLmlz
TnVsbCgpKQogICAgICAgICBncmFwaEJ1aWxkZXIuZmluYWxpemUoKTsKKyAgICBlbHNlCisgICAg
ICAgIHN0YXR1cyA9IFlhcnJFcnJvcjsKKyAgICAKKyAgICBpZiAoc3RhdHVzID09IE9rKQorICAg
ICAgICBzdGF0dXMgPSBncmFwaEJ1aWxkZXIucGFyc2VTdGF0dXMoKTsKIAotICAgIGlmIChlcnJv
ci5pc051bGwoKSkKLSAgICAgICAgZXJyb3IgPSBncmFwaEJ1aWxkZXIuZXJyb3JNZXNzYWdlKCk7
Ci0KLSAgICBpZiAoIWVycm9yLmlzTnVsbCgpKQorICAgIGlmIChzdGF0dXMgIT0gT2spCiAgICAg
ICAgIG1fbmZhLnJlc3RvcmVUb0dyYXBoU2l6ZShvbGRTaXplKTsKIAotICAgIHJldHVybiBlcnJv
cjsKKyAgICByZXR1cm4gc3RhdHVzOwogfQogCitTdHJpbmcgVVJMRmlsdGVyUGFyc2VyOjpzdGF0
dXNTdHJpbmcoUGFyc2VTdGF0dXMgc3RhdHVzKQoreworICAgIHN3aXRjaCAoc3RhdHVzKSB7Cisg
ICAgY2FzZSBPazoKKyAgICAgICAgcmV0dXJuICJPayI7CisgICAgY2FzZSBNYXRjaGVzRXZlcnl0
aGluZzoKKyAgICAgICAgcmV0dXJuICJNYXRjaGVzIGV2ZXJ5dGhpbmcuIjsKKyAgICBjYXNlIFVu
Y2xvc2VkR3JvdXBzOgorICAgICAgICByZXR1cm4gIlRoZSBleHByZXNzaW9uIGhhcyB1bmNsb3Nl
ZCBncm91cHMuIjsKKyAgICBjYXNlIENhbm5vdE1hdGNoQW55dGhpbmc6CisgICAgICAgIHJldHVy
biAiVGhlIHBhdHRlcm4gY2Fubm90IG1hdGNoIGFueXRoaW5nLiI7CisgICAgY2FzZSBOb25BU0NJ
SToKKyAgICAgICAgcmV0dXJuICJPbmx5IEFTQ0lJIGNoYXJhY3RlcnMgYXJlIHN1cHBvcnRlZCBp
biBwYXR0ZXJuLiI7CisgICAgY2FzZSBVbnN1cHBvcnRlZENoYXJhY3RlckNsYXNzOgorICAgICAg
ICByZXR1cm4gIkNoYXJhY3RlciBjbGFzcyBpcyBub3Qgc3VwcG9ydGVkLiI7CisgICAgY2FzZSBN
aXNwbGFjZWRRdWFudGlmaWVyOgorICAgICAgICByZXR1cm4gIlF1YW50aWZpZXIgd2l0aG91dCBj
b3JyZXNwb25kaW5nIHRlcm0gdG8gcXVhbnRpZnkuIjsKKyAgICBjYXNlIEJhY2tSZWZlcmVuY2U6
CisgICAgICAgIHJldHVybiAiUGF0dGVybnMgY2Fubm90IGNvbnRhaW4gYmFja3JlZmVyZW5jZXMu
IjsKKyAgICBjYXNlIE1pc3BsYWNlZFN0YXJ0T2ZMaW5lOgorICAgICAgICByZXR1cm4gIlN0YXJ0
IG9mIGxpbmUgYXNzZXJ0aW9uIGNhbiBvbmx5IGFwcGVhciBhcyB0aGUgZmlyc3QgdGVybSBpbiBh
IGZpbHRlci4iOworICAgIGNhc2UgV29yZEJvdW5kYXJ5OgorICAgICAgICByZXR1cm4gIldvcmQg
Ym91bmRhcmllcyBhc3NlcnRpb25zIGFyZSBub3Qgc3VwcG9ydGVkIHlldC4iOworICAgIGNhc2Ug
QXRvbUNoYXJhY3RlcjoKKyAgICAgICAgcmV0dXJuICJCdWlsdGlucyBjaGFyYWN0ZXIgY2xhc3Mg
YXRvbXMgYXJlIG5vdCBzdXBwb3J0ZWQgeWV0LiI7CisgICAgY2FzZSBHcm91cDoKKyAgICAgICAg
cmV0dXJuICJHcm91cHMgYXJlIG5vdCBzdXBwb3J0ZWQgeWV0LiI7CisgICAgY2FzZSBEaXNqdW5j
dGlvbjoKKyAgICAgICAgcmV0dXJuICJEaXNqdW5jdGlvbnMgYXJlIG5vdCBzdXBwb3J0ZWQgeWV0
LiI7CisgICAgY2FzZSBNaXNwbGFjZWRFbmRPZkxpbmU6CisgICAgICAgIHJldHVybiAiVGhlIGVu
ZCBvZiBsaW5lIGFzc2VydGlvbiBtdXN0IGJlIHRoZSBsYXN0IHRlcm0gaW4gYW4gZXhwcmVzc2lv
bi4iOworICAgIGNhc2UgRW1wdHlQYXR0ZXJuOgorICAgICAgICByZXR1cm4gIkVtcHR5IHBhdHRl
cm4uIjsKKyAgICBjYXNlIFlhcnJFcnJvcjoKKyAgICAgICAgcmV0dXJuICJJbnRlcm5hbCBlcnJv
ciBpbiBZQVJSLiI7CisgICAgY2FzZSBJbnZhbGlkUXVhbnRpZmllcjoKKyAgICAgICAgcmV0dXJu
ICJBcmJpdHJhcnkgYXRvbSByZXBldGl0aW9ucyBhcmUgbm90IHN1cHBvcnRlZC4iOworICAgIH0K
K30KKyAgICAKIH0gLy8gbmFtZXNwYWNlIENvbnRlbnRFeHRlbnNpb25zCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL1VSTEZp
bHRlclBhcnNlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNp
b25zL1VSTEZpbHRlclBhcnNlci5oCShyZXZpc2lvbiAxODE2NjQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9jb250ZW50ZXh0ZW5zaW9ucy9VUkxGaWx0ZXJQYXJzZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MzksMTEgKzM5LDMxIEBAIGNsYXNzIE5GQTsKIAogc3RydWN0IFByZWZpeFRyZWVFbnRyeTsKIAot
Y2xhc3MgVVJMRmlsdGVyUGFyc2VyIHsKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIFVSTEZpbHRlclBh
cnNlciB7CiBwdWJsaWM6CisgICAgZW51bSBQYXJzZVN0YXR1cyB7CisgICAgICAgIE9rLAorICAg
ICAgICBNYXRjaGVzRXZlcnl0aGluZywKKyAgICAgICAgVW5jbG9zZWRHcm91cHMsCisgICAgICAg
IENhbm5vdE1hdGNoQW55dGhpbmcsCisgICAgICAgIE5vbkFTQ0lJLAorICAgICAgICBVbnN1cHBv
cnRlZENoYXJhY3RlckNsYXNzLAorICAgICAgICBNaXNwbGFjZWRRdWFudGlmaWVyLAorICAgICAg
ICBCYWNrUmVmZXJlbmNlLAorICAgICAgICBNaXNwbGFjZWRTdGFydE9mTGluZSwKKyAgICAgICAg
V29yZEJvdW5kYXJ5LAorICAgICAgICBBdG9tQ2hhcmFjdGVyLAorICAgICAgICBHcm91cCwKKyAg
ICAgICAgRGlzanVuY3Rpb24sCisgICAgICAgIE1pc3BsYWNlZEVuZE9mTGluZSwKKyAgICAgICAg
RW1wdHlQYXR0ZXJuLAorICAgICAgICBZYXJyRXJyb3IsCisgICAgICAgIEludmFsaWRRdWFudGlm
aWVyLAorICAgIH07CisgICAgc3RhdGljIFN0cmluZyBzdGF0dXNTdHJpbmcoUGFyc2VTdGF0dXMp
OwogICAgIGV4cGxpY2l0IFVSTEZpbHRlclBhcnNlcihORkEmKTsKICAgICB+VVJMRmlsdGVyUGFy
c2VyKCk7Ci0gICAgU3RyaW5nIGFkZFBhdHRlcm4oY29uc3QgU3RyaW5nJiBwYXR0ZXJuLCBib29s
IHBhdHRlcm5Jc0Nhc2VTZW5zaXRpdmUsIHVpbnQ2NF90IHBhdHRlcm5JZCk7CisgICAgUGFyc2VT
dGF0dXMgYWRkUGF0dGVybihjb25zdCBTdHJpbmcmIHBhdHRlcm4sIGJvb2wgcGF0dGVybklzQ2Fz
ZVNlbnNpdGl2ZSwgdWludDY0X3QgcGF0dGVybklkKTsKIAogcHJpdmF0ZToKICAgICBORkEmIG1f
bmZhOwpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxv
ZwkocmV2aXNpb24gMTgxNzAzKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMTUtMDMtMTggIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5z
ZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBbQ29udGVudEV4dGVuc2lvbnNdIFByZXBhcmUgZm9y
IGNvbXBpbGluZyBzdHlsZXNoZWV0cyBvZiBzZWxlY3RvcnMgdG8gYmUgdXNlZCBvbiBldmVyeSBw
YWdlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQy
Nzk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29udGVudEV4dGVuc2lvbnMuY3BwOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6dGVzdFBhdHRlcm4pOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
VEVTVF9GKToKKyAgICAgICAgU3RhcnQgdGVzdGluZyByZWdleCBmYWlsdXJlcy4KKwogMjAxNS0w
My0xOCAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIHByZXBhcmUt
Q2hhbmdlTG9nIGRvZXNuJ3QgdW5kZXJzdGFuZCBDIHN0cmluZyBsaXRlcmFscyBzcGxpdCBhY3Jv
c3MgbXVsdGlwbGUgbGluZXMgd2l0aCBcCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvQ29udGVudEV4dGVuc2lvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db250ZW50RXh0ZW5zaW9ucy5jcHAJKHJldmlzaW9uIDE4
MTY2NCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db250ZW50RXh0ZW5z
aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDEwICsyOSwxMyBAQAogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0luaXRpYWxpemVUaHJlYWRpbmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Nv
bnRlbnRFeHRlbnNpb25Db21waWxlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ29udGVudEV4dGVu
c2lvbnNCYWNrZW5kLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9ORkEuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1Jlc291cmNlTG9hZEluZm8uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvVVJMRmlsdGVyUGFyc2VyLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQu
aD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIENvbnRlbnRFeHRlbnNpb25zIHsK
QEAgLTMzNSw0ICszMzgsMTkgQEAgVEVTVF9GKENvbnRlbnRFeHRlbnNpb25UZXN0LCBSZXNvdXJj
ZVR5cAogICAgIHRlc3RSZXF1ZXN0KGJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImh0dHA6
Ly9ibG9ja19vbmx5X2ltYWdlcy5vcmciLCBSZXNvdXJjZVR5cGU6OkRvY3VtZW50KSwgeyB9KTsK
IH0KIAorc3RhdGljIHZvaWQgdGVzdFBhdHRlcm5TdGF0dXMoY29uc3QgY2hhciogcGF0dGVybiwg
Q29udGVudEV4dGVuc2lvbnM6OlVSTEZpbHRlclBhcnNlcjo6UGFyc2VTdGF0dXMgc3RhdHVzKQor
eworICAgIENvbnRlbnRFeHRlbnNpb25zOjpORkEgbmZhOworICAgIENvbnRlbnRFeHRlbnNpb25z
OjpVUkxGaWx0ZXJQYXJzZXIgcGFyc2VyKG5mYSk7CisgICAgRVhQRUNUX0VRKHN0YXR1cywgcGFy
c2VyLmFkZFBhdHRlcm4oQVNDSUlMaXRlcmFsKHBhdHRlcm4pLCBmYWxzZSwgMCkpOworfQorICAg
IAorVEVTVF9GKENvbnRlbnRFeHRlbnNpb25UZXN0LCBQYXJzaW5nRmFpbHVyZXMpCit7CisgICAg
dGVzdFBhdHRlcm5TdGF0dXMoImEqYj8uKi4/W2Etel0/W2Etel0qIiwgQ29udGVudEV4dGVuc2lv
bnM6OlVSTEZpbHRlclBhcnNlcjo6UGFyc2VTdGF0dXM6Ok1hdGNoZXNFdmVyeXRoaW5nKTsKKyAg
ICB0ZXN0UGF0dGVyblN0YXR1cygiYSpiPy4qLj9bYS16XT9bYS16XSsiLCBDb250ZW50RXh0ZW5z
aW9uczo6VVJMRmlsdGVyUGFyc2VyOjpQYXJzZVN0YXR1czo6T2spOworICAgIHRlc3RQYXR0ZXJu
U3RhdHVzKCJhKmI/LiouP1thLXpdP1thLXpdIiwgQ29udGVudEV4dGVuc2lvbnM6OlVSTEZpbHRl
clBhcnNlcjo6UGFyc2VTdGF0dXM6Ok9rKTsKKyAgICAvLyBGSVhNRTogQWRkIHJlZ2V4ZXMgdGhh
dCBjYXVzZSBlYWNoIHBhcnNlIHN0YXR1cy4KK30KKwogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktp
dEFQSQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTgxNzAzKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTUtMDMtMTggIEFsZXggQ2hyaXN0
ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBbQ29udGVudEV4dGVu
c2lvbnNdIFByZXBhcmUgZm9yIGNvbXBpbGluZyBzdHlsZXNoZWV0cyBvZiBzZWxlY3RvcnMgdG8g
YmUgdXNlZCBvbiBldmVyeSBwYWdlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQyNzk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2NvbnRlbnRleHRlbnNpb25zL2Nzcy1kaXNwbGF5
LW5vbmUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvY29udGVudGV4dGVuc2lv
bnMvY3NzLWRpc3BsYXktbm9uZS5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvY29udGVudGV4
dGVuc2lvbnMvY3NzLWRpc3BsYXktbm9uZS5odG1sLmpzb246CisKIDIwMTUtMDMtMTggIE1hcmNv
cyBDaGF2YXJyw61hIFRlaWplaXJvICA8Y2hhdmFycmlhMTk5MUBnbWFpbC5jb20+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCBHVEsgR2FyZGVuaW5nIDE4dGggTWFyY2gKSW5kZXg6IExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvY29udGVudGV4dGVuc2lvbnMvY3NzLWRpc3BsYXktbm9uZS1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb250ZW50ZXh0ZW5zaW9u
cy9jc3MtZGlzcGxheS1ub25lLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTgxNjY0KQorKysgTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9jb250ZW50ZXh0ZW5zaW9ucy9jc3MtZGlzcGxheS1ub25lLWV4
cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTAsNSArMTAsMTEgQEAgbGF5ZXIgYXQgKDAs
MCkgc2l6ZSA4MDB4NjAwCiAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXpl
IDUyMngxOAogICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDUyMjogIlRoaXMgdGV4
dCBzaG91bGQgYWxzbyBub3QgYmUgdmlzaWJsZSBvbmNlIHRoZSBjc3Mgc2VsZWN0b3IgaXMgYXBw
bGllZCAobm90IGRvbmUgeWV0KS4iCiAgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsNjgpIHNp
emUgNzg0eDE4CisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDUyMngx
OAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDUyMjogIlRoaXMgdGV4dCBzaG91
bGQgYWxzbyBub3QgYmUgdmlzaWJsZSBvbmNlIHRoZSBjc3Mgc2VsZWN0b3IgaXMgYXBwbGllZCAo
bm90IGRvbmUgeWV0KS4iCisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMTAyKSBzaXplIDc4
NHgxOAogICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAxNzN4MTgKICAg
ICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxNzM6ICJUaGlzIHRleHQgc2hvdWxkIGJl
IHZpc2libGUuIgorICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDEzNikgc2l6ZSA3ODR4MTgK
KyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMjAzeDE4CisgICAgICAg
ICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMjAzOiAiVGhpcyB0ZXh0IHNob3VsZCBhbHNvIGJl
IHZpc2libGUuIgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb250ZW50ZXh0ZW5zaW9u
cy9jc3MtZGlzcGxheS1ub25lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9jb250ZW50ZXh0ZW5zaW9ucy9jc3MtZGlzcGxheS1ub25lLmh0bWwJKHJldmlzaW9uIDE4
MTY2NCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvY29udGVudGV4dGVuc2lvbnMvY3NzLWRp
c3BsYXktbm9uZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNyBAQAogPGJvZHk+CiA8
cCBjbGFzcz0iaGlkZGVuIj5UaGlzIHRleHQgc2hvdWxkIG5vdCBiZSB2aXNpYmxlIG9uY2UgdGhl
IGNzcyBzZWxlY3RvciBpcyBhcHBsaWVkIChub3QgZG9uZSB5ZXQpLjwvcD4KIDxwIGNsYXNzPSJo
aWRkZW5fxb0iPlRoaXMgdGV4dCBzaG91bGQgYWxzbyBub3QgYmUgdmlzaWJsZSBvbmNlIHRoZSBj
c3Mgc2VsZWN0b3IgaXMgYXBwbGllZCAobm90IGRvbmUgeWV0KS48L3A+Cis8cCBjbGFzcz0iYWx3
YXlzX2hpZGRlbiI+VGhpcyB0ZXh0IHNob3VsZCBhbHNvIG5vdCBiZSB2aXNpYmxlIG9uY2UgdGhl
IGNzcyBzZWxlY3RvciBpcyBhcHBsaWVkIChub3QgZG9uZSB5ZXQpLjwvcD4KIDxwIGNsYXNzPSJu
b3RfaGlkZGVuIj5UaGlzIHRleHQgc2hvdWxkIGJlIHZpc2libGUuPC9wPgorPHAgY2xhc3M9Im5v
dF9yZWxhdGVkIj5UaGlzIHRleHQgc2hvdWxkIGFsc28gYmUgdmlzaWJsZS48L3A+CiA8L2JvZHk+
CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NvbnRlbnRleHRlbnNpb25zL2Nzcy1kaXNw
bGF5LW5vbmUuaHRtbC5qc29uCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
Y29udGVudGV4dGVuc2lvbnMvY3NzLWRpc3BsYXktbm9uZS5odG1sLmpzb24JKHJldmlzaW9uIDE4
MTY2NCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvY29udGVudGV4dGVuc2lvbnMvY3NzLWRp
c3BsYXktbm9uZS5odG1sLmpzb24JKHdvcmtpbmcgY29weSkKQEAgLTE2LDUgKzE2LDIzIEBACiAg
ICAgICAgICJ0cmlnZ2VyIjogewogICAgICAgICAgICAgInVybC1maWx0ZXIiOiAiLipjc3MtZGlz
cGxheS1ub25lLmh0bWwiCiAgICAgICAgIH0KKyAgICB9LAorICAgIHsKKyAgICAgICAgImFjdGlv
biI6IHsKKyAgICAgICAgICAgICJ0eXBlIjogImNzcy1kaXNwbGF5LW5vbmUiLAorICAgICAgICAg
ICAgInNlbGVjdG9yIjogIi5ub3RfaGlkZGVuIgorICAgICAgICB9LAorICAgICAgICAidHJpZ2dl
ciI6IHsKKyAgICAgICAgICAgICJ1cmwtZmlsdGVyIjogIi4qbm90X2Nzcy1kaXNwbGF5LW5vbmUu
aHRtbCIKKyAgICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgICAiYWN0aW9uIjogeworICAg
ICAgICAgICAgInR5cGUiOiAiY3NzLWRpc3BsYXktbm9uZSIsCisgICAgICAgICAgICAic2VsZWN0
b3IiOiAiLmFsd2F5c19oaWRkZW4iCisgICAgICAgIH0sCisgICAgICAgICJ0cmlnZ2VyIjogewor
ICAgICAgICAgICAgInVybC1maWx0ZXIiOiAiLioiCisgICAgICAgIH0KICAgICB9CiBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249008</attachid>
            <date>2015-03-18 19:26:16 -0700</date>
            <delta_ts>2015-03-18 21:57:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142799-20150318192544.patch</filename>
            <type>text/plain</type>
            <size>31524</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MTcyMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUzIEBACisyMDE1LTAzLTE4ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW0NvbnRlbnRF
eHRlbnNpb25zXSBQcmVwYXJlIGZvciBjb21waWxpbmcgc3R5bGVzaGVldHMgb2Ygc2VsZWN0b3Jz
IHRvIGJlIHVzZWQgb24gZXZlcnkgcGFnZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0Mjc5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICBNYWtlIHByaXZhdGUgaGVhZGVycyB0byB1c2Ugd2l0aCBBUEkgdGVzdHMuCisgICAg
ICAgICogY29udGVudGV4dGVuc2lvbnMvQ29tcGlsZWRDb250ZW50RXh0ZW5zaW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpDb21waWxlZENvbnRlbnRFeHRlbnNp
b246Omdsb2JhbERpc3BsYXlOb25lU2VsZWN0b3JzKToKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5z
aW9ucy9Db21waWxlZENvbnRlbnRFeHRlbnNpb24uaDoKKyAgICAgICAgQWRkZWQgbWV0aG9kIHRv
IGdldCBvbmx5IHRoZSBzZWxlY3RvcnMgZnJvbSB0aGUgcm9vdCBvZiB0aGUgREZBLCB3aGljaCBh
cHBseSB0byBhbGwgVVJMcy4KKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0
ZW5zaW9uQ29tcGlsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6
OmNvbXBpbGVSdWxlTGlzdCk6CisgICAgICAgIEFkZGVkIGNoZWNraW5nIGlmIHRoZSB0cmlnZ2Vy
IHdpbGwgbWF0Y2ggZXZlcnl0aGluZy4KKyAgICAgICAgVGhlc2UgYWN0aW9ucyBjYW4gYmUgcHV0
IGRpcmVjdGx5IG9uIHRoZSByb290IG9mIHRoZSBERkEgd2l0aG91dCBhZGRpbmcgZXh0cmEgZXBz
aWxvbiB0cmFuc2l0aW9ucyB0byB0aGUgTkZBLgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25z
L0RGQS5oOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQTo6bm9kZUF0
KToKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9ERkFCeXRlY29kZUludGVycHJldGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpERkFCeXRlY29kZUludGVy
cHJldGVyOjphY3Rpb25zRnJvbURGQVJvb3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4
dGVuc2lvbnM6OkRGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OmludGVycHJldCk6CisgICAgICAgICog
Y29udGVudGV4dGVuc2lvbnMvREZBQnl0ZWNvZGVJbnRlcnByZXRlci5oOgorICAgICAgICAqIGNv
bnRlbnRleHRlbnNpb25zL05GQS5oOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL1VSTEZp
bHRlclBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6VGVy
bTo6cXVhbnRpZmllcik6CisgICAgICAgIFNpbmsgdGVybXMgdG8gYSB2ZWN0b3IgdGhlbiBhZGQg
bm9kZXMgdG8gTkZBIHdoZW4gZmluYWxpemluZyBhZnRlciBjaGVja2luZyBmb3IgcmVnZXhlcyB0
aGF0IG1hdGNoIGV2ZXJ5dGhpbmcuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9u
czo6R3JhcGhCdWlsZGVyOjpHcmFwaEJ1aWxkZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVu
dEV4dGVuc2lvbnM6OkdyYXBoQnVpbGRlcjo6ZmluYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudEV4dGVuc2lvbnM6OkdyYXBoQnVpbGRlcjo6cGFyc2VTdGF0dXMpOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkdyYXBoQnVpbGRlcjo6YXRvbVBhdHRlcm5DaGFy
YWN0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkdyYXBoQnVpbGRl
cjo6YXRvbUJ1aWx0SW5DaGFyYWN0ZXJDbGFzcyk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50
RXh0ZW5zaW9uczo6R3JhcGhCdWlsZGVyOjpxdWFudGlmeUF0b20pOgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGVudEV4dGVuc2lvbnM6OkdyYXBoQnVpbGRlcjo6YXRvbUJhY2tSZWZlcmVuY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkdyYXBoQnVpbGRlcjo6YXNzZXJ0
aW9uQk9MKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpHcmFwaEJ1aWxk
ZXI6OmFzc2VydGlvbldvcmRCb3VuZGFyeSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0
ZW5zaW9uczo6R3JhcGhCdWlsZGVyOjphdG9tQ2hhcmFjdGVyQ2xhc3NBdG9tKToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpHcmFwaEJ1aWxkZXI6OmF0b21DaGFyYWN0ZXJD
bGFzc1JhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpHcmFwaEJ1
aWxkZXI6OmF0b21DaGFyYWN0ZXJDbGFzc0J1aWx0SW4pOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGVudEV4dGVuc2lvbnM6OkdyYXBoQnVpbGRlcjo6YXRvbVBhcmVudGhldGljYWxBc3NlcnRpb25C
ZWdpbik6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6R3JhcGhCdWlsZGVy
OjpkaXNqdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6R3Jh
cGhCdWlsZGVyOjpoYXNFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9u
czo6R3JhcGhCdWlsZGVyOjpmYWlsKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNp
b25zOjpHcmFwaEJ1aWxkZXI6OnNpbmtGbG9hdGluZ1Rlcm1JZk5lY2Vzc2FyeSk6CisgICAgICAg
IChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6VVJMRmlsdGVyUGFyc2VyOjphZGRQYXR0ZXJu
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpVUkxGaWx0ZXJQYXJzZXI6
OnN0YXR1c1N0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6R3Jh
cGhCdWlsZGVyOjplcnJvck1lc3NhZ2UpOiBEZWxldGVkLgorICAgICAgICAqIGNvbnRlbnRleHRl
bnNpb25zL1VSTEZpbHRlclBhcnNlci5oOgorICAgICAgICBVc2UgYW4gZW51bSBpbnN0ZWFkIG9m
IHN0cmluZ3MgZm9yIHRoZSBzdGF0dXMgdG8gYXZvaWQgY2hlY2tpbmcgc3RyaW5ncyB3aGVuIHdl
IGhhdmUgYSByZWdleCB0aGF0IG1hdGNoZXMgZXZlcnl0aGluZy4KKwogMjAxNS0wMy0xOCAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgogCiAgICAgICAgIFN3aXRj
aGluZyBiZXR3ZWVuIHR3byBTVkcgaW1hZ2VzIHdpdGggbm8gaW50cmluc2ljIHNpemVzIGNhdXNl
cyB0aGVtIHRvIGdldCB0aGUgZGVmYXVsdCBTVkcgc2l6ZSBpbnN0ZWFkIG9mIHRoZSBjb250YWlu
ZXIgc2l6ZS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE4MTcxOSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtOTkzLDcgKzk5
Myw3IEBACiAJCTI0RjU0RUFEMTAxRkU5MTQwMDBBRTc0MSAvKiBBcHBsaWNhdGlvbkNhY2hlSG9z
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjRGNTRF
QUIxMDFGRTkxNDAwMEFFNzQxIC8qIEFwcGxpY2F0aW9uQ2FjaGVIb3N0LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMjU0MkY0REExMTY2QzI1QTAw
RTg5QTg2IC8qIFVzZXJHZXN0dXJlSW5kaWNhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI1NDJGNEQ4MTE2NkMyNUEwMEU4OUE4NiAvKiBVc2Vy
R2VzdHVyZUluZGljYXRvci5jcHAgKi87IH07CiAJCTI1NDJGNERCMTE2NkMyNUEwMEU4OUE4NiAv
KiBVc2VyR2VzdHVyZUluZGljYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMjU0MkY0RDkxMTY2QzI1QTAwRTg5QTg2IC8qIFVzZXJHZXN0dXJlSW5k
aWNhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
LQkJMjYyMzkxMzYxQTY0OENFRTAwNzI1MUEzIC8qIENvbnRlbnRFeHRlbnNpb25zRGVidWdnaW5n
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNjIzOTEz
NTFBNjQ4Q0VFMDA3MjUxQTMgLyogQ29udGVudEV4dGVuc2lvbnNEZWJ1Z2dpbmcuaCAqLzsgfTsK
KwkJMjYyMzkxMzYxQTY0OENFRTAwNzI1MUEzIC8qIENvbnRlbnRFeHRlbnNpb25zRGVidWdnaW5n
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNjIzOTEz
NTFBNjQ4Q0VFMDA3MjUxQTMgLyogQ29udGVudEV4dGVuc2lvbnNEZWJ1Z2dpbmcuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyNjI1NUYwMDE4ODc4
REZGMDAwNkUxRkQgLyogVXNlckFnZW50SU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMjYyNTVFRkYxODg3OERGRjAwMDZFMUZEIC8qIFVzZXJBZ2Vu
dElPUy5tbSAqLzsgfTsKIAkJMjYyNTVGMDMxODg3OEUxMTAwMDZFMUZEIC8qIFVzZXJBZ2VudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjYyNTVGMDEx
ODg3OEUxMTAwMDZFMUZEIC8qIFVzZXJBZ2VudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTI2MjU1RjA0MTg4NzhFMTEwMDA2RTFGRCAvKiBVc2Vy
QWdlbnRNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAyNjI1NUYwMjE4ODc4RTExMDAwNkUxRkQgLyogVXNlckFnZW50TWFjLm1tICovOyB9OwpAQCAt
MTAwOCwxMCArMTAwOCwxMCBAQAogCQkyNjc3MjYwMDFBNUIzQUQ5MDAzQzI0REQgLyogTkZBVG9E
RkEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjY3
NzI1RkExQTVCM0FEOTAwM0MyNEREIC8qIE5GQVRvREZBLmNwcCAqLzsgfTsKIAkJMjY3NzI2MDEx
QTVCM0FEOTAwM0MyNEREIC8qIE5GQVRvREZBLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAyNjc3MjVGQjFBNUIzQUQ5MDAzQzI0REQgLyogTkZBVG9ERkEu
aCAqLzsgfTsKIAkJMjY3NzI2MDQxQTVERjZGMjAwM0MyNEREIC8qIFVSTEZpbHRlclBhcnNlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNjc3MjYw
MjFBNURGNkYyMDAzQzI0REQgLyogVVJMRmlsdGVyUGFyc2VyLmNwcCAqLzsgfTsKLQkJMjY3NzI2
MDUxQTVERjZGMjAwM0MyNEREIC8qIFVSTEZpbHRlclBhcnNlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjY3NzI2MDMxQTVERjZGMjAwM0MyNEREIC8q
IFVSTEZpbHRlclBhcnNlci5oICovOyB9OworCQkyNjc3MjYwNTFBNURGNkYyMDAzQzI0REQgLyog
VVJMRmlsdGVyUGFyc2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyNjc3MjYwMzFBNURGNkYyMDAzQzI0REQgLyogVVJMRmlsdGVyUGFyc2VyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMjY5MjM5OTYx
NTA1RTFBQTAwOUU1N0ZDIC8qIEpTSURCVmVyc2lvbkNoYW5nZUV2ZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNjkyMzk5MjE1MDVFMUFBMDA5RTU3
RkMgLyogSlNJREJWZXJzaW9uQ2hhbmdlRXZlbnQuaCAqLzsgfTsKLQkJMjY5Mzk3MjIxQTRBNDEy
RjAwRTgzNDlEIC8qIE5GQU5vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDI2OTM5NzIwMUE0QTQxMkYwMEU4MzQ5RCAvKiBORkFOb2RlLmggKi87IH07
Ci0JCTI2OTM5NzI0MUE0QTVCNjQwMEU4MzQ5RCAvKiBORkEuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2OTM5NzIzMUE0QTVCNjQwMEU4MzQ5RCAvKiBO
RkEuaCAqLzsgfTsKKwkJMjY5Mzk3MjIxQTRBNDEyRjAwRTgzNDlEIC8qIE5GQU5vZGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2OTM5NzIwMUE0QTQx
MkYwMEU4MzQ5RCAvKiBORkFOb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJMjY5Mzk3MjQxQTRBNUI2NDAwRTgzNDlEIC8qIE5GQS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjY5Mzk3MjMxQTRBNUI2
NDAwRTgzNDlEIC8qIE5GQS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTI2OTM5NzI2MUE0QTVGQkQwMEU4MzQ5RCAvKiBORkEuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjY5Mzk3MjUxQTRBNUZCRDAw
RTgzNDlEIC8qIE5GQS5jcHAgKi87IH07CiAJCTI2QUEwRjlFMThEMkExOEIwMDQxOTM4MSAvKiBT
ZWxlY3RvclBzZXVkb0VsZW1lbnRUeXBlTWFwLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2QUEwRjlEMThEMkExOEIwMDQxOTM4MSAvKiBTZWxlY3Rv
clBzZXVkb0VsZW1lbnRUeXBlTWFwLmNwcCAqLzsgfTsKIAkJMjZCOTk5OEYxODAzQUU3MjAwRDAx
MTIxIC8qIFJlZ2lzdGVyQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyNkI5OTk4RTE4MDNBRTcyMDBEMDExMjEgLyogUmVnaXN0ZXJBbGxv
Y2F0b3IuaCAqLzsgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0Nv
bXBpbGVkQ29udGVudEV4dGVuc2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
Y29udGVudGV4dGVuc2lvbnMvQ29tcGlsZWRDb250ZW50RXh0ZW5zaW9uLmNwcAkocmV2aXNpb24g
MTgxNzE5KQorKysgU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29tcGlsZWRDb250
ZW50RXh0ZW5zaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsNyBAQAogCiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ29tcGlsZWRDb250ZW50RXh0ZW5zaW9uLmgiCisj
aW5jbHVkZSAiREZBQnl0ZWNvZGVJbnRlcnByZXRlci5oIgogCiAjaWYgRU5BQkxFKENPTlRFTlRf
RVhURU5TSU9OUykKIApAQCAtMzUsNiArMzYsMjQgQEAgQ29tcGlsZWRDb250ZW50RXh0ZW5zaW9u
Ojp+Q29tcGlsZWRDb250ZQogewogfQogCitWZWN0b3I8U3RyaW5nPiBDb21waWxlZENvbnRlbnRF
eHRlbnNpb246Omdsb2JhbERpc3BsYXlOb25lU2VsZWN0b3JzKCkKK3sKKyAgICBERkFCeXRlY29k
ZUludGVycHJldGVyIGludGVycHJldGVyKGJ5dGVjb2RlKCksIGJ5dGVjb2RlTGVuZ3RoKCkpOwor
ICAgIERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OkFjdGlvbnMgYWN0aW9uTG9jYXRpb25zID0gaW50
ZXJwcmV0ZXIuYWN0aW9uc0Zyb21ERkFSb290KCk7CisgICAgCisgICAgVmVjdG9yPEFjdGlvbj4g
Z2xvYmFsQWN0aW9uczsKKyAgICBmb3IgKHVpbnQ2NF90IGFjdGlvbkxvY2F0aW9uIDogYWN0aW9u
TG9jYXRpb25zKQorICAgICAgICBnbG9iYWxBY3Rpb25zLmFwcGVuZChBY3Rpb246OmRlc2VyaWFs
aXplKGFjdGlvbnMoKSwgYWN0aW9uc0xlbmd0aCgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYWN0
aW9uTG9jYXRpb24pKSk7CisgICAgCisgICAgVmVjdG9yPFN0cmluZz4gc2VsZWN0b3JzOworICAg
IGZvciAoQWN0aW9uJiBhY3Rpb24gOiBnbG9iYWxBY3Rpb25zKSB7CisgICAgICAgIGlmIChhY3Rp
b24uY3NzU2VsZWN0b3IoKS5sZW5ndGgoKSkKKyAgICAgICAgICAgIHNlbGVjdG9ycy5hcHBlbmQo
YWN0aW9uLmNzc1NlbGVjdG9yKCkpOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gc2VsZWN0b3Jz
OworfQorICAgIAogfSAvLyBuYW1lc3BhY2UgQ29udGVudEV4dGVuc2lvbnMKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIApJbmRleDogU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29t
cGlsZWRDb250ZW50RXh0ZW5zaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY29u
dGVudGV4dGVuc2lvbnMvQ29tcGlsZWRDb250ZW50RXh0ZW5zaW9uLmgJKHJldmlzaW9uIDE4MTcx
OSkKKysrIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbXBpbGVkQ29udGVudEV4
dGVuc2lvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHVuc2lnbmVkIGJ5dGVjb2RlTGVuZ3RoKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwg
Y29uc3QgU2VyaWFsaXplZEFjdGlvbkJ5dGUqIGFjdGlvbnMoKSBjb25zdCA9IDA7CiAgICAgdmly
dHVhbCB1bnNpZ25lZCBhY3Rpb25zTGVuZ3RoKCkgY29uc3QgPSAwOworICAgIFZlY3RvcjxTdHJp
bmc+IGdsb2JhbERpc3BsYXlOb25lU2VsZWN0b3JzKCk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBD
b250ZW50RXh0ZW5zaW9ucwpJbmRleDogU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMv
Q29udGVudEV4dGVuc2lvbkNvbXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uQ29tcGlsZXIuY3BwCShyZXZpc2lv
biAxODE3MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0
ZW5zaW9uQ29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgsMTkgKzEwOCwyOSBAQCBD
b21waWxlZENvbnRlbnRFeHRlbnNpb25EYXRhIGNvbXBpbGVSdWxlCiAKICAgICBWZWN0b3I8U2Vy
aWFsaXplZEFjdGlvbkJ5dGU+IGFjdGlvbnM7CiAgICAgVmVjdG9yPHVuc2lnbmVkPiBhY3Rpb25M
b2NhdGlvbnMgPSBzZXJpYWxpemVBY3Rpb25zKHBhcnNlZFJ1bGVMaXN0LCBhY3Rpb25zKTsKKyAg
ICBWZWN0b3I8dWludDY0X3Q+IHVuaXZlcnNhbEFjdGlvbkxvY2F0aW9uczsKIAogICAgIE5GQSBu
ZmE7CiAgICAgVVJMRmlsdGVyUGFyc2VyIHVybEZpbHRlclBhcnNlcihuZmEpOworICAgIGJvb2wg
bm9uVW5pdmVyc2FsQWN0aW9uU2VlbiA9IGZhbHNlOwogICAgIGZvciAodW5zaWduZWQgcnVsZUlu
ZGV4ID0gMDsgcnVsZUluZGV4IDwgcGFyc2VkUnVsZUxpc3Quc2l6ZSgpOyArK3J1bGVJbmRleCkg
ewogICAgICAgICBjb25zdCBDb250ZW50RXh0ZW5zaW9uUnVsZSYgY29udGVudEV4dGVuc2lvblJ1
bGUgPSBwYXJzZWRSdWxlTGlzdFtydWxlSW5kZXhdOwogICAgICAgICBjb25zdCBUcmlnZ2VyJiB0
cmlnZ2VyID0gY29udGVudEV4dGVuc2lvblJ1bGUudHJpZ2dlcigpOwogICAgICAgICBBU1NFUlQo
dHJpZ2dlci51cmxGaWx0ZXIubGVuZ3RoKCkpOwogCiAgICAgICAgIC8vIEhpZ2ggYml0cyBhcmUg
dXNlZCBmb3IgZmxhZ3MuIFRoaXMgc2hvdWxkIG1hdGNoIGhvdyB0aGV5IGFyZSB1c2VkIGluIERG
QUJ5dGVjb2RlQ29tcGlsZXI6OmNvbXBpbGVOb2RlLgotICAgICAgICBTdHJpbmcgZXJyb3IgPSB1
cmxGaWx0ZXJQYXJzZXIuYWRkUGF0dGVybih0cmlnZ2VyLnVybEZpbHRlciwgdHJpZ2dlci51cmxG
aWx0ZXJJc0Nhc2VTZW5zaXRpdmUsIChzdGF0aWNfY2FzdDx1aW50NjRfdD4odHJpZ2dlci5mbGFn
cykgPDwgMzIpIHwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGFjdGlvbkxvY2F0aW9uc1tydWxlSW5k
ZXhdKSk7CisgICAgICAgIHVpbnQ2NF90IGFjdGlvbkxvY2F0aW9uQW5kRmxhZ3MgPShzdGF0aWNf
Y2FzdDx1aW50NjRfdD4odHJpZ2dlci5mbGFncykgPDwgMzIpIHwgc3RhdGljX2Nhc3Q8dWludDY0
X3Q+KGFjdGlvbkxvY2F0aW9uc1tydWxlSW5kZXhdKTsKKyAgICAgICAgVVJMRmlsdGVyUGFyc2Vy
OjpQYXJzZVN0YXR1cyBzdGF0dXMgPSB1cmxGaWx0ZXJQYXJzZXIuYWRkUGF0dGVybih0cmlnZ2Vy
LnVybEZpbHRlciwgdHJpZ2dlci51cmxGaWx0ZXJJc0Nhc2VTZW5zaXRpdmUsIGFjdGlvbkxvY2F0
aW9uQW5kRmxhZ3MpOwogCi0gICAgICAgIGlmICghZXJyb3IuaXNOdWxsKCkpIHsKLSAgICAgICAg
ICAgIGRhdGFMb2dGKCJFcnJvciB3aGlsZSBwYXJzaW5nICVzOiAlc1xuIiwgdHJpZ2dlci51cmxG
aWx0ZXIudXRmOCgpLmRhdGEoKSwgZXJyb3IudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIGlmIChz
dGF0dXMgPT0gVVJMRmlsdGVyUGFyc2VyOjpNYXRjaGVzRXZlcnl0aGluZykgeworICAgICAgICAg
ICAgaWYgKG5vblVuaXZlcnNhbEFjdGlvblNlZW4pCisgICAgICAgICAgICAgICAgZGF0YUxvZ0Yo
IlRyaWdnZXIgbWF0Y2hpbmcgZXZlcnl0aGluZyBmb3VuZCBub3QgYXQgYmVnaW5uaW5nLiAgVGhp
cyBtYXkgY2F1c2UgaW5jb3JyZWN0IGJlaGF2aW9yIHdpdGggaWdub3JlLXByZXZpb3VzLXJ1bGVz
Iik7CisgICAgICAgICAgICB1bml2ZXJzYWxBY3Rpb25Mb2NhdGlvbnMuYXBwZW5kKGFjdGlvbkxv
Y2F0aW9uQW5kRmxhZ3MpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG5vblVuaXZlcnNh
bEFjdGlvblNlZW4gPSB0cnVlOworICAgICAgICAKKyAgICAgICAgaWYgKHN0YXR1cyAhPSBVUkxG
aWx0ZXJQYXJzZXI6Ok9rICYmIHN0YXR1cyAhPSBVUkxGaWx0ZXJQYXJzZXI6Ok1hdGNoZXNFdmVy
eXRoaW5nKSB7CisgICAgICAgICAgICBkYXRhTG9nRigiRXJyb3Igd2hpbGUgcGFyc2luZyAlczog
JXNcbiIsIHRyaWdnZXIudXJsRmlsdGVyLnV0ZjgoKS5kYXRhKCksIFVSTEZpbHRlclBhcnNlcjo6
c3RhdHVzU3RyaW5nKHN0YXR1cykudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgfQogICAgIH0KQEAgLTEzOCw3ICsxNDgsOSBAQCBDb21waWxlZENvbnRlbnRF
eHRlbnNpb25EYXRhIGNvbXBpbGVSdWxlCiAgICAgZG91YmxlIGRmYUJ1aWxkVGltZVN0YXJ0ID0g
bW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7CiAjZW5kaWYKIAotICAgIGNvbnN0IERGQSBk
ZmEgPSBORkFUb0RGQTo6Y29udmVydChuZmEpOworICAgIERGQSBkZmEgPSBORkFUb0RGQTo6Y29u
dmVydChuZmEpOworICAgIGZvciAodWludDY0X3QgYWN0aW9uTG9jYXRpb24gOiB1bml2ZXJzYWxB
Y3Rpb25Mb2NhdGlvbnMpCisgICAgICAgIGRmYS5ub2RlQXQoZGZhLnJvb3QoKSkuYWN0aW9ucy5h
cHBlbmQoYWN0aW9uTG9jYXRpb24pOwogCiAjaWYgQ09OVEVOVF9FWFRFTlNJT05TX1BFUkZPUk1B
TkNFX1JFUE9SVElORwogICAgIGRvdWJsZSBkZmFCdWlsZFRpbWVFbmQgPSBtb25vdG9uaWNhbGx5
SW5jcmVhc2luZ1RpbWUoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25z
L0RGQS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RG
QS5oCShyZXZpc2lvbiAxODE3MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9u
cy9ERkEuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsNyBAQCBwdWJsaWM6CiAgICAgdW5z
aWduZWQgcm9vdCgpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdDsgfQogICAgIHVuc2lnbmVkIHNpemUo
KSBjb25zdCB7IHJldHVybiBtX25vZGVzLnNpemUoKTsgfQogICAgIGNvbnN0IERGQU5vZGUmIG5v
ZGVBdCh1bnNpZ25lZCBpKSBjb25zdCB7IHJldHVybiBtX25vZGVzW2ldOyB9CisgICAgREZBTm9k
ZSYgbm9kZUF0KHVuc2lnbmVkIGkpIHsgcmV0dXJuIG1fbm9kZXNbaV07IH0KIAogI2lmIENPTlRF
TlRfRVhURU5TSU9OU19TVEFURV9NQUNISU5FX0RFQlVHR0lORwogICAgIHZvaWQgZGVidWdQcmlu
dERvdCgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZB
Qnl0ZWNvZGVJbnRlcnByZXRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY29u
dGVudGV4dGVuc2lvbnMvREZBQnl0ZWNvZGVJbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDE4MTcx
OSkKKysrIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQUJ5dGVjb2RlSW50ZXJw
cmV0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCwxOCBAQCBzdGF0aWMgaW5saW5l
IEludFR5cGUgZ2V0Qml0cyhjb25zdCBERkFCCiAgICAgQVNTRVJUX1VOVVNFRChieXRlY29kZUxl
bmd0aCwgaW5kZXggKyBzaXplb2YoSW50VHlwZSkgPD0gYnl0ZWNvZGVMZW5ndGgpOwogICAgIHJl
dHVybiAqcmVpbnRlcnByZXRfY2FzdDxjb25zdCBJbnRUeXBlKj4oJmJ5dGVjb2RlW2luZGV4XSk7
CiB9Ci0KKyAgICAKK0RGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OkFjdGlvbnMgREZBQnl0ZWNvZGVJ
bnRlcnByZXRlcjo6YWN0aW9uc0Zyb21ERkFSb290KCkKK3sKKyAgICB1bnNpZ25lZCBwcm9ncmFt
Q291bnRlciA9IDA7CisgICAgREZBQnl0ZWNvZGVJbnRlcnByZXRlcjo6QWN0aW9ucyBnbG9iYWxB
Y3Rpb25Mb2NhdGlvbnM7CisgICAgd2hpbGUgKHN0YXRpY19jYXN0PERGQUJ5dGVjb2RlSW5zdHJ1
Y3Rpb24+KG1fYnl0ZWNvZGVbcHJvZ3JhbUNvdW50ZXJdKSA9PSBERkFCeXRlY29kZUluc3RydWN0
aW9uOjpBcHBlbmRBY3Rpb24pIHsKKyAgICAgICAgZ2xvYmFsQWN0aW9uTG9jYXRpb25zLmFkZChz
dGF0aWNfY2FzdDx1aW50NjRfdD4oZ2V0Qml0czx1bnNpZ25lZD4obV9ieXRlY29kZSwgbV9ieXRl
Y29kZUxlbmd0aCwgcHJvZ3JhbUNvdW50ZXIgKyBzaXplb2YoREZBQnl0ZWNvZGUpKSkpOworICAg
ICAgICBwcm9ncmFtQ291bnRlciArPSBpbnN0cnVjdGlvblNpemVXaXRoQXJndW1lbnRzKERGQUJ5
dGVjb2RlSW5zdHJ1Y3Rpb246OkFwcGVuZEFjdGlvbik7CisgICAgfQorICAgIHJldHVybiBnbG9i
YWxBY3Rpb25Mb2NhdGlvbnM7Cit9CisgICAgCiBERkFCeXRlY29kZUludGVycHJldGVyOjpBY3Rp
b25zIERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OmludGVycHJldChjb25zdCBDU3RyaW5nJiB1cmxD
U3RyaW5nLCB1aW50MTZfdCBmbGFncykKIHsKICAgICBjb25zdCBjaGFyKiB1cmwgPSB1cmxDU3Ry
aW5nLmRhdGEoKTsKQEAgLTUxLDYgKzYyLDggQEAgREZBQnl0ZWNvZGVJbnRlcnByZXRlcjo6QWN0
aW9ucyBERkFCeXRlYwogICAgIGJvb2wgdXJsSW5kZXhJc0FmdGVyRW5kT2ZTdHJpbmcgPSBmYWxz
ZTsKICAgICBBY3Rpb25zIGFjdGlvbnM7CiAgICAgCisgICAgLy8gRklYTUU6IFNraXAgdGhlIGFj
dGlvbnMgZnJvbSB0aGUgcm9vdCBvbmNlIHRoZXkgYXJlIHVzZWQgdGhyb3VnaCBhY3Rpb25zRnJv
bURGQVJvb3QuIENoYW5nZSBBcHBlbmRBY3Rpb24gdG8gQXBwZW5kQWN0aW9ucyB0byBtYWtlIHRo
aXMgZmFzdGVyLgorICAgIAogICAgIC8vIFRoaXMgc2hvdWxkIGFsd2F5cyB0ZXJtaW5hdGUgaWYg
aW50ZXJwcmV0aW5nIGNvcnJlY3RseSBjb21waWxlZCBieXRlY29kZS4KICAgICB3aGlsZSAodHJ1
ZSkgewogICAgICAgICBBU1NFUlQocHJvZ3JhbUNvdW50ZXIgPD0gbV9ieXRlY29kZUxlbmd0aCk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkFCeXRlY29kZUludGVy
cHJldGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMv
REZBQnl0ZWNvZGVJbnRlcnByZXRlci5oCShyZXZpc2lvbiAxODE3MTkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkFCeXRlY29kZUludGVycHJldGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ4LDYgKzQ4LDcgQEAgcHVibGljOgogICAgIHR5cGVkZWYgSGFzaFNldDx1aW50
NjRfdCwgRGVmYXVsdEhhc2g8dWludDY0X3Q+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9L
ZXlIYXNoVHJhaXRzPHVpbnQ2NF90Pj4gQWN0aW9uczsKICAgICAKICAgICBBY3Rpb25zIGludGVy
cHJldChjb25zdCBDU3RyaW5nJiwgdWludDE2X3QgZmxhZ3MpOworICAgIEFjdGlvbnMgYWN0aW9u
c0Zyb21ERkFSb290KCk7CiAKIHByaXZhdGU6CiAgICAgY29uc3QgREZBQnl0ZWNvZGUqIG1fYnl0
ZWNvZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ORkEuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ORkEuaAkocmV2aXNp
b24gMTgxNzE5KQorKysgU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvTkZBLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgY2xhc3MgTkZBVG9ERkE7CiAvLyBUaGUgbm9k
ZXMgYXJlIGFjY2Vzc2VkIHRocm91Z2ggYW4gaWRlbnRpZmllci4KIGNsYXNzIE5GQSB7CiBwdWJs
aWM6Ci0gICAgTkZBKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgTkZBKCk7CiAgICAgdW5zaWduZWQg
cm9vdCgpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdDsgfQogICAgIHVuc2lnbmVkIGNyZWF0ZU5vZGUo
KTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvVVJMRmlsdGVyUGFy
c2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9V
UkxGaWx0ZXJQYXJzZXIuY3BwCShyZXZpc2lvbiAxODE3MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9j
b250ZW50ZXh0ZW5zaW9ucy9VUkxGaWx0ZXJQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
Miw2ICszMiw3IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvWWFyclBhcnNlci5oPgogI2lu
Y2x1ZGUgPHd0Zi9CaXRWZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTc0LDYg
KzE3NSw3IEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShtX3F1YW50aWZp
ZXIgPT0gQXRvbVF1YW50aWZpZXI6Ok9uZSwgIlRyYW5zaXRpb24gdG8gcXVhbnRpZmllZCB0ZXJt
IHNob3VsZCBvbmx5IGhhcHBlbiBvbmNlLiIpOwogICAgICAgICBtX3F1YW50aWZpZXIgPSBxdWFu
dGlmaWVyOwogICAgIH0KKyAgICBBdG9tUXVhbnRpZmllciBxdWFudGlmaWVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9xdWFudGlmaWVyOyB9CiAKICAgICB1bnNpZ25lZCBnZW5lcmF0ZUdyYXBoKE5GQSYg
bmZhLCB1aW50NjRfdCBwYXR0ZXJuSWQsIHVuc2lnbmVkIHN0YXJ0KSBjb25zdAogICAgIHsKQEAg
LTQyOCw2ICs0MzAsNyBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9zdWJ0cmVlU3RhcnQobmZhLnJv
b3QoKSkKICAgICAgICAgLCBtX3N1YnRyZWVFbmQobmZhLnJvb3QoKSkKICAgICAgICAgLCBtX2xh
c3RQcmVmaXhUcmVlRW50cnkoJnByZWZpeFRyZWVSb290KQorICAgICAgICAsIG1fcGFyc2VTdGF0
dXMoVVJMRmlsdGVyUGFyc2VyOjpPaykKICAgICB7CiAgICAgfQogCkBAIC00MzgsMjAgKzQ0MSw1
NiBAQCBwdWJsaWM6CiAKICAgICAgICAgc2lua0Zsb2F0aW5nVGVybUlmTmVjZXNzYXJ5KCk7CiAK
KyAgICAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgdGVybXMgd2l0aG91dCA/
IG9yICouCisgICAgICAgIGJvb2wgbWF0Y2hlc0V2ZXJ5dGhpbmcgPSB0cnVlOworICAgICAgICBm
b3IgKGNvbnN0IGF1dG8mIHRlcm0gOiBtX3N1bmtUZXJtcykgeworICAgICAgICAgICAgaWYgKHRl
cm0ucXVhbnRpZmllcigpID09IEF0b21RdWFudGlmaWVyOjpPbmUgfHwgdGVybS5xdWFudGlmaWVy
KCkgPT0gQXRvbVF1YW50aWZpZXI6Ok9uZU9yTW9yZSkgeworICAgICAgICAgICAgICAgIG1hdGNo
ZXNFdmVyeXRoaW5nID0gZmFsc2U7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1hdGNoZXNFdmVyeXRoaW5nKQorICAgICAgICAg
ICAgZmFpbChVUkxGaWx0ZXJQYXJzZXI6Ok1hdGNoZXNFdmVyeXRoaW5nKTsKKworICAgICAgICBm
b3IgKGNvbnN0IGF1dG8mIHRlcm0gOiBtX3N1bmtUZXJtcykgeworICAgICAgICAgICAgQVNTRVJU
KG1fbGFzdFByZWZpeFRyZWVFbnRyeSk7CisgICAgICAgICAgICBhdXRvIG5leHRFbnRyeSA9IG1f
bGFzdFByZWZpeFRyZWVFbnRyeS0+bmV4dFBhdHRlcm4uZmluZCh0ZXJtKTsKKyAgICAgICAgICAg
IGlmIChuZXh0RW50cnkgIT0gbV9sYXN0UHJlZml4VHJlZUVudHJ5LT5uZXh0UGF0dGVybi5lbmQo
KSkgeworICAgICAgICAgICAgICAgIG1fbGFzdFByZWZpeFRyZWVFbnRyeSA9IG5leHRFbnRyeS0+
dmFsdWUuZ2V0KCk7CisgICAgICAgICAgICAgICAgbV9uZmEuYWRkUnVsZUlkKG1fbGFzdFByZWZp
eFRyZWVFbnRyeS0+bmZhTm9kZSwgbV9wYXR0ZXJuSWQpOworICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJlZml4VHJlZUVudHJ5PiBuZXh0UHJl
Zml4VHJlZUVudHJ5ID0gc3RkOjptYWtlX3VuaXF1ZTxQcmVmaXhUcmVlRW50cnk+KCk7CisgICAg
ICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgdW5zaWduZWQgbmV3RW5kID0gdGVybS5nZW5l
cmF0ZUdyYXBoKG1fbmZhLCBtX3BhdHRlcm5JZCwgbV9sYXN0UHJlZml4VHJlZUVudHJ5LT5uZmFO
b2RlKTsKKyAgICAgICAgICAgICAgICBuZXh0UHJlZml4VHJlZUVudHJ5LT5uZmFOb2RlID0gbmV3
RW5kOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0g
bV9sYXN0UHJlZml4VHJlZUVudHJ5LT5uZXh0UGF0dGVybi5zZXQodGVybSwgV1RGOjptb3ZlKG5l
eHRQcmVmaXhUcmVlRW50cnkpKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoYWRkUmVzdWx0Lmlz
TmV3RW50cnkpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmICghbV9uZXdQ
cmVmaXhTdWJ0cmVlUm9vdCkgeworICAgICAgICAgICAgICAgICAgICBtX25ld1ByZWZpeFN1YnRy
ZWVSb290ID0gbV9sYXN0UHJlZml4VHJlZUVudHJ5OworICAgICAgICAgICAgICAgICAgICBtX25l
d1ByZWZpeFN0YXJpbmdQb2ludCA9IHRlcm07CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIAorICAgICAgICAgICAgICAgIG1fbGFzdFByZWZpeFRyZWVFbnRyeSA9IGFkZFJlc3Vs
dC5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtX3N1
YnRyZWVFbmQgPSBtX2xhc3RQcmVmaXhUcmVlRW50cnktPm5mYU5vZGU7CisgICAgICAgIH0KKyAg
ICAgICAgCiAgICAgICAgIGlmICghbV9vcGVuR3JvdXBzLmlzRW1wdHkoKSkgewotICAgICAgICAg
ICAgZmFpbChBU0NJSUxpdGVyYWwoIlRoZSBleHByZXNzaW9uIGhhcyB1bmNsb3NlZCBncm91cHMu
IikpOworICAgICAgICAgICAgZmFpbChVUkxGaWx0ZXJQYXJzZXI6OlVuY2xvc2VkR3JvdXBzKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChtX3N1YnRyZWVT
dGFydCAhPSBtX3N1YnRyZWVFbmQpCiAgICAgICAgICAgICBtX25mYS5zZXRGaW5hbChtX3N1YnRy
ZWVFbmQsIG1fcGF0dGVybklkKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgZmFpbChBU0NJ
SUxpdGVyYWwoIlRoZSBwYXR0ZXJuIGNhbm5vdCBtYXRjaCBhbnl0aGluZy4iKSk7CisgICAgICAg
ICAgICBmYWlsKFVSTEZpbHRlclBhcnNlcjo6Q2Fubm90TWF0Y2hBbnl0aGluZyk7CiAgICAgfQog
Ci0gICAgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UoKSBjb25zdAorICAgIFVSTEZpbHRlclBh
cnNlcjo6UGFyc2VTdGF0dXMgcGFyc2VTdGF0dXMoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0
dXJuIG1fZXJyb3JNZXNzYWdlOworICAgICAgICByZXR1cm4gbV9wYXJzZVN0YXR1czsKICAgICB9
CiAKICAgICB2b2lkIGF0b21QYXR0ZXJuQ2hhcmFjdGVyKFVDaGFyIGNoYXJhY3RlcikKQEAgLTQ2
MCw3ICs0OTksNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgaWYg
KCFpc0FTQ0lJKGNoYXJhY3RlcikpIHsKLSAgICAgICAgICAgIGZhaWwoQVNDSUlMaXRlcmFsKCJP
bmx5IEFTQ0lJIGNoYXJhY3RlcnMgYXJlIHN1cHBvcnRlZCBpbiBwYXR0ZXJuLiIpKTsKKyAgICAg
ICAgICAgIGZhaWwoVVJMRmlsdGVyUGFyc2VyOjpOb25BU0NJSSk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KIApAQCAtNDgyLDcgKzUyMSw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYg
KGJ1aWx0SW5DaGFyYWN0ZXJDbGFzc0lEID09IEpTQzo6WWFycjo6TmV3bGluZUNsYXNzSUQgJiYg
aW52ZXJ0ZWQpCiAgICAgICAgICAgICBtX2Zsb2F0aW5nVGVybSA9IFRlcm0oVGVybTo6VW5pdmVy
c2FsVHJhbnNpdGlvbik7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGZhaWwoQVNDSUlMaXRl
cmFsKCJDaGFyYWN0ZXIgY2xhc3MgaXMgbm90IHN1cHBvcnRlZC4iKSk7CisgICAgICAgICAgICBm
YWlsKFVSTEZpbHRlclBhcnNlcjo6VW5zdXBwb3J0ZWRDaGFyYWN0ZXJDbGFzcyk7CiAgICAgfQog
CiAgICAgdm9pZCBxdWFudGlmeUF0b20odW5zaWduZWQgbWluaW11bSwgdW5zaWduZWQgbWF4aW11
bSwgYm9vbCkKQEAgLTQ5MSw3ICs1MzAsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm47
CiAKICAgICAgICAgaWYgKCFtX2Zsb2F0aW5nVGVybS5pc1ZhbGlkKCkpCi0gICAgICAgICAgICBm
YWlsKEFTQ0lJTGl0ZXJhbCgiUXVhbnRpZmllciB3aXRob3V0IGNvcnJlc3BvbmRpbmcgdGVybSB0
byBxdWFudGlmeS4iKSk7CisgICAgICAgICAgICBmYWlsKFVSTEZpbHRlclBhcnNlcjo6TWlzcGxh
Y2VkUXVhbnRpZmllcik7CiAKICAgICAgICAgaWYgKCFtaW5pbXVtICYmIG1heGltdW0gPT0gMSkK
ICAgICAgICAgICAgIG1fZmxvYXRpbmdUZXJtLnF1YW50aWZ5KEF0b21RdWFudGlmaWVyOjpaZXJv
T3JPbmUpOwpAQCAtNTAwLDEyICs1MzksMTIgQEAgcHVibGljOgogICAgICAgICBlbHNlIGlmICht
aW5pbXVtID09IDEgJiYgbWF4aW11bSA9PSBKU0M6OllhcnI6OnF1YW50aWZ5SW5maW5pdGUpCiAg
ICAgICAgICAgICBtX2Zsb2F0aW5nVGVybS5xdWFudGlmeShBdG9tUXVhbnRpZmllcjo6T25lT3JN
b3JlKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgZmFpbChBU0NJSUxpdGVyYWwoIkFyYml0
cmFyeSBhdG9tIHJlcGV0aXRpb25zIGFyZSBub3Qgc3VwcG9ydGVkLiIpKTsKKyAgICAgICAgICAg
IGZhaWwoVVJMRmlsdGVyUGFyc2VyOjpJbnZhbGlkUXVhbnRpZmllcik7CiAgICAgfQogCiAgICAg
dm9pZCBhdG9tQmFja1JlZmVyZW5jZSh1bnNpZ25lZCkKICAgICB7Ci0gICAgICAgIGZhaWwoQVND
SUlMaXRlcmFsKCJQYXR0ZXJucyBjYW5ub3QgY29udGFpbiBiYWNrcmVmZXJlbmNlcy4iKSk7Cisg
ICAgICAgIGZhaWwoVVJMRmlsdGVyUGFyc2VyOjpCYWNrUmVmZXJlbmNlKTsKICAgICB9CiAKICAg
ICB2b2lkIGFzc2VydGlvbkJPTCgpCkBAIC01MTQsNyArNTUzLDcgQEAgcHVibGljOgogICAgICAg
ICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmIChtX3N1YnRyZWVTdGFydCAhPSBtX3N1YnRyZWVF
bmQgfHwgbV9mbG9hdGluZ1Rlcm0uaXNWYWxpZCgpIHx8ICFtX29wZW5Hcm91cHMuaXNFbXB0eSgp
KQotICAgICAgICAgICAgZmFpbChBU0NJSUxpdGVyYWwoIlN0YXJ0IG9mIGxpbmUgYXNzZXJ0aW9u
IGNhbiBvbmx5IGFwcGVhciBhcyB0aGUgZmlyc3QgdGVybSBpbiBhIGZpbHRlci4iKSk7CisgICAg
ICAgICAgICBmYWlsKFVSTEZpbHRlclBhcnNlcjo6TWlzcGxhY2VkU3RhcnRPZkxpbmUpOwogICAg
IH0KIAogICAgIHZvaWQgYXNzZXJ0aW9uRU9MKCkKQEAgLTUzMCw3ICs1NjksNyBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIGFzc2VydGlvbldvcmRCb3VuZGFyeShib29sKQogICAgIHsKLSAgICAgICAg
ZmFpbChBU0NJSUxpdGVyYWwoIldvcmQgYm91bmRhcmllcyBhc3NlcnRpb25zIGFyZSBub3Qgc3Vw
cG9ydGVkIHlldC4iKSk7CisgICAgICAgIGZhaWwoVVJMRmlsdGVyUGFyc2VyOjpXb3JkQm91bmRh
cnkpOwogICAgIH0KIAogICAgIHZvaWQgYXRvbUNoYXJhY3RlckNsYXNzQmVnaW4oYm9vbCBpbnZl
cnRlZCA9IGZhbHNlKQpAQCAtNTQ5LDEwICs1ODgsNyBAQCBwdWJsaWM6CiAgICAgICAgIGlmICho
YXNFcnJvcigpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmICghaXNBU0NJSShj
aGFyYWN0ZXIpKSB7Ci0gICAgICAgICAgICBmYWlsKEFTQ0lJTGl0ZXJhbCgiTm9uIEFTQ0lJIENo
YXJhY3RlciBpbiBhIGNoYXJhY3RlciBzZXQuIikpOwotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB9CisgICAgICAgIEFTU0VSVChpc0FTQ0lJKGNoYXJhY3RlcikpOwogCiAgICAgICAgIG1f
ZmxvYXRpbmdUZXJtLmFkZENoYXJhY3RlcihjaGFyYWN0ZXIsIG1fcGF0dGVybklzQ2FzZVNlbnNp
dGl2ZSk7CiAgICAgfQpAQCAtNTYyLDEwICs1OTgsMTAgQEAgcHVibGljOgogICAgICAgICBpZiAo
aGFzRXJyb3IoKSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAoIWEgfHwgIWIg
fHwgIWlzQVNDSUkoYSkgfHwgIWlzQVNDSUkoYikpIHsKLSAgICAgICAgICAgIGZhaWwoQVNDSUlM
aXRlcmFsKCJOb24gQVNDSUkgQ2hhcmFjdGVyIGluIGEgY2hhcmFjdGVyIHJhbmdlIG9mIGEgY2hh
cmFjdGVyIHNldC4iKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICAgICAg
QVNTRVJUKGEpOworICAgICAgICBBU1NFUlQoYik7CisgICAgICAgIEFTU0VSVChpc0FTQ0lJKGEp
KTsKKyAgICAgICAgQVNTRVJUKGlzQVNDSUkoYikpOwogCiAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IGE7IGkgPD0gYjsgKytpKQogICAgICAgICAgICAgbV9mbG9hdGluZ1Rlcm0uYWRkQ2hhcmFj
dGVyKHN0YXRpY19jYXN0PFVDaGFyPihpKSwgbV9wYXR0ZXJuSXNDYXNlU2Vuc2l0aXZlKTsKQEAg
LTU3OCw3ICs2MTQsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGF0b21DaGFyYWN0ZXJDbGFzc0J1
aWx0SW4oSlNDOjpZYXJyOjpCdWlsdEluQ2hhcmFjdGVyQ2xhc3NJRCwgYm9vbCkKICAgICB7Ci0g
ICAgICAgIGZhaWwoQVNDSUlMaXRlcmFsKCJCdWlsdGlucyBjaGFyYWN0ZXIgY2xhc3MgYXRvbXMg
YXJlIG5vdCBzdXBwb3J0ZWQgeWV0LiIpKTsKKyAgICAgICAgZmFpbChVUkxGaWx0ZXJQYXJzZXI6
OkF0b21DaGFyYWN0ZXIpOwogICAgIH0KIAogICAgIHZvaWQgYXRvbVBhcmVudGhlc2VzU3VicGF0
dGVybkJlZ2luKGJvb2wgPSB0cnVlKQpAQCAtNTkzLDcgKzYyOSw3IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgYXRvbVBhcmVudGhldGljYWxBc3NlcnRpb25CZWdpbihib29sID0gZmFsc2UpCiAgICAg
ewotICAgICAgICBmYWlsKEFTQ0lJTGl0ZXJhbCgiR3JvdXBzIGFyZSBub3Qgc3VwcG9ydGVkIHll
dC4iKSk7CisgICAgICAgIGZhaWwoVVJMRmlsdGVyUGFyc2VyOjpHcm91cCk7CiAgICAgfQogCiAg
ICAgdm9pZCBhdG9tUGFyZW50aGVzZXNFbmQoKQpAQCAtNjA5LDE2ICs2NDUsMTYgQEAgcHVibGlj
OgogCiAgICAgdm9pZCBkaXNqdW5jdGlvbigpCiAgICAgewotICAgICAgICBmYWlsKEFTQ0lJTGl0
ZXJhbCgiRGlzanVuY3Rpb25zIGFyZSBub3Qgc3VwcG9ydGVkIHlldC4iKSk7CisgICAgICAgIGZh
aWwoVVJMRmlsdGVyUGFyc2VyOjpEaXNqdW5jdGlvbik7CiAgICAgfQogCiBwcml2YXRlOgogICAg
IGJvb2wgaGFzRXJyb3IoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuICFtX2Vycm9yTWVz
c2FnZS5pc051bGwoKTsKKyAgICAgICAgcmV0dXJuIG1fcGFyc2VTdGF0dXMgIT0gVVJMRmlsdGVy
UGFyc2VyOjpPazsKICAgICB9CiAKLSAgICB2b2lkIGZhaWwoY29uc3QgU3RyaW5nJiBlcnJvck1l
c3NhZ2UpCisgICAgdm9pZCBmYWlsKFVSTEZpbHRlclBhcnNlcjo6UGFyc2VTdGF0dXMgcmVhc29u
KQogICAgIHsKICAgICAgICAgaWYgKGhhc0Vycm9yKCkpCiAgICAgICAgICAgICByZXR1cm47CkBA
IC02MjYsNyArNjYyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgaWYgKG1fbmV3UHJlZml4U3VidHJl
ZVJvb3QpCiAgICAgICAgICAgICBtX25ld1ByZWZpeFN1YnRyZWVSb290LT5uZXh0UGF0dGVybi5y
ZW1vdmUobV9uZXdQcmVmaXhTdGFyaW5nUG9pbnQpOwogCi0gICAgICAgIG1fZXJyb3JNZXNzYWdl
ID0gZXJyb3JNZXNzYWdlOworICAgICAgICBtX3BhcnNlU3RhdHVzID0gcmVhc29uOwogICAgIH0K
IAogICAgIHZvaWQgc2lua0Zsb2F0aW5nVGVybUlmTmVjZXNzYXJ5KCkKQEAgLTYzNCwxMCArNjcw
LDggQEAgcHJpdmF0ZToKICAgICAgICAgaWYgKCFtX2Zsb2F0aW5nVGVybS5pc1ZhbGlkKCkpCiAg
ICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgQVNTRVJUKG1fbGFzdFByZWZpeFRyZWVFbnRy
eSk7Ci0KICAgICAgICAgaWYgKG1faGFzUHJvY2Vzc2VkRW5kT2ZMaW5lQXNzZXJ0aW9uKSB7Ci0g
ICAgICAgICAgICBmYWlsKEFTQ0lJTGl0ZXJhbCgiVGhlIGVuZCBvZiBsaW5lIGFzc2VydGlvbiBt
dXN0IGJlIHRoZSBsYXN0IHRlcm0gaW4gYW4gZXhwcmVzc2lvbi4iKSk7CisgICAgICAgICAgICBm
YWlsKFVSTEZpbHRlclBhcnNlcjo6TWlzcGxhY2VkRW5kT2ZMaW5lKTsKICAgICAgICAgICAgIG1f
ZmxvYXRpbmdUZXJtID0gVGVybSgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBA
IC02NTEsMzAgKzY4NSw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIAotICAgICAgICBhdXRvIG5leHRFbnRyeSA9IG1fbGFzdFByZWZpeFRyZWVFbnRyeS0+bmV4
dFBhdHRlcm4uZmluZChtX2Zsb2F0aW5nVGVybSk7Ci0gICAgICAgIGlmIChuZXh0RW50cnkgIT0g
bV9sYXN0UHJlZml4VHJlZUVudHJ5LT5uZXh0UGF0dGVybi5lbmQoKSkgewotICAgICAgICAgICAg
bV9sYXN0UHJlZml4VHJlZUVudHJ5ID0gbmV4dEVudHJ5LT52YWx1ZS5nZXQoKTsKLSAgICAgICAg
ICAgIG1fbmZhLmFkZFJ1bGVJZChtX2xhc3RQcmVmaXhUcmVlRW50cnktPm5mYU5vZGUsIG1fcGF0
dGVybklkKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxQ
cmVmaXhUcmVlRW50cnk+IG5leHRQcmVmaXhUcmVlRW50cnkgPSBzdGQ6Om1ha2VfdW5pcXVlPFBy
ZWZpeFRyZWVFbnRyeT4oKTsKLQotICAgICAgICAgICAgdW5zaWduZWQgbmV3RW5kID0gbV9mbG9h
dGluZ1Rlcm0uZ2VuZXJhdGVHcmFwaChtX25mYSwgbV9wYXR0ZXJuSWQsIG1fbGFzdFByZWZpeFRy
ZWVFbnRyeS0+bmZhTm9kZSk7Ci0gICAgICAgICAgICBuZXh0UHJlZml4VHJlZUVudHJ5LT5uZmFO
b2RlID0gbmV3RW5kOwotCi0gICAgICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fbGFzdFByZWZp
eFRyZWVFbnRyeS0+bmV4dFBhdHRlcm4uc2V0KG1fZmxvYXRpbmdUZXJtLCBXVEY6Om1vdmUobmV4
dFByZWZpeFRyZWVFbnRyeSkpOwotICAgICAgICAgICAgQVNTRVJUKGFkZFJlc3VsdC5pc05ld0Vu
dHJ5KTsKLQotICAgICAgICAgICAgaWYgKCFtX25ld1ByZWZpeFN1YnRyZWVSb290KSB7Ci0gICAg
ICAgICAgICAgICAgbV9uZXdQcmVmaXhTdWJ0cmVlUm9vdCA9IG1fbGFzdFByZWZpeFRyZWVFbnRy
eTsKLSAgICAgICAgICAgICAgICBtX25ld1ByZWZpeFN0YXJpbmdQb2ludCA9IG1fZmxvYXRpbmdU
ZXJtOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBtX2xhc3RQcmVmaXhUcmVlRW50cnkg
PSBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwotICAgICAgICB9Ci0gICAgICAgIG1f
c3VidHJlZUVuZCA9IG1fbGFzdFByZWZpeFRyZWVFbnRyeS0+bmZhTm9kZTsKLQorICAgICAgICBt
X3N1bmtUZXJtcy5hcHBlbmQobV9mbG9hdGluZ1Rlcm0pOwogICAgICAgICBtX2Zsb2F0aW5nVGVy
bSA9IFRlcm0oKTsKLSAgICAgICAgQVNTRVJUKG1fbGFzdFByZWZpeFRyZWVFbnRyeSk7CiAgICAg
fQogCiAgICAgTkZBJiBtX25mYTsKQEAgLTY4NiwxMyArNjk4LDE0IEBAIHByaXZhdGU6CiAKICAg
ICBQcmVmaXhUcmVlRW50cnkqIG1fbGFzdFByZWZpeFRyZWVFbnRyeTsKICAgICBEZXF1ZTxUZXJt
PiBtX29wZW5Hcm91cHM7CisgICAgVmVjdG9yPFRlcm0+IG1fc3Vua1Rlcm1zOwogICAgIFRlcm0g
bV9mbG9hdGluZ1Rlcm07CiAgICAgYm9vbCBtX2hhc1Byb2Nlc3NlZEVuZE9mTGluZUFzc2VydGlv
biB7IGZhbHNlIH07CiAKICAgICBQcmVmaXhUcmVlRW50cnkqIG1fbmV3UHJlZml4U3VidHJlZVJv
b3QgPSBudWxscHRyOwogICAgIFRlcm0gbV9uZXdQcmVmaXhTdGFyaW5nUG9pbnQ7CiAKLSAgICBT
dHJpbmcgbV9lcnJvck1lc3NhZ2U7CisgICAgVVJMRmlsdGVyUGFyc2VyOjpQYXJzZVN0YXR1cyBt
X3BhcnNlU3RhdHVzOwogfTsKIAogVVJMRmlsdGVyUGFyc2VyOjpVUkxGaWx0ZXJQYXJzZXIoTkZB
JiBuZmEpCkBAIC03MDYsMzMgKzcxOSw3NCBAQCBVUkxGaWx0ZXJQYXJzZXI6On5VUkxGaWx0ZXJQ
YXJzZXIoKQogewogfQogCi1TdHJpbmcgVVJMRmlsdGVyUGFyc2VyOjphZGRQYXR0ZXJuKGNvbnN0
IFN0cmluZyYgcGF0dGVybiwgYm9vbCBwYXR0ZXJuSXNDYXNlU2Vuc2l0aXZlLCB1aW50NjRfdCBw
YXR0ZXJuSWQpCitVUkxGaWx0ZXJQYXJzZXI6OlBhcnNlU3RhdHVzIFVSTEZpbHRlclBhcnNlcjo6
YWRkUGF0dGVybihjb25zdCBTdHJpbmcmIHBhdHRlcm4sIGJvb2wgcGF0dGVybklzQ2FzZVNlbnNp
dGl2ZSwgdWludDY0X3QgcGF0dGVybklkKQogewogICAgIGlmICghcGF0dGVybi5jb250YWluc09u
bHlBU0NJSSgpKQotICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJVUkxGaWx0ZXJQYXJzZXIg
b25seSBzdXBwb3J0cyBBU0NJSSBwYXR0ZXJucy4iKTsKKyAgICAgICAgcmV0dXJuIE5vbkFTQ0lJ
OwogICAgIEFTU0VSVCghcGF0dGVybi5pc0VtcHR5KCkpOwogCiAgICAgaWYgKHBhdHRlcm4uaXNF
bXB0eSgpKQotICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJFbXB0eSBwYXR0ZXJuLiIpOwor
ICAgICAgICByZXR1cm4gRW1wdHlQYXR0ZXJuOwogCiAgICAgdW5zaWduZWQgb2xkU2l6ZSA9IG1f
bmZhLmdyYXBoU2l6ZSgpOwogCi0gICAgU3RyaW5nIGVycm9yOwotCisgICAgUGFyc2VTdGF0dXMg
c3RhdHVzID0gT2s7CiAgICAgR3JhcGhCdWlsZGVyIGdyYXBoQnVpbGRlcihtX25mYSwgKm1fcHJl
Zml4VHJlZVJvb3QsIHBhdHRlcm5Jc0Nhc2VTZW5zaXRpdmUsIHBhdHRlcm5JZCk7Ci0gICAgZXJy
b3IgPSBTdHJpbmcoSlNDOjpZYXJyOjpwYXJzZShncmFwaEJ1aWxkZXIsIHBhdHRlcm4sIDApKTsK
KyAgICBTdHJpbmcgZXJyb3IgPSBTdHJpbmcoSlNDOjpZYXJyOjpwYXJzZShncmFwaEJ1aWxkZXIs
IHBhdHRlcm4sIDApKTsKICAgICBpZiAoZXJyb3IuaXNOdWxsKCkpCiAgICAgICAgIGdyYXBoQnVp
bGRlci5maW5hbGl6ZSgpOworICAgIGVsc2UKKyAgICAgICAgc3RhdHVzID0gWWFyckVycm9yOwor
ICAgIAorICAgIGlmIChzdGF0dXMgPT0gT2spCisgICAgICAgIHN0YXR1cyA9IGdyYXBoQnVpbGRl
ci5wYXJzZVN0YXR1cygpOwogCi0gICAgaWYgKGVycm9yLmlzTnVsbCgpKQotICAgICAgICBlcnJv
ciA9IGdyYXBoQnVpbGRlci5lcnJvck1lc3NhZ2UoKTsKLQotICAgIGlmICghZXJyb3IuaXNOdWxs
KCkpCisgICAgaWYgKHN0YXR1cyAhPSBPaykKICAgICAgICAgbV9uZmEucmVzdG9yZVRvR3JhcGhT
aXplKG9sZFNpemUpOwogCi0gICAgcmV0dXJuIGVycm9yOworICAgIHJldHVybiBzdGF0dXM7CiB9
CiAKK1N0cmluZyBVUkxGaWx0ZXJQYXJzZXI6OnN0YXR1c1N0cmluZyhQYXJzZVN0YXR1cyBzdGF0
dXMpCit7CisgICAgc3dpdGNoIChzdGF0dXMpIHsKKyAgICBjYXNlIE9rOgorICAgICAgICByZXR1
cm4gIk9rIjsKKyAgICBjYXNlIE1hdGNoZXNFdmVyeXRoaW5nOgorICAgICAgICByZXR1cm4gIk1h
dGNoZXMgZXZlcnl0aGluZy4iOworICAgIGNhc2UgVW5jbG9zZWRHcm91cHM6CisgICAgICAgIHJl
dHVybiAiVGhlIGV4cHJlc3Npb24gaGFzIHVuY2xvc2VkIGdyb3Vwcy4iOworICAgIGNhc2UgQ2Fu
bm90TWF0Y2hBbnl0aGluZzoKKyAgICAgICAgcmV0dXJuICJUaGUgcGF0dGVybiBjYW5ub3QgbWF0
Y2ggYW55dGhpbmcuIjsKKyAgICBjYXNlIE5vbkFTQ0lJOgorICAgICAgICByZXR1cm4gIk9ubHkg
QVNDSUkgY2hhcmFjdGVycyBhcmUgc3VwcG9ydGVkIGluIHBhdHRlcm4uIjsKKyAgICBjYXNlIFVu
c3VwcG9ydGVkQ2hhcmFjdGVyQ2xhc3M6CisgICAgICAgIHJldHVybiAiQ2hhcmFjdGVyIGNsYXNz
IGlzIG5vdCBzdXBwb3J0ZWQuIjsKKyAgICBjYXNlIE1pc3BsYWNlZFF1YW50aWZpZXI6CisgICAg
ICAgIHJldHVybiAiUXVhbnRpZmllciB3aXRob3V0IGNvcnJlc3BvbmRpbmcgdGVybSB0byBxdWFu
dGlmeS4iOworICAgIGNhc2UgQmFja1JlZmVyZW5jZToKKyAgICAgICAgcmV0dXJuICJQYXR0ZXJu
cyBjYW5ub3QgY29udGFpbiBiYWNrcmVmZXJlbmNlcy4iOworICAgIGNhc2UgTWlzcGxhY2VkU3Rh
cnRPZkxpbmU6CisgICAgICAgIHJldHVybiAiU3RhcnQgb2YgbGluZSBhc3NlcnRpb24gY2FuIG9u
bHkgYXBwZWFyIGFzIHRoZSBmaXJzdCB0ZXJtIGluIGEgZmlsdGVyLiI7CisgICAgY2FzZSBXb3Jk
Qm91bmRhcnk6CisgICAgICAgIHJldHVybiAiV29yZCBib3VuZGFyaWVzIGFzc2VydGlvbnMgYXJl
IG5vdCBzdXBwb3J0ZWQgeWV0LiI7CisgICAgY2FzZSBBdG9tQ2hhcmFjdGVyOgorICAgICAgICBy
ZXR1cm4gIkJ1aWx0aW5zIGNoYXJhY3RlciBjbGFzcyBhdG9tcyBhcmUgbm90IHN1cHBvcnRlZCB5
ZXQuIjsKKyAgICBjYXNlIEdyb3VwOgorICAgICAgICByZXR1cm4gIkdyb3VwcyBhcmUgbm90IHN1
cHBvcnRlZCB5ZXQuIjsKKyAgICBjYXNlIERpc2p1bmN0aW9uOgorICAgICAgICByZXR1cm4gIkRp
c2p1bmN0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCB5ZXQuIjsKKyAgICBjYXNlIE1pc3BsYWNlZEVu
ZE9mTGluZToKKyAgICAgICAgcmV0dXJuICJUaGUgZW5kIG9mIGxpbmUgYXNzZXJ0aW9uIG11c3Qg
YmUgdGhlIGxhc3QgdGVybSBpbiBhbiBleHByZXNzaW9uLiI7CisgICAgY2FzZSBFbXB0eVBhdHRl
cm46CisgICAgICAgIHJldHVybiAiRW1wdHkgcGF0dGVybi4iOworICAgIGNhc2UgWWFyckVycm9y
OgorICAgICAgICByZXR1cm4gIkludGVybmFsIGVycm9yIGluIFlBUlIuIjsKKyAgICBjYXNlIElu
dmFsaWRRdWFudGlmaWVyOgorICAgICAgICByZXR1cm4gIkFyYml0cmFyeSBhdG9tIHJlcGV0aXRp
b25zIGFyZSBub3Qgc3VwcG9ydGVkLiI7CisgICAgfQorfQorICAgIAogfSAvLyBuYW1lc3BhY2Ug
Q29udGVudEV4dGVuc2lvbnMKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApJbmRleDogU291cmNl
L1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvVVJMRmlsdGVyUGFyc2VyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvVVJMRmlsdGVyUGFyc2VyLmgJKHJl
dmlzaW9uIDE4MTcxOSkKKysrIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL1VSTEZp
bHRlclBhcnNlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxMSArMzksMzEgQEAgY2xhc3MgTkZB
OwogCiBzdHJ1Y3QgUHJlZml4VHJlZUVudHJ5OwogCi1jbGFzcyBVUkxGaWx0ZXJQYXJzZXIgewor
Y2xhc3MgV0VCQ09SRV9FWFBPUlQgVVJMRmlsdGVyUGFyc2VyIHsKIHB1YmxpYzoKKyAgICBlbnVt
IFBhcnNlU3RhdHVzIHsKKyAgICAgICAgT2ssCisgICAgICAgIE1hdGNoZXNFdmVyeXRoaW5nLAor
ICAgICAgICBVbmNsb3NlZEdyb3VwcywKKyAgICAgICAgQ2Fubm90TWF0Y2hBbnl0aGluZywKKyAg
ICAgICAgTm9uQVNDSUksCisgICAgICAgIFVuc3VwcG9ydGVkQ2hhcmFjdGVyQ2xhc3MsCisgICAg
ICAgIE1pc3BsYWNlZFF1YW50aWZpZXIsCisgICAgICAgIEJhY2tSZWZlcmVuY2UsCisgICAgICAg
IE1pc3BsYWNlZFN0YXJ0T2ZMaW5lLAorICAgICAgICBXb3JkQm91bmRhcnksCisgICAgICAgIEF0
b21DaGFyYWN0ZXIsCisgICAgICAgIEdyb3VwLAorICAgICAgICBEaXNqdW5jdGlvbiwKKyAgICAg
ICAgTWlzcGxhY2VkRW5kT2ZMaW5lLAorICAgICAgICBFbXB0eVBhdHRlcm4sCisgICAgICAgIFlh
cnJFcnJvciwKKyAgICAgICAgSW52YWxpZFF1YW50aWZpZXIsCisgICAgfTsKKyAgICBzdGF0aWMg
U3RyaW5nIHN0YXR1c1N0cmluZyhQYXJzZVN0YXR1cyk7CiAgICAgZXhwbGljaXQgVVJMRmlsdGVy
UGFyc2VyKE5GQSYpOwogICAgIH5VUkxGaWx0ZXJQYXJzZXIoKTsKLSAgICBTdHJpbmcgYWRkUGF0
dGVybihjb25zdCBTdHJpbmcmIHBhdHRlcm4sIGJvb2wgcGF0dGVybklzQ2FzZVNlbnNpdGl2ZSwg
dWludDY0X3QgcGF0dGVybklkKTsKKyAgICBQYXJzZVN0YXR1cyBhZGRQYXR0ZXJuKGNvbnN0IFN0
cmluZyYgcGF0dGVybiwgYm9vbCBwYXR0ZXJuSXNDYXNlU2Vuc2l0aXZlLCB1aW50NjRfdCBwYXR0
ZXJuSWQpOwogCiBwcml2YXRlOgogICAgIE5GQSYgbV9uZmE7CkluZGV4OiBUb29scy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxODE3MTkpCisrKyBU
b29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxNS0wMy0x
OCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAg
IFtDb250ZW50RXh0ZW5zaW9uc10gUHJlcGFyZSBmb3IgY29tcGlsaW5nIHN0eWxlc2hlZXRzIG9m
IHNlbGVjdG9ycyB0byBiZSB1c2VkIG9uIGV2ZXJ5IHBhZ2UuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI3OTkKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9Db250ZW50RXh0ZW5zaW9ucy5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjp0ZXN0UGF0
dGVybik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorICAgICAgICBTdGFydCB0
ZXN0aW5nIHJlZ2V4IGZhaWx1cmVzLgorCiAyMDE1LTAzLTE4ICBEaGkgQXVycmFobWFuICA8ZGlv
cmFobWFuQHJvY2t5YmFycy5jb20+CiAKICAgICAgICAgRml4IFN0cmluZ1ZpZXcgdHlwb3MgYWZ0
ZXIgcjE4MTUyNSBhbmQgcjE4MTU1OApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29udGVudEV4dGVuc2lvbnMuY3BwCShyZXZpc2lvbiAxODE3
MTkpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29udGVudEV4dGVuc2lv
bnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxMCArMjksMTMgQEAKICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9Jbml0aWFsaXplVGhyZWFkaW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Db250
ZW50RXh0ZW5zaW9uQ29tcGlsZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRFeHRlbnNp
b25zQmFja2VuZC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTkZBLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9SZXNvdXJjZUxvYWRJbmZvLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1VSTEZpbHRlclBhcnNlci5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+
CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBDb250ZW50RXh0ZW5zaW9ucyB7CkBA
IC0zMzUsNCArMzM4LDE5IEBAIFRFU1RfRihDb250ZW50RXh0ZW5zaW9uVGVzdCwgUmVzb3VyY2VU
eXAKICAgICB0ZXN0UmVxdWVzdChiYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwOi8v
YmxvY2tfb25seV9pbWFnZXMub3JnIiwgUmVzb3VyY2VUeXBlOjpEb2N1bWVudCksIHsgfSk7CiB9
CiAKK3N0YXRpYyB2b2lkIHRlc3RQYXR0ZXJuU3RhdHVzKGNvbnN0IGNoYXIqIHBhdHRlcm4sIENv
bnRlbnRFeHRlbnNpb25zOjpVUkxGaWx0ZXJQYXJzZXI6OlBhcnNlU3RhdHVzIHN0YXR1cykKK3sK
KyAgICBDb250ZW50RXh0ZW5zaW9uczo6TkZBIG5mYTsKKyAgICBDb250ZW50RXh0ZW5zaW9uczo6
VVJMRmlsdGVyUGFyc2VyIHBhcnNlcihuZmEpOworICAgIEVYUEVDVF9FUShzdGF0dXMsIHBhcnNl
ci5hZGRQYXR0ZXJuKEFTQ0lJTGl0ZXJhbChwYXR0ZXJuKSwgZmFsc2UsIDApKTsKK30KKyAgICAK
K1RFU1RfRihDb250ZW50RXh0ZW5zaW9uVGVzdCwgUGFyc2luZ0ZhaWx1cmVzKQoreworICAgIHRl
c3RQYXR0ZXJuU3RhdHVzKCJhKmI/LiouP1thLXpdP1thLXpdKiIsIENvbnRlbnRFeHRlbnNpb25z
OjpVUkxGaWx0ZXJQYXJzZXI6OlBhcnNlU3RhdHVzOjpNYXRjaGVzRXZlcnl0aGluZyk7CisgICAg
dGVzdFBhdHRlcm5TdGF0dXMoImEqYj8uKi4/W2Etel0/W2Etel0rIiwgQ29udGVudEV4dGVuc2lv
bnM6OlVSTEZpbHRlclBhcnNlcjo6UGFyc2VTdGF0dXM6Ok9rKTsKKyAgICB0ZXN0UGF0dGVyblN0
YXR1cygiYSpiPy4qLj9bYS16XT9bYS16XSIsIENvbnRlbnRFeHRlbnNpb25zOjpVUkxGaWx0ZXJQ
YXJzZXI6OlBhcnNlU3RhdHVzOjpPayk7CisgICAgLy8gRklYTUU6IEFkZCByZWdleGVzIHRoYXQg
Y2F1c2UgZWFjaCBwYXJzZSBzdGF0dXMuCit9CisKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRB
UEkK
</data>

          </attachment>
      

    </bug>

</bugzilla>