<?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>209680</bug_id>
          
          <creation_ts>2020-03-27 13:46:41 -0700</creation_ts>
          <short_desc>REGRESSION (r259095): ASSERTION FAILED: m_videoFullscreenMode != VideoFullscreenModeNone seen with TestWebKitAPI.WebKitLegacy.AudioSessionCategoryIOS</short_desc>
          <delta_ts>2020-05-12 12:12:09 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=209610</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=209823</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=211792</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryan Haddad">ryanhaddad</reporter>
          <assigned_to name="Peng Liu">peng.liu6</assigned_to>
          <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>Lawrence.j</cc>
    
    <cc>peng.liu6</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bot-watchers-bugzilla</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1634980</commentid>
    <comment_count>0</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2020-03-27 13:46:41 -0700</bug_when>
    <thetext>Seeing the following API test crash on iOS Debug bots:

    TestWebKitAPI.WebKitLegacy.AudioSessionCategoryIOS
        MRMediaRemoteSetNowPlayingApplicationPlaybackStateForOrigin(stopped) failed with error 3
        MRMediaRemoteSetNowPlayingApplicationPlaybackStateForOrigin(stopped) failed with error 3
        MRMediaRemoteSetNowPlayingApplicationPlaybackStateForOrigin(stopped) failed with error 3
        MRMediaRemoteSetNowPlayingApplicationPlaybackStateForOrigin(stopped) failed with error 3
        MRMediaRemoteSetNowPlayingApplicationPlaybackStateForOrigin(stopped) failed with error 3
        MRMediaRemoteSetNowPlayingApplicationPlaybackStateForOrigin(playing) failed with error 3
        2020-03-27 01:17:47.601 TestWebKitAPI[49624:5509678] *** Warning: &lt;AVPlayerViewController: 0x7f9d5d035e00&gt; is trying to enter full screen, but is not in its view&apos;s window&apos;s view controller hierarchy. This results in undefined behavior.
        MRMediaRemoteSetNowPlayingApplicationPlaybackStateForOrigin(stopped) failed with error 3
        MRMediaRemoteSetNowPlayingApplicationPlaybackStateForOrigin(stopped) failed with error 3
        MRMediaRemoteSetNowPlayingApplicationPlaybackStateForOrigin(stopped) failed with error 3
        MRMediaRemoteSetNowPlayingApplicationPlaybackStateForOrigin(stopped) failed with error 3
        ASSERTION FAILED: m_videoFullscreenMode != VideoFullscreenModeNone
        ./html/HTMLMediaElement.cpp(6105) : void WebCore::HTMLMediaElement::exitFullscreen()
        1   0x107ff9909 WTFCrash
        2   0x120762f3b WTFCrashWithInfo(int, char const*, char const*, int)
        3   0x1231fe11f WebCore::HTMLMediaElement::exitFullscreen()
        4   0x111e13c4b -[WebView(WebViewInternal) _enterVideoFullscreenForVideoElement:mode:]
        5   0x111e3487d WebChromeClient::enterVideoFullscreenForVideoElement(WebCore::HTMLVideoElement&amp;, unsigned int, bool)
        6   0x12325d7b6 WebCore::HTMLMediaElement::enterFullscreen(unsigned int)::$_37::operator()() const
        7   0x12325d539 WTF::Detail::CallableWrapper&lt;WebCore::HTMLMediaElement::enterFullscreen(unsigned int)::$_37, void&gt;::call()
        8   0x1207772aa WTF::Function&lt;void ()&gt;::operator()() const
        9   0x120a72940 WebCore::GenericTaskQueue&lt;WebCore::Timer&gt;::enqueueTask(WTF::Function&lt;void ()&gt;&amp;&amp;)::&apos;lambda&apos;()::operator()() const
        10  0x120a72789 WTF::Detail::CallableWrapper&lt;WebCore::GenericTaskQueue&lt;WebCore::Timer&gt;::enqueueTask(WTF::Function&lt;void ()&gt;&amp;&amp;)::&apos;lambda&apos;(), void&gt;::call()
        11  0x1207772aa WTF::Function&lt;void ()&gt;::operator()() const
        12  0x123cb7f3e WebCore::TaskDispatcher&lt;WebCore::Timer&gt;::dispatchOneTask()
        13  0x123cb7be5 WebCore::TaskDispatcher&lt;WebCore::Timer&gt;::sharedTimerFired()
        14  0x123cbd921 WebCore::TaskDispatcher&lt;WebCore::Timer&gt;::sharedTimer()::$_1::operator()() const
        15  0x123cbd8e9 WTF::Detail::CallableWrapper&lt;WebCore::TaskDispatcher&lt;WebCore::Timer&gt;::sharedTimer()::$_1, void&gt;::call()
        16  0x1207772aa WTF::Function&lt;void ()&gt;::operator()() const
        17  0x120841c69 WebCore::Timer::fired()
        18  0x123d0e6fa WebCore::ThreadTimers::sharedTimerFiredInternal()
        19  0x123d176b1 WebCore::ThreadTimers::setSharedTimer(WebCore::SharedTimer*)::$_0::operator()() const
        20  0x123d17669 WTF::Detail::CallableWrapper&lt;WebCore::ThreadTimers::setSharedTimer(WebCore::SharedTimer*)::$_0, void&gt;::call()
        21  0x1207772aa WTF::Function&lt;void ()&gt;::operator()() const
        22  0x123ccfc97 WebCore::MainThreadSharedTimer::fired()
        23  0x123d78f06 WebCore::timerFired(__CFRunLoopTimer*, void*)
        24  0x10fc803f4 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__
        25  0x10fc8008e __CFRunLoopDoTimer
        26  0x10fc7f6ea __CFRunLoopDoTimers
        27  0x10fc7a33e __CFRunLoopRun
        28  0x10fc79884 CFRunLoopRunSpecific
        29  0x12217080e RunWebThread(void*)
        30  0x110f6c109 _pthread_start
        31  0x110f67b8b thread_start
        Child process terminated with signal 11: Segmentation fault

https://build.webkit.org/builders/Apple%20iOS%2013%20Simulator%20Debug%20WK2%20(Tests)/builds/2822</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634981</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-03-27 13:46:54 -0700</bug_when>
    <thetext>&lt;rdar://problem/60983033&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634982</commentid>
    <comment_count>2</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2020-03-27 13:48:37 -0700</bug_when>
    <thetext>I think this may have started with https://trac.webkit.org/changeset/259095/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635081</commentid>
    <comment_count>3</comment_count>
      <attachid>394776</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-03-27 18:20:34 -0700</bug_when>
    <thetext>Created attachment 394776
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635340</commentid>
    <comment_count>4</comment_count>
      <attachid>394776</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-29 09:02:15 -0700</bug_when>
    <thetext>Comment on attachment 394776
Patch

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

The patch fixes the test failures, but can&apos;t this assert still happen on actual web sites? If not, why not?

Out of curiosity, what are the differences between webkit-playsinline and playsinline?

&gt; Tools/ChangeLog:3
&gt; +        REGRESSION (r259095): ASSERTION FAILED: m_videoFullscreenMode != VideoFullscreenModeNone seen with TestWebKitAPI.WebKitLegacy.AudioSessionCategoryIOS

