<?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>83616</bug_id>
          
          <creation_ts>2012-04-10 14:14:03 -0700</creation_ts>
          <short_desc>Add support for webkitSourceAddId() &amp; webkitSourceRemoveId()</short_desc>
          <delta_ts>2012-04-17 10:10:03 -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>Media</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>83607</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Aaron Colwell">acolwell</reporter>
          <assigned_to name="Aaron Colwell">acolwell</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>ojan</cc>
    
    <cc>tkent</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>599628</commentid>
    <comment_count>0</comment_count>
    <who name="Aaron Colwell">acolwell</who>
    <bug_when>2012-04-10 14:14:03 -0700</bug_when>
    <thetext>WebKit changes needed to support the new webkitSourceAddId() &amp; webkitSourceRemoveId() Media Source methods. 

LayoutTests for the new methods will be initially disabled because the Chromium changes depend on the AddIdStatus enum.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599701</commentid>
    <comment_count>1</comment_count>
      <attachid>136552</attachid>
    <who name="Aaron Colwell">acolwell</who>
    <bug_when>2012-04-10 15:18:42 -0700</bug_when>
    <thetext>Created attachment 136552
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599707</commentid>
    <comment_count>2</comment_count>
      <attachid>136553</attachid>
    <who name="Aaron Colwell">acolwell</who>
    <bug_when>2012-04-10 15:23:34 -0700</bug_when>
    <thetext>Created attachment 136553
Fix test_expectations.txt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599708</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-10 15:23:50 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599713</commentid>
    <comment_count>4</comment_count>
      <attachid>136553</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-04-10 15:25:16 -0700</bug_when>
    <thetext>Comment on attachment 136553
Fix test_expectations.txt

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        Add webkitSourceAddId() &amp; webkitSourceRemoveId() to HTMLMediaElement
&gt; +        and propagate calls to the MediaPlayerPrivate interface.
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=83616
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        Test: http/tests/media/media-source/webm/video-media-source-add-and-remove-ids.html

Why?  What is this?  Is there a spec?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599714</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-10 15:25:42 -0700</bug_when>
    <thetext>Attachment 136553 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/http...&quot; exit_code: 1
LayoutTests/platform/chromium/test_expectations.txt:3822:  Entries on line 3529 and line 3822 match overlapping sets of configurations webaudio/convolution-mono-mono.html  [test/expectations] [5]
Total errors found: 1 in 15 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599717</commentid>
    <comment_count>6</comment_count>
      <attachid>136553</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-04-10 15:27:11 -0700</bug_when>
    <thetext>Comment on attachment 136553
Fix test_expectations.txt

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

&gt; Source/WebCore/html/HTMLMediaElement.idl:100
&gt; +    [V8EnabledAtRuntime=webkitMediaSource] void webkitSourceAddId(in DOMString id, in DOMString type) raises (DOMException);
&gt; +    [V8EnabledAtRuntime=webkitMediaSource] void webkitSourceRemoveId(in DOMString id) raises (DOMException);

Somewhat unrelated to this change, but the V8EnabledAtRuntime &quot;webkitMediaSource&quot; shouldn&apos;t have a &quot;webkit&quot; prefix.  The prefix is just for the web-facing API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599724</commentid>
    <comment_count>7</comment_count>
    <who name="Aaron Colwell">acolwell</who>
    <bug_when>2012-04-10 15:31:17 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 136553 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=136553&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:9
&gt; &gt; +        Add webkitSourceAddId() &amp; webkitSourceRemoveId() to HTMLMediaElement
&gt; &gt; +        and propagate calls to the MediaPlayerPrivate interface.
&gt; &gt; +        https://bugs.webkit.org/show_bug.cgi?id=83616
&gt; &gt; +
&gt; &gt; +        Reviewed by NOBODY (OOPS!).
&gt; &gt; +
&gt; &gt; +        Test: http/tests/media/media-source/webm/video-media-source-add-and-remove-ids.html
&gt; 
&gt; Why?  What is this?  Is there a spec?
Yes. http://html5-mediasource-api.googlecode.com/svn/tags/0.4/draft-spec/mediasource-draft-spec.html . Sorry I forgot to mention it here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599731</commentid>
    <comment_count>8</comment_count>
    <who name="Aaron Colwell">acolwell</who>
    <bug_when>2012-04-10 15:36:39 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 136553 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=136553&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/html/HTMLMediaElement.idl:100
&gt; &gt; +    [V8EnabledAtRuntime=webkitMediaSource] void webkitSourceAddId(in DOMString id, in DOMString type) raises (DOMException);
&gt; &gt; +    [V8EnabledAtRuntime=webkitMediaSource] void webkitSourceRemoveId(in DOMString id) raises (DOMException);
&gt; 
&gt; Somewhat unrelated to this change, but the V8EnabledAtRuntime &quot;webkitMediaSource&quot; shouldn&apos;t have a &quot;webkit&quot; prefix.  The prefix is just for the web-facing API.

Ok. I&apos;ll fix this in another patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599771</commentid>
    <comment_count>9</comment_count>
      <attachid>136553</attachid>
    <who name="Aaron Colwell">acolwell</who>
    <bug_when>2012-04-10 16:19:08 -0700</bug_when>
    <thetext>Comment on attachment 136553
Fix test_expectations.txt

Removing commit-queue request until the patch for https://bugs.webkit.org/show_bug.cgi?id=83633 lands.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600457</commentid>
    <comment_count>10</comment_count>
      <attachid>136714</attachid>
    <who name="Aaron Colwell">acolwell</who>
    <bug_when>2012-04-11 11:48:59 -0700</bug_when>
    <thetext>Created attachment 136714
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601255</commentid>
    <comment_count>11</comment_count>
    <who name="Aaron Colwell">acolwell</who>
    <bug_when>2012-04-12 08:35:31 -0700</bug_when>
    <thetext>Ping. Can I get a review please.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601333</commentid>
    <comment_count>12</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-04-12 10:36:26 -0700</bug_when>
    <thetext>&gt; Ping. Can I get a review please.

Who should review this patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601340</commentid>
    <comment_count>13</comment_count>
    <who name="Aaron Colwell">acolwell</who>
    <bug_when>2012-04-12 10:43:24 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; &gt; Ping. Can I get a review please.
&gt; 
&gt; Who should review this patch?
So it appears that the sheriff-bot says abarth, dglazkov, fishd, darin, jamesr, or tkent need to review it at a minimum. It isn&apos;t clear to me which of these options is most appropriate. If you don&apos;t mind abarth, could you do it?

I also assumed that eric.carlson would review the code since he works on HTMLMediaElement a fair amount.

Sorry I wasn&apos;t a little more explicit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>602194</commentid>
    <comment_count>14</comment_count>
      <attachid>136714</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2012-04-13 10:46:35 -0700</bug_when>
    <thetext>Comment on attachment 136714
Patch

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

This looks fine to me modulo the mostly stylistic comments. Not marking r+ because I would prefer to see at least some of the comments addressed, and because I can&apos;t review Chromium public API parts.

&gt; Source/WebCore/html/HTMLMediaElement.cpp:2212
&gt; +    if (id.isNull() || id.isEmpty()) {
&gt; +        ec = INVALID_ACCESS_ERR;
&gt; +        return;
&gt; +    }
&gt; +
&gt; +    if (m_sourceIDs.contains(id)) {
&gt; +        ec = INVALID_STATE_ERR;
&gt; +        return;
&gt; +    }

Why not use isValidSourceId()?

&gt; Source/WebCore/html/HTMLMediaElement.cpp:2231
&gt; +    case MediaPlayer::AisNoError:
&gt; +        m_sourceIDs.add(id);
&gt; +        return;
&gt; +    case MediaPlayer::AisNotSupported:
&gt; +        ec = NOT_SUPPORTED_ERR;
&gt; +        return;
&gt; +    case MediaPlayer::AisReachedIdLimit:

These enum names are unusual, why do they have an &quot;A&quot; prefix? 

(some time later) Ah, I just got that &quot;Ais&quot; is probably &quot;add ID status&quot;. I didn&apos;t figure this out until I saw the enum name, so I don&apos;t think the prefix is helpful. Will it not work to just use &quot;NoError&quot;, &quot;NotSupported&quot;, and &quot;ReachedIdLimit&quot;?

&gt; Source/WebCore/html/HTMLMediaElement.cpp:2236
&gt; +    ec = INVALID_STATE_ERR;

Is there a legitimate way to reach this part of the function? If not, please add an ASSERT_NOT_REACHED.

&gt; Source/WebCore/html/HTMLMediaElement.cpp:2250
&gt; +    m_player-&gt;sourceRemoveId(id);

Should the player be able to signal failure? The only case I can think of where the source looks valid to the media element but not to the player is a bug in one or the other, but it might be worth making MediaPlayer::sourceRemoveId return a bool and ASSERT here if it returns false.

&gt; LayoutTests/http/tests/media/media-source/webm/video-media-source-add-and-remove-ids.html:7
&gt; +            var DEFAULT_SOURCE_MIMETYPE = &quot;video/webm; codecs=\&quot;vp8, vorbis\&quot;&quot;;

I don&apos;t recall seeing all upper case, underscore delimited, variable names in any other layout tests.

&gt; LayoutTests/http/tests/media/media-source/webm/video-media-source-add-and-remove-ids.html:10
&gt; +            function runOnSourceOpen(videoTag, onOpenFunction) {
&gt; +                var eventHandlerFunction = function (event) {

WebKit style is to have the opening brace for a function on a new line.

&gt; LayoutTests/http/tests/media/media-source/webm/video-media-source-add-and-remove-ids.html:22
&gt; +            function expectExceptionOnAddId(videoTag, id, type, error) {
&gt; +                try {

Ditto here and throughout the rest of this test.

&gt; LayoutTests/http/tests/media/media-source/webm/video-media-source-add-and-remove-ids.html:29
&gt; +                } catch (e) {
&gt; +                    if (!(e.code == error)) {
&gt; +                        failTest(&quot;Unexpected exception &quot; + e);
&gt; +                        throw e;
&gt; +                    }

Nit: I would prefer to have logging for success as well as for failure. I think it is helpful for the test results to document what happens, so logging the exception thrown would be good. Here and throughout the rest of this test.

&gt; LayoutTests/http/tests/media/media-source/webm/video-media-source-add-and-remove-ids.html:65
&gt; +                runOnSourceOpen(videoTag, function (vt) {
&gt; +                    // Test empty ID case
&gt; +                    expectExceptionOnAddId(videoTag, &quot;&quot;, DEFAULT_SOURCE_MIMETYPE, DOMException.INVALID_ACCESS_ERR);
&gt; +
&gt; +                    videoTag.webkitSourceAddId(&quot;123&quot;, DEFAULT_SOURCE_MIMETYPE);

Nit: Why does this function have a video element parameter (vt) but use the one from the parent scope (videoTag)? Here and throughout the test.

&gt; LayoutTests/http/tests/media/media-source/webm/video-media-source-add-and-remove-ids.html:67
&gt; +                    // Test adding the same ID again.

Nit: I would prefer to see comments like this in the test output so it will be easier to understand what is being tested when a test fails unexpectedly. Here and throughout the test.

&gt; LayoutTests/http/tests/media/media-source/webm/video-media-source-add-and-remove-ids.html:79
&gt; +                    for (var i = 0; i &lt; 20; ++i) {

Is 20 from the spec? If so, a comment would be helpful for someone looking at a failure later.

&gt; LayoutTests/http/tests/media/media-source/webm/video-media-source-add-and-remove-ids.html:111
&gt; +                    // Test removing and ID that was never added.

Type: Test removing *and* ID...

&gt; LayoutTests/http/tests/media/media-source/webm/video-media-source-add-and-remove-ids.html:169
&gt; +                var functionName = testCases[testCaseIndex];
&gt; +                var testCaseFunction = eval(functionName);

Nit: Is there any reason to have an array of function names instead of an array of functions and descriptive strings for logging?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>602392</commentid>
    <comment_count>15</comment_count>
      <attachid>136714</attachid>
    <who name="Aaron Colwell">acolwell</who>
    <bug_when>2012-04-13 14:06:13 -0700</bug_when>
    <thetext>Comment on attachment 136714
Patch

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

&gt;&gt; Source/WebCore/html/HTMLMediaElement.cpp:2212
&gt;&gt; +    }
&gt; 
&gt; Why not use isValidSourceId()?

isValidSourceId() is subtly different. If the ID is not in m_sourceIDs then it triggers an error. Here we want to trigger an error if the ID is already in m_sourceIDs. isValidSourceId() only has one caller right now, but when I update webkitSourceAppend() and add webkitSourceBuffered() &amp; webkitSourceAbort() it will be used more.

&gt;&gt; Source/WebCore/html/HTMLMediaElement.cpp:2231
&gt;&gt; +    case MediaPlayer::AisReachedIdLimit:
&gt; 
&gt; These enum names are unusual, why do they have an &quot;A&quot; prefix? 
&gt; 
&gt; (some time later) Ah, I just got that &quot;Ais&quot; is probably &quot;add ID status&quot;. I didn&apos;t figure this out until I saw the enum name, so I don&apos;t think the prefix is helpful. Will it not work to just use &quot;NoError&quot;, &quot;NotSupported&quot;, and &quot;ReachedIdLimit&quot;?

Andrew Scherkus just had the same reaction to my related Chromium changes. :) I&apos;ve removed the Ais and changed NoError to Ok.

&gt;&gt; Source/WebCore/html/HTMLMediaElement.cpp:2236
&gt;&gt; +    ec = INVALID_STATE_ERR;
&gt; 
&gt; Is there a legitimate way to reach this part of the function? If not, please add an ASSERT_NOT_REACHED.

No. Done.

&gt;&gt; Source/WebCore/html/HTMLMediaElement.cpp:2250
&gt;&gt; +    m_player-&gt;sourceRemoveId(id);
&gt; 
&gt; Should the player be able to signal failure? The only case I can think of where the source looks valid to the media element but not to the player is a bug in one or the other, but it might be worth making MediaPlayer::sourceRemoveId return a bool and ASSERT here if it returns false.

I was expecting WebKit to be the authority here, but you&apos;re probably right. I think there are cases where the player is shutting down and WebKit doesn&apos;t know about it yet that might require this. Done.

&gt;&gt; LayoutTests/http/tests/media/media-source/webm/video-media-source-add-and-remove-ids.html:7
&gt;&gt; +            var DEFAULT_SOURCE_MIMETYPE = &quot;video/webm; codecs=\&quot;vp8, vorbis\&quot;&quot;;
&gt; 
&gt; I don&apos;t recall seeing all upper case, underscore delimited, variable names in any other layout tests.

Done

&gt;&gt; LayoutTests/http/tests/media/media-source/webm/video-media-source-add-and-remove-ids.html:10
&gt;&gt; +                var eventHandlerFunction = function (event) {
&gt; 
&gt; WebKit style is to have the opening brace for a function on a new line.

Done

&gt;&gt; LayoutTests/http/tests/media/media-source/webm/video-media-source-add-and-remove-ids.html:22
&gt;&gt; +                try {
&gt; 
&gt; Ditto here and throughout the rest of this test.

Done.

&gt;&gt; LayoutTests/http/tests/media/media-source/webm/video-media-source-add-and-remove-ids.html:29
&gt;&gt; +                    }
&gt; 
&gt; Nit: I would prefer to have logging for success as well as for failure. I think it is helpful for the test results to document what happens, so logging the exception thrown would be good. Here and throughout the rest of this test.

Done

&gt;&gt; LayoutTests/http/tests/media/media-source/webm/video-media-source-add-and-remove-ids.html:65
&gt;&gt; +                    videoTag.webkitSourceAddId(&quot;123&quot;, DEFAULT_SOURCE_MIMETYPE);
&gt; 
&gt; Nit: Why does this function have a video element parameter (vt) but use the one from the parent scope (videoTag)? Here and throughout the test.

No reason. Just the result of copy-and-pasting. Fixed to use vt.

&gt;&gt; LayoutTests/http/tests/media/media-source/webm/video-media-source-add-and-remove-ids.html:67
&gt;&gt; +                    // Test adding the same ID again.
&gt; 
&gt; Nit: I would prefer to see comments like this in the test output so it will be easier to understand what is being tested when a test fails unexpectedly. Here and throughout the test.

Great idea. Done.

&gt;&gt; LayoutTests/http/tests/media/media-source/webm/video-media-source-add-and-remove-ids.html:79
&gt;&gt; +                    for (var i = 0; i &lt; 20; ++i) {
&gt; 
&gt; Is 20 from the spec? If so, a comment would be helpful for someone looking at a failure later.

It&apos;s an arbitrary number to ensure termination. I added a comment indicating this fact and that we are assuming that implementation won&apos;t allow more than 20 simultaneous sourceIDs.

&gt;&gt; LayoutTests/http/tests/media/media-source/webm/video-media-source-add-and-remove-ids.html:111
&gt;&gt; +                    // Test removing and ID that was never added.
&gt; 
&gt; Type: Test removing *and* ID...

Done

&gt;&gt; LayoutTests/http/tests/media/media-source/webm/video-media-source-add-and-remove-ids.html:169
&gt;&gt; +                var testCaseFunction = eval(functionName);
&gt; 
&gt; Nit: Is there any reason to have an array of function names instead of an array of functions and descriptive strings for logging?

No. I was able to get rid of the eval and just put functions in the list. I was hoping the function names were descriptive enough to avoid extra description strings. Is that ok?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>602394</commentid>
    <comment_count>16</comment_count>
      <attachid>137147</attachid>
    <who name="Aaron Colwell">acolwell</who>
    <bug_when>2012-04-13 14:07:45 -0700</bug_when>
    <thetext>Created attachment 137147
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>602515</commentid>
    <comment_count>17</comment_count>
      <attachid>137147</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2012-04-13 16:42:10 -0700</bug_when>
    <thetext>Comment on attachment 137147
Patch

Marking r+ only, pending approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603195</commentid>
    <comment_count>18</comment_count>
      <attachid>137147</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2012-04-16 09:18:51 -0700</bug_when>
    <thetext>Comment on attachment 137147
Patch

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

&gt; Source/WebKit/chromium/public/WebMediaPlayer.h:93
&gt; +    enum AddIdStatus {

nit: please see the WebKit API style guide for rules on enum naming:
http://trac.webkit.org/wiki/ChromiumWebKitAPI#Enums

The rest of this interface is not consistent either :-(

&gt; Source/WebKit/chromium/src/WebMediaPlayerClientImpl.cpp:348
&gt; +    return static_cast&lt;WebCore::MediaPlayer::AddIdStatus&gt;(m_webMediaPlayer-&gt;sourceAddId(id, type));

you should add compile time asserts to AssertMatchingEnums.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603256</commentid>
    <comment_count>19</comment_count>
      <attachid>137147</attachid>
    <who name="Aaron Colwell">acolwell</who>
    <bug_when>2012-04-16 10:21:25 -0700</bug_when>
    <thetext>Comment on attachment 137147
Patch

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

&gt;&gt; Source/WebKit/chromium/public/WebMediaPlayer.h:93
&gt;&gt; +    enum AddIdStatus {
&gt; 
&gt; nit: please see the WebKit API style guide for rules on enum naming:
&gt; http://trac.webkit.org/wiki/ChromiumWebKitAPI#Enums
&gt; 
&gt; The rest of this interface is not consistent either :-(

Fixed. Created http://webk.it/84046 to take care of the rest of the style violations.

&gt;&gt; Source/WebKit/chromium/src/WebMediaPlayerClientImpl.cpp:348
&gt;&gt; +    return static_cast&lt;WebCore::MediaPlayer::AddIdStatus&gt;(m_webMediaPlayer-&gt;sourceAddId(id, type));
&gt; 
&gt; you should add compile time asserts to AssertMatchingEnums.cpp

Done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603257</commentid>
    <comment_count>20</comment_count>
      <attachid>137361</attachid>
    <who name="Aaron Colwell">acolwell</who>
    <bug_when>2012-04-16 10:21:53 -0700</bug_when>
    <thetext>Created attachment 137361
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603660</commentid>
    <comment_count>21</comment_count>
      <attachid>137449</attachid>
    <who name="Aaron Colwell">acolwell</who>
    <bug_when>2012-04-16 18:23:02 -0700</bug_when>
    <thetext>Created attachment 137449
Rebase patch now that WK84046 style fixes landed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>604065</commentid>
    <comment_count>22</comment_count>
    <who name="Aaron Colwell">acolwell</who>
    <bug_when>2012-04-17 09:11:15 -0700</bug_when>
    <thetext>eric.carlson or fishd can I get an r+,cq+ please. I&apos;ve addressed all outstanding concerns.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>604107</commentid>
    <comment_count>23</comment_count>
      <attachid>137449</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-17 10:09:56 -0700</bug_when>
    <thetext>Comment on attachment 137449
Rebase patch now that WK84046 style fixes landed.

Clearing flags on attachment: 137449

Committed r114390: &lt;http://trac.webkit.org/changeset/114390&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>604108</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-17 10:10:03 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136552</attachid>
            <date>2012-04-10 15:18:42 -0700</date>
            <delta_ts>2012-04-10 15:23:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83616-20120410151841.patch</filename>
            <type>text/plain</type>
            <size>24106</size>
            <attacher name="Aaron Colwell">acolwell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzNzY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDg0MjE3ZmFiZjhlNDIx
ZDA1MGQ5YWY4ZDY4Mjg1ZmIyZGE0YjUyYi4uNzQxMDYwZmRjNGRjNDU3MDVmYmI1ZjU2MjY3Nzdk
YzNkN2ZlY2VjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEyLTA0LTEwICBBYXJv
biBDb2x3ZWxsICA8YWNvbHdlbGxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEFkZCB3ZWJraXRT
b3VyY2VBZGRJZCgpICYgd2Via2l0U291cmNlUmVtb3ZlSWQoKSB0byBIVE1MTWVkaWFFbGVtZW50
CisgICAgICAgIGFuZCBwcm9wYWdhdGUgY2FsbHMgdG8gdGhlIE1lZGlhUGxheWVyUHJpdmF0ZSBp
bnRlcmZhY2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD04MzYxNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRlc3Q6IGh0dHAvdGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL3dlYm0vdmlkZW8tbWVkaWEtc291
cmNlLWFkZC1hbmQtcmVtb3ZlLWlkcy5odG1sCisKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50Ojppc1ZhbGlkU291cmNlSWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6d2Via2l0U291cmNlQWRkSWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6d2Via2l0U291cmNlUmVtb3ZlSWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6c2V0U291cmNlU3RhdGUpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxl
bWVudC5oOgorICAgICAgICAoSFRNTE1lZGlhRWxlbWVudCk6CisgICAgICAgICogaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmlkbDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOdWxsTWVkaWFQbGF5ZXJQcml2YXRlOjpzb3VyY2VB
ZGRJZCk6CisgICAgICAgIChXZWJDb3JlOjpOdWxsTWVkaWFQbGF5ZXJQcml2YXRlOjpzb3VyY2VS
ZW1vdmVJZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyOjpzb3VyY2VBZGRJZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6c291cmNl
UmVtb3ZlSWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmg6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U6OnNvdXJjZUFkZElkKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZTo6c291cmNlUmVtb3Zl
SWQpOgorCiAyMDEyLTA0LTEwICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFtDTWFrZV0gRW5hYmxlIFVTRV9GT0xERVJTIHByb3BlcnR5CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCmluZGV4IDNlYWRkMDA1MzIzYTRlN2JlOGZiMDc4OGMwZGIyNWNkNmIx
NDdmZDguLjgxZmQ2ZmQ0ODQwYWFjOWZhZjgyYzg1NGZlN2M2MTc0ZDU3N2IzNTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTItMDQtMTAgIEFhcm9uIENv
bHdlbGwgIDxhY29sd2VsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRkIHNvdXJjZUFkZElk
KCkgJiBzb3VyY2VSZW1vdmVJZCgpIHN0dWJzIGZvciBDaHJvbWl1bS4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgzNjE2CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViTWVkaWFQbGF5ZXIu
aDoKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFQbGF5ZXI6OnNvdXJjZUFkZElkKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViTWVkaWFQbGF5ZXI6OnNvdXJjZVJlbW92ZUlkKToKKyAgICAgICAgKiBz
cmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTWVk
aWFQbGF5ZXJDbGllbnRJbXBsOjpzb3VyY2VBZGRJZCk6CisgICAgICAgIChXZWJLaXQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OnNvdXJjZVJlbW92ZUlkKToK
KyAgICAgICAgKiBzcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmg6CisgICAgICAgIChXZWJN
ZWRpYVBsYXllckNsaWVudEltcGwpOgorCiAyMDEyLTA0LTEwICBTaGVyaWZmIEJvdCAgPHdlYmtp
dC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91
dCByMTEzNzM0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXgg
MTEzYjIxYzg5ZDQzNjEyZmQ2MjY2MTIwZjg2MDIwNGRlZTY5MDUyMC4uMGNjY2NkZjI1OWY2NzU2
NzUwZjUwMjUwMGQ4ZjU1ODlhMjgyMTQ5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwCkBAIC0xNjc2LDYgKzE2NzYsMjIgQEAgU3RyaW5nIEhUTUxNZWRpYUVsZW1l
bnQ6Om1lZGlhUGxheWVyU291cmNlVVJMKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9tZWRpYVNv
dXJjZVVSTC5zdHJpbmcoKTsKIH0KKworYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojppc1ZhbGlkU291
cmNlSWQoY29uc3QgU3RyaW5nJiBpZCwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0Cit7CisgICAg
aWYgKGlkLmlzTnVsbCgpIHx8IGlkLmlzRW1wdHkoKSkgeworICAgICAgICBlYyA9IElOVkFMSURf
QUNDRVNTX0VSUjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghbV9z
b3VyY2VJRHMuY29udGFpbnMoaWQpKSB7CisgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCiAjZW5kaWYK
IAogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpwcm9ncmVzc0V2ZW50VGltZXJGaXJlZChUaW1lcjxI
VE1MTWVkaWFFbGVtZW50PiopCkBAIC0yMTgzLDYgKzIxOTksNTggQEAgdm9pZCBIVE1MTWVkaWFF
bGVtZW50OjpwYXVzZUludGVybmFsKCkKIH0KIAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCit2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OndlYmtpdFNvdXJjZUFkZElkKGNvbnN0IFN0cmluZyYgaWQs
IGNvbnN0IFN0cmluZyYgdHlwZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKGlkLmlz
TnVsbCgpIHx8IGlkLmlzRW1wdHkoKSkgeworICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VS
UjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChtX3NvdXJjZUlEcy5jb250YWlu
cyhpZCkpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGlmICh0eXBlLmlzTnVsbCgpIHx8IHR5cGUuaXNFbXB0eSgpKSB7Cisg
ICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgaWYgKCFtX3BsYXllciB8fCBtX2N1cnJlbnRTcmMgIT0gbV9tZWRpYVNvdXJjZVVSTCB8
fCBtX3NvdXJjZVN0YXRlICE9IFNPVVJDRV9PUEVOKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9T
VEFURV9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzd2l0Y2ggKG1fcGxheWVy
LT5zb3VyY2VBZGRJZChpZCwgdHlwZSkpIHsKKyAgICBjYXNlIE1lZGlhUGxheWVyOjpBaXNOb0Vy
cm9yOgorICAgICAgICBtX3NvdXJjZUlEcy5hZGQoaWQpOworICAgICAgICByZXR1cm47CisgICAg
Y2FzZSBNZWRpYVBsYXllcjo6QWlzTm90U3VwcG9ydGVkOgorICAgICAgICBlYyA9IE5PVF9TVVBQ
T1JURURfRVJSOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBNZWRpYVBsYXllcjo6QWlzUmVh
Y2hlZElkTGltaXQ6CisgICAgICAgIGVjID0gUVVPVEFfRVhDRUVERURfRVJSOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICByZXR1cm47
Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6d2Via2l0U291cmNlUmVtb3ZlSWQoY29uc3Qg
U3RyaW5nJiBpZCwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKCFpc1ZhbGlkU291cmNl
SWQoaWQsIGVjKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFtX3BsYXllciB8fCBtX2N1
cnJlbnRTcmMgIT0gbV9tZWRpYVNvdXJjZVVSTCB8fCBtX3NvdXJjZVN0YXRlID09IFNPVVJDRV9D
TE9TRUQpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIG1fcGxheWVyLT5zb3VyY2VSZW1vdmVJZChpZCk7CisgICAgbV9zb3Vy
Y2VJRHMucmVtb3ZlKGlkKTsKK30KKwogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp3ZWJraXRTb3Vy
Y2VBcHBlbmQoUGFzc1JlZlB0cjxVaW50OEFycmF5PiBkYXRhLCBFeGNlcHRpb25Db2RlJiBlYykK
IHsKICAgICBpZiAoIW1fcGxheWVyIHx8IG1fY3VycmVudFNyYyAhPSBtX21lZGlhU291cmNlVVJM
IHx8IG1fc291cmNlU3RhdGUgIT0gU09VUkNFX09QRU4pIHsKQEAgLTIyMzgsNiArMjMwNiwxMSBA
QCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFNvdXJjZVN0YXRlKFNvdXJjZVN0YXRlIHN0YXRl
KQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9zb3VyY2VTdGF0ZSA9PSBTT1VSQ0VfQ0xP
U0VEKSB7CisgICAgICAgIGlmIChtX3BsYXllcikgeworICAgICAgICAgICAgZm9yIChIYXNoU2V0
PFN0cmluZz46Oml0ZXJhdG9yIGkgPSBtX3NvdXJjZUlEcy5iZWdpbigpOyBpICE9IG1fc291cmNl
SURzLmVuZCgpOyArK2kpCisgICAgICAgICAgICAgICAgbV9wbGF5ZXItPnNvdXJjZVJlbW92ZUlk
KCppKTsKKyAgICAgICAgfQorICAgICAgICBtX3NvdXJjZUlEcy5jbGVhcigpOwogICAgICAgICBz
Y2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS53ZWJraXRzb3VyY2VjbG9zZUV2ZW50KTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5k
ZXggZDk1ZGNkZDU1ZGFlYmQ2ODliN2RmOTdkZWRkMzhkMzYwNWFhNTUwOS4uMjZlMmY1NDU2OTM1
NDA1MzY3YjM0MzhmYjM3YmNjYTczYTExNzU1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmgKQEAgLTE3Miw2ICsxNzIsOCBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKE1FRElB
X1NPVVJDRSkKIC8vICBNZWRpYSBTb3VyY2UuCiAgICAgY29uc3QgS1VSTCYgd2Via2l0TWVkaWFT
b3VyY2VVUkwoKSBjb25zdCB7IHJldHVybiBtX21lZGlhU291cmNlVVJMOyB9CisgICAgdm9pZCB3
ZWJraXRTb3VyY2VBZGRJZChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25D
b2RlJik7CisgICAgdm9pZCB3ZWJraXRTb3VyY2VSZW1vdmVJZChjb25zdCBTdHJpbmcmLCBFeGNl
cHRpb25Db2RlJik7CiAgICAgdm9pZCB3ZWJraXRTb3VyY2VBcHBlbmQoUGFzc1JlZlB0cjxVaW50
OEFycmF5PiBkYXRhLCBFeGNlcHRpb25Db2RlJik7CiAgICAgZW51bSBFbmRPZlN0cmVhbVN0YXR1
cyB7IEVPU19OT19FUlJPUiwgRU9TX05FVFdPUktfRVJSLCBFT1NfREVDT0RFX0VSUiB9OwogICAg
IHZvaWQgd2Via2l0U291cmNlRW5kT2ZTdHJlYW0odW5zaWduZWQgc2hvcnQsIEV4Y2VwdGlvbkNv
ZGUmKTsKQEAgLTM5NSw2ICszOTcsNyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShNRURJQV9TT1VS
Q0UpCiAgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyU291cmNlT3BlbmVkKCk7CiAgICAgdmly
dHVhbCBTdHJpbmcgbWVkaWFQbGF5ZXJTb3VyY2VVUkwoKSBjb25zdDsKKyAgICBib29sIGlzVmFs
aWRTb3VyY2VJZChjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7CiAjZW5kaWYK
IAogICAgIHZpcnR1YWwgU3RyaW5nIG1lZGlhUGxheWVyUmVmZXJyZXIoKSBjb25zdCBPVkVSUklE
RTsKQEAgLTU1Nyw2ICs1NjAsNyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0Up
CiAgICAgS1VSTCBtX21lZGlhU291cmNlVVJMOwogICAgIFNvdXJjZVN0YXRlIG1fc291cmNlU3Rh
dGU7CisgICAgSGFzaFNldDxTdHJpbmc+IG1fc291cmNlSURzOwogI2VuZGlmCiAKICAgICBtdXRh
YmxlIGZsb2F0IG1fY2FjaGVkVGltZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuaWRsCmluZGV4IDk4ZGU2OTdlZTVhODY3YjY5YjY5MGVkOGFjZjMyM2Q3ZWFmYzgwNWUuLmQ5
NDNjN2JhZGNlMzM2ZjUyOTIxOTA2ZjI4MmZiM2E4ZGViZjFiMzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmlkbApAQCAtOTUsNiArOTUsMTAgQEAgbW9kdWxlIGh0bWwg
ewogICAgIC8vIFVSTCBwYXNzZWQgdG8gc3JjIGF0dHJpYnV0ZSB0byBlbmFibGUgdGhlIG1lZGlh
IHNvdXJjZSBsb2dpYy4KICAgICByZWFkb25seSBhdHRyaWJ1dGUgW1Y4RW5hYmxlZEF0UnVudGlt
ZT13ZWJraXRNZWRpYVNvdXJjZSwgVVJMXSBET01TdHJpbmcgd2Via2l0TWVkaWFTb3VyY2VVUkw7
CiAKKyAgICAvLyBNYW5hZ2VzIElEcyBmb3IgYXBwZW5kaW5nIG1lZGlhIHRvIHRoZSBzb3VyY2Uu
CisgICAgW1Y4RW5hYmxlZEF0UnVudGltZT13ZWJraXRNZWRpYVNvdXJjZV0gdm9pZCB3ZWJraXRT
b3VyY2VBZGRJZChpbiBET01TdHJpbmcgaWQsIGluIERPTVN0cmluZyB0eXBlKSByYWlzZXMgKERP
TUV4Y2VwdGlvbik7CisgICAgW1Y4RW5hYmxlZEF0UnVudGltZT13ZWJraXRNZWRpYVNvdXJjZV0g
dm9pZCB3ZWJraXRTb3VyY2VSZW1vdmVJZChpbiBET01TdHJpbmcgaWQpIHJhaXNlcyAoRE9NRXhj
ZXB0aW9uKTsKKwogICAgIC8vIEFwcGVuZHMgbWVkaWEgdG8gdG8gdGhlIHNvdXJjZS4KICAgICBb
VjhFbmFibGVkQXRSdW50aW1lPXdlYmtpdE1lZGlhU291cmNlXSB2b2lkIHdlYmtpdFNvdXJjZUFw
cGVuZChpbiBVaW50OEFycmF5IGRhdGEpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IGFi
YzU1NTJjNTIxMWQwMGJhMTI4NjQ5MWZlZTAwMWUyZTVkMzU1ZGQuLmU2N2NlZDIwNmJjNzA4MGI4
MDViYTYzYzIyN2UzMDNiZDkzMTkyN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTE0OSw2ICsxNDksOCBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBib29sIGhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luKCkgY29uc3QgeyByZXR1cm4g
dHJ1ZTsgfQogCiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKKyAgICB2aXJ0dWFsIE1lZGlhUGxh
eWVyOjpBZGRJZFN0YXR1cyBzb3VyY2VBZGRJZChjb25zdCBTdHJpbmcmIGlkLCBjb25zdCBTdHJp
bmcmIHR5cGUpIHsgcmV0dXJuIE1lZGlhUGxheWVyOjpBaXNOb3RTdXBwb3J0ZWQ7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgc291cmNlUmVtb3ZlSWQoY29uc3QgU3RyaW5nJiBpZCkgeyB9CiAgICAgdmly
dHVhbCBib29sIHNvdXJjZUFwcGVuZChjb25zdCB1bnNpZ25lZCBjaGFyKiwgdW5zaWduZWQpIHsg
cmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIHNvdXJjZUVuZE9mU3RyZWFtKE1lZGlh
UGxheWVyOjpFbmRPZlN0cmVhbVN0YXR1cyBzdGF0dXMpIHsgfQogI2VuZGlmCkBAIC00NDksNiAr
NDUxLDE3IEBAIHZvaWQgTWVkaWFQbGF5ZXI6OnBhdXNlKCkKIH0KIAogI2lmIEVOQUJMRShNRURJ
QV9TT1VSQ0UpCisKK01lZGlhUGxheWVyOjpBZGRJZFN0YXR1cyBNZWRpYVBsYXllcjo6c291cmNl
QWRkSWQoY29uc3QgU3RyaW5nJiBpZCwgY29uc3QgU3RyaW5nJiB0eXBlKQoreworICAgIHJldHVy
biBtX3ByaXZhdGUtPnNvdXJjZUFkZElkKGlkLCB0eXBlKTsKK30KKwordm9pZCBNZWRpYVBsYXll
cjo6c291cmNlUmVtb3ZlSWQoY29uc3QgU3RyaW5nJiBpZCkKK3sKKyAgICBtX3ByaXZhdGUtPnNv
dXJjZVJlbW92ZUlkKGlkKTsKK30KKwogYm9vbCBNZWRpYVBsYXllcjo6c291cmNlQXBwZW5kKGNv
bnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKIHsKICAgICByZXR1cm4g
bV9wcml2YXRlLT5zb3VyY2VBcHBlbmQoZGF0YSwgbGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCmluZGV4IDY1Yzc1NTJmYjU3MDdhZTVh
N2FjMGRmZDliNDNiNGIzM2MwYTRlNmMuLjExNGY0ZDE0YTJjYWY3NDE5ZDJjNTJmZTQyNDBkZWZj
NzhiNjI2NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhUGxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXIuaApAQCAtMjIxLDYgKzIyMSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHBhdXNlKCk7ICAg
IAogCiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKKyAgICBlbnVtIEFkZElkU3RhdHVzIHsgQWlz
Tm9FcnJvciwgQWlzTm90U3VwcG9ydGVkLCBBaXNSZWFjaGVkSWRMaW1pdCB9OworICAgIEFkZElk
U3RhdHVzIHNvdXJjZUFkZElkKGNvbnN0IFN0cmluZyYgaWQsIGNvbnN0IFN0cmluZyYgdHlwZSk7
CisgICAgdm9pZCBzb3VyY2VSZW1vdmVJZChjb25zdCBTdHJpbmcmIGlkKTsKICAgICBib29sIHNv
dXJjZUFwcGVuZChjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOwog
ICAgIGVudW0gRW5kT2ZTdHJlYW1TdGF0dXMgeyBFb3NOb0Vycm9yLCBFb3NOZXR3b3JrRXJyb3Is
IEVvc0RlY29kZUVycm9yIH07CiAgICAgdm9pZCBzb3VyY2VFbmRPZlN0cmVhbShFbmRPZlN0cmVh
bVN0YXR1cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllclByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhUGxheWVyUHJpdmF0ZS5oCmluZGV4IDM3OGIyNTllODM1MjA3ZDY3YjIyYWJiOTAzZGVlZjJk
OTRjYzI4YzEuLmYyMWZmZTVlYTk3Mzk5ZmUyY2QxOTc4NzcxYzBhNGE1NWQyNzRkNjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJp
dmF0ZS5oCkBAIC0xNTgsNiArMTU4LDggQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBFTkFCTEUo
TUVESUFfU09VUkNFKQorICAgIHZpcnR1YWwgTWVkaWFQbGF5ZXI6OkFkZElkU3RhdHVzIHNvdXJj
ZUFkZElkKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpIHsgcmV0dXJuIE1lZGlhUGxheWVy
OjpBaXNOb3RTdXBwb3J0ZWQ7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc291cmNlUmVtb3ZlSWQoY29u
c3QgU3RyaW5nJikgeyB9CiAgICAgdmlydHVhbCBib29sIHNvdXJjZUFwcGVuZChjb25zdCB1bnNp
Z25lZCBjaGFyKiwgdW5zaWduZWQpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lk
IHNvdXJjZUVuZE9mU3RyZWFtKE1lZGlhUGxheWVyOjpFbmRPZlN0cmVhbVN0YXR1cykgeyB9Owog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZWRp
YVBsYXllci5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFQbGF5ZXIu
aAppbmRleCAyMDQ5YjU5YjAyYWJlM2ExMDI0MmUyN2VjZTJiYmU3ZjkyN2Y3ZDM3Li44ZDk4YmI1
ODBjMzg0NWMzMDFmNTc2YzI1YzdjZmNiMzlkMDJkNmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZWRpYVBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYk1lZGlhUGxheWVyLmgKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2lu
Y2x1ZGUgIldlYlZpZGVvRnJhbWUuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDYW52YXMuaCIK
KyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJTdHJpbmcuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJW
ZWN0b3IuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC04OSw2ICs5MCwxMiBAQCBwdWJsaWM6
CiAgICAgICAgIEF1dG8sCiAgICAgfTsKIAorICAgIGVudW0gQWRkSWRTdGF0dXMgeworICAgICAg
ICBBaXNOb0Vycm9yLAorICAgICAgICBBaXNOb3RTdXBwb3J0ZWQsCisgICAgICAgIEFpc1JlYWNo
ZWRJZExpbWl0CisgICAgfTsKKwogICAgIGVudW0gRW5kT2ZTdHJlYW1TdGF0dXMgewogICAgICAg
ICBFb3NOb0Vycm9yLAogICAgICAgICBFb3NOZXR3b3JrRXJyb3IsCkBAIC0xNzYsNiArMTgzLDgg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyKiBhdWRpb1Nv
dXJjZVByb3ZpZGVyKCkgeyByZXR1cm4gMDsgfQogCisgICAgdmlydHVhbCBBZGRJZFN0YXR1cyBz
b3VyY2VBZGRJZChjb25zdCBXZWJTdHJpbmcmIGlkLCBjb25zdCBXZWJTdHJpbmcmIHR5cGUpIHsg
cmV0dXJuIEFpc05vdFN1cHBvcnRlZDsgfQorICAgIHZpcnR1YWwgdm9pZCBzb3VyY2VSZW1vdmVJ
ZChjb25zdCBXZWJTdHJpbmcmIGlkKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgc291cmNlQXBwZW5k
KGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkgeyByZXR1cm4gZmFs
c2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgc291cmNlRW5kT2ZTdHJlYW0oRW5kT2ZTdHJlYW1TdGF0
dXMpICB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVk
aWFQbGF5ZXJDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1l
ZGlhUGxheWVyQ2xpZW50SW1wbC5jcHAKaW5kZXggZTIwZjUyZDhiNWZmNDQ2OTEyNDg5YmQwYjZj
MDhhNDlkMmIxNzI2Ni4uZDFkMjgzYzY2ZDBlNDU0ODkzOTdlNTY2Mjc5M2QzMDRhM2FiYjkyOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGll
bnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXll
ckNsaWVudEltcGwuY3BwCkBAIC0yOTIsNiArMjkyLDIyIEBAIHZvaWQgV2ViTWVkaWFQbGF5ZXJD
bGllbnRJbXBsOjpwYXVzZSgpCiB9CiAKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorV2ViQ29y
ZTo6TWVkaWFQbGF5ZXI6OkFkZElkU3RhdHVzIFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6c291
cmNlQWRkSWQoY29uc3QgU3RyaW5nJiBpZCwgY29uc3QgU3RyaW5nJiB0eXBlKQoreworICAgIGlm
ICghbV93ZWJNZWRpYVBsYXllcikKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6Ok1lZGlhUGxheWVy
OjpBaXNOb3RTdXBwb3J0ZWQ7CisKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6TWVk
aWFQbGF5ZXI6OkFkZElkU3RhdHVzPihtX3dlYk1lZGlhUGxheWVyLT5zb3VyY2VBZGRJZChpZCwg
dHlwZSkpOworfQorCit2b2lkIFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6c291cmNlUmVtb3Zl
SWQoY29uc3QgU3RyaW5nJiBpZCkKK3sKKyAgICBpZiAoIW1fd2ViTWVkaWFQbGF5ZXIpCisgICAg
ICAgIHJldHVybjsKKworICAgIG1fd2ViTWVkaWFQbGF5ZXItPnNvdXJjZVJlbW92ZUlkKGlkKTsK
K30KKwogYm9vbCBXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OnNvdXJjZUFwcGVuZChjb25zdCB1
bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCiB7CiAgICAgaWYgKG1fd2ViTWVk
aWFQbGF5ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRp
YVBsYXllckNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlh
UGxheWVyQ2xpZW50SW1wbC5oCmluZGV4IGVlNmJmNTExYTNiZGM2NmMzNjYwOGVhOGFkZGRlYjhl
NWY2MDE0YjcuLmYwMzgwMzcxNzQwNTc5ZWRiM2NlNTMyZGMyMjA5YjhiNmViNmNmYzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1w
bC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50
SW1wbC5oCkBAIC0xNDYsNiArMTQ2LDggQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBFTkFCTEUo
TUVESUFfU09VUkNFKQorICAgIHZpcnR1YWwgV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OkFkZElkU3Rh
dHVzIHNvdXJjZUFkZElkKGNvbnN0IFN0cmluZyYgaWQsIGNvbnN0IFN0cmluZyYgdHlwZSk7Cisg
ICAgdmlydHVhbCB2b2lkIHNvdXJjZVJlbW92ZUlkKGNvbnN0IFN0cmluZyYpOwogICAgIHZpcnR1
YWwgYm9vbCBzb3VyY2VBcHBlbmQoY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQg
bGVuZ3RoKTsKICAgICB2aXJ0dWFsIHZvaWQgc291cmNlRW5kT2ZTdHJlYW0oV2ViQ29yZTo6TWVk
aWFQbGF5ZXI6OkVuZE9mU3RyZWFtU3RhdHVzKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDUxZjY2MjMyYTUx
YWRjM2YyNDE1MGQzYjY1NDAzMmY2NThjNzlhYjUuLjdmZjJjMTJmMjBhOTQzYTVjZmNkMGJlOTc3
YjFjNTlhMTQzMmFkMzcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wNC0xMCAgQWFyb24g
Q29sd2VsbCAgPGFjb2x3ZWxsQGNocm9taXVtLm9yZz4KKworICAgICAgICBBZGQgTGF5b3V0VGVz
dHMgZm9yIG5ldyB3ZWJraXRTb3VyY2VBZGRJZCgpICYgd2Via2l0U291cmNlUmVtb3ZlSWQoKSBt
ZXRob2RzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODM2MTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IGh0dHAvdGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL3dlYm0vdmlkZW8tbWVkaWEtc291cmNlLWFk
ZC1hbmQtcmVtb3ZlLWlkcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVz
dHMvbWVkaWEvbWVkaWEtc291cmNlL3dlYm0vdmlkZW8tbWVkaWEtc291cmNlLWFkZC1hbmQtcmVt
b3ZlLWlkcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4
cGVjdGF0aW9ucy50eHQ6CisKIDIwMTItMDQtMTAgIEFiaGlzaGVrIEFyeWEgIDxpbmZlcm5vQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBDcmFzaCBkdWUgdG8gY2FwdGlvbnMgbGlzdCBub3QgdXBk
YXRlZCBhZnRlciBzZWN0aW9uIHJlY2FsYy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL3dlYm0vdmlkZW8tbWVkaWEtc291cmNlLWFkZC1hbmQt
cmVtb3ZlLWlkcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21lZGlhL21l
ZGlhLXNvdXJjZS93ZWJtL3ZpZGVvLW1lZGlhLXNvdXJjZS1hZGQtYW5kLXJlbW92ZS1pZHMtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYxNzYyNzEzNWIxNjFlZGFlNTJlZjdkNTMwMDdiMGU4MDBm
OTRlZTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21lZGlhL21l
ZGlhLXNvdXJjZS93ZWJtL3ZpZGVvLW1lZGlhLXNvdXJjZS1hZGQtYW5kLXJlbW92ZS1pZHMtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTYgQEAKK1Rlc3RzIHdlYmtpdFNvdXJjZUFkZElkKCkgJiB3
ZWJraXRTb3VyY2VSZW1vdmVJZCgpIG1ldGhvZHMKKworCitydW5uaW5nIHRlc3RBZGRJZEZhaWx1
cmVDYXNlcworRVZFTlQobG9hZHN0YXJ0KQorRVZFTlQod2Via2l0c291cmNlb3BlbikKKworcnVu
bmluZyB0ZXN0UmVtb3ZlSWRGYWlsdXJlQ2FzZXMKK0VWRU5UKGxvYWRzdGFydCkKK0VWRU5UKHdl
YmtpdHNvdXJjZW9wZW4pCisKK3J1bm5pbmcgdGVzdEFwcGVuZEZhaWx1cmVDYXNlcworRVZFTlQo
bG9hZHN0YXJ0KQorRVZFTlQod2Via2l0c291cmNlb3BlbikKK0VORCBPRiBURVNUCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL3dlYm0vdmlk
ZW8tbWVkaWEtc291cmNlLWFkZC1hbmQtcmVtb3ZlLWlkcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2Uvd2VibS92aWRlby1tZWRpYS1zb3VyY2UtYWRkLWFu
ZC1yZW1vdmUtaWRzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTdiOWI4OTU2Njk5OTRhM2FhNzIyNjE0NWJm
ZmUyZjdlZmIzMWVlNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
bWVkaWEvbWVkaWEtc291cmNlL3dlYm0vdmlkZW8tbWVkaWEtc291cmNlLWFkZC1hbmQtcmVtb3Zl
LWlkcy5odG1sCkBAIC0wLDAgKzEsMTk4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAg
IDxoZWFkPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vbWVkaWEtcmVzb3VyY2VzL3Zp
ZGVvLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0id2VibS1tZWRpYS1z
b3VyY2UuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICAgICAgdmFyIERF
RkFVTFRfU09VUkNFX01JTUVUWVBFID0gInZpZGVvL3dlYm07IGNvZGVjcz1cInZwOCwgdm9yYmlz
XCIiOworCisgICAgICAgICAgICBmdW5jdGlvbiBydW5PblNvdXJjZU9wZW4odmlkZW9UYWcsIG9u
T3BlbkZ1bmN0aW9uKSB7CisgICAgICAgICAgICAgICAgdmFyIGV2ZW50SGFuZGxlckZ1bmN0aW9u
ID0gZnVuY3Rpb24gKGV2ZW50KSB7CisgICAgICAgICAgICAgICAgICAgIGV2ZW50LnRhcmdldC5y
ZW1vdmVFdmVudExpc3RlbmVyKCd3ZWJraXRzb3VyY2VvcGVuJywgZXZlbnRIYW5kbGVyRnVuY3Rp
b24pOworICAgICAgICAgICAgICAgICAgICBvbk9wZW5GdW5jdGlvbihldmVudC50YXJnZXQpOwor
ICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgdmlkZW9UYWcuYWRkRXZlbnRMaXN0
ZW5lcignd2Via2l0c291cmNlb3BlbicsIGV2ZW50SGFuZGxlckZ1bmN0aW9uKTsKKyAgICAgICAg
ICAgICAgICBzZXRTcmNUb01lZGlhU291cmNlVVJMKHZpZGVvVGFnKTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgLy8gVGhlIGluZGV4IG9mIHRoZSBuZXh0IGNsdXN0ZXIgdG8gc2VuZCB0
byBhcHBlbmREYXRhKCkuCisgICAgICAgICAgICB2YXIgbmV4dENsdXN0ZXJJbmRleCA9IDA7CisK
KyAgICAgICAgICAgIGZ1bmN0aW9uIGV4cGVjdEV4Y2VwdGlvbk9uQWRkSWQodmlkZW9UYWcsIGlk
LCB0eXBlLCBlcnJvcikgeworICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAg
ICAgIHZpZGVvVGFnLndlYmtpdFNvdXJjZUFkZElkKGlkLCB0eXBlKTsKKyAgICAgICAgICAgICAg
ICAgICAgZmFpbFRlc3QoIkV4cGVjdGVkIGFuIGV4Y2VwdGlvbiIpOworICAgICAgICAgICAgICAg
IH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCEoZS5jb2RlID09IGVycm9y
KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgZmFpbFRlc3QoIlVuZXhwZWN0ZWQgZXhjZXB0
aW9uICIgKyBlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IGU7CisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIGZ1bmN0aW9uIGV4cGVjdEV4Y2VwdGlvbk9uUmVtb3ZlSWQodmlkZW9UYWcsIGlkLCBlcnJv
cikgeworICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIHZpZGVvVGFn
LndlYmtpdFNvdXJjZVJlbW92ZUlkKGlkKTsKKyAgICAgICAgICAgICAgICAgICAgZmFpbFRlc3Qo
IkV4cGVjdGVkIGFuIGV4Y2VwdGlvbiIpOworICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKCEoZS5jb2RlID09IGVycm9yKSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgZmFpbFRlc3QoIlVuZXhwZWN0ZWQgZXhjZXB0aW9uICIgKyBlKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHRocm93IGU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGV4
cGVjdEV4Y2VwdGlvbk9uQXBwZW5kKHZpZGVvVGFnLCBpZCwgYnVmLCBlcnJvcikgeworICAgICAg
ICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIHZpZGVvVGFnLndlYmtpdFNvdXJj
ZUFwcGVuZChpZCwgYnVmKTsKKyAgICAgICAgICAgICAgICAgICAgZmFpbFRlc3QoIkV4cGVjdGVk
IGFuIGV4Y2VwdGlvbiIpOworICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKCEoZS5jb2RlID09IGVycm9yKSkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgZmFpbFRlc3QoIlVuZXhwZWN0ZWQgZXhjZXB0aW9uICIgKyBlKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHRocm93IGU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHRlc3RBZGRJZEZh
aWx1cmVDYXNlcyh2aWRlb1RhZykgeworICAgICAgICAgICAgICAgIC8vIFRlc3QgYWRkaW5nIHdo
aWxlIGNsb3NlZC4KKyAgICAgICAgICAgICAgICBleHBlY3RFeGNlcHRpb25PbkFkZElkKHZpZGVv
VGFnLCAiMTIzIiwgREVGQVVMVF9TT1VSQ0VfTUlNRVRZUEUsIERPTUV4Y2VwdGlvbi5JTlZBTElE
X1NUQVRFX0VSUik7CisKKyAgICAgICAgICAgICAgICBydW5PblNvdXJjZU9wZW4odmlkZW9UYWcs
IGZ1bmN0aW9uICh2dCkgeworICAgICAgICAgICAgICAgICAgICAvLyBUZXN0IGVtcHR5IElEIGNh
c2UKKyAgICAgICAgICAgICAgICAgICAgZXhwZWN0RXhjZXB0aW9uT25BZGRJZCh2aWRlb1RhZywg
IiIsIERFRkFVTFRfU09VUkNFX01JTUVUWVBFLCBET01FeGNlcHRpb24uSU5WQUxJRF9BQ0NFU1Nf
RVJSKTsKKworICAgICAgICAgICAgICAgICAgICB2aWRlb1RhZy53ZWJraXRTb3VyY2VBZGRJZCgi
MTIzIiwgREVGQVVMVF9TT1VSQ0VfTUlNRVRZUEUpOworCisgICAgICAgICAgICAgICAgICAgIC8v
IFRlc3QgYWRkaW5nIHRoZSBzYW1lIElEIGFnYWluLgorICAgICAgICAgICAgICAgICAgICBleHBl
Y3RFeGNlcHRpb25PbkFkZElkKHZpZGVvVGFnLCAiMTIzIiwgREVGQVVMVF9TT1VSQ0VfTUlNRVRZ
UEUsIERPTUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VSUik7CisgICAgICAgICAgICAgICAgICAg
IHZpZGVvVGFnLndlYmtpdFNvdXJjZVJlbW92ZUlkKCIxMjMiKTsKKworICAgICAgICAgICAgICAg
ICAgICAvLyBUZXN0IGVtcHR5IHR5cGUuCisgICAgICAgICAgICAgICAgICAgIGV4cGVjdEV4Y2Vw
dGlvbk9uQWRkSWQodmlkZW9UYWcsICIyMzQiLCAiIiwgRE9NRXhjZXB0aW9uLklOVkFMSURfQUND
RVNTX0VSUik7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gVGVzdCBhbiB1bnN1cHBvcnRlZCB0
eXBlLgorICAgICAgICAgICAgICAgICAgICBleHBlY3RFeGNlcHRpb25PbkFkZElkKHZpZGVvVGFn
LCAiMjM0IiwgImF1ZGlvL3dhdiIsIERPTUV4Y2VwdGlvbi5OT1RfU1VQUE9SVEVEX0VSUik7CisK
KyAgICAgICAgICAgICAgICAgICAgLy8gVGVzdCByZWFjaGluZyBzb3VyY2VJRCBsaW1pdC4KKyAg
ICAgICAgICAgICAgICAgICAgdmFyIHJlYWNoZWRJZExpbWl0ID0gZmFsc2U7CisgICAgICAgICAg
ICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMjA7ICsraSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgdmFyIHNvdXJjZUlEID0gInNvdXJjZUlELSIgKyBpOworICAgICAgICAgICAgICAg
ICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWRlb1RhZy53ZWJr
aXRTb3VyY2VBZGRJZChzb3VyY2VJRCwgREVGQVVMVF9TT1VSQ0VfTUlNRVRZUEUpOworICAgICAg
ICAgICAgICAgICAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKGUuY29kZSAhPSBET01FeGNlcHRpb24uUVVPVEFfRVhDRUVERURfRVJSKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhaWxUZXN0KCJVbmV4cGVjdGVkIGV4Y2VwdGlv
biAiICsgZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IGU7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
YWNoZWRJZExpbWl0ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAgICAgICAgIGlmICghcmVhY2hlZElkTGltaXQpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGZhaWxUZXN0KCJGYWlsZWQgdG8gcmVhY2ggU291cmNlSUQgbGltaXQuIik7CisgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgICAgICAgICAvLyBUZXN0IHRoYXQgU291cmNlSURzIGNhbid0IGJlIGFkZGVkIHdo
aWxlIGluIHRoZSBlbmRlZCBzdGF0ZS4KKyAgICAgICAgICAgICAgICAgICAgdmlkZW9UYWcud2Vi
a2l0U291cmNlRW5kT2ZTdHJlYW0odmlkZW9UYWcuRU9TX05PX0VSUk9SKTsKKyAgICAgICAgICAg
ICAgICAgICAgZXhwZWN0RXhjZXB0aW9uT25BZGRJZCh2aWRlb1RhZywgIjEyMyIsIERFRkFVTFRf
U09VUkNFX01JTUVUWVBFLCBET01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIpOworCisgICAg
ICAgICAgICAgICAgICAgIHJ1bk5leHRUZXN0Q2FzZSh2aWRlb1RhZyk7CisgICAgICAgICAgICAg
ICAgfSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHRlc3RSZW1vdmVJ
ZEZhaWx1cmVDYXNlcyh2aWRlb1RhZykgeworICAgICAgICAgICAgICAgIHJ1bk9uU291cmNlT3Bl
bih2aWRlb1RhZywgZnVuY3Rpb24gKHZ0KSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFRlc3Qg
ZW1wdHkgSUQgY2FzZQorICAgICAgICAgICAgICAgICAgICBleHBlY3RFeGNlcHRpb25PblJlbW92
ZUlkKHZpZGVvVGFnLCAiIiwgRE9NRXhjZXB0aW9uLklOVkFMSURfQUNDRVNTX0VSUik7CisKKyAg
ICAgICAgICAgICAgICAgICAgLy8gVGVzdCByZW1vdmluZyBhbmQgSUQgdGhhdCB3YXMgbmV2ZXIg
YWRkZWQuCisgICAgICAgICAgICAgICAgICAgIGV4cGVjdEV4Y2VwdGlvbk9uUmVtb3ZlSWQodmlk
ZW9UYWcsICIzNDUiLCBET01FeGNlcHRpb24uU1lOVEFYX0VSUik7CisKKyAgICAgICAgICAgICAg
ICAgICAgdmlkZW9UYWcud2Via2l0U291cmNlQWRkSWQoIjEyMyIsIERFRkFVTFRfU09VUkNFX01J
TUVUWVBFKTsKKyAgICAgICAgICAgICAgICAgICAgdmlkZW9UYWcud2Via2l0U291cmNlUmVtb3Zl
SWQoIjEyMyIpOworICAgICAgICAgICAgICAgICAgICBleHBlY3RFeGNlcHRpb25PblJlbW92ZUlk
KHZpZGVvVGFnLCAiMTIzIiwgRE9NRXhjZXB0aW9uLlNZTlRBWF9FUlIpOworCisgICAgICAgICAg
ICAgICAgICAgIC8vIFRlc3QgYWRkaW5nIHRoZSBzYW1lIElEIGFnYWluLgorICAgICAgICAgICAg
ICAgICAgICB2aWRlb1RhZy53ZWJraXRTb3VyY2VBZGRJZCgiMTIzIiwgREVGQVVMVF9TT1VSQ0Vf
TUlNRVRZUEUpOworCisgICAgICAgICAgICAgICAgICAgIC8vIFRlc3QgdGhhdCBhbiBJRCBjYW4g
YmUgcmVtb3ZlZCB3aGlsZSBpbiB0aGUgZW5kZWQgc3RhdGUuCisgICAgICAgICAgICAgICAgICAg
IHZpZGVvVGFnLndlYmtpdFNvdXJjZUVuZE9mU3RyZWFtKHZpZGVvVGFnLkVPU19OT19FUlJPUik7
CisgICAgICAgICAgICAgICAgICAgIHZpZGVvVGFnLndlYmtpdFNvdXJjZVJlbW92ZUlkKCIxMjMi
KTsKKworICAgICAgICAgICAgICAgICAgICBydW5OZXh0VGVzdENhc2UodmlkZW9UYWcpOworICAg
ICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiB0
ZXN0QXBwZW5kRmFpbHVyZUNhc2VzKHZpZGVvVGFnKSB7CisgICAgICAgICAgICAgICAgcnVuT25T
b3VyY2VPcGVuKHZpZGVvVGFnLCBmdW5jdGlvbiAodnQpIHsKKyAgICAgICAgICAgICAgICAgICAg
dmlkZW9UYWcud2Via2l0U291cmNlQWRkSWQoIjEyMyIsIERFRkFVTFRfU09VUkNFX01JTUVUWVBF
KTsKKworICAgICAgICAgICAgICAgICAgICAvLyBUZXN0IGFwcGVuZCB3aXRoIGVtcHR5IElELgor
ICAgICAgICAgICAgICAgICAgICBleHBlY3RFeGNlcHRpb25PbkFwcGVuZCh2aWRlb1RhZywgIiIs
IGdldEhlYWRlcnMoKSwgRE9NRXhjZXB0aW9uLklOVkFMSURfQUNDRVNTX0VSUik7CisKKyAgICAg
ICAgICAgICAgICAgICAgLy8gVGVzdCBhcHBlbmQgd2l0aCBhbiBpbnZhbGlkIElECisgICAgICAg
ICAgICAgICAgICAgIGV4cGVjdEV4Y2VwdGlvbk9uQXBwZW5kKHZpZGVvVGFnLCAiMjM0IiwgZ2V0
SGVhZGVycygpLCBET01FeGNlcHRpb24uU1lOVEFYX0VSUik7CisKKyAgICAgICAgICAgICAgICAg
ICAgLy8gVGVzdCBhcHBlbmQgd2l0aCBhIG51bGwgYnVmZmVyLgorICAgICAgICAgICAgICAgICAg
ICBleHBlY3RFeGNlcHRpb25PbkFwcGVuZCh2aWRlb1RhZywgIjEyMyIsIG51bGwsIERPTUV4Y2Vw
dGlvbi5JTlZBTElEX0FDQ0VTU19FUlIpOworCisgICAgICAgICAgICAgICAgICAgIC8vIFRlc3Qg
YSBzdWNjZXNzZnVsIGFwcGVuZC4KKyAgICAgICAgICAgICAgICAgICAgdmlkZW9UYWcud2Via2l0
U291cmNlQXBwZW5kKCIxMjMiLCBnZXRIZWFkZXJzKCkpOworCisgICAgICAgICAgICAgICAgICAg
IHZpZGVvVGFnLndlYmtpdFNvdXJjZVJlbW92ZUlkKCIxMjMiKTsKKyAgICAgICAgICAgICAgICAg
ICAgZXhwZWN0RXhjZXB0aW9uT25BcHBlbmQodmlkZW9UYWcsICIxMjMiLCBnZXRDbHVzdGVyKDAp
LCBET01FeGNlcHRpb24uU1lOVEFYX0VSUik7CisKKyAgICAgICAgICAgICAgICAgICAgcnVuTmV4
dFRlc3RDYXNlKHZpZGVvVGFnKTsKKyAgICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICB2YXIgdGVzdENhc2VzID0gWworICAgICAgICAgICAgICAgICd0ZXN0
QWRkSWRGYWlsdXJlQ2FzZXMnLAorICAgICAgICAgICAgICAgICd0ZXN0UmVtb3ZlSWRGYWlsdXJl
Q2FzZXMnLAorICAgICAgICAgICAgICAgICd0ZXN0QXBwZW5kRmFpbHVyZUNhc2VzJywKKyAgICAg
ICAgICAgIF07CisKKyAgICAgICAgICAgIHZhciB0ZXN0Q2FzZUluZGV4ID0gMDsKKworICAgICAg
ICAgICAgZnVuY3Rpb24gcnVuTmV4dFRlc3RDYXNlKHZpZGVvVGFnKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIGlmICh0ZXN0Q2FzZUluZGV4ID49IHRlc3RDYXNlcy5sZW5ndGgpIHsK
KyAgICAgICAgICAgICAgICAgICAgZW5kVGVzdCgpOworICAgICAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgdmFyIGZ1bmN0aW9uTmFt
ZSA9IHRlc3RDYXNlc1t0ZXN0Q2FzZUluZGV4XTsKKyAgICAgICAgICAgICAgICB2YXIgdGVzdENh
c2VGdW5jdGlvbiA9IGV2YWwoZnVuY3Rpb25OYW1lKTsKKyAgICAgICAgICAgICAgICB0ZXN0Q2Fz
ZUluZGV4Kys7CisKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIpOworICAgICAgICAg
ICAgICAgIGNvbnNvbGVXcml0ZSgicnVubmluZyAiICsgZnVuY3Rpb25OYW1lKTsKKyAgICAgICAg
ICAgICAgICB0ZXN0Q2FzZUZ1bmN0aW9uKHZpZGVvVGFnKTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBmaW5kTWVkaWFFbGVtZW50KCk7CisKKyAgICAgICAgICAgICAgICB3YWl0Rm9yRXZlbnQoJ2xv
YWRzdGFydCcpOworICAgICAgICAgICAgICAgIHdhaXRGb3JFdmVudCgnd2Via2l0c291cmNlb3Bl
bicpOworCisgICAgICAgICAgICAgICAgbG9hZFdlYk1EYXRhKGZ1bmN0aW9uKHN1Y2Nlc3MpIHsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKCFzdWNjZXNzKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBmYWlsVGVzdCgiRmFpbGVkIHRvIGxvYWQgV2ViTSBkYXRhIik7CisgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgICAgcnVuTmV4dFRlc3RDYXNlKHZpZGVvKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9h
ZD0ib25Mb2FkKCkiPgorICAgICAgICA8dmlkZW8+IDwvdmlkZW8+CisgICAgICAgIDxwPlRlc3Rz
IHdlYmtpdFNvdXJjZUFkZElkKCkgJmFtcDsgd2Via2l0U291cmNlUmVtb3ZlSWQoKSBtZXRob2Rz
PC9wPgorICAgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAppbmRleCAzN2Y1YzU5MjExNGI0MDM0Mjg1
YmRhYzg3NzYxMDQ2ZjRlZTRiMDA0Li5mNjIxNGFiY2YxZmNiODVlNWQzMWVlZTk3N2M4NWM4NmQ4
NzJkODExIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4
cGVjdGF0aW9ucy50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9l
eHBlY3RhdGlvbnMudHh0CkBAIC0zODAyLDQgKzM4MDIsNyBAQCBCVUdDUjEyMjQ0OCA6IG1lZGlh
L3ZpZGVvLXNlZWstcGFzdC1lbmQtcGF1c2VkLmh0bWwgPSBQQVNTIFRFWFQKIAogQlVHQ1IxMjI0
NjIgV0lOIExJTlVYIDogaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdC1lbGVtZW50Lmh0bWwg
PSBURVhUCiAKKy8vIFRlbXBvcmFyaWx5IGRpc2FibGVkIHVudGlsIENocm9taXVtIHNvdXJjZUFk
ZElkKCkgJiBzb3VyY2VSZW1vdmVJZCgpIGNvZGUgaGFzIGJlZW4gY2hlY2tlZCBpbi4KK0JVR1dL
ODM2MTYgOiBodHRwL3Rlc3RzL21lZGlhL21lZGlhLXNvdXJjZS93ZWJtL3ZpZGVvLW1lZGlhLXNv
dXJjZS1hZGQtYW5kLXJlbW92ZS1pZHMuaHRtbCA9IEZBSUwKKwogQlVHV0s4MzUwMyBMSU5VWCBE
RUJVRyA6IHBsdWdpbnMvaW5uZXItaHRtbC1kaXNwbGF5LW5vbmUuaHRtbCA9IENSQVNICg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136553</attachid>
            <date>2012-04-10 15:23:34 -0700</date>
            <delta_ts>2012-04-11 11:48:55 -0700</delta_ts>
            <desc>Fix test_expectations.txt</desc>
            <filename>bug-83616-20120410152333.patch</filename>
            <type>text/plain</type>
            <size>24111</size>
            <attacher name="Aaron Colwell">acolwell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzNzY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDg0MjE3ZmFiZjhlNDIx
ZDA1MGQ5YWY4ZDY4Mjg1ZmIyZGE0YjUyYi4uNzQxMDYwZmRjNGRjNDU3MDVmYmI1ZjU2MjY3Nzdk
YzNkN2ZlY2VjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEyLTA0LTEwICBBYXJv
biBDb2x3ZWxsICA8YWNvbHdlbGxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEFkZCB3ZWJraXRT
b3VyY2VBZGRJZCgpICYgd2Via2l0U291cmNlUmVtb3ZlSWQoKSB0byBIVE1MTWVkaWFFbGVtZW50
CisgICAgICAgIGFuZCBwcm9wYWdhdGUgY2FsbHMgdG8gdGhlIE1lZGlhUGxheWVyUHJpdmF0ZSBp
bnRlcmZhY2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD04MzYxNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRlc3Q6IGh0dHAvdGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL3dlYm0vdmlkZW8tbWVkaWEtc291
cmNlLWFkZC1hbmQtcmVtb3ZlLWlkcy5odG1sCisKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50Ojppc1ZhbGlkU291cmNlSWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6d2Via2l0U291cmNlQWRkSWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6d2Via2l0U291cmNlUmVtb3ZlSWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6c2V0U291cmNlU3RhdGUpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxl
bWVudC5oOgorICAgICAgICAoSFRNTE1lZGlhRWxlbWVudCk6CisgICAgICAgICogaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmlkbDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOdWxsTWVkaWFQbGF5ZXJQcml2YXRlOjpzb3VyY2VB
ZGRJZCk6CisgICAgICAgIChXZWJDb3JlOjpOdWxsTWVkaWFQbGF5ZXJQcml2YXRlOjpzb3VyY2VS
ZW1vdmVJZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyOjpzb3VyY2VBZGRJZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6c291cmNl
UmVtb3ZlSWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmg6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U6OnNvdXJjZUFkZElkKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZTo6c291cmNlUmVtb3Zl
SWQpOgorCiAyMDEyLTA0LTEwICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFtDTWFrZV0gRW5hYmxlIFVTRV9GT0xERVJTIHByb3BlcnR5CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCmluZGV4IDNlYWRkMDA1MzIzYTRlN2JlOGZiMDc4OGMwZGIyNWNkNmIx
NDdmZDguLjgxZmQ2ZmQ0ODQwYWFjOWZhZjgyYzg1NGZlN2M2MTc0ZDU3N2IzNTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTItMDQtMTAgIEFhcm9uIENv
bHdlbGwgIDxhY29sd2VsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRkIHNvdXJjZUFkZElk
KCkgJiBzb3VyY2VSZW1vdmVJZCgpIHN0dWJzIGZvciBDaHJvbWl1bS4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgzNjE2CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViTWVkaWFQbGF5ZXIu
aDoKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFQbGF5ZXI6OnNvdXJjZUFkZElkKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViTWVkaWFQbGF5ZXI6OnNvdXJjZVJlbW92ZUlkKToKKyAgICAgICAgKiBz
cmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTWVk
aWFQbGF5ZXJDbGllbnRJbXBsOjpzb3VyY2VBZGRJZCk6CisgICAgICAgIChXZWJLaXQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OnNvdXJjZVJlbW92ZUlkKToK
KyAgICAgICAgKiBzcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmg6CisgICAgICAgIChXZWJN
ZWRpYVBsYXllckNsaWVudEltcGwpOgorCiAyMDEyLTA0LTEwICBTaGVyaWZmIEJvdCAgPHdlYmtp
dC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91
dCByMTEzNzM0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXgg
MTEzYjIxYzg5ZDQzNjEyZmQ2MjY2MTIwZjg2MDIwNGRlZTY5MDUyMC4uMGNjY2NkZjI1OWY2NzU2
NzUwZjUwMjUwMGQ4ZjU1ODlhMjgyMTQ5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwCkBAIC0xNjc2LDYgKzE2NzYsMjIgQEAgU3RyaW5nIEhUTUxNZWRpYUVsZW1l
bnQ6Om1lZGlhUGxheWVyU291cmNlVVJMKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9tZWRpYVNv
dXJjZVVSTC5zdHJpbmcoKTsKIH0KKworYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojppc1ZhbGlkU291
cmNlSWQoY29uc3QgU3RyaW5nJiBpZCwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0Cit7CisgICAg
aWYgKGlkLmlzTnVsbCgpIHx8IGlkLmlzRW1wdHkoKSkgeworICAgICAgICBlYyA9IElOVkFMSURf
QUNDRVNTX0VSUjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghbV9z
b3VyY2VJRHMuY29udGFpbnMoaWQpKSB7CisgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCiAjZW5kaWYK
IAogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpwcm9ncmVzc0V2ZW50VGltZXJGaXJlZChUaW1lcjxI
VE1MTWVkaWFFbGVtZW50PiopCkBAIC0yMTgzLDYgKzIxOTksNTggQEAgdm9pZCBIVE1MTWVkaWFF
bGVtZW50OjpwYXVzZUludGVybmFsKCkKIH0KIAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCit2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OndlYmtpdFNvdXJjZUFkZElkKGNvbnN0IFN0cmluZyYgaWQs
IGNvbnN0IFN0cmluZyYgdHlwZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKGlkLmlz
TnVsbCgpIHx8IGlkLmlzRW1wdHkoKSkgeworICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VS
UjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChtX3NvdXJjZUlEcy5jb250YWlu
cyhpZCkpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGlmICh0eXBlLmlzTnVsbCgpIHx8IHR5cGUuaXNFbXB0eSgpKSB7Cisg
ICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgaWYgKCFtX3BsYXllciB8fCBtX2N1cnJlbnRTcmMgIT0gbV9tZWRpYVNvdXJjZVVSTCB8
fCBtX3NvdXJjZVN0YXRlICE9IFNPVVJDRV9PUEVOKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9T
VEFURV9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzd2l0Y2ggKG1fcGxheWVy
LT5zb3VyY2VBZGRJZChpZCwgdHlwZSkpIHsKKyAgICBjYXNlIE1lZGlhUGxheWVyOjpBaXNOb0Vy
cm9yOgorICAgICAgICBtX3NvdXJjZUlEcy5hZGQoaWQpOworICAgICAgICByZXR1cm47CisgICAg
Y2FzZSBNZWRpYVBsYXllcjo6QWlzTm90U3VwcG9ydGVkOgorICAgICAgICBlYyA9IE5PVF9TVVBQ
T1JURURfRVJSOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBNZWRpYVBsYXllcjo6QWlzUmVh
Y2hlZElkTGltaXQ6CisgICAgICAgIGVjID0gUVVPVEFfRVhDRUVERURfRVJSOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICByZXR1cm47
Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6d2Via2l0U291cmNlUmVtb3ZlSWQoY29uc3Qg
U3RyaW5nJiBpZCwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKCFpc1ZhbGlkU291cmNl
SWQoaWQsIGVjKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFtX3BsYXllciB8fCBtX2N1
cnJlbnRTcmMgIT0gbV9tZWRpYVNvdXJjZVVSTCB8fCBtX3NvdXJjZVN0YXRlID09IFNPVVJDRV9D
TE9TRUQpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIG1fcGxheWVyLT5zb3VyY2VSZW1vdmVJZChpZCk7CisgICAgbV9zb3Vy
Y2VJRHMucmVtb3ZlKGlkKTsKK30KKwogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp3ZWJraXRTb3Vy
Y2VBcHBlbmQoUGFzc1JlZlB0cjxVaW50OEFycmF5PiBkYXRhLCBFeGNlcHRpb25Db2RlJiBlYykK
IHsKICAgICBpZiAoIW1fcGxheWVyIHx8IG1fY3VycmVudFNyYyAhPSBtX21lZGlhU291cmNlVVJM
IHx8IG1fc291cmNlU3RhdGUgIT0gU09VUkNFX09QRU4pIHsKQEAgLTIyMzgsNiArMjMwNiwxMSBA
QCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFNvdXJjZVN0YXRlKFNvdXJjZVN0YXRlIHN0YXRl
KQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9zb3VyY2VTdGF0ZSA9PSBTT1VSQ0VfQ0xP
U0VEKSB7CisgICAgICAgIGlmIChtX3BsYXllcikgeworICAgICAgICAgICAgZm9yIChIYXNoU2V0
PFN0cmluZz46Oml0ZXJhdG9yIGkgPSBtX3NvdXJjZUlEcy5iZWdpbigpOyBpICE9IG1fc291cmNl
SURzLmVuZCgpOyArK2kpCisgICAgICAgICAgICAgICAgbV9wbGF5ZXItPnNvdXJjZVJlbW92ZUlk
KCppKTsKKyAgICAgICAgfQorICAgICAgICBtX3NvdXJjZUlEcy5jbGVhcigpOwogICAgICAgICBz
Y2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS53ZWJraXRzb3VyY2VjbG9zZUV2ZW50KTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5k
ZXggZDk1ZGNkZDU1ZGFlYmQ2ODliN2RmOTdkZWRkMzhkMzYwNWFhNTUwOS4uMjZlMmY1NDU2OTM1
NDA1MzY3YjM0MzhmYjM3YmNjYTczYTExNzU1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmgKQEAgLTE3Miw2ICsxNzIsOCBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKE1FRElB
X1NPVVJDRSkKIC8vICBNZWRpYSBTb3VyY2UuCiAgICAgY29uc3QgS1VSTCYgd2Via2l0TWVkaWFT
b3VyY2VVUkwoKSBjb25zdCB7IHJldHVybiBtX21lZGlhU291cmNlVVJMOyB9CisgICAgdm9pZCB3
ZWJraXRTb3VyY2VBZGRJZChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25D
b2RlJik7CisgICAgdm9pZCB3ZWJraXRTb3VyY2VSZW1vdmVJZChjb25zdCBTdHJpbmcmLCBFeGNl
cHRpb25Db2RlJik7CiAgICAgdm9pZCB3ZWJraXRTb3VyY2VBcHBlbmQoUGFzc1JlZlB0cjxVaW50
OEFycmF5PiBkYXRhLCBFeGNlcHRpb25Db2RlJik7CiAgICAgZW51bSBFbmRPZlN0cmVhbVN0YXR1
cyB7IEVPU19OT19FUlJPUiwgRU9TX05FVFdPUktfRVJSLCBFT1NfREVDT0RFX0VSUiB9OwogICAg
IHZvaWQgd2Via2l0U291cmNlRW5kT2ZTdHJlYW0odW5zaWduZWQgc2hvcnQsIEV4Y2VwdGlvbkNv
ZGUmKTsKQEAgLTM5NSw2ICszOTcsNyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShNRURJQV9TT1VS
Q0UpCiAgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyU291cmNlT3BlbmVkKCk7CiAgICAgdmly
dHVhbCBTdHJpbmcgbWVkaWFQbGF5ZXJTb3VyY2VVUkwoKSBjb25zdDsKKyAgICBib29sIGlzVmFs
aWRTb3VyY2VJZChjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7CiAjZW5kaWYK
IAogICAgIHZpcnR1YWwgU3RyaW5nIG1lZGlhUGxheWVyUmVmZXJyZXIoKSBjb25zdCBPVkVSUklE
RTsKQEAgLTU1Nyw2ICs1NjAsNyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0Up
CiAgICAgS1VSTCBtX21lZGlhU291cmNlVVJMOwogICAgIFNvdXJjZVN0YXRlIG1fc291cmNlU3Rh
dGU7CisgICAgSGFzaFNldDxTdHJpbmc+IG1fc291cmNlSURzOwogI2VuZGlmCiAKICAgICBtdXRh
YmxlIGZsb2F0IG1fY2FjaGVkVGltZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuaWRsCmluZGV4IDk4ZGU2OTdlZTVhODY3YjY5YjY5MGVkOGFjZjMyM2Q3ZWFmYzgwNWUuLmQ5
NDNjN2JhZGNlMzM2ZjUyOTIxOTA2ZjI4MmZiM2E4ZGViZjFiMzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmlkbApAQCAtOTUsNiArOTUsMTAgQEAgbW9kdWxlIGh0bWwg
ewogICAgIC8vIFVSTCBwYXNzZWQgdG8gc3JjIGF0dHJpYnV0ZSB0byBlbmFibGUgdGhlIG1lZGlh
IHNvdXJjZSBsb2dpYy4KICAgICByZWFkb25seSBhdHRyaWJ1dGUgW1Y4RW5hYmxlZEF0UnVudGlt
ZT13ZWJraXRNZWRpYVNvdXJjZSwgVVJMXSBET01TdHJpbmcgd2Via2l0TWVkaWFTb3VyY2VVUkw7
CiAKKyAgICAvLyBNYW5hZ2VzIElEcyBmb3IgYXBwZW5kaW5nIG1lZGlhIHRvIHRoZSBzb3VyY2Uu
CisgICAgW1Y4RW5hYmxlZEF0UnVudGltZT13ZWJraXRNZWRpYVNvdXJjZV0gdm9pZCB3ZWJraXRT
b3VyY2VBZGRJZChpbiBET01TdHJpbmcgaWQsIGluIERPTVN0cmluZyB0eXBlKSByYWlzZXMgKERP
TUV4Y2VwdGlvbik7CisgICAgW1Y4RW5hYmxlZEF0UnVudGltZT13ZWJraXRNZWRpYVNvdXJjZV0g
dm9pZCB3ZWJraXRTb3VyY2VSZW1vdmVJZChpbiBET01TdHJpbmcgaWQpIHJhaXNlcyAoRE9NRXhj
ZXB0aW9uKTsKKwogICAgIC8vIEFwcGVuZHMgbWVkaWEgdG8gdG8gdGhlIHNvdXJjZS4KICAgICBb
VjhFbmFibGVkQXRSdW50aW1lPXdlYmtpdE1lZGlhU291cmNlXSB2b2lkIHdlYmtpdFNvdXJjZUFw
cGVuZChpbiBVaW50OEFycmF5IGRhdGEpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IGFi
YzU1NTJjNTIxMWQwMGJhMTI4NjQ5MWZlZTAwMWUyZTVkMzU1ZGQuLmU2N2NlZDIwNmJjNzA4MGI4
MDViYTYzYzIyN2UzMDNiZDkzMTkyN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTE0OSw2ICsxNDksOCBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBib29sIGhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luKCkgY29uc3QgeyByZXR1cm4g
dHJ1ZTsgfQogCiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKKyAgICB2aXJ0dWFsIE1lZGlhUGxh
eWVyOjpBZGRJZFN0YXR1cyBzb3VyY2VBZGRJZChjb25zdCBTdHJpbmcmIGlkLCBjb25zdCBTdHJp
bmcmIHR5cGUpIHsgcmV0dXJuIE1lZGlhUGxheWVyOjpBaXNOb3RTdXBwb3J0ZWQ7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgc291cmNlUmVtb3ZlSWQoY29uc3QgU3RyaW5nJiBpZCkgeyB9CiAgICAgdmly
dHVhbCBib29sIHNvdXJjZUFwcGVuZChjb25zdCB1bnNpZ25lZCBjaGFyKiwgdW5zaWduZWQpIHsg
cmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIHNvdXJjZUVuZE9mU3RyZWFtKE1lZGlh
UGxheWVyOjpFbmRPZlN0cmVhbVN0YXR1cyBzdGF0dXMpIHsgfQogI2VuZGlmCkBAIC00NDksNiAr
NDUxLDE3IEBAIHZvaWQgTWVkaWFQbGF5ZXI6OnBhdXNlKCkKIH0KIAogI2lmIEVOQUJMRShNRURJ
QV9TT1VSQ0UpCisKK01lZGlhUGxheWVyOjpBZGRJZFN0YXR1cyBNZWRpYVBsYXllcjo6c291cmNl
QWRkSWQoY29uc3QgU3RyaW5nJiBpZCwgY29uc3QgU3RyaW5nJiB0eXBlKQoreworICAgIHJldHVy
biBtX3ByaXZhdGUtPnNvdXJjZUFkZElkKGlkLCB0eXBlKTsKK30KKwordm9pZCBNZWRpYVBsYXll
cjo6c291cmNlUmVtb3ZlSWQoY29uc3QgU3RyaW5nJiBpZCkKK3sKKyAgICBtX3ByaXZhdGUtPnNv
dXJjZVJlbW92ZUlkKGlkKTsKK30KKwogYm9vbCBNZWRpYVBsYXllcjo6c291cmNlQXBwZW5kKGNv
bnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKIHsKICAgICByZXR1cm4g
bV9wcml2YXRlLT5zb3VyY2VBcHBlbmQoZGF0YSwgbGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCmluZGV4IDY1Yzc1NTJmYjU3MDdhZTVh
N2FjMGRmZDliNDNiNGIzM2MwYTRlNmMuLjExNGY0ZDE0YTJjYWY3NDE5ZDJjNTJmZTQyNDBkZWZj
NzhiNjI2NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhUGxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXIuaApAQCAtMjIxLDYgKzIyMSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHBhdXNlKCk7ICAg
IAogCiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKKyAgICBlbnVtIEFkZElkU3RhdHVzIHsgQWlz
Tm9FcnJvciwgQWlzTm90U3VwcG9ydGVkLCBBaXNSZWFjaGVkSWRMaW1pdCB9OworICAgIEFkZElk
U3RhdHVzIHNvdXJjZUFkZElkKGNvbnN0IFN0cmluZyYgaWQsIGNvbnN0IFN0cmluZyYgdHlwZSk7
CisgICAgdm9pZCBzb3VyY2VSZW1vdmVJZChjb25zdCBTdHJpbmcmIGlkKTsKICAgICBib29sIHNv
dXJjZUFwcGVuZChjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOwog
ICAgIGVudW0gRW5kT2ZTdHJlYW1TdGF0dXMgeyBFb3NOb0Vycm9yLCBFb3NOZXR3b3JrRXJyb3Is
IEVvc0RlY29kZUVycm9yIH07CiAgICAgdm9pZCBzb3VyY2VFbmRPZlN0cmVhbShFbmRPZlN0cmVh
bVN0YXR1cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllclByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhUGxheWVyUHJpdmF0ZS5oCmluZGV4IDM3OGIyNTllODM1MjA3ZDY3YjIyYWJiOTAzZGVlZjJk
OTRjYzI4YzEuLmYyMWZmZTVlYTk3Mzk5ZmUyY2QxOTc4NzcxYzBhNGE1NWQyNzRkNjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJp
dmF0ZS5oCkBAIC0xNTgsNiArMTU4LDggQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBFTkFCTEUo
TUVESUFfU09VUkNFKQorICAgIHZpcnR1YWwgTWVkaWFQbGF5ZXI6OkFkZElkU3RhdHVzIHNvdXJj
ZUFkZElkKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpIHsgcmV0dXJuIE1lZGlhUGxheWVy
OjpBaXNOb3RTdXBwb3J0ZWQ7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc291cmNlUmVtb3ZlSWQoY29u
c3QgU3RyaW5nJikgeyB9CiAgICAgdmlydHVhbCBib29sIHNvdXJjZUFwcGVuZChjb25zdCB1bnNp
Z25lZCBjaGFyKiwgdW5zaWduZWQpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lk
IHNvdXJjZUVuZE9mU3RyZWFtKE1lZGlhUGxheWVyOjpFbmRPZlN0cmVhbVN0YXR1cykgeyB9Owog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZWRp
YVBsYXllci5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFQbGF5ZXIu
aAppbmRleCAyMDQ5YjU5YjAyYWJlM2ExMDI0MmUyN2VjZTJiYmU3ZjkyN2Y3ZDM3Li44ZDk4YmI1
ODBjMzg0NWMzMDFmNTc2YzI1YzdjZmNiMzlkMDJkNmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZWRpYVBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYk1lZGlhUGxheWVyLmgKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2lu
Y2x1ZGUgIldlYlZpZGVvRnJhbWUuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDYW52YXMuaCIK
KyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJTdHJpbmcuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJW
ZWN0b3IuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC04OSw2ICs5MCwxMiBAQCBwdWJsaWM6
CiAgICAgICAgIEF1dG8sCiAgICAgfTsKIAorICAgIGVudW0gQWRkSWRTdGF0dXMgeworICAgICAg
ICBBaXNOb0Vycm9yLAorICAgICAgICBBaXNOb3RTdXBwb3J0ZWQsCisgICAgICAgIEFpc1JlYWNo
ZWRJZExpbWl0CisgICAgfTsKKwogICAgIGVudW0gRW5kT2ZTdHJlYW1TdGF0dXMgewogICAgICAg
ICBFb3NOb0Vycm9yLAogICAgICAgICBFb3NOZXR3b3JrRXJyb3IsCkBAIC0xNzYsNiArMTgzLDgg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyKiBhdWRpb1Nv
dXJjZVByb3ZpZGVyKCkgeyByZXR1cm4gMDsgfQogCisgICAgdmlydHVhbCBBZGRJZFN0YXR1cyBz
b3VyY2VBZGRJZChjb25zdCBXZWJTdHJpbmcmIGlkLCBjb25zdCBXZWJTdHJpbmcmIHR5cGUpIHsg
cmV0dXJuIEFpc05vdFN1cHBvcnRlZDsgfQorICAgIHZpcnR1YWwgdm9pZCBzb3VyY2VSZW1vdmVJ
ZChjb25zdCBXZWJTdHJpbmcmIGlkKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgc291cmNlQXBwZW5k
KGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkgeyByZXR1cm4gZmFs
c2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgc291cmNlRW5kT2ZTdHJlYW0oRW5kT2ZTdHJlYW1TdGF0
dXMpICB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVk
aWFQbGF5ZXJDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1l
ZGlhUGxheWVyQ2xpZW50SW1wbC5jcHAKaW5kZXggZTIwZjUyZDhiNWZmNDQ2OTEyNDg5YmQwYjZj
MDhhNDlkMmIxNzI2Ni4uZDFkMjgzYzY2ZDBlNDU0ODkzOTdlNTY2Mjc5M2QzMDRhM2FiYjkyOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGll
bnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXll
ckNsaWVudEltcGwuY3BwCkBAIC0yOTIsNiArMjkyLDIyIEBAIHZvaWQgV2ViTWVkaWFQbGF5ZXJD
bGllbnRJbXBsOjpwYXVzZSgpCiB9CiAKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorV2ViQ29y
ZTo6TWVkaWFQbGF5ZXI6OkFkZElkU3RhdHVzIFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6c291
cmNlQWRkSWQoY29uc3QgU3RyaW5nJiBpZCwgY29uc3QgU3RyaW5nJiB0eXBlKQoreworICAgIGlm
ICghbV93ZWJNZWRpYVBsYXllcikKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6Ok1lZGlhUGxheWVy
OjpBaXNOb3RTdXBwb3J0ZWQ7CisKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6TWVk
aWFQbGF5ZXI6OkFkZElkU3RhdHVzPihtX3dlYk1lZGlhUGxheWVyLT5zb3VyY2VBZGRJZChpZCwg
dHlwZSkpOworfQorCit2b2lkIFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6c291cmNlUmVtb3Zl
SWQoY29uc3QgU3RyaW5nJiBpZCkKK3sKKyAgICBpZiAoIW1fd2ViTWVkaWFQbGF5ZXIpCisgICAg
ICAgIHJldHVybjsKKworICAgIG1fd2ViTWVkaWFQbGF5ZXItPnNvdXJjZVJlbW92ZUlkKGlkKTsK
K30KKwogYm9vbCBXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OnNvdXJjZUFwcGVuZChjb25zdCB1
bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCiB7CiAgICAgaWYgKG1fd2ViTWVk
aWFQbGF5ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRp
YVBsYXllckNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlh
UGxheWVyQ2xpZW50SW1wbC5oCmluZGV4IGVlNmJmNTExYTNiZGM2NmMzNjYwOGVhOGFkZGRlYjhl
NWY2MDE0YjcuLmYwMzgwMzcxNzQwNTc5ZWRiM2NlNTMyZGMyMjA5YjhiNmViNmNmYzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1w
bC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50
SW1wbC5oCkBAIC0xNDYsNiArMTQ2LDggQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBFTkFCTEUo
TUVESUFfU09VUkNFKQorICAgIHZpcnR1YWwgV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OkFkZElkU3Rh
dHVzIHNvdXJjZUFkZElkKGNvbnN0IFN0cmluZyYgaWQsIGNvbnN0IFN0cmluZyYgdHlwZSk7Cisg
ICAgdmlydHVhbCB2b2lkIHNvdXJjZVJlbW92ZUlkKGNvbnN0IFN0cmluZyYpOwogICAgIHZpcnR1
YWwgYm9vbCBzb3VyY2VBcHBlbmQoY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQg
bGVuZ3RoKTsKICAgICB2aXJ0dWFsIHZvaWQgc291cmNlRW5kT2ZTdHJlYW0oV2ViQ29yZTo6TWVk
aWFQbGF5ZXI6OkVuZE9mU3RyZWFtU3RhdHVzKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDUxZjY2MjMyYTUx
YWRjM2YyNDE1MGQzYjY1NDAzMmY2NThjNzlhYjUuLjdmZjJjMTJmMjBhOTQzYTVjZmNkMGJlOTc3
YjFjNTlhMTQzMmFkMzcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wNC0xMCAgQWFyb24g
Q29sd2VsbCAgPGFjb2x3ZWxsQGNocm9taXVtLm9yZz4KKworICAgICAgICBBZGQgTGF5b3V0VGVz
dHMgZm9yIG5ldyB3ZWJraXRTb3VyY2VBZGRJZCgpICYgd2Via2l0U291cmNlUmVtb3ZlSWQoKSBt
ZXRob2RzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODM2MTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IGh0dHAvdGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL3dlYm0vdmlkZW8tbWVkaWEtc291cmNlLWFk
ZC1hbmQtcmVtb3ZlLWlkcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVz
dHMvbWVkaWEvbWVkaWEtc291cmNlL3dlYm0vdmlkZW8tbWVkaWEtc291cmNlLWFkZC1hbmQtcmVt
b3ZlLWlkcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4
cGVjdGF0aW9ucy50eHQ6CisKIDIwMTItMDQtMTAgIEFiaGlzaGVrIEFyeWEgIDxpbmZlcm5vQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBDcmFzaCBkdWUgdG8gY2FwdGlvbnMgbGlzdCBub3QgdXBk
YXRlZCBhZnRlciBzZWN0aW9uIHJlY2FsYy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL3dlYm0vdmlkZW8tbWVkaWEtc291cmNlLWFkZC1hbmQt
cmVtb3ZlLWlkcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21lZGlhL21l
ZGlhLXNvdXJjZS93ZWJtL3ZpZGVvLW1lZGlhLXNvdXJjZS1hZGQtYW5kLXJlbW92ZS1pZHMtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYxNzYyNzEzNWIxNjFlZGFlNTJlZjdkNTMwMDdiMGU4MDBm
OTRlZTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21lZGlhL21l
ZGlhLXNvdXJjZS93ZWJtL3ZpZGVvLW1lZGlhLXNvdXJjZS1hZGQtYW5kLXJlbW92ZS1pZHMtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTYgQEAKK1Rlc3RzIHdlYmtpdFNvdXJjZUFkZElkKCkgJiB3
ZWJraXRTb3VyY2VSZW1vdmVJZCgpIG1ldGhvZHMKKworCitydW5uaW5nIHRlc3RBZGRJZEZhaWx1
cmVDYXNlcworRVZFTlQobG9hZHN0YXJ0KQorRVZFTlQod2Via2l0c291cmNlb3BlbikKKworcnVu
bmluZyB0ZXN0UmVtb3ZlSWRGYWlsdXJlQ2FzZXMKK0VWRU5UKGxvYWRzdGFydCkKK0VWRU5UKHdl
YmtpdHNvdXJjZW9wZW4pCisKK3J1bm5pbmcgdGVzdEFwcGVuZEZhaWx1cmVDYXNlcworRVZFTlQo
bG9hZHN0YXJ0KQorRVZFTlQod2Via2l0c291cmNlb3BlbikKK0VORCBPRiBURVNUCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL3dlYm0vdmlk
ZW8tbWVkaWEtc291cmNlLWFkZC1hbmQtcmVtb3ZlLWlkcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2Uvd2VibS92aWRlby1tZWRpYS1zb3VyY2UtYWRkLWFu
ZC1yZW1vdmUtaWRzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTdiOWI4OTU2Njk5OTRhM2FhNzIyNjE0NWJm
ZmUyZjdlZmIzMWVlNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
bWVkaWEvbWVkaWEtc291cmNlL3dlYm0vdmlkZW8tbWVkaWEtc291cmNlLWFkZC1hbmQtcmVtb3Zl
LWlkcy5odG1sCkBAIC0wLDAgKzEsMTk4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAg
IDxoZWFkPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vbWVkaWEtcmVzb3VyY2VzL3Zp
ZGVvLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0id2VibS1tZWRpYS1z
b3VyY2UuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICAgICAgdmFyIERF
RkFVTFRfU09VUkNFX01JTUVUWVBFID0gInZpZGVvL3dlYm07IGNvZGVjcz1cInZwOCwgdm9yYmlz
XCIiOworCisgICAgICAgICAgICBmdW5jdGlvbiBydW5PblNvdXJjZU9wZW4odmlkZW9UYWcsIG9u
T3BlbkZ1bmN0aW9uKSB7CisgICAgICAgICAgICAgICAgdmFyIGV2ZW50SGFuZGxlckZ1bmN0aW9u
ID0gZnVuY3Rpb24gKGV2ZW50KSB7CisgICAgICAgICAgICAgICAgICAgIGV2ZW50LnRhcmdldC5y
ZW1vdmVFdmVudExpc3RlbmVyKCd3ZWJraXRzb3VyY2VvcGVuJywgZXZlbnRIYW5kbGVyRnVuY3Rp
b24pOworICAgICAgICAgICAgICAgICAgICBvbk9wZW5GdW5jdGlvbihldmVudC50YXJnZXQpOwor
ICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgdmlkZW9UYWcuYWRkRXZlbnRMaXN0
ZW5lcignd2Via2l0c291cmNlb3BlbicsIGV2ZW50SGFuZGxlckZ1bmN0aW9uKTsKKyAgICAgICAg
ICAgICAgICBzZXRTcmNUb01lZGlhU291cmNlVVJMKHZpZGVvVGFnKTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgLy8gVGhlIGluZGV4IG9mIHRoZSBuZXh0IGNsdXN0ZXIgdG8gc2VuZCB0
byBhcHBlbmREYXRhKCkuCisgICAgICAgICAgICB2YXIgbmV4dENsdXN0ZXJJbmRleCA9IDA7CisK
KyAgICAgICAgICAgIGZ1bmN0aW9uIGV4cGVjdEV4Y2VwdGlvbk9uQWRkSWQodmlkZW9UYWcsIGlk
LCB0eXBlLCBlcnJvcikgeworICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAg
ICAgIHZpZGVvVGFnLndlYmtpdFNvdXJjZUFkZElkKGlkLCB0eXBlKTsKKyAgICAgICAgICAgICAg
ICAgICAgZmFpbFRlc3QoIkV4cGVjdGVkIGFuIGV4Y2VwdGlvbiIpOworICAgICAgICAgICAgICAg
IH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCEoZS5jb2RlID09IGVycm9y
KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgZmFpbFRlc3QoIlVuZXhwZWN0ZWQgZXhjZXB0
aW9uICIgKyBlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IGU7CisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIGZ1bmN0aW9uIGV4cGVjdEV4Y2VwdGlvbk9uUmVtb3ZlSWQodmlkZW9UYWcsIGlkLCBlcnJv
cikgeworICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIHZpZGVvVGFn
LndlYmtpdFNvdXJjZVJlbW92ZUlkKGlkKTsKKyAgICAgICAgICAgICAgICAgICAgZmFpbFRlc3Qo
IkV4cGVjdGVkIGFuIGV4Y2VwdGlvbiIpOworICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKCEoZS5jb2RlID09IGVycm9yKSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgZmFpbFRlc3QoIlVuZXhwZWN0ZWQgZXhjZXB0aW9uICIgKyBlKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHRocm93IGU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGV4
cGVjdEV4Y2VwdGlvbk9uQXBwZW5kKHZpZGVvVGFnLCBpZCwgYnVmLCBlcnJvcikgeworICAgICAg
ICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIHZpZGVvVGFnLndlYmtpdFNvdXJj
ZUFwcGVuZChpZCwgYnVmKTsKKyAgICAgICAgICAgICAgICAgICAgZmFpbFRlc3QoIkV4cGVjdGVk
IGFuIGV4Y2VwdGlvbiIpOworICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKCEoZS5jb2RlID09IGVycm9yKSkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgZmFpbFRlc3QoIlVuZXhwZWN0ZWQgZXhjZXB0aW9uICIgKyBlKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHRocm93IGU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHRlc3RBZGRJZEZh
aWx1cmVDYXNlcyh2aWRlb1RhZykgeworICAgICAgICAgICAgICAgIC8vIFRlc3QgYWRkaW5nIHdo
aWxlIGNsb3NlZC4KKyAgICAgICAgICAgICAgICBleHBlY3RFeGNlcHRpb25PbkFkZElkKHZpZGVv
VGFnLCAiMTIzIiwgREVGQVVMVF9TT1VSQ0VfTUlNRVRZUEUsIERPTUV4Y2VwdGlvbi5JTlZBTElE
X1NUQVRFX0VSUik7CisKKyAgICAgICAgICAgICAgICBydW5PblNvdXJjZU9wZW4odmlkZW9UYWcs
IGZ1bmN0aW9uICh2dCkgeworICAgICAgICAgICAgICAgICAgICAvLyBUZXN0IGVtcHR5IElEIGNh
c2UKKyAgICAgICAgICAgICAgICAgICAgZXhwZWN0RXhjZXB0aW9uT25BZGRJZCh2aWRlb1RhZywg
IiIsIERFRkFVTFRfU09VUkNFX01JTUVUWVBFLCBET01FeGNlcHRpb24uSU5WQUxJRF9BQ0NFU1Nf
RVJSKTsKKworICAgICAgICAgICAgICAgICAgICB2aWRlb1RhZy53ZWJraXRTb3VyY2VBZGRJZCgi
MTIzIiwgREVGQVVMVF9TT1VSQ0VfTUlNRVRZUEUpOworCisgICAgICAgICAgICAgICAgICAgIC8v
IFRlc3QgYWRkaW5nIHRoZSBzYW1lIElEIGFnYWluLgorICAgICAgICAgICAgICAgICAgICBleHBl
Y3RFeGNlcHRpb25PbkFkZElkKHZpZGVvVGFnLCAiMTIzIiwgREVGQVVMVF9TT1VSQ0VfTUlNRVRZ
UEUsIERPTUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VSUik7CisgICAgICAgICAgICAgICAgICAg
IHZpZGVvVGFnLndlYmtpdFNvdXJjZVJlbW92ZUlkKCIxMjMiKTsKKworICAgICAgICAgICAgICAg
ICAgICAvLyBUZXN0IGVtcHR5IHR5cGUuCisgICAgICAgICAgICAgICAgICAgIGV4cGVjdEV4Y2Vw
dGlvbk9uQWRkSWQodmlkZW9UYWcsICIyMzQiLCAiIiwgRE9NRXhjZXB0aW9uLklOVkFMSURfQUND
RVNTX0VSUik7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gVGVzdCBhbiB1bnN1cHBvcnRlZCB0
eXBlLgorICAgICAgICAgICAgICAgICAgICBleHBlY3RFeGNlcHRpb25PbkFkZElkKHZpZGVvVGFn
LCAiMjM0IiwgImF1ZGlvL3dhdiIsIERPTUV4Y2VwdGlvbi5OT1RfU1VQUE9SVEVEX0VSUik7CisK
KyAgICAgICAgICAgICAgICAgICAgLy8gVGVzdCByZWFjaGluZyBzb3VyY2VJRCBsaW1pdC4KKyAg
ICAgICAgICAgICAgICAgICAgdmFyIHJlYWNoZWRJZExpbWl0ID0gZmFsc2U7CisgICAgICAgICAg
ICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMjA7ICsraSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgdmFyIHNvdXJjZUlEID0gInNvdXJjZUlELSIgKyBpOworICAgICAgICAgICAgICAg
ICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWRlb1RhZy53ZWJr
aXRTb3VyY2VBZGRJZChzb3VyY2VJRCwgREVGQVVMVF9TT1VSQ0VfTUlNRVRZUEUpOworICAgICAg
ICAgICAgICAgICAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKGUuY29kZSAhPSBET01FeGNlcHRpb24uUVVPVEFfRVhDRUVERURfRVJSKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhaWxUZXN0KCJVbmV4cGVjdGVkIGV4Y2VwdGlv
biAiICsgZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IGU7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
YWNoZWRJZExpbWl0ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAgICAgICAgIGlmICghcmVhY2hlZElkTGltaXQpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGZhaWxUZXN0KCJGYWlsZWQgdG8gcmVhY2ggU291cmNlSUQgbGltaXQuIik7CisgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgICAgICAgICAvLyBUZXN0IHRoYXQgU291cmNlSURzIGNhbid0IGJlIGFkZGVkIHdo
aWxlIGluIHRoZSBlbmRlZCBzdGF0ZS4KKyAgICAgICAgICAgICAgICAgICAgdmlkZW9UYWcud2Vi
a2l0U291cmNlRW5kT2ZTdHJlYW0odmlkZW9UYWcuRU9TX05PX0VSUk9SKTsKKyAgICAgICAgICAg
ICAgICAgICAgZXhwZWN0RXhjZXB0aW9uT25BZGRJZCh2aWRlb1RhZywgIjEyMyIsIERFRkFVTFRf
U09VUkNFX01JTUVUWVBFLCBET01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIpOworCisgICAg
ICAgICAgICAgICAgICAgIHJ1bk5leHRUZXN0Q2FzZSh2aWRlb1RhZyk7CisgICAgICAgICAgICAg
ICAgfSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHRlc3RSZW1vdmVJ
ZEZhaWx1cmVDYXNlcyh2aWRlb1RhZykgeworICAgICAgICAgICAgICAgIHJ1bk9uU291cmNlT3Bl
bih2aWRlb1RhZywgZnVuY3Rpb24gKHZ0KSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFRlc3Qg
ZW1wdHkgSUQgY2FzZQorICAgICAgICAgICAgICAgICAgICBleHBlY3RFeGNlcHRpb25PblJlbW92
ZUlkKHZpZGVvVGFnLCAiIiwgRE9NRXhjZXB0aW9uLklOVkFMSURfQUNDRVNTX0VSUik7CisKKyAg
ICAgICAgICAgICAgICAgICAgLy8gVGVzdCByZW1vdmluZyBhbmQgSUQgdGhhdCB3YXMgbmV2ZXIg
YWRkZWQuCisgICAgICAgICAgICAgICAgICAgIGV4cGVjdEV4Y2VwdGlvbk9uUmVtb3ZlSWQodmlk
ZW9UYWcsICIzNDUiLCBET01FeGNlcHRpb24uU1lOVEFYX0VSUik7CisKKyAgICAgICAgICAgICAg
ICAgICAgdmlkZW9UYWcud2Via2l0U291cmNlQWRkSWQoIjEyMyIsIERFRkFVTFRfU09VUkNFX01J
TUVUWVBFKTsKKyAgICAgICAgICAgICAgICAgICAgdmlkZW9UYWcud2Via2l0U291cmNlUmVtb3Zl
SWQoIjEyMyIpOworICAgICAgICAgICAgICAgICAgICBleHBlY3RFeGNlcHRpb25PblJlbW92ZUlk
KHZpZGVvVGFnLCAiMTIzIiwgRE9NRXhjZXB0aW9uLlNZTlRBWF9FUlIpOworCisgICAgICAgICAg
ICAgICAgICAgIC8vIFRlc3QgYWRkaW5nIHRoZSBzYW1lIElEIGFnYWluLgorICAgICAgICAgICAg
ICAgICAgICB2aWRlb1RhZy53ZWJraXRTb3VyY2VBZGRJZCgiMTIzIiwgREVGQVVMVF9TT1VSQ0Vf
TUlNRVRZUEUpOworCisgICAgICAgICAgICAgICAgICAgIC8vIFRlc3QgdGhhdCBhbiBJRCBjYW4g
YmUgcmVtb3ZlZCB3aGlsZSBpbiB0aGUgZW5kZWQgc3RhdGUuCisgICAgICAgICAgICAgICAgICAg
IHZpZGVvVGFnLndlYmtpdFNvdXJjZUVuZE9mU3RyZWFtKHZpZGVvVGFnLkVPU19OT19FUlJPUik7
CisgICAgICAgICAgICAgICAgICAgIHZpZGVvVGFnLndlYmtpdFNvdXJjZVJlbW92ZUlkKCIxMjMi
KTsKKworICAgICAgICAgICAgICAgICAgICBydW5OZXh0VGVzdENhc2UodmlkZW9UYWcpOworICAg
ICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiB0
ZXN0QXBwZW5kRmFpbHVyZUNhc2VzKHZpZGVvVGFnKSB7CisgICAgICAgICAgICAgICAgcnVuT25T
b3VyY2VPcGVuKHZpZGVvVGFnLCBmdW5jdGlvbiAodnQpIHsKKyAgICAgICAgICAgICAgICAgICAg
dmlkZW9UYWcud2Via2l0U291cmNlQWRkSWQoIjEyMyIsIERFRkFVTFRfU09VUkNFX01JTUVUWVBF
KTsKKworICAgICAgICAgICAgICAgICAgICAvLyBUZXN0IGFwcGVuZCB3aXRoIGVtcHR5IElELgor
ICAgICAgICAgICAgICAgICAgICBleHBlY3RFeGNlcHRpb25PbkFwcGVuZCh2aWRlb1RhZywgIiIs
IGdldEhlYWRlcnMoKSwgRE9NRXhjZXB0aW9uLklOVkFMSURfQUNDRVNTX0VSUik7CisKKyAgICAg
ICAgICAgICAgICAgICAgLy8gVGVzdCBhcHBlbmQgd2l0aCBhbiBpbnZhbGlkIElECisgICAgICAg
ICAgICAgICAgICAgIGV4cGVjdEV4Y2VwdGlvbk9uQXBwZW5kKHZpZGVvVGFnLCAiMjM0IiwgZ2V0
SGVhZGVycygpLCBET01FeGNlcHRpb24uU1lOVEFYX0VSUik7CisKKyAgICAgICAgICAgICAgICAg
ICAgLy8gVGVzdCBhcHBlbmQgd2l0aCBhIG51bGwgYnVmZmVyLgorICAgICAgICAgICAgICAgICAg
ICBleHBlY3RFeGNlcHRpb25PbkFwcGVuZCh2aWRlb1RhZywgIjEyMyIsIG51bGwsIERPTUV4Y2Vw
dGlvbi5JTlZBTElEX0FDQ0VTU19FUlIpOworCisgICAgICAgICAgICAgICAgICAgIC8vIFRlc3Qg
YSBzdWNjZXNzZnVsIGFwcGVuZC4KKyAgICAgICAgICAgICAgICAgICAgdmlkZW9UYWcud2Via2l0
U291cmNlQXBwZW5kKCIxMjMiLCBnZXRIZWFkZXJzKCkpOworCisgICAgICAgICAgICAgICAgICAg
IHZpZGVvVGFnLndlYmtpdFNvdXJjZVJlbW92ZUlkKCIxMjMiKTsKKyAgICAgICAgICAgICAgICAg
ICAgZXhwZWN0RXhjZXB0aW9uT25BcHBlbmQodmlkZW9UYWcsICIxMjMiLCBnZXRDbHVzdGVyKDAp
LCBET01FeGNlcHRpb24uU1lOVEFYX0VSUik7CisKKyAgICAgICAgICAgICAgICAgICAgcnVuTmV4
dFRlc3RDYXNlKHZpZGVvVGFnKTsKKyAgICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICB2YXIgdGVzdENhc2VzID0gWworICAgICAgICAgICAgICAgICd0ZXN0
QWRkSWRGYWlsdXJlQ2FzZXMnLAorICAgICAgICAgICAgICAgICd0ZXN0UmVtb3ZlSWRGYWlsdXJl
Q2FzZXMnLAorICAgICAgICAgICAgICAgICd0ZXN0QXBwZW5kRmFpbHVyZUNhc2VzJywKKyAgICAg
ICAgICAgIF07CisKKyAgICAgICAgICAgIHZhciB0ZXN0Q2FzZUluZGV4ID0gMDsKKworICAgICAg
ICAgICAgZnVuY3Rpb24gcnVuTmV4dFRlc3RDYXNlKHZpZGVvVGFnKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIGlmICh0ZXN0Q2FzZUluZGV4ID49IHRlc3RDYXNlcy5sZW5ndGgpIHsK
KyAgICAgICAgICAgICAgICAgICAgZW5kVGVzdCgpOworICAgICAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgdmFyIGZ1bmN0aW9uTmFt
ZSA9IHRlc3RDYXNlc1t0ZXN0Q2FzZUluZGV4XTsKKyAgICAgICAgICAgICAgICB2YXIgdGVzdENh
c2VGdW5jdGlvbiA9IGV2YWwoZnVuY3Rpb25OYW1lKTsKKyAgICAgICAgICAgICAgICB0ZXN0Q2Fz
ZUluZGV4Kys7CisKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIpOworICAgICAgICAg
ICAgICAgIGNvbnNvbGVXcml0ZSgicnVubmluZyAiICsgZnVuY3Rpb25OYW1lKTsKKyAgICAgICAg
ICAgICAgICB0ZXN0Q2FzZUZ1bmN0aW9uKHZpZGVvVGFnKTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBmaW5kTWVkaWFFbGVtZW50KCk7CisKKyAgICAgICAgICAgICAgICB3YWl0Rm9yRXZlbnQoJ2xv
YWRzdGFydCcpOworICAgICAgICAgICAgICAgIHdhaXRGb3JFdmVudCgnd2Via2l0c291cmNlb3Bl
bicpOworCisgICAgICAgICAgICAgICAgbG9hZFdlYk1EYXRhKGZ1bmN0aW9uKHN1Y2Nlc3MpIHsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKCFzdWNjZXNzKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBmYWlsVGVzdCgiRmFpbGVkIHRvIGxvYWQgV2ViTSBkYXRhIik7CisgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgICAgcnVuTmV4dFRlc3RDYXNlKHZpZGVvKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9h
ZD0ib25Mb2FkKCkiPgorICAgICAgICA8dmlkZW8+IDwvdmlkZW8+CisgICAgICAgIDxwPlRlc3Rz
IHdlYmtpdFNvdXJjZUFkZElkKCkgJmFtcDsgd2Via2l0U291cmNlUmVtb3ZlSWQoKSBtZXRob2Rz
PC9wPgorICAgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAppbmRleCAzN2Y1YzU5MjExNGI0MDM0Mjg1
YmRhYzg3NzYxMDQ2ZjRlZTRiMDA0Li5jMTc2NjljNDFhYjY5ZTUzYTYwM2JlYzVjYjUyYWE5YWVh
NjM2ZjQwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4
cGVjdGF0aW9ucy50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9l
eHBlY3RhdGlvbnMudHh0CkBAIC0zODAyLDQgKzM4MDIsNyBAQCBCVUdDUjEyMjQ0OCA6IG1lZGlh
L3ZpZGVvLXNlZWstcGFzdC1lbmQtcGF1c2VkLmh0bWwgPSBQQVNTIFRFWFQKIAogQlVHQ1IxMjI0
NjIgV0lOIExJTlVYIDogaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdC1lbGVtZW50Lmh0bWwg
PSBURVhUCiAKKy8vIFRlbXBvcmFyaWx5IGRpc2FibGVkIHVudGlsIENocm9taXVtIHNvdXJjZUFk
ZElkKCkgJiBzb3VyY2VSZW1vdmVJZCgpIGNvZGUgaGFzIGJlZW4gY2hlY2tlZCBpbi4KK0JVR1dL
ODM2MTYgU0tJUCA6IGh0dHAvdGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL3dlYm0vdmlkZW8tbWVk
aWEtc291cmNlLWFkZC1hbmQtcmVtb3ZlLWlkcy5odG1sID0gRkFJTAorCiBCVUdXSzgzNTAzIExJ
TlVYIERFQlVHIDogcGx1Z2lucy9pbm5lci1odG1sLWRpc3BsYXktbm9uZS5odG1sID0gQ1JBU0gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136714</attachid>
            <date>2012-04-11 11:48:59 -0700</date>
            <delta_ts>2012-04-13 14:07:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83616-20120411114858.patch</filename>
            <type>text/plain</type>
            <size>24764</size>
            <attacher name="Aaron Colwell">acolwell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzODc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjdmZDYzYTJlMTUxZGMz
ZDZjNWM5YjkyMDIyNTU0NDFmYTIyZWZjYy4uZTZhNTU4Nzg4ZmU2MDlhYmVjYWVhZmViZTU0YjM5
MWY1MDJlYmFiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM4IEBACiAyMDEyLTA0LTExICBBYXJv
biBDb2x3ZWxsICA8YWNvbHdlbGxAY2hyb21pdW0ub3JnPgogCisgICAgICAgIEFkZCB3ZWJraXRT
b3VyY2VBZGRJZCgpICYgd2Via2l0U291cmNlUmVtb3ZlSWQoKSB0byBIVE1MTWVkaWFFbGVtZW50
CisgICAgICAgIGFuZCBwcm9wYWdhdGUgY2FsbHMgdG8gdGhlIE1lZGlhUGxheWVyUHJpdmF0ZSBp
bnRlcmZhY2UuCisgICAgICAgIFRoZXNlIGFyZSBuZWVkZWQgdG8gYnJpbmcgdGhlIE1lZGlhIFNv
dXJjZSBpbXBsZW1lbnRhdGlvbiAKKyAgICAgICAgdXAgdG8gZGF0ZSB3aXRoIHRoZSBuZXcgMC40
IHZlcnNpb24gb2YgdGhlIE1lZGlhIFNvdXJjZSBzcGVjLgorICAgICAgICBodHRwOi8vaHRtbDUt
bWVkaWFzb3VyY2UtYXBpLmdvb2dsZWNvZGUuY29tL3N2bi90YWdzLzAuNC9kcmFmdC1zcGVjL21l
ZGlhc291cmNlLWRyYWZ0LXNwZWMuaHRtbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODM2MTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL21lZGlhL21lZGlhLXNvdXJjZS93ZWJt
L3ZpZGVvLW1lZGlhLXNvdXJjZS1hZGQtYW5kLXJlbW92ZS1pZHMuaHRtbAorCisgICAgICAgICog
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6aXNWYWxpZFNvdXJjZUlkKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OndlYmtpdFNvdXJjZUFkZElkKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OndlYmtpdFNvdXJjZVJlbW92ZUlkKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNldFNvdXJjZVN0YXRlKToKKyAgICAgICAgKiBo
dG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKEhUTUxNZWRpYUVsZW1lbnQpOgorICAg
ICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5pZGw6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TnVsbE1lZGlhUGxheWVy
UHJpdmF0ZTo6c291cmNlQWRkSWQpOgorICAgICAgICAoV2ViQ29yZTo6TnVsbE1lZGlhUGxheWVy
UHJpdmF0ZTo6c291cmNlUmVtb3ZlSWQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllcjo6c291cmNlQWRkSWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXI6OnNvdXJjZVJlbW92ZUlkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJp
dmF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlOjpz
b3VyY2VBZGRJZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVJbnRlcmZh
Y2U6OnNvdXJjZVJlbW92ZUlkKToKKworMjAxMi0wNC0xMSAgQWFyb24gQ29sd2VsbCAgPGFjb2x3
ZWxsQGNocm9taXVtLm9yZz4KKwogICAgICAgICBSZW1vdmUgd2Via2l0IHByZWZpeCBmcm9tIE1l
ZGlhIFNvdXJjZSBydW50aW1lIGZlYXR1cmUgbmFtZS4KICAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgzNjMzCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
aW5kZXggMGYyMjAwODE1MThiZjgxNDU2ZGU1YTBlM2MzY2Q2NmI1NTAxZmI4Ni4uMGI1ZGIyNWU3
NmRiM2Y1NDg3YmQ5MjhlY2UxMGYyMGM0NDE5YzgwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKQEAgLTEsNSArMSwyNSBAQAogMjAxMi0wNC0xMSAgQWFyb24gQ29sd2VsbCAgPGFjb2x3ZWxs
QGNocm9taXVtLm9yZz4KIAorICAgICAgICBBZGQgc291cmNlQWRkSWQoKSAmIHNvdXJjZVJlbW92
ZUlkKCkgc3R1YnMgZm9yIENocm9taXVtLgorICAgICAgICBUaGVzZSBhcmUgbmVlZGVkIHRvIGJy
aW5nIHRoZSBNZWRpYSBTb3VyY2UgaW1wbGVtZW50YXRpb24gCisgICAgICAgIHVwIHRvIGRhdGUg
d2l0aCB0aGUgbmV3IDAuNCB2ZXJzaW9uIG9mIHRoZSBNZWRpYSBTb3VyY2Ugc3BlYy4KKyAgICAg
ICAgaHR0cDovL2h0bWw1LW1lZGlhc291cmNlLWFwaS5nb29nbGVjb2RlLmNvbS9zdm4vdGFncy8w
LjQvZHJhZnQtc3BlYy9tZWRpYXNvdXJjZS1kcmFmdC1zcGVjLmh0bWwKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgzNjE2CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViTWVkaWFQbGF5ZXIu
aDoKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFQbGF5ZXI6OnNvdXJjZUFkZElkKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViTWVkaWFQbGF5ZXI6OnNvdXJjZVJlbW92ZUlkKToKKyAgICAgICAgKiBz
cmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTWVk
aWFQbGF5ZXJDbGllbnRJbXBsOjpzb3VyY2VBZGRJZCk6CisgICAgICAgIChXZWJLaXQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OnNvdXJjZVJlbW92ZUlkKToK
KyAgICAgICAgKiBzcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmg6CisgICAgICAgIChXZWJN
ZWRpYVBsYXllckNsaWVudEltcGwpOgorCisyMDEyLTA0LTExICBBYXJvbiBDb2x3ZWxsICA8YWNv
bHdlbGxAY2hyb21pdW0ub3JnPgorCiAgICAgICAgIFJlbW92ZSB3ZWJraXQgcHJlZml4IGZyb20g
TWVkaWEgU291cmNlIHJ1bnRpbWUgZmVhdHVyZSBuYW1lLgogICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODM2MzMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHAKaW5kZXggMTEzYjIxYzg5ZDQzNjEyZmQ2MjY2MTIwZjg2MDIwNGRl
ZTY5MDUyMC4uMGNjY2NkZjI1OWY2NzU2NzUwZjUwMjUwMGQ4ZjU1ODlhMjgyMTQ5YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0xNjc2LDYgKzE2NzYsMjIg
QEAgU3RyaW5nIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyU291cmNlVVJMKCkgY29uc3QK
IHsKICAgICByZXR1cm4gbV9tZWRpYVNvdXJjZVVSTC5zdHJpbmcoKTsKIH0KKworYm9vbCBIVE1M
TWVkaWFFbGVtZW50Ojppc1ZhbGlkU291cmNlSWQoY29uc3QgU3RyaW5nJiBpZCwgRXhjZXB0aW9u
Q29kZSYgZWMpIGNvbnN0Cit7CisgICAgaWYgKGlkLmlzTnVsbCgpIHx8IGlkLmlzRW1wdHkoKSkg
eworICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKworICAgIGlmICghbV9zb3VyY2VJRHMuY29udGFpbnMoaWQpKSB7CisgICAgICAg
IGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJl
dHVybiB0cnVlOworfQorCiAjZW5kaWYKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpwcm9ncmVz
c0V2ZW50VGltZXJGaXJlZChUaW1lcjxIVE1MTWVkaWFFbGVtZW50PiopCkBAIC0yMTgzLDYgKzIx
OTksNTggQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwYXVzZUludGVybmFsKCkKIH0KIAogI2lm
IEVOQUJMRShNRURJQV9TT1VSQ0UpCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OndlYmtpdFNvdXJj
ZUFkZElkKGNvbnN0IFN0cmluZyYgaWQsIGNvbnN0IFN0cmluZyYgdHlwZSwgRXhjZXB0aW9uQ29k
ZSYgZWMpCit7CisgICAgaWYgKGlkLmlzTnVsbCgpIHx8IGlkLmlzRW1wdHkoKSkgeworICAgICAg
ICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IGlmIChtX3NvdXJjZUlEcy5jb250YWlucyhpZCkpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX1NU
QVRFX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICh0eXBlLmlzTnVsbCgp
IHx8IHR5cGUuaXNFbXB0eSgpKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFtX3BsYXllciB8fCBtX2N1cnJlbnRT
cmMgIT0gbV9tZWRpYVNvdXJjZVVSTCB8fCBtX3NvdXJjZVN0YXRlICE9IFNPVVJDRV9PUEVOKSB7
CisgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBzd2l0Y2ggKG1fcGxheWVyLT5zb3VyY2VBZGRJZChpZCwgdHlwZSkpIHsKKyAgICBj
YXNlIE1lZGlhUGxheWVyOjpBaXNOb0Vycm9yOgorICAgICAgICBtX3NvdXJjZUlEcy5hZGQoaWQp
OworICAgICAgICByZXR1cm47CisgICAgY2FzZSBNZWRpYVBsYXllcjo6QWlzTm90U3VwcG9ydGVk
OgorICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOworICAgICAgICByZXR1cm47CisgICAg
Y2FzZSBNZWRpYVBsYXllcjo6QWlzUmVhY2hlZElkTGltaXQ6CisgICAgICAgIGVjID0gUVVPVEFf
RVhDRUVERURfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZWMgPSBJTlZBTElE
X1NUQVRFX0VSUjsKKyAgICByZXR1cm47Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6d2Vi
a2l0U291cmNlUmVtb3ZlSWQoY29uc3QgU3RyaW5nJiBpZCwgRXhjZXB0aW9uQ29kZSYgZWMpCit7
CisgICAgaWYgKCFpc1ZhbGlkU291cmNlSWQoaWQsIGVjKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgaWYgKCFtX3BsYXllciB8fCBtX2N1cnJlbnRTcmMgIT0gbV9tZWRpYVNvdXJjZVVSTCB8fCBt
X3NvdXJjZVN0YXRlID09IFNPVVJDRV9DTE9TRUQpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX1NU
QVRFX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fcGxheWVyLT5zb3VyY2VS
ZW1vdmVJZChpZCk7CisgICAgbV9zb3VyY2VJRHMucmVtb3ZlKGlkKTsKK30KKwogdm9pZCBIVE1M
TWVkaWFFbGVtZW50Ojp3ZWJraXRTb3VyY2VBcHBlbmQoUGFzc1JlZlB0cjxVaW50OEFycmF5PiBk
YXRhLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAoIW1fcGxheWVyIHx8IG1fY3VycmVu
dFNyYyAhPSBtX21lZGlhU291cmNlVVJMIHx8IG1fc291cmNlU3RhdGUgIT0gU09VUkNFX09QRU4p
IHsKQEAgLTIyMzgsNiArMjMwNiwxMSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFNvdXJj
ZVN0YXRlKFNvdXJjZVN0YXRlIHN0YXRlKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9z
b3VyY2VTdGF0ZSA9PSBTT1VSQ0VfQ0xPU0VEKSB7CisgICAgICAgIGlmIChtX3BsYXllcikgewor
ICAgICAgICAgICAgZm9yIChIYXNoU2V0PFN0cmluZz46Oml0ZXJhdG9yIGkgPSBtX3NvdXJjZUlE
cy5iZWdpbigpOyBpICE9IG1fc291cmNlSURzLmVuZCgpOyArK2kpCisgICAgICAgICAgICAgICAg
bV9wbGF5ZXItPnNvdXJjZVJlbW92ZUlkKCppKTsKKyAgICAgICAgfQorICAgICAgICBtX3NvdXJj
ZUlEcy5jbGVhcigpOwogICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS53ZWJraXRz
b3VyY2VjbG9zZUV2ZW50KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggZDk1ZGNkZDU1ZGFlYmQ2ODliN2RmOTdkZWRkMzhk
MzYwNWFhNTUwOS4uMjZlMmY1NDU2OTM1NDA1MzY3YjM0MzhmYjM3YmNjYTczYTExNzU1NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTE3Miw2ICsxNzIsOCBAQCBw
dWJsaWM6CiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKIC8vICBNZWRpYSBTb3VyY2UuCiAgICAg
Y29uc3QgS1VSTCYgd2Via2l0TWVkaWFTb3VyY2VVUkwoKSBjb25zdCB7IHJldHVybiBtX21lZGlh
U291cmNlVVJMOyB9CisgICAgdm9pZCB3ZWJraXRTb3VyY2VBZGRJZChjb25zdCBTdHJpbmcmLCBj
b25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCB3ZWJraXRTb3VyY2VSZW1v
dmVJZChjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCB3ZWJraXRTb3Vy
Y2VBcHBlbmQoUGFzc1JlZlB0cjxVaW50OEFycmF5PiBkYXRhLCBFeGNlcHRpb25Db2RlJik7CiAg
ICAgZW51bSBFbmRPZlN0cmVhbVN0YXR1cyB7IEVPU19OT19FUlJPUiwgRU9TX05FVFdPUktfRVJS
LCBFT1NfREVDT0RFX0VSUiB9OwogICAgIHZvaWQgd2Via2l0U291cmNlRW5kT2ZTdHJlYW0odW5z
aWduZWQgc2hvcnQsIEV4Y2VwdGlvbkNvZGUmKTsKQEAgLTM5NSw2ICszOTcsNyBAQCBwcml2YXRl
OgogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCiAgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVy
U291cmNlT3BlbmVkKCk7CiAgICAgdmlydHVhbCBTdHJpbmcgbWVkaWFQbGF5ZXJTb3VyY2VVUkwo
KSBjb25zdDsKKyAgICBib29sIGlzVmFsaWRTb3VyY2VJZChjb25zdCBTdHJpbmcmLCBFeGNlcHRp
b25Db2RlJikgY29uc3Q7CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgU3RyaW5nIG1lZGlhUGxheWVy
UmVmZXJyZXIoKSBjb25zdCBPVkVSUklERTsKQEAgLTU1Nyw2ICs1NjAsNyBAQCBwcml2YXRlOgog
I2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCiAgICAgS1VSTCBtX21lZGlhU291cmNlVVJMOwogICAg
IFNvdXJjZVN0YXRlIG1fc291cmNlU3RhdGU7CisgICAgSGFzaFNldDxTdHJpbmc+IG1fc291cmNl
SURzOwogI2VuZGlmCiAKICAgICBtdXRhYmxlIGZsb2F0IG1fY2FjaGVkVGltZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsCmluZGV4IDRlMDZiNTYxZTFlZTVhMDM4NWYx
YWI2NGRlNGNlNDMzNWI3NTVjMzkuLjM5MzNiNDg0YWYxZWQ0M2RmODk1NWVhYThhNjk3YWMzNDgw
Y2IwODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5p
ZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmlkbApAQCAtOTUs
NiArOTUsMTAgQEAgbW9kdWxlIGh0bWwgewogICAgIC8vIFVSTCBwYXNzZWQgdG8gc3JjIGF0dHJp
YnV0ZSB0byBlbmFibGUgdGhlIG1lZGlhIHNvdXJjZSBsb2dpYy4KICAgICByZWFkb25seSBhdHRy
aWJ1dGUgW1Y4RW5hYmxlZEF0UnVudGltZT1tZWRpYVNvdXJjZSwgVVJMXSBET01TdHJpbmcgd2Vi
a2l0TWVkaWFTb3VyY2VVUkw7CiAKKyAgICAvLyBNYW5hZ2VzIElEcyBmb3IgYXBwZW5kaW5nIG1l
ZGlhIHRvIHRoZSBzb3VyY2UuCisgICAgW1Y4RW5hYmxlZEF0UnVudGltZT1tZWRpYVNvdXJjZV0g
dm9pZCB3ZWJraXRTb3VyY2VBZGRJZChpbiBET01TdHJpbmcgaWQsIGluIERPTVN0cmluZyB0eXBl
KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CisgICAgW1Y4RW5hYmxlZEF0UnVudGltZT1tZWRpYVNv
dXJjZV0gdm9pZCB3ZWJraXRTb3VyY2VSZW1vdmVJZChpbiBET01TdHJpbmcgaWQpIHJhaXNlcyAo
RE9NRXhjZXB0aW9uKTsKKwogICAgIC8vIEFwcGVuZHMgbWVkaWEgdG8gdG8gdGhlIHNvdXJjZS4K
ICAgICBbVjhFbmFibGVkQXRSdW50aW1lPW1lZGlhU291cmNlXSB2b2lkIHdlYmtpdFNvdXJjZUFw
cGVuZChpbiBVaW50OEFycmF5IGRhdGEpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IGFi
YzU1NTJjNTIxMWQwMGJhMTI4NjQ5MWZlZTAwMWUyZTVkMzU1ZGQuLmU2N2NlZDIwNmJjNzA4MGI4
MDViYTYzYzIyN2UzMDNiZDkzMTkyN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTE0OSw2ICsxNDksOCBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBib29sIGhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luKCkgY29uc3QgeyByZXR1cm4g
dHJ1ZTsgfQogCiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKKyAgICB2aXJ0dWFsIE1lZGlhUGxh
eWVyOjpBZGRJZFN0YXR1cyBzb3VyY2VBZGRJZChjb25zdCBTdHJpbmcmIGlkLCBjb25zdCBTdHJp
bmcmIHR5cGUpIHsgcmV0dXJuIE1lZGlhUGxheWVyOjpBaXNOb3RTdXBwb3J0ZWQ7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgc291cmNlUmVtb3ZlSWQoY29uc3QgU3RyaW5nJiBpZCkgeyB9CiAgICAgdmly
dHVhbCBib29sIHNvdXJjZUFwcGVuZChjb25zdCB1bnNpZ25lZCBjaGFyKiwgdW5zaWduZWQpIHsg
cmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIHNvdXJjZUVuZE9mU3RyZWFtKE1lZGlh
UGxheWVyOjpFbmRPZlN0cmVhbVN0YXR1cyBzdGF0dXMpIHsgfQogI2VuZGlmCkBAIC00NDksNiAr
NDUxLDE3IEBAIHZvaWQgTWVkaWFQbGF5ZXI6OnBhdXNlKCkKIH0KIAogI2lmIEVOQUJMRShNRURJ
QV9TT1VSQ0UpCisKK01lZGlhUGxheWVyOjpBZGRJZFN0YXR1cyBNZWRpYVBsYXllcjo6c291cmNl
QWRkSWQoY29uc3QgU3RyaW5nJiBpZCwgY29uc3QgU3RyaW5nJiB0eXBlKQoreworICAgIHJldHVy
biBtX3ByaXZhdGUtPnNvdXJjZUFkZElkKGlkLCB0eXBlKTsKK30KKwordm9pZCBNZWRpYVBsYXll
cjo6c291cmNlUmVtb3ZlSWQoY29uc3QgU3RyaW5nJiBpZCkKK3sKKyAgICBtX3ByaXZhdGUtPnNv
dXJjZVJlbW92ZUlkKGlkKTsKK30KKwogYm9vbCBNZWRpYVBsYXllcjo6c291cmNlQXBwZW5kKGNv
bnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKIHsKICAgICByZXR1cm4g
bV9wcml2YXRlLT5zb3VyY2VBcHBlbmQoZGF0YSwgbGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCmluZGV4IDY1Yzc1NTJmYjU3MDdhZTVh
N2FjMGRmZDliNDNiNGIzM2MwYTRlNmMuLjExNGY0ZDE0YTJjYWY3NDE5ZDJjNTJmZTQyNDBkZWZj
NzhiNjI2NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhUGxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXIuaApAQCAtMjIxLDYgKzIyMSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHBhdXNlKCk7ICAg
IAogCiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKKyAgICBlbnVtIEFkZElkU3RhdHVzIHsgQWlz
Tm9FcnJvciwgQWlzTm90U3VwcG9ydGVkLCBBaXNSZWFjaGVkSWRMaW1pdCB9OworICAgIEFkZElk
U3RhdHVzIHNvdXJjZUFkZElkKGNvbnN0IFN0cmluZyYgaWQsIGNvbnN0IFN0cmluZyYgdHlwZSk7
CisgICAgdm9pZCBzb3VyY2VSZW1vdmVJZChjb25zdCBTdHJpbmcmIGlkKTsKICAgICBib29sIHNv
dXJjZUFwcGVuZChjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOwog
ICAgIGVudW0gRW5kT2ZTdHJlYW1TdGF0dXMgeyBFb3NOb0Vycm9yLCBFb3NOZXR3b3JrRXJyb3Is
IEVvc0RlY29kZUVycm9yIH07CiAgICAgdm9pZCBzb3VyY2VFbmRPZlN0cmVhbShFbmRPZlN0cmVh
bVN0YXR1cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllclByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhUGxheWVyUHJpdmF0ZS5oCmluZGV4IDM3OGIyNTllODM1MjA3ZDY3YjIyYWJiOTAzZGVlZjJk
OTRjYzI4YzEuLmYyMWZmZTVlYTk3Mzk5ZmUyY2QxOTc4NzcxYzBhNGE1NWQyNzRkNjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJp
dmF0ZS5oCkBAIC0xNTgsNiArMTU4LDggQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBFTkFCTEUo
TUVESUFfU09VUkNFKQorICAgIHZpcnR1YWwgTWVkaWFQbGF5ZXI6OkFkZElkU3RhdHVzIHNvdXJj
ZUFkZElkKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpIHsgcmV0dXJuIE1lZGlhUGxheWVy
OjpBaXNOb3RTdXBwb3J0ZWQ7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc291cmNlUmVtb3ZlSWQoY29u
c3QgU3RyaW5nJikgeyB9CiAgICAgdmlydHVhbCBib29sIHNvdXJjZUFwcGVuZChjb25zdCB1bnNp
Z25lZCBjaGFyKiwgdW5zaWduZWQpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lk
IHNvdXJjZUVuZE9mU3RyZWFtKE1lZGlhUGxheWVyOjpFbmRPZlN0cmVhbVN0YXR1cykgeyB9Owog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZWRp
YVBsYXllci5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFQbGF5ZXIu
aAppbmRleCAyMDQ5YjU5YjAyYWJlM2ExMDI0MmUyN2VjZTJiYmU3ZjkyN2Y3ZDM3Li44ZDk4YmI1
ODBjMzg0NWMzMDFmNTc2YzI1YzdjZmNiMzlkMDJkNmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZWRpYVBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYk1lZGlhUGxheWVyLmgKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2lu
Y2x1ZGUgIldlYlZpZGVvRnJhbWUuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDYW52YXMuaCIK
KyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJTdHJpbmcuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJW
ZWN0b3IuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC04OSw2ICs5MCwxMiBAQCBwdWJsaWM6
CiAgICAgICAgIEF1dG8sCiAgICAgfTsKIAorICAgIGVudW0gQWRkSWRTdGF0dXMgeworICAgICAg
ICBBaXNOb0Vycm9yLAorICAgICAgICBBaXNOb3RTdXBwb3J0ZWQsCisgICAgICAgIEFpc1JlYWNo
ZWRJZExpbWl0CisgICAgfTsKKwogICAgIGVudW0gRW5kT2ZTdHJlYW1TdGF0dXMgewogICAgICAg
ICBFb3NOb0Vycm9yLAogICAgICAgICBFb3NOZXR3b3JrRXJyb3IsCkBAIC0xNzYsNiArMTgzLDgg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyKiBhdWRpb1Nv
dXJjZVByb3ZpZGVyKCkgeyByZXR1cm4gMDsgfQogCisgICAgdmlydHVhbCBBZGRJZFN0YXR1cyBz
b3VyY2VBZGRJZChjb25zdCBXZWJTdHJpbmcmIGlkLCBjb25zdCBXZWJTdHJpbmcmIHR5cGUpIHsg
cmV0dXJuIEFpc05vdFN1cHBvcnRlZDsgfQorICAgIHZpcnR1YWwgdm9pZCBzb3VyY2VSZW1vdmVJ
ZChjb25zdCBXZWJTdHJpbmcmIGlkKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgc291cmNlQXBwZW5k
KGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkgeyByZXR1cm4gZmFs
c2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgc291cmNlRW5kT2ZTdHJlYW0oRW5kT2ZTdHJlYW1TdGF0
dXMpICB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVk
aWFQbGF5ZXJDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1l
ZGlhUGxheWVyQ2xpZW50SW1wbC5jcHAKaW5kZXggZTIwZjUyZDhiNWZmNDQ2OTEyNDg5YmQwYjZj
MDhhNDlkMmIxNzI2Ni4uZDFkMjgzYzY2ZDBlNDU0ODkzOTdlNTY2Mjc5M2QzMDRhM2FiYjkyOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGll
bnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXll
ckNsaWVudEltcGwuY3BwCkBAIC0yOTIsNiArMjkyLDIyIEBAIHZvaWQgV2ViTWVkaWFQbGF5ZXJD
bGllbnRJbXBsOjpwYXVzZSgpCiB9CiAKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorV2ViQ29y
ZTo6TWVkaWFQbGF5ZXI6OkFkZElkU3RhdHVzIFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6c291
cmNlQWRkSWQoY29uc3QgU3RyaW5nJiBpZCwgY29uc3QgU3RyaW5nJiB0eXBlKQoreworICAgIGlm
ICghbV93ZWJNZWRpYVBsYXllcikKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6Ok1lZGlhUGxheWVy
OjpBaXNOb3RTdXBwb3J0ZWQ7CisKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6TWVk
aWFQbGF5ZXI6OkFkZElkU3RhdHVzPihtX3dlYk1lZGlhUGxheWVyLT5zb3VyY2VBZGRJZChpZCwg
dHlwZSkpOworfQorCit2b2lkIFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6c291cmNlUmVtb3Zl
SWQoY29uc3QgU3RyaW5nJiBpZCkKK3sKKyAgICBpZiAoIW1fd2ViTWVkaWFQbGF5ZXIpCisgICAg
ICAgIHJldHVybjsKKworICAgIG1fd2ViTWVkaWFQbGF5ZXItPnNvdXJjZVJlbW92ZUlkKGlkKTsK
K30KKwogYm9vbCBXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OnNvdXJjZUFwcGVuZChjb25zdCB1
bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCiB7CiAgICAgaWYgKG1fd2ViTWVk
aWFQbGF5ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRp
YVBsYXllckNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlh
UGxheWVyQ2xpZW50SW1wbC5oCmluZGV4IGVlNmJmNTExYTNiZGM2NmMzNjYwOGVhOGFkZGRlYjhl
NWY2MDE0YjcuLmYwMzgwMzcxNzQwNTc5ZWRiM2NlNTMyZGMyMjA5YjhiNmViNmNmYzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1w
bC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50
SW1wbC5oCkBAIC0xNDYsNiArMTQ2LDggQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBFTkFCTEUo
TUVESUFfU09VUkNFKQorICAgIHZpcnR1YWwgV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OkFkZElkU3Rh
dHVzIHNvdXJjZUFkZElkKGNvbnN0IFN0cmluZyYgaWQsIGNvbnN0IFN0cmluZyYgdHlwZSk7Cisg
ICAgdmlydHVhbCB2b2lkIHNvdXJjZVJlbW92ZUlkKGNvbnN0IFN0cmluZyYpOwogICAgIHZpcnR1
YWwgYm9vbCBzb3VyY2VBcHBlbmQoY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQg
bGVuZ3RoKTsKICAgICB2aXJ0dWFsIHZvaWQgc291cmNlRW5kT2ZTdHJlYW0oV2ViQ29yZTo6TWVk
aWFQbGF5ZXI6OkVuZE9mU3RyZWFtU3RhdHVzKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDA0OGQ0YTQ4ODRk
MmQxMDg0NjQ2NDkyMmIwYTFmMmM2NmRhNTliNDQuLmQ5YTIyNjUzYTQ0YmJiYWJiOTBkYWRjOGIx
ODRhODQzYTFmODVjZWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wNC0xMSAgQWFyb24g
Q29sd2VsbCAgPGFjb2x3ZWxsQGNocm9taXVtLm9yZz4KKworICAgICAgICBBZGQgTGF5b3V0VGVz
dHMgZm9yIG5ldyB3ZWJraXRTb3VyY2VBZGRJZCgpICYgd2Via2l0U291cmNlUmVtb3ZlSWQoKSBt
ZXRob2RzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODM2MTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IGh0dHAvdGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL3dlYm0vdmlkZW8tbWVkaWEtc291cmNlLWFk
ZC1hbmQtcmVtb3ZlLWlkcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVz
dHMvbWVkaWEvbWVkaWEtc291cmNlL3dlYm0vdmlkZW8tbWVkaWEtc291cmNlLWFkZC1hbmQtcmVt
b3ZlLWlkcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4
cGVjdGF0aW9ucy50eHQ6CisKIDIwMTItMDQtMTEgIEFudG9uIE11aGluICA8YW50b25tQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBXaWRlciBzdXBwcmVzc2lvbi4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL3dlYm0vdmlkZW8tbWVkaWEtc291
cmNlLWFkZC1hbmQtcmVtb3ZlLWlkcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL21lZGlhL21lZGlhLXNvdXJjZS93ZWJtL3ZpZGVvLW1lZGlhLXNvdXJjZS1hZGQtYW5kLXJl
bW92ZS1pZHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYxNzYyNzEzNWIxNjFlZGFlNTJlZjdk
NTMwMDdiMGU4MDBmOTRlZTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL21lZGlhL21lZGlhLXNvdXJjZS93ZWJtL3ZpZGVvLW1lZGlhLXNvdXJjZS1hZGQtYW5kLXJl
bW92ZS1pZHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTYgQEAKK1Rlc3RzIHdlYmtpdFNvdXJj
ZUFkZElkKCkgJiB3ZWJraXRTb3VyY2VSZW1vdmVJZCgpIG1ldGhvZHMKKworCitydW5uaW5nIHRl
c3RBZGRJZEZhaWx1cmVDYXNlcworRVZFTlQobG9hZHN0YXJ0KQorRVZFTlQod2Via2l0c291cmNl
b3BlbikKKworcnVubmluZyB0ZXN0UmVtb3ZlSWRGYWlsdXJlQ2FzZXMKK0VWRU5UKGxvYWRzdGFy
dCkKK0VWRU5UKHdlYmtpdHNvdXJjZW9wZW4pCisKK3J1bm5pbmcgdGVzdEFwcGVuZEZhaWx1cmVD
YXNlcworRVZFTlQobG9hZHN0YXJ0KQorRVZFTlQod2Via2l0c291cmNlb3BlbikKK0VORCBPRiBU
RVNUCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbWVkaWEvbWVkaWEtc291
cmNlL3dlYm0vdmlkZW8tbWVkaWEtc291cmNlLWFkZC1hbmQtcmVtb3ZlLWlkcy5odG1sIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2Uvd2VibS92aWRlby1tZWRpYS1z
b3VyY2UtYWRkLWFuZC1yZW1vdmUtaWRzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTdiOWI4OTU2Njk5OTRh
M2FhNzIyNjE0NWJmZmUyZjdlZmIzMWVlNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL3dlYm0vdmlkZW8tbWVkaWEtc291cmNlLWFk
ZC1hbmQtcmVtb3ZlLWlkcy5odG1sCkBAIC0wLDAgKzEsMTk4IEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vbWVkaWEt
cmVzb3VyY2VzL3ZpZGVvLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0i
d2VibS1tZWRpYS1zb3VyY2UuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAg
ICAgICAgdmFyIERFRkFVTFRfU09VUkNFX01JTUVUWVBFID0gInZpZGVvL3dlYm07IGNvZGVjcz1c
InZwOCwgdm9yYmlzXCIiOworCisgICAgICAgICAgICBmdW5jdGlvbiBydW5PblNvdXJjZU9wZW4o
dmlkZW9UYWcsIG9uT3BlbkZ1bmN0aW9uKSB7CisgICAgICAgICAgICAgICAgdmFyIGV2ZW50SGFu
ZGxlckZ1bmN0aW9uID0gZnVuY3Rpb24gKGV2ZW50KSB7CisgICAgICAgICAgICAgICAgICAgIGV2
ZW50LnRhcmdldC5yZW1vdmVFdmVudExpc3RlbmVyKCd3ZWJraXRzb3VyY2VvcGVuJywgZXZlbnRI
YW5kbGVyRnVuY3Rpb24pOworICAgICAgICAgICAgICAgICAgICBvbk9wZW5GdW5jdGlvbihldmVu
dC50YXJnZXQpOworICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgdmlkZW9UYWcu
YWRkRXZlbnRMaXN0ZW5lcignd2Via2l0c291cmNlb3BlbicsIGV2ZW50SGFuZGxlckZ1bmN0aW9u
KTsKKyAgICAgICAgICAgICAgICBzZXRTcmNUb01lZGlhU291cmNlVVJMKHZpZGVvVGFnKTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGluZGV4IG9mIHRoZSBuZXh0IGNsdXN0
ZXIgdG8gc2VuZCB0byBhcHBlbmREYXRhKCkuCisgICAgICAgICAgICB2YXIgbmV4dENsdXN0ZXJJ
bmRleCA9IDA7CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGV4cGVjdEV4Y2VwdGlvbk9uQWRkSWQo
dmlkZW9UYWcsIGlkLCB0eXBlLCBlcnJvcikgeworICAgICAgICAgICAgICAgIHRyeSB7CisgICAg
ICAgICAgICAgICAgICAgIHZpZGVvVGFnLndlYmtpdFNvdXJjZUFkZElkKGlkLCB0eXBlKTsKKyAg
ICAgICAgICAgICAgICAgICAgZmFpbFRlc3QoIkV4cGVjdGVkIGFuIGV4Y2VwdGlvbiIpOworICAg
ICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCEoZS5j
b2RlID09IGVycm9yKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgZmFpbFRlc3QoIlVuZXhw
ZWN0ZWQgZXhjZXB0aW9uICIgKyBlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IGU7
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGV4cGVjdEV4Y2VwdGlvbk9uUmVtb3ZlSWQodmlkZW9U
YWcsIGlkLCBlcnJvcikgeworICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAg
ICAgIHZpZGVvVGFnLndlYmtpdFNvdXJjZVJlbW92ZUlkKGlkKTsKKyAgICAgICAgICAgICAgICAg
ICAgZmFpbFRlc3QoIkV4cGVjdGVkIGFuIGV4Y2VwdGlvbiIpOworICAgICAgICAgICAgICAgIH0g
Y2F0Y2ggKGUpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCEoZS5jb2RlID09IGVycm9yKSkg
eworICAgICAgICAgICAgICAgICAgICAgICAgZmFpbFRlc3QoIlVuZXhwZWN0ZWQgZXhjZXB0aW9u
ICIgKyBlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IGU7CisgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGZ1bmN0aW9uIGV4cGVjdEV4Y2VwdGlvbk9uQXBwZW5kKHZpZGVvVGFnLCBpZCwgYnVmLCBlcnJv
cikgeworICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIHZpZGVvVGFn
LndlYmtpdFNvdXJjZUFwcGVuZChpZCwgYnVmKTsKKyAgICAgICAgICAgICAgICAgICAgZmFpbFRl
c3QoIkV4cGVjdGVkIGFuIGV4Y2VwdGlvbiIpOworICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUp
IHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCEoZS5jb2RlID09IGVycm9yKSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgZmFpbFRlc3QoIlVuZXhwZWN0ZWQgZXhjZXB0aW9uICIgKyBlKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IGU7CisgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9u
IHRlc3RBZGRJZEZhaWx1cmVDYXNlcyh2aWRlb1RhZykgeworICAgICAgICAgICAgICAgIC8vIFRl
c3QgYWRkaW5nIHdoaWxlIGNsb3NlZC4KKyAgICAgICAgICAgICAgICBleHBlY3RFeGNlcHRpb25P
bkFkZElkKHZpZGVvVGFnLCAiMTIzIiwgREVGQVVMVF9TT1VSQ0VfTUlNRVRZUEUsIERPTUV4Y2Vw
dGlvbi5JTlZBTElEX1NUQVRFX0VSUik7CisKKyAgICAgICAgICAgICAgICBydW5PblNvdXJjZU9w
ZW4odmlkZW9UYWcsIGZ1bmN0aW9uICh2dCkgeworICAgICAgICAgICAgICAgICAgICAvLyBUZXN0
IGVtcHR5IElEIGNhc2UKKyAgICAgICAgICAgICAgICAgICAgZXhwZWN0RXhjZXB0aW9uT25BZGRJ
ZCh2aWRlb1RhZywgIiIsIERFRkFVTFRfU09VUkNFX01JTUVUWVBFLCBET01FeGNlcHRpb24uSU5W
QUxJRF9BQ0NFU1NfRVJSKTsKKworICAgICAgICAgICAgICAgICAgICB2aWRlb1RhZy53ZWJraXRT
b3VyY2VBZGRJZCgiMTIzIiwgREVGQVVMVF9TT1VSQ0VfTUlNRVRZUEUpOworCisgICAgICAgICAg
ICAgICAgICAgIC8vIFRlc3QgYWRkaW5nIHRoZSBzYW1lIElEIGFnYWluLgorICAgICAgICAgICAg
ICAgICAgICBleHBlY3RFeGNlcHRpb25PbkFkZElkKHZpZGVvVGFnLCAiMTIzIiwgREVGQVVMVF9T
T1VSQ0VfTUlNRVRZUEUsIERPTUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VSUik7CisgICAgICAg
ICAgICAgICAgICAgIHZpZGVvVGFnLndlYmtpdFNvdXJjZVJlbW92ZUlkKCIxMjMiKTsKKworICAg
ICAgICAgICAgICAgICAgICAvLyBUZXN0IGVtcHR5IHR5cGUuCisgICAgICAgICAgICAgICAgICAg
IGV4cGVjdEV4Y2VwdGlvbk9uQWRkSWQodmlkZW9UYWcsICIyMzQiLCAiIiwgRE9NRXhjZXB0aW9u
LklOVkFMSURfQUNDRVNTX0VSUik7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gVGVzdCBhbiB1
bnN1cHBvcnRlZCB0eXBlLgorICAgICAgICAgICAgICAgICAgICBleHBlY3RFeGNlcHRpb25PbkFk
ZElkKHZpZGVvVGFnLCAiMjM0IiwgImF1ZGlvL3dhdiIsIERPTUV4Y2VwdGlvbi5OT1RfU1VQUE9S
VEVEX0VSUik7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gVGVzdCByZWFjaGluZyBzb3VyY2VJ
RCBsaW1pdC4KKyAgICAgICAgICAgICAgICAgICAgdmFyIHJlYWNoZWRJZExpbWl0ID0gZmFsc2U7
CisgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMjA7ICsraSkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgdmFyIHNvdXJjZUlEID0gInNvdXJjZUlELSIgKyBpOworICAg
ICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2
aWRlb1RhZy53ZWJraXRTb3VyY2VBZGRJZChzb3VyY2VJRCwgREVGQVVMVF9TT1VSQ0VfTUlNRVRZ
UEUpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKGUuY29kZSAhPSBET01FeGNlcHRpb24uUVVPVEFfRVhDRUVERURf
RVJSKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhaWxUZXN0KCJVbmV4cGVj
dGVkIGV4Y2VwdGlvbiAiICsgZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRo
cm93IGU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJlYWNoZWRJZExpbWl0ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAgICAgICAgIGlmICghcmVhY2hlZElkTGltaXQpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGZhaWxUZXN0KCJGYWlsZWQgdG8gcmVhY2ggU291cmNlSUQgbGlt
aXQuIik7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgICAgICAgICAvLyBUZXN0IHRoYXQgU291cmNlSURzIGNhbid0
IGJlIGFkZGVkIHdoaWxlIGluIHRoZSBlbmRlZCBzdGF0ZS4KKyAgICAgICAgICAgICAgICAgICAg
dmlkZW9UYWcud2Via2l0U291cmNlRW5kT2ZTdHJlYW0odmlkZW9UYWcuRU9TX05PX0VSUk9SKTsK
KyAgICAgICAgICAgICAgICAgICAgZXhwZWN0RXhjZXB0aW9uT25BZGRJZCh2aWRlb1RhZywgIjEy
MyIsIERFRkFVTFRfU09VUkNFX01JTUVUWVBFLCBET01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9F
UlIpOworCisgICAgICAgICAgICAgICAgICAgIHJ1bk5leHRUZXN0Q2FzZSh2aWRlb1RhZyk7Cisg
ICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9u
IHRlc3RSZW1vdmVJZEZhaWx1cmVDYXNlcyh2aWRlb1RhZykgeworICAgICAgICAgICAgICAgIHJ1
bk9uU291cmNlT3Blbih2aWRlb1RhZywgZnVuY3Rpb24gKHZ0KSB7CisgICAgICAgICAgICAgICAg
ICAgIC8vIFRlc3QgZW1wdHkgSUQgY2FzZQorICAgICAgICAgICAgICAgICAgICBleHBlY3RFeGNl
cHRpb25PblJlbW92ZUlkKHZpZGVvVGFnLCAiIiwgRE9NRXhjZXB0aW9uLklOVkFMSURfQUNDRVNT
X0VSUik7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gVGVzdCByZW1vdmluZyBhbmQgSUQgdGhh
dCB3YXMgbmV2ZXIgYWRkZWQuCisgICAgICAgICAgICAgICAgICAgIGV4cGVjdEV4Y2VwdGlvbk9u
UmVtb3ZlSWQodmlkZW9UYWcsICIzNDUiLCBET01FeGNlcHRpb24uU1lOVEFYX0VSUik7CisKKyAg
ICAgICAgICAgICAgICAgICAgdmlkZW9UYWcud2Via2l0U291cmNlQWRkSWQoIjEyMyIsIERFRkFV
TFRfU09VUkNFX01JTUVUWVBFKTsKKyAgICAgICAgICAgICAgICAgICAgdmlkZW9UYWcud2Via2l0
U291cmNlUmVtb3ZlSWQoIjEyMyIpOworICAgICAgICAgICAgICAgICAgICBleHBlY3RFeGNlcHRp
b25PblJlbW92ZUlkKHZpZGVvVGFnLCAiMTIzIiwgRE9NRXhjZXB0aW9uLlNZTlRBWF9FUlIpOwor
CisgICAgICAgICAgICAgICAgICAgIC8vIFRlc3QgYWRkaW5nIHRoZSBzYW1lIElEIGFnYWluLgor
ICAgICAgICAgICAgICAgICAgICB2aWRlb1RhZy53ZWJraXRTb3VyY2VBZGRJZCgiMTIzIiwgREVG
QVVMVF9TT1VSQ0VfTUlNRVRZUEUpOworCisgICAgICAgICAgICAgICAgICAgIC8vIFRlc3QgdGhh
dCBhbiBJRCBjYW4gYmUgcmVtb3ZlZCB3aGlsZSBpbiB0aGUgZW5kZWQgc3RhdGUuCisgICAgICAg
ICAgICAgICAgICAgIHZpZGVvVGFnLndlYmtpdFNvdXJjZUVuZE9mU3RyZWFtKHZpZGVvVGFnLkVP
U19OT19FUlJPUik7CisgICAgICAgICAgICAgICAgICAgIHZpZGVvVGFnLndlYmtpdFNvdXJjZVJl
bW92ZUlkKCIxMjMiKTsKKworICAgICAgICAgICAgICAgICAgICBydW5OZXh0VGVzdENhc2Uodmlk
ZW9UYWcpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBmdW5jdGlvbiB0ZXN0QXBwZW5kRmFpbHVyZUNhc2VzKHZpZGVvVGFnKSB7CisgICAgICAgICAg
ICAgICAgcnVuT25Tb3VyY2VPcGVuKHZpZGVvVGFnLCBmdW5jdGlvbiAodnQpIHsKKyAgICAgICAg
ICAgICAgICAgICAgdmlkZW9UYWcud2Via2l0U291cmNlQWRkSWQoIjEyMyIsIERFRkFVTFRfU09V
UkNFX01JTUVUWVBFKTsKKworICAgICAgICAgICAgICAgICAgICAvLyBUZXN0IGFwcGVuZCB3aXRo
IGVtcHR5IElELgorICAgICAgICAgICAgICAgICAgICBleHBlY3RFeGNlcHRpb25PbkFwcGVuZCh2
aWRlb1RhZywgIiIsIGdldEhlYWRlcnMoKSwgRE9NRXhjZXB0aW9uLklOVkFMSURfQUNDRVNTX0VS
Uik7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gVGVzdCBhcHBlbmQgd2l0aCBhbiBpbnZhbGlk
IElECisgICAgICAgICAgICAgICAgICAgIGV4cGVjdEV4Y2VwdGlvbk9uQXBwZW5kKHZpZGVvVGFn
LCAiMjM0IiwgZ2V0SGVhZGVycygpLCBET01FeGNlcHRpb24uU1lOVEFYX0VSUik7CisKKyAgICAg
ICAgICAgICAgICAgICAgLy8gVGVzdCBhcHBlbmQgd2l0aCBhIG51bGwgYnVmZmVyLgorICAgICAg
ICAgICAgICAgICAgICBleHBlY3RFeGNlcHRpb25PbkFwcGVuZCh2aWRlb1RhZywgIjEyMyIsIG51
bGwsIERPTUV4Y2VwdGlvbi5JTlZBTElEX0FDQ0VTU19FUlIpOworCisgICAgICAgICAgICAgICAg
ICAgIC8vIFRlc3QgYSBzdWNjZXNzZnVsIGFwcGVuZC4KKyAgICAgICAgICAgICAgICAgICAgdmlk
ZW9UYWcud2Via2l0U291cmNlQXBwZW5kKCIxMjMiLCBnZXRIZWFkZXJzKCkpOworCisgICAgICAg
ICAgICAgICAgICAgIHZpZGVvVGFnLndlYmtpdFNvdXJjZVJlbW92ZUlkKCIxMjMiKTsKKyAgICAg
ICAgICAgICAgICAgICAgZXhwZWN0RXhjZXB0aW9uT25BcHBlbmQodmlkZW9UYWcsICIxMjMiLCBn
ZXRDbHVzdGVyKDApLCBET01FeGNlcHRpb24uU1lOVEFYX0VSUik7CisKKyAgICAgICAgICAgICAg
ICAgICAgcnVuTmV4dFRlc3RDYXNlKHZpZGVvVGFnKTsKKyAgICAgICAgICAgICAgICB9KTsKKwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgdGVzdENhc2VzID0gWworICAgICAgICAg
ICAgICAgICd0ZXN0QWRkSWRGYWlsdXJlQ2FzZXMnLAorICAgICAgICAgICAgICAgICd0ZXN0UmVt
b3ZlSWRGYWlsdXJlQ2FzZXMnLAorICAgICAgICAgICAgICAgICd0ZXN0QXBwZW5kRmFpbHVyZUNh
c2VzJywKKyAgICAgICAgICAgIF07CisKKyAgICAgICAgICAgIHZhciB0ZXN0Q2FzZUluZGV4ID0g
MDsKKworICAgICAgICAgICAgZnVuY3Rpb24gcnVuTmV4dFRlc3RDYXNlKHZpZGVvVGFnKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmICh0ZXN0Q2FzZUluZGV4ID49IHRlc3RDYXNl
cy5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgICAgICAgZW5kVGVzdCgpOworICAgICAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgdmFy
IGZ1bmN0aW9uTmFtZSA9IHRlc3RDYXNlc1t0ZXN0Q2FzZUluZGV4XTsKKyAgICAgICAgICAgICAg
ICB2YXIgdGVzdENhc2VGdW5jdGlvbiA9IGV2YWwoZnVuY3Rpb25OYW1lKTsKKyAgICAgICAgICAg
ICAgICB0ZXN0Q2FzZUluZGV4Kys7CisKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIp
OworICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgicnVubmluZyAiICsgZnVuY3Rpb25OYW1l
KTsKKyAgICAgICAgICAgICAgICB0ZXN0Q2FzZUZ1bmN0aW9uKHZpZGVvVGFnKTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBmaW5kTWVkaWFFbGVtZW50KCk7CisKKyAgICAgICAgICAgICAgICB3YWl0
Rm9yRXZlbnQoJ2xvYWRzdGFydCcpOworICAgICAgICAgICAgICAgIHdhaXRGb3JFdmVudCgnd2Vi
a2l0c291cmNlb3BlbicpOworCisgICAgICAgICAgICAgICAgbG9hZFdlYk1EYXRhKGZ1bmN0aW9u
KHN1Y2Nlc3MpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFzdWNjZXNzKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBmYWlsVGVzdCgiRmFpbGVkIHRvIGxvYWQgV2ViTSBkYXRhIik7Cisg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgICAgcnVuTmV4dFRlc3RDYXNlKHZpZGVvKTsKKyAgICAgICAgICAgICAg
ICB9KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAg
IDxib2R5IG9ubG9hZD0ib25Mb2FkKCkiPgorICAgICAgICA8dmlkZW8+IDwvdmlkZW8+CisgICAg
ICAgIDxwPlRlc3RzIHdlYmtpdFNvdXJjZUFkZElkKCkgJmFtcDsgd2Via2l0U291cmNlUmVtb3Zl
SWQoKSBtZXRob2RzPC9wPgorICAgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dCBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAppbmRleCBhYjU2OWRm
NzZjYzU2OWQ5ZmNhOTg3ZmY4MWVjMjdmYzA3NGJiYTFhLi43OWNhMTU5YjA2NTJjZmNkZGVlODZl
YzIyM2Y1OTVmZDhhY2ZkNjk4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CkBAIC0zODA1LDYgKzM4MDUsOSBAQCBCVUdDUjEy
MjQ0OCA6IG1lZGlhL3ZpZGVvLXNlZWstcGFzdC1lbmQtcGF1c2VkLmh0bWwgPSBQQVNTIFRFWFQK
IAogQlVHQ1IxMjI0NjIgV0lOIExJTlVYIDogaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdC1l
bGVtZW50Lmh0bWwgPSBURVhUCiAKKy8vIFRlbXBvcmFyaWx5IGRpc2FibGVkIHVudGlsIENocm9t
aXVtIHNvdXJjZUFkZElkKCkgJiBzb3VyY2VSZW1vdmVJZCgpIGNvZGUgaGFzIGJlZW4gY2hlY2tl
ZCBpbi4KK0JVR1dLODM2MTYgU0tJUCA6IGh0dHAvdGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL3dl
Ym0vdmlkZW8tbWVkaWEtc291cmNlLWFkZC1hbmQtcmVtb3ZlLWlkcy5odG1sID0gRkFJTAorCiBC
VUdXSzgzNTAzIExJTlVYIERFQlVHIDogcGx1Z2lucy9pbm5lci1odG1sLWRpc3BsYXktbm9uZS5o
dG1sID0gQ1JBU0gKIAogQlVHV0s4MzYyNCBXSU4gOiBwbHVnaW5zL25ldHNjYXBlLWRvbS1hY2Nl
c3MtYW5kLXJlbG9hZC5odG1sID0gVEVYVAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137147</attachid>
            <date>2012-04-13 14:07:45 -0700</date>
            <delta_ts>2012-04-16 10:21:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83616-20120413140744.patch</filename>
            <type>text/plain</type>
            <size>26283</size>
            <attacher name="Aaron Colwell">acolwell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE0MTY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTVlOWU2NTczYzc4ZDc5
ZTdhM2VmZDI4MjNkMTdkNTUzZTgwYjlhMC4uNzBjNGFlNTU1ZDIwMDk2M2RmNWY2YjU3MGE4MDgx
Y2MyOTQ5ZTFkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEyLTA0LTEzICBBYXJv
biBDb2x3ZWxsICA8YWNvbHdlbGxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEFkZCB3ZWJraXRT
b3VyY2VBZGRJZCgpICYgd2Via2l0U291cmNlUmVtb3ZlSWQoKSB0byBIVE1MTWVkaWFFbGVtZW50
CisgICAgICAgIGFuZCBwcm9wYWdhdGUgY2FsbHMgdG8gdGhlIE1lZGlhUGxheWVyUHJpdmF0ZSBp
bnRlcmZhY2UuCisgICAgICAgIFRoZXNlIGFyZSBuZWVkZWQgdG8gYnJpbmcgdGhlIE1lZGlhIFNv
dXJjZSBpbXBsZW1lbnRhdGlvbiAKKyAgICAgICAgdXAgdG8gZGF0ZSB3aXRoIHRoZSBuZXcgMC40
IHZlcnNpb24gb2YgdGhlIE1lZGlhIFNvdXJjZSBzcGVjLgorICAgICAgICBodHRwOi8vaHRtbDUt
bWVkaWFzb3VyY2UtYXBpLmdvb2dsZWNvZGUuY29tL3N2bi90YWdzLzAuNC9kcmFmdC1zcGVjL21l
ZGlhc291cmNlLWRyYWZ0LXNwZWMuaHRtbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODM2MTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL21lZGlhL21lZGlhLXNvdXJjZS93ZWJt
L3ZpZGVvLW1lZGlhLXNvdXJjZS1hZGQtYW5kLXJlbW92ZS1pZHMuaHRtbAorCisgICAgICAgICog
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6aXNWYWxpZFNvdXJjZUlkKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OndlYmtpdFNvdXJjZUFkZElkKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OndlYmtpdFNvdXJjZVJlbW92ZUlkKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNldFNvdXJjZVN0YXRlKToKKyAgICAgICAgKiBo
dG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKEhUTUxNZWRpYUVsZW1lbnQpOgorICAg
ICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5pZGw6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TnVsbE1lZGlhUGxheWVy
UHJpdmF0ZTo6c291cmNlQWRkSWQpOgorICAgICAgICAoV2ViQ29yZTo6TnVsbE1lZGlhUGxheWVy
UHJpdmF0ZTo6c291cmNlUmVtb3ZlSWQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllcjo6c291cmNlQWRkSWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXI6OnNvdXJjZVJlbW92ZUlkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJp
dmF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlOjpz
b3VyY2VBZGRJZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVJbnRlcmZh
Y2U6OnNvdXJjZVJlbW92ZUlkKToKKwogMjAxMi0wNC0xMyAgSmFtZXMgUm9iaW5zb24gIDxqYW1l
c3JAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gTW92ZSBXZWJWaWRlb0ZyYW1l
IGludG8gUGxhdGZvcm0gYW5kIHJlbW92ZSBXZWJDb3JlOjpWaWRlb0ZyYW1lQ2hyb21pdW0gd3Jh
cHBlciBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggOWFlN2MxZjA5N2FkZjJlMmY1
YzFiZmViMGI1MzBkYTQ1YTMxZWNhZC4uMTM2NjQ2YzE0MWE4MzZhYzI5MTExMThmM2E0NTRkMDkw
N2RmOGJlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAx
Mi0wNC0xMyAgQWFyb24gQ29sd2VsbCAgPGFjb2x3ZWxsQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBBZGQgc291cmNlQWRkSWQoKSAmIHNvdXJjZVJlbW92ZUlkKCkgc3R1YnMgZm9yIENocm9taXVt
LgorICAgICAgICBUaGVzZSBhcmUgbmVlZGVkIHRvIGJyaW5nIHRoZSBNZWRpYSBTb3VyY2UgaW1w
bGVtZW50YXRpb24gCisgICAgICAgIHVwIHRvIGRhdGUgd2l0aCB0aGUgbmV3IDAuNCB2ZXJzaW9u
IG9mIHRoZSBNZWRpYSBTb3VyY2Ugc3BlYy4KKyAgICAgICAgaHR0cDovL2h0bWw1LW1lZGlhc291
cmNlLWFwaS5nb29nbGVjb2RlLmNvbS9zdm4vdGFncy8wLjQvZHJhZnQtc3BlYy9tZWRpYXNvdXJj
ZS1kcmFmdC1zcGVjLmh0bWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTgzNjE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBwdWJsaWMvV2ViTWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
TWVkaWFQbGF5ZXI6OnNvdXJjZUFkZElkKToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFQbGF5
ZXI6OnNvdXJjZVJlbW92ZUlkKToKKyAgICAgICAgKiBzcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJ
bXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpzb3Vy
Y2VBZGRJZCk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVBs
YXllckNsaWVudEltcGw6OnNvdXJjZVJlbW92ZUlkKToKKyAgICAgICAgKiBzcmMvV2ViTWVkaWFQ
bGF5ZXJDbGllbnRJbXBsLmg6CisgICAgICAgIChXZWJNZWRpYVBsYXllckNsaWVudEltcGwpOgor
CiAyMDEyLTA0LTEzICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgW2Nocm9taXVtXSBNb3ZlIFdlYlZpZGVvRnJhbWUgaW50byBQbGF0Zm9ybSBhbmQgcmVt
b3ZlIFdlYkNvcmU6OlZpZGVvRnJhbWVDaHJvbWl1bSB3cmFwcGVyIEFQSQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggYTdhYmU2NTBlMzY5ZTRhMWYyOTk1NmYx
ODZiYmU5N2ZmMWMwZDQ0MC4uNTliNTY3NTA0NGM1ZGRkNTJhMWRiY2UyODI5NDE1YmU4OTk5OGQx
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0xNjg3LDYg
KzE2ODcsMjIgQEAgU3RyaW5nIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyU291cmNlVVJM
KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9tZWRpYVNvdXJjZVVSTC5zdHJpbmcoKTsKIH0KKwor
Ym9vbCBIVE1MTWVkaWFFbGVtZW50Ojppc1ZhbGlkU291cmNlSWQoY29uc3QgU3RyaW5nJiBpZCwg
RXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0Cit7CisgICAgaWYgKGlkLmlzTnVsbCgpIHx8IGlkLmlz
RW1wdHkoKSkgeworICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghbV9zb3VyY2VJRHMuY29udGFpbnMoaWQpKSB7
CisgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KworICAgIHJldHVybiB0cnVlOworfQorCiAjZW5kaWYKIAogI2lmIEVOQUJMRShFTkNSWVBURURf
TUVESUEpCkBAIC0yMjc0LDYgKzIyOTAsNTkgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwYXVz
ZUludGVybmFsKCkKIH0KIAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCit2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OndlYmtpdFNvdXJjZUFkZElkKGNvbnN0IFN0cmluZyYgaWQsIGNvbnN0IFN0cmlu
ZyYgdHlwZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKGlkLmlzTnVsbCgpIHx8IGlk
LmlzRW1wdHkoKSkgeworICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIGlmIChtX3NvdXJjZUlEcy5jb250YWlucyhpZCkpIHsKKyAg
ICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGlmICh0eXBlLmlzTnVsbCgpIHx8IHR5cGUuaXNFbXB0eSgpKSB7CisgICAgICAgIGVjID0g
SU5WQUxJRF9BQ0NFU1NfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFt
X3BsYXllciB8fCBtX2N1cnJlbnRTcmMgIT0gbV9tZWRpYVNvdXJjZVVSTCB8fCBtX3NvdXJjZVN0
YXRlICE9IFNPVVJDRV9PUEVOKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzd2l0Y2ggKG1fcGxheWVyLT5zb3VyY2VBZGRJ
ZChpZCwgdHlwZSkpIHsKKyAgICBjYXNlIE1lZGlhUGxheWVyOjpPazoKKyAgICAgICAgbV9zb3Vy
Y2VJRHMuYWRkKGlkKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgTWVkaWFQbGF5ZXI6Ok5v
dFN1cHBvcnRlZDoKKyAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKKyAgICAgICAgcmV0
dXJuOworICAgIGNhc2UgTWVkaWFQbGF5ZXI6OlJlYWNoZWRJZExpbWl0OgorICAgICAgICBlYyA9
IFFVT1RBX0VYQ0VFREVEX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OndlYmtpdFNvdXJj
ZVJlbW92ZUlkKGNvbnN0IFN0cmluZyYgaWQsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlm
ICghaXNWYWxpZFNvdXJjZUlkKGlkLCBlYykpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICgh
bV9wbGF5ZXIgfHwgbV9jdXJyZW50U3JjICE9IG1fbWVkaWFTb3VyY2VVUkwgfHwgbV9zb3VyY2VT
dGF0ZSA9PSBTT1VSQ0VfQ0xPU0VEKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIW1fcGxheWVyLT5zb3VyY2VSZW1v
dmVJZChpZCkpCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworCisgICAgbV9zb3VyY2VJ
RHMucmVtb3ZlKGlkKTsKK30KKwogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp3ZWJraXRTb3VyY2VB
cHBlbmQoUGFzc1JlZlB0cjxVaW50OEFycmF5PiBkYXRhLCBFeGNlcHRpb25Db2RlJiBlYykKIHsK
ICAgICBpZiAoIW1fcGxheWVyIHx8IG1fY3VycmVudFNyYyAhPSBtX21lZGlhU291cmNlVVJMIHx8
IG1fc291cmNlU3RhdGUgIT0gU09VUkNFX09QRU4pIHsKQEAgLTIzMjksNiArMjM5OCw3IEBAIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0U291cmNlU3RhdGUoU291cmNlU3RhdGUgc3RhdGUpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX3NvdXJjZVN0YXRlID09IFNPVVJDRV9DTE9TRUQp
IHsKKyAgICAgICAgbV9zb3VyY2VJRHMuY2xlYXIoKTsKICAgICAgICAgc2NoZWR1bGVFdmVudChl
dmVudE5hbWVzKCkud2Via2l0c291cmNlY2xvc2VFdmVudCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IDAzYWNlMjgyOTg0
ZTQyN2IwYTRhZmRjNWQ1NGU2NTcwNWYxODcxMDIuLjM3N2FkZWEwZmE0MWMzNjAyYjY2OTg1NzM3
NjUwMWY3ZTFjZWQ1MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBA
IC0xNzIsNiArMTcyLDggQEAgcHVibGljOgogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCiAvLyAg
TWVkaWEgU291cmNlLgogICAgIGNvbnN0IEtVUkwmIHdlYmtpdE1lZGlhU291cmNlVVJMKCkgY29u
c3QgeyByZXR1cm4gbV9tZWRpYVNvdXJjZVVSTDsgfQorICAgIHZvaWQgd2Via2l0U291cmNlQWRk
SWQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZv
aWQgd2Via2l0U291cmNlUmVtb3ZlSWQoY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOwog
ICAgIHZvaWQgd2Via2l0U291cmNlQXBwZW5kKFBhc3NSZWZQdHI8VWludDhBcnJheT4gZGF0YSwg
RXhjZXB0aW9uQ29kZSYpOwogICAgIGVudW0gRW5kT2ZTdHJlYW1TdGF0dXMgeyBFT1NfTk9fRVJS
T1IsIEVPU19ORVRXT1JLX0VSUiwgRU9TX0RFQ09ERV9FUlIgfTsKICAgICB2b2lkIHdlYmtpdFNv
dXJjZUVuZE9mU3RyZWFtKHVuc2lnbmVkIHNob3J0LCBFeGNlcHRpb25Db2RlJik7CkBAIC00MDcs
NiArNDA5LDcgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQogICAgIHZpcnR1
YWwgdm9pZCBtZWRpYVBsYXllclNvdXJjZU9wZW5lZCgpOwogICAgIHZpcnR1YWwgU3RyaW5nIG1l
ZGlhUGxheWVyU291cmNlVVJMKCkgY29uc3Q7CisgICAgYm9vbCBpc1ZhbGlkU291cmNlSWQoY29u
c3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwogI2VuZGlmCiAKICNpZiBFTkFCTEUo
RU5DUllQVEVEX01FRElBKQpAQCAtNTc3LDYgKzU4MCw3IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxF
KE1FRElBX1NPVVJDRSkKICAgICBLVVJMIG1fbWVkaWFTb3VyY2VVUkw7CiAgICAgU291cmNlU3Rh
dGUgbV9zb3VyY2VTdGF0ZTsKKyAgICBIYXNoU2V0PFN0cmluZz4gbV9zb3VyY2VJRHM7CiAjZW5k
aWYKIAogICAgIG11dGFibGUgZmxvYXQgbV9jYWNoZWRUaW1lOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5pZGwKaW5kZXggODc4NTRiZTBmNTEzMzQ1NmI5ZTE2MDhiOTgyZDAw
YWQzNmNjNmU0OS4uNWI5YzEwMWNlYjJmYjEyY2M4NmQzMDAwMzBmMjA2NjRiYjAxNmNjNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmlkbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsCkBAIC05OSw2ICs5OSwxMCBA
QCBtb2R1bGUgaHRtbCB7CiAgICAgLy8gVVJMIHBhc3NlZCB0byBzcmMgYXR0cmlidXRlIHRvIGVu
YWJsZSB0aGUgbWVkaWEgc291cmNlIGxvZ2ljLgogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbVjhF
bmFibGVkQXRSdW50aW1lPW1lZGlhU291cmNlLCBVUkxdIERPTVN0cmluZyB3ZWJraXRNZWRpYVNv
dXJjZVVSTDsKIAorICAgIC8vIE1hbmFnZXMgSURzIGZvciBhcHBlbmRpbmcgbWVkaWEgdG8gdGhl
IHNvdXJjZS4KKyAgICBbVjhFbmFibGVkQXRSdW50aW1lPW1lZGlhU291cmNlXSB2b2lkIHdlYmtp
dFNvdXJjZUFkZElkKGluIERPTVN0cmluZyBpZCwgaW4gRE9NU3RyaW5nIHR5cGUpIHJhaXNlcyAo
RE9NRXhjZXB0aW9uKTsKKyAgICBbVjhFbmFibGVkQXRSdW50aW1lPW1lZGlhU291cmNlXSB2b2lk
IHdlYmtpdFNvdXJjZVJlbW92ZUlkKGluIERPTVN0cmluZyBpZCkgcmFpc2VzIChET01FeGNlcHRp
b24pOworCiAgICAgLy8gQXBwZW5kcyBtZWRpYSB0byB0byB0aGUgc291cmNlLgogICAgIFtWOEVu
YWJsZWRBdFJ1bnRpbWU9bWVkaWFTb3VyY2VdIHZvaWQgd2Via2l0U291cmNlQXBwZW5kKGluIFVp
bnQ4QXJyYXkgZGF0YSkgcmFpc2VzIChET01FeGNlcHRpb24pOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKaW5kZXggZTk4ZWJmZDc1YmI5
OWM1M2QxMDI3MGQ4ZmJmODhjN2I2MjIwMzE3OC4uMWU4MTg1N2U4MDFlNjNlNGZjMDBhMzZlNzEz
MWM1MjhmMGUzYWI4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyLmNwcApAQCAtMTQ5LDYgKzE0OSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IGJvb2wgaGFzU2luZ2xlU2VjdXJpdHlPcmlnaW4oKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAK
ICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorICAgIHZpcnR1YWwgTWVkaWFQbGF5ZXI6OkFkZElk
U3RhdHVzIHNvdXJjZUFkZElkKGNvbnN0IFN0cmluZyYgaWQsIGNvbnN0IFN0cmluZyYgdHlwZSkg
eyByZXR1cm4gTWVkaWFQbGF5ZXI6Ok5vdFN1cHBvcnRlZDsgfQorICAgIHZpcnR1YWwgYm9vbCBz
b3VyY2VSZW1vdmVJZChjb25zdCBTdHJpbmcmIGlkKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZp
cnR1YWwgYm9vbCBzb3VyY2VBcHBlbmQoY29uc3QgdW5zaWduZWQgY2hhciosIHVuc2lnbmVkKSB7
IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzb3VyY2VFbmRPZlN0cmVhbShNZWRp
YVBsYXllcjo6RW5kT2ZTdHJlYW1TdGF0dXMgc3RhdHVzKSB7IH0KICNlbmRpZgpAQCAtNDU2LDYg
KzQ1OCwxNyBAQCB2b2lkIE1lZGlhUGxheWVyOjpwYXVzZSgpCiB9CiAKICNpZiBFTkFCTEUoTUVE
SUFfU09VUkNFKQorCitNZWRpYVBsYXllcjo6QWRkSWRTdGF0dXMgTWVkaWFQbGF5ZXI6OnNvdXJj
ZUFkZElkKGNvbnN0IFN0cmluZyYgaWQsIGNvbnN0IFN0cmluZyYgdHlwZSkKK3sKKyAgICByZXR1
cm4gbV9wcml2YXRlLT5zb3VyY2VBZGRJZChpZCwgdHlwZSk7Cit9CisKK2Jvb2wgTWVkaWFQbGF5
ZXI6OnNvdXJjZVJlbW92ZUlkKGNvbnN0IFN0cmluZyYgaWQpCit7CisgICAgcmV0dXJuIG1fcHJp
dmF0ZS0+c291cmNlUmVtb3ZlSWQoaWQpOworfQorCiBib29sIE1lZGlhUGxheWVyOjpzb3VyY2VB
cHBlbmQoY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQogewogICAg
IHJldHVybiBtX3ByaXZhdGUtPnNvdXJjZUFwcGVuZChkYXRhLCBsZW5ndGgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKaW5kZXggZDliNmUyNzAw
M2NiMWY4YzliZDY5MDkwMDRhMTI4NTBhZDU4ZjljMC4uNDI5ZTVmY2Y1NThkYzIzMGI0YzAzM2Q2
ZjFhNjFlN2ZjYjhkOTUxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9NZWRpYVBsYXllci5oCkBAIC0yMjksNiArMjI5LDkgQEAgcHVibGljOgogICAgIHZvaWQgcGF1
c2UoKTsgICAgCiAKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorICAgIGVudW0gQWRkSWRTdGF0
dXMgeyBPaywgTm90U3VwcG9ydGVkLCBSZWFjaGVkSWRMaW1pdCB9OworICAgIEFkZElkU3RhdHVz
IHNvdXJjZUFkZElkKGNvbnN0IFN0cmluZyYgaWQsIGNvbnN0IFN0cmluZyYgdHlwZSk7CisgICAg
Ym9vbCBzb3VyY2VSZW1vdmVJZChjb25zdCBTdHJpbmcmIGlkKTsKICAgICBib29sIHNvdXJjZUFw
cGVuZChjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOwogICAgIGVu
dW0gRW5kT2ZTdHJlYW1TdGF0dXMgeyBFb3NOb0Vycm9yLCBFb3NOZXR3b3JrRXJyb3IsIEVvc0Rl
Y29kZUVycm9yIH07CiAgICAgdm9pZCBzb3VyY2VFbmRPZlN0cmVhbShFbmRPZlN0cmVhbVN0YXR1
cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllclByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyUHJpdmF0ZS5oCmluZGV4IDM3OGIyNTllODM1MjA3ZDY3YjIyYWJiOTAzZGVlZjJkOTRjYzI4
YzEuLmZmNTVkMWIwYjVhYzA4MjJiYjU2ZmRkN2M5NWM4NTE1YTIzZTNlNmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5o
CkBAIC0xNTgsNiArMTU4LDggQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoTUVESUFf
U09VUkNFKQorICAgIHZpcnR1YWwgTWVkaWFQbGF5ZXI6OkFkZElkU3RhdHVzIHNvdXJjZUFkZElk
KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpIHsgcmV0dXJuIE1lZGlhUGxheWVyOjpOb3RT
dXBwb3J0ZWQ7IH0KKyAgICB2aXJ0dWFsIGJvb2wgc291cmNlUmVtb3ZlSWQoY29uc3QgU3RyaW5n
JikgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgc291cmNlQXBwZW5kKGNvbnN0
IHVuc2lnbmVkIGNoYXIqLCB1bnNpZ25lZCkgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFs
IHZvaWQgc291cmNlRW5kT2ZTdHJlYW0oTWVkaWFQbGF5ZXI6OkVuZE9mU3RyZWFtU3RhdHVzKSB7
IH07CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
Yk1lZGlhUGxheWVyLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZWRpYVBs
YXllci5oCmluZGV4IDIwNDliNTliMDJhYmUzYTEwMjQyZTI3ZWNlMmJiZTdmOTI3ZjdkMzcuLmI4
NGY5NzBhMDAwNWMwZGVmMzY4ZjRlMjUzOTZlZTExOTc2YjQyYzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk1lZGlhUGxheWVyLmgKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFQbGF5ZXIuaApAQCAtMzMsNiArMzMsNyBAQAog
CiAjaW5jbHVkZSAiV2ViVmlkZW9GcmFtZS5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNhbnZh
cy5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlN0cmluZy5oIgogI2luY2x1ZGUgInBsYXRmb3Jt
L1dlYlZlY3Rvci5oIgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTg5LDYgKzkwLDEyIEBAIHB1
YmxpYzoKICAgICAgICAgQXV0bywKICAgICB9OwogCisgICAgZW51bSBBZGRJZFN0YXR1cyB7Cisg
ICAgICAgIE9rLAorICAgICAgICBOb3RTdXBwb3J0ZWQsCisgICAgICAgIFJlYWNoZWRJZExpbWl0
CisgICAgfTsKKwogICAgIGVudW0gRW5kT2ZTdHJlYW1TdGF0dXMgewogICAgICAgICBFb3NOb0Vy
cm9yLAogICAgICAgICBFb3NOZXR3b3JrRXJyb3IsCkBAIC0xNzYsNiArMTgzLDggQEAgcHVibGlj
OgogCiAgICAgdmlydHVhbCBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyKiBhdWRpb1NvdXJjZVByb3Zp
ZGVyKCkgeyByZXR1cm4gMDsgfQogCisgICAgdmlydHVhbCBBZGRJZFN0YXR1cyBzb3VyY2VBZGRJ
ZChjb25zdCBXZWJTdHJpbmcmIGlkLCBjb25zdCBXZWJTdHJpbmcmIHR5cGUpIHsgcmV0dXJuIE5v
dFN1cHBvcnRlZDsgfQorICAgIHZpcnR1YWwgYm9vbCBzb3VyY2VSZW1vdmVJZChjb25zdCBXZWJT
dHJpbmcmIGlkKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBzb3VyY2VBcHBl
bmQoY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSB7IHJldHVybiBm
YWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzb3VyY2VFbmRPZlN0cmVhbShFbmRPZlN0cmVhbVN0
YXR1cykgIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJN
ZWRpYVBsYXllckNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
TWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNwcAppbmRleCA0NjAwZmI4NDMwMzA5ZTU1ZTc3N2NmMWEx
NjBiYmM0YzcxNDA5NjRiLi4zNDIzYjBkMWJjYjRkZjQ3YWVhODY5NGJhODM5MTE2MTI1OTJlMzg4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNs
aWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxh
eWVyQ2xpZW50SW1wbC5jcHAKQEAgLTM0MCw2ICszNDAsMjIgQEAgdm9pZCBXZWJNZWRpYVBsYXll
ckNsaWVudEltcGw6OnBhdXNlKCkKIH0KIAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCitXZWJD
b3JlOjpNZWRpYVBsYXllcjo6QWRkSWRTdGF0dXMgV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpz
b3VyY2VBZGRJZChjb25zdCBTdHJpbmcmIGlkLCBjb25zdCBTdHJpbmcmIHR5cGUpCit7CisgICAg
aWYgKCFtX3dlYk1lZGlhUGxheWVyKQorICAgICAgICByZXR1cm4gV2ViQ29yZTo6TWVkaWFQbGF5
ZXI6Ok5vdFN1cHBvcnRlZDsKKworICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJDb3JlOjpNZWRp
YVBsYXllcjo6QWRkSWRTdGF0dXM+KG1fd2ViTWVkaWFQbGF5ZXItPnNvdXJjZUFkZElkKGlkLCB0
eXBlKSk7Cit9CisKK2Jvb2wgV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpzb3VyY2VSZW1vdmVJ
ZChjb25zdCBTdHJpbmcmIGlkKQoreworICAgIGlmICghbV93ZWJNZWRpYVBsYXllcikKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIG1fd2ViTWVkaWFQbGF5ZXItPnNvdXJjZVJl
bW92ZUlkKGlkKTsKK30KKwogYm9vbCBXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OnNvdXJjZUFw
cGVuZChjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCiB7CiAgICAg
aWYgKG1fd2ViTWVkaWFQbGF5ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5oCmluZGV4IGJhMTczMGY1Zjc4ZDUwYTJkOThl
NmVlNmYwYTYxOWQ0YTRlYzJkMzEuLjYxYTM4N2U2MDdiMjAwZDg4MmMzNjRlNDBkNzQ0ZmIwNzUy
YjdiOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxh
eWVyQ2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlh
UGxheWVyQ2xpZW50SW1wbC5oCkBAIC0xNDksNiArMTQ5LDggQEAgcHVibGljOgogI2VuZGlmCiAK
ICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorICAgIHZpcnR1YWwgV2ViQ29yZTo6TWVkaWFQbGF5
ZXI6OkFkZElkU3RhdHVzIHNvdXJjZUFkZElkKGNvbnN0IFN0cmluZyYgaWQsIGNvbnN0IFN0cmlu
ZyYgdHlwZSk7CisgICAgdmlydHVhbCBib29sIHNvdXJjZVJlbW92ZUlkKGNvbnN0IFN0cmluZyYp
OwogICAgIHZpcnR1YWwgYm9vbCBzb3VyY2VBcHBlbmQoY29uc3QgdW5zaWduZWQgY2hhciogZGF0
YSwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICB2aXJ0dWFsIHZvaWQgc291cmNlRW5kT2ZTdHJlYW0o
V2ViQ29yZTo6TWVkaWFQbGF5ZXI6OkVuZE9mU3RyZWFtU3RhdHVzKTsKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IGIxNGE0ZTYyZjRlMDIyOTQ3NmRlMDJkMDEyMWRkODU3MDU2YjlhYWIuLjAzYzhmZmRjYTJlYzU2
N2M0NGE1NGQzZGUzYTIxNjc2NzQzMTA3MmYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0w
NC0xMyAgQWFyb24gQ29sd2VsbCAgPGFjb2x3ZWxsQGNocm9taXVtLm9yZz4KKworICAgICAgICBB
ZGQgTGF5b3V0VGVzdHMgZm9yIG5ldyB3ZWJraXRTb3VyY2VBZGRJZCgpICYgd2Via2l0U291cmNl
UmVtb3ZlSWQoKSBtZXRob2RzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODM2MTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIGh0dHAvdGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL3dlYm0vdmlkZW8tbWVk
aWEtc291cmNlLWFkZC1hbmQtcmVtb3ZlLWlkcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGh0dHAvdGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL3dlYm0vdmlkZW8tbWVkaWEtc291cmNl
LWFkZC1hbmQtcmVtb3ZlLWlkcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJv
bWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6CisKIDIwMTItMDQtMTMgIFJvYiBGbGFjayAgPGZs
YWNrckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQ2hyb21pdW06IFNob3VsZCBlbmFibGUgLXdl
YmtpdC1pbWFnZS1zZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbWVkaWEv
bWVkaWEtc291cmNlL3dlYm0vdmlkZW8tbWVkaWEtc291cmNlLWFkZC1hbmQtcmVtb3ZlLWlkcy1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21lZGlhL21lZGlhLXNvdXJjZS93
ZWJtL3ZpZGVvLW1lZGlhLXNvdXJjZS1hZGQtYW5kLXJlbW92ZS1pZHMtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjFlMWI4MTA0NzBkOTUxYTRkMTBlNjFmMTg4MGY2NWEwZmNmMjMxODUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21lZGlhL21lZGlhLXNvdXJjZS93
ZWJtL3ZpZGVvLW1lZGlhLXNvdXJjZS1hZGQtYW5kLXJlbW92ZS1pZHMtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsNDIgQEAKK1Rlc3RzIHdlYmtpdFNvdXJjZUFkZElkKCkgJiB3ZWJraXRTb3VyY2VS
ZW1vdmVJZCgpIG1ldGhvZHMKKworCitydW5uaW5nIHRlc3RBZGRJZEZhaWx1cmVDYXNlcworR290
IGV4cGVjdGVkIGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9TVEFURV9FUlI6IERPTSBFeGNlcHRp
b24gMTEKK0VWRU5UKGxvYWRzdGFydCkKK0VWRU5UKHdlYmtpdHNvdXJjZW9wZW4pCitUZXN0IGVt
cHR5IElEIGNhc2UKK0dvdCBleHBlY3RlZCBleGNlcHRpb24gRXJyb3I6IElOVkFMSURfQUNDRVNT
X0VSUjogRE9NIEV4Y2VwdGlvbiAxNQorVGVzdCBhZGRpbmcgdGhlIHNhbWUgSUQgYWdhaW4uCitH
b3QgZXhwZWN0ZWQgZXhjZXB0aW9uIEVycm9yOiBJTlZBTElEX1NUQVRFX0VSUjogRE9NIEV4Y2Vw
dGlvbiAxMQorVGVzdCBlbXB0eSB0eXBlLgorR290IGV4cGVjdGVkIGV4Y2VwdGlvbiBFcnJvcjog
SU5WQUxJRF9BQ0NFU1NfRVJSOiBET00gRXhjZXB0aW9uIDE1CitUZXN0IGFuIHVuc3VwcG9ydGVk
IHR5cGUuCitHb3QgZXhwZWN0ZWQgZXhjZXB0aW9uIEVycm9yOiBOT1RfU1VQUE9SVEVEX0VSUjog
RE9NIEV4Y2VwdGlvbiA5CitUZXN0IHJlYWNoaW5nIHNvdXJjZUlEIGxpbWl0LgorR290IGV4cGVj
dGVkIGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9TVEFURV9FUlI6IERPTSBFeGNlcHRpb24gMTEK
KworcnVubmluZyB0ZXN0UmVtb3ZlSWRGYWlsdXJlQ2FzZXMKK0VWRU5UKGxvYWRzdGFydCkKK0VW
RU5UKHdlYmtpdHNvdXJjZW9wZW4pCitUZXN0IGVtcHR5IElEIGNhc2UKK0dvdCBleHBlY3RlZCBl
eGNlcHRpb24gRXJyb3I6IElOVkFMSURfQUNDRVNTX0VSUjogRE9NIEV4Y2VwdGlvbiAxNQorVGVz
dCByZW1vdmluZyBhbiBJRCB0aGF0IHdhcyBuZXZlciBhZGRlZC4KK0dvdCBleHBlY3RlZCBleGNl
cHRpb24gRXJyb3I6IFNZTlRBWF9FUlI6IERPTSBFeGNlcHRpb24gMTIKK0dvdCBleHBlY3RlZCBl
eGNlcHRpb24gRXJyb3I6IFNZTlRBWF9FUlI6IERPTSBFeGNlcHRpb24gMTIKK1Rlc3QgYWRkaW5n
IHRoZSBzYW1lIElEIGFnYWluLgorVGVzdCB0aGF0IGFuIElEIGNhbiBiZSByZW1vdmVkIHdoaWxl
IGluIHRoZSBlbmRlZCBzdGF0ZS4KKworcnVubmluZyB0ZXN0QXBwZW5kRmFpbHVyZUNhc2VzCitF
VkVOVChsb2Fkc3RhcnQpCitFVkVOVCh3ZWJraXRzb3VyY2VvcGVuKQorVGVzdCBhcHBlbmQgd2l0
aCBlbXB0eSBJRC4KK0dvdCBleHBlY3RlZCBleGNlcHRpb24gRXJyb3I6IElOVkFMSURfQUNDRVNT
X0VSUjogRE9NIEV4Y2VwdGlvbiAxNQorVGVzdCBhcHBlbmQgd2l0aCBhbiBpbnZhbGlkIElECitH
b3QgZXhwZWN0ZWQgZXhjZXB0aW9uIEVycm9yOiBTWU5UQVhfRVJSOiBET00gRXhjZXB0aW9uIDEy
CitUZXN0IGFwcGVuZCB3aXRoIGEgbnVsbCBidWZmZXIuCitHb3QgZXhwZWN0ZWQgZXhjZXB0aW9u
IEVycm9yOiBJTlZBTElEX0FDQ0VTU19FUlI6IERPTSBFeGNlcHRpb24gMTUKK1Rlc3QgYSBzdWNj
ZXNzZnVsIGFwcGVuZC4KK0dvdCBleHBlY3RlZCBleGNlcHRpb24gRXJyb3I6IFNZTlRBWF9FUlI6
IERPTSBFeGNlcHRpb24gMTIKK0VORCBPRiBURVNUCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL3dlYm0vdmlkZW8tbWVkaWEtc291cmNlLWFk
ZC1hbmQtcmVtb3ZlLWlkcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9tZWRpYS9tZWRp
YS1zb3VyY2Uvd2VibS92aWRlby1tZWRpYS1zb3VyY2UtYWRkLWFuZC1yZW1vdmUtaWRzLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNjI0ZTViYWFjNWE0N2M4MGJlZGFjZDM1YzU4MWRhMWYwMmQ1Zjg0YwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbWVkaWEvbWVkaWEtc291cmNl
L3dlYm0vdmlkZW8tbWVkaWEtc291cmNlLWFkZC1hbmQtcmVtb3ZlLWlkcy5odG1sCkBAIC0wLDAg
KzEsMjE1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vbWVkaWEtcmVzb3VyY2VzL3ZpZGVvLXRlc3QuanMiPjwvc2Ny
aXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0id2VibS1tZWRpYS1zb3VyY2UuanMiPjwvc2NyaXB0
PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICAgICAgdmFyIGRlZmF1bHRTb3VyY2VNaW1ldHlw
ZSA9ICJ2aWRlby93ZWJtOyBjb2RlY3M9XCJ2cDgsIHZvcmJpc1wiIjsKKworICAgICAgICAgICAg
ZnVuY3Rpb24gcnVuT25Tb3VyY2VPcGVuKHZpZGVvVGFnLCBvbk9wZW5GdW5jdGlvbikKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICB2YXIgZXZlbnRIYW5kbGVyRnVuY3Rpb24gPSBmdW5j
dGlvbiAoZXZlbnQpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBldmVu
dC50YXJnZXQucmVtb3ZlRXZlbnRMaXN0ZW5lcignd2Via2l0c291cmNlb3BlbicsIGV2ZW50SGFu
ZGxlckZ1bmN0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgb25PcGVuRnVuY3Rpb24oZXZlbnQu
dGFyZ2V0KTsKKyAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgIHZpZGVvVGFnLmFk
ZEV2ZW50TGlzdGVuZXIoJ3dlYmtpdHNvdXJjZW9wZW4nLCBldmVudEhhbmRsZXJGdW5jdGlvbik7
CisgICAgICAgICAgICAgICAgc2V0U3JjVG9NZWRpYVNvdXJjZVVSTCh2aWRlb1RhZyk7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBpbmRleCBvZiB0aGUgbmV4dCBjbHVzdGVy
IHRvIHNlbmQgdG8gYXBwZW5kRGF0YSgpLgorICAgICAgICAgICAgdmFyIG5leHRDbHVzdGVySW5k
ZXggPSAwOworCisgICAgICAgICAgICBmdW5jdGlvbiBleHBlY3RFeGNlcHRpb25PbkFkZElkKHZp
ZGVvVGFnLCBpZCwgdHlwZSwgZXJyb3IpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
dHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgdmlkZW9UYWcud2Via2l0U291cmNlQWRkSWQoaWQs
IHR5cGUpOworICAgICAgICAgICAgICAgICAgICBmYWlsVGVzdCgiRXhwZWN0ZWQgYW4gZXhjZXB0
aW9uIik7CisgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgICAgICAg
ICBpZiAoIShlLmNvZGUgPT0gZXJyb3IpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBmYWls
VGVzdCgiVW5leHBlY3RlZCBleGNlcHRpb24gIiArIGUpOworICAgICAgICAgICAgICAgICAgICAg
ICAgdGhyb3cgZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBj
b25zb2xlV3JpdGUoIkdvdCBleHBlY3RlZCBleGNlcHRpb24gIiArIGUpOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gZXhwZWN0RXhjZXB0
aW9uT25SZW1vdmVJZCh2aWRlb1RhZywgaWQsIGVycm9yKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIHZpZGVvVGFnLndlYmtpdFNvdXJj
ZVJlbW92ZUlkKGlkKTsKKyAgICAgICAgICAgICAgICAgICAgZmFpbFRlc3QoIkV4cGVjdGVkIGFu
IGV4Y2VwdGlvbiIpOworICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKCEoZS5jb2RlID09IGVycm9yKSkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgZmFpbFRlc3QoIlVuZXhwZWN0ZWQgZXhjZXB0aW9uICIgKyBlKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHRocm93IGU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgICAgY29uc29sZVdyaXRlKCJHb3QgZXhwZWN0ZWQgZXhjZXB0aW9uICIgKyBlKTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGV4cGVj
dEV4Y2VwdGlvbk9uQXBwZW5kKHZpZGVvVGFnLCBpZCwgYnVmLCBlcnJvcikKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICB2aWRlb1RhZy53
ZWJraXRTb3VyY2VBcHBlbmQoaWQsIGJ1Zik7CisgICAgICAgICAgICAgICAgICAgIGZhaWxUZXN0
KCJFeHBlY3RlZCBhbiBleGNlcHRpb24iKTsKKyAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7
CisgICAgICAgICAgICAgICAgICAgIGlmICghKGUuY29kZSA9PSBlcnJvcikpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGZhaWxUZXN0KCJVbmV4cGVjdGVkIGV4Y2VwdGlvbiAiICsgZSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBlOworICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiR290IGV4cGVjdGVkIGV4Y2VwdGlvbiAi
ICsgZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBm
dW5jdGlvbiB0ZXN0QWRkSWRGYWlsdXJlQ2FzZXModmlkZW9UYWcpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgLy8gVGVzdCBhZGRpbmcgd2hpbGUgY2xvc2VkLgorICAgICAgICAgICAg
ICAgIGV4cGVjdEV4Y2VwdGlvbk9uQWRkSWQodmlkZW9UYWcsICIxMjMiLCBkZWZhdWx0U291cmNl
TWltZXR5cGUsIERPTUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VSUik7CisKKyAgICAgICAgICAg
ICAgICBydW5PblNvdXJjZU9wZW4odmlkZW9UYWcsIGZ1bmN0aW9uICh2dCkKKyAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiVGVzdCBlbXB0eSBJRCBj
YXNlIik7CisgICAgICAgICAgICAgICAgICAgIGV4cGVjdEV4Y2VwdGlvbk9uQWRkSWQodnQsICIi
LCBkZWZhdWx0U291cmNlTWltZXR5cGUsIERPTUV4Y2VwdGlvbi5JTlZBTElEX0FDQ0VTU19FUlIp
OworCisgICAgICAgICAgICAgICAgICAgIHZ0LndlYmtpdFNvdXJjZUFkZElkKCIxMjMiLCBkZWZh
dWx0U291cmNlTWltZXR5cGUpOworCisgICAgICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgi
VGVzdCBhZGRpbmcgdGhlIHNhbWUgSUQgYWdhaW4uIik7CisgICAgICAgICAgICAgICAgICAgIGV4
cGVjdEV4Y2VwdGlvbk9uQWRkSWQodnQsICIxMjMiLCBkZWZhdWx0U291cmNlTWltZXR5cGUsIERP
TUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VSUik7CisgICAgICAgICAgICAgICAgICAgIHZ0Lndl
YmtpdFNvdXJjZVJlbW92ZUlkKCIxMjMiKTsKKworICAgICAgICAgICAgICAgICAgICBjb25zb2xl
V3JpdGUoIlRlc3QgZW1wdHkgdHlwZS4iKTsKKyAgICAgICAgICAgICAgICAgICAgZXhwZWN0RXhj
ZXB0aW9uT25BZGRJZCh2dCwgIjIzNCIsICIiLCBET01FeGNlcHRpb24uSU5WQUxJRF9BQ0NFU1Nf
RVJSKTsKKworICAgICAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIlRlc3QgYW4gdW5zdXBw
b3J0ZWQgdHlwZS4iKTsKKyAgICAgICAgICAgICAgICAgICAgZXhwZWN0RXhjZXB0aW9uT25BZGRJ
ZCh2dCwgIjIzNCIsICJhdWRpby93YXYiLCBET01FeGNlcHRpb24uTk9UX1NVUFBPUlRFRF9FUlIp
OworCisgICAgICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiVGVzdCByZWFjaGluZyBzb3Vy
Y2VJRCBsaW1pdC4iKTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIHJlYWNoZWRJZExpbWl0ID0g
ZmFsc2U7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gVGhlIDIwIGhlcmUgaXMgYW4gYXJiaXRy
YXJ5IHVwcGVyIGxpbWl0IHRvIG1ha2Ugc3VyZSB0aGUgdGVzdCB0ZXJtaW5hdGVzLiBUaGlzIHRl
c3QKKyAgICAgICAgICAgICAgICAgICAgLy8gYXNzdW1lcyB0aGF0IGltcGxlbWVudGF0aW9ucyB3
b24ndCBzdXBwb3J0IG1vcmUgdGhhbiAyMCBzb3VyY2VJRCdzIHNpbXVsdGFuZW91c2x5LgorICAg
ICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDIwOyArK2kpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHZhciBzb3VyY2VJRCA9ICJzb3VyY2VJRC0iICsgaTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdnQud2Vi
a2l0U291cmNlQWRkSWQoc291cmNlSUQsIGRlZmF1bHRTb3VyY2VNaW1ldHlwZSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoZS5jb2RlICE9IERPTUV4Y2VwdGlvbi5RVU9UQV9FWENFRURFRF9FUlIpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFpbFRlc3QoIlVuZXhwZWN0ZWQgZXhjZXB0aW9u
ICIgKyBlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgZTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVh
Y2hlZElkTGltaXQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKCFyZWFjaGVkSWRMaW1pdCkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgZmFpbFRlc3QoIkZhaWxlZCB0byByZWFjaCBTb3VyY2VJRCBsaW1pdC4iKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAgICAgICAgIC8vIFRlc3QgdGhhdCBTb3VyY2VJRHMgY2FuJ3QgYmUgYWRkZWQgd2hp
bGUgaW4gdGhlIGVuZGVkIHN0YXRlLgorICAgICAgICAgICAgICAgICAgICB2dC53ZWJraXRTb3Vy
Y2VFbmRPZlN0cmVhbSh2dC5FT1NfTk9fRVJST1IpOworICAgICAgICAgICAgICAgICAgICBleHBl
Y3RFeGNlcHRpb25PbkFkZElkKHZ0LCAiMTIzIiwgZGVmYXVsdFNvdXJjZU1pbWV0eXBlLCBET01F
eGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIpOworCisgICAgICAgICAgICAgICAgICAgIHJ1bk5l
eHRUZXN0Q2FzZSh2dCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGZ1bmN0aW9uIHRlc3RSZW1vdmVJZEZhaWx1cmVDYXNlcyh2aWRlb1RhZykKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBydW5PblNvdXJjZU9wZW4odmlkZW9UYWcsIGZ1
bmN0aW9uICh2dCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGNvbnNv
bGVXcml0ZSgiVGVzdCBlbXB0eSBJRCBjYXNlIik7CisgICAgICAgICAgICAgICAgICAgIGV4cGVj
dEV4Y2VwdGlvbk9uUmVtb3ZlSWQodnQsICIiLCBET01FeGNlcHRpb24uSU5WQUxJRF9BQ0NFU1Nf
RVJSKTsKKworICAgICAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIlRlc3QgcmVtb3Zpbmcg
YW4gSUQgdGhhdCB3YXMgbmV2ZXIgYWRkZWQuIik7CisgICAgICAgICAgICAgICAgICAgIGV4cGVj
dEV4Y2VwdGlvbk9uUmVtb3ZlSWQodnQsICIzNDUiLCBET01FeGNlcHRpb24uU1lOVEFYX0VSUik7
CisKKyAgICAgICAgICAgICAgICAgICAgdnQud2Via2l0U291cmNlQWRkSWQoIjEyMyIsIGRlZmF1
bHRTb3VyY2VNaW1ldHlwZSk7CisgICAgICAgICAgICAgICAgICAgIHZ0LndlYmtpdFNvdXJjZVJl
bW92ZUlkKCIxMjMiKTsKKyAgICAgICAgICAgICAgICAgICAgZXhwZWN0RXhjZXB0aW9uT25SZW1v
dmVJZCh2dCwgIjEyMyIsIERPTUV4Y2VwdGlvbi5TWU5UQVhfRVJSKTsKKworICAgICAgICAgICAg
ICAgICAgICBjb25zb2xlV3JpdGUoIlRlc3QgYWRkaW5nIHRoZSBzYW1lIElEIGFnYWluLiIpOwor
ICAgICAgICAgICAgICAgICAgICB2dC53ZWJraXRTb3VyY2VBZGRJZCgiMTIzIiwgZGVmYXVsdFNv
dXJjZU1pbWV0eXBlKTsKKworICAgICAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIlRlc3Qg
dGhhdCBhbiBJRCBjYW4gYmUgcmVtb3ZlZCB3aGlsZSBpbiB0aGUgZW5kZWQgc3RhdGUuIik7Cisg
ICAgICAgICAgICAgICAgICAgIHZ0LndlYmtpdFNvdXJjZUVuZE9mU3RyZWFtKHZ0LkVPU19OT19F
UlJPUik7CisgICAgICAgICAgICAgICAgICAgIHZ0LndlYmtpdFNvdXJjZVJlbW92ZUlkKCIxMjMi
KTsKKworICAgICAgICAgICAgICAgICAgICBydW5OZXh0VGVzdENhc2UodnQpOworICAgICAgICAg
ICAgICAgIH0pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiB0ZXN0QXBw
ZW5kRmFpbHVyZUNhc2VzKHZpZGVvVGFnKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IHJ1bk9uU291cmNlT3Blbih2aWRlb1RhZywgZnVuY3Rpb24gKHZ0KQorICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgdnQud2Via2l0U291cmNlQWRkSWQoIjEyMyIsIGRlZmF1
bHRTb3VyY2VNaW1ldHlwZSk7CisKKyAgICAgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCJU
ZXN0IGFwcGVuZCB3aXRoIGVtcHR5IElELiIpOworICAgICAgICAgICAgICAgICAgICBleHBlY3RF
eGNlcHRpb25PbkFwcGVuZCh2dCwgIiIsIGdldEhlYWRlcnMoKSwgRE9NRXhjZXB0aW9uLklOVkFM
SURfQUNDRVNTX0VSUik7CisKKyAgICAgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCJUZXN0
IGFwcGVuZCB3aXRoIGFuIGludmFsaWQgSUQiKTsKKyAgICAgICAgICAgICAgICAgICAgZXhwZWN0
RXhjZXB0aW9uT25BcHBlbmQodnQsICIyMzQiLCBnZXRIZWFkZXJzKCksIERPTUV4Y2VwdGlvbi5T
WU5UQVhfRVJSKTsKKworICAgICAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIlRlc3QgYXBw
ZW5kIHdpdGggYSBudWxsIGJ1ZmZlci4iKTsKKyAgICAgICAgICAgICAgICAgICAgZXhwZWN0RXhj
ZXB0aW9uT25BcHBlbmQodnQsICIxMjMiLCBudWxsLCBET01FeGNlcHRpb24uSU5WQUxJRF9BQ0NF
U1NfRVJSKTsKKworICAgICAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIlRlc3QgYSBzdWNj
ZXNzZnVsIGFwcGVuZC4iKTsKKyAgICAgICAgICAgICAgICAgICAgdnQud2Via2l0U291cmNlQXBw
ZW5kKCIxMjMiLCBnZXRIZWFkZXJzKCkpOworCisgICAgICAgICAgICAgICAgICAgIHZ0LndlYmtp
dFNvdXJjZVJlbW92ZUlkKCIxMjMiKTsKKyAgICAgICAgICAgICAgICAgICAgZXhwZWN0RXhjZXB0
aW9uT25BcHBlbmQodnQsICIxMjMiLCBnZXRDbHVzdGVyKDApLCBET01FeGNlcHRpb24uU1lOVEFY
X0VSUik7CisKKyAgICAgICAgICAgICAgICAgICAgcnVuTmV4dFRlc3RDYXNlKHZ0KTsKKyAgICAg
ICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgdGVzdENh
c2VzID0gWworICAgICAgICAgICAgICAgIHRlc3RBZGRJZEZhaWx1cmVDYXNlcywKKyAgICAgICAg
ICAgICAgICB0ZXN0UmVtb3ZlSWRGYWlsdXJlQ2FzZXMsCisgICAgICAgICAgICAgICAgdGVzdEFw
cGVuZEZhaWx1cmVDYXNlcywKKyAgICAgICAgICAgIF07CisKKyAgICAgICAgICAgIHZhciB0ZXN0
Q2FzZUluZGV4ID0gMDsKKworICAgICAgICAgICAgZnVuY3Rpb24gcnVuTmV4dFRlc3RDYXNlKHZp
ZGVvVGFnKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmICh0ZXN0Q2FzZUluZGV4
ID49IHRlc3RDYXNlcy5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgICAgICAgZW5kVGVzdCgpOwor
ICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAgICAgdmFyIHRlc3RDYXNlRnVuY3Rpb24gPSB0ZXN0Q2FzZXNbdGVzdENhc2VJbmRleF07
CisgICAgICAgICAgICAgICAgdGVzdENhc2VJbmRleCsrOworCisgICAgICAgICAgICAgICAgY29u
c29sZVdyaXRlKCIiKTsKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoInJ1bm5pbmcgIiAr
IHRlc3RDYXNlRnVuY3Rpb24ubmFtZSk7CisgICAgICAgICAgICAgICAgdGVzdENhc2VGdW5jdGlv
bih2aWRlb1RhZyk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIG9uTG9h
ZCgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZmluZE1lZGlhRWxlbWVudCgpOwor
CisgICAgICAgICAgICAgICAgd2FpdEZvckV2ZW50KCdsb2Fkc3RhcnQnKTsKKyAgICAgICAgICAg
ICAgICB3YWl0Rm9yRXZlbnQoJ3dlYmtpdHNvdXJjZW9wZW4nKTsKKworICAgICAgICAgICAgICAg
IGxvYWRXZWJNRGF0YShmdW5jdGlvbihzdWNjZXNzKQorICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKCFzdWNjZXNzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBm
YWlsVGVzdCgiRmFpbGVkIHRvIGxvYWQgV2ViTSBkYXRhIik7CisgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
cnVuTmV4dFRlc3RDYXNlKHZpZGVvKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25M
b2FkKCkiPgorICAgICAgICA8dmlkZW8+IDwvdmlkZW8+CisgICAgICAgIDxwPlRlc3RzIHdlYmtp
dFNvdXJjZUFkZElkKCkgJmFtcDsgd2Via2l0U291cmNlUmVtb3ZlSWQoKSBtZXRob2RzPC9wPgor
ICAgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAppbmRleCBmNDlmYmQxNGMyMjVmOTZhNzE5OWM4ZjE1
MzQzMWZjNzM2NWE0Mjc4Li4zMzA3ZGJkNTZiMjRhYzdkNWRhYjBiYWZlMTg3YTRiYTJkM2JiOTdj
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0
aW9ucy50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3Rh
dGlvbnMudHh0CkBAIC0zNzU1LDYgKzM3NTUsOSBAQCBCVUdDUjEyMjQ0OCA6IG1lZGlhL3ZpZGVv
LXNlZWstcGFzdC1lbmQtcGF1c2VkLmh0bWwgPSBQQVNTIFRFWFQKIAogQlVHQ1IxMjI0NjIgV0lO
IExJTlVYIDogaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdC1lbGVtZW50Lmh0bWwgPSBURVhU
CiAKKy8vIFRlbXBvcmFyaWx5IGRpc2FibGVkIHVudGlsIENocm9taXVtIHNvdXJjZUFkZElkKCkg
JiBzb3VyY2VSZW1vdmVJZCgpIGNvZGUgaGFzIGJlZW4gY2hlY2tlZCBpbi4KK0JVR1dLODM2MTYg
U0tJUCA6IGh0dHAvdGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL3dlYm0vdmlkZW8tbWVkaWEtc291
cmNlLWFkZC1hbmQtcmVtb3ZlLWlkcy5odG1sID0gRkFJTAorCiBCVUdXSzgzNTAzIExJTlVYIERF
QlVHIDogcGx1Z2lucy9pbm5lci1odG1sLWRpc3BsYXktbm9uZS5odG1sID0gQ1JBU0gKIAogQlVH
V0s4MzYzNSA6IGZhc3QvY2FudmFzLzJkLmJhY2tpbmdTdG9yZVBpeGVsUmF0aW8uaHRtbCA9IFRJ
TUVPVVQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137361</attachid>
            <date>2012-04-16 10:21:53 -0700</date>
            <delta_ts>2012-04-16 18:22:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83616-20120416102152.patch</filename>
            <type>text/plain</type>
            <size>27481</size>
            <attacher name="Aaron Colwell">acolwell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE0MjY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDUwM2FhODAzMzg4NmJh
MGFhMDg2MzE5NWQ4ZDg1Yzg1MjJkMjRmYi4uNDUwY2FmZjAwNDk0YTM2ZmQxMTI4ZjZmM2NmOTg1
MTYxNzc3ZGViMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEyLTA0LTE2ICBBYXJv
biBDb2x3ZWxsICA8YWNvbHdlbGxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEFkZCB3ZWJraXRT
b3VyY2VBZGRJZCgpICYgd2Via2l0U291cmNlUmVtb3ZlSWQoKSB0byBIVE1MTWVkaWFFbGVtZW50
CisgICAgICAgIGFuZCBwcm9wYWdhdGUgY2FsbHMgdG8gdGhlIE1lZGlhUGxheWVyUHJpdmF0ZSBp
bnRlcmZhY2UuCisgICAgICAgIFRoZXNlIGFyZSBuZWVkZWQgdG8gYnJpbmcgdGhlIE1lZGlhIFNv
dXJjZSBpbXBsZW1lbnRhdGlvbiAKKyAgICAgICAgdXAgdG8gZGF0ZSB3aXRoIHRoZSBuZXcgMC40
IHZlcnNpb24gb2YgdGhlIE1lZGlhIFNvdXJjZSBzcGVjLgorICAgICAgICBodHRwOi8vaHRtbDUt
bWVkaWFzb3VyY2UtYXBpLmdvb2dsZWNvZGUuY29tL3N2bi90YWdzLzAuNC9kcmFmdC1zcGVjL21l
ZGlhc291cmNlLWRyYWZ0LXNwZWMuaHRtbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODM2MTYKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxz
b24sIERhcmluIEZpc2hlci4KKworICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL21lZGlhL21lZGlh
LXNvdXJjZS93ZWJtL3ZpZGVvLW1lZGlhLXNvdXJjZS1hZGQtYW5kLXJlbW92ZS1pZHMuaHRtbAor
CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6aXNWYWxpZFNvdXJjZUlkKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OndlYmtpdFNvdXJjZUFkZElkKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OndlYmtpdFNvdXJjZVJlbW92ZUlk
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNldFNvdXJjZVN0YXRlKToK
KyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKEhUTUxNZWRpYUVs
ZW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5pZGw6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TnVs
bE1lZGlhUGxheWVyUHJpdmF0ZTo6c291cmNlQWRkSWQpOgorICAgICAgICAoV2ViQ29yZTo6TnVs
bE1lZGlhUGxheWVyUHJpdmF0ZTo6c291cmNlUmVtb3ZlSWQpOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6c291cmNlQWRkSWQpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXI6OnNvdXJjZVJlbW92ZUlkKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhUGxheWVyUHJpdmF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
SW50ZXJmYWNlOjpzb3VyY2VBZGRJZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVJbnRlcmZhY2U6OnNvdXJjZVJlbW92ZUlkKToKKwogMjAxMi0wNC0xNiAgQ2hhbmdTZW9r
IE9oICA8c2hpdmFtaWRvd0BnbWFpbC5jb20+CiAKICAgICAgICAgVXBkYXRlIEdyYXBoaWNzQ29u
dGV4dDNET3BlbkdMRVMuY3BwIGFuZCBmaXggc29tZSBpc3N1ZXMgdG8gYnVpbGQgd2l0aCBHTEVT
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAwNGFjNWI5YzYzYjZkMjYzMDRlZTVlMzRl
ZGY4MmQxMTBjZDJjZGRjLi5jODJhMTVhNDk0NDcxYzEyZTRmMmZmODliYTE0ZWUzZWFhNjFjOTU0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEyLTA0LTE2
ICBBYXJvbiBDb2x3ZWxsICA8YWNvbHdlbGxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEFkZCBz
b3VyY2VBZGRJZCgpICYgc291cmNlUmVtb3ZlSWQoKSBzdHVicyBmb3IgQ2hyb21pdW0uCisgICAg
ICAgIFRoZXNlIGFyZSBuZWVkZWQgdG8gYnJpbmcgdGhlIE1lZGlhIFNvdXJjZSBpbXBsZW1lbnRh
dGlvbiAKKyAgICAgICAgdXAgdG8gZGF0ZSB3aXRoIHRoZSBuZXcgMC40IHZlcnNpb24gb2YgdGhl
IE1lZGlhIFNvdXJjZSBzcGVjLgorICAgICAgICBodHRwOi8vaHRtbDUtbWVkaWFzb3VyY2UtYXBp
Lmdvb2dsZWNvZGUuY29tL3N2bi90YWdzLzAuNC9kcmFmdC1zcGVjL21lZGlhc291cmNlLWRyYWZ0
LXNwZWMuaHRtbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODM2MTYKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24sIERhcmluIEZpc2hl
ci4KKworICAgICAgICAqIHB1YmxpYy9XZWJNZWRpYVBsYXllci5oOgorICAgICAgICAoV2ViS2l0
OjpXZWJNZWRpYVBsYXllcjo6c291cmNlQWRkSWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRp
YVBsYXllcjo6c291cmNlUmVtb3ZlSWQpOgorICAgICAgICAqIHNyYy9Bc3NlcnRNYXRjaGluZ0Vu
dW1zLmNwcDoKKyAgICAgICAgKiBzcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpzb3VyY2VBZGRJZCk6Cisg
ICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVBsYXllckNsaWVudElt
cGw6OnNvdXJjZVJlbW92ZUlkKToKKyAgICAgICAgKiBzcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJ
bXBsLmg6CisgICAgICAgIChXZWJNZWRpYVBsYXllckNsaWVudEltcGwpOgorCiAyMDEyLTA0LTE1
ICBLZWlzaGkgSGF0dG9yaSAgPGtlaXNoaUB3ZWJraXQub3JnPgogCiAgICAgICAgIEludHJvZHVj
ZSBNZW51SXRlbUlEIHRvIGF1dG9maWxsIHBvcHVwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcAppbmRleCAxODJjZGVkNmI4NjdiODJhZWY0NGJhMTBhOTc3ODI4MDZkY2Nm
NWVmLi5hOTA3MDJiY2JjMWQ5MzkxODhiM2M3NGZlMTc1YTZlMTM4OWMxNDA0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTE2OTQsNiArMTY5NCwyMiBAQCBT
dHJpbmcgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJTb3VyY2VVUkwoKSBjb25zdAogewog
ICAgIHJldHVybiBtX21lZGlhU291cmNlVVJMLnN0cmluZygpOwogfQorCitib29sIEhUTUxNZWRp
YUVsZW1lbnQ6OmlzVmFsaWRTb3VyY2VJZChjb25zdCBTdHJpbmcmIGlkLCBFeGNlcHRpb25Db2Rl
JiBlYykgY29uc3QKK3sKKyAgICBpZiAoaWQuaXNOdWxsKCkgfHwgaWQuaXNFbXB0eSgpKSB7Cisg
ICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOworICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorCisgICAgaWYgKCFtX3NvdXJjZUlEcy5jb250YWlucyhpZCkpIHsKKyAgICAgICAgZWMg
PSBTWU5UQVhfRVJSOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJu
IHRydWU7Cit9CisKICNlbmRpZgogCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKQEAgLTIy
ODEsNiArMjI5Nyw1OSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnBhdXNlSW50ZXJuYWwoKQog
fQogCiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6d2Vi
a2l0U291cmNlQWRkSWQoY29uc3QgU3RyaW5nJiBpZCwgY29uc3QgU3RyaW5nJiB0eXBlLCBFeGNl
cHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoaWQuaXNOdWxsKCkgfHwgaWQuaXNFbXB0eSgpKSB7
CisgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgaWYgKG1fc291cmNlSURzLmNvbnRhaW5zKGlkKSkgeworICAgICAgICBlYyA9IElO
VkFMSURfU1RBVEVfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKHR5cGUu
aXNOdWxsKCkgfHwgdHlwZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VT
U19FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIW1fcGxheWVyIHx8IG1f
Y3VycmVudFNyYyAhPSBtX21lZGlhU291cmNlVVJMIHx8IG1fc291cmNlU3RhdGUgIT0gU09VUkNF
X09QRU4pIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIHN3aXRjaCAobV9wbGF5ZXItPnNvdXJjZUFkZElkKGlkLCB0eXBlKSkg
eworICAgIGNhc2UgTWVkaWFQbGF5ZXI6Ok9rOgorICAgICAgICBtX3NvdXJjZUlEcy5hZGQoaWQp
OworICAgICAgICByZXR1cm47CisgICAgY2FzZSBNZWRpYVBsYXllcjo6Tm90U3VwcG9ydGVkOgor
ICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOworICAgICAgICByZXR1cm47CisgICAgY2Fz
ZSBNZWRpYVBsYXllcjo6UmVhY2hlZElkTGltaXQ6CisgICAgICAgIGVjID0gUVVPVEFfRVhDRUVE
RURfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6d2Via2l0U291cmNlUmVtb3ZlSWQoY29u
c3QgU3RyaW5nJiBpZCwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKCFpc1ZhbGlkU291
cmNlSWQoaWQsIGVjKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFtX3BsYXllciB8fCBt
X2N1cnJlbnRTcmMgIT0gbV9tZWRpYVNvdXJjZVVSTCB8fCBtX3NvdXJjZVN0YXRlID09IFNPVVJD
RV9DTE9TRUQpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGlmICghbV9wbGF5ZXItPnNvdXJjZVJlbW92ZUlkKGlkKSkKKyAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisKKyAgICBtX3NvdXJjZUlEcy5yZW1vdmUoaWQp
OworfQorCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OndlYmtpdFNvdXJjZUFwcGVuZChQYXNzUmVm
UHRyPFVpbnQ4QXJyYXk+IGRhdGEsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlmICghbV9w
bGF5ZXIgfHwgbV9jdXJyZW50U3JjICE9IG1fbWVkaWFTb3VyY2VVUkwgfHwgbV9zb3VyY2VTdGF0
ZSAhPSBTT1VSQ0VfT1BFTikgewpAQCAtMjMzNiw2ICsyNDA1LDcgQEAgdm9pZCBIVE1MTWVkaWFF
bGVtZW50OjpzZXRTb3VyY2VTdGF0ZShTb3VyY2VTdGF0ZSBzdGF0ZSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgaWYgKG1fc291cmNlU3RhdGUgPT0gU09VUkNFX0NMT1NFRCkgeworICAgICAgICBt
X3NvdXJjZUlEcy5jbGVhcigpOwogICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS53
ZWJraXRzb3VyY2VjbG9zZUV2ZW50KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggMDNhY2UyODI5ODRlNDI3YjBhNGFmZGM1
ZDU0ZTY1NzA1ZjE4NzEwMi4uMzc3YWRlYTBmYTQxYzM2MDJiNjY5ODU3Mzc2NTAxZjdlMWNlZDUx
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTE3Miw2ICsxNzIs
OCBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKIC8vICBNZWRpYSBTb3VyY2Uu
CiAgICAgY29uc3QgS1VSTCYgd2Via2l0TWVkaWFTb3VyY2VVUkwoKSBjb25zdCB7IHJldHVybiBt
X21lZGlhU291cmNlVVJMOyB9CisgICAgdm9pZCB3ZWJraXRTb3VyY2VBZGRJZChjb25zdCBTdHJp
bmcmLCBjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCB3ZWJraXRTb3Vy
Y2VSZW1vdmVJZChjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCB3ZWJr
aXRTb3VyY2VBcHBlbmQoUGFzc1JlZlB0cjxVaW50OEFycmF5PiBkYXRhLCBFeGNlcHRpb25Db2Rl
Jik7CiAgICAgZW51bSBFbmRPZlN0cmVhbVN0YXR1cyB7IEVPU19OT19FUlJPUiwgRU9TX05FVFdP
UktfRVJSLCBFT1NfREVDT0RFX0VSUiB9OwogICAgIHZvaWQgd2Via2l0U291cmNlRW5kT2ZTdHJl
YW0odW5zaWduZWQgc2hvcnQsIEV4Y2VwdGlvbkNvZGUmKTsKQEAgLTQwNyw2ICs0MDksNyBAQCBw
cml2YXRlOgogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCiAgICAgdmlydHVhbCB2b2lkIG1lZGlh
UGxheWVyU291cmNlT3BlbmVkKCk7CiAgICAgdmlydHVhbCBTdHJpbmcgbWVkaWFQbGF5ZXJTb3Vy
Y2VVUkwoKSBjb25zdDsKKyAgICBib29sIGlzVmFsaWRTb3VyY2VJZChjb25zdCBTdHJpbmcmLCBF
eGNlcHRpb25Db2RlJikgY29uc3Q7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVE
SUEpCkBAIC01NzcsNiArNTgwLDcgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoTUVESUFfU09VUkNF
KQogICAgIEtVUkwgbV9tZWRpYVNvdXJjZVVSTDsKICAgICBTb3VyY2VTdGF0ZSBtX3NvdXJjZVN0
YXRlOworICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3NvdXJjZUlEczsKICNlbmRpZgogCiAgICAgbXV0
YWJsZSBmbG9hdCBtX2NhY2hlZFRpbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmlkbAppbmRleCA4Nzg1NGJlMGY1MTMzNDU2YjllMTYwOGI5ODJkMDBhZDM2Y2M2ZTQ5Li41
YjljMTAxY2ViMmZiMTJjYzg2ZDMwMDAzMGYyMDY2NGJiMDE2Y2M2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5pZGwKQEAgLTk5LDYgKzk5LDEwIEBAIG1vZHVsZSBodG1s
IHsKICAgICAvLyBVUkwgcGFzc2VkIHRvIHNyYyBhdHRyaWJ1dGUgdG8gZW5hYmxlIHRoZSBtZWRp
YSBzb3VyY2UgbG9naWMuCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtWOEVuYWJsZWRBdFJ1bnRp
bWU9bWVkaWFTb3VyY2UsIFVSTF0gRE9NU3RyaW5nIHdlYmtpdE1lZGlhU291cmNlVVJMOwogCisg
ICAgLy8gTWFuYWdlcyBJRHMgZm9yIGFwcGVuZGluZyBtZWRpYSB0byB0aGUgc291cmNlLgorICAg
IFtWOEVuYWJsZWRBdFJ1bnRpbWU9bWVkaWFTb3VyY2VdIHZvaWQgd2Via2l0U291cmNlQWRkSWQo
aW4gRE9NU3RyaW5nIGlkLCBpbiBET01TdHJpbmcgdHlwZSkgcmFpc2VzIChET01FeGNlcHRpb24p
OworICAgIFtWOEVuYWJsZWRBdFJ1bnRpbWU9bWVkaWFTb3VyY2VdIHZvaWQgd2Via2l0U291cmNl
UmVtb3ZlSWQoaW4gRE9NU3RyaW5nIGlkKSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CisKICAgICAv
LyBBcHBlbmRzIG1lZGlhIHRvIHRvIHRoZSBzb3VyY2UuCiAgICAgW1Y4RW5hYmxlZEF0UnVudGlt
ZT1tZWRpYVNvdXJjZV0gdm9pZCB3ZWJraXRTb3VyY2VBcHBlbmQoaW4gVWludDhBcnJheSBkYXRh
KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAppbmRleCBlOThlYmZkNzViYjk5YzUzZDEwMjcwZDhm
YmY4OGM3YjYyMjAzMTc4Li4xZTgxODU3ZTgwMWU2M2U0ZmMwMGEzNmU3MTMxYzUyOGYwZTNhYjgy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIu
Y3BwCkBAIC0xNDksNiArMTQ5LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBoYXNTaW5n
bGVTZWN1cml0eU9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAogI2lmIEVOQUJMRShN
RURJQV9TT1VSQ0UpCisgICAgdmlydHVhbCBNZWRpYVBsYXllcjo6QWRkSWRTdGF0dXMgc291cmNl
QWRkSWQoY29uc3QgU3RyaW5nJiBpZCwgY29uc3QgU3RyaW5nJiB0eXBlKSB7IHJldHVybiBNZWRp
YVBsYXllcjo6Tm90U3VwcG9ydGVkOyB9CisgICAgdmlydHVhbCBib29sIHNvdXJjZVJlbW92ZUlk
KGNvbnN0IFN0cmluZyYgaWQpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIHNv
dXJjZUFwcGVuZChjb25zdCB1bnNpZ25lZCBjaGFyKiwgdW5zaWduZWQpIHsgcmV0dXJuIGZhbHNl
OyB9CiAgICAgdmlydHVhbCB2b2lkIHNvdXJjZUVuZE9mU3RyZWFtKE1lZGlhUGxheWVyOjpFbmRP
ZlN0cmVhbVN0YXR1cyBzdGF0dXMpIHsgfQogI2VuZGlmCkBAIC00NTYsNiArNDU4LDE3IEBAIHZv
aWQgTWVkaWFQbGF5ZXI6OnBhdXNlKCkKIH0KIAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCisK
K01lZGlhUGxheWVyOjpBZGRJZFN0YXR1cyBNZWRpYVBsYXllcjo6c291cmNlQWRkSWQoY29uc3Qg
U3RyaW5nJiBpZCwgY29uc3QgU3RyaW5nJiB0eXBlKQoreworICAgIHJldHVybiBtX3ByaXZhdGUt
PnNvdXJjZUFkZElkKGlkLCB0eXBlKTsKK30KKworYm9vbCBNZWRpYVBsYXllcjo6c291cmNlUmVt
b3ZlSWQoY29uc3QgU3RyaW5nJiBpZCkKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5zb3VyY2VS
ZW1vdmVJZChpZCk7Cit9CisKIGJvb2wgTWVkaWFQbGF5ZXI6OnNvdXJjZUFwcGVuZChjb25zdCB1
bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCiB7CiAgICAgcmV0dXJuIG1fcHJp
dmF0ZS0+c291cmNlQXBwZW5kKGRhdGEsIGxlbmd0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAppbmRleCBkOWI2ZTI3MDAzY2IxZjhjOWJkNjkw
OTAwNGExMjg1MGFkNThmOWMwLi40MjllNWZjZjU1OGRjMjMwYjRjMDMzZDZmMWE2MWU3ZmNiOGQ5
NTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
LmgKQEAgLTIyOSw2ICsyMjksOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBwYXVzZSgpOyAgICAKIAog
I2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCisgICAgZW51bSBBZGRJZFN0YXR1cyB7IE9rLCBOb3RT
dXBwb3J0ZWQsIFJlYWNoZWRJZExpbWl0IH07CisgICAgQWRkSWRTdGF0dXMgc291cmNlQWRkSWQo
Y29uc3QgU3RyaW5nJiBpZCwgY29uc3QgU3RyaW5nJiB0eXBlKTsKKyAgICBib29sIHNvdXJjZVJl
bW92ZUlkKGNvbnN0IFN0cmluZyYgaWQpOwogICAgIGJvb2wgc291cmNlQXBwZW5kKGNvbnN0IHVu
c2lnbmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgZW51bSBFbmRPZlN0cmVh
bVN0YXR1cyB7IEVvc05vRXJyb3IsIEVvc05ldHdvcmtFcnJvciwgRW9zRGVjb2RlRXJyb3IgfTsK
ICAgICB2b2lkIHNvdXJjZUVuZE9mU3RyZWFtKEVuZE9mU3RyZWFtU3RhdHVzKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgK
aW5kZXggMzc4YjI1OWU4MzUyMDdkNjdiMjJhYmI5MDNkZWVmMmQ5NGNjMjhjMS4uZmY1NWQxYjBi
NWFjMDgyMmJiNTZmZGQ3Yzk1Yzg1MTVhMjNlM2U2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKQEAgLTE1OCw2ICsx
NTgsOCBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCisgICAg
dmlydHVhbCBNZWRpYVBsYXllcjo6QWRkSWRTdGF0dXMgc291cmNlQWRkSWQoY29uc3QgU3RyaW5n
JiwgY29uc3QgU3RyaW5nJikgeyByZXR1cm4gTWVkaWFQbGF5ZXI6Ok5vdFN1cHBvcnRlZDsgfQor
ICAgIHZpcnR1YWwgYm9vbCBzb3VyY2VSZW1vdmVJZChjb25zdCBTdHJpbmcmKSB7IHJldHVybiBm
YWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBzb3VyY2VBcHBlbmQoY29uc3QgdW5zaWduZWQgY2hh
ciosIHVuc2lnbmVkKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzb3VyY2VF
bmRPZlN0cmVhbShNZWRpYVBsYXllcjo6RW5kT2ZTdHJlYW1TdGF0dXMpIHsgfTsKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFQbGF5ZXIu
aCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk1lZGlhUGxheWVyLmgKaW5kZXgg
MjA0OWI1OWIwMmFiZTNhMTAyNDJlMjdlY2UyYmJlN2Y5MjdmN2QzNy4uMjMxY2Y5NTZkZGIxM2Ew
MDI2ZjQ1NDY2YTFmZTMwZjg1YTU2YjY5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViTWVkaWFQbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJNZWRpYVBsYXllci5oCkBAIC0zMyw2ICszMyw3IEBACiAKICNpbmNsdWRlICJX
ZWJWaWRlb0ZyYW1lLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViQ2FudmFzLmgiCisjaW5jbHVk
ZSAicGxhdGZvcm0vV2ViU3RyaW5nLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViVmVjdG9yLmgi
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtODksNiArOTAsMTIgQEAgcHVibGljOgogICAgICAg
ICBBdXRvLAogICAgIH07CiAKKyAgICBlbnVtIEFkZElkU3RhdHVzIHsKKyAgICAgICAgQWRkSWRT
dGF0dXNPaywKKyAgICAgICAgQWRkSWRTdGF0dXNOb3RTdXBwb3J0ZWQsCisgICAgICAgIEFkZElk
U3RhdHVzUmVhY2hlZElkTGltaXQKKyAgICB9OworCiAgICAgZW51bSBFbmRPZlN0cmVhbVN0YXR1
cyB7CiAgICAgICAgIEVvc05vRXJyb3IsCiAgICAgICAgIEVvc05ldHdvcmtFcnJvciwKQEAgLTE3
Niw2ICsxODMsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFdlYkF1ZGlvU291cmNlUHJvdmlk
ZXIqIGF1ZGlvU291cmNlUHJvdmlkZXIoKSB7IHJldHVybiAwOyB9CiAKKyAgICB2aXJ0dWFsIEFk
ZElkU3RhdHVzIHNvdXJjZUFkZElkKGNvbnN0IFdlYlN0cmluZyYgaWQsIGNvbnN0IFdlYlN0cmlu
ZyYgdHlwZSkgeyByZXR1cm4gQWRkSWRTdGF0dXNOb3RTdXBwb3J0ZWQ7IH0KKyAgICB2aXJ0dWFs
IGJvb2wgc291cmNlUmVtb3ZlSWQoY29uc3QgV2ViU3RyaW5nJiBpZCkgeyByZXR1cm4gZmFsc2U7
IH0KICAgICB2aXJ0dWFsIGJvb2wgc291cmNlQXBwZW5kKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRh
dGEsIHVuc2lnbmVkIGxlbmd0aCkgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQg
c291cmNlRW5kT2ZTdHJlYW0oRW5kT2ZTdHJlYW1TdGF0dXMpICB7IH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcAppbmRleCA0ODUx
ZWM5NzlhMTViNTc4NDUyMWE2ZjZjMmQyYTY1NWQ1NGNmZmQ1Li42YzE1NDczYTAyZTUzYzRkZGMx
MmMwZTA4ODgxOTQzMmI1NjNjNzE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcApAQCAtMzg3LDYgKzM4NywxMiBAQCBDT01QSUxF
X0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYk1lZGlhUGxheWVyOjpEb3dubG9hZCwgTWVkaWFQbGF5
ZXI6OkRvd25sb2FkKTsKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViTWVkaWFQbGF5
ZXI6OlN0b3JlZFN0cmVhbSwgTWVkaWFQbGF5ZXI6OlN0b3JlZFN0cmVhbSk7CiBDT01QSUxFX0FT
U0VSVF9NQVRDSElOR19FTlVNKFdlYk1lZGlhUGxheWVyOjpMaXZlU3RyZWFtLCBNZWRpYVBsYXll
cjo6TGl2ZVN0cmVhbSk7CiAKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorQ09NUElMRV9BU1NF
UlRfTUFUQ0hJTkdfRU5VTShXZWJNZWRpYVBsYXllcjo6QWRkSWRTdGF0dXNPaywgTWVkaWFQbGF5
ZXI6Ok9rKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViTWVkaWFQbGF5ZXI6OkFk
ZElkU3RhdHVzTm90U3VwcG9ydGVkLCBNZWRpYVBsYXllcjo6Tm90U3VwcG9ydGVkKTsKK0NPTVBJ
TEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViTWVkaWFQbGF5ZXI6OkFkZElkU3RhdHVzUmVhY2hl
ZElkTGltaXQsIE1lZGlhUGxheWVyOjpSZWFjaGVkSWRMaW1pdCk7CisjZW5kaWYKKwogI2lmIEVO
QUJMRShFTkNSWVBURURfTUVESUEpCiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYk1l
ZGlhUGxheWVyOjpOb0Vycm9yLCBNZWRpYVBsYXllcjo6Tm9FcnJvcik7CiBDT01QSUxFX0FTU0VS
VF9NQVRDSElOR19FTlVNKFdlYk1lZGlhUGxheWVyOjpJbnZhbGlkUGxheWVyU3RhdGUsIE1lZGlh
UGxheWVyOjpJbnZhbGlkUGxheWVyU3RhdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5jcHAKaW5kZXggNDYwMGZiODQz
MDMwOWU1NWU3NzdjZjFhMTYwYmJjNGM3MTQwOTY0Yi4uMzQyM2IwZDFiY2I0ZGY0N2FlYTg2OTRi
YTgzOTExNjEyNTkyZTM4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuY3BwCkBAIC0zNDAsNiArMzQwLDIyIEBAIHZv
aWQgV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpwYXVzZSgpCiB9CiAKICNpZiBFTkFCTEUoTUVE
SUFfU09VUkNFKQorV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OkFkZElkU3RhdHVzIFdlYk1lZGlhUGxh
eWVyQ2xpZW50SW1wbDo6c291cmNlQWRkSWQoY29uc3QgU3RyaW5nJiBpZCwgY29uc3QgU3RyaW5n
JiB0eXBlKQoreworICAgIGlmICghbV93ZWJNZWRpYVBsYXllcikKKyAgICAgICAgcmV0dXJuIFdl
YkNvcmU6Ok1lZGlhUGxheWVyOjpOb3RTdXBwb3J0ZWQ7CisKKyAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8V2ViQ29yZTo6TWVkaWFQbGF5ZXI6OkFkZElkU3RhdHVzPihtX3dlYk1lZGlhUGxheWVyLT5z
b3VyY2VBZGRJZChpZCwgdHlwZSkpOworfQorCitib29sIFdlYk1lZGlhUGxheWVyQ2xpZW50SW1w
bDo6c291cmNlUmVtb3ZlSWQoY29uc3QgU3RyaW5nJiBpZCkKK3sKKyAgICBpZiAoIW1fd2ViTWVk
aWFQbGF5ZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBtX3dlYk1lZGlh
UGxheWVyLT5zb3VyY2VSZW1vdmVJZChpZCk7Cit9CisKIGJvb2wgV2ViTWVkaWFQbGF5ZXJDbGll
bnRJbXBsOjpzb3VyY2VBcHBlbmQoY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQg
bGVuZ3RoKQogewogICAgIGlmIChtX3dlYk1lZGlhUGxheWVyKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmggYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuaAppbmRleCBiYTE3
MzBmNWY3OGQ1MGEyZDk4ZTZlZTZmMGE2MTlkNGE0ZWMyZDMxLi42MWEzODdlNjA3YjIwMGQ4ODJj
MzY0ZTQwZDc0NGZiMDc1MmI3YjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuaApAQCAtMTQ5LDYgKzE0OSw4IEBAIHB1
YmxpYzoKICNlbmRpZgogCiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKKyAgICB2aXJ0dWFsIFdl
YkNvcmU6Ok1lZGlhUGxheWVyOjpBZGRJZFN0YXR1cyBzb3VyY2VBZGRJZChjb25zdCBTdHJpbmcm
IGlkLCBjb25zdCBTdHJpbmcmIHR5cGUpOworICAgIHZpcnR1YWwgYm9vbCBzb3VyY2VSZW1vdmVJ
ZChjb25zdCBTdHJpbmcmKTsKICAgICB2aXJ0dWFsIGJvb2wgc291cmNlQXBwZW5kKGNvbnN0IHVu
c2lnbmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgdmlydHVhbCB2b2lkIHNv
dXJjZUVuZE9mU3RyZWFtKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpFbmRPZlN0cmVhbVN0YXR1cyk7
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwppbmRleCBkMzc3Nzk1ZjE5NDkwYTU1YjEzNWQ1NGQ3ODAyMjUwZjJlZWZjY2Zk
Li4zNGNjODU2ZWZkMzE1OTI5NjJkNzZkMGY2YjFlOGY4NjA3Njk4N2I2IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTQgQEAKKzIwMTItMDQtMTYgIEFhcm9uIENvbHdlbGwgIDxhY29sd2VsbEBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgQWRkIExheW91dFRlc3RzIGZvciBuZXcgd2Via2l0U291cmNlQWRkSWQo
KSAmIHdlYmtpdFNvdXJjZVJlbW92ZUlkKCkgbWV0aG9kcy4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgzNjE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
RXJpYyBDYXJsc29uLCBEYXJpbiBGaXNoZXIuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL21lZGlh
L21lZGlhLXNvdXJjZS93ZWJtL3ZpZGVvLW1lZGlhLXNvdXJjZS1hZGQtYW5kLXJlbW92ZS1pZHMt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL21lZGlhL21lZGlhLXNv
dXJjZS93ZWJtL3ZpZGVvLW1lZGlhLXNvdXJjZS1hZGQtYW5kLXJlbW92ZS1pZHMuaHRtbDogQWRk
ZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0Ogor
CiAyMDEyLTA0LTE2ICBYaWFvbWVpIEppICA8eGppQGNocm9taXVtLm9yZz4KIAogICAgICAgICBb
Y2hyb21pdW1dIHdyb25nIGp1c3RpZmljYXRpb24gZm9yIGFyYWJpYy9wZXJzaWFuIHBhZ2UgaW4g
Y3Itd2luLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9tZWRpYS9tZWRpYS1z
b3VyY2Uvd2VibS92aWRlby1tZWRpYS1zb3VyY2UtYWRkLWFuZC1yZW1vdmUtaWRzLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL3dlYm0vdmlk
ZW8tbWVkaWEtc291cmNlLWFkZC1hbmQtcmVtb3ZlLWlkcy1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMWUxYjgxMDQ3MGQ5NTFhNGQxMGU2MWYxODgwZjY1YTBmY2YyMzE4NQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL3dlYm0vdmlk
ZW8tbWVkaWEtc291cmNlLWFkZC1hbmQtcmVtb3ZlLWlkcy1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSw0MiBAQAorVGVzdHMgd2Via2l0U291cmNlQWRkSWQoKSAmIHdlYmtpdFNvdXJjZVJlbW92ZUlk
KCkgbWV0aG9kcworCisKK3J1bm5pbmcgdGVzdEFkZElkRmFpbHVyZUNhc2VzCitHb3QgZXhwZWN0
ZWQgZXhjZXB0aW9uIEVycm9yOiBJTlZBTElEX1NUQVRFX0VSUjogRE9NIEV4Y2VwdGlvbiAxMQor
RVZFTlQobG9hZHN0YXJ0KQorRVZFTlQod2Via2l0c291cmNlb3BlbikKK1Rlc3QgZW1wdHkgSUQg
Y2FzZQorR290IGV4cGVjdGVkIGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9BQ0NFU1NfRVJSOiBE
T00gRXhjZXB0aW9uIDE1CitUZXN0IGFkZGluZyB0aGUgc2FtZSBJRCBhZ2Fpbi4KK0dvdCBleHBl
Y3RlZCBleGNlcHRpb24gRXJyb3I6IElOVkFMSURfU1RBVEVfRVJSOiBET00gRXhjZXB0aW9uIDEx
CitUZXN0IGVtcHR5IHR5cGUuCitHb3QgZXhwZWN0ZWQgZXhjZXB0aW9uIEVycm9yOiBJTlZBTElE
X0FDQ0VTU19FUlI6IERPTSBFeGNlcHRpb24gMTUKK1Rlc3QgYW4gdW5zdXBwb3J0ZWQgdHlwZS4K
K0dvdCBleHBlY3RlZCBleGNlcHRpb24gRXJyb3I6IE5PVF9TVVBQT1JURURfRVJSOiBET00gRXhj
ZXB0aW9uIDkKK1Rlc3QgcmVhY2hpbmcgc291cmNlSUQgbGltaXQuCitHb3QgZXhwZWN0ZWQgZXhj
ZXB0aW9uIEVycm9yOiBJTlZBTElEX1NUQVRFX0VSUjogRE9NIEV4Y2VwdGlvbiAxMQorCitydW5u
aW5nIHRlc3RSZW1vdmVJZEZhaWx1cmVDYXNlcworRVZFTlQobG9hZHN0YXJ0KQorRVZFTlQod2Vi
a2l0c291cmNlb3BlbikKK1Rlc3QgZW1wdHkgSUQgY2FzZQorR290IGV4cGVjdGVkIGV4Y2VwdGlv
biBFcnJvcjogSU5WQUxJRF9BQ0NFU1NfRVJSOiBET00gRXhjZXB0aW9uIDE1CitUZXN0IHJlbW92
aW5nIGFuIElEIHRoYXQgd2FzIG5ldmVyIGFkZGVkLgorR290IGV4cGVjdGVkIGV4Y2VwdGlvbiBF
cnJvcjogU1lOVEFYX0VSUjogRE9NIEV4Y2VwdGlvbiAxMgorR290IGV4cGVjdGVkIGV4Y2VwdGlv
biBFcnJvcjogU1lOVEFYX0VSUjogRE9NIEV4Y2VwdGlvbiAxMgorVGVzdCBhZGRpbmcgdGhlIHNh
bWUgSUQgYWdhaW4uCitUZXN0IHRoYXQgYW4gSUQgY2FuIGJlIHJlbW92ZWQgd2hpbGUgaW4gdGhl
IGVuZGVkIHN0YXRlLgorCitydW5uaW5nIHRlc3RBcHBlbmRGYWlsdXJlQ2FzZXMKK0VWRU5UKGxv
YWRzdGFydCkKK0VWRU5UKHdlYmtpdHNvdXJjZW9wZW4pCitUZXN0IGFwcGVuZCB3aXRoIGVtcHR5
IElELgorR290IGV4cGVjdGVkIGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9BQ0NFU1NfRVJSOiBE
T00gRXhjZXB0aW9uIDE1CitUZXN0IGFwcGVuZCB3aXRoIGFuIGludmFsaWQgSUQKK0dvdCBleHBl
Y3RlZCBleGNlcHRpb24gRXJyb3I6IFNZTlRBWF9FUlI6IERPTSBFeGNlcHRpb24gMTIKK1Rlc3Qg
YXBwZW5kIHdpdGggYSBudWxsIGJ1ZmZlci4KK0dvdCBleHBlY3RlZCBleGNlcHRpb24gRXJyb3I6
IElOVkFMSURfQUNDRVNTX0VSUjogRE9NIEV4Y2VwdGlvbiAxNQorVGVzdCBhIHN1Y2Nlc3NmdWwg
YXBwZW5kLgorR290IGV4cGVjdGVkIGV4Y2VwdGlvbiBFcnJvcjogU1lOVEFYX0VSUjogRE9NIEV4
Y2VwdGlvbiAxMgorRU5EIE9GIFRFU1QKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2Uvd2VibS92aWRlby1tZWRpYS1zb3VyY2UtYWRkLWFuZC1y
ZW1vdmUtaWRzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21lZGlhL21lZGlhLXNvdXJj
ZS93ZWJtL3ZpZGVvLW1lZGlhLXNvdXJjZS1hZGQtYW5kLXJlbW92ZS1pZHMuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42MjRlNWJhYWM1YTQ3YzgwYmVkYWNkMzVjNTgxZGExZjAyZDVmODRjCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2Uvd2VibS92
aWRlby1tZWRpYS1zb3VyY2UtYWRkLWFuZC1yZW1vdmUtaWRzLmh0bWwKQEAgLTAsMCArMSwyMTUg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9tZWRpYS1yZXNvdXJjZXMvdmlkZW8tdGVzdC5qcyI+PC9zY3JpcHQ+Cisg
ICAgICAgIDxzY3JpcHQgc3JjPSJ3ZWJtLW1lZGlhLXNvdXJjZS5qcyI+PC9zY3JpcHQ+CisgICAg
ICAgIDxzY3JpcHQ+CisgICAgICAgICAgICB2YXIgZGVmYXVsdFNvdXJjZU1pbWV0eXBlID0gInZp
ZGVvL3dlYm07IGNvZGVjcz1cInZwOCwgdm9yYmlzXCIiOworCisgICAgICAgICAgICBmdW5jdGlv
biBydW5PblNvdXJjZU9wZW4odmlkZW9UYWcsIG9uT3BlbkZ1bmN0aW9uKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIHZhciBldmVudEhhbmRsZXJGdW5jdGlvbiA9IGZ1bmN0aW9uIChl
dmVudCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGV2ZW50LnRhcmdl
dC5yZW1vdmVFdmVudExpc3RlbmVyKCd3ZWJraXRzb3VyY2VvcGVuJywgZXZlbnRIYW5kbGVyRnVu
Y3Rpb24pOworICAgICAgICAgICAgICAgICAgICBvbk9wZW5GdW5jdGlvbihldmVudC50YXJnZXQp
OworICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgdmlkZW9UYWcuYWRkRXZlbnRM
aXN0ZW5lcignd2Via2l0c291cmNlb3BlbicsIGV2ZW50SGFuZGxlckZ1bmN0aW9uKTsKKyAgICAg
ICAgICAgICAgICBzZXRTcmNUb01lZGlhU291cmNlVVJMKHZpZGVvVGFnKTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgLy8gVGhlIGluZGV4IG9mIHRoZSBuZXh0IGNsdXN0ZXIgdG8gc2Vu
ZCB0byBhcHBlbmREYXRhKCkuCisgICAgICAgICAgICB2YXIgbmV4dENsdXN0ZXJJbmRleCA9IDA7
CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGV4cGVjdEV4Y2VwdGlvbk9uQWRkSWQodmlkZW9UYWcs
IGlkLCB0eXBlLCBlcnJvcikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB0cnkgewor
ICAgICAgICAgICAgICAgICAgICB2aWRlb1RhZy53ZWJraXRTb3VyY2VBZGRJZChpZCwgdHlwZSk7
CisgICAgICAgICAgICAgICAgICAgIGZhaWxUZXN0KCJFeHBlY3RlZCBhbiBleGNlcHRpb24iKTsK
KyAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICgh
KGUuY29kZSA9PSBlcnJvcikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZhaWxUZXN0KCJV
bmV4cGVjdGVkIGV4Y2VwdGlvbiAiICsgZSk7CisgICAgICAgICAgICAgICAgICAgICAgICB0aHJv
dyBlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGNvbnNvbGVX
cml0ZSgiR290IGV4cGVjdGVkIGV4Y2VwdGlvbiAiICsgZSk7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBleHBlY3RFeGNlcHRpb25PblJl
bW92ZUlkKHZpZGVvVGFnLCBpZCwgZXJyb3IpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgdmlkZW9UYWcud2Via2l0U291cmNlUmVtb3Zl
SWQoaWQpOworICAgICAgICAgICAgICAgICAgICBmYWlsVGVzdCgiRXhwZWN0ZWQgYW4gZXhjZXB0
aW9uIik7CisgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgICAgICAg
ICBpZiAoIShlLmNvZGUgPT0gZXJyb3IpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBmYWls
VGVzdCgiVW5leHBlY3RlZCBleGNlcHRpb24gIiArIGUpOworICAgICAgICAgICAgICAgICAgICAg
ICAgdGhyb3cgZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBj
b25zb2xlV3JpdGUoIkdvdCBleHBlY3RlZCBleGNlcHRpb24gIiArIGUpOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gZXhwZWN0RXhjZXB0
aW9uT25BcHBlbmQodmlkZW9UYWcsIGlkLCBidWYsIGVycm9yKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIHZpZGVvVGFnLndlYmtpdFNv
dXJjZUFwcGVuZChpZCwgYnVmKTsKKyAgICAgICAgICAgICAgICAgICAgZmFpbFRlc3QoIkV4cGVj
dGVkIGFuIGV4Y2VwdGlvbiIpOworICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKCEoZS5jb2RlID09IGVycm9yKSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgZmFpbFRlc3QoIlVuZXhwZWN0ZWQgZXhjZXB0aW9uICIgKyBlKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHRocm93IGU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgY29uc29sZVdyaXRlKCJHb3QgZXhwZWN0ZWQgZXhjZXB0aW9uICIgKyBlKTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9u
IHRlc3RBZGRJZEZhaWx1cmVDYXNlcyh2aWRlb1RhZykKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAvLyBUZXN0IGFkZGluZyB3aGlsZSBjbG9zZWQuCisgICAgICAgICAgICAgICAgZXhw
ZWN0RXhjZXB0aW9uT25BZGRJZCh2aWRlb1RhZywgIjEyMyIsIGRlZmF1bHRTb3VyY2VNaW1ldHlw
ZSwgRE9NRXhjZXB0aW9uLklOVkFMSURfU1RBVEVfRVJSKTsKKworICAgICAgICAgICAgICAgIHJ1
bk9uU291cmNlT3Blbih2aWRlb1RhZywgZnVuY3Rpb24gKHZ0KQorICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCJUZXN0IGVtcHR5IElEIGNhc2UiKTsK
KyAgICAgICAgICAgICAgICAgICAgZXhwZWN0RXhjZXB0aW9uT25BZGRJZCh2dCwgIiIsIGRlZmF1
bHRTb3VyY2VNaW1ldHlwZSwgRE9NRXhjZXB0aW9uLklOVkFMSURfQUNDRVNTX0VSUik7CisKKyAg
ICAgICAgICAgICAgICAgICAgdnQud2Via2l0U291cmNlQWRkSWQoIjEyMyIsIGRlZmF1bHRTb3Vy
Y2VNaW1ldHlwZSk7CisKKyAgICAgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCJUZXN0IGFk
ZGluZyB0aGUgc2FtZSBJRCBhZ2Fpbi4iKTsKKyAgICAgICAgICAgICAgICAgICAgZXhwZWN0RXhj
ZXB0aW9uT25BZGRJZCh2dCwgIjEyMyIsIGRlZmF1bHRTb3VyY2VNaW1ldHlwZSwgRE9NRXhjZXB0
aW9uLklOVkFMSURfU1RBVEVfRVJSKTsKKyAgICAgICAgICAgICAgICAgICAgdnQud2Via2l0U291
cmNlUmVtb3ZlSWQoIjEyMyIpOworCisgICAgICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgi
VGVzdCBlbXB0eSB0eXBlLiIpOworICAgICAgICAgICAgICAgICAgICBleHBlY3RFeGNlcHRpb25P
bkFkZElkKHZ0LCAiMjM0IiwgIiIsIERPTUV4Y2VwdGlvbi5JTlZBTElEX0FDQ0VTU19FUlIpOwor
CisgICAgICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiVGVzdCBhbiB1bnN1cHBvcnRlZCB0
eXBlLiIpOworICAgICAgICAgICAgICAgICAgICBleHBlY3RFeGNlcHRpb25PbkFkZElkKHZ0LCAi
MjM0IiwgImF1ZGlvL3dhdiIsIERPTUV4Y2VwdGlvbi5OT1RfU1VQUE9SVEVEX0VSUik7CisKKyAg
ICAgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCJUZXN0IHJlYWNoaW5nIHNvdXJjZUlEIGxp
bWl0LiIpOworICAgICAgICAgICAgICAgICAgICB2YXIgcmVhY2hlZElkTGltaXQgPSBmYWxzZTsK
KworICAgICAgICAgICAgICAgICAgICAvLyBUaGUgMjAgaGVyZSBpcyBhbiBhcmJpdHJhcnkgdXBw
ZXIgbGltaXQgdG8gbWFrZSBzdXJlIHRoZSB0ZXN0IHRlcm1pbmF0ZXMuIFRoaXMgdGVzdAorICAg
ICAgICAgICAgICAgICAgICAvLyBhc3N1bWVzIHRoYXQgaW1wbGVtZW50YXRpb25zIHdvbid0IHN1
cHBvcnQgbW9yZSB0aGFuIDIwIHNvdXJjZUlEJ3Mgc2ltdWx0YW5lb3VzbHkuCisgICAgICAgICAg
ICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMjA7ICsraSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgdmFyIHNvdXJjZUlEID0gInNvdXJjZUlELSIgKyBpOworICAgICAgICAgICAgICAg
ICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2dC53ZWJraXRTb3Vy
Y2VBZGRJZChzb3VyY2VJRCwgZGVmYXVsdFNvdXJjZU1pbWV0eXBlKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChl
LmNvZGUgIT0gRE9NRXhjZXB0aW9uLlFVT1RBX0VYQ0VFREVEX0VSUikgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBmYWlsVGVzdCgiVW5leHBlY3RlZCBleGNlcHRpb24gIiArIGUp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBlOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFjaGVkSWRM
aW1pdCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
ICAgICAgICBpZiAoIXJlYWNoZWRJZExpbWl0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBm
YWlsVGVzdCgiRmFpbGVkIHRvIHJlYWNoIFNvdXJjZUlEIGxpbWl0LiIpOworICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
ICAgICAgICAgLy8gVGVzdCB0aGF0IFNvdXJjZUlEcyBjYW4ndCBiZSBhZGRlZCB3aGlsZSBpbiB0
aGUgZW5kZWQgc3RhdGUuCisgICAgICAgICAgICAgICAgICAgIHZ0LndlYmtpdFNvdXJjZUVuZE9m
U3RyZWFtKHZ0LkVPU19OT19FUlJPUik7CisgICAgICAgICAgICAgICAgICAgIGV4cGVjdEV4Y2Vw
dGlvbk9uQWRkSWQodnQsICIxMjMiLCBkZWZhdWx0U291cmNlTWltZXR5cGUsIERPTUV4Y2VwdGlv
bi5JTlZBTElEX1NUQVRFX0VSUik7CisKKyAgICAgICAgICAgICAgICAgICAgcnVuTmV4dFRlc3RD
YXNlKHZ0KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgZnVuY3Rpb24gdGVzdFJlbW92ZUlkRmFpbHVyZUNhc2VzKHZpZGVvVGFnKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIHJ1bk9uU291cmNlT3Blbih2aWRlb1RhZywgZnVuY3Rpb24g
KHZ0KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgY29uc29sZVdyaXRl
KCJUZXN0IGVtcHR5IElEIGNhc2UiKTsKKyAgICAgICAgICAgICAgICAgICAgZXhwZWN0RXhjZXB0
aW9uT25SZW1vdmVJZCh2dCwgIiIsIERPTUV4Y2VwdGlvbi5JTlZBTElEX0FDQ0VTU19FUlIpOwor
CisgICAgICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiVGVzdCByZW1vdmluZyBhbiBJRCB0
aGF0IHdhcyBuZXZlciBhZGRlZC4iKTsKKyAgICAgICAgICAgICAgICAgICAgZXhwZWN0RXhjZXB0
aW9uT25SZW1vdmVJZCh2dCwgIjM0NSIsIERPTUV4Y2VwdGlvbi5TWU5UQVhfRVJSKTsKKworICAg
ICAgICAgICAgICAgICAgICB2dC53ZWJraXRTb3VyY2VBZGRJZCgiMTIzIiwgZGVmYXVsdFNvdXJj
ZU1pbWV0eXBlKTsKKyAgICAgICAgICAgICAgICAgICAgdnQud2Via2l0U291cmNlUmVtb3ZlSWQo
IjEyMyIpOworICAgICAgICAgICAgICAgICAgICBleHBlY3RFeGNlcHRpb25PblJlbW92ZUlkKHZ0
LCAiMTIzIiwgRE9NRXhjZXB0aW9uLlNZTlRBWF9FUlIpOworCisgICAgICAgICAgICAgICAgICAg
IGNvbnNvbGVXcml0ZSgiVGVzdCBhZGRpbmcgdGhlIHNhbWUgSUQgYWdhaW4uIik7CisgICAgICAg
ICAgICAgICAgICAgIHZ0LndlYmtpdFNvdXJjZUFkZElkKCIxMjMiLCBkZWZhdWx0U291cmNlTWlt
ZXR5cGUpOworCisgICAgICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiVGVzdCB0aGF0IGFu
IElEIGNhbiBiZSByZW1vdmVkIHdoaWxlIGluIHRoZSBlbmRlZCBzdGF0ZS4iKTsKKyAgICAgICAg
ICAgICAgICAgICAgdnQud2Via2l0U291cmNlRW5kT2ZTdHJlYW0odnQuRU9TX05PX0VSUk9SKTsK
KyAgICAgICAgICAgICAgICAgICAgdnQud2Via2l0U291cmNlUmVtb3ZlSWQoIjEyMyIpOworCisg
ICAgICAgICAgICAgICAgICAgIHJ1bk5leHRUZXN0Q2FzZSh2dCk7CisgICAgICAgICAgICAgICAg
fSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHRlc3RBcHBlbmRGYWls
dXJlQ2FzZXModmlkZW9UYWcpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcnVuT25T
b3VyY2VPcGVuKHZpZGVvVGFnLCBmdW5jdGlvbiAodnQpCisgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICB2dC53ZWJraXRTb3VyY2VBZGRJZCgiMTIzIiwgZGVmYXVsdFNvdXJj
ZU1pbWV0eXBlKTsKKworICAgICAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIlRlc3QgYXBw
ZW5kIHdpdGggZW1wdHkgSUQuIik7CisgICAgICAgICAgICAgICAgICAgIGV4cGVjdEV4Y2VwdGlv
bk9uQXBwZW5kKHZ0LCAiIiwgZ2V0SGVhZGVycygpLCBET01FeGNlcHRpb24uSU5WQUxJRF9BQ0NF
U1NfRVJSKTsKKworICAgICAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIlRlc3QgYXBwZW5k
IHdpdGggYW4gaW52YWxpZCBJRCIpOworICAgICAgICAgICAgICAgICAgICBleHBlY3RFeGNlcHRp
b25PbkFwcGVuZCh2dCwgIjIzNCIsIGdldEhlYWRlcnMoKSwgRE9NRXhjZXB0aW9uLlNZTlRBWF9F
UlIpOworCisgICAgICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiVGVzdCBhcHBlbmQgd2l0
aCBhIG51bGwgYnVmZmVyLiIpOworICAgICAgICAgICAgICAgICAgICBleHBlY3RFeGNlcHRpb25P
bkFwcGVuZCh2dCwgIjEyMyIsIG51bGwsIERPTUV4Y2VwdGlvbi5JTlZBTElEX0FDQ0VTU19FUlIp
OworCisgICAgICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiVGVzdCBhIHN1Y2Nlc3NmdWwg
YXBwZW5kLiIpOworICAgICAgICAgICAgICAgICAgICB2dC53ZWJraXRTb3VyY2VBcHBlbmQoIjEy
MyIsIGdldEhlYWRlcnMoKSk7CisKKyAgICAgICAgICAgICAgICAgICAgdnQud2Via2l0U291cmNl
UmVtb3ZlSWQoIjEyMyIpOworICAgICAgICAgICAgICAgICAgICBleHBlY3RFeGNlcHRpb25PbkFw
cGVuZCh2dCwgIjEyMyIsIGdldENsdXN0ZXIoMCksIERPTUV4Y2VwdGlvbi5TWU5UQVhfRVJSKTsK
KworICAgICAgICAgICAgICAgICAgICBydW5OZXh0VGVzdENhc2UodnQpOworICAgICAgICAgICAg
ICAgIH0pOworCisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB0ZXN0Q2FzZXMgPSBb
CisgICAgICAgICAgICAgICAgdGVzdEFkZElkRmFpbHVyZUNhc2VzLAorICAgICAgICAgICAgICAg
IHRlc3RSZW1vdmVJZEZhaWx1cmVDYXNlcywKKyAgICAgICAgICAgICAgICB0ZXN0QXBwZW5kRmFp
bHVyZUNhc2VzLAorICAgICAgICAgICAgXTsKKworICAgICAgICAgICAgdmFyIHRlc3RDYXNlSW5k
ZXggPSAwOworCisgICAgICAgICAgICBmdW5jdGlvbiBydW5OZXh0VGVzdENhc2UodmlkZW9UYWcp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKHRlc3RDYXNlSW5kZXggPj0gdGVz
dENhc2VzLmxlbmd0aCkgeworICAgICAgICAgICAgICAgICAgICBlbmRUZXN0KCk7CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAg
ICB2YXIgdGVzdENhc2VGdW5jdGlvbiA9IHRlc3RDYXNlc1t0ZXN0Q2FzZUluZGV4XTsKKyAgICAg
ICAgICAgICAgICB0ZXN0Q2FzZUluZGV4Kys7CisKKyAgICAgICAgICAgICAgICBjb25zb2xlV3Jp
dGUoIiIpOworICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgicnVubmluZyAiICsgdGVzdENh
c2VGdW5jdGlvbi5uYW1lKTsKKyAgICAgICAgICAgICAgICB0ZXN0Q2FzZUZ1bmN0aW9uKHZpZGVv
VGFnKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBmaW5kTWVkaWFFbGVtZW50KCk7CisKKyAgICAg
ICAgICAgICAgICB3YWl0Rm9yRXZlbnQoJ2xvYWRzdGFydCcpOworICAgICAgICAgICAgICAgIHdh
aXRGb3JFdmVudCgnd2Via2l0c291cmNlb3BlbicpOworCisgICAgICAgICAgICAgICAgbG9hZFdl
Yk1EYXRhKGZ1bmN0aW9uKHN1Y2Nlc3MpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICBpZiAoIXN1Y2Nlc3MpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZhaWxUZXN0
KCJGYWlsZWQgdG8gbG9hZCBXZWJNIGRhdGEiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBydW5OZXh0
VGVzdENhc2UodmlkZW8pOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfQorICAg
ICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKSI+
CisgICAgICAgIDx2aWRlbz4gPC92aWRlbz4KKyAgICAgICAgPHA+VGVzdHMgd2Via2l0U291cmNl
QWRkSWQoKSAmYW1wOyB3ZWJraXRTb3VyY2VSZW1vdmVJZCgpIG1ldGhvZHM8L3A+CisgICAgPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0v
dGVzdF9leHBlY3RhdGlvbnMudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVz
dF9leHBlY3RhdGlvbnMudHh0CmluZGV4IGQzZjEyNGI1ZjczZmYxM2ZjYTY0ZGZhMzk1N2I5MTcw
OTY5YTEwNmUuLjljZjk1YWIzMjk4YjJjMGYwYTFlOGExNWY1MmY5MWNjNzk5NjMwZjkgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50
eHQKQEAgLTM3NDksNiArMzc0OSw5IEBAIEJVR0NSMTIyNDQ4IDogbWVkaWEvdmlkZW8tc2Vlay1w
YXN0LWVuZC1wYXVzZWQuaHRtbCA9IFBBU1MgVEVYVAogCiBCVUdDUjEyMjQ2MiBXSU4gTElOVVgg
OiBodHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0LWVsZW1lbnQuaHRtbCA9IFRFWFQKIAorLy8g
VGVtcG9yYXJpbHkgZGlzYWJsZWQgdW50aWwgQ2hyb21pdW0gc291cmNlQWRkSWQoKSAmIHNvdXJj
ZVJlbW92ZUlkKCkgY29kZSBoYXMgYmVlbiBjaGVja2VkIGluLgorQlVHV0s4MzYxNiBTS0lQIDog
aHR0cC90ZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2Uvd2VibS92aWRlby1tZWRpYS1zb3VyY2UtYWRk
LWFuZC1yZW1vdmUtaWRzLmh0bWwgPSBGQUlMCisKIEJVR1dLODM1MDMgTElOVVggREVCVUcgOiBw
bHVnaW5zL2lubmVyLWh0bWwtZGlzcGxheS1ub25lLmh0bWwgPSBDUkFTSAogCiBCVUdXSzgzMjI3
IExJTlVYIE1BQyA6IGZhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2FyYWJpYy1qdXN0aWZ5Lmh0bWwg
PSBGQUlMCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137449</attachid>
            <date>2012-04-16 18:23:02 -0700</date>
            <delta_ts>2012-04-17 10:09:56 -0700</delta_ts>
            <desc>Rebase patch now that WK84046 style fixes landed.</desc>
            <filename>bug-83616-20120416182252.patch</filename>
            <type>text/plain</type>
            <size>27529</size>
            <attacher name="Aaron Colwell">acolwell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE0MzI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjMzNzI0NGJmYWQyYTAx
MjRhZjNlYWU0NTM5YTY5MGZmZjYyZmFkNC4uYTUwZDZkM2VhZjVjMjU0MDI3MzUxYTQwMDNmYjU1
MTA3NTU5MWRmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEyLTA0LTE2ICBBYXJv
biBDb2x3ZWxsICA8YWNvbHdlbGxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEFkZCB3ZWJraXRT
b3VyY2VBZGRJZCgpICYgd2Via2l0U291cmNlUmVtb3ZlSWQoKSB0byBIVE1MTWVkaWFFbGVtZW50
CisgICAgICAgIGFuZCBwcm9wYWdhdGUgY2FsbHMgdG8gdGhlIE1lZGlhUGxheWVyUHJpdmF0ZSBp
bnRlcmZhY2UuCisgICAgICAgIFRoZXNlIGFyZSBuZWVkZWQgdG8gYnJpbmcgdGhlIE1lZGlhIFNv
dXJjZSBpbXBsZW1lbnRhdGlvbiAKKyAgICAgICAgdXAgdG8gZGF0ZSB3aXRoIHRoZSBuZXcgMC40
IHZlcnNpb24gb2YgdGhlIE1lZGlhIFNvdXJjZSBzcGVjLgorICAgICAgICBodHRwOi8vaHRtbDUt
bWVkaWFzb3VyY2UtYXBpLmdvb2dsZWNvZGUuY29tL3N2bi90YWdzLzAuNC9kcmFmdC1zcGVjL21l
ZGlhc291cmNlLWRyYWZ0LXNwZWMuaHRtbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODM2MTYKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxz
b24sIERhcmluIEZpc2hlci4KKworICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL21lZGlhL21lZGlh
LXNvdXJjZS93ZWJtL3ZpZGVvLW1lZGlhLXNvdXJjZS1hZGQtYW5kLXJlbW92ZS1pZHMuaHRtbAor
CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6aXNWYWxpZFNvdXJjZUlkKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OndlYmtpdFNvdXJjZUFkZElkKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OndlYmtpdFNvdXJjZVJlbW92ZUlk
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNldFNvdXJjZVN0YXRlKToK
KyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKEhUTUxNZWRpYUVs
ZW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5pZGw6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TnVs
bE1lZGlhUGxheWVyUHJpdmF0ZTo6c291cmNlQWRkSWQpOgorICAgICAgICAoV2ViQ29yZTo6TnVs
bE1lZGlhUGxheWVyUHJpdmF0ZTo6c291cmNlUmVtb3ZlSWQpOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6c291cmNlQWRkSWQpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXI6OnNvdXJjZVJlbW92ZUlkKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhUGxheWVyUHJpdmF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
SW50ZXJmYWNlOjpzb3VyY2VBZGRJZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVJbnRlcmZhY2U6OnNvdXJjZVJlbW92ZUlkKToKKwogMjAxMi0wNC0xNiAgTmF0ZSBDaGFw
aW4gIDxqYXBoZXRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJlbW92ZSB1bnVzZWQgdmFyaWFi
bGUgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6Om1fbG9hZEZpbmlzaGluZwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwppbmRleCAwOGZlZjgzNjAzZDFmMTgxZDEyNDg3NDcyZDFjZDBkMDJmOTc5YWUxLi40
Nzk2OWUxZjFjZDc3NjcwZWVkYWRkNjY5ZmZmZDJhZDBjMWZlOWM2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI2IEBACiAyMDEyLTA0LTE2ICBBYXJvbiBDb2x3ZWxsICA8
YWNvbHdlbGxAY2hyb21pdW0ub3JnPgogCisgICAgICAgIEFkZCBzb3VyY2VBZGRJZCgpICYgc291
cmNlUmVtb3ZlSWQoKSBzdHVicyBmb3IgQ2hyb21pdW0uCisgICAgICAgIFRoZXNlIGFyZSBuZWVk
ZWQgdG8gYnJpbmcgdGhlIE1lZGlhIFNvdXJjZSBpbXBsZW1lbnRhdGlvbiAKKyAgICAgICAgdXAg
dG8gZGF0ZSB3aXRoIHRoZSBuZXcgMC40IHZlcnNpb24gb2YgdGhlIE1lZGlhIFNvdXJjZSBzcGVj
LgorICAgICAgICBodHRwOi8vaHRtbDUtbWVkaWFzb3VyY2UtYXBpLmdvb2dsZWNvZGUuY29tL3N2
bi90YWdzLzAuNC9kcmFmdC1zcGVjL21lZGlhc291cmNlLWRyYWZ0LXNwZWMuaHRtbAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODM2MTYKKworICAgICAg
ICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24sIERhcmluIEZpc2hlci4KKworICAgICAgICAqIHB1
YmxpYy9XZWJNZWRpYVBsYXllci5oOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVBsYXllcjo6
c291cmNlQWRkSWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVBsYXllcjo6c291cmNlUmVt
b3ZlSWQpOgorICAgICAgICAqIHNyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcDoKKyAgICAgICAg
KiBzcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
TWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpzb3VyY2VBZGRJZCk6CisgICAgICAgIChXZWJLaXQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OnNvdXJjZVJlbW92ZUlk
KToKKyAgICAgICAgKiBzcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmg6CisgICAgICAgIChX
ZWJNZWRpYVBsYXllckNsaWVudEltcGwpOgorCisyMDEyLTA0LTE2ICBBYXJvbiBDb2x3ZWxsICA8
YWNvbHdlbGxAY2hyb21pdW0ub3JnPgorCiAgICAgICAgIEZpeCBXZWJLaXQgc3R5bGUgdmlvbGF0
aW9ucyBpbiBDaHJvbWl1bSBXZWJNZWRpYVBsYXllci5oICYgV2ViTWVkaWFQbGF5ZXJDbGllbnQu
aAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQwNDYK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggMTgyY2RlZDZi
ODY3YjgyYWVmNDRiYTEwYTk3NzgyODA2ZGNjZjVlZi4uYTkwNzAyYmNiYzFkOTM5MTg4YjNjNzRm
ZTE3NWE2ZTEzODljMTQwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
Y3BwCkBAIC0xNjk0LDYgKzE2OTQsMjIgQEAgU3RyaW5nIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlh
UGxheWVyU291cmNlVVJMKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9tZWRpYVNvdXJjZVVSTC5z
dHJpbmcoKTsKIH0KKworYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojppc1ZhbGlkU291cmNlSWQoY29u
c3QgU3RyaW5nJiBpZCwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0Cit7CisgICAgaWYgKGlkLmlz
TnVsbCgpIHx8IGlkLmlzRW1wdHkoKSkgeworICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VS
UjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghbV9zb3VyY2VJRHMu
Y29udGFpbnMoaWQpKSB7CisgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCiAjZW5kaWYKIAogI2lmIEVO
QUJMRShFTkNSWVBURURfTUVESUEpCkBAIC0yMjgxLDYgKzIyOTcsNTkgQEAgdm9pZCBIVE1MTWVk
aWFFbGVtZW50OjpwYXVzZUludGVybmFsKCkKIH0KIAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0Up
Cit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OndlYmtpdFNvdXJjZUFkZElkKGNvbnN0IFN0cmluZyYg
aWQsIGNvbnN0IFN0cmluZyYgdHlwZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKGlk
LmlzTnVsbCgpIHx8IGlkLmlzRW1wdHkoKSkgeworICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNT
X0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChtX3NvdXJjZUlEcy5jb250
YWlucyhpZCkpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGlmICh0eXBlLmlzTnVsbCgpIHx8IHR5cGUuaXNFbXB0eSgpKSB7
CisgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgaWYgKCFtX3BsYXllciB8fCBtX2N1cnJlbnRTcmMgIT0gbV9tZWRpYVNvdXJjZVVS
TCB8fCBtX3NvdXJjZVN0YXRlICE9IFNPVVJDRV9PUEVOKSB7CisgICAgICAgIGVjID0gSU5WQUxJ
RF9TVEFURV9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzd2l0Y2ggKG1fcGxh
eWVyLT5zb3VyY2VBZGRJZChpZCwgdHlwZSkpIHsKKyAgICBjYXNlIE1lZGlhUGxheWVyOjpPazoK
KyAgICAgICAgbV9zb3VyY2VJRHMuYWRkKGlkKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2Ug
TWVkaWFQbGF5ZXI6Ok5vdFN1cHBvcnRlZDoKKyAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VS
UjsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgTWVkaWFQbGF5ZXI6OlJlYWNoZWRJZExpbWl0
OgorICAgICAgICBlYyA9IFFVT1RBX0VYQ0VFREVEX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OndlYmtpdFNvdXJjZVJlbW92ZUlkKGNvbnN0IFN0cmluZyYgaWQsIEV4Y2VwdGlvbkNvZGUm
IGVjKQoreworICAgIGlmICghaXNWYWxpZFNvdXJjZUlkKGlkLCBlYykpCisgICAgICAgIHJldHVy
bjsKKworICAgIGlmICghbV9wbGF5ZXIgfHwgbV9jdXJyZW50U3JjICE9IG1fbWVkaWFTb3VyY2VV
UkwgfHwgbV9zb3VyY2VTdGF0ZSA9PSBTT1VSQ0VfQ0xPU0VEKSB7CisgICAgICAgIGVjID0gSU5W
QUxJRF9TVEFURV9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIW1fcGxh
eWVyLT5zb3VyY2VSZW1vdmVJZChpZCkpCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
CisgICAgbV9zb3VyY2VJRHMucmVtb3ZlKGlkKTsKK30KKwogdm9pZCBIVE1MTWVkaWFFbGVtZW50
Ojp3ZWJraXRTb3VyY2VBcHBlbmQoUGFzc1JlZlB0cjxVaW50OEFycmF5PiBkYXRhLCBFeGNlcHRp
b25Db2RlJiBlYykKIHsKICAgICBpZiAoIW1fcGxheWVyIHx8IG1fY3VycmVudFNyYyAhPSBtX21l
ZGlhU291cmNlVVJMIHx8IG1fc291cmNlU3RhdGUgIT0gU09VUkNFX09QRU4pIHsKQEAgLTIzMzYs
NiArMjQwNSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0U291cmNlU3RhdGUoU291cmNl
U3RhdGUgc3RhdGUpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX3NvdXJjZVN0YXRlID09
IFNPVVJDRV9DTE9TRUQpIHsKKyAgICAgICAgbV9zb3VyY2VJRHMuY2xlYXIoKTsKICAgICAgICAg
c2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkud2Via2l0c291cmNlY2xvc2VFdmVudCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmlu
ZGV4IDAzYWNlMjgyOTg0ZTQyN2IwYTRhZmRjNWQ1NGU2NTcwNWYxODcxMDIuLjM3N2FkZWEwZmE0
MWMzNjAyYjY2OTg1NzM3NjUwMWY3ZTFjZWQ1MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5oCkBAIC0xNzIsNiArMTcyLDggQEAgcHVibGljOgogI2lmIEVOQUJMRShNRURJ
QV9TT1VSQ0UpCiAvLyAgTWVkaWEgU291cmNlLgogICAgIGNvbnN0IEtVUkwmIHdlYmtpdE1lZGlh
U291cmNlVVJMKCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYVNvdXJjZVVSTDsgfQorICAgIHZvaWQg
d2Via2l0U291cmNlQWRkSWQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9u
Q29kZSYpOworICAgIHZvaWQgd2Via2l0U291cmNlUmVtb3ZlSWQoY29uc3QgU3RyaW5nJiwgRXhj
ZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgd2Via2l0U291cmNlQXBwZW5kKFBhc3NSZWZQdHI8VWlu
dDhBcnJheT4gZGF0YSwgRXhjZXB0aW9uQ29kZSYpOwogICAgIGVudW0gRW5kT2ZTdHJlYW1TdGF0
dXMgeyBFT1NfTk9fRVJST1IsIEVPU19ORVRXT1JLX0VSUiwgRU9TX0RFQ09ERV9FUlIgfTsKICAg
ICB2b2lkIHdlYmtpdFNvdXJjZUVuZE9mU3RyZWFtKHVuc2lnbmVkIHNob3J0LCBFeGNlcHRpb25D
b2RlJik7CkBAIC00MDcsNiArNDA5LDcgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoTUVESUFfU09V
UkNFKQogICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllclNvdXJjZU9wZW5lZCgpOwogICAgIHZp
cnR1YWwgU3RyaW5nIG1lZGlhUGxheWVyU291cmNlVVJMKCkgY29uc3Q7CisgICAgYm9vbCBpc1Zh
bGlkU291cmNlSWQoY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwogI2VuZGlm
CiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQpAQCAtNTc3LDYgKzU4MCw3IEBAIHByaXZh
dGU6CiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKICAgICBLVVJMIG1fbWVkaWFTb3VyY2VVUkw7
CiAgICAgU291cmNlU3RhdGUgbV9zb3VyY2VTdGF0ZTsKKyAgICBIYXNoU2V0PFN0cmluZz4gbV9z
b3VyY2VJRHM7CiAjZW5kaWYKIAogICAgIG11dGFibGUgZmxvYXQgbV9jYWNoZWRUaW1lOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmlkbCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5pZGwKaW5kZXggODc4NTRiZTBmNTEzMzQ1
NmI5ZTE2MDhiOTgyZDAwYWQzNmNjNmU0OS4uNWI5YzEwMWNlYjJmYjEyY2M4NmQzMDAwMzBmMjA2
NjRiYjAxNmNjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsCkBA
IC05OSw2ICs5OSwxMCBAQCBtb2R1bGUgaHRtbCB7CiAgICAgLy8gVVJMIHBhc3NlZCB0byBzcmMg
YXR0cmlidXRlIHRvIGVuYWJsZSB0aGUgbWVkaWEgc291cmNlIGxvZ2ljLgogICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBbVjhFbmFibGVkQXRSdW50aW1lPW1lZGlhU291cmNlLCBVUkxdIERPTVN0cmlu
ZyB3ZWJraXRNZWRpYVNvdXJjZVVSTDsKIAorICAgIC8vIE1hbmFnZXMgSURzIGZvciBhcHBlbmRp
bmcgbWVkaWEgdG8gdGhlIHNvdXJjZS4KKyAgICBbVjhFbmFibGVkQXRSdW50aW1lPW1lZGlhU291
cmNlXSB2b2lkIHdlYmtpdFNvdXJjZUFkZElkKGluIERPTVN0cmluZyBpZCwgaW4gRE9NU3RyaW5n
IHR5cGUpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKKyAgICBbVjhFbmFibGVkQXRSdW50aW1lPW1l
ZGlhU291cmNlXSB2b2lkIHdlYmtpdFNvdXJjZVJlbW92ZUlkKGluIERPTVN0cmluZyBpZCkgcmFp
c2VzIChET01FeGNlcHRpb24pOworCiAgICAgLy8gQXBwZW5kcyBtZWRpYSB0byB0byB0aGUgc291
cmNlLgogICAgIFtWOEVuYWJsZWRBdFJ1bnRpbWU9bWVkaWFTb3VyY2VdIHZvaWQgd2Via2l0U291
cmNlQXBwZW5kKGluIFVpbnQ4QXJyYXkgZGF0YSkgcmFpc2VzIChET01FeGNlcHRpb24pOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKaW5k
ZXggZTk4ZWJmZDc1YmI5OWM1M2QxMDI3MGQ4ZmJmODhjN2I2MjIwMzE3OC4uMWU4MTg1N2U4MDFl
NjNlNGZjMDBhMzZlNzEzMWM1MjhmMGUzYWI4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcApAQCAtMTQ5LDYgKzE0OSw4IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIGJvb2wgaGFzU2luZ2xlU2VjdXJpdHlPcmlnaW4oKSBjb25zdCB7IHJl
dHVybiB0cnVlOyB9CiAKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorICAgIHZpcnR1YWwgTWVk
aWFQbGF5ZXI6OkFkZElkU3RhdHVzIHNvdXJjZUFkZElkKGNvbnN0IFN0cmluZyYgaWQsIGNvbnN0
IFN0cmluZyYgdHlwZSkgeyByZXR1cm4gTWVkaWFQbGF5ZXI6Ok5vdFN1cHBvcnRlZDsgfQorICAg
IHZpcnR1YWwgYm9vbCBzb3VyY2VSZW1vdmVJZChjb25zdCBTdHJpbmcmIGlkKSB7IHJldHVybiBm
YWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBzb3VyY2VBcHBlbmQoY29uc3QgdW5zaWduZWQgY2hh
ciosIHVuc2lnbmVkKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzb3VyY2VF
bmRPZlN0cmVhbShNZWRpYVBsYXllcjo6RW5kT2ZTdHJlYW1TdGF0dXMgc3RhdHVzKSB7IH0KICNl
bmRpZgpAQCAtNDU2LDYgKzQ1OCwxNyBAQCB2b2lkIE1lZGlhUGxheWVyOjpwYXVzZSgpCiB9CiAK
ICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorCitNZWRpYVBsYXllcjo6QWRkSWRTdGF0dXMgTWVk
aWFQbGF5ZXI6OnNvdXJjZUFkZElkKGNvbnN0IFN0cmluZyYgaWQsIGNvbnN0IFN0cmluZyYgdHlw
ZSkKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5zb3VyY2VBZGRJZChpZCwgdHlwZSk7Cit9CisK
K2Jvb2wgTWVkaWFQbGF5ZXI6OnNvdXJjZVJlbW92ZUlkKGNvbnN0IFN0cmluZyYgaWQpCit7Cisg
ICAgcmV0dXJuIG1fcHJpdmF0ZS0+c291cmNlUmVtb3ZlSWQoaWQpOworfQorCiBib29sIE1lZGlh
UGxheWVyOjpzb3VyY2VBcHBlbmQoY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQg
bGVuZ3RoKQogewogICAgIHJldHVybiBtX3ByaXZhdGUtPnNvdXJjZUFwcGVuZChkYXRhLCBsZW5n
dGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgK
aW5kZXggZDliNmUyNzAwM2NiMWY4YzliZDY5MDkwMDRhMTI4NTBhZDU4ZjljMC4uNDI5ZTVmY2Y1
NThkYzIzMGI0YzAzM2Q2ZjFhNjFlN2ZjYjhkOTUxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCkBAIC0yMjksNiArMjI5LDkgQEAgcHVibGlj
OgogICAgIHZvaWQgcGF1c2UoKTsgICAgCiAKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorICAg
IGVudW0gQWRkSWRTdGF0dXMgeyBPaywgTm90U3VwcG9ydGVkLCBSZWFjaGVkSWRMaW1pdCB9Owor
ICAgIEFkZElkU3RhdHVzIHNvdXJjZUFkZElkKGNvbnN0IFN0cmluZyYgaWQsIGNvbnN0IFN0cmlu
ZyYgdHlwZSk7CisgICAgYm9vbCBzb3VyY2VSZW1vdmVJZChjb25zdCBTdHJpbmcmIGlkKTsKICAg
ICBib29sIHNvdXJjZUFwcGVuZChjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBs
ZW5ndGgpOwogICAgIGVudW0gRW5kT2ZTdHJlYW1TdGF0dXMgeyBFb3NOb0Vycm9yLCBFb3NOZXR3
b3JrRXJyb3IsIEVvc0RlY29kZUVycm9yIH07CiAgICAgdm9pZCBzb3VyY2VFbmRPZlN0cmVhbShF
bmRPZlN0cmVhbVN0YXR1cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCmluZGV4IDM3OGIyNTllODM1MjA3ZDY3YjIyYWJi
OTAzZGVlZjJkOTRjYzI4YzEuLmZmNTVkMWIwYjVhYzA4MjJiYjU2ZmRkN2M5NWM4NTE1YTIzZTNl
NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWVyUHJpdmF0ZS5oCkBAIC0xNTgsNiArMTU4LDggQEAgcHVibGljOgogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoTUVESUFfU09VUkNFKQorICAgIHZpcnR1YWwgTWVkaWFQbGF5ZXI6OkFkZElkU3Rh
dHVzIHNvdXJjZUFkZElkKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpIHsgcmV0dXJuIE1l
ZGlhUGxheWVyOjpOb3RTdXBwb3J0ZWQ7IH0KKyAgICB2aXJ0dWFsIGJvb2wgc291cmNlUmVtb3Zl
SWQoY29uc3QgU3RyaW5nJikgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgc291
cmNlQXBwZW5kKGNvbnN0IHVuc2lnbmVkIGNoYXIqLCB1bnNpZ25lZCkgeyByZXR1cm4gZmFsc2U7
IH0KICAgICB2aXJ0dWFsIHZvaWQgc291cmNlRW5kT2ZTdHJlYW0oTWVkaWFQbGF5ZXI6OkVuZE9m
U3RyZWFtU3RhdHVzKSB7IH07CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYk1lZGlhUGxheWVyLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJNZWRpYVBsYXllci5oCmluZGV4IGMyOTNjZWU5NTgyMzdkYzZjNjRlNmMxZGQzOWVh
YWY3ZWIyNTEzNmEuLmYzOTQ2OWYxZTE3MGQyMzJhZGRhZGVmOTdlYjEwMTgzMzQwZGE4ZDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk1lZGlhUGxheWVyLmgK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFQbGF5ZXIuaApAQCAt
MzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIldlYlRpbWVSYW5nZS5oIgogI2luY2x1ZGUgIldlYlZp
ZGVvRnJhbWUuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDYW52YXMuaCIKKyNpbmNsdWRlICJw
bGF0Zm9ybS9XZWJTdHJpbmcuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTk4LDYgKzk5
LDEyIEBAIHB1YmxpYzoKICAgICAgICAgQXV0byA9IFByZWxvYWRBdXRvLAogICAgIH07CiAKKyAg
ICBlbnVtIEFkZElkU3RhdHVzIHsKKyAgICAgICAgQWRkSWRTdGF0dXNPaywKKyAgICAgICAgQWRk
SWRTdGF0dXNOb3RTdXBwb3J0ZWQsCisgICAgICAgIEFkZElkU3RhdHVzUmVhY2hlZElkTGltaXQK
KyAgICB9OworCiAgICAgZW51bSBFbmRPZlN0cmVhbVN0YXR1cyB7CiAgICAgICAgIEVuZE9mU3Ry
ZWFtU3RhdHVzTm9FcnJvciwKICAgICAgICAgRW5kT2ZTdHJlYW1TdGF0dXNOZXR3b3JrRXJyb3Is
CkBAIC0xOTEsNiArMTk4LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBXZWJBdWRpb1NvdXJj
ZVByb3ZpZGVyKiBhdWRpb1NvdXJjZVByb3ZpZGVyKCkgeyByZXR1cm4gMDsgfQogCisgICAgdmly
dHVhbCBBZGRJZFN0YXR1cyBzb3VyY2VBZGRJZChjb25zdCBXZWJTdHJpbmcmIGlkLCBjb25zdCBX
ZWJTdHJpbmcmIHR5cGUpIHsgcmV0dXJuIEFkZElkU3RhdHVzTm90U3VwcG9ydGVkOyB9CisgICAg
dmlydHVhbCBib29sIHNvdXJjZVJlbW92ZUlkKGNvbnN0IFdlYlN0cmluZyYgaWQpIHsgcmV0dXJu
IGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIHNvdXJjZUFwcGVuZChjb25zdCB1bnNpZ25lZCBj
aGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVh
bCB2b2lkIHNvdXJjZUVuZE9mU3RyZWFtKEVuZE9mU3RyZWFtU3RhdHVzKSAgeyB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAKaW5k
ZXggNWNmNjU3ZjJiMzg2ODBiYWE5ZDNkYTUxZWM0MDNlZmIzYzA5MjQ4YS4uN2Q4YjlkMDViNGRk
YjY5Zjg1ODExYTliYjMwNzJmNzQ4ZDZmNjNmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAKQEAgLTM5MSw2ICszOTEsMTIgQEAg
Q09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJNZWRpYVBsYXllcjo6UHJlbG9hZE5vbmUs
IE1lZGlhUGxheWVyOjpOb25lKTsKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViTWVk
aWFQbGF5ZXI6OlByZWxvYWRNZXRhRGF0YSwgTWVkaWFQbGF5ZXI6Ok1ldGFEYXRhKTsKIENPTVBJ
TEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViTWVkaWFQbGF5ZXI6OlByZWxvYWRBdXRvLCBNZWRp
YVBsYXllcjo6QXV0byk7CiAKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorQ09NUElMRV9BU1NF
UlRfTUFUQ0hJTkdfRU5VTShXZWJNZWRpYVBsYXllcjo6QWRkSWRTdGF0dXNPaywgTWVkaWFQbGF5
ZXI6Ok9rKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViTWVkaWFQbGF5ZXI6OkFk
ZElkU3RhdHVzTm90U3VwcG9ydGVkLCBNZWRpYVBsYXllcjo6Tm90U3VwcG9ydGVkKTsKK0NPTVBJ
TEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViTWVkaWFQbGF5ZXI6OkFkZElkU3RhdHVzUmVhY2hl
ZElkTGltaXQsIE1lZGlhUGxheWVyOjpSZWFjaGVkSWRMaW1pdCk7CisjZW5kaWYKKwogI2lmIEVO
QUJMRShFTkNSWVBURURfTUVESUEpCiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYk1l
ZGlhUGxheWVyOjpFbmRPZlN0cmVhbVN0YXR1c05vRXJyb3IsIE1lZGlhUGxheWVyOjpFb3NOb0Vy
cm9yKTsKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViTWVkaWFQbGF5ZXI6OkVuZE9m
U3RyZWFtU3RhdHVzTmV0d29ya0Vycm9yLCBNZWRpYVBsYXllcjo6RW9zTmV0d29ya0Vycm9yKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xp
ZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNs
aWVudEltcGwuY3BwCmluZGV4IDQ2MDBmYjg0MzAzMDllNTVlNzc3Y2YxYTE2MGJiYzRjNzE0MDk2
NGIuLjM0MjNiMGQxYmNiNGRmNDdhZWE4Njk0YmE4MzkxMTYxMjU5MmUzODggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBs
LmNwcApAQCAtMzQwLDYgKzM0MCwyMiBAQCB2b2lkIFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6
cGF1c2UoKQogfQogCiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKK1dlYkNvcmU6Ok1lZGlhUGxh
eWVyOjpBZGRJZFN0YXR1cyBXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OnNvdXJjZUFkZElkKGNv
bnN0IFN0cmluZyYgaWQsIGNvbnN0IFN0cmluZyYgdHlwZSkKK3sKKyAgICBpZiAoIW1fd2ViTWVk
aWFQbGF5ZXIpCisgICAgICAgIHJldHVybiBXZWJDb3JlOjpNZWRpYVBsYXllcjo6Tm90U3VwcG9y
dGVkOworCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpBZGRJ
ZFN0YXR1cz4obV93ZWJNZWRpYVBsYXllci0+c291cmNlQWRkSWQoaWQsIHR5cGUpKTsKK30KKwor
Ym9vbCBXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OnNvdXJjZVJlbW92ZUlkKGNvbnN0IFN0cmlu
ZyYgaWQpCit7CisgICAgaWYgKCFtX3dlYk1lZGlhUGxheWVyKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICByZXR1cm4gbV93ZWJNZWRpYVBsYXllci0+c291cmNlUmVtb3ZlSWQoaWQpOwor
fQorCiBib29sIFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6c291cmNlQXBwZW5kKGNvbnN0IHVu
c2lnbmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKIHsKICAgICBpZiAobV93ZWJNZWRp
YVBsYXllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlh
UGxheWVyQ2xpZW50SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQ
bGF5ZXJDbGllbnRJbXBsLmgKaW5kZXggYmExNzMwZjVmNzhkNTBhMmQ5OGU2ZWU2ZjBhNjE5ZDRh
NGVjMmQzMS4uNjFhMzg3ZTYwN2IyMDBkODgyYzM2NGU0MGQ3NDRmYjA3NTJiN2I5ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBs
LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJ
bXBsLmgKQEAgLTE0OSw2ICsxNDksOCBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShN
RURJQV9TT1VSQ0UpCisgICAgdmlydHVhbCBXZWJDb3JlOjpNZWRpYVBsYXllcjo6QWRkSWRTdGF0
dXMgc291cmNlQWRkSWQoY29uc3QgU3RyaW5nJiBpZCwgY29uc3QgU3RyaW5nJiB0eXBlKTsKKyAg
ICB2aXJ0dWFsIGJvb2wgc291cmNlUmVtb3ZlSWQoY29uc3QgU3RyaW5nJik7CiAgICAgdmlydHVh
bCBib29sIHNvdXJjZUFwcGVuZChjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBs
ZW5ndGgpOwogICAgIHZpcnR1YWwgdm9pZCBzb3VyY2VFbmRPZlN0cmVhbShXZWJDb3JlOjpNZWRp
YVBsYXllcjo6RW5kT2ZTdHJlYW1TdGF0dXMpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOWYyYTkwNjVjYjBm
ZDFkMWJiYzZlYjY5NDYzMWJkY2RkZDc2NDMzYS4uM2Q0ODY2NzhhOGFmMjljNzdlNzJjZDFiOWY4
NWMxYjQ0YTZkYmE0MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTA0LTE2ICBBYXJvbiBD
b2x3ZWxsICA8YWNvbHdlbGxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEFkZCBMYXlvdXRUZXN0
cyBmb3IgbmV3IHdlYmtpdFNvdXJjZUFkZElkKCkgJiB3ZWJraXRTb3VyY2VSZW1vdmVJZCgpIG1l
dGhvZHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
MzYxNgorCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgQ2FybHNvbiwgRGFyaW4gRmlzaGVyLgor
CisgICAgICAgICogaHR0cC90ZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2Uvd2VibS92aWRlby1tZWRp
YS1zb3VyY2UtYWRkLWFuZC1yZW1vdmUtaWRzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogaHR0cC90ZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2Uvd2VibS92aWRlby1tZWRpYS1zb3VyY2Ut
YWRkLWFuZC1yZW1vdmUtaWRzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9t
aXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dDoKKwogMjAxMi0wNC0xNiAgQW5kZXJzIENhcmxzc29u
ICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCB0d28gZmxha3kgdGVzdHMgaW4g
ZmFzdC9wcm9maWxlci4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbWVkaWEv
bWVkaWEtc291cmNlL3dlYm0vdmlkZW8tbWVkaWEtc291cmNlLWFkZC1hbmQtcmVtb3ZlLWlkcy1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21lZGlhL21lZGlhLXNvdXJjZS93
ZWJtL3ZpZGVvLW1lZGlhLXNvdXJjZS1hZGQtYW5kLXJlbW92ZS1pZHMtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjFlMWI4MTA0NzBkOTUxYTRkMTBlNjFmMTg4MGY2NWEwZmNmMjMxODUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21lZGlhL21lZGlhLXNvdXJjZS93
ZWJtL3ZpZGVvLW1lZGlhLXNvdXJjZS1hZGQtYW5kLXJlbW92ZS1pZHMtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsNDIgQEAKK1Rlc3RzIHdlYmtpdFNvdXJjZUFkZElkKCkgJiB3ZWJraXRTb3VyY2VS
ZW1vdmVJZCgpIG1ldGhvZHMKKworCitydW5uaW5nIHRlc3RBZGRJZEZhaWx1cmVDYXNlcworR290
IGV4cGVjdGVkIGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9TVEFURV9FUlI6IERPTSBFeGNlcHRp
b24gMTEKK0VWRU5UKGxvYWRzdGFydCkKK0VWRU5UKHdlYmtpdHNvdXJjZW9wZW4pCitUZXN0IGVt
cHR5IElEIGNhc2UKK0dvdCBleHBlY3RlZCBleGNlcHRpb24gRXJyb3I6IElOVkFMSURfQUNDRVNT
X0VSUjogRE9NIEV4Y2VwdGlvbiAxNQorVGVzdCBhZGRpbmcgdGhlIHNhbWUgSUQgYWdhaW4uCitH
b3QgZXhwZWN0ZWQgZXhjZXB0aW9uIEVycm9yOiBJTlZBTElEX1NUQVRFX0VSUjogRE9NIEV4Y2Vw
dGlvbiAxMQorVGVzdCBlbXB0eSB0eXBlLgorR290IGV4cGVjdGVkIGV4Y2VwdGlvbiBFcnJvcjog
SU5WQUxJRF9BQ0NFU1NfRVJSOiBET00gRXhjZXB0aW9uIDE1CitUZXN0IGFuIHVuc3VwcG9ydGVk
IHR5cGUuCitHb3QgZXhwZWN0ZWQgZXhjZXB0aW9uIEVycm9yOiBOT1RfU1VQUE9SVEVEX0VSUjog
RE9NIEV4Y2VwdGlvbiA5CitUZXN0IHJlYWNoaW5nIHNvdXJjZUlEIGxpbWl0LgorR290IGV4cGVj
dGVkIGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9TVEFURV9FUlI6IERPTSBFeGNlcHRpb24gMTEK
KworcnVubmluZyB0ZXN0UmVtb3ZlSWRGYWlsdXJlQ2FzZXMKK0VWRU5UKGxvYWRzdGFydCkKK0VW
RU5UKHdlYmtpdHNvdXJjZW9wZW4pCitUZXN0IGVtcHR5IElEIGNhc2UKK0dvdCBleHBlY3RlZCBl
eGNlcHRpb24gRXJyb3I6IElOVkFMSURfQUNDRVNTX0VSUjogRE9NIEV4Y2VwdGlvbiAxNQorVGVz
dCByZW1vdmluZyBhbiBJRCB0aGF0IHdhcyBuZXZlciBhZGRlZC4KK0dvdCBleHBlY3RlZCBleGNl
cHRpb24gRXJyb3I6IFNZTlRBWF9FUlI6IERPTSBFeGNlcHRpb24gMTIKK0dvdCBleHBlY3RlZCBl
eGNlcHRpb24gRXJyb3I6IFNZTlRBWF9FUlI6IERPTSBFeGNlcHRpb24gMTIKK1Rlc3QgYWRkaW5n
IHRoZSBzYW1lIElEIGFnYWluLgorVGVzdCB0aGF0IGFuIElEIGNhbiBiZSByZW1vdmVkIHdoaWxl
IGluIHRoZSBlbmRlZCBzdGF0ZS4KKworcnVubmluZyB0ZXN0QXBwZW5kRmFpbHVyZUNhc2VzCitF
VkVOVChsb2Fkc3RhcnQpCitFVkVOVCh3ZWJraXRzb3VyY2VvcGVuKQorVGVzdCBhcHBlbmQgd2l0
aCBlbXB0eSBJRC4KK0dvdCBleHBlY3RlZCBleGNlcHRpb24gRXJyb3I6IElOVkFMSURfQUNDRVNT
X0VSUjogRE9NIEV4Y2VwdGlvbiAxNQorVGVzdCBhcHBlbmQgd2l0aCBhbiBpbnZhbGlkIElECitH
b3QgZXhwZWN0ZWQgZXhjZXB0aW9uIEVycm9yOiBTWU5UQVhfRVJSOiBET00gRXhjZXB0aW9uIDEy
CitUZXN0IGFwcGVuZCB3aXRoIGEgbnVsbCBidWZmZXIuCitHb3QgZXhwZWN0ZWQgZXhjZXB0aW9u
IEVycm9yOiBJTlZBTElEX0FDQ0VTU19FUlI6IERPTSBFeGNlcHRpb24gMTUKK1Rlc3QgYSBzdWNj
ZXNzZnVsIGFwcGVuZC4KK0dvdCBleHBlY3RlZCBleGNlcHRpb24gRXJyb3I6IFNZTlRBWF9FUlI6
IERPTSBFeGNlcHRpb24gMTIKK0VORCBPRiBURVNUCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL3dlYm0vdmlkZW8tbWVkaWEtc291cmNlLWFk
ZC1hbmQtcmVtb3ZlLWlkcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9tZWRpYS9tZWRp
YS1zb3VyY2Uvd2VibS92aWRlby1tZWRpYS1zb3VyY2UtYWRkLWFuZC1yZW1vdmUtaWRzLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNjI0ZTViYWFjNWE0N2M4MGJlZGFjZDM1YzU4MWRhMWYwMmQ1Zjg0YwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbWVkaWEvbWVkaWEtc291cmNl
L3dlYm0vdmlkZW8tbWVkaWEtc291cmNlLWFkZC1hbmQtcmVtb3ZlLWlkcy5odG1sCkBAIC0wLDAg
KzEsMjE1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vbWVkaWEtcmVzb3VyY2VzL3ZpZGVvLXRlc3QuanMiPjwvc2Ny
aXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0id2VibS1tZWRpYS1zb3VyY2UuanMiPjwvc2NyaXB0
PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICAgICAgdmFyIGRlZmF1bHRTb3VyY2VNaW1ldHlw
ZSA9ICJ2aWRlby93ZWJtOyBjb2RlY3M9XCJ2cDgsIHZvcmJpc1wiIjsKKworICAgICAgICAgICAg
ZnVuY3Rpb24gcnVuT25Tb3VyY2VPcGVuKHZpZGVvVGFnLCBvbk9wZW5GdW5jdGlvbikKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICB2YXIgZXZlbnRIYW5kbGVyRnVuY3Rpb24gPSBmdW5j
dGlvbiAoZXZlbnQpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBldmVu
dC50YXJnZXQucmVtb3ZlRXZlbnRMaXN0ZW5lcignd2Via2l0c291cmNlb3BlbicsIGV2ZW50SGFu
ZGxlckZ1bmN0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgb25PcGVuRnVuY3Rpb24oZXZlbnQu
dGFyZ2V0KTsKKyAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgIHZpZGVvVGFnLmFk
ZEV2ZW50TGlzdGVuZXIoJ3dlYmtpdHNvdXJjZW9wZW4nLCBldmVudEhhbmRsZXJGdW5jdGlvbik7
CisgICAgICAgICAgICAgICAgc2V0U3JjVG9NZWRpYVNvdXJjZVVSTCh2aWRlb1RhZyk7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBpbmRleCBvZiB0aGUgbmV4dCBjbHVzdGVy
IHRvIHNlbmQgdG8gYXBwZW5kRGF0YSgpLgorICAgICAgICAgICAgdmFyIG5leHRDbHVzdGVySW5k
ZXggPSAwOworCisgICAgICAgICAgICBmdW5jdGlvbiBleHBlY3RFeGNlcHRpb25PbkFkZElkKHZp
ZGVvVGFnLCBpZCwgdHlwZSwgZXJyb3IpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
dHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgdmlkZW9UYWcud2Via2l0U291cmNlQWRkSWQoaWQs
IHR5cGUpOworICAgICAgICAgICAgICAgICAgICBmYWlsVGVzdCgiRXhwZWN0ZWQgYW4gZXhjZXB0
aW9uIik7CisgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgICAgICAg
ICBpZiAoIShlLmNvZGUgPT0gZXJyb3IpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBmYWls
VGVzdCgiVW5leHBlY3RlZCBleGNlcHRpb24gIiArIGUpOworICAgICAgICAgICAgICAgICAgICAg
ICAgdGhyb3cgZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBj
b25zb2xlV3JpdGUoIkdvdCBleHBlY3RlZCBleGNlcHRpb24gIiArIGUpOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gZXhwZWN0RXhjZXB0
aW9uT25SZW1vdmVJZCh2aWRlb1RhZywgaWQsIGVycm9yKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIHZpZGVvVGFnLndlYmtpdFNvdXJj
ZVJlbW92ZUlkKGlkKTsKKyAgICAgICAgICAgICAgICAgICAgZmFpbFRlc3QoIkV4cGVjdGVkIGFu
IGV4Y2VwdGlvbiIpOworICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKCEoZS5jb2RlID09IGVycm9yKSkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgZmFpbFRlc3QoIlVuZXhwZWN0ZWQgZXhjZXB0aW9uICIgKyBlKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHRocm93IGU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgICAgY29uc29sZVdyaXRlKCJHb3QgZXhwZWN0ZWQgZXhjZXB0aW9uICIgKyBlKTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGV4cGVj
dEV4Y2VwdGlvbk9uQXBwZW5kKHZpZGVvVGFnLCBpZCwgYnVmLCBlcnJvcikKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICB2aWRlb1RhZy53
ZWJraXRTb3VyY2VBcHBlbmQoaWQsIGJ1Zik7CisgICAgICAgICAgICAgICAgICAgIGZhaWxUZXN0
KCJFeHBlY3RlZCBhbiBleGNlcHRpb24iKTsKKyAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7
CisgICAgICAgICAgICAgICAgICAgIGlmICghKGUuY29kZSA9PSBlcnJvcikpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGZhaWxUZXN0KCJVbmV4cGVjdGVkIGV4Y2VwdGlvbiAiICsgZSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBlOworICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiR290IGV4cGVjdGVkIGV4Y2VwdGlvbiAi
ICsgZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBm
dW5jdGlvbiB0ZXN0QWRkSWRGYWlsdXJlQ2FzZXModmlkZW9UYWcpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgLy8gVGVzdCBhZGRpbmcgd2hpbGUgY2xvc2VkLgorICAgICAgICAgICAg
ICAgIGV4cGVjdEV4Y2VwdGlvbk9uQWRkSWQodmlkZW9UYWcsICIxMjMiLCBkZWZhdWx0U291cmNl
TWltZXR5cGUsIERPTUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VSUik7CisKKyAgICAgICAgICAg
ICAgICBydW5PblNvdXJjZU9wZW4odmlkZW9UYWcsIGZ1bmN0aW9uICh2dCkKKyAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiVGVzdCBlbXB0eSBJRCBj
YXNlIik7CisgICAgICAgICAgICAgICAgICAgIGV4cGVjdEV4Y2VwdGlvbk9uQWRkSWQodnQsICIi
LCBkZWZhdWx0U291cmNlTWltZXR5cGUsIERPTUV4Y2VwdGlvbi5JTlZBTElEX0FDQ0VTU19FUlIp
OworCisgICAgICAgICAgICAgICAgICAgIHZ0LndlYmtpdFNvdXJjZUFkZElkKCIxMjMiLCBkZWZh
dWx0U291cmNlTWltZXR5cGUpOworCisgICAgICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgi
VGVzdCBhZGRpbmcgdGhlIHNhbWUgSUQgYWdhaW4uIik7CisgICAgICAgICAgICAgICAgICAgIGV4
cGVjdEV4Y2VwdGlvbk9uQWRkSWQodnQsICIxMjMiLCBkZWZhdWx0U291cmNlTWltZXR5cGUsIERP
TUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VSUik7CisgICAgICAgICAgICAgICAgICAgIHZ0Lndl
YmtpdFNvdXJjZVJlbW92ZUlkKCIxMjMiKTsKKworICAgICAgICAgICAgICAgICAgICBjb25zb2xl
V3JpdGUoIlRlc3QgZW1wdHkgdHlwZS4iKTsKKyAgICAgICAgICAgICAgICAgICAgZXhwZWN0RXhj
ZXB0aW9uT25BZGRJZCh2dCwgIjIzNCIsICIiLCBET01FeGNlcHRpb24uSU5WQUxJRF9BQ0NFU1Nf
RVJSKTsKKworICAgICAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIlRlc3QgYW4gdW5zdXBw
b3J0ZWQgdHlwZS4iKTsKKyAgICAgICAgICAgICAgICAgICAgZXhwZWN0RXhjZXB0aW9uT25BZGRJ
ZCh2dCwgIjIzNCIsICJhdWRpby93YXYiLCBET01FeGNlcHRpb24uTk9UX1NVUFBPUlRFRF9FUlIp
OworCisgICAgICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiVGVzdCByZWFjaGluZyBzb3Vy
Y2VJRCBsaW1pdC4iKTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIHJlYWNoZWRJZExpbWl0ID0g
ZmFsc2U7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gVGhlIDIwIGhlcmUgaXMgYW4gYXJiaXRy
YXJ5IHVwcGVyIGxpbWl0IHRvIG1ha2Ugc3VyZSB0aGUgdGVzdCB0ZXJtaW5hdGVzLiBUaGlzIHRl
c3QKKyAgICAgICAgICAgICAgICAgICAgLy8gYXNzdW1lcyB0aGF0IGltcGxlbWVudGF0aW9ucyB3
b24ndCBzdXBwb3J0IG1vcmUgdGhhbiAyMCBzb3VyY2VJRCdzIHNpbXVsdGFuZW91c2x5LgorICAg
ICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDIwOyArK2kpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHZhciBzb3VyY2VJRCA9ICJzb3VyY2VJRC0iICsgaTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdnQud2Vi
a2l0U291cmNlQWRkSWQoc291cmNlSUQsIGRlZmF1bHRTb3VyY2VNaW1ldHlwZSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoZS5jb2RlICE9IERPTUV4Y2VwdGlvbi5RVU9UQV9FWENFRURFRF9FUlIpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFpbFRlc3QoIlVuZXhwZWN0ZWQgZXhjZXB0aW9u
ICIgKyBlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgZTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVh
Y2hlZElkTGltaXQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKCFyZWFjaGVkSWRMaW1pdCkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgZmFpbFRlc3QoIkZhaWxlZCB0byByZWFjaCBTb3VyY2VJRCBsaW1pdC4iKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAgICAgICAgIC8vIFRlc3QgdGhhdCBTb3VyY2VJRHMgY2FuJ3QgYmUgYWRkZWQgd2hp
bGUgaW4gdGhlIGVuZGVkIHN0YXRlLgorICAgICAgICAgICAgICAgICAgICB2dC53ZWJraXRTb3Vy
Y2VFbmRPZlN0cmVhbSh2dC5FT1NfTk9fRVJST1IpOworICAgICAgICAgICAgICAgICAgICBleHBl
Y3RFeGNlcHRpb25PbkFkZElkKHZ0LCAiMTIzIiwgZGVmYXVsdFNvdXJjZU1pbWV0eXBlLCBET01F
eGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIpOworCisgICAgICAgICAgICAgICAgICAgIHJ1bk5l
eHRUZXN0Q2FzZSh2dCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGZ1bmN0aW9uIHRlc3RSZW1vdmVJZEZhaWx1cmVDYXNlcyh2aWRlb1RhZykKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBydW5PblNvdXJjZU9wZW4odmlkZW9UYWcsIGZ1
bmN0aW9uICh2dCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGNvbnNv
bGVXcml0ZSgiVGVzdCBlbXB0eSBJRCBjYXNlIik7CisgICAgICAgICAgICAgICAgICAgIGV4cGVj
dEV4Y2VwdGlvbk9uUmVtb3ZlSWQodnQsICIiLCBET01FeGNlcHRpb24uSU5WQUxJRF9BQ0NFU1Nf
RVJSKTsKKworICAgICAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIlRlc3QgcmVtb3Zpbmcg
YW4gSUQgdGhhdCB3YXMgbmV2ZXIgYWRkZWQuIik7CisgICAgICAgICAgICAgICAgICAgIGV4cGVj
dEV4Y2VwdGlvbk9uUmVtb3ZlSWQodnQsICIzNDUiLCBET01FeGNlcHRpb24uU1lOVEFYX0VSUik7
CisKKyAgICAgICAgICAgICAgICAgICAgdnQud2Via2l0U291cmNlQWRkSWQoIjEyMyIsIGRlZmF1
bHRTb3VyY2VNaW1ldHlwZSk7CisgICAgICAgICAgICAgICAgICAgIHZ0LndlYmtpdFNvdXJjZVJl
bW92ZUlkKCIxMjMiKTsKKyAgICAgICAgICAgICAgICAgICAgZXhwZWN0RXhjZXB0aW9uT25SZW1v
dmVJZCh2dCwgIjEyMyIsIERPTUV4Y2VwdGlvbi5TWU5UQVhfRVJSKTsKKworICAgICAgICAgICAg
ICAgICAgICBjb25zb2xlV3JpdGUoIlRlc3QgYWRkaW5nIHRoZSBzYW1lIElEIGFnYWluLiIpOwor
ICAgICAgICAgICAgICAgICAgICB2dC53ZWJraXRTb3VyY2VBZGRJZCgiMTIzIiwgZGVmYXVsdFNv
dXJjZU1pbWV0eXBlKTsKKworICAgICAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIlRlc3Qg
dGhhdCBhbiBJRCBjYW4gYmUgcmVtb3ZlZCB3aGlsZSBpbiB0aGUgZW5kZWQgc3RhdGUuIik7Cisg
ICAgICAgICAgICAgICAgICAgIHZ0LndlYmtpdFNvdXJjZUVuZE9mU3RyZWFtKHZ0LkVPU19OT19F
UlJPUik7CisgICAgICAgICAgICAgICAgICAgIHZ0LndlYmtpdFNvdXJjZVJlbW92ZUlkKCIxMjMi
KTsKKworICAgICAgICAgICAgICAgICAgICBydW5OZXh0VGVzdENhc2UodnQpOworICAgICAgICAg
ICAgICAgIH0pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiB0ZXN0QXBw
ZW5kRmFpbHVyZUNhc2VzKHZpZGVvVGFnKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IHJ1bk9uU291cmNlT3Blbih2aWRlb1RhZywgZnVuY3Rpb24gKHZ0KQorICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgdnQud2Via2l0U291cmNlQWRkSWQoIjEyMyIsIGRlZmF1
bHRTb3VyY2VNaW1ldHlwZSk7CisKKyAgICAgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCJU
ZXN0IGFwcGVuZCB3aXRoIGVtcHR5IElELiIpOworICAgICAgICAgICAgICAgICAgICBleHBlY3RF
eGNlcHRpb25PbkFwcGVuZCh2dCwgIiIsIGdldEhlYWRlcnMoKSwgRE9NRXhjZXB0aW9uLklOVkFM
SURfQUNDRVNTX0VSUik7CisKKyAgICAgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCJUZXN0
IGFwcGVuZCB3aXRoIGFuIGludmFsaWQgSUQiKTsKKyAgICAgICAgICAgICAgICAgICAgZXhwZWN0
RXhjZXB0aW9uT25BcHBlbmQodnQsICIyMzQiLCBnZXRIZWFkZXJzKCksIERPTUV4Y2VwdGlvbi5T
WU5UQVhfRVJSKTsKKworICAgICAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIlRlc3QgYXBw
ZW5kIHdpdGggYSBudWxsIGJ1ZmZlci4iKTsKKyAgICAgICAgICAgICAgICAgICAgZXhwZWN0RXhj
ZXB0aW9uT25BcHBlbmQodnQsICIxMjMiLCBudWxsLCBET01FeGNlcHRpb24uSU5WQUxJRF9BQ0NF
U1NfRVJSKTsKKworICAgICAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIlRlc3QgYSBzdWNj
ZXNzZnVsIGFwcGVuZC4iKTsKKyAgICAgICAgICAgICAgICAgICAgdnQud2Via2l0U291cmNlQXBw
ZW5kKCIxMjMiLCBnZXRIZWFkZXJzKCkpOworCisgICAgICAgICAgICAgICAgICAgIHZ0LndlYmtp
dFNvdXJjZVJlbW92ZUlkKCIxMjMiKTsKKyAgICAgICAgICAgICAgICAgICAgZXhwZWN0RXhjZXB0
aW9uT25BcHBlbmQodnQsICIxMjMiLCBnZXRDbHVzdGVyKDApLCBET01FeGNlcHRpb24uU1lOVEFY
X0VSUik7CisKKyAgICAgICAgICAgICAgICAgICAgcnVuTmV4dFRlc3RDYXNlKHZ0KTsKKyAgICAg
ICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgdGVzdENh
c2VzID0gWworICAgICAgICAgICAgICAgIHRlc3RBZGRJZEZhaWx1cmVDYXNlcywKKyAgICAgICAg
ICAgICAgICB0ZXN0UmVtb3ZlSWRGYWlsdXJlQ2FzZXMsCisgICAgICAgICAgICAgICAgdGVzdEFw
cGVuZEZhaWx1cmVDYXNlcywKKyAgICAgICAgICAgIF07CisKKyAgICAgICAgICAgIHZhciB0ZXN0
Q2FzZUluZGV4ID0gMDsKKworICAgICAgICAgICAgZnVuY3Rpb24gcnVuTmV4dFRlc3RDYXNlKHZp
ZGVvVGFnKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmICh0ZXN0Q2FzZUluZGV4
ID49IHRlc3RDYXNlcy5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgICAgICAgZW5kVGVzdCgpOwor
ICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAgICAgdmFyIHRlc3RDYXNlRnVuY3Rpb24gPSB0ZXN0Q2FzZXNbdGVzdENhc2VJbmRleF07
CisgICAgICAgICAgICAgICAgdGVzdENhc2VJbmRleCsrOworCisgICAgICAgICAgICAgICAgY29u
c29sZVdyaXRlKCIiKTsKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoInJ1bm5pbmcgIiAr
IHRlc3RDYXNlRnVuY3Rpb24ubmFtZSk7CisgICAgICAgICAgICAgICAgdGVzdENhc2VGdW5jdGlv
bih2aWRlb1RhZyk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIG9uTG9h
ZCgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZmluZE1lZGlhRWxlbWVudCgpOwor
CisgICAgICAgICAgICAgICAgd2FpdEZvckV2ZW50KCdsb2Fkc3RhcnQnKTsKKyAgICAgICAgICAg
ICAgICB3YWl0Rm9yRXZlbnQoJ3dlYmtpdHNvdXJjZW9wZW4nKTsKKworICAgICAgICAgICAgICAg
IGxvYWRXZWJNRGF0YShmdW5jdGlvbihzdWNjZXNzKQorICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKCFzdWNjZXNzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBm
YWlsVGVzdCgiRmFpbGVkIHRvIGxvYWQgV2ViTSBkYXRhIik7CisgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
cnVuTmV4dFRlc3RDYXNlKHZpZGVvKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25M
b2FkKCkiPgorICAgICAgICA8dmlkZW8+IDwvdmlkZW8+CisgICAgICAgIDxwPlRlc3RzIHdlYmtp
dFNvdXJjZUFkZElkKCkgJmFtcDsgd2Via2l0U291cmNlUmVtb3ZlSWQoKSBtZXRob2RzPC9wPgor
ICAgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAppbmRleCBhOGRhN2RkZGZjNzhhMzJkMzVmYjQ1YmQy
MDYwMTkxNTJiZTFmMzVhLi5jODYwNTFkZTRkYTMzMzE2OGVhNzBjODU0Y2E5YTQwYzVmYTE3NGIw
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0
aW9ucy50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3Rh
dGlvbnMudHh0CkBAIC0zNzQ0LDYgKzM3NDQsOSBAQCBCVUdDUjEyMjQ0OCA6IG1lZGlhL3ZpZGVv
LXNlZWstcGFzdC1lbmQtcGF1c2VkLmh0bWwgPSBQQVNTIFRFWFQKIAogQlVHQ1IxMjI0NjIgV0lO
IExJTlVYIDogaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdC1lbGVtZW50Lmh0bWwgPSBURVhU
CiAKKy8vIFRlbXBvcmFyaWx5IGRpc2FibGVkIHVudGlsIENocm9taXVtIHNvdXJjZUFkZElkKCkg
JiBzb3VyY2VSZW1vdmVJZCgpIGNvZGUgaGFzIGJlZW4gY2hlY2tlZCBpbi4KK0JVR1dLODM2MTYg
U0tJUCA6IGh0dHAvdGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL3dlYm0vdmlkZW8tbWVkaWEtc291
cmNlLWFkZC1hbmQtcmVtb3ZlLWlkcy5odG1sID0gRkFJTAorCiBCVUdXSzgzNTAzIExJTlVYIERF
QlVHIDogcGx1Z2lucy9pbm5lci1odG1sLWRpc3BsYXktbm9uZS5odG1sID0gQ1JBU0gKIAogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>