How does r259095 cause this regression?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635901</commentid>
    <comment_count>5</comment_count>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-03-30 18:38:42 -0700</bug_when>
    <thetext>(In reply to Daniel Bates from comment #4)
&gt; Comment on attachment 394776 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=394776&amp;action=review
&gt; 
&gt; The patch fixes the test failures, but can&apos;t this assert still happen on
&gt; actual web sites? If not, why not?
&gt; 
&gt; Out of curiosity, what are the differences between webkit-playsinline and
&gt; playsinline?
&gt; 
&gt; &gt; Tools/ChangeLog:3
&gt; &gt; +        REGRESSION (r259095): ASSERTION FAILED: m_videoFullscreenMode != VideoFullscreenModeNone seen with TestWebKitAPI.WebKitLegacy.AudioSessionCategoryIOS
&gt; 
&gt; How does r259095 cause this regression?

Thanks for the review and sorry for the confusion.

Actually, this patch only fixes the test failures, but not the real problem. I will upload the patch to fix the real problem, and clean up the usage of webkit-playsinline in another patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635914</commentid>
    <comment_count>6</comment_count>
      <attachid>395004</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-03-30 19:10:14 -0700</bug_when>
    <thetext>Created attachment 395004
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636097</commentid>
    <comment_count>7</comment_count>
      <attachid>395004</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-03-31 10:26:50 -0700</bug_when>
    <thetext>Comment on attachment 395004
Patch

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

Does seem smarter to start using RetainPtr

&gt; Source/WebKitLegacy/mac/WebView/WebView.mm:9338
&gt; +        // This previous call will trigger _exitFullscreen
&gt; +        // which has to clear an item in _private-&gt;fullscreenControllersExiting.

I don’t understand this comment. I suggest just omitting it.

&gt; Source/WebKitLegacy/mac/WebView/WebView.mm:9340
&gt; +        _private-&gt;fullscreenControllersExiting.append(_private-&gt;fullscreenController);
&gt; +        _private-&gt;fullscreenController = nil;

What guarantees _private-&gt;fullscreenController is not nil here? I don’t understand what limits there are on what HTMLVIdeoElement::exitFullscreen might do. Couldn’t it do some arbitrary set of work that might end up nilling out _private-&gt;fullscreenController?

We can avoid a tiny bit of reference count churn by writing it this way:

    _private-&gt;fullscreenControllersExiting.append(std::exchange(_private-&gt;fullscreenController, nil));

That will move the RetainPtr instead of first copying it and then nulling it out.

&gt; Source/WebKitLegacy/mac/WebView/WebView.mm:9365
&gt; +        auto fullscreenControler = _private-&gt;fullscreenControllersExiting.first();
&gt; +        [fullscreenControler exitFullscreen];
&gt; +        _private-&gt;fullscreenControllersExiting.remove(0);
&gt;          return;

This seems a bit fragile. Is it really better to call exitFullscreen first, and *then* remove the first thing in the vector *unconditionally*?

Local variable name has a misspelling in it: &quot;controler&quot; with one &quot;r&quot;. Also if we don’t change the sequence here, I suggest not using a local variable:

    [_private-&gt;fullscreenControllersExiting.first() exitFullscreen];</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636116</commentid>
    <comment_count>8</comment_count>
      <attachid>395004</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2020-03-31 10:39:19 -0700</bug_when>
    <thetext>Comment on attachment 395004
Patch

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

&gt; Source/WebCore/ChangeLog:10
&gt; +        Call fullscreenModeChanged(VideoFullscreenModeNone) right before call the

s/before call the/before calling the/

&gt; Source/WebKitLegacy/mac/ChangeLog:10
&gt; +        With this patch, the WebKit-Legacy can support multiple video elements request
&gt; +        to enter video fullscreen almost at the same time, and only the last one will succeed.
&gt; +        Also, this patch fixes webkit.org/b/209610 for WebKit-Legacy.

This should have a test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636165</commentid>
    <comment_count>9</comment_count>
      <attachid>395004</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-03-31 11:59:31 -0700</bug_when>
    <thetext>Comment on attachment 395004
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:10
&gt;&gt; +        Call fullscreenModeChanged(VideoFullscreenModeNone) right before call the
&gt; 
&gt; s/before call the/before calling the/

Right, will fix it.

&gt;&gt; Source/WebKitLegacy/mac/ChangeLog:10
&gt;&gt; +        Also, this patch fixes webkit.org/b/209610 for WebKit-Legacy.
&gt; 
&gt; This should have a test.

Agree.  We need a dedicated test for this fix. I will add a layout test.
Currently TestWebKitAPI.WebKitLegacy.AudioSessionCategoryIOS will test the fix, but that is not its purpose.

&gt;&gt; Source/WebKitLegacy/mac/WebView/WebView.mm:9338
&gt;&gt; +        // which has to clear an item in _private-&gt;fullscreenControllersExiting.
&gt; 
&gt; I don’t understand this comment. I suggest just omitting it.

Got it. Will remove it.

&gt;&gt; Source/WebKitLegacy/mac/WebView/WebView.mm:9340
&gt;&gt; +        _private-&gt;fullscreenController = nil;
&gt; 
&gt; What guarantees _private-&gt;fullscreenController is not nil here? I don’t understand what limits there are on what HTMLVIdeoElement::exitFullscreen might do. Couldn’t it do some arbitrary set of work that might end up nilling out _private-&gt;fullscreenController?
&gt; 
&gt; We can avoid a tiny bit of reference count churn by writing it this way:
&gt; 
&gt;     _private-&gt;fullscreenControllersExiting.append(std::exchange(_private-&gt;fullscreenController, nil));
&gt; 
&gt; That will move the RetainPtr instead of first copying it and then nulling it out.

The current implementation of HTMLVIdeoElement::exitFullscreen() guarantees the _private-&gt;fullscreenController will be changed to nil in a later run loop. The only way to change _private-&gt;fullscreenController to nil is -[WebView(WebViewInternal) _exitVideoFullscreen], which will be called in HTMLMediaElement::dispatchEvent() after dispatching the &quot;webkitendfullscreenEvent&quot; event. Therefore, when we call _private-&gt;fullscreenControllersExiting.append() here, the _private-&gt;fullscreenController should not be nil.

Great idea! I will update the code.

&gt;&gt; Source/WebKitLegacy/mac/WebView/WebView.mm:9365
&gt;&gt;          return;
&gt; 
&gt; This seems a bit fragile. Is it really better to call exitFullscreen first, and *then* remove the first thing in the vector *unconditionally*?
&gt; 
&gt; Local variable name has a misspelling in it: &quot;controler&quot; with one &quot;r&quot;. Also if we don’t change the sequence here, I suggest not using a local variable:
&gt; 
&gt;     [_private-&gt;fullscreenControllersExiting.first() exitFullscreen];

All the fullscreenControllers in the vector should call exitFullscreen before they can be released. I chose to do it in the FIFO order, the ordering does not matter though. Also, the exitFullscreen function won&apos;t change the vector.

Good idea! I will fix it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636168</commentid>
    <comment_count>10</comment_count>
      <attachid>395004</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-03-31 12:10:30 -0700</bug_when>
    <thetext>Comment on attachment 395004
Patch

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

&gt;&gt;&gt; Source/WebKitLegacy/mac/WebView/WebView.mm:9365
&gt;&gt;&gt;          return;
&gt;&gt; 
&gt;&gt; This seems a bit fragile. Is it really better to call exitFullscreen first, and *then* remove the first thing in the vector *unconditionally*?
&gt;&gt; 
&gt;&gt; Local variable name has a misspelling in it: &quot;controler&quot; with one &quot;r&quot;. Also if we don’t change the sequence here, I suggest not using a local variable:
&gt;&gt; 
&gt;&gt;     [_private-&gt;fullscreenControllersExiting.first() exitFullscreen];
&gt; 
&gt; All the fullscreenControllers in the vector should call exitFullscreen before they can be released. I chose to do it in the FIFO order, the ordering does not matter though. Also, the exitFullscreen function won&apos;t change the vector.
&gt; 
&gt; Good idea! I will fix it.

Saying they &quot;should call exitFullscreen before they can be released&quot; is one thing, but my point is more about why wouldn’t we move the controller into a RetainPtr local variable *before* calling exitFullscreen. It will still not be released, because the local variable will be there. It would de a &quot;take first item off the vector and process it&quot; model, rather than a &quot;process first item in the vector, then remove first item from the vector&quot; model. Seems much easier to get right, to me.

Something to consider changing later even if we land it like this.

&gt; Source/WebKitLegacy/mac/WebView/WebView.mm:9369
&gt;      [_private-&gt;fullscreenController exitFullscreen];
&gt; -    [_private-&gt;fullscreenController release];
&gt;      _private-&gt;fullscreenController = nil;

Same idea here; I would move this into a local variable first, then call exitFullscreen, for the same reason.

Unless there’s a good reason to not do it this way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636179</commentid>
    <comment_count>11</comment_count>
      <attachid>395004</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-03-31 12:29:47 -0700</bug_when>
    <thetext>Comment on attachment 395004
Patch

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

&gt;&gt;&gt;&gt; Source/WebKitLegacy/mac/WebView/WebView.mm:9365
&gt;&gt;&gt;&gt;          return;
&gt;&gt;&gt; 
&gt;&gt;&gt; This seems a bit fragile. Is it really better to call exitFullscreen first, and *then* remove the first thing in the vector *unconditionally*?
&gt;&gt;&gt; 
&gt;&gt;&gt; Local variable name has a misspelling in it: &quot;controler&quot; with one &quot;r&quot;. Also if we don’t change the sequence here, I suggest not using a local variable:
&gt;&gt;&gt; 
&gt;&gt;&gt;     [_private-&gt;fullscreenControllersExiting.first() exitFullscreen];
&gt;&gt; 
&gt;&gt; All the fullscreenControllers in the vector should call exitFullscreen before they can be released. I chose to do it in the FIFO order, the ordering does not matter though. Also, the exitFullscreen function won&apos;t change the vector.
&gt;&gt; 
&gt;&gt; Good idea! I will fix it.
&gt; 
&gt; Saying they &quot;should call exitFullscreen before they can be released&quot; is one thing, but my point is more about why wouldn’t we move the controller into a RetainPtr local variable *before* calling exitFullscreen. It will still not be released, because the local variable will be there. It would de a &quot;take first item off the vector and process it&quot; model, rather than a &quot;process first item in the vector, then remove first item from the vector&quot; model. Seems much easier to get right, to me.
&gt; 
&gt; Something to consider changing later even if we land it like this.

Ah, got your point! Make sense. I will update the patch. Thanks!

&gt;&gt; Source/WebKitLegacy/mac/WebView/WebView.mm:9369
&gt;&gt;      _private-&gt;fullscreenController = nil;
&gt; 
&gt; Same idea here; I would move this into a local variable first, then call exitFullscreen, for the same reason.
&gt; 
&gt; Unless there’s a good reason to not do it this way.

Will fix. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636384</commentid>
    <comment_count>12</comment_count>
      <attachid>395128</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-03-31 21:59:16 -0700</bug_when>
    <thetext>Created attachment 395128
Revise the patch based on review comments and add an API test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636533</commentid>
    <comment_count>13</comment_count>
      <attachid>395128</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2020-04-01 09:37:16 -0700</bug_when>
    <thetext>Comment on attachment 395128
Revise the patch based on review comments and add an API test

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

&gt; Source/WebKitLegacy/mac/WebView/WebView.mm:9334
&gt; +        _private-&gt;fullscreenControllersExiting.append(std::exchange(_private-&gt;fullscreenController, nil));

&quot;fullscreenControllersExiting&quot; is a slightly confusing name. Maybe just &quot;fullscreenControllers&quot; (see comment below).

&gt; Source/WebKitLegacy/mac/WebView/WebView.mm:9352
&gt; +    if (!_private-&gt;fullscreenController &amp;&amp; _private-&gt;fullscreenControllersExiting.isEmpty())

Don&apos;t you want `||` here?

&gt; Source/WebKitLegacy/mac/WebView/WebView.mm:9357
&gt; +        auto controller = _private-&gt;fullscreenControllersExiting.first();
&gt; +        _private-&gt;fullscreenControllersExiting.remove(0);

You could use removeFirst here:

    _private-&gt;fullscreenControllersExiting.removeFirst(&amp;controller)

&gt; Source/WebKitLegacy/mac/WebView/WebViewData.h:324
&gt; +    RetainPtr&lt;WebVideoFullscreenController&gt; fullscreenController;
&gt; +    Vector&lt;RetainPtr&lt;WebVideoFullscreenController&gt;&gt; fullscreenControllersExiting;

Do we really need both? Why not just a vector, which will only have one controller in the typical case?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636562</commentid>
    <comment_count>14</comment_count>
      <attachid>395128</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-04-01 10:44:33 -0700</bug_when>
    <thetext>Comment on attachment 395128
Revise the patch based on review comments and add an API test

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

&gt;&gt; Source/WebKitLegacy/mac/WebView/WebView.mm:9334
&gt;&gt; +        _private-&gt;fullscreenControllersExiting.append(std::exchange(_private-&gt;fullscreenController, nil));
&gt; 
&gt; &quot;fullscreenControllersExiting&quot; is a slightly confusing name. Maybe just &quot;fullscreenControllers&quot; (see comment below).

The fullscreenControllers in the vector are the ones in the process to exit fullscreen, while the fullscreenController is the one in the fullscreen mode currently.

&gt;&gt; Source/WebKitLegacy/mac/WebView/WebView.mm:9352
&gt;&gt; +    if (!_private-&gt;fullscreenController &amp;&amp; _private-&gt;fullscreenControllersExiting.isEmpty())
&gt; 
&gt; Don&apos;t you want `||` here?

The purpose of this function is to ask one fullscreenController in the vector to exit fullscreen if the vector is not empty. If the vector is empty, then ask _private-&gt;fullscreenController to exit fullscreen if it is not nil. So we need to use &apos;&amp;&amp;&apos; here.

&gt;&gt; Source/WebKitLegacy/mac/WebView/WebView.mm:9357
&gt;&gt; +        _private-&gt;fullscreenControllersExiting.remove(0);
&gt; 
&gt; You could use removeFirst here:
&gt; 
&gt;     _private-&gt;fullscreenControllersExiting.removeFirst(&amp;controller)

Right. Is removeFirst more efficient in this case?

&gt;&gt; Source/WebKitLegacy/mac/WebView/WebViewData.h:324
&gt;&gt; +    Vector&lt;RetainPtr&lt;WebVideoFullscreenController&gt;&gt; fullscreenControllersExiting;
&gt; 
&gt; Do we really need both? Why not just a vector, which will only have one controller in the typical case?

We still need a variable to remember which fullscreenController is in fullscreen currently.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636745</commentid>
    <comment_count>15</comment_count>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-04-01 17:16:56 -0700</bug_when>
    <thetext>*** Bug 209823 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637151</commentid>
    <comment_count>16</comment_count>
      <attachid>395323</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-04-02 16:50:53 -0700</bug_when>
    <thetext>Created attachment 395323
Simplify the page for API test after discussion with Jer and Eric</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637482</commentid>
    <comment_count>17</comment_count>
      <attachid>395323</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2020-04-03 12:14:48 -0700</bug_when>
    <thetext>Comment on attachment 395323
Simplify the page for API test after discussion with Jer and Eric

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        API test: WebKitLegacy.VideoFullscreenStress

This patch should also remove the crashing expectation for media/media-fullscreen-return-to-inline.html.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637637</commentid>
    <comment_count>18</comment_count>
      <attachid>395323</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-04-03 22:09:13 -0700</bug_when>
    <thetext>Comment on attachment 395323
Simplify the page for API test after discussion with Jer and Eric

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

&gt;&gt; Source/WebCore/ChangeLog:8
&gt;&gt; +        API test: WebKitLegacy.VideoFullscreenStress
&gt; 
&gt; This patch should also remove the crashing expectation for media/media-fullscreen-return-to-inline.html.

Right! Thanks for your reminder.
Will update the patch to do that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637663</commentid>
    <comment_count>19</comment_count>
      <attachid>395442</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-04-04 01:24:30 -0700</bug_when>
    <thetext>Created attachment 395442
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637664</commentid>
    <comment_count>20</comment_count>
      <attachid>395443</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-04-04 02:10:28 -0700</bug_when>
    <thetext>Created attachment 395443
Patch for landing - v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637702</commentid>
    <comment_count>21</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-04-04 10:06:27 -0700</bug_when>
    <thetext>Committed r259531: &lt;https://trac.webkit.org/changeset/259531&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 395443.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394776</attachid>
            <date>2020-03-27 18:20:34 -0700</date>
            <delta_ts>2020-03-30 19:10:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209680-20200327182033.patch</filename>
            <type>text/plain</type>
            <size>5394</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5MTE2CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggM2M0YTcyNjEwYWMxY2YzYzdlMDhjMGUyNjIyNTJjYWRj
NDY5MTkxZS4uYTAxYjg5NDcyMzYzMTAzM2E5NjNiMmQ3YjAxMzExYzhkMTMyZWI0NyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIz
IEBACisyMDIwLTAzLTI3ICBQZW5nIExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAg
ICAgUkVHUkVTU0lPTiAocjI1OTA5NSk6IEFTU0VSVElPTiBGQUlMRUQ6IG1fdmlkZW9GdWxsc2Ny
ZWVuTW9kZSAhPSBWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSBzZWVuIHdpdGggVGVzdFdlYktpdEFQ
SS5XZWJLaXRMZWdhY3kuQXVkaW9TZXNzaW9uQ2F0ZWdvcnlJT1MKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTY4MAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggcmVwbGFjZXMgdGhlIHZp
ZGVvIGVsZW1lbnQgYXR0cmlidXRlICJ3ZWJraXQtcGxheXNpbmxpbmUiIHdpdGggInBsYXlzaW5s
aW5lIgorICAgICAgICBpbiB0aGUgcGFnZXMgZm9yIEFQSSB0ZXN0cy4gRm9yIFRlc3RXZWJLaXRB
UEkuV2ViS2l0TGVnYWN5LkF1ZGlvU2Vzc2lvbkNhdGVnb3J5SU9TLAorICAgICAgICBiZWNhdXNl
IG9mIHRoZSBhYnNlbnQgb2YgdGhlICJwbGF5c2lubGluZSIgYXR0cmlidXRlLCB0aGUgdmlkZW8g
ZWxlbWVudHMgZW50ZXIvZXhpdAorICAgICAgICBmdWxsc2NyZWVuLCBidXQgdGhlIHRlc3QgZG9l
cyBub3Qgd2FpdCBmb3IgdGhlIHRyYW5zaXRpb24gdG8gY29tcGxldGUgYmVjYXVzZSBpdAorICAg
ICAgICBleHBlY3RzIHRoZSB2aWRlb3MgdG8gcGxheSBpbmxpbmUsIHRoZW4gdmlkZW8gZWxlbWVu
dHMgd2lsbCBlbmNvdW50ZXIgYXNzZXJ0aW9uCisgICAgICAgIGZhaWx1cmVzIHJlZ2FyZGluZyB0
aGVpciB2aWRlbyBmdWxsc2NyZWVuIG1vZGUuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdExlZ2FjeS9pb3MvdmlkZW8td2l0aC1hdWRpby5odG1sOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0TGVnYWN5L2lvcy92aWRlby13aXRoLW11dGVkLWF1ZGlv
LWFuZC13ZWJhdWRpby5odG1sOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
TGVnYWN5L2lvcy92aWRlby13aXRoLW11dGVkLWF1ZGlvLmh0bWw6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRMZWdhY3kvaW9zL3ZpZGVvLXdpdGgtcGF1c2VkLWF1ZGlvLWFu
ZC1wbGF5aW5nLW11dGVkLmh0bWw6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRMZWdhY3kvaW9zL3ZpZGVvLXdpdGhvdXQtYXVkaW8uaHRtbDoKKwogMjAyMC0wMy0yNyAgUGhp
bGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0ZsYXRwYWsg
U0RLXSBBbGxvdyBwYXNzaW5nIGdzdC1idWlsZCBNZXNvbiBvcHRpb25zCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdExlZ2FjeS9pb3MvdmlkZW8td2l0aC1hdWRp
by5odG1sIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRMZWdhY3kvaW9zL3ZpZGVv
LXdpdGgtYXVkaW8uaHRtbAppbmRleCBiM2MzYmNkMDIxOTliZjViZDM3NDg1ZDY0Y2MyMjkyOWNm
MDIzNGFkLi43YWIwYjJjNzBiYzE3YjgxZWNmZTc1YmY1ZjBlMDdmNTBlYjZhMjZlIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdExlZ2FjeS9pb3MvdmlkZW8td2l0
aC1hdWRpby5odG1sCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0TGVnYWN5
L2lvcy92aWRlby13aXRoLWF1ZGlvLmh0bWwKQEAgLTMxLDYgKzMxLDYgQEAKICAgIDwvc2NyaXB0
PgogPC9oZWFkPgogPGJvZHkgb25sb2FkPSJnbygpIj4KLSAgICA8dmlkZW8gc3JjPSJ2aWRlby13
aXRoLWF1ZGlvLm1wNCIgd2Via2l0LXBsYXlzaW5saW5lPjwvdmlkZW8+CisgICAgPHZpZGVvIHNy
Yz0idmlkZW8td2l0aC1hdWRpby5tcDQiIHBsYXlzaW5saW5lPjwvdmlkZW8+CiA8L2JvZHk+CiA8
L2h0bWw+CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdExlZ2Fj
eS9pb3MvdmlkZW8td2l0aC1tdXRlZC1hdWRpby1hbmQtd2ViYXVkaW8uaHRtbCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0TGVnYWN5L2lvcy92aWRlby13aXRoLW11dGVkLWF1ZGlv
LWFuZC13ZWJhdWRpby5odG1sCmluZGV4IGY0ODE1YWQyZGNmODI5ZGE3NTg0YzFjOTk2NTFhZjFj
ZjViNWFlZDkuLjU1NjNiMmE0N2NhZGVhYmU4YTlkZDFkNWViNDBmMjQ1MzJiYzUyNGUgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0TGVnYWN5L2lvcy92aWRlby13
aXRoLW11dGVkLWF1ZGlvLWFuZC13ZWJhdWRpby5odG1sCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0TGVnYWN5L2lvcy92aWRlby13aXRoLW11dGVkLWF1ZGlvLWFuZC13ZWJh
dWRpby5odG1sCkBAIC0yNiw2ICsyNiw2IEBACiAgICAgICAgIDwvc2NyaXB0PgogICAgIDwvaGVh
ZD4KICAgICA8Ym9keSBvbmxvYWQ9ImdvKCkiPgotICAgICAgICA8dmlkZW8gc3JjPSJ2aWRlby13
aXRoLWF1ZGlvLm1wNCIgbXV0ZWQgd2Via2l0LXBsYXlzaW5saW5lPjwvdmlkZW8+CisgICAgICAg
IDx2aWRlbyBzcmM9InZpZGVvLXdpdGgtYXVkaW8ubXA0IiBtdXRlZCBwbGF5c2lubGluZT48L3Zp
ZGVvPgogICAgIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0TGVnYWN5L2lvcy92aWRlby13aXRoLW11dGVkLWF1ZGlvLmh0bWwgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdExlZ2FjeS9pb3MvdmlkZW8td2l0aC1tdXRl
ZC1hdWRpby5odG1sCmluZGV4IDAwMjYxM2E4Y2U0OGE3NmMxN2I4YTFiZmNkNmE4NTdjYzNlMmVj
MmUuLjllODhiZmYxNzMxNjU3NGM2YTAxYTg2MzQwYzEyYWI4MGExNTdmNDcgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0TGVnYWN5L2lvcy92aWRlby13aXRoLW11
dGVkLWF1ZGlvLmh0bWwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRMZWdh
Y3kvaW9zL3ZpZGVvLXdpdGgtbXV0ZWQtYXVkaW8uaHRtbApAQCAtMjMsNiArMjMsNiBAQAogICAg
ICAgICA8L3NjcmlwdD4KICAgICA8L2hlYWQ+CiAgICAgPGJvZHkgb25sb2FkPSJnbygpIj4KLSAg
ICAgICAgPHZpZGVvIHNyYz0idmlkZW8td2l0aC1hdWRpby5tcDQiIG11dGVkIHdlYmtpdC1wbGF5
c2lubGluZT48L3ZpZGVvPgorICAgICAgICA8dmlkZW8gc3JjPSJ2aWRlby13aXRoLWF1ZGlvLm1w
NCIgbXV0ZWQgcGxheXNpbmxpbmU+PC92aWRlbz4KICAgICA8L2JvZHk+CiA8L2h0bWw+CmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdExlZ2FjeS9pb3MvdmlkZW8t
d2l0aC1wYXVzZWQtYXVkaW8tYW5kLXBsYXlpbmctbXV0ZWQuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0TGVnYWN5L2lvcy92aWRlby13aXRoLXBhdXNlZC1hdWRpby1hbmQt
cGxheWluZy1tdXRlZC5odG1sCmluZGV4IGE0ODUyNGZhZDMwYTc0YTBjYzIxNzMwYjk0Y2RkMmY0
OTI2NWM3MzAuLjYwN2FjZDliYWJhMzAwYWEwMjhkM2M4YzIwYmYwYzZiYzgyODI5MDUgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0TGVnYWN5L2lvcy92aWRlby13
aXRoLXBhdXNlZC1hdWRpby1hbmQtcGxheWluZy1tdXRlZC5odG1sCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0TGVnYWN5L2lvcy92aWRlby13aXRoLXBhdXNlZC1hdWRpby1h
bmQtcGxheWluZy1tdXRlZC5odG1sCkBAIC01LDEzICs1LDEzIEBACiAgICAgICAgIGZ1bmN0aW9u
IGdvKCkgewogICAgICAgICAgICAgdmFyIHZpZGVvMSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J3ZpZGVvJyk7CiAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHZpZGVvMSk7
Ci0gICAgICAgICAgICB2aWRlbzEuc2V0QXR0cmlidXRlKCd3ZWJraXQtcGxheXNpbmxpbmUnLCAn
Jyk7CisgICAgICAgICAgICB2aWRlbzEuc2V0QXR0cmlidXRlKCdwbGF5c2lubGluZScsICcnKTsK
ICAgICAgICAgICAgIHZpZGVvMS5zcmMgPSAndmlkZW8td2l0aC1hdWRpby5tcDQnOwogICAgICAg
ICAgICAgdmlkZW8xLnBsYXkoKS50aGVuKCgpID0+IHsKICAgICAgICAgICAgICAgICB2aWRlbzEu
cGF1c2UoKTsKICAgICAgICAgICAgICAgICB2YXIgdmlkZW8yID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgndmlkZW8nKTsKICAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxk
KHZpZGVvMik7Ci0gICAgICAgICAgICAgICAgdmlkZW8yLnNldEF0dHJpYnV0ZSgnd2Via2l0LXBs
YXlzaW5saW5lJywgJycpOworICAgICAgICAgICAgICAgIHZpZGVvMi5zZXRBdHRyaWJ1dGUoJ3Bs
YXlzaW5saW5lJywgJycpOwogICAgICAgICAgICAgICAgIHZpZGVvMi5tdXRlZCA9IHRydWU7CiAg
ICAgICAgICAgICAgICAgdmlkZW8yLnNyYyA9ICd2aWRlby13aXRoLWF1ZGlvLm1wNCc7CiAgICAg
ICAgICAgICAgICAgdmlkZW8yLnBsYXkoKS50aGVuKHBsYXlpbmcsIG5vdFBsYXlpbmcpOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRMZWdhY3kvaW9zL3ZpZGVv
LXdpdGhvdXQtYXVkaW8uaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0TGVn
YWN5L2lvcy92aWRlby13aXRob3V0LWF1ZGlvLmh0bWwKaW5kZXggM2ZlNjRhYjkwMjNhZjgyMzJk
YWM1NjI4OGIzM2YyNjFiMWMxMDFmZi4uYWFmYmE5N2NjMmVkNTA5NThkNjAxZDFkODk5OWI2MWM3
MTZlNWE2MSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRMZWdh
Y3kvaW9zL3ZpZGVvLXdpdGhvdXQtYXVkaW8uaHRtbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdExlZ2FjeS9pb3MvdmlkZW8td2l0aG91dC1hdWRpby5odG1sCkBAIC0yMyw2
ICsyMyw2IEBACiAgICAgPC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keSBvbmxvYWQ9ImdvKCkiPgot
ICAgIDx2aWRlbyBzcmM9InZpZGVvLXdpdGhvdXQtYXVkaW8ubXA0IiB3ZWJraXQtcGxheXNpbmxp
bmU+PC92aWRlbz4KKyAgICA8dmlkZW8gc3JjPSJ2aWRlby13aXRob3V0LWF1ZGlvLm1wNCIgcGxh
eXNpbmxpbmU+PC92aWRlbz4KIDwvYm9keT4KIDwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395004</attachid>
            <date>2020-03-30 19:10:14 -0700</date>
            <delta_ts>2020-03-31 21:59:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209680-20200330191013.patch</filename>
            <type>text/plain</type>
            <size>7715</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5MTE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGFjZDljMTBkY2JkYjE0
ZjM5MTk5MjYyNjI1OTQxYjMwZTA3NmRiZC4uZGM1NGQ0ZDkxNjk4ZTI3M2IxZWQwYjUwNWEyMWU5
NzQ3ZWRjNmJmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIwLTAzLTMwICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTiAocjI1OTA5
NSk6IEFTU0VSVElPTiBGQUlMRUQ6IG1fdmlkZW9GdWxsc2NyZWVuTW9kZSAhPSBWaWRlb0Z1bGxz
Y3JlZW5Nb2RlTm9uZSBzZWVuIHdpdGggVGVzdFdlYktpdEFQSS5XZWJLaXRMZWdhY3kuQXVkaW9T
ZXNzaW9uQ2F0ZWdvcnlJT1MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwOTY4MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgQ2FsbCBmdWxs
c2NyZWVuTW9kZUNoYW5nZWQoVmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUpIHJpZ2h0IGJlZm9yZSBj
YWxsIHRoZQorICAgICAgICBmdW5jdGlvbnMgb2YgQ2hyb21lQ2xpZW50IHRvIG1ha2Ugc3VyZSB0
aGUgc3RhdGUgKG1fdmlkZW9GdWxsc2NyZWVuTW9kZSkKKyAgICAgICAgaGFzIHRoZSBleHBlY3Rl
ZCB2YWx1ZSB3aGVuIHNvbWUgY2FsbGJhY2tzIGNvbWUgYmFjayB0byB0aGUgdmlkZW8gZWxlbWVu
dC4KKworICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50OjpkaXNwYXRjaEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OmV4aXRGdWxsc2NyZWVuKToKKwogMjAyMC0wMy0yNyAgUm9iIEJ1
aXMgIDxyYnVpc0BpZ2FsaWEuY29tPgogCiAgICAgICAgIE1vdmUgYXBwbHlVc2VyQWdlbnRJZk5l
ZWRlZCBjYWxscyB0byBhIG1vcmUgY2VudHJhbCBwbGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdl
TG9nCmluZGV4IGQ4YWJhOGVhNjQwY2FkYmNkZmExYTJmYTc2ZmQ1ZGU3N2NiMTE2ZTYuLmU2MmRk
YjcyODg1Nzk1MDhiZjMwOTAyNWIxMzdlYWY2N2NjNjIwYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMC0wMy0zMCAgUGVuZyBMaXUgIDxwZW5nLmxp
dTZAYXBwbGUuY29tPgorCisgICAgICAgIFJFR1JFU1NJT04gKHIyNTkwOTUpOiBBU1NFUlRJT04g
RkFJTEVEOiBtX3ZpZGVvRnVsbHNjcmVlbk1vZGUgIT0gVmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUg
c2VlbiB3aXRoIFRlc3RXZWJLaXRBUEkuV2ViS2l0TGVnYWN5LkF1ZGlvU2Vzc2lvbkNhdGVnb3J5
SU9TCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk2
ODAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaXRo
IHRoaXMgcGF0Y2gsIHRoZSBXZWJLaXQtTGVnYWN5IGNhbiBzdXBwb3J0IG11bHRpcGxlIHZpZGVv
IGVsZW1lbnRzIHJlcXVlc3QKKyAgICAgICAgdG8gZW50ZXIgdmlkZW8gZnVsbHNjcmVlbiBhbG1v
c3QgYXQgdGhlIHNhbWUgdGltZSwgYW5kIG9ubHkgdGhlIGxhc3Qgb25lIHdpbGwgc3VjY2VlZC4K
KyAgICAgICAgQWxzbywgdGhpcyBwYXRjaCBmaXhlcyB3ZWJraXQub3JnL2IvMjA5NjEwIGZvciBX
ZWJLaXQtTGVnYWN5LgorCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAq
IFdlYlZpZXcvV2ViVmlld0RhdGEuaDoKKwogMjAyMC0wMy0yNSAgV2Vuc29uIEhzaWVoICA8d2Vu
c29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBBdm9pZCBxdWVyeWluZyBwYXN0ZWJvYXJk
IHN0cmluZ3Mgd2hpbGUgZHJhZ2dpbmcgY29udGVudCBvdmVyIGEgcG90ZW50aWFsIGRyb3AgdGFy
Z2V0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCBmM2UzODI3
ZDczNTVlMzJjMjViODc4ODU2ZjMyYjZhNGE1ODgyYjAwLi4zMWI1MmViOTNlZWZmMTBhYTdjZWVl
NGU1ZWU5ODhhMmEwMjQ2ZGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHAKQEAgLTU4ODMsOCArNTg4MywxMCBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpc3Bh
dGNoRXZlbnQoRXZlbnQmIGV2ZW50KQogICAgIC8vIFdlIG5lZWQgdG8gZmlyZSB0aGUgZW5kIGZ1
bGxzY3JlZW4gZXZlbnQgdG8gbm90aWZ5IHRoZSBwYWdlCiAgICAgLy8gdG8gY2hhbmdlIHRoZSBw
b3NpdGlvbi9zaXplIGJhY2sgKmJlZm9yZSogZXhpdGluZyBmdWxsc2NyZWVuLgogICAgIC8vIE90
aGVyd2lzZSwgdGhlIGV4aXQgZnVsbHNjcmVlbiBhbmltYXRpb24gd2lsbCBiZSBpbmNvcnJlY3Qu
Ci0gICAgaWYgKCFtX3ZpZGVvRnVsbHNjcmVlblN0YW5kYnkgJiYgZXZlbnQudHlwZSgpID09IGV2
ZW50TmFtZXMoKS53ZWJraXRlbmRmdWxsc2NyZWVuRXZlbnQpCisgICAgaWYgKCFtX3ZpZGVvRnVs
bHNjcmVlblN0YW5kYnkgJiYgZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS53ZWJraXRlbmRm
dWxsc2NyZWVuRXZlbnQpIHsKKyAgICAgICAgZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKFZpZGVvRnVs
bHNjcmVlbk1vZGVOb25lKTsKICAgICAgICAgZG9jdW1lbnQoKS5wYWdlKCktPmNocm9tZSgpLmNs
aWVudCgpLmV4aXRWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQoZG93bmNhc3Q8SFRNTFZp
ZGVvRWxlbWVudD4oKnRoaXMpKTsKKyAgICB9CiB9CiAKIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6
YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIFJlZjxFdmVudExp
c3RlbmVyPiYmIGxpc3RlbmVyLCBjb25zdCBBZGRFdmVudExpc3RlbmVyT3B0aW9ucyYgb3B0aW9u
cykKQEAgLTYxMDQsNyArNjEwNiw2IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZXhpdEZ1bGxz
Y3JlZW4oKQogCiAgICAgQVNTRVJUKG1fdmlkZW9GdWxsc2NyZWVuTW9kZSAhPSBWaWRlb0Z1bGxz
Y3JlZW5Nb2RlTm9uZSk7CiAgICAgVmlkZW9GdWxsc2NyZWVuTW9kZSBvbGRWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlID0gbV92aWRlb0Z1bGxzY3JlZW5Nb2RlOwotICAgIGZ1bGxzY3JlZW5Nb2RlQ2hhbmdl
ZChWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSk7CiAjaWYgRU5BQkxFKE1FRElBX0NPTlRST0xTX1ND
UklQVCkKICAgICBSZWY8SFRNTE1lZGlhRWxlbWVudD4gcHJvdGVjdGVkVGhpcygqdGhpcyk7IC8v
IHVwZGF0ZU1lZGlhQ29udHJvbHNBZnRlclByZXNlbnRhdGlvbk1vZGVDaGFuZ2UgY2FsbHMgbWV0
aG9kcyB0aGF0IGNhbiB0cmlnZ2VyIGFyYml0cmFyeSBET00gbXV0YXRpb25zLgogICAgIHVwZGF0
ZU1lZGlhQ29udHJvbHNBZnRlclByZXNlbnRhdGlvbk1vZGVDaGFuZ2UoKTsKQEAgLTYxMjcsMTMg
KzYxMjgsMTcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpleGl0RnVsbHNjcmVlbigpCiAgICAg
fQogCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUp
Ci0gICAgaWYgKGRvY3VtZW50KCkuYWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZCgpIHx8IGRv
Y3VtZW50KCkuYWN0aXZlRE9NT2JqZWN0c0FyZVN0b3BwZWQoKSkKKyAgICBpZiAoZG9jdW1lbnQo
KS5hY3RpdmVET01PYmplY3RzQXJlU3VzcGVuZGVkKCkgfHwgZG9jdW1lbnQoKS5hY3RpdmVET01P
YmplY3RzQXJlU3RvcHBlZCgpKSB7CisgICAgICAgIGZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChWaWRl
b0Z1bGxzY3JlZW5Nb2RlTm9uZSk7CiAgICAgICAgIGRvY3VtZW50KCkucGFnZSgpLT5jaHJvbWUo
KS5jbGllbnQoKS5leGl0VmlkZW9GdWxsc2NyZWVuVG9Nb2RlV2l0aG91dEFuaW1hdGlvbihkb3du
Y2FzdDxIVE1MVmlkZW9FbGVtZW50PigqdGhpcyksIFZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKTsK
KyAgICB9CiAgICAgZWxzZQogI2VuZGlmCiAgICAgaWYgKGRvY3VtZW50KCkucGFnZSgpLT5jaHJv
bWUoKS5jbGllbnQoKS5zdXBwb3J0c1ZpZGVvRnVsbHNjcmVlbihvbGRWaWRlb0Z1bGxzY3JlZW5N
b2RlKSkgewotICAgICAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5TdGFuZGJ5KQorICAgICAgICBp
ZiAobV92aWRlb0Z1bGxzY3JlZW5TdGFuZGJ5KSB7CisgICAgICAgICAgICBmdWxsc2NyZWVuTW9k
ZUNoYW5nZWQoVmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUpOwogICAgICAgICAgICAgZG9jdW1lbnQo
KS5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgpLmVudGVyVmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9F
bGVtZW50KGRvd25jYXN0PEhUTUxWaWRlb0VsZW1lbnQ+KCp0aGlzKSwgbV92aWRlb0Z1bGxzY3Jl
ZW5Nb2RlLCBtX3ZpZGVvRnVsbHNjcmVlblN0YW5kYnkpOworICAgICAgICB9CiAKICAgICAgICAg
c2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkud2Via2l0ZW5kZnVsbHNjcmVlbkV2ZW50KTsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggNWRk
ZjIzZWNmM2NiYTViOWJjOWVhOWYyNmVlZGNmMDM3OTk1Njg4Yy4uYWYzMDZiZWU0NzAzNWVjM2Qy
ZjcxZTVkZDIxYTgzN2FhZGQzY2RiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViVmlldy5tbQpAQCAtOTMzNCwxMiArOTMzNCwxNCBAQCAtICh2b2lkKV9lbnRlclZpZGVv
RnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudDooTmFrZWRQdHI8V2ViQ29yZTo6SFRNTFZpZGVvRWxl
bWVudAogCiAgICAgICAgIC8vIEZpcnN0IGV4aXQgRnVsbHNjcmVlbiBmb3IgdGhlIG9sZCB2aWRl
b0VsZW1lbnQuCiAgICAgICAgIFtfcHJpdmF0ZS0+ZnVsbHNjcmVlbkNvbnRyb2xsZXIgdmlkZW9F
bGVtZW50XS0+ZXhpdEZ1bGxzY3JlZW4oKTsKLSAgICAgICAgLy8gVGhpcyBwcmV2aW91cyBjYWxs
IGhhcyB0byB0cmlnZ2VyIF9leGl0RnVsbHNjcmVlbiwKLSAgICAgICAgLy8gd2hpY2ggaGFzIHRv
IGNsZWFyIF9wcml2YXRlLT5mdWxsc2NyZWVuQ29udHJvbGxlci4KLSAgICAgICAgQVNTRVJUKCFf
cHJpdmF0ZS0+ZnVsbHNjcmVlbkNvbnRyb2xsZXIpOworICAgICAgICAvLyBUaGlzIHByZXZpb3Vz
IGNhbGwgd2lsbCB0cmlnZ2VyIF9leGl0RnVsbHNjcmVlbgorICAgICAgICAvLyB3aGljaCBoYXMg
dG8gY2xlYXIgYW4gaXRlbSBpbiBfcHJpdmF0ZS0+ZnVsbHNjcmVlbkNvbnRyb2xsZXJzRXhpdGlu
Zy4KKyAgICAgICAgX3ByaXZhdGUtPmZ1bGxzY3JlZW5Db250cm9sbGVyc0V4aXRpbmcuYXBwZW5k
KF9wcml2YXRlLT5mdWxsc2NyZWVuQ29udHJvbGxlcik7CisgICAgICAgIF9wcml2YXRlLT5mdWxs
c2NyZWVuQ29udHJvbGxlciA9IG5pbDsKICAgICB9CisKICAgICBpZiAoIV9wcml2YXRlLT5mdWxs
c2NyZWVuQ29udHJvbGxlcikgewotICAgICAgICBfcHJpdmF0ZS0+ZnVsbHNjcmVlbkNvbnRyb2xs
ZXIgPSBbW1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIgYWxsb2NdIGluaXRdOworICAgICAg
ICBfcHJpdmF0ZS0+ZnVsbHNjcmVlbkNvbnRyb2xsZXIgPSBhZG9wdE5TKFtbV2ViVmlkZW9GdWxs
c2NyZWVuQ29udHJvbGxlciBhbGxvY10gaW5pdF0pOwogICAgICAgICBbX3ByaXZhdGUtPmZ1bGxz
Y3JlZW5Db250cm9sbGVyIHNldFZpZGVvRWxlbWVudDp2aWRlb0VsZW1lbnRdOwogI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgICAgIFtfcHJpdmF0ZS0+ZnVsbHNjcmVlbkNvbnRyb2xsZXIg
ZW50ZXJGdWxsc2NyZWVuOihVSVZpZXcgKilbW1tzZWxmIHdpbmRvd10gaG9zdExheWVyXSBkZWxl
Z2F0ZV0gbW9kZTptb2RlXTsKQEAgLTkzNTMsMTAgKzkzNTUsMTcgQEAgLSAodm9pZClfZW50ZXJW
aWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQ6KE5ha2VkUHRyPFdlYkNvcmU6OkhUTUxWaWRl
b0VsZW1lbnQKIAogLSAodm9pZClfZXhpdFZpZGVvRnVsbHNjcmVlbgogewotICAgIGlmICghX3By
aXZhdGUtPmZ1bGxzY3JlZW5Db250cm9sbGVyKQorICAgIGlmICghX3ByaXZhdGUtPmZ1bGxzY3Jl
ZW5Db250cm9sbGVyICYmIF9wcml2YXRlLT5mdWxsc2NyZWVuQ29udHJvbGxlcnNFeGl0aW5nLmlz
RW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFfcHJpdmF0ZS0+ZnVsbHNjcmVl
bkNvbnRyb2xsZXJzRXhpdGluZy5pc0VtcHR5KCkpIHsKKyAgICAgICAgYXV0byBmdWxsc2NyZWVu
Q29udHJvbGVyID0gX3ByaXZhdGUtPmZ1bGxzY3JlZW5Db250cm9sbGVyc0V4aXRpbmcuZmlyc3Qo
KTsKKyAgICAgICAgW2Z1bGxzY3JlZW5Db250cm9sZXIgZXhpdEZ1bGxzY3JlZW5dOworICAgICAg
ICBfcHJpdmF0ZS0+ZnVsbHNjcmVlbkNvbnRyb2xsZXJzRXhpdGluZy5yZW1vdmUoMCk7CiAgICAg
ICAgIHJldHVybjsKKyAgICB9CisKICAgICBbX3ByaXZhdGUtPmZ1bGxzY3JlZW5Db250cm9sbGVy
IGV4aXRGdWxsc2NyZWVuXTsKLSAgICBbX3ByaXZhdGUtPmZ1bGxzY3JlZW5Db250cm9sbGVyIHJl
bGVhc2VdOwogICAgIF9wcml2YXRlLT5mdWxsc2NyZWVuQ29udHJvbGxlciA9IG5pbDsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5o
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5oCmluZGV4IGUy
ZmRlNDU2NTYzNjhjZDRkYzJjNmQwZWY0ZmI2NWEyYmEzMjE0MTEuLmZlOTgzOWJhYzQ3NDkxYTE0
M2JhNjhiZTdjOWJiNjUwYWZkNTA3YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViVmlld0RhdGEuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYlZpZXdEYXRhLmgKQEAgLTMxNiwxMSArMzE2LDEyIEBAIHByaXZhdGU6CiAgICAg
TlNQYXN0ZWJvYXJkICppbnNlcnRpb25QYXN0ZWJvYXJkOwogICAgIFJldGFpblB0cjxOU0ltYWdl
PiBfbWFpbkZyYW1lSWNvbjsKICNlbmRpZgotICAgICAgICAgICAgCisKICAgICBOU1NpemUgbGFz
dExheW91dFNpemU7CiAKICNpZiBFTkFCTEUoVklERU8pCi0gICAgV2ViVmlkZW9GdWxsc2NyZWVu
Q29udHJvbGxlciAqZnVsbHNjcmVlbkNvbnRyb2xsZXI7CisgICAgUmV0YWluUHRyPFdlYlZpZGVv
RnVsbHNjcmVlbkNvbnRyb2xsZXI+IGZ1bGxzY3JlZW5Db250cm9sbGVyOworICAgIFZlY3RvcjxS
ZXRhaW5QdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlcj4+IGZ1bGxzY3JlZW5Db250cm9s
bGVyc0V4aXRpbmc7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVP
X1BSRVNFTlRBVElPTl9NT0RFKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395128</attachid>
            <date>2020-03-31 21:59:16 -0700</date>
            <delta_ts>2020-04-02 16:50:51 -0700</delta_ts>
            <desc>Revise the patch based on review comments and add an API test</desc>
            <filename>bug-209680-20200331215915.patch</filename>
            <type>text/plain</type>
            <size>22255</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5Mjc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmQyZTIyNzY0NjMxNWE2
ZTQzYTU5MmU5MjJjMTkzOWQ2YzY5NmYyMy4uOTZlMTc4ZmExMTg0MjFkNmQwZDc4MWZmY2VlNTlh
MWU0NDIwN2Q5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIwLTAzLTMxICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTiAocjI1OTA5
NSk6IEFTU0VSVElPTiBGQUlMRUQ6IG1fdmlkZW9GdWxsc2NyZWVuTW9kZSAhPSBWaWRlb0Z1bGxz
Y3JlZW5Nb2RlTm9uZSBzZWVuIHdpdGggVGVzdFdlYktpdEFQSS5XZWJLaXRMZWdhY3kuQXVkaW9T
ZXNzaW9uQ2F0ZWdvcnlJT1MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwOTY4MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFQSSB0ZXN0OiBXZWJLaXRMZWdhY3kuVmlkZW9GdWxsc2NyZWVuU3RyZXNzCisK
KyAgICAgICAgQ2FsbCBmdWxsc2NyZWVuTW9kZUNoYW5nZWQoVmlkZW9GdWxsc2NyZWVuTW9kZU5v
bmUpIHJpZ2h0IGJlZm9yZSBjYWxsaW5nIHRoZQorICAgICAgICBmdW5jdGlvbnMgb2YgQ2hyb21l
Q2xpZW50IHRvIG1ha2Ugc3VyZSB0aGUgc3RhdGUgKG1fdmlkZW9GdWxsc2NyZWVuTW9kZSkKKyAg
ICAgICAgaGFzIHRoZSBleHBlY3RlZCB2YWx1ZSB3aGVuIHNvbWUgY2FsbGJhY2tzIGNvbWUgYmFj
ayB0byB0aGUgdmlkZW8gZWxlbWVudC4KKworICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpkaXNwYXRjaEV2ZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmV4aXRGdWxsc2NyZWVuKToK
KworICAgICAgICBBZGQgbnVsbCBwb2ludGVyIGNoZWNraW5ncyB0byBmaXggdHdvIGNyYXNoZXMg
Zm91bmQgaW4gc3RyZXNzIHRlc3RzLgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1
bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW06CisgICAgICAgIChWaWRlb0Z1bGxzY3JlZW5Db250
cm9sbGVyQ29udGV4dDo6cmVxdWVzdFZpZGVvQ29udGVudExheWVyKToKKyAgICAgICAgKFZpZGVv
RnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpyZXR1cm5WaWRlb0NvbnRlbnRMYXllcik6CisK
IDIwMjAtMDMtMjggIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAg
ICAgICAgU2Nyb2xsTGF0Y2hpbmdTdGF0ZSBzaG91bGQgdXNlIFdlYWtQdHI8RWxlbWVudD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCBjZTBhZDRjYzk4MWM0NzczYTY4NDg2YmUwY2Ew
MWJlZjNhYzQ1YjY2Li5hZjc1ZDgzNDRiNzIzNWUzMTU1ZDA3ZDhhOTI3MjZkYzQzMTMxYWU0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjAtMDMtMzEg
IFBlbmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OIChy
MjU5MDk1KTogQVNTRVJUSU9OIEZBSUxFRDogbV92aWRlb0Z1bGxzY3JlZW5Nb2RlICE9IFZpZGVv
RnVsbHNjcmVlbk1vZGVOb25lIHNlZW4gd2l0aCBUZXN0V2ViS2l0QVBJLldlYktpdExlZ2FjeS5B
dWRpb1Nlc3Npb25DYXRlZ29yeUlPUworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjA5NjgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgV2l0aCB0aGlzIHBhdGNoLCB0aGUgV2ViS2l0LUxlZ2FjeSBjYW4gc3Vw
cG9ydCBtdWx0aXBsZSB2aWRlbyBlbGVtZW50cyByZXF1ZXN0CisgICAgICAgIHRvIGVudGVyIHZp
ZGVvIGZ1bGxzY3JlZW4gYWxtb3N0IGF0IHRoZSBzYW1lIHRpbWUsIGFuZCBvbmx5IHRoZSBsYXN0
IG9uZSB3aWxsIHN1Y2NlZWQuCisgICAgICAgIEFsc28sIHRoaXMgcGF0Y2ggZml4ZXMgd2Via2l0
Lm9yZy9iLzIwOTYxMCBmb3IgV2ViS2l0LUxlZ2FjeS4KKworICAgICAgICAqIFdlYlZpZXcvV2Vi
Vmlldy5tbToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdEYXRhLmg6CisKIDIwMjAtMDMtMzAg
IERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0
b3I6IHByb3ZpZGUgYSB3YXkgdG8gbG9nIG1lc3NhZ2VzIGZyb20gdGhlIG5ldHdvcmsgcHJvY2Vz
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggNzQyMDUxMGRh
ZGRlYjQwNmFhZDhlNzE0NWQxY2FjZGRhYjkyZThmNi4uMmVmODMxMDQ2NzljMjMzY2UxNzg4ODg3
Yzk1MTRjYzkxMGI1N2M5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
Y3BwCkBAIC01ODgzLDggKzU4ODMsMTAgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpkaXNwYXRj
aEV2ZW50KEV2ZW50JiBldmVudCkKICAgICAvLyBXZSBuZWVkIHRvIGZpcmUgdGhlIGVuZCBmdWxs
c2NyZWVuIGV2ZW50IHRvIG5vdGlmeSB0aGUgcGFnZQogICAgIC8vIHRvIGNoYW5nZSB0aGUgcG9z
aXRpb24vc2l6ZSBiYWNrICpiZWZvcmUqIGV4aXRpbmcgZnVsbHNjcmVlbi4KICAgICAvLyBPdGhl
cndpc2UsIHRoZSBleGl0IGZ1bGxzY3JlZW4gYW5pbWF0aW9uIHdpbGwgYmUgaW5jb3JyZWN0Lgot
ICAgIGlmICghbV92aWRlb0Z1bGxzY3JlZW5TdGFuZGJ5ICYmIGV2ZW50LnR5cGUoKSA9PSBldmVu
dE5hbWVzKCkud2Via2l0ZW5kZnVsbHNjcmVlbkV2ZW50KQorICAgIGlmICghbV92aWRlb0Z1bGxz
Y3JlZW5TdGFuZGJ5ICYmIGV2ZW50LnR5cGUoKSA9PSBldmVudE5hbWVzKCkud2Via2l0ZW5kZnVs
bHNjcmVlbkV2ZW50KSB7CisgICAgICAgIGZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChWaWRlb0Z1bGxz
Y3JlZW5Nb2RlTm9uZSk7CiAgICAgICAgIGRvY3VtZW50KCkucGFnZSgpLT5jaHJvbWUoKS5jbGll
bnQoKS5leGl0VmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50KGRvd25jYXN0PEhUTUxWaWRl
b0VsZW1lbnQ+KCp0aGlzKSk7CisgICAgfQogfQogCiBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmFk
ZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaXN0
ZW5lcj4mJiBsaXN0ZW5lciwgY29uc3QgQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMmIG9wdGlvbnMp
CkBAIC02MTA0LDcgKzYxMDYsNiBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmV4aXRGdWxsc2Ny
ZWVuKCkKIAogICAgIEFTU0VSVChtX3ZpZGVvRnVsbHNjcmVlbk1vZGUgIT0gVmlkZW9GdWxsc2Ny
ZWVuTW9kZU5vbmUpOwogICAgIFZpZGVvRnVsbHNjcmVlbk1vZGUgb2xkVmlkZW9GdWxsc2NyZWVu
TW9kZSA9IG1fdmlkZW9GdWxsc2NyZWVuTW9kZTsKLSAgICBmdWxsc2NyZWVuTW9kZUNoYW5nZWQo
VmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUpOwogI2lmIEVOQUJMRShNRURJQV9DT05UUk9MU19TQ1JJ
UFQpCiAgICAgUmVmPEhUTUxNZWRpYUVsZW1lbnQ+IHByb3RlY3RlZFRoaXMoKnRoaXMpOyAvLyB1
cGRhdGVNZWRpYUNvbnRyb2xzQWZ0ZXJQcmVzZW50YXRpb25Nb2RlQ2hhbmdlIGNhbGxzIG1ldGhv
ZHMgdGhhdCBjYW4gdHJpZ2dlciBhcmJpdHJhcnkgRE9NIG11dGF0aW9ucy4KICAgICB1cGRhdGVN
ZWRpYUNvbnRyb2xzQWZ0ZXJQcmVzZW50YXRpb25Nb2RlQ2hhbmdlKCk7CkBAIC02MTI3LDEzICs2
MTI4LDE3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZXhpdEZ1bGxzY3JlZW4oKQogICAgIH0K
IAogI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQot
ICAgIGlmIChkb2N1bWVudCgpLmFjdGl2ZURPTU9iamVjdHNBcmVTdXNwZW5kZWQoKSB8fCBkb2N1
bWVudCgpLmFjdGl2ZURPTU9iamVjdHNBcmVTdG9wcGVkKCkpCisgICAgaWYgKGRvY3VtZW50KCku
YWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZCgpIHx8IGRvY3VtZW50KCkuYWN0aXZlRE9NT2Jq
ZWN0c0FyZVN0b3BwZWQoKSkgeworICAgICAgICBmdWxsc2NyZWVuTW9kZUNoYW5nZWQoVmlkZW9G
dWxsc2NyZWVuTW9kZU5vbmUpOwogICAgICAgICBkb2N1bWVudCgpLnBhZ2UoKS0+Y2hyb21lKCku
Y2xpZW50KCkuZXhpdFZpZGVvRnVsbHNjcmVlblRvTW9kZVdpdGhvdXRBbmltYXRpb24oZG93bmNh
c3Q8SFRNTFZpZGVvRWxlbWVudD4oKnRoaXMpLCBWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSk7Cisg
ICAgfQogICAgIGVsc2UKICNlbmRpZgogICAgIGlmIChkb2N1bWVudCgpLnBhZ2UoKS0+Y2hyb21l
KCkuY2xpZW50KCkuc3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW4ob2xkVmlkZW9GdWxsc2NyZWVuTW9k
ZSkpIHsKLSAgICAgICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuU3RhbmRieSkKKyAgICAgICAgaWYg
KG1fdmlkZW9GdWxsc2NyZWVuU3RhbmRieSkgeworICAgICAgICAgICAgZnVsbHNjcmVlbk1vZGVD
aGFuZ2VkKFZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKTsKICAgICAgICAgICAgIGRvY3VtZW50KCku
cGFnZSgpLT5jaHJvbWUoKS5jbGllbnQoKS5lbnRlclZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxl
bWVudChkb3duY2FzdDxIVE1MVmlkZW9FbGVtZW50PigqdGhpcyksIG1fdmlkZW9GdWxsc2NyZWVu
TW9kZSwgbV92aWRlb0Z1bGxzY3JlZW5TdGFuZGJ5KTsKKyAgICAgICAgfQogCiAgICAgICAgIHNj
aGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLndlYmtpdGVuZGZ1bGxzY3JlZW5FdmVudCk7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXJBVktpdC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJW
aWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0KaW5kZXggOGFmM2I1YzU1MTU0ZDZhZmE1
MjRlZTgxNjExYjkxNmJjOGE3OTMyNS4uZTFhYTI2NjE2YTllZjdhMjQyNTQ5OTc0ZjY4OWI4MWQz
OGZkODczNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVv
RnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tCkBAIC0yNjAsNiArMjYw
LDkgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6cmVxdWVzdFZpZGVv
Q29udGVudExheWVyKCkKICAgICAgICAgW3ZpZGVvRnVsbHNjcmVlbkxheWVyIHNldEJhY2tncm91
bmRDb2xvcjpjYWNoZWRDR0NvbG9yKFdlYkNvcmU6OkNvbG9yOjp0cmFuc3BhcmVudCldOwogICAg
ICAgICBtX2Z1bGxzY3JlZW5Nb2RlbC0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIodmlkZW9GdWxs
c2NyZWVuTGF5ZXIuZ2V0KCksIFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlz
KSwgdGhpc10gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRj
aF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhp
cyksIHRoaXNdIHsKKyAgICAgICAgICAgICAgICBpZiAoIW1faW50ZXJmYWNlKQorICAgICAgICAg
ICAgICAgICAgICByZXR1cm47CisKICAgICAgICAgICAgICAgICBtX2ludGVyZmFjZS0+c2V0SGFz
VmlkZW9Db250ZW50TGF5ZXIodHJ1ZSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CkBA
IC0yNzcsNiArMjgwLDkgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6
cmV0dXJuVmlkZW9Db250ZW50TGF5ZXIoKQogICAgICAgICBbdmlkZW9GdWxsc2NyZWVuTGF5ZXIg
c2V0QmFja2dyb3VuZENvbG9yOmNhY2hlZENHQ29sb3IoV2ViQ29yZTo6Q29sb3I6OnRyYW5zcGFy
ZW50KV07CiAgICAgICAgIG1fZnVsbHNjcmVlbk1vZGVsLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXll
cihuaWwsIFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgdGhpc10gKCkg
bXV0YWJsZSB7CiAgICAgICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9x
dWV1ZSgpLCBbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHRoaXNdIHsK
KyAgICAgICAgICAgICAgICBpZiAoIW1faW50ZXJmYWNlKQorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm47CisKICAgICAgICAgICAgICAgICBtX2ludGVyZmFjZS0+c2V0SGFzVmlkZW9Db250ZW50
TGF5ZXIoZmFsc2UpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IGMzNTk1MjFjNmRkYzc3ZjY2YTEz
NTZjYWExOTFmNjU4NzAzZWZkYTkuLjBhNWZjOTRlMjc3MTAxODBjMWYyYTVhNTZiZTAwZjZlZDU0
ODBlZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmll
dy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAg
LTkzMzEsMTIgKzkzMzEsMTEgQEAgLSAodm9pZClfZW50ZXJWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRl
b0VsZW1lbnQ6KE5ha2VkUHRyPFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQKIAogICAgICAgICAv
LyBGaXJzdCBleGl0IEZ1bGxzY3JlZW4gZm9yIHRoZSBvbGQgdmlkZW9FbGVtZW50LgogICAgICAg
ICBbX3ByaXZhdGUtPmZ1bGxzY3JlZW5Db250cm9sbGVyIHZpZGVvRWxlbWVudF0tPmV4aXRGdWxs
c2NyZWVuKCk7Ci0gICAgICAgIC8vIFRoaXMgcHJldmlvdXMgY2FsbCBoYXMgdG8gdHJpZ2dlciBf
ZXhpdEZ1bGxzY3JlZW4sCi0gICAgICAgIC8vIHdoaWNoIGhhcyB0byBjbGVhciBfcHJpdmF0ZS0+
ZnVsbHNjcmVlbkNvbnRyb2xsZXIuCi0gICAgICAgIEFTU0VSVCghX3ByaXZhdGUtPmZ1bGxzY3Jl
ZW5Db250cm9sbGVyKTsKKyAgICAgICAgX3ByaXZhdGUtPmZ1bGxzY3JlZW5Db250cm9sbGVyc0V4
aXRpbmcuYXBwZW5kKHN0ZDo6ZXhjaGFuZ2UoX3ByaXZhdGUtPmZ1bGxzY3JlZW5Db250cm9sbGVy
LCBuaWwpKTsKICAgICB9CisKICAgICBpZiAoIV9wcml2YXRlLT5mdWxsc2NyZWVuQ29udHJvbGxl
cikgewotICAgICAgICBfcHJpdmF0ZS0+ZnVsbHNjcmVlbkNvbnRyb2xsZXIgPSBbW1dlYlZpZGVv
RnVsbHNjcmVlbkNvbnRyb2xsZXIgYWxsb2NdIGluaXRdOworICAgICAgICBfcHJpdmF0ZS0+ZnVs
bHNjcmVlbkNvbnRyb2xsZXIgPSBhZG9wdE5TKFtbV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxl
ciBhbGxvY10gaW5pdF0pOwogICAgICAgICBbX3ByaXZhdGUtPmZ1bGxzY3JlZW5Db250cm9sbGVy
IHNldFZpZGVvRWxlbWVudDp2aWRlb0VsZW1lbnRdOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgICAgIFtfcHJpdmF0ZS0+ZnVsbHNjcmVlbkNvbnRyb2xsZXIgZW50ZXJGdWxsc2NyZWVu
OihVSVZpZXcgKilbW1tzZWxmIHdpbmRvd10gaG9zdExheWVyXSBkZWxlZ2F0ZV0gbW9kZTptb2Rl
XTsKQEAgLTkzNTAsMTEgKzkzNDksMjEgQEAgLSAodm9pZClfZW50ZXJWaWRlb0Z1bGxzY3JlZW5G
b3JWaWRlb0VsZW1lbnQ6KE5ha2VkUHRyPFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQKIAogLSAo
dm9pZClfZXhpdFZpZGVvRnVsbHNjcmVlbgogewotICAgIGlmICghX3ByaXZhdGUtPmZ1bGxzY3Jl
ZW5Db250cm9sbGVyKQorICAgIGlmICghX3ByaXZhdGUtPmZ1bGxzY3JlZW5Db250cm9sbGVyICYm
IF9wcml2YXRlLT5mdWxsc2NyZWVuQ29udHJvbGxlcnNFeGl0aW5nLmlzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgaWYgKCFfcHJpdmF0ZS0+ZnVsbHNjcmVlbkNvbnRyb2xsZXJzRXhp
dGluZy5pc0VtcHR5KCkpIHsKKyAgICAgICAgYXV0byBjb250cm9sbGVyID0gX3ByaXZhdGUtPmZ1
bGxzY3JlZW5Db250cm9sbGVyc0V4aXRpbmcuZmlyc3QoKTsKKyAgICAgICAgX3ByaXZhdGUtPmZ1
bGxzY3JlZW5Db250cm9sbGVyc0V4aXRpbmcucmVtb3ZlKDApOworCisgICAgICAgIFtjb250cm9s
bGVyIGV4aXRGdWxsc2NyZWVuXTsKICAgICAgICAgcmV0dXJuOwotICAgIFtfcHJpdmF0ZS0+ZnVs
bHNjcmVlbkNvbnRyb2xsZXIgZXhpdEZ1bGxzY3JlZW5dOwotICAgIFtfcHJpdmF0ZS0+ZnVsbHNj
cmVlbkNvbnRyb2xsZXIgcmVsZWFzZV07CisgICAgfQorCisgICAgYXV0byBmdWxsc2NyZWVuQ29u
dHJvbGxlciA9IF9wcml2YXRlLT5mdWxsc2NyZWVuQ29udHJvbGxlcjsKICAgICBfcHJpdmF0ZS0+
ZnVsbHNjcmVlbkNvbnRyb2xsZXIgPSBuaWw7CisKKyAgICBbZnVsbHNjcmVlbkNvbnRyb2xsZXIg
ZXhpdEZ1bGxzY3JlZW5dOwogfQogCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9f
UFJFU0VOVEFUSU9OX01PREUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYlZpZXdEYXRhLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YlZpZXdEYXRhLmgKaW5kZXggZTJmZGU0NTY1NjM2OGNkNGRjMmM2ZDBlZjRmYjY1YTJiYTMyMTQx
MS4uZmU5ODM5YmFjNDc0OTFhMTQzYmE2OGJlN2M5YmI2NTBhZmQ1MDdiOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEuaApAQCAtMzE2LDExICszMTYs
MTIgQEAgcHJpdmF0ZToKICAgICBOU1Bhc3RlYm9hcmQgKmluc2VydGlvblBhc3RlYm9hcmQ7CiAg
ICAgUmV0YWluUHRyPE5TSW1hZ2U+IF9tYWluRnJhbWVJY29uOwogI2VuZGlmCi0gICAgICAgICAg
ICAKKwogICAgIE5TU2l6ZSBsYXN0TGF5b3V0U2l6ZTsKIAogI2lmIEVOQUJMRShWSURFTykKLSAg
ICBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyICpmdWxsc2NyZWVuQ29udHJvbGxlcjsKKyAg
ICBSZXRhaW5QdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlcj4gZnVsbHNjcmVlbkNvbnRy
b2xsZXI7CisgICAgVmVjdG9yPFJldGFpblB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVy
Pj4gZnVsbHNjcmVlbkNvbnRyb2xsZXJzRXhpdGluZzsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0o
TUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpCmRpZmYgLS1naXQgYS9Ub29s
cy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNTlmNDJmOTQ2NmZjMDY2ZjBhNWJh
MDZkNjY2ZmQ3ZDhhZTQ5OGVjNy4uMjY0NGQ5M2JhNWI5MzcwZmEwYTYwZWM0M2ZjMGM2ZmI0ZTdj
ZjNkZSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDIwIEBACisyMDIwLTAzLTMxICBQZW5nIExpdSAgPHBlbmcubGl1NkBhcHBsZS5j
b20+CisKKyAgICAgICAgUkVHUkVTU0lPTiAocjI1OTA5NSk6IEFTU0VSVElPTiBGQUlMRUQ6IG1f
dmlkZW9GdWxsc2NyZWVuTW9kZSAhPSBWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSBzZWVuIHdpdGgg
VGVzdFdlYktpdEFQSS5XZWJLaXRMZWdhY3kuQXVkaW9TZXNzaW9uQ2F0ZWdvcnlJT1MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTY4MAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhbiBBUEkgdGVz
dCB0byBzdHJlc3MgdGVzdCB0aGUgdmlkZW8gZnVsbHNjcmVlbiBzdXBwb3J0IG9mIFdlYktpdExl
Z2FjeSBvbiBpT1MuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdExlZ2FjeS9pb3MvVmlkZW9GdWxsc2NyZWVuU3RyZXNzLm1tOiBBZGRlZC4KKyAgICAgICAg
KC1bVmlkZW9GdWxsc2NyZWVuU3RyZXNzVUlXZWJWaWV3RGVsZWdhdGUgd2ViVmlld0RpZEZpbmlz
aExvYWQ6XSk6CisgICAgICAgICgtW1ZpZGVvRnVsbHNjcmVlblN0cmVzc1VJV2ViVmlld0RlbGVn
YXRlIHVpV2ViVmlldzpkaWRDb21taXRMb2FkRm9yRnJhbWU6XSk6CisgICAgICAgICgtW1ZpZGVv
RnVsbHNjcmVlblN0cmVzc1VJV2ViVmlld0RlbGVnYXRlIGhhbmRsZUV2ZW50Ol0pOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRMZWdhY3kvaW9zL3R3by12aWRlb3MuaHRtbDogQWRkZWQuCisKIDIwMjAtMDMtMzAgIFBl
bmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KIAogICAgICAgICBQaVAgc3VwcG9ydCBvZiBN
aW5pQnJvd3NlciBpcyBicm9rZW4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZDkwN2MwZjA0
Y2NiNTFhOGU0YmExODE3YTNmZjE5N2MzYmIwMjI2MC4uMTljNTBjZTY1NmJhYTc1MTMyNjY1NTAw
M2FhYTQwZmE2OGNhOTM3MyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2Vi
S2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTExMyw2ICsxMTMs
OCBAQAogCQkxQ0Y1OUFFMjIxRTY4OTI1MDA2RTM3RUMgLyogRm9yY2VMaWdodEFwcGVhcmFuY2VJ
bkJ1bmRsZV9CdW5kbGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxQ0Y1OUFFMDIxRTY4OTI1MDA2RTM3RUMgLyogRm9yY2VMaWdodEFwcGVhcmFuY2VJ
bkJ1bmRsZV9CdW5kbGUubW0gKi87IH07CiAJCTFDRjU5QUUzMjFFNjg5MzIwMDZFMzdFQyAvKiBG
b3JjZUxpZ2h0QXBwZWFyYW5jZUluQnVuZGxlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUNGNTlBREYyMUU2ODkyNTAwNkUzN0VDIC8qIEZvcmNlTGln
aHRBcHBlYXJhbmNlSW5CdW5kbGUubW0gKi87IH07CiAJCTFDRjU5QUU1MjFFNjk3N0QwMDZFMzdF
QyAvKiBkYXJrLW1vZGUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxQ0Y1OUFFNDIxRTY5NkZCMDA2RTM3RUMgLyogZGFyay1tb2RlLmh0
bWwgKi87IH07CisJCTFENjdCRkRDMjQzM0UwQTcwMDZCNTA0NyAvKiBWaWRlb0Z1bGxzY3JlZW5T
dHJlc3MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
RDY3QkZEQjI0MzNFMEE3MDA2QjUwNDcgLyogVmlkZW9GdWxsc2NyZWVuU3RyZXNzLm1tICovOyB9
OworCQkxRDY3QkZERDI0MzNFRTY2MDA2QjUwNDcgLyogdHdvLXZpZGVvcy5odG1sIGluIENvcHkg
UmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFENjdCRkQ5MjQz
M0RGRDgwMDZCNTA0NyAvKiB0d28tdmlkZW9zLmh0bWwgKi87IH07CiAJCTFGODM1NzFCMUQzRkZC
MjMwMEUzOTY3QiAvKiBXS0JhY2tGb3J3YXJkTGlzdC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFGODM1NzFBMUQzRkZCMEUwMEUzOTY3QiAvKiBXS0Jh
Y2tGb3J3YXJkTGlzdC5tbSAqLzsgfTsKIAkJMjZERjVBNjMxNUEyQTI3RTAwMzY4OUMyIC8qIENh
bmNlbExvYWRGcm9tUmVzb3VyY2VMb2FkRGVsZWdhdGUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNkRGNUE2MTE1QTJBMjJCMDAzNjg5
QzIgLyogQ2FuY2VsTG9hZEZyb21SZXNvdXJjZUxvYWREZWxlZ2F0ZS5odG1sICovOyB9OwogCQky
NkY1MkVBRDE4Mjg4MjdCMDAyM0Q0MTIgLyogZ2VvbG9jYXRpb25HZXRDdXJyZW50UG9zaXRpb24u
aHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAyNkY1MkVBQzE4Mjg4MjBFMDAyM0Q0MTIgLyogZ2VvbG9jYXRpb25HZXRDdXJyZW50UG9zaXRp
b24uaHRtbCAqLzsgfTsKQEAgLTE1MTUsNiArMTUxNyw3IEBACiAJCQkJRjQxQUI5QUExRUY0Njk2
QjAwODNGQTA4IC8qIHRleHRhcmVhLXRvLWlucHV0Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8s
CiAJCQkJQzIyRkEzMkQyMjhGOEFFQjAwOUQ3OTg4IC8qIFRleHRXaWR0aC5odG1sIGluIENvcHkg
UmVzb3VyY2VzICovLAogCQkJCUY0NDUxQzc2MUVCOEZEODkwMDIwQzVEQSAvKiB0d28tcGFyYWdy
YXBoLWNvbnRlbnRlZGl0YWJsZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAorCQkJCTFENjdC
RkREMjQzM0VFNjYwMDZCNTA0NyAvKiB0d28tdmlkZW9zLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMg
Ki8sCiAJCQkJQzU0MEY3ODQxNTJFNUE5QTAwQTQwQzhDIC8qIHZlcmJvc2VNYXJrdXAuaHRtbCBp
biBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlDRDU3Nzc5RDIxMUNFOTFGMDAxQjM3MUUgLyogdmlk
ZW8td2l0aC1hdWRpby1hbmQtd2ViLWF1ZGlvLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJ
CQkJQ0RDOEU0OTQxQkM2RjEwODAwNTk0RkVDIC8qIHZpZGVvLXdpdGgtYXVkaW8uaHRtbCBpbiBD
b3B5IFJlc291cmNlcyAqLywKQEAgLTE2NjEsNiArMTY2NCw4IEBACiAJCTFDRjU5QURGMjFFNjg5
MjUwMDZFMzdFQyAvKiBGb3JjZUxpZ2h0QXBwZWFyYW5jZUluQnVuZGxlLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRm9yY2VMaWdodEFwcGVhcmFuY2VJbkJ1bmRs
ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNGNTlBRTAyMUU2ODkyNTAwNkUz
N0VDIC8qIEZvcmNlTGlnaHRBcHBlYXJhbmNlSW5CdW5kbGVfQnVuZGxlLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRm9yY2VMaWdodEFwcGVhcmFuY2VJbkJ1bmRs
ZV9CdW5kbGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDRjU5QUU0MjFFNjk2
RkIwMDZFMzdFQyAvKiBkYXJrLW1vZGUuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9
ICJkYXJrLW1vZGUuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFENjdCRkQ5
MjQzM0RGRDgwMDZCNTA0NyAvKiB0d28tdmlkZW9zLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7
IHBhdGggPSAidHdvLXZpZGVvcy5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MUQ2N0JGREIyNDMzRTBBNzAwNkI1MDQ3IC8qIFZpZGVvRnVsbHNjcmVlblN0cmVzcy5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IFZpZGVvRnVsbHNjcmVlblN0cmVzcy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMUY4MzU3MUExRDNGRkIwRTAwRTM5NjdCIC8qIFdLQmFja0Zvcndh
cmRMaXN0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tCYWNr
Rm9yd2FyZExpc3QubW07IHBhdGggPSBUZXN0cy9XZWJLaXQvV0tCYWNrRm9yd2FyZExpc3QubW07
IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJMjYwQkE1NzgxQjFEMkU3QjAwNEZBMDdD
IC8qIERGQUNvbWJpbmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IERGQUNvbWJpbmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjYwQkE1N0Ex
QjFEMkVFMjAwNEZBMDdDIC8qIERGQUhlbHBlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gREZBSGVscGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDMy
MCw2ICs0MzI1LDcgQEAKIAkJCQlDREMwOTMyQTIxQzg3MkMxMDAzMEM0QjAgLyogU2Nyb2xsaW5n
RG9lc05vdFBhdXNlTWVkaWEubW0gKi8sCiAJCQkJRjQzNENBMTkyMkU2NUJDQTAwNUREQjI2IC8q
IFNjcm9sbFRvUmV2ZWFsU2VsZWN0aW9uLm1tICovLAogCQkJCTBGNEZGQTlEMUVEM0FBODUwMEY3
MTExRiAvKiBTbmFwc2hvdFZpYVJlbmRlckluQ29udGV4dC5tbSAqLywKKwkJCQkxRDY3QkZEQjI0
MzNFMEE3MDA2QjUwNDcgLyogVmlkZW9GdWxsc2NyZWVuU3RyZXNzLm1tICovLAogCQkJKTsKIAkJ
CXBhdGggPSBpb3M7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtNDMyOCw2ICs0MzM0
LDcgQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJQ0Q5RTI5MkQx
QzkwQzFCQTAwMEJCODAwIC8qIGF1ZGlvLW9ubHkuaHRtbCAqLywKKwkJCQkxRDY3QkZEOTI0MzNE
RkQ4MDA2QjUwNDcgLyogdHdvLXZpZGVvcy5odG1sICovLAogCQkJCUNEQzhFNDg5MUJDNUM5NjIw
MDU5NEZFQyAvKiB2aWRlby13aXRoLWF1ZGlvLmh0bWwgKi8sCiAJCQkJQ0RDOEU0OEExQkM1Qzk2
MjAwNTk0RkVDIC8qIHZpZGVvLXdpdGgtYXVkaW8ubXA0ICovLAogCQkJCUNEMzIxQjAzMUUzQTg0
QjcwMEVCMjFDOCAvKiB2aWRlby13aXRoLW11dGVkLWF1ZGlvLWFuZC13ZWJhdWRpby5odG1sICov
LApAQCAtNTEzNCw2ICs1MTQxLDcgQEAKIAkJCQlFM0NBQUE0QzI0MTU1MDUxMDBDRUQyRTIgLyog
VVRJRnJvbVRhZy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDODNFMDNBMUQwQTYwMjcwMEZFQkNG
MyAvKiBVdGlsaXRpZXNDb2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDODNFMEM2MUQwQTY1
NEUwMEZFQkNGMyAvKiBWaWRlb0NvbnRyb2xzTWFuYWdlci5tbSBpbiBTb3VyY2VzICovLAorCQkJ
CTFENjdCRkRDMjQzM0UwQTcwMDZCNTA0NyAvKiBWaWRlb0Z1bGxzY3JlZW5TdHJlc3MubW0gaW4g
U291cmNlcyAqLywKIAkJCQlDRDMwNjVFMDIxNjU2ODJFMDBFODk1REYgLyogVmlkZW9RdWFsaXR5
RGlzcGxheUNvbXBvc2l0aW5nLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMTE1RUIzNDMxRUUwQkEw
MzAwM0MyQzBBIC8qIFZpZXdwb3J0U2l6ZUZvclZpZXdwb3J0VW5pdHMubW0gaW4gU291cmNlcyAq
LywKIAkJCQk2MzU2RkIyMjFFQzRFMEJBMDA0NEJGMTggLyogVmlzaWJsZUNvbnRlbnRSZWN0Lm1t
IGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdExlZ2FjeS9pb3MvVmlkZW9GdWxsc2NyZWVuU3RyZXNzLm1tIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRMZWdhY3kvaW9zL1ZpZGVvRnVsbHNjcmVlblN0cmVzcy5tbQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40OTM5Y2UzYWFmMTYwMTA2MjkzNmVhOWQxNWJiZjRlOTUyNDNjNTYyCi0tLSAvZGV2
L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRMZWdhY3kvaW9zL1Zp
ZGVvRnVsbHNjcmVlblN0cmVzcy5tbQpAQCAtMCwwICsxLDEyMiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bXBvcnQgImNvbmZpZy5oIgorCisjaWYgSEFWRShVSVdFQlZJRVcpCisKKyNpbXBvcnQgIlBsYXRm
b3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0IDxVSUtpdC9VSUtpdC5oPgorI2ltcG9ydCA8V2ViS2l0
L0RPTUhUTUxNZWRpYUVsZW1lbnQuaD4KKyNpbXBvcnQgPFdlYktpdC9XZWJGcmFtZVByaXZhdGUu
aD4KKyNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+
CisKK3N0YXRpYyBib29sIGRpZEZpbmlzaExvYWQgPSBmYWxzZTsKK3N0YXRpYyBib29sIGdvdE1h
aW5GcmFtZSA9IGZhbHNlOworc3RhdGljIFJldGFpblB0cjxXZWJGcmFtZT4gbWFpbkZyYW1lOwor
c3RhdGljIGludCBjb3VudE9mVmlkZW9FbGVtZW50c0NhblBsYXkgPSAwOworc3RhdGljIGJvb2wg
cmVhZHlUb1Rlc3QgPSBmYWxzZTsKKworQGludGVyZmFjZSBWaWRlb0Z1bGxzY3JlZW5TdHJlc3NV
SVdlYlZpZXdEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxVSVdlYlZpZXdEZWxlZ2F0ZSwgRE9NRXZlbnRM
aXN0ZW5lcj4KK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFZpZGVvRnVsbHNjcmVlblN0cmVzc1VJ
V2ViVmlld0RlbGVnYXRlCitJR05PUkVfV0FSTklOR1NfQkVHSU4oImRlcHJlY2F0ZWQtaW1wbGVt
ZW50YXRpb25zIikKKy0gKHZvaWQpd2ViVmlld0RpZEZpbmlzaExvYWQ6KFVJV2ViVmlldyAqKXdl
YlZpZXcKK3sKKyAgICBkaWRGaW5pc2hMb2FkID0gdHJ1ZTsKK30KK0lHTk9SRV9XQVJOSU5HU19F
TkQKKworLSAodm9pZCl1aVdlYlZpZXc6KFVJV2ViVmlldyAqKXNlbmRlciBkaWRDb21taXRMb2Fk
Rm9yRnJhbWU6KFdlYkZyYW1lICopZnJhbWUKK3sKKyAgICBnb3RNYWluRnJhbWUgPSB0cnVlOwor
ICAgIG1haW5GcmFtZSA9IGZyYW1lOworfQorCistICh2b2lkKWhhbmRsZUV2ZW50OihET01FdmVu
dCAqKWV2ZW50Cit7CisgICAgaWYgKFtldmVudC50eXBlIGlzRXF1YWxUb1N0cmluZzpAImNhbnBs
YXl0aHJvdWdoIl0pCisgICAgICAgIGNvdW50T2ZWaWRlb0VsZW1lbnRzQ2FuUGxheSsrOworCisg
ICAgaWYgKGNvdW50T2ZWaWRlb0VsZW1lbnRzQ2FuUGxheSA9PSAyKQorICAgICAgICByZWFkeVRv
VGVzdCA9IHRydWU7Cit9CitAZW5kCisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworVEVT
VChXZWJLaXRMZWdhY3ksIFZpZGVvRnVsbHNjcmVlblN0cmVzcykKK3sKKyAgICBSZXRhaW5QdHI8
VUlXaW5kb3c+IHVpV2luZG93ID0gYWRvcHROUyhbW1VJV2luZG93IGFsbG9jXSBpbml0V2l0aEZy
YW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7CisgICAgUmV0YWluUHRyPFVJV2ViVmll
dz4gdWlXZWJWaWV3ID0gYWRvcHROUyhbW1VJV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpO
U01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKV0pOworICAgIFt1aVdpbmRvdyBhZGRTdWJ2aWV3OnVp
V2ViVmlldy5nZXQoKV07CisKKyAgICB1aVdlYlZpZXcuZ2V0KCkubWVkaWFQbGF5YmFja1JlcXVp
cmVzVXNlckFjdGlvbiA9IE5POworICAgIHVpV2ViVmlldy5nZXQoKS5hbGxvd3NJbmxpbmVNZWRp
YVBsYXliYWNrID0gTk87CisKKyAgICBSZXRhaW5QdHI8VmlkZW9GdWxsc2NyZWVuU3RyZXNzVUlX
ZWJWaWV3RGVsZWdhdGU+IHVpRGVsZWdhdGUgPSBhZG9wdE5TKFtbVmlkZW9GdWxsc2NyZWVuU3Ry
ZXNzVUlXZWJWaWV3RGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICB1aVdlYlZpZXcuZ2V0KCku
ZGVsZWdhdGUgPSB1aURlbGVnYXRlLmdldCgpOworCisgICAgW3VpV2ViVmlldyBsb2FkUmVxdWVz
dDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJM
Rm9yUmVzb3VyY2U6QCJ0d28tdmlkZW9zIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0
b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV1dOworCisgICAgVXRpbDo6cnVuKCZkaWRG
aW5pc2hMb2FkKTsKKyAgICBVdGlsOjpydW4oJmdvdE1haW5GcmFtZSk7CisKKyAgICBjYWxsT25N
YWluVGhyZWFkQW5kV2FpdChbJl0gKCkgbXV0YWJsZSB7CisgICAgICAgIFttYWluRnJhbWUgc2V0
VGltZW91dHNQYXVzZWQ6WUVTXTsKKyAgICAgICAgRE9NSFRNTE1lZGlhRWxlbWVudCogdmlkZW8x
ID0gKERPTUhUTUxNZWRpYUVsZW1lbnQqKVtbbWFpbkZyYW1lIERPTURvY3VtZW50XSBnZXRFbGVt
ZW50QnlJZDpAInZpZGVvMSJdOworICAgICAgICBET01IVE1MTWVkaWFFbGVtZW50KiB2aWRlbzIg
PSAoRE9NSFRNTE1lZGlhRWxlbWVudCopW1ttYWluRnJhbWUgRE9NRG9jdW1lbnRdIGdldEVsZW1l
bnRCeUlkOkAidmlkZW8yIl07CisgICAgICAgIFt2aWRlbzEgYWRkRXZlbnRMaXN0ZW5lcjpAImNh
bnBsYXl0aHJvdWdoIiBsaXN0ZW5lcjp1aURlbGVnYXRlLmdldCgpIHVzZUNhcHR1cmU6Tk9dOwor
ICAgICAgICBbdmlkZW8yIGFkZEV2ZW50TGlzdGVuZXI6QCJjYW5wbGF5dGhyb3VnaCIgbGlzdGVu
ZXI6dWlEZWxlZ2F0ZS5nZXQoKSB1c2VDYXB0dXJlOk5PXTsKKyAgICAgICAgW21haW5GcmFtZSBz
ZXRUaW1lb3V0c1BhdXNlZDpOT107CisgICAgfSk7CisKKyAgICAvLyBXYWl0IHVudGlsIGJvdGgg
dmlkZW8gZWxlbWVudHMgYXJlIHJlYWR5IHRvIHBsYXkKKyAgICBVdGlsOjpydW4oJnJlYWR5VG9U
ZXN0KTsKKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNTsgaSsrKSB7CisgICAgICAgIGNhbGxP
bk1haW5UaHJlYWRBbmRXYWl0KFsmXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIFttYWluRnJh
bWUgc2V0VGltZW91dHNQYXVzZWQ6WUVTXTsKKyAgICAgICAgICAgIERPTUhUTUxNZWRpYUVsZW1l
bnQqIHZpZGVvMSA9IChET01IVE1MTWVkaWFFbGVtZW50KilbW21haW5GcmFtZSBET01Eb2N1bWVu
dF0gZ2V0RWxlbWVudEJ5SWQ6QCJ2aWRlbzEiXTsKKyAgICAgICAgICAgIFt2aWRlbzEgcGxheV07
CisgICAgICAgICAgICBbbWFpbkZyYW1lIHNldFRpbWVvdXRzUGF1c2VkOk5PXTsKKyAgICAgICAg
fSk7CisgICAgICAgIFV0aWw6OnNsZWVwKDAuNSk7CisKKyAgICAgICAgY2FsbE9uTWFpblRocmVh
ZEFuZFdhaXQoWyZdICgpIG11dGFibGUgeworICAgICAgICAgICAgW21haW5GcmFtZSBzZXRUaW1l
b3V0c1BhdXNlZDpZRVNdOworICAgICAgICAgICAgRE9NSFRNTE1lZGlhRWxlbWVudCogdmlkZW8y
ID0gKERPTUhUTUxNZWRpYUVsZW1lbnQqKVtbbWFpbkZyYW1lIERPTURvY3VtZW50XSBnZXRFbGVt
ZW50QnlJZDpAInZpZGVvMiJdOworICAgICAgICAgICAgW3ZpZGVvMiBwbGF5XTsKKyAgICAgICAg
ICAgIFttYWluRnJhbWUgc2V0VGltZW91dHNQYXVzZWQ6Tk9dOworICAgICAgICB9KTsKKyAgICAg
ICAgVXRpbDo6c2xlZXAoMC41KTsKKyAgICB9Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdExlZ2FjeS9pb3MvdHdvLXZpZGVvcy5o
dG1sIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRMZWdhY3kvaW9zL3R3by12aWRl
b3MuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5kYTczYjQ0ODFhNjFmY2FjMjg2NmQyNDYxMDVlOTZkYTJjM2Mx
YWYyCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRM
ZWdhY3kvaW9zL3R3by12aWRlb3MuaHRtbApAQCAtMCwwICsxLDMyIEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHNjcmlwdD4KKyAgICAgICAgZnVuY3Rpb24gZ28oKSB7
CisgICAgICAgICAgICB2YXIgdmlkZW8xID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
J3ZpZGVvJylbMF07CisgICAgICAgICAgICB2aWRlbzEucGxheSgpLnRoZW4ocGxheWluZykuY2F0
Y2gobm90UGxheWluZyk7CisKKyAgICAgICAgICAgIHZhciB2aWRlbzIgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgndmlkZW8nKVsxXTsKKyAgICAgICAgICAgIHZpZGVvMi5wbGF5KCku
dGhlbihwbGF5aW5nKS5jYXRjaChub3RQbGF5aW5nKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIHBsYXlpbmcoKSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIHdp
bmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKCdwbGF5
aW5nJyk7CisgICAgICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgICAgICB3aW5kb3cu
bG9jYXRpb24gPSAnY2FsbGJhY2s6cGxheWluZyc7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBub3RQbGF5aW5nKCkgeworICAgICAgICAgICAgdHJ5IHsKKyAg
ICAgICAgICAgICAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5w
b3N0TWVzc2FnZSgnbm90IHBsYXlpbmcnKTsKKyAgICAgICAgICAgIH0gY2F0Y2goZSkgeyB9Cisg
ICAgICAgIH0KKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0iZ28oKSI+Cisg
ICAgPHZpZGVvIGlkPSJ2aWRlbzEiIHNyYz0idmlkZW8td2l0aC1hdWRpby5tcDQiPjwvdmlkZW8+
CisgICAgPHZpZGVvIGlkPSJ2aWRlbzIiIHNyYz0idmlkZW8td2l0aG91dC1hdWRpby5tcDQiPjwv
dmlkZW8+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395323</attachid>
            <date>2020-04-02 16:50:53 -0700</date>
            <delta_ts>2020-04-02 21:28:39 -0700</delta_ts>
            <desc>Simplify the page for API test after discussion with Jer and Eric</desc>
            <filename>bug-209680-20200402165053.patch</filename>
            <type>text/plain</type>
            <size>21765</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5NDE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjYyNjFkYzkxMzRhMGM3
OWFmZjFjMWE3NzMwZDU5NWY2YTg3MTUzYS4uMzliNDk2ZWU5NTk0YzVhNjVhZmRiNjBlNWM3YTdl
N2Y4NmI5ZDg5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIwLTA0LTAyICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTiAocjI1OTA5
NSk6IEFTU0VSVElPTiBGQUlMRUQ6IG1fdmlkZW9GdWxsc2NyZWVuTW9kZSAhPSBWaWRlb0Z1bGxz
Y3JlZW5Nb2RlTm9uZSBzZWVuIHdpdGggVGVzdFdlYktpdEFQSS5XZWJLaXRMZWdhY3kuQXVkaW9T
ZXNzaW9uQ2F0ZWdvcnlJT1MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwOTY4MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFQSSB0ZXN0OiBXZWJLaXRMZWdhY3kuVmlkZW9GdWxsc2NyZWVuU3RyZXNzCisK
KyAgICAgICAgQ2FsbCBmdWxsc2NyZWVuTW9kZUNoYW5nZWQoVmlkZW9GdWxsc2NyZWVuTW9kZU5v
bmUpIHJpZ2h0IGJlZm9yZSBjYWxsaW5nIHRoZQorICAgICAgICBmdW5jdGlvbnMgb2YgQ2hyb21l
Q2xpZW50IHRvIG1ha2Ugc3VyZSB0aGUgc3RhdGUgKG1fdmlkZW9GdWxsc2NyZWVuTW9kZSkKKyAg
ICAgICAgaGFzIHRoZSBleHBlY3RlZCB2YWx1ZSB3aGVuIHNvbWUgY2FsbGJhY2tzIGNvbWUgYmFj
ayB0byB0aGUgdmlkZW8gZWxlbWVudC4KKworICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpkaXNwYXRjaEV2ZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmV4aXRGdWxsc2NyZWVuKToK
KworICAgICAgICBBZGQgbnVsbCBwb2ludGVyIGNoZWNraW5ncyB0byBmaXggdHdvIGNyYXNoZXMg
Zm91bmQgaW4gc3RyZXNzIHRlc3RzLgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1
bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW06CisgICAgICAgIChWaWRlb0Z1bGxzY3JlZW5Db250
cm9sbGVyQ29udGV4dDo6cmVxdWVzdFZpZGVvQ29udGVudExheWVyKToKKyAgICAgICAgKFZpZGVv
RnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpyZXR1cm5WaWRlb0NvbnRlbnRMYXllcik6CisK
IDIwMjAtMDQtMDIgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAg
IFRyYXZlcnNlIGZsb2F0IGRlc2NlbmRhbnRzIHdoZW4gY29tcHV0aW5nIGV2ZW50IGFuZCB0b3Vj
aC1hY3Rpb24gcmVnaW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IGExNDBiOTYy
NGNhZThhZTBiN2ZiMTRkZjI0ZGZkNjEzOWU3YmRjOTIuLmViOWRmYjhhMTJkNzcxOTgyOWIxNmM5
M2VjYTY4ZWY3YzBiN2Y5NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNyBAQAorMjAyMC0wNC0wMiAgUGVuZyBMaXUgIDxwZW5nLmxpdTZAYXBwbGUuY29tPgorCisg
ICAgICAgIFJFR1JFU1NJT04gKHIyNTkwOTUpOiBBU1NFUlRJT04gRkFJTEVEOiBtX3ZpZGVvRnVs
bHNjcmVlbk1vZGUgIT0gVmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUgc2VlbiB3aXRoIFRlc3RXZWJL
aXRBUEkuV2ViS2l0TGVnYWN5LkF1ZGlvU2Vzc2lvbkNhdGVnb3J5SU9TCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk2ODAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaXRoIHRoaXMgcGF0Y2gsIHRoZSBX
ZWJLaXQtTGVnYWN5IGNhbiBzdXBwb3J0IG11bHRpcGxlIHZpZGVvIGVsZW1lbnRzIHJlcXVlc3QK
KyAgICAgICAgdG8gZW50ZXIgdmlkZW8gZnVsbHNjcmVlbiBhbG1vc3QgYXQgdGhlIHNhbWUgdGlt
ZSwgYW5kIG9ubHkgdGhlIGxhc3Qgb25lIHdpbGwgc3VjY2VlZC4KKyAgICAgICAgQWxzbywgdGhp
cyBwYXRjaCBmaXhlcyB3ZWJraXQub3JnL2IvMjA5NjEwIGZvciBXZWJLaXQtTGVnYWN5LgorCisg
ICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlld0Rh
dGEuaDoKKwogMjAyMC0wNC0wMSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgUmVtb3ZlIGFsbCB1c2VzIG9mIGxpdmUgcmFuZ2VzIGZyb20gVGV4dEl0ZXJhdG9yCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCBkNzVjNDgwNWZiZmMx
ZjI3YWY4MTdiMTdlOGI1NTkwYmM4YjY5YmI3Li5jYjNmMDQzMjliMTBjOWRhMDMzNDdmMjg0N2M1
M2Q3YjY3YzJjMWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAK
QEAgLTU4OTUsOCArNTg5NSwxMCBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpc3BhdGNoRXZl
bnQoRXZlbnQmIGV2ZW50KQogICAgIC8vIFdlIG5lZWQgdG8gZmlyZSB0aGUgZW5kIGZ1bGxzY3Jl
ZW4gZXZlbnQgdG8gbm90aWZ5IHRoZSBwYWdlCiAgICAgLy8gdG8gY2hhbmdlIHRoZSBwb3NpdGlv
bi9zaXplIGJhY2sgKmJlZm9yZSogZXhpdGluZyBmdWxsc2NyZWVuLgogICAgIC8vIE90aGVyd2lz
ZSwgdGhlIGV4aXQgZnVsbHNjcmVlbiBhbmltYXRpb24gd2lsbCBiZSBpbmNvcnJlY3QuCi0gICAg
aWYgKCFtX3ZpZGVvRnVsbHNjcmVlblN0YW5kYnkgJiYgZXZlbnQudHlwZSgpID09IGV2ZW50TmFt
ZXMoKS53ZWJraXRlbmRmdWxsc2NyZWVuRXZlbnQpCisgICAgaWYgKCFtX3ZpZGVvRnVsbHNjcmVl
blN0YW5kYnkgJiYgZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS53ZWJraXRlbmRmdWxsc2Ny
ZWVuRXZlbnQpIHsKKyAgICAgICAgZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKFZpZGVvRnVsbHNjcmVl
bk1vZGVOb25lKTsKICAgICAgICAgZG9jdW1lbnQoKS5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgp
LmV4aXRWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQoZG93bmNhc3Q8SFRNTFZpZGVvRWxl
bWVudD4oKnRoaXMpKTsKKyAgICB9CiB9CiAKIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6YWRkRXZl
bnRMaXN0ZW5lcihjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIFJlZjxFdmVudExpc3RlbmVy
PiYmIGxpc3RlbmVyLCBjb25zdCBBZGRFdmVudExpc3RlbmVyT3B0aW9ucyYgb3B0aW9ucykKQEAg
LTYxMTgsNyArNjEyMCw2IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZXhpdEZ1bGxzY3JlZW4o
KQogCiAgICAgQVNTRVJUKG1fdmlkZW9GdWxsc2NyZWVuTW9kZSAhPSBWaWRlb0Z1bGxzY3JlZW5N
b2RlTm9uZSk7CiAgICAgVmlkZW9GdWxsc2NyZWVuTW9kZSBvbGRWaWRlb0Z1bGxzY3JlZW5Nb2Rl
ID0gbV92aWRlb0Z1bGxzY3JlZW5Nb2RlOwotICAgIGZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChWaWRl
b0Z1bGxzY3JlZW5Nb2RlTm9uZSk7CiAjaWYgRU5BQkxFKE1FRElBX0NPTlRST0xTX1NDUklQVCkK
ICAgICBSZWY8SFRNTE1lZGlhRWxlbWVudD4gcHJvdGVjdGVkVGhpcygqdGhpcyk7IC8vIHVwZGF0
ZU1lZGlhQ29udHJvbHNBZnRlclByZXNlbnRhdGlvbk1vZGVDaGFuZ2UgY2FsbHMgbWV0aG9kcyB0
aGF0IGNhbiB0cmlnZ2VyIGFyYml0cmFyeSBET00gbXV0YXRpb25zLgogICAgIHVwZGF0ZU1lZGlh
Q29udHJvbHNBZnRlclByZXNlbnRhdGlvbk1vZGVDaGFuZ2UoKTsKQEAgLTYxNDEsMTMgKzYxNDIs
MTcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpleGl0RnVsbHNjcmVlbigpCiAgICAgfQogCiAj
aWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpCi0gICAg
aWYgKGRvY3VtZW50KCkuYWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZCgpIHx8IGRvY3VtZW50
KCkuYWN0aXZlRE9NT2JqZWN0c0FyZVN0b3BwZWQoKSkKKyAgICBpZiAoZG9jdW1lbnQoKS5hY3Rp
dmVET01PYmplY3RzQXJlU3VzcGVuZGVkKCkgfHwgZG9jdW1lbnQoKS5hY3RpdmVET01PYmplY3Rz
QXJlU3RvcHBlZCgpKSB7CisgICAgICAgIGZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChWaWRlb0Z1bGxz
Y3JlZW5Nb2RlTm9uZSk7CiAgICAgICAgIGRvY3VtZW50KCkucGFnZSgpLT5jaHJvbWUoKS5jbGll
bnQoKS5leGl0VmlkZW9GdWxsc2NyZWVuVG9Nb2RlV2l0aG91dEFuaW1hdGlvbihkb3duY2FzdDxI
VE1MVmlkZW9FbGVtZW50PigqdGhpcyksIFZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKTsKKyAgICB9
CiAgICAgZWxzZQogI2VuZGlmCiAgICAgaWYgKGRvY3VtZW50KCkucGFnZSgpLT5jaHJvbWUoKS5j
bGllbnQoKS5zdXBwb3J0c1ZpZGVvRnVsbHNjcmVlbihvbGRWaWRlb0Z1bGxzY3JlZW5Nb2RlKSkg
ewotICAgICAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5TdGFuZGJ5KQorICAgICAgICBpZiAobV92
aWRlb0Z1bGxzY3JlZW5TdGFuZGJ5KSB7CisgICAgICAgICAgICBmdWxsc2NyZWVuTW9kZUNoYW5n
ZWQoVmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUpOwogICAgICAgICAgICAgZG9jdW1lbnQoKS5wYWdl
KCktPmNocm9tZSgpLmNsaWVudCgpLmVudGVyVmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50
KGRvd25jYXN0PEhUTUxWaWRlb0VsZW1lbnQ+KCp0aGlzKSwgbV92aWRlb0Z1bGxzY3JlZW5Nb2Rl
LCBtX3ZpZGVvRnVsbHNjcmVlblN0YW5kYnkpOworICAgICAgICB9CiAKICAgICAgICAgc2NoZWR1
bGVFdmVudChldmVudE5hbWVzKCkud2Via2l0ZW5kZnVsbHNjcmVlbkV2ZW50KTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVu
Q29udHJvbGxlckFWS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVv
RnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbQppbmRleCA4YWYzYjVjNTUxNTRkNmFmYTUyNGVl
ODE2MTFiOTE2YmM4YTc5MzI1Li5lMWFhMjY2MTZhOWVmN2EyNDI1NDk5NzRmNjg5YjgxZDM4ZmQ4
NzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxs
c2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0KQEAgLTI2MCw2ICsyNjAsOSBA
QCB2b2lkIFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpyZXF1ZXN0VmlkZW9Db250
ZW50TGF5ZXIoKQogICAgICAgICBbdmlkZW9GdWxsc2NyZWVuTGF5ZXIgc2V0QmFja2dyb3VuZENv
bG9yOmNhY2hlZENHQ29sb3IoV2ViQ29yZTo6Q29sb3I6OnRyYW5zcGFyZW50KV07CiAgICAgICAg
IG1fZnVsbHNjcmVlbk1vZGVsLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcih2aWRlb0Z1bGxzY3Jl
ZW5MYXllci5nZXQoKSwgW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCB0
aGlzXSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dl
dF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwg
dGhpc10geworICAgICAgICAgICAgICAgIGlmICghbV9pbnRlcmZhY2UpCisgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKKwogICAgICAgICAgICAgICAgIG1faW50ZXJmYWNlLT5zZXRIYXNWaWRl
b0NvbnRlbnRMYXllcih0cnVlKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsKQEAgLTI3
Nyw2ICsyODAsOSBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpyZXR1
cm5WaWRlb0NvbnRlbnRMYXllcigpCiAgICAgICAgIFt2aWRlb0Z1bGxzY3JlZW5MYXllciBzZXRC
YWNrZ3JvdW5kQ29sb3I6Y2FjaGVkQ0dDb2xvcihXZWJDb3JlOjpDb2xvcjo6dHJhbnNwYXJlbnQp
XTsKICAgICAgICAgbV9mdWxsc2NyZWVuTW9kZWwtPnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKG5p
bCwgW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCB0aGlzXSAoKSBtdXRh
YmxlIHsKICAgICAgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVl
KCksIFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgdGhpc10geworICAg
ICAgICAgICAgICAgIGlmICghbV9pbnRlcmZhY2UpCisgICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKKwogICAgICAgICAgICAgICAgIG1faW50ZXJmYWNlLT5zZXRIYXNWaWRlb0NvbnRlbnRMYXll
cihmYWxzZSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggYzM1OTUyMWM2ZGRjNzdmNjZhMTM1NmNh
YTE5MWY2NTg3MDNlZmRhOS4uMGE1ZmM5NGUyNzcxMDE4MGMxZjJhNWE1NmJlMDBmNmVkNTQ4MGVm
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtOTMz
MSwxMiArOTMzMSwxMSBAQCAtICh2b2lkKV9lbnRlclZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxl
bWVudDooTmFrZWRQdHI8V2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudAogCiAgICAgICAgIC8vIEZp
cnN0IGV4aXQgRnVsbHNjcmVlbiBmb3IgdGhlIG9sZCB2aWRlb0VsZW1lbnQuCiAgICAgICAgIFtf
cHJpdmF0ZS0+ZnVsbHNjcmVlbkNvbnRyb2xsZXIgdmlkZW9FbGVtZW50XS0+ZXhpdEZ1bGxzY3Jl
ZW4oKTsKLSAgICAgICAgLy8gVGhpcyBwcmV2aW91cyBjYWxsIGhhcyB0byB0cmlnZ2VyIF9leGl0
RnVsbHNjcmVlbiwKLSAgICAgICAgLy8gd2hpY2ggaGFzIHRvIGNsZWFyIF9wcml2YXRlLT5mdWxs
c2NyZWVuQ29udHJvbGxlci4KLSAgICAgICAgQVNTRVJUKCFfcHJpdmF0ZS0+ZnVsbHNjcmVlbkNv
bnRyb2xsZXIpOworICAgICAgICBfcHJpdmF0ZS0+ZnVsbHNjcmVlbkNvbnRyb2xsZXJzRXhpdGlu
Zy5hcHBlbmQoc3RkOjpleGNoYW5nZShfcHJpdmF0ZS0+ZnVsbHNjcmVlbkNvbnRyb2xsZXIsIG5p
bCkpOwogICAgIH0KKwogICAgIGlmICghX3ByaXZhdGUtPmZ1bGxzY3JlZW5Db250cm9sbGVyKSB7
Ci0gICAgICAgIF9wcml2YXRlLT5mdWxsc2NyZWVuQ29udHJvbGxlciA9IFtbV2ViVmlkZW9GdWxs
c2NyZWVuQ29udHJvbGxlciBhbGxvY10gaW5pdF07CisgICAgICAgIF9wcml2YXRlLT5mdWxsc2Ny
ZWVuQ29udHJvbGxlciA9IGFkb3B0TlMoW1tXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIGFs
bG9jXSBpbml0XSk7CiAgICAgICAgIFtfcHJpdmF0ZS0+ZnVsbHNjcmVlbkNvbnRyb2xsZXIgc2V0
VmlkZW9FbGVtZW50OnZpZGVvRWxlbWVudF07CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICAgICAgW19wcml2YXRlLT5mdWxsc2NyZWVuQ29udHJvbGxlciBlbnRlckZ1bGxzY3JlZW46KFVJ
VmlldyAqKVtbW3NlbGYgd2luZG93XSBob3N0TGF5ZXJdIGRlbGVnYXRlXSBtb2RlOm1vZGVdOwpA
QCAtOTM1MCwxMSArOTM0OSwyMSBAQCAtICh2b2lkKV9lbnRlclZpZGVvRnVsbHNjcmVlbkZvclZp
ZGVvRWxlbWVudDooTmFrZWRQdHI8V2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudAogCiAtICh2b2lk
KV9leGl0VmlkZW9GdWxsc2NyZWVuCiB7Ci0gICAgaWYgKCFfcHJpdmF0ZS0+ZnVsbHNjcmVlbkNv
bnRyb2xsZXIpCisgICAgaWYgKCFfcHJpdmF0ZS0+ZnVsbHNjcmVlbkNvbnRyb2xsZXIgJiYgX3By
aXZhdGUtPmZ1bGxzY3JlZW5Db250cm9sbGVyc0V4aXRpbmcuaXNFbXB0eSgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBpZiAoIV9wcml2YXRlLT5mdWxsc2NyZWVuQ29udHJvbGxlcnNFeGl0aW5n
LmlzRW1wdHkoKSkgeworICAgICAgICBhdXRvIGNvbnRyb2xsZXIgPSBfcHJpdmF0ZS0+ZnVsbHNj
cmVlbkNvbnRyb2xsZXJzRXhpdGluZy5maXJzdCgpOworICAgICAgICBfcHJpdmF0ZS0+ZnVsbHNj
cmVlbkNvbnRyb2xsZXJzRXhpdGluZy5yZW1vdmUoMCk7CisKKyAgICAgICAgW2NvbnRyb2xsZXIg
ZXhpdEZ1bGxzY3JlZW5dOwogICAgICAgICByZXR1cm47Ci0gICAgW19wcml2YXRlLT5mdWxsc2Ny
ZWVuQ29udHJvbGxlciBleGl0RnVsbHNjcmVlbl07Ci0gICAgW19wcml2YXRlLT5mdWxsc2NyZWVu
Q29udHJvbGxlciByZWxlYXNlXTsKKyAgICB9CisKKyAgICBhdXRvIGZ1bGxzY3JlZW5Db250cm9s
bGVyID0gX3ByaXZhdGUtPmZ1bGxzY3JlZW5Db250cm9sbGVyOwogICAgIF9wcml2YXRlLT5mdWxs
c2NyZWVuQ29udHJvbGxlciA9IG5pbDsKKworICAgIFtmdWxsc2NyZWVuQ29udHJvbGxlciBleGl0
RnVsbHNjcmVlbl07CiB9CiAKICNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVT
RU5UQVRJT05fTU9ERSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViVmlld0RhdGEuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmll
d0RhdGEuaAppbmRleCBlMmZkZTQ1NjU2MzY4Y2Q0ZGMyYzZkMGVmNGZiNjVhMmJhMzIxNDExLi5m
ZTk4MzliYWM0NzQ5MWExNDNiYTY4YmU3YzliYjY1MGFmZDUwN2I4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLmgKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5oCkBAIC0zMTYsMTEgKzMxNiwxMiBA
QCBwcml2YXRlOgogICAgIE5TUGFzdGVib2FyZCAqaW5zZXJ0aW9uUGFzdGVib2FyZDsKICAgICBS
ZXRhaW5QdHI8TlNJbWFnZT4gX21haW5GcmFtZUljb247CiAjZW5kaWYKLSAgICAgICAgICAgIAor
CiAgICAgTlNTaXplIGxhc3RMYXlvdXRTaXplOwogCiAjaWYgRU5BQkxFKFZJREVPKQotICAgIFdl
YlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIgKmZ1bGxzY3JlZW5Db250cm9sbGVyOworICAgIFJl
dGFpblB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyPiBmdWxsc2NyZWVuQ29udHJvbGxl
cjsKKyAgICBWZWN0b3I8UmV0YWluUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXI+PiBm
dWxsc2NyZWVuQ29udHJvbGxlcnNFeGl0aW5nOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMp
ICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkKZGlmZiAtLWdpdCBhL1Rvb2xzL0No
YW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAzYWU4ZDRhOWYzMGM0YzEwYWFkMmYwNjk4
ZDIyNDZiNzhkNmE0NzVkLi4xYWMyYzNkZWVlYzk5Y2JhYjVkMmM5MTA5NWQ3ZDRhM2Q3MmFhMDcx
IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjAgQEAKKzIwMjAtMDQtMDIgIFBlbmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4K
KworICAgICAgICBSRUdSRVNTSU9OIChyMjU5MDk1KTogQVNTRVJUSU9OIEZBSUxFRDogbV92aWRl
b0Z1bGxzY3JlZW5Nb2RlICE9IFZpZGVvRnVsbHNjcmVlbk1vZGVOb25lIHNlZW4gd2l0aCBUZXN0
V2ViS2l0QVBJLldlYktpdExlZ2FjeS5BdWRpb1Nlc3Npb25DYXRlZ29yeUlPUworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5NjgwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGFuIEFQSSB0ZXN0IHRv
IHN0cmVzcyB0ZXN0IHRoZSB2aWRlbyBmdWxsc2NyZWVuIHN1cHBvcnQgb2YgV2ViS2l0TGVnYWN5
IG9uIGlPUy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
TGVnYWN5L2lvcy9WaWRlb0Z1bGxzY3JlZW5TdHJlc3MubW06IEFkZGVkLgorICAgICAgICAoLVtW
aWRlb0Z1bGxzY3JlZW5TdHJlc3NVSVdlYlZpZXdEZWxlZ2F0ZSB3ZWJWaWV3RGlkRmluaXNoTG9h
ZDpdKToKKyAgICAgICAgKC1bVmlkZW9GdWxsc2NyZWVuU3RyZXNzVUlXZWJWaWV3RGVsZWdhdGUg
dWlXZWJWaWV3OmRpZENvbW1pdExvYWRGb3JGcmFtZTpdKToKKyAgICAgICAgKC1bVmlkZW9GdWxs
c2NyZWVuU3RyZXNzVUlXZWJWaWV3RGVsZWdhdGUgaGFuZGxlRXZlbnQ6XSk6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dExlZ2FjeS9pb3MvdHdvLXZpZGVvcy5odG1sOiBBZGRlZC4KKwogMjAyMC0wNC0wMiAgRGF2aWQg
S2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIyMzQ2
ODUpOiBMZWFrIG9mIENBTGF5ZXIgaW4gY3JlYXRlQ29yZUFuaW1hdGlvbkxheWVyKCkgaW4gUGx1
Z2luT2JqZWN0TWFjLm1tCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJL
aXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGI2NTIxY2M2OTBjNDIy
YjEwMjE5NWQ5MTU3ZWRlNGZjZThmMWQzZjcuLmM1NmU2ZDVlZWM2NDFlYjNjYjlmY2MyZjc4ZDkz
YjhlMzgzNDEwNWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTMsNiArMTEzLDggQEAK
IAkJMUNGNTlBRTIyMUU2ODkyNTAwNkUzN0VDIC8qIEZvcmNlTGlnaHRBcHBlYXJhbmNlSW5CdW5k
bGVfQnVuZGxlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMUNGNTlBRTAyMUU2ODkyNTAwNkUzN0VDIC8qIEZvcmNlTGlnaHRBcHBlYXJhbmNlSW5CdW5k
bGVfQnVuZGxlLm1tICovOyB9OwogCQkxQ0Y1OUFFMzIxRTY4OTMyMDA2RTM3RUMgLyogRm9yY2VM
aWdodEFwcGVhcmFuY2VJbkJ1bmRsZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFDRjU5QURGMjFFNjg5MjUwMDZFMzdFQyAvKiBGb3JjZUxpZ2h0QXBw
ZWFyYW5jZUluQnVuZGxlLm1tICovOyB9OwogCQkxQ0Y1OUFFNTIxRTY5NzdEMDA2RTM3RUMgLyog
ZGFyay1tb2RlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUNGNTlBRTQyMUU2OTZGQjAwNkUzN0VDIC8qIGRhcmstbW9kZS5odG1sICov
OyB9OworCQkxRDY3QkZEQzI0MzNFMEE3MDA2QjUwNDcgLyogVmlkZW9GdWxsc2NyZWVuU3RyZXNz
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUQ2N0JG
REIyNDMzRTBBNzAwNkI1MDQ3IC8qIFZpZGVvRnVsbHNjcmVlblN0cmVzcy5tbSAqLzsgfTsKKwkJ
MUQ2N0JGREQyNDMzRUU2NjAwNkI1MDQ3IC8qIHR3by12aWRlb3MuaHRtbCBpbiBDb3B5IFJlc291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxRDY3QkZEOTI0MzNERkQ4
MDA2QjUwNDcgLyogdHdvLXZpZGVvcy5odG1sICovOyB9OwogCQkxRjgzNTcxQjFEM0ZGQjIzMDBF
Mzk2N0IgLyogV0tCYWNrRm9yd2FyZExpc3QubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxRjgzNTcxQTFEM0ZGQjBFMDBFMzk2N0IgLyogV0tCYWNrRm9y
d2FyZExpc3QubW0gKi87IH07CiAJCTI2REY1QTYzMTVBMkEyN0UwMDM2ODlDMiAvKiBDYW5jZWxM
b2FkRnJvbVJlc291cmNlTG9hZERlbGVnYXRlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjZERjVBNjExNUEyQTIyQjAwMzY4OUMyIC8q
IENhbmNlbExvYWRGcm9tUmVzb3VyY2VMb2FkRGVsZWdhdGUuaHRtbCAqLzsgfTsKIAkJMjZGNTJF
QUQxODI4ODI3QjAwMjNENDEyIC8qIGdlb2xvY2F0aW9uR2V0Q3VycmVudFBvc2l0aW9uLmh0bWwg
aW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjZG
NTJFQUMxODI4ODIwRTAwMjNENDEyIC8qIGdlb2xvY2F0aW9uR2V0Q3VycmVudFBvc2l0aW9uLmh0
bWwgKi87IH07CkBAIC0xNTE0LDYgKzE1MTYsNyBAQAogCQkJCUY0MUFCOUFBMUVGNDY5NkIwMDgz
RkEwOCAvKiB0ZXh0YXJlYS10by1pbnB1dC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJ
CUMyMkZBMzJEMjI4RjhBRUIwMDlENzk4OCAvKiBUZXh0V2lkdGguaHRtbCBpbiBDb3B5IFJlc291
cmNlcyAqLywKIAkJCQlGNDQ1MUM3NjFFQjhGRDg5MDAyMEM1REEgLyogdHdvLXBhcmFncmFwaC1j
b250ZW50ZWRpdGFibGUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKKwkJCQkxRDY3QkZERDI0
MzNFRTY2MDA2QjUwNDcgLyogdHdvLXZpZGVvcy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAog
CQkJCUM1NDBGNzg0MTUyRTVBOUEwMEE0MEM4QyAvKiB2ZXJib3NlTWFya3VwLmh0bWwgaW4gQ29w
eSBSZXNvdXJjZXMgKi8sCiAJCQkJQ0Q1Nzc3OUQyMTFDRTkxRjAwMUIzNzFFIC8qIHZpZGVvLXdp
dGgtYXVkaW8tYW5kLXdlYi1hdWRpby5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUNE
QzhFNDk0MUJDNkYxMDgwMDU5NEZFQyAvKiB2aWRlby13aXRoLWF1ZGlvLmh0bWwgaW4gQ29weSBS
ZXNvdXJjZXMgKi8sCkBAIC0xNjYwLDYgKzE2NjMsOCBAQAogCQkxQ0Y1OUFERjIxRTY4OTI1MDA2
RTM3RUMgLyogRm9yY2VMaWdodEFwcGVhcmFuY2VJbkJ1bmRsZS5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEZvcmNlTGlnaHRBcHBlYXJhbmNlSW5CdW5kbGUubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDRjU5QUUwMjFFNjg5MjUwMDZFMzdFQyAv
KiBGb3JjZUxpZ2h0QXBwZWFyYW5jZUluQnVuZGxlX0J1bmRsZS5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEZvcmNlTGlnaHRBcHBlYXJhbmNlSW5CdW5kbGVfQnVu
ZGxlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0Y1OUFFNDIxRTY5NkZCMDA2
RTM3RUMgLyogZGFyay1tb2RlLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiZGFy
ay1tb2RlLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxRDY3QkZEOTI0MzNE
RkQ4MDA2QjUwNDcgLyogdHdvLXZpZGVvcy5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRo
ID0gInR3by12aWRlb3MuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFENjdC
RkRCMjQzM0UwQTcwMDZCNTA0NyAvKiBWaWRlb0Z1bGxzY3JlZW5TdHJlc3MubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBWaWRlb0Z1bGxzY3JlZW5TdHJlc3MubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTFGODM1NzFBMUQzRkZCMEUwMEUzOTY3QiAvKiBXS0JhY2tGb3J3YXJkTGlz
dC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdLQmFja0Zvcndh
cmRMaXN0Lm1tOyBwYXRoID0gVGVzdHMvV2ViS2l0L1dLQmFja0ZvcndhcmRMaXN0Lm1tOyBzb3Vy
Y2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCTI2MEJBNTc4MUIxRDJFN0IwMDRGQTA3QyAvKiBE
RkFDb21iaW5lci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBERkFD
b21iaW5lci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI2MEJBNTdBMUIxRDJF
RTIwMDRGQTA3QyAvKiBERkFIZWxwZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IERGQUhlbHBlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQzMjEsNiAr
NDMyNiw3IEBACiAJCQkJQ0RDMDkzMkEyMUM4NzJDMTAwMzBDNEIwIC8qIFNjcm9sbGluZ0RvZXNO
b3RQYXVzZU1lZGlhLm1tICovLAogCQkJCUY0MzRDQTE5MjJFNjVCQ0EwMDVEREIyNiAvKiBTY3Jv
bGxUb1JldmVhbFNlbGVjdGlvbi5tbSAqLywKIAkJCQkwRjRGRkE5RDFFRDNBQTg1MDBGNzExMUYg
LyogU25hcHNob3RWaWFSZW5kZXJJbkNvbnRleHQubW0gKi8sCisJCQkJMUQ2N0JGREIyNDMzRTBB
NzAwNkI1MDQ3IC8qIFZpZGVvRnVsbHNjcmVlblN0cmVzcy5tbSAqLywKIAkJCSk7CiAJCQlwYXRo
ID0gaW9zOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTQzMjksNiArNDMzNSw3IEBA
CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCUNEOUUyOTJEMUM5MEMx
QkEwMDBCQjgwMCAvKiBhdWRpby1vbmx5Lmh0bWwgKi8sCisJCQkJMUQ2N0JGRDkyNDMzREZEODAw
NkI1MDQ3IC8qIHR3by12aWRlb3MuaHRtbCAqLywKIAkJCQlDREM4RTQ4OTFCQzVDOTYyMDA1OTRG
RUMgLyogdmlkZW8td2l0aC1hdWRpby5odG1sICovLAogCQkJCUNEQzhFNDhBMUJDNUM5NjIwMDU5
NEZFQyAvKiB2aWRlby13aXRoLWF1ZGlvLm1wNCAqLywKIAkJCQlDRDMyMUIwMzFFM0E4NEI3MDBF
QjIxQzggLyogdmlkZW8td2l0aC1tdXRlZC1hdWRpby1hbmQtd2ViYXVkaW8uaHRtbCAqLywKQEAg
LTUxMzQsNiArNTE0MSw3IEBACiAJCQkJRTNDQUFBNEMyNDE1NTA1MTAwQ0VEMkUyIC8qIFVUSUZy
b21UYWcubW0gaW4gU291cmNlcyAqLywKIAkJCQk3QzgzRTAzQTFEMEE2MDI3MDBGRUJDRjMgLyog
VXRpbGl0aWVzQ29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQk3QzgzRTBDNjFEMEE2NTRFMDBG
RUJDRjMgLyogVmlkZW9Db250cm9sc01hbmFnZXIubW0gaW4gU291cmNlcyAqLywKKwkJCQkxRDY3
QkZEQzI0MzNFMEE3MDA2QjUwNDcgLyogVmlkZW9GdWxsc2NyZWVuU3RyZXNzLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQ0QzMDY1RTAyMTY1NjgyRTAwRTg5NURGIC8qIFZpZGVvUXVhbGl0eURpc3Bs
YXlDb21wb3NpdGluZy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTExNUVCMzQzMUVFMEJBMDMwMDND
MkMwQSAvKiBWaWV3cG9ydFNpemVGb3JWaWV3cG9ydFVuaXRzLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNjM1NkZCMjIxRUM0RTBCQTAwNDRCRjE4IC8qIFZpc2libGVDb250ZW50UmVjdC5tbSBpbiBT
b3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRM
ZWdhY3kvaW9zL1ZpZGVvRnVsbHNjcmVlblN0cmVzcy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0TGVnYWN5L2lvcy9WaWRlb0Z1bGxzY3JlZW5TdHJlc3MubW0KbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYmNkZGQxNzc2NWRmOTdhNjU3OWEwY2FmZjhmMjM5NzkzMTllYTNmNwotLS0gL2Rldi9udWxs
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0TGVnYWN5L2lvcy9WaWRlb0Z1
bGxzY3JlZW5TdHJlc3MubW0KQEAgLTAsMCArMSwxMjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0
ICJjb25maWcuaCIKKworI2lmIEhBVkUoVUlXRUJWSUVXKQorCisjaW1wb3J0ICJQbGF0Zm9ybVV0
aWxpdGllcy5oIgorI2ltcG9ydCA8VUlLaXQvVUlLaXQuaD4KKyNpbXBvcnQgPFdlYktpdC9ET01I
VE1MTWVkaWFFbGVtZW50Lmg+CisjaW1wb3J0IDxXZWJLaXQvV2ViRnJhbWVQcml2YXRlLmg+Cisj
aW1wb3J0IDxXZWJLaXRMZWdhY3kvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmg+CisjaW1wb3J0IDx3
dGYvTWFpblRocmVhZC5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorCitzdGF0aWMgYm9v
bCBkaWRGaW5pc2hMb2FkID0gZmFsc2U7CitzdGF0aWMgYm9vbCBnb3RNYWluRnJhbWUgPSBmYWxz
ZTsKK3N0YXRpYyBSZXRhaW5QdHI8V2ViRnJhbWU+IG1haW5GcmFtZTsKK3N0YXRpYyBpbnQgY291
bnRPZlZpZGVvRWxlbWVudHNDYW5QbGF5ID0gMDsKK3N0YXRpYyBib29sIHJlYWR5VG9UZXN0ID0g
ZmFsc2U7CisKK0BpbnRlcmZhY2UgVmlkZW9GdWxsc2NyZWVuU3RyZXNzVUlXZWJWaWV3RGVsZWdh
dGUgOiBOU09iamVjdCA8VUlXZWJWaWV3RGVsZWdhdGUsIERPTUV2ZW50TGlzdGVuZXI+CitAZW5k
CisKK0BpbXBsZW1lbnRhdGlvbiBWaWRlb0Z1bGxzY3JlZW5TdHJlc3NVSVdlYlZpZXdEZWxlZ2F0
ZQorSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJkZXByZWNhdGVkLWltcGxlbWVudGF0aW9ucyIpCist
ICh2b2lkKXdlYlZpZXdEaWRGaW5pc2hMb2FkOihVSVdlYlZpZXcgKil3ZWJWaWV3Cit7CisgICAg
ZGlkRmluaXNoTG9hZCA9IHRydWU7Cit9CitJR05PUkVfV0FSTklOR1NfRU5ECisKKy0gKHZvaWQp
dWlXZWJWaWV3OihVSVdlYlZpZXcgKilzZW5kZXIgZGlkQ29tbWl0TG9hZEZvckZyYW1lOihXZWJG
cmFtZSAqKWZyYW1lCit7CisgICAgZ290TWFpbkZyYW1lID0gdHJ1ZTsKKyAgICBtYWluRnJhbWUg
PSBmcmFtZTsKK30KKworLSAodm9pZCloYW5kbGVFdmVudDooRE9NRXZlbnQgKilldmVudAorewor
ICAgIGlmIChbZXZlbnQudHlwZSBpc0VxdWFsVG9TdHJpbmc6QCJjYW5wbGF5dGhyb3VnaCJdKQor
ICAgICAgICBjb3VudE9mVmlkZW9FbGVtZW50c0NhblBsYXkrKzsKKworICAgIGlmIChjb3VudE9m
VmlkZW9FbGVtZW50c0NhblBsYXkgPT0gMikKKyAgICAgICAgcmVhZHlUb1Rlc3QgPSB0cnVlOwor
fQorQGVuZAorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK1RFU1QoV2ViS2l0TGVnYWN5
LCBWaWRlb0Z1bGxzY3JlZW5TdHJlc3MpCit7CisgICAgUmV0YWluUHRyPFVJV2luZG93PiB1aVdp
bmRvdyA9IGFkb3B0TlMoW1tVSVdpbmRvdyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0
KDAsIDAsIDgwMCwgNjAwKV0pOworICAgIFJldGFpblB0cjxVSVdlYlZpZXc+IHVpV2ViVmlldyA9
IGFkb3B0TlMoW1tVSVdlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAw
LCA4MDAsIDYwMCldKTsKKyAgICBbdWlXaW5kb3cgYWRkU3Vidmlldzp1aVdlYlZpZXcuZ2V0KCld
OworCisgICAgdWlXZWJWaWV3LmdldCgpLm1lZGlhUGxheWJhY2tSZXF1aXJlc1VzZXJBY3Rpb24g
PSBOTzsKKyAgICB1aVdlYlZpZXcuZ2V0KCkuYWxsb3dzSW5saW5lTWVkaWFQbGF5YmFjayA9IE5P
OworICAgIFdlYlByZWZlcmVuY2VzICpwcmVmZXJlbmNlcyA9IFtXZWJQcmVmZXJlbmNlcyBzdGFu
ZGFyZFByZWZlcmVuY2VzXTsKKyAgICBwcmVmZXJlbmNlcy5tZWRpYURhdGFMb2Fkc0F1dG9tYXRp
Y2FsbHkgPSBZRVM7CisKKyAgICBSZXRhaW5QdHI8VmlkZW9GdWxsc2NyZWVuU3RyZXNzVUlXZWJW
aWV3RGVsZWdhdGU+IHVpRGVsZWdhdGUgPSBhZG9wdE5TKFtbVmlkZW9GdWxsc2NyZWVuU3RyZXNz
VUlXZWJWaWV3RGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICB1aVdlYlZpZXcuZ2V0KCkuZGVs
ZWdhdGUgPSB1aURlbGVnYXRlLmdldCgpOworCisgICAgW3VpV2ViVmlldyBsb2FkUmVxdWVzdDpb
TlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9y
UmVzb3VyY2U6QCJ0d28tdmlkZW9zIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5
OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV1dOworCisgICAgVXRpbDo6cnVuKCZkaWRGaW5p
c2hMb2FkKTsKKyAgICBVdGlsOjpydW4oJmdvdE1haW5GcmFtZSk7CisKKyAgICBjYWxsT25NYWlu
VGhyZWFkQW5kV2FpdChbJl0gKCkgbXV0YWJsZSB7CisgICAgICAgIFttYWluRnJhbWUgc2V0VGlt
ZW91dHNQYXVzZWQ6WUVTXTsKKyAgICAgICAgRE9NSFRNTE1lZGlhRWxlbWVudCogdmlkZW8xID0g
KERPTUhUTUxNZWRpYUVsZW1lbnQqKVtbbWFpbkZyYW1lIERPTURvY3VtZW50XSBnZXRFbGVtZW50
QnlJZDpAInZpZGVvMSJdOworICAgICAgICBET01IVE1MTWVkaWFFbGVtZW50KiB2aWRlbzIgPSAo
RE9NSFRNTE1lZGlhRWxlbWVudCopW1ttYWluRnJhbWUgRE9NRG9jdW1lbnRdIGdldEVsZW1lbnRC
eUlkOkAidmlkZW8yIl07CisgICAgICAgIFt2aWRlbzEgYWRkRXZlbnRMaXN0ZW5lcjpAImNhbnBs
YXl0aHJvdWdoIiBsaXN0ZW5lcjp1aURlbGVnYXRlLmdldCgpIHVzZUNhcHR1cmU6Tk9dOworICAg
ICAgICBbdmlkZW8yIGFkZEV2ZW50TGlzdGVuZXI6QCJjYW5wbGF5dGhyb3VnaCIgbGlzdGVuZXI6
dWlEZWxlZ2F0ZS5nZXQoKSB1c2VDYXB0dXJlOk5PXTsKKyAgICAgICAgW3ZpZGVvMSBzZXRTcmM6
QCJ2aWRlby13aXRoLWF1ZGlvLm1wNCJdOworICAgICAgICBbdmlkZW8yIHNldFNyYzpAInZpZGVv
LXdpdGhvdXQtYXVkaW8ubXA0Il07CisgICAgICAgIFttYWluRnJhbWUgc2V0VGltZW91dHNQYXVz
ZWQ6Tk9dOworICAgIH0pOworCisgICAgLy8gV2FpdCB1bnRpbCBib3RoIHZpZGVvIGVsZW1lbnRz
IGFyZSByZWFkeSB0byBwbGF5CisgICAgVXRpbDo6cnVuKCZyZWFkeVRvVGVzdCk7CisKKyAgICBm
b3IgKGludCBpID0gMDsgaSA8IDU7IGkrKykgeworICAgICAgICBjYWxsT25NYWluVGhyZWFkQW5k
V2FpdChbJl0gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBbbWFpbkZyYW1lIHNldFRpbWVvdXRz
UGF1c2VkOllFU107CisgICAgICAgICAgICBET01IVE1MTWVkaWFFbGVtZW50KiB2aWRlbzEgPSAo
RE9NSFRNTE1lZGlhRWxlbWVudCopW1ttYWluRnJhbWUgRE9NRG9jdW1lbnRdIGdldEVsZW1lbnRC
eUlkOkAidmlkZW8xIl07CisgICAgICAgICAgICBbdmlkZW8xIHBsYXldOworICAgICAgICAgICAg
W21haW5GcmFtZSBzZXRUaW1lb3V0c1BhdXNlZDpOT107CisgICAgICAgIH0pOworICAgICAgICBV
dGlsOjpzbGVlcCgwLjUpOworCisgICAgICAgIGNhbGxPbk1haW5UaHJlYWRBbmRXYWl0KFsmXSAo
KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIFttYWluRnJhbWUgc2V0VGltZW91dHNQYXVzZWQ6WUVT
XTsKKyAgICAgICAgICAgIERPTUhUTUxNZWRpYUVsZW1lbnQqIHZpZGVvMiA9IChET01IVE1MTWVk
aWFFbGVtZW50KilbW21haW5GcmFtZSBET01Eb2N1bWVudF0gZ2V0RWxlbWVudEJ5SWQ6QCJ2aWRl
bzIiXTsKKyAgICAgICAgICAgIFt2aWRlbzIgcGxheV07CisgICAgICAgICAgICBbbWFpbkZyYW1l
IHNldFRpbWVvdXRzUGF1c2VkOk5PXTsKKyAgICAgICAgfSk7CisgICAgICAgIFV0aWw6OnNsZWVw
KDAuNSk7CisgICAgfQorfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRMZWdhY3kvaW9zL3R3by12aWRlb3MuaHRtbCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0TGVnYWN5L2lvcy90d28tdmlkZW9zLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOGRlYTY0ODg5NDg4NWQzZGJiOWZkMzhkMjZhM2U0ZmJiNDM5ODhhMAotLS0gL2Rldi9u
dWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0TGVnYWN5L2lvcy90d28t
dmlkZW9zLmh0bWwKQEAgLTAsMCArMSw5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8dmlkZW8gaWQ9InZpZGVvMSI+PC92aWRlbz4KKyAg
ICA8dmlkZW8gaWQ9InZpZGVvMiI+PC92aWRlbz4KKzwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="410728"
          type_id="1"
          status="+"
          setter="jer.noble"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395442</attachid>
            <date>2020-04-04 01:24:30 -0700</date>
            <delta_ts>2020-04-04 01:40:20 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-209680-20200404012429.patch</filename>
            <type>text/plain</type>
            <size>24042</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5NDE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjYyNjFkYzkxMzRhMGM3
OWFmZjFjMWE3NzMwZDU5NWY2YTg3MTUzYS4uMTE5ZGU1ZWNiN2U3MzkyYzY1Nzg2NzY0MTZkMGRk
OWMzNmI5Njk5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIwLTA0LTAzICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTiAocjI1OTA5
NSk6IEFTU0VSVElPTiBGQUlMRUQ6IG1fdmlkZW9GdWxsc2NyZWVuTW9kZSAhPSBWaWRlb0Z1bGxz
Y3JlZW5Nb2RlTm9uZSBzZWVuIHdpdGggVGVzdFdlYktpdEFQSS5XZWJLaXRMZWdhY3kuQXVkaW9T
ZXNzaW9uQ2F0ZWdvcnlJT1MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwOTY4MAorCisgICAgICAgIFJldmlld2VkIGJ5IEplciBOb2JsZS4KKworICAg
ICAgICBBUEkgdGVzdDogV2ViS2l0TGVnYWN5LlByZWVtcHRWaWRlb0Z1bGxzY3JlZW4KKworICAg
ICAgICBDYWxsIGZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSkg
cmlnaHQgYmVmb3JlIGNhbGxpbmcgdGhlCisgICAgICAgIGZ1bmN0aW9ucyBvZiBDaHJvbWVDbGll
bnQgdG8gbWFrZSBzdXJlIHRoZSBzdGF0ZSAobV92aWRlb0Z1bGxzY3JlZW5Nb2RlKQorICAgICAg
ICBoYXMgdGhlIGV4cGVjdGVkIHZhbHVlIHdoZW4gc29tZSBjYWxsYmFja3MgY29tZSBiYWNrIHRv
IHRoZSB2aWRlbyBlbGVtZW50LgorCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmRpc3BhdGNoRXZlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6ZXhpdEZ1bGxzY3JlZW4pOgorCisg
ICAgICAgIEFkZCBudWxsIHBvaW50ZXIgY2hlY2tpbmdzIHRvIGZpeCB0d28gY3Jhc2hlcyBmb3Vu
ZCBpbiBzdHJlc3MgdGVzdHMuCisgICAgICAgICogcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXJBVktpdC5tbToKKyAgICAgICAgKFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xs
ZXJDb250ZXh0OjpyZXF1ZXN0VmlkZW9Db250ZW50TGF5ZXIpOgorICAgICAgICAoVmlkZW9GdWxs
c2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnJldHVyblZpZGVvQ29udGVudExheWVyKToKKwogMjAy
MC0wNC0wMiAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgVHJh
dmVyc2UgZmxvYXQgZGVzY2VuZGFudHMgd2hlbiBjb21wdXRpbmcgZXZlbnQgYW5kIHRvdWNoLWFj
dGlvbiByZWdpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggYTE0MGI5NjI0Y2Fl
OGFlMGI3ZmIxNGRmMjRkZmQ2MTM5ZTdiZGM5Mi4uMTQxMzc4NDI1YzZiYTJmZTM4NjY3N2MwZjQz
YmZjMDUxNzM4NTMwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3
IEBACisyMDIwLTA0LTAzICBQZW5nIExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAg
ICAgUkVHUkVTU0lPTiAocjI1OTA5NSk6IEFTU0VSVElPTiBGQUlMRUQ6IG1fdmlkZW9GdWxsc2Ny
ZWVuTW9kZSAhPSBWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSBzZWVuIHdpdGggVGVzdFdlYktpdEFQ
SS5XZWJLaXRMZWdhY3kuQXVkaW9TZXNzaW9uQ2F0ZWdvcnlJT1MKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTY4MAorCisgICAgICAgIFJldmlld2Vk
IGJ5IEplciBOb2JsZS4KKworICAgICAgICBXaXRoIHRoaXMgcGF0Y2gsIHRoZSBXZWJLaXQtTGVn
YWN5IGNhbiBzdXBwb3J0IG11bHRpcGxlIHZpZGVvIGVsZW1lbnRzIHJlcXVlc3QKKyAgICAgICAg
dG8gZW50ZXIgdmlkZW8gZnVsbHNjcmVlbiBhbG1vc3QgYXQgdGhlIHNhbWUgdGltZSwgYW5kIG9u
bHkgdGhlIGxhc3Qgb25lIHdpbGwgc3VjY2VlZC4KKyAgICAgICAgQWxzbywgdGhpcyBwYXRjaCBm
aXhlcyB3ZWJraXQub3JnL2IvMjA5NjEwIGZvciBXZWJLaXQtTGVnYWN5LgorCisgICAgICAgICog
V2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlld0RhdGEuaDoKKwog
MjAyMC0wNC0wMSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVt
b3ZlIGFsbCB1c2VzIG9mIGxpdmUgcmFuZ2VzIGZyb20gVGV4dEl0ZXJhdG9yCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCBkNzVjNDgwNWZiZmMxZjI3YWY4MTdi
MTdlOGI1NTkwYmM4YjY5YmI3Li5jYjNmMDQzMjliMTBjOWRhMDMzNDdmMjg0N2M1M2Q3YjY3YzJj
MWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTU4OTUs
OCArNTg5NSwxMCBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpc3BhdGNoRXZlbnQoRXZlbnQm
IGV2ZW50KQogICAgIC8vIFdlIG5lZWQgdG8gZmlyZSB0aGUgZW5kIGZ1bGxzY3JlZW4gZXZlbnQg
dG8gbm90aWZ5IHRoZSBwYWdlCiAgICAgLy8gdG8gY2hhbmdlIHRoZSBwb3NpdGlvbi9zaXplIGJh
Y2sgKmJlZm9yZSogZXhpdGluZyBmdWxsc2NyZWVuLgogICAgIC8vIE90aGVyd2lzZSwgdGhlIGV4
aXQgZnVsbHNjcmVlbiBhbmltYXRpb24gd2lsbCBiZSBpbmNvcnJlY3QuCi0gICAgaWYgKCFtX3Zp
ZGVvRnVsbHNjcmVlblN0YW5kYnkgJiYgZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS53ZWJr
aXRlbmRmdWxsc2NyZWVuRXZlbnQpCisgICAgaWYgKCFtX3ZpZGVvRnVsbHNjcmVlblN0YW5kYnkg
JiYgZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS53ZWJraXRlbmRmdWxsc2NyZWVuRXZlbnQp
IHsKKyAgICAgICAgZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKFZpZGVvRnVsbHNjcmVlbk1vZGVOb25l
KTsKICAgICAgICAgZG9jdW1lbnQoKS5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgpLmV4aXRWaWRl
b0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQoZG93bmNhc3Q8SFRNTFZpZGVvRWxlbWVudD4oKnRo
aXMpKTsKKyAgICB9CiB9CiAKIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6YWRkRXZlbnRMaXN0ZW5l
cihjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIFJlZjxFdmVudExpc3RlbmVyPiYmIGxpc3Rl
bmVyLCBjb25zdCBBZGRFdmVudExpc3RlbmVyT3B0aW9ucyYgb3B0aW9ucykKQEAgLTYxMTgsNyAr
NjEyMCw2IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZXhpdEZ1bGxzY3JlZW4oKQogCiAgICAg
QVNTRVJUKG1fdmlkZW9GdWxsc2NyZWVuTW9kZSAhPSBWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSk7
CiAgICAgVmlkZW9GdWxsc2NyZWVuTW9kZSBvbGRWaWRlb0Z1bGxzY3JlZW5Nb2RlID0gbV92aWRl
b0Z1bGxzY3JlZW5Nb2RlOwotICAgIGZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlTm9uZSk7CiAjaWYgRU5BQkxFKE1FRElBX0NPTlRST0xTX1NDUklQVCkKICAgICBSZWY8
SFRNTE1lZGlhRWxlbWVudD4gcHJvdGVjdGVkVGhpcygqdGhpcyk7IC8vIHVwZGF0ZU1lZGlhQ29u
dHJvbHNBZnRlclByZXNlbnRhdGlvbk1vZGVDaGFuZ2UgY2FsbHMgbWV0aG9kcyB0aGF0IGNhbiB0
cmlnZ2VyIGFyYml0cmFyeSBET00gbXV0YXRpb25zLgogICAgIHVwZGF0ZU1lZGlhQ29udHJvbHNB
ZnRlclByZXNlbnRhdGlvbk1vZGVDaGFuZ2UoKTsKQEAgLTYxNDEsMTMgKzYxNDIsMTcgQEAgdm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjpleGl0RnVsbHNjcmVlbigpCiAgICAgfQogCiAjaWYgUExBVEZP
Uk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpCi0gICAgaWYgKGRvY3Vt
ZW50KCkuYWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZCgpIHx8IGRvY3VtZW50KCkuYWN0aXZl
RE9NT2JqZWN0c0FyZVN0b3BwZWQoKSkKKyAgICBpZiAoZG9jdW1lbnQoKS5hY3RpdmVET01PYmpl
Y3RzQXJlU3VzcGVuZGVkKCkgfHwgZG9jdW1lbnQoKS5hY3RpdmVET01PYmplY3RzQXJlU3RvcHBl
ZCgpKSB7CisgICAgICAgIGZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChWaWRlb0Z1bGxzY3JlZW5Nb2Rl
Tm9uZSk7CiAgICAgICAgIGRvY3VtZW50KCkucGFnZSgpLT5jaHJvbWUoKS5jbGllbnQoKS5leGl0
VmlkZW9GdWxsc2NyZWVuVG9Nb2RlV2l0aG91dEFuaW1hdGlvbihkb3duY2FzdDxIVE1MVmlkZW9F
bGVtZW50PigqdGhpcyksIFZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKTsKKyAgICB9CiAgICAgZWxz
ZQogI2VuZGlmCiAgICAgaWYgKGRvY3VtZW50KCkucGFnZSgpLT5jaHJvbWUoKS5jbGllbnQoKS5z
dXBwb3J0c1ZpZGVvRnVsbHNjcmVlbihvbGRWaWRlb0Z1bGxzY3JlZW5Nb2RlKSkgewotICAgICAg
ICBpZiAobV92aWRlb0Z1bGxzY3JlZW5TdGFuZGJ5KQorICAgICAgICBpZiAobV92aWRlb0Z1bGxz
Y3JlZW5TdGFuZGJ5KSB7CisgICAgICAgICAgICBmdWxsc2NyZWVuTW9kZUNoYW5nZWQoVmlkZW9G
dWxsc2NyZWVuTW9kZU5vbmUpOwogICAgICAgICAgICAgZG9jdW1lbnQoKS5wYWdlKCktPmNocm9t
ZSgpLmNsaWVudCgpLmVudGVyVmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50KGRvd25jYXN0
PEhUTUxWaWRlb0VsZW1lbnQ+KCp0aGlzKSwgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlLCBtX3ZpZGVv
RnVsbHNjcmVlblN0YW5kYnkpOworICAgICAgICB9CiAKICAgICAgICAgc2NoZWR1bGVFdmVudChl
dmVudE5hbWVzKCkud2Via2l0ZW5kZnVsbHNjcmVlbkV2ZW50KTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxl
ckFWS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVl
bkNvbnRyb2xsZXJBVktpdC5tbQppbmRleCA4YWYzYjVjNTUxNTRkNmFmYTUyNGVlODE2MTFiOTE2
YmM4YTc5MzI1Li5lMWFhMjY2MTZhOWVmN2EyNDI1NDk5NzRmNjg5YjgxZDM4ZmQ4NzM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29u
dHJvbGxlckFWS2l0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRl
b0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0KQEAgLTI2MCw2ICsyNjAsOSBAQCB2b2lkIFZp
ZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpyZXF1ZXN0VmlkZW9Db250ZW50TGF5ZXIo
KQogICAgICAgICBbdmlkZW9GdWxsc2NyZWVuTGF5ZXIgc2V0QmFja2dyb3VuZENvbG9yOmNhY2hl
ZENHQ29sb3IoV2ViQ29yZTo6Q29sb3I6OnRyYW5zcGFyZW50KV07CiAgICAgICAgIG1fZnVsbHNj
cmVlbk1vZGVsLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcih2aWRlb0Z1bGxzY3JlZW5MYXllci5n
ZXQoKSwgW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCB0aGlzXSAoKSBt
dXRhYmxlIHsKICAgICAgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1
ZXVlKCksIFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgdGhpc10gewor
ICAgICAgICAgICAgICAgIGlmICghbV9pbnRlcmZhY2UpCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKKwogICAgICAgICAgICAgICAgIG1faW50ZXJmYWNlLT5zZXRIYXNWaWRlb0NvbnRlbnRM
YXllcih0cnVlKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsKQEAgLTI3Nyw2ICsyODAs
OSBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpyZXR1cm5WaWRlb0Nv
bnRlbnRMYXllcigpCiAgICAgICAgIFt2aWRlb0Z1bGxzY3JlZW5MYXllciBzZXRCYWNrZ3JvdW5k
Q29sb3I6Y2FjaGVkQ0dDb2xvcihXZWJDb3JlOjpDb2xvcjo6dHJhbnNwYXJlbnQpXTsKICAgICAg
ICAgbV9mdWxsc2NyZWVuTW9kZWwtPnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKG5pbCwgW3Byb3Rl
Y3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCB0aGlzXSAoKSBtdXRhYmxlIHsKICAg
ICAgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90
ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgdGhpc10geworICAgICAgICAgICAg
ICAgIGlmICghbV9pbnRlcmZhY2UpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKwogICAg
ICAgICAgICAgICAgIG1faW50ZXJmYWNlLT5zZXRIYXNWaWRlb0NvbnRlbnRMYXllcihmYWxzZSk7
CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggYzM1OTUyMWM2ZGRjNzdmNjZhMTM1NmNhYTE5MWY2NTg3
MDNlZmRhOS4uMGE1ZmM5NGUyNzcxMDE4MGMxZjJhNWE1NmJlMDBmNmVkNTQ4MGVmMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtOTMzMSwxMiArOTMz
MSwxMSBAQCAtICh2b2lkKV9lbnRlclZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudDooTmFr
ZWRQdHI8V2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudAogCiAgICAgICAgIC8vIEZpcnN0IGV4aXQg
RnVsbHNjcmVlbiBmb3IgdGhlIG9sZCB2aWRlb0VsZW1lbnQuCiAgICAgICAgIFtfcHJpdmF0ZS0+
ZnVsbHNjcmVlbkNvbnRyb2xsZXIgdmlkZW9FbGVtZW50XS0+ZXhpdEZ1bGxzY3JlZW4oKTsKLSAg
ICAgICAgLy8gVGhpcyBwcmV2aW91cyBjYWxsIGhhcyB0byB0cmlnZ2VyIF9leGl0RnVsbHNjcmVl
biwKLSAgICAgICAgLy8gd2hpY2ggaGFzIHRvIGNsZWFyIF9wcml2YXRlLT5mdWxsc2NyZWVuQ29u
dHJvbGxlci4KLSAgICAgICAgQVNTRVJUKCFfcHJpdmF0ZS0+ZnVsbHNjcmVlbkNvbnRyb2xsZXIp
OworICAgICAgICBfcHJpdmF0ZS0+ZnVsbHNjcmVlbkNvbnRyb2xsZXJzRXhpdGluZy5hcHBlbmQo
c3RkOjpleGNoYW5nZShfcHJpdmF0ZS0+ZnVsbHNjcmVlbkNvbnRyb2xsZXIsIG5pbCkpOwogICAg
IH0KKwogICAgIGlmICghX3ByaXZhdGUtPmZ1bGxzY3JlZW5Db250cm9sbGVyKSB7Ci0gICAgICAg
IF9wcml2YXRlLT5mdWxsc2NyZWVuQ29udHJvbGxlciA9IFtbV2ViVmlkZW9GdWxsc2NyZWVuQ29u
dHJvbGxlciBhbGxvY10gaW5pdF07CisgICAgICAgIF9wcml2YXRlLT5mdWxsc2NyZWVuQ29udHJv
bGxlciA9IGFkb3B0TlMoW1tXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIGFsbG9jXSBpbml0
XSk7CiAgICAgICAgIFtfcHJpdmF0ZS0+ZnVsbHNjcmVlbkNvbnRyb2xsZXIgc2V0VmlkZW9FbGVt
ZW50OnZpZGVvRWxlbWVudF07CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgW19w
cml2YXRlLT5mdWxsc2NyZWVuQ29udHJvbGxlciBlbnRlckZ1bGxzY3JlZW46KFVJVmlldyAqKVtb
W3NlbGYgd2luZG93XSBob3N0TGF5ZXJdIGRlbGVnYXRlXSBtb2RlOm1vZGVdOwpAQCAtOTM1MCwx
MSArOTM0OSwyMSBAQCAtICh2b2lkKV9lbnRlclZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVu
dDooTmFrZWRQdHI8V2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudAogCiAtICh2b2lkKV9leGl0Vmlk
ZW9GdWxsc2NyZWVuCiB7Ci0gICAgaWYgKCFfcHJpdmF0ZS0+ZnVsbHNjcmVlbkNvbnRyb2xsZXIp
CisgICAgaWYgKCFfcHJpdmF0ZS0+ZnVsbHNjcmVlbkNvbnRyb2xsZXIgJiYgX3ByaXZhdGUtPmZ1
bGxzY3JlZW5Db250cm9sbGVyc0V4aXRpbmcuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBpZiAoIV9wcml2YXRlLT5mdWxsc2NyZWVuQ29udHJvbGxlcnNFeGl0aW5nLmlzRW1wdHko
KSkgeworICAgICAgICBhdXRvIGNvbnRyb2xsZXIgPSBfcHJpdmF0ZS0+ZnVsbHNjcmVlbkNvbnRy
b2xsZXJzRXhpdGluZy5maXJzdCgpOworICAgICAgICBfcHJpdmF0ZS0+ZnVsbHNjcmVlbkNvbnRy
b2xsZXJzRXhpdGluZy5yZW1vdmUoMCk7CisKKyAgICAgICAgW2NvbnRyb2xsZXIgZXhpdEZ1bGxz
Y3JlZW5dOwogICAgICAgICByZXR1cm47Ci0gICAgW19wcml2YXRlLT5mdWxsc2NyZWVuQ29udHJv
bGxlciBleGl0RnVsbHNjcmVlbl07Ci0gICAgW19wcml2YXRlLT5mdWxsc2NyZWVuQ29udHJvbGxl
ciByZWxlYXNlXTsKKyAgICB9CisKKyAgICBhdXRvIGZ1bGxzY3JlZW5Db250cm9sbGVyID0gX3By
aXZhdGUtPmZ1bGxzY3JlZW5Db250cm9sbGVyOwogICAgIF9wcml2YXRlLT5mdWxsc2NyZWVuQ29u
dHJvbGxlciA9IG5pbDsKKworICAgIFtmdWxsc2NyZWVuQ29udHJvbGxlciBleGl0RnVsbHNjcmVl
bl07CiB9CiAKICNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05f
TU9ERSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmll
d0RhdGEuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEuaApp
bmRleCBlMmZkZTQ1NjU2MzY4Y2Q0ZGMyYzZkMGVmNGZiNjVhMmJhMzIxNDExLi5mZTk4MzliYWM0
NzQ5MWExNDNiYTY4YmU3YzliYjY1MGFmZDUwN2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5oCkBAIC0zMTYsMTEgKzMxNiwxMiBAQCBwcml2YXRl
OgogICAgIE5TUGFzdGVib2FyZCAqaW5zZXJ0aW9uUGFzdGVib2FyZDsKICAgICBSZXRhaW5QdHI8
TlNJbWFnZT4gX21haW5GcmFtZUljb247CiAjZW5kaWYKLSAgICAgICAgICAgIAorCiAgICAgTlNT
aXplIGxhc3RMYXlvdXRTaXplOwogCiAjaWYgRU5BQkxFKFZJREVPKQotICAgIFdlYlZpZGVvRnVs
bHNjcmVlbkNvbnRyb2xsZXIgKmZ1bGxzY3JlZW5Db250cm9sbGVyOworICAgIFJldGFpblB0cjxX
ZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyPiBmdWxsc2NyZWVuQ29udHJvbGxlcjsKKyAgICBW
ZWN0b3I8UmV0YWluUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXI+PiBmdWxsc2NyZWVu
Q29udHJvbGxlcnNFeGl0aW5nOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpICYmIEVOQUJM
RShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCAzYWU4ZDRhOWYzMGM0YzEwYWFkMmYwNjk4ZDIyNDZiNzhk
NmE0NzVkLi5jY2VmY2U5NzAwMjZmN2M0NDVhNzA2YjBiMGJlYzdmOTUzMWY4ODhkIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAg
QEAKKzIwMjAtMDQtMDMgIFBlbmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KKworICAgICAg
ICBSRUdSRVNTSU9OIChyMjU5MDk1KTogQVNTRVJUSU9OIEZBSUxFRDogbV92aWRlb0Z1bGxzY3Jl
ZW5Nb2RlICE9IFZpZGVvRnVsbHNjcmVlbk1vZGVOb25lIHNlZW4gd2l0aCBUZXN0V2ViS2l0QVBJ
LldlYktpdExlZ2FjeS5BdWRpb1Nlc3Npb25DYXRlZ29yeUlPUworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5NjgwCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgSmVyIE5vYmxlLgorCisgICAgICAgIEFkZCBhbiBBUEkgdGVzdCBmb3IgdGhlIHZpZGVvIGZ1
bGxzY3JlZW4gc3VwcG9ydCBvZiBXZWJLaXRMZWdhY3kgb24gaU9TLgorCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRMZWdhY3kvaW9zL1ByZWVtcHRWaWRlb0Z1
bGxzY3JlZW4ubW06IEFkZGVkLgorICAgICAgICAoLVtWaWRlb0Z1bGxzY3JlZW5TdHJlc3NVSVdl
YlZpZXdEZWxlZ2F0ZSB3ZWJWaWV3RGlkRmluaXNoTG9hZDpdKToKKyAgICAgICAgKC1bVmlkZW9G
dWxsc2NyZWVuU3RyZXNzVUlXZWJWaWV3RGVsZWdhdGUgdWlXZWJWaWV3OmRpZENvbW1pdExvYWRG
b3JGcmFtZTpdKToKKyAgICAgICAgKC1bVmlkZW9GdWxsc2NyZWVuU3RyZXNzVUlXZWJWaWV3RGVs
ZWdhdGUgaGFuZGxlRXZlbnQ6XSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdExlZ2FjeS9pb3MvdHdvLXZpZGVvcy5o
dG1sOiBBZGRlZC4KKwogMjAyMC0wNC0wMiAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIyMzQ2ODUpOiBMZWFrIG9mIENBTGF5ZXIgaW4g
Y3JlYXRlQ29yZUFuaW1hdGlvbkxheWVyKCkgaW4gUGx1Z2luT2JqZWN0TWFjLm1tCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IGI2NTIxY2M2OTBjNDIyYjEwMjE5NWQ5MTU3ZWRlNGZjZThmMWQz
ZjcuLjlhMGYzNDM0ZjYyNjg2ODAyYjVjOGY0MDA1YTE2YzNiZTI1YWFhM2YgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0xMTMsNiArMTEzLDggQEAKIAkJMUNGNTlBRTIyMUU2ODkyNTAwNkUz
N0VDIC8qIEZvcmNlTGlnaHRBcHBlYXJhbmNlSW5CdW5kbGVfQnVuZGxlLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNGNTlBRTAyMUU2ODkyNTAwNkUz
N0VDIC8qIEZvcmNlTGlnaHRBcHBlYXJhbmNlSW5CdW5kbGVfQnVuZGxlLm1tICovOyB9OwogCQkx
Q0Y1OUFFMzIxRTY4OTMyMDA2RTM3RUMgLyogRm9yY2VMaWdodEFwcGVhcmFuY2VJbkJ1bmRsZS5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDRjU5QURG
MjFFNjg5MjUwMDZFMzdFQyAvKiBGb3JjZUxpZ2h0QXBwZWFyYW5jZUluQnVuZGxlLm1tICovOyB9
OwogCQkxQ0Y1OUFFNTIxRTY5NzdEMDA2RTM3RUMgLyogZGFyay1tb2RlLmh0bWwgaW4gQ29weSBS
ZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNGNTlBRTQyMUU2
OTZGQjAwNkUzN0VDIC8qIGRhcmstbW9kZS5odG1sICovOyB9OworCQkxRDY3QkZEQzI0MzNFMEE3
MDA2QjUwNDcgLyogUHJlZW1wdFZpZGVvRnVsbHNjcmVlbi5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFENjdCRkRCMjQzM0UwQTcwMDZCNTA0NyAvKiBQ
cmVlbXB0VmlkZW9GdWxsc2NyZWVuLm1tICovOyB9OworCQkxRDY3QkZERDI0MzNFRTY2MDA2QjUw
NDcgLyogdHdvLXZpZGVvcy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFENjdCRkQ5MjQzM0RGRDgwMDZCNTA0NyAvKiB0d28tdmlkZW9z
Lmh0bWwgKi87IH07CiAJCTFGODM1NzFCMUQzRkZCMjMwMEUzOTY3QiAvKiBXS0JhY2tGb3J3YXJk
TGlzdC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFG
ODM1NzFBMUQzRkZCMEUwMEUzOTY3QiAvKiBXS0JhY2tGb3J3YXJkTGlzdC5tbSAqLzsgfTsKIAkJ
MjZERjVBNjMxNUEyQTI3RTAwMzY4OUMyIC8qIENhbmNlbExvYWRGcm9tUmVzb3VyY2VMb2FkRGVs
ZWdhdGUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyNkRGNUE2MTE1QTJBMjJCMDAzNjg5QzIgLyogQ2FuY2VsTG9hZEZyb21SZXNvdXJj
ZUxvYWREZWxlZ2F0ZS5odG1sICovOyB9OwogCQkyNkY1MkVBRDE4Mjg4MjdCMDAyM0Q0MTIgLyog
Z2VvbG9jYXRpb25HZXRDdXJyZW50UG9zaXRpb24uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNkY1MkVBQzE4Mjg4MjBFMDAyM0Q0MTIg
LyogZ2VvbG9jYXRpb25HZXRDdXJyZW50UG9zaXRpb24uaHRtbCAqLzsgfTsKQEAgLTE1MTQsNiAr
MTUxNiw3IEBACiAJCQkJRjQxQUI5QUExRUY0Njk2QjAwODNGQTA4IC8qIHRleHRhcmVhLXRvLWlu
cHV0Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJQzIyRkEzMkQyMjhGOEFFQjAwOUQ3
OTg4IC8qIFRleHRXaWR0aC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUY0NDUxQzc2
MUVCOEZEODkwMDIwQzVEQSAvKiB0d28tcGFyYWdyYXBoLWNvbnRlbnRlZGl0YWJsZS5odG1sIGlu
IENvcHkgUmVzb3VyY2VzICovLAorCQkJCTFENjdCRkREMjQzM0VFNjYwMDZCNTA0NyAvKiB0d28t
dmlkZW9zLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJQzU0MEY3ODQxNTJFNUE5QTAw
QTQwQzhDIC8qIHZlcmJvc2VNYXJrdXAuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlD
RDU3Nzc5RDIxMUNFOTFGMDAxQjM3MUUgLyogdmlkZW8td2l0aC1hdWRpby1hbmQtd2ViLWF1ZGlv
Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJQ0RDOEU0OTQxQkM2RjEwODAwNTk0RkVD
IC8qIHZpZGVvLXdpdGgtYXVkaW8uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKQEAgLTE2NjAs
NiArMTY2Myw4IEBACiAJCTFDRjU5QURGMjFFNjg5MjUwMDZFMzdFQyAvKiBGb3JjZUxpZ2h0QXBw
ZWFyYW5jZUluQnVuZGxlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gRm9yY2VMaWdodEFwcGVhcmFuY2VJbkJ1bmRsZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMUNGNTlBRTAyMUU2ODkyNTAwNkUzN0VDIC8qIEZvcmNlTGlnaHRBcHBlYXJhbmNl
SW5CdW5kbGVfQnVuZGxlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gRm9yY2VMaWdodEFwcGVhcmFuY2VJbkJ1bmRsZV9CdW5kbGUubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTFDRjU5QUU0MjFFNjk2RkIwMDZFMzdFQyAvKiBkYXJrLW1vZGUuaHRt
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJkYXJrLW1vZGUuaHRtbCI7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTFENjdCRkQ5MjQzM0RGRDgwMDZCNTA0NyAvKiB0d28tdmlk
ZW9zLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAidHdvLXZpZGVvcy5odG1sIjsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUQ2N0JGREIyNDMzRTBBNzAwNkI1MDQ3IC8q
IFByZWVtcHRWaWRlb0Z1bGxzY3JlZW4ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQcmVlbXB0
VmlkZW9GdWxsc2NyZWVuLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxRjgzNTcx
QTFEM0ZGQjBFMDBFMzk2N0IgLyogV0tCYWNrRm9yd2FyZExpc3QubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXS0JhY2tGb3J3YXJkTGlzdC5tbTsgcGF0aCA9IFRl
c3RzL1dlYktpdC9XS0JhY2tGb3J3YXJkTGlzdC5tbTsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09U
OyB9OwogCQkyNjBCQTU3ODFCMUQyRTdCMDA0RkEwN0MgLyogREZBQ29tYmluZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gREZBQ29tYmluZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkyNjBCQTU3QTFCMUQyRUUyMDA0RkEwN0MgLyogREZBSGVs
cGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBERkFIZWxwZXJzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MzE4LDYgKzQzMjMsNyBAQAogCQkJCUNEQzhF
NDlBMUJDNzI4RkUwMDU5NEZFQyAvKiBSZXNvdXJjZXMgKi8sCiAJCQkJQ0RDOEU0ODUxQkM1QjE5
NDAwNTk0RkVDIC8qIEF1ZGlvU2Vzc2lvbkNhdGVnb3J5SU9TLm1tICovLAogCQkJCUUzNUZDN0Ix
MjJCODJBNkQwMEYzMkY5OCAvKiBKU0xvY2tUYWtlc1dlYlRocmVhZExvY2subW0gKi8sCisJCQkJ
MUQ2N0JGREIyNDMzRTBBNzAwNkI1MDQ3IC8qIFByZWVtcHRWaWRlb0Z1bGxzY3JlZW4ubW0gKi8s
CiAJCQkJQ0RDMDkzMkEyMUM4NzJDMTAwMzBDNEIwIC8qIFNjcm9sbGluZ0RvZXNOb3RQYXVzZU1l
ZGlhLm1tICovLAogCQkJCUY0MzRDQTE5MjJFNjVCQ0EwMDVEREIyNiAvKiBTY3JvbGxUb1JldmVh
bFNlbGVjdGlvbi5tbSAqLywKIAkJCQkwRjRGRkE5RDFFRDNBQTg1MDBGNzExMUYgLyogU25hcHNo
b3RWaWFSZW5kZXJJbkNvbnRleHQubW0gKi8sCkBAIC00MzI5LDYgKzQzMzUsNyBAQAogCQkJaXNh
ID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQlDRDlFMjkyRDFDOTBDMUJBMDAwQkI4
MDAgLyogYXVkaW8tb25seS5odG1sICovLAorCQkJCTFENjdCRkQ5MjQzM0RGRDgwMDZCNTA0NyAv
KiB0d28tdmlkZW9zLmh0bWwgKi8sCiAJCQkJQ0RDOEU0ODkxQkM1Qzk2MjAwNTk0RkVDIC8qIHZp
ZGVvLXdpdGgtYXVkaW8uaHRtbCAqLywKIAkJCQlDREM4RTQ4QTFCQzVDOTYyMDA1OTRGRUMgLyog
dmlkZW8td2l0aC1hdWRpby5tcDQgKi8sCiAJCQkJQ0QzMjFCMDMxRTNBODRCNzAwRUIyMUM4IC8q
IHZpZGVvLXdpdGgtbXV0ZWQtYXVkaW8tYW5kLXdlYmF1ZGlvLmh0bWwgKi8sCkBAIC00OTk0LDYg
KzUwMDEsNyBAQAogCQkJCTdDQ0U3RUE2MUE0MTFBMEYwMDQ0N0M0QyAvKiBQbGF0Zm9ybVV0aWxp
dGllc01hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUE3MUE0MTFBMTMwMDQ0N0M0QyAv
KiBQbGF0Zm9ybVdlYlZpZXdNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk4M0JBRUU4RDFFRjQ2
MjU1MDBEREU4OTQgLyogUGx1Z2luTG9hZENsaWVudFBvbGljaWVzLm1tIGluIFNvdXJjZXMgKi8s
CisJCQkJMUQ2N0JGREMyNDMzRTBBNzAwNkI1MDQ3IC8qIFByZWVtcHRWaWRlb0Z1bGxzY3JlZW4u
bW0gaW4gU291cmNlcyAqLywKIAkJCQlDMTVDQkIzRjIzRkIxNzdBMDAzMDBDQzcgLyogUHJlZmVy
ZW5jZUNoYW5nZXMubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0YyNjFBNDExQUY2MDA0NDdD
NEMgLyogUHJlZmVyZW5jZXMubW0gaW4gU291cmNlcyAqLywKIAkJCQlDRDIyN0U0NDIxMUE0RDVE
MDBEMjg1QUYgLyogUHJlZmVycmVkQXVkaW9CdWZmZXJTaXplLm1tIGluIFNvdXJjZXMgKi8sCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdExlZ2FjeS9pb3MvUHJl
ZW1wdFZpZGVvRnVsbHNjcmVlbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
TGVnYWN5L2lvcy9QcmVlbXB0VmlkZW9GdWxsc2NyZWVuLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE1ZGViYWFj
OGY4Zjc2YWRiN2Q4ZmNjOWVhOTUxODBkNDJiOWY0ZjUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdExlZ2FjeS9pb3MvUHJlZW1wdFZpZGVvRnVsbHNj
cmVlbi5tbQpAQCAtMCwwICsxLDEzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5o
IgorCisjaWYgSEFWRShVSVdFQlZJRVcpCisKKyNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgi
CisjaW1wb3J0IDxVSUtpdC9VSUtpdC5oPgorI2ltcG9ydCA8V2ViS2l0L0RPTUhUTUxNZWRpYUVs
ZW1lbnQuaD4KKyNpbXBvcnQgPFdlYktpdC9XZWJGcmFtZVByaXZhdGUuaD4KKyNpbXBvcnQgPFdl
YktpdExlZ2FjeS9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaD4KKyNpbXBvcnQgPHd0Zi9NYWluVGhy
ZWFkLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisKK3N0YXRpYyBib29sIGRpZEZpbmlz
aExvYWQgPSBmYWxzZTsKK3N0YXRpYyBib29sIGdvdE1haW5GcmFtZSA9IGZhbHNlOworc3RhdGlj
IFJldGFpblB0cjxXZWJGcmFtZT4gbWFpbkZyYW1lOworc3RhdGljIGludCBjb3VudE9mVmlkZW9F
bGVtZW50c0NhblBsYXkgPSAwOworc3RhdGljIGJvb2wgcmVhZHlUb1Rlc3QgPSBmYWxzZTsKK3N0
YXRpYyBpbnQgZnVsbHNjcmVlbkJlZ2luID0gMDsKK3N0YXRpYyBpbnQgZnVsbHNjcmVlbkVuZCA9
IDA7CitzdGF0aWMgYm9vbCBkb25lVGVzdCA9IGZhbHNlOworCitAaW50ZXJmYWNlIFByZWVtcHRW
aWRlb0Z1bGxzY3JlZW5VSVdlYlZpZXdEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxVSVdlYlZpZXdEZWxl
Z2F0ZSwgRE9NRXZlbnRMaXN0ZW5lcj4KK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFByZWVtcHRW
aWRlb0Z1bGxzY3JlZW5VSVdlYlZpZXdEZWxlZ2F0ZQorSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJk
ZXByZWNhdGVkLWltcGxlbWVudGF0aW9ucyIpCistICh2b2lkKXdlYlZpZXdEaWRGaW5pc2hMb2Fk
OihVSVdlYlZpZXcgKil3ZWJWaWV3Cit7CisgICAgZGlkRmluaXNoTG9hZCA9IHRydWU7Cit9CitJ
R05PUkVfV0FSTklOR1NfRU5ECisKKy0gKHZvaWQpdWlXZWJWaWV3OihVSVdlYlZpZXcgKilzZW5k
ZXIgZGlkQ29tbWl0TG9hZEZvckZyYW1lOihXZWJGcmFtZSAqKWZyYW1lCit7CisgICAgZ290TWFp
bkZyYW1lID0gdHJ1ZTsKKyAgICBtYWluRnJhbWUgPSBmcmFtZTsKK30KKworLSAodm9pZCloYW5k
bGVFdmVudDooRE9NRXZlbnQgKilldmVudAoreworICAgIGlmIChbZXZlbnQudHlwZSBpc0VxdWFs
VG9TdHJpbmc6QCJjYW5wbGF5dGhyb3VnaCJdKQorICAgICAgICBjb3VudE9mVmlkZW9FbGVtZW50
c0NhblBsYXkrKzsKKworICAgIGlmIChjb3VudE9mVmlkZW9FbGVtZW50c0NhblBsYXkgPT0gMikK
KyAgICAgICAgcmVhZHlUb1Rlc3QgPSB0cnVlOworCisgICAgaWYgKFtldmVudC50eXBlIGlzRXF1
YWxUb1N0cmluZzpAIndlYmtpdGJlZ2luZnVsbHNjcmVlbiJdKQorICAgICAgICBmdWxsc2NyZWVu
QmVnaW4rKzsKKworICAgIGlmIChbZXZlbnQudHlwZSBpc0VxdWFsVG9TdHJpbmc6QCJ3ZWJraXRl
bmRmdWxsc2NyZWVuIl0pCisgICAgICAgIGZ1bGxzY3JlZW5FbmQrKzsKKworICAgIGlmIChmdWxs
c2NyZWVuQmVnaW4gPT0gMiAmJiBmdWxsc2NyZWVuRW5kID09IDEpCisgICAgICAgIGRvbmVUZXN0
ID0gdHJ1ZTsKK30KK0BlbmQKKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitURVNUKFdl
YktpdExlZ2FjeSwgUHJlZW1wdFZpZGVvRnVsbHNjcmVlbikKK3sKKyAgICBSZXRhaW5QdHI8V2Vi
UHJlZmVyZW5jZXM+IHByZWZlcmVuY2VzID0gW1dlYlByZWZlcmVuY2VzIHN0YW5kYXJkUHJlZmVy
ZW5jZXNdOworICAgIHByZWZlcmVuY2VzLmdldCgpLm1lZGlhRGF0YUxvYWRzQXV0b21hdGljYWxs
eSA9IFlFUzsKKyAgICBwcmVmZXJlbmNlcy5nZXQoKS5tZWRpYVBsYXliYWNrQWxsb3dzSW5saW5l
ID0gTk87CisgICAgcHJlZmVyZW5jZXMuZ2V0KCkubWVkaWFQbGF5YmFja1JlcXVpcmVzVXNlckdl
c3R1cmUgPSBOTzsKKworICAgIFJldGFpblB0cjxVSVdpbmRvdz4gdWlXaW5kb3cgPSBhZG9wdE5T
KFtbVUlXaW5kb3cgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYw
MCldKTsKKyAgICBSZXRhaW5QdHI8VUlXZWJWaWV3PiB1aVdlYlZpZXcgPSBhZG9wdE5TKFtbVUlX
ZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7
CisgICAgW3VpV2luZG93IGFkZFN1YnZpZXc6dWlXZWJWaWV3LmdldCgpXTsKKworICAgIFJldGFp
blB0cjxQcmVlbXB0VmlkZW9GdWxsc2NyZWVuVUlXZWJWaWV3RGVsZWdhdGU+IHVpRGVsZWdhdGUg
PSBhZG9wdE5TKFtbUHJlZW1wdFZpZGVvRnVsbHNjcmVlblVJV2ViVmlld0RlbGVnYXRlIGFsbG9j
XSBpbml0XSk7CisgICAgdWlXZWJWaWV3LmdldCgpLmRlbGVnYXRlID0gdWlEZWxlZ2F0ZS5nZXQo
KTsKKworICAgIFt1aVdlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0
aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAidHdvLXZpZGVvcyIg
d2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3Vy
Y2VzIl1dXTsKKworICAgIFV0aWw6OnJ1bigmZGlkRmluaXNoTG9hZCk7CisgICAgVXRpbDo6cnVu
KCZnb3RNYWluRnJhbWUpOworCisgICAgY2FsbE9uTWFpblRocmVhZEFuZFdhaXQoWyZdICgpIG11
dGFibGUgeworICAgICAgICBbbWFpbkZyYW1lIHNldFRpbWVvdXRzUGF1c2VkOllFU107CisgICAg
ICAgIERPTUhUTUxNZWRpYUVsZW1lbnQqIHZpZGVvMSA9IChET01IVE1MTWVkaWFFbGVtZW50Kilb
W21haW5GcmFtZSBET01Eb2N1bWVudF0gZ2V0RWxlbWVudEJ5SWQ6QCJ2aWRlbzEiXTsKKyAgICAg
ICAgW3ZpZGVvMSBhZGRFdmVudExpc3RlbmVyOkAiY2FucGxheXRocm91Z2giIGxpc3RlbmVyOnVp
RGVsZWdhdGUuZ2V0KCkgdXNlQ2FwdHVyZTpOT107CisgICAgICAgIFt2aWRlbzEgYWRkRXZlbnRM
aXN0ZW5lcjpAIndlYmtpdGJlZ2luZnVsbHNjcmVlbiIgbGlzdGVuZXI6dWlEZWxlZ2F0ZS5nZXQo
KSB1c2VDYXB0dXJlOk5PXTsKKyAgICAgICAgW3ZpZGVvMSBhZGRFdmVudExpc3RlbmVyOkAid2Vi
a2l0ZW5kZnVsbHNjcmVlbiIgbGlzdGVuZXI6dWlEZWxlZ2F0ZS5nZXQoKSB1c2VDYXB0dXJlOk5P
XTsKKworICAgICAgICBET01IVE1MTWVkaWFFbGVtZW50KiB2aWRlbzIgPSAoRE9NSFRNTE1lZGlh
RWxlbWVudCopW1ttYWluRnJhbWUgRE9NRG9jdW1lbnRdIGdldEVsZW1lbnRCeUlkOkAidmlkZW8y
Il07CisgICAgICAgIFt2aWRlbzIgYWRkRXZlbnRMaXN0ZW5lcjpAImNhbnBsYXl0aHJvdWdoIiBs
aXN0ZW5lcjp1aURlbGVnYXRlLmdldCgpIHVzZUNhcHR1cmU6Tk9dOworICAgICAgICBbdmlkZW8y
IGFkZEV2ZW50TGlzdGVuZXI6QCJ3ZWJraXRiZWdpbmZ1bGxzY3JlZW4iIGxpc3RlbmVyOnVpRGVs
ZWdhdGUuZ2V0KCkgdXNlQ2FwdHVyZTpOT107CisKKyAgICAgICAgW3ZpZGVvMSBzZXRTcmM6QCJ2
aWRlby13aXRoLWF1ZGlvLm1wNCJdOworICAgICAgICBbdmlkZW8yIHNldFNyYzpAInZpZGVvLXdp
dGhvdXQtYXVkaW8ubXA0Il07CisgICAgICAgIFttYWluRnJhbWUgc2V0VGltZW91dHNQYXVzZWQ6
Tk9dOworICAgIH0pOworCisgICAgLy8gV2FpdCB1bnRpbCBib3RoIHZpZGVvIGVsZW1lbnRzIGFy
ZSByZWFkeSB0byBwbGF5LgorICAgIFV0aWw6OnJ1bigmcmVhZHlUb1Rlc3QpOworCisgICAgY2Fs
bE9uTWFpblRocmVhZEFuZFdhaXQoWyZdICgpIG11dGFibGUgeworICAgICAgICBET01IVE1MTWVk
aWFFbGVtZW50KiB2aWRlbzEgPSAoRE9NSFRNTE1lZGlhRWxlbWVudCopW1ttYWluRnJhbWUgRE9N
RG9jdW1lbnRdIGdldEVsZW1lbnRCeUlkOkAidmlkZW8xIl07CisgICAgICAgIERPTUhUTUxNZWRp
YUVsZW1lbnQqIHZpZGVvMiA9IChET01IVE1MTWVkaWFFbGVtZW50KilbW21haW5GcmFtZSBET01E
b2N1bWVudF0gZ2V0RWxlbWVudEJ5SWQ6QCJ2aWRlbzIiXTsKKyAgICAgICAgW3ZpZGVvMSBwbGF5
XTsKKyAgICAgICAgW3ZpZGVvMiBwbGF5XTsKKyAgICB9KTsKKworICAgIC8vIEV2ZW50dWFsbHks
IG9ubHkgb25lIHZpZGVvIHdpbGwgYmUgaW4gZnVsbHNjcmVlbi4KKyAgICBVdGlsOjpydW4oJmRv
bmVUZXN0KTsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0TGVnYWN5L2lvcy90d28tdmlkZW9zLmh0bWwgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdExlZ2FjeS9pb3MvdHdvLXZpZGVvcy5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmNkMWRmZGFhMTBkN2Y0NTkwZDZjMzAzNWU4NjQ0YzhiZjI2MTdmMDEKLS0tIC9kZXYvbnVsbAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdExlZ2FjeS9pb3MvdHdvLXZpZGVv
cy5odG1sCkBAIC0wLDAgKzEsOSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PC9oZWFkPgorPGJvZHk+CisgICAgPHZpZGVvIGlkPSJ2aWRlbzEiIGxvb3A+PC92aWRlbz4KKyAg
ICA8dmlkZW8gaWQ9InZpZGVvMiIgbG9vcD48L3ZpZGVvPgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IGMxYTVjYWUwNjUzMDM5MTg0YWFkNWQ5ZGY5M2MzOGY4YTM5MmIyNGIuLjNjNTZlMGVjOWZl
MjU2OGZkYTQ2MzkyNzBkZjc2MjI5MjgzNDg2ODggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAy
MC0wNC0wMyAgUGVuZyBMaXUgIDxwZW5nLmxpdTZAYXBwbGUuY29tPgorCisgICAgICAgIFJFR1JF
U1NJT04gKHIyNTkwOTUpOiBBU1NFUlRJT04gRkFJTEVEOiBtX3ZpZGVvRnVsbHNjcmVlbk1vZGUg
IT0gVmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUgc2VlbiB3aXRoIFRlc3RXZWJLaXRBUEkuV2ViS2l0
TGVnYWN5LkF1ZGlvU2Vzc2lvbkNhdGVnb3J5SU9TCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk2ODAKKworICAgICAgICBSZXZpZXdlZCBieSBKZXIg
Tm9ibGUuCisKKyAgICAgICAgUmVtb3ZlIHRoZSBjcmFzaGluZyBleHBlY3RhdGlvbiBmb3IgbWVk
aWEvbWVkaWEtZnVsbHNjcmVlbi1yZXR1cm4tdG8taW5saW5lLmh0bWwKKworICAgICAgICAqIHBs
YXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDIwLTA0LTAyICBEYW5pZWwgQmF0ZXMg
IDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBUcmF2ZXJzZSBmbG9hdCBkZXNjZW5kYW50
cyB3aGVuIGNvbXB1dGluZyBldmVudCBhbmQgdG91Y2gtYWN0aW9uIHJlZ2lvbnMKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggYThhM2U4N2UwNmZkZWUwNmIz
ZDE0NmYzMDk3YzhlNDBlZjY4MWEwNi4uMDk4NDczZGUyYmE3YWZlOTA0YTU4NDVlYjUxMTc3YTc4
NGI1N2FkMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3Rh
dGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKQEAg
LTE2NTUsNyArMTY1NSw3IEBAIHdlYmtpdC5vcmcvYi8xODk2ODAgcGxhdGZvcm0vbWFjL21lZGlh
L2F1ZGlvLXNlc3Npb24tY2F0ZWdvcnktdmlkZW8tcGF1c2VkLmh0bWwKIHdlYmtpdC5vcmcvYi8x
OTU0NjYgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJl
ZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3JlYWR5LXN0YXRlcy9hdXRvcGxheS5odG1sIFsg
UGFzcyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xOTU0NjYgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRz
L2Vycm9yLWNvZGVzL2Vycm9yLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCi13ZWJraXQub3JnL2Iv
MTkzMzk5IG1lZGlhL21lZGlhLWZ1bGxzY3JlZW4tcmV0dXJuLXRvLWlubGluZS5odG1sIFsgUGFz
cyBUaW1lb3V0IENyYXNoIF0KK3dlYmtpdC5vcmcvYi8xOTMzOTkgbWVkaWEvbWVkaWEtZnVsbHNj
cmVlbi1yZXR1cm4tdG8taW5saW5lLmh0bWwgWyBQYXNzIFRpbWVvdXQgXQogCiBodHRwL3Rlc3Rz
L3dlYnNvY2tldC90ZXN0cy9oeWJpL2hhbmRzaGFrZS1vay13aXRoLWxlZ2FjeS1zZWMtd2Vic29j
a2V0LXJlc3BvbnNlLWhlYWRlcnMuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395443</attachid>
            <date>2020-04-04 02:10:28 -0700</date>
            <delta_ts>2020-04-04 10:06:28 -0700</delta_ts>
            <desc>Patch for landing - v2</desc>
            <filename>bug-209680-20200404021027.patch</filename>
            <type>text/plain</type>
            <size>23503</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5NTI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWM0OGFkOGE2MDdjY2Y4
NmIyZGQwZmQ1YTNhYTFiNGY1NGNhMTBiYS4uZDNjNWRkYWQ5MjBiOGY5ZDM1OThjZjM0NTUyYmJi
ZWY5YmEzNDM4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIwLTA0LTAzICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTiAocjI1OTA5
NSk6IEFTU0VSVElPTiBGQUlMRUQ6IG1fdmlkZW9GdWxsc2NyZWVuTW9kZSAhPSBWaWRlb0Z1bGxz
Y3JlZW5Nb2RlTm9uZSBzZWVuIHdpdGggVGVzdFdlYktpdEFQSS5XZWJLaXRMZWdhY3kuQXVkaW9T
ZXNzaW9uQ2F0ZWdvcnlJT1MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwOTY4MAorCisgICAgICAgIFJldmlld2VkIGJ5IEplciBOb2JsZS4KKworICAg
ICAgICBBUEkgdGVzdDogV2ViS2l0TGVnYWN5LlByZWVtcHRWaWRlb0Z1bGxzY3JlZW4KKworICAg
ICAgICBDYWxsIGZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSkg
cmlnaHQgYmVmb3JlIGNhbGxpbmcgdGhlCisgICAgICAgIGZ1bmN0aW9ucyBvZiBDaHJvbWVDbGll
bnQgdG8gbWFrZSBzdXJlIHRoZSBzdGF0ZSAobV92aWRlb0Z1bGxzY3JlZW5Nb2RlKQorICAgICAg
ICBoYXMgdGhlIGV4cGVjdGVkIHZhbHVlIHdoZW4gc29tZSBjYWxsYmFja3MgY29tZSBiYWNrIHRv
IHRoZSB2aWRlbyBlbGVtZW50LgorCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmRpc3BhdGNoRXZlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6ZXhpdEZ1bGxzY3JlZW4pOgorCisg
ICAgICAgIEFkZCBudWxsIHBvaW50ZXIgY2hlY2tpbmdzIHRvIGZpeCB0d28gY3Jhc2hlcyBmb3Vu
ZCBpbiBzdHJlc3MgdGVzdHMuCisgICAgICAgICogcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXJBVktpdC5tbToKKyAgICAgICAgKFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xs
ZXJDb250ZXh0OjpyZXF1ZXN0VmlkZW9Db250ZW50TGF5ZXIpOgorICAgICAgICAoVmlkZW9GdWxs
c2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnJldHVyblZpZGVvQ29udGVudExheWVyKToKKwogMjAy
MC0wNC0wMyAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEJ1
aWxkIGZpeDogSFRNTEZvcm1FbGVtZW50IHNob3VsZCB1c2UgV2Vha1B0ciB0byBrZWVwIHRyYWNr
IG9mIGl0cyBGb3JtTmFtZWRJdGVtCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggMzk1
YzBlNDMzMjQzMzU3MGIyNGM5NGIxN2UwNjlkMDI4MTg1YWY5Yy4uNTEyYWY5MDExN2Q2YWVjMGRh
OTMwYzQ5YTdjNmU3Y2RhZjIyY2NkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE3IEBACisyMDIwLTA0LTAzICBQZW5nIExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+
CisKKyAgICAgICAgUkVHUkVTU0lPTiAocjI1OTA5NSk6IEFTU0VSVElPTiBGQUlMRUQ6IG1fdmlk
ZW9GdWxsc2NyZWVuTW9kZSAhPSBWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSBzZWVuIHdpdGggVGVz
dFdlYktpdEFQSS5XZWJLaXRMZWdhY3kuQXVkaW9TZXNzaW9uQ2F0ZWdvcnlJT1MKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTY4MAorCisgICAgICAg
IFJldmlld2VkIGJ5IEplciBOb2JsZS4KKworICAgICAgICBXaXRoIHRoaXMgcGF0Y2gsIHRoZSBX
ZWJLaXQtTGVnYWN5IGNhbiBzdXBwb3J0IG11bHRpcGxlIHZpZGVvIGVsZW1lbnRzIHJlcXVlc3QK
KyAgICAgICAgdG8gZW50ZXIgdmlkZW8gZnVsbHNjcmVlbiBhbG1vc3QgYXQgdGhlIHNhbWUgdGlt
ZSwgYW5kIG9ubHkgdGhlIGxhc3Qgb25lIHdpbGwgc3VjY2VlZC4KKyAgICAgICAgQWxzbywgdGhp
cyBwYXRjaCBmaXhlcyB3ZWJraXQub3JnL2IvMjA5NjEwIGZvciBXZWJLaXQtTGVnYWN5LgorCisg
ICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlld0Rh
dGEuaDoKKwogMjAyMC0wNC0wMyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJr
aXQub3JnPgogCiAgICAgICAgIEFkZCBTUEkgdG8gbWFrZSBXS1VzZXJTY3JpcHRzIHdhaXQgZm9y
IGEgbm90aWZpY2F0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApp
bmRleCBhMDljZDhhMDIyMTMwM2NkYjc4NThhNzgxM2JkZTliYTgyZTgwYjRmLi4xMDFkMTdjYzk4
MjYyYjVhOGFjNWJkNGMzY2ZiZTYzMGE5OTdmYTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHAKQEAgLTU4MTYsOCArNTgxNiwxMCBAQCB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OmRpc3BhdGNoRXZlbnQoRXZlbnQmIGV2ZW50KQogICAgIC8vIFdlIG5lZWQgdG8gZmly
ZSB0aGUgZW5kIGZ1bGxzY3JlZW4gZXZlbnQgdG8gbm90aWZ5IHRoZSBwYWdlCiAgICAgLy8gdG8g
Y2hhbmdlIHRoZSBwb3NpdGlvbi9zaXplIGJhY2sgKmJlZm9yZSogZXhpdGluZyBmdWxsc2NyZWVu
LgogICAgIC8vIE90aGVyd2lzZSwgdGhlIGV4aXQgZnVsbHNjcmVlbiBhbmltYXRpb24gd2lsbCBi
ZSBpbmNvcnJlY3QuCi0gICAgaWYgKCFtX3ZpZGVvRnVsbHNjcmVlblN0YW5kYnkgJiYgZXZlbnQu
dHlwZSgpID09IGV2ZW50TmFtZXMoKS53ZWJraXRlbmRmdWxsc2NyZWVuRXZlbnQpCisgICAgaWYg
KCFtX3ZpZGVvRnVsbHNjcmVlblN0YW5kYnkgJiYgZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMo
KS53ZWJraXRlbmRmdWxsc2NyZWVuRXZlbnQpIHsKKyAgICAgICAgZnVsbHNjcmVlbk1vZGVDaGFu
Z2VkKFZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKTsKICAgICAgICAgZG9jdW1lbnQoKS5wYWdlKCkt
PmNocm9tZSgpLmNsaWVudCgpLmV4aXRWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQoZG93
bmNhc3Q8SFRNTFZpZGVvRWxlbWVudD4oKnRoaXMpKTsKKyAgICB9CiB9CiAKIGJvb2wgSFRNTE1l
ZGlhRWxlbWVudDo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUs
IFJlZjxFdmVudExpc3RlbmVyPiYmIGxpc3RlbmVyLCBjb25zdCBBZGRFdmVudExpc3RlbmVyT3B0
aW9ucyYgb3B0aW9ucykKQEAgLTYwNTYsMTMgKzYwNTgsMTcgQEAgdm9pZCBIVE1MTWVkaWFFbGVt
ZW50OjpleGl0RnVsbHNjcmVlbigpCiAgICAgfQogCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFC
TEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpCi0gICAgaWYgKGRvY3VtZW50KCkuYWN0aXZlRE9N
T2JqZWN0c0FyZVN1c3BlbmRlZCgpIHx8IGRvY3VtZW50KCkuYWN0aXZlRE9NT2JqZWN0c0FyZVN0
b3BwZWQoKSkKKyAgICBpZiAoZG9jdW1lbnQoKS5hY3RpdmVET01PYmplY3RzQXJlU3VzcGVuZGVk
KCkgfHwgZG9jdW1lbnQoKS5hY3RpdmVET01PYmplY3RzQXJlU3RvcHBlZCgpKSB7CisgICAgICAg
IGZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSk7CiAgICAgICAg
IGRvY3VtZW50KCkucGFnZSgpLT5jaHJvbWUoKS5jbGllbnQoKS5leGl0VmlkZW9GdWxsc2NyZWVu
VG9Nb2RlV2l0aG91dEFuaW1hdGlvbihkb3duY2FzdDxIVE1MVmlkZW9FbGVtZW50PigqdGhpcyks
IFZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKTsKKyAgICB9CiAgICAgZWxzZQogI2VuZGlmCiAgICAg
aWYgKGRvY3VtZW50KCkucGFnZSgpLT5jaHJvbWUoKS5jbGllbnQoKS5zdXBwb3J0c1ZpZGVvRnVs
bHNjcmVlbihvbGRWaWRlb0Z1bGxzY3JlZW5Nb2RlKSkgewotICAgICAgICBpZiAobV92aWRlb0Z1
bGxzY3JlZW5TdGFuZGJ5KQorICAgICAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5TdGFuZGJ5KSB7
CisgICAgICAgICAgICBmdWxsc2NyZWVuTW9kZUNoYW5nZWQoVmlkZW9GdWxsc2NyZWVuTW9kZU5v
bmUpOwogICAgICAgICAgICAgZG9jdW1lbnQoKS5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgpLmVu
dGVyVmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50KGRvd25jYXN0PEhUTUxWaWRlb0VsZW1l
bnQ+KCp0aGlzKSwgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlLCBtX3ZpZGVvRnVsbHNjcmVlblN0YW5k
YnkpOworICAgICAgICB9CiAKICAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkud2Vi
a2l0ZW5kZnVsbHNjcmVlbkV2ZW50KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktp
dC5tbQppbmRleCA4YWYzYjVjNTUxNTRkNmFmYTUyNGVlODE2MTFiOTE2YmM4YTc5MzI1Li5lMWFh
MjY2MTZhOWVmN2EyNDI1NDk5NzRmNjg5YjgxZDM4ZmQ4NzM0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250
cm9sbGVyQVZLaXQubW0KQEAgLTI2MCw2ICsyNjAsOSBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbkNv
bnRyb2xsZXJDb250ZXh0OjpyZXF1ZXN0VmlkZW9Db250ZW50TGF5ZXIoKQogICAgICAgICBbdmlk
ZW9GdWxsc2NyZWVuTGF5ZXIgc2V0QmFja2dyb3VuZENvbG9yOmNhY2hlZENHQ29sb3IoV2ViQ29y
ZTo6Q29sb3I6OnRyYW5zcGFyZW50KV07CiAgICAgICAgIG1fZnVsbHNjcmVlbk1vZGVsLT5zZXRW
aWRlb0Z1bGxzY3JlZW5MYXllcih2aWRlb0Z1bGxzY3JlZW5MYXllci5nZXQoKSwgW3Byb3RlY3Rl
ZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCB0aGlzXSAoKSBtdXRhYmxlIHsKICAgICAg
ICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0
ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgdGhpc10geworICAgICAgICAgICAgICAg
IGlmICghbV9pbnRlcmZhY2UpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKwogICAgICAg
ICAgICAgICAgIG1faW50ZXJmYWNlLT5zZXRIYXNWaWRlb0NvbnRlbnRMYXllcih0cnVlKTsKICAg
ICAgICAgICAgIH0pOwogICAgICAgICB9KTsKQEAgLTI3Nyw2ICsyODAsOSBAQCB2b2lkIFZpZGVv
RnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpyZXR1cm5WaWRlb0NvbnRlbnRMYXllcigpCiAg
ICAgICAgIFt2aWRlb0Z1bGxzY3JlZW5MYXllciBzZXRCYWNrZ3JvdW5kQ29sb3I6Y2FjaGVkQ0dD
b2xvcihXZWJDb3JlOjpDb2xvcjo6dHJhbnNwYXJlbnQpXTsKICAgICAgICAgbV9mdWxsc2NyZWVu
TW9kZWwtPnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKG5pbCwgW3Byb3RlY3RlZFRoaXMgPSBXVEZN
b3ZlKHByb3RlY3RlZFRoaXMpLCB0aGlzXSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGRpc3Bh
dGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzID0gV1RG
TW92ZShwcm90ZWN0ZWRUaGlzKSwgdGhpc10geworICAgICAgICAgICAgICAgIGlmICghbV9pbnRl
cmZhY2UpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKwogICAgICAgICAgICAgICAgIG1f
aW50ZXJmYWNlLT5zZXRIYXNWaWRlb0NvbnRlbnRMYXllcihmYWxzZSk7CiAgICAgICAgICAgICB9
KTsKICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcu
bW0KaW5kZXggNTg4MGExNTcyOTQ5NmVjZWRjZTE5ZDFlNGIwODIyZDc0NzJmNTFkZC4uZDExNzc3
ZGI2ZTE2YmU4OWRhZDRkN2U2ODBlMzE3YjViN2RmZTUzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtOTMzNiwxMiArOTMzNiwxMSBAQCAtICh2b2lk
KV9lbnRlclZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudDooTmFrZWRQdHI8V2ViQ29yZTo6
SFRNTFZpZGVvRWxlbWVudAogCiAgICAgICAgIC8vIEZpcnN0IGV4aXQgRnVsbHNjcmVlbiBmb3Ig
dGhlIG9sZCB2aWRlb0VsZW1lbnQuCiAgICAgICAgIFtfcHJpdmF0ZS0+ZnVsbHNjcmVlbkNvbnRy
b2xsZXIgdmlkZW9FbGVtZW50XS0+ZXhpdEZ1bGxzY3JlZW4oKTsKLSAgICAgICAgLy8gVGhpcyBw
cmV2aW91cyBjYWxsIGhhcyB0byB0cmlnZ2VyIF9leGl0RnVsbHNjcmVlbiwKLSAgICAgICAgLy8g
d2hpY2ggaGFzIHRvIGNsZWFyIF9wcml2YXRlLT5mdWxsc2NyZWVuQ29udHJvbGxlci4KLSAgICAg
ICAgQVNTRVJUKCFfcHJpdmF0ZS0+ZnVsbHNjcmVlbkNvbnRyb2xsZXIpOworICAgICAgICBfcHJp
dmF0ZS0+ZnVsbHNjcmVlbkNvbnRyb2xsZXJzRXhpdGluZy5hcHBlbmQoc3RkOjpleGNoYW5nZShf
cHJpdmF0ZS0+ZnVsbHNjcmVlbkNvbnRyb2xsZXIsIG5pbCkpOwogICAgIH0KKwogICAgIGlmICgh
X3ByaXZhdGUtPmZ1bGxzY3JlZW5Db250cm9sbGVyKSB7Ci0gICAgICAgIF9wcml2YXRlLT5mdWxs
c2NyZWVuQ29udHJvbGxlciA9IFtbV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciBhbGxvY10g
aW5pdF07CisgICAgICAgIF9wcml2YXRlLT5mdWxsc2NyZWVuQ29udHJvbGxlciA9IGFkb3B0TlMo
W1tXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIGFsbG9jXSBpbml0XSk7CiAgICAgICAgIFtf
cHJpdmF0ZS0+ZnVsbHNjcmVlbkNvbnRyb2xsZXIgc2V0VmlkZW9FbGVtZW50OnZpZGVvRWxlbWVu
dF07CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgW19wcml2YXRlLT5mdWxsc2Ny
ZWVuQ29udHJvbGxlciBlbnRlckZ1bGxzY3JlZW46KFVJVmlldyAqKVtbW3NlbGYgd2luZG93XSBo
b3N0TGF5ZXJdIGRlbGVnYXRlXSBtb2RlOm1vZGVdOwpAQCAtOTM1NSwxMSArOTM1NCwyMSBAQCAt
ICh2b2lkKV9lbnRlclZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudDooTmFrZWRQdHI8V2Vi
Q29yZTo6SFRNTFZpZGVvRWxlbWVudAogCiAtICh2b2lkKV9leGl0VmlkZW9GdWxsc2NyZWVuCiB7
Ci0gICAgaWYgKCFfcHJpdmF0ZS0+ZnVsbHNjcmVlbkNvbnRyb2xsZXIpCisgICAgaWYgKCFfcHJp
dmF0ZS0+ZnVsbHNjcmVlbkNvbnRyb2xsZXIgJiYgX3ByaXZhdGUtPmZ1bGxzY3JlZW5Db250cm9s
bGVyc0V4aXRpbmcuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIV9wcml2
YXRlLT5mdWxsc2NyZWVuQ29udHJvbGxlcnNFeGl0aW5nLmlzRW1wdHkoKSkgeworICAgICAgICBh
dXRvIGNvbnRyb2xsZXIgPSBfcHJpdmF0ZS0+ZnVsbHNjcmVlbkNvbnRyb2xsZXJzRXhpdGluZy5m
aXJzdCgpOworICAgICAgICBfcHJpdmF0ZS0+ZnVsbHNjcmVlbkNvbnRyb2xsZXJzRXhpdGluZy5y
ZW1vdmUoMCk7CisKKyAgICAgICAgW2NvbnRyb2xsZXIgZXhpdEZ1bGxzY3JlZW5dOwogICAgICAg
ICByZXR1cm47Ci0gICAgW19wcml2YXRlLT5mdWxsc2NyZWVuQ29udHJvbGxlciBleGl0RnVsbHNj
cmVlbl07Ci0gICAgW19wcml2YXRlLT5mdWxsc2NyZWVuQ29udHJvbGxlciByZWxlYXNlXTsKKyAg
ICB9CisKKyAgICBhdXRvIGZ1bGxzY3JlZW5Db250cm9sbGVyID0gX3ByaXZhdGUtPmZ1bGxzY3Jl
ZW5Db250cm9sbGVyOwogICAgIF9wcml2YXRlLT5mdWxsc2NyZWVuQ29udHJvbGxlciA9IG5pbDsK
KworICAgIFtmdWxsc2NyZWVuQ29udHJvbGxlciBleGl0RnVsbHNjcmVlbl07CiB9CiAKICNpZiBQ
TEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEuaCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEuaAppbmRleCBlMmZkZTQ1NjU2
MzY4Y2Q0ZGMyYzZkMGVmNGZiNjVhMmJhMzIxNDExLi5mZTk4MzliYWM0NzQ5MWExNDNiYTY4YmU3
YzliYjY1MGFmZDUwN2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYlZpZXdEYXRhLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJWaWV3RGF0YS5oCkBAIC0zMTYsMTEgKzMxNiwxMiBAQCBwcml2YXRlOgogICAgIE5TUGFzdGVi
b2FyZCAqaW5zZXJ0aW9uUGFzdGVib2FyZDsKICAgICBSZXRhaW5QdHI8TlNJbWFnZT4gX21haW5G
cmFtZUljb247CiAjZW5kaWYKLSAgICAgICAgICAgIAorCiAgICAgTlNTaXplIGxhc3RMYXlvdXRT
aXplOwogCiAjaWYgRU5BQkxFKFZJREVPKQotICAgIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xs
ZXIgKmZ1bGxzY3JlZW5Db250cm9sbGVyOworICAgIFJldGFpblB0cjxXZWJWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyPiBmdWxsc2NyZWVuQ29udHJvbGxlcjsKKyAgICBWZWN0b3I8UmV0YWluUHRy
PFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXI+PiBmdWxsc2NyZWVuQ29udHJvbGxlcnNFeGl0
aW5nOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5U
QVRJT05fTU9ERSkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxv
ZwppbmRleCAwMTVmMWU2MTg1NzFiNGFiZGU0NzFjMmUyNDUyZmMzMGI1NTdjNzUyLi5kNDFhYjQz
NzllM2JkMTUwYzM5OGQzMWE0NWZiYmFmM2RjM2YwNTg4IDEwMDY0NAotLS0gYS9Ub29scy9DaGFu
Z2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMjAtMDQtMDMg
IFBlbmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OIChy
MjU5MDk1KTogQVNTRVJUSU9OIEZBSUxFRDogbV92aWRlb0Z1bGxzY3JlZW5Nb2RlICE9IFZpZGVv
RnVsbHNjcmVlbk1vZGVOb25lIHNlZW4gd2l0aCBUZXN0V2ViS2l0QVBJLldlYktpdExlZ2FjeS5B
dWRpb1Nlc3Npb25DYXRlZ29yeUlPUworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjA5NjgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSmVyIE5vYmxlLgor
CisgICAgICAgIEFkZCBhbiBBUEkgdGVzdCBmb3IgdGhlIHZpZGVvIGZ1bGxzY3JlZW4gc3VwcG9y
dCBvZiBXZWJLaXRMZWdhY3kgb24gaU9TLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRMZWdhY3kvaW9zL1ByZWVtcHRWaWRlb0Z1bGxzY3JlZW4ubW06IEFk
ZGVkLgorICAgICAgICAoLVtWaWRlb0Z1bGxzY3JlZW5TdHJlc3NVSVdlYlZpZXdEZWxlZ2F0ZSB3
ZWJWaWV3RGlkRmluaXNoTG9hZDpdKToKKyAgICAgICAgKC1bVmlkZW9GdWxsc2NyZWVuU3RyZXNz
VUlXZWJWaWV3RGVsZWdhdGUgdWlXZWJWaWV3OmRpZENvbW1pdExvYWRGb3JGcmFtZTpdKToKKyAg
ICAgICAgKC1bVmlkZW9GdWxsc2NyZWVuU3RyZXNzVUlXZWJWaWV3RGVsZWdhdGUgaGFuZGxlRXZl
bnQ6XSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdExlZ2FjeS9pb3MvdHdvLXZpZGVvcy5odG1sOiBBZGRlZC4KKwog
MjAyMC0wNC0wMyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgog
CiAgICAgICAgIEFkZCBTUEkgdG8gbWFrZSBXS1VzZXJTY3JpcHRzIHdhaXQgZm9yIGEgbm90aWZp
Y2F0aW9uCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDM5MzNiNTJjY2VjYzUyMjFiOWY5MDAy
OGYxYmVkYTc3YzM1YjJlYWYuLjk2NWQ4MWE3MDY0YmQ3OTQyMzI5OGE5OGZjMDc4YTU5MzQxMjk0
NDMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTMsNiArMTEzLDggQEAKIAkJMUNGNTlB
RTIyMUU2ODkyNTAwNkUzN0VDIC8qIEZvcmNlTGlnaHRBcHBlYXJhbmNlSW5CdW5kbGVfQnVuZGxl
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNGNTlB
RTAyMUU2ODkyNTAwNkUzN0VDIC8qIEZvcmNlTGlnaHRBcHBlYXJhbmNlSW5CdW5kbGVfQnVuZGxl
Lm1tICovOyB9OwogCQkxQ0Y1OUFFMzIxRTY4OTMyMDA2RTM3RUMgLyogRm9yY2VMaWdodEFwcGVh
cmFuY2VJbkJ1bmRsZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDFDRjU5QURGMjFFNjg5MjUwMDZFMzdFQyAvKiBGb3JjZUxpZ2h0QXBwZWFyYW5jZUlu
QnVuZGxlLm1tICovOyB9OwogCQkxQ0Y1OUFFNTIxRTY5NzdEMDA2RTM3RUMgLyogZGFyay1tb2Rl
Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMUNGNTlBRTQyMUU2OTZGQjAwNkUzN0VDIC8qIGRhcmstbW9kZS5odG1sICovOyB9OworCQkx
RDY3QkZEQzI0MzNFMEE3MDA2QjUwNDcgLyogUHJlZW1wdFZpZGVvRnVsbHNjcmVlbi5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFENjdCRkRCMjQzM0Uw
QTcwMDZCNTA0NyAvKiBQcmVlbXB0VmlkZW9GdWxsc2NyZWVuLm1tICovOyB9OworCQkxRDY3QkZE
RDI0MzNFRTY2MDA2QjUwNDcgLyogdHdvLXZpZGVvcy5odG1sIGluIENvcHkgUmVzb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFENjdCRkQ5MjQzM0RGRDgwMDZCNTA0
NyAvKiB0d28tdmlkZW9zLmh0bWwgKi87IH07CiAJCTFGODM1NzFCMUQzRkZCMjMwMEUzOTY3QiAv
KiBXS0JhY2tGb3J3YXJkTGlzdC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDFGODM1NzFBMUQzRkZCMEUwMEUzOTY3QiAvKiBXS0JhY2tGb3J3YXJkTGlz
dC5tbSAqLzsgfTsKIAkJMjZERjVBNjMxNUEyQTI3RTAwMzY4OUMyIC8qIENhbmNlbExvYWRGcm9t
UmVzb3VyY2VMb2FkRGVsZWdhdGUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNkRGNUE2MTE1QTJBMjJCMDAzNjg5QzIgLyogQ2FuY2Vs
TG9hZEZyb21SZXNvdXJjZUxvYWREZWxlZ2F0ZS5odG1sICovOyB9OwogCQkyNkY1MkVBRDE4Mjg4
MjdCMDAyM0Q0MTIgLyogZ2VvbG9jYXRpb25HZXRDdXJyZW50UG9zaXRpb24uaHRtbCBpbiBDb3B5
IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNkY1MkVBQzE4
Mjg4MjBFMDAyM0Q0MTIgLyogZ2VvbG9jYXRpb25HZXRDdXJyZW50UG9zaXRpb24uaHRtbCAqLzsg
fTsKQEAgLTE1MTgsNiArMTUyMCw3IEBACiAJCQkJRjQxQUI5QUExRUY0Njk2QjAwODNGQTA4IC8q
IHRleHRhcmVhLXRvLWlucHV0Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJQzIyRkEz
MkQyMjhGOEFFQjAwOUQ3OTg4IC8qIFRleHRXaWR0aC5odG1sIGluIENvcHkgUmVzb3VyY2VzICov
LAogCQkJCUY0NDUxQzc2MUVCOEZEODkwMDIwQzVEQSAvKiB0d28tcGFyYWdyYXBoLWNvbnRlbnRl
ZGl0YWJsZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAorCQkJCTFENjdCRkREMjQzM0VFNjYw
MDZCNTA0NyAvKiB0d28tdmlkZW9zLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJQzU0
MEY3ODQxNTJFNUE5QTAwQTQwQzhDIC8qIHZlcmJvc2VNYXJrdXAuaHRtbCBpbiBDb3B5IFJlc291
cmNlcyAqLywKIAkJCQlDRDU3Nzc5RDIxMUNFOTFGMDAxQjM3MUUgLyogdmlkZW8td2l0aC1hdWRp
by1hbmQtd2ViLWF1ZGlvLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJQ0RDOEU0OTQx
QkM2RjEwODAwNTk0RkVDIC8qIHZpZGVvLXdpdGgtYXVkaW8uaHRtbCBpbiBDb3B5IFJlc291cmNl
cyAqLywKQEAgLTE2NjQsNiArMTY2Nyw4IEBACiAJCTFDRjU5QURGMjFFNjg5MjUwMDZFMzdFQyAv
KiBGb3JjZUxpZ2h0QXBwZWFyYW5jZUluQnVuZGxlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gRm9yY2VMaWdodEFwcGVhcmFuY2VJbkJ1bmRsZS5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNGNTlBRTAyMUU2ODkyNTAwNkUzN0VDIC8qIEZvcmNl
TGlnaHRBcHBlYXJhbmNlSW5CdW5kbGVfQnVuZGxlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gRm9yY2VMaWdodEFwcGVhcmFuY2VJbkJ1bmRsZV9CdW5kbGUubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDRjU5QUU0MjFFNjk2RkIwMDZFMzdFQyAv
KiBkYXJrLW1vZGUuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJkYXJrLW1vZGUu
aHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFENjdCRkQ5MjQzM0RGRDgwMDZC
NTA0NyAvKiB0d28tdmlkZW9zLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAidHdv
LXZpZGVvcy5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUQ2N0JGREIyNDMz
RTBBNzAwNkI1MDQ3IC8qIFByZWVtcHRWaWRlb0Z1bGxzY3JlZW4ubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBQcmVlbXB0VmlkZW9GdWxsc2NyZWVuLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkxRjgzNTcxQTFEM0ZGQjBFMDBFMzk2N0IgLyogV0tCYWNrRm9yd2FyZExpc3QubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXS0JhY2tGb3J3YXJkTGlz
dC5tbTsgcGF0aCA9IFRlc3RzL1dlYktpdC9XS0JhY2tGb3J3YXJkTGlzdC5tbTsgc291cmNlVHJl
ZSA9IFNPVVJDRV9ST09UOyB9OwogCQkyNjBCQTU3ODFCMUQyRTdCMDA0RkEwN0MgLyogREZBQ29t
YmluZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gREZBQ29tYmlu
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyNjBCQTU3QTFCMUQyRUUyMDA0
RkEwN0MgLyogREZBSGVscGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBE
RkFIZWxwZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MzI2LDYgKzQzMzEs
NyBAQAogCQkJCUNEQzhFNDlBMUJDNzI4RkUwMDU5NEZFQyAvKiBSZXNvdXJjZXMgKi8sCiAJCQkJ
Q0RDOEU0ODUxQkM1QjE5NDAwNTk0RkVDIC8qIEF1ZGlvU2Vzc2lvbkNhdGVnb3J5SU9TLm1tICov
LAogCQkJCUUzNUZDN0IxMjJCODJBNkQwMEYzMkY5OCAvKiBKU0xvY2tUYWtlc1dlYlRocmVhZExv
Y2subW0gKi8sCisJCQkJMUQ2N0JGREIyNDMzRTBBNzAwNkI1MDQ3IC8qIFByZWVtcHRWaWRlb0Z1
bGxzY3JlZW4ubW0gKi8sCiAJCQkJQ0RDMDkzMkEyMUM4NzJDMTAwMzBDNEIwIC8qIFNjcm9sbGlu
Z0RvZXNOb3RQYXVzZU1lZGlhLm1tICovLAogCQkJCUY0MzRDQTE5MjJFNjVCQ0EwMDVEREIyNiAv
KiBTY3JvbGxUb1JldmVhbFNlbGVjdGlvbi5tbSAqLywKIAkJCQkwRjRGRkE5RDFFRDNBQTg1MDBG
NzExMUYgLyogU25hcHNob3RWaWFSZW5kZXJJbkNvbnRleHQubW0gKi8sCkBAIC00MzM3LDYgKzQz
NDMsNyBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQlDRDlFMjky
RDFDOTBDMUJBMDAwQkI4MDAgLyogYXVkaW8tb25seS5odG1sICovLAorCQkJCTFENjdCRkQ5MjQz
M0RGRDgwMDZCNTA0NyAvKiB0d28tdmlkZW9zLmh0bWwgKi8sCiAJCQkJQ0RDOEU0ODkxQkM1Qzk2
MjAwNTk0RkVDIC8qIHZpZGVvLXdpdGgtYXVkaW8uaHRtbCAqLywKIAkJCQlDREM4RTQ4QTFCQzVD
OTYyMDA1OTRGRUMgLyogdmlkZW8td2l0aC1hdWRpby5tcDQgKi8sCiAJCQkJQ0QzMjFCMDMxRTNB
ODRCNzAwRUIyMUM4IC8qIHZpZGVvLXdpdGgtbXV0ZWQtYXVkaW8tYW5kLXdlYmF1ZGlvLmh0bWwg
Ki8sCkBAIC01MDAyLDYgKzUwMDksNyBAQAogCQkJCTdDQ0U3RUE2MUE0MTFBMEYwMDQ0N0M0QyAv
KiBQbGF0Zm9ybVV0aWxpdGllc01hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUE3MUE0
MTFBMTMwMDQ0N0M0QyAvKiBQbGF0Zm9ybVdlYlZpZXdNYWMubW0gaW4gU291cmNlcyAqLywKIAkJ
CQk4M0JBRUU4RDFFRjQ2MjU1MDBEREU4OTQgLyogUGx1Z2luTG9hZENsaWVudFBvbGljaWVzLm1t
IGluIFNvdXJjZXMgKi8sCisJCQkJMUQ2N0JGREMyNDMzRTBBNzAwNkI1MDQ3IC8qIFByZWVtcHRW
aWRlb0Z1bGxzY3JlZW4ubW0gaW4gU291cmNlcyAqLywKIAkJCQlDMTVDQkIzRjIzRkIxNzdBMDAz
MDBDQzcgLyogUHJlZmVyZW5jZUNoYW5nZXMubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0Yy
NjFBNDExQUY2MDA0NDdDNEMgLyogUHJlZmVyZW5jZXMubW0gaW4gU291cmNlcyAqLywKIAkJCQlD
RDIyN0U0NDIxMUE0RDVEMDBEMjg1QUYgLyogUHJlZmVycmVkQXVkaW9CdWZmZXJTaXplLm1tIGlu
IFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dExlZ2FjeS9pb3MvUHJlZW1wdFZpZGVvRnVsbHNjcmVlbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0TGVnYWN5L2lvcy9QcmVlbXB0VmlkZW9GdWxsc2NyZWVuLm1tCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmE1ZGViYWFjOGY4Zjc2YWRiN2Q4ZmNjOWVhOTUxODBkNDJiOWY0ZjUKLS0tIC9kZXYv
bnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdExlZ2FjeS9pb3MvUHJl
ZW1wdFZpZGVvRnVsbHNjcmVlbi5tbQpAQCAtMCwwICsxLDEzNiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bXBvcnQgImNvbmZpZy5oIgorCisjaWYgSEFWRShVSVdFQlZJRVcpCisKKyNpbXBvcnQgIlBsYXRm
b3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0IDxVSUtpdC9VSUtpdC5oPgorI2ltcG9ydCA8V2ViS2l0
L0RPTUhUTUxNZWRpYUVsZW1lbnQuaD4KKyNpbXBvcnQgPFdlYktpdC9XZWJGcmFtZVByaXZhdGUu
aD4KKyNpbXBvcnQgPFdlYktpdExlZ2FjeS9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaD4KKyNpbXBv
cnQgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisKK3N0YXRp
YyBib29sIGRpZEZpbmlzaExvYWQgPSBmYWxzZTsKK3N0YXRpYyBib29sIGdvdE1haW5GcmFtZSA9
IGZhbHNlOworc3RhdGljIFJldGFpblB0cjxXZWJGcmFtZT4gbWFpbkZyYW1lOworc3RhdGljIGlu
dCBjb3VudE9mVmlkZW9FbGVtZW50c0NhblBsYXkgPSAwOworc3RhdGljIGJvb2wgcmVhZHlUb1Rl
c3QgPSBmYWxzZTsKK3N0YXRpYyBpbnQgZnVsbHNjcmVlbkJlZ2luID0gMDsKK3N0YXRpYyBpbnQg
ZnVsbHNjcmVlbkVuZCA9IDA7CitzdGF0aWMgYm9vbCBkb25lVGVzdCA9IGZhbHNlOworCitAaW50
ZXJmYWNlIFByZWVtcHRWaWRlb0Z1bGxzY3JlZW5VSVdlYlZpZXdEZWxlZ2F0ZSA6IE5TT2JqZWN0
IDxVSVdlYlZpZXdEZWxlZ2F0ZSwgRE9NRXZlbnRMaXN0ZW5lcj4KK0BlbmQKKworQGltcGxlbWVu
dGF0aW9uIFByZWVtcHRWaWRlb0Z1bGxzY3JlZW5VSVdlYlZpZXdEZWxlZ2F0ZQorSUdOT1JFX1dB
Uk5JTkdTX0JFR0lOKCJkZXByZWNhdGVkLWltcGxlbWVudGF0aW9ucyIpCistICh2b2lkKXdlYlZp
ZXdEaWRGaW5pc2hMb2FkOihVSVdlYlZpZXcgKil3ZWJWaWV3Cit7CisgICAgZGlkRmluaXNoTG9h
ZCA9IHRydWU7Cit9CitJR05PUkVfV0FSTklOR1NfRU5ECisKKy0gKHZvaWQpdWlXZWJWaWV3OihV
SVdlYlZpZXcgKilzZW5kZXIgZGlkQ29tbWl0TG9hZEZvckZyYW1lOihXZWJGcmFtZSAqKWZyYW1l
Cit7CisgICAgZ290TWFpbkZyYW1lID0gdHJ1ZTsKKyAgICBtYWluRnJhbWUgPSBmcmFtZTsKK30K
KworLSAodm9pZCloYW5kbGVFdmVudDooRE9NRXZlbnQgKilldmVudAoreworICAgIGlmIChbZXZl
bnQudHlwZSBpc0VxdWFsVG9TdHJpbmc6QCJjYW5wbGF5dGhyb3VnaCJdKQorICAgICAgICBjb3Vu
dE9mVmlkZW9FbGVtZW50c0NhblBsYXkrKzsKKworICAgIGlmIChjb3VudE9mVmlkZW9FbGVtZW50
c0NhblBsYXkgPT0gMikKKyAgICAgICAgcmVhZHlUb1Rlc3QgPSB0cnVlOworCisgICAgaWYgKFtl
dmVudC50eXBlIGlzRXF1YWxUb1N0cmluZzpAIndlYmtpdGJlZ2luZnVsbHNjcmVlbiJdKQorICAg
ICAgICBmdWxsc2NyZWVuQmVnaW4rKzsKKworICAgIGlmIChbZXZlbnQudHlwZSBpc0VxdWFsVG9T
dHJpbmc6QCJ3ZWJraXRlbmRmdWxsc2NyZWVuIl0pCisgICAgICAgIGZ1bGxzY3JlZW5FbmQrKzsK
KworICAgIGlmIChmdWxsc2NyZWVuQmVnaW4gPT0gMiAmJiBmdWxsc2NyZWVuRW5kID09IDEpCisg
ICAgICAgIGRvbmVUZXN0ID0gdHJ1ZTsKK30KK0BlbmQKKworbmFtZXNwYWNlIFRlc3RXZWJLaXRB
UEkgeworCitURVNUKFdlYktpdExlZ2FjeSwgUHJlZW1wdFZpZGVvRnVsbHNjcmVlbikKK3sKKyAg
ICBSZXRhaW5QdHI8V2ViUHJlZmVyZW5jZXM+IHByZWZlcmVuY2VzID0gW1dlYlByZWZlcmVuY2Vz
IHN0YW5kYXJkUHJlZmVyZW5jZXNdOworICAgIHByZWZlcmVuY2VzLmdldCgpLm1lZGlhRGF0YUxv
YWRzQXV0b21hdGljYWxseSA9IFlFUzsKKyAgICBwcmVmZXJlbmNlcy5nZXQoKS5tZWRpYVBsYXli
YWNrQWxsb3dzSW5saW5lID0gTk87CisgICAgcHJlZmVyZW5jZXMuZ2V0KCkubWVkaWFQbGF5YmFj
a1JlcXVpcmVzVXNlckdlc3R1cmUgPSBOTzsKKworICAgIFJldGFpblB0cjxVSVdpbmRvdz4gdWlX
aW5kb3cgPSBhZG9wdE5TKFtbVUlXaW5kb3cgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVj
dCgwLCAwLCA4MDAsIDYwMCldKTsKKyAgICBSZXRhaW5QdHI8VUlXZWJWaWV3PiB1aVdlYlZpZXcg
PSBhZG9wdE5TKFtbVUlXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwg
MCwgODAwLCA2MDApXSk7CisgICAgW3VpV2luZG93IGFkZFN1YnZpZXc6dWlXZWJWaWV3LmdldCgp
XTsKKworICAgIFJldGFpblB0cjxQcmVlbXB0VmlkZW9GdWxsc2NyZWVuVUlXZWJWaWV3RGVsZWdh
dGU+IHVpRGVsZWdhdGUgPSBhZG9wdE5TKFtbUHJlZW1wdFZpZGVvRnVsbHNjcmVlblVJV2ViVmll
d0RlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgdWlXZWJWaWV3LmdldCgpLmRlbGVnYXRlID0g
dWlEZWxlZ2F0ZS5nZXQoKTsKKworICAgIFt1aVdlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVx
dWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNl
OkAidHdvLXZpZGVvcyIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RX
ZWJLaXRBUEkucmVzb3VyY2VzIl1dXTsKKworICAgIFV0aWw6OnJ1bigmZGlkRmluaXNoTG9hZCk7
CisgICAgVXRpbDo6cnVuKCZnb3RNYWluRnJhbWUpOworCisgICAgY2FsbE9uTWFpblRocmVhZEFu
ZFdhaXQoWyZdICgpIG11dGFibGUgeworICAgICAgICBbbWFpbkZyYW1lIHNldFRpbWVvdXRzUGF1
c2VkOllFU107CisgICAgICAgIERPTUhUTUxNZWRpYUVsZW1lbnQqIHZpZGVvMSA9IChET01IVE1M
TWVkaWFFbGVtZW50KilbW21haW5GcmFtZSBET01Eb2N1bWVudF0gZ2V0RWxlbWVudEJ5SWQ6QCJ2
aWRlbzEiXTsKKyAgICAgICAgW3ZpZGVvMSBhZGRFdmVudExpc3RlbmVyOkAiY2FucGxheXRocm91
Z2giIGxpc3RlbmVyOnVpRGVsZWdhdGUuZ2V0KCkgdXNlQ2FwdHVyZTpOT107CisgICAgICAgIFt2
aWRlbzEgYWRkRXZlbnRMaXN0ZW5lcjpAIndlYmtpdGJlZ2luZnVsbHNjcmVlbiIgbGlzdGVuZXI6
dWlEZWxlZ2F0ZS5nZXQoKSB1c2VDYXB0dXJlOk5PXTsKKyAgICAgICAgW3ZpZGVvMSBhZGRFdmVu
dExpc3RlbmVyOkAid2Via2l0ZW5kZnVsbHNjcmVlbiIgbGlzdGVuZXI6dWlEZWxlZ2F0ZS5nZXQo
KSB1c2VDYXB0dXJlOk5PXTsKKworICAgICAgICBET01IVE1MTWVkaWFFbGVtZW50KiB2aWRlbzIg
PSAoRE9NSFRNTE1lZGlhRWxlbWVudCopW1ttYWluRnJhbWUgRE9NRG9jdW1lbnRdIGdldEVsZW1l
bnRCeUlkOkAidmlkZW8yIl07CisgICAgICAgIFt2aWRlbzIgYWRkRXZlbnRMaXN0ZW5lcjpAImNh
bnBsYXl0aHJvdWdoIiBsaXN0ZW5lcjp1aURlbGVnYXRlLmdldCgpIHVzZUNhcHR1cmU6Tk9dOwor
ICAgICAgICBbdmlkZW8yIGFkZEV2ZW50TGlzdGVuZXI6QCJ3ZWJraXRiZWdpbmZ1bGxzY3JlZW4i
IGxpc3RlbmVyOnVpRGVsZWdhdGUuZ2V0KCkgdXNlQ2FwdHVyZTpOT107CisKKyAgICAgICAgW3Zp
ZGVvMSBzZXRTcmM6QCJ2aWRlby13aXRoLWF1ZGlvLm1wNCJdOworICAgICAgICBbdmlkZW8yIHNl
dFNyYzpAInZpZGVvLXdpdGhvdXQtYXVkaW8ubXA0Il07CisgICAgICAgIFttYWluRnJhbWUgc2V0
VGltZW91dHNQYXVzZWQ6Tk9dOworICAgIH0pOworCisgICAgLy8gV2FpdCB1bnRpbCBib3RoIHZp
ZGVvIGVsZW1lbnRzIGFyZSByZWFkeSB0byBwbGF5LgorICAgIFV0aWw6OnJ1bigmcmVhZHlUb1Rl
c3QpOworCisgICAgY2FsbE9uTWFpblRocmVhZEFuZFdhaXQoWyZdICgpIG11dGFibGUgeworICAg
ICAgICBET01IVE1MTWVkaWFFbGVtZW50KiB2aWRlbzEgPSAoRE9NSFRNTE1lZGlhRWxlbWVudCop
W1ttYWluRnJhbWUgRE9NRG9jdW1lbnRdIGdldEVsZW1lbnRCeUlkOkAidmlkZW8xIl07CisgICAg
ICAgIERPTUhUTUxNZWRpYUVsZW1lbnQqIHZpZGVvMiA9IChET01IVE1MTWVkaWFFbGVtZW50Kilb
W21haW5GcmFtZSBET01Eb2N1bWVudF0gZ2V0RWxlbWVudEJ5SWQ6QCJ2aWRlbzIiXTsKKyAgICAg
ICAgW3ZpZGVvMSBwbGF5XTsKKyAgICAgICAgW3ZpZGVvMiBwbGF5XTsKKyAgICB9KTsKKworICAg
IC8vIEV2ZW50dWFsbHksIG9ubHkgb25lIHZpZGVvIHdpbGwgYmUgaW4gZnVsbHNjcmVlbi4KKyAg
ICBVdGlsOjpydW4oJmRvbmVUZXN0KTsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0TGVnYWN5L2lvcy90d28tdmlkZW9zLmh0bWwg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdExlZ2FjeS9pb3MvdHdvLXZpZGVvcy5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmNkMWRmZGFhMTBkN2Y0NTkwZDZjMzAzNWU4NjQ0YzhiZjI2MTdmMDEK
LS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdExlZ2Fj
eS9pb3MvdHdvLXZpZGVvcy5odG1sCkBAIC0wLDAgKzEsOSBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPC9oZWFkPgorPGJvZHk+CisgICAgPHZpZGVvIGlkPSJ2aWRlbzEiIGxv
b3A+PC92aWRlbz4KKyAgICA8dmlkZW8gaWQ9InZpZGVvMiIgbG9vcD48L3ZpZGVvPgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IDNiNmI0YWE5Y2MzNjZlMDdhZTMzZDk0ZDZkMGQwMTBhN2E4NmFj
ZTkuLjg2MWY2NTdhODE3ZjhmZTA4NmJmY2U4NGRjM2U5MjUwYzJiN2YxY2UgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAyMC0wNC0wMyAgUGVuZyBMaXUgIDxwZW5nLmxpdTZAYXBwbGUuY29tPgor
CisgICAgICAgIFJFR1JFU1NJT04gKHIyNTkwOTUpOiBBU1NFUlRJT04gRkFJTEVEOiBtX3ZpZGVv
RnVsbHNjcmVlbk1vZGUgIT0gVmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUgc2VlbiB3aXRoIFRlc3RX
ZWJLaXRBUEkuV2ViS2l0TGVnYWN5LkF1ZGlvU2Vzc2lvbkNhdGVnb3J5SU9TCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk2ODAKKworICAgICAgICBS
ZXZpZXdlZCBieSBKZXIgTm9ibGUuCisKKyAgICAgICAgUmVtb3ZlIHRoZSBjcmFzaGluZyBleHBl
Y3RhdGlvbiBmb3IgbWVkaWEvbWVkaWEtZnVsbHNjcmVlbi1yZXR1cm4tdG8taW5saW5lLmh0bWwK
KworICAgICAgICAqIHBsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDIwLTA0LTAz
ICBUcnVpdHQgU2F2ZWxsICA8dHNhdmVsbEBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCwgcmV2ZXJ0aW5nIHIyNTk0NDAuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0
YXRpb25zCmluZGV4IDEyZTBiYmUwYzZiZDdmMTU3MTEyOGZjYTZjN2FhMjhkNjZiOGU5NDYuLmY4
ZDRkZWU1NDdlNzk2MjFhNjkzN2M4NWMyY2M1YThjNDY2OTgwYWEgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCkBAIC0xNjUxLDcgKzE2NTEsNyBAQCB3ZWJraXQu
b3JnL2IvMTg5NjgwIHBsYXRmb3JtL21hYy9tZWRpYS9hdWRpby1zZXNzaW9uLWNhdGVnb3J5LXZp
ZGVvLXBhdXNlZC5odG1sCiB3ZWJraXQub3JnL2IvMTk1NDY2IGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50
cy9yZWFkeS1zdGF0ZXMvYXV0b3BsYXkuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiB3ZWJraXQub3Jn
L2IvMTk1NDY2IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3Mv
ZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9lcnJvci1jb2Rlcy9lcnJvci5odG1sIFsg
UGFzcyBGYWlsdXJlIF0KIAotd2Via2l0Lm9yZy9iLzE5MzM5OSBtZWRpYS9tZWRpYS1mdWxsc2Ny
ZWVuLXJldHVybi10by1pbmxpbmUuaHRtbCBbIFBhc3MgVGltZW91dCBDcmFzaCBdCit3ZWJraXQu
b3JnL2IvMTkzMzk5IG1lZGlhL21lZGlhLWZ1bGxzY3JlZW4tcmV0dXJuLXRvLWlubGluZS5odG1s
IFsgUGFzcyBUaW1lb3V0IF0KIAogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9oYW5k
c2hha2Utb2std2l0aC1sZWdhY3ktc2VjLXdlYnNvY2tldC1yZXNwb25zZS1oZWFkZXJzLmh0bWwg
WyBQYXNzIEZhaWx1cmUgXQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>