<?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>199960</bug_id>
          
          <creation_ts>2019-07-19 14:28:42 -0700</creation_ts>
          <short_desc>[iOS] ASSERTION FAILURE: !isMissingPostLayoutData in WebKit::EditorState::postLayoutData()</short_desc>
          <delta_ts>2020-03-29 17:49:38 -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>WebKit Misc.</component>
          <version>WebKit Local Build</version>
          <rep_platform>iPhone / iPad</rep_platform>
          <op_sys>iOS 12</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=200399</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=200400</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=209570</see_also>
          <bug_file_loc>data:text/html,&lt;textarea%20placeholder=&quot;Type%20w%20then%20press%20backspace&quot;%20onkeydown=&quot;document.getElementById(&apos;output&apos;).value%20=%20document.getElementById(&apos;output&apos;).value%20+%20&apos;\n&apos;&quot;&gt;&lt;/textarea&gt;&lt;textarea%20id=&quot;output&quot;%20readonly&gt;&lt;/textarea&gt;</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar, PlatformOnly</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>201608</dependson>
          <blocked>209570</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Daniel Bates">dbates</reporter>
          <assigned_to name="Daniel Bates">dbates</assigned_to>
          <cc>aperez</cc>
    
    <cc>berto</cc>
    
    <cc>cgarcia</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gustavo</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1554316</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-07-19 14:28:42 -0700</bug_when>
    <thetext>Steps to reproduce:

(Use the software keyboard)

1. Visit &lt;data:text/html,&lt;textarea%20placeholder=&quot;Type%20w%20then%20press%20backspace&quot;%20onkeydown=&quot;document.getElementById(&apos;output&apos;).value%20=%20document.getElementById(&apos;output&apos;).value%20+%20&apos;\n&apos;&quot;&gt;&lt;/textarea&gt;&lt;textarea%20id=&quot;output&quot;%20readonly&gt;&lt;/textarea&gt;&gt;.

2. Focus the first textarea and press w then press the backspace.

Then the WebContent process will crash because the ASSERT_WITH_MESSAGE(!isMissingPostLayoutData, &quot;Attempt to access post layout data before receiving it&quot;) fails in WebKit::EditorState::postLayoutData().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1554317</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-07-19 14:28:57 -0700</bug_when>
    <thetext>&lt;rdar://problem/53323966&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1554319</commentid>
    <comment_count>2</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-07-19 14:30:07 -0700</bug_when>
    <thetext>Backtrace has the form:

ASSERTION FAILED: Attempt to access post layout data before receiving it
!isMissingPostLayoutData
/Volumes/.../OpenSource/Source/WebKit/Shared/EditorState.h(150) : const WebKit::EditorState::PostLayoutData &amp;WebKit::EditorState::postLayoutData() const
1   0x111c5e1c9 WTFCrash
2   0x11684e6db WebKit::EditorState::postLayoutData() const
3   0x11773b7f9 -[WKContentView(WKInteraction) _characterBeforeCaretSelection]
...
17  0x11774033d WTF::BlockPtr&lt;void (WebEvent*, bool)&gt;::operator()(WebEvent*, bool) const
18  0x117740195 -[WKContentView(WKInteraction) _didHandleKeyEvent:eventWasHandled:]
19  0x116d28319 WebKit::PageClientImpl::doneWithKeyEvent(WebKit::NativeWebKeyboardEvent const&amp;, bool)
20  0x116b689f9 WebKit::WebPageProxy::didReceiveEvent(unsigned int, bool)
21  0x11750f848 void IPC::callMemberFunctionImpl&lt;WebKit::WebPageProxy, void (WebKit::WebPageProxy::*)(unsigned int, bool), std::__1::tuple&lt;unsigned int, bool&gt;, 0ul, 1ul&gt;(WebKit::WebPageProxy*, void (WebKit::WebPageProxy::*)(unsigned int, bool), std::__1::tuple&lt;unsigned int, bool&gt;&amp;&amp;, std::__1::integer_sequence&lt;unsigned long, 0ul, 1ul&gt;)
22  0x11750f780 void IPC::callMemberFunction&lt;WebKit::WebPageProxy, void (WebKit::WebPageProxy::*)(unsigned int, bool), std::__1::tuple&lt;unsigned int, bool&gt;, std::__1::integer_sequence&lt;unsigned long, 0ul, 1ul&gt; &gt;(std::__1::tuple&lt;unsigned int, bool&gt;&amp;&amp;, WebKit::WebPageProxy*, void (WebKit::WebPageProxy::*)(unsigned int, bool))
23  0x1174f4e2e void IPC::handleMessage&lt;Messages::WebPageProxy::DidReceiveEvent, WebKit::WebPageProxy, void (WebKit::WebPageProxy::*)(unsigned int, bool)&gt;(IPC::Decoder&amp;, WebKit::WebPageProxy*, void (WebKit::WebPageProxy::*)(unsigned int, bool))
24  0x1174ecfdc WebKit::WebPageProxy::didReceiveMessage(IPC::Connection&amp;, IPC::Decoder&amp;)
25  0x1162a26f9 IPC::MessageReceiverMap::dispatchMessage(IPC::Connection&amp;, IPC::Decoder&amp;)
26  0x1169e7f64 WebKit::AuxiliaryProcessProxy::dispatchMessage(IPC::Connection&amp;, IPC::Decoder&amp;)
27  0x116c4a5fa WebKit::WebProcessProxy::didReceiveMessage(IPC::Connection&amp;, IPC::Decoder&amp;)
28  0x116234e19 IPC::Connection::dispatchMessage(IPC::Decoder&amp;)
29  0x11622d969 IPC::Connection::dispatchMessage(std::__1::unique_ptr&lt;IPC::Decoder, std::__1::default_delete&lt;IPC::Decoder&gt; &gt;)
30  0x116233cab IPC::Connection::dispatchIncomingMessages()
31  0x116254425 IPC::Connection::enqueueIncomingMessage(std::__1::unique_ptr&lt;IPC::Decoder, std::__1::default_delete&lt;IPC::Decoder&gt; &gt;)::$_11::operator()()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1554320</commentid>
    <comment_count>3</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-07-19 14:30:27 -0700</bug_when>
    <thetext>^^^ the ... is UIKit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1554322</commentid>
    <comment_count>4</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-07-19 14:32:45 -0700</bug_when>
    <thetext>This assertion failure only happens in Modern WebKit (read not Legacy WebKit). The reason is that Modern WebKit tries to avoid performing a layout as part of gathering editor state as a performance optimization. Legacy has no such optimization and performs a layout after handling every keydown and keyup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1554323</commentid>
    <comment_count>5</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-07-19 14:33:47 -0700</bug_when>
    <thetext>Also does not happen on Mac because WebCore performs text insertion/deletion and updates layout in same even loop iteration as keydown.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1554325</commentid>
    <comment_count>6</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-07-19 14:35:50 -0700</bug_when>
    <thetext>Doesn&apos;t occur with a hardware keyboard attached on iOS because we force layout in WebPage::platformEditorState():&lt;https://trac.webkit.org/browser/trunk/Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm?rev=247573#L224&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1554327</commentid>
    <comment_count>7</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-07-19 14:39:18 -0700</bug_when>
    <thetext>^^^^ though this is the editor state computed when we call to UI process to interpret the key event. But this info is out-of-date since layout can change as a result of JavaScript and editor state the UI process does not have the most up-to-date details by the time the Web process tells it that the key event has been processed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1554329</commentid>
    <comment_count>8</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-07-19 14:44:38 -0700</bug_when>
    <thetext>We might be able to get away with ^^^^. So, not having the most up-to-date info. I coded up a fix (forthcoming) so that UI process has the most up-to-date info.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1554333</commentid>
    <comment_count>9</comment_count>
      <attachid>374498</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-07-19 14:54:51 -0700</bug_when>
    <thetext>Created attachment 374498
Patch and layout test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1554341</commentid>
    <comment_count>10</comment_count>
      <attachid>374498</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-07-19 15:09:25 -0700</bug_when>
    <thetext>Comment on attachment 374498
Patch and layout test

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

&gt; Source/WebKit/WebProcess/WebCoreSupport/ios/WebEditorClientIOS.mm:44
&gt; +    page.corePage()-&gt;focusController().focusedOrMainFrame().document()-&gt;updateLayout();

Be aware that this can run arbitrary script and destroy frames, nodes etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1554343</commentid>
    <comment_count>11</comment_count>
      <attachid>374498</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-07-19 15:11:30 -0700</bug_when>
    <thetext>Comment on attachment 374498
Patch and layout test

Let me think about this some more. Don&apos;t want to have this explode with security bugs. Maybe go with the stale data....</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1554359</commentid>
    <comment_count>12</comment_count>
      <attachid>374508</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-07-19 15:29:56 -0700</bug_when>
    <thetext>Created attachment 374508
Patch and layout test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1554400</commentid>
    <comment_count>13</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-07-19 16:27:36 -0700</bug_when>
    <thetext>Going to re-encode the fix in terms of an new editorState() enum.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1554860</commentid>
    <comment_count>14</comment_count>
      <attachid>374635</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-07-22 14:29:30 -0700</bug_when>
    <thetext>Created attachment 374635
Patch and layout test - encoded in enum</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1554863</commentid>
    <comment_count>15</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-07-22 14:32:56 -0700</bug_when>
    <thetext>The patch also removes m_isEditorStateMissingPostLayoutData in WebPage.h. This ivar has been unused since r221064 (bug #175370).

Also we haven&apos;t been using IncludePostLayoutDataHint::No since the last reference to it was removed in r244494 (bug #197145).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1554867</commentid>
    <comment_count>16</comment_count>
      <attachid>374637</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-07-22 14:35:11 -0700</bug_when>
    <thetext>Created attachment 374637
Patch and layout test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1554871</commentid>
    <comment_count>17</comment_count>
      <attachid>374638</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-07-22 14:49:05 -0700</bug_when>
    <thetext>Created attachment 374638
Patch and layout test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1554973</commentid>
    <comment_count>18</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-07-22 19:18:57 -0700</bug_when>
    <thetext>Forgot the expected results. Could probably use auto more at least on lines I touched. Could size the enum class to char, but since not a store type there&apos;s little value. I guess more efficient register passing and stack pack if register spill, but we&apos;re not even close to having enough args to matter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1554976</commentid>
    <comment_count>19</comment_count>
      <attachid>374638</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-07-22 19:26:59 -0700</bug_when>
    <thetext>Comment on attachment 374638
Patch and layout test

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

&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:1015
&gt; +    Ref&lt;Frame&gt; frame = m_page-&gt;focusController().focusedOrMainFrame();

FYI scope of ref here is generous. Could move to above updateLayout(). I thought to be generous 😀

&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:1017
&gt; +    if (shouldPerformLayout == ShouldPerformLayout::Default)

The ::No is only used internal to this function. There are no outside callers. Could just remove this enumerator and internally store a Boolean. Enum class could then be sized to bool (doesn&apos;t matter though), but gives less options for people to shoot themselves in the 🦶 (that&apos;s what matters). Opinions?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1556155</commentid>
    <comment_count>20</comment_count>
      <attachid>374973</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-07-26 10:54:40 -0700</bug_when>
    <thetext>Created attachment 374973
Patch and layout test

Removed enumerator ShouldPerformLayout::No; only ::Default and ::Yes now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564253</commentid>
    <comment_count>21</comment_count>
      <attachid>377056</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-08-22 14:58:22 -0700</bug_when>
    <thetext>Created attachment 377056
Patch and layout test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1631346</commentid>
    <comment_count>22</comment_count>
      <attachid>393899</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-18 13:51:16 -0700</bug_when>
    <thetext>Created attachment 393899
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1631348</commentid>
    <comment_count>23</comment_count>
      <attachid>393900</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-18 13:55:40 -0700</bug_when>
    <thetext>Created attachment 393900
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1631375</commentid>
    <comment_count>24</comment_count>
      <attachid>393900</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-03-18 14:50:57 -0700</bug_when>
    <thetext>Comment on attachment 393900
Patch

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

&gt; Source/WebKit/WebProcess/WebPage/Cocoa/WebPageCocoa.mm:316
&gt; +void WebPage::platformEditorStateCommon(const Frame&amp; frame, EditorState&amp; result) const

This should be getEditorStateCommon or computeEditorStateCommon.

&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:1067
&gt; +    auto&amp; document = *frame-&gt;document();

RefPtr&lt;Document&gt;?

&gt; Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm:237
&gt; +void WebPage::platformEditorState(Frame&amp; frame, EditorState&amp; result) const

get/computeEditorState.

&gt; Source/WebKit/WebProcess/WebPage/mac/WebPageMac.mm:136
&gt; +void WebPage::platformEditorState(Frame&amp; frame, EditorState&amp; result) const

get/compute</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1633572</commentid>
    <comment_count>25</comment_count>
      <attachid>393900</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-24 15:30:23 -0700</bug_when>
    <thetext>Comment on attachment 393900
Patch

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

Thanks for the review.

&gt;&gt; Source/WebKit/WebProcess/WebPage/Cocoa/WebPageCocoa.mm:316
&gt;&gt; +void WebPage::platformEditorStateCommon(const Frame&amp; frame, EditorState&amp; result) const
&gt; 
&gt; This should be getEditorStateCommon or computeEditorStateCommon.

Will use get.

&gt;&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:1067
&gt;&gt; +    auto&amp; document = *frame-&gt;document();
&gt; 
&gt; RefPtr&lt;Document&gt;?

Will fix.

&gt;&gt; Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm:237
&gt;&gt; +void WebPage::platformEditorState(Frame&amp; frame, EditorState&amp; result) const
&gt; 
&gt; get/computeEditorState.

Will use get.

&gt;&gt; Source/WebKit/WebProcess/WebPage/mac/WebPageMac.mm:136
&gt;&gt; +void WebPage::platformEditorState(Frame&amp; frame, EditorState&amp; result) const
&gt; 
&gt; get/compute

Will use get.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1633624</commentid>
    <comment_count>26</comment_count>
      <attachid>394432</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-24 16:04:43 -0700</bug_when>
    <thetext>Created attachment 394432
To Land</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1633748</commentid>
    <comment_count>27</comment_count>
      <attachid>394464</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-24 19:54:06 -0700</bug_when>
    <thetext>Created attachment 394464
To Land</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1633796</commentid>
    <comment_count>28</comment_count>
      <attachid>394472</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-24 23:14:36 -0700</bug_when>
    <thetext>Created attachment 394472
To Land

Fix up Playstation code. I still do not know what is the problem with the GTK API tests. Can someone help me?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1633799</commentid>
    <comment_count>29</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-24 23:24:34 -0700</bug_when>
    <thetext>GTK API failure is buried in the output:

[[
ERROR:../../Tools/TestWebKitAPI/Tests/WebKitGtk/TestWebViewEditor.cpp:341:void testWebViewEditorEditorStateTypingAttributes(EditorTest*, gconstpointer): assertion failed (typingAttributes == WEBKIT_EDITOR_TYPING_ATTRIBUTE_NONE): (0 == 2)
]]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1633802</commentid>
    <comment_count>30</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-24 23:49:23 -0700</bug_when>
    <thetext>(In reply to Daniel Bates from comment #29)
&gt; GTK API failure is buried in the output:
&gt; 
&gt; [[
&gt; ERROR:../../Tools/TestWebKitAPI/Tests/WebKitGtk/TestWebViewEditor.cpp:341:
&gt; void testWebViewEditorEditorStateTypingAttributes(EditorTest*,
&gt; gconstpointer): assertion failed (typingAttributes ==
&gt; WEBKIT_EDITOR_TYPING_ATTRIBUTE_NONE): (0 == 2)
&gt; ]]

To fix this I am leaning to patch webkitEditorStateCreate() to initialize editorState-&gt;priv-&gt;typingAttributes to WEBKIT_EDITOR_TYPING_ATTRIBUTE_NONE.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1633803</commentid>
    <comment_count>31</comment_count>
      <attachid>394474</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-25 00:21:39 -0700</bug_when>
    <thetext>Created attachment 394474
Attempt to fix GTK

I am too tired to think this through right now, just posting a patch based on my previous comment to see what EWS thinks (since it takes some time for EWS to process a patch). Patch may not be correct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1633804</commentid>
    <comment_count>32</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2020-03-25 00:22:20 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1633812</commentid>
    <comment_count>33</comment_count>
      <attachid>394474</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2020-03-25 02:18:43 -0700</bug_when>
    <thetext>Comment on attachment 394474
Attempt to fix GTK

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

I believe that the change to glib/WebKitEditorState.cpp are correct,
but would not mind having Carlos García&apos;s rubber stamp on that ~_~

&gt; Source/WebKit/WebProcess/WebPage/Cocoa/WebPageCocoa.mm:317
&gt; +

No need to add this empty line here :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1633817</commentid>
    <comment_count>34</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-03-25 02:39:03 -0700</bug_when>
    <thetext>(In reply to Adrian Perez from comment #33)
&gt; Comment on attachment 394474 [details]
&gt; Attempt to fix GTK
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=394474&amp;action=review
&gt; 
&gt; I believe that the change to glib/WebKitEditorState.cpp are correct,
&gt; but would not mind having Carlos García&apos;s rubber stamp on that ~_~

LGTM

&gt; &gt; Source/WebKit/WebProcess/WebPage/Cocoa/WebPageCocoa.mm:317
&gt; &gt; +
&gt; 
&gt; No need to add this empty line here :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1633908</commentid>
    <comment_count>35</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-25 09:48:26 -0700</bug_when>
    <thetext>Thanks Adrian and Carlos!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1633912</commentid>
    <comment_count>36</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-25 09:50:35 -0700</bug_when>
    <thetext>Committed r258989: &lt;https://trac.webkit.org/changeset/258989&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1633916</commentid>
    <comment_count>37</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-25 10:00:48 -0700</bug_when>
    <thetext>(In reply to Adrian Perez from comment #33)
&gt; Comment on attachment 394474 [details]
&gt; Attempt to fix GTK
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=394474&amp;action=review
&gt; 
&gt; I believe that the change to glib/WebKitEditorState.cpp are correct,
&gt; but would not mind having Carlos García&apos;s rubber stamp on that ~_~
&gt; 
&gt; &gt; Source/WebKit/WebProcess/WebPage/Cocoa/WebPageCocoa.mm:317
&gt; &gt; +
&gt; 
&gt; No need to add this empty line here :)

Oops, I forgot to remove it. When I have a moment, I&apos;ll look to do so.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1633936</commentid>
    <comment_count>38</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-25 10:32:41 -0700</bug_when>
    <thetext>(In reply to Daniel Bates from comment #37)
&gt; (In reply to Adrian Perez from comment #33)
&gt; &gt; Comment on attachment 394474 [details]
&gt; &gt; Attempt to fix GTK
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=394474&amp;action=review
&gt; &gt; 
&gt; &gt; I believe that the change to glib/WebKitEditorState.cpp are correct,
&gt; &gt; but would not mind having Carlos García&apos;s rubber stamp on that ~_~
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/WebProcess/WebPage/Cocoa/WebPageCocoa.mm:317
&gt; &gt; &gt; +
&gt; &gt; 
&gt; &gt; No need to add this empty line here :)
&gt; 
&gt; Oops, I forgot to remove it. When I have a moment, I&apos;ll look to do so.

Removed in &lt;https://trac.webkit.org/changeset/258995&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635376</commentid>
    <comment_count>39</comment_count>
      <attachid>394474</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-03-29 14:07:54 -0700</bug_when>
    <thetext>Comment on attachment 394474
Attempt to fix GTK

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

&gt; Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm:-261
&gt; -    if ((shouldIncludePostLayoutData == IncludePostLayoutDataHint::No || needsLayout) &amp;&amp; !requiresPostLayoutData) {
&gt; -        result.isMissingPostLayoutData = true;
&gt; +    if (needsLayout || result.isMissingPostLayoutData)
&gt;          return;
&gt; -    }

This change broke the Mac Catalyst build.

After this refactoring, the requiresPostLayoutData boolean local variable above is unused. In the Mac Catalyst configuration the code is simple enough that the compiler emits a warning about the unused boolean; in other configurations it doesn’t warn. I believe the fix is to remove the 4 lines of code above that define and set the value of the local variable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635383</commentid>
    <comment_count>40</comment_count>
      <attachid>394474</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-29 17:41:23 -0700</bug_when>
    <thetext>Comment on attachment 394474
Attempt to fix GTK

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

&gt;&gt; Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm:-261
&gt;&gt; -    }
&gt; 
&gt; This change broke the Mac Catalyst build.
&gt; 
&gt; After this refactoring, the requiresPostLayoutData boolean local variable above is unused. In the Mac Catalyst configuration the code is simple enough that the compiler emits a warning about the unused boolean; in other configurations it doesn’t warn. I believe the fix is to remove the 4 lines of code above that define and set the value of the local variable.

Oops! Bad merge...  Here&apos;s the fix, I got to run, but I&apos;ll try to post later:

[[
diff --git a/Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm b/Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm
index 47c620d0478..fe664b6e41b 100644
--- a/Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm
+++ b/Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm
@@ -260,14 +260,8 @@ void WebPage::getPlatformEditorState(Frame&amp; frame, EditorState&amp; result) const
     }
 
     // We only set the remaining EditorState entries if layout is done as a performance optimization
-    // to avoid the need to force a synchronous layout here to compute these entries. If we
-    // have a composition or are using a hardware keyboard then we send the full editor state
-    // immediately so that the UIProcess can update UI, including the position of the caret.
+    // to avoid the need to force a synchronous layout here to compute these entries.
     bool needsLayout = view-&gt;needsLayout();
-    bool requiresPostLayoutData = frame.editor().hasComposition();
-#if !PLATFORM(MACCATALYST)
-    requiresPostLayoutData |= m_keyboardIsAttached;
-#endif
     if (needsLayout || result.isMissingPostLayoutData)
         return;
]]

Why is this the fix? Because I moved the old logic into WebPage::platformNeedsLayoutForEditorState(), which is called before this function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635384</commentid>
    <comment_count>41</comment_count>
      <attachid>394474</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-03-29 17:49:38 -0700</bug_when>
    <thetext>Comment on attachment 394474
Attempt to fix GTK

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

&gt;&gt;&gt; Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm:-261
&gt;&gt;&gt; -    }
&gt;&gt; 
&gt;&gt; This change broke the Mac Catalyst build.
&gt;&gt; 
&gt;&gt; After this refactoring, the requiresPostLayoutData boolean local variable above is unused. In the Mac Catalyst configuration the code is simple enough that the compiler emits a warning about the unused boolean; in other configurations it doesn’t warn. I believe the fix is to remove the 4 lines of code above that define and set the value of the local variable.
&gt; 
&gt; Oops! Bad merge...  Here&apos;s the fix, I got to run, but I&apos;ll try to post later:
&gt; 
&gt; [[
&gt; diff --git a/Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm b/Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm
&gt; index 47c620d0478..fe664b6e41b 100644
&gt; --- a/Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm
&gt; +++ b/Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm
&gt; @@ -260,14 +260,8 @@ void WebPage::getPlatformEditorState(Frame&amp; frame, EditorState&amp; result) const
&gt;      }
&gt;  
&gt;      // We only set the remaining EditorState entries if layout is done as a performance optimization
&gt; -    // to avoid the need to force a synchronous layout here to compute these entries. If we
&gt; -    // have a composition or are using a hardware keyboard then we send the full editor state
&gt; -    // immediately so that the UIProcess can update UI, including the position of the caret.
&gt; +    // to avoid the need to force a synchronous layout here to compute these entries.
&gt;      bool needsLayout = view-&gt;needsLayout();
&gt; -    bool requiresPostLayoutData = frame.editor().hasComposition();
&gt; -#if !PLATFORM(MACCATALYST)
&gt; -    requiresPostLayoutData |= m_keyboardIsAttached;
&gt; -#endif
&gt;      if (needsLayout || result.isMissingPostLayoutData)
&gt;          return;
&gt; ]]
&gt; 
&gt; Why is this the fix? Because I moved the old logic into WebPage::platformNeedsLayoutForEditorState(), which is called before this function.

Got a spare minute and committed the fix in &lt;https://trac.webkit.org/changeset/259183&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>374498</attachid>
            <date>2019-07-19 14:54:51 -0700</date>
            <delta_ts>2019-07-19 15:29:55 -0700</delta_ts>
            <desc>Patch and layout test</desc>
            <filename>bug-199960-20190719145451.patch</filename>
            <type>text/plain</type>
            <size>8442</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ3NTczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGY5MGE5OTg5NTFmZTZlYmU0
MmQ0NTE4NWNmOWM1ZDA2NzJmNDg2NWIuLjhkNDNjODg5M2MxN2QxMjc3YWY3ZmViNDdmOWNkNjBj
ZjdlZmE5N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTktMDctMTkgIERhbmllbCBC
YXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIEFTU0VSVElPTiBGQUlM
VVJFOiAhaXNNaXNzaW5nUG9zdExheW91dERhdGEgaW4gV2ViS2l0OjpFZGl0b3JTdGF0ZTo6cG9z
dExheW91dERhdGEoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTk5OTYwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81MzMyMzk2Nj4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQZXJmb3JtIGEgbGF5b3V0
IChpZiBuZWVkZWQpIGFuZCBzZW5kIGFuIGVkaXRvciBzdGF0ZSB1cGRhdGUgKHRoaXMgaXMgYSAi
ZnVsbCB1cGRhdGUiKSB3aGVuZXZlcgorICAgICAgICBXZWJLaXQvVUlLaXQgd2lsbCBoYW5kbGUg
YSBrZXkgZXZlbnQuIEEgZnVsbCBlZGl0b3Igc3RhdGUgdXBkYXRlIGlzIG5lZWRlZCBmb3IgVUlL
aXQgdG8gcGVyZm9ybQorICAgICAgICBhIGRlbGV0aW9uIGJlY2F1c2UgVUlLaXQgd2FudHMgdG8g
a25vdyBob3cgbWFueSBjaGFyYWN0ZXJzIGFyZSBiZWZvcmUgdGhlIHNlbGVjdGlvbi4gT3RoZXJ3
aXNlLAorICAgICAgICB3ZSBoaXQgYW4gYXNzZXJ0IGR1ZSB0byB0aGUgZmFjdCB0aGUgbGFzdCBl
ZGl0b3Igc3RhdGUgc2VudCAod2hlbiB0aGUgV2ViIHByb2Nlc3MgYXNrZWQgdGhlIFVJCisgICAg
ICAgIHByb2Nlc3MgdG8gaW50ZXJwcmV0IHRoZSBrZXkpIGlzIG1pc3NpbmcgbGF5b3V0IGRhdGEu
CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJFZGl0b3JDbGll
bnRJT1MubW06CisgICAgICAgIChXZWJLaXQ6OnVwZGF0ZUVkaXRvclN0YXRlKTogQWRkZWQuIFVw
ZGF0ZSBsYXlvdXQgYW5kIHRoZW4gdHJpZ2dlciBhbiBlZGl0b3Igc3RhdGUgdXBkYXRlLgorICAg
ICAgICBUaGUgcmVhc29uIGZvciB0aGUgdXBkYXRlIGlzIHRoYXQgdGhlIGNvbnRlbnQgbWF5IGJl
IGNoYW5nZWQgCisgICAgICAgIChXZWJLaXQ6OldlYkVkaXRvckNsaWVudDo6aGFuZGxlS2V5Ym9h
cmRFdmVudCk6IENhbGwgdXBkYXRlRWRpdG9yU3RhdGUoKS4KKyAgICAgICAgKFdlYktpdDo6V2Vi
RWRpdG9yQ2xpZW50OjpoYW5kbGVJbnB1dE1ldGhvZEtleWRvd24pOiBEaXR0by4KKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OmRpZEhhbmRsZUtleWJvYXJkRXZlbnQpOiBBZGRlZC4gU2VuZCBhbiBlZGl0b3Igc3RhdGUg
dXBkYXRlLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisKIDIwMTkt
MDctMTggIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1Nd
IFJFR1JFU1NJT04gKHIyNDE3MzQpOiBBdXRvY29ycmVjdGlvbiBoaWdobGlnaHQgc2hvdWxkIGhp
ZGUgd2hlbiBmaWVsZCBiZWNvbWVzIGRlZm9jdXNlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJFZGl0b3JDbGllbnRJT1MubW0gYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYkVkaXRvckNsaWVu
dElPUy5tbQppbmRleCA4YjczMzZkODY1YWI3MDBhMjQwYzBkNTBhMzM3ZDg3ODM3M2I2MTYyLi4w
YTBkOGFjZDhjMGYzYjY2ZjA4NzQ2MThjMTE0ZDU2MTZjZjAxZTQzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYkVkaXRvckNsaWVudElP
Uy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dl
YkVkaXRvckNsaWVudElPUy5tbQpAQCAtMjksMjQgKzI5LDM3IEBACiAjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKIAogI2ltcG9ydCAiV2ViUGFnZS5oIgorI2ltcG9ydCA8V2ViQ29yZS9Eb2N1bWVu
dC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Eb2N1bWVudEZyYWdtZW50Lmg+CisjaW1wb3J0IDxXZWJD
b3JlL0ZvY3VzQ29udHJvbGxlci5oPgorI2ltcG9ydCA8V2ViQ29yZS9GcmFtZS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9LZXlib2FyZEV2ZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL05vdEltcGxlbWVu
dGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0g
ICAgCisKK3N0YXRpYyBpbmxpbmUgdm9pZCB1cGRhdGVFZGl0b3JTdGF0ZShXZWJQYWdlJiBwYWdl
KQoreworICAgIHBhZ2UuY29yZVBhZ2UoKS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFp
bkZyYW1lKCkuZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0KCk7CisgICAgcGFnZS5kaWRIYW5kbGVL
ZXlib2FyZEV2ZW50KCk7Cit9CisKIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpoYW5kbGVLZXlib2Fy
ZEV2ZW50KEtleWJvYXJkRXZlbnQmIGV2ZW50KQogewotICAgIGlmIChtX3BhZ2UtPmhhbmRsZUVk
aXRpbmdLZXlib2FyZEV2ZW50KGV2ZW50KSkKKyAgICBpZiAobV9wYWdlLT5oYW5kbGVFZGl0aW5n
S2V5Ym9hcmRFdmVudChldmVudCkpIHsKICAgICAgICAgZXZlbnQuc2V0RGVmYXVsdEhhbmRsZWQo
KTsKKyAgICAgICAgdXBkYXRlRWRpdG9yU3RhdGUoKm1fcGFnZSk7CisgICAgfQogfQogCiB2b2lk
IFdlYkVkaXRvckNsaWVudDo6aGFuZGxlSW5wdXRNZXRob2RLZXlkb3duKEtleWJvYXJkRXZlbnQm
IGV2ZW50KQogewogI2lmIFVTRShVSUtJVF9LRVlCT0FSRF9BRERJVElPTlMpCi0gICAgaWYgKGV2
ZW50LmhhbmRsZWRCeUlucHV0TWV0aG9kKCkpCisgICAgaWYgKGV2ZW50LmhhbmRsZWRCeUlucHV0
TWV0aG9kKCkpIHsKICAgICAgICAgZXZlbnQuc2V0RGVmYXVsdEhhbmRsZWQoKTsKKyAgICAgICAg
dXBkYXRlRWRpdG9yU3RhdGUoKm1fcGFnZSk7CisgICAgfQogI2Vsc2UKICAgICBub3RJbXBsZW1l
bnRlZCgpOwogICAgIFVOVVNFRF9QQVJBTShldmVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDEwOTQ0ZjczOGRhNGVjY2MzMmM2MDY3ZGY0
N2FmNGM2YWFlMjRlZjAuLjVlZTMxZTJlYTE1YWU0ODllZTBiMjVhM2E1YjlkZWM2ODNkMmViMzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC01
MzgwLDYgKzUzODAsMTUgQEAgdm9pZCBXZWJQYWdlOjpkaWRDaGFuZ2VTZWxlY3Rpb24oKQogICAg
IGRpZENoYW5nZVNlbGVjdGlvbk9yT3ZlcmZsb3dTY3JvbGxQb3NpdGlvbigpOwogfQogCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKKwordm9pZCBXZWJQYWdlOjpkaWRIYW5kbGVLZXlib2FyZEV2
ZW50KCkKK3sKKyAgICBzZW5kRWRpdG9yU3RhdGVVcGRhdGUoKTsKK30KKworI2VuZGlmCisKIHZv
aWQgV2ViUGFnZTo6ZGlkQ2hhbmdlU2VsZWN0aW9uT3JPdmVyZmxvd1Njcm9sbFBvc2l0aW9uKCkK
IHsKICAgICBGcmFtZSYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRP
ck1haW5GcmFtZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
CmluZGV4IGIxNWQ2Yjg2ODc2MjU3YzZhNGVlMWZlODcwZTE5MzYwNjZiOWU2NDUuLjk2Mjc0ODli
ZDRlZjM0Y2M4NzkwYmZiMDAxNjE5YmI1MWI1NWJiMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTc4Miw2ICs3ODIsMTAgQEAgcHVibGljOgogICAg
IHZvaWQgZGlkVXBkYXRlQ29tcG9zaXRpb24oKTsKICAgICB2b2lkIGRpZEVuZFVzZXJUcmlnZ2Vy
ZWRTZWxlY3Rpb25DaGFuZ2VzKCk7CiAKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIHZv
aWQgZGlkSGFuZGxlS2V5Ym9hcmRFdmVudCgpOworI2VuZGlmCisKICNpZiBQTEFURk9STShDT0NP
QSkKICAgICB2b2lkIHJlZ2lzdGVyVUlQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2Vucyhjb25zdCBJ
UEM6OkRhdGFSZWZlcmVuY2UmIGVsZW1lblRva2VuLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2Um
IHdpbmRvd1Rva2VuKTsKICAgICBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0KiBhY2Nlc3Np
YmlsaXR5UmVtb3RlT2JqZWN0KCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNjk2OWZiMWQ1ZWZmNWZmZmQ2MTRhNjY4YmY3
NmViNGUyYzA4ZTZjOC4uYjlmMzFmN2NmOWMzZmM4YWI2MGMyYjNhZDEwYmQ3N2YxMDExOWU3YSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE5LTA3LTE5ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVz
QGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBBU1NFUlRJT04gRkFJTFVSRTogIWlzTWlzc2lu
Z1Bvc3RMYXlvdXREYXRhIGluIFdlYktpdDo6RWRpdG9yU3RhdGU6OnBvc3RMYXlvdXREYXRhKCkK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5OTk2MAor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTMzMjM5NjY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgdGVzdCB0byBlbnN1cmUgd2UgZG8gbm90
IGFzc2VydCB3aGVuIHVzaW5nIHRoZSBzb2Z0d2FyZSBrZXlib2FyZCB0byB0eXBlIGEgY2hhcmFj
dGVyCisgICAgICAgIGludG8gYSA8dGV4dGFyZWE+IGFuZCB0aGVuIGRlbGV0ZSBpdC4KKworICAg
ICAgICAqIFRlc3RFeHBlY3RhdGlvbnM6IFNraXAgdGVzdHMgaW4gZWRpdGluZy9kZWxldGluZy9p
b3Mgb24gYWxsIHBsYXRmb3Jtcy4KKyAgICAgICAgKiBlZGl0aW5nL2RlbGV0aW5nL2lvcy9iYWNr
c3BhY2UtbGFzdC1jaGFyYWN0ZXIuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vaW9z
L1Rlc3RFeHBlY3RhdGlvbnM6IFVuc2tpcCB0ZXN0cyBpbiBlZGl0aW5nL2RlbGV0aW5nL2lvcyBv
biBpT1MuCisKIDIwMTktMDctMTggIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4K
IAogICAgICAgICBbUG9pbnRlciBFdmVudHNdIFRoZSBidXR0b24gYW5kIGJ1dHRvbnMgcHJvcGVy
dGllcyBhcmUgaW5jb3JyZWN0IG9uIGlPUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvVGVzdEV4
cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggOWFiZDVlMTNm
MjU2N2NlNzVjOTU2NzM1ZDBhYWY3NDc4YTc2NDdiYy4uYmQwZWVhOGY5ZTA1ODA0NzU1OWRlNzJh
ZGVhYmI2YmNmOGUxZTZhNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9u
cworKysgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCkBAIC0xOSw2ICsxOSw3IEBAIGVk
aXRpbmcvaW5wdXQvaW9zIFsgU2tpcCBdCiBlZGl0aW5nL2ZpbmQgWyBTa2lwIF0KIGVkaXRpbmcv
cGFzdGVib2FyZC9ndGsgWyBTa2lwIF0KIGVkaXRpbmcvc2VsZWN0aW9uL2lvcyBbIFNraXAgXQor
ZWRpdGluZy9kZWxldGluZy9pb3MgWyBTa2lwIF0KIGVkaXRpbmcvdW5kby1tYW5hZ2VyIFsgU2tp
cCBdCiB0aWxlZC1kcmF3aW5nIFsgU2tpcCBdCiBmYXN0L2Nzcy93YXRjaG9zIFsgU2tpcCBdCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL2RlbGV0aW5nL2lvcy9iYWNrc3BhY2UtbGFz
dC1jaGFyYWN0ZXIuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvZGVsZXRpbmcvaW9zL2JhY2tz
cGFjZS1sYXN0LWNoYXJhY3Rlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg0MjgzNzhmYTcyZjcyYWY1YjEy
MWNmYWM1N2U2NWE2ODFhYTY5OTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0
aW5nL2RlbGV0aW5nL2lvcy9iYWNrc3BhY2UtbGFzdC1jaGFyYWN0ZXIuaHRtbApAQCAtMCwwICsx
LDQ2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
ZGl2IGlkPSJ0ZXN0LWNvbnRhaW5lciI+CisgICAgPHRleHRhcmVhIGlkPSJpbnB1dCI+PC90ZXh0
YXJlYT4KKyAgICA8dGV4dGFyZWEgaWQ9Im91dHB1dCIgcmVhZG9ubHk+PC90ZXh0YXJlYT4KKzwv
ZGl2PgorPHNjcmlwdD4KK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworbGV0IGlucHV0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImlucHV0Iik7CisKK2Z1bmN0aW9uIGFwcGVuZEFO
ZXdsaW5lKCkKK3sKKyAgICBsZXQgb3V0cHV0RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJvdXRwdXQiKTsKKyAgICBvdXRwdXRFbGVtZW50LnZhbHVlID0gb3V0cHV0RWxlbWVudC52
YWx1ZSArICJcbiI7Cit9CisKK2FzeW5jIGZ1bmN0aW9uIHJ1blRlc3QoKQoreworICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgYXdhaXQgVUlIZWxwZXIuc2V0SGFyZHdhcmVLZXli
b2FyZEF0dGFjaGVkKGZhbHNlKTsKKworICAgIGF3YWl0IFVJSGVscGVyLmNhbGxGdW5jdGlvbkFu
ZFdhaXRGb3JFdmVudCgoKSA9PiB3aW5kb3cudGVzdFJ1bm5lciAmJiBVSUhlbHBlci5hY3RpdmF0
ZUVsZW1lbnQoaW5wdXQpLCBpbnB1dCwgImZvY3VzIik7CisKKyAgICBhd2FpdCBVSUhlbHBlci5j
YWxsRnVuY3Rpb25BbmRXYWl0Rm9yRXZlbnQoKCkgPT4gd2luZG93LnRlc3RSdW5uZXIgJiYgVUlI
ZWxwZXIua2V5RG93bigidyIpLCBpbnB1dCwgImtleXVwIik7CisgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCdkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW5wdXQiKS52YWx1ZScsICJ3Iik7CisK
KyAgICBhd2FpdCBVSUhlbHBlci5jYWxsRnVuY3Rpb25BbmRXYWl0Rm9yRXZlbnQoKCkgPT4gd2lu
ZG93LnRlc3RSdW5uZXIgJiYgVUlIZWxwZXIua2V5RG93bigiXGIiKSwgaW5wdXQsICJrZXl1cCIp
OworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImlu
cHV0IikudmFsdWUnLCAiIik7CisKKyAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0LWNvbnRhaW5lciIpKTsKKyAgICBmaW5pc2hKU1Rlc3Qo
KTsKK30KKworZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdXNpbmcgdGhlIHNvZnR3YXJlIGtleWJv
YXJkIGFuZCBwcmVzc2luZyAndycgdGhlbiA8a2JkPmJhY2tzcGFjZTwva2JkPiBkZWxldGVzIHRo
ZSAndycgYW5kIGRvZXMgbm90IGNhdXNlIGFuIGFzc2VydGlvbiBmYWlsdXJlIGluIGEgZGVidWcg
YnVpbGQuIikKK2lucHV0LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLCBhcHBlbmRBTmV3bGlu
ZSk7CisKK3J1blRlc3QoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA2NWRhODllZjExZWY5YzY4OTQw
ZWViMDRlMDMxNzRhZjUwZjNkZWMzLi45ZGM2M2RhOGJmN2EwZTRkY2FlZjMwZWZhYThiYWQ2NjMw
MmMwMjUwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0
aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucwpAQCAt
OCw2ICs4LDcgQEAKIAogYWNjZXNzaWJpbGl0eS9pb3Mtc2ltdWxhdG9yIFsgUGFzcyBdCiBkaXNw
bGF5bGlzdHMgWyBQYXNzIF0KK2VkaXRpbmcvZGVsZXRpbmcvaW9zIFsgUGFzcyBdCiBodHRwL3Rl
c3RzL3F1aWNrbG9vayBbIFBhc3MgXQogbWVkaWEvaW9zIFsgUGFzcyBdCiBxdWlja2xvb2sgWyBQ
YXNzIF0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>374508</attachid>
            <date>2019-07-19 15:29:56 -0700</date>
            <delta_ts>2019-07-22 14:29:29 -0700</delta_ts>
            <desc>Patch and layout test</desc>
            <filename>bug-199960-20190719152955.patch</filename>
            <type>text/plain</type>
            <size>8591</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ3NTczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGY5MGE5OTg5NTFmZTZlYmU0
MmQ0NTE4NWNmOWM1ZDA2NzJmNDg2NWIuLjhkNDNjODg5M2MxN2QxMjc3YWY3ZmViNDdmOWNkNjBj
ZjdlZmE5N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTktMDctMTkgIERhbmllbCBC
YXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIEFTU0VSVElPTiBGQUlM
VVJFOiAhaXNNaXNzaW5nUG9zdExheW91dERhdGEgaW4gV2ViS2l0OjpFZGl0b3JTdGF0ZTo6cG9z
dExheW91dERhdGEoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTk5OTYwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81MzMyMzk2Nj4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQZXJmb3JtIGEgbGF5b3V0
IChpZiBuZWVkZWQpIGFuZCBzZW5kIGFuIGVkaXRvciBzdGF0ZSB1cGRhdGUgKHRoaXMgaXMgYSAi
ZnVsbCB1cGRhdGUiKSB3aGVuZXZlcgorICAgICAgICBXZWJLaXQvVUlLaXQgd2lsbCBoYW5kbGUg
YSBrZXkgZXZlbnQuIEEgZnVsbCBlZGl0b3Igc3RhdGUgdXBkYXRlIGlzIG5lZWRlZCBmb3IgVUlL
aXQgdG8gcGVyZm9ybQorICAgICAgICBhIGRlbGV0aW9uIGJlY2F1c2UgVUlLaXQgd2FudHMgdG8g
a25vdyBob3cgbWFueSBjaGFyYWN0ZXJzIGFyZSBiZWZvcmUgdGhlIHNlbGVjdGlvbi4gT3RoZXJ3
aXNlLAorICAgICAgICB3ZSBoaXQgYW4gYXNzZXJ0IGR1ZSB0byB0aGUgZmFjdCB0aGUgbGFzdCBl
ZGl0b3Igc3RhdGUgc2VudCAod2hlbiB0aGUgV2ViIHByb2Nlc3MgYXNrZWQgdGhlIFVJCisgICAg
ICAgIHByb2Nlc3MgdG8gaW50ZXJwcmV0IHRoZSBrZXkpIGlzIG1pc3NpbmcgbGF5b3V0IGRhdGEu
CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJFZGl0b3JDbGll
bnRJT1MubW06CisgICAgICAgIChXZWJLaXQ6OnVwZGF0ZUVkaXRvclN0YXRlKTogQWRkZWQuIFVw
ZGF0ZSBsYXlvdXQgYW5kIHRoZW4gdHJpZ2dlciBhbiBlZGl0b3Igc3RhdGUgdXBkYXRlLgorICAg
ICAgICBUaGUgcmVhc29uIGZvciB0aGUgdXBkYXRlIGlzIHRoYXQgdGhlIGNvbnRlbnQgbWF5IGJl
IGNoYW5nZWQgCisgICAgICAgIChXZWJLaXQ6OldlYkVkaXRvckNsaWVudDo6aGFuZGxlS2V5Ym9h
cmRFdmVudCk6IENhbGwgdXBkYXRlRWRpdG9yU3RhdGUoKS4KKyAgICAgICAgKFdlYktpdDo6V2Vi
RWRpdG9yQ2xpZW50OjpoYW5kbGVJbnB1dE1ldGhvZEtleWRvd24pOiBEaXR0by4KKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OmRpZEhhbmRsZUtleWJvYXJkRXZlbnQpOiBBZGRlZC4gU2VuZCBhbiBlZGl0b3Igc3RhdGUg
dXBkYXRlLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisKIDIwMTkt
MDctMTggIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1Nd
IFJFR1JFU1NJT04gKHIyNDE3MzQpOiBBdXRvY29ycmVjdGlvbiBoaWdobGlnaHQgc2hvdWxkIGhp
ZGUgd2hlbiBmaWVsZCBiZWNvbWVzIGRlZm9jdXNlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJFZGl0b3JDbGllbnRJT1MubW0gYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYkVkaXRvckNsaWVu
dElPUy5tbQppbmRleCA4YjczMzZkODY1YWI3MDBhMjQwYzBkNTBhMzM3ZDg3ODM3M2I2MTYyLi4w
MTE3MDdmMmRmYjJjY2U3YjU2ZGQzMThhY2EyYzhjN2Y5YmFmMDFiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYkVkaXRvckNsaWVudElP
Uy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dl
YkVkaXRvckNsaWVudElPUy5tbQpAQCAtMjksMjQgKzI5LDQwIEBACiAjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKIAogI2ltcG9ydCAiV2ViUGFnZS5oIgorI2ltcG9ydCA8V2ViQ29yZS9Eb2N1bWVu
dC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Eb2N1bWVudEZyYWdtZW50Lmg+CisjaW1wb3J0IDxXZWJD
b3JlL0ZvY3VzQ29udHJvbGxlci5oPgorI2ltcG9ydCA8V2ViQ29yZS9GcmFtZS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9LZXlib2FyZEV2ZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL05vdEltcGxlbWVu
dGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0g
ICAgCisKK3N0YXRpYyBpbmxpbmUgdm9pZCB1cGRhdGVFZGl0b3JTdGF0ZShXZWJQYWdlJiBwYWdl
KQoreworICAgIHBhZ2UuY29yZVBhZ2UoKS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFp
bkZyYW1lKCkuZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0KCk7CisKKyAgICAvLyBDaGVjayB0aGF0
IGxheW91dCBkaWRuJ3QganVzdCBjYXVzZSBkb2N1bWVudCBkZXN0cnVjdGlvbi4KKyAgICBpZiAo
cGFnZS5jb3JlUGFnZSgpLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5k
b2N1bWVudCgpKQorICAgICAgICBwYWdlLmRpZEhhbmRsZUtleWJvYXJkRXZlbnQoKTsKK30KKwog
dm9pZCBXZWJFZGl0b3JDbGllbnQ6OmhhbmRsZUtleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCYg
ZXZlbnQpCiB7Ci0gICAgaWYgKG1fcGFnZS0+aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQoZXZl
bnQpKQorICAgIGlmIChtX3BhZ2UtPmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KGV2ZW50KSkg
ewogICAgICAgICBldmVudC5zZXREZWZhdWx0SGFuZGxlZCgpOworICAgICAgICB1cGRhdGVFZGl0
b3JTdGF0ZSgqbV9wYWdlKTsKKyAgICB9CiB9CiAKIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpoYW5k
bGVJbnB1dE1ldGhvZEtleWRvd24oS2V5Ym9hcmRFdmVudCYgZXZlbnQpCiB7CiAjaWYgVVNFKFVJ
S0lUX0tFWUJPQVJEX0FERElUSU9OUykKLSAgICBpZiAoZXZlbnQuaGFuZGxlZEJ5SW5wdXRNZXRo
b2QoKSkKKyAgICBpZiAoZXZlbnQuaGFuZGxlZEJ5SW5wdXRNZXRob2QoKSkgewogICAgICAgICBl
dmVudC5zZXREZWZhdWx0SGFuZGxlZCgpOworICAgICAgICB1cGRhdGVFZGl0b3JTdGF0ZSgqbV9w
YWdlKTsKKyAgICB9CiAjZWxzZQogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgVU5VU0VEX1BB
UkFNKGV2ZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKaW5kZXggMTA5NDRmNzM4ZGE0ZWNjYzMyYzYwNjdkZjQ3YWY0YzZhYWUyNGVmMC4uNWVlMzFl
MmVhMTVhZTQ4OWVlMGIyNWEzYTViOWRlYzY4M2QyZWIzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTUzODAsNiArNTM4MCwxNSBAQCB2b2lk
IFdlYlBhZ2U6OmRpZENoYW5nZVNlbGVjdGlvbigpCiAgICAgZGlkQ2hhbmdlU2VsZWN0aW9uT3JP
dmVyZmxvd1Njcm9sbFBvc2l0aW9uKCk7CiB9CiAKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQor
Cit2b2lkIFdlYlBhZ2U6OmRpZEhhbmRsZUtleWJvYXJkRXZlbnQoKQoreworICAgIHNlbmRFZGl0
b3JTdGF0ZVVwZGF0ZSgpOworfQorCisjZW5kaWYKKwogdm9pZCBXZWJQYWdlOjpkaWRDaGFuZ2VT
ZWxlY3Rpb25Pck92ZXJmbG93U2Nyb2xsUG9zaXRpb24oKQogewogICAgIEZyYW1lJiBmcmFtZSA9
IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggYjE1ZDZiODY4NzYyNTdj
NmE0ZWUxZmU4NzBlMTkzNjA2NmI5ZTY0NS4uOTYyNzQ4OWJkNGVmMzRjYzg3OTBiZmIwMDE2MTli
YjUxYjU1YmIzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aApAQCAtNzgyLDYgKzc4MiwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRVcGRhdGVDb21wb3Np
dGlvbigpOwogICAgIHZvaWQgZGlkRW5kVXNlclRyaWdnZXJlZFNlbGVjdGlvbkNoYW5nZXMoKTsK
IAorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgdm9pZCBkaWRIYW5kbGVLZXlib2FyZEV2
ZW50KCk7CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgcmVnaXN0ZXJV
SVByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW5zKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZWxl
bWVuVG9rZW4sIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgd2luZG93VG9rZW4pOwogICAgIFdL
QWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3QqIGFjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3QoKTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2OTY5ZmIxZDVlZmY1ZmZmZDYxNGE2NjhiZjc2ZWI0ZTJjMDhlNmM4Li5iOWYzMWY3
Y2Y5YzNmYzhhYjYwYzJiM2FkMTBiZDc3ZjEwMTE5ZTdhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAK
KzIwMTktMDctMTkgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAg
IFtpT1NdIEFTU0VSVElPTiBGQUlMVVJFOiAhaXNNaXNzaW5nUG9zdExheW91dERhdGEgaW4gV2Vi
S2l0OjpFZGl0b3JTdGF0ZTo6cG9zdExheW91dERhdGEoKQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk5OTYwCisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS81MzMyMzk2Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgYSB0ZXN0IHRvIGVuc3VyZSB3ZSBkbyBub3QgYXNzZXJ0IHdoZW4gdXNpbmcgdGhl
IHNvZnR3YXJlIGtleWJvYXJkIHRvIHR5cGUgYSBjaGFyYWN0ZXIKKyAgICAgICAgaW50byBhIDx0
ZXh0YXJlYT4gYW5kIHRoZW4gZGVsZXRlIGl0LgorCisgICAgICAgICogVGVzdEV4cGVjdGF0aW9u
czogU2tpcCB0ZXN0cyBpbiBlZGl0aW5nL2RlbGV0aW5nL2lvcyBvbiBhbGwgcGxhdGZvcm1zLgor
ICAgICAgICAqIGVkaXRpbmcvZGVsZXRpbmcvaW9zL2JhY2tzcGFjZS1sYXN0LWNoYXJhY3Rlci5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9uczogVW5z
a2lwIHRlc3RzIGluIGVkaXRpbmcvZGVsZXRpbmcvaW9zIG9uIGlPUy4KKwogMjAxOS0wNy0xOCAg
QW50b2luZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29tPgogCiAgICAgICAgIFtQb2ludGVyIEV2
ZW50c10gVGhlIGJ1dHRvbiBhbmQgYnV0dG9ucyBwcm9wZXJ0aWVzIGFyZSBpbmNvcnJlY3Qgb24g
aU9TCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVz
dHMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA5YWJkNWUxM2YyNTY3Y2U3NWM5NTY3MzVkMGFhZjc0
NzhhNzY0N2JjLi5iZDBlZWE4ZjllMDU4MDQ3NTU5ZGU3MmFkZWFiYjZiY2Y4ZTFlNmE2IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rl
c3RFeHBlY3RhdGlvbnMKQEAgLTE5LDYgKzE5LDcgQEAgZWRpdGluZy9pbnB1dC9pb3MgWyBTa2lw
IF0KIGVkaXRpbmcvZmluZCBbIFNraXAgXQogZWRpdGluZy9wYXN0ZWJvYXJkL2d0ayBbIFNraXAg
XQogZWRpdGluZy9zZWxlY3Rpb24vaW9zIFsgU2tpcCBdCitlZGl0aW5nL2RlbGV0aW5nL2lvcyBb
IFNraXAgXQogZWRpdGluZy91bmRvLW1hbmFnZXIgWyBTa2lwIF0KIHRpbGVkLWRyYXdpbmcgWyBT
a2lwIF0KIGZhc3QvY3NzL3dhdGNob3MgWyBTa2lwIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2VkaXRpbmcvZGVsZXRpbmcvaW9zL2JhY2tzcGFjZS1sYXN0LWNoYXJhY3Rlci5odG1sIGIvTGF5
b3V0VGVzdHMvZWRpdGluZy9kZWxldGluZy9pb3MvYmFja3NwYWNlLWxhc3QtY2hhcmFjdGVyLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uODQyODM3OGZhNzJmNzJhZjViMTIxY2ZhYzU3ZTY1YTY4MWFhNjk5NAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvZGVsZXRpbmcvaW9zL2JhY2tz
cGFjZS1sYXN0LWNoYXJhY3Rlci5odG1sCkBAIC0wLDAgKzEsNDYgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL3VpLWhlbHBl
ci5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9InRlc3QtY29udGFpbmVy
Ij4KKyAgICA8dGV4dGFyZWEgaWQ9ImlucHV0Ij48L3RleHRhcmVhPgorICAgIDx0ZXh0YXJlYSBp
ZD0ib3V0cHV0IiByZWFkb25seT48L3RleHRhcmVhPgorPC9kaXY+Cis8c2NyaXB0Pgord2luZG93
LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCitsZXQgaW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiaW5wdXQiKTsKKworZnVuY3Rpb24gYXBwZW5kQU5ld2xpbmUoKQoreworICAgIGxldCBv
dXRwdXRFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm91dHB1dCIpOworICAgIG91
dHB1dEVsZW1lbnQudmFsdWUgPSBvdXRwdXRFbGVtZW50LnZhbHVlICsgIlxuIjsKK30KKworYXN5
bmMgZnVuY3Rpb24gcnVuVGVzdCgpCit7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAg
ICAgICBhd2FpdCBVSUhlbHBlci5zZXRIYXJkd2FyZUtleWJvYXJkQXR0YWNoZWQoZmFsc2UpOwor
CisgICAgYXdhaXQgVUlIZWxwZXIuY2FsbEZ1bmN0aW9uQW5kV2FpdEZvckV2ZW50KCgpID0+IHdp
bmRvdy50ZXN0UnVubmVyICYmIFVJSGVscGVyLmFjdGl2YXRlRWxlbWVudChpbnB1dCksIGlucHV0
LCAiZm9jdXMiKTsKKworICAgIGF3YWl0IFVJSGVscGVyLmNhbGxGdW5jdGlvbkFuZFdhaXRGb3JF
dmVudCgoKSA9PiB3aW5kb3cudGVzdFJ1bm5lciAmJiBVSUhlbHBlci5rZXlEb3duKCJ3IiksIGlu
cHV0LCAia2V5dXAiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2RvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJpbnB1dCIpLnZhbHVlJywgInciKTsKKworICAgIGF3YWl0IFVJSGVscGVyLmNh
bGxGdW5jdGlvbkFuZFdhaXRGb3JFdmVudCgoKSA9PiB3aW5kb3cudGVzdFJ1bm5lciAmJiBVSUhl
bHBlci5rZXlEb3duKCJcYiIpLCBpbnB1dCwgImtleXVwIik7CisgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCdkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW5wdXQiKS52YWx1ZScsICIiKTsKKwor
ICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRl
c3QtY29udGFpbmVyIikpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCitkZXNjcmlwdGlvbigi
VGhpcyB0ZXN0cyB1c2luZyB0aGUgc29mdHdhcmUga2V5Ym9hcmQgYW5kIHByZXNzaW5nICd3JyB0
aGVuIDxrYmQ+YmFja3NwYWNlPC9rYmQ+IGRlbGV0ZXMgdGhlICd3JyBhbmQgZG9lcyBub3QgY2F1
c2UgYW4gYXNzZXJ0aW9uIGZhaWx1cmUgaW4gYSBkZWJ1ZyBidWlsZC4iKQoraW5wdXQuYWRkRXZl
bnRMaXN0ZW5lcigia2V5ZG93biIsIGFwcGVuZEFOZXdsaW5lKTsKKworcnVuVGVzdCgpOworPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9pb3MvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhw
ZWN0YXRpb25zCmluZGV4IDY1ZGE4OWVmMTFlZjljNjg5NDBlZWIwNGUwMzE3NGFmNTBmM2RlYzMu
LjlkYzYzZGE4YmY3YTBlNGRjYWVmMzBlZmFhOGJhZDY2MzAyYzAyNTAgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zCkBAIC04LDYgKzgsNyBAQAogCiBhY2Nlc3Np
YmlsaXR5L2lvcy1zaW11bGF0b3IgWyBQYXNzIF0KIGRpc3BsYXlsaXN0cyBbIFBhc3MgXQorZWRp
dGluZy9kZWxldGluZy9pb3MgWyBQYXNzIF0KIGh0dHAvdGVzdHMvcXVpY2tsb29rIFsgUGFzcyBd
CiBtZWRpYS9pb3MgWyBQYXNzIF0KIHF1aWNrbG9vayBbIFBhc3MgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>374635</attachid>
            <date>2019-07-22 14:29:30 -0700</date>
            <delta_ts>2019-07-22 14:35:10 -0700</delta_ts>
            <desc>Patch and layout test - encoded in enum</desc>
            <filename>bug-199960-20190722142930.patch</filename>
            <type>text/plain</type>
            <size>28099</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ3Njg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGQ1NWVlOGY2NWNmODRkNDg1
NTllNGI5MWI5MDFhZmVhMmRmZDUxNDguLmFiZmNjMGMyOGNiMWUxOTlhZjI2Zjc3YjMzNWU2YTM5
ODdhMmQwOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTcgQEAKKzIwMTktMDctMjIgIERhbmllbCBC
YXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIEFTU0VSVElPTiBGQUlM
VVJFOiAhaXNNaXNzaW5nUG9zdExheW91dERhdGEgaW4gV2ViS2l0OjpFZGl0b3JTdGF0ZTo6cG9z
dExheW91dERhdGEoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTk5OTYwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81MzMyMzk2Nj4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZhY3RvciB0aGUgY29t
cHV0YXRpb24gb2YgZWRpdG9yIHN0YXRlIHNvIHRoYXQgd2UgY2FuIHJlcXVlc3QgdGhhdCBhIGxh
eW91dCBiZSBwZXJmb3JtZWQKKyAgICAgICAgZWFjaCB0aW1lIHdlIGNvbXB1dGUgdGhlIGVkaXRv
ciBzdGF0ZSBhcyBwYXJ0IG9mIGFza2luZyB0aGUgVUkgcHJvY2VzcyB0byBpbnRlcnByZXQgYSBr
ZXkKKyAgICAgICAgZXZlbnQuIFRoZSBmdWxsIChyZWFkOiBhZnRlciBsYXlvdXQpIGVkaXRvciBz
dGF0ZSBpcyBuZWVkZWQgZm9yIFVJS2l0IHRvIHBlcmZvcm0gYSBkZWxldGlvbgorICAgICAgICBi
ZWNhdXNlIFVJS2l0IHdhbnRzIHRvIGtub3cgaG93IG1hbnkgY2hhcmFjdGVycyBhcmUgYmVmb3Jl
IHRoZSBzZWxlY3Rpb24uIE90aGVyd2lzZSwgd2UgaGl0CisgICAgICAgIGFuIGFzc2VydCBkdWUg
dG8gdGhlIGZhY3QgdGhlIGxhc3QgZWRpdG9yIHN0YXRlIHNlbnQgKHdoZW4gdGhlIFdlYiBwcm9j
ZXNzIGFza2VkIHRoZSBVSSBwcm9jZXNzCisgICAgICAgIHRvIGludGVycHJldCB0aGUga2V5KSBp
cyBtaXNzaW5nIGxheW91dCBkYXRhLgorCisgICAgICAgIFRoZSByZWZhY3RvcmluZyBhbHNvIG1v
dmVzIHRoZSBDb2NvYS1jb21tb24gY29kZSBvdXQgb2YgdGhlIHBsYXRmb3JtLWluZGVwZW5kZW50
IFdlYlBhZ2UuY3BwCisgICAgICAgIGZpbGUgaW50byBXZWJQYWdlQ29jb2EubW0uCisKKyAgICAg
ICAgT25lIHNpZGUgZWZmZWN0IG9mIHRoZSByZWZhY3RvcmluZyBpcyB0aGF0IHdlIG5vIGxvbmdl
ciBhbGxvdyB0aGUgcGxhdGZvcm1FZGl0b3JTdGF0ZSgpIGZ1bmN0aW9uCisgICAgICAgIHRvIG92
ZXJyaWRlIHRoZSBpc01pc3NpbmdQb3N0TGF5b3V0RGF0YSBiaXQuIEN1cnJlbnRseSBpdCBjYW4g
ZXZlbiB0aG91Z2ggdGhlIGNhbGxpbmcgY29kZSwgdGhlCisgICAgICAgIHBsYXRmb3JtIGluZGVw
ZW5kZW50IGNvZGUgKFBJRSkgaW4gV2ViUGFnZSwgbWF5IGhhdmUgYXR0YWNoZWQgbGF5b3V0IGRh
dGEuIE5vdyB0aGUgUElFIGNvZGUgc2V0cworICAgICAgICB0aGlzIGJpdCBpZiBpdCBhdHRhY2hl
ZCBsYXlvdXQgZGF0YSBhbmQgdGhlIHBsYXRmb3JtRWRpdG9yU3RhdGUoKSBmdW5jdGlvbiBvbmx5
IGF0dGFjaGVzIG1vcmUKKyAgICAgICAgbGF5b3V0IGRhdGEgaWYgdGhhdCBiaXQgaXMgc2V0LiBw
bGF0Zm9ybUVkaXRvclN0YXRlKCkgbmV2ZXIgdW5zZXRzIHRoYXQgYml0IChpLmUuIHNldHMgaXNN
aXNzaW5nUG9zdExheW91dERhdGEKKyAgICAgICAgdG8gdHJ1ZSkuCisKKyAgICAgICAgKiBTaGFy
ZWQvRWRpdG9yU3RhdGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2Vi
UGFnZUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwbGF0Zm9ybUVkaXRvclN0
YXRlQ29tbW9uIGNvbnN0KTogQWRkZWQuIE1vdmVkIENvY29hLWNvbW1vbiBjb2RlIGZyb20gV2Vi
UGFnZS5jcHAKKyAgICAgICAgdG8gaGVyZS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmVkaXRvclN0YXRlIGNvbnN0
KTogTW92ZSBDb2NvYS1jb21tb24gY29kZSB0byBXZWJQYWdlQ29jb2EubW0uIENoYW5nZSBlbnVt
IHRvCisgICAgICAgIHRyYWNrIHdoZXRoZXIgYSBsYXlvdXQgc2hvdWxkIGJlIHBlcmZvcm1lZC4g
S2VlcCB0aGUgY3VycmVudCBiZWhhdmlvciBvZiBvbmx5IGluY2x1ZGluZyBwb3N0IGxheW91dAor
ICAgICAgICBkYXRhIGlmIHRoZSBmcmFtZSB2aWV3IGRvZXMgbm90IG5lZWQgYSBsYXlvdXQuIFRo
aXMgYmVoYXZpb3IgaXMgZW5jb2RlZCBpbiB0aGUgZW51bWVyYXRvciBTaG91bGRQZXJmb3JtTGF5
b3V0OjpEZWZhdWx0LgorICAgICAgICB3aGljaCBpcyB0aGUgZGVmYXVsdCBhcmd1bWVudCB2YWx1
ZSBmb3IgdGhlIGFyZ3VtZW50IHNob3VsZFBlcmZvcm1MYXlvdXQuCisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGxhdGZv
cm1OZWVkc0xheW91dEZvckVkaXRvclN0YXRlIGNvbnN0KTogQWRkZWQuIE5vbi1Db2NvYSBwb3J0
IGltcGxlbWVudGF0aW9uCisgICAgICAgIHRoYXQgcmV0dXJucyBmYWxzZS4KKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlBhZ2VHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjpwbGF0Zm9ybUVkaXRvclN0YXRlIGNvbnN0KTogRWFybHkgcmV0dXJuIGlmIGlzTWlz
c2luZ1Bvc3RMYXlvdXREYXRhIGlzIHRydWUuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwbGF0Zm9ybU5l
ZWRzTGF5b3V0Rm9yRWRpdG9yU3RhdGUgY29uc3QpOiBBZGRlZC4gS2VlcCB0aGUgY3VycmVudCBi
ZWhhdmlvciBvZgorICAgICAgICBwZXJmb3JtaW5nIGEgbGF5b3V0IGlmIHdlIGhhdmUgYSBjb21w
b3NpdGlvbiBvciBhIGhhcmR3YXJlIGtleWJvYXJkIGlzIGF0dGFjaGVkLgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpwbGF0Zm9ybUVkaXRvclN0YXRlIGNvbnN0KTogQ2FsbCBwbGF0Zm9ybUVk
aXRvclN0YXRlQ29tbW9uKCkuIEJhaWwgb3V0IGVhcmx5CisgICAgICAgIGlmIGlzTWlzc2luZ1Bv
c3RMYXlvdXREYXRhIGlzIHRydWUuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmhhbmRsZUVk
aXRpbmdLZXlib2FyZEV2ZW50KTogVGhlIGltcG9ydGFudCBwYXJ0IG9mIHRoaXMgcGF0Y2guIFJl
cXVlc3QgYSBsYXlvdXQKKyAgICAgICAgd2hlbiBjb21wdXRpbmcgdGhlIGVkaXRvciBzdGF0ZSB0
aGF0IHdlIHdpbGwgc2VuZCB0byB0aGUgVUkgcHJvY2Vzcy4KKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBs
YXRmb3JtRWRpdG9yU3RhdGUgY29uc3QpOiBDYWxsIHBsYXRmb3JtRWRpdG9yU3RhdGVDb21tb24o
KS4gQmFpbCBvdXQgZWFybHkKKyAgICAgICAgaWYgaXNNaXNzaW5nUG9zdExheW91dERhdGEgaXMg
dHJ1ZS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL1dlYlBhZ2VXaW4uY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwbGF0Zm9ybUVkaXRvclN0YXRlIGNvbnN0KTogVXBk
YXRlIGFzIG5lZWRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uvd3BlL1dlYlBhZ2VX
UEUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwbGF0Zm9ybUVkaXRvclN0YXRlIGNv
bnN0KTogRGl0dG8uCisKIDIwMTktMDctMjIgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtpT1NdIFJFR1JFU1NJT04gKHIyNDE3MzQpOiBBdXRvY29ycmVjdGlv
biBoaWdobGlnaHQgc2hvdWxkIGhpZGUgd2hlbiBmaWVsZCBiZWNvbWVzIGRlZm9jdXNlZApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvRWRpdG9yU3RhdGUuaCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0VkaXRvclN0YXRlLmgKaW5kZXggZTQ5YzUzZGRmMjRjZDFlOTI2YzAyMmY5ZmFk
NTNiNTNlN2M2MGExZS4uN2NiNGU3MDJjYTZmMDJhNTNkMDVhOTNjZDU3Zjg0MjE2MzYwYzdkYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvRWRpdG9yU3RhdGUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9FZGl0b3JTdGF0ZS5oCkBAIC03NCw3ICs3NCw3IEBAIHN0cnVjdCBF
ZGl0b3JTdGF0ZSB7CiAgICAgYm9vbCBpc0luUGFzc3dvcmRGaWVsZCB7IGZhbHNlIH07CiAgICAg
Ym9vbCBpc0luUGx1Z2luIHsgZmFsc2UgfTsKICAgICBib29sIGhhc0NvbXBvc2l0aW9uIHsgZmFs
c2UgfTsKLSAgICBib29sIGlzTWlzc2luZ1Bvc3RMYXlvdXREYXRhIHsgZmFsc2UgfTsKKyAgICBi
b29sIGlzTWlzc2luZ1Bvc3RMYXlvdXREYXRhIHsgdHJ1ZSB9OwogCiAjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICBXZWJDb3JlOjpJbnRSZWN0IGZpcnN0TWFya2VkUmVjdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5t
bSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5t
bQppbmRleCBkMTJiOThhOTU4NDAxZjBjM2Q5ZjJjYWFjYzU1YjQwYjJhNjFiNzY0Li5lMDJjNGJh
NjAwNjNjZGRiYWI0MDU1ZGM1N2I3NDkyYTlkZGMxZmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCkBAIC0zNCwx
MCArMzQsMTMgQEAKICNpbXBvcnQgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCiAjaW1wb3J0ICJX
ZWJQYXltZW50Q29vcmRpbmF0b3IuaCIKICNpbXBvcnQgPFdlYkNvcmUvRGljdGlvbmFyeUxvb2t1
cC5oPgorI2ltcG9ydCA8V2ViQ29yZS9FZGl0aW5nLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0VkaXRv
ci5oPgogI2ltcG9ydCA8V2ViQ29yZS9FdmVudEhhbmRsZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUv
Rm9jdXNDb250cm9sbGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxDb252ZXJ0ZXIuaD4KKyNp
bXBvcnQgPFdlYkNvcmUvSFRNTE9MaXN0RWxlbWVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9IVE1M
VUxpc3RFbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0hpdFRlc3RSZXN1bHQuaD4KICNpbXBv
cnQgPFdlYkNvcmUvTm9kZVJlbmRlclN0eWxlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BheW1lbnRD
b29yZGluYXRvci5oPgpAQCAtMjI3LDcgKzIzMCw3MiBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZU1v
Y2tBY2Nlc3NpYmlsaXR5RWxlbWVudEFmdGVyQ29tbWl0dGluZ0xvYWQoKQogICAgIGF1dG8qIGRv
Y3VtZW50ID0gbWFpbkZyYW1lKCktPmRvY3VtZW50KCk7CiAgICAgW21fbW9ja0FjY2Vzc2liaWxp
dHlFbGVtZW50IHNldEhhc01haW5GcmFtZVBsdWdpbjpkb2N1bWVudCA/IGRvY3VtZW50LT5pc1Bs
dWdpbkRvY3VtZW50KCkgOiBmYWxzZV07CiB9Ci0gICAgCisKK3ZvaWQgV2ViUGFnZTo6cGxhdGZv
cm1FZGl0b3JTdGF0ZUNvbW1vbihjb25zdCBGcmFtZSYgZnJhbWUsIEVkaXRvclN0YXRlJiByZXN1
bHQpIGNvbnN0Cit7CisgICAgaWYgKHJlc3VsdC5pc01pc3NpbmdQb3N0TGF5b3V0RGF0YSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgY29uc3QgYXV0byYgc2VsZWN0aW9uID0gZnJhbWUuc2VsZWN0
aW9uKCkuc2VsZWN0aW9uKCk7CisKKyAgICBpZiAoIXJlc3VsdC5pc0NvbnRlbnRFZGl0YWJsZSB8
fCBzZWxlY3Rpb24uaXNOb25lKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8mIHBvc3RM
YXlvdXREYXRhID0gcmVzdWx0LnBvc3RMYXlvdXREYXRhKCk7CisgICAgaWYgKGF1dG8gZWRpdGlu
Z1N0eWxlID0gRWRpdGluZ1N0eWxlOjpzdHlsZUF0U2VsZWN0aW9uU3RhcnQoc2VsZWN0aW9uKSkg
eworICAgICAgICBpZiAoZWRpdGluZ1N0eWxlLT5oYXNTdHlsZShDU1NQcm9wZXJ0eUZvbnRXZWln
aHQsICJib2xkIl9zKSkKKyAgICAgICAgICAgIHBvc3RMYXlvdXREYXRhLnR5cGluZ0F0dHJpYnV0
ZXMgfD0gQXR0cmlidXRlQm9sZDsKKworICAgICAgICBpZiAoZWRpdGluZ1N0eWxlLT5oYXNTdHls
ZShDU1NQcm9wZXJ0eUZvbnRTdHlsZSwgIml0YWxpYyJfcykgfHwgZWRpdGluZ1N0eWxlLT5oYXNT
dHlsZShDU1NQcm9wZXJ0eUZvbnRTdHlsZSwgIm9ibGlxdWUiX3MpKQorICAgICAgICAgICAgcG9z
dExheW91dERhdGEudHlwaW5nQXR0cmlidXRlcyB8PSBBdHRyaWJ1dGVJdGFsaWNzOworCisgICAg
ICAgIGlmIChlZGl0aW5nU3R5bGUtPmhhc1N0eWxlKENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29y
YXRpb25zSW5FZmZlY3QsICJ1bmRlcmxpbmUiX3MpKQorICAgICAgICAgICAgcG9zdExheW91dERh
dGEudHlwaW5nQXR0cmlidXRlcyB8PSBBdHRyaWJ1dGVVbmRlcmxpbmU7CisKKyAgICAgICAgaWYg
KGF1dG8qIHN0eWxlUHJvcGVydGllcyA9IGVkaXRpbmdTdHlsZS0+c3R5bGUoKSkgeworICAgICAg
ICAgICAgYm9vbCBpc0xlZnRUb1JpZ2h0ID0gc3R5bGVQcm9wZXJ0aWVzLT5wcm9wZXJ0eUFzVmFs
dWVJRChDU1NQcm9wZXJ0eURpcmVjdGlvbikgPT0gQ1NTVmFsdWVMdHI7CisgICAgICAgICAgICBz
d2l0Y2ggKHN0eWxlUHJvcGVydGllcy0+cHJvcGVydHlBc1ZhbHVlSUQoQ1NTUHJvcGVydHlUZXh0
QWxpZ24pKSB7CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlUmlnaHQ6CisgICAgICAgICAgICBj
YXNlIENTU1ZhbHVlV2Via2l0UmlnaHQ6CisgICAgICAgICAgICAgICAgcG9zdExheW91dERhdGEu
dGV4dEFsaWdubWVudCA9IFJpZ2h0QWxpZ25tZW50OworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUxlZnQ6CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVl
V2Via2l0TGVmdDoKKyAgICAgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS50ZXh0QWxpZ25tZW50
ID0gTGVmdEFsaWdubWVudDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNh
c2UgQ1NTVmFsdWVDZW50ZXI6CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlV2Via2l0Q2VudGVy
OgorICAgICAgICAgICAgICAgIHBvc3RMYXlvdXREYXRhLnRleHRBbGlnbm1lbnQgPSBDZW50ZXJB
bGlnbm1lbnQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENTU1Zh
bHVlSnVzdGlmeToKKyAgICAgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS50ZXh0QWxpZ25tZW50
ID0gSnVzdGlmaWVkQWxpZ25tZW50OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgY2FzZSBDU1NWYWx1ZVN0YXJ0OgorICAgICAgICAgICAgICAgIHBvc3RMYXlvdXREYXRhLnRl
eHRBbGlnbm1lbnQgPSBpc0xlZnRUb1JpZ2h0ID8gTGVmdEFsaWdubWVudCA6IFJpZ2h0QWxpZ25t
ZW50OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUVu
ZDoKKyAgICAgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS50ZXh0QWxpZ25tZW50ID0gaXNMZWZ0
VG9SaWdodCA/IFJpZ2h0QWxpZ25tZW50IDogTGVmdEFsaWdubWVudDsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoYXV0byB0ZXh0Q29sb3IgPSBzdHlsZVByb3Bl
cnRpZXMtPnByb3BlcnR5QXNDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSkKKyAgICAgICAgICAgICAg
ICBwb3N0TGF5b3V0RGF0YS50ZXh0Q29sb3IgPSAqdGV4dENvbG9yOworICAgICAgICB9CisgICAg
fQorCisgICAgaWYgKGF1dG8qIGVuY2xvc2luZ0xpc3RFbGVtZW50ID0gZW5jbG9zaW5nTGlzdChz
ZWxlY3Rpb24uc3RhcnQoKS5jb250YWluZXJOb2RlKCkpKSB7CisgICAgICAgIGlmIChpczxIVE1M
VUxpc3RFbGVtZW50PigqZW5jbG9zaW5nTGlzdEVsZW1lbnQpKQorICAgICAgICAgICAgcG9zdExh
eW91dERhdGEuZW5jbG9zaW5nTGlzdFR5cGUgPSBVbm9yZGVyZWRMaXN0OworICAgICAgICBlbHNl
IGlmIChpczxIVE1MT0xpc3RFbGVtZW50PigqZW5jbG9zaW5nTGlzdEVsZW1lbnQpKQorICAgICAg
ICAgICAgcG9zdExheW91dERhdGEuZW5jbG9zaW5nTGlzdFR5cGUgPSBPcmRlcmVkTGlzdDsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorCisg
ICAgcG9zdExheW91dERhdGEuYmFzZVdyaXRpbmdEaXJlY3Rpb24gPSBmcmFtZS5lZGl0b3IoKS5i
YXNlV3JpdGluZ0RpcmVjdGlvbkZvclNlbGVjdGlvblN0YXJ0KCk7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdAogCiAjZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDZhZGM3NjI4ODJhNzI4ODc0ODVh
ZDgyZGI0MjFlN2ExMGI5MjMxY2EuLmJlM2YwMmYwYzNkODdhYWMwOTBmMzZkZTBjZmM1MWVhYTY2
YzM5ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CkBAIC0xNzIsMTMgKzE3MiwxMSBAQAogI2luY2x1ZGUgPFdlYkNvcmUvSFRNTElucHV0RWxlbWVu
dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSFRNTE1lbnVFbGVtZW50Lmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9IVE1MTWVudUl0ZW1FbGVtZW50Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9IVE1MT0xpc3RF
bGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IVE1MUGx1Z0luRWxlbWVudC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
SFRNTFNlbGVjdEVsZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hUTUxUZXh0QXJlYUVsZW1l
bnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Lmg+Ci0j
aW5jbHVkZSA8V2ViQ29yZS9IVE1MVUxpc3RFbGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9I
aXN0b3J5Q29udHJvbGxlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSGlzdG9yeUl0ZW0uaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0hpdFRlc3RSZXN1bHQuaD4KQEAgLTEwMTEsOSArMTAwOSwxMyBAQCBX
ZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgV2ViUGFnZTo6cmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJM
KFdlYkZyYW1lKiwgY29uc3QgVVJMJgogfQogI2VuZGlmCiAKLUVkaXRvclN0YXRlIFdlYlBhZ2U6
OmVkaXRvclN0YXRlKEluY2x1ZGVQb3N0TGF5b3V0RGF0YUhpbnQgc2hvdWxkSW5jbHVkZVBvc3RM
YXlvdXREYXRhKSBjb25zdAorRWRpdG9yU3RhdGUgV2ViUGFnZTo6ZWRpdG9yU3RhdGUoU2hvdWxk
UGVyZm9ybUxheW91dCBzaG91bGRQZXJmb3JtTGF5b3V0KSBjb25zdAogewotICAgIEZyYW1lJiBm
cmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7Cisg
ICAgLy8gUmVmIHRoZSBmcmFtZSBiZWNhdXNlIHRoaXMgZnVuY3Rpb24gbWF5IHBlcmZvcm0gbGF5
b3V0LCB3aGljaCBtYXkgY2F1c2UgZnJhbWUgZGVzdHJ1Y3Rpb24uCisgICAgUmVmPEZyYW1lPiBm
cmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CisK
KyAgICBpZiAoc2hvdWxkUGVyZm9ybUxheW91dCA9PSBTaG91bGRQZXJmb3JtTGF5b3V0OjpEZWZh
dWx0KQorICAgICAgICBzaG91bGRQZXJmb3JtTGF5b3V0ID0gcGxhdGZvcm1OZWVkc0xheW91dEZv
ckVkaXRvclN0YXRlKGZyYW1lKSA/IFNob3VsZFBlcmZvcm1MYXlvdXQ6OlllcyA6IFNob3VsZFBl
cmZvcm1MYXlvdXQ6Ok5vOwogCiAgICAgRWRpdG9yU3RhdGUgcmVzdWx0OwogCkBAIC0xMDI2LDgg
KzEwMjgsOCBAQCBFZGl0b3JTdGF0ZSBXZWJQYWdlOjplZGl0b3JTdGF0ZShJbmNsdWRlUG9zdExh
eW91dERhdGFIaW50IHNob3VsZEluY2x1ZGVQb3N0TGF5bwogICAgICAgICB9CiAgICAgfQogCi0g
ICAgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uID0gZnJhbWUuc2VsZWN0aW9uKCku
c2VsZWN0aW9uKCk7Ci0gICAgY29uc3QgRWRpdG9yJiBlZGl0b3IgPSBmcmFtZS5lZGl0b3IoKTsK
KyAgICBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24gPSBmcmFtZS0+c2VsZWN0aW9u
KCkuc2VsZWN0aW9uKCk7CisgICAgY29uc3QgRWRpdG9yJiBlZGl0b3IgPSBmcmFtZS0+ZWRpdG9y
KCk7CiAKICAgICByZXN1bHQuc2VsZWN0aW9uSXNOb25lID0gc2VsZWN0aW9uLmlzTm9uZSgpOwog
ICAgIHJlc3VsdC5zZWxlY3Rpb25Jc1JhbmdlID0gc2VsZWN0aW9uLmlzUmFuZ2UoKTsKQEAgLTEw
MzcsMTEgKzEwMzksMTUgQEAgRWRpdG9yU3RhdGUgV2ViUGFnZTo6ZWRpdG9yU3RhdGUoSW5jbHVk
ZVBvc3RMYXlvdXREYXRhSGludCBzaG91bGRJbmNsdWRlUG9zdExheW8KICAgICByZXN1bHQuaGFz
Q29tcG9zaXRpb24gPSBlZGl0b3IuaGFzQ29tcG9zaXRpb24oKTsKICAgICByZXN1bHQuc2hvdWxk
SWdub3JlU2VsZWN0aW9uQ2hhbmdlcyA9IGVkaXRvci5pZ25vcmVTZWxlY3Rpb25DaGFuZ2VzKCk7
CiAKLSAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBmcmFtZS5kb2N1bWVudCgpKQotICAgICAgICBy
ZXN1bHQub3JpZ2luSWRlbnRpZmllckZvclBhc3RlYm9hcmQgPSBkb2N1bWVudC0+b3JpZ2luSWRl
bnRpZmllckZvclBhc3RlYm9hcmQoKTsKKyAgICBhdXRvJiBkb2N1bWVudCA9ICpmcmFtZS0+ZG9j
dW1lbnQoKTsKKyAgICByZXN1bHQub3JpZ2luSWRlbnRpZmllckZvclBhc3RlYm9hcmQgPSBkb2N1
bWVudC5vcmlnaW5JZGVudGlmaWVyRm9yUGFzdGVib2FyZCgpOworCisgICAgaWYgKHNob3VsZFBl
cmZvcm1MYXlvdXQgPT0gU2hvdWxkUGVyZm9ybUxheW91dDo6WWVzKQorICAgICAgICBkb2N1bWVu
dC51cGRhdGVMYXlvdXQoKTsgLy8gTWF5IGNhdXNlIGZyYW1lIGRlc3RydWN0aW9uCisKKyAgICBp
ZiAoYXV0byogZnJhbWVWaWV3ID0gZG9jdW1lbnQudmlldygpOyBmcmFtZVZpZXcgJiYgIWZyYW1l
Vmlldy0+bmVlZHNMYXlvdXQoKSkgeworICAgICAgICByZXN1bHQuaXNNaXNzaW5nUG9zdExheW91
dERhdGEgPSBmYWxzZTsKIAotICAgIGJvb2wgY2FuSW5jbHVkZVBvc3RMYXlvdXREYXRhID0gZnJh
bWUudmlldygpICYmICFmcmFtZS52aWV3KCktPm5lZWRzTGF5b3V0KCk7Ci0gICAgaWYgKHNob3Vs
ZEluY2x1ZGVQb3N0TGF5b3V0RGF0YSA9PSBJbmNsdWRlUG9zdExheW91dERhdGFIaW50OjpZZXMg
JiYgY2FuSW5jbHVkZVBvc3RMYXlvdXREYXRhKSB7CiAgICAgICAgIGF1dG8mIHBvc3RMYXlvdXRE
YXRhID0gcmVzdWx0LnBvc3RMYXlvdXREYXRhKCk7CiAgICAgICAgIHBvc3RMYXlvdXREYXRhLmNh
bkN1dCA9IGVkaXRvci5jYW5DdXQoKTsKICAgICAgICAgcG9zdExheW91dERhdGEuY2FuQ29weSA9
IGVkaXRvci5jYW5Db3B5KCk7CkBAIC0xMDQ5LDY2ICsxMDU1LDkgQEAgRWRpdG9yU3RhdGUgV2Vi
UGFnZTo6ZWRpdG9yU3RhdGUoSW5jbHVkZVBvc3RMYXlvdXREYXRhSGludCBzaG91bGRJbmNsdWRl
UG9zdExheW8KIAogICAgICAgICBpZiAobV9uZWVkc0ZvbnRBdHRyaWJ1dGVzKQogICAgICAgICAg
ICAgcG9zdExheW91dERhdGEuZm9udEF0dHJpYnV0ZXMgPSBlZGl0b3IuZm9udEF0dHJpYnV0ZXNB
dFNlbGVjdGlvblN0YXJ0KCk7Ci0KLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICAgICAgaWYgKHJl
c3VsdC5pc0NvbnRlbnRFZGl0YWJsZSAmJiAhc2VsZWN0aW9uLmlzTm9uZSgpKSB7Ci0gICAgICAg
ICAgICBpZiAoYXV0byBlZGl0aW5nU3R5bGUgPSBFZGl0aW5nU3R5bGU6OnN0eWxlQXRTZWxlY3Rp
b25TdGFydChzZWxlY3Rpb24pKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGVkaXRpbmdTdHlsZS0+
aGFzU3R5bGUoQ1NTUHJvcGVydHlGb250V2VpZ2h0LCAiYm9sZCIpKQotICAgICAgICAgICAgICAg
ICAgICBwb3N0TGF5b3V0RGF0YS50eXBpbmdBdHRyaWJ1dGVzIHw9IEF0dHJpYnV0ZUJvbGQ7Ci0K
LSAgICAgICAgICAgICAgICBpZiAoZWRpdGluZ1N0eWxlLT5oYXNTdHlsZShDU1NQcm9wZXJ0eUZv
bnRTdHlsZSwgIml0YWxpYyIpIHx8IGVkaXRpbmdTdHlsZS0+aGFzU3R5bGUoQ1NTUHJvcGVydHlG
b250U3R5bGUsICJvYmxpcXVlIikpCi0gICAgICAgICAgICAgICAgICAgIHBvc3RMYXlvdXREYXRh
LnR5cGluZ0F0dHJpYnV0ZXMgfD0gQXR0cmlidXRlSXRhbGljczsKLQotICAgICAgICAgICAgICAg
IGlmIChlZGl0aW5nU3R5bGUtPmhhc1N0eWxlKENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRp
b25zSW5FZmZlY3QsICJ1bmRlcmxpbmUiKSkKLSAgICAgICAgICAgICAgICAgICAgcG9zdExheW91
dERhdGEudHlwaW5nQXR0cmlidXRlcyB8PSBBdHRyaWJ1dGVVbmRlcmxpbmU7Ci0KLSAgICAgICAg
ICAgICAgICBpZiAoYXV0byogc3R5bGVQcm9wZXJ0aWVzID0gZWRpdGluZ1N0eWxlLT5zdHlsZSgp
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGJvb2wgaXNMZWZ0VG9SaWdodCA9IHN0eWxlUHJvcGVy
dGllcy0+cHJvcGVydHlBc1ZhbHVlSUQoQ1NTUHJvcGVydHlEaXJlY3Rpb24pID09IENTU1ZhbHVl
THRyOwotICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHN0eWxlUHJvcGVydGllcy0+cHJvcGVy
dHlBc1ZhbHVlSUQoQ1NTUHJvcGVydHlUZXh0QWxpZ24pKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGNhc2UgQ1NTVmFsdWVSaWdodDoKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVdl
YmtpdFJpZ2h0OgotICAgICAgICAgICAgICAgICAgICAgICAgcG9zdExheW91dERhdGEudGV4dEFs
aWdubWVudCA9IFJpZ2h0QWxpZ25tZW50OwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVMZWZ0OgotICAgICAgICAgICAgICAg
ICAgICBjYXNlIENTU1ZhbHVlV2Via2l0TGVmdDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHBv
c3RMYXlvdXREYXRhLnRleHRBbGlnbm1lbnQgPSBMZWZ0QWxpZ25tZW50OwotICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVDZW50
ZXI6Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVXZWJraXRDZW50ZXI6Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS50ZXh0QWxpZ25tZW50ID0gQ2VudGVy
QWxpZ25tZW50OwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgICAgIGNhc2UgQ1NTVmFsdWVKdXN0aWZ5OgotICAgICAgICAgICAgICAgICAgICAgICAgcG9z
dExheW91dERhdGEudGV4dEFsaWdubWVudCA9IEp1c3RpZmllZEFsaWdubWVudDsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVl
U3RhcnQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS50ZXh0QWxpZ25t
ZW50ID0gaXNMZWZ0VG9SaWdodCA/IExlZnRBbGlnbm1lbnQgOiBSaWdodEFsaWdubWVudDsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIENT
U1ZhbHVlRW5kOgotICAgICAgICAgICAgICAgICAgICAgICAgcG9zdExheW91dERhdGEudGV4dEFs
aWdubWVudCA9IGlzTGVmdFRvUmlnaHQgPyBSaWdodEFsaWdubWVudCA6IExlZnRBbGlnbm1lbnQ7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgZGVm
YXVsdDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgICAgIGlmIChhdXRvIHRleHRDb2xvciA9IHN0eWxlUHJvcGVy
dGllcy0+cHJvcGVydHlBc0NvbG9yKENTU1Byb3BlcnR5Q29sb3IpKQotICAgICAgICAgICAgICAg
ICAgICAgICAgcG9zdExheW91dERhdGEudGV4dENvbG9yID0gKnRleHRDb2xvcjsKLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChhdXRvKiBlbmNsb3Np
bmdMaXN0RWxlbWVudCA9IGVuY2xvc2luZ0xpc3Qoc2VsZWN0aW9uLnN0YXJ0KCkuY29udGFpbmVy
Tm9kZSgpKSkgewotICAgICAgICAgICAgICAgIGlmIChpczxIVE1MVUxpc3RFbGVtZW50PigqZW5j
bG9zaW5nTGlzdEVsZW1lbnQpKQotICAgICAgICAgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS5l
bmNsb3NpbmdMaXN0VHlwZSA9IFVub3JkZXJlZExpc3Q7Ci0gICAgICAgICAgICAgICAgZWxzZSBp
ZiAoaXM8SFRNTE9MaXN0RWxlbWVudD4oKmVuY2xvc2luZ0xpc3RFbGVtZW50KSkKLSAgICAgICAg
ICAgICAgICAgICAgcG9zdExheW91dERhdGEuZW5jbG9zaW5nTGlzdFR5cGUgPSBPcmRlcmVkTGlz
dDsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS5i
YXNlV3JpdGluZ0RpcmVjdGlvbiA9IGVkaXRvci5iYXNlV3JpdGluZ0RpcmVjdGlvbkZvclNlbGVj
dGlvblN0YXJ0KCk7Ci0gICAgICAgIH0KLSNlbmRpZgogICAgIH0KIAotICAgIHBsYXRmb3JtRWRp
dG9yU3RhdGUoZnJhbWUsIHJlc3VsdCwgc2hvdWxkSW5jbHVkZVBvc3RMYXlvdXREYXRhKTsKKyAg
ICBwbGF0Zm9ybUVkaXRvclN0YXRlKGZyYW1lLCByZXN1bHQpOwogCiAgICAgbV9sYXN0RWRpdG9y
U3RhdGVXYXNDb250ZW50RWRpdGFibGUgPSByZXN1bHQuaXNDb250ZW50RWRpdGFibGUgPyBFZGl0
b3JTdGF0ZUlzQ29udGVudEVkaXRhYmxlOjpZZXMgOiBFZGl0b3JTdGF0ZUlzQ29udGVudEVkaXRh
YmxlOjpObzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmlu
ZGV4IDk1NDA5ZTliMDRjZWU2ZTE3ZWQxOTVjMWIzZjA1NDY1NThhMGQ2YjYuLjY5NDQzMzgxMjE2
ZGQxNzhiMDYzNzQ1YWRlYTdiMzY2OWM0NDM5MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTQ1Myw4ICs0NTMsOCBAQCBwdWJsaWM6CiAgICAgV2Vi
Q29yZTo6V2ViR0xMb2FkUG9saWN5IHJlc29sdmVXZWJHTFBvbGljeUZvclVSTChXZWJGcmFtZSos
IGNvbnN0IFVSTCYpOwogI2VuZGlmCiAgICAgCi0gICAgZW51bSBjbGFzcyBJbmNsdWRlUG9zdExh
eW91dERhdGFIaW50IHsgTm8sIFllcyB9OwotICAgIEVkaXRvclN0YXRlIGVkaXRvclN0YXRlKElu
Y2x1ZGVQb3N0TGF5b3V0RGF0YUhpbnQgPSBJbmNsdWRlUG9zdExheW91dERhdGFIaW50OjpZZXMp
IGNvbnN0OworICAgIGVudW0gY2xhc3MgU2hvdWxkUGVyZm9ybUxheW91dCB7IERlZmF1bHQsIE5v
LCBZZXMgfTsKKyAgICBFZGl0b3JTdGF0ZSBlZGl0b3JTdGF0ZShTaG91bGRQZXJmb3JtTGF5b3V0
ID0gU2hvdWxkUGVyZm9ybUxheW91dDo6RGVmYXVsdCkgY29uc3Q7CiAgICAgdm9pZCB1cGRhdGVF
ZGl0b3JTdGF0ZUFmdGVyTGF5b3V0SWZFZGl0YWJpbGl0eUNoYW5nZWQoKTsKIAogICAgIC8vIG9w
dGlvbnMgYXJlIFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uQmVoYXZpb3IgdmFsdWVz
LgpAQCAtMTIyNCw3ICsxMjI0LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlh
bGl6ZSgpOwogICAgIHZvaWQgcGxhdGZvcm1SZWluaXRpYWxpemUoKTsKICAgICB2b2lkIHBsYXRm
b3JtRGV0YWNoKCk7Ci0gICAgdm9pZCBwbGF0Zm9ybUVkaXRvclN0YXRlKFdlYkNvcmU6OkZyYW1l
JiwgRWRpdG9yU3RhdGUmIHJlc3VsdCwgSW5jbHVkZVBvc3RMYXlvdXREYXRhSGludCkgY29uc3Q7
CisgICAgdm9pZCBwbGF0Zm9ybUVkaXRvclN0YXRlKFdlYkNvcmU6OkZyYW1lJiwgRWRpdG9yU3Rh
dGUmKSBjb25zdDsKKyAgICBib29sIHBsYXRmb3JtTmVlZHNMYXlvdXRGb3JFZGl0b3JTdGF0ZShj
b25zdCBXZWJDb3JlOjpGcmFtZSYpIGNvbnN0OwogICAgIHZvaWQgcGxhdGZvcm1XaWxsUGVyZm9y
bUVkaXRpbmdDb21tYW5kKCk7CiAgICAgdm9pZCBzZW5kRWRpdG9yU3RhdGVVcGRhdGUoKTsKIApA
QCAtMTIzMyw2ICsxMjM0LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHNlbmRUb3VjaEJhck1lbnVE
YXRhUmVtb3ZlZFVwZGF0ZShXZWJDb3JlOjpIVE1MTWVudUVsZW1lbnQmKTsKICAgICB2b2lkIHNl
bmRUb3VjaEJhck1lbnVJdGVtRGF0YUFkZGVkVXBkYXRlKFdlYkNvcmU6OkhUTUxNZW51SXRlbUVs
ZW1lbnQmKTsKICAgICB2b2lkIHNlbmRUb3VjaEJhck1lbnVJdGVtRGF0YVJlbW92ZWRVcGRhdGUo
V2ViQ29yZTo6SFRNTE1lbnVJdGVtRWxlbWVudCYpOworCisgICAgdm9pZCBwbGF0Zm9ybUVkaXRv
clN0YXRlQ29tbW9uKGNvbnN0IFdlYkNvcmU6OkZyYW1lJiwgRWRpdG9yU3RhdGUmKSBjb25zdDsK
ICNlbmRpZgogCiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY1dlYlBhZ2VNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jik7
CkBAIC0xOTA4LDcgKzE5MTEsNiBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtX21haW5GcmFtZVBy
b2dyZXNzQ29tcGxldGVkIHsgZmFsc2UgfTsKICAgICBib29sIG1fc2hvdWxkRGlzcGF0Y2hGYWtl
TW91c2VNb3ZlRXZlbnRzIHsgdHJ1ZSB9OwotICAgIGJvb2wgbV9pc0VkaXRvclN0YXRlTWlzc2lu
Z1Bvc3RMYXlvdXREYXRhIHsgZmFsc2UgfTsKICAgICBib29sIG1faXNTZWxlY3RpbmdUZXh0V2hp
bGVJbnNlcnRpbmdBc3luY2hyb25vdXNseSB7IGZhbHNlIH07CiAKICAgICBlbnVtIGNsYXNzIEVk
aXRvclN0YXRlSXNDb250ZW50RWRpdGFibGUgeyBObywgWWVzLCBVbnNldCB9OwpAQCAtMTk2OCw1
ICsxOTcwLDkgQEAgcHJpdmF0ZToKIGlubGluZSB2b2lkIFdlYlBhZ2U6OnBsYXRmb3JtV2lsbFBl
cmZvcm1FZGl0aW5nQ29tbWFuZCgpIHsgfQogI2VuZGlmCiAKKyNpZiAhUExBVEZPUk0oQ09DT0Ep
CitpbmxpbmUgYm9vbCBXZWJQYWdlOjpwbGF0Zm9ybU5lZWRzTGF5b3V0Rm9yRWRpdG9yU3RhdGUo
RnJhbWUmKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9n
dGsvV2ViUGFnZUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsv
V2ViUGFnZUd0ay5jcHAKaW5kZXggMWMwYTNkMTgwZmUxMTQ0MWE4OTcyYTRlZDgyOTE5MjU2MzFh
MDA1My4uNmI1NGMyMDAxYjEwZDcxYjlkMTUwZWQzODFhN2U0NWE1OWRmMGM3MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlBhZ2VHdGsuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQYWdlR3RrLmNwcApA
QCAtNzYsMTIgKzc2LDEwIEBAIHZvaWQgV2ViUGFnZTo6cGxhdGZvcm1EZXRhY2goKQogewogfQog
Ci12b2lkIFdlYlBhZ2U6OnBsYXRmb3JtRWRpdG9yU3RhdGUoRnJhbWUmIGZyYW1lLCBFZGl0b3JT
dGF0ZSYgcmVzdWx0LCBJbmNsdWRlUG9zdExheW91dERhdGFIaW50IHNob3VsZEluY2x1ZGVQb3N0
TGF5b3V0RGF0YSkgY29uc3QKK3ZvaWQgV2ViUGFnZTo6cGxhdGZvcm1FZGl0b3JTdGF0ZShGcmFt
ZSYgZnJhbWUsIEVkaXRvclN0YXRlJiByZXN1bHQpIGNvbnN0CiB7Ci0gICAgaWYgKHNob3VsZElu
Y2x1ZGVQb3N0TGF5b3V0RGF0YSA9PSBJbmNsdWRlUG9zdExheW91dERhdGFIaW50OjpObyB8fCAh
ZnJhbWUudmlldygpIHx8IGZyYW1lLnZpZXcoKS0+bmVlZHNMYXlvdXQoKSkgewotICAgICAgICBy
ZXN1bHQuaXNNaXNzaW5nUG9zdExheW91dERhdGEgPSB0cnVlOworICAgIGlmIChyZXN1bHQuaXNN
aXNzaW5nUG9zdExheW91dERhdGEpCiAgICAgICAgIHJldHVybjsKLSAgICB9CiAKICAgICBhdXRv
JiBwb3N0TGF5b3V0RGF0YSA9IHJlc3VsdC5wb3N0TGF5b3V0RGF0YSgpOwogICAgIHBvc3RMYXlv
dXREYXRhLmNhcmV0UmVjdEF0U3RhcnQgPSBmcmFtZS5zZWxlY3Rpb24oKS5hYnNvbHV0ZUNhcmV0
Qm91bmRzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9p
b3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9X
ZWJQYWdlSU9TLm1tCmluZGV4IGVmZTVhZmM0MzY5OTdkODJkN2YwOTk4ZGY4YTZmMjg0MzgyNDE1
N2IuLjNiNjkwNzVmYTA1MDRmZWVkODdiZDA3OTI1Mzk1YzNhYzA1M2RkYTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0x
OTYsOCArMTk2LDIxIEBAIGJvb2wgV2ViUGFnZTo6aXNUcmFuc3BhcmVudE9yRnVsbHlDbGlwcGVk
KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpIGNvbnN0CiAgICAgcmV0dXJuIGVuY2xvc2luZ0xheWVy
ICYmIGVuY2xvc2luZ0xheWVyLT5pc1RyYW5zcGFyZW50T3JGdWxseUNsaXBwZWRSZXNwZWN0aW5n
UGFyZW50RnJhbWVzKCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6cGxhdGZvcm1FZGl0b3JTdGF0ZShG
cmFtZSYgZnJhbWUsIEVkaXRvclN0YXRlJiByZXN1bHQsIEluY2x1ZGVQb3N0TGF5b3V0RGF0YUhp
bnQgc2hvdWxkSW5jbHVkZVBvc3RMYXlvdXREYXRhKSBjb25zdAorYm9vbCBXZWJQYWdlOjpwbGF0
Zm9ybU5lZWRzTGF5b3V0Rm9yRWRpdG9yU3RhdGUoY29uc3QgRnJhbWUmIGZyYW1lKSBjb25zdAog
eworICAgIC8vIElmIHdlIGhhdmUgYSBjb21wb3NpdGlvbiBvciBhcmUgdXNpbmcgYSBoYXJkd2Fy
ZSBrZXlib2FyZCB0aGVuIHdlIG5lZWQgdG8gc2VuZCB0aGUgZnVsbAorICAgIC8vIGVkaXRvciBz
byB0aGF0IHRoZSBVSVByb2Nlc3MgY2FuIHVwZGF0ZSBVSSwgaW5jbHVkaW5nIHRoZSBwb3NpdGlv
biBvZiB0aGUgY2FyZXQuCisgICAgYm9vbCBuZWVkc0xheW91dCA9IGZyYW1lLmVkaXRvcigpLmhh
c0NvbXBvc2l0aW9uKCk7CisjaWYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQorICAgIG5lZWRzTGF5
b3V0IHw9IG1fa2V5Ym9hcmRJc0F0dGFjaGVkOworI2VuZGlmCisgICAgcmV0dXJuIG5lZWRzTGF5
b3V0OworfQorCit2b2lkIFdlYlBhZ2U6OnBsYXRmb3JtRWRpdG9yU3RhdGUoRnJhbWUmIGZyYW1l
LCBFZGl0b3JTdGF0ZSYgcmVzdWx0KSBjb25zdAoreworICAgIHBsYXRmb3JtRWRpdG9yU3RhdGVD
b21tb24oZnJhbWUsIHJlc3VsdCk7CisKICAgICBGcmFtZVZpZXcqIHZpZXcgPSBmcmFtZS52aWV3
KCk7CiAgICAgaWYgKGZyYW1lLmVkaXRvcigpLmhhc0NvbXBvc2l0aW9uKCkpIHsKICAgICAgICAg
UmVmUHRyPFJhbmdlPiBjb21wb3NpdGlvblJhbmdlID0gZnJhbWUuZWRpdG9yKCkuY29tcG9zaXRp
b25SYW5nZSgpOwpAQCAtMjE0LDIzICsyMjcsMTEgQEAgdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybUVk
aXRvclN0YXRlKEZyYW1lJiBmcmFtZSwgRWRpdG9yU3RhdGUmIHJlc3VsdCwgSW5jbHVkZVBvc3QK
ICAgICAgICAgfQogICAgIH0KIAotICAgIC8vIFdlIG9ubHkgc2V0IHRoZSByZW1haW5pbmcgRWRp
dG9yU3RhdGUgZW50cmllcyBpZiBsYXlvdXQgaXMgZG9uZSBhcyBhIHBlcmZvcm1hbmNlIG9wdGlt
aXphdGlvbgotICAgIC8vIHRvIGF2b2lkIHRoZSBuZWVkIHRvIGZvcmNlIGEgc3luY2hyb25vdXMg
bGF5b3V0IGhlcmUgdG8gY29tcHV0ZSB0aGVzZSBlbnRyaWVzLiBJZiB3ZQotICAgIC8vIGhhdmUg
YSBjb21wb3NpdGlvbiBvciBhcmUgdXNpbmcgYSBoYXJkd2FyZSBrZXlib2FyZCB0aGVuIHdlIHNl
bmQgdGhlIGZ1bGwgZWRpdG9yIHN0YXRlCi0gICAgLy8gaW1tZWRpYXRlbHkgc28gdGhhdCB0aGUg
VUlQcm9jZXNzIGNhbiB1cGRhdGUgVUksIGluY2x1ZGluZyB0aGUgcG9zaXRpb24gb2YgdGhlIGNh
cmV0LgotICAgIGJvb2wgbmVlZHNMYXlvdXQgPSAhZnJhbWUudmlldygpIHx8IGZyYW1lLnZpZXco
KS0+bmVlZHNMYXlvdXQoKTsKLSAgICBib29sIHJlcXVpcmVzUG9zdExheW91dERhdGEgPSBmcmFt
ZS5lZGl0b3IoKS5oYXNDb21wb3NpdGlvbigpOwotI2lmICFQTEFURk9STShNQUNDQVRBTFlTVCkK
LSAgICByZXF1aXJlc1Bvc3RMYXlvdXREYXRhIHw9IG1fa2V5Ym9hcmRJc0F0dGFjaGVkOwotI2Vu
ZGlmCi0gICAgaWYgKChzaG91bGRJbmNsdWRlUG9zdExheW91dERhdGEgPT0gSW5jbHVkZVBvc3RM
YXlvdXREYXRhSGludDo6Tm8gfHwgbmVlZHNMYXlvdXQpICYmICFyZXF1aXJlc1Bvc3RMYXlvdXRE
YXRhKSB7Ci0gICAgICAgIHJlc3VsdC5pc01pc3NpbmdQb3N0TGF5b3V0RGF0YSA9IHRydWU7Cisg
ICAgaWYgKHJlc3VsdC5pc01pc3NpbmdQb3N0TGF5b3V0RGF0YSkKICAgICAgICAgcmV0dXJuOwot
ICAgIH0KIAogICAgIGF1dG8mIHBvc3RMYXlvdXREYXRhID0gcmVzdWx0LnBvc3RMYXlvdXREYXRh
KCk7Ci0gICAgCi0gICAgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uID0gZnJhbWUu
c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7CisgICAgY29uc3QgYXV0byYgc2VsZWN0aW9uID0gZnJh
bWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7CiAgICAgcG9zdExheW91dERhdGEuaXNTdGFibGVT
dGF0ZVVwZGF0ZSA9IG1faXNJblN0YWJsZVN0YXRlOwogICAgIGJvb2wgc3RhcnROb2RlSXNJbnNp
ZGVGaXhlZFBvc2l0aW9uID0gZmFsc2U7CiAgICAgYm9vbCBlbmROb2RlSXNJbnNpZGVGaXhlZFBv
c2l0aW9uID0gZmFsc2U7CkBAIC00NDQsNyArNDQ1LDcgQEAgYm9vbCBXZWJQYWdlOjpoYW5kbGVF
ZGl0aW5nS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50JiBldmVudCkKIAogICAgIC8vIEZJWE1F
OiBJbnRlcnByZXQgdGhlIGV2ZW50IGltbWVkaWF0ZWx5IHVwb24gcmVjZWl2aW5nIGl0IGluIFVJ
IHByb2Nlc3MsIHdpdGhvdXQgc2VuZGluZyB0byBXZWJQcm9jZXNzIGZpcnN0LgogICAgIGJvb2wg
ZXZlbnRXYXNIYW5kbGVkID0gZmFsc2U7Ci0gICAgYm9vbCBzZW5kUmVzdWx0ID0gV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6SW50ZXJwcmV0S2V5RXZlbnQoZWRpdG9yU3RhdGUoKSwgcGxhdGZv
cm1FdmVudC0+dHlwZSgpID09IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6Q2hhciksCisgICAgYm9v
bCBzZW5kUmVzdWx0ID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6SW50ZXJwcmV0S2V5RXZl
bnQoZWRpdG9yU3RhdGUoU2hvdWxkUGVyZm9ybUxheW91dDo6WWVzKSwgcGxhdGZvcm1FdmVudC0+
dHlwZSgpID09IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6Q2hhciksCiAgICAgICAgIE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkludGVycHJldEtleUV2ZW50OjpSZXBseShldmVudFdhc0hhbmRsZWQp
LCBtX3BhZ2VJRCk7CiAgICAgcmV0dXJuIHNlbmRSZXN1bHQgJiYgZXZlbnRXYXNIYW5kbGVkOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBh
Z2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1h
Yy5tbQppbmRleCA0MzFkZmExN2FjYTA1YjYwZWZlOWFlMDQwM2E0MDg4MGUyODE4ZDgwLi4zMDRh
NTZhNWQ4ZGQ1MmMwNmQyZTY5ZGYzMjBlZjIzZjdmYjYyOWYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQpAQCAtMTMzLDE0ICsx
MzMsMTQgQEAgdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybURldGFjaCgpCiAgICAgW21fbW9ja0FjY2Vz
c2liaWxpdHlFbGVtZW50IHNldFdlYlBhZ2U6bnVsbHB0cl07CiB9CiAKLXZvaWQgV2ViUGFnZTo6
cGxhdGZvcm1FZGl0b3JTdGF0ZShGcmFtZSYgZnJhbWUsIEVkaXRvclN0YXRlJiByZXN1bHQsIElu
Y2x1ZGVQb3N0TGF5b3V0RGF0YUhpbnQgc2hvdWxkSW5jbHVkZVBvc3RMYXlvdXREYXRhKSBjb25z
dAordm9pZCBXZWJQYWdlOjpwbGF0Zm9ybUVkaXRvclN0YXRlKEZyYW1lJiBmcmFtZSwgRWRpdG9y
U3RhdGUmIHJlc3VsdCkgY29uc3QKIHsKLSAgICBpZiAoc2hvdWxkSW5jbHVkZVBvc3RMYXlvdXRE
YXRhID09IEluY2x1ZGVQb3N0TGF5b3V0RGF0YUhpbnQ6Ok5vIHx8ICFmcmFtZS52aWV3KCkgfHwg
ZnJhbWUudmlldygpLT5uZWVkc0xheW91dCgpIHx8ICFyZXN1bHQuaXNDb250ZW50RWRpdGFibGUp
IHsKLSAgICAgICAgcmVzdWx0LmlzTWlzc2luZ1Bvc3RMYXlvdXREYXRhID0gdHJ1ZTsKKyAgICBw
bGF0Zm9ybUVkaXRvclN0YXRlQ29tbW9uKGZyYW1lLCByZXN1bHQpOworCisgICAgaWYgKHJlc3Vs
dC5pc01pc3NpbmdQb3N0TGF5b3V0RGF0YSkKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAotICAg
IGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbiA9IGZyYW1lLnNlbGVjdGlvbigpLnNl
bGVjdGlvbigpOworICAgIGNvbnN0IGF1dG8mIHNlbGVjdGlvbiA9IGZyYW1lLnNlbGVjdGlvbigp
LnNlbGVjdGlvbigpOwogICAgIFJlZlB0cjxSYW5nZT4gc2VsZWN0ZWRSYW5nZSA9IHNlbGVjdGlv
bi50b05vcm1hbGl6ZWRSYW5nZSgpOwogICAgIGlmICghc2VsZWN0ZWRSYW5nZSkKICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2lu
L1dlYlBhZ2VXaW4uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL1dl
YlBhZ2VXaW4uY3BwCmluZGV4IGM5NGJkMDVjOTI0NTU3Yjk0ODNlNjEzZGQ5OWE4OGRlYjA5NzE0
NGIuLmFhNDNjZTllYWQ2MjY2ZTBlYWViYjE1YjFhZDkzOWRkZjMyZmE4MjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9XZWJQYWdlV2luLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93aW4vV2ViUGFnZVdpbi5jcHAKQEAg
LTYzLDcgKzYzLDcgQEAgdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybURldGFjaCgpCiB7CiB9CiAKLXZv
aWQgV2ViUGFnZTo6cGxhdGZvcm1FZGl0b3JTdGF0ZShGcmFtZSYgZnJhbWUsIEVkaXRvclN0YXRl
JiByZXN1bHQsIEluY2x1ZGVQb3N0TGF5b3V0RGF0YUhpbnQgc2hvdWxkSW5jbHVkZVBvc3RMYXlv
dXREYXRhKSBjb25zdAordm9pZCBXZWJQYWdlOjpwbGF0Zm9ybUVkaXRvclN0YXRlKEZyYW1lJiwg
RWRpdG9yU3RhdGUmKSBjb25zdAogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS93cGUvV2ViUGFnZVdQRS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS93cGUvV2ViUGFnZVdQRS5jcHAKaW5kZXggYzJiNTI2NTlhMzZlYTgzZTdi
ZGU1Y2NmMTZmZjI3M2U0ODRjODE1Mi4uN2QxMjdmMjE4MDRjY2IxNGMwYTQ2OTZjYjY3M2U2MmNm
ODkzZjg4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd3Bl
L1dlYlBhZ2VXUEUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3dw
ZS9XZWJQYWdlV1BFLmNwcApAQCAtNTgsNyArNTgsNyBAQCB2b2lkIFdlYlBhZ2U6OnBsYXRmb3Jt
RGV0YWNoKCkKIHsKIH0KIAotdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybUVkaXRvclN0YXRlKEZyYW1l
JiwgRWRpdG9yU3RhdGUmLCBJbmNsdWRlUG9zdExheW91dERhdGFIaW50KSBjb25zdAordm9pZCBX
ZWJQYWdlOjpwbGF0Zm9ybUVkaXRvclN0YXRlKEZyYW1lJiwgRWRpdG9yU3RhdGUmKSBjb25zdAog
ewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZmEwYTY2NDA0MmU3MTEyMGEzNGVk
OWI4MTBhMGNjZThkYjljYWM3ZS4uNTcwMTM2NDA2ODk4OGY2NDNhM2ZkNmU1MjRjNjAyM2NiMGNm
MmM2NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE5LTA3LTIyICBEYW5pZWwgQmF0ZXMgIDxk
YWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBBU1NFUlRJT04gRkFJTFVSRTogIWlz
TWlzc2luZ1Bvc3RMYXlvdXREYXRhIGluIFdlYktpdDo6RWRpdG9yU3RhdGU6OnBvc3RMYXlvdXRE
YXRhKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
OTk2MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTMzMjM5NjY+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgdGVzdCB0byBlbnN1cmUgd2Ug
ZG8gbm90IGFzc2VydCB3aGVuIHVzaW5nIHRoZSBzb2Z0d2FyZSBrZXlib2FyZCB0byB0eXBlIGEg
Y2hhcmFjdGVyCisgICAgICAgIGludG8gYSA8dGV4dGFyZWE+IGFuZCB0aGVuIGRlbGV0ZSBpdC4K
KworICAgICAgICAqIFRlc3RFeHBlY3RhdGlvbnM6IFNraXAgdGVzdHMgaW4gZWRpdGluZy9kZWxl
dGluZy9pb3Mgb24gYWxsIHBsYXRmb3Jtcy4KKyAgICAgICAgKiBlZGl0aW5nL2RlbGV0aW5nL2lv
cy9iYWNrc3BhY2UtbGFzdC1jaGFyYWN0ZXIuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZv
cm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnM6IFVuc2tpcCB0ZXN0cyBpbiBlZGl0aW5nL2RlbGV0aW5n
L2lvcyBvbiBpT1MuCisKIDIwMTktMDctMjIgIFRydWl0dCBTYXZlbGwgIDx0c2F2ZWxsQGFwcGxl
LmNvbT4KIAogICAgICAgICBbIE1vamF2ZSBEZWJ1ZyBXSzEgXSBMYXlvdXQgVGVzdCBpbXBvcnRl
ZC9ibGluay9zdG9yYWdlL2luZGV4ZWRkYi9ibG9iLWJhc2ljcy1tZXRhZGF0YS5odG1sIGlzIFRp
bWluZyBvdXQgKDIwMDAwMikKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlv
bnMgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDlkYzMyY2FhMzM2YmQ5YzIy
YTA5M2EzYWU3ZWExYWRhZjA3MGQ0NGYuLjkzNTlmMmYxMTQyY2NkNmQ0ZWYxNzY1ZTQ1YTk3ZTkw
MzllMzBmODkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIv
TGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTksNiArMTksNyBAQCBlZGl0aW5nL2lu
cHV0L2lvcyBbIFNraXAgXQogZWRpdGluZy9maW5kIFsgU2tpcCBdCiBlZGl0aW5nL3Bhc3RlYm9h
cmQvZ3RrIFsgU2tpcCBdCiBlZGl0aW5nL3NlbGVjdGlvbi9pb3MgWyBTa2lwIF0KK2VkaXRpbmcv
ZGVsZXRpbmcvaW9zIFsgU2tpcCBdCiBlZGl0aW5nL3VuZG8tbWFuYWdlciBbIFNraXAgXQogdGls
ZWQtZHJhd2luZyBbIFNraXAgXQogZmFzdC9jc3Mvd2F0Y2hvcyBbIFNraXAgXQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9kZWxldGluZy9pb3MvYmFja3NwYWNlLWxhc3QtY2hhcmFj
dGVyLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2RlbGV0aW5nL2lvcy9iYWNrc3BhY2UtbGFz
dC1jaGFyYWN0ZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NDI4Mzc4ZmE3MmY3MmFmNWIxMjFjZmFjNTdl
NjVhNjgxYWE2OTk0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9kZWxl
dGluZy9pb3MvYmFja3NwYWNlLWxhc3QtY2hhcmFjdGVyLmh0bWwKQEAgLTAsMCArMSw0NiBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNv
dXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0i
dGVzdC1jb250YWluZXIiPgorICAgIDx0ZXh0YXJlYSBpZD0iaW5wdXQiPjwvdGV4dGFyZWE+Cisg
ICAgPHRleHRhcmVhIGlkPSJvdXRwdXQiIHJlYWRvbmx5PjwvdGV4dGFyZWE+Cis8L2Rpdj4KKzxz
Y3JpcHQ+Cit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKK2xldCBpbnB1dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJpbnB1dCIpOworCitmdW5jdGlvbiBhcHBlbmRBTmV3bGluZSgp
Cit7CisgICAgbGV0IG91dHB1dEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgib3V0
cHV0Iik7CisgICAgb3V0cHV0RWxlbWVudC52YWx1ZSA9IG91dHB1dEVsZW1lbnQudmFsdWUgKyAi
XG4iOworfQorCithc3luYyBmdW5jdGlvbiBydW5UZXN0KCkKK3sKKyAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCisgICAgICAgIGF3YWl0IFVJSGVscGVyLnNldEhhcmR3YXJlS2V5Ym9hcmRBdHRh
Y2hlZChmYWxzZSk7CisKKyAgICBhd2FpdCBVSUhlbHBlci5jYWxsRnVuY3Rpb25BbmRXYWl0Rm9y
RXZlbnQoKCkgPT4gd2luZG93LnRlc3RSdW5uZXIgJiYgVUlIZWxwZXIuYWN0aXZhdGVFbGVtZW50
KGlucHV0KSwgaW5wdXQsICJmb2N1cyIpOworCisgICAgYXdhaXQgVUlIZWxwZXIuY2FsbEZ1bmN0
aW9uQW5kV2FpdEZvckV2ZW50KCgpID0+IHdpbmRvdy50ZXN0UnVubmVyICYmIFVJSGVscGVyLmtl
eURvd24oInciKSwgaW5wdXQsICJrZXl1cCIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygn
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImlucHV0IikudmFsdWUnLCAidyIpOworCisgICAgYXdh
aXQgVUlIZWxwZXIuY2FsbEZ1bmN0aW9uQW5kV2FpdEZvckV2ZW50KCgpID0+IHdpbmRvdy50ZXN0
UnVubmVyICYmIFVJSGVscGVyLmtleURvd24oIlxiIiksIGlucHV0LCAia2V5dXAiKTsKKyAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoJ2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpbnB1dCIpLnZh
bHVlJywgIiIpOworCisgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgidGVzdC1jb250YWluZXIiKSk7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisK
K2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHVzaW5nIHRoZSBzb2Z0d2FyZSBrZXlib2FyZCBhbmQg
cHJlc3NpbmcgJ3cnIHRoZW4gPGtiZD5iYWNrc3BhY2U8L2tiZD4gZGVsZXRlcyB0aGUgJ3cnIGFu
ZCBkb2VzIG5vdCBjYXVzZSBhbiBhc3NlcnRpb24gZmFpbHVyZSBpbiBhIGRlYnVnIGJ1aWxkLiIp
CitpbnB1dC5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIiwgYXBwZW5kQU5ld2xpbmUpOworCity
dW5UZXN0KCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggNjg4Y2E5M2U5MTdmNjQyODRhZGRjNzhlNTcw
OWQ0NDliOGRlN2IyNy4uODE1OTM5ZTE5NWFlYzk3MmY0Y2E0MWM5YmU2MzU3ZmYwYmMzMjViMyAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMKKysr
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTgsNiArOCw3
IEBACiAKIGFjY2Vzc2liaWxpdHkvaW9zLXNpbXVsYXRvciBbIFBhc3MgXQogZGlzcGxheWxpc3Rz
IFsgUGFzcyBdCitlZGl0aW5nL2RlbGV0aW5nL2lvcyBbIFBhc3MgXQogaHR0cC90ZXN0cy9xdWlj
a2xvb2sgWyBQYXNzIF0KIG1lZGlhL2lvcyBbIFBhc3MgXQogcXVpY2tsb29rIFsgUGFzcyBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>374637</attachid>
            <date>2019-07-22 14:35:11 -0700</date>
            <delta_ts>2019-07-22 14:49:04 -0700</delta_ts>
            <desc>Patch and layout test</desc>
            <filename>bug-199960-20190722143510.patch</filename>
            <type>text/plain</type>
            <size>28467</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ3Njg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGQ1NWVlOGY2NWNmODRkNDg1
NTllNGI5MWI5MDFhZmVhMmRmZDUxNDguLjcyM2E4MGViMjQ5MTU0NTk1NjAwM2RhOGQzMWM0NzJh
MmI5ZjUzZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjEgQEAKKzIwMTktMDctMjIgIERhbmllbCBC
YXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIEFTU0VSVElPTiBGQUlM
VVJFOiAhaXNNaXNzaW5nUG9zdExheW91dERhdGEgaW4gV2ViS2l0OjpFZGl0b3JTdGF0ZTo6cG9z
dExheW91dERhdGEoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTk5OTYwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81MzMyMzk2Nj4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZhY3RvciB0aGUgY29t
cHV0YXRpb24gb2YgZWRpdG9yIHN0YXRlIHNvIHRoYXQgd2UgY2FuIHJlcXVlc3QgdGhhdCBhIGxh
eW91dCBiZSBwZXJmb3JtZWQKKyAgICAgICAgZWFjaCB0aW1lIHdlIGNvbXB1dGUgdGhlIGVkaXRv
ciBzdGF0ZSBhcyBwYXJ0IG9mIGFza2luZyB0aGUgVUkgcHJvY2VzcyB0byBpbnRlcnByZXQgYSBr
ZXkKKyAgICAgICAgZXZlbnQuIFRoZSBmdWxsIChyZWFkOiBhZnRlciBsYXlvdXQpIGVkaXRvciBz
dGF0ZSBpcyBuZWVkZWQgZm9yIFVJS2l0IHRvIHBlcmZvcm0gYSBkZWxldGlvbgorICAgICAgICBi
ZWNhdXNlIFVJS2l0IHdhbnRzIHRvIGtub3cgaG93IG1hbnkgY2hhcmFjdGVycyBhcmUgYmVmb3Jl
IHRoZSBzZWxlY3Rpb24uIE90aGVyd2lzZSwgd2UgaGl0CisgICAgICAgIGFuIGFzc2VydCBkdWUg
dG8gdGhlIGZhY3QgdGhlIGxhc3QgZWRpdG9yIHN0YXRlIHNlbnQgKHdoZW4gdGhlIFdlYiBwcm9j
ZXNzIGFza2VkIHRoZSBVSSBwcm9jZXNzCisgICAgICAgIHRvIGludGVycHJldCB0aGUga2V5KSBp
cyBtaXNzaW5nIGxheW91dCBkYXRhLgorCisgICAgICAgIFRoZSByZWZhY3RvcmluZyBhbHNvIG1v
dmVzIHRoZSBDb2NvYS1jb21tb24gY29kZSBvdXQgb2YgdGhlIHBsYXRmb3JtLWluZGVwZW5kZW50
IFdlYlBhZ2UuY3BwCisgICAgICAgIGZpbGUgaW50byBXZWJQYWdlQ29jb2EubW0uCisKKyAgICAg
ICAgT25lIHNpZGUgZWZmZWN0IG9mIHRoZSByZWZhY3RvcmluZyBpcyB0aGF0IHdlIG5vIGxvbmdl
ciBhbGxvdyB0aGUgcGxhdGZvcm1FZGl0b3JTdGF0ZSgpIGZ1bmN0aW9uCisgICAgICAgIHRvIG92
ZXJyaWRlIHRoZSBpc01pc3NpbmdQb3N0TGF5b3V0RGF0YSBiaXQuIEN1cnJlbnRseSBpdCBjYW4g
ZXZlbiB0aG91Z2ggdGhlIGNhbGxpbmcgY29kZSwgdGhlCisgICAgICAgIHBsYXRmb3JtIGluZGVw
ZW5kZW50IGNvZGUgKFBJRSkgaW4gV2ViUGFnZSwgbWF5IGhhdmUgYXR0YWNoZWQgbGF5b3V0IGRh
dGEuIE5vdyB0aGUgUElFIGNvZGUgc2V0cworICAgICAgICB0aGlzIGJpdCBpZiBpdCBhdHRhY2hl
ZCBsYXlvdXQgZGF0YSBhbmQgdGhlIHBsYXRmb3JtRWRpdG9yU3RhdGUoKSBmdW5jdGlvbiBvbmx5
IGF0dGFjaGVzIG1vcmUKKyAgICAgICAgbGF5b3V0IGRhdGEgaWYgdGhhdCBiaXQgaXMgc2V0LiBw
bGF0Zm9ybUVkaXRvclN0YXRlKCkgbmV2ZXIgdW5zZXRzIHRoYXQgYml0IChpLmUuIHNldHMgaXNN
aXNzaW5nUG9zdExheW91dERhdGEKKyAgICAgICAgdG8gdHJ1ZSkuCisKKyAgICAgICAgVGhlIHBh
dGNoIGFsc28gcmVtb3ZlcyBtX2lzRWRpdG9yU3RhdGVNaXNzaW5nUG9zdExheW91dERhdGEgaW4g
V2ViUGFnZS5oLiBUaGlzIGluc3RhbmNlIHZhcmlhYmxlCisgICAgICAgIGhhcyBiZWVuIHVudXNl
ZCBzaW5jZSA8aHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzIyMTA2NC93ZWJraXQ+
LiBBbHNvIHdlIGhhdmVuJ3QgYmVlbiB1c2luZworICAgICAgICBJbmNsdWRlUG9zdExheW91dERh
dGFIaW50OjpObyBzaW5jZSB0aGUgbGFzdCByZWZlcmVuY2UgdG8gaXQgd2FzIHJlbW92ZWQgaW4g
PGh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yNDQ0OTQvd2Via2l0Pi4KKworICAg
ICAgICAqIFNoYXJlZC9FZGl0b3JTdGF0ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9Db2NvYS9XZWJQYWdlQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBsYXRm
b3JtRWRpdG9yU3RhdGVDb21tb24gY29uc3QpOiBBZGRlZC4gTW92ZWQgQ29jb2EtY29tbW9uIGNv
ZGUgZnJvbSBXZWJQYWdlLmNwcAorICAgICAgICB0byBoZXJlLgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZWRpdG9y
U3RhdGUgY29uc3QpOiBNb3ZlIENvY29hLWNvbW1vbiBjb2RlIHRvIFdlYlBhZ2VDb2NvYS5tbS4g
Q2hhbmdlIGVudW0gdG8KKyAgICAgICAgdHJhY2sgd2hldGhlciBhIGxheW91dCBzaG91bGQgYmUg
cGVyZm9ybWVkLiBLZWVwIHRoZSBjdXJyZW50IGJlaGF2aW9yIG9mIG9ubHkgaW5jbHVkaW5nIHBv
c3QgbGF5b3V0CisgICAgICAgIGRhdGEgaWYgdGhlIGZyYW1lIHZpZXcgZG9lcyBub3QgbmVlZCBh
IGxheW91dC4gVGhpcyBiZWhhdmlvciBpcyBlbmNvZGVkIGluIHRoZSBlbnVtZXJhdG9yIFNob3Vs
ZFBlcmZvcm1MYXlvdXQ6OkRlZmF1bHQuCisgICAgICAgIHdoaWNoIGlzIHRoZSBkZWZhdWx0IGFy
Z3VtZW50IHZhbHVlIGZvciB0aGUgYXJndW1lbnQgc2hvdWxkUGVyZm9ybUxheW91dC4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpwbGF0Zm9ybU5lZWRzTGF5b3V0Rm9yRWRpdG9yU3RhdGUgY29uc3QpOiBBZGRlZC4gTm9u
LUNvY29hIHBvcnQgaW1wbGVtZW50YXRpb24KKyAgICAgICAgdGhhdCByZXR1cm5zIGZhbHNlLgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUGFnZUd0ay5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtRWRpdG9yU3RhdGUgY29uc3QpOiBFYXJseSByZXR1
cm4gaWYgaXNNaXNzaW5nUG9zdExheW91dERhdGEgaXMgdHJ1ZS4KKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OnBsYXRmb3JtTmVlZHNMYXlvdXRGb3JFZGl0b3JTdGF0ZSBjb25zdCk6IEFkZGVkLiBLZWVwIHRo
ZSBjdXJyZW50IGJlaGF2aW9yIG9mCisgICAgICAgIHBlcmZvcm1pbmcgYSBsYXlvdXQgaWYgd2Ug
aGF2ZSBhIGNvbXBvc2l0aW9uIG9yIGEgaGFyZHdhcmUga2V5Ym9hcmQgaXMgYXR0YWNoZWQuCisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtRWRpdG9yU3RhdGUgY29uc3QpOiBDYWxs
IHBsYXRmb3JtRWRpdG9yU3RhdGVDb21tb24oKS4gQmFpbCBvdXQgZWFybHkKKyAgICAgICAgaWYg
aXNNaXNzaW5nUG9zdExheW91dERhdGEgaXMgdHJ1ZS4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQpOiBUaGUgaW1wb3J0YW50IHBhcnQgb2YgdGhp
cyBwYXRjaC4gUmVxdWVzdCBhIGxheW91dAorICAgICAgICB3aGVuIGNvbXB1dGluZyB0aGUgZWRp
dG9yIHN0YXRlIHRoYXQgd2Ugd2lsbCBzZW5kIHRvIHRoZSBVSSBwcm9jZXNzLgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6cGxhdGZvcm1FZGl0b3JTdGF0ZSBjb25zdCk6IENhbGwgcGxhdGZvcm1FZGl0b3JT
dGF0ZUNvbW1vbigpLiBCYWlsIG91dCBlYXJseQorICAgICAgICBpZiBpc01pc3NpbmdQb3N0TGF5
b3V0RGF0YSBpcyB0cnVlLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS93aW4vV2ViUGFn
ZVdpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtRWRpdG9yU3RhdGUg
Y29uc3QpOiBVcGRhdGUgYXMgbmVlZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS93
cGUvV2ViUGFnZVdQRS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtRWRp
dG9yU3RhdGUgY29uc3QpOiBEaXR0by4KKwogMjAxOS0wNy0yMiAgRGFuaWVsIEJhdGVzICA8ZGFi
YXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gUkVHUkVTU0lPTiAocjI0MTczNCk6IEF1
dG9jb3JyZWN0aW9uIGhpZ2hsaWdodCBzaG91bGQgaGlkZSB3aGVuIGZpZWxkIGJlY29tZXMgZGVm
b2N1c2VkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0b3JTdGF0ZS5oIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvRWRpdG9yU3RhdGUuaAppbmRleCBlNDljNTNkZGYyNGNkMWU5
MjZjMDIyZjlmYWQ1M2I1M2U3YzYwYTFlLi43Y2I0ZTcwMmNhNmYwMmE1M2QwNWE5M2NkNTdmODQy
MTYzNjBjN2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0b3JTdGF0ZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRvclN0YXRlLmgKQEAgLTc0LDcgKzc0LDcg
QEAgc3RydWN0IEVkaXRvclN0YXRlIHsKICAgICBib29sIGlzSW5QYXNzd29yZEZpZWxkIHsgZmFs
c2UgfTsKICAgICBib29sIGlzSW5QbHVnaW4geyBmYWxzZSB9OwogICAgIGJvb2wgaGFzQ29tcG9z
aXRpb24geyBmYWxzZSB9OwotICAgIGJvb2wgaXNNaXNzaW5nUG9zdExheW91dERhdGEgeyBmYWxz
ZSB9OworICAgIGJvb2wgaXNNaXNzaW5nUG9zdExheW91dERhdGEgeyB0cnVlIH07CiAKICNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgIFdlYkNvcmU6OkludFJlY3QgZmlyc3RNYXJrZWRSZWN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2Vi
UGFnZUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2Vi
UGFnZUNvY29hLm1tCmluZGV4IGQxMmI5OGE5NTg0MDFmMGMzZDlmMmNhYWNjNTViNDBiMmE2MWI3
NjQuLmUwMmM0YmE2MDA2M2NkZGJhYjQwNTVkYzU3Yjc0OTJhOWRkYzFmYjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2Eu
bW0KQEAgLTM0LDEwICszNCwxMyBAQAogI2ltcG9ydCAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIK
ICNpbXBvcnQgIldlYlBheW1lbnRDb29yZGluYXRvci5oIgogI2ltcG9ydCA8V2ViQ29yZS9EaWN0
aW9uYXJ5TG9va3VwLmg+CisjaW1wb3J0IDxXZWJDb3JlL0VkaXRpbmcuaD4KICNpbXBvcnQgPFdl
YkNvcmUvRWRpdG9yLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0V2ZW50SGFuZGxlci5oPgogI2ltcG9y
dCA8V2ViQ29yZS9Gb2N1c0NvbnRyb2xsZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvSFRNTENvbnZl
cnRlci5oPgorI2ltcG9ydCA8V2ViQ29yZS9IVE1MT0xpc3RFbGVtZW50Lmg+CisjaW1wb3J0IDxX
ZWJDb3JlL0hUTUxVTGlzdEVsZW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvSGl0VGVzdFJlc3Vs
dC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Ob2RlUmVuZGVyU3R5bGUuaD4KICNpbXBvcnQgPFdlYkNv
cmUvUGF5bWVudENvb3JkaW5hdG9yLmg+CkBAIC0yMjcsNyArMjMwLDcyIEBAIHZvaWQgV2ViUGFn
ZTo6dXBkYXRlTW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50QWZ0ZXJDb21taXR0aW5nTG9hZCgpCiAg
ICAgYXV0byogZG9jdW1lbnQgPSBtYWluRnJhbWUoKS0+ZG9jdW1lbnQoKTsKICAgICBbbV9tb2Nr
QWNjZXNzaWJpbGl0eUVsZW1lbnQgc2V0SGFzTWFpbkZyYW1lUGx1Z2luOmRvY3VtZW50ID8gZG9j
dW1lbnQtPmlzUGx1Z2luRG9jdW1lbnQoKSA6IGZhbHNlXTsKIH0KLSAgICAKKwordm9pZCBXZWJQ
YWdlOjpwbGF0Zm9ybUVkaXRvclN0YXRlQ29tbW9uKGNvbnN0IEZyYW1lJiBmcmFtZSwgRWRpdG9y
U3RhdGUmIHJlc3VsdCkgY29uc3QKK3sKKyAgICBpZiAocmVzdWx0LmlzTWlzc2luZ1Bvc3RMYXlv
dXREYXRhKQorICAgICAgICByZXR1cm47CisKKyAgICBjb25zdCBhdXRvJiBzZWxlY3Rpb24gPSBm
cmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKTsKKworICAgIGlmICghcmVzdWx0LmlzQ29udGVu
dEVkaXRhYmxlIHx8IHNlbGVjdGlvbi5pc05vbmUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
YXV0byYgcG9zdExheW91dERhdGEgPSByZXN1bHQucG9zdExheW91dERhdGEoKTsKKyAgICBpZiAo
YXV0byBlZGl0aW5nU3R5bGUgPSBFZGl0aW5nU3R5bGU6OnN0eWxlQXRTZWxlY3Rpb25TdGFydChz
ZWxlY3Rpb24pKSB7CisgICAgICAgIGlmIChlZGl0aW5nU3R5bGUtPmhhc1N0eWxlKENTU1Byb3Bl
cnR5Rm9udFdlaWdodCwgImJvbGQiX3MpKQorICAgICAgICAgICAgcG9zdExheW91dERhdGEudHlw
aW5nQXR0cmlidXRlcyB8PSBBdHRyaWJ1dGVCb2xkOworCisgICAgICAgIGlmIChlZGl0aW5nU3R5
bGUtPmhhc1N0eWxlKENTU1Byb3BlcnR5Rm9udFN0eWxlLCAiaXRhbGljIl9zKSB8fCBlZGl0aW5n
U3R5bGUtPmhhc1N0eWxlKENTU1Byb3BlcnR5Rm9udFN0eWxlLCAib2JsaXF1ZSJfcykpCisgICAg
ICAgICAgICBwb3N0TGF5b3V0RGF0YS50eXBpbmdBdHRyaWJ1dGVzIHw9IEF0dHJpYnV0ZUl0YWxp
Y3M7CisKKyAgICAgICAgaWYgKGVkaXRpbmdTdHlsZS0+aGFzU3R5bGUoQ1NTUHJvcGVydHlXZWJr
aXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCwgInVuZGVybGluZSJfcykpCisgICAgICAgICAgICBw
b3N0TGF5b3V0RGF0YS50eXBpbmdBdHRyaWJ1dGVzIHw9IEF0dHJpYnV0ZVVuZGVybGluZTsKKwor
ICAgICAgICBpZiAoYXV0byogc3R5bGVQcm9wZXJ0aWVzID0gZWRpdGluZ1N0eWxlLT5zdHlsZSgp
KSB7CisgICAgICAgICAgICBib29sIGlzTGVmdFRvUmlnaHQgPSBzdHlsZVByb3BlcnRpZXMtPnBy
b3BlcnR5QXNWYWx1ZUlEKENTU1Byb3BlcnR5RGlyZWN0aW9uKSA9PSBDU1NWYWx1ZUx0cjsKKyAg
ICAgICAgICAgIHN3aXRjaCAoc3R5bGVQcm9wZXJ0aWVzLT5wcm9wZXJ0eUFzVmFsdWVJRChDU1NQ
cm9wZXJ0eVRleHRBbGlnbikpIHsKKyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVSaWdodDoKKyAg
ICAgICAgICAgIGNhc2UgQ1NTVmFsdWVXZWJraXRSaWdodDoKKyAgICAgICAgICAgICAgICBwb3N0
TGF5b3V0RGF0YS50ZXh0QWxpZ25tZW50ID0gUmlnaHRBbGlnbm1lbnQ7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlTGVmdDoKKyAgICAgICAgICAgIGNh
c2UgQ1NTVmFsdWVXZWJraXRMZWZ0OgorICAgICAgICAgICAgICAgIHBvc3RMYXlvdXREYXRhLnRl
eHRBbGlnbm1lbnQgPSBMZWZ0QWxpZ25tZW50OworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgY2FzZSBDU1NWYWx1ZUNlbnRlcjoKKyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVX
ZWJraXRDZW50ZXI6CisgICAgICAgICAgICAgICAgcG9zdExheW91dERhdGEudGV4dEFsaWdubWVu
dCA9IENlbnRlckFsaWdubWVudDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IGNhc2UgQ1NTVmFsdWVKdXN0aWZ5OgorICAgICAgICAgICAgICAgIHBvc3RMYXlvdXREYXRhLnRl
eHRBbGlnbm1lbnQgPSBKdXN0aWZpZWRBbGlnbm1lbnQ7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlU3RhcnQ6CisgICAgICAgICAgICAgICAgcG9zdExh
eW91dERhdGEudGV4dEFsaWdubWVudCA9IGlzTGVmdFRvUmlnaHQgPyBMZWZ0QWxpZ25tZW50IDog
UmlnaHRBbGlnbm1lbnQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNl
IENTU1ZhbHVlRW5kOgorICAgICAgICAgICAgICAgIHBvc3RMYXlvdXREYXRhLnRleHRBbGlnbm1l
bnQgPSBpc0xlZnRUb1JpZ2h0ID8gUmlnaHRBbGlnbm1lbnQgOiBMZWZ0QWxpZ25tZW50OworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChhdXRvIHRleHRDb2xvciA9
IHN0eWxlUHJvcGVydGllcy0+cHJvcGVydHlBc0NvbG9yKENTU1Byb3BlcnR5Q29sb3IpKQorICAg
ICAgICAgICAgICAgIHBvc3RMYXlvdXREYXRhLnRleHRDb2xvciA9ICp0ZXh0Q29sb3I7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBpZiAoYXV0byogZW5jbG9zaW5nTGlzdEVsZW1lbnQgPSBlbmNs
b3NpbmdMaXN0KHNlbGVjdGlvbi5zdGFydCgpLmNvbnRhaW5lck5vZGUoKSkpIHsKKyAgICAgICAg
aWYgKGlzPEhUTUxVTGlzdEVsZW1lbnQ+KCplbmNsb3NpbmdMaXN0RWxlbWVudCkpCisgICAgICAg
ICAgICBwb3N0TGF5b3V0RGF0YS5lbmNsb3NpbmdMaXN0VHlwZSA9IFVub3JkZXJlZExpc3Q7Cisg
ICAgICAgIGVsc2UgaWYgKGlzPEhUTUxPTGlzdEVsZW1lbnQ+KCplbmNsb3NpbmdMaXN0RWxlbWVu
dCkpCisgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS5lbmNsb3NpbmdMaXN0VHlwZSA9IE9yZGVy
ZWRMaXN0OworICAgICAgICBlbHNlCisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICB9CisKKyAgICBwb3N0TGF5b3V0RGF0YS5iYXNlV3JpdGluZ0RpcmVjdGlvbiA9IGZyYW1l
LmVkaXRvcigpLmJhc2VXcml0aW5nRGlyZWN0aW9uRm9yU2VsZWN0aW9uU3RhcnQoKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNmFkYzc2Mjg4
MmE3Mjg4NzQ4NWFkODJkYjQyMWU3YTEwYjkyMzFjYS4uYmUzZjAyZjBjM2Q4N2FhYzA5MGYzNmRl
MGNmYzUxZWFhNjZjMzlkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAKQEAgLTE3MiwxMyArMTcyLDExIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9IVE1M
SW5wdXRFbGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IVE1MTWVudUVsZW1lbnQuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0hUTUxNZW51SXRlbUVsZW1lbnQuaD4KLSNpbmNsdWRlIDxXZWJDb3Jl
L0hUTUxPTGlzdEVsZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hUTUxQbHVnSW5FbGVtZW50
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50Lmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9IVE1MU2VsZWN0RWxlbWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSFRNTFRl
eHRBcmVhRWxlbWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSFRNTFRleHRGb3JtQ29udHJvbEVs
ZW1lbnQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0hUTUxVTGlzdEVsZW1lbnQuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0hpc3RvcnlDb250cm9sbGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IaXN0b3J5
SXRlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSGl0VGVzdFJlc3VsdC5oPgpAQCAtMTAxMSw5ICsx
MDA5LDEzIEBAIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSBXZWJQYWdlOjpyZXNvbHZlV2ViR0xQ
b2xpY3lGb3JVUkwoV2ViRnJhbWUqLCBjb25zdCBVUkwmCiB9CiAjZW5kaWYKIAotRWRpdG9yU3Rh
dGUgV2ViUGFnZTo6ZWRpdG9yU3RhdGUoSW5jbHVkZVBvc3RMYXlvdXREYXRhSGludCBzaG91bGRJ
bmNsdWRlUG9zdExheW91dERhdGEpIGNvbnN0CitFZGl0b3JTdGF0ZSBXZWJQYWdlOjplZGl0b3JT
dGF0ZShTaG91bGRQZXJmb3JtTGF5b3V0IHNob3VsZFBlcmZvcm1MYXlvdXQpIGNvbnN0CiB7Ci0g
ICAgRnJhbWUmIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWlu
RnJhbWUoKTsKKyAgICAvLyBSZWYgdGhlIGZyYW1lIGJlY2F1c2UgdGhpcyBmdW5jdGlvbiBtYXkg
cGVyZm9ybSBsYXlvdXQsIHdoaWNoIG1heSBjYXVzZSBmcmFtZSBkZXN0cnVjdGlvbi4KKyAgICBS
ZWY8RnJhbWU+IGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWlu
RnJhbWUoKTsKKworICAgIGlmIChzaG91bGRQZXJmb3JtTGF5b3V0ID09IFNob3VsZFBlcmZvcm1M
YXlvdXQ6OkRlZmF1bHQpCisgICAgICAgIHNob3VsZFBlcmZvcm1MYXlvdXQgPSBwbGF0Zm9ybU5l
ZWRzTGF5b3V0Rm9yRWRpdG9yU3RhdGUoZnJhbWUpID8gU2hvdWxkUGVyZm9ybUxheW91dDo6WWVz
IDogU2hvdWxkUGVyZm9ybUxheW91dDo6Tm87CiAKICAgICBFZGl0b3JTdGF0ZSByZXN1bHQ7CiAK
QEAgLTEwMjYsOCArMTAyOCw4IEBAIEVkaXRvclN0YXRlIFdlYlBhZ2U6OmVkaXRvclN0YXRlKElu
Y2x1ZGVQb3N0TGF5b3V0RGF0YUhpbnQgc2hvdWxkSW5jbHVkZVBvc3RMYXlvCiAgICAgICAgIH0K
ICAgICB9CiAKLSAgICBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24gPSBmcmFtZS5z
ZWxlY3Rpb24oKS5zZWxlY3Rpb24oKTsKLSAgICBjb25zdCBFZGl0b3ImIGVkaXRvciA9IGZyYW1l
LmVkaXRvcigpOworICAgIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbiA9IGZyYW1l
LT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKTsKKyAgICBjb25zdCBFZGl0b3ImIGVkaXRvciA9IGZy
YW1lLT5lZGl0b3IoKTsKIAogICAgIHJlc3VsdC5zZWxlY3Rpb25Jc05vbmUgPSBzZWxlY3Rpb24u
aXNOb25lKCk7CiAgICAgcmVzdWx0LnNlbGVjdGlvbklzUmFuZ2UgPSBzZWxlY3Rpb24uaXNSYW5n
ZSgpOwpAQCAtMTAzNywxMSArMTAzOSwxNSBAQCBFZGl0b3JTdGF0ZSBXZWJQYWdlOjplZGl0b3JT
dGF0ZShJbmNsdWRlUG9zdExheW91dERhdGFIaW50IHNob3VsZEluY2x1ZGVQb3N0TGF5bwogICAg
IHJlc3VsdC5oYXNDb21wb3NpdGlvbiA9IGVkaXRvci5oYXNDb21wb3NpdGlvbigpOwogICAgIHJl
c3VsdC5zaG91bGRJZ25vcmVTZWxlY3Rpb25DaGFuZ2VzID0gZWRpdG9yLmlnbm9yZVNlbGVjdGlv
bkNoYW5nZXMoKTsKIAotICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IGZyYW1lLmRvY3VtZW50KCkp
Ci0gICAgICAgIHJlc3VsdC5vcmlnaW5JZGVudGlmaWVyRm9yUGFzdGVib2FyZCA9IGRvY3VtZW50
LT5vcmlnaW5JZGVudGlmaWVyRm9yUGFzdGVib2FyZCgpOworICAgIGF1dG8mIGRvY3VtZW50ID0g
KmZyYW1lLT5kb2N1bWVudCgpOworICAgIHJlc3VsdC5vcmlnaW5JZGVudGlmaWVyRm9yUGFzdGVi
b2FyZCA9IGRvY3VtZW50Lm9yaWdpbklkZW50aWZpZXJGb3JQYXN0ZWJvYXJkKCk7CisKKyAgICBp
ZiAoc2hvdWxkUGVyZm9ybUxheW91dCA9PSBTaG91bGRQZXJmb3JtTGF5b3V0OjpZZXMpCisgICAg
ICAgIGRvY3VtZW50LnVwZGF0ZUxheW91dCgpOyAvLyBNYXkgY2F1c2UgZnJhbWUgZGVzdHJ1Y3Rp
b24KKworICAgIGlmIChhdXRvKiBmcmFtZVZpZXcgPSBkb2N1bWVudC52aWV3KCk7IGZyYW1lVmll
dyAmJiAhZnJhbWVWaWV3LT5uZWVkc0xheW91dCgpKSB7CisgICAgICAgIHJlc3VsdC5pc01pc3Np
bmdQb3N0TGF5b3V0RGF0YSA9IGZhbHNlOwogCi0gICAgYm9vbCBjYW5JbmNsdWRlUG9zdExheW91
dERhdGEgPSBmcmFtZS52aWV3KCkgJiYgIWZyYW1lLnZpZXcoKS0+bmVlZHNMYXlvdXQoKTsKLSAg
ICBpZiAoc2hvdWxkSW5jbHVkZVBvc3RMYXlvdXREYXRhID09IEluY2x1ZGVQb3N0TGF5b3V0RGF0
YUhpbnQ6OlllcyAmJiBjYW5JbmNsdWRlUG9zdExheW91dERhdGEpIHsKICAgICAgICAgYXV0byYg
cG9zdExheW91dERhdGEgPSByZXN1bHQucG9zdExheW91dERhdGEoKTsKICAgICAgICAgcG9zdExh
eW91dERhdGEuY2FuQ3V0ID0gZWRpdG9yLmNhbkN1dCgpOwogICAgICAgICBwb3N0TGF5b3V0RGF0
YS5jYW5Db3B5ID0gZWRpdG9yLmNhbkNvcHkoKTsKQEAgLTEwNDksNjYgKzEwNTUsOSBAQCBFZGl0
b3JTdGF0ZSBXZWJQYWdlOjplZGl0b3JTdGF0ZShJbmNsdWRlUG9zdExheW91dERhdGFIaW50IHNo
b3VsZEluY2x1ZGVQb3N0TGF5bwogCiAgICAgICAgIGlmIChtX25lZWRzRm9udEF0dHJpYnV0ZXMp
CiAgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS5mb250QXR0cmlidXRlcyA9IGVkaXRvci5mb250
QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoKTsKLQotI2lmIFBMQVRGT1JNKENPQ09BKQotICAg
ICAgICBpZiAocmVzdWx0LmlzQ29udGVudEVkaXRhYmxlICYmICFzZWxlY3Rpb24uaXNOb25lKCkp
IHsKLSAgICAgICAgICAgIGlmIChhdXRvIGVkaXRpbmdTdHlsZSA9IEVkaXRpbmdTdHlsZTo6c3R5
bGVBdFNlbGVjdGlvblN0YXJ0KHNlbGVjdGlvbikpIHsKLSAgICAgICAgICAgICAgICBpZiAoZWRp
dGluZ1N0eWxlLT5oYXNTdHlsZShDU1NQcm9wZXJ0eUZvbnRXZWlnaHQsICJib2xkIikpCi0gICAg
ICAgICAgICAgICAgICAgIHBvc3RMYXlvdXREYXRhLnR5cGluZ0F0dHJpYnV0ZXMgfD0gQXR0cmli
dXRlQm9sZDsKLQotICAgICAgICAgICAgICAgIGlmIChlZGl0aW5nU3R5bGUtPmhhc1N0eWxlKENT
U1Byb3BlcnR5Rm9udFN0eWxlLCAiaXRhbGljIikgfHwgZWRpdGluZ1N0eWxlLT5oYXNTdHlsZShD
U1NQcm9wZXJ0eUZvbnRTdHlsZSwgIm9ibGlxdWUiKSkKLSAgICAgICAgICAgICAgICAgICAgcG9z
dExheW91dERhdGEudHlwaW5nQXR0cmlidXRlcyB8PSBBdHRyaWJ1dGVJdGFsaWNzOwotCi0gICAg
ICAgICAgICAgICAgaWYgKGVkaXRpbmdTdHlsZS0+aGFzU3R5bGUoQ1NTUHJvcGVydHlXZWJraXRU
ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCwgInVuZGVybGluZSIpKQotICAgICAgICAgICAgICAgICAg
ICBwb3N0TGF5b3V0RGF0YS50eXBpbmdBdHRyaWJ1dGVzIHw9IEF0dHJpYnV0ZVVuZGVybGluZTsK
LQotICAgICAgICAgICAgICAgIGlmIChhdXRvKiBzdHlsZVByb3BlcnRpZXMgPSBlZGl0aW5nU3R5
bGUtPnN0eWxlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0xlZnRUb1JpZ2h0ID0g
c3R5bGVQcm9wZXJ0aWVzLT5wcm9wZXJ0eUFzVmFsdWVJRChDU1NQcm9wZXJ0eURpcmVjdGlvbikg
PT0gQ1NTVmFsdWVMdHI7Ci0gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoc3R5bGVQcm9wZXJ0
aWVzLT5wcm9wZXJ0eUFzVmFsdWVJRChDU1NQcm9wZXJ0eVRleHRBbGlnbikpIHsKLSAgICAgICAg
ICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVJpZ2h0OgotICAgICAgICAgICAgICAgICAgICBjYXNl
IENTU1ZhbHVlV2Via2l0UmlnaHQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBwb3N0TGF5b3V0
RGF0YS50ZXh0QWxpZ25tZW50ID0gUmlnaHRBbGlnbm1lbnQ7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUxlZnQ6Ci0gICAg
ICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVXZWJraXRMZWZ0OgotICAgICAgICAgICAgICAg
ICAgICAgICAgcG9zdExheW91dERhdGEudGV4dEFsaWdubWVudCA9IExlZnRBbGlnbm1lbnQ7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBD
U1NWYWx1ZUNlbnRlcjoKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVdlYmtpdENl
bnRlcjoKLSAgICAgICAgICAgICAgICAgICAgICAgIHBvc3RMYXlvdXREYXRhLnRleHRBbGlnbm1l
bnQgPSBDZW50ZXJBbGlnbm1lbnQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUp1c3RpZnk6Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBwb3N0TGF5b3V0RGF0YS50ZXh0QWxpZ25tZW50ID0gSnVzdGlmaWVkQWxpZ25tZW50
OwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNh
c2UgQ1NTVmFsdWVTdGFydDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHBvc3RMYXlvdXREYXRh
LnRleHRBbGlnbm1lbnQgPSBpc0xlZnRUb1JpZ2h0ID8gTGVmdEFsaWdubWVudCA6IFJpZ2h0QWxp
Z25tZW50OwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
ICAgIGNhc2UgQ1NTVmFsdWVFbmQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBwb3N0TGF5b3V0
RGF0YS50ZXh0QWxpZ25tZW50ID0gaXNMZWZ0VG9SaWdodCA/IFJpZ2h0QWxpZ25tZW50IDogTGVm
dEFsaWdubWVudDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG8gdGV4dENvbG9yID0g
c3R5bGVQcm9wZXJ0aWVzLT5wcm9wZXJ0eUFzQ29sb3IoQ1NTUHJvcGVydHlDb2xvcikpCi0gICAg
ICAgICAgICAgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS50ZXh0Q29sb3IgPSAqdGV4dENvbG9y
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKGF1
dG8qIGVuY2xvc2luZ0xpc3RFbGVtZW50ID0gZW5jbG9zaW5nTGlzdChzZWxlY3Rpb24uc3RhcnQo
KS5jb250YWluZXJOb2RlKCkpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGlzPEhUTUxVTGlzdEVs
ZW1lbnQ+KCplbmNsb3NpbmdMaXN0RWxlbWVudCkpCi0gICAgICAgICAgICAgICAgICAgIHBvc3RM
YXlvdXREYXRhLmVuY2xvc2luZ0xpc3RUeXBlID0gVW5vcmRlcmVkTGlzdDsKLSAgICAgICAgICAg
ICAgICBlbHNlIGlmIChpczxIVE1MT0xpc3RFbGVtZW50PigqZW5jbG9zaW5nTGlzdEVsZW1lbnQp
KQotICAgICAgICAgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS5lbmNsb3NpbmdMaXN0VHlwZSA9
IE9yZGVyZWRMaXN0OwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHBvc3RM
YXlvdXREYXRhLmJhc2VXcml0aW5nRGlyZWN0aW9uID0gZWRpdG9yLmJhc2VXcml0aW5nRGlyZWN0
aW9uRm9yU2VsZWN0aW9uU3RhcnQoKTsKLSAgICAgICAgfQotI2VuZGlmCiAgICAgfQogCi0gICAg
cGxhdGZvcm1FZGl0b3JTdGF0ZShmcmFtZSwgcmVzdWx0LCBzaG91bGRJbmNsdWRlUG9zdExheW91
dERhdGEpOworICAgIHBsYXRmb3JtRWRpdG9yU3RhdGUoZnJhbWUsIHJlc3VsdCk7CiAKICAgICBt
X2xhc3RFZGl0b3JTdGF0ZVdhc0NvbnRlbnRFZGl0YWJsZSA9IHJlc3VsdC5pc0NvbnRlbnRFZGl0
YWJsZSA/IEVkaXRvclN0YXRlSXNDb250ZW50RWRpdGFibGU6OlllcyA6IEVkaXRvclN0YXRlSXND
b250ZW50RWRpdGFibGU6Ok5vOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmgKaW5kZXggOTU0MDllOWIwNGNlZTZlMTdlZDE5NWMxYjNmMDU0NjU1OGEwZDZiNi4u
ZGIyNGRkMjljZjhmOWJmOWZkNGVhYjQ1YzRhZjlhNTg2NWNmMjcxOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtNDUzLDggKzQ1Myw4IEBAIHB1Ymxp
YzoKICAgICBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgcmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJM
KFdlYkZyYW1lKiwgY29uc3QgVVJMJik7CiAjZW5kaWYKICAgICAKLSAgICBlbnVtIGNsYXNzIElu
Y2x1ZGVQb3N0TGF5b3V0RGF0YUhpbnQgeyBObywgWWVzIH07Ci0gICAgRWRpdG9yU3RhdGUgZWRp
dG9yU3RhdGUoSW5jbHVkZVBvc3RMYXlvdXREYXRhSGludCA9IEluY2x1ZGVQb3N0TGF5b3V0RGF0
YUhpbnQ6OlllcykgY29uc3Q7CisgICAgZW51bSBjbGFzcyBTaG91bGRQZXJmb3JtTGF5b3V0IHsg
RGVmYXVsdCwgTm8sIFllcyB9OworICAgIEVkaXRvclN0YXRlIGVkaXRvclN0YXRlKFNob3VsZFBl
cmZvcm1MYXlvdXQgPSBTaG91bGRQZXJmb3JtTGF5b3V0OjpEZWZhdWx0KSBjb25zdDsKICAgICB2
b2lkIHVwZGF0ZUVkaXRvclN0YXRlQWZ0ZXJMYXlvdXRJZkVkaXRhYmlsaXR5Q2hhbmdlZCgpOwog
CiAgICAgLy8gb3B0aW9ucyBhcmUgUmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb25CZWhh
dmlvciB2YWx1ZXMuCkBAIC0xMjI0LDcgKzEyMjQsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgcGxh
dGZvcm1Jbml0aWFsaXplKCk7CiAgICAgdm9pZCBwbGF0Zm9ybVJlaW5pdGlhbGl6ZSgpOwogICAg
IHZvaWQgcGxhdGZvcm1EZXRhY2goKTsKLSAgICB2b2lkIHBsYXRmb3JtRWRpdG9yU3RhdGUoV2Vi
Q29yZTo6RnJhbWUmLCBFZGl0b3JTdGF0ZSYgcmVzdWx0LCBJbmNsdWRlUG9zdExheW91dERhdGFI
aW50KSBjb25zdDsKKyAgICB2b2lkIHBsYXRmb3JtRWRpdG9yU3RhdGUoV2ViQ29yZTo6RnJhbWUm
LCBFZGl0b3JTdGF0ZSYpIGNvbnN0OworICAgIGJvb2wgcGxhdGZvcm1OZWVkc0xheW91dEZvckVk
aXRvclN0YXRlKGNvbnN0IFdlYkNvcmU6OkZyYW1lJikgY29uc3Q7CiAgICAgdm9pZCBwbGF0Zm9y
bVdpbGxQZXJmb3JtRWRpdGluZ0NvbW1hbmQoKTsKICAgICB2b2lkIHNlbmRFZGl0b3JTdGF0ZVVw
ZGF0ZSgpOwogCkBAIC0xMjMzLDYgKzEyMzQsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgc2VuZFRv
dWNoQmFyTWVudURhdGFSZW1vdmVkVXBkYXRlKFdlYkNvcmU6OkhUTUxNZW51RWxlbWVudCYpOwog
ICAgIHZvaWQgc2VuZFRvdWNoQmFyTWVudUl0ZW1EYXRhQWRkZWRVcGRhdGUoV2ViQ29yZTo6SFRN
TE1lbnVJdGVtRWxlbWVudCYpOwogICAgIHZvaWQgc2VuZFRvdWNoQmFyTWVudUl0ZW1EYXRhUmVt
b3ZlZFVwZGF0ZShXZWJDb3JlOjpIVE1MTWVudUl0ZW1FbGVtZW50Jik7CisKKyAgICB2b2lkIHBs
YXRmb3JtRWRpdG9yU3RhdGVDb21tb24oY29uc3QgV2ViQ29yZTo6RnJhbWUmLCBFZGl0b3JTdGF0
ZSYpIGNvbnN0OwogI2VuZGlmCiAKICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jV2ViUGFnZU1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6
RW5jb2Rlcj4mKTsKQEAgLTE5MDgsNyArMTkxMSw2IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1f
bWFpbkZyYW1lUHJvZ3Jlc3NDb21wbGV0ZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9zaG91bGRE
aXNwYXRjaEZha2VNb3VzZU1vdmVFdmVudHMgeyB0cnVlIH07Ci0gICAgYm9vbCBtX2lzRWRpdG9y
U3RhdGVNaXNzaW5nUG9zdExheW91dERhdGEgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc1NlbGVj
dGluZ1RleHRXaGlsZUluc2VydGluZ0FzeW5jaHJvbm91c2x5IHsgZmFsc2UgfTsKIAogICAgIGVu
dW0gY2xhc3MgRWRpdG9yU3RhdGVJc0NvbnRlbnRFZGl0YWJsZSB7IE5vLCBZZXMsIFVuc2V0IH07
CkBAIC0xOTY4LDUgKzE5NzAsOSBAQCBwcml2YXRlOgogaW5saW5lIHZvaWQgV2ViUGFnZTo6cGxh
dGZvcm1XaWxsUGVyZm9ybUVkaXRpbmdDb21tYW5kKCkgeyB9CiAjZW5kaWYKIAorI2lmICFQTEFU
Rk9STShDT0NPQSkKK2lubGluZSBib29sIFdlYlBhZ2U6OnBsYXRmb3JtTmVlZHNMYXlvdXRGb3JF
ZGl0b3JTdGF0ZShjb25zdCBXZWJDb3JlOjpGcmFtZSYpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQYWdlR3RrLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQYWdlR3RrLmNwcAppbmRleCAxYzBhM2QxODBm
ZTExNDQxYTg5NzJhNGVkODI5MTkyNTYzMWEwMDUzLi42YjU0YzIwMDFiMTBkNzFiOWQxNTBlZDM4
MWE3ZTQ1YTU5ZGYwYzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9ndGsvV2ViUGFnZUd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvZ3RrL1dlYlBhZ2VHdGsuY3BwCkBAIC03NiwxMiArNzYsMTAgQEAgdm9pZCBXZWJQYWdl
OjpwbGF0Zm9ybURldGFjaCgpCiB7CiB9CiAKLXZvaWQgV2ViUGFnZTo6cGxhdGZvcm1FZGl0b3JT
dGF0ZShGcmFtZSYgZnJhbWUsIEVkaXRvclN0YXRlJiByZXN1bHQsIEluY2x1ZGVQb3N0TGF5b3V0
RGF0YUhpbnQgc2hvdWxkSW5jbHVkZVBvc3RMYXlvdXREYXRhKSBjb25zdAordm9pZCBXZWJQYWdl
OjpwbGF0Zm9ybUVkaXRvclN0YXRlKEZyYW1lJiBmcmFtZSwgRWRpdG9yU3RhdGUmIHJlc3VsdCkg
Y29uc3QKIHsKLSAgICBpZiAoc2hvdWxkSW5jbHVkZVBvc3RMYXlvdXREYXRhID09IEluY2x1ZGVQ
b3N0TGF5b3V0RGF0YUhpbnQ6Ok5vIHx8ICFmcmFtZS52aWV3KCkgfHwgZnJhbWUudmlldygpLT5u
ZWVkc0xheW91dCgpKSB7Ci0gICAgICAgIHJlc3VsdC5pc01pc3NpbmdQb3N0TGF5b3V0RGF0YSA9
IHRydWU7CisgICAgaWYgKHJlc3VsdC5pc01pc3NpbmdQb3N0TGF5b3V0RGF0YSkKICAgICAgICAg
cmV0dXJuOwotICAgIH0KIAogICAgIGF1dG8mIHBvc3RMYXlvdXREYXRhID0gcmVzdWx0LnBvc3RM
YXlvdXREYXRhKCk7CiAgICAgcG9zdExheW91dERhdGEuY2FyZXRSZWN0QXRTdGFydCA9IGZyYW1l
LnNlbGVjdGlvbigpLmFic29sdXRlQ2FyZXRCb3VuZHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggZWZlNWFmYzQzNjk5
N2Q4MmQ3ZjA5OThkZjhhNmYyODQzODI0MTU3Yi4uM2I2OTA3NWZhMDUwNGZlZWQ4N2JkMDc5MjUz
OTVjM2FjMDUzZGRhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTE5Niw4ICsxOTYsMjEgQEAgYm9vbCBXZWJQYWdlOjpp
c1RyYW5zcGFyZW50T3JGdWxseUNsaXBwZWQoY29uc3QgRWxlbWVudCYgZWxlbWVudCkgY29uc3QK
ICAgICByZXR1cm4gZW5jbG9zaW5nTGF5ZXIgJiYgZW5jbG9zaW5nTGF5ZXItPmlzVHJhbnNwYXJl
bnRPckZ1bGx5Q2xpcHBlZFJlc3BlY3RpbmdQYXJlbnRGcmFtZXMoKTsKIH0KIAotdm9pZCBXZWJQ
YWdlOjpwbGF0Zm9ybUVkaXRvclN0YXRlKEZyYW1lJiBmcmFtZSwgRWRpdG9yU3RhdGUmIHJlc3Vs
dCwgSW5jbHVkZVBvc3RMYXlvdXREYXRhSGludCBzaG91bGRJbmNsdWRlUG9zdExheW91dERhdGEp
IGNvbnN0Citib29sIFdlYlBhZ2U6OnBsYXRmb3JtTmVlZHNMYXlvdXRGb3JFZGl0b3JTdGF0ZShj
b25zdCBGcmFtZSYgZnJhbWUpIGNvbnN0CiB7CisgICAgLy8gSWYgd2UgaGF2ZSBhIGNvbXBvc2l0
aW9uIG9yIGFyZSB1c2luZyBhIGhhcmR3YXJlIGtleWJvYXJkIHRoZW4gd2UgbmVlZCB0byBzZW5k
IHRoZSBmdWxsCisgICAgLy8gZWRpdG9yIHNvIHRoYXQgdGhlIFVJUHJvY2VzcyBjYW4gdXBkYXRl
IFVJLCBpbmNsdWRpbmcgdGhlIHBvc2l0aW9uIG9mIHRoZSBjYXJldC4KKyAgICBib29sIG5lZWRz
TGF5b3V0ID0gZnJhbWUuZWRpdG9yKCkuaGFzQ29tcG9zaXRpb24oKTsKKyNpZiAhUExBVEZPUk0o
TUFDQ0FUQUxZU1QpCisgICAgbmVlZHNMYXlvdXQgfD0gbV9rZXlib2FyZElzQXR0YWNoZWQ7Cisj
ZW5kaWYKKyAgICByZXR1cm4gbmVlZHNMYXlvdXQ7Cit9CisKK3ZvaWQgV2ViUGFnZTo6cGxhdGZv
cm1FZGl0b3JTdGF0ZShGcmFtZSYgZnJhbWUsIEVkaXRvclN0YXRlJiByZXN1bHQpIGNvbnN0Cit7
CisgICAgcGxhdGZvcm1FZGl0b3JTdGF0ZUNvbW1vbihmcmFtZSwgcmVzdWx0KTsKKwogICAgIEZy
YW1lVmlldyogdmlldyA9IGZyYW1lLnZpZXcoKTsKICAgICBpZiAoZnJhbWUuZWRpdG9yKCkuaGFz
Q29tcG9zaXRpb24oKSkgewogICAgICAgICBSZWZQdHI8UmFuZ2U+IGNvbXBvc2l0aW9uUmFuZ2Ug
PSBmcmFtZS5lZGl0b3IoKS5jb21wb3NpdGlvblJhbmdlKCk7CkBAIC0yMTQsMjMgKzIyNywxMSBA
QCB2b2lkIFdlYlBhZ2U6OnBsYXRmb3JtRWRpdG9yU3RhdGUoRnJhbWUmIGZyYW1lLCBFZGl0b3JT
dGF0ZSYgcmVzdWx0LCBJbmNsdWRlUG9zdAogICAgICAgICB9CiAgICAgfQogCi0gICAgLy8gV2Ug
b25seSBzZXQgdGhlIHJlbWFpbmluZyBFZGl0b3JTdGF0ZSBlbnRyaWVzIGlmIGxheW91dCBpcyBk
b25lIGFzIGEgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uCi0gICAgLy8gdG8gYXZvaWQgdGhlIG5l
ZWQgdG8gZm9yY2UgYSBzeW5jaHJvbm91cyBsYXlvdXQgaGVyZSB0byBjb21wdXRlIHRoZXNlIGVu
dHJpZXMuIElmIHdlCi0gICAgLy8gaGF2ZSBhIGNvbXBvc2l0aW9uIG9yIGFyZSB1c2luZyBhIGhh
cmR3YXJlIGtleWJvYXJkIHRoZW4gd2Ugc2VuZCB0aGUgZnVsbCBlZGl0b3Igc3RhdGUKLSAgICAv
LyBpbW1lZGlhdGVseSBzbyB0aGF0IHRoZSBVSVByb2Nlc3MgY2FuIHVwZGF0ZSBVSSwgaW5jbHVk
aW5nIHRoZSBwb3NpdGlvbiBvZiB0aGUgY2FyZXQuCi0gICAgYm9vbCBuZWVkc0xheW91dCA9ICFm
cmFtZS52aWV3KCkgfHwgZnJhbWUudmlldygpLT5uZWVkc0xheW91dCgpOwotICAgIGJvb2wgcmVx
dWlyZXNQb3N0TGF5b3V0RGF0YSA9IGZyYW1lLmVkaXRvcigpLmhhc0NvbXBvc2l0aW9uKCk7Ci0j
aWYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQotICAgIHJlcXVpcmVzUG9zdExheW91dERhdGEgfD0g
bV9rZXlib2FyZElzQXR0YWNoZWQ7Ci0jZW5kaWYKLSAgICBpZiAoKHNob3VsZEluY2x1ZGVQb3N0
TGF5b3V0RGF0YSA9PSBJbmNsdWRlUG9zdExheW91dERhdGFIaW50OjpObyB8fCBuZWVkc0xheW91
dCkgJiYgIXJlcXVpcmVzUG9zdExheW91dERhdGEpIHsKLSAgICAgICAgcmVzdWx0LmlzTWlzc2lu
Z1Bvc3RMYXlvdXREYXRhID0gdHJ1ZTsKKyAgICBpZiAocmVzdWx0LmlzTWlzc2luZ1Bvc3RMYXlv
dXREYXRhKQogICAgICAgICByZXR1cm47Ci0gICAgfQogCiAgICAgYXV0byYgcG9zdExheW91dERh
dGEgPSByZXN1bHQucG9zdExheW91dERhdGEoKTsKLSAgICAKLSAgICBjb25zdCBWaXNpYmxlU2Vs
ZWN0aW9uJiBzZWxlY3Rpb24gPSBmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKTsKKyAgICBj
b25zdCBhdXRvJiBzZWxlY3Rpb24gPSBmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKTsKICAg
ICBwb3N0TGF5b3V0RGF0YS5pc1N0YWJsZVN0YXRlVXBkYXRlID0gbV9pc0luU3RhYmxlU3RhdGU7
CiAgICAgYm9vbCBzdGFydE5vZGVJc0luc2lkZUZpeGVkUG9zaXRpb24gPSBmYWxzZTsKICAgICBi
b29sIGVuZE5vZGVJc0luc2lkZUZpeGVkUG9zaXRpb24gPSBmYWxzZTsKQEAgLTQ0NCw3ICs0NDUs
NyBAQCBib29sIFdlYlBhZ2U6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZl
bnQmIGV2ZW50KQogCiAgICAgLy8gRklYTUU6IEludGVycHJldCB0aGUgZXZlbnQgaW1tZWRpYXRl
bHkgdXBvbiByZWNlaXZpbmcgaXQgaW4gVUkgcHJvY2Vzcywgd2l0aG91dCBzZW5kaW5nIHRvIFdl
YlByb2Nlc3MgZmlyc3QuCiAgICAgYm9vbCBldmVudFdhc0hhbmRsZWQgPSBmYWxzZTsKLSAgICBi
b29sIHNlbmRSZXN1bHQgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpJbnRlcnByZXRLZXlF
dmVudChlZGl0b3JTdGF0ZSgpLCBwbGF0Zm9ybUV2ZW50LT50eXBlKCkgPT0gUGxhdGZvcm1LZXli
b2FyZEV2ZW50OjpDaGFyKSwKKyAgICBib29sIHNlbmRSZXN1bHQgPSBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpJbnRlcnByZXRLZXlFdmVudChlZGl0b3JTdGF0ZShTaG91bGRQZXJmb3JtTGF5
b3V0OjpZZXMpLCBwbGF0Zm9ybUV2ZW50LT50eXBlKCkgPT0gUGxhdGZvcm1LZXlib2FyZEV2ZW50
OjpDaGFyKSwKICAgICAgICAgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6SW50ZXJwcmV0S2V5RXZl
bnQ6OlJlcGx5KGV2ZW50V2FzSGFuZGxlZCksIG1fcGFnZUlEKTsKICAgICByZXR1cm4gc2VuZFJl
c3VsdCAmJiBldmVudFdhc0hhbmRsZWQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmluZGV4IDQzMWRmYTE3YWNhMDViNjBlZmU5
YWUwNDAzYTQwODgwZTI4MThkODAuLjMwNGE1NmE1ZDhkZDUyYzA2ZDJlNjlkZjMyMGVmMjNmN2Zi
NjI5ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9X
ZWJQYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9X
ZWJQYWdlTWFjLm1tCkBAIC0xMzMsMTQgKzEzMywxNCBAQCB2b2lkIFdlYlBhZ2U6OnBsYXRmb3Jt
RGV0YWNoKCkKICAgICBbbV9tb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQgc2V0V2ViUGFnZTpudWxs
cHRyXTsKIH0KIAotdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybUVkaXRvclN0YXRlKEZyYW1lJiBmcmFt
ZSwgRWRpdG9yU3RhdGUmIHJlc3VsdCwgSW5jbHVkZVBvc3RMYXlvdXREYXRhSGludCBzaG91bGRJ
bmNsdWRlUG9zdExheW91dERhdGEpIGNvbnN0Cit2b2lkIFdlYlBhZ2U6OnBsYXRmb3JtRWRpdG9y
U3RhdGUoRnJhbWUmIGZyYW1lLCBFZGl0b3JTdGF0ZSYgcmVzdWx0KSBjb25zdAogewotICAgIGlm
IChzaG91bGRJbmNsdWRlUG9zdExheW91dERhdGEgPT0gSW5jbHVkZVBvc3RMYXlvdXREYXRhSGlu
dDo6Tm8gfHwgIWZyYW1lLnZpZXcoKSB8fCBmcmFtZS52aWV3KCktPm5lZWRzTGF5b3V0KCkgfHwg
IXJlc3VsdC5pc0NvbnRlbnRFZGl0YWJsZSkgewotICAgICAgICByZXN1bHQuaXNNaXNzaW5nUG9z
dExheW91dERhdGEgPSB0cnVlOworICAgIHBsYXRmb3JtRWRpdG9yU3RhdGVDb21tb24oZnJhbWUs
IHJlc3VsdCk7CisKKyAgICBpZiAocmVzdWx0LmlzTWlzc2luZ1Bvc3RMYXlvdXREYXRhKQogICAg
ICAgICByZXR1cm47Ci0gICAgfQogCi0gICAgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0
aW9uID0gZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7CisgICAgY29uc3QgYXV0byYgc2Vs
ZWN0aW9uID0gZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7CiAgICAgUmVmUHRyPFJhbmdl
PiBzZWxlY3RlZFJhbmdlID0gc2VsZWN0aW9uLnRvTm9ybWFsaXplZFJhbmdlKCk7CiAgICAgaWYg
KCFzZWxlY3RlZFJhbmdlKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93aW4vV2ViUGFnZVdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS93aW4vV2ViUGFnZVdpbi5jcHAKaW5kZXggYzk0YmQwNWM5MjQ1
NTdiOTQ4M2U2MTNkZDk5YTg4ZGViMDk3MTQ0Yi4uYWE0M2NlOWVhZDYyNjZlMGVhZWJiMTViMWFk
OTM5ZGRmMzJmYTgyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2Uvd2luL1dlYlBhZ2VXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL3dpbi9XZWJQYWdlV2luLmNwcApAQCAtNjMsNyArNjMsNyBAQCB2b2lkIFdlYlBhZ2U6OnBs
YXRmb3JtRGV0YWNoKCkKIHsKIH0KIAotdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybUVkaXRvclN0YXRl
KEZyYW1lJiBmcmFtZSwgRWRpdG9yU3RhdGUmIHJlc3VsdCwgSW5jbHVkZVBvc3RMYXlvdXREYXRh
SGludCBzaG91bGRJbmNsdWRlUG9zdExheW91dERhdGEpIGNvbnN0Cit2b2lkIFdlYlBhZ2U6OnBs
YXRmb3JtRWRpdG9yU3RhdGUoRnJhbWUmLCBFZGl0b3JTdGF0ZSYpIGNvbnN0CiB7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3dwZS9XZWJQYWdlV1BF
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3dwZS9XZWJQYWdlV1BFLmNw
cAppbmRleCBjMmI1MjY1OWEzNmVhODNlN2JkZTVjY2YxNmZmMjczZTQ4NGM4MTUyLi43ZDEyN2Yy
MTgwNGNjYjE0YzBhNDY5NmNiNjczZTYyY2Y4OTNmODgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93cGUvV2ViUGFnZVdQRS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd3BlL1dlYlBhZ2VXUEUuY3BwCkBAIC01OCw3ICs1OCw3
IEBAIHZvaWQgV2ViUGFnZTo6cGxhdGZvcm1EZXRhY2goKQogewogfQogCi12b2lkIFdlYlBhZ2U6
OnBsYXRmb3JtRWRpdG9yU3RhdGUoRnJhbWUmLCBFZGl0b3JTdGF0ZSYsIEluY2x1ZGVQb3N0TGF5
b3V0RGF0YUhpbnQpIGNvbnN0Cit2b2lkIFdlYlBhZ2U6OnBsYXRmb3JtRWRpdG9yU3RhdGUoRnJh
bWUmLCBFZGl0b3JTdGF0ZSYpIGNvbnN0CiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpp
bmRleCBmYTBhNjY0MDQyZTcxMTIwYTM0ZWQ5YjgxMGEwY2NlOGRiOWNhYzdlLi41NzAxMzY0MDY4
OTg4ZjY0M2EzZmQ2ZTUyNGM2MDIzY2IwY2YyYzY0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIw
MTktMDctMjIgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtp
T1NdIEFTU0VSVElPTiBGQUlMVVJFOiAhaXNNaXNzaW5nUG9zdExheW91dERhdGEgaW4gV2ViS2l0
OjpFZGl0b3JTdGF0ZTo6cG9zdExheW91dERhdGEoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk5OTYwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81
MzMyMzk2Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGQgYSB0ZXN0IHRvIGVuc3VyZSB3ZSBkbyBub3QgYXNzZXJ0IHdoZW4gdXNpbmcgdGhlIHNv
ZnR3YXJlIGtleWJvYXJkIHRvIHR5cGUgYSBjaGFyYWN0ZXIKKyAgICAgICAgaW50byBhIDx0ZXh0
YXJlYT4gYW5kIHRoZW4gZGVsZXRlIGl0LgorCisgICAgICAgICogVGVzdEV4cGVjdGF0aW9uczog
U2tpcCB0ZXN0cyBpbiBlZGl0aW5nL2RlbGV0aW5nL2lvcyBvbiBhbGwgcGxhdGZvcm1zLgorICAg
ICAgICAqIGVkaXRpbmcvZGVsZXRpbmcvaW9zL2JhY2tzcGFjZS1sYXN0LWNoYXJhY3Rlci5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9uczogVW5za2lw
IHRlc3RzIGluIGVkaXRpbmcvZGVsZXRpbmcvaW9zIG9uIGlPUy4KKwogMjAxOS0wNy0yMiAgVHJ1
aXR0IFNhdmVsbCAgPHRzYXZlbGxAYXBwbGUuY29tPgogCiAgICAgICAgIFsgTW9qYXZlIERlYnVn
IFdLMSBdIExheW91dCBUZXN0IGltcG9ydGVkL2JsaW5rL3N0b3JhZ2UvaW5kZXhlZGRiL2Jsb2It
YmFzaWNzLW1ldGFkYXRhLmh0bWwgaXMgVGltaW5nIG91dCAoMjAwMDAyKQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlv
bnMKaW5kZXggOWRjMzJjYWEzMzZiZDljMjJhMDkzYTNhZTdlYTFhZGFmMDcwZDQ0Zi4uOTM1OWYy
ZjExNDJjY2Q2ZDRlZjE3NjVlNDVhOTdlOTAzOWUzMGY4OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCkBA
IC0xOSw2ICsxOSw3IEBAIGVkaXRpbmcvaW5wdXQvaW9zIFsgU2tpcCBdCiBlZGl0aW5nL2ZpbmQg
WyBTa2lwIF0KIGVkaXRpbmcvcGFzdGVib2FyZC9ndGsgWyBTa2lwIF0KIGVkaXRpbmcvc2VsZWN0
aW9uL2lvcyBbIFNraXAgXQorZWRpdGluZy9kZWxldGluZy9pb3MgWyBTa2lwIF0KIGVkaXRpbmcv
dW5kby1tYW5hZ2VyIFsgU2tpcCBdCiB0aWxlZC1kcmF3aW5nIFsgU2tpcCBdCiBmYXN0L2Nzcy93
YXRjaG9zIFsgU2tpcCBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL2RlbGV0aW5n
L2lvcy9iYWNrc3BhY2UtbGFzdC1jaGFyYWN0ZXIuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcv
ZGVsZXRpbmcvaW9zL2JhY2tzcGFjZS1sYXN0LWNoYXJhY3Rlci5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg0
MjgzNzhmYTcyZjcyYWY1YjEyMWNmYWM1N2U2NWE2ODFhYTY5OTQKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9lZGl0aW5nL2RlbGV0aW5nL2lvcy9iYWNrc3BhY2UtbGFzdC1jaGFyYWN0
ZXIuaHRtbApAQCAtMCwwICsxLDQ2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJ0ZXN0LWNvbnRhaW5lciI+CisgICAgPHRleHRhcmVh
IGlkPSJpbnB1dCI+PC90ZXh0YXJlYT4KKyAgICA8dGV4dGFyZWEgaWQ9Im91dHB1dCIgcmVhZG9u
bHk+PC90ZXh0YXJlYT4KKzwvZGl2PgorPHNjcmlwdD4KK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0g
dHJ1ZTsKKworbGV0IGlucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImlucHV0Iik7CisK
K2Z1bmN0aW9uIGFwcGVuZEFOZXdsaW5lKCkKK3sKKyAgICBsZXQgb3V0cHV0RWxlbWVudCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJvdXRwdXQiKTsKKyAgICBvdXRwdXRFbGVtZW50LnZhbHVl
ID0gb3V0cHV0RWxlbWVudC52YWx1ZSArICJcbiI7Cit9CisKK2FzeW5jIGZ1bmN0aW9uIHJ1blRl
c3QoKQoreworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgYXdhaXQgVUlIZWxw
ZXIuc2V0SGFyZHdhcmVLZXlib2FyZEF0dGFjaGVkKGZhbHNlKTsKKworICAgIGF3YWl0IFVJSGVs
cGVyLmNhbGxGdW5jdGlvbkFuZFdhaXRGb3JFdmVudCgoKSA9PiB3aW5kb3cudGVzdFJ1bm5lciAm
JiBVSUhlbHBlci5hY3RpdmF0ZUVsZW1lbnQoaW5wdXQpLCBpbnB1dCwgImZvY3VzIik7CisKKyAg
ICBhd2FpdCBVSUhlbHBlci5jYWxsRnVuY3Rpb25BbmRXYWl0Rm9yRXZlbnQoKCkgPT4gd2luZG93
LnRlc3RSdW5uZXIgJiYgVUlIZWxwZXIua2V5RG93bigidyIpLCBpbnB1dCwgImtleXVwIik7Cisg
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW5wdXQi
KS52YWx1ZScsICJ3Iik7CisKKyAgICBhd2FpdCBVSUhlbHBlci5jYWxsRnVuY3Rpb25BbmRXYWl0
Rm9yRXZlbnQoKCkgPT4gd2luZG93LnRlc3RSdW5uZXIgJiYgVUlIZWxwZXIua2V5RG93bigiXGIi
KSwgaW5wdXQsICJrZXl1cCIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImlucHV0IikudmFsdWUnLCAiIik7CisKKyAgICBkb2N1bWVudC5ib2R5
LnJlbW92ZUNoaWxkKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0LWNvbnRhaW5lciIpKTsK
KyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKworZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdXNpbmcg
dGhlIHNvZnR3YXJlIGtleWJvYXJkIGFuZCBwcmVzc2luZyAndycgdGhlbiA8a2JkPmJhY2tzcGFj
ZTwva2JkPiBkZWxldGVzIHRoZSAndycgYW5kIGRvZXMgbm90IGNhdXNlIGFuIGFzc2VydGlvbiBm
YWlsdXJlIGluIGEgZGVidWcgYnVpbGQuIikKK2lucHV0LmFkZEV2ZW50TGlzdGVuZXIoImtleWRv
d24iLCBhcHBlbmRBTmV3bGluZSk7CisKK3J1blRlc3QoKTsKKzwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3Rh
dGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA2
ODhjYTkzZTkxN2Y2NDI4NGFkZGM3OGU1NzA5ZDQ0OWI4ZGU3YjI3Li44MTU5MzllMTk1YWVjOTcy
ZjRjYTQxYzliZTYzNTdmZjBiYzMyNWIzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9pb3MvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVz
dEV4cGVjdGF0aW9ucwpAQCAtOCw2ICs4LDcgQEAKIAogYWNjZXNzaWJpbGl0eS9pb3Mtc2ltdWxh
dG9yIFsgUGFzcyBdCiBkaXNwbGF5bGlzdHMgWyBQYXNzIF0KK2VkaXRpbmcvZGVsZXRpbmcvaW9z
IFsgUGFzcyBdCiBodHRwL3Rlc3RzL3F1aWNrbG9vayBbIFBhc3MgXQogbWVkaWEvaW9zIFsgUGFz
cyBdCiBxdWlja2xvb2sgWyBQYXNzIF0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>374638</attachid>
            <date>2019-07-22 14:49:05 -0700</date>
            <delta_ts>2019-07-26 10:54:39 -0700</delta_ts>
            <desc>Patch and layout test</desc>
            <filename>bug-199960-20190722144904.patch</filename>
            <type>text/plain</type>
            <size>28462</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ3Njg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGQ1NWVlOGY2NWNmODRkNDg1
NTllNGI5MWI5MDFhZmVhMmRmZDUxNDguLjcyM2E4MGViMjQ5MTU0NTk1NjAwM2RhOGQzMWM0NzJh
MmI5ZjUzZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjEgQEAKKzIwMTktMDctMjIgIERhbmllbCBC
YXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIEFTU0VSVElPTiBGQUlM
VVJFOiAhaXNNaXNzaW5nUG9zdExheW91dERhdGEgaW4gV2ViS2l0OjpFZGl0b3JTdGF0ZTo6cG9z
dExheW91dERhdGEoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTk5OTYwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81MzMyMzk2Nj4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZhY3RvciB0aGUgY29t
cHV0YXRpb24gb2YgZWRpdG9yIHN0YXRlIHNvIHRoYXQgd2UgY2FuIHJlcXVlc3QgdGhhdCBhIGxh
eW91dCBiZSBwZXJmb3JtZWQKKyAgICAgICAgZWFjaCB0aW1lIHdlIGNvbXB1dGUgdGhlIGVkaXRv
ciBzdGF0ZSBhcyBwYXJ0IG9mIGFza2luZyB0aGUgVUkgcHJvY2VzcyB0byBpbnRlcnByZXQgYSBr
ZXkKKyAgICAgICAgZXZlbnQuIFRoZSBmdWxsIChyZWFkOiBhZnRlciBsYXlvdXQpIGVkaXRvciBz
dGF0ZSBpcyBuZWVkZWQgZm9yIFVJS2l0IHRvIHBlcmZvcm0gYSBkZWxldGlvbgorICAgICAgICBi
ZWNhdXNlIFVJS2l0IHdhbnRzIHRvIGtub3cgaG93IG1hbnkgY2hhcmFjdGVycyBhcmUgYmVmb3Jl
IHRoZSBzZWxlY3Rpb24uIE90aGVyd2lzZSwgd2UgaGl0CisgICAgICAgIGFuIGFzc2VydCBkdWUg
dG8gdGhlIGZhY3QgdGhlIGxhc3QgZWRpdG9yIHN0YXRlIHNlbnQgKHdoZW4gdGhlIFdlYiBwcm9j
ZXNzIGFza2VkIHRoZSBVSSBwcm9jZXNzCisgICAgICAgIHRvIGludGVycHJldCB0aGUga2V5KSBp
cyBtaXNzaW5nIGxheW91dCBkYXRhLgorCisgICAgICAgIFRoZSByZWZhY3RvcmluZyBhbHNvIG1v
dmVzIHRoZSBDb2NvYS1jb21tb24gY29kZSBvdXQgb2YgdGhlIHBsYXRmb3JtLWluZGVwZW5kZW50
IFdlYlBhZ2UuY3BwCisgICAgICAgIGZpbGUgaW50byBXZWJQYWdlQ29jb2EubW0uCisKKyAgICAg
ICAgT25lIHNpZGUgZWZmZWN0IG9mIHRoZSByZWZhY3RvcmluZyBpcyB0aGF0IHdlIG5vIGxvbmdl
ciBhbGxvdyB0aGUgcGxhdGZvcm1FZGl0b3JTdGF0ZSgpIGZ1bmN0aW9uCisgICAgICAgIHRvIG92
ZXJyaWRlIHRoZSBpc01pc3NpbmdQb3N0TGF5b3V0RGF0YSBiaXQuIEN1cnJlbnRseSBpdCBjYW4g
ZXZlbiB0aG91Z2ggdGhlIGNhbGxpbmcgY29kZSwgdGhlCisgICAgICAgIHBsYXRmb3JtIGluZGVw
ZW5kZW50IGNvZGUgKFBJRSkgaW4gV2ViUGFnZSwgbWF5IGhhdmUgYXR0YWNoZWQgbGF5b3V0IGRh
dGEuIE5vdyB0aGUgUElFIGNvZGUgc2V0cworICAgICAgICB0aGlzIGJpdCBpZiBpdCBhdHRhY2hl
ZCBsYXlvdXQgZGF0YSBhbmQgdGhlIHBsYXRmb3JtRWRpdG9yU3RhdGUoKSBmdW5jdGlvbiBvbmx5
IGF0dGFjaGVzIG1vcmUKKyAgICAgICAgbGF5b3V0IGRhdGEgaWYgdGhhdCBiaXQgaXMgc2V0LiBw
bGF0Zm9ybUVkaXRvclN0YXRlKCkgbmV2ZXIgdW5zZXRzIHRoYXQgYml0IChpLmUuIHNldHMgaXNN
aXNzaW5nUG9zdExheW91dERhdGEKKyAgICAgICAgdG8gdHJ1ZSkuCisKKyAgICAgICAgVGhlIHBh
dGNoIGFsc28gcmVtb3ZlcyBtX2lzRWRpdG9yU3RhdGVNaXNzaW5nUG9zdExheW91dERhdGEgaW4g
V2ViUGFnZS5oLiBUaGlzIGluc3RhbmNlIHZhcmlhYmxlCisgICAgICAgIGhhcyBiZWVuIHVudXNl
ZCBzaW5jZSA8aHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzIyMTA2NC93ZWJraXQ+
LiBBbHNvIHdlIGhhdmVuJ3QgYmVlbiB1c2luZworICAgICAgICBJbmNsdWRlUG9zdExheW91dERh
dGFIaW50OjpObyBzaW5jZSB0aGUgbGFzdCByZWZlcmVuY2UgdG8gaXQgd2FzIHJlbW92ZWQgaW4g
PGh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yNDQ0OTQvd2Via2l0Pi4KKworICAg
ICAgICAqIFNoYXJlZC9FZGl0b3JTdGF0ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9Db2NvYS9XZWJQYWdlQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBsYXRm
b3JtRWRpdG9yU3RhdGVDb21tb24gY29uc3QpOiBBZGRlZC4gTW92ZWQgQ29jb2EtY29tbW9uIGNv
ZGUgZnJvbSBXZWJQYWdlLmNwcAorICAgICAgICB0byBoZXJlLgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZWRpdG9y
U3RhdGUgY29uc3QpOiBNb3ZlIENvY29hLWNvbW1vbiBjb2RlIHRvIFdlYlBhZ2VDb2NvYS5tbS4g
Q2hhbmdlIGVudW0gdG8KKyAgICAgICAgdHJhY2sgd2hldGhlciBhIGxheW91dCBzaG91bGQgYmUg
cGVyZm9ybWVkLiBLZWVwIHRoZSBjdXJyZW50IGJlaGF2aW9yIG9mIG9ubHkgaW5jbHVkaW5nIHBv
c3QgbGF5b3V0CisgICAgICAgIGRhdGEgaWYgdGhlIGZyYW1lIHZpZXcgZG9lcyBub3QgbmVlZCBh
IGxheW91dC4gVGhpcyBiZWhhdmlvciBpcyBlbmNvZGVkIGluIHRoZSBlbnVtZXJhdG9yIFNob3Vs
ZFBlcmZvcm1MYXlvdXQ6OkRlZmF1bHQuCisgICAgICAgIHdoaWNoIGlzIHRoZSBkZWZhdWx0IGFy
Z3VtZW50IHZhbHVlIGZvciB0aGUgYXJndW1lbnQgc2hvdWxkUGVyZm9ybUxheW91dC4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpwbGF0Zm9ybU5lZWRzTGF5b3V0Rm9yRWRpdG9yU3RhdGUgY29uc3QpOiBBZGRlZC4gTm9u
LUNvY29hIHBvcnQgaW1wbGVtZW50YXRpb24KKyAgICAgICAgdGhhdCByZXR1cm5zIGZhbHNlLgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUGFnZUd0ay5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtRWRpdG9yU3RhdGUgY29uc3QpOiBFYXJseSByZXR1
cm4gaWYgaXNNaXNzaW5nUG9zdExheW91dERhdGEgaXMgdHJ1ZS4KKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OnBsYXRmb3JtTmVlZHNMYXlvdXRGb3JFZGl0b3JTdGF0ZSBjb25zdCk6IEFkZGVkLiBLZWVwIHRo
ZSBjdXJyZW50IGJlaGF2aW9yIG9mCisgICAgICAgIHBlcmZvcm1pbmcgYSBsYXlvdXQgaWYgd2Ug
aGF2ZSBhIGNvbXBvc2l0aW9uIG9yIGEgaGFyZHdhcmUga2V5Ym9hcmQgaXMgYXR0YWNoZWQuCisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtRWRpdG9yU3RhdGUgY29uc3QpOiBDYWxs
IHBsYXRmb3JtRWRpdG9yU3RhdGVDb21tb24oKS4gQmFpbCBvdXQgZWFybHkKKyAgICAgICAgaWYg
aXNNaXNzaW5nUG9zdExheW91dERhdGEgaXMgdHJ1ZS4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQpOiBUaGUgaW1wb3J0YW50IHBhcnQgb2YgdGhp
cyBwYXRjaC4gUmVxdWVzdCBhIGxheW91dAorICAgICAgICB3aGVuIGNvbXB1dGluZyB0aGUgZWRp
dG9yIHN0YXRlIHRoYXQgd2Ugd2lsbCBzZW5kIHRvIHRoZSBVSSBwcm9jZXNzLgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6cGxhdGZvcm1FZGl0b3JTdGF0ZSBjb25zdCk6IENhbGwgcGxhdGZvcm1FZGl0b3JT
dGF0ZUNvbW1vbigpLiBCYWlsIG91dCBlYXJseQorICAgICAgICBpZiBpc01pc3NpbmdQb3N0TGF5
b3V0RGF0YSBpcyB0cnVlLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS93aW4vV2ViUGFn
ZVdpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtRWRpdG9yU3RhdGUg
Y29uc3QpOiBVcGRhdGUgYXMgbmVlZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS93
cGUvV2ViUGFnZVdQRS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtRWRp
dG9yU3RhdGUgY29uc3QpOiBEaXR0by4KKwogMjAxOS0wNy0yMiAgRGFuaWVsIEJhdGVzICA8ZGFi
YXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gUkVHUkVTU0lPTiAocjI0MTczNCk6IEF1
dG9jb3JyZWN0aW9uIGhpZ2hsaWdodCBzaG91bGQgaGlkZSB3aGVuIGZpZWxkIGJlY29tZXMgZGVm
b2N1c2VkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0b3JTdGF0ZS5oIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvRWRpdG9yU3RhdGUuaAppbmRleCBlNDljNTNkZGYyNGNkMWU5
MjZjMDIyZjlmYWQ1M2I1M2U3YzYwYTFlLi43Y2I0ZTcwMmNhNmYwMmE1M2QwNWE5M2NkNTdmODQy
MTYzNjBjN2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0b3JTdGF0ZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRvclN0YXRlLmgKQEAgLTc0LDcgKzc0LDcg
QEAgc3RydWN0IEVkaXRvclN0YXRlIHsKICAgICBib29sIGlzSW5QYXNzd29yZEZpZWxkIHsgZmFs
c2UgfTsKICAgICBib29sIGlzSW5QbHVnaW4geyBmYWxzZSB9OwogICAgIGJvb2wgaGFzQ29tcG9z
aXRpb24geyBmYWxzZSB9OwotICAgIGJvb2wgaXNNaXNzaW5nUG9zdExheW91dERhdGEgeyBmYWxz
ZSB9OworICAgIGJvb2wgaXNNaXNzaW5nUG9zdExheW91dERhdGEgeyB0cnVlIH07CiAKICNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgIFdlYkNvcmU6OkludFJlY3QgZmlyc3RNYXJrZWRSZWN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2Vi
UGFnZUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2Vi
UGFnZUNvY29hLm1tCmluZGV4IGQxMmI5OGE5NTg0MDFmMGMzZDlmMmNhYWNjNTViNDBiMmE2MWI3
NjQuLmUwMmM0YmE2MDA2M2NkZGJhYjQwNTVkYzU3Yjc0OTJhOWRkYzFmYjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2Eu
bW0KQEAgLTM0LDEwICszNCwxMyBAQAogI2ltcG9ydCAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIK
ICNpbXBvcnQgIldlYlBheW1lbnRDb29yZGluYXRvci5oIgogI2ltcG9ydCA8V2ViQ29yZS9EaWN0
aW9uYXJ5TG9va3VwLmg+CisjaW1wb3J0IDxXZWJDb3JlL0VkaXRpbmcuaD4KICNpbXBvcnQgPFdl
YkNvcmUvRWRpdG9yLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0V2ZW50SGFuZGxlci5oPgogI2ltcG9y
dCA8V2ViQ29yZS9Gb2N1c0NvbnRyb2xsZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvSFRNTENvbnZl
cnRlci5oPgorI2ltcG9ydCA8V2ViQ29yZS9IVE1MT0xpc3RFbGVtZW50Lmg+CisjaW1wb3J0IDxX
ZWJDb3JlL0hUTUxVTGlzdEVsZW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvSGl0VGVzdFJlc3Vs
dC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Ob2RlUmVuZGVyU3R5bGUuaD4KICNpbXBvcnQgPFdlYkNv
cmUvUGF5bWVudENvb3JkaW5hdG9yLmg+CkBAIC0yMjcsNyArMjMwLDcyIEBAIHZvaWQgV2ViUGFn
ZTo6dXBkYXRlTW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50QWZ0ZXJDb21taXR0aW5nTG9hZCgpCiAg
ICAgYXV0byogZG9jdW1lbnQgPSBtYWluRnJhbWUoKS0+ZG9jdW1lbnQoKTsKICAgICBbbV9tb2Nr
QWNjZXNzaWJpbGl0eUVsZW1lbnQgc2V0SGFzTWFpbkZyYW1lUGx1Z2luOmRvY3VtZW50ID8gZG9j
dW1lbnQtPmlzUGx1Z2luRG9jdW1lbnQoKSA6IGZhbHNlXTsKIH0KLSAgICAKKwordm9pZCBXZWJQ
YWdlOjpwbGF0Zm9ybUVkaXRvclN0YXRlQ29tbW9uKGNvbnN0IEZyYW1lJiBmcmFtZSwgRWRpdG9y
U3RhdGUmIHJlc3VsdCkgY29uc3QKK3sKKyAgICBpZiAocmVzdWx0LmlzTWlzc2luZ1Bvc3RMYXlv
dXREYXRhKQorICAgICAgICByZXR1cm47CisKKyAgICBjb25zdCBhdXRvJiBzZWxlY3Rpb24gPSBm
cmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKTsKKworICAgIGlmICghcmVzdWx0LmlzQ29udGVu
dEVkaXRhYmxlIHx8IHNlbGVjdGlvbi5pc05vbmUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
YXV0byYgcG9zdExheW91dERhdGEgPSByZXN1bHQucG9zdExheW91dERhdGEoKTsKKyAgICBpZiAo
YXV0byBlZGl0aW5nU3R5bGUgPSBFZGl0aW5nU3R5bGU6OnN0eWxlQXRTZWxlY3Rpb25TdGFydChz
ZWxlY3Rpb24pKSB7CisgICAgICAgIGlmIChlZGl0aW5nU3R5bGUtPmhhc1N0eWxlKENTU1Byb3Bl
cnR5Rm9udFdlaWdodCwgImJvbGQiX3MpKQorICAgICAgICAgICAgcG9zdExheW91dERhdGEudHlw
aW5nQXR0cmlidXRlcyB8PSBBdHRyaWJ1dGVCb2xkOworCisgICAgICAgIGlmIChlZGl0aW5nU3R5
bGUtPmhhc1N0eWxlKENTU1Byb3BlcnR5Rm9udFN0eWxlLCAiaXRhbGljIl9zKSB8fCBlZGl0aW5n
U3R5bGUtPmhhc1N0eWxlKENTU1Byb3BlcnR5Rm9udFN0eWxlLCAib2JsaXF1ZSJfcykpCisgICAg
ICAgICAgICBwb3N0TGF5b3V0RGF0YS50eXBpbmdBdHRyaWJ1dGVzIHw9IEF0dHJpYnV0ZUl0YWxp
Y3M7CisKKyAgICAgICAgaWYgKGVkaXRpbmdTdHlsZS0+aGFzU3R5bGUoQ1NTUHJvcGVydHlXZWJr
aXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCwgInVuZGVybGluZSJfcykpCisgICAgICAgICAgICBw
b3N0TGF5b3V0RGF0YS50eXBpbmdBdHRyaWJ1dGVzIHw9IEF0dHJpYnV0ZVVuZGVybGluZTsKKwor
ICAgICAgICBpZiAoYXV0byogc3R5bGVQcm9wZXJ0aWVzID0gZWRpdGluZ1N0eWxlLT5zdHlsZSgp
KSB7CisgICAgICAgICAgICBib29sIGlzTGVmdFRvUmlnaHQgPSBzdHlsZVByb3BlcnRpZXMtPnBy
b3BlcnR5QXNWYWx1ZUlEKENTU1Byb3BlcnR5RGlyZWN0aW9uKSA9PSBDU1NWYWx1ZUx0cjsKKyAg
ICAgICAgICAgIHN3aXRjaCAoc3R5bGVQcm9wZXJ0aWVzLT5wcm9wZXJ0eUFzVmFsdWVJRChDU1NQ
cm9wZXJ0eVRleHRBbGlnbikpIHsKKyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVSaWdodDoKKyAg
ICAgICAgICAgIGNhc2UgQ1NTVmFsdWVXZWJraXRSaWdodDoKKyAgICAgICAgICAgICAgICBwb3N0
TGF5b3V0RGF0YS50ZXh0QWxpZ25tZW50ID0gUmlnaHRBbGlnbm1lbnQ7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlTGVmdDoKKyAgICAgICAgICAgIGNh
c2UgQ1NTVmFsdWVXZWJraXRMZWZ0OgorICAgICAgICAgICAgICAgIHBvc3RMYXlvdXREYXRhLnRl
eHRBbGlnbm1lbnQgPSBMZWZ0QWxpZ25tZW50OworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgY2FzZSBDU1NWYWx1ZUNlbnRlcjoKKyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVX
ZWJraXRDZW50ZXI6CisgICAgICAgICAgICAgICAgcG9zdExheW91dERhdGEudGV4dEFsaWdubWVu
dCA9IENlbnRlckFsaWdubWVudDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IGNhc2UgQ1NTVmFsdWVKdXN0aWZ5OgorICAgICAgICAgICAgICAgIHBvc3RMYXlvdXREYXRhLnRl
eHRBbGlnbm1lbnQgPSBKdXN0aWZpZWRBbGlnbm1lbnQ7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlU3RhcnQ6CisgICAgICAgICAgICAgICAgcG9zdExh
eW91dERhdGEudGV4dEFsaWdubWVudCA9IGlzTGVmdFRvUmlnaHQgPyBMZWZ0QWxpZ25tZW50IDog
UmlnaHRBbGlnbm1lbnQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNl
IENTU1ZhbHVlRW5kOgorICAgICAgICAgICAgICAgIHBvc3RMYXlvdXREYXRhLnRleHRBbGlnbm1l
bnQgPSBpc0xlZnRUb1JpZ2h0ID8gUmlnaHRBbGlnbm1lbnQgOiBMZWZ0QWxpZ25tZW50OworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChhdXRvIHRleHRDb2xvciA9
IHN0eWxlUHJvcGVydGllcy0+cHJvcGVydHlBc0NvbG9yKENTU1Byb3BlcnR5Q29sb3IpKQorICAg
ICAgICAgICAgICAgIHBvc3RMYXlvdXREYXRhLnRleHRDb2xvciA9ICp0ZXh0Q29sb3I7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBpZiAoYXV0byogZW5jbG9zaW5nTGlzdEVsZW1lbnQgPSBlbmNs
b3NpbmdMaXN0KHNlbGVjdGlvbi5zdGFydCgpLmNvbnRhaW5lck5vZGUoKSkpIHsKKyAgICAgICAg
aWYgKGlzPEhUTUxVTGlzdEVsZW1lbnQ+KCplbmNsb3NpbmdMaXN0RWxlbWVudCkpCisgICAgICAg
ICAgICBwb3N0TGF5b3V0RGF0YS5lbmNsb3NpbmdMaXN0VHlwZSA9IFVub3JkZXJlZExpc3Q7Cisg
ICAgICAgIGVsc2UgaWYgKGlzPEhUTUxPTGlzdEVsZW1lbnQ+KCplbmNsb3NpbmdMaXN0RWxlbWVu
dCkpCisgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS5lbmNsb3NpbmdMaXN0VHlwZSA9IE9yZGVy
ZWRMaXN0OworICAgICAgICBlbHNlCisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICB9CisKKyAgICBwb3N0TGF5b3V0RGF0YS5iYXNlV3JpdGluZ0RpcmVjdGlvbiA9IGZyYW1l
LmVkaXRvcigpLmJhc2VXcml0aW5nRGlyZWN0aW9uRm9yU2VsZWN0aW9uU3RhcnQoKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNmFkYzc2Mjg4
MmE3Mjg4NzQ4NWFkODJkYjQyMWU3YTEwYjkyMzFjYS4uYmUzZjAyZjBjM2Q4N2FhYzA5MGYzNmRl
MGNmYzUxZWFhNjZjMzlkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAKQEAgLTE3MiwxMyArMTcyLDExIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9IVE1M
SW5wdXRFbGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IVE1MTWVudUVsZW1lbnQuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0hUTUxNZW51SXRlbUVsZW1lbnQuaD4KLSNpbmNsdWRlIDxXZWJDb3Jl
L0hUTUxPTGlzdEVsZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hUTUxQbHVnSW5FbGVtZW50
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50Lmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9IVE1MU2VsZWN0RWxlbWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSFRNTFRl
eHRBcmVhRWxlbWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSFRNTFRleHRGb3JtQ29udHJvbEVs
ZW1lbnQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0hUTUxVTGlzdEVsZW1lbnQuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0hpc3RvcnlDb250cm9sbGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IaXN0b3J5
SXRlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSGl0VGVzdFJlc3VsdC5oPgpAQCAtMTAxMSw5ICsx
MDA5LDEzIEBAIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSBXZWJQYWdlOjpyZXNvbHZlV2ViR0xQ
b2xpY3lGb3JVUkwoV2ViRnJhbWUqLCBjb25zdCBVUkwmCiB9CiAjZW5kaWYKIAotRWRpdG9yU3Rh
dGUgV2ViUGFnZTo6ZWRpdG9yU3RhdGUoSW5jbHVkZVBvc3RMYXlvdXREYXRhSGludCBzaG91bGRJ
bmNsdWRlUG9zdExheW91dERhdGEpIGNvbnN0CitFZGl0b3JTdGF0ZSBXZWJQYWdlOjplZGl0b3JT
dGF0ZShTaG91bGRQZXJmb3JtTGF5b3V0IHNob3VsZFBlcmZvcm1MYXlvdXQpIGNvbnN0CiB7Ci0g
ICAgRnJhbWUmIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWlu
RnJhbWUoKTsKKyAgICAvLyBSZWYgdGhlIGZyYW1lIGJlY2F1c2UgdGhpcyBmdW5jdGlvbiBtYXkg
cGVyZm9ybSBsYXlvdXQsIHdoaWNoIG1heSBjYXVzZSBmcmFtZSBkZXN0cnVjdGlvbi4KKyAgICBS
ZWY8RnJhbWU+IGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWlu
RnJhbWUoKTsKKworICAgIGlmIChzaG91bGRQZXJmb3JtTGF5b3V0ID09IFNob3VsZFBlcmZvcm1M
YXlvdXQ6OkRlZmF1bHQpCisgICAgICAgIHNob3VsZFBlcmZvcm1MYXlvdXQgPSBwbGF0Zm9ybU5l
ZWRzTGF5b3V0Rm9yRWRpdG9yU3RhdGUoZnJhbWUpID8gU2hvdWxkUGVyZm9ybUxheW91dDo6WWVz
IDogU2hvdWxkUGVyZm9ybUxheW91dDo6Tm87CiAKICAgICBFZGl0b3JTdGF0ZSByZXN1bHQ7CiAK
QEAgLTEwMjYsOCArMTAyOCw4IEBAIEVkaXRvclN0YXRlIFdlYlBhZ2U6OmVkaXRvclN0YXRlKElu
Y2x1ZGVQb3N0TGF5b3V0RGF0YUhpbnQgc2hvdWxkSW5jbHVkZVBvc3RMYXlvCiAgICAgICAgIH0K
ICAgICB9CiAKLSAgICBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24gPSBmcmFtZS5z
ZWxlY3Rpb24oKS5zZWxlY3Rpb24oKTsKLSAgICBjb25zdCBFZGl0b3ImIGVkaXRvciA9IGZyYW1l
LmVkaXRvcigpOworICAgIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbiA9IGZyYW1l
LT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKTsKKyAgICBjb25zdCBFZGl0b3ImIGVkaXRvciA9IGZy
YW1lLT5lZGl0b3IoKTsKIAogICAgIHJlc3VsdC5zZWxlY3Rpb25Jc05vbmUgPSBzZWxlY3Rpb24u
aXNOb25lKCk7CiAgICAgcmVzdWx0LnNlbGVjdGlvbklzUmFuZ2UgPSBzZWxlY3Rpb24uaXNSYW5n
ZSgpOwpAQCAtMTAzNywxMSArMTAzOSwxNSBAQCBFZGl0b3JTdGF0ZSBXZWJQYWdlOjplZGl0b3JT
dGF0ZShJbmNsdWRlUG9zdExheW91dERhdGFIaW50IHNob3VsZEluY2x1ZGVQb3N0TGF5bwogICAg
IHJlc3VsdC5oYXNDb21wb3NpdGlvbiA9IGVkaXRvci5oYXNDb21wb3NpdGlvbigpOwogICAgIHJl
c3VsdC5zaG91bGRJZ25vcmVTZWxlY3Rpb25DaGFuZ2VzID0gZWRpdG9yLmlnbm9yZVNlbGVjdGlv
bkNoYW5nZXMoKTsKIAotICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IGZyYW1lLmRvY3VtZW50KCkp
Ci0gICAgICAgIHJlc3VsdC5vcmlnaW5JZGVudGlmaWVyRm9yUGFzdGVib2FyZCA9IGRvY3VtZW50
LT5vcmlnaW5JZGVudGlmaWVyRm9yUGFzdGVib2FyZCgpOworICAgIGF1dG8mIGRvY3VtZW50ID0g
KmZyYW1lLT5kb2N1bWVudCgpOworICAgIHJlc3VsdC5vcmlnaW5JZGVudGlmaWVyRm9yUGFzdGVi
b2FyZCA9IGRvY3VtZW50Lm9yaWdpbklkZW50aWZpZXJGb3JQYXN0ZWJvYXJkKCk7CisKKyAgICBp
ZiAoc2hvdWxkUGVyZm9ybUxheW91dCA9PSBTaG91bGRQZXJmb3JtTGF5b3V0OjpZZXMpCisgICAg
ICAgIGRvY3VtZW50LnVwZGF0ZUxheW91dCgpOyAvLyBNYXkgY2F1c2UgZnJhbWUgZGVzdHJ1Y3Rp
b24KKworICAgIGlmIChhdXRvKiBmcmFtZVZpZXcgPSBkb2N1bWVudC52aWV3KCk7IGZyYW1lVmll
dyAmJiAhZnJhbWVWaWV3LT5uZWVkc0xheW91dCgpKSB7CisgICAgICAgIHJlc3VsdC5pc01pc3Np
bmdQb3N0TGF5b3V0RGF0YSA9IGZhbHNlOwogCi0gICAgYm9vbCBjYW5JbmNsdWRlUG9zdExheW91
dERhdGEgPSBmcmFtZS52aWV3KCkgJiYgIWZyYW1lLnZpZXcoKS0+bmVlZHNMYXlvdXQoKTsKLSAg
ICBpZiAoc2hvdWxkSW5jbHVkZVBvc3RMYXlvdXREYXRhID09IEluY2x1ZGVQb3N0TGF5b3V0RGF0
YUhpbnQ6OlllcyAmJiBjYW5JbmNsdWRlUG9zdExheW91dERhdGEpIHsKICAgICAgICAgYXV0byYg
cG9zdExheW91dERhdGEgPSByZXN1bHQucG9zdExheW91dERhdGEoKTsKICAgICAgICAgcG9zdExh
eW91dERhdGEuY2FuQ3V0ID0gZWRpdG9yLmNhbkN1dCgpOwogICAgICAgICBwb3N0TGF5b3V0RGF0
YS5jYW5Db3B5ID0gZWRpdG9yLmNhbkNvcHkoKTsKQEAgLTEwNDksNjYgKzEwNTUsOSBAQCBFZGl0
b3JTdGF0ZSBXZWJQYWdlOjplZGl0b3JTdGF0ZShJbmNsdWRlUG9zdExheW91dERhdGFIaW50IHNo
b3VsZEluY2x1ZGVQb3N0TGF5bwogCiAgICAgICAgIGlmIChtX25lZWRzRm9udEF0dHJpYnV0ZXMp
CiAgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS5mb250QXR0cmlidXRlcyA9IGVkaXRvci5mb250
QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoKTsKLQotI2lmIFBMQVRGT1JNKENPQ09BKQotICAg
ICAgICBpZiAocmVzdWx0LmlzQ29udGVudEVkaXRhYmxlICYmICFzZWxlY3Rpb24uaXNOb25lKCkp
IHsKLSAgICAgICAgICAgIGlmIChhdXRvIGVkaXRpbmdTdHlsZSA9IEVkaXRpbmdTdHlsZTo6c3R5
bGVBdFNlbGVjdGlvblN0YXJ0KHNlbGVjdGlvbikpIHsKLSAgICAgICAgICAgICAgICBpZiAoZWRp
dGluZ1N0eWxlLT5oYXNTdHlsZShDU1NQcm9wZXJ0eUZvbnRXZWlnaHQsICJib2xkIikpCi0gICAg
ICAgICAgICAgICAgICAgIHBvc3RMYXlvdXREYXRhLnR5cGluZ0F0dHJpYnV0ZXMgfD0gQXR0cmli
dXRlQm9sZDsKLQotICAgICAgICAgICAgICAgIGlmIChlZGl0aW5nU3R5bGUtPmhhc1N0eWxlKENT
U1Byb3BlcnR5Rm9udFN0eWxlLCAiaXRhbGljIikgfHwgZWRpdGluZ1N0eWxlLT5oYXNTdHlsZShD
U1NQcm9wZXJ0eUZvbnRTdHlsZSwgIm9ibGlxdWUiKSkKLSAgICAgICAgICAgICAgICAgICAgcG9z
dExheW91dERhdGEudHlwaW5nQXR0cmlidXRlcyB8PSBBdHRyaWJ1dGVJdGFsaWNzOwotCi0gICAg
ICAgICAgICAgICAgaWYgKGVkaXRpbmdTdHlsZS0+aGFzU3R5bGUoQ1NTUHJvcGVydHlXZWJraXRU
ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCwgInVuZGVybGluZSIpKQotICAgICAgICAgICAgICAgICAg
ICBwb3N0TGF5b3V0RGF0YS50eXBpbmdBdHRyaWJ1dGVzIHw9IEF0dHJpYnV0ZVVuZGVybGluZTsK
LQotICAgICAgICAgICAgICAgIGlmIChhdXRvKiBzdHlsZVByb3BlcnRpZXMgPSBlZGl0aW5nU3R5
bGUtPnN0eWxlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0xlZnRUb1JpZ2h0ID0g
c3R5bGVQcm9wZXJ0aWVzLT5wcm9wZXJ0eUFzVmFsdWVJRChDU1NQcm9wZXJ0eURpcmVjdGlvbikg
PT0gQ1NTVmFsdWVMdHI7Ci0gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoc3R5bGVQcm9wZXJ0
aWVzLT5wcm9wZXJ0eUFzVmFsdWVJRChDU1NQcm9wZXJ0eVRleHRBbGlnbikpIHsKLSAgICAgICAg
ICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVJpZ2h0OgotICAgICAgICAgICAgICAgICAgICBjYXNl
IENTU1ZhbHVlV2Via2l0UmlnaHQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBwb3N0TGF5b3V0
RGF0YS50ZXh0QWxpZ25tZW50ID0gUmlnaHRBbGlnbm1lbnQ7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUxlZnQ6Ci0gICAg
ICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVXZWJraXRMZWZ0OgotICAgICAgICAgICAgICAg
ICAgICAgICAgcG9zdExheW91dERhdGEudGV4dEFsaWdubWVudCA9IExlZnRBbGlnbm1lbnQ7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBD
U1NWYWx1ZUNlbnRlcjoKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVdlYmtpdENl
bnRlcjoKLSAgICAgICAgICAgICAgICAgICAgICAgIHBvc3RMYXlvdXREYXRhLnRleHRBbGlnbm1l
bnQgPSBDZW50ZXJBbGlnbm1lbnQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUp1c3RpZnk6Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBwb3N0TGF5b3V0RGF0YS50ZXh0QWxpZ25tZW50ID0gSnVzdGlmaWVkQWxpZ25tZW50
OwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNh
c2UgQ1NTVmFsdWVTdGFydDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHBvc3RMYXlvdXREYXRh
LnRleHRBbGlnbm1lbnQgPSBpc0xlZnRUb1JpZ2h0ID8gTGVmdEFsaWdubWVudCA6IFJpZ2h0QWxp
Z25tZW50OwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
ICAgIGNhc2UgQ1NTVmFsdWVFbmQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBwb3N0TGF5b3V0
RGF0YS50ZXh0QWxpZ25tZW50ID0gaXNMZWZ0VG9SaWdodCA/IFJpZ2h0QWxpZ25tZW50IDogTGVm
dEFsaWdubWVudDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG8gdGV4dENvbG9yID0g
c3R5bGVQcm9wZXJ0aWVzLT5wcm9wZXJ0eUFzQ29sb3IoQ1NTUHJvcGVydHlDb2xvcikpCi0gICAg
ICAgICAgICAgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS50ZXh0Q29sb3IgPSAqdGV4dENvbG9y
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKGF1
dG8qIGVuY2xvc2luZ0xpc3RFbGVtZW50ID0gZW5jbG9zaW5nTGlzdChzZWxlY3Rpb24uc3RhcnQo
KS5jb250YWluZXJOb2RlKCkpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGlzPEhUTUxVTGlzdEVs
ZW1lbnQ+KCplbmNsb3NpbmdMaXN0RWxlbWVudCkpCi0gICAgICAgICAgICAgICAgICAgIHBvc3RM
YXlvdXREYXRhLmVuY2xvc2luZ0xpc3RUeXBlID0gVW5vcmRlcmVkTGlzdDsKLSAgICAgICAgICAg
ICAgICBlbHNlIGlmIChpczxIVE1MT0xpc3RFbGVtZW50PigqZW5jbG9zaW5nTGlzdEVsZW1lbnQp
KQotICAgICAgICAgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS5lbmNsb3NpbmdMaXN0VHlwZSA9
IE9yZGVyZWRMaXN0OwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHBvc3RM
YXlvdXREYXRhLmJhc2VXcml0aW5nRGlyZWN0aW9uID0gZWRpdG9yLmJhc2VXcml0aW5nRGlyZWN0
aW9uRm9yU2VsZWN0aW9uU3RhcnQoKTsKLSAgICAgICAgfQotI2VuZGlmCiAgICAgfQogCi0gICAg
cGxhdGZvcm1FZGl0b3JTdGF0ZShmcmFtZSwgcmVzdWx0LCBzaG91bGRJbmNsdWRlUG9zdExheW91
dERhdGEpOworICAgIHBsYXRmb3JtRWRpdG9yU3RhdGUoZnJhbWUsIHJlc3VsdCk7CiAKICAgICBt
X2xhc3RFZGl0b3JTdGF0ZVdhc0NvbnRlbnRFZGl0YWJsZSA9IHJlc3VsdC5pc0NvbnRlbnRFZGl0
YWJsZSA/IEVkaXRvclN0YXRlSXNDb250ZW50RWRpdGFibGU6OlllcyA6IEVkaXRvclN0YXRlSXND
b250ZW50RWRpdGFibGU6Ok5vOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmgKaW5kZXggOTU0MDllOWIwNGNlZTZlMTdlZDE5NWMxYjNmMDU0NjU1OGEwZDZiNi4u
ZjM3MjM5OTMwMDI0NTYxNWRmZTJmZWQwZmRiOGQzZjlmOGE2MDgyYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtNDUzLDggKzQ1Myw4IEBAIHB1Ymxp
YzoKICAgICBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgcmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJM
KFdlYkZyYW1lKiwgY29uc3QgVVJMJik7CiAjZW5kaWYKICAgICAKLSAgICBlbnVtIGNsYXNzIElu
Y2x1ZGVQb3N0TGF5b3V0RGF0YUhpbnQgeyBObywgWWVzIH07Ci0gICAgRWRpdG9yU3RhdGUgZWRp
dG9yU3RhdGUoSW5jbHVkZVBvc3RMYXlvdXREYXRhSGludCA9IEluY2x1ZGVQb3N0TGF5b3V0RGF0
YUhpbnQ6OlllcykgY29uc3Q7CisgICAgZW51bSBjbGFzcyBTaG91bGRQZXJmb3JtTGF5b3V0IHsg
RGVmYXVsdCwgTm8sIFllcyB9OworICAgIEVkaXRvclN0YXRlIGVkaXRvclN0YXRlKFNob3VsZFBl
cmZvcm1MYXlvdXQgPSBTaG91bGRQZXJmb3JtTGF5b3V0OjpEZWZhdWx0KSBjb25zdDsKICAgICB2
b2lkIHVwZGF0ZUVkaXRvclN0YXRlQWZ0ZXJMYXlvdXRJZkVkaXRhYmlsaXR5Q2hhbmdlZCgpOwog
CiAgICAgLy8gb3B0aW9ucyBhcmUgUmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb25CZWhh
dmlvciB2YWx1ZXMuCkBAIC0xMjI0LDcgKzEyMjQsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgcGxh
dGZvcm1Jbml0aWFsaXplKCk7CiAgICAgdm9pZCBwbGF0Zm9ybVJlaW5pdGlhbGl6ZSgpOwogICAg
IHZvaWQgcGxhdGZvcm1EZXRhY2goKTsKLSAgICB2b2lkIHBsYXRmb3JtRWRpdG9yU3RhdGUoV2Vi
Q29yZTo6RnJhbWUmLCBFZGl0b3JTdGF0ZSYgcmVzdWx0LCBJbmNsdWRlUG9zdExheW91dERhdGFI
aW50KSBjb25zdDsKKyAgICB2b2lkIHBsYXRmb3JtRWRpdG9yU3RhdGUoV2ViQ29yZTo6RnJhbWUm
LCBFZGl0b3JTdGF0ZSYpIGNvbnN0OworICAgIGJvb2wgcGxhdGZvcm1OZWVkc0xheW91dEZvckVk
aXRvclN0YXRlKGNvbnN0IFdlYkNvcmU6OkZyYW1lJikgY29uc3Q7CiAgICAgdm9pZCBwbGF0Zm9y
bVdpbGxQZXJmb3JtRWRpdGluZ0NvbW1hbmQoKTsKICAgICB2b2lkIHNlbmRFZGl0b3JTdGF0ZVVw
ZGF0ZSgpOwogCkBAIC0xMjMzLDYgKzEyMzQsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgc2VuZFRv
dWNoQmFyTWVudURhdGFSZW1vdmVkVXBkYXRlKFdlYkNvcmU6OkhUTUxNZW51RWxlbWVudCYpOwog
ICAgIHZvaWQgc2VuZFRvdWNoQmFyTWVudUl0ZW1EYXRhQWRkZWRVcGRhdGUoV2ViQ29yZTo6SFRN
TE1lbnVJdGVtRWxlbWVudCYpOwogICAgIHZvaWQgc2VuZFRvdWNoQmFyTWVudUl0ZW1EYXRhUmVt
b3ZlZFVwZGF0ZShXZWJDb3JlOjpIVE1MTWVudUl0ZW1FbGVtZW50Jik7CisKKyAgICB2b2lkIHBs
YXRmb3JtRWRpdG9yU3RhdGVDb21tb24oY29uc3QgV2ViQ29yZTo6RnJhbWUmLCBFZGl0b3JTdGF0
ZSYpIGNvbnN0OwogI2VuZGlmCiAKICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jV2ViUGFnZU1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6
RW5jb2Rlcj4mKTsKQEAgLTE5MDgsNyArMTkxMSw2IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1f
bWFpbkZyYW1lUHJvZ3Jlc3NDb21wbGV0ZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9zaG91bGRE
aXNwYXRjaEZha2VNb3VzZU1vdmVFdmVudHMgeyB0cnVlIH07Ci0gICAgYm9vbCBtX2lzRWRpdG9y
U3RhdGVNaXNzaW5nUG9zdExheW91dERhdGEgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc1NlbGVj
dGluZ1RleHRXaGlsZUluc2VydGluZ0FzeW5jaHJvbm91c2x5IHsgZmFsc2UgfTsKIAogICAgIGVu
dW0gY2xhc3MgRWRpdG9yU3RhdGVJc0NvbnRlbnRFZGl0YWJsZSB7IE5vLCBZZXMsIFVuc2V0IH07
CkBAIC0xOTY2LDYgKzE5NjgsNyBAQCBwcml2YXRlOgogCiAjaWYgIVBMQVRGT1JNKElPU19GQU1J
TFkpCiBpbmxpbmUgdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybVdpbGxQZXJmb3JtRWRpdGluZ0NvbW1h
bmQoKSB7IH0KK2lubGluZSBib29sIFdlYlBhZ2U6OnBsYXRmb3JtTmVlZHNMYXlvdXRGb3JFZGl0
b3JTdGF0ZShjb25zdCBXZWJDb3JlOjpGcmFtZSYpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAj
ZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUGFnZUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUGFnZUd0ay5jcHAKaW5kZXggMWMwYTNkMTgwZmUxMTQ0
MWE4OTcyYTRlZDgyOTE5MjU2MzFhMDA1My4uNmI1NGMyMDAxYjEwZDcxYjlkMTUwZWQzODFhN2U0
NWE1OWRmMGM3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Z3RrL1dlYlBhZ2VHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L2d0ay9XZWJQYWdlR3RrLmNwcApAQCAtNzYsMTIgKzc2LDEwIEBAIHZvaWQgV2ViUGFnZTo6cGxh
dGZvcm1EZXRhY2goKQogewogfQogCi12b2lkIFdlYlBhZ2U6OnBsYXRmb3JtRWRpdG9yU3RhdGUo
RnJhbWUmIGZyYW1lLCBFZGl0b3JTdGF0ZSYgcmVzdWx0LCBJbmNsdWRlUG9zdExheW91dERhdGFI
aW50IHNob3VsZEluY2x1ZGVQb3N0TGF5b3V0RGF0YSkgY29uc3QKK3ZvaWQgV2ViUGFnZTo6cGxh
dGZvcm1FZGl0b3JTdGF0ZShGcmFtZSYgZnJhbWUsIEVkaXRvclN0YXRlJiByZXN1bHQpIGNvbnN0
CiB7Ci0gICAgaWYgKHNob3VsZEluY2x1ZGVQb3N0TGF5b3V0RGF0YSA9PSBJbmNsdWRlUG9zdExh
eW91dERhdGFIaW50OjpObyB8fCAhZnJhbWUudmlldygpIHx8IGZyYW1lLnZpZXcoKS0+bmVlZHNM
YXlvdXQoKSkgewotICAgICAgICByZXN1bHQuaXNNaXNzaW5nUG9zdExheW91dERhdGEgPSB0cnVl
OworICAgIGlmIChyZXN1bHQuaXNNaXNzaW5nUG9zdExheW91dERhdGEpCiAgICAgICAgIHJldHVy
bjsKLSAgICB9CiAKICAgICBhdXRvJiBwb3N0TGF5b3V0RGF0YSA9IHJlc3VsdC5wb3N0TGF5b3V0
RGF0YSgpOwogICAgIHBvc3RMYXlvdXREYXRhLmNhcmV0UmVjdEF0U3RhcnQgPSBmcmFtZS5zZWxl
Y3Rpb24oKS5hYnNvbHV0ZUNhcmV0Qm91bmRzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IGVmZTVhZmM0MzY5OTdkODJk
N2YwOTk4ZGY4YTZmMjg0MzgyNDE1N2IuLjNiNjkwNzVmYTA1MDRmZWVkODdiZDA3OTI1Mzk1YzNh
YzA1M2RkYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lv
cy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lv
cy9XZWJQYWdlSU9TLm1tCkBAIC0xOTYsOCArMTk2LDIxIEBAIGJvb2wgV2ViUGFnZTo6aXNUcmFu
c3BhcmVudE9yRnVsbHlDbGlwcGVkKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpIGNvbnN0CiAgICAg
cmV0dXJuIGVuY2xvc2luZ0xheWVyICYmIGVuY2xvc2luZ0xheWVyLT5pc1RyYW5zcGFyZW50T3JG
dWxseUNsaXBwZWRSZXNwZWN0aW5nUGFyZW50RnJhbWVzKCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6
cGxhdGZvcm1FZGl0b3JTdGF0ZShGcmFtZSYgZnJhbWUsIEVkaXRvclN0YXRlJiByZXN1bHQsIElu
Y2x1ZGVQb3N0TGF5b3V0RGF0YUhpbnQgc2hvdWxkSW5jbHVkZVBvc3RMYXlvdXREYXRhKSBjb25z
dAorYm9vbCBXZWJQYWdlOjpwbGF0Zm9ybU5lZWRzTGF5b3V0Rm9yRWRpdG9yU3RhdGUoY29uc3Qg
RnJhbWUmIGZyYW1lKSBjb25zdAogeworICAgIC8vIElmIHdlIGhhdmUgYSBjb21wb3NpdGlvbiBv
ciBhcmUgdXNpbmcgYSBoYXJkd2FyZSBrZXlib2FyZCB0aGVuIHdlIG5lZWQgdG8gc2VuZCB0aGUg
ZnVsbAorICAgIC8vIGVkaXRvciBzbyB0aGF0IHRoZSBVSVByb2Nlc3MgY2FuIHVwZGF0ZSBVSSwg
aW5jbHVkaW5nIHRoZSBwb3NpdGlvbiBvZiB0aGUgY2FyZXQuCisgICAgYm9vbCBuZWVkc0xheW91
dCA9IGZyYW1lLmVkaXRvcigpLmhhc0NvbXBvc2l0aW9uKCk7CisjaWYgIVBMQVRGT1JNKE1BQ0NB
VEFMWVNUKQorICAgIG5lZWRzTGF5b3V0IHw9IG1fa2V5Ym9hcmRJc0F0dGFjaGVkOworI2VuZGlm
CisgICAgcmV0dXJuIG5lZWRzTGF5b3V0OworfQorCit2b2lkIFdlYlBhZ2U6OnBsYXRmb3JtRWRp
dG9yU3RhdGUoRnJhbWUmIGZyYW1lLCBFZGl0b3JTdGF0ZSYgcmVzdWx0KSBjb25zdAoreworICAg
IHBsYXRmb3JtRWRpdG9yU3RhdGVDb21tb24oZnJhbWUsIHJlc3VsdCk7CisKICAgICBGcmFtZVZp
ZXcqIHZpZXcgPSBmcmFtZS52aWV3KCk7CiAgICAgaWYgKGZyYW1lLmVkaXRvcigpLmhhc0NvbXBv
c2l0aW9uKCkpIHsKICAgICAgICAgUmVmUHRyPFJhbmdlPiBjb21wb3NpdGlvblJhbmdlID0gZnJh
bWUuZWRpdG9yKCkuY29tcG9zaXRpb25SYW5nZSgpOwpAQCAtMjE0LDIzICsyMjcsMTEgQEAgdm9p
ZCBXZWJQYWdlOjpwbGF0Zm9ybUVkaXRvclN0YXRlKEZyYW1lJiBmcmFtZSwgRWRpdG9yU3RhdGUm
IHJlc3VsdCwgSW5jbHVkZVBvc3QKICAgICAgICAgfQogICAgIH0KIAotICAgIC8vIFdlIG9ubHkg
c2V0IHRoZSByZW1haW5pbmcgRWRpdG9yU3RhdGUgZW50cmllcyBpZiBsYXlvdXQgaXMgZG9uZSBh
cyBhIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbgotICAgIC8vIHRvIGF2b2lkIHRoZSBuZWVkIHRv
IGZvcmNlIGEgc3luY2hyb25vdXMgbGF5b3V0IGhlcmUgdG8gY29tcHV0ZSB0aGVzZSBlbnRyaWVz
LiBJZiB3ZQotICAgIC8vIGhhdmUgYSBjb21wb3NpdGlvbiBvciBhcmUgdXNpbmcgYSBoYXJkd2Fy
ZSBrZXlib2FyZCB0aGVuIHdlIHNlbmQgdGhlIGZ1bGwgZWRpdG9yIHN0YXRlCi0gICAgLy8gaW1t
ZWRpYXRlbHkgc28gdGhhdCB0aGUgVUlQcm9jZXNzIGNhbiB1cGRhdGUgVUksIGluY2x1ZGluZyB0
aGUgcG9zaXRpb24gb2YgdGhlIGNhcmV0LgotICAgIGJvb2wgbmVlZHNMYXlvdXQgPSAhZnJhbWUu
dmlldygpIHx8IGZyYW1lLnZpZXcoKS0+bmVlZHNMYXlvdXQoKTsKLSAgICBib29sIHJlcXVpcmVz
UG9zdExheW91dERhdGEgPSBmcmFtZS5lZGl0b3IoKS5oYXNDb21wb3NpdGlvbigpOwotI2lmICFQ
TEFURk9STShNQUNDQVRBTFlTVCkKLSAgICByZXF1aXJlc1Bvc3RMYXlvdXREYXRhIHw9IG1fa2V5
Ym9hcmRJc0F0dGFjaGVkOwotI2VuZGlmCi0gICAgaWYgKChzaG91bGRJbmNsdWRlUG9zdExheW91
dERhdGEgPT0gSW5jbHVkZVBvc3RMYXlvdXREYXRhSGludDo6Tm8gfHwgbmVlZHNMYXlvdXQpICYm
ICFyZXF1aXJlc1Bvc3RMYXlvdXREYXRhKSB7Ci0gICAgICAgIHJlc3VsdC5pc01pc3NpbmdQb3N0
TGF5b3V0RGF0YSA9IHRydWU7CisgICAgaWYgKHJlc3VsdC5pc01pc3NpbmdQb3N0TGF5b3V0RGF0
YSkKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAogICAgIGF1dG8mIHBvc3RMYXlvdXREYXRhID0g
cmVzdWx0LnBvc3RMYXlvdXREYXRhKCk7Ci0gICAgCi0gICAgY29uc3QgVmlzaWJsZVNlbGVjdGlv
biYgc2VsZWN0aW9uID0gZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7CisgICAgY29uc3Qg
YXV0byYgc2VsZWN0aW9uID0gZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7CiAgICAgcG9z
dExheW91dERhdGEuaXNTdGFibGVTdGF0ZVVwZGF0ZSA9IG1faXNJblN0YWJsZVN0YXRlOwogICAg
IGJvb2wgc3RhcnROb2RlSXNJbnNpZGVGaXhlZFBvc2l0aW9uID0gZmFsc2U7CiAgICAgYm9vbCBl
bmROb2RlSXNJbnNpZGVGaXhlZFBvc2l0aW9uID0gZmFsc2U7CkBAIC00NDQsNyArNDQ1LDcgQEAg
Ym9vbCBXZWJQYWdlOjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50JiBl
dmVudCkKIAogICAgIC8vIEZJWE1FOiBJbnRlcnByZXQgdGhlIGV2ZW50IGltbWVkaWF0ZWx5IHVw
b24gcmVjZWl2aW5nIGl0IGluIFVJIHByb2Nlc3MsIHdpdGhvdXQgc2VuZGluZyB0byBXZWJQcm9j
ZXNzIGZpcnN0LgogICAgIGJvb2wgZXZlbnRXYXNIYW5kbGVkID0gZmFsc2U7Ci0gICAgYm9vbCBz
ZW5kUmVzdWx0ID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6SW50ZXJwcmV0S2V5RXZlbnQo
ZWRpdG9yU3RhdGUoKSwgcGxhdGZvcm1FdmVudC0+dHlwZSgpID09IFBsYXRmb3JtS2V5Ym9hcmRF
dmVudDo6Q2hhciksCisgICAgYm9vbCBzZW5kUmVzdWx0ID0gV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6SW50ZXJwcmV0S2V5RXZlbnQoZWRpdG9yU3RhdGUoU2hvdWxkUGVyZm9ybUxheW91dDo6
WWVzKSwgcGxhdGZvcm1FdmVudC0+dHlwZSgpID09IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6Q2hh
ciksCiAgICAgICAgIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkludGVycHJldEtleUV2ZW50OjpS
ZXBseShldmVudFdhc0hhbmRsZWQpLCBtX3BhZ2VJRCk7CiAgICAgcmV0dXJuIHNlbmRSZXN1bHQg
JiYgZXZlbnRXYXNIYW5kbGVkOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQppbmRleCA0MzFkZmExN2FjYTA1YjYwZWZlOWFlMDQw
M2E0MDg4MGUyODE4ZDgwLi4zMDRhNTZhNWQ4ZGQ1MmMwNmQyZTY5ZGYzMjBlZjIzZjdmYjYyOWYy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFn
ZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFn
ZU1hYy5tbQpAQCAtMTMzLDE0ICsxMzMsMTQgQEAgdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybURldGFj
aCgpCiAgICAgW21fbW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50IHNldFdlYlBhZ2U6bnVsbHB0cl07
CiB9CiAKLXZvaWQgV2ViUGFnZTo6cGxhdGZvcm1FZGl0b3JTdGF0ZShGcmFtZSYgZnJhbWUsIEVk
aXRvclN0YXRlJiByZXN1bHQsIEluY2x1ZGVQb3N0TGF5b3V0RGF0YUhpbnQgc2hvdWxkSW5jbHVk
ZVBvc3RMYXlvdXREYXRhKSBjb25zdAordm9pZCBXZWJQYWdlOjpwbGF0Zm9ybUVkaXRvclN0YXRl
KEZyYW1lJiBmcmFtZSwgRWRpdG9yU3RhdGUmIHJlc3VsdCkgY29uc3QKIHsKLSAgICBpZiAoc2hv
dWxkSW5jbHVkZVBvc3RMYXlvdXREYXRhID09IEluY2x1ZGVQb3N0TGF5b3V0RGF0YUhpbnQ6Ok5v
IHx8ICFmcmFtZS52aWV3KCkgfHwgZnJhbWUudmlldygpLT5uZWVkc0xheW91dCgpIHx8ICFyZXN1
bHQuaXNDb250ZW50RWRpdGFibGUpIHsKLSAgICAgICAgcmVzdWx0LmlzTWlzc2luZ1Bvc3RMYXlv
dXREYXRhID0gdHJ1ZTsKKyAgICBwbGF0Zm9ybUVkaXRvclN0YXRlQ29tbW9uKGZyYW1lLCByZXN1
bHQpOworCisgICAgaWYgKHJlc3VsdC5pc01pc3NpbmdQb3N0TGF5b3V0RGF0YSkKICAgICAgICAg
cmV0dXJuOwotICAgIH0KIAotICAgIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbiA9
IGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpOworICAgIGNvbnN0IGF1dG8mIHNlbGVjdGlv
biA9IGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpOwogICAgIFJlZlB0cjxSYW5nZT4gc2Vs
ZWN0ZWRSYW5nZSA9IHNlbGVjdGlvbi50b05vcm1hbGl6ZWRSYW5nZSgpOwogICAgIGlmICghc2Vs
ZWN0ZWRSYW5nZSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL1dlYlBhZ2VXaW4uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2Uvd2luL1dlYlBhZ2VXaW4uY3BwCmluZGV4IGM5NGJkMDVjOTI0NTU3Yjk0
ODNlNjEzZGQ5OWE4OGRlYjA5NzE0NGIuLmFhNDNjZTllYWQ2MjY2ZTBlYWViYjE1YjFhZDkzOWRk
ZjMyZmE4MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3dp
bi9XZWJQYWdlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93
aW4vV2ViUGFnZVdpbi5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgdm9pZCBXZWJQYWdlOjpwbGF0Zm9y
bURldGFjaCgpCiB7CiB9CiAKLXZvaWQgV2ViUGFnZTo6cGxhdGZvcm1FZGl0b3JTdGF0ZShGcmFt
ZSYgZnJhbWUsIEVkaXRvclN0YXRlJiByZXN1bHQsIEluY2x1ZGVQb3N0TGF5b3V0RGF0YUhpbnQg
c2hvdWxkSW5jbHVkZVBvc3RMYXlvdXREYXRhKSBjb25zdAordm9pZCBXZWJQYWdlOjpwbGF0Zm9y
bUVkaXRvclN0YXRlKEZyYW1lJiwgRWRpdG9yU3RhdGUmKSBjb25zdAogewogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93cGUvV2ViUGFnZVdQRS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93cGUvV2ViUGFnZVdQRS5jcHAKaW5k
ZXggYzJiNTI2NTlhMzZlYTgzZTdiZGU1Y2NmMTZmZjI3M2U0ODRjODE1Mi4uN2QxMjdmMjE4MDRj
Y2IxNGMwYTQ2OTZjYjY3M2U2MmNmODkzZjg4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2Uvd3BlL1dlYlBhZ2VXUEUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL3dwZS9XZWJQYWdlV1BFLmNwcApAQCAtNTgsNyArNTgsNyBAQCB2
b2lkIFdlYlBhZ2U6OnBsYXRmb3JtRGV0YWNoKCkKIHsKIH0KIAotdm9pZCBXZWJQYWdlOjpwbGF0
Zm9ybUVkaXRvclN0YXRlKEZyYW1lJiwgRWRpdG9yU3RhdGUmLCBJbmNsdWRlUG9zdExheW91dERh
dGFIaW50KSBjb25zdAordm9pZCBXZWJQYWdlOjpwbGF0Zm9ybUVkaXRvclN0YXRlKEZyYW1lJiwg
RWRpdG9yU3RhdGUmKSBjb25zdAogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
ZmEwYTY2NDA0MmU3MTEyMGEzNGVkOWI4MTBhMGNjZThkYjljYWM3ZS4uNTcwMTM2NDA2ODk4OGY2
NDNhM2ZkNmU1MjRjNjAyM2NiMGNmMmM2NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE5LTA3
LTIyICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBB
U1NFUlRJT04gRkFJTFVSRTogIWlzTWlzc2luZ1Bvc3RMYXlvdXREYXRhIGluIFdlYktpdDo6RWRp
dG9yU3RhdGU6OnBvc3RMYXlvdXREYXRhKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5OTk2MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTMzMjM5
NjY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
IGEgdGVzdCB0byBlbnN1cmUgd2UgZG8gbm90IGFzc2VydCB3aGVuIHVzaW5nIHRoZSBzb2Z0d2Fy
ZSBrZXlib2FyZCB0byB0eXBlIGEgY2hhcmFjdGVyCisgICAgICAgIGludG8gYSA8dGV4dGFyZWE+
IGFuZCB0aGVuIGRlbGV0ZSBpdC4KKworICAgICAgICAqIFRlc3RFeHBlY3RhdGlvbnM6IFNraXAg
dGVzdHMgaW4gZWRpdGluZy9kZWxldGluZy9pb3Mgb24gYWxsIHBsYXRmb3Jtcy4KKyAgICAgICAg
KiBlZGl0aW5nL2RlbGV0aW5nL2lvcy9iYWNrc3BhY2UtbGFzdC1jaGFyYWN0ZXIuaHRtbDogQWRk
ZWQuCisgICAgICAgICogcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnM6IFVuc2tpcCB0ZXN0
cyBpbiBlZGl0aW5nL2RlbGV0aW5nL2lvcyBvbiBpT1MuCisKIDIwMTktMDctMjIgIFRydWl0dCBT
YXZlbGwgIDx0c2F2ZWxsQGFwcGxlLmNvbT4KIAogICAgICAgICBbIE1vamF2ZSBEZWJ1ZyBXSzEg
XSBMYXlvdXQgVGVzdCBpbXBvcnRlZC9ibGluay9zdG9yYWdlL2luZGV4ZWRkYi9ibG9iLWJhc2lj
cy1tZXRhZGF0YS5odG1sIGlzIFRpbWluZyBvdXQgKDIwMDAwMikKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCmlu
ZGV4IDlkYzMyY2FhMzM2YmQ5YzIyYTA5M2EzYWU3ZWExYWRhZjA3MGQ0NGYuLjkzNTlmMmYxMTQy
Y2NkNmQ0ZWYxNzY1ZTQ1YTk3ZTkwMzllMzBmODkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL1Rl
c3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTks
NiArMTksNyBAQCBlZGl0aW5nL2lucHV0L2lvcyBbIFNraXAgXQogZWRpdGluZy9maW5kIFsgU2tp
cCBdCiBlZGl0aW5nL3Bhc3RlYm9hcmQvZ3RrIFsgU2tpcCBdCiBlZGl0aW5nL3NlbGVjdGlvbi9p
b3MgWyBTa2lwIF0KK2VkaXRpbmcvZGVsZXRpbmcvaW9zIFsgU2tpcCBdCiBlZGl0aW5nL3VuZG8t
bWFuYWdlciBbIFNraXAgXQogdGlsZWQtZHJhd2luZyBbIFNraXAgXQogZmFzdC9jc3Mvd2F0Y2hv
cyBbIFNraXAgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9kZWxldGluZy9pb3Mv
YmFja3NwYWNlLWxhc3QtY2hhcmFjdGVyLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2RlbGV0
aW5nL2lvcy9iYWNrc3BhY2UtbGFzdC1jaGFyYWN0ZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NDI4Mzc4
ZmE3MmY3MmFmNWIxMjFjZmFjNTdlNjVhNjgxYWE2OTk0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZWRpdGluZy9kZWxldGluZy9pb3MvYmFja3NwYWNlLWxhc3QtY2hhcmFjdGVyLmh0
bWwKQEAgLTAsMCArMSw0NiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPGRpdiBpZD0idGVzdC1jb250YWluZXIiPgorICAgIDx0ZXh0YXJlYSBpZD0i
aW5wdXQiPjwvdGV4dGFyZWE+CisgICAgPHRleHRhcmVhIGlkPSJvdXRwdXQiIHJlYWRvbmx5Pjwv
dGV4dGFyZWE+Cis8L2Rpdj4KKzxzY3JpcHQ+Cit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7
CisKK2xldCBpbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpbnB1dCIpOworCitmdW5j
dGlvbiBhcHBlbmRBTmV3bGluZSgpCit7CisgICAgbGV0IG91dHB1dEVsZW1lbnQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgib3V0cHV0Iik7CisgICAgb3V0cHV0RWxlbWVudC52YWx1ZSA9IG91
dHB1dEVsZW1lbnQudmFsdWUgKyAiXG4iOworfQorCithc3luYyBmdW5jdGlvbiBydW5UZXN0KCkK
K3sKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIGF3YWl0IFVJSGVscGVyLnNl
dEhhcmR3YXJlS2V5Ym9hcmRBdHRhY2hlZChmYWxzZSk7CisKKyAgICBhd2FpdCBVSUhlbHBlci5j
YWxsRnVuY3Rpb25BbmRXYWl0Rm9yRXZlbnQoKCkgPT4gd2luZG93LnRlc3RSdW5uZXIgJiYgVUlI
ZWxwZXIuYWN0aXZhdGVFbGVtZW50KGlucHV0KSwgaW5wdXQsICJmb2N1cyIpOworCisgICAgYXdh
aXQgVUlIZWxwZXIuY2FsbEZ1bmN0aW9uQW5kV2FpdEZvckV2ZW50KCgpID0+IHdpbmRvdy50ZXN0
UnVubmVyICYmIFVJSGVscGVyLmtleURvd24oInciKSwgaW5wdXQsICJrZXl1cCIpOworICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygnZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImlucHV0IikudmFs
dWUnLCAidyIpOworCisgICAgYXdhaXQgVUlIZWxwZXIuY2FsbEZ1bmN0aW9uQW5kV2FpdEZvckV2
ZW50KCgpID0+IHdpbmRvdy50ZXN0UnVubmVyICYmIFVJSGVscGVyLmtleURvd24oIlxiIiksIGlu
cHV0LCAia2V5dXAiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2RvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJpbnB1dCIpLnZhbHVlJywgIiIpOworCisgICAgZG9jdW1lbnQuYm9keS5yZW1v
dmVDaGlsZChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdC1jb250YWluZXIiKSk7CisgICAg
ZmluaXNoSlNUZXN0KCk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHVzaW5nIHRoZSBz
b2Z0d2FyZSBrZXlib2FyZCBhbmQgcHJlc3NpbmcgJ3cnIHRoZW4gPGtiZD5iYWNrc3BhY2U8L2ti
ZD4gZGVsZXRlcyB0aGUgJ3cnIGFuZCBkb2VzIG5vdCBjYXVzZSBhbiBhc3NlcnRpb24gZmFpbHVy
ZSBpbiBhIGRlYnVnIGJ1aWxkLiIpCitpbnB1dC5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIiwg
YXBwZW5kQU5ld2xpbmUpOworCitydW5UZXN0KCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25z
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggNjg4Y2E5
M2U5MTdmNjQyODRhZGRjNzhlNTcwOWQ0NDliOGRlN2IyNy4uODE1OTM5ZTE5NWFlYzk3MmY0Y2E0
MWM5YmU2MzU3ZmYwYmMzMjViMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9z
L1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBl
Y3RhdGlvbnMKQEAgLTgsNiArOCw3IEBACiAKIGFjY2Vzc2liaWxpdHkvaW9zLXNpbXVsYXRvciBb
IFBhc3MgXQogZGlzcGxheWxpc3RzIFsgUGFzcyBdCitlZGl0aW5nL2RlbGV0aW5nL2lvcyBbIFBh
c3MgXQogaHR0cC90ZXN0cy9xdWlja2xvb2sgWyBQYXNzIF0KIG1lZGlhL2lvcyBbIFBhc3MgXQog
cXVpY2tsb29rIFsgUGFzcyBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>374973</attachid>
            <date>2019-07-26 10:54:40 -0700</date>
            <delta_ts>2019-08-22 14:58:21 -0700</delta_ts>
            <desc>Patch and layout test</desc>
            <filename>bug-199960-20190726105440.patch</filename>
            <type>text/plain</type>
            <size>29075</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ3ODY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDg0OTVmMzk2ZDE4ZmY0OTEz
OGI0ZmYzMzgxMzQ5YmQ3MDU2ZGJjYzEuLmYwYTlhM2IwZTQ0NjNjZWUwNjBlNmM4ZWI3MmJmNzI0
OGQ1NTljMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjEgQEAKKzIwMTktMDctMjYgIERhbmllbCBC
YXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIEFTU0VSVElPTiBGQUlM
VVJFOiAhaXNNaXNzaW5nUG9zdExheW91dERhdGEgaW4gV2ViS2l0OjpFZGl0b3JTdGF0ZTo6cG9z
dExheW91dERhdGEoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTk5OTYwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81MzMyMzk2Nj4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZhY3RvciB0aGUgY29t
cHV0YXRpb24gb2YgZWRpdG9yIHN0YXRlIHNvIHRoYXQgd2UgY2FuIHJlcXVlc3QgdGhhdCBhIGxh
eW91dCBiZSBwZXJmb3JtZWQKKyAgICAgICAgZWFjaCB0aW1lIHdlIGNvbXB1dGUgdGhlIGVkaXRv
ciBzdGF0ZSBhcyBwYXJ0IG9mIGFza2luZyB0aGUgVUkgcHJvY2VzcyB0byBpbnRlcnByZXQgYSBr
ZXkKKyAgICAgICAgZXZlbnQuIFRoZSBmdWxsIChyZWFkOiBhZnRlciBsYXlvdXQpIGVkaXRvciBz
dGF0ZSBpcyBuZWVkZWQgZm9yIFVJS2l0IHRvIHBlcmZvcm0gYSBkZWxldGlvbgorICAgICAgICBi
ZWNhdXNlIFVJS2l0IHdhbnRzIHRvIGtub3cgaG93IG1hbnkgY2hhcmFjdGVycyBhcmUgYmVmb3Jl
IHRoZSBzZWxlY3Rpb24uIE90aGVyd2lzZSwgd2UgaGl0CisgICAgICAgIGFuIGFzc2VydCBkdWUg
dG8gdGhlIGZhY3QgdGhlIGxhc3QgZWRpdG9yIHN0YXRlIHNlbnQgKHdoZW4gdGhlIFdlYiBwcm9j
ZXNzIGFza2VkIHRoZSBVSSBwcm9jZXNzCisgICAgICAgIHRvIGludGVycHJldCB0aGUga2V5KSBp
cyBtaXNzaW5nIGxheW91dCBkYXRhLgorCisgICAgICAgIFRoZSByZWZhY3RvcmluZyBhbHNvIG1v
dmVzIHRoZSBDb2NvYS1jb21tb24gY29kZSBvdXQgb2YgdGhlIHBsYXRmb3JtLWluZGVwZW5kZW50
IFdlYlBhZ2UuY3BwCisgICAgICAgIGZpbGUgaW50byBXZWJQYWdlQ29jb2EubW0uCisKKyAgICAg
ICAgT25lIHNpZGUgZWZmZWN0IG9mIHRoZSByZWZhY3RvcmluZyBpcyB0aGF0IHdlIG5vIGxvbmdl
ciBhbGxvdyB0aGUgcGxhdGZvcm1FZGl0b3JTdGF0ZSgpIGZ1bmN0aW9uCisgICAgICAgIHRvIG92
ZXJyaWRlIHRoZSBpc01pc3NpbmdQb3N0TGF5b3V0RGF0YSBiaXQuIEN1cnJlbnRseSBpdCBjYW4g
ZXZlbiB0aG91Z2ggdGhlIGNhbGxpbmcgY29kZSwgdGhlCisgICAgICAgIHBsYXRmb3JtIGluZGVw
ZW5kZW50IGNvZGUgKFBJRSkgaW4gV2ViUGFnZSwgbWF5IGhhdmUgYXR0YWNoZWQgbGF5b3V0IGRh
dGEuIE5vdyB0aGUgUElFIGNvZGUgc2V0cworICAgICAgICB0aGlzIGJpdCBpZiBpdCBhdHRhY2hl
ZCBsYXlvdXQgZGF0YSBhbmQgdGhlIHBsYXRmb3JtRWRpdG9yU3RhdGUoKSBmdW5jdGlvbiBvbmx5
IGF0dGFjaGVzIG1vcmUKKyAgICAgICAgbGF5b3V0IGRhdGEgaWYgdGhhdCBiaXQgaXMgc2V0LiBw
bGF0Zm9ybUVkaXRvclN0YXRlKCkgbmV2ZXIgdW5zZXRzIHRoYXQgYml0IChpLmUuIHNldHMgaXNN
aXNzaW5nUG9zdExheW91dERhdGEKKyAgICAgICAgdG8gdHJ1ZSkuCisKKyAgICAgICAgVGhlIHBh
dGNoIGFsc28gcmVtb3ZlcyBtX2lzRWRpdG9yU3RhdGVNaXNzaW5nUG9zdExheW91dERhdGEgaW4g
V2ViUGFnZS5oLiBUaGlzIGluc3RhbmNlIHZhcmlhYmxlCisgICAgICAgIGhhcyBiZWVuIHVudXNl
ZCBzaW5jZSA8aHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzIyMTA2NC93ZWJraXQ+
LiBBbHNvIHdlIGhhdmVuJ3QgYmVlbiB1c2luZworICAgICAgICBJbmNsdWRlUG9zdExheW91dERh
dGFIaW50OjpObyBzaW5jZSB0aGUgbGFzdCByZWZlcmVuY2UgdG8gaXQgd2FzIHJlbW92ZWQgaW4g
PGh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yNDQ0OTQvd2Via2l0Pi4KKworICAg
ICAgICAqIFNoYXJlZC9FZGl0b3JTdGF0ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9Db2NvYS9XZWJQYWdlQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBsYXRm
b3JtRWRpdG9yU3RhdGVDb21tb24gY29uc3QpOiBBZGRlZC4gTW92ZWQgQ29jb2EtY29tbW9uIGNv
ZGUgZnJvbSBXZWJQYWdlLmNwcAorICAgICAgICB0byBoZXJlLgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZWRpdG9y
U3RhdGUgY29uc3QpOiBNb3ZlIENvY29hLWNvbW1vbiBjb2RlIHRvIFdlYlBhZ2VDb2NvYS5tbS4g
Q2hhbmdlIGVudW0gdG8KKyAgICAgICAgdHJhY2sgd2hldGhlciBhIGxheW91dCBzaG91bGQgYmUg
cGVyZm9ybWVkLiBLZWVwIHRoZSBjdXJyZW50IGJlaGF2aW9yIG9mIG9ubHkgaW5jbHVkaW5nIHBv
c3QgbGF5b3V0CisgICAgICAgIGRhdGEgaWYgdGhlIGZyYW1lIHZpZXcgZG9lcyBub3QgbmVlZCBh
IGxheW91dC4gVGhpcyBiZWhhdmlvciBpcyBlbmNvZGVkIGluIHRoZSBlbnVtZXJhdG9yIFNob3Vs
ZFBlcmZvcm1MYXlvdXQ6OkRlZmF1bHQuCisgICAgICAgIHdoaWNoIGlzIHRoZSBkZWZhdWx0IGFy
Z3VtZW50IHZhbHVlIGZvciB0aGUgYXJndW1lbnQgc2hvdWxkUGVyZm9ybUxheW91dC4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpwbGF0Zm9ybU5lZWRzTGF5b3V0Rm9yRWRpdG9yU3RhdGUgY29uc3QpOiBBZGRlZC4gTm9u
LUNvY29hIHBvcnQgaW1wbGVtZW50YXRpb24KKyAgICAgICAgdGhhdCByZXR1cm5zIGZhbHNlLgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUGFnZUd0ay5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtRWRpdG9yU3RhdGUgY29uc3QpOiBFYXJseSByZXR1
cm4gaWYgaXNNaXNzaW5nUG9zdExheW91dERhdGEgaXMgdHJ1ZS4KKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OnBsYXRmb3JtTmVlZHNMYXlvdXRGb3JFZGl0b3JTdGF0ZSBjb25zdCk6IEFkZGVkLiBLZWVwIHRo
ZSBjdXJyZW50IGJlaGF2aW9yIG9mCisgICAgICAgIHBlcmZvcm1pbmcgYSBsYXlvdXQgaWYgd2Ug
aGF2ZSBhIGNvbXBvc2l0aW9uIG9yIGEgaGFyZHdhcmUga2V5Ym9hcmQgaXMgYXR0YWNoZWQuCisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtRWRpdG9yU3RhdGUgY29uc3QpOiBDYWxs
IHBsYXRmb3JtRWRpdG9yU3RhdGVDb21tb24oKS4gQmFpbCBvdXQgZWFybHkKKyAgICAgICAgaWYg
aXNNaXNzaW5nUG9zdExheW91dERhdGEgaXMgdHJ1ZS4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQpOiBUaGUgaW1wb3J0YW50IHBhcnQgb2YgdGhp
cyBwYXRjaC4gUmVxdWVzdCBhIGxheW91dAorICAgICAgICB3aGVuIGNvbXB1dGluZyB0aGUgZWRp
dG9yIHN0YXRlIHRoYXQgd2Ugd2lsbCBzZW5kIHRvIHRoZSBVSSBwcm9jZXNzLgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6cGxhdGZvcm1FZGl0b3JTdGF0ZSBjb25zdCk6IENhbGwgcGxhdGZvcm1FZGl0b3JT
dGF0ZUNvbW1vbigpLiBCYWlsIG91dCBlYXJseQorICAgICAgICBpZiBpc01pc3NpbmdQb3N0TGF5
b3V0RGF0YSBpcyB0cnVlLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS93aW4vV2ViUGFn
ZVdpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtRWRpdG9yU3RhdGUg
Y29uc3QpOiBVcGRhdGUgYXMgbmVlZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS93
cGUvV2ViUGFnZVdQRS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtRWRp
dG9yU3RhdGUgY29uc3QpOiBEaXR0by4KKwogMjAxOS0wNy0yNiAgRXJpYyBMaWFuZyAgPGVyaWNs
aWFuZ0BhcHBsZS5jb20+CiAKICAgICAgICAgQVg6IHdlYiBwcm9jZXNzIHNob3VsZCBsb2FkIGNv
cnJlY3QgYnVuZGxlIHBhdGggZm9yIE1BQ0NBVEFMWVNUCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9FZGl0b3JTdGF0ZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRWRpdG9yU3Rh
dGUuaAppbmRleCBlNDljNTNkZGYyNGNkMWU5MjZjMDIyZjlmYWQ1M2I1M2U3YzYwYTFlLi43Y2I0
ZTcwMmNhNmYwMmE1M2QwNWE5M2NkNTdmODQyMTYzNjBjN2RjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9FZGl0b3JTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Vk
aXRvclN0YXRlLmgKQEAgLTc0LDcgKzc0LDcgQEAgc3RydWN0IEVkaXRvclN0YXRlIHsKICAgICBi
b29sIGlzSW5QYXNzd29yZEZpZWxkIHsgZmFsc2UgfTsKICAgICBib29sIGlzSW5QbHVnaW4geyBm
YWxzZSB9OwogICAgIGJvb2wgaGFzQ29tcG9zaXRpb24geyBmYWxzZSB9OwotICAgIGJvb2wgaXNN
aXNzaW5nUG9zdExheW91dERhdGEgeyBmYWxzZSB9OworICAgIGJvb2wgaXNNaXNzaW5nUG9zdExh
eW91dERhdGEgeyB0cnVlIH07CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFdlYkNv
cmU6OkludFJlY3QgZmlyc3RNYXJrZWRSZWN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCmluZGV4IGQxMmI5OGE5NTg0
MDFmMGMzZDlmMmNhYWNjNTViNDBiMmE2MWI3NjQuLmUwMmM0YmE2MDA2M2NkZGJhYjQwNTVkYzU3
Yjc0OTJhOWRkYzFmYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KQEAgLTM0LDEwICszNCwxMyBAQAogI2ltcG9y
dCAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKICNpbXBvcnQgIldlYlBheW1lbnRDb29yZGluYXRv
ci5oIgogI2ltcG9ydCA8V2ViQ29yZS9EaWN0aW9uYXJ5TG9va3VwLmg+CisjaW1wb3J0IDxXZWJD
b3JlL0VkaXRpbmcuaD4KICNpbXBvcnQgPFdlYkNvcmUvRWRpdG9yLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0V2ZW50SGFuZGxlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9Gb2N1c0NvbnRyb2xsZXIuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvSFRNTENvbnZlcnRlci5oPgorI2ltcG9ydCA8V2ViQ29yZS9IVE1M
T0xpc3RFbGVtZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0hUTUxVTGlzdEVsZW1lbnQuaD4KICNp
bXBvcnQgPFdlYkNvcmUvSGl0VGVzdFJlc3VsdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Ob2RlUmVu
ZGVyU3R5bGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGF5bWVudENvb3JkaW5hdG9yLmg+CkBAIC0y
MjcsNyArMjMwLDcyIEBAIHZvaWQgV2ViUGFnZTo6dXBkYXRlTW9ja0FjY2Vzc2liaWxpdHlFbGVt
ZW50QWZ0ZXJDb21taXR0aW5nTG9hZCgpCiAgICAgYXV0byogZG9jdW1lbnQgPSBtYWluRnJhbWUo
KS0+ZG9jdW1lbnQoKTsKICAgICBbbV9tb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQgc2V0SGFzTWFp
bkZyYW1lUGx1Z2luOmRvY3VtZW50ID8gZG9jdW1lbnQtPmlzUGx1Z2luRG9jdW1lbnQoKSA6IGZh
bHNlXTsKIH0KLSAgICAKKwordm9pZCBXZWJQYWdlOjpwbGF0Zm9ybUVkaXRvclN0YXRlQ29tbW9u
KGNvbnN0IEZyYW1lJiBmcmFtZSwgRWRpdG9yU3RhdGUmIHJlc3VsdCkgY29uc3QKK3sKKyAgICBp
ZiAocmVzdWx0LmlzTWlzc2luZ1Bvc3RMYXlvdXREYXRhKQorICAgICAgICByZXR1cm47CisKKyAg
ICBjb25zdCBhdXRvJiBzZWxlY3Rpb24gPSBmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKTsK
KworICAgIGlmICghcmVzdWx0LmlzQ29udGVudEVkaXRhYmxlIHx8IHNlbGVjdGlvbi5pc05vbmUo
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byYgcG9zdExheW91dERhdGEgPSByZXN1bHQu
cG9zdExheW91dERhdGEoKTsKKyAgICBpZiAoYXV0byBlZGl0aW5nU3R5bGUgPSBFZGl0aW5nU3R5
bGU6OnN0eWxlQXRTZWxlY3Rpb25TdGFydChzZWxlY3Rpb24pKSB7CisgICAgICAgIGlmIChlZGl0
aW5nU3R5bGUtPmhhc1N0eWxlKENTU1Byb3BlcnR5Rm9udFdlaWdodCwgImJvbGQiX3MpKQorICAg
ICAgICAgICAgcG9zdExheW91dERhdGEudHlwaW5nQXR0cmlidXRlcyB8PSBBdHRyaWJ1dGVCb2xk
OworCisgICAgICAgIGlmIChlZGl0aW5nU3R5bGUtPmhhc1N0eWxlKENTU1Byb3BlcnR5Rm9udFN0
eWxlLCAiaXRhbGljIl9zKSB8fCBlZGl0aW5nU3R5bGUtPmhhc1N0eWxlKENTU1Byb3BlcnR5Rm9u
dFN0eWxlLCAib2JsaXF1ZSJfcykpCisgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS50eXBpbmdB
dHRyaWJ1dGVzIHw9IEF0dHJpYnV0ZUl0YWxpY3M7CisKKyAgICAgICAgaWYgKGVkaXRpbmdTdHls
ZS0+aGFzU3R5bGUoQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCwgInVu
ZGVybGluZSJfcykpCisgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS50eXBpbmdBdHRyaWJ1dGVz
IHw9IEF0dHJpYnV0ZVVuZGVybGluZTsKKworICAgICAgICBpZiAoYXV0byogc3R5bGVQcm9wZXJ0
aWVzID0gZWRpdGluZ1N0eWxlLT5zdHlsZSgpKSB7CisgICAgICAgICAgICBib29sIGlzTGVmdFRv
UmlnaHQgPSBzdHlsZVByb3BlcnRpZXMtPnByb3BlcnR5QXNWYWx1ZUlEKENTU1Byb3BlcnR5RGly
ZWN0aW9uKSA9PSBDU1NWYWx1ZUx0cjsKKyAgICAgICAgICAgIHN3aXRjaCAoc3R5bGVQcm9wZXJ0
aWVzLT5wcm9wZXJ0eUFzVmFsdWVJRChDU1NQcm9wZXJ0eVRleHRBbGlnbikpIHsKKyAgICAgICAg
ICAgIGNhc2UgQ1NTVmFsdWVSaWdodDoKKyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVXZWJraXRS
aWdodDoKKyAgICAgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS50ZXh0QWxpZ25tZW50ID0gUmln
aHRBbGlnbm1lbnQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENT
U1ZhbHVlTGVmdDoKKyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVXZWJraXRMZWZ0OgorICAgICAg
ICAgICAgICAgIHBvc3RMYXlvdXREYXRhLnRleHRBbGlnbm1lbnQgPSBMZWZ0QWxpZ25tZW50Owor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUNlbnRlcjoK
KyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVXZWJraXRDZW50ZXI6CisgICAgICAgICAgICAgICAg
cG9zdExheW91dERhdGEudGV4dEFsaWdubWVudCA9IENlbnRlckFsaWdubWVudDsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVKdXN0aWZ5OgorICAgICAg
ICAgICAgICAgIHBvc3RMYXlvdXREYXRhLnRleHRBbGlnbm1lbnQgPSBKdXN0aWZpZWRBbGlnbm1l
bnQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlU3Rh
cnQ6CisgICAgICAgICAgICAgICAgcG9zdExheW91dERhdGEudGV4dEFsaWdubWVudCA9IGlzTGVm
dFRvUmlnaHQgPyBMZWZ0QWxpZ25tZW50IDogUmlnaHRBbGlnbm1lbnQ7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlRW5kOgorICAgICAgICAgICAgICAg
IHBvc3RMYXlvdXREYXRhLnRleHRBbGlnbm1lbnQgPSBpc0xlZnRUb1JpZ2h0ID8gUmlnaHRBbGln
bm1lbnQgOiBMZWZ0QWxpZ25tZW50OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGlmIChhdXRvIHRleHRDb2xvciA9IHN0eWxlUHJvcGVydGllcy0+cHJvcGVydHlBc0Nv
bG9yKENTU1Byb3BlcnR5Q29sb3IpKQorICAgICAgICAgICAgICAgIHBvc3RMYXlvdXREYXRhLnRl
eHRDb2xvciA9ICp0ZXh0Q29sb3I7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoYXV0byog
ZW5jbG9zaW5nTGlzdEVsZW1lbnQgPSBlbmNsb3NpbmdMaXN0KHNlbGVjdGlvbi5zdGFydCgpLmNv
bnRhaW5lck5vZGUoKSkpIHsKKyAgICAgICAgaWYgKGlzPEhUTUxVTGlzdEVsZW1lbnQ+KCplbmNs
b3NpbmdMaXN0RWxlbWVudCkpCisgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS5lbmNsb3NpbmdM
aXN0VHlwZSA9IFVub3JkZXJlZExpc3Q7CisgICAgICAgIGVsc2UgaWYgKGlzPEhUTUxPTGlzdEVs
ZW1lbnQ+KCplbmNsb3NpbmdMaXN0RWxlbWVudCkpCisgICAgICAgICAgICBwb3N0TGF5b3V0RGF0
YS5lbmNsb3NpbmdMaXN0VHlwZSA9IE9yZGVyZWRMaXN0OworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisKKyAgICBwb3N0TGF5b3V0RGF0YS5i
YXNlV3JpdGluZ0RpcmVjdGlvbiA9IGZyYW1lLmVkaXRvcigpLmJhc2VXcml0aW5nRGlyZWN0aW9u
Rm9yU2VsZWN0aW9uU3RhcnQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRp
ZiAvLyBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAKaW5kZXggODAwNjdjZTljNTQxYmQyNDUwMDVhZTE5MTU5ZDk1ZDc3NmQ4MmRi
MC4uNmY2YmEyYWVhYjViNmU3YjYxNzA3ZjczMzBjNWE1NjM1ZjZjMDNkOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTE3MiwxMyArMTcyLDEx
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9IVE1MSW5wdXRFbGVtZW50Lmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9IVE1MTWVudUVsZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hUTUxNZW51SXRlbUVs
ZW1lbnQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0hUTUxPTGlzdEVsZW1lbnQuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0hUTUxQbHVnSW5FbGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IVE1MUGx1
Z0luSW1hZ2VFbGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IVE1MU2VsZWN0RWxlbWVudC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvSFRNTFRleHRBcmVhRWxlbWVudC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0hU
TUxVTGlzdEVsZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hpc3RvcnlDb250cm9sbGVyLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9IaXN0b3J5SXRlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSGl0
VGVzdFJlc3VsdC5oPgpAQCAtMTAxMSw5ICsxMDA5LDEwIEBAIFdlYkNvcmU6OldlYkdMTG9hZFBv
bGljeSBXZWJQYWdlOjpyZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwoV2ViRnJhbWUqLCBjb25zdCBV
UkwmCiB9CiAjZW5kaWYKIAotRWRpdG9yU3RhdGUgV2ViUGFnZTo6ZWRpdG9yU3RhdGUoSW5jbHVk
ZVBvc3RMYXlvdXREYXRhSGludCBzaG91bGRJbmNsdWRlUG9zdExheW91dERhdGEpIGNvbnN0CitF
ZGl0b3JTdGF0ZSBXZWJQYWdlOjplZGl0b3JTdGF0ZShTaG91bGRQZXJmb3JtTGF5b3V0IHNob3Vs
ZFBlcmZvcm1MYXlvdXQpIGNvbnN0CiB7Ci0gICAgRnJhbWUmIGZyYW1lID0gbV9wYWdlLT5mb2N1
c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKKyAgICAvLyBSZWYgdGhlIGZyYW1l
IGJlY2F1c2UgdGhpcyBmdW5jdGlvbiBtYXkgcGVyZm9ybSBsYXlvdXQsIHdoaWNoIG1heSBjYXVz
ZSBmcmFtZSBkZXN0cnVjdGlvbi4KKyAgICBSZWY8RnJhbWU+IGZyYW1lID0gbV9wYWdlLT5mb2N1
c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKIAogICAgIEVkaXRvclN0YXRlIHJl
c3VsdDsKIApAQCAtMTAyNiw4ICsxMDI1LDggQEAgRWRpdG9yU3RhdGUgV2ViUGFnZTo6ZWRpdG9y
U3RhdGUoSW5jbHVkZVBvc3RMYXlvdXREYXRhSGludCBzaG91bGRJbmNsdWRlUG9zdExheW8KICAg
ICAgICAgfQogICAgIH0KIAotICAgIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbiA9
IGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpOwotICAgIGNvbnN0IEVkaXRvciYgZWRpdG9y
ID0gZnJhbWUuZWRpdG9yKCk7CisgICAgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9u
ID0gZnJhbWUtPnNlbGVjdGlvbigpLnNlbGVjdGlvbigpOworICAgIGNvbnN0IEVkaXRvciYgZWRp
dG9yID0gZnJhbWUtPmVkaXRvcigpOwogCiAgICAgcmVzdWx0LnNlbGVjdGlvbklzTm9uZSA9IHNl
bGVjdGlvbi5pc05vbmUoKTsKICAgICByZXN1bHQuc2VsZWN0aW9uSXNSYW5nZSA9IHNlbGVjdGlv
bi5pc1JhbmdlKCk7CkBAIC0xMDM3LDExICsxMDM2LDE1IEBAIEVkaXRvclN0YXRlIFdlYlBhZ2U6
OmVkaXRvclN0YXRlKEluY2x1ZGVQb3N0TGF5b3V0RGF0YUhpbnQgc2hvdWxkSW5jbHVkZVBvc3RM
YXlvCiAgICAgcmVzdWx0Lmhhc0NvbXBvc2l0aW9uID0gZWRpdG9yLmhhc0NvbXBvc2l0aW9uKCk7
CiAgICAgcmVzdWx0LnNob3VsZElnbm9yZVNlbGVjdGlvbkNoYW5nZXMgPSBlZGl0b3IuaWdub3Jl
U2VsZWN0aW9uQ2hhbmdlcygpOwogCi0gICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gZnJhbWUuZG9j
dW1lbnQoKSkKLSAgICAgICAgcmVzdWx0Lm9yaWdpbklkZW50aWZpZXJGb3JQYXN0ZWJvYXJkID0g
ZG9jdW1lbnQtPm9yaWdpbklkZW50aWZpZXJGb3JQYXN0ZWJvYXJkKCk7CisgICAgYXV0byYgZG9j
dW1lbnQgPSAqZnJhbWUtPmRvY3VtZW50KCk7CisgICAgcmVzdWx0Lm9yaWdpbklkZW50aWZpZXJG
b3JQYXN0ZWJvYXJkID0gZG9jdW1lbnQub3JpZ2luSWRlbnRpZmllckZvclBhc3RlYm9hcmQoKTsK
KworICAgIGlmIChzaG91bGRQZXJmb3JtTGF5b3V0ID09IFNob3VsZFBlcmZvcm1MYXlvdXQ6Olll
cyB8fCBwbGF0Zm9ybU5lZWRzTGF5b3V0Rm9yRWRpdG9yU3RhdGUoZnJhbWUpKQorICAgICAgICBk
b2N1bWVudC51cGRhdGVMYXlvdXQoKTsgLy8gTWF5IGNhdXNlIGZyYW1lIGRlc3RydWN0aW9uCisK
KyAgICBpZiAoYXV0byogZnJhbWVWaWV3ID0gZG9jdW1lbnQudmlldygpOyBmcmFtZVZpZXcgJiYg
IWZyYW1lVmlldy0+bmVlZHNMYXlvdXQoKSkgeworICAgICAgICByZXN1bHQuaXNNaXNzaW5nUG9z
dExheW91dERhdGEgPSBmYWxzZTsKIAotICAgIGJvb2wgY2FuSW5jbHVkZVBvc3RMYXlvdXREYXRh
ID0gZnJhbWUudmlldygpICYmICFmcmFtZS52aWV3KCktPm5lZWRzTGF5b3V0KCk7Ci0gICAgaWYg
KHNob3VsZEluY2x1ZGVQb3N0TGF5b3V0RGF0YSA9PSBJbmNsdWRlUG9zdExheW91dERhdGFIaW50
OjpZZXMgJiYgY2FuSW5jbHVkZVBvc3RMYXlvdXREYXRhKSB7CiAgICAgICAgIGF1dG8mIHBvc3RM
YXlvdXREYXRhID0gcmVzdWx0LnBvc3RMYXlvdXREYXRhKCk7CiAgICAgICAgIHBvc3RMYXlvdXRE
YXRhLmNhbkN1dCA9IGVkaXRvci5jYW5DdXQoKTsKICAgICAgICAgcG9zdExheW91dERhdGEuY2Fu
Q29weSA9IGVkaXRvci5jYW5Db3B5KCk7CkBAIC0xMDQ5LDY2ICsxMDUyLDkgQEAgRWRpdG9yU3Rh
dGUgV2ViUGFnZTo6ZWRpdG9yU3RhdGUoSW5jbHVkZVBvc3RMYXlvdXREYXRhSGludCBzaG91bGRJ
bmNsdWRlUG9zdExheW8KIAogICAgICAgICBpZiAobV9uZWVkc0ZvbnRBdHRyaWJ1dGVzKQogICAg
ICAgICAgICAgcG9zdExheW91dERhdGEuZm9udEF0dHJpYnV0ZXMgPSBlZGl0b3IuZm9udEF0dHJp
YnV0ZXNBdFNlbGVjdGlvblN0YXJ0KCk7Ci0KLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICAgICAg
aWYgKHJlc3VsdC5pc0NvbnRlbnRFZGl0YWJsZSAmJiAhc2VsZWN0aW9uLmlzTm9uZSgpKSB7Ci0g
ICAgICAgICAgICBpZiAoYXV0byBlZGl0aW5nU3R5bGUgPSBFZGl0aW5nU3R5bGU6OnN0eWxlQXRT
ZWxlY3Rpb25TdGFydChzZWxlY3Rpb24pKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGVkaXRpbmdT
dHlsZS0+aGFzU3R5bGUoQ1NTUHJvcGVydHlGb250V2VpZ2h0LCAiYm9sZCIpKQotICAgICAgICAg
ICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS50eXBpbmdBdHRyaWJ1dGVzIHw9IEF0dHJpYnV0ZUJv
bGQ7Ci0KLSAgICAgICAgICAgICAgICBpZiAoZWRpdGluZ1N0eWxlLT5oYXNTdHlsZShDU1NQcm9w
ZXJ0eUZvbnRTdHlsZSwgIml0YWxpYyIpIHx8IGVkaXRpbmdTdHlsZS0+aGFzU3R5bGUoQ1NTUHJv
cGVydHlGb250U3R5bGUsICJvYmxpcXVlIikpCi0gICAgICAgICAgICAgICAgICAgIHBvc3RMYXlv
dXREYXRhLnR5cGluZ0F0dHJpYnV0ZXMgfD0gQXR0cmlidXRlSXRhbGljczsKLQotICAgICAgICAg
ICAgICAgIGlmIChlZGl0aW5nU3R5bGUtPmhhc1N0eWxlKENTU1Byb3BlcnR5V2Via2l0VGV4dERl
Y29yYXRpb25zSW5FZmZlY3QsICJ1bmRlcmxpbmUiKSkKLSAgICAgICAgICAgICAgICAgICAgcG9z
dExheW91dERhdGEudHlwaW5nQXR0cmlidXRlcyB8PSBBdHRyaWJ1dGVVbmRlcmxpbmU7Ci0KLSAg
ICAgICAgICAgICAgICBpZiAoYXV0byogc3R5bGVQcm9wZXJ0aWVzID0gZWRpdGluZ1N0eWxlLT5z
dHlsZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGJvb2wgaXNMZWZ0VG9SaWdodCA9IHN0eWxl
UHJvcGVydGllcy0+cHJvcGVydHlBc1ZhbHVlSUQoQ1NTUHJvcGVydHlEaXJlY3Rpb24pID09IENT
U1ZhbHVlTHRyOwotICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHN0eWxlUHJvcGVydGllcy0+
cHJvcGVydHlBc1ZhbHVlSUQoQ1NTUHJvcGVydHlUZXh0QWxpZ24pKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGNhc2UgQ1NTVmFsdWVSaWdodDoKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBDU1NW
YWx1ZVdlYmtpdFJpZ2h0OgotICAgICAgICAgICAgICAgICAgICAgICAgcG9zdExheW91dERhdGEu
dGV4dEFsaWdubWVudCA9IFJpZ2h0QWxpZ25tZW50OwotICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVMZWZ0OgotICAgICAgICAg
ICAgICAgICAgICBjYXNlIENTU1ZhbHVlV2Via2l0TGVmdDoKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHBvc3RMYXlvdXREYXRhLnRleHRBbGlnbm1lbnQgPSBMZWZ0QWxpZ25tZW50OwotICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFs
dWVDZW50ZXI6Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVXZWJraXRDZW50ZXI6
Ci0gICAgICAgICAgICAgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS50ZXh0QWxpZ25tZW50ID0g
Q2VudGVyQWxpZ25tZW50OwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVKdXN0aWZ5OgotICAgICAgICAgICAgICAgICAgICAg
ICAgcG9zdExheW91dERhdGEudGV4dEFsaWdubWVudCA9IEp1c3RpZmllZEFsaWdubWVudDsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIENT
U1ZhbHVlU3RhcnQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS50ZXh0
QWxpZ25tZW50ID0gaXNMZWZ0VG9SaWdodCA/IExlZnRBbGlnbm1lbnQgOiBSaWdodEFsaWdubWVu
dDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBj
YXNlIENTU1ZhbHVlRW5kOgotICAgICAgICAgICAgICAgICAgICAgICAgcG9zdExheW91dERhdGEu
dGV4dEFsaWdubWVudCA9IGlzTGVmdFRvUmlnaHQgPyBSaWdodEFsaWdubWVudCA6IExlZnRBbGln
bm1lbnQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAg
ICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGlmIChhdXRvIHRleHRDb2xvciA9IHN0eWxl
UHJvcGVydGllcy0+cHJvcGVydHlBc0NvbG9yKENTU1Byb3BlcnR5Q29sb3IpKQotICAgICAgICAg
ICAgICAgICAgICAgICAgcG9zdExheW91dERhdGEudGV4dENvbG9yID0gKnRleHRDb2xvcjsKLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChhdXRvKiBl
bmNsb3NpbmdMaXN0RWxlbWVudCA9IGVuY2xvc2luZ0xpc3Qoc2VsZWN0aW9uLnN0YXJ0KCkuY29u
dGFpbmVyTm9kZSgpKSkgewotICAgICAgICAgICAgICAgIGlmIChpczxIVE1MVUxpc3RFbGVtZW50
PigqZW5jbG9zaW5nTGlzdEVsZW1lbnQpKQotICAgICAgICAgICAgICAgICAgICBwb3N0TGF5b3V0
RGF0YS5lbmNsb3NpbmdMaXN0VHlwZSA9IFVub3JkZXJlZExpc3Q7Ci0gICAgICAgICAgICAgICAg
ZWxzZSBpZiAoaXM8SFRNTE9MaXN0RWxlbWVudD4oKmVuY2xvc2luZ0xpc3RFbGVtZW50KSkKLSAg
ICAgICAgICAgICAgICAgICAgcG9zdExheW91dERhdGEuZW5jbG9zaW5nTGlzdFR5cGUgPSBPcmRl
cmVkTGlzdDsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBwb3N0TGF5b3V0
RGF0YS5iYXNlV3JpdGluZ0RpcmVjdGlvbiA9IGVkaXRvci5iYXNlV3JpdGluZ0RpcmVjdGlvbkZv
clNlbGVjdGlvblN0YXJ0KCk7Ci0gICAgICAgIH0KLSNlbmRpZgogICAgIH0KIAotICAgIHBsYXRm
b3JtRWRpdG9yU3RhdGUoZnJhbWUsIHJlc3VsdCwgc2hvdWxkSW5jbHVkZVBvc3RMYXlvdXREYXRh
KTsKKyAgICBwbGF0Zm9ybUVkaXRvclN0YXRlKGZyYW1lLCByZXN1bHQpOwogCiAgICAgbV9sYXN0
RWRpdG9yU3RhdGVXYXNDb250ZW50RWRpdGFibGUgPSByZXN1bHQuaXNDb250ZW50RWRpdGFibGUg
PyBFZGl0b3JTdGF0ZUlzQ29udGVudEVkaXRhYmxlOjpZZXMgOiBFZGl0b3JTdGF0ZUlzQ29udGVu
dEVkaXRhYmxlOjpObzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oCmluZGV4IGM1YmM4Y2M5YTQ0MzI0OGExNGYxZmUzYWYxYWZhNTAxNDk5NjlhNWEuLmVkNzRi
ZjBiZjRkYjdlZWQ0MzllNWIwNGU2YjFmMDliY2FjOTJjMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTQ1NCw4ICs0NTQsOCBAQCBwdWJsaWM6CiAg
ICAgV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5IHJlc29sdmVXZWJHTFBvbGljeUZvclVSTChXZWJG
cmFtZSosIGNvbnN0IFVSTCYpOwogI2VuZGlmCiAgICAgCi0gICAgZW51bSBjbGFzcyBJbmNsdWRl
UG9zdExheW91dERhdGFIaW50IHsgTm8sIFllcyB9OwotICAgIEVkaXRvclN0YXRlIGVkaXRvclN0
YXRlKEluY2x1ZGVQb3N0TGF5b3V0RGF0YUhpbnQgPSBJbmNsdWRlUG9zdExheW91dERhdGFIaW50
OjpZZXMpIGNvbnN0OworICAgIGVudW0gY2xhc3MgU2hvdWxkUGVyZm9ybUxheW91dCB7IERlZmF1
bHQsIFllcyB9OworICAgIEVkaXRvclN0YXRlIGVkaXRvclN0YXRlKFNob3VsZFBlcmZvcm1MYXlv
dXQgPSBTaG91bGRQZXJmb3JtTGF5b3V0OjpEZWZhdWx0KSBjb25zdDsKICAgICB2b2lkIHVwZGF0
ZUVkaXRvclN0YXRlQWZ0ZXJMYXlvdXRJZkVkaXRhYmlsaXR5Q2hhbmdlZCgpOwogCiAgICAgLy8g
b3B0aW9ucyBhcmUgUmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb25CZWhhdmlvciB2YWx1
ZXMuCkBAIC0xMjI1LDcgKzEyMjUsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1Jbml0
aWFsaXplKCk7CiAgICAgdm9pZCBwbGF0Zm9ybVJlaW5pdGlhbGl6ZSgpOwogICAgIHZvaWQgcGxh
dGZvcm1EZXRhY2goKTsKLSAgICB2b2lkIHBsYXRmb3JtRWRpdG9yU3RhdGUoV2ViQ29yZTo6RnJh
bWUmLCBFZGl0b3JTdGF0ZSYgcmVzdWx0LCBJbmNsdWRlUG9zdExheW91dERhdGFIaW50KSBjb25z
dDsKKyAgICB2b2lkIHBsYXRmb3JtRWRpdG9yU3RhdGUoV2ViQ29yZTo6RnJhbWUmLCBFZGl0b3JT
dGF0ZSYpIGNvbnN0OworICAgIGJvb2wgcGxhdGZvcm1OZWVkc0xheW91dEZvckVkaXRvclN0YXRl
KGNvbnN0IFdlYkNvcmU6OkZyYW1lJikgY29uc3Q7CiAgICAgdm9pZCBwbGF0Zm9ybVdpbGxQZXJm
b3JtRWRpdGluZ0NvbW1hbmQoKTsKICAgICB2b2lkIHNlbmRFZGl0b3JTdGF0ZVVwZGF0ZSgpOwog
CkBAIC0xMjM0LDYgKzEyMzUsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgc2VuZFRvdWNoQmFyTWVu
dURhdGFSZW1vdmVkVXBkYXRlKFdlYkNvcmU6OkhUTUxNZW51RWxlbWVudCYpOwogICAgIHZvaWQg
c2VuZFRvdWNoQmFyTWVudUl0ZW1EYXRhQWRkZWRVcGRhdGUoV2ViQ29yZTo6SFRNTE1lbnVJdGVt
RWxlbWVudCYpOwogICAgIHZvaWQgc2VuZFRvdWNoQmFyTWVudUl0ZW1EYXRhUmVtb3ZlZFVwZGF0
ZShXZWJDb3JlOjpIVE1MTWVudUl0ZW1FbGVtZW50Jik7CisKKyAgICB2b2lkIHBsYXRmb3JtRWRp
dG9yU3RhdGVDb21tb24oY29uc3QgV2ViQ29yZTo6RnJhbWUmLCBFZGl0b3JTdGF0ZSYpIGNvbnN0
OwogI2VuZGlmCiAKICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jV2ViUGFnZU1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4m
KTsKQEAgLTE5MTEsNyArMTkxNCw2IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1fbWFpbkZyYW1l
UHJvZ3Jlc3NDb21wbGV0ZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9zaG91bGREaXNwYXRjaEZh
a2VNb3VzZU1vdmVFdmVudHMgeyB0cnVlIH07Ci0gICAgYm9vbCBtX2lzRWRpdG9yU3RhdGVNaXNz
aW5nUG9zdExheW91dERhdGEgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc1NlbGVjdGluZ1RleHRX
aGlsZUluc2VydGluZ0FzeW5jaHJvbm91c2x5IHsgZmFsc2UgfTsKIAogICAgIGVudW0gY2xhc3Mg
RWRpdG9yU3RhdGVJc0NvbnRlbnRFZGl0YWJsZSB7IE5vLCBZZXMsIFVuc2V0IH07CkBAIC0xOTY5
LDYgKzE5NzEsNyBAQCBwcml2YXRlOgogCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiBpbmxp
bmUgdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybVdpbGxQZXJmb3JtRWRpdGluZ0NvbW1hbmQoKSB7IH0K
K2lubGluZSBib29sIFdlYlBhZ2U6OnBsYXRmb3JtTmVlZHNMYXlvdXRGb3JFZGl0b3JTdGF0ZShj
b25zdCBXZWJDb3JlOjpGcmFtZSYpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAjZW5kaWYKIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9ndGsvV2ViUGFnZUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9ndGsvV2ViUGFnZUd0ay5jcHAKaW5kZXggYzk4MmQwYjc2MjFlYzMwYmFiNDdkZWEy
ODc2ZTk3NjAwYWRiMzg4MS4uMWUwOGE3N2M3MWY1OTA4MmQyYWRhOGZlYjYxZWVmYjhhNzNkNThl
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlBh
Z2VHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQ
YWdlR3RrLmNwcApAQCAtNzYsMTIgKzc2LDEwIEBAIHZvaWQgV2ViUGFnZTo6cGxhdGZvcm1EZXRh
Y2goKQogewogfQogCi12b2lkIFdlYlBhZ2U6OnBsYXRmb3JtRWRpdG9yU3RhdGUoRnJhbWUmIGZy
YW1lLCBFZGl0b3JTdGF0ZSYgcmVzdWx0LCBJbmNsdWRlUG9zdExheW91dERhdGFIaW50IHNob3Vs
ZEluY2x1ZGVQb3N0TGF5b3V0RGF0YSkgY29uc3QKK3ZvaWQgV2ViUGFnZTo6cGxhdGZvcm1FZGl0
b3JTdGF0ZShGcmFtZSYgZnJhbWUsIEVkaXRvclN0YXRlJiByZXN1bHQpIGNvbnN0CiB7Ci0gICAg
aWYgKHNob3VsZEluY2x1ZGVQb3N0TGF5b3V0RGF0YSA9PSBJbmNsdWRlUG9zdExheW91dERhdGFI
aW50OjpObyB8fCAhZnJhbWUudmlldygpIHx8IGZyYW1lLnZpZXcoKS0+bmVlZHNMYXlvdXQoKSkg
ewotICAgICAgICByZXN1bHQuaXNNaXNzaW5nUG9zdExheW91dERhdGEgPSB0cnVlOworICAgIGlm
IChyZXN1bHQuaXNNaXNzaW5nUG9zdExheW91dERhdGEpCiAgICAgICAgIHJldHVybjsKLSAgICB9
CiAKICAgICBhdXRvJiBwb3N0TGF5b3V0RGF0YSA9IHJlc3VsdC5wb3N0TGF5b3V0RGF0YSgpOwog
ICAgIHBvc3RMYXlvdXREYXRhLmNhcmV0UmVjdEF0U3RhcnQgPSBmcmFtZS5zZWxlY3Rpb24oKS5h
YnNvbHV0ZUNhcmV0Qm91bmRzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IDIzMjI0MzI2NDE3NzEwNDk3OTUyYjk2YjY2
ZjQwNGU1NmQ2NTFkZjUuLmVlZjI0YzM3NGRlZjA0Mzg1OGQyODU0YmI0ODk5NTdmN2E4MzBhYWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdl
SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdl
SU9TLm1tCkBAIC0xOTYsOCArMTk2LDIxIEBAIGJvb2wgV2ViUGFnZTo6aXNUcmFuc3BhcmVudE9y
RnVsbHlDbGlwcGVkKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpIGNvbnN0CiAgICAgcmV0dXJuIGVu
Y2xvc2luZ0xheWVyICYmIGVuY2xvc2luZ0xheWVyLT5pc1RyYW5zcGFyZW50T3JGdWxseUNsaXBw
ZWRSZXNwZWN0aW5nUGFyZW50RnJhbWVzKCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6cGxhdGZvcm1F
ZGl0b3JTdGF0ZShGcmFtZSYgZnJhbWUsIEVkaXRvclN0YXRlJiByZXN1bHQsIEluY2x1ZGVQb3N0
TGF5b3V0RGF0YUhpbnQgc2hvdWxkSW5jbHVkZVBvc3RMYXlvdXREYXRhKSBjb25zdAorYm9vbCBX
ZWJQYWdlOjpwbGF0Zm9ybU5lZWRzTGF5b3V0Rm9yRWRpdG9yU3RhdGUoY29uc3QgRnJhbWUmIGZy
YW1lKSBjb25zdAogeworICAgIC8vIElmIHdlIGhhdmUgYSBjb21wb3NpdGlvbiBvciBhcmUgdXNp
bmcgYSBoYXJkd2FyZSBrZXlib2FyZCB0aGVuIHdlIG5lZWQgdG8gc2VuZCB0aGUgZnVsbAorICAg
IC8vIGVkaXRvciBzbyB0aGF0IHRoZSBVSVByb2Nlc3MgY2FuIHVwZGF0ZSBVSSwgaW5jbHVkaW5n
IHRoZSBwb3NpdGlvbiBvZiB0aGUgY2FyZXQuCisgICAgYm9vbCBuZWVkc0xheW91dCA9IGZyYW1l
LmVkaXRvcigpLmhhc0NvbXBvc2l0aW9uKCk7CisjaWYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQor
ICAgIG5lZWRzTGF5b3V0IHw9IG1fa2V5Ym9hcmRJc0F0dGFjaGVkOworI2VuZGlmCisgICAgcmV0
dXJuIG5lZWRzTGF5b3V0OworfQorCit2b2lkIFdlYlBhZ2U6OnBsYXRmb3JtRWRpdG9yU3RhdGUo
RnJhbWUmIGZyYW1lLCBFZGl0b3JTdGF0ZSYgcmVzdWx0KSBjb25zdAoreworICAgIHBsYXRmb3Jt
RWRpdG9yU3RhdGVDb21tb24oZnJhbWUsIHJlc3VsdCk7CisKICAgICBGcmFtZVZpZXcqIHZpZXcg
PSBmcmFtZS52aWV3KCk7CiAgICAgaWYgKGZyYW1lLmVkaXRvcigpLmhhc0NvbXBvc2l0aW9uKCkp
IHsKICAgICAgICAgUmVmUHRyPFJhbmdlPiBjb21wb3NpdGlvblJhbmdlID0gZnJhbWUuZWRpdG9y
KCkuY29tcG9zaXRpb25SYW5nZSgpOwpAQCAtMjE0LDIzICsyMjcsMTEgQEAgdm9pZCBXZWJQYWdl
OjpwbGF0Zm9ybUVkaXRvclN0YXRlKEZyYW1lJiBmcmFtZSwgRWRpdG9yU3RhdGUmIHJlc3VsdCwg
SW5jbHVkZVBvc3QKICAgICAgICAgfQogICAgIH0KIAotICAgIC8vIFdlIG9ubHkgc2V0IHRoZSBy
ZW1haW5pbmcgRWRpdG9yU3RhdGUgZW50cmllcyBpZiBsYXlvdXQgaXMgZG9uZSBhcyBhIHBlcmZv
cm1hbmNlIG9wdGltaXphdGlvbgotICAgIC8vIHRvIGF2b2lkIHRoZSBuZWVkIHRvIGZvcmNlIGEg
c3luY2hyb25vdXMgbGF5b3V0IGhlcmUgdG8gY29tcHV0ZSB0aGVzZSBlbnRyaWVzLiBJZiB3ZQot
ICAgIC8vIGhhdmUgYSBjb21wb3NpdGlvbiBvciBhcmUgdXNpbmcgYSBoYXJkd2FyZSBrZXlib2Fy
ZCB0aGVuIHdlIHNlbmQgdGhlIGZ1bGwgZWRpdG9yIHN0YXRlCi0gICAgLy8gaW1tZWRpYXRlbHkg
c28gdGhhdCB0aGUgVUlQcm9jZXNzIGNhbiB1cGRhdGUgVUksIGluY2x1ZGluZyB0aGUgcG9zaXRp
b24gb2YgdGhlIGNhcmV0LgotICAgIGJvb2wgbmVlZHNMYXlvdXQgPSAhZnJhbWUudmlldygpIHx8
IGZyYW1lLnZpZXcoKS0+bmVlZHNMYXlvdXQoKTsKLSAgICBib29sIHJlcXVpcmVzUG9zdExheW91
dERhdGEgPSBmcmFtZS5lZGl0b3IoKS5oYXNDb21wb3NpdGlvbigpOwotI2lmICFQTEFURk9STShN
QUNDQVRBTFlTVCkKLSAgICByZXF1aXJlc1Bvc3RMYXlvdXREYXRhIHw9IG1fa2V5Ym9hcmRJc0F0
dGFjaGVkOwotI2VuZGlmCi0gICAgaWYgKChzaG91bGRJbmNsdWRlUG9zdExheW91dERhdGEgPT0g
SW5jbHVkZVBvc3RMYXlvdXREYXRhSGludDo6Tm8gfHwgbmVlZHNMYXlvdXQpICYmICFyZXF1aXJl
c1Bvc3RMYXlvdXREYXRhKSB7Ci0gICAgICAgIHJlc3VsdC5pc01pc3NpbmdQb3N0TGF5b3V0RGF0
YSA9IHRydWU7CisgICAgaWYgKHJlc3VsdC5pc01pc3NpbmdQb3N0TGF5b3V0RGF0YSkKICAgICAg
ICAgcmV0dXJuOwotICAgIH0KIAogICAgIGF1dG8mIHBvc3RMYXlvdXREYXRhID0gcmVzdWx0LnBv
c3RMYXlvdXREYXRhKCk7Ci0gICAgCi0gICAgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0
aW9uID0gZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7CisgICAgY29uc3QgYXV0byYgc2Vs
ZWN0aW9uID0gZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7CiAgICAgcG9zdExheW91dERh
dGEuaXNTdGFibGVTdGF0ZVVwZGF0ZSA9IG1faXNJblN0YWJsZVN0YXRlOwogICAgIGJvb2wgc3Rh
cnROb2RlSXNJbnNpZGVGaXhlZFBvc2l0aW9uID0gZmFsc2U7CiAgICAgYm9vbCBlbmROb2RlSXNJ
bnNpZGVGaXhlZFBvc2l0aW9uID0gZmFsc2U7CkBAIC00NDQsNyArNDQ1LDcgQEAgYm9vbCBXZWJQ
YWdlOjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50JiBldmVudCkKIAog
ICAgIC8vIEZJWE1FOiBJbnRlcnByZXQgdGhlIGV2ZW50IGltbWVkaWF0ZWx5IHVwb24gcmVjZWl2
aW5nIGl0IGluIFVJIHByb2Nlc3MsIHdpdGhvdXQgc2VuZGluZyB0byBXZWJQcm9jZXNzIGZpcnN0
LgogICAgIGJvb2wgZXZlbnRXYXNIYW5kbGVkID0gZmFsc2U7Ci0gICAgYm9vbCBzZW5kUmVzdWx0
ID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2Vu
ZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6SW50ZXJwcmV0S2V5RXZlbnQoZWRpdG9yU3Rh
dGUoKSwgcGxhdGZvcm1FdmVudC0+dHlwZSgpID09IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6Q2hh
ciksCisgICAgYm9vbCBzZW5kUmVzdWx0ID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50
UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6SW50
ZXJwcmV0S2V5RXZlbnQoZWRpdG9yU3RhdGUoU2hvdWxkUGVyZm9ybUxheW91dDo6WWVzKSwgcGxh
dGZvcm1FdmVudC0+dHlwZSgpID09IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6Q2hhciksCiAgICAg
ICAgIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkludGVycHJldEtleUV2ZW50OjpSZXBseShldmVu
dFdhc0hhbmRsZWQpLCBtX3BhZ2VJRCk7CiAgICAgcmV0dXJuIHNlbmRSZXN1bHQgJiYgZXZlbnRX
YXNIYW5kbGVkOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1dlYlBhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvV2ViUGFnZU1hYy5tbQppbmRleCA0MzFkZmExN2FjYTA1YjYwZWZlOWFlMDQwM2E0MDg4MGUy
ODE4ZDgwLi4zMDRhNTZhNWQ4ZGQ1MmMwNmQyZTY5ZGYzMjBlZjIzZjdmYjYyOWYyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQpA
QCAtMTMzLDE0ICsxMzMsMTQgQEAgdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybURldGFjaCgpCiAgICAg
W21fbW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50IHNldFdlYlBhZ2U6bnVsbHB0cl07CiB9CiAKLXZv
aWQgV2ViUGFnZTo6cGxhdGZvcm1FZGl0b3JTdGF0ZShGcmFtZSYgZnJhbWUsIEVkaXRvclN0YXRl
JiByZXN1bHQsIEluY2x1ZGVQb3N0TGF5b3V0RGF0YUhpbnQgc2hvdWxkSW5jbHVkZVBvc3RMYXlv
dXREYXRhKSBjb25zdAordm9pZCBXZWJQYWdlOjpwbGF0Zm9ybUVkaXRvclN0YXRlKEZyYW1lJiBm
cmFtZSwgRWRpdG9yU3RhdGUmIHJlc3VsdCkgY29uc3QKIHsKLSAgICBpZiAoc2hvdWxkSW5jbHVk
ZVBvc3RMYXlvdXREYXRhID09IEluY2x1ZGVQb3N0TGF5b3V0RGF0YUhpbnQ6Ok5vIHx8ICFmcmFt
ZS52aWV3KCkgfHwgZnJhbWUudmlldygpLT5uZWVkc0xheW91dCgpIHx8ICFyZXN1bHQuaXNDb250
ZW50RWRpdGFibGUpIHsKLSAgICAgICAgcmVzdWx0LmlzTWlzc2luZ1Bvc3RMYXlvdXREYXRhID0g
dHJ1ZTsKKyAgICBwbGF0Zm9ybUVkaXRvclN0YXRlQ29tbW9uKGZyYW1lLCByZXN1bHQpOworCisg
ICAgaWYgKHJlc3VsdC5pc01pc3NpbmdQb3N0TGF5b3V0RGF0YSkKICAgICAgICAgcmV0dXJuOwot
ICAgIH0KIAotICAgIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbiA9IGZyYW1lLnNl
bGVjdGlvbigpLnNlbGVjdGlvbigpOworICAgIGNvbnN0IGF1dG8mIHNlbGVjdGlvbiA9IGZyYW1l
LnNlbGVjdGlvbigpLnNlbGVjdGlvbigpOwogICAgIFJlZlB0cjxSYW5nZT4gc2VsZWN0ZWRSYW5n
ZSA9IHNlbGVjdGlvbi50b05vcm1hbGl6ZWRSYW5nZSgpOwogICAgIGlmICghc2VsZWN0ZWRSYW5n
ZSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2Uvd2luL1dlYlBhZ2VXaW4uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2Uvd2luL1dlYlBhZ2VXaW4uY3BwCmluZGV4IGM5NGJkMDVjOTI0NTU3Yjk0ODNlNjEzZGQ5
OWE4OGRlYjA5NzE0NGIuLmFhNDNjZTllYWQ2MjY2ZTBlYWViYjE1YjFhZDkzOWRkZjMyZmE4Mjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9XZWJQYWdl
V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93aW4vV2ViUGFn
ZVdpbi5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybURldGFjaCgp
CiB7CiB9CiAKLXZvaWQgV2ViUGFnZTo6cGxhdGZvcm1FZGl0b3JTdGF0ZShGcmFtZSYgZnJhbWUs
IEVkaXRvclN0YXRlJiByZXN1bHQsIEluY2x1ZGVQb3N0TGF5b3V0RGF0YUhpbnQgc2hvdWxkSW5j
bHVkZVBvc3RMYXlvdXREYXRhKSBjb25zdAordm9pZCBXZWJQYWdlOjpwbGF0Zm9ybUVkaXRvclN0
YXRlKEZyYW1lJiwgRWRpdG9yU3RhdGUmKSBjb25zdAogewogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93cGUvV2ViUGFnZVdQRS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93cGUvV2ViUGFnZVdQRS5jcHAKaW5kZXggYzJiNTI2
NTlhMzZlYTgzZTdiZGU1Y2NmMTZmZjI3M2U0ODRjODE1Mi4uN2QxMjdmMjE4MDRjY2IxNGMwYTQ2
OTZjYjY3M2U2MmNmODkzZjg4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2Uvd3BlL1dlYlBhZ2VXUEUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL3dwZS9XZWJQYWdlV1BFLmNwcApAQCAtNTgsNyArNTgsNyBAQCB2b2lkIFdlYlBh
Z2U6OnBsYXRmb3JtRGV0YWNoKCkKIHsKIH0KIAotdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybUVkaXRv
clN0YXRlKEZyYW1lJiwgRWRpdG9yU3RhdGUmLCBJbmNsdWRlUG9zdExheW91dERhdGFIaW50KSBj
b25zdAordm9pZCBXZWJQYWdlOjpwbGF0Zm9ybUVkaXRvclN0YXRlKEZyYW1lJiwgRWRpdG9yU3Rh
dGUmKSBjb25zdAogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNGVhOGQ3MGEz
ZWZmY2YxYzEzN2Q0NGRkYjYyZmQxOWIzZDQ4NmJjNy4uM2EyZDZkYTNiMDNmZmI1YTQ1MzcyYzAy
N2NiMzMzMGZkYmYzZGM0NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE5LTA3LTI2ICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBBU1NFUlRJT04g
RkFJTFVSRTogIWlzTWlzc2luZ1Bvc3RMYXlvdXREYXRhIGluIFdlYktpdDo6RWRpdG9yU3RhdGU6
OnBvc3RMYXlvdXREYXRhKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE5OTk2MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTMzMjM5NjY+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgdGVzdCB0
byBlbnN1cmUgd2UgZG8gbm90IGFzc2VydCB3aGVuIHVzaW5nIHRoZSBzb2Z0d2FyZSBrZXlib2Fy
ZCB0byB0eXBlIGEgY2hhcmFjdGVyCisgICAgICAgIGludG8gYSA8dGV4dGFyZWE+IGFuZCB0aGVu
IGRlbGV0ZSBpdC4KKworICAgICAgICAqIFRlc3RFeHBlY3RhdGlvbnM6IFNraXAgdGVzdHMgaW4g
ZWRpdGluZy9kZWxldGluZy9pb3Mgb24gYWxsIHBsYXRmb3Jtcy4KKyAgICAgICAgKiBlZGl0aW5n
L2RlbGV0aW5nL2lvcy9iYWNrc3BhY2UtbGFzdC1jaGFyYWN0ZXItZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBlZGl0aW5nL2RlbGV0aW5nL2lvcy9iYWNrc3BhY2UtbGFzdC1jaGFyYWN0
ZXIuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnM6
IFVuc2tpcCB0ZXN0cyBpbiBlZGl0aW5nL2RlbGV0aW5nL2lvcyBvbiBpT1MuCisKIDIwMTktMDct
MjYgIFJvYiBCdWlzICA8cmJ1aXNAaWdhbGlhLmNvbT4KIAogICAgICAgICBNYWtlIHN0b3Jpbmcg
Y3Jvc3Mtb3JpZ2luIHRvcC1sZXZlbCBwcmVmZXRjaGVzIGluIEhUVFAgY2FjaGUgb3B0aW9uYWwK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9U
ZXN0RXhwZWN0YXRpb25zCmluZGV4IDlkYzMyY2FhMzM2YmQ5YzIyYTA5M2EzYWU3ZWExYWRhZjA3
MGQ0NGYuLjkzNTlmMmYxMTQyY2NkNmQ0ZWYxNzY1ZTQ1YTk3ZTkwMzllMzBmODkgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvVGVzdEV4
cGVjdGF0aW9ucwpAQCAtMTksNiArMTksNyBAQCBlZGl0aW5nL2lucHV0L2lvcyBbIFNraXAgXQog
ZWRpdGluZy9maW5kIFsgU2tpcCBdCiBlZGl0aW5nL3Bhc3RlYm9hcmQvZ3RrIFsgU2tpcCBdCiBl
ZGl0aW5nL3NlbGVjdGlvbi9pb3MgWyBTa2lwIF0KK2VkaXRpbmcvZGVsZXRpbmcvaW9zIFsgU2tp
cCBdCiBlZGl0aW5nL3VuZG8tbWFuYWdlciBbIFNraXAgXQogdGlsZWQtZHJhd2luZyBbIFNraXAg
XQogZmFzdC9jc3Mvd2F0Y2hvcyBbIFNraXAgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRp
dGluZy9kZWxldGluZy9pb3MvYmFja3NwYWNlLWxhc3QtY2hhcmFjdGVyLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2VkaXRpbmcvZGVsZXRpbmcvaW9zL2JhY2tzcGFjZS1sYXN0LWNoYXJhY3Rl
ci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTA1NjRkOThkYWYyODA5N2MwYjQwYzVmM2I1M2M4
ZGE2NDEwYjBiMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvZGVsZXRp
bmcvaW9zL2JhY2tzcGFjZS1sYXN0LWNoYXJhY3Rlci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwx
MSBAQAorVGhpcyB0ZXN0cyB1c2luZyB0aGUgc29mdHdhcmUga2V5Ym9hcmQgYW5kIHByZXNzaW5n
ICd3JyB0aGVuIGJhY2tzcGFjZSBkZWxldGVzIHRoZSAndycgYW5kIGRvZXMgbm90IGNhdXNlIGFu
IGFzc2VydGlvbiBmYWlsdXJlIGluIGEgZGVidWcgYnVpbGQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KKworCitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpbnB1dCIpLnZhbHVl
IGlzICJ3IgorUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW5wdXQiKS52YWx1ZSBpcyAi
IgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvZGVsZXRpbmcvaW9zL2JhY2tzcGFjZS1sYXN0
LWNoYXJhY3Rlci5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9kZWxldGluZy9pb3MvYmFja3Nw
YWNlLWxhc3QtY2hhcmFjdGVyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODQyODM3OGZhNzJmNzJhZjViMTIx
Y2ZhYzU3ZTY1YTY4MWFhNjk5NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRp
bmcvZGVsZXRpbmcvaW9zL2JhY2tzcGFjZS1sYXN0LWNoYXJhY3Rlci5odG1sCkBAIC0wLDAgKzEs
NDYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxk
aXYgaWQ9InRlc3QtY29udGFpbmVyIj4KKyAgICA8dGV4dGFyZWEgaWQ9ImlucHV0Ij48L3RleHRh
cmVhPgorICAgIDx0ZXh0YXJlYSBpZD0ib3V0cHV0IiByZWFkb25seT48L3RleHRhcmVhPgorPC9k
aXY+Cis8c2NyaXB0Pgord2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCitsZXQgaW5wdXQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW5wdXQiKTsKKworZnVuY3Rpb24gYXBwZW5kQU5l
d2xpbmUoKQoreworICAgIGxldCBvdXRwdXRFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoIm91dHB1dCIpOworICAgIG91dHB1dEVsZW1lbnQudmFsdWUgPSBvdXRwdXRFbGVtZW50LnZh
bHVlICsgIlxuIjsKK30KKworYXN5bmMgZnVuY3Rpb24gcnVuVGVzdCgpCit7CisgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQorICAgICAgICBhd2FpdCBVSUhlbHBlci5zZXRIYXJkd2FyZUtleWJv
YXJkQXR0YWNoZWQoZmFsc2UpOworCisgICAgYXdhaXQgVUlIZWxwZXIuY2FsbEZ1bmN0aW9uQW5k
V2FpdEZvckV2ZW50KCgpID0+IHdpbmRvdy50ZXN0UnVubmVyICYmIFVJSGVscGVyLmFjdGl2YXRl
RWxlbWVudChpbnB1dCksIGlucHV0LCAiZm9jdXMiKTsKKworICAgIGF3YWl0IFVJSGVscGVyLmNh
bGxGdW5jdGlvbkFuZFdhaXRGb3JFdmVudCgoKSA9PiB3aW5kb3cudGVzdFJ1bm5lciAmJiBVSUhl
bHBlci5rZXlEb3duKCJ3IiksIGlucHV0LCAia2V5dXAiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoJ2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpbnB1dCIpLnZhbHVlJywgInciKTsKKwor
ICAgIGF3YWl0IFVJSGVscGVyLmNhbGxGdW5jdGlvbkFuZFdhaXRGb3JFdmVudCgoKSA9PiB3aW5k
b3cudGVzdFJ1bm5lciAmJiBVSUhlbHBlci5rZXlEb3duKCJcYiIpLCBpbnB1dCwgImtleXVwIik7
CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW5w
dXQiKS52YWx1ZScsICIiKTsKKworICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QtY29udGFpbmVyIikpOworICAgIGZpbmlzaEpTVGVzdCgp
OworfQorCitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB1c2luZyB0aGUgc29mdHdhcmUga2V5Ym9h
cmQgYW5kIHByZXNzaW5nICd3JyB0aGVuIDxrYmQ+YmFja3NwYWNlPC9rYmQ+IGRlbGV0ZXMgdGhl
ICd3JyBhbmQgZG9lcyBub3QgY2F1c2UgYW4gYXNzZXJ0aW9uIGZhaWx1cmUgaW4gYSBkZWJ1ZyBi
dWlsZC4iKQoraW5wdXQuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsIGFwcGVuZEFOZXdsaW5l
KTsKKworcnVuVGVzdCgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDJmM2RhZjU2YTY0YWQ3OWQ0ZWRk
NzIzNDI1MTY5YWEzNzlhNjkwYTQuLmRjY2I5YWQwYTFjNzg4ZjM0MDAzZDAzNjY3MmQ4OWEyMjYy
ZGZhYzkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRp
b25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zCkBAIC04
LDYgKzgsNyBAQAogCiBhY2Nlc3NpYmlsaXR5L2lvcy1zaW11bGF0b3IgWyBQYXNzIF0KIGRpc3Bs
YXlsaXN0cyBbIFBhc3MgXQorZWRpdGluZy9kZWxldGluZy9pb3MgWyBQYXNzIF0KIGh0dHAvdGVz
dHMvcXVpY2tsb29rIFsgUGFzcyBdCiBtZWRpYS9pb3MgWyBQYXNzIF0KIHF1aWNrbG9vayBbIFBh
c3MgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377056</attachid>
            <date>2019-08-22 14:58:22 -0700</date>
            <delta_ts>2020-03-18 13:51:14 -0700</delta_ts>
            <desc>Patch and layout test</desc>
            <filename>bug-199960-20190822145821.patch</filename>
            <type>text/plain</type>
            <size>29088</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4NTMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGVmYzA2OGFiNzI0MjFhMjNi
NTA2OTFhYjg5OGY4NGRlNzNhMDk0NWEuLjgzMzAzZjgwY2U1Y2JlMWM4MjQ5ZjkxZmM0Yzk2OTY2
NzYyYmZhYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjEgQEAKKzIwMTktMDctMjYgIERhbmllbCBC
YXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIEFTU0VSVElPTiBGQUlM
VVJFOiAhaXNNaXNzaW5nUG9zdExheW91dERhdGEgaW4gV2ViS2l0OjpFZGl0b3JTdGF0ZTo6cG9z
dExheW91dERhdGEoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTk5OTYwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81MzMyMzk2Nj4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZhY3RvciB0aGUgY29t
cHV0YXRpb24gb2YgZWRpdG9yIHN0YXRlIHNvIHRoYXQgd2UgY2FuIHJlcXVlc3QgdGhhdCBhIGxh
eW91dCBiZSBwZXJmb3JtZWQKKyAgICAgICAgZWFjaCB0aW1lIHdlIGNvbXB1dGUgdGhlIGVkaXRv
ciBzdGF0ZSBhcyBwYXJ0IG9mIGFza2luZyB0aGUgVUkgcHJvY2VzcyB0byBpbnRlcnByZXQgYSBr
ZXkKKyAgICAgICAgZXZlbnQuIFRoZSBmdWxsIChyZWFkOiBhZnRlciBsYXlvdXQpIGVkaXRvciBz
dGF0ZSBpcyBuZWVkZWQgZm9yIFVJS2l0IHRvIHBlcmZvcm0gYSBkZWxldGlvbgorICAgICAgICBi
ZWNhdXNlIFVJS2l0IHdhbnRzIHRvIGtub3cgaG93IG1hbnkgY2hhcmFjdGVycyBhcmUgYmVmb3Jl
IHRoZSBzZWxlY3Rpb24uIE90aGVyd2lzZSwgd2UgaGl0CisgICAgICAgIGFuIGFzc2VydCBkdWUg
dG8gdGhlIGZhY3QgdGhlIGxhc3QgZWRpdG9yIHN0YXRlIHNlbnQgKHdoZW4gdGhlIFdlYiBwcm9j
ZXNzIGFza2VkIHRoZSBVSSBwcm9jZXNzCisgICAgICAgIHRvIGludGVycHJldCB0aGUga2V5KSBp
cyBtaXNzaW5nIGxheW91dCBkYXRhLgorCisgICAgICAgIFRoZSByZWZhY3RvcmluZyBhbHNvIG1v
dmVzIHRoZSBDb2NvYS1jb21tb24gY29kZSBvdXQgb2YgdGhlIHBsYXRmb3JtLWluZGVwZW5kZW50
IFdlYlBhZ2UuY3BwCisgICAgICAgIGZpbGUgaW50byBXZWJQYWdlQ29jb2EubW0uCisKKyAgICAg
ICAgT25lIHNpZGUgZWZmZWN0IG9mIHRoZSByZWZhY3RvcmluZyBpcyB0aGF0IHdlIG5vIGxvbmdl
ciBhbGxvdyB0aGUgcGxhdGZvcm1FZGl0b3JTdGF0ZSgpIGZ1bmN0aW9uCisgICAgICAgIHRvIG92
ZXJyaWRlIHRoZSBpc01pc3NpbmdQb3N0TGF5b3V0RGF0YSBiaXQuIEN1cnJlbnRseSBpdCBjYW4g
ZXZlbiB0aG91Z2ggdGhlIGNhbGxpbmcgY29kZSwgdGhlCisgICAgICAgIHBsYXRmb3JtIGluZGVw
ZW5kZW50IGNvZGUgKFBJRSkgaW4gV2ViUGFnZSwgbWF5IGhhdmUgYXR0YWNoZWQgbGF5b3V0IGRh
dGEuIE5vdyB0aGUgUElFIGNvZGUgc2V0cworICAgICAgICB0aGlzIGJpdCBpZiBpdCBhdHRhY2hl
ZCBsYXlvdXQgZGF0YSBhbmQgdGhlIHBsYXRmb3JtRWRpdG9yU3RhdGUoKSBmdW5jdGlvbiBvbmx5
IGF0dGFjaGVzIG1vcmUKKyAgICAgICAgbGF5b3V0IGRhdGEgaWYgdGhhdCBiaXQgaXMgc2V0LiBw
bGF0Zm9ybUVkaXRvclN0YXRlKCkgbmV2ZXIgdW5zZXRzIHRoYXQgYml0IChpLmUuIHNldHMgaXNN
aXNzaW5nUG9zdExheW91dERhdGEKKyAgICAgICAgdG8gdHJ1ZSkuCisKKyAgICAgICAgVGhlIHBh
dGNoIGFsc28gcmVtb3ZlcyBtX2lzRWRpdG9yU3RhdGVNaXNzaW5nUG9zdExheW91dERhdGEgaW4g
V2ViUGFnZS5oLiBUaGlzIGluc3RhbmNlIHZhcmlhYmxlCisgICAgICAgIGhhcyBiZWVuIHVudXNl
ZCBzaW5jZSA8aHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzIyMTA2NC93ZWJraXQ+
LiBBbHNvIHdlIGhhdmVuJ3QgYmVlbiB1c2luZworICAgICAgICBJbmNsdWRlUG9zdExheW91dERh
dGFIaW50OjpObyBzaW5jZSB0aGUgbGFzdCByZWZlcmVuY2UgdG8gaXQgd2FzIHJlbW92ZWQgaW4g
PGh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yNDQ0OTQvd2Via2l0Pi4KKworICAg
ICAgICAqIFNoYXJlZC9FZGl0b3JTdGF0ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9Db2NvYS9XZWJQYWdlQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBsYXRm
b3JtRWRpdG9yU3RhdGVDb21tb24gY29uc3QpOiBBZGRlZC4gTW92ZWQgQ29jb2EtY29tbW9uIGNv
ZGUgZnJvbSBXZWJQYWdlLmNwcAorICAgICAgICB0byBoZXJlLgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZWRpdG9y
U3RhdGUgY29uc3QpOiBNb3ZlIENvY29hLWNvbW1vbiBjb2RlIHRvIFdlYlBhZ2VDb2NvYS5tbS4g
Q2hhbmdlIGVudW0gdG8KKyAgICAgICAgdHJhY2sgd2hldGhlciBhIGxheW91dCBzaG91bGQgYmUg
cGVyZm9ybWVkLiBLZWVwIHRoZSBjdXJyZW50IGJlaGF2aW9yIG9mIG9ubHkgaW5jbHVkaW5nIHBv
c3QgbGF5b3V0CisgICAgICAgIGRhdGEgaWYgdGhlIGZyYW1lIHZpZXcgZG9lcyBub3QgbmVlZCBh
IGxheW91dC4gVGhpcyBiZWhhdmlvciBpcyBlbmNvZGVkIGluIHRoZSBlbnVtZXJhdG9yIFNob3Vs
ZFBlcmZvcm1MYXlvdXQ6OkRlZmF1bHQuCisgICAgICAgIHdoaWNoIGlzIHRoZSBkZWZhdWx0IGFy
Z3VtZW50IHZhbHVlIGZvciB0aGUgYXJndW1lbnQgc2hvdWxkUGVyZm9ybUxheW91dC4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpwbGF0Zm9ybU5lZWRzTGF5b3V0Rm9yRWRpdG9yU3RhdGUgY29uc3QpOiBBZGRlZC4gTm9u
LUNvY29hIHBvcnQgaW1wbGVtZW50YXRpb24KKyAgICAgICAgdGhhdCByZXR1cm5zIGZhbHNlLgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUGFnZUd0ay5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtRWRpdG9yU3RhdGUgY29uc3QpOiBFYXJseSByZXR1
cm4gaWYgaXNNaXNzaW5nUG9zdExheW91dERhdGEgaXMgdHJ1ZS4KKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OnBsYXRmb3JtTmVlZHNMYXlvdXRGb3JFZGl0b3JTdGF0ZSBjb25zdCk6IEFkZGVkLiBLZWVwIHRo
ZSBjdXJyZW50IGJlaGF2aW9yIG9mCisgICAgICAgIHBlcmZvcm1pbmcgYSBsYXlvdXQgaWYgd2Ug
aGF2ZSBhIGNvbXBvc2l0aW9uIG9yIGEgaGFyZHdhcmUga2V5Ym9hcmQgaXMgYXR0YWNoZWQuCisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtRWRpdG9yU3RhdGUgY29uc3QpOiBDYWxs
IHBsYXRmb3JtRWRpdG9yU3RhdGVDb21tb24oKS4gQmFpbCBvdXQgZWFybHkKKyAgICAgICAgaWYg
aXNNaXNzaW5nUG9zdExheW91dERhdGEgaXMgdHJ1ZS4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQpOiBUaGUgaW1wb3J0YW50IHBhcnQgb2YgdGhp
cyBwYXRjaC4gUmVxdWVzdCBhIGxheW91dAorICAgICAgICB3aGVuIGNvbXB1dGluZyB0aGUgZWRp
dG9yIHN0YXRlIHRoYXQgd2Ugd2lsbCBzZW5kIHRvIHRoZSBVSSBwcm9jZXNzLgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6cGxhdGZvcm1FZGl0b3JTdGF0ZSBjb25zdCk6IENhbGwgcGxhdGZvcm1FZGl0b3JT
dGF0ZUNvbW1vbigpLiBCYWlsIG91dCBlYXJseQorICAgICAgICBpZiBpc01pc3NpbmdQb3N0TGF5
b3V0RGF0YSBpcyB0cnVlLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS93aW4vV2ViUGFn
ZVdpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtRWRpdG9yU3RhdGUg
Y29uc3QpOiBVcGRhdGUgYXMgbmVlZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS93
cGUvV2ViUGFnZVdQRS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtRWRp
dG9yU3RhdGUgY29uc3QpOiBEaXR0by4KKwogMjAxOS0wOC0xMiAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyNDg1MjUu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0b3JTdGF0ZS5oIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvRWRpdG9yU3RhdGUuaAppbmRleCBlNDljNTNkZGYyNGNkMWU5MjZjMDIy
ZjlmYWQ1M2I1M2U3YzYwYTFlLi43Y2I0ZTcwMmNhNmYwMmE1M2QwNWE5M2NkNTdmODQyMTYzNjBj
N2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0b3JTdGF0ZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRvclN0YXRlLmgKQEAgLTc0LDcgKzc0LDcgQEAgc3Ry
dWN0IEVkaXRvclN0YXRlIHsKICAgICBib29sIGlzSW5QYXNzd29yZEZpZWxkIHsgZmFsc2UgfTsK
ICAgICBib29sIGlzSW5QbHVnaW4geyBmYWxzZSB9OwogICAgIGJvb2wgaGFzQ29tcG9zaXRpb24g
eyBmYWxzZSB9OwotICAgIGJvb2wgaXNNaXNzaW5nUG9zdExheW91dERhdGEgeyBmYWxzZSB9Owor
ICAgIGJvb2wgaXNNaXNzaW5nUG9zdExheW91dERhdGEgeyB0cnVlIH07CiAKICNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgIFdlYkNvcmU6OkludFJlY3QgZmlyc3RNYXJrZWRSZWN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNv
Y29hLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNv
Y29hLm1tCmluZGV4IGQxMmI5OGE5NTg0MDFmMGMzZDlmMmNhYWNjNTViNDBiMmE2MWI3NjQuLmUw
MmM0YmE2MDA2M2NkZGJhYjQwNTVkYzU3Yjc0OTJhOWRkYzFmYjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KQEAg
LTM0LDEwICszNCwxMyBAQAogI2ltcG9ydCAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKICNpbXBv
cnQgIldlYlBheW1lbnRDb29yZGluYXRvci5oIgogI2ltcG9ydCA8V2ViQ29yZS9EaWN0aW9uYXJ5
TG9va3VwLmg+CisjaW1wb3J0IDxXZWJDb3JlL0VkaXRpbmcuaD4KICNpbXBvcnQgPFdlYkNvcmUv
RWRpdG9yLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0V2ZW50SGFuZGxlci5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9Gb2N1c0NvbnRyb2xsZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvSFRNTENvbnZlcnRlci5o
PgorI2ltcG9ydCA8V2ViQ29yZS9IVE1MT0xpc3RFbGVtZW50Lmg+CisjaW1wb3J0IDxXZWJDb3Jl
L0hUTUxVTGlzdEVsZW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvSGl0VGVzdFJlc3VsdC5oPgog
I2ltcG9ydCA8V2ViQ29yZS9Ob2RlUmVuZGVyU3R5bGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGF5
bWVudENvb3JkaW5hdG9yLmg+CkBAIC0yMjcsNyArMjMwLDcyIEBAIHZvaWQgV2ViUGFnZTo6dXBk
YXRlTW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50QWZ0ZXJDb21taXR0aW5nTG9hZCgpCiAgICAgYXV0
byogZG9jdW1lbnQgPSBtYWluRnJhbWUoKS0+ZG9jdW1lbnQoKTsKICAgICBbbV9tb2NrQWNjZXNz
aWJpbGl0eUVsZW1lbnQgc2V0SGFzTWFpbkZyYW1lUGx1Z2luOmRvY3VtZW50ID8gZG9jdW1lbnQt
PmlzUGx1Z2luRG9jdW1lbnQoKSA6IGZhbHNlXTsKIH0KLSAgICAKKwordm9pZCBXZWJQYWdlOjpw
bGF0Zm9ybUVkaXRvclN0YXRlQ29tbW9uKGNvbnN0IEZyYW1lJiBmcmFtZSwgRWRpdG9yU3RhdGUm
IHJlc3VsdCkgY29uc3QKK3sKKyAgICBpZiAocmVzdWx0LmlzTWlzc2luZ1Bvc3RMYXlvdXREYXRh
KQorICAgICAgICByZXR1cm47CisKKyAgICBjb25zdCBhdXRvJiBzZWxlY3Rpb24gPSBmcmFtZS5z
ZWxlY3Rpb24oKS5zZWxlY3Rpb24oKTsKKworICAgIGlmICghcmVzdWx0LmlzQ29udGVudEVkaXRh
YmxlIHx8IHNlbGVjdGlvbi5pc05vbmUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byYg
cG9zdExheW91dERhdGEgPSByZXN1bHQucG9zdExheW91dERhdGEoKTsKKyAgICBpZiAoYXV0byBl
ZGl0aW5nU3R5bGUgPSBFZGl0aW5nU3R5bGU6OnN0eWxlQXRTZWxlY3Rpb25TdGFydChzZWxlY3Rp
b24pKSB7CisgICAgICAgIGlmIChlZGl0aW5nU3R5bGUtPmhhc1N0eWxlKENTU1Byb3BlcnR5Rm9u
dFdlaWdodCwgImJvbGQiX3MpKQorICAgICAgICAgICAgcG9zdExheW91dERhdGEudHlwaW5nQXR0
cmlidXRlcyB8PSBBdHRyaWJ1dGVCb2xkOworCisgICAgICAgIGlmIChlZGl0aW5nU3R5bGUtPmhh
c1N0eWxlKENTU1Byb3BlcnR5Rm9udFN0eWxlLCAiaXRhbGljIl9zKSB8fCBlZGl0aW5nU3R5bGUt
Pmhhc1N0eWxlKENTU1Byb3BlcnR5Rm9udFN0eWxlLCAib2JsaXF1ZSJfcykpCisgICAgICAgICAg
ICBwb3N0TGF5b3V0RGF0YS50eXBpbmdBdHRyaWJ1dGVzIHw9IEF0dHJpYnV0ZUl0YWxpY3M7CisK
KyAgICAgICAgaWYgKGVkaXRpbmdTdHlsZS0+aGFzU3R5bGUoQ1NTUHJvcGVydHlXZWJraXRUZXh0
RGVjb3JhdGlvbnNJbkVmZmVjdCwgInVuZGVybGluZSJfcykpCisgICAgICAgICAgICBwb3N0TGF5
b3V0RGF0YS50eXBpbmdBdHRyaWJ1dGVzIHw9IEF0dHJpYnV0ZVVuZGVybGluZTsKKworICAgICAg
ICBpZiAoYXV0byogc3R5bGVQcm9wZXJ0aWVzID0gZWRpdGluZ1N0eWxlLT5zdHlsZSgpKSB7Cisg
ICAgICAgICAgICBib29sIGlzTGVmdFRvUmlnaHQgPSBzdHlsZVByb3BlcnRpZXMtPnByb3BlcnR5
QXNWYWx1ZUlEKENTU1Byb3BlcnR5RGlyZWN0aW9uKSA9PSBDU1NWYWx1ZUx0cjsKKyAgICAgICAg
ICAgIHN3aXRjaCAoc3R5bGVQcm9wZXJ0aWVzLT5wcm9wZXJ0eUFzVmFsdWVJRChDU1NQcm9wZXJ0
eVRleHRBbGlnbikpIHsKKyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVSaWdodDoKKyAgICAgICAg
ICAgIGNhc2UgQ1NTVmFsdWVXZWJraXRSaWdodDoKKyAgICAgICAgICAgICAgICBwb3N0TGF5b3V0
RGF0YS50ZXh0QWxpZ25tZW50ID0gUmlnaHRBbGlnbm1lbnQ7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlTGVmdDoKKyAgICAgICAgICAgIGNhc2UgQ1NT
VmFsdWVXZWJraXRMZWZ0OgorICAgICAgICAgICAgICAgIHBvc3RMYXlvdXREYXRhLnRleHRBbGln
bm1lbnQgPSBMZWZ0QWxpZ25tZW50OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgY2FzZSBDU1NWYWx1ZUNlbnRlcjoKKyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVXZWJraXRD
ZW50ZXI6CisgICAgICAgICAgICAgICAgcG9zdExheW91dERhdGEudGV4dEFsaWdubWVudCA9IENl
bnRlckFsaWdubWVudDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2Ug
Q1NTVmFsdWVKdXN0aWZ5OgorICAgICAgICAgICAgICAgIHBvc3RMYXlvdXREYXRhLnRleHRBbGln
bm1lbnQgPSBKdXN0aWZpZWRBbGlnbm1lbnQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICBjYXNlIENTU1ZhbHVlU3RhcnQ6CisgICAgICAgICAgICAgICAgcG9zdExheW91dERh
dGEudGV4dEFsaWdubWVudCA9IGlzTGVmdFRvUmlnaHQgPyBMZWZ0QWxpZ25tZW50IDogUmlnaHRB
bGlnbm1lbnQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENTU1Zh
bHVlRW5kOgorICAgICAgICAgICAgICAgIHBvc3RMYXlvdXREYXRhLnRleHRBbGlnbm1lbnQgPSBp
c0xlZnRUb1JpZ2h0ID8gUmlnaHRBbGlnbm1lbnQgOiBMZWZ0QWxpZ25tZW50OworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChhdXRvIHRleHRDb2xvciA9IHN0eWxl
UHJvcGVydGllcy0+cHJvcGVydHlBc0NvbG9yKENTU1Byb3BlcnR5Q29sb3IpKQorICAgICAgICAg
ICAgICAgIHBvc3RMYXlvdXREYXRhLnRleHRDb2xvciA9ICp0ZXh0Q29sb3I7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBpZiAoYXV0byogZW5jbG9zaW5nTGlzdEVsZW1lbnQgPSBlbmNsb3NpbmdM
aXN0KHNlbGVjdGlvbi5zdGFydCgpLmNvbnRhaW5lck5vZGUoKSkpIHsKKyAgICAgICAgaWYgKGlz
PEhUTUxVTGlzdEVsZW1lbnQ+KCplbmNsb3NpbmdMaXN0RWxlbWVudCkpCisgICAgICAgICAgICBw
b3N0TGF5b3V0RGF0YS5lbmNsb3NpbmdMaXN0VHlwZSA9IFVub3JkZXJlZExpc3Q7CisgICAgICAg
IGVsc2UgaWYgKGlzPEhUTUxPTGlzdEVsZW1lbnQ+KCplbmNsb3NpbmdMaXN0RWxlbWVudCkpCisg
ICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS5lbmNsb3NpbmdMaXN0VHlwZSA9IE9yZGVyZWRMaXN0
OworICAgICAgICBlbHNlCisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9
CisKKyAgICBwb3N0TGF5b3V0RGF0YS5iYXNlV3JpdGluZ0RpcmVjdGlvbiA9IGZyYW1lLmVkaXRv
cigpLmJhc2VXcml0aW5nRGlyZWN0aW9uRm9yU2VsZWN0aW9uU3RhcnQoKTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggMTMzNjU3MGQ5M2FhNTEx
MDY5Nzg1NjExNzAyNjA4OTNiOGEzY2RiNC4uN2JjNzU5YTk1M2VjYmE0YTA5MjAwM2YwNmM5OGQ5
OWQwYzUyZjIzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAKQEAgLTE3MiwxMyArMTcyLDExIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9IVE1MSW5wdXRF
bGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IVE1MTWVudUVsZW1lbnQuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0hUTUxNZW51SXRlbUVsZW1lbnQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0hUTUxP
TGlzdEVsZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hUTUxQbHVnSW5FbGVtZW50Lmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50Lmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9IVE1MU2VsZWN0RWxlbWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSFRNTFRleHRBcmVh
RWxlbWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQu
aD4KLSNpbmNsdWRlIDxXZWJDb3JlL0hUTUxVTGlzdEVsZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0hpc3RvcnlDb250cm9sbGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IaXN0b3J5SXRlbS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvSGl0VGVzdFJlc3VsdC5oPgpAQCAtMTAxMSw5ICsxMDA5LDEw
IEBAIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSBXZWJQYWdlOjpyZXNvbHZlV2ViR0xQb2xpY3lG
b3JVUkwoV2ViRnJhbWUqLCBjb25zdCBVUkwmCiB9CiAjZW5kaWYKIAotRWRpdG9yU3RhdGUgV2Vi
UGFnZTo6ZWRpdG9yU3RhdGUoSW5jbHVkZVBvc3RMYXlvdXREYXRhSGludCBzaG91bGRJbmNsdWRl
UG9zdExheW91dERhdGEpIGNvbnN0CitFZGl0b3JTdGF0ZSBXZWJQYWdlOjplZGl0b3JTdGF0ZShT
aG91bGRQZXJmb3JtTGF5b3V0IHNob3VsZFBlcmZvcm1MYXlvdXQpIGNvbnN0CiB7Ci0gICAgRnJh
bWUmIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUo
KTsKKyAgICAvLyBSZWYgdGhlIGZyYW1lIGJlY2F1c2UgdGhpcyBmdW5jdGlvbiBtYXkgcGVyZm9y
bSBsYXlvdXQsIHdoaWNoIG1heSBjYXVzZSBmcmFtZSBkZXN0cnVjdGlvbi4KKyAgICBSZWY8RnJh
bWU+IGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUo
KTsKIAogICAgIEVkaXRvclN0YXRlIHJlc3VsdDsKIApAQCAtMTAyNiw4ICsxMDI1LDggQEAgRWRp
dG9yU3RhdGUgV2ViUGFnZTo6ZWRpdG9yU3RhdGUoSW5jbHVkZVBvc3RMYXlvdXREYXRhSGludCBz
aG91bGRJbmNsdWRlUG9zdExheW8KICAgICAgICAgfQogICAgIH0KIAotICAgIGNvbnN0IFZpc2li
bGVTZWxlY3Rpb24mIHNlbGVjdGlvbiA9IGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpOwot
ICAgIGNvbnN0IEVkaXRvciYgZWRpdG9yID0gZnJhbWUuZWRpdG9yKCk7CisgICAgY29uc3QgVmlz
aWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uID0gZnJhbWUtPnNlbGVjdGlvbigpLnNlbGVjdGlvbigp
OworICAgIGNvbnN0IEVkaXRvciYgZWRpdG9yID0gZnJhbWUtPmVkaXRvcigpOwogCiAgICAgcmVz
dWx0LnNlbGVjdGlvbklzTm9uZSA9IHNlbGVjdGlvbi5pc05vbmUoKTsKICAgICByZXN1bHQuc2Vs
ZWN0aW9uSXNSYW5nZSA9IHNlbGVjdGlvbi5pc1JhbmdlKCk7CkBAIC0xMDM3LDExICsxMDM2LDE1
IEBAIEVkaXRvclN0YXRlIFdlYlBhZ2U6OmVkaXRvclN0YXRlKEluY2x1ZGVQb3N0TGF5b3V0RGF0
YUhpbnQgc2hvdWxkSW5jbHVkZVBvc3RMYXlvCiAgICAgcmVzdWx0Lmhhc0NvbXBvc2l0aW9uID0g
ZWRpdG9yLmhhc0NvbXBvc2l0aW9uKCk7CiAgICAgcmVzdWx0LnNob3VsZElnbm9yZVNlbGVjdGlv
bkNoYW5nZXMgPSBlZGl0b3IuaWdub3JlU2VsZWN0aW9uQ2hhbmdlcygpOwogCi0gICAgaWYgKGF1
dG8qIGRvY3VtZW50ID0gZnJhbWUuZG9jdW1lbnQoKSkKLSAgICAgICAgcmVzdWx0Lm9yaWdpbklk
ZW50aWZpZXJGb3JQYXN0ZWJvYXJkID0gZG9jdW1lbnQtPm9yaWdpbklkZW50aWZpZXJGb3JQYXN0
ZWJvYXJkKCk7CisgICAgYXV0byYgZG9jdW1lbnQgPSAqZnJhbWUtPmRvY3VtZW50KCk7CisgICAg
cmVzdWx0Lm9yaWdpbklkZW50aWZpZXJGb3JQYXN0ZWJvYXJkID0gZG9jdW1lbnQub3JpZ2luSWRl
bnRpZmllckZvclBhc3RlYm9hcmQoKTsKKworICAgIGlmIChzaG91bGRQZXJmb3JtTGF5b3V0ID09
IFNob3VsZFBlcmZvcm1MYXlvdXQ6OlllcyB8fCBwbGF0Zm9ybU5lZWRzTGF5b3V0Rm9yRWRpdG9y
U3RhdGUoZnJhbWUpKQorICAgICAgICBkb2N1bWVudC51cGRhdGVMYXlvdXQoKTsgLy8gTWF5IGNh
dXNlIGZyYW1lIGRlc3RydWN0aW9uCisKKyAgICBpZiAoYXV0byogZnJhbWVWaWV3ID0gZG9jdW1l
bnQudmlldygpOyBmcmFtZVZpZXcgJiYgIWZyYW1lVmlldy0+bmVlZHNMYXlvdXQoKSkgeworICAg
ICAgICByZXN1bHQuaXNNaXNzaW5nUG9zdExheW91dERhdGEgPSBmYWxzZTsKIAotICAgIGJvb2wg
Y2FuSW5jbHVkZVBvc3RMYXlvdXREYXRhID0gZnJhbWUudmlldygpICYmICFmcmFtZS52aWV3KCkt
Pm5lZWRzTGF5b3V0KCk7Ci0gICAgaWYgKHNob3VsZEluY2x1ZGVQb3N0TGF5b3V0RGF0YSA9PSBJ
bmNsdWRlUG9zdExheW91dERhdGFIaW50OjpZZXMgJiYgY2FuSW5jbHVkZVBvc3RMYXlvdXREYXRh
KSB7CiAgICAgICAgIGF1dG8mIHBvc3RMYXlvdXREYXRhID0gcmVzdWx0LnBvc3RMYXlvdXREYXRh
KCk7CiAgICAgICAgIHBvc3RMYXlvdXREYXRhLmNhbkN1dCA9IGVkaXRvci5jYW5DdXQoKTsKICAg
ICAgICAgcG9zdExheW91dERhdGEuY2FuQ29weSA9IGVkaXRvci5jYW5Db3B5KCk7CkBAIC0xMDQ5
LDY2ICsxMDUyLDkgQEAgRWRpdG9yU3RhdGUgV2ViUGFnZTo6ZWRpdG9yU3RhdGUoSW5jbHVkZVBv
c3RMYXlvdXREYXRhSGludCBzaG91bGRJbmNsdWRlUG9zdExheW8KIAogICAgICAgICBpZiAobV9u
ZWVkc0ZvbnRBdHRyaWJ1dGVzKQogICAgICAgICAgICAgcG9zdExheW91dERhdGEuZm9udEF0dHJp
YnV0ZXMgPSBlZGl0b3IuZm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0KCk7Ci0KLSNpZiBQ
TEFURk9STShDT0NPQSkKLSAgICAgICAgaWYgKHJlc3VsdC5pc0NvbnRlbnRFZGl0YWJsZSAmJiAh
c2VsZWN0aW9uLmlzTm9uZSgpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBlZGl0aW5nU3R5bGUg
PSBFZGl0aW5nU3R5bGU6OnN0eWxlQXRTZWxlY3Rpb25TdGFydChzZWxlY3Rpb24pKSB7Ci0gICAg
ICAgICAgICAgICAgaWYgKGVkaXRpbmdTdHlsZS0+aGFzU3R5bGUoQ1NTUHJvcGVydHlGb250V2Vp
Z2h0LCAiYm9sZCIpKQotICAgICAgICAgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS50eXBpbmdB
dHRyaWJ1dGVzIHw9IEF0dHJpYnV0ZUJvbGQ7Ci0KLSAgICAgICAgICAgICAgICBpZiAoZWRpdGlu
Z1N0eWxlLT5oYXNTdHlsZShDU1NQcm9wZXJ0eUZvbnRTdHlsZSwgIml0YWxpYyIpIHx8IGVkaXRp
bmdTdHlsZS0+aGFzU3R5bGUoQ1NTUHJvcGVydHlGb250U3R5bGUsICJvYmxpcXVlIikpCi0gICAg
ICAgICAgICAgICAgICAgIHBvc3RMYXlvdXREYXRhLnR5cGluZ0F0dHJpYnV0ZXMgfD0gQXR0cmli
dXRlSXRhbGljczsKLQotICAgICAgICAgICAgICAgIGlmIChlZGl0aW5nU3R5bGUtPmhhc1N0eWxl
KENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3QsICJ1bmRlcmxpbmUiKSkK
LSAgICAgICAgICAgICAgICAgICAgcG9zdExheW91dERhdGEudHlwaW5nQXR0cmlidXRlcyB8PSBB
dHRyaWJ1dGVVbmRlcmxpbmU7Ci0KLSAgICAgICAgICAgICAgICBpZiAoYXV0byogc3R5bGVQcm9w
ZXJ0aWVzID0gZWRpdGluZ1N0eWxlLT5zdHlsZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGJv
b2wgaXNMZWZ0VG9SaWdodCA9IHN0eWxlUHJvcGVydGllcy0+cHJvcGVydHlBc1ZhbHVlSUQoQ1NT
UHJvcGVydHlEaXJlY3Rpb24pID09IENTU1ZhbHVlTHRyOwotICAgICAgICAgICAgICAgICAgICBz
d2l0Y2ggKHN0eWxlUHJvcGVydGllcy0+cHJvcGVydHlBc1ZhbHVlSUQoQ1NTUHJvcGVydHlUZXh0
QWxpZ24pKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVSaWdodDoKLSAgICAg
ICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVdlYmtpdFJpZ2h0OgotICAgICAgICAgICAgICAg
ICAgICAgICAgcG9zdExheW91dERhdGEudGV4dEFsaWdubWVudCA9IFJpZ2h0QWxpZ25tZW50Owot
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2Ug
Q1NTVmFsdWVMZWZ0OgotICAgICAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlV2Via2l0TGVm
dDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHBvc3RMYXlvdXREYXRhLnRleHRBbGlnbm1lbnQg
PSBMZWZ0QWxpZ25tZW50OwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVDZW50ZXI6Ci0gICAgICAgICAgICAgICAgICAgIGNh
c2UgQ1NTVmFsdWVXZWJraXRDZW50ZXI6Ci0gICAgICAgICAgICAgICAgICAgICAgICBwb3N0TGF5
b3V0RGF0YS50ZXh0QWxpZ25tZW50ID0gQ2VudGVyQWxpZ25tZW50OwotICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVKdXN0aWZ5
OgotICAgICAgICAgICAgICAgICAgICAgICAgcG9zdExheW91dERhdGEudGV4dEFsaWdubWVudCA9
IEp1c3RpZmllZEFsaWdubWVudDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlU3RhcnQ6Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBwb3N0TGF5b3V0RGF0YS50ZXh0QWxpZ25tZW50ID0gaXNMZWZ0VG9SaWdodCA/IExlZnRB
bGlnbm1lbnQgOiBSaWdodEFsaWdubWVudDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlRW5kOgotICAgICAgICAgICAgICAg
ICAgICAgICAgcG9zdExheW91dERhdGEudGV4dEFsaWdubWVudCA9IGlzTGVmdFRvUmlnaHQgPyBS
aWdodEFsaWdubWVudCA6IExlZnRBbGlnbm1lbnQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGlm
IChhdXRvIHRleHRDb2xvciA9IHN0eWxlUHJvcGVydGllcy0+cHJvcGVydHlBc0NvbG9yKENTU1By
b3BlcnR5Q29sb3IpKQotICAgICAgICAgICAgICAgICAgICAgICAgcG9zdExheW91dERhdGEudGV4
dENvbG9yID0gKnRleHRDb2xvcjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgIGlmIChhdXRvKiBlbmNsb3NpbmdMaXN0RWxlbWVudCA9IGVuY2xvc2luZ0xp
c3Qoc2VsZWN0aW9uLnN0YXJ0KCkuY29udGFpbmVyTm9kZSgpKSkgewotICAgICAgICAgICAgICAg
IGlmIChpczxIVE1MVUxpc3RFbGVtZW50PigqZW5jbG9zaW5nTGlzdEVsZW1lbnQpKQotICAgICAg
ICAgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS5lbmNsb3NpbmdMaXN0VHlwZSA9IFVub3JkZXJl
ZExpc3Q7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoaXM8SFRNTE9MaXN0RWxlbWVudD4oKmVu
Y2xvc2luZ0xpc3RFbGVtZW50KSkKLSAgICAgICAgICAgICAgICAgICAgcG9zdExheW91dERhdGEu
ZW5jbG9zaW5nTGlzdFR5cGUgPSBPcmRlcmVkTGlzdDsKLSAgICAgICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgfQot
Ci0gICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS5iYXNlV3JpdGluZ0RpcmVjdGlvbiA9IGVkaXRv
ci5iYXNlV3JpdGluZ0RpcmVjdGlvbkZvclNlbGVjdGlvblN0YXJ0KCk7Ci0gICAgICAgIH0KLSNl
bmRpZgogICAgIH0KIAotICAgIHBsYXRmb3JtRWRpdG9yU3RhdGUoZnJhbWUsIHJlc3VsdCwgc2hv
dWxkSW5jbHVkZVBvc3RMYXlvdXREYXRhKTsKKyAgICBwbGF0Zm9ybUVkaXRvclN0YXRlKGZyYW1l
LCByZXN1bHQpOwogCiAgICAgbV9sYXN0RWRpdG9yU3RhdGVXYXNDb250ZW50RWRpdGFibGUgPSBy
ZXN1bHQuaXNDb250ZW50RWRpdGFibGUgPyBFZGl0b3JTdGF0ZUlzQ29udGVudEVkaXRhYmxlOjpZ
ZXMgOiBFZGl0b3JTdGF0ZUlzQ29udGVudEVkaXRhYmxlOjpObzsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDcwOTkyNzAxNDI0M2MxMTI4ZmY2ZmFj
OWU0ZWE5MmRkNjUxMjJjNmYuLjVhMjU3NjA0NDFmZWY0M2Y4YjBlYjdmYmViZmVhMmM3NzFhMzBh
MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTQ1
NSw4ICs0NTUsOCBAQCBwdWJsaWM6CiAgICAgV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5IHJlc29s
dmVXZWJHTFBvbGljeUZvclVSTChXZWJGcmFtZSosIGNvbnN0IFVSTCYpOwogI2VuZGlmCiAgICAg
Ci0gICAgZW51bSBjbGFzcyBJbmNsdWRlUG9zdExheW91dERhdGFIaW50IHsgTm8sIFllcyB9Owot
ICAgIEVkaXRvclN0YXRlIGVkaXRvclN0YXRlKEluY2x1ZGVQb3N0TGF5b3V0RGF0YUhpbnQgPSBJ
bmNsdWRlUG9zdExheW91dERhdGFIaW50OjpZZXMpIGNvbnN0OworICAgIGVudW0gY2xhc3MgU2hv
dWxkUGVyZm9ybUxheW91dCB7IERlZmF1bHQsIFllcyB9OworICAgIEVkaXRvclN0YXRlIGVkaXRv
clN0YXRlKFNob3VsZFBlcmZvcm1MYXlvdXQgPSBTaG91bGRQZXJmb3JtTGF5b3V0OjpEZWZhdWx0
KSBjb25zdDsKICAgICB2b2lkIHVwZGF0ZUVkaXRvclN0YXRlQWZ0ZXJMYXlvdXRJZkVkaXRhYmls
aXR5Q2hhbmdlZCgpOwogCiAgICAgLy8gb3B0aW9ucyBhcmUgUmVuZGVyVHJlZUV4dGVybmFsUmVw
cmVzZW50YXRpb25CZWhhdmlvciB2YWx1ZXMuCkBAIC0xMjI2LDcgKzEyMjYsOCBAQCBwcml2YXRl
OgogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7CiAgICAgdm9pZCBwbGF0Zm9ybVJlaW5p
dGlhbGl6ZSgpOwogICAgIHZvaWQgcGxhdGZvcm1EZXRhY2goKTsKLSAgICB2b2lkIHBsYXRmb3Jt
RWRpdG9yU3RhdGUoV2ViQ29yZTo6RnJhbWUmLCBFZGl0b3JTdGF0ZSYgcmVzdWx0LCBJbmNsdWRl
UG9zdExheW91dERhdGFIaW50KSBjb25zdDsKKyAgICB2b2lkIHBsYXRmb3JtRWRpdG9yU3RhdGUo
V2ViQ29yZTo6RnJhbWUmLCBFZGl0b3JTdGF0ZSYpIGNvbnN0OworICAgIGJvb2wgcGxhdGZvcm1O
ZWVkc0xheW91dEZvckVkaXRvclN0YXRlKGNvbnN0IFdlYkNvcmU6OkZyYW1lJikgY29uc3Q7CiAg
ICAgdm9pZCBwbGF0Zm9ybVdpbGxQZXJmb3JtRWRpdGluZ0NvbW1hbmQoKTsKICAgICB2b2lkIHNl
bmRFZGl0b3JTdGF0ZVVwZGF0ZSgpOwogCkBAIC0xMjM1LDYgKzEyMzYsOCBAQCBwcml2YXRlOgog
ICAgIHZvaWQgc2VuZFRvdWNoQmFyTWVudURhdGFSZW1vdmVkVXBkYXRlKFdlYkNvcmU6OkhUTUxN
ZW51RWxlbWVudCYpOwogICAgIHZvaWQgc2VuZFRvdWNoQmFyTWVudUl0ZW1EYXRhQWRkZWRVcGRh
dGUoV2ViQ29yZTo6SFRNTE1lbnVJdGVtRWxlbWVudCYpOwogICAgIHZvaWQgc2VuZFRvdWNoQmFy
TWVudUl0ZW1EYXRhUmVtb3ZlZFVwZGF0ZShXZWJDb3JlOjpIVE1MTWVudUl0ZW1FbGVtZW50Jik7
CisKKyAgICB2b2lkIHBsYXRmb3JtRWRpdG9yU3RhdGVDb21tb24oY29uc3QgV2ViQ29yZTo6RnJh
bWUmLCBFZGl0b3JTdGF0ZSYpIGNvbnN0OwogI2VuZGlmCiAKICAgICB2b2lkIGRpZFJlY2VpdmVT
eW5jV2ViUGFnZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1
bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsKQEAgLTE5MDcsNyArMTkxMCw2IEBAIHByaXZhdGU6
CiAKICAgICBib29sIG1fbWFpbkZyYW1lUHJvZ3Jlc3NDb21wbGV0ZWQgeyBmYWxzZSB9OwogICAg
IGJvb2wgbV9zaG91bGREaXNwYXRjaEZha2VNb3VzZU1vdmVFdmVudHMgeyB0cnVlIH07Ci0gICAg
Ym9vbCBtX2lzRWRpdG9yU3RhdGVNaXNzaW5nUG9zdExheW91dERhdGEgeyBmYWxzZSB9OwogICAg
IGJvb2wgbV9pc1NlbGVjdGluZ1RleHRXaGlsZUluc2VydGluZ0FzeW5jaHJvbm91c2x5IHsgZmFs
c2UgfTsKIAogICAgIGVudW0gY2xhc3MgRWRpdG9yU3RhdGVJc0NvbnRlbnRFZGl0YWJsZSB7IE5v
LCBZZXMsIFVuc2V0IH07CkBAIC0xOTY1LDYgKzE5NjcsNyBAQCBwcml2YXRlOgogCiAjaWYgIVBM
QVRGT1JNKElPU19GQU1JTFkpCiBpbmxpbmUgdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybVdpbGxQZXJm
b3JtRWRpdGluZ0NvbW1hbmQoKSB7IH0KK2lubGluZSBib29sIFdlYlBhZ2U6OnBsYXRmb3JtTmVl
ZHNMYXlvdXRGb3JFZGl0b3JTdGF0ZShjb25zdCBXZWJDb3JlOjpGcmFtZSYpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CiAjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUGFnZUd0ay5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUGFnZUd0ay5jcHAKaW5kZXgg
Yzk4MmQwYjc2MjFlYzMwYmFiNDdkZWEyODc2ZTk3NjAwYWRiMzg4MS4uMWUwOGE3N2M3MWY1OTA4
MmQyYWRhOGZlYjYxZWVmYjhhNzNkNThlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlBhZ2VHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQYWdlR3RrLmNwcApAQCAtNzYsMTIgKzc2LDEwIEBAIHZv
aWQgV2ViUGFnZTo6cGxhdGZvcm1EZXRhY2goKQogewogfQogCi12b2lkIFdlYlBhZ2U6OnBsYXRm
b3JtRWRpdG9yU3RhdGUoRnJhbWUmIGZyYW1lLCBFZGl0b3JTdGF0ZSYgcmVzdWx0LCBJbmNsdWRl
UG9zdExheW91dERhdGFIaW50IHNob3VsZEluY2x1ZGVQb3N0TGF5b3V0RGF0YSkgY29uc3QKK3Zv
aWQgV2ViUGFnZTo6cGxhdGZvcm1FZGl0b3JTdGF0ZShGcmFtZSYgZnJhbWUsIEVkaXRvclN0YXRl
JiByZXN1bHQpIGNvbnN0CiB7Ci0gICAgaWYgKHNob3VsZEluY2x1ZGVQb3N0TGF5b3V0RGF0YSA9
PSBJbmNsdWRlUG9zdExheW91dERhdGFIaW50OjpObyB8fCAhZnJhbWUudmlldygpIHx8IGZyYW1l
LnZpZXcoKS0+bmVlZHNMYXlvdXQoKSkgewotICAgICAgICByZXN1bHQuaXNNaXNzaW5nUG9zdExh
eW91dERhdGEgPSB0cnVlOworICAgIGlmIChyZXN1bHQuaXNNaXNzaW5nUG9zdExheW91dERhdGEp
CiAgICAgICAgIHJldHVybjsKLSAgICB9CiAKICAgICBhdXRvJiBwb3N0TGF5b3V0RGF0YSA9IHJl
c3VsdC5wb3N0TGF5b3V0RGF0YSgpOwogICAgIHBvc3RMYXlvdXREYXRhLmNhcmV0UmVjdEF0U3Rh
cnQgPSBmcmFtZS5zZWxlY3Rpb24oKS5hYnNvbHV0ZUNhcmV0Qm91bmRzKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IGNj
YjM0OWYwMDNlMmUwNjczNDczMzBhMzhjNDBjYzU2ODJmNTE0NWMuLmY0OWNhNDY2YTRhNmQ1NTAw
ZDdkZjM0Y2I5YzZjNzJlNmUxMWI4MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0yMDAsOCArMjAwLDIxIEBAIGJvb2wg
V2ViUGFnZTo6aXNUcmFuc3BhcmVudE9yRnVsbHlDbGlwcGVkKGNvbnN0IEVsZW1lbnQmIGVsZW1l
bnQpIGNvbnN0CiAgICAgcmV0dXJuIGVuY2xvc2luZ0xheWVyICYmIGVuY2xvc2luZ0xheWVyLT5p
c1RyYW5zcGFyZW50T3JGdWxseUNsaXBwZWRSZXNwZWN0aW5nUGFyZW50RnJhbWVzKCk7CiB9CiAK
LXZvaWQgV2ViUGFnZTo6cGxhdGZvcm1FZGl0b3JTdGF0ZShGcmFtZSYgZnJhbWUsIEVkaXRvclN0
YXRlJiByZXN1bHQsIEluY2x1ZGVQb3N0TGF5b3V0RGF0YUhpbnQgc2hvdWxkSW5jbHVkZVBvc3RM
YXlvdXREYXRhKSBjb25zdAorYm9vbCBXZWJQYWdlOjpwbGF0Zm9ybU5lZWRzTGF5b3V0Rm9yRWRp
dG9yU3RhdGUoY29uc3QgRnJhbWUmIGZyYW1lKSBjb25zdAogeworICAgIC8vIElmIHdlIGhhdmUg
YSBjb21wb3NpdGlvbiBvciBhcmUgdXNpbmcgYSBoYXJkd2FyZSBrZXlib2FyZCB0aGVuIHdlIG5l
ZWQgdG8gc2VuZCB0aGUgZnVsbAorICAgIC8vIGVkaXRvciBzbyB0aGF0IHRoZSBVSVByb2Nlc3Mg
Y2FuIHVwZGF0ZSBVSSwgaW5jbHVkaW5nIHRoZSBwb3NpdGlvbiBvZiB0aGUgY2FyZXQuCisgICAg
Ym9vbCBuZWVkc0xheW91dCA9IGZyYW1lLmVkaXRvcigpLmhhc0NvbXBvc2l0aW9uKCk7CisjaWYg
IVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQorICAgIG5lZWRzTGF5b3V0IHw9IG1fa2V5Ym9hcmRJc0F0
dGFjaGVkOworI2VuZGlmCisgICAgcmV0dXJuIG5lZWRzTGF5b3V0OworfQorCit2b2lkIFdlYlBh
Z2U6OnBsYXRmb3JtRWRpdG9yU3RhdGUoRnJhbWUmIGZyYW1lLCBFZGl0b3JTdGF0ZSYgcmVzdWx0
KSBjb25zdAoreworICAgIHBsYXRmb3JtRWRpdG9yU3RhdGVDb21tb24oZnJhbWUsIHJlc3VsdCk7
CisKICAgICBGcmFtZVZpZXcqIHZpZXcgPSBmcmFtZS52aWV3KCk7CiAgICAgaWYgKGZyYW1lLmVk
aXRvcigpLmhhc0NvbXBvc2l0aW9uKCkpIHsKICAgICAgICAgUmVmUHRyPFJhbmdlPiBjb21wb3Np
dGlvblJhbmdlID0gZnJhbWUuZWRpdG9yKCkuY29tcG9zaXRpb25SYW5nZSgpOwpAQCAtMjE4LDIz
ICsyMzEsMTEgQEAgdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybUVkaXRvclN0YXRlKEZyYW1lJiBmcmFt
ZSwgRWRpdG9yU3RhdGUmIHJlc3VsdCwgSW5jbHVkZVBvc3QKICAgICAgICAgfQogICAgIH0KIAot
ICAgIC8vIFdlIG9ubHkgc2V0IHRoZSByZW1haW5pbmcgRWRpdG9yU3RhdGUgZW50cmllcyBpZiBs
YXlvdXQgaXMgZG9uZSBhcyBhIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbgotICAgIC8vIHRvIGF2
b2lkIHRoZSBuZWVkIHRvIGZvcmNlIGEgc3luY2hyb25vdXMgbGF5b3V0IGhlcmUgdG8gY29tcHV0
ZSB0aGVzZSBlbnRyaWVzLiBJZiB3ZQotICAgIC8vIGhhdmUgYSBjb21wb3NpdGlvbiBvciBhcmUg
dXNpbmcgYSBoYXJkd2FyZSBrZXlib2FyZCB0aGVuIHdlIHNlbmQgdGhlIGZ1bGwgZWRpdG9yIHN0
YXRlCi0gICAgLy8gaW1tZWRpYXRlbHkgc28gdGhhdCB0aGUgVUlQcm9jZXNzIGNhbiB1cGRhdGUg
VUksIGluY2x1ZGluZyB0aGUgcG9zaXRpb24gb2YgdGhlIGNhcmV0LgotICAgIGJvb2wgbmVlZHNM
YXlvdXQgPSAhZnJhbWUudmlldygpIHx8IGZyYW1lLnZpZXcoKS0+bmVlZHNMYXlvdXQoKTsKLSAg
ICBib29sIHJlcXVpcmVzUG9zdExheW91dERhdGEgPSBmcmFtZS5lZGl0b3IoKS5oYXNDb21wb3Np
dGlvbigpOwotI2lmICFQTEFURk9STShNQUNDQVRBTFlTVCkKLSAgICByZXF1aXJlc1Bvc3RMYXlv
dXREYXRhIHw9IG1fa2V5Ym9hcmRJc0F0dGFjaGVkOwotI2VuZGlmCi0gICAgaWYgKChzaG91bGRJ
bmNsdWRlUG9zdExheW91dERhdGEgPT0gSW5jbHVkZVBvc3RMYXlvdXREYXRhSGludDo6Tm8gfHwg
bmVlZHNMYXlvdXQpICYmICFyZXF1aXJlc1Bvc3RMYXlvdXREYXRhKSB7Ci0gICAgICAgIHJlc3Vs
dC5pc01pc3NpbmdQb3N0TGF5b3V0RGF0YSA9IHRydWU7CisgICAgaWYgKHJlc3VsdC5pc01pc3Np
bmdQb3N0TGF5b3V0RGF0YSkKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAogICAgIGF1dG8mIHBv
c3RMYXlvdXREYXRhID0gcmVzdWx0LnBvc3RMYXlvdXREYXRhKCk7Ci0gICAgCi0gICAgY29uc3Qg
VmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uID0gZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9u
KCk7CisgICAgY29uc3QgYXV0byYgc2VsZWN0aW9uID0gZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0
aW9uKCk7CiAgICAgcG9zdExheW91dERhdGEuaXNTdGFibGVTdGF0ZVVwZGF0ZSA9IG1faXNJblN0
YWJsZVN0YXRlOwogICAgIGJvb2wgc3RhcnROb2RlSXNJbnNpZGVGaXhlZFBvc2l0aW9uID0gZmFs
c2U7CiAgICAgYm9vbCBlbmROb2RlSXNJbnNpZGVGaXhlZFBvc2l0aW9uID0gZmFsc2U7CkBAIC00
NDgsNyArNDQ5LDcgQEAgYm9vbCBXZWJQYWdlOjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudChL
ZXlib2FyZEV2ZW50JiBldmVudCkKIAogICAgIC8vIEZJWE1FOiBJbnRlcnByZXQgdGhlIGV2ZW50
IGltbWVkaWF0ZWx5IHVwb24gcmVjZWl2aW5nIGl0IGluIFVJIHByb2Nlc3MsIHdpdGhvdXQgc2Vu
ZGluZyB0byBXZWJQcm9jZXNzIGZpcnN0LgogICAgIGJvb2wgZXZlbnRXYXNIYW5kbGVkID0gZmFs
c2U7Ci0gICAgYm9vbCBzZW5kUmVzdWx0ID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50
UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6SW50
ZXJwcmV0S2V5RXZlbnQoZWRpdG9yU3RhdGUoKSwgcGxhdGZvcm1FdmVudC0+dHlwZSgpID09IFBs
YXRmb3JtS2V5Ym9hcmRFdmVudDo6Q2hhciksCisgICAgYm9vbCBzZW5kUmVzdWx0ID0gV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6SW50ZXJwcmV0S2V5RXZlbnQoZWRpdG9yU3RhdGUoU2hvdWxk
UGVyZm9ybUxheW91dDo6WWVzKSwgcGxhdGZvcm1FdmVudC0+dHlwZSgpID09IFBsYXRmb3JtS2V5
Ym9hcmRFdmVudDo6Q2hhciksCiAgICAgICAgIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkludGVy
cHJldEtleUV2ZW50OjpSZXBseShldmVudFdhc0hhbmRsZWQpLCBtX3BhZ2VJRCk7CiAgICAgcmV0
dXJuIHNlbmRSZXN1bHQgJiYgZXZlbnRXYXNIYW5kbGVkOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0gYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQppbmRleCA0MzFkZmExN2Fj
YTA1YjYwZWZlOWFlMDQwM2E0MDg4MGUyODE4ZDgwLi4zMDRhNTZhNWQ4ZGQ1MmMwNmQyZTY5ZGYz
MjBlZjIzZjdmYjYyOWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvV2ViUGFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvV2ViUGFnZU1hYy5tbQpAQCAtMTMzLDE0ICsxMzMsMTQgQEAgdm9pZCBXZWJQYWdl
OjpwbGF0Zm9ybURldGFjaCgpCiAgICAgW21fbW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50IHNldFdl
YlBhZ2U6bnVsbHB0cl07CiB9CiAKLXZvaWQgV2ViUGFnZTo6cGxhdGZvcm1FZGl0b3JTdGF0ZShG
cmFtZSYgZnJhbWUsIEVkaXRvclN0YXRlJiByZXN1bHQsIEluY2x1ZGVQb3N0TGF5b3V0RGF0YUhp
bnQgc2hvdWxkSW5jbHVkZVBvc3RMYXlvdXREYXRhKSBjb25zdAordm9pZCBXZWJQYWdlOjpwbGF0
Zm9ybUVkaXRvclN0YXRlKEZyYW1lJiBmcmFtZSwgRWRpdG9yU3RhdGUmIHJlc3VsdCkgY29uc3QK
IHsKLSAgICBpZiAoc2hvdWxkSW5jbHVkZVBvc3RMYXlvdXREYXRhID09IEluY2x1ZGVQb3N0TGF5
b3V0RGF0YUhpbnQ6Ok5vIHx8ICFmcmFtZS52aWV3KCkgfHwgZnJhbWUudmlldygpLT5uZWVkc0xh
eW91dCgpIHx8ICFyZXN1bHQuaXNDb250ZW50RWRpdGFibGUpIHsKLSAgICAgICAgcmVzdWx0Lmlz
TWlzc2luZ1Bvc3RMYXlvdXREYXRhID0gdHJ1ZTsKKyAgICBwbGF0Zm9ybUVkaXRvclN0YXRlQ29t
bW9uKGZyYW1lLCByZXN1bHQpOworCisgICAgaWYgKHJlc3VsdC5pc01pc3NpbmdQb3N0TGF5b3V0
RGF0YSkKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAotICAgIGNvbnN0IFZpc2libGVTZWxlY3Rp
b24mIHNlbGVjdGlvbiA9IGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpOworICAgIGNvbnN0
IGF1dG8mIHNlbGVjdGlvbiA9IGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpOwogICAgIFJl
ZlB0cjxSYW5nZT4gc2VsZWN0ZWRSYW5nZSA9IHNlbGVjdGlvbi50b05vcm1hbGl6ZWRSYW5nZSgp
OwogICAgIGlmICghc2VsZWN0ZWRSYW5nZSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL1dlYlBhZ2VXaW4uY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL1dlYlBhZ2VXaW4uY3BwCmluZGV4IGM5
NGJkMDVjOTI0NTU3Yjk0ODNlNjEzZGQ5OWE4OGRlYjA5NzE0NGIuLmFhNDNjZTllYWQ2MjY2ZTBl
YWViYjE1YjFhZDkzOWRkZjMyZmE4MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL3dpbi9XZWJQYWdlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS93aW4vV2ViUGFnZVdpbi5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgdm9pZCBX
ZWJQYWdlOjpwbGF0Zm9ybURldGFjaCgpCiB7CiB9CiAKLXZvaWQgV2ViUGFnZTo6cGxhdGZvcm1F
ZGl0b3JTdGF0ZShGcmFtZSYgZnJhbWUsIEVkaXRvclN0YXRlJiByZXN1bHQsIEluY2x1ZGVQb3N0
TGF5b3V0RGF0YUhpbnQgc2hvdWxkSW5jbHVkZVBvc3RMYXlvdXREYXRhKSBjb25zdAordm9pZCBX
ZWJQYWdlOjpwbGF0Zm9ybUVkaXRvclN0YXRlKEZyYW1lJiwgRWRpdG9yU3RhdGUmKSBjb25zdAog
ewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93cGUv
V2ViUGFnZVdQRS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93cGUvV2Vi
UGFnZVdQRS5jcHAKaW5kZXggYzJiNTI2NTlhMzZlYTgzZTdiZGU1Y2NmMTZmZjI3M2U0ODRjODE1
Mi4uN2QxMjdmMjE4MDRjY2IxNGMwYTQ2OTZjYjY3M2U2MmNmODkzZjg4MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd3BlL1dlYlBhZ2VXUEUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3dwZS9XZWJQYWdlV1BFLmNwcApAQCAt
NTgsNyArNTgsNyBAQCB2b2lkIFdlYlBhZ2U6OnBsYXRmb3JtRGV0YWNoKCkKIHsKIH0KIAotdm9p
ZCBXZWJQYWdlOjpwbGF0Zm9ybUVkaXRvclN0YXRlKEZyYW1lJiwgRWRpdG9yU3RhdGUmLCBJbmNs
dWRlUG9zdExheW91dERhdGFIaW50KSBjb25zdAordm9pZCBXZWJQYWdlOjpwbGF0Zm9ybUVkaXRv
clN0YXRlKEZyYW1lJiwgRWRpdG9yU3RhdGUmKSBjb25zdAogewogICAgIG5vdEltcGxlbWVudGVk
KCk7CiB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggNjBkZGE1ZGI2YTIwMGFkMzIxOTg4YTU4NjczODMxMGRiZDE2ZjcxYS4u
NjVlNDZmMzFmMTc3ZWY1OGE0NjMwOTU3MDhhOWQyYWUwYTA5ZjYzMyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE5IEBACisyMDE5LTA3LTI2ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbaU9TXSBBU1NFUlRJT04gRkFJTFVSRTogIWlzTWlzc2luZ1Bvc3RMYXlvdXREYXRh
IGluIFdlYktpdDo6RWRpdG9yU3RhdGU6OnBvc3RMYXlvdXREYXRhKCkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5OTk2MAorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNTMzMjM5NjY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkIGEgdGVzdCB0byBlbnN1cmUgd2UgZG8gbm90IGFzc2VydCB3aGVuIHVz
aW5nIHRoZSBzb2Z0d2FyZSBrZXlib2FyZCB0byB0eXBlIGEgY2hhcmFjdGVyCisgICAgICAgIGlu
dG8gYSA8dGV4dGFyZWE+IGFuZCB0aGVuIGRlbGV0ZSBpdC4KKworICAgICAgICAqIFRlc3RFeHBl
Y3RhdGlvbnM6IFNraXAgdGVzdHMgaW4gZWRpdGluZy9kZWxldGluZy9pb3Mgb24gYWxsIHBsYXRm
b3Jtcy4KKyAgICAgICAgKiBlZGl0aW5nL2RlbGV0aW5nL2lvcy9iYWNrc3BhY2UtbGFzdC1jaGFy
YWN0ZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL2RlbGV0aW5nL2lv
cy9iYWNrc3BhY2UtbGFzdC1jaGFyYWN0ZXIuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZv
cm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnM6IFVuc2tpcCB0ZXN0cyBpbiBlZGl0aW5nL2RlbGV0aW5n
L2lvcyBvbiBpT1MuCisKIDIwMTktMDgtMTIgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUu
Y29tPgogCiAgICAgICAgIEFkZCBhIHRlc3QgdG8gZW5zdXJlIHRoYXQgd2UgZGlzcGF0Y2gga2V5
ZG93biBhbmQga2V5dXAgZXZlbnRzIHdoZW4gbXVsdGlwbGUga2V5cyBhcmUgcHJlc3NlZCBhdCB0
aGUgc2FtZSB0aW1lCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zIGIv
TGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA5N2QzZWZhNzQwYmFiZTliZWYzZWY0
MDg0ZGVhMThlM2M2MTRjM2I0Li5kOGRlZDRiNjM4NDZhNDYxNTE5NmVmYTIwY2IxY2ZhMzc4MzYy
YTVmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91
dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTE5LDYgKzE5LDcgQEAgZWRpdGluZy9pbnB1dC9p
b3MgWyBTa2lwIF0KIGVkaXRpbmcvZmluZCBbIFNraXAgXQogZWRpdGluZy9wYXN0ZWJvYXJkL2d0
ayBbIFNraXAgXQogZWRpdGluZy9zZWxlY3Rpb24vaW9zIFsgU2tpcCBdCitlZGl0aW5nL2RlbGV0
aW5nL2lvcyBbIFNraXAgXQogZWRpdGluZy91bmRvLW1hbmFnZXIgWyBTa2lwIF0KIHRpbGVkLWRy
YXdpbmcgWyBTa2lwIF0KIGZhc3QvY3NzL3dhdGNob3MgWyBTa2lwIF0KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2VkaXRpbmcvZGVsZXRpbmcvaW9zL2JhY2tzcGFjZS1sYXN0LWNoYXJhY3Rlci1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2RlbGV0aW5nL2lvcy9iYWNrc3BhY2Ut
bGFzdC1jaGFyYWN0ZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUwNTY0ZDk4ZGFmMjgwOTdj
MGI0MGM1ZjNiNTNjOGRhNjQxMGIwYjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9l
ZGl0aW5nL2RlbGV0aW5nL2lvcy9iYWNrc3BhY2UtbGFzdC1jaGFyYWN0ZXItZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMTEgQEAKK1RoaXMgdGVzdHMgdXNpbmcgdGhlIHNvZnR3YXJlIGtleWJvYXJk
IGFuZCBwcmVzc2luZyAndycgdGhlbiBiYWNrc3BhY2UgZGVsZXRlcyB0aGUgJ3cnIGFuZCBkb2Vz
IG5vdCBjYXVzZSBhbiBhc3NlcnRpb24gZmFpbHVyZSBpbiBhIGRlYnVnIGJ1aWxkLgorCitPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
aW5wdXQiKS52YWx1ZSBpcyAidyIKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImlucHV0
IikudmFsdWUgaXMgIiIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL2RlbGV0aW5nL2lvcy9i
YWNrc3BhY2UtbGFzdC1jaGFyYWN0ZXIuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvZGVsZXRp
bmcvaW9zL2JhY2tzcGFjZS1sYXN0LWNoYXJhY3Rlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFjZjUxZjM0
OTNmNGM0Mzc0NTU3ZDRmOThiOGU0YTQ1ZTdlYTE5NjgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9lZGl0aW5nL2RlbGV0aW5nL2lvcy9iYWNrc3BhY2UtbGFzdC1jaGFyYWN0ZXIuaHRt
bApAQCAtMCwwICsxLDQ2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8ZGl2IGlkPSJ0ZXN0LWNvbnRhaW5lciI+CisgICAgPHRleHRhcmVhIGlkPSJp
bnB1dCI+PC90ZXh0YXJlYT4KKyAgICA8dGV4dGFyZWEgaWQ9Im91dHB1dCIgcmVhZG9ubHk+PC90
ZXh0YXJlYT4KKzwvZGl2PgorPHNjcmlwdD4KK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsK
KworbGV0IGlucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImlucHV0Iik7CisKK2Z1bmN0
aW9uIGFwcGVuZEFOZXdsaW5lKCkKK3sKKyAgICBsZXQgb3V0cHV0RWxlbWVudCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJvdXRwdXQiKTsKKyAgICBvdXRwdXRFbGVtZW50LnZhbHVlID0gb3V0
cHV0RWxlbWVudC52YWx1ZSArICJcbiI7Cit9CisKK2FzeW5jIGZ1bmN0aW9uIHJ1blRlc3QoKQor
eworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgYXdhaXQgVUlIZWxwZXIuc2V0
SGFyZHdhcmVLZXlib2FyZEF0dGFjaGVkKGZhbHNlKTsKKworICAgIGF3YWl0IFVJSGVscGVyLmNh
bGxGdW5jdGlvbkFuZFdhaXRGb3JFdmVudCgoKSA9PiB3aW5kb3cudGVzdFJ1bm5lciAmJiBVSUhl
bHBlci5hY3RpdmF0ZUVsZW1lbnQoaW5wdXQpLCBpbnB1dCwgImZvY3VzIik7CisKKyAgICBhd2Fp
dCBVSUhlbHBlci5jYWxsRnVuY3Rpb25BbmRXYWl0Rm9yRXZlbnQoKCkgPT4gd2luZG93LnRlc3RS
dW5uZXIgJiYgVUlIZWxwZXIua2V5RG93bigidyIpLCBpbnB1dCwgImlucHV0Iik7CisgICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCdkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW5wdXQiKS52YWx1
ZScsICJ3Iik7CisKKyAgICBhd2FpdCBVSUhlbHBlci5jYWxsRnVuY3Rpb25BbmRXYWl0Rm9yRXZl
bnQoKCkgPT4gd2luZG93LnRlc3RSdW5uZXIgJiYgVUlIZWxwZXIua2V5RG93bigiXGIiKSwgaW5w
dXQsICJpbnB1dCIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImlucHV0IikudmFsdWUnLCAiIik7CisKKyAgICBkb2N1bWVudC5ib2R5LnJlbW92
ZUNoaWxkKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0LWNvbnRhaW5lciIpKTsKKyAgICBm
aW5pc2hKU1Rlc3QoKTsKK30KKworZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdXNpbmcgdGhlIHNv
ZnR3YXJlIGtleWJvYXJkIGFuZCBwcmVzc2luZyAndycgdGhlbiA8a2JkPmJhY2tzcGFjZTwva2Jk
PiBkZWxldGVzIHRoZSAndycgYW5kIGRvZXMgbm90IGNhdXNlIGFuIGFzc2VydGlvbiBmYWlsdXJl
IGluIGEgZGVidWcgYnVpbGQuIikKK2lucHV0LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLCBh
cHBlbmRBTmV3bGluZSk7CisKK3J1blRlc3QoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA5YzgyNDgz
NzNkNzc1MDMxNDg3ZDFkNmE3YzVmMjY4MTRmMGI5NzkwLi5hYWQ5ZjQwZTQ0MWU3ZmRlOGUyNzYz
ZDMzYmVkNzRlNzBiYTZmYzcxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mv
VGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVj
dGF0aW9ucwpAQCAtOCw2ICs4LDcgQEAKIAogYWNjZXNzaWJpbGl0eS9pb3Mtc2ltdWxhdG9yIFsg
UGFzcyBdCiBkaXNwbGF5bGlzdHMgWyBQYXNzIF0KK2VkaXRpbmcvZGVsZXRpbmcvaW9zIFsgUGFz
cyBdCiBodHRwL3Rlc3RzL3F1aWNrbG9vayBbIFBhc3MgXQogbWVkaWEvaW9zIFsgUGFzcyBdCiBx
dWlja2xvb2sgWyBQYXNzIF0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393899</attachid>
            <date>2020-03-18 13:51:16 -0700</date>
            <delta_ts>2020-03-18 13:55:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-199960-20200318135115.patch</filename>
            <type>text/plain</type>
            <size>28030</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4Mjg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDBiZjNmMTkwMDhhNWZiZjc3
ZWZhNThlMjE3NWVmYTExMmIzYWZlYTYuLmU3NzIxMGViYTVmMWU2Yjc4MThiNDE3MDFlYzg1YmMy
YjRlYTY1YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjEgQEAKKzIwMjAtMDMtMTggIERhbmllbCBC
YXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIEFTU0VSVElPTiBGQUlM
VVJFOiAhaXNNaXNzaW5nUG9zdExheW91dERhdGEgaW4gV2ViS2l0OjpFZGl0b3JTdGF0ZTo6cG9z
dExheW91dERhdGEoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTk5OTYwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81MzMyMzk2Nj4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZhY3RvciB0aGUgY29t
cHV0YXRpb24gb2YgZWRpdG9yIHN0YXRlIHNvIHRoYXQgd2UgY2FuIHJlcXVlc3QgdGhhdCBhIGxh
eW91dCBiZSBwZXJmb3JtZWQKKyAgICAgICAgZWFjaCB0aW1lIHdlIGNvbXB1dGUgdGhlIGVkaXRv
ciBzdGF0ZSBhcyBwYXJ0IG9mIGFza2luZyB0aGUgVUkgcHJvY2VzcyB0byBpbnRlcnByZXQgYSBr
ZXkKKyAgICAgICAgZXZlbnQuIFRoZSBmdWxsIChyZWFkOiBhZnRlciBsYXlvdXQpIGVkaXRvciBz
dGF0ZSBpcyBuZWVkZWQgZm9yIFVJS2l0IHRvIHBlcmZvcm0gYSBkZWxldGlvbgorICAgICAgICBi
ZWNhdXNlIFVJS2l0IHdhbnRzIHRvIGtub3cgaG93IG1hbnkgY2hhcmFjdGVycyBhcmUgYmVmb3Jl
IHRoZSBzZWxlY3Rpb24uIE90aGVyd2lzZSwgd2UgaGl0CisgICAgICAgIGFuIGFzc2VydCBkdWUg
dG8gdGhlIGZhY3QgdGhlIGxhc3QgZWRpdG9yIHN0YXRlIHNlbnQgKHdoZW4gdGhlIFdlYiBwcm9j
ZXNzIGFza2VkIHRoZSBVSSBwcm9jZXNzCisgICAgICAgIHRvIGludGVycHJldCB0aGUga2V5KSBp
cyBtaXNzaW5nIGxheW91dCBkYXRhLgorCisgICAgICAgIFRoZSByZWZhY3RvcmluZyBhbHNvIG1v
dmVzIHRoZSBDb2NvYS1jb21tb24gY29kZSBvdXQgb2YgdGhlIHBsYXRmb3JtLWluZGVwZW5kZW50
IFdlYlBhZ2UuY3BwCisgICAgICAgIGZpbGUgaW50byBXZWJQYWdlQ29jb2EubW0uCisKKyAgICAg
ICAgT25lIHNpZGUgZWZmZWN0IG9mIHRoZSByZWZhY3RvcmluZyBpcyB0aGF0IHdlIG5vIGxvbmdl
ciBhbGxvdyB0aGUgcGxhdGZvcm1FZGl0b3JTdGF0ZSgpIGZ1bmN0aW9uCisgICAgICAgIHRvIG92
ZXJyaWRlIHRoZSBpc01pc3NpbmdQb3N0TGF5b3V0RGF0YSBiaXQuIEN1cnJlbnRseSBpdCBjYW4g
ZXZlbiB0aG91Z2ggdGhlIGNhbGxpbmcgY29kZSwgdGhlCisgICAgICAgIHBsYXRmb3JtIGluZGVw
ZW5kZW50IGNvZGUgKFBJRSkgaW4gV2ViUGFnZSwgbWF5IGhhdmUgYXR0YWNoZWQgbGF5b3V0IGRh
dGEuIE5vdyB0aGUgUElFIGNvZGUgc2V0cworICAgICAgICB0aGlzIGJpdCBpZiBpdCBhdHRhY2hl
ZCBsYXlvdXQgZGF0YSBhbmQgdGhlIHBsYXRmb3JtRWRpdG9yU3RhdGUoKSBmdW5jdGlvbiBvbmx5
IGF0dGFjaGVzIG1vcmUKKyAgICAgICAgbGF5b3V0IGRhdGEgaWYgdGhhdCBiaXQgaXMgc2V0LiBw
bGF0Zm9ybUVkaXRvclN0YXRlKCkgbmV2ZXIgdW5zZXRzIHRoYXQgYml0IChpLmUuIHNldHMgaXNN
aXNzaW5nUG9zdExheW91dERhdGEKKyAgICAgICAgdG8gdHJ1ZSkuCisKKyAgICAgICAgVGhlIHBh
dGNoIGFsc28gcmVtb3ZlcyBtX2lzRWRpdG9yU3RhdGVNaXNzaW5nUG9zdExheW91dERhdGEgaW4g
V2ViUGFnZS5oLiBUaGlzIGluc3RhbmNlIHZhcmlhYmxlCisgICAgICAgIGhhcyBiZWVuIHVudXNl
ZCBzaW5jZSA8aHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzIyMTA2NC93ZWJraXQ+
LiBBbHNvIHdlIGhhdmVuJ3QgYmVlbiB1c2luZworICAgICAgICBJbmNsdWRlUG9zdExheW91dERh
dGFIaW50OjpObyBzaW5jZSB0aGUgbGFzdCByZWZlcmVuY2UgdG8gaXQgd2FzIHJlbW92ZWQgaW4g
PGh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yNDQ0OTQvd2Via2l0Pi4KKworICAg
ICAgICAqIFNoYXJlZC9FZGl0b3JTdGF0ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9Db2NvYS9XZWJQYWdlQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBsYXRm
b3JtRWRpdG9yU3RhdGVDb21tb24gY29uc3QpOiBBZGRlZC4gTW92ZWQgQ29jb2EtY29tbW9uIGNv
ZGUgZnJvbSBXZWJQYWdlLmNwcAorICAgICAgICB0byBoZXJlLgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZWRpdG9y
U3RhdGUgY29uc3QpOiBNb3ZlIENvY29hLWNvbW1vbiBjb2RlIHRvIFdlYlBhZ2VDb2NvYS5tbS4g
Q2hhbmdlIGVudW0gdG8KKyAgICAgICAgdHJhY2sgd2hldGhlciBhIGxheW91dCBzaG91bGQgYmUg
cGVyZm9ybWVkLiBLZWVwIHRoZSBjdXJyZW50IGJlaGF2aW9yIG9mIG9ubHkgaW5jbHVkaW5nIHBv
c3QgbGF5b3V0CisgICAgICAgIGRhdGEgaWYgdGhlIGZyYW1lIHZpZXcgZG9lcyBub3QgbmVlZCBh
IGxheW91dC4gVGhpcyBiZWhhdmlvciBpcyBlbmNvZGVkIGluIHRoZSBlbnVtZXJhdG9yIFNob3Vs
ZFBlcmZvcm1MYXlvdXQ6OkRlZmF1bHQuCisgICAgICAgIHdoaWNoIGlzIHRoZSBkZWZhdWx0IGFy
Z3VtZW50IHZhbHVlIGZvciB0aGUgYXJndW1lbnQgc2hvdWxkUGVyZm9ybUxheW91dC4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpwbGF0Zm9ybU5lZWRzTGF5b3V0Rm9yRWRpdG9yU3RhdGUgY29uc3QpOiBBZGRlZC4gTm9u
LUNvY29hIHBvcnQgaW1wbGVtZW50YXRpb24KKyAgICAgICAgdGhhdCByZXR1cm5zIGZhbHNlLgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUGFnZUd0ay5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtRWRpdG9yU3RhdGUgY29uc3QpOiBFYXJseSByZXR1
cm4gaWYgaXNNaXNzaW5nUG9zdExheW91dERhdGEgaXMgdHJ1ZS4KKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OnBsYXRmb3JtTmVlZHNMYXlvdXRGb3JFZGl0b3JTdGF0ZSBjb25zdCk6IEFkZGVkLiBLZWVwIHRo
ZSBjdXJyZW50IGJlaGF2aW9yIG9mCisgICAgICAgIHBlcmZvcm1pbmcgYSBsYXlvdXQgaWYgd2Ug
aGF2ZSBhIGNvbXBvc2l0aW9uIG9yIGEgaGFyZHdhcmUga2V5Ym9hcmQgaXMgYXR0YWNoZWQuCisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtRWRpdG9yU3RhdGUgY29uc3QpOiBDYWxs
IHBsYXRmb3JtRWRpdG9yU3RhdGVDb21tb24oKS4gQmFpbCBvdXQgZWFybHkKKyAgICAgICAgaWYg
aXNNaXNzaW5nUG9zdExheW91dERhdGEgaXMgdHJ1ZS4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQpOiBUaGUgaW1wb3J0YW50IHBhcnQgb2YgdGhp
cyBwYXRjaC4gUmVxdWVzdCBhIGxheW91dAorICAgICAgICB3aGVuIGNvbXB1dGluZyB0aGUgZWRp
dG9yIHN0YXRlIHRoYXQgd2Ugd2lsbCBzZW5kIHRvIHRoZSBVSSBwcm9jZXNzLgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6cGxhdGZvcm1FZGl0b3JTdGF0ZSBjb25zdCk6IENhbGwgcGxhdGZvcm1FZGl0b3JT
dGF0ZUNvbW1vbigpLiBCYWlsIG91dCBlYXJseQorICAgICAgICBpZiBpc01pc3NpbmdQb3N0TGF5
b3V0RGF0YSBpcyB0cnVlLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS93aW4vV2ViUGFn
ZVdpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtRWRpdG9yU3RhdGUg
Y29uc3QpOiBVcGRhdGUgYXMgbmVlZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS93
cGUvV2ViUGFnZVdQRS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtRWRp
dG9yU3RhdGUgY29uc3QpOiBEaXR0by4KKwogMjAyMC0wMy0xMCAgTWVnYW4gR2FyZG5lciAgPG1l
Z2FuX2dhcmRuZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEZpbGUgdXBsb2FkIGNhbmNlbHMgYmVm
b3JlIGZpbGVzIGNhbiBiZSB1cGxvYWRlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0VkaXRvclN0YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0b3JTdGF0ZS5oCmlu
ZGV4IDZmYWE3Y2U4MTUxZjE5Yzc5MTQzMWU2YmY4MTk3YWZhZThkZWM4OTAuLmIzOTYwNzdlNTc0
MGRlMTg3NDgwNjMyZjZhM2ZkY2E5MGQ3MTYzNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0VkaXRvclN0YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRWRpdG9yU3Rh
dGUuaApAQCAtNzQsNyArNzQsNyBAQCBzdHJ1Y3QgRWRpdG9yU3RhdGUgewogICAgIGJvb2wgaXNJ
blBhc3N3b3JkRmllbGQgeyBmYWxzZSB9OwogICAgIGJvb2wgaXNJblBsdWdpbiB7IGZhbHNlIH07
CiAgICAgYm9vbCBoYXNDb21wb3NpdGlvbiB7IGZhbHNlIH07Ci0gICAgYm9vbCBpc01pc3NpbmdQ
b3N0TGF5b3V0RGF0YSB7IGZhbHNlIH07CisgICAgYm9vbCBpc01pc3NpbmdQb3N0TGF5b3V0RGF0
YSB7IHRydWUgfTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgV2ViQ29yZTo6SW50
UmVjdCBmaXJzdE1hcmtlZFJlY3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KaW5kZXggOGI2ODFhYWE4NDk4YWFlYjhi
ZjNiNTRmMDIzMmNiYWFmM2ViYjUxYS4uOTM1NmMxOWQ2MzljODEyMzVhZTUyNDA1NjU0MGQwNjFj
OWE1MzJjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29j
b2EvV2ViUGFnZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L0NvY29hL1dlYlBhZ2VDb2NvYS5tbQpAQCAtMzUsMTAgKzM1LDEzIEBACiAjaW1wb3J0ICJXZWJS
ZW1vdGVPYmplY3RSZWdpc3RyeS5oIgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9MYXVuY2hTZXJ2
aWNlc1NQSS5oPgogI2ltcG9ydCA8V2ViQ29yZS9EaWN0aW9uYXJ5TG9va3VwLmg+CisjaW1wb3J0
IDxXZWJDb3JlL0VkaXRpbmcuaD4KICNpbXBvcnQgPFdlYkNvcmUvRWRpdG9yLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0V2ZW50SGFuZGxlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9Gb2N1c0NvbnRyb2xs
ZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvSFRNTENvbnZlcnRlci5oPgorI2ltcG9ydCA8V2ViQ29y
ZS9IVE1MT0xpc3RFbGVtZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0hUTUxVTGlzdEVsZW1lbnQu
aD4KICNpbXBvcnQgPFdlYkNvcmUvSGl0VGVzdFJlc3VsdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9O
b2RlUmVuZGVyU3R5bGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGF5bWVudENvb3JkaW5hdG9yLmg+
CkBAIC0zMDUsNiArMzA4LDcgQEAgUmV0YWluUHRyPENGRGF0YVJlZj4gV2ViUGFnZTo6cGRmU25h
cHNob3RBdFNpemUoSW50UmVjdCByZWN0LCBJbnRTaXplIGJpdG1hcFNpemUKICAgICByZXR1cm4g
ZGF0YTsKIH0KIAorCiB2b2lkIFdlYlBhZ2U6OmdldFByb2Nlc3NEaXNwbGF5TmFtZShDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICNpZiBQ
TEFURk9STShNQUMpCkBAIC0zMTQsNiArMzE4LDcxIEBAIHZvaWQgV2ViUGFnZTo6Z2V0UHJvY2Vz
c0Rpc3BsYXlOYW1lKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBsZXRp
CiAjZW5kaWYKIH0KIAordm9pZCBXZWJQYWdlOjpwbGF0Zm9ybUVkaXRvclN0YXRlQ29tbW9uKGNv
bnN0IEZyYW1lJiBmcmFtZSwgRWRpdG9yU3RhdGUmIHJlc3VsdCkgY29uc3QKK3sKKyAgICBpZiAo
cmVzdWx0LmlzTWlzc2luZ1Bvc3RMYXlvdXREYXRhKQorICAgICAgICByZXR1cm47CisKKyAgICBj
b25zdCBhdXRvJiBzZWxlY3Rpb24gPSBmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKTsKKwor
ICAgIGlmICghcmVzdWx0LmlzQ29udGVudEVkaXRhYmxlIHx8IHNlbGVjdGlvbi5pc05vbmUoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byYgcG9zdExheW91dERhdGEgPSByZXN1bHQucG9z
dExheW91dERhdGEoKTsKKyAgICBpZiAoYXV0byBlZGl0aW5nU3R5bGUgPSBFZGl0aW5nU3R5bGU6
OnN0eWxlQXRTZWxlY3Rpb25TdGFydChzZWxlY3Rpb24pKSB7CisgICAgICAgIGlmIChlZGl0aW5n
U3R5bGUtPmhhc1N0eWxlKENTU1Byb3BlcnR5Rm9udFdlaWdodCwgImJvbGQiX3MpKQorICAgICAg
ICAgICAgcG9zdExheW91dERhdGEudHlwaW5nQXR0cmlidXRlcyB8PSBBdHRyaWJ1dGVCb2xkOwor
CisgICAgICAgIGlmIChlZGl0aW5nU3R5bGUtPmhhc1N0eWxlKENTU1Byb3BlcnR5Rm9udFN0eWxl
LCAiaXRhbGljIl9zKSB8fCBlZGl0aW5nU3R5bGUtPmhhc1N0eWxlKENTU1Byb3BlcnR5Rm9udFN0
eWxlLCAib2JsaXF1ZSJfcykpCisgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS50eXBpbmdBdHRy
aWJ1dGVzIHw9IEF0dHJpYnV0ZUl0YWxpY3M7CisKKyAgICAgICAgaWYgKGVkaXRpbmdTdHlsZS0+
aGFzU3R5bGUoQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCwgInVuZGVy
bGluZSJfcykpCisgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS50eXBpbmdBdHRyaWJ1dGVzIHw9
IEF0dHJpYnV0ZVVuZGVybGluZTsKKworICAgICAgICBpZiAoYXV0byogc3R5bGVQcm9wZXJ0aWVz
ID0gZWRpdGluZ1N0eWxlLT5zdHlsZSgpKSB7CisgICAgICAgICAgICBib29sIGlzTGVmdFRvUmln
aHQgPSBzdHlsZVByb3BlcnRpZXMtPnByb3BlcnR5QXNWYWx1ZUlEKENTU1Byb3BlcnR5RGlyZWN0
aW9uKSA9PSBDU1NWYWx1ZUx0cjsKKyAgICAgICAgICAgIHN3aXRjaCAoc3R5bGVQcm9wZXJ0aWVz
LT5wcm9wZXJ0eUFzVmFsdWVJRChDU1NQcm9wZXJ0eVRleHRBbGlnbikpIHsKKyAgICAgICAgICAg
IGNhc2UgQ1NTVmFsdWVSaWdodDoKKyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVXZWJraXRSaWdo
dDoKKyAgICAgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS50ZXh0QWxpZ25tZW50ID0gUmlnaHRB
bGlnbm1lbnQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENTU1Zh
bHVlTGVmdDoKKyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVXZWJraXRMZWZ0OgorICAgICAgICAg
ICAgICAgIHBvc3RMYXlvdXREYXRhLnRleHRBbGlnbm1lbnQgPSBMZWZ0QWxpZ25tZW50OworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUNlbnRlcjoKKyAg
ICAgICAgICAgIGNhc2UgQ1NTVmFsdWVXZWJraXRDZW50ZXI6CisgICAgICAgICAgICAgICAgcG9z
dExheW91dERhdGEudGV4dEFsaWdubWVudCA9IENlbnRlckFsaWdubWVudDsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVKdXN0aWZ5OgorICAgICAgICAg
ICAgICAgIHBvc3RMYXlvdXREYXRhLnRleHRBbGlnbm1lbnQgPSBKdXN0aWZpZWRBbGlnbm1lbnQ7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlU3RhcnQ6
CisgICAgICAgICAgICAgICAgcG9zdExheW91dERhdGEudGV4dEFsaWdubWVudCA9IGlzTGVmdFRv
UmlnaHQgPyBMZWZ0QWxpZ25tZW50IDogUmlnaHRBbGlnbm1lbnQ7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlRW5kOgorICAgICAgICAgICAgICAgIHBv
c3RMYXlvdXREYXRhLnRleHRBbGlnbm1lbnQgPSBpc0xlZnRUb1JpZ2h0ID8gUmlnaHRBbGlnbm1l
bnQgOiBMZWZ0QWxpZ25tZW50OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGlmIChhdXRvIHRleHRDb2xvciA9IHN0eWxlUHJvcGVydGllcy0+cHJvcGVydHlBc0NvbG9y
KENTU1Byb3BlcnR5Q29sb3IpKQorICAgICAgICAgICAgICAgIHBvc3RMYXlvdXREYXRhLnRleHRD
b2xvciA9ICp0ZXh0Q29sb3I7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoYXV0byogZW5j
bG9zaW5nTGlzdEVsZW1lbnQgPSBlbmNsb3NpbmdMaXN0KHNlbGVjdGlvbi5zdGFydCgpLmNvbnRh
aW5lck5vZGUoKSkpIHsKKyAgICAgICAgaWYgKGlzPEhUTUxVTGlzdEVsZW1lbnQ+KCplbmNsb3Np
bmdMaXN0RWxlbWVudCkpCisgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS5lbmNsb3NpbmdMaXN0
VHlwZSA9IFVub3JkZXJlZExpc3Q7CisgICAgICAgIGVsc2UgaWYgKGlzPEhUTUxPTGlzdEVsZW1l
bnQ+KCplbmNsb3NpbmdMaXN0RWxlbWVudCkpCisgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS5l
bmNsb3NpbmdMaXN0VHlwZSA9IE9yZGVyZWRMaXN0OworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisKKyAgICBwb3N0TGF5b3V0RGF0YS5iYXNl
V3JpdGluZ0RpcmVjdGlvbiA9IGZyYW1lLmVkaXRvcigpLmJhc2VXcml0aW5nRGlyZWN0aW9uRm9y
U2VsZWN0aW9uU3RhcnQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAv
LyBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKaW5kZXggMWJhNzg5YWQxYTMxYzQwMGNhYjE3ZTAzZWYyY2I0M2E2MTA4YzMwOS4u
NWMyMTlhN2NmOTAzNjc0MzZlNWQxOTIyZjIxZWZkNTZmZWJkYjNmZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTE3OCwxMiArMTc4LDEwIEBA
CiAjaW5jbHVkZSA8V2ViQ29yZS9IVE1MSW5wdXRFbGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9IVE1MTWVudUVsZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hUTUxNZW51SXRlbUVsZW1l
bnQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0hUTUxPTGlzdEVsZW1lbnQuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0hUTUxQbHVnSW5FbGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IVE1MUGx1Z0lu
SW1hZ2VFbGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IVE1MU2VsZWN0RWxlbWVudC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaD4KLSNpbmNsdWRl
IDxXZWJDb3JlL0hUTUxVTGlzdEVsZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hpc3RvcnlD
b250cm9sbGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IaXN0b3J5SXRlbS5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvSGl0VGVzdFJlc3VsdC5oPgpAQCAtMTA1Myw5ICsxMDUxLDEwIEBAIFdlYkNvcmU6
OldlYkdMTG9hZFBvbGljeSBXZWJQYWdlOjpyZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwoV2ViRnJh
bWUqLCBjb25zdCBVUkwmCiB9CiAjZW5kaWYKIAotRWRpdG9yU3RhdGUgV2ViUGFnZTo6ZWRpdG9y
U3RhdGUoSW5jbHVkZVBvc3RMYXlvdXREYXRhSGludCBzaG91bGRJbmNsdWRlUG9zdExheW91dERh
dGEpIGNvbnN0CitFZGl0b3JTdGF0ZSBXZWJQYWdlOjplZGl0b3JTdGF0ZShTaG91bGRQZXJmb3Jt
TGF5b3V0IHNob3VsZFBlcmZvcm1MYXlvdXQpIGNvbnN0CiB7Ci0gICAgRnJhbWUmIGZyYW1lID0g
bV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKKyAgICAvLyBS
ZWYgdGhlIGZyYW1lIGJlY2F1c2UgdGhpcyBmdW5jdGlvbiBtYXkgcGVyZm9ybSBsYXlvdXQsIHdo
aWNoIG1heSBjYXVzZSBmcmFtZSBkZXN0cnVjdGlvbi4KKyAgICBSZWY8RnJhbWU+IGZyYW1lID0g
bV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKIAogICAgIEVk
aXRvclN0YXRlIHJlc3VsdDsKIApAQCAtMTA2OCw4ICsxMDY3LDggQEAgRWRpdG9yU3RhdGUgV2Vi
UGFnZTo6ZWRpdG9yU3RhdGUoSW5jbHVkZVBvc3RMYXlvdXREYXRhSGludCBzaG91bGRJbmNsdWRl
UG9zdExheW8KICAgICAgICAgfQogICAgIH0KIAotICAgIGNvbnN0IFZpc2libGVTZWxlY3Rpb24m
IHNlbGVjdGlvbiA9IGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpOwotICAgIGNvbnN0IEVk
aXRvciYgZWRpdG9yID0gZnJhbWUuZWRpdG9yKCk7CisgICAgY29uc3QgVmlzaWJsZVNlbGVjdGlv
biYgc2VsZWN0aW9uID0gZnJhbWUtPnNlbGVjdGlvbigpLnNlbGVjdGlvbigpOworICAgIGNvbnN0
IEVkaXRvciYgZWRpdG9yID0gZnJhbWUtPmVkaXRvcigpOwogCiAgICAgcmVzdWx0LnNlbGVjdGlv
bklzTm9uZSA9IHNlbGVjdGlvbi5pc05vbmUoKTsKICAgICByZXN1bHQuc2VsZWN0aW9uSXNSYW5n
ZSA9IHNlbGVjdGlvbi5pc1JhbmdlKCk7CkBAIC0xMDc5LDExICsxMDc4LDE1IEBAIEVkaXRvclN0
YXRlIFdlYlBhZ2U6OmVkaXRvclN0YXRlKEluY2x1ZGVQb3N0TGF5b3V0RGF0YUhpbnQgc2hvdWxk
SW5jbHVkZVBvc3RMYXlvCiAgICAgcmVzdWx0Lmhhc0NvbXBvc2l0aW9uID0gZWRpdG9yLmhhc0Nv
bXBvc2l0aW9uKCk7CiAgICAgcmVzdWx0LnNob3VsZElnbm9yZVNlbGVjdGlvbkNoYW5nZXMgPSBl
ZGl0b3IuaWdub3JlU2VsZWN0aW9uQ2hhbmdlcygpIHx8IChlZGl0b3IuY2xpZW50KCkgJiYgIWVk
aXRvci5jbGllbnQoKS0+c2hvdWxkUmV2ZWFsQ3VycmVudFNlbGVjdGlvbkFmdGVySW5zZXJ0aW9u
KCkpOwogCi0gICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gZnJhbWUuZG9jdW1lbnQoKSkKLSAgICAg
ICAgcmVzdWx0Lm9yaWdpbklkZW50aWZpZXJGb3JQYXN0ZWJvYXJkID0gZG9jdW1lbnQtPm9yaWdp
bklkZW50aWZpZXJGb3JQYXN0ZWJvYXJkKCk7CisgICAgYXV0byYgZG9jdW1lbnQgPSAqZnJhbWUt
PmRvY3VtZW50KCk7CisgICAgcmVzdWx0Lm9yaWdpbklkZW50aWZpZXJGb3JQYXN0ZWJvYXJkID0g
ZG9jdW1lbnQub3JpZ2luSWRlbnRpZmllckZvclBhc3RlYm9hcmQoKTsKKworICAgIGlmIChzaG91
bGRQZXJmb3JtTGF5b3V0ID09IFNob3VsZFBlcmZvcm1MYXlvdXQ6OlllcyB8fCBwbGF0Zm9ybU5l
ZWRzTGF5b3V0Rm9yRWRpdG9yU3RhdGUoZnJhbWUpKQorICAgICAgICBkb2N1bWVudC51cGRhdGVM
YXlvdXQoKTsgLy8gTWF5IGNhdXNlIGZyYW1lIGRlc3RydWN0aW9uCisKKyAgICBpZiAoYXV0byog
ZnJhbWVWaWV3ID0gZG9jdW1lbnQudmlldygpOyBmcmFtZVZpZXcgJiYgIWZyYW1lVmlldy0+bmVl
ZHNMYXlvdXQoKSkgeworICAgICAgICByZXN1bHQuaXNNaXNzaW5nUG9zdExheW91dERhdGEgPSBm
YWxzZTsKIAotICAgIGJvb2wgY2FuSW5jbHVkZVBvc3RMYXlvdXREYXRhID0gZnJhbWUudmlldygp
ICYmICFmcmFtZS52aWV3KCktPm5lZWRzTGF5b3V0KCk7Ci0gICAgaWYgKHNob3VsZEluY2x1ZGVQ
b3N0TGF5b3V0RGF0YSA9PSBJbmNsdWRlUG9zdExheW91dERhdGFIaW50OjpZZXMgJiYgY2FuSW5j
bHVkZVBvc3RMYXlvdXREYXRhKSB7CiAgICAgICAgIGF1dG8mIHBvc3RMYXlvdXREYXRhID0gcmVz
dWx0LnBvc3RMYXlvdXREYXRhKCk7CiAgICAgICAgIHBvc3RMYXlvdXREYXRhLmNhbkN1dCA9IGVk
aXRvci5jYW5DdXQoKTsKICAgICAgICAgcG9zdExheW91dERhdGEuY2FuQ29weSA9IGVkaXRvci5j
YW5Db3B5KCk7CkBAIC0xMDkxLDY2ICsxMDk0LDkgQEAgRWRpdG9yU3RhdGUgV2ViUGFnZTo6ZWRp
dG9yU3RhdGUoSW5jbHVkZVBvc3RMYXlvdXREYXRhSGludCBzaG91bGRJbmNsdWRlUG9zdExheW8K
IAogICAgICAgICBpZiAobV9uZWVkc0ZvbnRBdHRyaWJ1dGVzKQogICAgICAgICAgICAgcG9zdExh
eW91dERhdGEuZm9udEF0dHJpYnV0ZXMgPSBlZGl0b3IuZm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlv
blN0YXJ0KCk7Ci0KLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICAgICAgaWYgKHJlc3VsdC5pc0Nv
bnRlbnRFZGl0YWJsZSAmJiAhc2VsZWN0aW9uLmlzTm9uZSgpKSB7Ci0gICAgICAgICAgICBpZiAo
YXV0byBlZGl0aW5nU3R5bGUgPSBFZGl0aW5nU3R5bGU6OnN0eWxlQXRTZWxlY3Rpb25TdGFydChz
ZWxlY3Rpb24pKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGVkaXRpbmdTdHlsZS0+aGFzU3R5bGUo
Q1NTUHJvcGVydHlGb250V2VpZ2h0LCAiYm9sZCIpKQotICAgICAgICAgICAgICAgICAgICBwb3N0
TGF5b3V0RGF0YS50eXBpbmdBdHRyaWJ1dGVzIHw9IEF0dHJpYnV0ZUJvbGQ7Ci0KLSAgICAgICAg
ICAgICAgICBpZiAoZWRpdGluZ1N0eWxlLT5oYXNTdHlsZShDU1NQcm9wZXJ0eUZvbnRTdHlsZSwg
Iml0YWxpYyIpIHx8IGVkaXRpbmdTdHlsZS0+aGFzU3R5bGUoQ1NTUHJvcGVydHlGb250U3R5bGUs
ICJvYmxpcXVlIikpCi0gICAgICAgICAgICAgICAgICAgIHBvc3RMYXlvdXREYXRhLnR5cGluZ0F0
dHJpYnV0ZXMgfD0gQXR0cmlidXRlSXRhbGljczsKLQotICAgICAgICAgICAgICAgIGlmIChlZGl0
aW5nU3R5bGUtPmhhc1N0eWxlKENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZl
Y3QsICJ1bmRlcmxpbmUiKSkKLSAgICAgICAgICAgICAgICAgICAgcG9zdExheW91dERhdGEudHlw
aW5nQXR0cmlidXRlcyB8PSBBdHRyaWJ1dGVVbmRlcmxpbmU7Ci0KLSAgICAgICAgICAgICAgICBp
ZiAoYXV0byogc3R5bGVQcm9wZXJ0aWVzID0gZWRpdGluZ1N0eWxlLT5zdHlsZSgpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGJvb2wgaXNMZWZ0VG9SaWdodCA9IHN0eWxlUHJvcGVydGllcy0+cHJv
cGVydHlBc1ZhbHVlSUQoQ1NTUHJvcGVydHlEaXJlY3Rpb24pID09IENTU1ZhbHVlTHRyOwotICAg
ICAgICAgICAgICAgICAgICBzd2l0Y2ggKHN0eWxlUHJvcGVydGllcy0+cHJvcGVydHlBc1ZhbHVl
SUQoQ1NTUHJvcGVydHlUZXh0QWxpZ24pKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgQ1NT
VmFsdWVSaWdodDoKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVdlYmtpdFJpZ2h0
OgotICAgICAgICAgICAgICAgICAgICAgICAgcG9zdExheW91dERhdGEudGV4dEFsaWdubWVudCA9
IFJpZ2h0QWxpZ25tZW50OwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVMZWZ0OgotICAgICAgICAgICAgICAgICAgICBjYXNl
IENTU1ZhbHVlV2Via2l0TGVmdDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHBvc3RMYXlvdXRE
YXRhLnRleHRBbGlnbm1lbnQgPSBMZWZ0QWxpZ25tZW50OwotICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVDZW50ZXI6Ci0gICAg
ICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVXZWJraXRDZW50ZXI6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS50ZXh0QWxpZ25tZW50ID0gQ2VudGVyQWxpZ25tZW50
OwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNh
c2UgQ1NTVmFsdWVKdXN0aWZ5OgotICAgICAgICAgICAgICAgICAgICAgICAgcG9zdExheW91dERh
dGEudGV4dEFsaWdubWVudCA9IEp1c3RpZmllZEFsaWdubWVudDsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlU3RhcnQ6Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS50ZXh0QWxpZ25tZW50ID0gaXNM
ZWZ0VG9SaWdodCA/IExlZnRBbGlnbm1lbnQgOiBSaWdodEFsaWdubWVudDsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlRW5k
OgotICAgICAgICAgICAgICAgICAgICAgICAgcG9zdExheW91dERhdGEudGV4dEFsaWdubWVudCA9
IGlzTGVmdFRvUmlnaHQgPyBSaWdodEFsaWdubWVudCA6IExlZnRBbGlnbm1lbnQ7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgICAgIGlmIChhdXRvIHRleHRDb2xvciA9IHN0eWxlUHJvcGVydGllcy0+cHJv
cGVydHlBc0NvbG9yKENTU1Byb3BlcnR5Q29sb3IpKQotICAgICAgICAgICAgICAgICAgICAgICAg
cG9zdExheW91dERhdGEudGV4dENvbG9yID0gKnRleHRDb2xvcjsKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChhdXRvKiBlbmNsb3NpbmdMaXN0RWxl
bWVudCA9IGVuY2xvc2luZ0xpc3Qoc2VsZWN0aW9uLnN0YXJ0KCkuY29udGFpbmVyTm9kZSgpKSkg
ewotICAgICAgICAgICAgICAgIGlmIChpczxIVE1MVUxpc3RFbGVtZW50PigqZW5jbG9zaW5nTGlz
dEVsZW1lbnQpKQotICAgICAgICAgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS5lbmNsb3NpbmdM
aXN0VHlwZSA9IFVub3JkZXJlZExpc3Q7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoaXM8SFRN
TE9MaXN0RWxlbWVudD4oKmVuY2xvc2luZ0xpc3RFbGVtZW50KSkKLSAgICAgICAgICAgICAgICAg
ICAgcG9zdExheW91dERhdGEuZW5jbG9zaW5nTGlzdFR5cGUgPSBPcmRlcmVkTGlzdDsKLSAgICAg
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS5iYXNlV3JpdGlu
Z0RpcmVjdGlvbiA9IGVkaXRvci5iYXNlV3JpdGluZ0RpcmVjdGlvbkZvclNlbGVjdGlvblN0YXJ0
KCk7Ci0gICAgICAgIH0KLSNlbmRpZgogICAgIH0KIAotICAgIHBsYXRmb3JtRWRpdG9yU3RhdGUo
ZnJhbWUsIHJlc3VsdCwgc2hvdWxkSW5jbHVkZVBvc3RMYXlvdXREYXRhKTsKKyAgICBwbGF0Zm9y
bUVkaXRvclN0YXRlKGZyYW1lLCByZXN1bHQpOwogCiAgICAgbV9sYXN0RWRpdG9yU3RhdGVXYXND
b250ZW50RWRpdGFibGUgPSByZXN1bHQuaXNDb250ZW50RWRpdGFibGUgPyBFZGl0b3JTdGF0ZUlz
Q29udGVudEVkaXRhYmxlOjpZZXMgOiBFZGl0b3JTdGF0ZUlzQ29udGVudEVkaXRhYmxlOjpObzsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDhmYTBi
MmE1ZjRlNGRmMjZlYTczY2U0NjA1MzM2YmE1MDJiNTg4NjkuLjU2ZGNjMWJkNjQxZDI2NGQzYTNi
NTFjNTYxZTdmNjgxOGMyNzE2YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmgKQEAgLTQ3OCw4ICs0NzgsOCBAQCBwdWJsaWM6CiAgICAgV2ViQ29yZTo6V2Vi
R0xMb2FkUG9saWN5IHJlc29sdmVXZWJHTFBvbGljeUZvclVSTChXZWJGcmFtZSosIGNvbnN0IFVS
TCYpOwogI2VuZGlmCiAgICAgCi0gICAgZW51bSBjbGFzcyBJbmNsdWRlUG9zdExheW91dERhdGFI
aW50IHsgTm8sIFllcyB9OwotICAgIEVkaXRvclN0YXRlIGVkaXRvclN0YXRlKEluY2x1ZGVQb3N0
TGF5b3V0RGF0YUhpbnQgPSBJbmNsdWRlUG9zdExheW91dERhdGFIaW50OjpZZXMpIGNvbnN0Owor
ICAgIGVudW0gY2xhc3MgU2hvdWxkUGVyZm9ybUxheW91dCB7IERlZmF1bHQsIFllcyB9OworICAg
IEVkaXRvclN0YXRlIGVkaXRvclN0YXRlKFNob3VsZFBlcmZvcm1MYXlvdXQgPSBTaG91bGRQZXJm
b3JtTGF5b3V0OjpEZWZhdWx0KSBjb25zdDsKICAgICB2b2lkIHVwZGF0ZUVkaXRvclN0YXRlQWZ0
ZXJMYXlvdXRJZkVkaXRhYmlsaXR5Q2hhbmdlZCgpOwogCiAgICAgLy8gb3B0aW9ucyBhcmUgUmVu
ZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb25CZWhhdmlvciB2YWx1ZXMuCkBAIC0xMzE1LDkg
KzEzMTUsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOwogICAg
IHZvaWQgcGxhdGZvcm1SZWluaXRpYWxpemUoKTsKICAgICB2b2lkIHBsYXRmb3JtRGV0YWNoKCk7
Ci0gICAgdm9pZCBwbGF0Zm9ybUVkaXRvclN0YXRlKFdlYkNvcmU6OkZyYW1lJiwgRWRpdG9yU3Rh
dGUmIHJlc3VsdCwgSW5jbHVkZVBvc3RMYXlvdXREYXRhSGludCkgY29uc3Q7CisgICAgdm9pZCBw
bGF0Zm9ybUVkaXRvclN0YXRlKFdlYkNvcmU6OkZyYW1lJiwgRWRpdG9yU3RhdGUmKSBjb25zdDsK
KyAgICBib29sIHBsYXRmb3JtTmVlZHNMYXlvdXRGb3JFZGl0b3JTdGF0ZShjb25zdCBXZWJDb3Jl
OjpGcmFtZSYpIGNvbnN0OwogICAgIHZvaWQgcGxhdGZvcm1XaWxsUGVyZm9ybUVkaXRpbmdDb21t
YW5kKCk7CiAgICAgdm9pZCBzZW5kRWRpdG9yU3RhdGVVcGRhdGUoKTsKKyAgICB2b2lkIHBsYXRm
b3JtRWRpdG9yU3RhdGVDb21tb24oY29uc3QgV2ViQ29yZTo6RnJhbWUmLCBFZGl0b3JTdGF0ZSYp
IGNvbnN0OwogCiAjaWYgSEFWRShUT1VDSF9CQVIpCiAgICAgdm9pZCBzZW5kVG91Y2hCYXJNZW51
RGF0YUFkZGVkVXBkYXRlKFdlYkNvcmU6OkhUTUxNZW51RWxlbWVudCYpOwpAQCAtMjAxMCw3ICsy
MDEyLDYgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV9tYWluRnJhbWVQcm9ncmVzc0NvbXBsZXRl
ZCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3Nob3VsZERpc3BhdGNoRmFrZU1vdXNlTW92ZUV2ZW50
cyB7IHRydWUgfTsKLSAgICBib29sIG1faXNFZGl0b3JTdGF0ZU1pc3NpbmdQb3N0TGF5b3V0RGF0
YSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2lzU2VsZWN0aW5nVGV4dFdoaWxlSW5zZXJ0aW5nQXN5
bmNocm9ub3VzbHkgeyBmYWxzZSB9OwogCiAgICAgZW51bSBjbGFzcyBFZGl0b3JTdGF0ZUlzQ29u
dGVudEVkaXRhYmxlIHsgTm8sIFllcywgVW5zZXQgfTsKQEAgLTIwODYsNiArMjA4Nyw3IEBAIHBy
aXZhdGU6CiAKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIGlubGluZSB2b2lkIFdlYlBhZ2U6
OnBsYXRmb3JtV2lsbFBlcmZvcm1FZGl0aW5nQ29tbWFuZCgpIHsgfQoraW5saW5lIGJvb2wgV2Vi
UGFnZTo6cGxhdGZvcm1OZWVkc0xheW91dEZvckVkaXRvclN0YXRlKGNvbnN0IFdlYkNvcmU6OkZy
YW1lJikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2dsaWIv
V2ViUGFnZUdMaWIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ2xpYi9X
ZWJQYWdlR0xpYi5jcHAKaW5kZXggM2E3YmFhNmMxMDJkZDdjZjY2NWVjMzZiYjRiMWZiYzE4YjIy
MGVjYS4uOWQ5Y2U4ZGI5MDNhMDAxMmQ4OTExYTM5YTQ4MGFjZGQxYzlkZmU1OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ2xpYi9XZWJQYWdlR0xpYi5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ2xpYi9XZWJQYWdlR0xpYi5j
cHAKQEAgLTY4LDEyICs2OCwxMCBAQCB2b2lkIFdlYlBhZ2U6OnNlbmRNZXNzYWdlVG9XZWJFeHRl
bnNpb24oVXNlck1lc3NhZ2UmJiBtZXNzYWdlKQogICAgIHNlbmRNZXNzYWdlVG9XZWJFeHRlbnNp
b25XaXRoUmVwbHkoV1RGTW92ZShtZXNzYWdlKSwgW10oVXNlck1lc3NhZ2UmJikgeyB9KTsKIH0K
IAotdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybUVkaXRvclN0YXRlKEZyYW1lJiBmcmFtZSwgRWRpdG9y
U3RhdGUmIHJlc3VsdCwgSW5jbHVkZVBvc3RMYXlvdXREYXRhSGludCBzaG91bGRJbmNsdWRlUG9z
dExheW91dERhdGEpIGNvbnN0Cit2b2lkIFdlYlBhZ2U6OnBsYXRmb3JtRWRpdG9yU3RhdGUoRnJh
bWUmIGZyYW1lLCBFZGl0b3JTdGF0ZSYgcmVzdWx0KSBjb25zdAogewotICAgIGlmIChzaG91bGRJ
bmNsdWRlUG9zdExheW91dERhdGEgPT0gSW5jbHVkZVBvc3RMYXlvdXREYXRhSGludDo6Tm8gfHwg
IWZyYW1lLnZpZXcoKSB8fCBmcmFtZS52aWV3KCktPm5lZWRzTGF5b3V0KCkpIHsKLSAgICAgICAg
cmVzdWx0LmlzTWlzc2luZ1Bvc3RMYXlvdXREYXRhID0gdHJ1ZTsKKyAgICBpZiAocmVzdWx0Lmlz
TWlzc2luZ1Bvc3RMYXlvdXREYXRhIHx8ICFmcmFtZS52aWV3KCkgfHwgZnJhbWUudmlldygpLT5u
ZWVkc0xheW91dCgpKQogICAgICAgICByZXR1cm47Ci0gICAgfQogCiAgICAgYXV0byYgcG9zdExh
eW91dERhdGEgPSByZXN1bHQucG9zdExheW91dERhdGEoKTsKICAgICBwb3N0TGF5b3V0RGF0YS5j
YXJldFJlY3RBdFN0YXJ0ID0gZnJhbWUuc2VsZWN0aW9uKCkuYWJzb2x1dGVDYXJldEJvdW5kcygp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBh
Z2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlP
Uy5tbQppbmRleCBlMDAzNzUzNzk1Mzc3NGIxNTUzMTE5NzE1MzdjYTlmNGRhZjU0NjZlLi43NzBh
NDAyMTBmNDlmOGUyODM2MTEwYjA0MDk4Yzc4YWZjZTEyYWE1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtMjA4LDggKzIw
OCwyMSBAQCBib29sIFdlYlBhZ2U6OmlzVHJhbnNwYXJlbnRPckZ1bGx5Q2xpcHBlZChjb25zdCBF
bGVtZW50JiBlbGVtZW50KSBjb25zdAogICAgIHJldHVybiByZW5kZXJlci0+aGFzTm9uRW1wdHlW
aXNpYmxlUmVjdFJlc3BlY3RpbmdQYXJlbnRGcmFtZXMoKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpw
bGF0Zm9ybUVkaXRvclN0YXRlKEZyYW1lJiBmcmFtZSwgRWRpdG9yU3RhdGUmIHJlc3VsdCwgSW5j
bHVkZVBvc3RMYXlvdXREYXRhSGludCBzaG91bGRJbmNsdWRlUG9zdExheW91dERhdGEpIGNvbnN0
Citib29sIFdlYlBhZ2U6OnBsYXRmb3JtTmVlZHNMYXlvdXRGb3JFZGl0b3JTdGF0ZShjb25zdCBG
cmFtZSYgZnJhbWUpIGNvbnN0CiB7CisgICAgLy8gSWYgd2UgaGF2ZSBhIGNvbXBvc2l0aW9uIG9y
IGFyZSB1c2luZyBhIGhhcmR3YXJlIGtleWJvYXJkIHRoZW4gd2UgbmVlZCB0byBzZW5kIHRoZSBm
dWxsCisgICAgLy8gZWRpdG9yIHNvIHRoYXQgdGhlIFVJUHJvY2VzcyBjYW4gdXBkYXRlIFVJLCBp
bmNsdWRpbmcgdGhlIHBvc2l0aW9uIG9mIHRoZSBjYXJldC4KKyAgICBib29sIG5lZWRzTGF5b3V0
ID0gZnJhbWUuZWRpdG9yKCkuaGFzQ29tcG9zaXRpb24oKTsKKyNpZiAhUExBVEZPUk0oTUFDQ0FU
QUxZU1QpCisgICAgbmVlZHNMYXlvdXQgfD0gbV9rZXlib2FyZElzQXR0YWNoZWQ7CisjZW5kaWYK
KyAgICByZXR1cm4gbmVlZHNMYXlvdXQ7Cit9CisKK3ZvaWQgV2ViUGFnZTo6cGxhdGZvcm1FZGl0
b3JTdGF0ZShGcmFtZSYgZnJhbWUsIEVkaXRvclN0YXRlJiByZXN1bHQpIGNvbnN0Cit7CisgICAg
cGxhdGZvcm1FZGl0b3JTdGF0ZUNvbW1vbihmcmFtZSwgcmVzdWx0KTsKKwogICAgIEZyYW1lVmll
dyogdmlldyA9IGZyYW1lLnZpZXcoKTsKICAgICBpZiAoIXZpZXcpIHsKICAgICAgICAgcmVzdWx0
LmlzTWlzc2luZ1Bvc3RMYXlvdXREYXRhID0gdHJ1ZTsKQEAgLTI0MCwxNCArMjUzLDExIEBAIHZv
aWQgV2ViUGFnZTo6cGxhdGZvcm1FZGl0b3JTdGF0ZShGcmFtZSYgZnJhbWUsIEVkaXRvclN0YXRl
JiByZXN1bHQsIEluY2x1ZGVQb3N0CiAjaWYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogICAgIHJl
cXVpcmVzUG9zdExheW91dERhdGEgfD0gbV9rZXlib2FyZElzQXR0YWNoZWQ7CiAjZW5kaWYKLSAg
ICBpZiAoKHNob3VsZEluY2x1ZGVQb3N0TGF5b3V0RGF0YSA9PSBJbmNsdWRlUG9zdExheW91dERh
dGFIaW50OjpObyB8fCBuZWVkc0xheW91dCkgJiYgIXJlcXVpcmVzUG9zdExheW91dERhdGEpIHsK
LSAgICAgICAgcmVzdWx0LmlzTWlzc2luZ1Bvc3RMYXlvdXREYXRhID0gdHJ1ZTsKKyAgICBpZiAo
bmVlZHNMYXlvdXQgfHwgcmVzdWx0LmlzTWlzc2luZ1Bvc3RMYXlvdXREYXRhKQogICAgICAgICBy
ZXR1cm47Ci0gICAgfQogCiAgICAgYXV0byYgcG9zdExheW91dERhdGEgPSByZXN1bHQucG9zdExh
eW91dERhdGEoKTsKLSAgICAKLSAgICBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24g
PSBmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKTsKKyAgICBjb25zdCBhdXRvJiBzZWxlY3Rp
b24gPSBmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKTsKICAgICBwb3N0TGF5b3V0RGF0YS5p
c1N0YWJsZVN0YXRlVXBkYXRlID0gbV9pc0luU3RhYmxlU3RhdGU7CiAgICAgYm9vbCBzdGFydE5v
ZGVJc0luc2lkZUZpeGVkUG9zaXRpb24gPSBmYWxzZTsKICAgICBib29sIGVuZE5vZGVJc0luc2lk
ZUZpeGVkUG9zaXRpb24gPSBmYWxzZTsKQEAgLTQ2NCw3ICs0NzQsNyBAQCBib29sIFdlYlBhZ2U6
OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQmIGV2ZW50KQogCiAgICAg
Ly8gRklYTUU6IEludGVycHJldCB0aGUgZXZlbnQgaW1tZWRpYXRlbHkgdXBvbiByZWNlaXZpbmcg
aXQgaW4gVUkgcHJvY2Vzcywgd2l0aG91dCBzZW5kaW5nIHRvIFdlYlByb2Nlc3MgZmlyc3QuCiAg
ICAgYm9vbCBldmVudFdhc0hhbmRsZWQgPSBmYWxzZTsKLSAgICBib29sIHNlbmRSZXN1bHQgPSBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3lu
YyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpJbnRlcnByZXRLZXlFdmVudChlZGl0b3JTdGF0ZSgp
LCBwbGF0Zm9ybUV2ZW50LT50eXBlKCkgPT0gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpDaGFyKSwK
KyAgICBib29sIHNlbmRSZXN1bHQgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpJbnRlcnBy
ZXRLZXlFdmVudChlZGl0b3JTdGF0ZShTaG91bGRQZXJmb3JtTGF5b3V0OjpZZXMpLCBwbGF0Zm9y
bUV2ZW50LT50eXBlKCkgPT0gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpDaGFyKSwKICAgICAgICAg
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6SW50ZXJwcmV0S2V5RXZlbnQ6OlJlcGx5KGV2ZW50V2Fz
SGFuZGxlZCksIG1faWRlbnRpZmllcik7CiAgICAgcmV0dXJuIHNlbmRSZXN1bHQgJiYgZXZlbnRX
YXNIYW5kbGVkOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1dlYlBhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvV2ViUGFnZU1hYy5tbQppbmRleCBkMjVkYmVmYmVkZjg5NmE5ZmUyMjM4YWY4MzgxYmUxZTgy
NmVmYTU4Li4zYWJiNDgyODAxOTBkYThlMGIzYTMwNjg0ZGRkODgwMDk2ZGI0OTllIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQpA
QCAtMTM0LDE0ICsxMzQsMTQgQEAgdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybURldGFjaCgpCiAgICAg
W21fbW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50IHNldFdlYlBhZ2U6bnVsbHB0cl07CiB9CiAKLXZv
aWQgV2ViUGFnZTo6cGxhdGZvcm1FZGl0b3JTdGF0ZShGcmFtZSYgZnJhbWUsIEVkaXRvclN0YXRl
JiByZXN1bHQsIEluY2x1ZGVQb3N0TGF5b3V0RGF0YUhpbnQgc2hvdWxkSW5jbHVkZVBvc3RMYXlv
dXREYXRhKSBjb25zdAordm9pZCBXZWJQYWdlOjpwbGF0Zm9ybUVkaXRvclN0YXRlKEZyYW1lJiBm
cmFtZSwgRWRpdG9yU3RhdGUmIHJlc3VsdCkgY29uc3QKIHsKLSAgICBpZiAoc2hvdWxkSW5jbHVk
ZVBvc3RMYXlvdXREYXRhID09IEluY2x1ZGVQb3N0TGF5b3V0RGF0YUhpbnQ6Ok5vIHx8ICFmcmFt
ZS52aWV3KCkgfHwgZnJhbWUudmlldygpLT5uZWVkc0xheW91dCgpIHx8ICFyZXN1bHQuaXNDb250
ZW50RWRpdGFibGUpIHsKLSAgICAgICAgcmVzdWx0LmlzTWlzc2luZ1Bvc3RMYXlvdXREYXRhID0g
dHJ1ZTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBwbGF0Zm9ybUVkaXRvclN0YXRlQ29t
bW9uKGZyYW1lLCByZXN1bHQpOwogCi0gICAgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0
aW9uID0gZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7CisgICAgaWYgKHJlc3VsdC5pc01p
c3NpbmdQb3N0TGF5b3V0RGF0YSkKKyAgICAgICAgcmV0dXJuOworCisgICAgY29uc3QgYXV0byYg
c2VsZWN0aW9uID0gZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7CiAgICAgUmVmUHRyPFJh
bmdlPiBzZWxlY3RlZFJhbmdlID0gc2VsZWN0aW9uLnRvTm9ybWFsaXplZFJhbmdlKCk7CiAgICAg
aWYgKCFzZWxlY3RlZFJhbmdlKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93aW4vV2ViUGFnZVdpbi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93aW4vV2ViUGFnZVdpbi5jcHAKaW5kZXggNjI0ZjRkMTEy
NjZhMjdkYTM3ZDdkOWZmMDIxNmNmMjY1ZWEyZGM0Mi4uNWNiMGE3MjkyOTNkN2E5M2RjY2Y0YTI3
OTQ3MjI5YmYwYzFjMGU5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2Uvd2luL1dlYlBhZ2VXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL3dpbi9XZWJQYWdlV2luLmNwcApAQCAtNjMsNyArNjMsNyBAQCB2b2lkIFdlYlBhZ2U6
OnBsYXRmb3JtRGV0YWNoKCkKIHsKIH0KIAotdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybUVkaXRvclN0
YXRlKEZyYW1lJiBmcmFtZSwgRWRpdG9yU3RhdGUmIHJlc3VsdCwgSW5jbHVkZVBvc3RMYXlvdXRE
YXRhSGludCBzaG91bGRJbmNsdWRlUG9zdExheW91dERhdGEpIGNvbnN0Cit2b2lkIFdlYlBhZ2U6
OnBsYXRmb3JtRWRpdG9yU3RhdGUoRnJhbWUmLCBFZGl0b3JTdGF0ZSYpIGNvbnN0CiB7CiB9CiAK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmOTNmZjUyMGU4MjM3ODBlYTE3Y2I0NTgyNzU5YWUxYTg4ZDViYWRiLi5lZGM0NzI2
YWI1NzUwMWRmMWEwYWQwMDEyZjNlMTA0YzZhNGNkODBiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAK
KzIwMjAtMDMtMTggIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAg
IFtpT1NdIEFTU0VSVElPTiBGQUlMVVJFOiAhaXNNaXNzaW5nUG9zdExheW91dERhdGEgaW4gV2Vi
S2l0OjpFZGl0b3JTdGF0ZTo6cG9zdExheW91dERhdGEoKQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk5OTYwCisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS81MzMyMzk2Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgYSB0ZXN0IHRvIGVuc3VyZSB3ZSBkbyBub3QgYXNzZXJ0IHdoZW4gdXNpbmcgdGhl
IHNvZnR3YXJlIGtleWJvYXJkIHRvIHR5cGUgYSBjaGFyYWN0ZXIKKyAgICAgICAgaW50byBhIDx0
ZXh0YXJlYT4gYW5kIHRoZW4gZGVsZXRlIGl0LgorCisgICAgICAgICogVGVzdEV4cGVjdGF0aW9u
czogU2tpcCB0ZXN0cyBpbiBlZGl0aW5nL2RlbGV0aW5nL2lvcyBvbiBhbGwgcGxhdGZvcm1zLgor
ICAgICAgICAqIGVkaXRpbmcvZGVsZXRpbmcvaW9zL2JhY2tzcGFjZS1sYXN0LWNoYXJhY3Rlci1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvZGVsZXRpbmcvaW9zL2JhY2tz
cGFjZS1sYXN0LWNoYXJhY3Rlci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mv
VGVzdEV4cGVjdGF0aW9uczogVW5za2lwIHRlc3RzIGluIGVkaXRpbmcvZGVsZXRpbmcvaW9zIG9u
IGlPUy4KKwogMjAyMC0wMy0xNiAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAK
ICAgICAgICAgQVNTRVJUSU9OIEZBSUxVUkU6ICFyZXN1bHQuaW5uZXJOb2RlKCkgfHwgKHJlcXVl
c3QucmVzdWx0SXNFbGVtZW50TGlzdCgpICYmIHJlc3VsdC5saXN0QmFzZWRUZXN0UmVzdWx0KCku
c2l6ZSgpKSBpbiBSZW5kZXJMYXllcjo6aGl0VGVzdENvbnRlbnRzKCkKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25z
CmluZGV4IDgwNTQ2M2Q3OTU0ZGRjNjhmNzYyZTBhNDc3NDkyM2QzMmNlM2ZlN2IuLjkwYzQxZmQ1
YTU3ZTRiOTM0Y2JmOTQ5NjFlODcwMjNhOTI0NTE1M2MgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwpAQCAt
MjEsNiArMjEsNyBAQCBlZGl0aW5nL2lucHV0L2lvcyBbIFNraXAgXQogZWRpdGluZy9maW5kIFsg
U2tpcCBdCiBlZGl0aW5nL3Bhc3RlYm9hcmQvZ3RrIFsgU2tpcCBdCiBlZGl0aW5nL3NlbGVjdGlv
bi9pb3MgWyBTa2lwIF0KK2VkaXRpbmcvZGVsZXRpbmcvaW9zIFsgU2tpcCBdCiBlZGl0aW5nL3Vu
ZG8tbWFuYWdlciBbIFNraXAgXQogdGlsZWQtZHJhd2luZyBbIFNraXAgXQogZmFzdC9jc3MvaW9z
IFsgU2tpcCBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL2RlbGV0aW5nL2lvcy9i
YWNrc3BhY2UtbGFzdC1jaGFyYWN0ZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGlu
Zy9kZWxldGluZy9pb3MvYmFja3NwYWNlLWxhc3QtY2hhcmFjdGVyLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi41MDU2NGQ5OGRhZjI4MDk3YzBiNDBjNWYzYjUzYzhkYTY0MTBiMGIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9kZWxldGluZy9pb3MvYmFja3NwYWNlLWxh
c3QtY2hhcmFjdGVyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDExIEBACitUaGlzIHRlc3RzIHVz
aW5nIHRoZSBzb2Z0d2FyZSBrZXlib2FyZCBhbmQgcHJlc3NpbmcgJ3cnIHRoZW4gYmFja3NwYWNl
IGRlbGV0ZXMgdGhlICd3JyBhbmQgZG9lcyBub3QgY2F1c2UgYW4gYXNzZXJ0aW9uIGZhaWx1cmUg
aW4gYSBkZWJ1ZyBidWlsZC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImlucHV0IikudmFsdWUgaXMgInciCitQQVNTIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJpbnB1dCIpLnZhbHVlIGlzICIiCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZWRpdGluZy9kZWxldGluZy9pb3MvYmFja3NwYWNlLWxhc3QtY2hhcmFjdGVyLmh0bWwgYi9M
YXlvdXRUZXN0cy9lZGl0aW5nL2RlbGV0aW5nL2lvcy9iYWNrc3BhY2UtbGFzdC1jaGFyYWN0ZXIu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5hY2Y1MWYzNDkzZjRjNDM3NDU1N2Q0Zjk4YjhlNGE0NWU3ZWExOTY4
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9kZWxldGluZy9pb3MvYmFj
a3NwYWNlLWxhc3QtY2hhcmFjdGVyLmh0bWwKQEAgLTAsMCArMSw0NiBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvdWktaGVs
cGVyLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0idGVzdC1jb250YWlu
ZXIiPgorICAgIDx0ZXh0YXJlYSBpZD0iaW5wdXQiPjwvdGV4dGFyZWE+CisgICAgPHRleHRhcmVh
IGlkPSJvdXRwdXQiIHJlYWRvbmx5PjwvdGV4dGFyZWE+Cis8L2Rpdj4KKzxzY3JpcHQ+Cit3aW5k
b3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKK2xldCBpbnB1dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJpbnB1dCIpOworCitmdW5jdGlvbiBhcHBlbmRBTmV3bGluZSgpCit7CisgICAgbGV0
IG91dHB1dEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgib3V0cHV0Iik7CisgICAg
b3V0cHV0RWxlbWVudC52YWx1ZSA9IG91dHB1dEVsZW1lbnQudmFsdWUgKyAiXG4iOworfQorCith
c3luYyBmdW5jdGlvbiBydW5UZXN0KCkKK3sKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisg
ICAgICAgIGF3YWl0IFVJSGVscGVyLnNldEhhcmR3YXJlS2V5Ym9hcmRBdHRhY2hlZChmYWxzZSk7
CisKKyAgICBhd2FpdCBVSUhlbHBlci5jYWxsRnVuY3Rpb25BbmRXYWl0Rm9yRXZlbnQoKCkgPT4g
d2luZG93LnRlc3RSdW5uZXIgJiYgVUlIZWxwZXIuYWN0aXZhdGVFbGVtZW50KGlucHV0KSwgaW5w
dXQsICJmb2N1cyIpOworCisgICAgYXdhaXQgVUlIZWxwZXIuY2FsbEZ1bmN0aW9uQW5kV2FpdEZv
ckV2ZW50KCgpID0+IHdpbmRvdy50ZXN0UnVubmVyICYmIFVJSGVscGVyLmtleURvd24oInciKSwg
aW5wdXQsICJpbnB1dCIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImlucHV0IikudmFsdWUnLCAidyIpOworCisgICAgYXdhaXQgVUlIZWxwZXIu
Y2FsbEZ1bmN0aW9uQW5kV2FpdEZvckV2ZW50KCgpID0+IHdpbmRvdy50ZXN0UnVubmVyICYmIFVJ
SGVscGVyLmtleURvd24oIlxiIiksIGlucHV0LCAiaW5wdXQiKTsKKyAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoJ2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpbnB1dCIpLnZhbHVlJywgIiIpOwor
CisgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
dGVzdC1jb250YWluZXIiKSk7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK2Rlc2NyaXB0aW9u
KCJUaGlzIHRlc3RzIHVzaW5nIHRoZSBzb2Z0d2FyZSBrZXlib2FyZCBhbmQgcHJlc3NpbmcgJ3cn
IHRoZW4gPGtiZD5iYWNrc3BhY2U8L2tiZD4gZGVsZXRlcyB0aGUgJ3cnIGFuZCBkb2VzIG5vdCBj
YXVzZSBhbiBhc3NlcnRpb24gZmFpbHVyZSBpbiBhIGRlYnVnIGJ1aWxkLiIpCitpbnB1dC5hZGRF
dmVudExpc3RlbmVyKCJrZXlkb3duIiwgYXBwZW5kQU5ld2xpbmUpOworCitydW5UZXN0KCk7Cis8
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RF
eHBlY3RhdGlvbnMKaW5kZXggOTI2NWI3YWUxNDg5NDVlNjIyYTcxNjE0YzUyZWQwY2YyYjJlNzE0
ZS4uMDcyMmM0NDQ5OTdhM2IzYmRiNDUzZTdmMGFjNjU0YjU0YzhmZmJiNyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTgsNiArOCw3IEBACiAKIGFjY2Vz
c2liaWxpdHkvaW9zLXNpbXVsYXRvciBbIFBhc3MgXQogZGlzcGxheWxpc3RzIFsgUGFzcyBdCitl
ZGl0aW5nL2RlbGV0aW5nL2lvcyBbIFBhc3MgXQogaHR0cC90ZXN0cy9xdWlja2xvb2sgWyBQYXNz
IF0KIG1lZGlhL2lvcyBbIFBhc3MgXQogcXVpY2tsb29rIFsgUGFzcyBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393900</attachid>
            <date>2020-03-18 13:55:40 -0700</date>
            <delta_ts>2020-03-24 16:04:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>ForReview_1.patch</filename>
            <type>text/plain</type>
            <size>32253</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">RnJvbSBiZjBmMGFhMTZkNjBlZDQ1ZGYxNGVhZmVkOTcwOTk3NzYxMTQ5NGJkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgQmF0ZXMgPGRhYmF0ZXNAYXBwbGUuY29tPgpEYXRl
OiBGcmksIDI2IEp1bCAyMDE5IDEwOjUxOjQwIC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gW2lPU10g
QVNTRVJUSU9OIEZBSUxVUkU6ICFpc01pc3NpbmdQb3N0TGF5b3V0RGF0YSBpbgogV2ViS2l0OjpF
ZGl0b3JTdGF0ZTo6cG9zdExheW91dERhdGEoKQogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5OTk2MCA8cmRhcjovL3Byb2JsZW0vNTMzMjM5NjY+CgpSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KClNvdXJjZS9XZWJLaXQ6CgpSZWZhY3RvciB0aGUgY29tcHV0YXRp
b24gb2YgZWRpdG9yIHN0YXRlIHNvIHRoYXQgd2UgY2FuIHJlcXVlc3QgdGhhdCBhIGxheW91dCBi
ZSBwZXJmb3JtZWQKZWFjaCB0aW1lIHdlIGNvbXB1dGUgdGhlIGVkaXRvciBzdGF0ZSBhcyBwYXJ0
IG9mIGFza2luZyB0aGUgVUkgcHJvY2VzcyB0byBpbnRlcnByZXQgYSBrZXkKZXZlbnQuIFRoZSBm
dWxsIChyZWFkOiBhZnRlciBsYXlvdXQpIGVkaXRvciBzdGF0ZSBpcyBuZWVkZWQgZm9yIFVJS2l0
IHRvIHBlcmZvcm0gYSBkZWxldGlvbgpiZWNhdXNlIFVJS2l0IHdhbnRzIHRvIGtub3cgaG93IG1h
bnkgY2hhcmFjdGVycyBhcmUgYmVmb3JlIHRoZSBzZWxlY3Rpb24uIE90aGVyd2lzZSwgd2UgaGl0
CmFuIGFzc2VydCBkdWUgdG8gdGhlIGZhY3QgdGhlIGxhc3QgZWRpdG9yIHN0YXRlIHNlbnQgKHdo
ZW4gdGhlIFdlYiBwcm9jZXNzIGFza2VkIHRoZSBVSSBwcm9jZXNzCnRvIGludGVycHJldCB0aGUg
a2V5KSBpcyBtaXNzaW5nIGxheW91dCBkYXRhLgoKVGhlIHJlZmFjdG9yaW5nIGFsc28gbW92ZXMg
dGhlIENvY29hLWNvbW1vbiBjb2RlIG91dCBvZiB0aGUgcGxhdGZvcm0taW5kZXBlbmRlbnQgV2Vi
UGFnZS5jcHAKZmlsZSBpbnRvIFdlYlBhZ2VDb2NvYS5tbS4KCk9uZSBzaWRlIGVmZmVjdCBvZiB0
aGUgcmVmYWN0b3JpbmcgaXMgdGhhdCB3ZSBubyBsb25nZXIgYWxsb3cgdGhlIHBsYXRmb3JtRWRp
dG9yU3RhdGUoKSBmdW5jdGlvbgp0byBvdmVycmlkZSB0aGUgaXNNaXNzaW5nUG9zdExheW91dERh
dGEgYml0LiBDdXJyZW50bHkgaXQgY2FuIGV2ZW4gdGhvdWdoIHRoZSBjYWxsaW5nIGNvZGUsIHRo
ZQpwbGF0Zm9ybSBpbmRlcGVuZGVudCBjb2RlIChQSUUpIGluIFdlYlBhZ2UsIG1heSBoYXZlIGF0
dGFjaGVkIGxheW91dCBkYXRhLiBOb3cgdGhlIFBJRSBjb2RlIHNldHMKdGhpcyBiaXQgaWYgaXQg
YXR0YWNoZWQgbGF5b3V0IGRhdGEgYW5kIHRoZSBwbGF0Zm9ybUVkaXRvclN0YXRlKCkgZnVuY3Rp
b24gb25seSBhdHRhY2hlcyBtb3JlCmxheW91dCBkYXRhIGlmIHRoYXQgYml0IGlzIHNldC4gcGxh
dGZvcm1FZGl0b3JTdGF0ZSgpIG5ldmVyIHVuc2V0cyB0aGF0IGJpdCAoaS5lLiBzZXRzIGlzTWlz
c2luZ1Bvc3RMYXlvdXREYXRhCnRvIHRydWUpLgoKVGhlIHBhdGNoIGFsc28gcmVtb3ZlcyBtX2lz
RWRpdG9yU3RhdGVNaXNzaW5nUG9zdExheW91dERhdGEgaW4gV2ViUGFnZS5oLiBUaGlzIGluc3Rh
bmNlIHZhcmlhYmxlCmhhcyBiZWVuIHVudXNlZCBzaW5jZSA8aHR0cHM6Ly90cmFjLndlYmtpdC5v
cmcvY2hhbmdlc2V0LzIyMTA2NC93ZWJraXQ+LiBBbHNvIHdlIGhhdmVuJ3QgYmVlbiB1c2luZwpJ
bmNsdWRlUG9zdExheW91dERhdGFIaW50OjpObyBzaW5jZSB0aGUgbGFzdCByZWZlcmVuY2UgdG8g
aXQgd2FzIHJlbW92ZWQgaW4gPGh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yNDQ0
OTQvd2Via2l0Pi4KCiogU2hhcmVkL0VkaXRvclN0YXRlLmg6CiogV2ViUHJvY2Vzcy9XZWJQYWdl
L0NvY29hL1dlYlBhZ2VDb2NvYS5tbToKKFdlYktpdDo6V2ViUGFnZTo6cGxhdGZvcm1FZGl0b3JT
dGF0ZUNvbW1vbiBjb25zdCk6IEFkZGVkLiBNb3ZlZCBDb2NvYS1jb21tb24gY29kZSBmcm9tIFdl
YlBhZ2UuY3BwCnRvIGhlcmUuCiogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgooV2Vi
S2l0OjpXZWJQYWdlOjplZGl0b3JTdGF0ZSBjb25zdCk6IE1vdmUgQ29jb2EtY29tbW9uIGNvZGUg
dG8gV2ViUGFnZUNvY29hLm1tLiBDaGFuZ2UgZW51bSB0bwp0cmFjayB3aGV0aGVyIGEgbGF5b3V0
IHNob3VsZCBiZSBwZXJmb3JtZWQuIEtlZXAgdGhlIGN1cnJlbnQgYmVoYXZpb3Igb2Ygb25seSBp
bmNsdWRpbmcgcG9zdCBsYXlvdXQKZGF0YSBpZiB0aGUgZnJhbWUgdmlldyBkb2VzIG5vdCBuZWVk
IGEgbGF5b3V0LiBUaGlzIGJlaGF2aW9yIGlzIGVuY29kZWQgaW4gdGhlIGVudW1lcmF0b3IgU2hv
dWxkUGVyZm9ybUxheW91dDo6RGVmYXVsdC4Kd2hpY2ggaXMgdGhlIGRlZmF1bHQgYXJndW1lbnQg
dmFsdWUgZm9yIHRoZSBhcmd1bWVudCBzaG91bGRQZXJmb3JtTGF5b3V0LgoqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmg6CihXZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtTmVlZHNMYXlvdXRG
b3JFZGl0b3JTdGF0ZSBjb25zdCk6IEFkZGVkLiBOb24tQ29jb2EgcG9ydCBpbXBsZW1lbnRhdGlv
bgp0aGF0IHJldHVybnMgZmFsc2UuCiogV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQYWdlR3Rr
LmNwcDoKKFdlYktpdDo6V2ViUGFnZTo6cGxhdGZvcm1FZGl0b3JTdGF0ZSBjb25zdCk6IEVhcmx5
IHJldHVybiBpZiBpc01pc3NpbmdQb3N0TGF5b3V0RGF0YSBpcyB0cnVlLgoqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKFdlYktpdDo6V2ViUGFnZTo6cGxhdGZvcm1OZWVk
c0xheW91dEZvckVkaXRvclN0YXRlIGNvbnN0KTogQWRkZWQuIEtlZXAgdGhlIGN1cnJlbnQgYmVo
YXZpb3Igb2YKcGVyZm9ybWluZyBhIGxheW91dCBpZiB3ZSBoYXZlIGEgY29tcG9zaXRpb24gb3Ig
YSBoYXJkd2FyZSBrZXlib2FyZCBpcyBhdHRhY2hlZC4KKFdlYktpdDo6V2ViUGFnZTo6cGxhdGZv
cm1FZGl0b3JTdGF0ZSBjb25zdCk6IENhbGwgcGxhdGZvcm1FZGl0b3JTdGF0ZUNvbW1vbigpLiBC
YWlsIG91dCBlYXJseQppZiBpc01pc3NpbmdQb3N0TGF5b3V0RGF0YSBpcyB0cnVlLgooV2ViS2l0
OjpXZWJQYWdlOjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudCk6IFRoZSBpbXBvcnRhbnQgcGFy
dCBvZiB0aGlzIHBhdGNoLiBSZXF1ZXN0IGEgbGF5b3V0CndoZW4gY29tcHV0aW5nIHRoZSBlZGl0
b3Igc3RhdGUgdGhhdCB3ZSB3aWxsIHNlbmQgdG8gdGhlIFVJIHByb2Nlc3MuCiogV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tOgooV2ViS2l0OjpXZWJQYWdlOjpwbGF0Zm9ybUVk
aXRvclN0YXRlIGNvbnN0KTogQ2FsbCBwbGF0Zm9ybUVkaXRvclN0YXRlQ29tbW9uKCkuIEJhaWwg
b3V0IGVhcmx5CmlmIGlzTWlzc2luZ1Bvc3RMYXlvdXREYXRhIGlzIHRydWUuCiogV2ViUHJvY2Vz
cy9XZWJQYWdlL3dpbi9XZWJQYWdlV2luLmNwcDoKKFdlYktpdDo6V2ViUGFnZTo6cGxhdGZvcm1F
ZGl0b3JTdGF0ZSBjb25zdCk6IFVwZGF0ZSBhcyBuZWVkZWQuCiogV2ViUHJvY2Vzcy9XZWJQYWdl
L3dwZS9XZWJQYWdlV1BFLmNwcDoKKFdlYktpdDo6V2ViUGFnZTo6cGxhdGZvcm1FZGl0b3JTdGF0
ZSBjb25zdCk6IERpdHRvLgoKTGF5b3V0VGVzdHM6CgpBZGQgYSB0ZXN0IHRvIGVuc3VyZSB3ZSBk
byBub3QgYXNzZXJ0IHdoZW4gdXNpbmcgdGhlIHNvZnR3YXJlIGtleWJvYXJkIHRvIHR5cGUgYSBj
aGFyYWN0ZXIKaW50byBhIDx0ZXh0YXJlYT4gYW5kIHRoZW4gZGVsZXRlIGl0LgoKKiBUZXN0RXhw
ZWN0YXRpb25zOiBTa2lwIHRlc3RzIGluIGVkaXRpbmcvZGVsZXRpbmcvaW9zIG9uIGFsbCBwbGF0
Zm9ybXMuCiogZWRpdGluZy9kZWxldGluZy9pb3MvYmFja3NwYWNlLWxhc3QtY2hhcmFjdGVyLWV4
cGVjdGVkLnR4dDogQWRkZWQuCiogZWRpdGluZy9kZWxldGluZy9pb3MvYmFja3NwYWNlLWxhc3Qt
Y2hhcmFjdGVyLmh0bWw6IEFkZGVkLgoqIHBsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zOiBV
bnNraXAgdGVzdHMgaW4gZWRpdGluZy9kZWxldGluZy9pb3Mgb24gaU9TLgotLS0KIExheW91dFRl
c3RzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICB8IDE2ICsrKysKIExheW91dFRl
c3RzL1Rlc3RFeHBlY3RhdGlvbnMgICAgICAgICAgICAgICAgICB8ICAxICsKIC4uLi9pb3MvYmFj
a3NwYWNlLWxhc3QtY2hhcmFjdGVyLWV4cGVjdGVkLnR4dCB8IDExICsrKwogLi4uL2lvcy9iYWNr
c3BhY2UtbGFzdC1jaGFyYWN0ZXIuaHRtbCAgICAgICAgIHwgNDYgKysrKysrKysrKysKIExheW91
dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zICAgICB8ICAxICsKIFNvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICB8IDU4ICsrKysrKysrKysrKysK
IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRvclN0YXRlLmggICAgICAgICAgICB8ICAyICstCiAu
Li4vV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbSAgfCA2OSArKysrKysr
KysrKysrKysrCiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCAg
fCA4MiArKysrLS0tLS0tLS0tLS0tLS0tCiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmggICAgfCAxMCArKy0KIC4uLi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ2xpYi9XZWJQ
YWdlR0xpYi5jcHAgICB8ICA2ICstCiAuLi4vV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdl
SU9TLm1tICAgICAgfCAyNCArKysrLS0KIC4uLi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBh
Z2VNYWMubW0gICAgICB8IDEwICstLQogLi4uL1dlYlByb2Nlc3MvV2ViUGFnZS93aW4vV2ViUGFn
ZVdpbi5jcHAgICAgIHwgIDIgKy0KIDE0IGZpbGVzIGNoYW5nZWQsIDI0OCBpbnNlcnRpb25zKCsp
LCA5MCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9lZGl0aW5n
L2RlbGV0aW5nL2lvcy9iYWNrc3BhY2UtbGFzdC1jaGFyYWN0ZXItZXhwZWN0ZWQudHh0CiBjcmVh
dGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvZWRpdGluZy9kZWxldGluZy9pb3MvYmFja3NwYWNl
LWxhc3QtY2hhcmFjdGVyLmh0bWwKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggN2I5OTM2NWM4ODkuLjFiNjVkYmJlNGIyIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTktMDctMjYgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNA
YXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIEFTU0VSVElPTiBGQUlMVVJFOiAhaXNNaXNzaW5n
UG9zdExheW91dERhdGEgaW4gV2ViS2l0OjpFZGl0b3JTdGF0ZTo6cG9zdExheW91dERhdGEoKQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk5OTYwCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS81MzMyMzk2Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSB0ZXN0IHRvIGVuc3VyZSB3ZSBkbyBub3Qg
YXNzZXJ0IHdoZW4gdXNpbmcgdGhlIHNvZnR3YXJlIGtleWJvYXJkIHRvIHR5cGUgYSBjaGFyYWN0
ZXIKKyAgICAgICAgaW50byBhIDx0ZXh0YXJlYT4gYW5kIHRoZW4gZGVsZXRlIGl0LgorCisgICAg
ICAgICogVGVzdEV4cGVjdGF0aW9uczogU2tpcCB0ZXN0cyBpbiBlZGl0aW5nL2RlbGV0aW5nL2lv
cyBvbiBhbGwgcGxhdGZvcm1zLgorICAgICAgICAqIGVkaXRpbmcvZGVsZXRpbmcvaW9zL2JhY2tz
cGFjZS1sYXN0LWNoYXJhY3Rlci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRp
bmcvZGVsZXRpbmcvaW9zL2JhY2tzcGFjZS1sYXN0LWNoYXJhY3Rlci5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9uczogVW5za2lwIHRlc3RzIGluIGVk
aXRpbmcvZGVsZXRpbmcvaW9zIG9uIGlPUy4KKwogMjAyMC0wMy0xOCAgRXVnZW5lIEJ1dCAgPGV1
Z2VuZWJ1dEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVGVzdCBmb3IgUmVwbGFjZVNlbGVjdGlv
bkNvbW1hbmQ6Okluc2VydGVkTm9kZXM6OndpbGxSZW1vdmVOb2RlUHJlc2VydmluZ0NoaWxkcmVu
IGNyYXNoIGZpeApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucyBiL0xh
eW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggZWVlNDU4ZTQ5NTMuLjE1ZWYzNDQ0MjQ0
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRl
c3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTIxLDYgKzIxLDcgQEAgZWRpdGluZy9pbnB1dC9pb3Mg
WyBTa2lwIF0KIGVkaXRpbmcvZmluZCBbIFNraXAgXQogZWRpdGluZy9wYXN0ZWJvYXJkL2d0ayBb
IFNraXAgXQogZWRpdGluZy9zZWxlY3Rpb24vaW9zIFsgU2tpcCBdCitlZGl0aW5nL2RlbGV0aW5n
L2lvcyBbIFNraXAgXQogZWRpdGluZy91bmRvLW1hbmFnZXIgWyBTa2lwIF0KIHRpbGVkLWRyYXdp
bmcgWyBTa2lwIF0KIGZhc3QvY3NzL2lvcyBbIFNraXAgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZWRpdGluZy9kZWxldGluZy9pb3MvYmFja3NwYWNlLWxhc3QtY2hhcmFjdGVyLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvZGVsZXRpbmcvaW9zL2JhY2tzcGFjZS1sYXN0LWNo
YXJhY3Rlci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAuLjUwNTY0ZDk4ZGFmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9k
ZWxldGluZy9pb3MvYmFja3NwYWNlLWxhc3QtY2hhcmFjdGVyLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDExIEBACitUaGlzIHRlc3RzIHVzaW5nIHRoZSBzb2Z0d2FyZSBrZXlib2FyZCBhbmQgcHJl
c3NpbmcgJ3cnIHRoZW4gYmFja3NwYWNlIGRlbGV0ZXMgdGhlICd3JyBhbmQgZG9lcyBub3QgY2F1
c2UgYW4gYXNzZXJ0aW9uIGZhaWx1cmUgaW4gYSBkZWJ1ZyBidWlsZC4KKworT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRF
U1QgQ09NUExFVEUiLgorCisKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImlucHV0Iiku
dmFsdWUgaXMgInciCitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpbnB1dCIpLnZhbHVl
IGlzICIiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9kZWxldGluZy9pb3MvYmFja3NwYWNl
LWxhc3QtY2hhcmFjdGVyLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2RlbGV0aW5nL2lvcy9i
YWNrc3BhY2UtbGFzdC1jaGFyYWN0ZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMC4uYWNmNTFmMzQ5M2YKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9l
ZGl0aW5nL2RlbGV0aW5nL2lvcy9iYWNrc3BhY2UtbGFzdC1jaGFyYWN0ZXIuaHRtbApAQCAtMCww
ICsxLDQ2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8ZGl2IGlkPSJ0ZXN0LWNvbnRhaW5lciI+CisgICAgPHRleHRhcmVhIGlkPSJpbnB1dCI+PC90
ZXh0YXJlYT4KKyAgICA8dGV4dGFyZWEgaWQ9Im91dHB1dCIgcmVhZG9ubHk+PC90ZXh0YXJlYT4K
KzwvZGl2PgorPHNjcmlwdD4KK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworbGV0IGlu
cHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImlucHV0Iik7CisKK2Z1bmN0aW9uIGFwcGVu
ZEFOZXdsaW5lKCkKK3sKKyAgICBsZXQgb3V0cHV0RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJvdXRwdXQiKTsKKyAgICBvdXRwdXRFbGVtZW50LnZhbHVlID0gb3V0cHV0RWxlbWVu
dC52YWx1ZSArICJcbiI7Cit9CisKK2FzeW5jIGZ1bmN0aW9uIHJ1blRlc3QoKQoreworICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgYXdhaXQgVUlIZWxwZXIuc2V0SGFyZHdhcmVL
ZXlib2FyZEF0dGFjaGVkKGZhbHNlKTsKKworICAgIGF3YWl0IFVJSGVscGVyLmNhbGxGdW5jdGlv
bkFuZFdhaXRGb3JFdmVudCgoKSA9PiB3aW5kb3cudGVzdFJ1bm5lciAmJiBVSUhlbHBlci5hY3Rp
dmF0ZUVsZW1lbnQoaW5wdXQpLCBpbnB1dCwgImZvY3VzIik7CisKKyAgICBhd2FpdCBVSUhlbHBl
ci5jYWxsRnVuY3Rpb25BbmRXYWl0Rm9yRXZlbnQoKCkgPT4gd2luZG93LnRlc3RSdW5uZXIgJiYg
VUlIZWxwZXIua2V5RG93bigidyIpLCBpbnB1dCwgImlucHV0Iik7CisgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCdkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW5wdXQiKS52YWx1ZScsICJ3Iik7
CisKKyAgICBhd2FpdCBVSUhlbHBlci5jYWxsRnVuY3Rpb25BbmRXYWl0Rm9yRXZlbnQoKCkgPT4g
d2luZG93LnRlc3RSdW5uZXIgJiYgVUlIZWxwZXIua2V5RG93bigiXGIiKSwgaW5wdXQsICJpbnB1
dCIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImlucHV0IikudmFsdWUnLCAiIik7CisKKyAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0LWNvbnRhaW5lciIpKTsKKyAgICBmaW5pc2hKU1Rl
c3QoKTsKK30KKworZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdXNpbmcgdGhlIHNvZnR3YXJlIGtl
eWJvYXJkIGFuZCBwcmVzc2luZyAndycgdGhlbiA8a2JkPmJhY2tzcGFjZTwva2JkPiBkZWxldGVz
IHRoZSAndycgYW5kIGRvZXMgbm90IGNhdXNlIGFuIGFzc2VydGlvbiBmYWlsdXJlIGluIGEgZGVi
dWcgYnVpbGQuIikKK2lucHV0LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLCBhcHBlbmRBTmV3
bGluZSk7CisKK3J1blRlc3QoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBjOTU0MDU4ZDFlNy4uMzFl
NzNiNDI3NzMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0
YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zCkBA
IC04LDYgKzgsNyBAQAogCiBhY2Nlc3NpYmlsaXR5L2lvcy1zaW11bGF0b3IgWyBQYXNzIF0KIGRp
c3BsYXlsaXN0cyBbIFBhc3MgXQorZWRpdGluZy9kZWxldGluZy9pb3MgWyBQYXNzIF0KIGh0dHAv
dGVzdHMvcXVpY2tsb29rIFsgUGFzcyBdCiBtZWRpYS9pb3MgWyBQYXNzIF0KIHF1aWNrbG9vayBb
IFBhc3MgXQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwppbmRleCA5ODM5NjRmNzcyMS4uMzliMjE1NzQ1OGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNjEgQEAKKzIwMTktMDctMjYgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUu
Y29tPgorCisgICAgICAgIFtpT1NdIEFTU0VSVElPTiBGQUlMVVJFOiAhaXNNaXNzaW5nUG9zdExh
eW91dERhdGEgaW4gV2ViS2l0OjpFZGl0b3JTdGF0ZTo6cG9zdExheW91dERhdGEoKQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk5OTYwCisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS81MzMyMzk2Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBSZWZhY3RvciB0aGUgY29tcHV0YXRpb24gb2YgZWRpdG9yIHN0
YXRlIHNvIHRoYXQgd2UgY2FuIHJlcXVlc3QgdGhhdCBhIGxheW91dCBiZSBwZXJmb3JtZWQKKyAg
ICAgICAgZWFjaCB0aW1lIHdlIGNvbXB1dGUgdGhlIGVkaXRvciBzdGF0ZSBhcyBwYXJ0IG9mIGFz
a2luZyB0aGUgVUkgcHJvY2VzcyB0byBpbnRlcnByZXQgYSBrZXkKKyAgICAgICAgZXZlbnQuIFRo
ZSBmdWxsIChyZWFkOiBhZnRlciBsYXlvdXQpIGVkaXRvciBzdGF0ZSBpcyBuZWVkZWQgZm9yIFVJ
S2l0IHRvIHBlcmZvcm0gYSBkZWxldGlvbgorICAgICAgICBiZWNhdXNlIFVJS2l0IHdhbnRzIHRv
IGtub3cgaG93IG1hbnkgY2hhcmFjdGVycyBhcmUgYmVmb3JlIHRoZSBzZWxlY3Rpb24uIE90aGVy
d2lzZSwgd2UgaGl0CisgICAgICAgIGFuIGFzc2VydCBkdWUgdG8gdGhlIGZhY3QgdGhlIGxhc3Qg
ZWRpdG9yIHN0YXRlIHNlbnQgKHdoZW4gdGhlIFdlYiBwcm9jZXNzIGFza2VkIHRoZSBVSSBwcm9j
ZXNzCisgICAgICAgIHRvIGludGVycHJldCB0aGUga2V5KSBpcyBtaXNzaW5nIGxheW91dCBkYXRh
LgorCisgICAgICAgIFRoZSByZWZhY3RvcmluZyBhbHNvIG1vdmVzIHRoZSBDb2NvYS1jb21tb24g
Y29kZSBvdXQgb2YgdGhlIHBsYXRmb3JtLWluZGVwZW5kZW50IFdlYlBhZ2UuY3BwCisgICAgICAg
IGZpbGUgaW50byBXZWJQYWdlQ29jb2EubW0uCisKKyAgICAgICAgT25lIHNpZGUgZWZmZWN0IG9m
IHRoZSByZWZhY3RvcmluZyBpcyB0aGF0IHdlIG5vIGxvbmdlciBhbGxvdyB0aGUgcGxhdGZvcm1F
ZGl0b3JTdGF0ZSgpIGZ1bmN0aW9uCisgICAgICAgIHRvIG92ZXJyaWRlIHRoZSBpc01pc3NpbmdQ
b3N0TGF5b3V0RGF0YSBiaXQuIEN1cnJlbnRseSBpdCBjYW4gZXZlbiB0aG91Z2ggdGhlIGNhbGxp
bmcgY29kZSwgdGhlCisgICAgICAgIHBsYXRmb3JtIGluZGVwZW5kZW50IGNvZGUgKFBJRSkgaW4g
V2ViUGFnZSwgbWF5IGhhdmUgYXR0YWNoZWQgbGF5b3V0IGRhdGEuIE5vdyB0aGUgUElFIGNvZGUg
c2V0cworICAgICAgICB0aGlzIGJpdCBpZiBpdCBhdHRhY2hlZCBsYXlvdXQgZGF0YSBhbmQgdGhl
IHBsYXRmb3JtRWRpdG9yU3RhdGUoKSBmdW5jdGlvbiBvbmx5IGF0dGFjaGVzIG1vcmUKKyAgICAg
ICAgbGF5b3V0IGRhdGEgaWYgdGhhdCBiaXQgaXMgc2V0LiBwbGF0Zm9ybUVkaXRvclN0YXRlKCkg
bmV2ZXIgdW5zZXRzIHRoYXQgYml0IChpLmUuIHNldHMgaXNNaXNzaW5nUG9zdExheW91dERhdGEK
KyAgICAgICAgdG8gdHJ1ZSkuCisKKyAgICAgICAgVGhlIHBhdGNoIGFsc28gcmVtb3ZlcyBtX2lz
RWRpdG9yU3RhdGVNaXNzaW5nUG9zdExheW91dERhdGEgaW4gV2ViUGFnZS5oLiBUaGlzIGluc3Rh
bmNlIHZhcmlhYmxlCisgICAgICAgIGhhcyBiZWVuIHVudXNlZCBzaW5jZSA8aHR0cHM6Ly90cmFj
LndlYmtpdC5vcmcvY2hhbmdlc2V0LzIyMTA2NC93ZWJraXQ+LiBBbHNvIHdlIGhhdmVuJ3QgYmVl
biB1c2luZworICAgICAgICBJbmNsdWRlUG9zdExheW91dERhdGFIaW50OjpObyBzaW5jZSB0aGUg
bGFzdCByZWZlcmVuY2UgdG8gaXQgd2FzIHJlbW92ZWQgaW4gPGh0dHBzOi8vdHJhYy53ZWJraXQu
b3JnL2NoYW5nZXNldC8yNDQ0OTQvd2Via2l0Pi4KKworICAgICAgICAqIFNoYXJlZC9FZGl0b3JT
dGF0ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2Eu
bW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtRWRpdG9yU3RhdGVDb21tb24g
Y29uc3QpOiBBZGRlZC4gTW92ZWQgQ29jb2EtY29tbW9uIGNvZGUgZnJvbSBXZWJQYWdlLmNwcAor
ICAgICAgICB0byBoZXJlLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZWRpdG9yU3RhdGUgY29uc3QpOiBNb3ZlIENv
Y29hLWNvbW1vbiBjb2RlIHRvIFdlYlBhZ2VDb2NvYS5tbS4gQ2hhbmdlIGVudW0gdG8KKyAgICAg
ICAgdHJhY2sgd2hldGhlciBhIGxheW91dCBzaG91bGQgYmUgcGVyZm9ybWVkLiBLZWVwIHRoZSBj
dXJyZW50IGJlaGF2aW9yIG9mIG9ubHkgaW5jbHVkaW5nIHBvc3QgbGF5b3V0CisgICAgICAgIGRh
dGEgaWYgdGhlIGZyYW1lIHZpZXcgZG9lcyBub3QgbmVlZCBhIGxheW91dC4gVGhpcyBiZWhhdmlv
ciBpcyBlbmNvZGVkIGluIHRoZSBlbnVtZXJhdG9yIFNob3VsZFBlcmZvcm1MYXlvdXQ6OkRlZmF1
bHQuCisgICAgICAgIHdoaWNoIGlzIHRoZSBkZWZhdWx0IGFyZ3VtZW50IHZhbHVlIGZvciB0aGUg
YXJndW1lbnQgc2hvdWxkUGVyZm9ybUxheW91dC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwbGF0Zm9ybU5lZWRzTGF5
b3V0Rm9yRWRpdG9yU3RhdGUgY29uc3QpOiBBZGRlZC4gTm9uLUNvY29hIHBvcnQgaW1wbGVtZW50
YXRpb24KKyAgICAgICAgdGhhdCByZXR1cm5zIGZhbHNlLgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9ndGsvV2ViUGFnZUd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBs
YXRmb3JtRWRpdG9yU3RhdGUgY29uc3QpOiBFYXJseSByZXR1cm4gaWYgaXNNaXNzaW5nUG9zdExh
eW91dERhdGEgaXMgdHJ1ZS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBh
Z2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtTmVlZHNMYXlvdXRG
b3JFZGl0b3JTdGF0ZSBjb25zdCk6IEFkZGVkLiBLZWVwIHRoZSBjdXJyZW50IGJlaGF2aW9yIG9m
CisgICAgICAgIHBlcmZvcm1pbmcgYSBsYXlvdXQgaWYgd2UgaGF2ZSBhIGNvbXBvc2l0aW9uIG9y
IGEgaGFyZHdhcmUga2V5Ym9hcmQgaXMgYXR0YWNoZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OnBsYXRmb3JtRWRpdG9yU3RhdGUgY29uc3QpOiBDYWxsIHBsYXRmb3JtRWRpdG9yU3RhdGVD
b21tb24oKS4gQmFpbCBvdXQgZWFybHkKKyAgICAgICAgaWYgaXNNaXNzaW5nUG9zdExheW91dERh
dGEgaXMgdHJ1ZS4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aGFuZGxlRWRpdGluZ0tleWJv
YXJkRXZlbnQpOiBUaGUgaW1wb3J0YW50IHBhcnQgb2YgdGhpcyBwYXRjaC4gUmVxdWVzdCBhIGxh
eW91dAorICAgICAgICB3aGVuIGNvbXB1dGluZyB0aGUgZWRpdG9yIHN0YXRlIHRoYXQgd2Ugd2ls
bCBzZW5kIHRvIHRoZSBVSSBwcm9jZXNzLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvV2ViUGFnZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGxhdGZvcm1FZGl0
b3JTdGF0ZSBjb25zdCk6IENhbGwgcGxhdGZvcm1FZGl0b3JTdGF0ZUNvbW1vbigpLiBCYWlsIG91
dCBlYXJseQorICAgICAgICBpZiBpc01pc3NpbmdQb3N0TGF5b3V0RGF0YSBpcyB0cnVlLgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS93aW4vV2ViUGFnZVdpbi5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtRWRpdG9yU3RhdGUgY29uc3QpOiBVcGRhdGUgYXMgbmVl
ZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS93cGUvV2ViUGFnZVdQRS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtRWRpdG9yU3RhdGUgY29uc3QpOiBEaXR0
by4KKwogMjAyMC0wMy0xOCAgeW91ZW5uIGZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAg
ICAgICAgV2ViUGFnZSBzaG91bGQgb3duIGEgUmVmPFdlYkZyYW1lPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvRWRpdG9yU3RhdGUuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Vk
aXRvclN0YXRlLmgKaW5kZXggNmZhYTdjZTgxNTEuLmIzOTYwNzdlNTc0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0b3JTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0VkaXRvclN0YXRlLmgKQEAgLTc0LDcgKzc0LDcgQEAgc3RydWN0IEVkaXRvclN0YXRlIHsK
ICAgICBib29sIGlzSW5QYXNzd29yZEZpZWxkIHsgZmFsc2UgfTsKICAgICBib29sIGlzSW5QbHVn
aW4geyBmYWxzZSB9OwogICAgIGJvb2wgaGFzQ29tcG9zaXRpb24geyBmYWxzZSB9OwotICAgIGJv
b2wgaXNNaXNzaW5nUG9zdExheW91dERhdGEgeyBmYWxzZSB9OworICAgIGJvb2wgaXNNaXNzaW5n
UG9zdExheW91dERhdGEgeyB0cnVlIH07CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IFdlYkNvcmU6OkludFJlY3QgZmlyc3RNYXJrZWRSZWN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCmluZGV4IDExMDEz
Y2U1ZWM4Li5iOTJkZjliMDg1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQpAQCAtMzUsMTEgKzM1LDE0IEBACiAj
aW1wb3J0ICJXZWJSZW1vdGVPYmplY3RSZWdpc3RyeS5oIgogI2ltcG9ydCA8cGFsL3NwaS9jb2Nv
YS9MYXVuY2hTZXJ2aWNlc1NQSS5oPgogI2ltcG9ydCA8V2ViQ29yZS9EaWN0aW9uYXJ5TG9va3Vw
Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0VkaXRpbmcuaD4KICNpbXBvcnQgPFdlYkNvcmUvRWRpdG9y
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0V2ZW50SGFuZGxlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9G
b2N1c0NvbnRyb2xsZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0hUTUxDb252ZXJ0ZXIuaD4KKyNpbXBvcnQgPFdlYkNvcmUvSFRNTE9MaXN0RWxl
bWVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9IVE1MVUxpc3RFbGVtZW50Lmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0hpdFRlc3RSZXN1bHQuaD4KICNpbXBvcnQgPFdlYkNvcmUvTm9kZVJlbmRlclN0eWxl
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BheW1lbnRDb29yZGluYXRvci5oPgpAQCAtMzAwLDYgKzMw
Myw3IEBAIFJldGFpblB0cjxDRkRhdGFSZWY+IFdlYlBhZ2U6OnBkZlNuYXBzaG90QXRTaXplKElu
dFJlY3QgcmVjdCwgSW50U2l6ZSBiaXRtYXBTaXplCiAgICAgcmV0dXJuIGRhdGE7CiB9CiAKKwog
dm9pZCBXZWJQYWdlOjpnZXRQcm9jZXNzRGlzcGxheU5hbWUoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChTdHJpbmcmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAjaWYgUExBVEZPUk0oTUFDKQpA
QCAtMzA5LDYgKzMxMyw3MSBAQCB2b2lkIFdlYlBhZ2U6OmdldFByb2Nlc3NEaXNwbGF5TmFtZShD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJiBjb21wbGV0aQogI2VuZGlmCiB9CiAK
K3ZvaWQgV2ViUGFnZTo6cGxhdGZvcm1FZGl0b3JTdGF0ZUNvbW1vbihjb25zdCBGcmFtZSYgZnJh
bWUsIEVkaXRvclN0YXRlJiByZXN1bHQpIGNvbnN0Cit7CisgICAgaWYgKHJlc3VsdC5pc01pc3Np
bmdQb3N0TGF5b3V0RGF0YSkKKyAgICAgICAgcmV0dXJuOworCisgICAgY29uc3QgYXV0byYgc2Vs
ZWN0aW9uID0gZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7CisKKyAgICBpZiAoIXJlc3Vs
dC5pc0NvbnRlbnRFZGl0YWJsZSB8fCBzZWxlY3Rpb24uaXNOb25lKCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIGF1dG8mIHBvc3RMYXlvdXREYXRhID0gcmVzdWx0LnBvc3RMYXlvdXREYXRhKCk7
CisgICAgaWYgKGF1dG8gZWRpdGluZ1N0eWxlID0gRWRpdGluZ1N0eWxlOjpzdHlsZUF0U2VsZWN0
aW9uU3RhcnQoc2VsZWN0aW9uKSkgeworICAgICAgICBpZiAoZWRpdGluZ1N0eWxlLT5oYXNTdHls
ZShDU1NQcm9wZXJ0eUZvbnRXZWlnaHQsICJib2xkIl9zKSkKKyAgICAgICAgICAgIHBvc3RMYXlv
dXREYXRhLnR5cGluZ0F0dHJpYnV0ZXMgfD0gQXR0cmlidXRlQm9sZDsKKworICAgICAgICBpZiAo
ZWRpdGluZ1N0eWxlLT5oYXNTdHlsZShDU1NQcm9wZXJ0eUZvbnRTdHlsZSwgIml0YWxpYyJfcykg
fHwgZWRpdGluZ1N0eWxlLT5oYXNTdHlsZShDU1NQcm9wZXJ0eUZvbnRTdHlsZSwgIm9ibGlxdWUi
X3MpKQorICAgICAgICAgICAgcG9zdExheW91dERhdGEudHlwaW5nQXR0cmlidXRlcyB8PSBBdHRy
aWJ1dGVJdGFsaWNzOworCisgICAgICAgIGlmIChlZGl0aW5nU3R5bGUtPmhhc1N0eWxlKENTU1By
b3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3QsICJ1bmRlcmxpbmUiX3MpKQorICAg
ICAgICAgICAgcG9zdExheW91dERhdGEudHlwaW5nQXR0cmlidXRlcyB8PSBBdHRyaWJ1dGVVbmRl
cmxpbmU7CisKKyAgICAgICAgaWYgKGF1dG8qIHN0eWxlUHJvcGVydGllcyA9IGVkaXRpbmdTdHls
ZS0+c3R5bGUoKSkgeworICAgICAgICAgICAgYm9vbCBpc0xlZnRUb1JpZ2h0ID0gc3R5bGVQcm9w
ZXJ0aWVzLT5wcm9wZXJ0eUFzVmFsdWVJRChDU1NQcm9wZXJ0eURpcmVjdGlvbikgPT0gQ1NTVmFs
dWVMdHI7CisgICAgICAgICAgICBzd2l0Y2ggKHN0eWxlUHJvcGVydGllcy0+cHJvcGVydHlBc1Zh
bHVlSUQoQ1NTUHJvcGVydHlUZXh0QWxpZ24pKSB7CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVl
UmlnaHQ6CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlV2Via2l0UmlnaHQ6CisgICAgICAgICAg
ICAgICAgcG9zdExheW91dERhdGEudGV4dEFsaWdubWVudCA9IFJpZ2h0QWxpZ25tZW50OworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUxlZnQ6CisgICAg
ICAgICAgICBjYXNlIENTU1ZhbHVlV2Via2l0TGVmdDoKKyAgICAgICAgICAgICAgICBwb3N0TGF5
b3V0RGF0YS50ZXh0QWxpZ25tZW50ID0gTGVmdEFsaWdubWVudDsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVDZW50ZXI6CisgICAgICAgICAgICBjYXNl
IENTU1ZhbHVlV2Via2l0Q2VudGVyOgorICAgICAgICAgICAgICAgIHBvc3RMYXlvdXREYXRhLnRl
eHRBbGlnbm1lbnQgPSBDZW50ZXJBbGlnbm1lbnQ7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICBjYXNlIENTU1ZhbHVlSnVzdGlmeToKKyAgICAgICAgICAgICAgICBwb3N0TGF5
b3V0RGF0YS50ZXh0QWxpZ25tZW50ID0gSnVzdGlmaWVkQWxpZ25tZW50OworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVN0YXJ0OgorICAgICAgICAgICAg
ICAgIHBvc3RMYXlvdXREYXRhLnRleHRBbGlnbm1lbnQgPSBpc0xlZnRUb1JpZ2h0ID8gTGVmdEFs
aWdubWVudCA6IFJpZ2h0QWxpZ25tZW50OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgY2FzZSBDU1NWYWx1ZUVuZDoKKyAgICAgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS50
ZXh0QWxpZ25tZW50ID0gaXNMZWZ0VG9SaWdodCA/IFJpZ2h0QWxpZ25tZW50IDogTGVmdEFsaWdu
bWVudDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoYXV0byB0
ZXh0Q29sb3IgPSBzdHlsZVByb3BlcnRpZXMtPnByb3BlcnR5QXNDb2xvcihDU1NQcm9wZXJ0eUNv
bG9yKSkKKyAgICAgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS50ZXh0Q29sb3IgPSAqdGV4dENv
bG9yOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGF1dG8qIGVuY2xvc2luZ0xpc3RFbGVt
ZW50ID0gZW5jbG9zaW5nTGlzdChzZWxlY3Rpb24uc3RhcnQoKS5jb250YWluZXJOb2RlKCkpKSB7
CisgICAgICAgIGlmIChpczxIVE1MVUxpc3RFbGVtZW50PigqZW5jbG9zaW5nTGlzdEVsZW1lbnQp
KQorICAgICAgICAgICAgcG9zdExheW91dERhdGEuZW5jbG9zaW5nTGlzdFR5cGUgPSBVbm9yZGVy
ZWRMaXN0OworICAgICAgICBlbHNlIGlmIChpczxIVE1MT0xpc3RFbGVtZW50PigqZW5jbG9zaW5n
TGlzdEVsZW1lbnQpKQorICAgICAgICAgICAgcG9zdExheW91dERhdGEuZW5jbG9zaW5nTGlzdFR5
cGUgPSBPcmRlcmVkTGlzdDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgfQorCisgICAgcG9zdExheW91dERhdGEuYmFzZVdyaXRpbmdEaXJlY3Rp
b24gPSBmcmFtZS5lZGl0b3IoKS5iYXNlV3JpdGluZ0RpcmVjdGlvbkZvclNlbGVjdGlvblN0YXJ0
KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gUExBVEZPUk0oQ09D
T0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4
IDA4ZjE1MmMxYmEzLi43YTRjZmIwNDFhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTE3OCwxMiArMTc4LDEwIEBACiAjaW5jbHVkZSA8V2Vi
Q29yZS9IVE1MSW5wdXRFbGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IVE1MTWVudUVsZW1l
bnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hUTUxNZW51SXRlbUVsZW1lbnQuaD4KLSNpbmNsdWRl
IDxXZWJDb3JlL0hUTUxPTGlzdEVsZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hUTUxQbHVn
SW5FbGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50Lmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9IVE1MU2VsZWN0RWxlbWVudC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0hUTUxV
TGlzdEVsZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hpc3RvcnlDb250cm9sbGVyLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9IaXN0b3J5SXRlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSGl0VGVz
dFJlc3VsdC5oPgpAQCAtMTAzOSw5ICsxMDM3LDEwIEBAIFdlYkNvcmU6OldlYkdMTG9hZFBvbGlj
eSBXZWJQYWdlOjpyZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwoV2ViRnJhbWUqLCBjb25zdCBVUkwm
CiB9CiAjZW5kaWYKIAotRWRpdG9yU3RhdGUgV2ViUGFnZTo6ZWRpdG9yU3RhdGUoSW5jbHVkZVBv
c3RMYXlvdXREYXRhSGludCBzaG91bGRJbmNsdWRlUG9zdExheW91dERhdGEpIGNvbnN0CitFZGl0
b3JTdGF0ZSBXZWJQYWdlOjplZGl0b3JTdGF0ZShTaG91bGRQZXJmb3JtTGF5b3V0IHNob3VsZFBl
cmZvcm1MYXlvdXQpIGNvbnN0CiB7Ci0gICAgRnJhbWUmIGZyYW1lID0gbV9wYWdlLT5mb2N1c0Nv
bnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKKyAgICAvLyBSZWYgdGhlIGZyYW1lIGJl
Y2F1c2UgdGhpcyBmdW5jdGlvbiBtYXkgcGVyZm9ybSBsYXlvdXQsIHdoaWNoIG1heSBjYXVzZSBm
cmFtZSBkZXN0cnVjdGlvbi4KKyAgICBSZWY8RnJhbWU+IGZyYW1lID0gbV9wYWdlLT5mb2N1c0Nv
bnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKIAogICAgIEVkaXRvclN0YXRlIHJlc3Vs
dDsKIApAQCAtMTA1NCw4ICsxMDUzLDggQEAgRWRpdG9yU3RhdGUgV2ViUGFnZTo6ZWRpdG9yU3Rh
dGUoSW5jbHVkZVBvc3RMYXlvdXREYXRhSGludCBzaG91bGRJbmNsdWRlUG9zdExheW8KICAgICAg
ICAgfQogICAgIH0KIAotICAgIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbiA9IGZy
YW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpOwotICAgIGNvbnN0IEVkaXRvciYgZWRpdG9yID0g
ZnJhbWUuZWRpdG9yKCk7CisgICAgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uID0g
ZnJhbWUtPnNlbGVjdGlvbigpLnNlbGVjdGlvbigpOworICAgIGNvbnN0IEVkaXRvciYgZWRpdG9y
ID0gZnJhbWUtPmVkaXRvcigpOwogCiAgICAgcmVzdWx0LnNlbGVjdGlvbklzTm9uZSA9IHNlbGVj
dGlvbi5pc05vbmUoKTsKICAgICByZXN1bHQuc2VsZWN0aW9uSXNSYW5nZSA9IHNlbGVjdGlvbi5p
c1JhbmdlKCk7CkBAIC0xMDY1LDExICsxMDY0LDE1IEBAIEVkaXRvclN0YXRlIFdlYlBhZ2U6OmVk
aXRvclN0YXRlKEluY2x1ZGVQb3N0TGF5b3V0RGF0YUhpbnQgc2hvdWxkSW5jbHVkZVBvc3RMYXlv
CiAgICAgcmVzdWx0Lmhhc0NvbXBvc2l0aW9uID0gZWRpdG9yLmhhc0NvbXBvc2l0aW9uKCk7CiAg
ICAgcmVzdWx0LnNob3VsZElnbm9yZVNlbGVjdGlvbkNoYW5nZXMgPSBlZGl0b3IuaWdub3JlU2Vs
ZWN0aW9uQ2hhbmdlcygpIHx8IChlZGl0b3IuY2xpZW50KCkgJiYgIWVkaXRvci5jbGllbnQoKS0+
c2hvdWxkUmV2ZWFsQ3VycmVudFNlbGVjdGlvbkFmdGVySW5zZXJ0aW9uKCkpOwogCi0gICAgaWYg
KGF1dG8qIGRvY3VtZW50ID0gZnJhbWUuZG9jdW1lbnQoKSkKLSAgICAgICAgcmVzdWx0Lm9yaWdp
bklkZW50aWZpZXJGb3JQYXN0ZWJvYXJkID0gZG9jdW1lbnQtPm9yaWdpbklkZW50aWZpZXJGb3JQ
YXN0ZWJvYXJkKCk7CisgICAgYXV0byYgZG9jdW1lbnQgPSAqZnJhbWUtPmRvY3VtZW50KCk7Cisg
ICAgcmVzdWx0Lm9yaWdpbklkZW50aWZpZXJGb3JQYXN0ZWJvYXJkID0gZG9jdW1lbnQub3JpZ2lu
SWRlbnRpZmllckZvclBhc3RlYm9hcmQoKTsKKworICAgIGlmIChzaG91bGRQZXJmb3JtTGF5b3V0
ID09IFNob3VsZFBlcmZvcm1MYXlvdXQ6OlllcyB8fCBwbGF0Zm9ybU5lZWRzTGF5b3V0Rm9yRWRp
dG9yU3RhdGUoZnJhbWUpKQorICAgICAgICBkb2N1bWVudC51cGRhdGVMYXlvdXQoKTsgLy8gTWF5
IGNhdXNlIGZyYW1lIGRlc3RydWN0aW9uCisKKyAgICBpZiAoYXV0byogZnJhbWVWaWV3ID0gZG9j
dW1lbnQudmlldygpOyBmcmFtZVZpZXcgJiYgIWZyYW1lVmlldy0+bmVlZHNMYXlvdXQoKSkgewor
ICAgICAgICByZXN1bHQuaXNNaXNzaW5nUG9zdExheW91dERhdGEgPSBmYWxzZTsKIAotICAgIGJv
b2wgY2FuSW5jbHVkZVBvc3RMYXlvdXREYXRhID0gZnJhbWUudmlldygpICYmICFmcmFtZS52aWV3
KCktPm5lZWRzTGF5b3V0KCk7Ci0gICAgaWYgKHNob3VsZEluY2x1ZGVQb3N0TGF5b3V0RGF0YSA9
PSBJbmNsdWRlUG9zdExheW91dERhdGFIaW50OjpZZXMgJiYgY2FuSW5jbHVkZVBvc3RMYXlvdXRE
YXRhKSB7CiAgICAgICAgIGF1dG8mIHBvc3RMYXlvdXREYXRhID0gcmVzdWx0LnBvc3RMYXlvdXRE
YXRhKCk7CiAgICAgICAgIHBvc3RMYXlvdXREYXRhLmNhbkN1dCA9IGVkaXRvci5jYW5DdXQoKTsK
ICAgICAgICAgcG9zdExheW91dERhdGEuY2FuQ29weSA9IGVkaXRvci5jYW5Db3B5KCk7CkBAIC0x
MDc3LDY2ICsxMDgwLDkgQEAgRWRpdG9yU3RhdGUgV2ViUGFnZTo6ZWRpdG9yU3RhdGUoSW5jbHVk
ZVBvc3RMYXlvdXREYXRhSGludCBzaG91bGRJbmNsdWRlUG9zdExheW8KIAogICAgICAgICBpZiAo
bV9uZWVkc0ZvbnRBdHRyaWJ1dGVzKQogICAgICAgICAgICAgcG9zdExheW91dERhdGEuZm9udEF0
dHJpYnV0ZXMgPSBlZGl0b3IuZm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0KCk7Ci0KLSNp
ZiBQTEFURk9STShDT0NPQSkKLSAgICAgICAgaWYgKHJlc3VsdC5pc0NvbnRlbnRFZGl0YWJsZSAm
JiAhc2VsZWN0aW9uLmlzTm9uZSgpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBlZGl0aW5nU3R5
bGUgPSBFZGl0aW5nU3R5bGU6OnN0eWxlQXRTZWxlY3Rpb25TdGFydChzZWxlY3Rpb24pKSB7Ci0g
ICAgICAgICAgICAgICAgaWYgKGVkaXRpbmdTdHlsZS0+aGFzU3R5bGUoQ1NTUHJvcGVydHlGb250
V2VpZ2h0LCAiYm9sZCIpKQotICAgICAgICAgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS50eXBp
bmdBdHRyaWJ1dGVzIHw9IEF0dHJpYnV0ZUJvbGQ7Ci0KLSAgICAgICAgICAgICAgICBpZiAoZWRp
dGluZ1N0eWxlLT5oYXNTdHlsZShDU1NQcm9wZXJ0eUZvbnRTdHlsZSwgIml0YWxpYyIpIHx8IGVk
aXRpbmdTdHlsZS0+aGFzU3R5bGUoQ1NTUHJvcGVydHlGb250U3R5bGUsICJvYmxpcXVlIikpCi0g
ICAgICAgICAgICAgICAgICAgIHBvc3RMYXlvdXREYXRhLnR5cGluZ0F0dHJpYnV0ZXMgfD0gQXR0
cmlidXRlSXRhbGljczsKLQotICAgICAgICAgICAgICAgIGlmIChlZGl0aW5nU3R5bGUtPmhhc1N0
eWxlKENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3QsICJ1bmRlcmxpbmUi
KSkKLSAgICAgICAgICAgICAgICAgICAgcG9zdExheW91dERhdGEudHlwaW5nQXR0cmlidXRlcyB8
PSBBdHRyaWJ1dGVVbmRlcmxpbmU7Ci0KLSAgICAgICAgICAgICAgICBpZiAoYXV0byogc3R5bGVQ
cm9wZXJ0aWVzID0gZWRpdGluZ1N0eWxlLT5zdHlsZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGJvb2wgaXNMZWZ0VG9SaWdodCA9IHN0eWxlUHJvcGVydGllcy0+cHJvcGVydHlBc1ZhbHVlSUQo
Q1NTUHJvcGVydHlEaXJlY3Rpb24pID09IENTU1ZhbHVlTHRyOwotICAgICAgICAgICAgICAgICAg
ICBzd2l0Y2ggKHN0eWxlUHJvcGVydGllcy0+cHJvcGVydHlBc1ZhbHVlSUQoQ1NTUHJvcGVydHlU
ZXh0QWxpZ24pKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVSaWdodDoKLSAg
ICAgICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVdlYmtpdFJpZ2h0OgotICAgICAgICAgICAg
ICAgICAgICAgICAgcG9zdExheW91dERhdGEudGV4dEFsaWdubWVudCA9IFJpZ2h0QWxpZ25tZW50
OwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNh
c2UgQ1NTVmFsdWVMZWZ0OgotICAgICAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlV2Via2l0
TGVmdDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHBvc3RMYXlvdXREYXRhLnRleHRBbGlnbm1l
bnQgPSBMZWZ0QWxpZ25tZW50OwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVDZW50ZXI6Ci0gICAgICAgICAgICAgICAgICAg
IGNhc2UgQ1NTVmFsdWVXZWJraXRDZW50ZXI6Ci0gICAgICAgICAgICAgICAgICAgICAgICBwb3N0
TGF5b3V0RGF0YS50ZXh0QWxpZ25tZW50ID0gQ2VudGVyQWxpZ25tZW50OwotICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVKdXN0
aWZ5OgotICAgICAgICAgICAgICAgICAgICAgICAgcG9zdExheW91dERhdGEudGV4dEFsaWdubWVu
dCA9IEp1c3RpZmllZEFsaWdubWVudDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlU3RhcnQ6Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBwb3N0TGF5b3V0RGF0YS50ZXh0QWxpZ25tZW50ID0gaXNMZWZ0VG9SaWdodCA/IExl
ZnRBbGlnbm1lbnQgOiBSaWdodEFsaWdubWVudDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlRW5kOgotICAgICAgICAgICAg
ICAgICAgICAgICAgcG9zdExheW91dERhdGEudGV4dEFsaWdubWVudCA9IGlzTGVmdFRvUmlnaHQg
PyBSaWdodEFsaWdubWVudCA6IExlZnRBbGlnbm1lbnQ7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAg
IGlmIChhdXRvIHRleHRDb2xvciA9IHN0eWxlUHJvcGVydGllcy0+cHJvcGVydHlBc0NvbG9yKENT
U1Byb3BlcnR5Q29sb3IpKQotICAgICAgICAgICAgICAgICAgICAgICAgcG9zdExheW91dERhdGEu
dGV4dENvbG9yID0gKnRleHRDb2xvcjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgIGlmIChhdXRvKiBlbmNsb3NpbmdMaXN0RWxlbWVudCA9IGVuY2xvc2lu
Z0xpc3Qoc2VsZWN0aW9uLnN0YXJ0KCkuY29udGFpbmVyTm9kZSgpKSkgewotICAgICAgICAgICAg
ICAgIGlmIChpczxIVE1MVUxpc3RFbGVtZW50PigqZW5jbG9zaW5nTGlzdEVsZW1lbnQpKQotICAg
ICAgICAgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS5lbmNsb3NpbmdMaXN0VHlwZSA9IFVub3Jk
ZXJlZExpc3Q7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoaXM8SFRNTE9MaXN0RWxlbWVudD4o
KmVuY2xvc2luZ0xpc3RFbGVtZW50KSkKLSAgICAgICAgICAgICAgICAgICAgcG9zdExheW91dERh
dGEuZW5jbG9zaW5nTGlzdFR5cGUgPSBPcmRlcmVkTGlzdDsKLSAgICAgICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS5iYXNlV3JpdGluZ0RpcmVjdGlvbiA9IGVk
aXRvci5iYXNlV3JpdGluZ0RpcmVjdGlvbkZvclNlbGVjdGlvblN0YXJ0KCk7Ci0gICAgICAgIH0K
LSNlbmRpZgogICAgIH0KIAotICAgIHBsYXRmb3JtRWRpdG9yU3RhdGUoZnJhbWUsIHJlc3VsdCwg
c2hvdWxkSW5jbHVkZVBvc3RMYXlvdXREYXRhKTsKKyAgICBwbGF0Zm9ybUVkaXRvclN0YXRlKGZy
YW1lLCByZXN1bHQpOwogCiAgICAgbV9sYXN0RWRpdG9yU3RhdGVXYXNDb250ZW50RWRpdGFibGUg
PSByZXN1bHQuaXNDb250ZW50RWRpdGFibGUgPyBFZGl0b3JTdGF0ZUlzQ29udGVudEVkaXRhYmxl
OjpZZXMgOiBFZGl0b3JTdGF0ZUlzQ29udGVudEVkaXRhYmxlOjpObzsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGUzMTM5YTg0MTRmLi40OWM4MTNk
NzRkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAt
NDc4LDggKzQ3OCw4IEBAIHB1YmxpYzoKICAgICBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgcmVz
b2x2ZVdlYkdMUG9saWN5Rm9yVVJMKFdlYkZyYW1lKiwgY29uc3QgVVJMJik7CiAjZW5kaWYKICAg
ICAKLSAgICBlbnVtIGNsYXNzIEluY2x1ZGVQb3N0TGF5b3V0RGF0YUhpbnQgeyBObywgWWVzIH07
Ci0gICAgRWRpdG9yU3RhdGUgZWRpdG9yU3RhdGUoSW5jbHVkZVBvc3RMYXlvdXREYXRhSGludCA9
IEluY2x1ZGVQb3N0TGF5b3V0RGF0YUhpbnQ6OlllcykgY29uc3Q7CisgICAgZW51bSBjbGFzcyBT
aG91bGRQZXJmb3JtTGF5b3V0IHsgRGVmYXVsdCwgWWVzIH07CisgICAgRWRpdG9yU3RhdGUgZWRp
dG9yU3RhdGUoU2hvdWxkUGVyZm9ybUxheW91dCA9IFNob3VsZFBlcmZvcm1MYXlvdXQ6OkRlZmF1
bHQpIGNvbnN0OwogICAgIHZvaWQgdXBkYXRlRWRpdG9yU3RhdGVBZnRlckxheW91dElmRWRpdGFi
aWxpdHlDaGFuZ2VkKCk7CiAKICAgICAvLyBvcHRpb25zIGFyZSBSZW5kZXJUcmVlRXh0ZXJuYWxS
ZXByZXNlbnRhdGlvbkJlaGF2aW9yIHZhbHVlcy4KQEAgLTEzMTYsOSArMTMxNiwxMSBAQCBwcml2
YXRlOgogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7CiAgICAgdm9pZCBwbGF0Zm9ybVJl
aW5pdGlhbGl6ZSgpOwogICAgIHZvaWQgcGxhdGZvcm1EZXRhY2goKTsKLSAgICB2b2lkIHBsYXRm
b3JtRWRpdG9yU3RhdGUoV2ViQ29yZTo6RnJhbWUmLCBFZGl0b3JTdGF0ZSYgcmVzdWx0LCBJbmNs
dWRlUG9zdExheW91dERhdGFIaW50KSBjb25zdDsKKyAgICB2b2lkIHBsYXRmb3JtRWRpdG9yU3Rh
dGUoV2ViQ29yZTo6RnJhbWUmLCBFZGl0b3JTdGF0ZSYpIGNvbnN0OworICAgIGJvb2wgcGxhdGZv
cm1OZWVkc0xheW91dEZvckVkaXRvclN0YXRlKGNvbnN0IFdlYkNvcmU6OkZyYW1lJikgY29uc3Q7
CiAgICAgdm9pZCBwbGF0Zm9ybVdpbGxQZXJmb3JtRWRpdGluZ0NvbW1hbmQoKTsKICAgICB2b2lk
IHNlbmRFZGl0b3JTdGF0ZVVwZGF0ZSgpOworICAgIHZvaWQgcGxhdGZvcm1FZGl0b3JTdGF0ZUNv
bW1vbihjb25zdCBXZWJDb3JlOjpGcmFtZSYsIEVkaXRvclN0YXRlJikgY29uc3Q7CiAKICNpZiBI
QVZFKFRPVUNIX0JBUikKICAgICB2b2lkIHNlbmRUb3VjaEJhck1lbnVEYXRhQWRkZWRVcGRhdGUo
V2ViQ29yZTo6SFRNTE1lbnVFbGVtZW50Jik7CkBAIC0yMDA2LDcgKzIwMDgsNiBAQCBwcml2YXRl
OgogCiAgICAgYm9vbCBtX21haW5GcmFtZVByb2dyZXNzQ29tcGxldGVkIHsgZmFsc2UgfTsKICAg
ICBib29sIG1fc2hvdWxkRGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRzIHsgdHJ1ZSB9OwotICAg
IGJvb2wgbV9pc0VkaXRvclN0YXRlTWlzc2luZ1Bvc3RMYXlvdXREYXRhIHsgZmFsc2UgfTsKICAg
ICBib29sIG1faXNTZWxlY3RpbmdUZXh0V2hpbGVJbnNlcnRpbmdBc3luY2hyb25vdXNseSB7IGZh
bHNlIH07CiAKICAgICBlbnVtIGNsYXNzIEVkaXRvclN0YXRlSXNDb250ZW50RWRpdGFibGUgeyBO
bywgWWVzLCBVbnNldCB9OwpAQCAtMjA4MSw2ICsyMDgyLDcgQEAgcHJpdmF0ZToKIAogI2lmICFQ
TEFURk9STShJT1NfRkFNSUxZKQogaW5saW5lIHZvaWQgV2ViUGFnZTo6cGxhdGZvcm1XaWxsUGVy
Zm9ybUVkaXRpbmdDb21tYW5kKCkgeyB9CitpbmxpbmUgYm9vbCBXZWJQYWdlOjpwbGF0Zm9ybU5l
ZWRzTGF5b3V0Rm9yRWRpdG9yU3RhdGUoY29uc3QgV2ViQ29yZTo6RnJhbWUmKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ2xpYi9XZWJQYWdlR0xpYi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9nbGliL1dlYlBhZ2VHTGliLmNwcApp
bmRleCAzYTdiYWE2YzEwMi4uOWQ5Y2U4ZGI5MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL2dsaWIvV2ViUGFnZUdMaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2dsaWIvV2ViUGFnZUdMaWIuY3BwCkBAIC02OCwxMiArNjgs
MTAgQEAgdm9pZCBXZWJQYWdlOjpzZW5kTWVzc2FnZVRvV2ViRXh0ZW5zaW9uKFVzZXJNZXNzYWdl
JiYgbWVzc2FnZSkKICAgICBzZW5kTWVzc2FnZVRvV2ViRXh0ZW5zaW9uV2l0aFJlcGx5KFdURk1v
dmUobWVzc2FnZSksIFtdKFVzZXJNZXNzYWdlJiYpIHsgfSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6
cGxhdGZvcm1FZGl0b3JTdGF0ZShGcmFtZSYgZnJhbWUsIEVkaXRvclN0YXRlJiByZXN1bHQsIElu
Y2x1ZGVQb3N0TGF5b3V0RGF0YUhpbnQgc2hvdWxkSW5jbHVkZVBvc3RMYXlvdXREYXRhKSBjb25z
dAordm9pZCBXZWJQYWdlOjpwbGF0Zm9ybUVkaXRvclN0YXRlKEZyYW1lJiBmcmFtZSwgRWRpdG9y
U3RhdGUmIHJlc3VsdCkgY29uc3QKIHsKLSAgICBpZiAoc2hvdWxkSW5jbHVkZVBvc3RMYXlvdXRE
YXRhID09IEluY2x1ZGVQb3N0TGF5b3V0RGF0YUhpbnQ6Ok5vIHx8ICFmcmFtZS52aWV3KCkgfHwg
ZnJhbWUudmlldygpLT5uZWVkc0xheW91dCgpKSB7Ci0gICAgICAgIHJlc3VsdC5pc01pc3NpbmdQ
b3N0TGF5b3V0RGF0YSA9IHRydWU7CisgICAgaWYgKHJlc3VsdC5pc01pc3NpbmdQb3N0TGF5b3V0
RGF0YSB8fCAhZnJhbWUudmlldygpIHx8IGZyYW1lLnZpZXcoKS0+bmVlZHNMYXlvdXQoKSkKICAg
ICAgICAgcmV0dXJuOwotICAgIH0KIAogICAgIGF1dG8mIHBvc3RMYXlvdXREYXRhID0gcmVzdWx0
LnBvc3RMYXlvdXREYXRhKCk7CiAgICAgcG9zdExheW91dERhdGEuY2FyZXRSZWN0QXRTdGFydCA9
IGZyYW1lLnNlbGVjdGlvbigpLmFic29sdXRlQ2FyZXRCb3VuZHMoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggY2YzMjIy
ZThhMGUuLmIyNDI2MTRkM2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtMjIzLDggKzIyMywyMSBAQCBib29sIFdlYlBh
Z2U6OmlzVHJhbnNwYXJlbnRPckZ1bGx5Q2xpcHBlZChjb25zdCBFbGVtZW50JiBlbGVtZW50KSBj
b25zdAogICAgIHJldHVybiByZW5kZXJlci0+aGFzTm9uRW1wdHlWaXNpYmxlUmVjdFJlc3BlY3Rp
bmdQYXJlbnRGcmFtZXMoKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybUVkaXRvclN0YXRl
KEZyYW1lJiBmcmFtZSwgRWRpdG9yU3RhdGUmIHJlc3VsdCwgSW5jbHVkZVBvc3RMYXlvdXREYXRh
SGludCBzaG91bGRJbmNsdWRlUG9zdExheW91dERhdGEpIGNvbnN0Citib29sIFdlYlBhZ2U6OnBs
YXRmb3JtTmVlZHNMYXlvdXRGb3JFZGl0b3JTdGF0ZShjb25zdCBGcmFtZSYgZnJhbWUpIGNvbnN0
CiB7CisgICAgLy8gSWYgd2UgaGF2ZSBhIGNvbXBvc2l0aW9uIG9yIGFyZSB1c2luZyBhIGhhcmR3
YXJlIGtleWJvYXJkIHRoZW4gd2UgbmVlZCB0byBzZW5kIHRoZSBmdWxsCisgICAgLy8gZWRpdG9y
IHNvIHRoYXQgdGhlIFVJUHJvY2VzcyBjYW4gdXBkYXRlIFVJLCBpbmNsdWRpbmcgdGhlIHBvc2l0
aW9uIG9mIHRoZSBjYXJldC4KKyAgICBib29sIG5lZWRzTGF5b3V0ID0gZnJhbWUuZWRpdG9yKCku
aGFzQ29tcG9zaXRpb24oKTsKKyNpZiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCisgICAgbmVlZHNM
YXlvdXQgfD0gbV9rZXlib2FyZElzQXR0YWNoZWQ7CisjZW5kaWYKKyAgICByZXR1cm4gbmVlZHNM
YXlvdXQ7Cit9CisKK3ZvaWQgV2ViUGFnZTo6cGxhdGZvcm1FZGl0b3JTdGF0ZShGcmFtZSYgZnJh
bWUsIEVkaXRvclN0YXRlJiByZXN1bHQpIGNvbnN0Cit7CisgICAgcGxhdGZvcm1FZGl0b3JTdGF0
ZUNvbW1vbihmcmFtZSwgcmVzdWx0KTsKKwogICAgIEZyYW1lVmlldyogdmlldyA9IGZyYW1lLnZp
ZXcoKTsKICAgICBpZiAoIXZpZXcpIHsKICAgICAgICAgcmVzdWx0LmlzTWlzc2luZ1Bvc3RMYXlv
dXREYXRhID0gdHJ1ZTsKQEAgLTI1NSwxNCArMjY4LDExIEBAIHZvaWQgV2ViUGFnZTo6cGxhdGZv
cm1FZGl0b3JTdGF0ZShGcmFtZSYgZnJhbWUsIEVkaXRvclN0YXRlJiByZXN1bHQsIEluY2x1ZGVQ
b3N0CiAjaWYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogICAgIHJlcXVpcmVzUG9zdExheW91dERh
dGEgfD0gbV9rZXlib2FyZElzQXR0YWNoZWQ7CiAjZW5kaWYKLSAgICBpZiAoKHNob3VsZEluY2x1
ZGVQb3N0TGF5b3V0RGF0YSA9PSBJbmNsdWRlUG9zdExheW91dERhdGFIaW50OjpObyB8fCBuZWVk
c0xheW91dCkgJiYgIXJlcXVpcmVzUG9zdExheW91dERhdGEpIHsKLSAgICAgICAgcmVzdWx0Lmlz
TWlzc2luZ1Bvc3RMYXlvdXREYXRhID0gdHJ1ZTsKKyAgICBpZiAobmVlZHNMYXlvdXQgfHwgcmVz
dWx0LmlzTWlzc2luZ1Bvc3RMYXlvdXREYXRhKQogICAgICAgICByZXR1cm47Ci0gICAgfQogCiAg
ICAgYXV0byYgcG9zdExheW91dERhdGEgPSByZXN1bHQucG9zdExheW91dERhdGEoKTsKLSAgICAK
LSAgICBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24gPSBmcmFtZS5zZWxlY3Rpb24o
KS5zZWxlY3Rpb24oKTsKKyAgICBjb25zdCBhdXRvJiBzZWxlY3Rpb24gPSBmcmFtZS5zZWxlY3Rp
b24oKS5zZWxlY3Rpb24oKTsKICAgICBwb3N0TGF5b3V0RGF0YS5pc1N0YWJsZVN0YXRlVXBkYXRl
ID0gbV9pc0luU3RhYmxlU3RhdGU7CiAgICAgYm9vbCBzdGFydE5vZGVJc0luc2lkZUZpeGVkUG9z
aXRpb24gPSBmYWxzZTsKICAgICBib29sIGVuZE5vZGVJc0luc2lkZUZpeGVkUG9zaXRpb24gPSBm
YWxzZTsKQEAgLTQ3OSw3ICs0ODksNyBAQCBib29sIFdlYlBhZ2U6OmhhbmRsZUVkaXRpbmdLZXli
b2FyZEV2ZW50KEtleWJvYXJkRXZlbnQmIGV2ZW50KQogCiAgICAgLy8gRklYTUU6IEludGVycHJl
dCB0aGUgZXZlbnQgaW1tZWRpYXRlbHkgdXBvbiByZWNlaXZpbmcgaXQgaW4gVUkgcHJvY2Vzcywg
d2l0aG91dCBzZW5kaW5nIHRvIFdlYlByb2Nlc3MgZmlyc3QuCiAgICAgYm9vbCBldmVudFdhc0hh
bmRsZWQgPSBmYWxzZTsKLSAgICBib29sIHNlbmRSZXN1bHQgPSBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpJbnRlcnByZXRLZXlFdmVudChlZGl0b3JTdGF0ZSgpLCBwbGF0Zm9ybUV2ZW50LT50
eXBlKCkgPT0gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpDaGFyKSwKKyAgICBib29sIHNlbmRSZXN1
bHQgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5z
ZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpJbnRlcnByZXRLZXlFdmVudChlZGl0b3JT
dGF0ZShTaG91bGRQZXJmb3JtTGF5b3V0OjpZZXMpLCBwbGF0Zm9ybUV2ZW50LT50eXBlKCkgPT0g
UGxhdGZvcm1LZXlib2FyZEV2ZW50OjpDaGFyKSwKICAgICAgICAgTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6SW50ZXJwcmV0S2V5RXZlbnQ6OlJlcGx5KGV2ZW50V2FzSGFuZGxlZCksIG1faWRlbnRp
Zmllcik7CiAgICAgcmV0dXJuIHNlbmRSZXN1bHQgJiYgZXZlbnRXYXNIYW5kbGVkOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMu
bW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQpp
bmRleCAzYTBkYzQ1MjAxNy4uMGE2ZDM4ZGIxNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCkBAIC0xMzMsMTQgKzEzMywxNCBA
QCB2b2lkIFdlYlBhZ2U6OnBsYXRmb3JtRGV0YWNoKCkKICAgICBbbV9tb2NrQWNjZXNzaWJpbGl0
eUVsZW1lbnQgc2V0V2ViUGFnZTpudWxscHRyXTsKIH0KIAotdm9pZCBXZWJQYWdlOjpwbGF0Zm9y
bUVkaXRvclN0YXRlKEZyYW1lJiBmcmFtZSwgRWRpdG9yU3RhdGUmIHJlc3VsdCwgSW5jbHVkZVBv
c3RMYXlvdXREYXRhSGludCBzaG91bGRJbmNsdWRlUG9zdExheW91dERhdGEpIGNvbnN0Cit2b2lk
IFdlYlBhZ2U6OnBsYXRmb3JtRWRpdG9yU3RhdGUoRnJhbWUmIGZyYW1lLCBFZGl0b3JTdGF0ZSYg
cmVzdWx0KSBjb25zdAogewotICAgIGlmIChzaG91bGRJbmNsdWRlUG9zdExheW91dERhdGEgPT0g
SW5jbHVkZVBvc3RMYXlvdXREYXRhSGludDo6Tm8gfHwgIWZyYW1lLnZpZXcoKSB8fCBmcmFtZS52
aWV3KCktPm5lZWRzTGF5b3V0KCkgfHwgIXJlc3VsdC5pc0NvbnRlbnRFZGl0YWJsZSkgewotICAg
ICAgICByZXN1bHQuaXNNaXNzaW5nUG9zdExheW91dERhdGEgPSB0cnVlOworICAgIHBsYXRmb3Jt
RWRpdG9yU3RhdGVDb21tb24oZnJhbWUsIHJlc3VsdCk7CisKKyAgICBpZiAocmVzdWx0LmlzTWlz
c2luZ1Bvc3RMYXlvdXREYXRhKQogICAgICAgICByZXR1cm47Ci0gICAgfQogCi0gICAgY29uc3Qg
VmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uID0gZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9u
KCk7CisgICAgY29uc3QgYXV0byYgc2VsZWN0aW9uID0gZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0
aW9uKCk7CiAgICAgUmVmUHRyPFJhbmdlPiBzZWxlY3RlZFJhbmdlID0gc2VsZWN0aW9uLnRvTm9y
bWFsaXplZFJhbmdlKCk7CiAgICAgaWYgKCFzZWxlY3RlZFJhbmdlKQogICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93aW4vV2ViUGFn
ZVdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93aW4vV2ViUGFnZVdp
bi5jcHAKaW5kZXggNjI0ZjRkMTEyNjYuLjVjYjBhNzI5MjkzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93aW4vV2ViUGFnZVdpbi5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL1dlYlBhZ2VXaW4uY3BwCkBAIC02Myw3ICs2
Myw3IEBAIHZvaWQgV2ViUGFnZTo6cGxhdGZvcm1EZXRhY2goKQogewogfQogCi12b2lkIFdlYlBh
Z2U6OnBsYXRmb3JtRWRpdG9yU3RhdGUoRnJhbWUmIGZyYW1lLCBFZGl0b3JTdGF0ZSYgcmVzdWx0
LCBJbmNsdWRlUG9zdExheW91dERhdGFIaW50IHNob3VsZEluY2x1ZGVQb3N0TGF5b3V0RGF0YSkg
Y29uc3QKK3ZvaWQgV2ViUGFnZTo6cGxhdGZvcm1FZGl0b3JTdGF0ZShGcmFtZSYsIEVkaXRvclN0
YXRlJikgY29uc3QKIHsKIH0KIAotLSAKMi4yNC4xIChBcHBsZSBHaXQtMTI2KQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394432</attachid>
            <date>2020-03-24 16:04:43 -0700</date>
            <delta_ts>2020-03-24 19:54:04 -0700</delta_ts>
            <desc>To Land</desc>
            <filename>bug-199960-20200324160442.patch</filename>
            <type>text/plain</type>
            <size>28268</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4OTQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDMyM2U1MWJlZGRmNWFhYTQz
ZjI0YWUyZGU0NTEwNjBhNDM0N2Q0NjcuLmVmZDc3ZWU1YWU1Yzc4Nzc5YTZkODk1NDA3NTYzMGE1
MTFiNDMzMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjYgQEAKKzIwMjAtMDMtMjQgIERhbmllbCBC
YXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIEFTU0VSVElPTiBGQUlM
VVJFOiAhaXNNaXNzaW5nUG9zdExheW91dERhdGEgaW4gV2ViS2l0OjpFZGl0b3JTdGF0ZTo6cG9z
dExheW91dERhdGEoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTk5OTYwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81MzMyMzk2Nj4KKworICAgICAg
ICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAgUmVmYWN0b3IgdGhlIGNvbXB1
dGF0aW9uIG9mIGVkaXRvciBzdGF0ZSBzbyB0aGF0IHdlIGNhbiByZXF1ZXN0IHRoYXQgYSBsYXlv
dXQgYmUgcGVyZm9ybWVkCisgICAgICAgIGVhY2ggdGltZSB3ZSBjb21wdXRlIHRoZSBlZGl0b3Ig
c3RhdGUgYXMgcGFydCBvZiBhc2tpbmcgdGhlIFVJIHByb2Nlc3MgdG8gaW50ZXJwcmV0IGEga2V5
CisgICAgICAgIGV2ZW50LiBUaGUgZnVsbCAocmVhZDogYWZ0ZXIgbGF5b3V0KSBlZGl0b3Igc3Rh
dGUgaXMgbmVlZGVkIGZvciBVSUtpdCB0byBwZXJmb3JtIGEgZGVsZXRpb24KKyAgICAgICAgYmVj
YXVzZSBVSUtpdCB3YW50cyB0byBrbm93IGhvdyBtYW55IGNoYXJhY3RlcnMgYXJlIGJlZm9yZSB0
aGUgc2VsZWN0aW9uLiBPdGhlcndpc2UsIHdlIGhpdAorICAgICAgICBhbiBhc3NlcnQgZHVlIHRv
IHRoZSBmYWN0IHRoZSBsYXN0IGVkaXRvciBzdGF0ZSBzZW50ICh3aGVuIHRoZSBXZWIgcHJvY2Vz
cyBhc2tlZCB0aGUgVUkgcHJvY2VzcworICAgICAgICB0byBpbnRlcnByZXQgdGhlIGtleSkgaXMg
bWlzc2luZyBsYXlvdXQgZGF0YS4KKworICAgICAgICBUaGUgcmVmYWN0b3JpbmcgYWxzbyBtb3Zl
cyB0aGUgQ29jb2EtY29tbW9uIGNvZGUgb3V0IG9mIHRoZSBwbGF0Zm9ybS1pbmRlcGVuZGVudCBX
ZWJQYWdlLmNwcAorICAgICAgICBmaWxlIGludG8gV2ViUGFnZUNvY29hLm1tLgorCisgICAgICAg
IE9uZSBzaWRlIGVmZmVjdCBvZiB0aGUgcmVmYWN0b3JpbmcgaXMgdGhhdCB3ZSBubyBsb25nZXIg
YWxsb3cgdGhlIHBsYXRmb3JtRWRpdG9yU3RhdGUoKSBmdW5jdGlvbgorICAgICAgICB0byBvdmVy
cmlkZSB0aGUgaXNNaXNzaW5nUG9zdExheW91dERhdGEgYml0LiBDdXJyZW50bHkgaXQgY2FuIGV2
ZW4gdGhvdWdoIHRoZSBjYWxsaW5nIGNvZGUsIHRoZQorICAgICAgICBwbGF0Zm9ybSBpbmRlcGVu
ZGVudCBjb2RlIChQSUUpIGluIFdlYlBhZ2UsIG1heSBoYXZlIGF0dGFjaGVkIGxheW91dCBkYXRh
LiBOb3cgdGhlIFBJRSBjb2RlIHNldHMKKyAgICAgICAgdGhpcyBiaXQgaWYgaXQgYXR0YWNoZWQg
bGF5b3V0IGRhdGEgYW5kIHRoZSBwbGF0Zm9ybUVkaXRvclN0YXRlKCkgZnVuY3Rpb24gb25seSBh
dHRhY2hlcyBtb3JlCisgICAgICAgIGxheW91dCBkYXRhIGlmIHRoYXQgYml0IGlzIHNldC4gcGxh
dGZvcm1FZGl0b3JTdGF0ZSgpIG5ldmVyIHVuc2V0cyB0aGF0IGJpdCAoaS5lLiBzZXRzIGlzTWlz
c2luZ1Bvc3RMYXlvdXREYXRhCisgICAgICAgIHRvIHRydWUpLgorCisgICAgICAgIFRoZSBwYXRj
aCBhbHNvIHJlbW92ZXMgbV9pc0VkaXRvclN0YXRlTWlzc2luZ1Bvc3RMYXlvdXREYXRhIGluIFdl
YlBhZ2UuaC4gVGhpcyBpbnN0YW5jZSB2YXJpYWJsZQorICAgICAgICBoYXMgYmVlbiB1bnVzZWQg
c2luY2UgPGh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yMjEwNjQvd2Via2l0Pi4g
QWxzbyB3ZSBoYXZlbid0IGJlZW4gdXNpbmcKKyAgICAgICAgSW5jbHVkZVBvc3RMYXlvdXREYXRh
SGludDo6Tm8gc2luY2UgdGhlIGxhc3QgcmVmZXJlbmNlIHRvIGl0IHdhcyByZW1vdmVkIGluIDxo
dHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjQ0NDk0L3dlYmtpdD4uCisKKyAgICAg
ICAgSSBhbHNvIHJlbmFtZWQgcGxhdGZvcm1FZGl0b3JTdGF0ZSgpIHRvIGdldFBsYXRmb3JtRWRp
dG9yU3RhdGUoKSBzaW5jZSBpdCBoYXMgYW4gb3V0IGFyZ3VtZW50LgorCisgICAgICAgIFRlc3Q6
IGVkaXRpbmcvZGVsZXRpbmcvaW9zL2JhY2tzcGFjZS1sYXN0LWNoYXJhY3Rlci5odG1sCisKKyAg
ICAgICAgKiBTaGFyZWQvRWRpdG9yU3RhdGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRQ
bGF0Zm9ybUVkaXRvclN0YXRlQ29tbW9uIGNvbnN0KTogQWRkZWQuIE1vdmVkIENvY29hLWNvbW1v
biBjb2RlIGZyb20gV2ViUGFnZS5jcHAgdG8gaGVyZS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmVkaXRvclN0YXRl
IGNvbnN0KTogTW92ZSBDb2NvYS1jb21tb24gY29kZSB0byBXZWJQYWdlQ29jb2EubW0uIENoYW5n
ZSBlbnVtIHRvCisgICAgICAgIHRyYWNrIHdoZXRoZXIgYSBsYXlvdXQgc2hvdWxkIGJlIHBlcmZv
cm1lZC4gS2VlcCB0aGUgY3VycmVudCBiZWhhdmlvciBvZiBvbmx5IGluY2x1ZGluZyBwb3N0IGxh
eW91dAorICAgICAgICBkYXRhIGlmIHRoZSBmcmFtZSB2aWV3IGRvZXMgbm90IG5lZWQgYSBsYXlv
dXQuIFRoaXMgYmVoYXZpb3IgaXMgZW5jb2RlZCBpbiB0aGUgZW51bWVyYXRvciBTaG91bGRQZXJm
b3JtTGF5b3V0OjpEZWZhdWx0LgorICAgICAgICB3aGljaCBpcyB0aGUgZGVmYXVsdCBhcmd1bWVu
dCB2YWx1ZSBmb3IgdGhlIGFyZ3VtZW50IHNob3VsZFBlcmZvcm1MYXlvdXQuCisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
cGxhdGZvcm1OZWVkc0xheW91dEZvckVkaXRvclN0YXRlIGNvbnN0KTogQWRkZWQuIE5vbi1Db2Nv
YSBwb3J0IGltcGxlbWVudGF0aW9uCisgICAgICAgIHRoYXQgcmV0dXJucyBmYWxzZS4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvZ2xpYi9XZWJQYWdlR0xpYi5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OmdldFBsYXRmb3JtRWRpdG9yU3RhdGUgY29uc3QpOiBFYXJseSByZXR1
cm4gaWYgaXNNaXNzaW5nUG9zdExheW91dERhdGEgaXMgdHJ1ZS4KKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6cGxhdGZvcm1FZGl0b3JTdGF0ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjpwbGF0Zm9ybU5lZWRzTGF5b3V0Rm9yRWRpdG9yU3RhdGUgY29uc3QpOiBBZGRlZC4g
S2VlcCB0aGUgY3VycmVudCBiZWhhdmlvciBvZgorICAgICAgICBwZXJmb3JtaW5nIGEgbGF5b3V0
IGlmIHdlIGhhdmUgYSBjb21wb3NpdGlvbiBvciBhIGhhcmR3YXJlIGtleWJvYXJkIGlzIGF0dGFj
aGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRQbGF0Zm9ybUVkaXRvclN0YXRlIGNv
bnN0KTogQ2FsbCBwbGF0Zm9ybUVkaXRvclN0YXRlQ29tbW9uKCkuIEJhaWwgb3V0IGVhcmx5Cisg
ICAgICAgIGlmIGlzTWlzc2luZ1Bvc3RMYXlvdXREYXRhIGlzIHRydWUuCisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KTogVGhlIGltcG9ydGFudCBw
YXJ0IG9mIHRoaXMgcGF0Y2guIFJlcXVlc3QgYSBsYXlvdXQKKyAgICAgICAgd2hlbiBjb21wdXRp
bmcgdGhlIGVkaXRvciBzdGF0ZSB0aGF0IHdlIHdpbGwgc2VuZCB0byB0aGUgVUkgcHJvY2Vzcy4K
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGxhdGZvcm1FZGl0b3JTdGF0ZSBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRQbGF0Zm9ybUVkaXRvclN0YXRlIGNvbnN0KTog
Q2FsbCBwbGF0Zm9ybUVkaXRvclN0YXRlQ29tbW9uKCkuIEJhaWwgb3V0IGVhcmx5CisgICAgICAg
IGlmIGlzTWlzc2luZ1Bvc3RMYXlvdXREYXRhIGlzIHRydWUuCisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OnBsYXRmb3JtRWRpdG9yU3RhdGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS93aW4vV2ViUGFnZVdpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OmdldFBsYXRmb3JtRWRpdG9yU3RhdGUgY29uc3QpOiBVcGRhdGUgYXMgbmVlZGVkLgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwbGF0Zm9ybUVkaXRvclN0YXRlIGNvbnN0KTogRGVs
ZXRlZC4KKwogMjAyMC0wMy0yNCAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAK
ICAgICAgICAgRWxlbWVudCBjb250ZXh0IGNoYXJhY3RlciByZWN0cyBtYXkgYmUgaW4gd3Jvbmcg
Y29vcmRpbmF0ZSBzeXN0ZW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRv
clN0YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0b3JTdGF0ZS5oCmluZGV4IDZmYWE3
Y2U4MTUxZjE5Yzc5MTQzMWU2YmY4MTk3YWZhZThkZWM4OTAuLmIzOTYwNzdlNTc0MGRlMTg3NDgw
NjMyZjZhM2ZkY2E5MGQ3MTYzNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Vk
aXRvclN0YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRWRpdG9yU3RhdGUuaApAQCAt
NzQsNyArNzQsNyBAQCBzdHJ1Y3QgRWRpdG9yU3RhdGUgewogICAgIGJvb2wgaXNJblBhc3N3b3Jk
RmllbGQgeyBmYWxzZSB9OwogICAgIGJvb2wgaXNJblBsdWdpbiB7IGZhbHNlIH07CiAgICAgYm9v
bCBoYXNDb21wb3NpdGlvbiB7IGZhbHNlIH07Ci0gICAgYm9vbCBpc01pc3NpbmdQb3N0TGF5b3V0
RGF0YSB7IGZhbHNlIH07CisgICAgYm9vbCBpc01pc3NpbmdQb3N0TGF5b3V0RGF0YSB7IHRydWUg
fTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgV2ViQ29yZTo6SW50UmVjdCBmaXJz
dE1hcmtlZFJlY3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KaW5kZXggNTY2MWEwNGM1ZDEwMzdhYTJkNGE3MjBiNGFj
NDEwNmQ4NDhiNGJlOS4uNThiYjk1NjBkYTdlMWZmMGY3ODY1MjI3MTM4OTUwZGVjNGE3YjQyMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFn
ZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dl
YlBhZ2VDb2NvYS5tbQpAQCAtMzYsMTIgKzM2LDE1IEBACiAjaW1wb3J0ICJXZWJSZW1vdGVPYmpl
Y3RSZWdpc3RyeS5oIgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9MYXVuY2hTZXJ2aWNlc1NQSS5o
PgogI2ltcG9ydCA8V2ViQ29yZS9EaWN0aW9uYXJ5TG9va3VwLmg+CisjaW1wb3J0IDxXZWJDb3Jl
L0VkaXRpbmcuaD4KICNpbXBvcnQgPFdlYkNvcmUvRWRpdG9yLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L0V2ZW50SGFuZGxlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9FdmVudE5hbWVzLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0ZvY3VzQ29udHJvbGxlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZVZpZXcu
aD4KICNpbXBvcnQgPFdlYkNvcmUvSFRNTENvbnZlcnRlci5oPgorI2ltcG9ydCA8V2ViQ29yZS9I
VE1MT0xpc3RFbGVtZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0hUTUxVTGlzdEVsZW1lbnQuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvSGl0VGVzdFJlc3VsdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Ob2Rl
UmVuZGVyU3R5bGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGF5bWVudENvb3JkaW5hdG9yLmg+CkBA
IC0zMTEsNiArMzE0LDcgQEAgUmV0YWluUHRyPENGRGF0YVJlZj4gV2ViUGFnZTo6cGRmU25hcHNo
b3RBdFNpemUoSW50UmVjdCByZWN0LCBJbnRTaXplIGJpdG1hcFNpemUKICAgICByZXR1cm4gZGF0
YTsKIH0KIAorCiB2b2lkIFdlYlBhZ2U6OmdldFByb2Nlc3NEaXNwbGF5TmFtZShDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICNpZiBQTEFU
Rk9STShNQUMpCkBAIC0zMjAsNiArMzI0LDcxIEBAIHZvaWQgV2ViUGFnZTo6Z2V0UHJvY2Vzc0Rp
c3BsYXlOYW1lKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBsZXRpCiAj
ZW5kaWYKIH0KIAordm9pZCBXZWJQYWdlOjpnZXRQbGF0Zm9ybUVkaXRvclN0YXRlQ29tbW9uKGNv
bnN0IEZyYW1lJiBmcmFtZSwgRWRpdG9yU3RhdGUmIHJlc3VsdCkgY29uc3QKK3sKKyAgICBpZiAo
cmVzdWx0LmlzTWlzc2luZ1Bvc3RMYXlvdXREYXRhKQorICAgICAgICByZXR1cm47CisKKyAgICBj
b25zdCBhdXRvJiBzZWxlY3Rpb24gPSBmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKTsKKwor
ICAgIGlmICghcmVzdWx0LmlzQ29udGVudEVkaXRhYmxlIHx8IHNlbGVjdGlvbi5pc05vbmUoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byYgcG9zdExheW91dERhdGEgPSByZXN1bHQucG9z
dExheW91dERhdGEoKTsKKyAgICBpZiAoYXV0byBlZGl0aW5nU3R5bGUgPSBFZGl0aW5nU3R5bGU6
OnN0eWxlQXRTZWxlY3Rpb25TdGFydChzZWxlY3Rpb24pKSB7CisgICAgICAgIGlmIChlZGl0aW5n
U3R5bGUtPmhhc1N0eWxlKENTU1Byb3BlcnR5Rm9udFdlaWdodCwgImJvbGQiX3MpKQorICAgICAg
ICAgICAgcG9zdExheW91dERhdGEudHlwaW5nQXR0cmlidXRlcyB8PSBBdHRyaWJ1dGVCb2xkOwor
CisgICAgICAgIGlmIChlZGl0aW5nU3R5bGUtPmhhc1N0eWxlKENTU1Byb3BlcnR5Rm9udFN0eWxl
LCAiaXRhbGljIl9zKSB8fCBlZGl0aW5nU3R5bGUtPmhhc1N0eWxlKENTU1Byb3BlcnR5Rm9udFN0
eWxlLCAib2JsaXF1ZSJfcykpCisgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS50eXBpbmdBdHRy
aWJ1dGVzIHw9IEF0dHJpYnV0ZUl0YWxpY3M7CisKKyAgICAgICAgaWYgKGVkaXRpbmdTdHlsZS0+
aGFzU3R5bGUoQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCwgInVuZGVy
bGluZSJfcykpCisgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS50eXBpbmdBdHRyaWJ1dGVzIHw9
IEF0dHJpYnV0ZVVuZGVybGluZTsKKworICAgICAgICBpZiAoYXV0byogc3R5bGVQcm9wZXJ0aWVz
ID0gZWRpdGluZ1N0eWxlLT5zdHlsZSgpKSB7CisgICAgICAgICAgICBib29sIGlzTGVmdFRvUmln
aHQgPSBzdHlsZVByb3BlcnRpZXMtPnByb3BlcnR5QXNWYWx1ZUlEKENTU1Byb3BlcnR5RGlyZWN0
aW9uKSA9PSBDU1NWYWx1ZUx0cjsKKyAgICAgICAgICAgIHN3aXRjaCAoc3R5bGVQcm9wZXJ0aWVz
LT5wcm9wZXJ0eUFzVmFsdWVJRChDU1NQcm9wZXJ0eVRleHRBbGlnbikpIHsKKyAgICAgICAgICAg
IGNhc2UgQ1NTVmFsdWVSaWdodDoKKyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVXZWJraXRSaWdo
dDoKKyAgICAgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS50ZXh0QWxpZ25tZW50ID0gUmlnaHRB
bGlnbm1lbnQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENTU1Zh
bHVlTGVmdDoKKyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVXZWJraXRMZWZ0OgorICAgICAgICAg
ICAgICAgIHBvc3RMYXlvdXREYXRhLnRleHRBbGlnbm1lbnQgPSBMZWZ0QWxpZ25tZW50OworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUNlbnRlcjoKKyAg
ICAgICAgICAgIGNhc2UgQ1NTVmFsdWVXZWJraXRDZW50ZXI6CisgICAgICAgICAgICAgICAgcG9z
dExheW91dERhdGEudGV4dEFsaWdubWVudCA9IENlbnRlckFsaWdubWVudDsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVKdXN0aWZ5OgorICAgICAgICAg
ICAgICAgIHBvc3RMYXlvdXREYXRhLnRleHRBbGlnbm1lbnQgPSBKdXN0aWZpZWRBbGlnbm1lbnQ7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlU3RhcnQ6
CisgICAgICAgICAgICAgICAgcG9zdExheW91dERhdGEudGV4dEFsaWdubWVudCA9IGlzTGVmdFRv
UmlnaHQgPyBMZWZ0QWxpZ25tZW50IDogUmlnaHRBbGlnbm1lbnQ7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlRW5kOgorICAgICAgICAgICAgICAgIHBv
c3RMYXlvdXREYXRhLnRleHRBbGlnbm1lbnQgPSBpc0xlZnRUb1JpZ2h0ID8gUmlnaHRBbGlnbm1l
bnQgOiBMZWZ0QWxpZ25tZW50OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGlmIChhdXRvIHRleHRDb2xvciA9IHN0eWxlUHJvcGVydGllcy0+cHJvcGVydHlBc0NvbG9y
KENTU1Byb3BlcnR5Q29sb3IpKQorICAgICAgICAgICAgICAgIHBvc3RMYXlvdXREYXRhLnRleHRD
b2xvciA9ICp0ZXh0Q29sb3I7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoYXV0byogZW5j
bG9zaW5nTGlzdEVsZW1lbnQgPSBlbmNsb3NpbmdMaXN0KHNlbGVjdGlvbi5zdGFydCgpLmNvbnRh
aW5lck5vZGUoKSkpIHsKKyAgICAgICAgaWYgKGlzPEhUTUxVTGlzdEVsZW1lbnQ+KCplbmNsb3Np
bmdMaXN0RWxlbWVudCkpCisgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS5lbmNsb3NpbmdMaXN0
VHlwZSA9IFVub3JkZXJlZExpc3Q7CisgICAgICAgIGVsc2UgaWYgKGlzPEhUTUxPTGlzdEVsZW1l
bnQ+KCplbmNsb3NpbmdMaXN0RWxlbWVudCkpCisgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS5l
bmNsb3NpbmdMaXN0VHlwZSA9IE9yZGVyZWRMaXN0OworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisKKyAgICBwb3N0TGF5b3V0RGF0YS5iYXNl
V3JpdGluZ0RpcmVjdGlvbiA9IGZyYW1lLmVkaXRvcigpLmJhc2VXcml0aW5nRGlyZWN0aW9uRm9y
U2VsZWN0aW9uU3RhcnQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAv
LyBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKaW5kZXggMWNkMGIzMGM1ODhmNGI0NDU1NTI0YzEyNDVkZjQ0ODgzOWE5N2IyNi4u
YzM5MTdmNmVhM2U5Y2E2MWUzYmM4M2NjMGQ1MTEyYjQwZWM1MzgwZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTE3OCwxMiArMTc4LDEwIEBA
CiAjaW5jbHVkZSA8V2ViQ29yZS9IVE1MSW5wdXRFbGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9IVE1MTWVudUVsZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hUTUxNZW51SXRlbUVsZW1l
bnQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0hUTUxPTGlzdEVsZW1lbnQuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0hUTUxQbHVnSW5FbGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IVE1MUGx1Z0lu
SW1hZ2VFbGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IVE1MU2VsZWN0RWxlbWVudC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaD4KLSNpbmNsdWRl
IDxXZWJDb3JlL0hUTUxVTGlzdEVsZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hpc3RvcnlD
b250cm9sbGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IaXN0b3J5SXRlbS5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvSGl0VGVzdFJlc3VsdC5oPgpAQCAtMTAzNiw5ICsxMDM0LDEwIEBAIFdlYkNvcmU6
OldlYkdMTG9hZFBvbGljeSBXZWJQYWdlOjpyZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwoV2ViRnJh
bWUqLCBjb25zdCBVUkwmCiB9CiAjZW5kaWYKIAotRWRpdG9yU3RhdGUgV2ViUGFnZTo6ZWRpdG9y
U3RhdGUoSW5jbHVkZVBvc3RMYXlvdXREYXRhSGludCBzaG91bGRJbmNsdWRlUG9zdExheW91dERh
dGEpIGNvbnN0CitFZGl0b3JTdGF0ZSBXZWJQYWdlOjplZGl0b3JTdGF0ZShTaG91bGRQZXJmb3Jt
TGF5b3V0IHNob3VsZFBlcmZvcm1MYXlvdXQpIGNvbnN0CiB7Ci0gICAgRnJhbWUmIGZyYW1lID0g
bV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKKyAgICAvLyBS
ZWYgdGhlIGZyYW1lIGJlY2F1c2UgdGhpcyBmdW5jdGlvbiBtYXkgcGVyZm9ybSBsYXlvdXQsIHdo
aWNoIG1heSBjYXVzZSBmcmFtZSBkZXN0cnVjdGlvbi4KKyAgICBSZWY8RnJhbWU+IGZyYW1lID0g
bV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKIAogICAgIEVk
aXRvclN0YXRlIHJlc3VsdDsKIApAQCAtMTA1MSw4ICsxMDUwLDggQEAgRWRpdG9yU3RhdGUgV2Vi
UGFnZTo6ZWRpdG9yU3RhdGUoSW5jbHVkZVBvc3RMYXlvdXREYXRhSGludCBzaG91bGRJbmNsdWRl
UG9zdExheW8KICAgICAgICAgfQogICAgIH0KIAotICAgIGNvbnN0IFZpc2libGVTZWxlY3Rpb24m
IHNlbGVjdGlvbiA9IGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpOwotICAgIGNvbnN0IEVk
aXRvciYgZWRpdG9yID0gZnJhbWUuZWRpdG9yKCk7CisgICAgY29uc3QgVmlzaWJsZVNlbGVjdGlv
biYgc2VsZWN0aW9uID0gZnJhbWUtPnNlbGVjdGlvbigpLnNlbGVjdGlvbigpOworICAgIGNvbnN0
IEVkaXRvciYgZWRpdG9yID0gZnJhbWUtPmVkaXRvcigpOwogCiAgICAgcmVzdWx0LnNlbGVjdGlv
bklzTm9uZSA9IHNlbGVjdGlvbi5pc05vbmUoKTsKICAgICByZXN1bHQuc2VsZWN0aW9uSXNSYW5n
ZSA9IHNlbGVjdGlvbi5pc1JhbmdlKCk7CkBAIC0xMDYyLDExICsxMDYxLDE1IEBAIEVkaXRvclN0
YXRlIFdlYlBhZ2U6OmVkaXRvclN0YXRlKEluY2x1ZGVQb3N0TGF5b3V0RGF0YUhpbnQgc2hvdWxk
SW5jbHVkZVBvc3RMYXlvCiAgICAgcmVzdWx0Lmhhc0NvbXBvc2l0aW9uID0gZWRpdG9yLmhhc0Nv
bXBvc2l0aW9uKCk7CiAgICAgcmVzdWx0LnNob3VsZElnbm9yZVNlbGVjdGlvbkNoYW5nZXMgPSBl
ZGl0b3IuaWdub3JlU2VsZWN0aW9uQ2hhbmdlcygpIHx8IChlZGl0b3IuY2xpZW50KCkgJiYgIWVk
aXRvci5jbGllbnQoKS0+c2hvdWxkUmV2ZWFsQ3VycmVudFNlbGVjdGlvbkFmdGVySW5zZXJ0aW9u
KCkpOwogCi0gICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gZnJhbWUuZG9jdW1lbnQoKSkKLSAgICAg
ICAgcmVzdWx0Lm9yaWdpbklkZW50aWZpZXJGb3JQYXN0ZWJvYXJkID0gZG9jdW1lbnQtPm9yaWdp
bklkZW50aWZpZXJGb3JQYXN0ZWJvYXJkKCk7CisgICAgUmVmUHRyPERvY3VtZW50PiBkb2N1bWVu
dCA9ICpmcmFtZS0+ZG9jdW1lbnQoKTsKKyAgICByZXN1bHQub3JpZ2luSWRlbnRpZmllckZvclBh
c3RlYm9hcmQgPSBkb2N1bWVudC0+b3JpZ2luSWRlbnRpZmllckZvclBhc3RlYm9hcmQoKTsKKwor
ICAgIGlmIChzaG91bGRQZXJmb3JtTGF5b3V0ID09IFNob3VsZFBlcmZvcm1MYXlvdXQ6OlllcyB8
fCBwbGF0Zm9ybU5lZWRzTGF5b3V0Rm9yRWRpdG9yU3RhdGUoZnJhbWUpKQorICAgICAgICBkb2N1
bWVudC0+dXBkYXRlTGF5b3V0KCk7IC8vIE1heSBjYXVzZSBkb2N1bWVudCBkZXN0cnVjdGlvbgor
CisgICAgaWYgKGF1dG8qIGZyYW1lVmlldyA9IGRvY3VtZW50LT52aWV3KCk7IGZyYW1lVmlldyAm
JiAhZnJhbWVWaWV3LT5uZWVkc0xheW91dCgpKSB7CisgICAgICAgIHJlc3VsdC5pc01pc3NpbmdQ
b3N0TGF5b3V0RGF0YSA9IGZhbHNlOwogCi0gICAgYm9vbCBjYW5JbmNsdWRlUG9zdExheW91dERh
dGEgPSBmcmFtZS52aWV3KCkgJiYgIWZyYW1lLnZpZXcoKS0+bmVlZHNMYXlvdXQoKTsKLSAgICBp
ZiAoc2hvdWxkSW5jbHVkZVBvc3RMYXlvdXREYXRhID09IEluY2x1ZGVQb3N0TGF5b3V0RGF0YUhp
bnQ6OlllcyAmJiBjYW5JbmNsdWRlUG9zdExheW91dERhdGEpIHsKICAgICAgICAgYXV0byYgcG9z
dExheW91dERhdGEgPSByZXN1bHQucG9zdExheW91dERhdGEoKTsKICAgICAgICAgcG9zdExheW91
dERhdGEuY2FuQ3V0ID0gZWRpdG9yLmNhbkN1dCgpOwogICAgICAgICBwb3N0TGF5b3V0RGF0YS5j
YW5Db3B5ID0gZWRpdG9yLmNhbkNvcHkoKTsKQEAgLTEwNzQsNjYgKzEwNzcsOSBAQCBFZGl0b3JT
dGF0ZSBXZWJQYWdlOjplZGl0b3JTdGF0ZShJbmNsdWRlUG9zdExheW91dERhdGFIaW50IHNob3Vs
ZEluY2x1ZGVQb3N0TGF5bwogCiAgICAgICAgIGlmIChtX25lZWRzRm9udEF0dHJpYnV0ZXMpCiAg
ICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS5mb250QXR0cmlidXRlcyA9IGVkaXRvci5mb250QXR0
cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoKTsKLQotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAg
ICBpZiAocmVzdWx0LmlzQ29udGVudEVkaXRhYmxlICYmICFzZWxlY3Rpb24uaXNOb25lKCkpIHsK
LSAgICAgICAgICAgIGlmIChhdXRvIGVkaXRpbmdTdHlsZSA9IEVkaXRpbmdTdHlsZTo6c3R5bGVB
dFNlbGVjdGlvblN0YXJ0KHNlbGVjdGlvbikpIHsKLSAgICAgICAgICAgICAgICBpZiAoZWRpdGlu
Z1N0eWxlLT5oYXNTdHlsZShDU1NQcm9wZXJ0eUZvbnRXZWlnaHQsICJib2xkIikpCi0gICAgICAg
ICAgICAgICAgICAgIHBvc3RMYXlvdXREYXRhLnR5cGluZ0F0dHJpYnV0ZXMgfD0gQXR0cmlidXRl
Qm9sZDsKLQotICAgICAgICAgICAgICAgIGlmIChlZGl0aW5nU3R5bGUtPmhhc1N0eWxlKENTU1By
b3BlcnR5Rm9udFN0eWxlLCAiaXRhbGljIikgfHwgZWRpdGluZ1N0eWxlLT5oYXNTdHlsZShDU1NQ
cm9wZXJ0eUZvbnRTdHlsZSwgIm9ibGlxdWUiKSkKLSAgICAgICAgICAgICAgICAgICAgcG9zdExh
eW91dERhdGEudHlwaW5nQXR0cmlidXRlcyB8PSBBdHRyaWJ1dGVJdGFsaWNzOwotCi0gICAgICAg
ICAgICAgICAgaWYgKGVkaXRpbmdTdHlsZS0+aGFzU3R5bGUoQ1NTUHJvcGVydHlXZWJraXRUZXh0
RGVjb3JhdGlvbnNJbkVmZmVjdCwgInVuZGVybGluZSIpKQotICAgICAgICAgICAgICAgICAgICBw
b3N0TGF5b3V0RGF0YS50eXBpbmdBdHRyaWJ1dGVzIHw9IEF0dHJpYnV0ZVVuZGVybGluZTsKLQot
ICAgICAgICAgICAgICAgIGlmIChhdXRvKiBzdHlsZVByb3BlcnRpZXMgPSBlZGl0aW5nU3R5bGUt
PnN0eWxlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0xlZnRUb1JpZ2h0ID0gc3R5
bGVQcm9wZXJ0aWVzLT5wcm9wZXJ0eUFzVmFsdWVJRChDU1NQcm9wZXJ0eURpcmVjdGlvbikgPT0g
Q1NTVmFsdWVMdHI7Ci0gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoc3R5bGVQcm9wZXJ0aWVz
LT5wcm9wZXJ0eUFzVmFsdWVJRChDU1NQcm9wZXJ0eVRleHRBbGlnbikpIHsKLSAgICAgICAgICAg
ICAgICAgICAgY2FzZSBDU1NWYWx1ZVJpZ2h0OgotICAgICAgICAgICAgICAgICAgICBjYXNlIENT
U1ZhbHVlV2Via2l0UmlnaHQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBwb3N0TGF5b3V0RGF0
YS50ZXh0QWxpZ25tZW50ID0gUmlnaHRBbGlnbm1lbnQ7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUxlZnQ6Ci0gICAgICAg
ICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVXZWJraXRMZWZ0OgotICAgICAgICAgICAgICAgICAg
ICAgICAgcG9zdExheW91dERhdGEudGV4dEFsaWdubWVudCA9IExlZnRBbGlnbm1lbnQ7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBDU1NW
YWx1ZUNlbnRlcjoKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVdlYmtpdENlbnRl
cjoKLSAgICAgICAgICAgICAgICAgICAgICAgIHBvc3RMYXlvdXREYXRhLnRleHRBbGlnbm1lbnQg
PSBDZW50ZXJBbGlnbm1lbnQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUp1c3RpZnk6Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBwb3N0TGF5b3V0RGF0YS50ZXh0QWxpZ25tZW50ID0gSnVzdGlmaWVkQWxpZ25tZW50Owot
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2Ug
Q1NTVmFsdWVTdGFydDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHBvc3RMYXlvdXREYXRhLnRl
eHRBbGlnbm1lbnQgPSBpc0xlZnRUb1JpZ2h0ID8gTGVmdEFsaWdubWVudCA6IFJpZ2h0QWxpZ25t
ZW50OwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAg
IGNhc2UgQ1NTVmFsdWVFbmQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBwb3N0TGF5b3V0RGF0
YS50ZXh0QWxpZ25tZW50ID0gaXNMZWZ0VG9SaWdodCA/IFJpZ2h0QWxpZ25tZW50IDogTGVmdEFs
aWdubWVudDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
ICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG8gdGV4dENvbG9yID0gc3R5
bGVQcm9wZXJ0aWVzLT5wcm9wZXJ0eUFzQ29sb3IoQ1NTUHJvcGVydHlDb2xvcikpCi0gICAgICAg
ICAgICAgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS50ZXh0Q29sb3IgPSAqdGV4dENvbG9yOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKGF1dG8q
IGVuY2xvc2luZ0xpc3RFbGVtZW50ID0gZW5jbG9zaW5nTGlzdChzZWxlY3Rpb24uc3RhcnQoKS5j
b250YWluZXJOb2RlKCkpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGlzPEhUTUxVTGlzdEVsZW1l
bnQ+KCplbmNsb3NpbmdMaXN0RWxlbWVudCkpCi0gICAgICAgICAgICAgICAgICAgIHBvc3RMYXlv
dXREYXRhLmVuY2xvc2luZ0xpc3RUeXBlID0gVW5vcmRlcmVkTGlzdDsKLSAgICAgICAgICAgICAg
ICBlbHNlIGlmIChpczxIVE1MT0xpc3RFbGVtZW50PigqZW5jbG9zaW5nTGlzdEVsZW1lbnQpKQot
ICAgICAgICAgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS5lbmNsb3NpbmdMaXN0VHlwZSA9IE9y
ZGVyZWRMaXN0OwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHBvc3RMYXlv
dXREYXRhLmJhc2VXcml0aW5nRGlyZWN0aW9uID0gZWRpdG9yLmJhc2VXcml0aW5nRGlyZWN0aW9u
Rm9yU2VsZWN0aW9uU3RhcnQoKTsKLSAgICAgICAgfQotI2VuZGlmCiAgICAgfQogCi0gICAgcGxh
dGZvcm1FZGl0b3JTdGF0ZShmcmFtZSwgcmVzdWx0LCBzaG91bGRJbmNsdWRlUG9zdExheW91dERh
dGEpOworICAgIGdldFBsYXRmb3JtRWRpdG9yU3RhdGUoZnJhbWUsIHJlc3VsdCk7CiAKICAgICBt
X2xhc3RFZGl0b3JTdGF0ZVdhc0NvbnRlbnRFZGl0YWJsZSA9IHJlc3VsdC5pc0NvbnRlbnRFZGl0
YWJsZSA/IEVkaXRvclN0YXRlSXNDb250ZW50RWRpdGFibGU6OlllcyA6IEVkaXRvclN0YXRlSXND
b250ZW50RWRpdGFibGU6Ok5vOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmgKaW5kZXggMDliNjA4NGI0NjNlM2U0N2IxY2MxNTk2NzhhMDg2OTgyY2YxYWM1Zi4u
MWQxNmM4NDM5ZDJkYjYxMzQxOGYxODU2ZmU5MTQwNDI4MzkyNDUxNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtNDc4LDggKzQ3OCw4IEBAIHB1Ymxp
YzoKICAgICBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgcmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJM
KFdlYkZyYW1lKiwgY29uc3QgVVJMJik7CiAjZW5kaWYKICAgICAKLSAgICBlbnVtIGNsYXNzIElu
Y2x1ZGVQb3N0TGF5b3V0RGF0YUhpbnQgeyBObywgWWVzIH07Ci0gICAgRWRpdG9yU3RhdGUgZWRp
dG9yU3RhdGUoSW5jbHVkZVBvc3RMYXlvdXREYXRhSGludCA9IEluY2x1ZGVQb3N0TGF5b3V0RGF0
YUhpbnQ6OlllcykgY29uc3Q7CisgICAgZW51bSBjbGFzcyBTaG91bGRQZXJmb3JtTGF5b3V0IHsg
RGVmYXVsdCwgWWVzIH07CisgICAgRWRpdG9yU3RhdGUgZWRpdG9yU3RhdGUoU2hvdWxkUGVyZm9y
bUxheW91dCA9IFNob3VsZFBlcmZvcm1MYXlvdXQ6OkRlZmF1bHQpIGNvbnN0OwogICAgIHZvaWQg
dXBkYXRlRWRpdG9yU3RhdGVBZnRlckxheW91dElmRWRpdGFiaWxpdHlDaGFuZ2VkKCk7CiAKICAg
ICAvLyBvcHRpb25zIGFyZSBSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbkJlaGF2aW9y
IHZhbHVlcy4KQEAgLTEzMTYsOSArMTMxNiwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZv
cm1Jbml0aWFsaXplKCk7CiAgICAgdm9pZCBwbGF0Zm9ybVJlaW5pdGlhbGl6ZSgpOwogICAgIHZv
aWQgcGxhdGZvcm1EZXRhY2goKTsKLSAgICB2b2lkIHBsYXRmb3JtRWRpdG9yU3RhdGUoV2ViQ29y
ZTo6RnJhbWUmLCBFZGl0b3JTdGF0ZSYgcmVzdWx0LCBJbmNsdWRlUG9zdExheW91dERhdGFIaW50
KSBjb25zdDsKKyAgICB2b2lkIGdldFBsYXRmb3JtRWRpdG9yU3RhdGUoV2ViQ29yZTo6RnJhbWUm
LCBFZGl0b3JTdGF0ZSYpIGNvbnN0OworICAgIGJvb2wgcGxhdGZvcm1OZWVkc0xheW91dEZvckVk
aXRvclN0YXRlKGNvbnN0IFdlYkNvcmU6OkZyYW1lJikgY29uc3Q7CiAgICAgdm9pZCBwbGF0Zm9y
bVdpbGxQZXJmb3JtRWRpdGluZ0NvbW1hbmQoKTsKICAgICB2b2lkIHNlbmRFZGl0b3JTdGF0ZVVw
ZGF0ZSgpOworICAgIHZvaWQgZ2V0UGxhdGZvcm1FZGl0b3JTdGF0ZUNvbW1vbihjb25zdCBXZWJD
b3JlOjpGcmFtZSYsIEVkaXRvclN0YXRlJikgY29uc3Q7CiAKICNpZiBIQVZFKFRPVUNIX0JBUikK
ICAgICB2b2lkIHNlbmRUb3VjaEJhck1lbnVEYXRhQWRkZWRVcGRhdGUoV2ViQ29yZTo6SFRNTE1l
bnVFbGVtZW50Jik7CkBAIC0yMDA5LDcgKzIwMTEsNiBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBt
X21haW5GcmFtZVByb2dyZXNzQ29tcGxldGVkIHsgZmFsc2UgfTsKICAgICBib29sIG1fc2hvdWxk
RGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRzIHsgdHJ1ZSB9OwotICAgIGJvb2wgbV9pc0VkaXRv
clN0YXRlTWlzc2luZ1Bvc3RMYXlvdXREYXRhIHsgZmFsc2UgfTsKICAgICBib29sIG1faXNTZWxl
Y3RpbmdUZXh0V2hpbGVJbnNlcnRpbmdBc3luY2hyb25vdXNseSB7IGZhbHNlIH07CiAKICAgICBl
bnVtIGNsYXNzIEVkaXRvclN0YXRlSXNDb250ZW50RWRpdGFibGUgeyBObywgWWVzLCBVbnNldCB9
OwpAQCAtMjA4MSw2ICsyMDgyLDcgQEAgcHJpdmF0ZToKIAogI2lmICFQTEFURk9STShJT1NfRkFN
SUxZKQogaW5saW5lIHZvaWQgV2ViUGFnZTo6cGxhdGZvcm1XaWxsUGVyZm9ybUVkaXRpbmdDb21t
YW5kKCkgeyB9CitpbmxpbmUgYm9vbCBXZWJQYWdlOjpwbGF0Zm9ybU5lZWRzTGF5b3V0Rm9yRWRp
dG9yU3RhdGUoY29uc3QgV2ViQ29yZTo6RnJhbWUmKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQog
I2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ2xpYi9XZWJQYWdlR0xpYi5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9nbGliL1dlYlBhZ2VHTGliLmNwcAppbmRleCBkNTQ1Yjk4ZmJj
ZTM2ZDVmYWY1OTE2MDI0YTMyZGFmYWU1ZmU4NTI2Li40ZTg2ZjA1NWE4YmUzMzMzMzBlM2UyMTNl
MTg3NDhkOGFiM2MyMWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9nbGliL1dlYlBhZ2VHTGliLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9nbGliL1dlYlBhZ2VHTGliLmNwcApAQCAtNjgsMTIgKzY4LDEwIEBAIHZvaWQgV2Vi
UGFnZTo6c2VuZE1lc3NhZ2VUb1dlYkV4dGVuc2lvbihVc2VyTWVzc2FnZSYmIG1lc3NhZ2UpCiAg
ICAgc2VuZE1lc3NhZ2VUb1dlYkV4dGVuc2lvbldpdGhSZXBseShXVEZNb3ZlKG1lc3NhZ2UpLCBb
XShVc2VyTWVzc2FnZSYmKSB7IH0pOwogfQogCi12b2lkIFdlYlBhZ2U6OnBsYXRmb3JtRWRpdG9y
U3RhdGUoRnJhbWUmIGZyYW1lLCBFZGl0b3JTdGF0ZSYgcmVzdWx0LCBJbmNsdWRlUG9zdExheW91
dERhdGFIaW50IHNob3VsZEluY2x1ZGVQb3N0TGF5b3V0RGF0YSkgY29uc3QKK3ZvaWQgV2ViUGFn
ZTo6Z2V0UGxhdGZvcm1FZGl0b3JTdGF0ZShGcmFtZSYgZnJhbWUsIEVkaXRvclN0YXRlJiByZXN1
bHQpIGNvbnN0CiB7Ci0gICAgaWYgKHNob3VsZEluY2x1ZGVQb3N0TGF5b3V0RGF0YSA9PSBJbmNs
dWRlUG9zdExheW91dERhdGFIaW50OjpObyB8fCAhZnJhbWUudmlldygpIHx8IGZyYW1lLnZpZXco
KS0+bmVlZHNMYXlvdXQoKSkgewotICAgICAgICByZXN1bHQuaXNNaXNzaW5nUG9zdExheW91dERh
dGEgPSB0cnVlOworICAgIGlmIChyZXN1bHQuaXNNaXNzaW5nUG9zdExheW91dERhdGEgfHwgIWZy
YW1lLnZpZXcoKSB8fCBmcmFtZS52aWV3KCktPm5lZWRzTGF5b3V0KCkpCiAgICAgICAgIHJldHVy
bjsKLSAgICB9CiAKICAgICBhdXRvJiBwb3N0TGF5b3V0RGF0YSA9IHJlc3VsdC5wb3N0TGF5b3V0
RGF0YSgpOwogICAgIHBvc3RMYXlvdXREYXRhLmNhcmV0UmVjdEF0U3RhcnQgPSBmcmFtZS5zZWxl
Y3Rpb24oKS5hYnNvbHV0ZUNhcmV0Qm91bmRzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IDllNzUwMjIxNmM3MzFhYjQz
MjczNWE3OTkxOTFkYmRlNTYwOWE4MWMuLjQ3YzYyMGQwNDc4MmI0ZDhhMWI5MTMzYmQ1ZTE4NTMy
ZTZiOWM1NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lv
cy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lv
cy9XZWJQYWdlSU9TLm1tCkBAIC0yMjMsOCArMjIzLDIxIEBAIGJvb2wgV2ViUGFnZTo6aXNUcmFu
c3BhcmVudE9yRnVsbHlDbGlwcGVkKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpIGNvbnN0CiAgICAg
cmV0dXJuIHJlbmRlcmVyLT5oYXNOb25FbXB0eVZpc2libGVSZWN0UmVzcGVjdGluZ1BhcmVudEZy
YW1lcygpOwogfQogCi12b2lkIFdlYlBhZ2U6OnBsYXRmb3JtRWRpdG9yU3RhdGUoRnJhbWUmIGZy
YW1lLCBFZGl0b3JTdGF0ZSYgcmVzdWx0LCBJbmNsdWRlUG9zdExheW91dERhdGFIaW50IHNob3Vs
ZEluY2x1ZGVQb3N0TGF5b3V0RGF0YSkgY29uc3QKK2Jvb2wgV2ViUGFnZTo6cGxhdGZvcm1OZWVk
c0xheW91dEZvckVkaXRvclN0YXRlKGNvbnN0IEZyYW1lJiBmcmFtZSkgY29uc3QKIHsKKyAgICAv
LyBJZiB3ZSBoYXZlIGEgY29tcG9zaXRpb24gb3IgYXJlIHVzaW5nIGEgaGFyZHdhcmUga2V5Ym9h
cmQgdGhlbiB3ZSBuZWVkIHRvIHNlbmQgdGhlIGZ1bGwKKyAgICAvLyBlZGl0b3Igc28gdGhhdCB0
aGUgVUlQcm9jZXNzIGNhbiB1cGRhdGUgVUksIGluY2x1ZGluZyB0aGUgcG9zaXRpb24gb2YgdGhl
IGNhcmV0LgorICAgIGJvb2wgbmVlZHNMYXlvdXQgPSBmcmFtZS5lZGl0b3IoKS5oYXNDb21wb3Np
dGlvbigpOworI2lmICFQTEFURk9STShNQUNDQVRBTFlTVCkKKyAgICBuZWVkc0xheW91dCB8PSBt
X2tleWJvYXJkSXNBdHRhY2hlZDsKKyNlbmRpZgorICAgIHJldHVybiBuZWVkc0xheW91dDsKK30K
Kwordm9pZCBXZWJQYWdlOjpnZXRQbGF0Zm9ybUVkaXRvclN0YXRlKEZyYW1lJiBmcmFtZSwgRWRp
dG9yU3RhdGUmIHJlc3VsdCkgY29uc3QKK3sKKyAgICBnZXRQbGF0Zm9ybUVkaXRvclN0YXRlQ29t
bW9uKGZyYW1lLCByZXN1bHQpOworCiAgICAgRnJhbWVWaWV3KiB2aWV3ID0gZnJhbWUudmlldygp
OwogICAgIGlmICghdmlldykgewogICAgICAgICByZXN1bHQuaXNNaXNzaW5nUG9zdExheW91dERh
dGEgPSB0cnVlOwpAQCAtMjU1LDE0ICsyNjgsMTEgQEAgdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybUVk
aXRvclN0YXRlKEZyYW1lJiBmcmFtZSwgRWRpdG9yU3RhdGUmIHJlc3VsdCwgSW5jbHVkZVBvc3QK
ICNpZiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAgICAgcmVxdWlyZXNQb3N0TGF5b3V0RGF0YSB8
PSBtX2tleWJvYXJkSXNBdHRhY2hlZDsKICNlbmRpZgotICAgIGlmICgoc2hvdWxkSW5jbHVkZVBv
c3RMYXlvdXREYXRhID09IEluY2x1ZGVQb3N0TGF5b3V0RGF0YUhpbnQ6Ok5vIHx8IG5lZWRzTGF5
b3V0KSAmJiAhcmVxdWlyZXNQb3N0TGF5b3V0RGF0YSkgewotICAgICAgICByZXN1bHQuaXNNaXNz
aW5nUG9zdExheW91dERhdGEgPSB0cnVlOworICAgIGlmIChuZWVkc0xheW91dCB8fCByZXN1bHQu
aXNNaXNzaW5nUG9zdExheW91dERhdGEpCiAgICAgICAgIHJldHVybjsKLSAgICB9CiAKICAgICBh
dXRvJiBwb3N0TGF5b3V0RGF0YSA9IHJlc3VsdC5wb3N0TGF5b3V0RGF0YSgpOwotICAgIAotICAg
IGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbiA9IGZyYW1lLnNlbGVjdGlvbigpLnNl
bGVjdGlvbigpOworICAgIGNvbnN0IGF1dG8mIHNlbGVjdGlvbiA9IGZyYW1lLnNlbGVjdGlvbigp
LnNlbGVjdGlvbigpOwogICAgIHBvc3RMYXlvdXREYXRhLmlzU3RhYmxlU3RhdGVVcGRhdGUgPSBt
X2lzSW5TdGFibGVTdGF0ZTsKICAgICBib29sIHN0YXJ0Tm9kZUlzSW5zaWRlRml4ZWRQb3NpdGlv
biA9IGZhbHNlOwogICAgIGJvb2wgZW5kTm9kZUlzSW5zaWRlRml4ZWRQb3NpdGlvbiA9IGZhbHNl
OwpAQCAtNDc5LDcgKzQ4OSw3IEBAIGJvb2wgV2ViUGFnZTo6aGFuZGxlRWRpdGluZ0tleWJvYXJk
RXZlbnQoS2V5Ym9hcmRFdmVudCYgZXZlbnQpCiAKICAgICAvLyBGSVhNRTogSW50ZXJwcmV0IHRo
ZSBldmVudCBpbW1lZGlhdGVseSB1cG9uIHJlY2VpdmluZyBpdCBpbiBVSSBwcm9jZXNzLCB3aXRo
b3V0IHNlbmRpbmcgdG8gV2ViUHJvY2VzcyBmaXJzdC4KICAgICBib29sIGV2ZW50V2FzSGFuZGxl
ZCA9IGZhbHNlOwotICAgIGJvb2wgc2VuZFJlc3VsdCA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OkludGVycHJldEtleUV2ZW50KGVkaXRvclN0YXRlKCksIHBsYXRmb3JtRXZlbnQtPnR5cGUo
KSA9PSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OkNoYXIpLAorICAgIGJvb2wgc2VuZFJlc3VsdCA9
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRT
eW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkludGVycHJldEtleUV2ZW50KGVkaXRvclN0YXRl
KFNob3VsZFBlcmZvcm1MYXlvdXQ6OlllcyksIHBsYXRmb3JtRXZlbnQtPnR5cGUoKSA9PSBQbGF0
Zm9ybUtleWJvYXJkRXZlbnQ6OkNoYXIpLAogICAgICAgICBNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpJbnRlcnByZXRLZXlFdmVudDo6UmVwbHkoZXZlbnRXYXNIYW5kbGVkKSwgbV9pZGVudGlmaWVy
KTsKICAgICByZXR1cm4gc2VuZFJlc3VsdCAmJiBldmVudFdhc0hhbmRsZWQ7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbSBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmluZGV4
IDJjNTg5NmRmNzg1NzU4NjYxMGQyYTNhNjU1NmQ1ODE5Y2Y2ZmZlOTQuLjQwZjA1MjBmMGY3NzY3
ZWRlNjY4MzNkZjlkNTVjMDc1ZTBlOGExMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCkBAIC0xMzMsMTIgKzEzMywxMiBAQCB2
b2lkIFdlYlBhZ2U6OnBsYXRmb3JtRGV0YWNoKCkKICAgICBbbV9tb2NrQWNjZXNzaWJpbGl0eUVs
ZW1lbnQgc2V0V2ViUGFnZTpudWxscHRyXTsKIH0KIAotdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybUVk
aXRvclN0YXRlKEZyYW1lJiBmcmFtZSwgRWRpdG9yU3RhdGUmIHJlc3VsdCwgSW5jbHVkZVBvc3RM
YXlvdXREYXRhSGludCBzaG91bGRJbmNsdWRlUG9zdExheW91dERhdGEpIGNvbnN0Cit2b2lkIFdl
YlBhZ2U6OmdldFBsYXRmb3JtRWRpdG9yU3RhdGUoRnJhbWUmIGZyYW1lLCBFZGl0b3JTdGF0ZSYg
cmVzdWx0KSBjb25zdAogewotICAgIGlmIChzaG91bGRJbmNsdWRlUG9zdExheW91dERhdGEgPT0g
SW5jbHVkZVBvc3RMYXlvdXREYXRhSGludDo6Tm8gfHwgIWZyYW1lLnZpZXcoKSB8fCBmcmFtZS52
aWV3KCktPm5lZWRzTGF5b3V0KCkgfHwgIXJlc3VsdC5pc0NvbnRlbnRFZGl0YWJsZSkgewotICAg
ICAgICByZXN1bHQuaXNNaXNzaW5nUG9zdExheW91dERhdGEgPSB0cnVlOworICAgIGdldFBsYXRm
b3JtRWRpdG9yU3RhdGVDb21tb24oZnJhbWUsIHJlc3VsdCk7CisKKyAgICBpZiAocmVzdWx0Lmlz
TWlzc2luZ1Bvc3RMYXlvdXREYXRhKQogICAgICAgICByZXR1cm47Ci0gICAgfQogCiAgICAgYXV0
byYgc2VsZWN0aW9uID0gZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7CiAgICAgUmVmUHRy
PFJhbmdlPiBzZWxlY3RlZFJhbmdlID0gc2VsZWN0aW9uLnRvTm9ybWFsaXplZFJhbmdlKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93aW4vV2ViUGFnZVdp
bi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93aW4vV2ViUGFnZVdpbi5j
cHAKaW5kZXggNjI0ZjRkMTEyNjZhMjdkYTM3ZDdkOWZmMDIxNmNmMjY1ZWEyZGM0Mi4uOWJmYzg2
OWRlMTQwMWQyZDU2YmEyOWQ0OGM2ZjQxN2E1N2VmNDg2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL1dlYlBhZ2VXaW4uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9XZWJQYWdlV2luLmNwcApAQCAtNjMsNyArNjMs
NyBAQCB2b2lkIFdlYlBhZ2U6OnBsYXRmb3JtRGV0YWNoKCkKIHsKIH0KIAotdm9pZCBXZWJQYWdl
OjpwbGF0Zm9ybUVkaXRvclN0YXRlKEZyYW1lJiBmcmFtZSwgRWRpdG9yU3RhdGUmIHJlc3VsdCwg
SW5jbHVkZVBvc3RMYXlvdXREYXRhSGludCBzaG91bGRJbmNsdWRlUG9zdExheW91dERhdGEpIGNv
bnN0Cit2b2lkIFdlYlBhZ2U6OmdldFBsYXRmb3JtRWRpdG9yU3RhdGUoRnJhbWUmLCBFZGl0b3JT
dGF0ZSYpIGNvbnN0CiB7CiB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1ZmM0NDFlMDkyNzdlN2M4NGNlNDExZWQzMmJl
OGU2YTY2ZjNkYmNmLi45ZWI2NmIzYzBhNzZkMjllYmRjNWM5ZmNiZjlmM2RmMDQ0ZDgwNmY2IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjAtMDMtMjQgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNA
YXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIEFTU0VSVElPTiBGQUlMVVJFOiAhaXNNaXNzaW5n
UG9zdExheW91dERhdGEgaW4gV2ViS2l0OjpFZGl0b3JTdGF0ZTo6cG9zdExheW91dERhdGEoKQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk5OTYwCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS81MzMyMzk2Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBT
aW1vbiBGcmFzZXIuCisKKyAgICAgICAgQWRkIGEgdGVzdCB0byBlbnN1cmUgd2UgZG8gbm90IGFz
c2VydCB3aGVuIHVzaW5nIHRoZSBzb2Z0d2FyZSBrZXlib2FyZCB0byB0eXBlIGEgY2hhcmFjdGVy
CisgICAgICAgIGludG8gYSA8dGV4dGFyZWE+IGFuZCB0aGVuIGRlbGV0ZSBpdC4KKworICAgICAg
ICAqIFRlc3RFeHBlY3RhdGlvbnM6IFNraXAgdGVzdHMgaW4gZWRpdGluZy9kZWxldGluZy9pb3Mg
b24gYWxsIHBsYXRmb3Jtcy4KKyAgICAgICAgKiBlZGl0aW5nL2RlbGV0aW5nL2lvcy9iYWNrc3Bh
Y2UtbGFzdC1jaGFyYWN0ZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5n
L2RlbGV0aW5nL2lvcy9iYWNrc3BhY2UtbGFzdC1jaGFyYWN0ZXIuaHRtbDogQWRkZWQuCisgICAg
ICAgICogcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnM6IFVuc2tpcCB0ZXN0cyBpbiBlZGl0
aW5nL2RlbGV0aW5nL2lvcyBvbiBpT1MuCisKIDIwMjAtMDMtMjQgIEphY29iIFVwaG9mZiAgPGph
Y29iX3VwaG9mZkBhcHBsZS5jb20+CiAKICAgICAgICAgWyBpT1MgXSBSRUdSRVNTSU9OOiBmYXN0
L2RvbS93aW5kb3ctb3Blbi1lcGhlbWVyYWwuaHRtbCBpcyBmbGFreSB0aW1pbmcgb3V0CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvVGVzdEV4
cGVjdGF0aW9ucwppbmRleCBlZWU0NThlNDk1MzA3YjQyYTBjZWRhZmY2Mzc3ODk0ZTg3ZjA1YzAx
Li4xNWVmMzQ0NDI0NDJlOWI0Mjc4OWVhOTY2ZDZiNTliMTk5ODg3NzMxIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3Rh
dGlvbnMKQEAgLTIxLDYgKzIxLDcgQEAgZWRpdGluZy9pbnB1dC9pb3MgWyBTa2lwIF0KIGVkaXRp
bmcvZmluZCBbIFNraXAgXQogZWRpdGluZy9wYXN0ZWJvYXJkL2d0ayBbIFNraXAgXQogZWRpdGlu
Zy9zZWxlY3Rpb24vaW9zIFsgU2tpcCBdCitlZGl0aW5nL2RlbGV0aW5nL2lvcyBbIFNraXAgXQog
ZWRpdGluZy91bmRvLW1hbmFnZXIgWyBTa2lwIF0KIHRpbGVkLWRyYXdpbmcgWyBTa2lwIF0KIGZh
c3QvY3NzL2lvcyBbIFNraXAgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9kZWxl
dGluZy9pb3MvYmFja3NwYWNlLWxhc3QtY2hhcmFjdGVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2VkaXRpbmcvZGVsZXRpbmcvaW9zL2JhY2tzcGFjZS1sYXN0LWNoYXJhY3Rlci1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNTA1NjRkOThkYWYyODA5N2MwYjQwYzVmM2I1M2M4ZGE2NDEwYjBi
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvZGVsZXRpbmcvaW9zL2Jh
Y2tzcGFjZS1sYXN0LWNoYXJhY3Rlci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMSBAQAorVGhp
cyB0ZXN0cyB1c2luZyB0aGUgc29mdHdhcmUga2V5Ym9hcmQgYW5kIHByZXNzaW5nICd3JyB0aGVu
IGJhY2tzcGFjZSBkZWxldGVzIHRoZSAndycgYW5kIGRvZXMgbm90IGNhdXNlIGFuIGFzc2VydGlv
biBmYWlsdXJlIGluIGEgZGVidWcgYnVpbGQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworCitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpbnB1dCIpLnZhbHVlIGlzICJ3Igor
UEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW5wdXQiKS52YWx1ZSBpcyAiIgorUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2VkaXRpbmcvZGVsZXRpbmcvaW9zL2JhY2tzcGFjZS1sYXN0LWNoYXJhY3Rl
ci5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9kZWxldGluZy9pb3MvYmFja3NwYWNlLWxhc3Qt
Y2hhcmFjdGVyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWNmNTFmMzQ5M2Y0YzQzNzQ1NTdkNGY5OGI4ZTRh
NDVlN2VhMTk2OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvZGVsZXRp
bmcvaW9zL2JhY2tzcGFjZS1sYXN0LWNoYXJhY3Rlci5odG1sCkBAIC0wLDAgKzEsNDYgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3Vy
Y2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9InRl
c3QtY29udGFpbmVyIj4KKyAgICA8dGV4dGFyZWEgaWQ9ImlucHV0Ij48L3RleHRhcmVhPgorICAg
IDx0ZXh0YXJlYSBpZD0ib3V0cHV0IiByZWFkb25seT48L3RleHRhcmVhPgorPC9kaXY+Cis8c2Ny
aXB0Pgord2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCitsZXQgaW5wdXQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgiaW5wdXQiKTsKKworZnVuY3Rpb24gYXBwZW5kQU5ld2xpbmUoKQor
eworICAgIGxldCBvdXRwdXRFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm91dHB1
dCIpOworICAgIG91dHB1dEVsZW1lbnQudmFsdWUgPSBvdXRwdXRFbGVtZW50LnZhbHVlICsgIlxu
IjsKK30KKworYXN5bmMgZnVuY3Rpb24gcnVuVGVzdCgpCit7CisgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgICAgICBhd2FpdCBVSUhlbHBlci5zZXRIYXJkd2FyZUtleWJvYXJkQXR0YWNo
ZWQoZmFsc2UpOworCisgICAgYXdhaXQgVUlIZWxwZXIuY2FsbEZ1bmN0aW9uQW5kV2FpdEZvckV2
ZW50KCgpID0+IHdpbmRvdy50ZXN0UnVubmVyICYmIFVJSGVscGVyLmFjdGl2YXRlRWxlbWVudChp
bnB1dCksIGlucHV0LCAiZm9jdXMiKTsKKworICAgIGF3YWl0IFVJSGVscGVyLmNhbGxGdW5jdGlv
bkFuZFdhaXRGb3JFdmVudCgoKSA9PiB3aW5kb3cudGVzdFJ1bm5lciAmJiBVSUhlbHBlci5rZXlE
b3duKCJ3IiksIGlucHV0LCAiaW5wdXQiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2Rv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJpbnB1dCIpLnZhbHVlJywgInciKTsKKworICAgIGF3YWl0
IFVJSGVscGVyLmNhbGxGdW5jdGlvbkFuZFdhaXRGb3JFdmVudCgoKSA9PiB3aW5kb3cudGVzdFJ1
bm5lciAmJiBVSUhlbHBlci5rZXlEb3duKCJcYiIpLCBpbnB1dCwgImlucHV0Iik7CisgICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCdkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW5wdXQiKS52YWx1
ZScsICIiKTsKKworICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInRlc3QtY29udGFpbmVyIikpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCitk
ZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB1c2luZyB0aGUgc29mdHdhcmUga2V5Ym9hcmQgYW5kIHBy
ZXNzaW5nICd3JyB0aGVuIDxrYmQ+YmFja3NwYWNlPC9rYmQ+IGRlbGV0ZXMgdGhlICd3JyBhbmQg
ZG9lcyBub3QgY2F1c2UgYW4gYXNzZXJ0aW9uIGZhaWx1cmUgaW4gYSBkZWJ1ZyBidWlsZC4iKQor
aW5wdXQuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsIGFwcGVuZEFOZXdsaW5lKTsKKworcnVu
VGVzdCgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2lvcy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGI0NGIyYmYxNWI5YjY3MTMwNGQ5YTE4YzEyZGFj
YzJhOGFiNjY5ZmUuLmU5MDFkM2UyZTgwZjc2ZWI4M2IzNGYyNThiNzU2MWM4MDVjMjhiN2EgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zCisrKyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zCkBAIC04LDYgKzgsNyBA
QAogCiBhY2Nlc3NpYmlsaXR5L2lvcy1zaW11bGF0b3IgWyBQYXNzIF0KIGRpc3BsYXlsaXN0cyBb
IFBhc3MgXQorZWRpdGluZy9kZWxldGluZy9pb3MgWyBQYXNzIF0KIGh0dHAvdGVzdHMvcXVpY2ts
b29rIFsgUGFzcyBdCiBtZWRpYS9pb3MgWyBQYXNzIF0KIHF1aWNrbG9vayBbIFBhc3MgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394464</attachid>
            <date>2020-03-24 19:54:06 -0700</date>
            <delta_ts>2020-03-24 23:14:34 -0700</delta_ts>
            <desc>To Land</desc>
            <filename>bug-199960-20200324195405.patch</filename>
            <type>text/plain</type>
            <size>28265</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4OTQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDMyM2U1MWJlZGRmNWFhYTQz
ZjI0YWUyZGU0NTEwNjBhNDM0N2Q0NjcuLmVmZDc3ZWU1YWU1Yzc4Nzc5YTZkODk1NDA3NTYzMGE1
MTFiNDMzMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjYgQEAKKzIwMjAtMDMtMjQgIERhbmllbCBC
YXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIEFTU0VSVElPTiBGQUlM
VVJFOiAhaXNNaXNzaW5nUG9zdExheW91dERhdGEgaW4gV2ViS2l0OjpFZGl0b3JTdGF0ZTo6cG9z
dExheW91dERhdGEoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTk5OTYwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81MzMyMzk2Nj4KKworICAgICAg
ICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAgUmVmYWN0b3IgdGhlIGNvbXB1
dGF0aW9uIG9mIGVkaXRvciBzdGF0ZSBzbyB0aGF0IHdlIGNhbiByZXF1ZXN0IHRoYXQgYSBsYXlv
dXQgYmUgcGVyZm9ybWVkCisgICAgICAgIGVhY2ggdGltZSB3ZSBjb21wdXRlIHRoZSBlZGl0b3Ig
c3RhdGUgYXMgcGFydCBvZiBhc2tpbmcgdGhlIFVJIHByb2Nlc3MgdG8gaW50ZXJwcmV0IGEga2V5
CisgICAgICAgIGV2ZW50LiBUaGUgZnVsbCAocmVhZDogYWZ0ZXIgbGF5b3V0KSBlZGl0b3Igc3Rh
dGUgaXMgbmVlZGVkIGZvciBVSUtpdCB0byBwZXJmb3JtIGEgZGVsZXRpb24KKyAgICAgICAgYmVj
YXVzZSBVSUtpdCB3YW50cyB0byBrbm93IGhvdyBtYW55IGNoYXJhY3RlcnMgYXJlIGJlZm9yZSB0
aGUgc2VsZWN0aW9uLiBPdGhlcndpc2UsIHdlIGhpdAorICAgICAgICBhbiBhc3NlcnQgZHVlIHRv
IHRoZSBmYWN0IHRoZSBsYXN0IGVkaXRvciBzdGF0ZSBzZW50ICh3aGVuIHRoZSBXZWIgcHJvY2Vz
cyBhc2tlZCB0aGUgVUkgcHJvY2VzcworICAgICAgICB0byBpbnRlcnByZXQgdGhlIGtleSkgaXMg
bWlzc2luZyBsYXlvdXQgZGF0YS4KKworICAgICAgICBUaGUgcmVmYWN0b3JpbmcgYWxzbyBtb3Zl
cyB0aGUgQ29jb2EtY29tbW9uIGNvZGUgb3V0IG9mIHRoZSBwbGF0Zm9ybS1pbmRlcGVuZGVudCBX
ZWJQYWdlLmNwcAorICAgICAgICBmaWxlIGludG8gV2ViUGFnZUNvY29hLm1tLgorCisgICAgICAg
IE9uZSBzaWRlIGVmZmVjdCBvZiB0aGUgcmVmYWN0b3JpbmcgaXMgdGhhdCB3ZSBubyBsb25nZXIg
YWxsb3cgdGhlIHBsYXRmb3JtRWRpdG9yU3RhdGUoKSBmdW5jdGlvbgorICAgICAgICB0byBvdmVy
cmlkZSB0aGUgaXNNaXNzaW5nUG9zdExheW91dERhdGEgYml0LiBDdXJyZW50bHkgaXQgY2FuIGV2
ZW4gdGhvdWdoIHRoZSBjYWxsaW5nIGNvZGUsIHRoZQorICAgICAgICBwbGF0Zm9ybSBpbmRlcGVu
ZGVudCBjb2RlIChQSUUpIGluIFdlYlBhZ2UsIG1heSBoYXZlIGF0dGFjaGVkIGxheW91dCBkYXRh
LiBOb3cgdGhlIFBJRSBjb2RlIHNldHMKKyAgICAgICAgdGhpcyBiaXQgaWYgaXQgYXR0YWNoZWQg
bGF5b3V0IGRhdGEgYW5kIHRoZSBwbGF0Zm9ybUVkaXRvclN0YXRlKCkgZnVuY3Rpb24gb25seSBh
dHRhY2hlcyBtb3JlCisgICAgICAgIGxheW91dCBkYXRhIGlmIHRoYXQgYml0IGlzIHNldC4gcGxh
dGZvcm1FZGl0b3JTdGF0ZSgpIG5ldmVyIHVuc2V0cyB0aGF0IGJpdCAoaS5lLiBzZXRzIGlzTWlz
c2luZ1Bvc3RMYXlvdXREYXRhCisgICAgICAgIHRvIHRydWUpLgorCisgICAgICAgIFRoZSBwYXRj
aCBhbHNvIHJlbW92ZXMgbV9pc0VkaXRvclN0YXRlTWlzc2luZ1Bvc3RMYXlvdXREYXRhIGluIFdl
YlBhZ2UuaC4gVGhpcyBpbnN0YW5jZSB2YXJpYWJsZQorICAgICAgICBoYXMgYmVlbiB1bnVzZWQg
c2luY2UgPGh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yMjEwNjQvd2Via2l0Pi4g
QWxzbyB3ZSBoYXZlbid0IGJlZW4gdXNpbmcKKyAgICAgICAgSW5jbHVkZVBvc3RMYXlvdXREYXRh
SGludDo6Tm8gc2luY2UgdGhlIGxhc3QgcmVmZXJlbmNlIHRvIGl0IHdhcyByZW1vdmVkIGluIDxo
dHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjQ0NDk0L3dlYmtpdD4uCisKKyAgICAg
ICAgSSBhbHNvIHJlbmFtZWQgcGxhdGZvcm1FZGl0b3JTdGF0ZSgpIHRvIGdldFBsYXRmb3JtRWRp
dG9yU3RhdGUoKSBzaW5jZSBpdCBoYXMgYW4gb3V0IGFyZ3VtZW50LgorCisgICAgICAgIFRlc3Q6
IGVkaXRpbmcvZGVsZXRpbmcvaW9zL2JhY2tzcGFjZS1sYXN0LWNoYXJhY3Rlci5odG1sCisKKyAg
ICAgICAgKiBTaGFyZWQvRWRpdG9yU3RhdGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRQ
bGF0Zm9ybUVkaXRvclN0YXRlQ29tbW9uIGNvbnN0KTogQWRkZWQuIE1vdmVkIENvY29hLWNvbW1v
biBjb2RlIGZyb20gV2ViUGFnZS5jcHAgdG8gaGVyZS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmVkaXRvclN0YXRl
IGNvbnN0KTogTW92ZSBDb2NvYS1jb21tb24gY29kZSB0byBXZWJQYWdlQ29jb2EubW0uIENoYW5n
ZSBlbnVtIHRvCisgICAgICAgIHRyYWNrIHdoZXRoZXIgYSBsYXlvdXQgc2hvdWxkIGJlIHBlcmZv
cm1lZC4gS2VlcCB0aGUgY3VycmVudCBiZWhhdmlvciBvZiBvbmx5IGluY2x1ZGluZyBwb3N0IGxh
eW91dAorICAgICAgICBkYXRhIGlmIHRoZSBmcmFtZSB2aWV3IGRvZXMgbm90IG5lZWQgYSBsYXlv
dXQuIFRoaXMgYmVoYXZpb3IgaXMgZW5jb2RlZCBpbiB0aGUgZW51bWVyYXRvciBTaG91bGRQZXJm
b3JtTGF5b3V0OjpEZWZhdWx0LgorICAgICAgICB3aGljaCBpcyB0aGUgZGVmYXVsdCBhcmd1bWVu
dCB2YWx1ZSBmb3IgdGhlIGFyZ3VtZW50IHNob3VsZFBlcmZvcm1MYXlvdXQuCisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
cGxhdGZvcm1OZWVkc0xheW91dEZvckVkaXRvclN0YXRlIGNvbnN0KTogQWRkZWQuIE5vbi1Db2Nv
YSBwb3J0IGltcGxlbWVudGF0aW9uCisgICAgICAgIHRoYXQgcmV0dXJucyBmYWxzZS4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvZ2xpYi9XZWJQYWdlR0xpYi5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OmdldFBsYXRmb3JtRWRpdG9yU3RhdGUgY29uc3QpOiBFYXJseSByZXR1
cm4gaWYgaXNNaXNzaW5nUG9zdExheW91dERhdGEgaXMgdHJ1ZS4KKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6cGxhdGZvcm1FZGl0b3JTdGF0ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjpwbGF0Zm9ybU5lZWRzTGF5b3V0Rm9yRWRpdG9yU3RhdGUgY29uc3QpOiBBZGRlZC4g
S2VlcCB0aGUgY3VycmVudCBiZWhhdmlvciBvZgorICAgICAgICBwZXJmb3JtaW5nIGEgbGF5b3V0
IGlmIHdlIGhhdmUgYSBjb21wb3NpdGlvbiBvciBhIGhhcmR3YXJlIGtleWJvYXJkIGlzIGF0dGFj
aGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRQbGF0Zm9ybUVkaXRvclN0YXRlIGNv
bnN0KTogQ2FsbCBwbGF0Zm9ybUVkaXRvclN0YXRlQ29tbW9uKCkuIEJhaWwgb3V0IGVhcmx5Cisg
ICAgICAgIGlmIGlzTWlzc2luZ1Bvc3RMYXlvdXREYXRhIGlzIHRydWUuCisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KTogVGhlIGltcG9ydGFudCBw
YXJ0IG9mIHRoaXMgcGF0Y2guIFJlcXVlc3QgYSBsYXlvdXQKKyAgICAgICAgd2hlbiBjb21wdXRp
bmcgdGhlIGVkaXRvciBzdGF0ZSB0aGF0IHdlIHdpbGwgc2VuZCB0byB0aGUgVUkgcHJvY2Vzcy4K
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGxhdGZvcm1FZGl0b3JTdGF0ZSBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRQbGF0Zm9ybUVkaXRvclN0YXRlIGNvbnN0KTog
Q2FsbCBwbGF0Zm9ybUVkaXRvclN0YXRlQ29tbW9uKCkuIEJhaWwgb3V0IGVhcmx5CisgICAgICAg
IGlmIGlzTWlzc2luZ1Bvc3RMYXlvdXREYXRhIGlzIHRydWUuCisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OnBsYXRmb3JtRWRpdG9yU3RhdGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS93aW4vV2ViUGFnZVdpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OmdldFBsYXRmb3JtRWRpdG9yU3RhdGUgY29uc3QpOiBVcGRhdGUgYXMgbmVlZGVkLgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwbGF0Zm9ybUVkaXRvclN0YXRlIGNvbnN0KTogRGVs
ZXRlZC4KKwogMjAyMC0wMy0yNCAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAK
ICAgICAgICAgRWxlbWVudCBjb250ZXh0IGNoYXJhY3RlciByZWN0cyBtYXkgYmUgaW4gd3Jvbmcg
Y29vcmRpbmF0ZSBzeXN0ZW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRv
clN0YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0b3JTdGF0ZS5oCmluZGV4IDZmYWE3
Y2U4MTUxZjE5Yzc5MTQzMWU2YmY4MTk3YWZhZThkZWM4OTAuLmIzOTYwNzdlNTc0MGRlMTg3NDgw
NjMyZjZhM2ZkY2E5MGQ3MTYzNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Vk
aXRvclN0YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRWRpdG9yU3RhdGUuaApAQCAt
NzQsNyArNzQsNyBAQCBzdHJ1Y3QgRWRpdG9yU3RhdGUgewogICAgIGJvb2wgaXNJblBhc3N3b3Jk
RmllbGQgeyBmYWxzZSB9OwogICAgIGJvb2wgaXNJblBsdWdpbiB7IGZhbHNlIH07CiAgICAgYm9v
bCBoYXNDb21wb3NpdGlvbiB7IGZhbHNlIH07Ci0gICAgYm9vbCBpc01pc3NpbmdQb3N0TGF5b3V0
RGF0YSB7IGZhbHNlIH07CisgICAgYm9vbCBpc01pc3NpbmdQb3N0TGF5b3V0RGF0YSB7IHRydWUg
fTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgV2ViQ29yZTo6SW50UmVjdCBmaXJz
dE1hcmtlZFJlY3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KaW5kZXggNTY2MWEwNGM1ZDEwMzdhYTJkNGE3MjBiNGFj
NDEwNmQ4NDhiNGJlOS4uNThiYjk1NjBkYTdlMWZmMGY3ODY1MjI3MTM4OTUwZGVjNGE3YjQyMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFn
ZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dl
YlBhZ2VDb2NvYS5tbQpAQCAtMzYsMTIgKzM2LDE1IEBACiAjaW1wb3J0ICJXZWJSZW1vdGVPYmpl
Y3RSZWdpc3RyeS5oIgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9MYXVuY2hTZXJ2aWNlc1NQSS5o
PgogI2ltcG9ydCA8V2ViQ29yZS9EaWN0aW9uYXJ5TG9va3VwLmg+CisjaW1wb3J0IDxXZWJDb3Jl
L0VkaXRpbmcuaD4KICNpbXBvcnQgPFdlYkNvcmUvRWRpdG9yLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L0V2ZW50SGFuZGxlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9FdmVudE5hbWVzLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0ZvY3VzQ29udHJvbGxlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZVZpZXcu
aD4KICNpbXBvcnQgPFdlYkNvcmUvSFRNTENvbnZlcnRlci5oPgorI2ltcG9ydCA8V2ViQ29yZS9I
VE1MT0xpc3RFbGVtZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0hUTUxVTGlzdEVsZW1lbnQuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvSGl0VGVzdFJlc3VsdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Ob2Rl
UmVuZGVyU3R5bGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGF5bWVudENvb3JkaW5hdG9yLmg+CkBA
IC0zMTEsNiArMzE0LDcgQEAgUmV0YWluUHRyPENGRGF0YVJlZj4gV2ViUGFnZTo6cGRmU25hcHNo
b3RBdFNpemUoSW50UmVjdCByZWN0LCBJbnRTaXplIGJpdG1hcFNpemUKICAgICByZXR1cm4gZGF0
YTsKIH0KIAorCiB2b2lkIFdlYlBhZ2U6OmdldFByb2Nlc3NEaXNwbGF5TmFtZShDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICNpZiBQTEFU
Rk9STShNQUMpCkBAIC0zMjAsNiArMzI0LDcxIEBAIHZvaWQgV2ViUGFnZTo6Z2V0UHJvY2Vzc0Rp
c3BsYXlOYW1lKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBsZXRpCiAj
ZW5kaWYKIH0KIAordm9pZCBXZWJQYWdlOjpnZXRQbGF0Zm9ybUVkaXRvclN0YXRlQ29tbW9uKGNv
bnN0IEZyYW1lJiBmcmFtZSwgRWRpdG9yU3RhdGUmIHJlc3VsdCkgY29uc3QKK3sKKyAgICBpZiAo
cmVzdWx0LmlzTWlzc2luZ1Bvc3RMYXlvdXREYXRhKQorICAgICAgICByZXR1cm47CisKKyAgICBj
b25zdCBhdXRvJiBzZWxlY3Rpb24gPSBmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKTsKKwor
ICAgIGlmICghcmVzdWx0LmlzQ29udGVudEVkaXRhYmxlIHx8IHNlbGVjdGlvbi5pc05vbmUoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byYgcG9zdExheW91dERhdGEgPSByZXN1bHQucG9z
dExheW91dERhdGEoKTsKKyAgICBpZiAoYXV0byBlZGl0aW5nU3R5bGUgPSBFZGl0aW5nU3R5bGU6
OnN0eWxlQXRTZWxlY3Rpb25TdGFydChzZWxlY3Rpb24pKSB7CisgICAgICAgIGlmIChlZGl0aW5n
U3R5bGUtPmhhc1N0eWxlKENTU1Byb3BlcnR5Rm9udFdlaWdodCwgImJvbGQiX3MpKQorICAgICAg
ICAgICAgcG9zdExheW91dERhdGEudHlwaW5nQXR0cmlidXRlcyB8PSBBdHRyaWJ1dGVCb2xkOwor
CisgICAgICAgIGlmIChlZGl0aW5nU3R5bGUtPmhhc1N0eWxlKENTU1Byb3BlcnR5Rm9udFN0eWxl
LCAiaXRhbGljIl9zKSB8fCBlZGl0aW5nU3R5bGUtPmhhc1N0eWxlKENTU1Byb3BlcnR5Rm9udFN0
eWxlLCAib2JsaXF1ZSJfcykpCisgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS50eXBpbmdBdHRy
aWJ1dGVzIHw9IEF0dHJpYnV0ZUl0YWxpY3M7CisKKyAgICAgICAgaWYgKGVkaXRpbmdTdHlsZS0+
aGFzU3R5bGUoQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCwgInVuZGVy
bGluZSJfcykpCisgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS50eXBpbmdBdHRyaWJ1dGVzIHw9
IEF0dHJpYnV0ZVVuZGVybGluZTsKKworICAgICAgICBpZiAoYXV0byogc3R5bGVQcm9wZXJ0aWVz
ID0gZWRpdGluZ1N0eWxlLT5zdHlsZSgpKSB7CisgICAgICAgICAgICBib29sIGlzTGVmdFRvUmln
aHQgPSBzdHlsZVByb3BlcnRpZXMtPnByb3BlcnR5QXNWYWx1ZUlEKENTU1Byb3BlcnR5RGlyZWN0
aW9uKSA9PSBDU1NWYWx1ZUx0cjsKKyAgICAgICAgICAgIHN3aXRjaCAoc3R5bGVQcm9wZXJ0aWVz
LT5wcm9wZXJ0eUFzVmFsdWVJRChDU1NQcm9wZXJ0eVRleHRBbGlnbikpIHsKKyAgICAgICAgICAg
IGNhc2UgQ1NTVmFsdWVSaWdodDoKKyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVXZWJraXRSaWdo
dDoKKyAgICAgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS50ZXh0QWxpZ25tZW50ID0gUmlnaHRB
bGlnbm1lbnQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENTU1Zh
bHVlTGVmdDoKKyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVXZWJraXRMZWZ0OgorICAgICAgICAg
ICAgICAgIHBvc3RMYXlvdXREYXRhLnRleHRBbGlnbm1lbnQgPSBMZWZ0QWxpZ25tZW50OworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUNlbnRlcjoKKyAg
ICAgICAgICAgIGNhc2UgQ1NTVmFsdWVXZWJraXRDZW50ZXI6CisgICAgICAgICAgICAgICAgcG9z
dExheW91dERhdGEudGV4dEFsaWdubWVudCA9IENlbnRlckFsaWdubWVudDsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVKdXN0aWZ5OgorICAgICAgICAg
ICAgICAgIHBvc3RMYXlvdXREYXRhLnRleHRBbGlnbm1lbnQgPSBKdXN0aWZpZWRBbGlnbm1lbnQ7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlU3RhcnQ6
CisgICAgICAgICAgICAgICAgcG9zdExheW91dERhdGEudGV4dEFsaWdubWVudCA9IGlzTGVmdFRv
UmlnaHQgPyBMZWZ0QWxpZ25tZW50IDogUmlnaHRBbGlnbm1lbnQ7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlRW5kOgorICAgICAgICAgICAgICAgIHBv
c3RMYXlvdXREYXRhLnRleHRBbGlnbm1lbnQgPSBpc0xlZnRUb1JpZ2h0ID8gUmlnaHRBbGlnbm1l
bnQgOiBMZWZ0QWxpZ25tZW50OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGlmIChhdXRvIHRleHRDb2xvciA9IHN0eWxlUHJvcGVydGllcy0+cHJvcGVydHlBc0NvbG9y
KENTU1Byb3BlcnR5Q29sb3IpKQorICAgICAgICAgICAgICAgIHBvc3RMYXlvdXREYXRhLnRleHRD
b2xvciA9ICp0ZXh0Q29sb3I7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoYXV0byogZW5j
bG9zaW5nTGlzdEVsZW1lbnQgPSBlbmNsb3NpbmdMaXN0KHNlbGVjdGlvbi5zdGFydCgpLmNvbnRh
aW5lck5vZGUoKSkpIHsKKyAgICAgICAgaWYgKGlzPEhUTUxVTGlzdEVsZW1lbnQ+KCplbmNsb3Np
bmdMaXN0RWxlbWVudCkpCisgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS5lbmNsb3NpbmdMaXN0
VHlwZSA9IFVub3JkZXJlZExpc3Q7CisgICAgICAgIGVsc2UgaWYgKGlzPEhUTUxPTGlzdEVsZW1l
bnQ+KCplbmNsb3NpbmdMaXN0RWxlbWVudCkpCisgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS5l
bmNsb3NpbmdMaXN0VHlwZSA9IE9yZGVyZWRMaXN0OworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisKKyAgICBwb3N0TGF5b3V0RGF0YS5iYXNl
V3JpdGluZ0RpcmVjdGlvbiA9IGZyYW1lLmVkaXRvcigpLmJhc2VXcml0aW5nRGlyZWN0aW9uRm9y
U2VsZWN0aW9uU3RhcnQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAv
LyBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKaW5kZXggMWNkMGIzMGM1ODhmNGI0NDU1NTI0YzEyNDVkZjQ0ODgzOWE5N2IyNi4u
ZTliZDE5NDNjYjBmYTI4NDhmODRjZGYwMGM3NjYwNDg0MDU4ZGViZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTE3OCwxMiArMTc4LDEwIEBA
CiAjaW5jbHVkZSA8V2ViQ29yZS9IVE1MSW5wdXRFbGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9IVE1MTWVudUVsZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hUTUxNZW51SXRlbUVsZW1l
bnQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0hUTUxPTGlzdEVsZW1lbnQuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0hUTUxQbHVnSW5FbGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IVE1MUGx1Z0lu
SW1hZ2VFbGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IVE1MU2VsZWN0RWxlbWVudC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaD4KLSNpbmNsdWRl
IDxXZWJDb3JlL0hUTUxVTGlzdEVsZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hpc3RvcnlD
b250cm9sbGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IaXN0b3J5SXRlbS5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvSGl0VGVzdFJlc3VsdC5oPgpAQCAtMTAzNiw5ICsxMDM0LDEwIEBAIFdlYkNvcmU6
OldlYkdMTG9hZFBvbGljeSBXZWJQYWdlOjpyZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwoV2ViRnJh
bWUqLCBjb25zdCBVUkwmCiB9CiAjZW5kaWYKIAotRWRpdG9yU3RhdGUgV2ViUGFnZTo6ZWRpdG9y
U3RhdGUoSW5jbHVkZVBvc3RMYXlvdXREYXRhSGludCBzaG91bGRJbmNsdWRlUG9zdExheW91dERh
dGEpIGNvbnN0CitFZGl0b3JTdGF0ZSBXZWJQYWdlOjplZGl0b3JTdGF0ZShTaG91bGRQZXJmb3Jt
TGF5b3V0IHNob3VsZFBlcmZvcm1MYXlvdXQpIGNvbnN0CiB7Ci0gICAgRnJhbWUmIGZyYW1lID0g
bV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKKyAgICAvLyBS
ZWYgdGhlIGZyYW1lIGJlY2F1c2UgdGhpcyBmdW5jdGlvbiBtYXkgcGVyZm9ybSBsYXlvdXQsIHdo
aWNoIG1heSBjYXVzZSBmcmFtZSBkZXN0cnVjdGlvbi4KKyAgICBSZWY8RnJhbWU+IGZyYW1lID0g
bV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKIAogICAgIEVk
aXRvclN0YXRlIHJlc3VsdDsKIApAQCAtMTA1MSw4ICsxMDUwLDggQEAgRWRpdG9yU3RhdGUgV2Vi
UGFnZTo6ZWRpdG9yU3RhdGUoSW5jbHVkZVBvc3RMYXlvdXREYXRhSGludCBzaG91bGRJbmNsdWRl
UG9zdExheW8KICAgICAgICAgfQogICAgIH0KIAotICAgIGNvbnN0IFZpc2libGVTZWxlY3Rpb24m
IHNlbGVjdGlvbiA9IGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpOwotICAgIGNvbnN0IEVk
aXRvciYgZWRpdG9yID0gZnJhbWUuZWRpdG9yKCk7CisgICAgY29uc3QgVmlzaWJsZVNlbGVjdGlv
biYgc2VsZWN0aW9uID0gZnJhbWUtPnNlbGVjdGlvbigpLnNlbGVjdGlvbigpOworICAgIGNvbnN0
IEVkaXRvciYgZWRpdG9yID0gZnJhbWUtPmVkaXRvcigpOwogCiAgICAgcmVzdWx0LnNlbGVjdGlv
bklzTm9uZSA9IHNlbGVjdGlvbi5pc05vbmUoKTsKICAgICByZXN1bHQuc2VsZWN0aW9uSXNSYW5n
ZSA9IHNlbGVjdGlvbi5pc1JhbmdlKCk7CkBAIC0xMDYyLDExICsxMDYxLDE1IEBAIEVkaXRvclN0
YXRlIFdlYlBhZ2U6OmVkaXRvclN0YXRlKEluY2x1ZGVQb3N0TGF5b3V0RGF0YUhpbnQgc2hvdWxk
SW5jbHVkZVBvc3RMYXlvCiAgICAgcmVzdWx0Lmhhc0NvbXBvc2l0aW9uID0gZWRpdG9yLmhhc0Nv
bXBvc2l0aW9uKCk7CiAgICAgcmVzdWx0LnNob3VsZElnbm9yZVNlbGVjdGlvbkNoYW5nZXMgPSBl
ZGl0b3IuaWdub3JlU2VsZWN0aW9uQ2hhbmdlcygpIHx8IChlZGl0b3IuY2xpZW50KCkgJiYgIWVk
aXRvci5jbGllbnQoKS0+c2hvdWxkUmV2ZWFsQ3VycmVudFNlbGVjdGlvbkFmdGVySW5zZXJ0aW9u
KCkpOwogCi0gICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gZnJhbWUuZG9jdW1lbnQoKSkKLSAgICAg
ICAgcmVzdWx0Lm9yaWdpbklkZW50aWZpZXJGb3JQYXN0ZWJvYXJkID0gZG9jdW1lbnQtPm9yaWdp
bklkZW50aWZpZXJGb3JQYXN0ZWJvYXJkKCk7CisgICAgUmVmPERvY3VtZW50PiBkb2N1bWVudCA9
ICpmcmFtZS0+ZG9jdW1lbnQoKTsKKyAgICByZXN1bHQub3JpZ2luSWRlbnRpZmllckZvclBhc3Rl
Ym9hcmQgPSBkb2N1bWVudC0+b3JpZ2luSWRlbnRpZmllckZvclBhc3RlYm9hcmQoKTsKKworICAg
IGlmIChzaG91bGRQZXJmb3JtTGF5b3V0ID09IFNob3VsZFBlcmZvcm1MYXlvdXQ6OlllcyB8fCBw
bGF0Zm9ybU5lZWRzTGF5b3V0Rm9yRWRpdG9yU3RhdGUoZnJhbWUpKQorICAgICAgICBkb2N1bWVu
dC0+dXBkYXRlTGF5b3V0KCk7IC8vIE1heSBjYXVzZSBkb2N1bWVudCBkZXN0cnVjdGlvbgorCisg
ICAgaWYgKGF1dG8qIGZyYW1lVmlldyA9IGRvY3VtZW50LT52aWV3KCk7IGZyYW1lVmlldyAmJiAh
ZnJhbWVWaWV3LT5uZWVkc0xheW91dCgpKSB7CisgICAgICAgIHJlc3VsdC5pc01pc3NpbmdQb3N0
TGF5b3V0RGF0YSA9IGZhbHNlOwogCi0gICAgYm9vbCBjYW5JbmNsdWRlUG9zdExheW91dERhdGEg
PSBmcmFtZS52aWV3KCkgJiYgIWZyYW1lLnZpZXcoKS0+bmVlZHNMYXlvdXQoKTsKLSAgICBpZiAo
c2hvdWxkSW5jbHVkZVBvc3RMYXlvdXREYXRhID09IEluY2x1ZGVQb3N0TGF5b3V0RGF0YUhpbnQ6
OlllcyAmJiBjYW5JbmNsdWRlUG9zdExheW91dERhdGEpIHsKICAgICAgICAgYXV0byYgcG9zdExh
eW91dERhdGEgPSByZXN1bHQucG9zdExheW91dERhdGEoKTsKICAgICAgICAgcG9zdExheW91dERh
dGEuY2FuQ3V0ID0gZWRpdG9yLmNhbkN1dCgpOwogICAgICAgICBwb3N0TGF5b3V0RGF0YS5jYW5D
b3B5ID0gZWRpdG9yLmNhbkNvcHkoKTsKQEAgLTEwNzQsNjYgKzEwNzcsOSBAQCBFZGl0b3JTdGF0
ZSBXZWJQYWdlOjplZGl0b3JTdGF0ZShJbmNsdWRlUG9zdExheW91dERhdGFIaW50IHNob3VsZElu
Y2x1ZGVQb3N0TGF5bwogCiAgICAgICAgIGlmIChtX25lZWRzRm9udEF0dHJpYnV0ZXMpCiAgICAg
ICAgICAgICBwb3N0TGF5b3V0RGF0YS5mb250QXR0cmlidXRlcyA9IGVkaXRvci5mb250QXR0cmli
dXRlc0F0U2VsZWN0aW9uU3RhcnQoKTsKLQotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAgICBp
ZiAocmVzdWx0LmlzQ29udGVudEVkaXRhYmxlICYmICFzZWxlY3Rpb24uaXNOb25lKCkpIHsKLSAg
ICAgICAgICAgIGlmIChhdXRvIGVkaXRpbmdTdHlsZSA9IEVkaXRpbmdTdHlsZTo6c3R5bGVBdFNl
bGVjdGlvblN0YXJ0KHNlbGVjdGlvbikpIHsKLSAgICAgICAgICAgICAgICBpZiAoZWRpdGluZ1N0
eWxlLT5oYXNTdHlsZShDU1NQcm9wZXJ0eUZvbnRXZWlnaHQsICJib2xkIikpCi0gICAgICAgICAg
ICAgICAgICAgIHBvc3RMYXlvdXREYXRhLnR5cGluZ0F0dHJpYnV0ZXMgfD0gQXR0cmlidXRlQm9s
ZDsKLQotICAgICAgICAgICAgICAgIGlmIChlZGl0aW5nU3R5bGUtPmhhc1N0eWxlKENTU1Byb3Bl
cnR5Rm9udFN0eWxlLCAiaXRhbGljIikgfHwgZWRpdGluZ1N0eWxlLT5oYXNTdHlsZShDU1NQcm9w
ZXJ0eUZvbnRTdHlsZSwgIm9ibGlxdWUiKSkKLSAgICAgICAgICAgICAgICAgICAgcG9zdExheW91
dERhdGEudHlwaW5nQXR0cmlidXRlcyB8PSBBdHRyaWJ1dGVJdGFsaWNzOwotCi0gICAgICAgICAg
ICAgICAgaWYgKGVkaXRpbmdTdHlsZS0+aGFzU3R5bGUoQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVj
b3JhdGlvbnNJbkVmZmVjdCwgInVuZGVybGluZSIpKQotICAgICAgICAgICAgICAgICAgICBwb3N0
TGF5b3V0RGF0YS50eXBpbmdBdHRyaWJ1dGVzIHw9IEF0dHJpYnV0ZVVuZGVybGluZTsKLQotICAg
ICAgICAgICAgICAgIGlmIChhdXRvKiBzdHlsZVByb3BlcnRpZXMgPSBlZGl0aW5nU3R5bGUtPnN0
eWxlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0xlZnRUb1JpZ2h0ID0gc3R5bGVQ
cm9wZXJ0aWVzLT5wcm9wZXJ0eUFzVmFsdWVJRChDU1NQcm9wZXJ0eURpcmVjdGlvbikgPT0gQ1NT
VmFsdWVMdHI7Ci0gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoc3R5bGVQcm9wZXJ0aWVzLT5w
cm9wZXJ0eUFzVmFsdWVJRChDU1NQcm9wZXJ0eVRleHRBbGlnbikpIHsKLSAgICAgICAgICAgICAg
ICAgICAgY2FzZSBDU1NWYWx1ZVJpZ2h0OgotICAgICAgICAgICAgICAgICAgICBjYXNlIENTU1Zh
bHVlV2Via2l0UmlnaHQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS50
ZXh0QWxpZ25tZW50ID0gUmlnaHRBbGlnbm1lbnQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUxlZnQ6Ci0gICAgICAgICAg
ICAgICAgICAgIGNhc2UgQ1NTVmFsdWVXZWJraXRMZWZ0OgotICAgICAgICAgICAgICAgICAgICAg
ICAgcG9zdExheW91dERhdGEudGV4dEFsaWdubWVudCA9IExlZnRBbGlnbm1lbnQ7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1
ZUNlbnRlcjoKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVdlYmtpdENlbnRlcjoK
LSAgICAgICAgICAgICAgICAgICAgICAgIHBvc3RMYXlvdXREYXRhLnRleHRBbGlnbm1lbnQgPSBD
ZW50ZXJBbGlnbm1lbnQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUp1c3RpZnk6Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBwb3N0TGF5b3V0RGF0YS50ZXh0QWxpZ25tZW50ID0gSnVzdGlmaWVkQWxpZ25tZW50OwotICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgQ1NT
VmFsdWVTdGFydDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHBvc3RMYXlvdXREYXRhLnRleHRB
bGlnbm1lbnQgPSBpc0xlZnRUb1JpZ2h0ID8gTGVmdEFsaWdubWVudCA6IFJpZ2h0QWxpZ25tZW50
OwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNh
c2UgQ1NTVmFsdWVFbmQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS50
ZXh0QWxpZ25tZW50ID0gaXNMZWZ0VG9SaWdodCA/IFJpZ2h0QWxpZ25tZW50IDogTGVmdEFsaWdu
bWVudDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAg
ICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG8gdGV4dENvbG9yID0gc3R5bGVQ
cm9wZXJ0aWVzLT5wcm9wZXJ0eUFzQ29sb3IoQ1NTUHJvcGVydHlDb2xvcikpCi0gICAgICAgICAg
ICAgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS50ZXh0Q29sb3IgPSAqdGV4dENvbG9yOwotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKGF1dG8qIGVu
Y2xvc2luZ0xpc3RFbGVtZW50ID0gZW5jbG9zaW5nTGlzdChzZWxlY3Rpb24uc3RhcnQoKS5jb250
YWluZXJOb2RlKCkpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGlzPEhUTUxVTGlzdEVsZW1lbnQ+
KCplbmNsb3NpbmdMaXN0RWxlbWVudCkpCi0gICAgICAgICAgICAgICAgICAgIHBvc3RMYXlvdXRE
YXRhLmVuY2xvc2luZ0xpc3RUeXBlID0gVW5vcmRlcmVkTGlzdDsKLSAgICAgICAgICAgICAgICBl
bHNlIGlmIChpczxIVE1MT0xpc3RFbGVtZW50PigqZW5jbG9zaW5nTGlzdEVsZW1lbnQpKQotICAg
ICAgICAgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS5lbmNsb3NpbmdMaXN0VHlwZSA9IE9yZGVy
ZWRMaXN0OwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHBvc3RMYXlvdXRE
YXRhLmJhc2VXcml0aW5nRGlyZWN0aW9uID0gZWRpdG9yLmJhc2VXcml0aW5nRGlyZWN0aW9uRm9y
U2VsZWN0aW9uU3RhcnQoKTsKLSAgICAgICAgfQotI2VuZGlmCiAgICAgfQogCi0gICAgcGxhdGZv
cm1FZGl0b3JTdGF0ZShmcmFtZSwgcmVzdWx0LCBzaG91bGRJbmNsdWRlUG9zdExheW91dERhdGEp
OworICAgIGdldFBsYXRmb3JtRWRpdG9yU3RhdGUoZnJhbWUsIHJlc3VsdCk7CiAKICAgICBtX2xh
c3RFZGl0b3JTdGF0ZVdhc0NvbnRlbnRFZGl0YWJsZSA9IHJlc3VsdC5pc0NvbnRlbnRFZGl0YWJs
ZSA/IEVkaXRvclN0YXRlSXNDb250ZW50RWRpdGFibGU6OlllcyA6IEVkaXRvclN0YXRlSXNDb250
ZW50RWRpdGFibGU6Ok5vOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmgKaW5kZXggMDliNjA4NGI0NjNlM2U0N2IxY2MxNTk2NzhhMDg2OTgyY2YxYWM1Zi4uMWQx
NmM4NDM5ZDJkYjYxMzQxOGYxODU2ZmU5MTQwNDI4MzkyNDUxNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtNDc4LDggKzQ3OCw4IEBAIHB1YmxpYzoK
ICAgICBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgcmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKFdl
YkZyYW1lKiwgY29uc3QgVVJMJik7CiAjZW5kaWYKICAgICAKLSAgICBlbnVtIGNsYXNzIEluY2x1
ZGVQb3N0TGF5b3V0RGF0YUhpbnQgeyBObywgWWVzIH07Ci0gICAgRWRpdG9yU3RhdGUgZWRpdG9y
U3RhdGUoSW5jbHVkZVBvc3RMYXlvdXREYXRhSGludCA9IEluY2x1ZGVQb3N0TGF5b3V0RGF0YUhp
bnQ6OlllcykgY29uc3Q7CisgICAgZW51bSBjbGFzcyBTaG91bGRQZXJmb3JtTGF5b3V0IHsgRGVm
YXVsdCwgWWVzIH07CisgICAgRWRpdG9yU3RhdGUgZWRpdG9yU3RhdGUoU2hvdWxkUGVyZm9ybUxh
eW91dCA9IFNob3VsZFBlcmZvcm1MYXlvdXQ6OkRlZmF1bHQpIGNvbnN0OwogICAgIHZvaWQgdXBk
YXRlRWRpdG9yU3RhdGVBZnRlckxheW91dElmRWRpdGFiaWxpdHlDaGFuZ2VkKCk7CiAKICAgICAv
LyBvcHRpb25zIGFyZSBSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbkJlaGF2aW9yIHZh
bHVlcy4KQEAgLTEzMTYsOSArMTMxNiwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1J
bml0aWFsaXplKCk7CiAgICAgdm9pZCBwbGF0Zm9ybVJlaW5pdGlhbGl6ZSgpOwogICAgIHZvaWQg
cGxhdGZvcm1EZXRhY2goKTsKLSAgICB2b2lkIHBsYXRmb3JtRWRpdG9yU3RhdGUoV2ViQ29yZTo6
RnJhbWUmLCBFZGl0b3JTdGF0ZSYgcmVzdWx0LCBJbmNsdWRlUG9zdExheW91dERhdGFIaW50KSBj
b25zdDsKKyAgICB2b2lkIGdldFBsYXRmb3JtRWRpdG9yU3RhdGUoV2ViQ29yZTo6RnJhbWUmLCBF
ZGl0b3JTdGF0ZSYpIGNvbnN0OworICAgIGJvb2wgcGxhdGZvcm1OZWVkc0xheW91dEZvckVkaXRv
clN0YXRlKGNvbnN0IFdlYkNvcmU6OkZyYW1lJikgY29uc3Q7CiAgICAgdm9pZCBwbGF0Zm9ybVdp
bGxQZXJmb3JtRWRpdGluZ0NvbW1hbmQoKTsKICAgICB2b2lkIHNlbmRFZGl0b3JTdGF0ZVVwZGF0
ZSgpOworICAgIHZvaWQgZ2V0UGxhdGZvcm1FZGl0b3JTdGF0ZUNvbW1vbihjb25zdCBXZWJDb3Jl
OjpGcmFtZSYsIEVkaXRvclN0YXRlJikgY29uc3Q7CiAKICNpZiBIQVZFKFRPVUNIX0JBUikKICAg
ICB2b2lkIHNlbmRUb3VjaEJhck1lbnVEYXRhQWRkZWRVcGRhdGUoV2ViQ29yZTo6SFRNTE1lbnVF
bGVtZW50Jik7CkBAIC0yMDA5LDcgKzIwMTEsNiBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtX21h
aW5GcmFtZVByb2dyZXNzQ29tcGxldGVkIHsgZmFsc2UgfTsKICAgICBib29sIG1fc2hvdWxkRGlz
cGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRzIHsgdHJ1ZSB9OwotICAgIGJvb2wgbV9pc0VkaXRvclN0
YXRlTWlzc2luZ1Bvc3RMYXlvdXREYXRhIHsgZmFsc2UgfTsKICAgICBib29sIG1faXNTZWxlY3Rp
bmdUZXh0V2hpbGVJbnNlcnRpbmdBc3luY2hyb25vdXNseSB7IGZhbHNlIH07CiAKICAgICBlbnVt
IGNsYXNzIEVkaXRvclN0YXRlSXNDb250ZW50RWRpdGFibGUgeyBObywgWWVzLCBVbnNldCB9OwpA
QCAtMjA4MSw2ICsyMDgyLDcgQEAgcHJpdmF0ZToKIAogI2lmICFQTEFURk9STShJT1NfRkFNSUxZ
KQogaW5saW5lIHZvaWQgV2ViUGFnZTo6cGxhdGZvcm1XaWxsUGVyZm9ybUVkaXRpbmdDb21tYW5k
KCkgeyB9CitpbmxpbmUgYm9vbCBXZWJQYWdlOjpwbGF0Zm9ybU5lZWRzTGF5b3V0Rm9yRWRpdG9y
U3RhdGUoY29uc3QgV2ViQ29yZTo6RnJhbWUmKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogI2Vu
ZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvZ2xpYi9XZWJQYWdlR0xpYi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9nbGliL1dlYlBhZ2VHTGliLmNwcAppbmRleCBkNTQ1Yjk4ZmJjZTM2
ZDVmYWY1OTE2MDI0YTMyZGFmYWU1ZmU4NTI2Li40ZTg2ZjA1NWE4YmUzMzMzMzBlM2UyMTNlMTg3
NDhkOGFiM2MyMWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9nbGliL1dlYlBhZ2VHTGliLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9nbGliL1dlYlBhZ2VHTGliLmNwcApAQCAtNjgsMTIgKzY4LDEwIEBAIHZvaWQgV2ViUGFn
ZTo6c2VuZE1lc3NhZ2VUb1dlYkV4dGVuc2lvbihVc2VyTWVzc2FnZSYmIG1lc3NhZ2UpCiAgICAg
c2VuZE1lc3NhZ2VUb1dlYkV4dGVuc2lvbldpdGhSZXBseShXVEZNb3ZlKG1lc3NhZ2UpLCBbXShV
c2VyTWVzc2FnZSYmKSB7IH0pOwogfQogCi12b2lkIFdlYlBhZ2U6OnBsYXRmb3JtRWRpdG9yU3Rh
dGUoRnJhbWUmIGZyYW1lLCBFZGl0b3JTdGF0ZSYgcmVzdWx0LCBJbmNsdWRlUG9zdExheW91dERh
dGFIaW50IHNob3VsZEluY2x1ZGVQb3N0TGF5b3V0RGF0YSkgY29uc3QKK3ZvaWQgV2ViUGFnZTo6
Z2V0UGxhdGZvcm1FZGl0b3JTdGF0ZShGcmFtZSYgZnJhbWUsIEVkaXRvclN0YXRlJiByZXN1bHQp
IGNvbnN0CiB7Ci0gICAgaWYgKHNob3VsZEluY2x1ZGVQb3N0TGF5b3V0RGF0YSA9PSBJbmNsdWRl
UG9zdExheW91dERhdGFIaW50OjpObyB8fCAhZnJhbWUudmlldygpIHx8IGZyYW1lLnZpZXcoKS0+
bmVlZHNMYXlvdXQoKSkgewotICAgICAgICByZXN1bHQuaXNNaXNzaW5nUG9zdExheW91dERhdGEg
PSB0cnVlOworICAgIGlmIChyZXN1bHQuaXNNaXNzaW5nUG9zdExheW91dERhdGEgfHwgIWZyYW1l
LnZpZXcoKSB8fCBmcmFtZS52aWV3KCktPm5lZWRzTGF5b3V0KCkpCiAgICAgICAgIHJldHVybjsK
LSAgICB9CiAKICAgICBhdXRvJiBwb3N0TGF5b3V0RGF0YSA9IHJlc3VsdC5wb3N0TGF5b3V0RGF0
YSgpOwogICAgIHBvc3RMYXlvdXREYXRhLmNhcmV0UmVjdEF0U3RhcnQgPSBmcmFtZS5zZWxlY3Rp
b24oKS5hYnNvbHV0ZUNhcmV0Qm91bmRzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IDllNzUwMjIxNmM3MzFhYjQzMjcz
NWE3OTkxOTFkYmRlNTYwOWE4MWMuLjQ3YzYyMGQwNDc4MmI0ZDhhMWI5MTMzYmQ1ZTE4NTMyZTZi
OWM1NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9X
ZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9X
ZWJQYWdlSU9TLm1tCkBAIC0yMjMsOCArMjIzLDIxIEBAIGJvb2wgV2ViUGFnZTo6aXNUcmFuc3Bh
cmVudE9yRnVsbHlDbGlwcGVkKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpIGNvbnN0CiAgICAgcmV0
dXJuIHJlbmRlcmVyLT5oYXNOb25FbXB0eVZpc2libGVSZWN0UmVzcGVjdGluZ1BhcmVudEZyYW1l
cygpOwogfQogCi12b2lkIFdlYlBhZ2U6OnBsYXRmb3JtRWRpdG9yU3RhdGUoRnJhbWUmIGZyYW1l
LCBFZGl0b3JTdGF0ZSYgcmVzdWx0LCBJbmNsdWRlUG9zdExheW91dERhdGFIaW50IHNob3VsZElu
Y2x1ZGVQb3N0TGF5b3V0RGF0YSkgY29uc3QKK2Jvb2wgV2ViUGFnZTo6cGxhdGZvcm1OZWVkc0xh
eW91dEZvckVkaXRvclN0YXRlKGNvbnN0IEZyYW1lJiBmcmFtZSkgY29uc3QKIHsKKyAgICAvLyBJ
ZiB3ZSBoYXZlIGEgY29tcG9zaXRpb24gb3IgYXJlIHVzaW5nIGEgaGFyZHdhcmUga2V5Ym9hcmQg
dGhlbiB3ZSBuZWVkIHRvIHNlbmQgdGhlIGZ1bGwKKyAgICAvLyBlZGl0b3Igc28gdGhhdCB0aGUg
VUlQcm9jZXNzIGNhbiB1cGRhdGUgVUksIGluY2x1ZGluZyB0aGUgcG9zaXRpb24gb2YgdGhlIGNh
cmV0LgorICAgIGJvb2wgbmVlZHNMYXlvdXQgPSBmcmFtZS5lZGl0b3IoKS5oYXNDb21wb3NpdGlv
bigpOworI2lmICFQTEFURk9STShNQUNDQVRBTFlTVCkKKyAgICBuZWVkc0xheW91dCB8PSBtX2tl
eWJvYXJkSXNBdHRhY2hlZDsKKyNlbmRpZgorICAgIHJldHVybiBuZWVkc0xheW91dDsKK30KKwor
dm9pZCBXZWJQYWdlOjpnZXRQbGF0Zm9ybUVkaXRvclN0YXRlKEZyYW1lJiBmcmFtZSwgRWRpdG9y
U3RhdGUmIHJlc3VsdCkgY29uc3QKK3sKKyAgICBnZXRQbGF0Zm9ybUVkaXRvclN0YXRlQ29tbW9u
KGZyYW1lLCByZXN1bHQpOworCiAgICAgRnJhbWVWaWV3KiB2aWV3ID0gZnJhbWUudmlldygpOwog
ICAgIGlmICghdmlldykgewogICAgICAgICByZXN1bHQuaXNNaXNzaW5nUG9zdExheW91dERhdGEg
PSB0cnVlOwpAQCAtMjU1LDE0ICsyNjgsMTEgQEAgdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybUVkaXRv
clN0YXRlKEZyYW1lJiBmcmFtZSwgRWRpdG9yU3RhdGUmIHJlc3VsdCwgSW5jbHVkZVBvc3QKICNp
ZiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAgICAgcmVxdWlyZXNQb3N0TGF5b3V0RGF0YSB8PSBt
X2tleWJvYXJkSXNBdHRhY2hlZDsKICNlbmRpZgotICAgIGlmICgoc2hvdWxkSW5jbHVkZVBvc3RM
YXlvdXREYXRhID09IEluY2x1ZGVQb3N0TGF5b3V0RGF0YUhpbnQ6Ok5vIHx8IG5lZWRzTGF5b3V0
KSAmJiAhcmVxdWlyZXNQb3N0TGF5b3V0RGF0YSkgewotICAgICAgICByZXN1bHQuaXNNaXNzaW5n
UG9zdExheW91dERhdGEgPSB0cnVlOworICAgIGlmIChuZWVkc0xheW91dCB8fCByZXN1bHQuaXNN
aXNzaW5nUG9zdExheW91dERhdGEpCiAgICAgICAgIHJldHVybjsKLSAgICB9CiAKICAgICBhdXRv
JiBwb3N0TGF5b3V0RGF0YSA9IHJlc3VsdC5wb3N0TGF5b3V0RGF0YSgpOwotICAgIAotICAgIGNv
bnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbiA9IGZyYW1lLnNlbGVjdGlvbigpLnNlbGVj
dGlvbigpOworICAgIGNvbnN0IGF1dG8mIHNlbGVjdGlvbiA9IGZyYW1lLnNlbGVjdGlvbigpLnNl
bGVjdGlvbigpOwogICAgIHBvc3RMYXlvdXREYXRhLmlzU3RhYmxlU3RhdGVVcGRhdGUgPSBtX2lz
SW5TdGFibGVTdGF0ZTsKICAgICBib29sIHN0YXJ0Tm9kZUlzSW5zaWRlRml4ZWRQb3NpdGlvbiA9
IGZhbHNlOwogICAgIGJvb2wgZW5kTm9kZUlzSW5zaWRlRml4ZWRQb3NpdGlvbiA9IGZhbHNlOwpA
QCAtNDc5LDcgKzQ4OSw3IEBAIGJvb2wgV2ViUGFnZTo6aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZl
bnQoS2V5Ym9hcmRFdmVudCYgZXZlbnQpCiAKICAgICAvLyBGSVhNRTogSW50ZXJwcmV0IHRoZSBl
dmVudCBpbW1lZGlhdGVseSB1cG9uIHJlY2VpdmluZyBpdCBpbiBVSSBwcm9jZXNzLCB3aXRob3V0
IHNlbmRpbmcgdG8gV2ViUHJvY2VzcyBmaXJzdC4KICAgICBib29sIGV2ZW50V2FzSGFuZGxlZCA9
IGZhbHNlOwotICAgIGJvb2wgc2VuZFJlc3VsdCA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBh
cmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OkludGVycHJldEtleUV2ZW50KGVkaXRvclN0YXRlKCksIHBsYXRmb3JtRXZlbnQtPnR5cGUoKSA9
PSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OkNoYXIpLAorICAgIGJvb2wgc2VuZFJlc3VsdCA9IFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5j
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkludGVycHJldEtleUV2ZW50KGVkaXRvclN0YXRlKFNo
b3VsZFBlcmZvcm1MYXlvdXQ6OlllcyksIHBsYXRmb3JtRXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9y
bUtleWJvYXJkRXZlbnQ6OkNoYXIpLAogICAgICAgICBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpJ
bnRlcnByZXRLZXlFdmVudDo6UmVwbHkoZXZlbnRXYXNIYW5kbGVkKSwgbV9pZGVudGlmaWVyKTsK
ICAgICByZXR1cm4gc2VuZFJlc3VsdCAmJiBldmVudFdhc0hhbmRsZWQ7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbSBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmluZGV4IDJj
NTg5NmRmNzg1NzU4NjYxMGQyYTNhNjU1NmQ1ODE5Y2Y2ZmZlOTQuLjQwZjA1MjBmMGY3NzY3ZWRl
NjY4MzNkZjlkNTVjMDc1ZTBlOGExMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCkBAIC0xMzMsMTIgKzEzMywxMiBAQCB2b2lk
IFdlYlBhZ2U6OnBsYXRmb3JtRGV0YWNoKCkKICAgICBbbV9tb2NrQWNjZXNzaWJpbGl0eUVsZW1l
bnQgc2V0V2ViUGFnZTpudWxscHRyXTsKIH0KIAotdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybUVkaXRv
clN0YXRlKEZyYW1lJiBmcmFtZSwgRWRpdG9yU3RhdGUmIHJlc3VsdCwgSW5jbHVkZVBvc3RMYXlv
dXREYXRhSGludCBzaG91bGRJbmNsdWRlUG9zdExheW91dERhdGEpIGNvbnN0Cit2b2lkIFdlYlBh
Z2U6OmdldFBsYXRmb3JtRWRpdG9yU3RhdGUoRnJhbWUmIGZyYW1lLCBFZGl0b3JTdGF0ZSYgcmVz
dWx0KSBjb25zdAogewotICAgIGlmIChzaG91bGRJbmNsdWRlUG9zdExheW91dERhdGEgPT0gSW5j
bHVkZVBvc3RMYXlvdXREYXRhSGludDo6Tm8gfHwgIWZyYW1lLnZpZXcoKSB8fCBmcmFtZS52aWV3
KCktPm5lZWRzTGF5b3V0KCkgfHwgIXJlc3VsdC5pc0NvbnRlbnRFZGl0YWJsZSkgewotICAgICAg
ICByZXN1bHQuaXNNaXNzaW5nUG9zdExheW91dERhdGEgPSB0cnVlOworICAgIGdldFBsYXRmb3Jt
RWRpdG9yU3RhdGVDb21tb24oZnJhbWUsIHJlc3VsdCk7CisKKyAgICBpZiAocmVzdWx0LmlzTWlz
c2luZ1Bvc3RMYXlvdXREYXRhKQogICAgICAgICByZXR1cm47Ci0gICAgfQogCiAgICAgYXV0byYg
c2VsZWN0aW9uID0gZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7CiAgICAgUmVmUHRyPFJh
bmdlPiBzZWxlY3RlZFJhbmdlID0gc2VsZWN0aW9uLnRvTm9ybWFsaXplZFJhbmdlKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93aW4vV2ViUGFnZVdpbi5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93aW4vV2ViUGFnZVdpbi5jcHAK
aW5kZXggNjI0ZjRkMTEyNjZhMjdkYTM3ZDdkOWZmMDIxNmNmMjY1ZWEyZGM0Mi4uOWJmYzg2OWRl
MTQwMWQyZDU2YmEyOWQ0OGM2ZjQxN2E1N2VmNDg2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL1dlYlBhZ2VXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9XZWJQYWdlV2luLmNwcApAQCAtNjMsNyArNjMsNyBA
QCB2b2lkIFdlYlBhZ2U6OnBsYXRmb3JtRGV0YWNoKCkKIHsKIH0KIAotdm9pZCBXZWJQYWdlOjpw
bGF0Zm9ybUVkaXRvclN0YXRlKEZyYW1lJiBmcmFtZSwgRWRpdG9yU3RhdGUmIHJlc3VsdCwgSW5j
bHVkZVBvc3RMYXlvdXREYXRhSGludCBzaG91bGRJbmNsdWRlUG9zdExheW91dERhdGEpIGNvbnN0
Cit2b2lkIFdlYlBhZ2U6OmdldFBsYXRmb3JtRWRpdG9yU3RhdGUoRnJhbWUmLCBFZGl0b3JTdGF0
ZSYpIGNvbnN0CiB7CiB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1ZmM0NDFlMDkyNzdlN2M4NGNlNDExZWQzMmJlOGU2
YTY2ZjNkYmNmLi45ZWI2NmIzYzBhNzZkMjllYmRjNWM5ZmNiZjlmM2RmMDQ0ZDgwNmY2IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTkgQEAKKzIwMjAtMDMtMjQgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBw
bGUuY29tPgorCisgICAgICAgIFtpT1NdIEFTU0VSVElPTiBGQUlMVVJFOiAhaXNNaXNzaW5nUG9z
dExheW91dERhdGEgaW4gV2ViS2l0OjpFZGl0b3JTdGF0ZTo6cG9zdExheW91dERhdGEoKQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk5OTYwCisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS81MzMyMzk2Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1v
biBGcmFzZXIuCisKKyAgICAgICAgQWRkIGEgdGVzdCB0byBlbnN1cmUgd2UgZG8gbm90IGFzc2Vy
dCB3aGVuIHVzaW5nIHRoZSBzb2Z0d2FyZSBrZXlib2FyZCB0byB0eXBlIGEgY2hhcmFjdGVyCisg
ICAgICAgIGludG8gYSA8dGV4dGFyZWE+IGFuZCB0aGVuIGRlbGV0ZSBpdC4KKworICAgICAgICAq
IFRlc3RFeHBlY3RhdGlvbnM6IFNraXAgdGVzdHMgaW4gZWRpdGluZy9kZWxldGluZy9pb3Mgb24g
YWxsIHBsYXRmb3Jtcy4KKyAgICAgICAgKiBlZGl0aW5nL2RlbGV0aW5nL2lvcy9iYWNrc3BhY2Ut
bGFzdC1jaGFyYWN0ZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL2Rl
bGV0aW5nL2lvcy9iYWNrc3BhY2UtbGFzdC1jaGFyYWN0ZXIuaHRtbDogQWRkZWQuCisgICAgICAg
ICogcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnM6IFVuc2tpcCB0ZXN0cyBpbiBlZGl0aW5n
L2RlbGV0aW5nL2lvcyBvbiBpT1MuCisKIDIwMjAtMDMtMjQgIEphY29iIFVwaG9mZiAgPGphY29i
X3VwaG9mZkBhcHBsZS5jb20+CiAKICAgICAgICAgWyBpT1MgXSBSRUdSRVNTSU9OOiBmYXN0L2Rv
bS93aW5kb3ctb3Blbi1lcGhlbWVyYWwuaHRtbCBpcyBmbGFreSB0aW1pbmcgb3V0CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVj
dGF0aW9ucwppbmRleCBlZWU0NThlNDk1MzA3YjQyYTBjZWRhZmY2Mzc3ODk0ZTg3ZjA1YzAxLi4x
NWVmMzQ0NDI0NDJlOWI0Mjc4OWVhOTY2ZDZiNTliMTk5ODg3NzMxIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlv
bnMKQEAgLTIxLDYgKzIxLDcgQEAgZWRpdGluZy9pbnB1dC9pb3MgWyBTa2lwIF0KIGVkaXRpbmcv
ZmluZCBbIFNraXAgXQogZWRpdGluZy9wYXN0ZWJvYXJkL2d0ayBbIFNraXAgXQogZWRpdGluZy9z
ZWxlY3Rpb24vaW9zIFsgU2tpcCBdCitlZGl0aW5nL2RlbGV0aW5nL2lvcyBbIFNraXAgXQogZWRp
dGluZy91bmRvLW1hbmFnZXIgWyBTa2lwIF0KIHRpbGVkLWRyYXdpbmcgWyBTa2lwIF0KIGZhc3Qv
Y3NzL2lvcyBbIFNraXAgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9kZWxldGlu
Zy9pb3MvYmFja3NwYWNlLWxhc3QtY2hhcmFjdGVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2VkaXRpbmcvZGVsZXRpbmcvaW9zL2JhY2tzcGFjZS1sYXN0LWNoYXJhY3Rlci1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNTA1NjRkOThkYWYyODA5N2MwYjQwYzVmM2I1M2M4ZGE2NDEwYjBiMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvZGVsZXRpbmcvaW9zL2JhY2tz
cGFjZS1sYXN0LWNoYXJhY3Rlci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMSBAQAorVGhpcyB0
ZXN0cyB1c2luZyB0aGUgc29mdHdhcmUga2V5Ym9hcmQgYW5kIHByZXNzaW5nICd3JyB0aGVuIGJh
Y2tzcGFjZSBkZWxldGVzIHRoZSAndycgYW5kIGRvZXMgbm90IGNhdXNlIGFuIGFzc2VydGlvbiBm
YWlsdXJlIGluIGEgZGVidWcgYnVpbGQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwor
CitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpbnB1dCIpLnZhbHVlIGlzICJ3IgorUEFT
UyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW5wdXQiKS52YWx1ZSBpcyAiIgorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2VkaXRpbmcvZGVsZXRpbmcvaW9zL2JhY2tzcGFjZS1sYXN0LWNoYXJhY3Rlci5o
dG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9kZWxldGluZy9pb3MvYmFja3NwYWNlLWxhc3QtY2hh
cmFjdGVyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWNmNTFmMzQ5M2Y0YzQzNzQ1NTdkNGY5OGI4ZTRhNDVl
N2VhMTk2OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvZGVsZXRpbmcv
aW9zL2JhY2tzcGFjZS1sYXN0LWNoYXJhY3Rlci5odG1sCkBAIC0wLDAgKzEsNDYgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2Vz
L3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9InRlc3Qt
Y29udGFpbmVyIj4KKyAgICA8dGV4dGFyZWEgaWQ9ImlucHV0Ij48L3RleHRhcmVhPgorICAgIDx0
ZXh0YXJlYSBpZD0ib3V0cHV0IiByZWFkb25seT48L3RleHRhcmVhPgorPC9kaXY+Cis8c2NyaXB0
Pgord2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCitsZXQgaW5wdXQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiaW5wdXQiKTsKKworZnVuY3Rpb24gYXBwZW5kQU5ld2xpbmUoKQorewor
ICAgIGxldCBvdXRwdXRFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm91dHB1dCIp
OworICAgIG91dHB1dEVsZW1lbnQudmFsdWUgPSBvdXRwdXRFbGVtZW50LnZhbHVlICsgIlxuIjsK
K30KKworYXN5bmMgZnVuY3Rpb24gcnVuVGVzdCgpCit7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQorICAgICAgICBhd2FpdCBVSUhlbHBlci5zZXRIYXJkd2FyZUtleWJvYXJkQXR0YWNoZWQo
ZmFsc2UpOworCisgICAgYXdhaXQgVUlIZWxwZXIuY2FsbEZ1bmN0aW9uQW5kV2FpdEZvckV2ZW50
KCgpID0+IHdpbmRvdy50ZXN0UnVubmVyICYmIFVJSGVscGVyLmFjdGl2YXRlRWxlbWVudChpbnB1
dCksIGlucHV0LCAiZm9jdXMiKTsKKworICAgIGF3YWl0IFVJSGVscGVyLmNhbGxGdW5jdGlvbkFu
ZFdhaXRGb3JFdmVudCgoKSA9PiB3aW5kb3cudGVzdFJ1bm5lciAmJiBVSUhlbHBlci5rZXlEb3du
KCJ3IiksIGlucHV0LCAiaW5wdXQiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2RvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJpbnB1dCIpLnZhbHVlJywgInciKTsKKworICAgIGF3YWl0IFVJ
SGVscGVyLmNhbGxGdW5jdGlvbkFuZFdhaXRGb3JFdmVudCgoKSA9PiB3aW5kb3cudGVzdFJ1bm5l
ciAmJiBVSUhlbHBlci5rZXlEb3duKCJcYiIpLCBpbnB1dCwgImlucHV0Iik7CisgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCdkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW5wdXQiKS52YWx1ZScs
ICIiKTsKKworICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInRlc3QtY29udGFpbmVyIikpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCitkZXNj
cmlwdGlvbigiVGhpcyB0ZXN0cyB1c2luZyB0aGUgc29mdHdhcmUga2V5Ym9hcmQgYW5kIHByZXNz
aW5nICd3JyB0aGVuIDxrYmQ+YmFja3NwYWNlPC9rYmQ+IGRlbGV0ZXMgdGhlICd3JyBhbmQgZG9l
cyBub3QgY2F1c2UgYW4gYXNzZXJ0aW9uIGZhaWx1cmUgaW4gYSBkZWJ1ZyBidWlsZC4iKQoraW5w
dXQuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsIGFwcGVuZEFOZXdsaW5lKTsKKworcnVuVGVz
dCgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lv
cy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGI0NGIyYmYxNWI5YjY3MTMwNGQ5YTE4YzEyZGFjYzJh
OGFiNjY5ZmUuLmU5MDFkM2UyZTgwZjc2ZWI4M2IzNGYyNThiNzU2MWM4MDVjMjhiN2EgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zCkBAIC04LDYgKzgsNyBAQAog
CiBhY2Nlc3NpYmlsaXR5L2lvcy1zaW11bGF0b3IgWyBQYXNzIF0KIGRpc3BsYXlsaXN0cyBbIFBh
c3MgXQorZWRpdGluZy9kZWxldGluZy9pb3MgWyBQYXNzIF0KIGh0dHAvdGVzdHMvcXVpY2tsb29r
IFsgUGFzcyBdCiBtZWRpYS9pb3MgWyBQYXNzIF0KIHF1aWNrbG9vayBbIFBhc3MgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394472</attachid>
            <date>2020-03-24 23:14:36 -0700</date>
            <delta_ts>2020-03-25 09:49:04 -0700</delta_ts>
            <desc>To Land</desc>
            <filename>bug-199960-20200324231435.patch</filename>
            <type>text/plain</type>
            <size>29286</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4OTcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDIyNTY1MzZiNDI2YmYwMzFm
MjFkZDViNjQ3NjhhNjBiZTg4NmVmZGMuLjIxNzY1NTMwNzA0NTRjOWIwMGIxNDcxY2Q4NTE1OWM5
NDY0ZDI0ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjkgQEAKKzIwMjAtMDMtMjQgIERhbmllbCBC
YXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIEFTU0VSVElPTiBGQUlM
VVJFOiAhaXNNaXNzaW5nUG9zdExheW91dERhdGEgaW4gV2ViS2l0OjpFZGl0b3JTdGF0ZTo6cG9z
dExheW91dERhdGEoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTk5OTYwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81MzMyMzk2Nj4KKworICAgICAg
ICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAgUmVmYWN0b3IgdGhlIGNvbXB1
dGF0aW9uIG9mIGVkaXRvciBzdGF0ZSBzbyB0aGF0IHdlIGNhbiByZXF1ZXN0IHRoYXQgYSBsYXlv
dXQgYmUgcGVyZm9ybWVkCisgICAgICAgIGVhY2ggdGltZSB3ZSBjb21wdXRlIHRoZSBlZGl0b3Ig
c3RhdGUgYXMgcGFydCBvZiBhc2tpbmcgdGhlIFVJIHByb2Nlc3MgdG8gaW50ZXJwcmV0IGEga2V5
CisgICAgICAgIGV2ZW50LiBUaGUgZnVsbCAocmVhZDogYWZ0ZXIgbGF5b3V0KSBlZGl0b3Igc3Rh
dGUgaXMgbmVlZGVkIGZvciBVSUtpdCB0byBwZXJmb3JtIGEgZGVsZXRpb24KKyAgICAgICAgYmVj
YXVzZSBVSUtpdCB3YW50cyB0byBrbm93IGhvdyBtYW55IGNoYXJhY3RlcnMgYXJlIGJlZm9yZSB0
aGUgc2VsZWN0aW9uLiBPdGhlcndpc2UsIHdlIGhpdAorICAgICAgICBhbiBhc3NlcnQgZHVlIHRv
IHRoZSBmYWN0IHRoZSBsYXN0IGVkaXRvciBzdGF0ZSBzZW50ICh3aGVuIHRoZSBXZWIgcHJvY2Vz
cyBhc2tlZCB0aGUgVUkgcHJvY2VzcworICAgICAgICB0byBpbnRlcnByZXQgdGhlIGtleSkgaXMg
bWlzc2luZyBsYXlvdXQgZGF0YS4KKworICAgICAgICBUaGUgcmVmYWN0b3JpbmcgYWxzbyBtb3Zl
cyB0aGUgQ29jb2EtY29tbW9uIGNvZGUgb3V0IG9mIHRoZSBwbGF0Zm9ybS1pbmRlcGVuZGVudCBX
ZWJQYWdlLmNwcAorICAgICAgICBmaWxlIGludG8gV2ViUGFnZUNvY29hLm1tLgorCisgICAgICAg
IE9uZSBzaWRlIGVmZmVjdCBvZiB0aGUgcmVmYWN0b3JpbmcgaXMgdGhhdCB3ZSBubyBsb25nZXIg
YWxsb3cgdGhlIHBsYXRmb3JtRWRpdG9yU3RhdGUoKSBmdW5jdGlvbgorICAgICAgICB0byBvdmVy
cmlkZSB0aGUgaXNNaXNzaW5nUG9zdExheW91dERhdGEgYml0LiBDdXJyZW50bHkgaXQgY2FuIGV2
ZW4gdGhvdWdoIHRoZSBjYWxsaW5nIGNvZGUsIHRoZQorICAgICAgICBwbGF0Zm9ybSBpbmRlcGVu
ZGVudCBjb2RlIChQSUUpIGluIFdlYlBhZ2UsIG1heSBoYXZlIGF0dGFjaGVkIGxheW91dCBkYXRh
LiBOb3cgdGhlIFBJRSBjb2RlIHNldHMKKyAgICAgICAgdGhpcyBiaXQgaWYgaXQgYXR0YWNoZWQg
bGF5b3V0IGRhdGEgYW5kIHRoZSBwbGF0Zm9ybUVkaXRvclN0YXRlKCkgZnVuY3Rpb24gb25seSBh
dHRhY2hlcyBtb3JlCisgICAgICAgIGxheW91dCBkYXRhIGlmIHRoYXQgYml0IGlzIHNldC4gcGxh
dGZvcm1FZGl0b3JTdGF0ZSgpIG5ldmVyIHVuc2V0cyB0aGF0IGJpdCAoaS5lLiBzZXRzIGlzTWlz
c2luZ1Bvc3RMYXlvdXREYXRhCisgICAgICAgIHRvIHRydWUpLgorCisgICAgICAgIFRoZSBwYXRj
aCBhbHNvIHJlbW92ZXMgbV9pc0VkaXRvclN0YXRlTWlzc2luZ1Bvc3RMYXlvdXREYXRhIGluIFdl
YlBhZ2UuaC4gVGhpcyBpbnN0YW5jZSB2YXJpYWJsZQorICAgICAgICBoYXMgYmVlbiB1bnVzZWQg
c2luY2UgPGh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yMjEwNjQvd2Via2l0Pi4g
QWxzbyB3ZSBoYXZlbid0IGJlZW4gdXNpbmcKKyAgICAgICAgSW5jbHVkZVBvc3RMYXlvdXREYXRh
SGludDo6Tm8gc2luY2UgdGhlIGxhc3QgcmVmZXJlbmNlIHRvIGl0IHdhcyByZW1vdmVkIGluIDxo
dHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjQ0NDk0L3dlYmtpdD4uCisKKyAgICAg
ICAgSSBhbHNvIHJlbmFtZWQgcGxhdGZvcm1FZGl0b3JTdGF0ZSgpIHRvIGdldFBsYXRmb3JtRWRp
dG9yU3RhdGUoKSBzaW5jZSBpdCBoYXMgYW4gb3V0IGFyZ3VtZW50LgorCisgICAgICAgIFRlc3Q6
IGVkaXRpbmcvZGVsZXRpbmcvaW9zL2JhY2tzcGFjZS1sYXN0LWNoYXJhY3Rlci5odG1sCisKKyAg
ICAgICAgKiBTaGFyZWQvRWRpdG9yU3RhdGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRQ
bGF0Zm9ybUVkaXRvclN0YXRlQ29tbW9uIGNvbnN0KTogQWRkZWQuIE1vdmVkIENvY29hLWNvbW1v
biBjb2RlIGZyb20gV2ViUGFnZS5jcHAgdG8gaGVyZS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmVkaXRvclN0YXRl
IGNvbnN0KTogTW92ZSBDb2NvYS1jb21tb24gY29kZSB0byBXZWJQYWdlQ29jb2EubW0uIENoYW5n
ZSBlbnVtIHRvCisgICAgICAgIHRyYWNrIHdoZXRoZXIgYSBsYXlvdXQgc2hvdWxkIGJlIHBlcmZv
cm1lZC4gS2VlcCB0aGUgY3VycmVudCBiZWhhdmlvciBvZiBvbmx5IGluY2x1ZGluZyBwb3N0IGxh
eW91dAorICAgICAgICBkYXRhIGlmIHRoZSBmcmFtZSB2aWV3IGRvZXMgbm90IG5lZWQgYSBsYXlv
dXQuIFRoaXMgYmVoYXZpb3IgaXMgZW5jb2RlZCBpbiB0aGUgZW51bWVyYXRvciBTaG91bGRQZXJm
b3JtTGF5b3V0OjpEZWZhdWx0LgorICAgICAgICB3aGljaCBpcyB0aGUgZGVmYXVsdCBhcmd1bWVu
dCB2YWx1ZSBmb3IgdGhlIGFyZ3VtZW50IHNob3VsZFBlcmZvcm1MYXlvdXQuCisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
cGxhdGZvcm1OZWVkc0xheW91dEZvckVkaXRvclN0YXRlIGNvbnN0KTogQWRkZWQuIE5vbi1Db2Nv
YSBwb3J0IGltcGxlbWVudGF0aW9uCisgICAgICAgIHRoYXQgcmV0dXJucyBmYWxzZS4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvZ2xpYi9XZWJQYWdlR0xpYi5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OmdldFBsYXRmb3JtRWRpdG9yU3RhdGUgY29uc3QpOiBFYXJseSByZXR1
cm4gaWYgaXNNaXNzaW5nUG9zdExheW91dERhdGEgaXMgdHJ1ZS4KKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6cGxhdGZvcm1FZGl0b3JTdGF0ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjpwbGF0Zm9ybU5lZWRzTGF5b3V0Rm9yRWRpdG9yU3RhdGUgY29uc3QpOiBBZGRlZC4g
S2VlcCB0aGUgY3VycmVudCBiZWhhdmlvciBvZgorICAgICAgICBwZXJmb3JtaW5nIGEgbGF5b3V0
IGlmIHdlIGhhdmUgYSBjb21wb3NpdGlvbiBvciBhIGhhcmR3YXJlIGtleWJvYXJkIGlzIGF0dGFj
aGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRQbGF0Zm9ybUVkaXRvclN0YXRlIGNv
bnN0KTogQ2FsbCBwbGF0Zm9ybUVkaXRvclN0YXRlQ29tbW9uKCkuIEJhaWwgb3V0IGVhcmx5Cisg
ICAgICAgIGlmIGlzTWlzc2luZ1Bvc3RMYXlvdXREYXRhIGlzIHRydWUuCisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KTogVGhlIGltcG9ydGFudCBw
YXJ0IG9mIHRoaXMgcGF0Y2guIFJlcXVlc3QgYSBsYXlvdXQKKyAgICAgICAgd2hlbiBjb21wdXRp
bmcgdGhlIGVkaXRvciBzdGF0ZSB0aGF0IHdlIHdpbGwgc2VuZCB0byB0aGUgVUkgcHJvY2Vzcy4K
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGxhdGZvcm1FZGl0b3JTdGF0ZSBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRQbGF0Zm9ybUVkaXRvclN0YXRlIGNvbnN0KTog
Q2FsbCBwbGF0Zm9ybUVkaXRvclN0YXRlQ29tbW9uKCkuIEJhaWwgb3V0IGVhcmx5CisgICAgICAg
IGlmIGlzTWlzc2luZ1Bvc3RMYXlvdXREYXRhIGlzIHRydWUuCisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OnBsYXRmb3JtRWRpdG9yU3RhdGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9wbGF5c3RhdGlvbi9XZWJQYWdlUGxheVN0YXRpb24uY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRQbGF0Zm9ybUVkaXRvclN0YXRlIGNvbnN0KTogVXBk
YXRlIGFzIG5lZWRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGxhdGZvcm1FZGl0b3JT
dGF0ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9X
ZWJQYWdlV2luLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0UGxhdGZvcm1FZGl0
b3JTdGF0ZSBjb25zdCk6IFVwZGF0ZSBhcyBuZWVkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OnBsYXRmb3JtRWRpdG9yU3RhdGUgY29uc3QpOiBEZWxldGVkLgorCiAyMDIwLTAzLTI0ICBK
b2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJlZmFjdG9yIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVnaXN0cmFibGVEb21haW5zVG9EZWxldGVPclJl
c3RyaWN0V2Vic2l0ZURhdGFGb3IoKSB0byByZXR1cm4gYSBzdHJ1Y3QgaW5zdGVhZCBvZiBhIFZl
Y3RvciBvZiBwYWlycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvRWRpdG9yU3Rh
dGUuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRvclN0YXRlLmgKaW5kZXggNmZhYTdjZTgx
NTFmMTljNzkxNDMxZTZiZjgxOTdhZmFlOGRlYzg5MC4uYjM5NjA3N2U1NzQwZGUxODc0ODA2MzJm
NmEzZmRjYTkwZDcxNjM1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvRWRpdG9y
U3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0b3JTdGF0ZS5oCkBAIC03NCw3
ICs3NCw3IEBAIHN0cnVjdCBFZGl0b3JTdGF0ZSB7CiAgICAgYm9vbCBpc0luUGFzc3dvcmRGaWVs
ZCB7IGZhbHNlIH07CiAgICAgYm9vbCBpc0luUGx1Z2luIHsgZmFsc2UgfTsKICAgICBib29sIGhh
c0NvbXBvc2l0aW9uIHsgZmFsc2UgfTsKLSAgICBib29sIGlzTWlzc2luZ1Bvc3RMYXlvdXREYXRh
IHsgZmFsc2UgfTsKKyAgICBib29sIGlzTWlzc2luZ1Bvc3RMYXlvdXREYXRhIHsgdHJ1ZSB9Owog
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBXZWJDb3JlOjpJbnRSZWN0IGZpcnN0TWFy
a2VkUmVjdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
Y29hL1dlYlBhZ2VDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
Y29hL1dlYlBhZ2VDb2NvYS5tbQppbmRleCA1NjYxYTA0YzVkMTAzN2FhMmQ0YTcyMGI0YWM0MTA2
ZDg0OGI0YmU5Li41OGJiOTU2MGRhN2UxZmYwZjc4NjUyMjcxMzg5NTBkZWM0YTdiNDIwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29j
b2EubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFn
ZUNvY29hLm1tCkBAIC0zNiwxMiArMzYsMTUgQEAKICNpbXBvcnQgIldlYlJlbW90ZU9iamVjdFJl
Z2lzdHJ5LmgiCiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL0xhdW5jaFNlcnZpY2VzU1BJLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL0RpY3Rpb25hcnlMb29rdXAuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRWRp
dGluZy5oPgogI2ltcG9ydCA8V2ViQ29yZS9FZGl0b3IuaD4KICNpbXBvcnQgPFdlYkNvcmUvRXZl
bnRIYW5kbGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0V2ZW50TmFtZXMuaD4KICNpbXBvcnQgPFdl
YkNvcmUvRm9jdXNDb250cm9sbGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lVmlldy5oPgog
I2ltcG9ydCA8V2ViQ29yZS9IVE1MQ29udmVydGVyLmg+CisjaW1wb3J0IDxXZWJDb3JlL0hUTUxP
TGlzdEVsZW1lbnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvSFRNTFVMaXN0RWxlbWVudC5oPgogI2lt
cG9ydCA8V2ViQ29yZS9IaXRUZXN0UmVzdWx0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL05vZGVSZW5k
ZXJTdHlsZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYXltZW50Q29vcmRpbmF0b3IuaD4KQEAgLTMx
MSw2ICszMTQsNyBAQCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBXZWJQYWdlOjpwZGZTbmFwc2hvdEF0
U2l6ZShJbnRSZWN0IHJlY3QsIEludFNpemUgYml0bWFwU2l6ZQogICAgIHJldHVybiBkYXRhOwog
fQogCisKIHZvaWQgV2ViUGFnZTo6Z2V0UHJvY2Vzc0Rpc3BsYXlOYW1lKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogI2lmIFBMQVRGT1JN
KE1BQykKQEAgLTMyMCw2ICszMjQsNzEgQEAgdm9pZCBXZWJQYWdlOjpnZXRQcm9jZXNzRGlzcGxh
eU5hbWUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYgY29tcGxldGkKICNlbmRp
ZgogfQogCit2b2lkIFdlYlBhZ2U6OmdldFBsYXRmb3JtRWRpdG9yU3RhdGVDb21tb24oY29uc3Qg
RnJhbWUmIGZyYW1lLCBFZGl0b3JTdGF0ZSYgcmVzdWx0KSBjb25zdAoreworICAgIGlmIChyZXN1
bHQuaXNNaXNzaW5nUG9zdExheW91dERhdGEpCisgICAgICAgIHJldHVybjsKKworICAgIGNvbnN0
IGF1dG8mIHNlbGVjdGlvbiA9IGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpOworCisgICAg
aWYgKCFyZXN1bHQuaXNDb250ZW50RWRpdGFibGUgfHwgc2VsZWN0aW9uLmlzTm9uZSgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBhdXRvJiBwb3N0TGF5b3V0RGF0YSA9IHJlc3VsdC5wb3N0TGF5
b3V0RGF0YSgpOworICAgIGlmIChhdXRvIGVkaXRpbmdTdHlsZSA9IEVkaXRpbmdTdHlsZTo6c3R5
bGVBdFNlbGVjdGlvblN0YXJ0KHNlbGVjdGlvbikpIHsKKyAgICAgICAgaWYgKGVkaXRpbmdTdHls
ZS0+aGFzU3R5bGUoQ1NTUHJvcGVydHlGb250V2VpZ2h0LCAiYm9sZCJfcykpCisgICAgICAgICAg
ICBwb3N0TGF5b3V0RGF0YS50eXBpbmdBdHRyaWJ1dGVzIHw9IEF0dHJpYnV0ZUJvbGQ7CisKKyAg
ICAgICAgaWYgKGVkaXRpbmdTdHlsZS0+aGFzU3R5bGUoQ1NTUHJvcGVydHlGb250U3R5bGUsICJp
dGFsaWMiX3MpIHx8IGVkaXRpbmdTdHlsZS0+aGFzU3R5bGUoQ1NTUHJvcGVydHlGb250U3R5bGUs
ICJvYmxpcXVlIl9zKSkKKyAgICAgICAgICAgIHBvc3RMYXlvdXREYXRhLnR5cGluZ0F0dHJpYnV0
ZXMgfD0gQXR0cmlidXRlSXRhbGljczsKKworICAgICAgICBpZiAoZWRpdGluZ1N0eWxlLT5oYXNT
dHlsZShDU1NQcm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0LCAidW5kZXJsaW5l
Il9zKSkKKyAgICAgICAgICAgIHBvc3RMYXlvdXREYXRhLnR5cGluZ0F0dHJpYnV0ZXMgfD0gQXR0
cmlidXRlVW5kZXJsaW5lOworCisgICAgICAgIGlmIChhdXRvKiBzdHlsZVByb3BlcnRpZXMgPSBl
ZGl0aW5nU3R5bGUtPnN0eWxlKCkpIHsKKyAgICAgICAgICAgIGJvb2wgaXNMZWZ0VG9SaWdodCA9
IHN0eWxlUHJvcGVydGllcy0+cHJvcGVydHlBc1ZhbHVlSUQoQ1NTUHJvcGVydHlEaXJlY3Rpb24p
ID09IENTU1ZhbHVlTHRyOworICAgICAgICAgICAgc3dpdGNoIChzdHlsZVByb3BlcnRpZXMtPnBy
b3BlcnR5QXNWYWx1ZUlEKENTU1Byb3BlcnR5VGV4dEFsaWduKSkgeworICAgICAgICAgICAgY2Fz
ZSBDU1NWYWx1ZVJpZ2h0OgorICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVdlYmtpdFJpZ2h0Ogor
ICAgICAgICAgICAgICAgIHBvc3RMYXlvdXREYXRhLnRleHRBbGlnbm1lbnQgPSBSaWdodEFsaWdu
bWVudDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVM
ZWZ0OgorICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVdlYmtpdExlZnQ6CisgICAgICAgICAgICAg
ICAgcG9zdExheW91dERhdGEudGV4dEFsaWdubWVudCA9IExlZnRBbGlnbm1lbnQ7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlQ2VudGVyOgorICAgICAg
ICAgICAgY2FzZSBDU1NWYWx1ZVdlYmtpdENlbnRlcjoKKyAgICAgICAgICAgICAgICBwb3N0TGF5
b3V0RGF0YS50ZXh0QWxpZ25tZW50ID0gQ2VudGVyQWxpZ25tZW50OworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUp1c3RpZnk6CisgICAgICAgICAgICAg
ICAgcG9zdExheW91dERhdGEudGV4dEFsaWdubWVudCA9IEp1c3RpZmllZEFsaWdubWVudDsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVTdGFydDoKKyAg
ICAgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS50ZXh0QWxpZ25tZW50ID0gaXNMZWZ0VG9SaWdo
dCA/IExlZnRBbGlnbm1lbnQgOiBSaWdodEFsaWdubWVudDsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVFbmQ6CisgICAgICAgICAgICAgICAgcG9zdExh
eW91dERhdGEudGV4dEFsaWdubWVudCA9IGlzTGVmdFRvUmlnaHQgPyBSaWdodEFsaWdubWVudCA6
IExlZnRBbGlnbm1lbnQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
aWYgKGF1dG8gdGV4dENvbG9yID0gc3R5bGVQcm9wZXJ0aWVzLT5wcm9wZXJ0eUFzQ29sb3IoQ1NT
UHJvcGVydHlDb2xvcikpCisgICAgICAgICAgICAgICAgcG9zdExheW91dERhdGEudGV4dENvbG9y
ID0gKnRleHRDb2xvcjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChhdXRvKiBlbmNsb3Np
bmdMaXN0RWxlbWVudCA9IGVuY2xvc2luZ0xpc3Qoc2VsZWN0aW9uLnN0YXJ0KCkuY29udGFpbmVy
Tm9kZSgpKSkgeworICAgICAgICBpZiAoaXM8SFRNTFVMaXN0RWxlbWVudD4oKmVuY2xvc2luZ0xp
c3RFbGVtZW50KSkKKyAgICAgICAgICAgIHBvc3RMYXlvdXREYXRhLmVuY2xvc2luZ0xpc3RUeXBl
ID0gVW5vcmRlcmVkTGlzdDsKKyAgICAgICAgZWxzZSBpZiAoaXM8SFRNTE9MaXN0RWxlbWVudD4o
KmVuY2xvc2luZ0xpc3RFbGVtZW50KSkKKyAgICAgICAgICAgIHBvc3RMYXlvdXREYXRhLmVuY2xv
c2luZ0xpc3RUeXBlID0gT3JkZXJlZExpc3Q7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKworICAgIHBvc3RMYXlvdXREYXRhLmJhc2VXcml0
aW5nRGlyZWN0aW9uID0gZnJhbWUuZWRpdG9yKCkuYmFzZVdyaXRpbmdEaXJlY3Rpb25Gb3JTZWxl
Y3Rpb25TdGFydCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIFBM
QVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAppbmRleCAxY2QwYjMwYzU4OGY0YjQ0NTU1MjRjMTI0NWRmNDQ4ODM5YTk3YjI2Li5lOWJk
MTk0M2NiMGZhMjg0OGY4NGNkZjAwYzc2NjA0ODQwNThkZWJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMTc4LDEyICsxNzgsMTAgQEAKICNp
bmNsdWRlIDxXZWJDb3JlL0hUTUxJbnB1dEVsZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hU
TUxNZW51RWxlbWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSFRNTE1lbnVJdGVtRWxlbWVudC5o
PgotI2luY2x1ZGUgPFdlYkNvcmUvSFRNTE9MaXN0RWxlbWVudC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvSFRNTFBsdWdJbkVsZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hUTUxQbHVnSW5JbWFn
ZUVsZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hUTUxTZWxlY3RFbGVtZW50Lmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oPgotI2luY2x1ZGUgPFdl
YkNvcmUvSFRNTFVMaXN0RWxlbWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSGlzdG9yeUNvbnRy
b2xsZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hpc3RvcnlJdGVtLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9IaXRUZXN0UmVzdWx0Lmg+CkBAIC0xMDM2LDkgKzEwMzQsMTAgQEAgV2ViQ29yZTo6V2Vi
R0xMb2FkUG9saWN5IFdlYlBhZ2U6OnJlc29sdmVXZWJHTFBvbGljeUZvclVSTChXZWJGcmFtZSos
IGNvbnN0IFVSTCYKIH0KICNlbmRpZgogCi1FZGl0b3JTdGF0ZSBXZWJQYWdlOjplZGl0b3JTdGF0
ZShJbmNsdWRlUG9zdExheW91dERhdGFIaW50IHNob3VsZEluY2x1ZGVQb3N0TGF5b3V0RGF0YSkg
Y29uc3QKK0VkaXRvclN0YXRlIFdlYlBhZ2U6OmVkaXRvclN0YXRlKFNob3VsZFBlcmZvcm1MYXlv
dXQgc2hvdWxkUGVyZm9ybUxheW91dCkgY29uc3QKIHsKLSAgICBGcmFtZSYgZnJhbWUgPSBtX3Bh
Z2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOworICAgIC8vIFJlZiB0
aGUgZnJhbWUgYmVjYXVzZSB0aGlzIGZ1bmN0aW9uIG1heSBwZXJmb3JtIGxheW91dCwgd2hpY2gg
bWF5IGNhdXNlIGZyYW1lIGRlc3RydWN0aW9uLgorICAgIFJlZjxGcmFtZT4gZnJhbWUgPSBtX3Bh
Z2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwogCiAgICAgRWRpdG9y
U3RhdGUgcmVzdWx0OwogCkBAIC0xMDUxLDggKzEwNTAsOCBAQCBFZGl0b3JTdGF0ZSBXZWJQYWdl
OjplZGl0b3JTdGF0ZShJbmNsdWRlUG9zdExheW91dERhdGFIaW50IHNob3VsZEluY2x1ZGVQb3N0
TGF5bwogICAgICAgICB9CiAgICAgfQogCi0gICAgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2Vs
ZWN0aW9uID0gZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7Ci0gICAgY29uc3QgRWRpdG9y
JiBlZGl0b3IgPSBmcmFtZS5lZGl0b3IoKTsKKyAgICBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBz
ZWxlY3Rpb24gPSBmcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7CisgICAgY29uc3QgRWRp
dG9yJiBlZGl0b3IgPSBmcmFtZS0+ZWRpdG9yKCk7CiAKICAgICByZXN1bHQuc2VsZWN0aW9uSXNO
b25lID0gc2VsZWN0aW9uLmlzTm9uZSgpOwogICAgIHJlc3VsdC5zZWxlY3Rpb25Jc1JhbmdlID0g
c2VsZWN0aW9uLmlzUmFuZ2UoKTsKQEAgLTEwNjIsMTEgKzEwNjEsMTUgQEAgRWRpdG9yU3RhdGUg
V2ViUGFnZTo6ZWRpdG9yU3RhdGUoSW5jbHVkZVBvc3RMYXlvdXREYXRhSGludCBzaG91bGRJbmNs
dWRlUG9zdExheW8KICAgICByZXN1bHQuaGFzQ29tcG9zaXRpb24gPSBlZGl0b3IuaGFzQ29tcG9z
aXRpb24oKTsKICAgICByZXN1bHQuc2hvdWxkSWdub3JlU2VsZWN0aW9uQ2hhbmdlcyA9IGVkaXRv
ci5pZ25vcmVTZWxlY3Rpb25DaGFuZ2VzKCkgfHwgKGVkaXRvci5jbGllbnQoKSAmJiAhZWRpdG9y
LmNsaWVudCgpLT5zaG91bGRSZXZlYWxDdXJyZW50U2VsZWN0aW9uQWZ0ZXJJbnNlcnRpb24oKSk7
CiAKLSAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBmcmFtZS5kb2N1bWVudCgpKQotICAgICAgICBy
ZXN1bHQub3JpZ2luSWRlbnRpZmllckZvclBhc3RlYm9hcmQgPSBkb2N1bWVudC0+b3JpZ2luSWRl
bnRpZmllckZvclBhc3RlYm9hcmQoKTsKKyAgICBSZWY8RG9jdW1lbnQ+IGRvY3VtZW50ID0gKmZy
YW1lLT5kb2N1bWVudCgpOworICAgIHJlc3VsdC5vcmlnaW5JZGVudGlmaWVyRm9yUGFzdGVib2Fy
ZCA9IGRvY3VtZW50LT5vcmlnaW5JZGVudGlmaWVyRm9yUGFzdGVib2FyZCgpOworCisgICAgaWYg
KHNob3VsZFBlcmZvcm1MYXlvdXQgPT0gU2hvdWxkUGVyZm9ybUxheW91dDo6WWVzIHx8IHBsYXRm
b3JtTmVlZHNMYXlvdXRGb3JFZGl0b3JTdGF0ZShmcmFtZSkpCisgICAgICAgIGRvY3VtZW50LT51
cGRhdGVMYXlvdXQoKTsgLy8gTWF5IGNhdXNlIGRvY3VtZW50IGRlc3RydWN0aW9uCisKKyAgICBp
ZiAoYXV0byogZnJhbWVWaWV3ID0gZG9jdW1lbnQtPnZpZXcoKTsgZnJhbWVWaWV3ICYmICFmcmFt
ZVZpZXctPm5lZWRzTGF5b3V0KCkpIHsKKyAgICAgICAgcmVzdWx0LmlzTWlzc2luZ1Bvc3RMYXlv
dXREYXRhID0gZmFsc2U7CiAKLSAgICBib29sIGNhbkluY2x1ZGVQb3N0TGF5b3V0RGF0YSA9IGZy
YW1lLnZpZXcoKSAmJiAhZnJhbWUudmlldygpLT5uZWVkc0xheW91dCgpOwotICAgIGlmIChzaG91
bGRJbmNsdWRlUG9zdExheW91dERhdGEgPT0gSW5jbHVkZVBvc3RMYXlvdXREYXRhSGludDo6WWVz
ICYmIGNhbkluY2x1ZGVQb3N0TGF5b3V0RGF0YSkgewogICAgICAgICBhdXRvJiBwb3N0TGF5b3V0
RGF0YSA9IHJlc3VsdC5wb3N0TGF5b3V0RGF0YSgpOwogICAgICAgICBwb3N0TGF5b3V0RGF0YS5j
YW5DdXQgPSBlZGl0b3IuY2FuQ3V0KCk7CiAgICAgICAgIHBvc3RMYXlvdXREYXRhLmNhbkNvcHkg
PSBlZGl0b3IuY2FuQ29weSgpOwpAQCAtMTA3NCw2NiArMTA3Nyw5IEBAIEVkaXRvclN0YXRlIFdl
YlBhZ2U6OmVkaXRvclN0YXRlKEluY2x1ZGVQb3N0TGF5b3V0RGF0YUhpbnQgc2hvdWxkSW5jbHVk
ZVBvc3RMYXlvCiAKICAgICAgICAgaWYgKG1fbmVlZHNGb250QXR0cmlidXRlcykKICAgICAgICAg
ICAgIHBvc3RMYXlvdXREYXRhLmZvbnRBdHRyaWJ1dGVzID0gZWRpdG9yLmZvbnRBdHRyaWJ1dGVz
QXRTZWxlY3Rpb25TdGFydCgpOwotCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgICAgIGlmIChy
ZXN1bHQuaXNDb250ZW50RWRpdGFibGUgJiYgIXNlbGVjdGlvbi5pc05vbmUoKSkgewotICAgICAg
ICAgICAgaWYgKGF1dG8gZWRpdGluZ1N0eWxlID0gRWRpdGluZ1N0eWxlOjpzdHlsZUF0U2VsZWN0
aW9uU3RhcnQoc2VsZWN0aW9uKSkgewotICAgICAgICAgICAgICAgIGlmIChlZGl0aW5nU3R5bGUt
Pmhhc1N0eWxlKENTU1Byb3BlcnR5Rm9udFdlaWdodCwgImJvbGQiKSkKLSAgICAgICAgICAgICAg
ICAgICAgcG9zdExheW91dERhdGEudHlwaW5nQXR0cmlidXRlcyB8PSBBdHRyaWJ1dGVCb2xkOwot
Ci0gICAgICAgICAgICAgICAgaWYgKGVkaXRpbmdTdHlsZS0+aGFzU3R5bGUoQ1NTUHJvcGVydHlG
b250U3R5bGUsICJpdGFsaWMiKSB8fCBlZGl0aW5nU3R5bGUtPmhhc1N0eWxlKENTU1Byb3BlcnR5
Rm9udFN0eWxlLCAib2JsaXF1ZSIpKQotICAgICAgICAgICAgICAgICAgICBwb3N0TGF5b3V0RGF0
YS50eXBpbmdBdHRyaWJ1dGVzIHw9IEF0dHJpYnV0ZUl0YWxpY3M7Ci0KLSAgICAgICAgICAgICAg
ICBpZiAoZWRpdGluZ1N0eWxlLT5oYXNTdHlsZShDU1NQcm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0
aW9uc0luRWZmZWN0LCAidW5kZXJsaW5lIikpCi0gICAgICAgICAgICAgICAgICAgIHBvc3RMYXlv
dXREYXRhLnR5cGluZ0F0dHJpYnV0ZXMgfD0gQXR0cmlidXRlVW5kZXJsaW5lOwotCi0gICAgICAg
ICAgICAgICAgaWYgKGF1dG8qIHN0eWxlUHJvcGVydGllcyA9IGVkaXRpbmdTdHlsZS0+c3R5bGUo
KSkgewotICAgICAgICAgICAgICAgICAgICBib29sIGlzTGVmdFRvUmlnaHQgPSBzdHlsZVByb3Bl
cnRpZXMtPnByb3BlcnR5QXNWYWx1ZUlEKENTU1Byb3BlcnR5RGlyZWN0aW9uKSA9PSBDU1NWYWx1
ZUx0cjsKLSAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChzdHlsZVByb3BlcnRpZXMtPnByb3Bl
cnR5QXNWYWx1ZUlEKENTU1Byb3BlcnR5VGV4dEFsaWduKSkgewotICAgICAgICAgICAgICAgICAg
ICBjYXNlIENTU1ZhbHVlUmlnaHQ6Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVX
ZWJraXRSaWdodDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHBvc3RMYXlvdXREYXRhLnRleHRB
bGlnbm1lbnQgPSBSaWdodEFsaWdubWVudDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlTGVmdDoKLSAgICAgICAgICAgICAg
ICAgICAgY2FzZSBDU1NWYWx1ZVdlYmtpdExlZnQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBw
b3N0TGF5b3V0RGF0YS50ZXh0QWxpZ25tZW50ID0gTGVmdEFsaWdubWVudDsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlQ2Vu
dGVyOgotICAgICAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlV2Via2l0Q2VudGVyOgotICAg
ICAgICAgICAgICAgICAgICAgICAgcG9zdExheW91dERhdGEudGV4dEFsaWdubWVudCA9IENlbnRl
ckFsaWdubWVudDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgICAgICBjYXNlIENTU1ZhbHVlSnVzdGlmeToKLSAgICAgICAgICAgICAgICAgICAgICAgIHBv
c3RMYXlvdXREYXRhLnRleHRBbGlnbm1lbnQgPSBKdXN0aWZpZWRBbGlnbm1lbnQ7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1
ZVN0YXJ0OgotICAgICAgICAgICAgICAgICAgICAgICAgcG9zdExheW91dERhdGEudGV4dEFsaWdu
bWVudCA9IGlzTGVmdFRvUmlnaHQgPyBMZWZ0QWxpZ25tZW50IDogUmlnaHRBbGlnbm1lbnQ7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBD
U1NWYWx1ZUVuZDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHBvc3RMYXlvdXREYXRhLnRleHRB
bGlnbm1lbnQgPSBpc0xlZnRUb1JpZ2h0ID8gUmlnaHRBbGlnbm1lbnQgOiBMZWZ0QWxpZ25tZW50
OwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGRl
ZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgICAgICBpZiAoYXV0byB0ZXh0Q29sb3IgPSBzdHlsZVByb3Bl
cnRpZXMtPnByb3BlcnR5QXNDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSkKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHBvc3RMYXlvdXREYXRhLnRleHRDb2xvciA9ICp0ZXh0Q29sb3I7Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoYXV0byogZW5jbG9z
aW5nTGlzdEVsZW1lbnQgPSBlbmNsb3NpbmdMaXN0KHNlbGVjdGlvbi5zdGFydCgpLmNvbnRhaW5l
ck5vZGUoKSkpIHsKLSAgICAgICAgICAgICAgICBpZiAoaXM8SFRNTFVMaXN0RWxlbWVudD4oKmVu
Y2xvc2luZ0xpc3RFbGVtZW50KSkKLSAgICAgICAgICAgICAgICAgICAgcG9zdExheW91dERhdGEu
ZW5jbG9zaW5nTGlzdFR5cGUgPSBVbm9yZGVyZWRMaXN0OwotICAgICAgICAgICAgICAgIGVsc2Ug
aWYgKGlzPEhUTUxPTGlzdEVsZW1lbnQ+KCplbmNsb3NpbmdMaXN0RWxlbWVudCkpCi0gICAgICAg
ICAgICAgICAgICAgIHBvc3RMYXlvdXREYXRhLmVuY2xvc2luZ0xpc3RUeXBlID0gT3JkZXJlZExp
c3Q7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgcG9zdExheW91dERhdGEu
YmFzZVdyaXRpbmdEaXJlY3Rpb24gPSBlZGl0b3IuYmFzZVdyaXRpbmdEaXJlY3Rpb25Gb3JTZWxl
Y3Rpb25TdGFydCgpOwotICAgICAgICB9Ci0jZW5kaWYKICAgICB9CiAKLSAgICBwbGF0Zm9ybUVk
aXRvclN0YXRlKGZyYW1lLCByZXN1bHQsIHNob3VsZEluY2x1ZGVQb3N0TGF5b3V0RGF0YSk7Cisg
ICAgZ2V0UGxhdGZvcm1FZGl0b3JTdGF0ZShmcmFtZSwgcmVzdWx0KTsKIAogICAgIG1fbGFzdEVk
aXRvclN0YXRlV2FzQ29udGVudEVkaXRhYmxlID0gcmVzdWx0LmlzQ29udGVudEVkaXRhYmxlID8g
RWRpdG9yU3RhdGVJc0NvbnRlbnRFZGl0YWJsZTo6WWVzIDogRWRpdG9yU3RhdGVJc0NvbnRlbnRF
ZGl0YWJsZTo6Tm87CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aAppbmRleCAwOWI2MDg0YjQ2M2UzZTQ3YjFjYzE1OTY3OGEwODY5ODJjZjFhYzVmLi4xZDE2Yzg0
MzlkMmRiNjEzNDE4ZjE4NTZmZTkxNDA0MjgzOTI0NTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC00NzgsOCArNDc4LDggQEAgcHVibGljOgogICAg
IFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSByZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwoV2ViRnJh
bWUqLCBjb25zdCBVUkwmKTsKICNlbmRpZgogICAgIAotICAgIGVudW0gY2xhc3MgSW5jbHVkZVBv
c3RMYXlvdXREYXRhSGludCB7IE5vLCBZZXMgfTsKLSAgICBFZGl0b3JTdGF0ZSBlZGl0b3JTdGF0
ZShJbmNsdWRlUG9zdExheW91dERhdGFIaW50ID0gSW5jbHVkZVBvc3RMYXlvdXREYXRhSGludDo6
WWVzKSBjb25zdDsKKyAgICBlbnVtIGNsYXNzIFNob3VsZFBlcmZvcm1MYXlvdXQgeyBEZWZhdWx0
LCBZZXMgfTsKKyAgICBFZGl0b3JTdGF0ZSBlZGl0b3JTdGF0ZShTaG91bGRQZXJmb3JtTGF5b3V0
ID0gU2hvdWxkUGVyZm9ybUxheW91dDo6RGVmYXVsdCkgY29uc3Q7CiAgICAgdm9pZCB1cGRhdGVF
ZGl0b3JTdGF0ZUFmdGVyTGF5b3V0SWZFZGl0YWJpbGl0eUNoYW5nZWQoKTsKIAogICAgIC8vIG9w
dGlvbnMgYXJlIFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uQmVoYXZpb3IgdmFsdWVz
LgpAQCAtMTMxNiw5ICsxMzE2LDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRp
YWxpemUoKTsKICAgICB2b2lkIHBsYXRmb3JtUmVpbml0aWFsaXplKCk7CiAgICAgdm9pZCBwbGF0
Zm9ybURldGFjaCgpOwotICAgIHZvaWQgcGxhdGZvcm1FZGl0b3JTdGF0ZShXZWJDb3JlOjpGcmFt
ZSYsIEVkaXRvclN0YXRlJiByZXN1bHQsIEluY2x1ZGVQb3N0TGF5b3V0RGF0YUhpbnQpIGNvbnN0
OworICAgIHZvaWQgZ2V0UGxhdGZvcm1FZGl0b3JTdGF0ZShXZWJDb3JlOjpGcmFtZSYsIEVkaXRv
clN0YXRlJikgY29uc3Q7CisgICAgYm9vbCBwbGF0Zm9ybU5lZWRzTGF5b3V0Rm9yRWRpdG9yU3Rh
dGUoY29uc3QgV2ViQ29yZTo6RnJhbWUmKSBjb25zdDsKICAgICB2b2lkIHBsYXRmb3JtV2lsbFBl
cmZvcm1FZGl0aW5nQ29tbWFuZCgpOwogICAgIHZvaWQgc2VuZEVkaXRvclN0YXRlVXBkYXRlKCk7
CisgICAgdm9pZCBnZXRQbGF0Zm9ybUVkaXRvclN0YXRlQ29tbW9uKGNvbnN0IFdlYkNvcmU6OkZy
YW1lJiwgRWRpdG9yU3RhdGUmKSBjb25zdDsKIAogI2lmIEhBVkUoVE9VQ0hfQkFSKQogICAgIHZv
aWQgc2VuZFRvdWNoQmFyTWVudURhdGFBZGRlZFVwZGF0ZShXZWJDb3JlOjpIVE1MTWVudUVsZW1l
bnQmKTsKQEAgLTIwMDksNyArMjAxMSw2IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1fbWFpbkZy
YW1lUHJvZ3Jlc3NDb21wbGV0ZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9zaG91bGREaXNwYXRj
aEZha2VNb3VzZU1vdmVFdmVudHMgeyB0cnVlIH07Ci0gICAgYm9vbCBtX2lzRWRpdG9yU3RhdGVN
aXNzaW5nUG9zdExheW91dERhdGEgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc1NlbGVjdGluZ1Rl
eHRXaGlsZUluc2VydGluZ0FzeW5jaHJvbm91c2x5IHsgZmFsc2UgfTsKIAogICAgIGVudW0gY2xh
c3MgRWRpdG9yU3RhdGVJc0NvbnRlbnRFZGl0YWJsZSB7IE5vLCBZZXMsIFVuc2V0IH07CkBAIC0y
MDgxLDYgKzIwODIsNyBAQCBwcml2YXRlOgogCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiBp
bmxpbmUgdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybVdpbGxQZXJmb3JtRWRpdGluZ0NvbW1hbmQoKSB7
IH0KK2lubGluZSBib29sIFdlYlBhZ2U6OnBsYXRmb3JtTmVlZHNMYXlvdXRGb3JFZGl0b3JTdGF0
ZShjb25zdCBXZWJDb3JlOjpGcmFtZSYpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAjZW5kaWYK
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9nbGliL1dlYlBhZ2VHTGliLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL2dsaWIvV2ViUGFnZUdMaWIuY3BwCmluZGV4IGQ1NDViOThmYmNlMzZkNWZh
ZjU5MTYwMjRhMzJkYWZhZTVmZTg1MjYuLjRlODZmMDU1YThiZTMzMzMzMGUzZTIxM2UxODc0OGQ4
YWIzYzIxYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2ds
aWIvV2ViUGFnZUdMaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L2dsaWIvV2ViUGFnZUdMaWIuY3BwCkBAIC02OCwxMiArNjgsMTAgQEAgdm9pZCBXZWJQYWdlOjpz
ZW5kTWVzc2FnZVRvV2ViRXh0ZW5zaW9uKFVzZXJNZXNzYWdlJiYgbWVzc2FnZSkKICAgICBzZW5k
TWVzc2FnZVRvV2ViRXh0ZW5zaW9uV2l0aFJlcGx5KFdURk1vdmUobWVzc2FnZSksIFtdKFVzZXJN
ZXNzYWdlJiYpIHsgfSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6cGxhdGZvcm1FZGl0b3JTdGF0ZShG
cmFtZSYgZnJhbWUsIEVkaXRvclN0YXRlJiByZXN1bHQsIEluY2x1ZGVQb3N0TGF5b3V0RGF0YUhp
bnQgc2hvdWxkSW5jbHVkZVBvc3RMYXlvdXREYXRhKSBjb25zdAordm9pZCBXZWJQYWdlOjpnZXRQ
bGF0Zm9ybUVkaXRvclN0YXRlKEZyYW1lJiBmcmFtZSwgRWRpdG9yU3RhdGUmIHJlc3VsdCkgY29u
c3QKIHsKLSAgICBpZiAoc2hvdWxkSW5jbHVkZVBvc3RMYXlvdXREYXRhID09IEluY2x1ZGVQb3N0
TGF5b3V0RGF0YUhpbnQ6Ok5vIHx8ICFmcmFtZS52aWV3KCkgfHwgZnJhbWUudmlldygpLT5uZWVk
c0xheW91dCgpKSB7Ci0gICAgICAgIHJlc3VsdC5pc01pc3NpbmdQb3N0TGF5b3V0RGF0YSA9IHRy
dWU7CisgICAgaWYgKHJlc3VsdC5pc01pc3NpbmdQb3N0TGF5b3V0RGF0YSB8fCAhZnJhbWUudmll
dygpIHx8IGZyYW1lLnZpZXcoKS0+bmVlZHNMYXlvdXQoKSkKICAgICAgICAgcmV0dXJuOwotICAg
IH0KIAogICAgIGF1dG8mIHBvc3RMYXlvdXREYXRhID0gcmVzdWx0LnBvc3RMYXlvdXREYXRhKCk7
CiAgICAgcG9zdExheW91dERhdGEuY2FyZXRSZWN0QXRTdGFydCA9IGZyYW1lLnNlbGVjdGlvbigp
LmFic29sdXRlQ2FyZXRCb3VuZHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggOWU3NTAyMjE2YzczMWFiNDMyNzM1YTc5
OTE5MWRiZGU1NjA5YTgxYy4uNDdjNjIwZDA0NzgyYjRkOGExYjkxMzNiZDVlMTg1MzJlNmI5YzU2
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBh
Z2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBh
Z2VJT1MubW0KQEAgLTIyMyw4ICsyMjMsMjEgQEAgYm9vbCBXZWJQYWdlOjppc1RyYW5zcGFyZW50
T3JGdWxseUNsaXBwZWQoY29uc3QgRWxlbWVudCYgZWxlbWVudCkgY29uc3QKICAgICByZXR1cm4g
cmVuZGVyZXItPmhhc05vbkVtcHR5VmlzaWJsZVJlY3RSZXNwZWN0aW5nUGFyZW50RnJhbWVzKCk7
CiB9CiAKLXZvaWQgV2ViUGFnZTo6cGxhdGZvcm1FZGl0b3JTdGF0ZShGcmFtZSYgZnJhbWUsIEVk
aXRvclN0YXRlJiByZXN1bHQsIEluY2x1ZGVQb3N0TGF5b3V0RGF0YUhpbnQgc2hvdWxkSW5jbHVk
ZVBvc3RMYXlvdXREYXRhKSBjb25zdAorYm9vbCBXZWJQYWdlOjpwbGF0Zm9ybU5lZWRzTGF5b3V0
Rm9yRWRpdG9yU3RhdGUoY29uc3QgRnJhbWUmIGZyYW1lKSBjb25zdAogeworICAgIC8vIElmIHdl
IGhhdmUgYSBjb21wb3NpdGlvbiBvciBhcmUgdXNpbmcgYSBoYXJkd2FyZSBrZXlib2FyZCB0aGVu
IHdlIG5lZWQgdG8gc2VuZCB0aGUgZnVsbAorICAgIC8vIGVkaXRvciBzbyB0aGF0IHRoZSBVSVBy
b2Nlc3MgY2FuIHVwZGF0ZSBVSSwgaW5jbHVkaW5nIHRoZSBwb3NpdGlvbiBvZiB0aGUgY2FyZXQu
CisgICAgYm9vbCBuZWVkc0xheW91dCA9IGZyYW1lLmVkaXRvcigpLmhhc0NvbXBvc2l0aW9uKCk7
CisjaWYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQorICAgIG5lZWRzTGF5b3V0IHw9IG1fa2V5Ym9h
cmRJc0F0dGFjaGVkOworI2VuZGlmCisgICAgcmV0dXJuIG5lZWRzTGF5b3V0OworfQorCit2b2lk
IFdlYlBhZ2U6OmdldFBsYXRmb3JtRWRpdG9yU3RhdGUoRnJhbWUmIGZyYW1lLCBFZGl0b3JTdGF0
ZSYgcmVzdWx0KSBjb25zdAoreworICAgIGdldFBsYXRmb3JtRWRpdG9yU3RhdGVDb21tb24oZnJh
bWUsIHJlc3VsdCk7CisKICAgICBGcmFtZVZpZXcqIHZpZXcgPSBmcmFtZS52aWV3KCk7CiAgICAg
aWYgKCF2aWV3KSB7CiAgICAgICAgIHJlc3VsdC5pc01pc3NpbmdQb3N0TGF5b3V0RGF0YSA9IHRy
dWU7CkBAIC0yNTUsMTQgKzI2OCwxMSBAQCB2b2lkIFdlYlBhZ2U6OnBsYXRmb3JtRWRpdG9yU3Rh
dGUoRnJhbWUmIGZyYW1lLCBFZGl0b3JTdGF0ZSYgcmVzdWx0LCBJbmNsdWRlUG9zdAogI2lmICFQ
TEFURk9STShNQUNDQVRBTFlTVCkKICAgICByZXF1aXJlc1Bvc3RMYXlvdXREYXRhIHw9IG1fa2V5
Ym9hcmRJc0F0dGFjaGVkOwogI2VuZGlmCi0gICAgaWYgKChzaG91bGRJbmNsdWRlUG9zdExheW91
dERhdGEgPT0gSW5jbHVkZVBvc3RMYXlvdXREYXRhSGludDo6Tm8gfHwgbmVlZHNMYXlvdXQpICYm
ICFyZXF1aXJlc1Bvc3RMYXlvdXREYXRhKSB7Ci0gICAgICAgIHJlc3VsdC5pc01pc3NpbmdQb3N0
TGF5b3V0RGF0YSA9IHRydWU7CisgICAgaWYgKG5lZWRzTGF5b3V0IHx8IHJlc3VsdC5pc01pc3Np
bmdQb3N0TGF5b3V0RGF0YSkKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAogICAgIGF1dG8mIHBv
c3RMYXlvdXREYXRhID0gcmVzdWx0LnBvc3RMYXlvdXREYXRhKCk7Ci0gICAgCi0gICAgY29uc3Qg
VmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uID0gZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9u
KCk7CisgICAgY29uc3QgYXV0byYgc2VsZWN0aW9uID0gZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0
aW9uKCk7CiAgICAgcG9zdExheW91dERhdGEuaXNTdGFibGVTdGF0ZVVwZGF0ZSA9IG1faXNJblN0
YWJsZVN0YXRlOwogICAgIGJvb2wgc3RhcnROb2RlSXNJbnNpZGVGaXhlZFBvc2l0aW9uID0gZmFs
c2U7CiAgICAgYm9vbCBlbmROb2RlSXNJbnNpZGVGaXhlZFBvc2l0aW9uID0gZmFsc2U7CkBAIC00
NzksNyArNDg5LDcgQEAgYm9vbCBXZWJQYWdlOjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudChL
ZXlib2FyZEV2ZW50JiBldmVudCkKIAogICAgIC8vIEZJWE1FOiBJbnRlcnByZXQgdGhlIGV2ZW50
IGltbWVkaWF0ZWx5IHVwb24gcmVjZWl2aW5nIGl0IGluIFVJIHByb2Nlc3MsIHdpdGhvdXQgc2Vu
ZGluZyB0byBXZWJQcm9jZXNzIGZpcnN0LgogICAgIGJvb2wgZXZlbnRXYXNIYW5kbGVkID0gZmFs
c2U7Ci0gICAgYm9vbCBzZW5kUmVzdWx0ID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50
UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6SW50
ZXJwcmV0S2V5RXZlbnQoZWRpdG9yU3RhdGUoKSwgcGxhdGZvcm1FdmVudC0+dHlwZSgpID09IFBs
YXRmb3JtS2V5Ym9hcmRFdmVudDo6Q2hhciksCisgICAgYm9vbCBzZW5kUmVzdWx0ID0gV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6SW50ZXJwcmV0S2V5RXZlbnQoZWRpdG9yU3RhdGUoU2hvdWxk
UGVyZm9ybUxheW91dDo6WWVzKSwgcGxhdGZvcm1FdmVudC0+dHlwZSgpID09IFBsYXRmb3JtS2V5
Ym9hcmRFdmVudDo6Q2hhciksCiAgICAgICAgIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkludGVy
cHJldEtleUV2ZW50OjpSZXBseShldmVudFdhc0hhbmRsZWQpLCBtX2lkZW50aWZpZXIpOwogICAg
IHJldHVybiBzZW5kUmVzdWx0ICYmIGV2ZW50V2FzSGFuZGxlZDsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KaW5kZXggMmM1ODk2
ZGY3ODU3NTg2NjEwZDJhM2E2NTU2ZDU4MTljZjZmZmU5NC4uNDBmMDUyMGYwZjc3NjdlZGU2Njgz
M2RmOWQ1NWMwNzVlMGU4YTExMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KQEAgLTEzMywxMiArMTMzLDEyIEBAIHZvaWQgV2Vi
UGFnZTo6cGxhdGZvcm1EZXRhY2goKQogICAgIFttX21vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudCBz
ZXRXZWJQYWdlOm51bGxwdHJdOwogfQogCi12b2lkIFdlYlBhZ2U6OnBsYXRmb3JtRWRpdG9yU3Rh
dGUoRnJhbWUmIGZyYW1lLCBFZGl0b3JTdGF0ZSYgcmVzdWx0LCBJbmNsdWRlUG9zdExheW91dERh
dGFIaW50IHNob3VsZEluY2x1ZGVQb3N0TGF5b3V0RGF0YSkgY29uc3QKK3ZvaWQgV2ViUGFnZTo6
Z2V0UGxhdGZvcm1FZGl0b3JTdGF0ZShGcmFtZSYgZnJhbWUsIEVkaXRvclN0YXRlJiByZXN1bHQp
IGNvbnN0CiB7Ci0gICAgaWYgKHNob3VsZEluY2x1ZGVQb3N0TGF5b3V0RGF0YSA9PSBJbmNsdWRl
UG9zdExheW91dERhdGFIaW50OjpObyB8fCAhZnJhbWUudmlldygpIHx8IGZyYW1lLnZpZXcoKS0+
bmVlZHNMYXlvdXQoKSB8fCAhcmVzdWx0LmlzQ29udGVudEVkaXRhYmxlKSB7Ci0gICAgICAgIHJl
c3VsdC5pc01pc3NpbmdQb3N0TGF5b3V0RGF0YSA9IHRydWU7CisgICAgZ2V0UGxhdGZvcm1FZGl0
b3JTdGF0ZUNvbW1vbihmcmFtZSwgcmVzdWx0KTsKKworICAgIGlmIChyZXN1bHQuaXNNaXNzaW5n
UG9zdExheW91dERhdGEpCiAgICAgICAgIHJldHVybjsKLSAgICB9CiAKICAgICBhdXRvJiBzZWxl
Y3Rpb24gPSBmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKTsKICAgICBSZWZQdHI8UmFuZ2U+
IHNlbGVjdGVkUmFuZ2UgPSBzZWxlY3Rpb24udG9Ob3JtYWxpemVkUmFuZ2UoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3BsYXlzdGF0aW9uL1dlYlBhZ2VQ
bGF5U3RhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9wbGF5c3Rh
dGlvbi9XZWJQYWdlUGxheVN0YXRpb24uY3BwCmluZGV4IDQ1MWNlMjU1Y2MyZjI0ZjM1YmVkMjMx
MTAxNWQ0NzE4ZmUxMWZiZDcuLmNiZGE0OGM3ZDY1YjFhNjgyNjZjYjYyNjhlMGY3ZTFmMmFlYTU1
ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3BsYXlzdGF0
aW9uL1dlYlBhZ2VQbGF5U3RhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvcGxheXN0YXRpb24vV2ViUGFnZVBsYXlTdGF0aW9uLmNwcApAQCAtNzEsNyArNzEs
NyBAQCBib29sIFdlYlBhZ2U6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KFdlYkNvcmU6Oktl
eWJvYXJkRXZlbnQmIGV2ZW50KQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBXZWJQYWdl
OjpwbGF0Zm9ybUVkaXRvclN0YXRlKEZyYW1lJiBmcmFtZSwgRWRpdG9yU3RhdGUmIHJlc3VsdCwg
SW5jbHVkZVBvc3RMYXlvdXREYXRhSGludCBzaG91bGRJbmNsdWRlUG9zdExheW91dERhdGEpIGNv
bnN0Cit2b2lkIFdlYlBhZ2U6OmdldFBsYXRmb3JtRWRpdG9yU3RhdGUoRnJhbWUmIGZyYW1lLCBF
ZGl0b3JTdGF0ZSYgcmVzdWx0KSBjb25zdAogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93aW4vV2ViUGFnZVdp
bi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93aW4vV2ViUGFnZVdpbi5j
cHAKaW5kZXggNjI0ZjRkMTEyNjZhMjdkYTM3ZDdkOWZmMDIxNmNmMjY1ZWEyZGM0Mi4uOWJmYzg2
OWRlMTQwMWQyZDU2YmEyOWQ0OGM2ZjQxN2E1N2VmNDg2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL1dlYlBhZ2VXaW4uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9XZWJQYWdlV2luLmNwcApAQCAtNjMsNyArNjMs
NyBAQCB2b2lkIFdlYlBhZ2U6OnBsYXRmb3JtRGV0YWNoKCkKIHsKIH0KIAotdm9pZCBXZWJQYWdl
OjpwbGF0Zm9ybUVkaXRvclN0YXRlKEZyYW1lJiBmcmFtZSwgRWRpdG9yU3RhdGUmIHJlc3VsdCwg
SW5jbHVkZVBvc3RMYXlvdXREYXRhSGludCBzaG91bGRJbmNsdWRlUG9zdExheW91dERhdGEpIGNv
bnN0Cit2b2lkIFdlYlBhZ2U6OmdldFBsYXRmb3JtRWRpdG9yU3RhdGUoRnJhbWUmLCBFZGl0b3JT
dGF0ZSYpIGNvbnN0CiB7CiB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwYzAzOGZkNjk3ZmYxMWJhZDE4ZGI0OGMzY2E4
ZjVkNzhmNmU4ZWFlLi5kOGEyODY4ZDhlMjQ3OWExNWQ0YjgyZjE5YTE1NjYxOGE5MDJkZjNlIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjAtMDMtMjQgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNA
YXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIEFTU0VSVElPTiBGQUlMVVJFOiAhaXNNaXNzaW5n
UG9zdExheW91dERhdGEgaW4gV2ViS2l0OjpFZGl0b3JTdGF0ZTo6cG9zdExheW91dERhdGEoKQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk5OTYwCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS81MzMyMzk2Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBT
aW1vbiBGcmFzZXIuCisKKyAgICAgICAgQWRkIGEgdGVzdCB0byBlbnN1cmUgd2UgZG8gbm90IGFz
c2VydCB3aGVuIHVzaW5nIHRoZSBzb2Z0d2FyZSBrZXlib2FyZCB0byB0eXBlIGEgY2hhcmFjdGVy
CisgICAgICAgIGludG8gYSA8dGV4dGFyZWE+IGFuZCB0aGVuIGRlbGV0ZSBpdC4KKworICAgICAg
ICAqIFRlc3RFeHBlY3RhdGlvbnM6IFNraXAgdGVzdHMgaW4gZWRpdGluZy9kZWxldGluZy9pb3Mg
b24gYWxsIHBsYXRmb3Jtcy4KKyAgICAgICAgKiBlZGl0aW5nL2RlbGV0aW5nL2lvcy9iYWNrc3Bh
Y2UtbGFzdC1jaGFyYWN0ZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5n
L2RlbGV0aW5nL2lvcy9iYWNrc3BhY2UtbGFzdC1jaGFyYWN0ZXIuaHRtbDogQWRkZWQuCisgICAg
ICAgICogcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnM6IFVuc2tpcCB0ZXN0cyBpbiBlZGl0
aW5nL2RlbGV0aW5nL2lvcyBvbiBpT1MuCisKIDIwMjAtMDMtMjQgIFphbGFuIEJ1anRhcyAgPHph
bGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTXVsdGlDb2x1bW5dIEluZmluaXRlIHJlY3Vyc2lv
biBpbiBSZW5kZXJCbG9ja0Zsb3c6OnJlbGF5b3V0VG9Bdm9pZFdpZG93cwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlv
bnMKaW5kZXggZWVlNDU4ZTQ5NTMwN2I0MmEwY2VkYWZmNjM3Nzg5NGU4N2YwNWMwMS4uMTVlZjM0
NDQyNDQyZTliNDI3ODllYTk2NmQ2YjU5YjE5OTg4NzczMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCkBA
IC0yMSw2ICsyMSw3IEBAIGVkaXRpbmcvaW5wdXQvaW9zIFsgU2tpcCBdCiBlZGl0aW5nL2ZpbmQg
WyBTa2lwIF0KIGVkaXRpbmcvcGFzdGVib2FyZC9ndGsgWyBTa2lwIF0KIGVkaXRpbmcvc2VsZWN0
aW9uL2lvcyBbIFNraXAgXQorZWRpdGluZy9kZWxldGluZy9pb3MgWyBTa2lwIF0KIGVkaXRpbmcv
dW5kby1tYW5hZ2VyIFsgU2tpcCBdCiB0aWxlZC1kcmF3aW5nIFsgU2tpcCBdCiBmYXN0L2Nzcy9p
b3MgWyBTa2lwIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvZGVsZXRpbmcvaW9z
L2JhY2tzcGFjZS1sYXN0LWNoYXJhY3Rlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0
aW5nL2RlbGV0aW5nL2lvcy9iYWNrc3BhY2UtbGFzdC1jaGFyYWN0ZXItZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjUwNTY0ZDk4ZGFmMjgwOTdjMGI0MGM1ZjNiNTNjOGRhNjQxMGIwYjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2RlbGV0aW5nL2lvcy9iYWNrc3BhY2Ut
bGFzdC1jaGFyYWN0ZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTEgQEAKK1RoaXMgdGVzdHMg
dXNpbmcgdGhlIHNvZnR3YXJlIGtleWJvYXJkIGFuZCBwcmVzc2luZyAndycgdGhlbiBiYWNrc3Bh
Y2UgZGVsZXRlcyB0aGUgJ3cnIGFuZCBkb2VzIG5vdCBjYXVzZSBhbiBhc3NlcnRpb24gZmFpbHVy
ZSBpbiBhIGRlYnVnIGJ1aWxkLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFT
UyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW5wdXQiKS52YWx1ZSBpcyAidyIKK1BBU1MgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImlucHV0IikudmFsdWUgaXMgIiIKK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9lZGl0aW5nL2RlbGV0aW5nL2lvcy9iYWNrc3BhY2UtbGFzdC1jaGFyYWN0ZXIuaHRtbCBi
L0xheW91dFRlc3RzL2VkaXRpbmcvZGVsZXRpbmcvaW9zL2JhY2tzcGFjZS1sYXN0LWNoYXJhY3Rl
ci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmFjZjUxZjM0OTNmNGM0Mzc0NTU3ZDRmOThiOGU0YTQ1ZTdlYTE5
NjgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2RlbGV0aW5nL2lvcy9i
YWNrc3BhY2UtbGFzdC1jaGFyYWN0ZXIuaHRtbApAQCAtMCwwICsxLDQ2IEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy91aS1o
ZWxwZXIuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJ0ZXN0LWNvbnRh
aW5lciI+CisgICAgPHRleHRhcmVhIGlkPSJpbnB1dCI+PC90ZXh0YXJlYT4KKyAgICA8dGV4dGFy
ZWEgaWQ9Im91dHB1dCIgcmVhZG9ubHk+PC90ZXh0YXJlYT4KKzwvZGl2PgorPHNjcmlwdD4KK3dp
bmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworbGV0IGlucHV0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImlucHV0Iik7CisKK2Z1bmN0aW9uIGFwcGVuZEFOZXdsaW5lKCkKK3sKKyAgICBs
ZXQgb3V0cHV0RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJvdXRwdXQiKTsKKyAg
ICBvdXRwdXRFbGVtZW50LnZhbHVlID0gb3V0cHV0RWxlbWVudC52YWx1ZSArICJcbiI7Cit9CisK
K2FzeW5jIGZ1bmN0aW9uIHJ1blRlc3QoKQoreworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICAgICAgYXdhaXQgVUlIZWxwZXIuc2V0SGFyZHdhcmVLZXlib2FyZEF0dGFjaGVkKGZhbHNl
KTsKKworICAgIGF3YWl0IFVJSGVscGVyLmNhbGxGdW5jdGlvbkFuZFdhaXRGb3JFdmVudCgoKSA9
PiB3aW5kb3cudGVzdFJ1bm5lciAmJiBVSUhlbHBlci5hY3RpdmF0ZUVsZW1lbnQoaW5wdXQpLCBp
bnB1dCwgImZvY3VzIik7CisKKyAgICBhd2FpdCBVSUhlbHBlci5jYWxsRnVuY3Rpb25BbmRXYWl0
Rm9yRXZlbnQoKCkgPT4gd2luZG93LnRlc3RSdW5uZXIgJiYgVUlIZWxwZXIua2V5RG93bigidyIp
LCBpbnB1dCwgImlucHV0Iik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiaW5wdXQiKS52YWx1ZScsICJ3Iik7CisKKyAgICBhd2FpdCBVSUhlbHBl
ci5jYWxsRnVuY3Rpb25BbmRXYWl0Rm9yRXZlbnQoKCkgPT4gd2luZG93LnRlc3RSdW5uZXIgJiYg
VUlIZWxwZXIua2V5RG93bigiXGIiKSwgaW5wdXQsICJpbnB1dCIpOworICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygnZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImlucHV0IikudmFsdWUnLCAiIik7
CisKKyAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJ0ZXN0LWNvbnRhaW5lciIpKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKworZGVzY3JpcHRp
b24oIlRoaXMgdGVzdHMgdXNpbmcgdGhlIHNvZnR3YXJlIGtleWJvYXJkIGFuZCBwcmVzc2luZyAn
dycgdGhlbiA8a2JkPmJhY2tzcGFjZTwva2JkPiBkZWxldGVzIHRoZSAndycgYW5kIGRvZXMgbm90
IGNhdXNlIGFuIGFzc2VydGlvbiBmYWlsdXJlIGluIGEgZGVidWcgYnVpbGQuIikKK2lucHV0LmFk
ZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLCBhcHBlbmRBTmV3bGluZSk7CisKK3J1blRlc3QoKTsK
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVz
dEV4cGVjdGF0aW9ucwppbmRleCBiNDRiMmJmMTViOWI2NzEzMDRkOWExOGMxMmRhY2MyYThhYjY2
OWZlLi5lOTAxZDNlMmU4MGY3NmViODNiMzRmMjU4Yjc1NjFjODA1YzI4YjdhIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucwpAQCAtOCw2ICs4LDcgQEAKIAogYWNj
ZXNzaWJpbGl0eS9pb3Mtc2ltdWxhdG9yIFsgUGFzcyBdCiBkaXNwbGF5bGlzdHMgWyBQYXNzIF0K
K2VkaXRpbmcvZGVsZXRpbmcvaW9zIFsgUGFzcyBdCiBodHRwL3Rlc3RzL3F1aWNrbG9vayBbIFBh
c3MgXQogbWVkaWEvaW9zIFsgUGFzcyBdCiBxdWlja2xvb2sgWyBQYXNzIF0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394474</attachid>
            <date>2020-03-25 00:21:39 -0700</date>
            <delta_ts>2020-03-25 00:21:39 -0700</delta_ts>
            <desc>Attempt to fix GTK</desc>
            <filename>Final-032520.patch</filename>
            <type>text/plain</type>
            <size>35134</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">RnJvbSBkYTg1YWI1MTAzYjQ1NDEyMzJlMmQ5OGNjNTIxMjc1MzAxNDllOTE1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgQmF0ZXMgPGRhYmF0ZXNAYXBwbGUuY29tPgpEYXRl
OiBXZWQsIDI1IE1hciAyMDIwIDAwOjE4OjE3IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gW2lPU10g
QVNTRVJUSU9OIEZBSUxVUkU6ICFpc01pc3NpbmdQb3N0TGF5b3V0RGF0YSBpbgogV2ViS2l0OjpF
ZGl0b3JTdGF0ZTo6cG9zdExheW91dERhdGEoKQogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5OTk2MCA8cmRhcjovL3Byb2JsZW0vNTMzMjM5NjY+CgpSZXZpZXdlZCBi
eSBTaW1vbiBGcmFzZXIuCgpTb3VyY2UvV2ViS2l0OgoKUmVmYWN0b3IgdGhlIGNvbXB1dGF0aW9u
IG9mIGVkaXRvciBzdGF0ZSBzbyB0aGF0IHdlIGNhbiByZXF1ZXN0IHRoYXQgYSBsYXlvdXQgYmUg
cGVyZm9ybWVkCmVhY2ggdGltZSB3ZSBjb21wdXRlIHRoZSBlZGl0b3Igc3RhdGUgYXMgcGFydCBv
ZiBhc2tpbmcgdGhlIFVJIHByb2Nlc3MgdG8gaW50ZXJwcmV0IGEga2V5CmV2ZW50LiBUaGUgZnVs
bCAocmVhZDogYWZ0ZXIgbGF5b3V0KSBlZGl0b3Igc3RhdGUgaXMgbmVlZGVkIGZvciBVSUtpdCB0
byBwZXJmb3JtIGEgZGVsZXRpb24KYmVjYXVzZSBVSUtpdCB3YW50cyB0byBrbm93IGhvdyBtYW55
IGNoYXJhY3RlcnMgYXJlIGJlZm9yZSB0aGUgc2VsZWN0aW9uLiBPdGhlcndpc2UsIHdlIGhpdAph
biBhc3NlcnQgZHVlIHRvIHRoZSBmYWN0IHRoZSBsYXN0IGVkaXRvciBzdGF0ZSBzZW50ICh3aGVu
IHRoZSBXZWIgcHJvY2VzcyBhc2tlZCB0aGUgVUkgcHJvY2Vzcwp0byBpbnRlcnByZXQgdGhlIGtl
eSkgaXMgbWlzc2luZyBsYXlvdXQgZGF0YS4KClRoZSByZWZhY3RvcmluZyBhbHNvIG1vdmVzIHRo
ZSBDb2NvYS1jb21tb24gY29kZSBvdXQgb2YgdGhlIHBsYXRmb3JtLWluZGVwZW5kZW50IFdlYlBh
Z2UuY3BwCmZpbGUgaW50byBXZWJQYWdlQ29jb2EubW0uCgpPbmUgc2lkZSBlZmZlY3Qgb2YgdGhl
IHJlZmFjdG9yaW5nIGlzIHRoYXQgd2Ugbm8gbG9uZ2VyIGFsbG93IHRoZSBwbGF0Zm9ybUVkaXRv
clN0YXRlKCkgZnVuY3Rpb24KdG8gb3ZlcnJpZGUgdGhlIGlzTWlzc2luZ1Bvc3RMYXlvdXREYXRh
IGJpdC4gQ3VycmVudGx5IGl0IGNhbiBldmVuIHRob3VnaCB0aGUgY2FsbGluZyBjb2RlLCB0aGUK
cGxhdGZvcm0gaW5kZXBlbmRlbnQgY29kZSAoUElFKSBpbiBXZWJQYWdlLCBtYXkgaGF2ZSBhdHRh
Y2hlZCBsYXlvdXQgZGF0YS4gTm93IHRoZSBQSUUgY29kZSBzZXRzCnRoaXMgYml0IGlmIGl0IGF0
dGFjaGVkIGxheW91dCBkYXRhIGFuZCB0aGUgcGxhdGZvcm1FZGl0b3JTdGF0ZSgpIGZ1bmN0aW9u
IG9ubHkgYXR0YWNoZXMgbW9yZQpsYXlvdXQgZGF0YSBpZiB0aGF0IGJpdCBpcyBzZXQuIHBsYXRm
b3JtRWRpdG9yU3RhdGUoKSBuZXZlciB1bnNldHMgdGhhdCBiaXQgKGkuZS4gc2V0cyBpc01pc3Np
bmdQb3N0TGF5b3V0RGF0YQp0byB0cnVlKS4KClRoZSBwYXRjaCBhbHNvIHJlbW92ZXMgbV9pc0Vk
aXRvclN0YXRlTWlzc2luZ1Bvc3RMYXlvdXREYXRhIGluIFdlYlBhZ2UuaC4gVGhpcyBpbnN0YW5j
ZSB2YXJpYWJsZQpoYXMgYmVlbiB1bnVzZWQgc2luY2UgPGh0dHBzOi8vdHJhYy53ZWJraXQub3Jn
L2NoYW5nZXNldC8yMjEwNjQvd2Via2l0Pi4gQWxzbyB3ZSBoYXZlbid0IGJlZW4gdXNpbmcKSW5j
bHVkZVBvc3RMYXlvdXREYXRhSGludDo6Tm8gc2luY2UgdGhlIGxhc3QgcmVmZXJlbmNlIHRvIGl0
IHdhcyByZW1vdmVkIGluIDxodHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjQ0NDk0
L3dlYmtpdD4uCgpJIGFsc28gcmVuYW1lZCBwbGF0Zm9ybUVkaXRvclN0YXRlKCkgdG8gZ2V0UGxh
dGZvcm1FZGl0b3JTdGF0ZSgpIHNpbmNlIGl0IGhhcyBhbiBvdXQgYXJndW1lbnQuCgpUZXN0OiBl
ZGl0aW5nL2RlbGV0aW5nL2lvcy9iYWNrc3BhY2UtbGFzdC1jaGFyYWN0ZXIuaHRtbAoKKiBTaGFy
ZWQvRWRpdG9yU3RhdGUuaDoKKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RWRpdG9yU3RhdGUu
Y3BwOgood2Via2l0RWRpdG9yU3RhdGVDcmVhdGUpOiBJbml0aWFsaXplIF9XZWJLaXRFZGl0b3JT
dGF0ZVByaXZhdGU6OnR5cGluZ0F0dHJpYnV0ZXMgdG8gV0VCS0lUX0VESVRPUl9UWVBJTkdfQVRU
UklCVVRFX05PTkUuCiogV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbToK
KFdlYktpdDo6V2ViUGFnZTo6Z2V0UGxhdGZvcm1FZGl0b3JTdGF0ZUNvbW1vbiBjb25zdCk6IEFk
ZGVkLiBNb3ZlZCBDb2NvYS1jb21tb24gY29kZSBmcm9tIFdlYlBhZ2UuY3BwIHRvIGhlcmUuCiog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgooV2ViS2l0OjpXZWJQYWdlOjplZGl0b3JT
dGF0ZSBjb25zdCk6IE1vdmUgQ29jb2EtY29tbW9uIGNvZGUgdG8gV2ViUGFnZUNvY29hLm1tLiBD
aGFuZ2UgZW51bSB0bwp0cmFjayB3aGV0aGVyIGEgbGF5b3V0IHNob3VsZCBiZSBwZXJmb3JtZWQu
IEtlZXAgdGhlIGN1cnJlbnQgYmVoYXZpb3Igb2Ygb25seSBpbmNsdWRpbmcgcG9zdCBsYXlvdXQK
ZGF0YSBpZiB0aGUgZnJhbWUgdmlldyBkb2VzIG5vdCBuZWVkIGEgbGF5b3V0LiBUaGlzIGJlaGF2
aW9yIGlzIGVuY29kZWQgaW4gdGhlIGVudW1lcmF0b3IgU2hvdWxkUGVyZm9ybUxheW91dDo6RGVm
YXVsdC4Kd2hpY2ggaXMgdGhlIGRlZmF1bHQgYXJndW1lbnQgdmFsdWUgZm9yIHRoZSBhcmd1bWVu
dCBzaG91bGRQZXJmb3JtTGF5b3V0LgoqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CihX
ZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtTmVlZHNMYXlvdXRGb3JFZGl0b3JTdGF0ZSBjb25zdCk6
IEFkZGVkLiBOb24tQ29jb2EgcG9ydCBpbXBsZW1lbnRhdGlvbgp0aGF0IHJldHVybnMgZmFsc2Uu
CiogV2ViUHJvY2Vzcy9XZWJQYWdlL2dsaWIvV2ViUGFnZUdMaWIuY3BwOgooV2ViS2l0OjpXZWJQ
YWdlOjpnZXRQbGF0Zm9ybUVkaXRvclN0YXRlIGNvbnN0KTogRWFybHkgcmV0dXJuIGlmIGlzTWlz
c2luZ1Bvc3RMYXlvdXREYXRhIGlzIHRydWUuCihXZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtRWRp
dG9yU3RhdGUgY29uc3QpOiBEZWxldGVkLgoqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFn
ZUlPUy5tbToKKFdlYktpdDo6V2ViUGFnZTo6cGxhdGZvcm1OZWVkc0xheW91dEZvckVkaXRvclN0
YXRlIGNvbnN0KTogQWRkZWQuIEtlZXAgdGhlIGN1cnJlbnQgYmVoYXZpb3Igb2YKcGVyZm9ybWlu
ZyBhIGxheW91dCBpZiB3ZSBoYXZlIGEgY29tcG9zaXRpb24gb3IgYSBoYXJkd2FyZSBrZXlib2Fy
ZCBpcyBhdHRhY2hlZC4KKFdlYktpdDo6V2ViUGFnZTo6Z2V0UGxhdGZvcm1FZGl0b3JTdGF0ZSBj
b25zdCk6IENhbGwgcGxhdGZvcm1FZGl0b3JTdGF0ZUNvbW1vbigpLiBCYWlsIG91dCBlYXJseQpp
ZiBpc01pc3NpbmdQb3N0TGF5b3V0RGF0YSBpcyB0cnVlLgooV2ViS2l0OjpXZWJQYWdlOjpoYW5k
bGVFZGl0aW5nS2V5Ym9hcmRFdmVudCk6IFRoZSBpbXBvcnRhbnQgcGFydCBvZiB0aGlzIHBhdGNo
LiBSZXF1ZXN0IGEgbGF5b3V0CndoZW4gY29tcHV0aW5nIHRoZSBlZGl0b3Igc3RhdGUgdGhhdCB3
ZSB3aWxsIHNlbmQgdG8gdGhlIFVJIHByb2Nlc3MuCihXZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3Jt
RWRpdG9yU3RhdGUgY29uc3QpOiBEZWxldGVkLgoqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2Vi
UGFnZU1hYy5tbToKKFdlYktpdDo6V2ViUGFnZTo6Z2V0UGxhdGZvcm1FZGl0b3JTdGF0ZSBjb25z
dCk6IENhbGwgcGxhdGZvcm1FZGl0b3JTdGF0ZUNvbW1vbigpLiBCYWlsIG91dCBlYXJseQppZiBp
c01pc3NpbmdQb3N0TGF5b3V0RGF0YSBpcyB0cnVlLgooV2ViS2l0OjpXZWJQYWdlOjpwbGF0Zm9y
bUVkaXRvclN0YXRlIGNvbnN0KTogRGVsZXRlZC4KKiBXZWJQcm9jZXNzL1dlYlBhZ2UvcGxheXN0
YXRpb24vV2ViUGFnZVBsYXlTdGF0aW9uLmNwcDoKKFdlYktpdDo6V2ViUGFnZTo6Z2V0UGxhdGZv
cm1FZGl0b3JTdGF0ZSBjb25zdCk6IFVwZGF0ZSBhcyBuZWVkZWQuCihXZWJLaXQ6OldlYlBhZ2U6
OnBsYXRmb3JtRWRpdG9yU3RhdGUgY29uc3QpOiBEZWxldGVkLgoqIFdlYlByb2Nlc3MvV2ViUGFn
ZS93aW4vV2ViUGFnZVdpbi5jcHA6CihXZWJLaXQ6OldlYlBhZ2U6OmdldFBsYXRmb3JtRWRpdG9y
U3RhdGUgY29uc3QpOiBVcGRhdGUgYXMgbmVlZGVkLgooV2ViS2l0OjpXZWJQYWdlOjpwbGF0Zm9y
bUVkaXRvclN0YXRlIGNvbnN0KTogRGVsZXRlZC4KCkxheW91dFRlc3RzOgoKQWRkIGEgdGVzdCB0
byBlbnN1cmUgd2UgZG8gbm90IGFzc2VydCB3aGVuIHVzaW5nIHRoZSBzb2Z0d2FyZSBrZXlib2Fy
ZCB0byB0eXBlIGEgY2hhcmFjdGVyCmludG8gYSA8dGV4dGFyZWE+IGFuZCB0aGVuIGRlbGV0ZSBp
dC4KCiogVGVzdEV4cGVjdGF0aW9uczogU2tpcCB0ZXN0cyBpbiBlZGl0aW5nL2RlbGV0aW5nL2lv
cyBvbiBhbGwgcGxhdGZvcm1zLgoqIGVkaXRpbmcvZGVsZXRpbmcvaW9zL2JhY2tzcGFjZS1sYXN0
LWNoYXJhY3Rlci1leHBlY3RlZC50eHQ6IEFkZGVkLgoqIGVkaXRpbmcvZGVsZXRpbmcvaW9zL2Jh
Y2tzcGFjZS1sYXN0LWNoYXJhY3Rlci5odG1sOiBBZGRlZC4KKiBwbGF0Zm9ybS9pb3MvVGVzdEV4
cGVjdGF0aW9uczogVW5za2lwIHRlc3RzIGluIGVkaXRpbmcvZGVsZXRpbmcvaW9zIG9uIGlPUy4K
LS0tCiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgfCAxNiAr
KysrCiBMYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zICAgICAgICAgICAgICAgICAgfCAgMSAr
CiAuLi4vaW9zL2JhY2tzcGFjZS1sYXN0LWNoYXJhY3Rlci1leHBlY3RlZC50eHQgfCAxMSArKysK
IC4uLi9pb3MvYmFja3NwYWNlLWxhc3QtY2hhcmFjdGVyLmh0bWwgICAgICAgICB8IDQ2ICsrKysr
KysrKysrCiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucyAgICAgfCAg
MSArCiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgfCA2OCAr
KysrKysrKysrKysrKysKIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRvclN0YXRlLmggICAgICAg
ICAgICB8ICAyICstCiAuLi4vVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEVkaXRvclN0YXRlLmNw
cCAgfCAgMSArCiAuLi4vV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbSAg
fCA2OSArKysrKysrKysrKysrKysrCiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcCAgfCA4MiArKysrLS0tLS0tLS0tLS0tLS0tCiBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggICAgfCAxMCArKy0KIC4uLi9XZWJQcm9jZXNzL1dlYlBh
Z2UvZ2xpYi9XZWJQYWdlR0xpYi5jcHAgICB8ICA2ICstCiAuLi4vV2ViUHJvY2Vzcy9XZWJQYWdl
L2lvcy9XZWJQYWdlSU9TLm1tICAgICAgfCAyNCArKysrLS0KIC4uLi9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1dlYlBhZ2VNYWMubW0gICAgICB8ICA4ICstCiAuLi4vcGxheXN0YXRpb24vV2ViUGFn
ZVBsYXlTdGF0aW9uLmNwcCAgICAgICAgfCAgMiArLQogLi4uL1dlYlByb2Nlc3MvV2ViUGFnZS93
aW4vV2ViUGFnZVdpbi5jcHAgICAgIHwgIDIgKy0KIDE2IGZpbGVzIGNoYW5nZWQsIDI1OSBpbnNl
cnRpb25zKCspLCA5MCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0
cy9lZGl0aW5nL2RlbGV0aW5nL2lvcy9iYWNrc3BhY2UtbGFzdC1jaGFyYWN0ZXItZXhwZWN0ZWQu
dHh0CiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvZWRpdGluZy9kZWxldGluZy9pb3Mv
YmFja3NwYWNlLWxhc3QtY2hhcmFjdGVyLmh0bWwKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMGMwMzhmZDY5N2YuLmQ4YTI4
NjhkOGUyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjAtMDMtMjQgIERhbmllbCBCYXRlcyAg
PGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIEFTU0VSVElPTiBGQUlMVVJFOiAh
aXNNaXNzaW5nUG9zdExheW91dERhdGEgaW4gV2ViS2l0OjpFZGl0b3JTdGF0ZTo6cG9zdExheW91
dERhdGEoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTk5OTYwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81MzMyMzk2Nj4KKworICAgICAgICBSZXZp
ZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAgQWRkIGEgdGVzdCB0byBlbnN1cmUgd2Ug
ZG8gbm90IGFzc2VydCB3aGVuIHVzaW5nIHRoZSBzb2Z0d2FyZSBrZXlib2FyZCB0byB0eXBlIGEg
Y2hhcmFjdGVyCisgICAgICAgIGludG8gYSA8dGV4dGFyZWE+IGFuZCB0aGVuIGRlbGV0ZSBpdC4K
KworICAgICAgICAqIFRlc3RFeHBlY3RhdGlvbnM6IFNraXAgdGVzdHMgaW4gZWRpdGluZy9kZWxl
dGluZy9pb3Mgb24gYWxsIHBsYXRmb3Jtcy4KKyAgICAgICAgKiBlZGl0aW5nL2RlbGV0aW5nL2lv
cy9iYWNrc3BhY2UtbGFzdC1jaGFyYWN0ZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBlZGl0aW5nL2RlbGV0aW5nL2lvcy9iYWNrc3BhY2UtbGFzdC1jaGFyYWN0ZXIuaHRtbDogQWRk
ZWQuCisgICAgICAgICogcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnM6IFVuc2tpcCB0ZXN0
cyBpbiBlZGl0aW5nL2RlbGV0aW5nL2lvcyBvbiBpT1MuCisKIDIwMjAtMDMtMjQgIFphbGFuIEJ1
anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTXVsdGlDb2x1bW5dIEluZmluaXRl
IHJlY3Vyc2lvbiBpbiBSZW5kZXJCbG9ja0Zsb3c6OnJlbGF5b3V0VG9Bdm9pZFdpZG93cwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL1Rlc3RF
eHBlY3RhdGlvbnMKaW5kZXggZWVlNDU4ZTQ5NTMuLjE1ZWYzNDQ0MjQ0IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3Rh
dGlvbnMKQEAgLTIxLDYgKzIxLDcgQEAgZWRpdGluZy9pbnB1dC9pb3MgWyBTa2lwIF0KIGVkaXRp
bmcvZmluZCBbIFNraXAgXQogZWRpdGluZy9wYXN0ZWJvYXJkL2d0ayBbIFNraXAgXQogZWRpdGlu
Zy9zZWxlY3Rpb24vaW9zIFsgU2tpcCBdCitlZGl0aW5nL2RlbGV0aW5nL2lvcyBbIFNraXAgXQog
ZWRpdGluZy91bmRvLW1hbmFnZXIgWyBTa2lwIF0KIHRpbGVkLWRyYXdpbmcgWyBTa2lwIF0KIGZh
c3QvY3NzL2lvcyBbIFNraXAgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9kZWxl
dGluZy9pb3MvYmFja3NwYWNlLWxhc3QtY2hhcmFjdGVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2VkaXRpbmcvZGVsZXRpbmcvaW9zL2JhY2tzcGFjZS1sYXN0LWNoYXJhY3Rlci1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjUwNTY0ZDk4ZGFm
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9kZWxldGluZy9pb3MvYmFj
a3NwYWNlLWxhc3QtY2hhcmFjdGVyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDExIEBACitUaGlz
IHRlc3RzIHVzaW5nIHRoZSBzb2Z0d2FyZSBrZXlib2FyZCBhbmQgcHJlc3NpbmcgJ3cnIHRoZW4g
YmFja3NwYWNlIGRlbGV0ZXMgdGhlICd3JyBhbmQgZG9lcyBub3QgY2F1c2UgYW4gYXNzZXJ0aW9u
IGZhaWx1cmUgaW4gYSBkZWJ1ZyBidWlsZC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgor
CisKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImlucHV0IikudmFsdWUgaXMgInciCitQ
QVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpbnB1dCIpLnZhbHVlIGlzICIiCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZWRpdGluZy9kZWxldGluZy9pb3MvYmFja3NwYWNlLWxhc3QtY2hhcmFjdGVy
Lmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2RlbGV0aW5nL2lvcy9iYWNrc3BhY2UtbGFzdC1j
aGFyYWN0ZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYWNm
NTFmMzQ5M2YKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2RlbGV0aW5n
L2lvcy9iYWNrc3BhY2UtbGFzdC1jaGFyYWN0ZXIuaHRtbApAQCAtMCwwICsxLDQ2IEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNl
cy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJ0ZXN0
LWNvbnRhaW5lciI+CisgICAgPHRleHRhcmVhIGlkPSJpbnB1dCI+PC90ZXh0YXJlYT4KKyAgICA8
dGV4dGFyZWEgaWQ9Im91dHB1dCIgcmVhZG9ubHk+PC90ZXh0YXJlYT4KKzwvZGl2PgorPHNjcmlw
dD4KK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworbGV0IGlucHV0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImlucHV0Iik7CisKK2Z1bmN0aW9uIGFwcGVuZEFOZXdsaW5lKCkKK3sK
KyAgICBsZXQgb3V0cHV0RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJvdXRwdXQi
KTsKKyAgICBvdXRwdXRFbGVtZW50LnZhbHVlID0gb3V0cHV0RWxlbWVudC52YWx1ZSArICJcbiI7
Cit9CisKK2FzeW5jIGZ1bmN0aW9uIHJ1blRlc3QoKQoreworICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKKyAgICAgICAgYXdhaXQgVUlIZWxwZXIuc2V0SGFyZHdhcmVLZXlib2FyZEF0dGFjaGVk
KGZhbHNlKTsKKworICAgIGF3YWl0IFVJSGVscGVyLmNhbGxGdW5jdGlvbkFuZFdhaXRGb3JFdmVu
dCgoKSA9PiB3aW5kb3cudGVzdFJ1bm5lciAmJiBVSUhlbHBlci5hY3RpdmF0ZUVsZW1lbnQoaW5w
dXQpLCBpbnB1dCwgImZvY3VzIik7CisKKyAgICBhd2FpdCBVSUhlbHBlci5jYWxsRnVuY3Rpb25B
bmRXYWl0Rm9yRXZlbnQoKCkgPT4gd2luZG93LnRlc3RSdW5uZXIgJiYgVUlIZWxwZXIua2V5RG93
bigidyIpLCBpbnB1dCwgImlucHV0Iik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiaW5wdXQiKS52YWx1ZScsICJ3Iik7CisKKyAgICBhd2FpdCBV
SUhlbHBlci5jYWxsRnVuY3Rpb25BbmRXYWl0Rm9yRXZlbnQoKCkgPT4gd2luZG93LnRlc3RSdW5u
ZXIgJiYgVUlIZWxwZXIua2V5RG93bigiXGIiKSwgaW5wdXQsICJpbnB1dCIpOworICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygnZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImlucHV0IikudmFsdWUn
LCAiIik7CisKKyAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJ0ZXN0LWNvbnRhaW5lciIpKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKworZGVz
Y3JpcHRpb24oIlRoaXMgdGVzdHMgdXNpbmcgdGhlIHNvZnR3YXJlIGtleWJvYXJkIGFuZCBwcmVz
c2luZyAndycgdGhlbiA8a2JkPmJhY2tzcGFjZTwva2JkPiBkZWxldGVzIHRoZSAndycgYW5kIGRv
ZXMgbm90IGNhdXNlIGFuIGFzc2VydGlvbiBmYWlsdXJlIGluIGEgZGVidWcgYnVpbGQuIikKK2lu
cHV0LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLCBhcHBlbmRBTmV3bGluZSk7CisKK3J1blRl
c3QoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9p
b3MvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBiNDRiMmJmMTViOS4uZTkwMWQzZTJlODAgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zCkBAIC04LDYgKzgsNyBAQAog
CiBhY2Nlc3NpYmlsaXR5L2lvcy1zaW11bGF0b3IgWyBQYXNzIF0KIGRpc3BsYXlsaXN0cyBbIFBh
c3MgXQorZWRpdGluZy9kZWxldGluZy9pb3MgWyBQYXNzIF0KIGh0dHAvdGVzdHMvcXVpY2tsb29r
IFsgUGFzcyBdCiBtZWRpYS9pb3MgWyBQYXNzIF0KIHF1aWNrbG9vayBbIFBhc3MgXQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpp
bmRleCAyMjU2NTM2YjQyNi4uYzRkNDY2ODYzNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzEgQEAK
KzIwMjAtMDMtMjQgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAg
IFtpT1NdIEFTU0VSVElPTiBGQUlMVVJFOiAhaXNNaXNzaW5nUG9zdExheW91dERhdGEgaW4gV2Vi
S2l0OjpFZGl0b3JTdGF0ZTo6cG9zdExheW91dERhdGEoKQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk5OTYwCisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS81MzMyMzk2Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAg
ICAgUmVmYWN0b3IgdGhlIGNvbXB1dGF0aW9uIG9mIGVkaXRvciBzdGF0ZSBzbyB0aGF0IHdlIGNh
biByZXF1ZXN0IHRoYXQgYSBsYXlvdXQgYmUgcGVyZm9ybWVkCisgICAgICAgIGVhY2ggdGltZSB3
ZSBjb21wdXRlIHRoZSBlZGl0b3Igc3RhdGUgYXMgcGFydCBvZiBhc2tpbmcgdGhlIFVJIHByb2Nl
c3MgdG8gaW50ZXJwcmV0IGEga2V5CisgICAgICAgIGV2ZW50LiBUaGUgZnVsbCAocmVhZDogYWZ0
ZXIgbGF5b3V0KSBlZGl0b3Igc3RhdGUgaXMgbmVlZGVkIGZvciBVSUtpdCB0byBwZXJmb3JtIGEg
ZGVsZXRpb24KKyAgICAgICAgYmVjYXVzZSBVSUtpdCB3YW50cyB0byBrbm93IGhvdyBtYW55IGNo
YXJhY3RlcnMgYXJlIGJlZm9yZSB0aGUgc2VsZWN0aW9uLiBPdGhlcndpc2UsIHdlIGhpdAorICAg
ICAgICBhbiBhc3NlcnQgZHVlIHRvIHRoZSBmYWN0IHRoZSBsYXN0IGVkaXRvciBzdGF0ZSBzZW50
ICh3aGVuIHRoZSBXZWIgcHJvY2VzcyBhc2tlZCB0aGUgVUkgcHJvY2VzcworICAgICAgICB0byBp
bnRlcnByZXQgdGhlIGtleSkgaXMgbWlzc2luZyBsYXlvdXQgZGF0YS4KKworICAgICAgICBUaGUg
cmVmYWN0b3JpbmcgYWxzbyBtb3ZlcyB0aGUgQ29jb2EtY29tbW9uIGNvZGUgb3V0IG9mIHRoZSBw
bGF0Zm9ybS1pbmRlcGVuZGVudCBXZWJQYWdlLmNwcAorICAgICAgICBmaWxlIGludG8gV2ViUGFn
ZUNvY29hLm1tLgorCisgICAgICAgIE9uZSBzaWRlIGVmZmVjdCBvZiB0aGUgcmVmYWN0b3Jpbmcg
aXMgdGhhdCB3ZSBubyBsb25nZXIgYWxsb3cgdGhlIHBsYXRmb3JtRWRpdG9yU3RhdGUoKSBmdW5j
dGlvbgorICAgICAgICB0byBvdmVycmlkZSB0aGUgaXNNaXNzaW5nUG9zdExheW91dERhdGEgYml0
LiBDdXJyZW50bHkgaXQgY2FuIGV2ZW4gdGhvdWdoIHRoZSBjYWxsaW5nIGNvZGUsIHRoZQorICAg
ICAgICBwbGF0Zm9ybSBpbmRlcGVuZGVudCBjb2RlIChQSUUpIGluIFdlYlBhZ2UsIG1heSBoYXZl
IGF0dGFjaGVkIGxheW91dCBkYXRhLiBOb3cgdGhlIFBJRSBjb2RlIHNldHMKKyAgICAgICAgdGhp
cyBiaXQgaWYgaXQgYXR0YWNoZWQgbGF5b3V0IGRhdGEgYW5kIHRoZSBwbGF0Zm9ybUVkaXRvclN0
YXRlKCkgZnVuY3Rpb24gb25seSBhdHRhY2hlcyBtb3JlCisgICAgICAgIGxheW91dCBkYXRhIGlm
IHRoYXQgYml0IGlzIHNldC4gcGxhdGZvcm1FZGl0b3JTdGF0ZSgpIG5ldmVyIHVuc2V0cyB0aGF0
IGJpdCAoaS5lLiBzZXRzIGlzTWlzc2luZ1Bvc3RMYXlvdXREYXRhCisgICAgICAgIHRvIHRydWUp
LgorCisgICAgICAgIFRoZSBwYXRjaCBhbHNvIHJlbW92ZXMgbV9pc0VkaXRvclN0YXRlTWlzc2lu
Z1Bvc3RMYXlvdXREYXRhIGluIFdlYlBhZ2UuaC4gVGhpcyBpbnN0YW5jZSB2YXJpYWJsZQorICAg
ICAgICBoYXMgYmVlbiB1bnVzZWQgc2luY2UgPGh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5n
ZXNldC8yMjEwNjQvd2Via2l0Pi4gQWxzbyB3ZSBoYXZlbid0IGJlZW4gdXNpbmcKKyAgICAgICAg
SW5jbHVkZVBvc3RMYXlvdXREYXRhSGludDo6Tm8gc2luY2UgdGhlIGxhc3QgcmVmZXJlbmNlIHRv
IGl0IHdhcyByZW1vdmVkIGluIDxodHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjQ0
NDk0L3dlYmtpdD4uCisKKyAgICAgICAgSSBhbHNvIHJlbmFtZWQgcGxhdGZvcm1FZGl0b3JTdGF0
ZSgpIHRvIGdldFBsYXRmb3JtRWRpdG9yU3RhdGUoKSBzaW5jZSBpdCBoYXMgYW4gb3V0IGFyZ3Vt
ZW50LgorCisgICAgICAgIFRlc3Q6IGVkaXRpbmcvZGVsZXRpbmcvaW9zL2JhY2tzcGFjZS1sYXN0
LWNoYXJhY3Rlci5odG1sCisKKyAgICAgICAgKiBTaGFyZWQvRWRpdG9yU3RhdGUuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RWRpdG9yU3RhdGUuY3BwOgorICAgICAgICAo
d2Via2l0RWRpdG9yU3RhdGVDcmVhdGUpOiBJbml0aWFsaXplIF9XZWJLaXRFZGl0b3JTdGF0ZVBy
aXZhdGU6OnR5cGluZ0F0dHJpYnV0ZXMgdG8gV0VCS0lUX0VESVRPUl9UWVBJTkdfQVRUUklCVVRF
X05PTkUuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5t
bToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0UGxhdGZvcm1FZGl0b3JTdGF0ZUNvbW1v
biBjb25zdCk6IEFkZGVkLiBNb3ZlZCBDb2NvYS1jb21tb24gY29kZSBmcm9tIFdlYlBhZ2UuY3Bw
IHRvIGhlcmUuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjplZGl0b3JTdGF0ZSBjb25zdCk6IE1vdmUgQ29jb2EtY29t
bW9uIGNvZGUgdG8gV2ViUGFnZUNvY29hLm1tLiBDaGFuZ2UgZW51bSB0bworICAgICAgICB0cmFj
ayB3aGV0aGVyIGEgbGF5b3V0IHNob3VsZCBiZSBwZXJmb3JtZWQuIEtlZXAgdGhlIGN1cnJlbnQg
YmVoYXZpb3Igb2Ygb25seSBpbmNsdWRpbmcgcG9zdCBsYXlvdXQKKyAgICAgICAgZGF0YSBpZiB0
aGUgZnJhbWUgdmlldyBkb2VzIG5vdCBuZWVkIGEgbGF5b3V0LiBUaGlzIGJlaGF2aW9yIGlzIGVu
Y29kZWQgaW4gdGhlIGVudW1lcmF0b3IgU2hvdWxkUGVyZm9ybUxheW91dDo6RGVmYXVsdC4KKyAg
ICAgICAgd2hpY2ggaXMgdGhlIGRlZmF1bHQgYXJndW1lbnQgdmFsdWUgZm9yIHRoZSBhcmd1bWVu
dCBzaG91bGRQZXJmb3JtTGF5b3V0LgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtTmVlZHNMYXlvdXRGb3JF
ZGl0b3JTdGF0ZSBjb25zdCk6IEFkZGVkLiBOb24tQ29jb2EgcG9ydCBpbXBsZW1lbnRhdGlvbgor
ICAgICAgICB0aGF0IHJldHVybnMgZmFsc2UuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L2dsaWIvV2ViUGFnZUdMaWIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRQbGF0
Zm9ybUVkaXRvclN0YXRlIGNvbnN0KTogRWFybHkgcmV0dXJuIGlmIGlzTWlzc2luZ1Bvc3RMYXlv
dXREYXRhIGlzIHRydWUuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtRWRpdG9y
U3RhdGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3Mv
V2ViUGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGxhdGZvcm1OZWVkc0xh
eW91dEZvckVkaXRvclN0YXRlIGNvbnN0KTogQWRkZWQuIEtlZXAgdGhlIGN1cnJlbnQgYmVoYXZp
b3Igb2YKKyAgICAgICAgcGVyZm9ybWluZyBhIGxheW91dCBpZiB3ZSBoYXZlIGEgY29tcG9zaXRp
b24gb3IgYSBoYXJkd2FyZSBrZXlib2FyZCBpcyBhdHRhY2hlZC4KKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6Z2V0UGxhdGZvcm1FZGl0b3JTdGF0ZSBjb25zdCk6IENhbGwgcGxhdGZvcm1FZGl0
b3JTdGF0ZUNvbW1vbigpLiBCYWlsIG91dCBlYXJseQorICAgICAgICBpZiBpc01pc3NpbmdQb3N0
TGF5b3V0RGF0YSBpcyB0cnVlLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpoYW5kbGVFZGl0
aW5nS2V5Ym9hcmRFdmVudCk6IFRoZSBpbXBvcnRhbnQgcGFydCBvZiB0aGlzIHBhdGNoLiBSZXF1
ZXN0IGEgbGF5b3V0CisgICAgICAgIHdoZW4gY29tcHV0aW5nIHRoZSBlZGl0b3Igc3RhdGUgdGhh
dCB3ZSB3aWxsIHNlbmQgdG8gdGhlIFVJIHByb2Nlc3MuCisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OnBsYXRmb3JtRWRpdG9yU3RhdGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6Z2V0UGxhdGZvcm1FZGl0b3JTdGF0ZSBjb25zdCk6IENhbGwgcGxhdGZvcm1FZGl0b3JTdGF0
ZUNvbW1vbigpLiBCYWlsIG91dCBlYXJseQorICAgICAgICBpZiBpc01pc3NpbmdQb3N0TGF5b3V0
RGF0YSBpcyB0cnVlLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwbGF0Zm9ybUVkaXRvclN0
YXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvcGxheXN0
YXRpb24vV2ViUGFnZVBsYXlTdGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
Z2V0UGxhdGZvcm1FZGl0b3JTdGF0ZSBjb25zdCk6IFVwZGF0ZSBhcyBuZWVkZWQuCisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtRWRpdG9yU3RhdGUgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS93aW4vV2ViUGFnZVdpbi5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OmdldFBsYXRmb3JtRWRpdG9yU3RhdGUgY29uc3QpOiBVcGRhdGUg
YXMgbmVlZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwbGF0Zm9ybUVkaXRvclN0YXRl
IGNvbnN0KTogRGVsZXRlZC4KKwogMjAyMC0wMy0yNCAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVy
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZWZhY3RvciBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OnJlZ2lzdHJhYmxlRG9tYWluc1RvRGVsZXRlT3JSZXN0cmljdFdlYnNpdGVEYXRhRm9yKCkg
dG8gcmV0dXJuIGEgc3RydWN0IGluc3RlYWQgb2YgYSBWZWN0b3Igb2YgcGFpcnMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRvclN0YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9FZGl0b3JTdGF0ZS5oCmluZGV4IDZmYWE3Y2U4MTUxLi5iMzk2MDc3ZTU3NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvRWRpdG9yU3RhdGUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9FZGl0b3JTdGF0ZS5oCkBAIC03NCw3ICs3NCw3IEBAIHN0cnVjdCBFZGl0b3JT
dGF0ZSB7CiAgICAgYm9vbCBpc0luUGFzc3dvcmRGaWVsZCB7IGZhbHNlIH07CiAgICAgYm9vbCBp
c0luUGx1Z2luIHsgZmFsc2UgfTsKICAgICBib29sIGhhc0NvbXBvc2l0aW9uIHsgZmFsc2UgfTsK
LSAgICBib29sIGlzTWlzc2luZ1Bvc3RMYXlvdXREYXRhIHsgZmFsc2UgfTsKKyAgICBib29sIGlz
TWlzc2luZ1Bvc3RMYXlvdXREYXRhIHsgdHJ1ZSB9OwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICBXZWJDb3JlOjpJbnRSZWN0IGZpcnN0TWFya2VkUmVjdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEVkaXRvclN0YXRlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEVkaXRvclN0YXRlLmNwcAppbmRl
eCBmZDkxYmY0ZTBmNi4uMGNjMDg0ZWZhZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdEVkaXRvclN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRFZGl0b3JTdGF0ZS5jcHAKQEAgLTEwOSw2ICsxMDks
NyBAQCBXZWJLaXRFZGl0b3JTdGF0ZSogd2Via2l0RWRpdG9yU3RhdGVDcmVhdGUoV2ViUGFnZVBy
b3h5JiBwYWdlKQogewogICAgIFdlYktpdEVkaXRvclN0YXRlKiBlZGl0b3JTdGF0ZSA9IFdFQktJ
VF9FRElUT1JfU1RBVEUoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX0VESVRPUl9TVEFURSwgbnVs
bHB0cikpOwogICAgIGVkaXRvclN0YXRlLT5wcml2LT5wYWdlID0gJnBhZ2U7CisgICAgZWRpdG9y
U3RhdGUtPnByaXYtPnR5cGluZ0F0dHJpYnV0ZXMgPSBXRUJLSVRfRURJVE9SX1RZUElOR19BVFRS
SUJVVEVfTk9ORTsKICAgICB3ZWJraXRFZGl0b3JTdGF0ZUNoYW5nZWQoZWRpdG9yU3RhdGUsIHBh
Z2UuZWRpdG9yU3RhdGUoKSk7CiAgICAgcmV0dXJuIGVkaXRvclN0YXRlOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1t
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1t
CmluZGV4IDU2NjFhMDRjNWQxLi41OGJiOTU2MGRhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQpAQCAtMzYsMTIg
KzM2LDE1IEBACiAjaW1wb3J0ICJXZWJSZW1vdGVPYmplY3RSZWdpc3RyeS5oIgogI2ltcG9ydCA8
cGFsL3NwaS9jb2NvYS9MYXVuY2hTZXJ2aWNlc1NQSS5oPgogI2ltcG9ydCA8V2ViQ29yZS9EaWN0
aW9uYXJ5TG9va3VwLmg+CisjaW1wb3J0IDxXZWJDb3JlL0VkaXRpbmcuaD4KICNpbXBvcnQgPFdl
YkNvcmUvRWRpdG9yLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0V2ZW50SGFuZGxlci5oPgogI2ltcG9y
dCA8V2ViQ29yZS9FdmVudE5hbWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZvY3VzQ29udHJvbGxl
ci5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KICNpbXBvcnQgPFdlYkNvcmUvSFRN
TENvbnZlcnRlci5oPgorI2ltcG9ydCA8V2ViQ29yZS9IVE1MT0xpc3RFbGVtZW50Lmg+CisjaW1w
b3J0IDxXZWJDb3JlL0hUTUxVTGlzdEVsZW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvSGl0VGVz
dFJlc3VsdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Ob2RlUmVuZGVyU3R5bGUuaD4KICNpbXBvcnQg
PFdlYkNvcmUvUGF5bWVudENvb3JkaW5hdG9yLmg+CkBAIC0zMTEsNiArMzE0LDcgQEAgUmV0YWlu
UHRyPENGRGF0YVJlZj4gV2ViUGFnZTo6cGRmU25hcHNob3RBdFNpemUoSW50UmVjdCByZWN0LCBJ
bnRTaXplIGJpdG1hcFNpemUKICAgICByZXR1cm4gZGF0YTsKIH0KIAorCiB2b2lkIFdlYlBhZ2U6
OmdldFByb2Nlc3NEaXNwbGF5TmFtZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICNpZiBQTEFURk9STShNQUMpCkBAIC0zMjAsNiArMzI0
LDcxIEBAIHZvaWQgV2ViUGFnZTo6Z2V0UHJvY2Vzc0Rpc3BsYXlOYW1lKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBsZXRpCiAjZW5kaWYKIH0KIAordm9pZCBXZWJQYWdl
OjpnZXRQbGF0Zm9ybUVkaXRvclN0YXRlQ29tbW9uKGNvbnN0IEZyYW1lJiBmcmFtZSwgRWRpdG9y
U3RhdGUmIHJlc3VsdCkgY29uc3QKK3sKKyAgICBpZiAocmVzdWx0LmlzTWlzc2luZ1Bvc3RMYXlv
dXREYXRhKQorICAgICAgICByZXR1cm47CisKKyAgICBjb25zdCBhdXRvJiBzZWxlY3Rpb24gPSBm
cmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKTsKKworICAgIGlmICghcmVzdWx0LmlzQ29udGVu
dEVkaXRhYmxlIHx8IHNlbGVjdGlvbi5pc05vbmUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
YXV0byYgcG9zdExheW91dERhdGEgPSByZXN1bHQucG9zdExheW91dERhdGEoKTsKKyAgICBpZiAo
YXV0byBlZGl0aW5nU3R5bGUgPSBFZGl0aW5nU3R5bGU6OnN0eWxlQXRTZWxlY3Rpb25TdGFydChz
ZWxlY3Rpb24pKSB7CisgICAgICAgIGlmIChlZGl0aW5nU3R5bGUtPmhhc1N0eWxlKENTU1Byb3Bl
cnR5Rm9udFdlaWdodCwgImJvbGQiX3MpKQorICAgICAgICAgICAgcG9zdExheW91dERhdGEudHlw
aW5nQXR0cmlidXRlcyB8PSBBdHRyaWJ1dGVCb2xkOworCisgICAgICAgIGlmIChlZGl0aW5nU3R5
bGUtPmhhc1N0eWxlKENTU1Byb3BlcnR5Rm9udFN0eWxlLCAiaXRhbGljIl9zKSB8fCBlZGl0aW5n
U3R5bGUtPmhhc1N0eWxlKENTU1Byb3BlcnR5Rm9udFN0eWxlLCAib2JsaXF1ZSJfcykpCisgICAg
ICAgICAgICBwb3N0TGF5b3V0RGF0YS50eXBpbmdBdHRyaWJ1dGVzIHw9IEF0dHJpYnV0ZUl0YWxp
Y3M7CisKKyAgICAgICAgaWYgKGVkaXRpbmdTdHlsZS0+aGFzU3R5bGUoQ1NTUHJvcGVydHlXZWJr
aXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCwgInVuZGVybGluZSJfcykpCisgICAgICAgICAgICBw
b3N0TGF5b3V0RGF0YS50eXBpbmdBdHRyaWJ1dGVzIHw9IEF0dHJpYnV0ZVVuZGVybGluZTsKKwor
ICAgICAgICBpZiAoYXV0byogc3R5bGVQcm9wZXJ0aWVzID0gZWRpdGluZ1N0eWxlLT5zdHlsZSgp
KSB7CisgICAgICAgICAgICBib29sIGlzTGVmdFRvUmlnaHQgPSBzdHlsZVByb3BlcnRpZXMtPnBy
b3BlcnR5QXNWYWx1ZUlEKENTU1Byb3BlcnR5RGlyZWN0aW9uKSA9PSBDU1NWYWx1ZUx0cjsKKyAg
ICAgICAgICAgIHN3aXRjaCAoc3R5bGVQcm9wZXJ0aWVzLT5wcm9wZXJ0eUFzVmFsdWVJRChDU1NQ
cm9wZXJ0eVRleHRBbGlnbikpIHsKKyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVSaWdodDoKKyAg
ICAgICAgICAgIGNhc2UgQ1NTVmFsdWVXZWJraXRSaWdodDoKKyAgICAgICAgICAgICAgICBwb3N0
TGF5b3V0RGF0YS50ZXh0QWxpZ25tZW50ID0gUmlnaHRBbGlnbm1lbnQ7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlTGVmdDoKKyAgICAgICAgICAgIGNh
c2UgQ1NTVmFsdWVXZWJraXRMZWZ0OgorICAgICAgICAgICAgICAgIHBvc3RMYXlvdXREYXRhLnRl
eHRBbGlnbm1lbnQgPSBMZWZ0QWxpZ25tZW50OworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgY2FzZSBDU1NWYWx1ZUNlbnRlcjoKKyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVX
ZWJraXRDZW50ZXI6CisgICAgICAgICAgICAgICAgcG9zdExheW91dERhdGEudGV4dEFsaWdubWVu
dCA9IENlbnRlckFsaWdubWVudDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IGNhc2UgQ1NTVmFsdWVKdXN0aWZ5OgorICAgICAgICAgICAgICAgIHBvc3RMYXlvdXREYXRhLnRl
eHRBbGlnbm1lbnQgPSBKdXN0aWZpZWRBbGlnbm1lbnQ7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlU3RhcnQ6CisgICAgICAgICAgICAgICAgcG9zdExh
eW91dERhdGEudGV4dEFsaWdubWVudCA9IGlzTGVmdFRvUmlnaHQgPyBMZWZ0QWxpZ25tZW50IDog
UmlnaHRBbGlnbm1lbnQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNl
IENTU1ZhbHVlRW5kOgorICAgICAgICAgICAgICAgIHBvc3RMYXlvdXREYXRhLnRleHRBbGlnbm1l
bnQgPSBpc0xlZnRUb1JpZ2h0ID8gUmlnaHRBbGlnbm1lbnQgOiBMZWZ0QWxpZ25tZW50OworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChhdXRvIHRleHRDb2xvciA9
IHN0eWxlUHJvcGVydGllcy0+cHJvcGVydHlBc0NvbG9yKENTU1Byb3BlcnR5Q29sb3IpKQorICAg
ICAgICAgICAgICAgIHBvc3RMYXlvdXREYXRhLnRleHRDb2xvciA9ICp0ZXh0Q29sb3I7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBpZiAoYXV0byogZW5jbG9zaW5nTGlzdEVsZW1lbnQgPSBlbmNs
b3NpbmdMaXN0KHNlbGVjdGlvbi5zdGFydCgpLmNvbnRhaW5lck5vZGUoKSkpIHsKKyAgICAgICAg
aWYgKGlzPEhUTUxVTGlzdEVsZW1lbnQ+KCplbmNsb3NpbmdMaXN0RWxlbWVudCkpCisgICAgICAg
ICAgICBwb3N0TGF5b3V0RGF0YS5lbmNsb3NpbmdMaXN0VHlwZSA9IFVub3JkZXJlZExpc3Q7Cisg
ICAgICAgIGVsc2UgaWYgKGlzPEhUTUxPTGlzdEVsZW1lbnQ+KCplbmNsb3NpbmdMaXN0RWxlbWVu
dCkpCisgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS5lbmNsb3NpbmdMaXN0VHlwZSA9IE9yZGVy
ZWRMaXN0OworICAgICAgICBlbHNlCisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICB9CisKKyAgICBwb3N0TGF5b3V0RGF0YS5iYXNlV3JpdGluZ0RpcmVjdGlvbiA9IGZyYW1l
LmVkaXRvcigpLmJhc2VXcml0aW5nRGlyZWN0aW9uRm9yU2VsZWN0aW9uU3RhcnQoKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggMWNkMGIzMGM1
ODguLmU5YmQxOTQzY2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcApAQCAtMTc4LDEyICsxNzgsMTAgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0hUTUxJ
bnB1dEVsZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hUTUxNZW51RWxlbWVudC5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvSFRNTE1lbnVJdGVtRWxlbWVudC5oPgotI2luY2x1ZGUgPFdlYkNvcmUv
SFRNTE9MaXN0RWxlbWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSFRNTFBsdWdJbkVsZW1lbnQu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0hUTUxTZWxlY3RFbGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IVE1MVGV4
dEZvcm1Db250cm9sRWxlbWVudC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvSFRNTFVMaXN0RWxlbWVu
dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSGlzdG9yeUNvbnRyb2xsZXIuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0hpc3RvcnlJdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IaXRUZXN0UmVzdWx0Lmg+
CkBAIC0xMDM2LDkgKzEwMzQsMTAgQEAgV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5IFdlYlBhZ2U6
OnJlc29sdmVXZWJHTFBvbGljeUZvclVSTChXZWJGcmFtZSosIGNvbnN0IFVSTCYKIH0KICNlbmRp
ZgogCi1FZGl0b3JTdGF0ZSBXZWJQYWdlOjplZGl0b3JTdGF0ZShJbmNsdWRlUG9zdExheW91dERh
dGFIaW50IHNob3VsZEluY2x1ZGVQb3N0TGF5b3V0RGF0YSkgY29uc3QKK0VkaXRvclN0YXRlIFdl
YlBhZ2U6OmVkaXRvclN0YXRlKFNob3VsZFBlcmZvcm1MYXlvdXQgc2hvdWxkUGVyZm9ybUxheW91
dCkgY29uc3QKIHsKLSAgICBGcmFtZSYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigp
LmZvY3VzZWRPck1haW5GcmFtZSgpOworICAgIC8vIFJlZiB0aGUgZnJhbWUgYmVjYXVzZSB0aGlz
IGZ1bmN0aW9uIG1heSBwZXJmb3JtIGxheW91dCwgd2hpY2ggbWF5IGNhdXNlIGZyYW1lIGRlc3Ry
dWN0aW9uLgorICAgIFJlZjxGcmFtZT4gZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigp
LmZvY3VzZWRPck1haW5GcmFtZSgpOwogCiAgICAgRWRpdG9yU3RhdGUgcmVzdWx0OwogCkBAIC0x
MDUxLDggKzEwNTAsOCBAQCBFZGl0b3JTdGF0ZSBXZWJQYWdlOjplZGl0b3JTdGF0ZShJbmNsdWRl
UG9zdExheW91dERhdGFIaW50IHNob3VsZEluY2x1ZGVQb3N0TGF5bwogICAgICAgICB9CiAgICAg
fQogCi0gICAgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uID0gZnJhbWUuc2VsZWN0
aW9uKCkuc2VsZWN0aW9uKCk7Ci0gICAgY29uc3QgRWRpdG9yJiBlZGl0b3IgPSBmcmFtZS5lZGl0
b3IoKTsKKyAgICBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24gPSBmcmFtZS0+c2Vs
ZWN0aW9uKCkuc2VsZWN0aW9uKCk7CisgICAgY29uc3QgRWRpdG9yJiBlZGl0b3IgPSBmcmFtZS0+
ZWRpdG9yKCk7CiAKICAgICByZXN1bHQuc2VsZWN0aW9uSXNOb25lID0gc2VsZWN0aW9uLmlzTm9u
ZSgpOwogICAgIHJlc3VsdC5zZWxlY3Rpb25Jc1JhbmdlID0gc2VsZWN0aW9uLmlzUmFuZ2UoKTsK
QEAgLTEwNjIsMTEgKzEwNjEsMTUgQEAgRWRpdG9yU3RhdGUgV2ViUGFnZTo6ZWRpdG9yU3RhdGUo
SW5jbHVkZVBvc3RMYXlvdXREYXRhSGludCBzaG91bGRJbmNsdWRlUG9zdExheW8KICAgICByZXN1
bHQuaGFzQ29tcG9zaXRpb24gPSBlZGl0b3IuaGFzQ29tcG9zaXRpb24oKTsKICAgICByZXN1bHQu
c2hvdWxkSWdub3JlU2VsZWN0aW9uQ2hhbmdlcyA9IGVkaXRvci5pZ25vcmVTZWxlY3Rpb25DaGFu
Z2VzKCkgfHwgKGVkaXRvci5jbGllbnQoKSAmJiAhZWRpdG9yLmNsaWVudCgpLT5zaG91bGRSZXZl
YWxDdXJyZW50U2VsZWN0aW9uQWZ0ZXJJbnNlcnRpb24oKSk7CiAKLSAgICBpZiAoYXV0byogZG9j
dW1lbnQgPSBmcmFtZS5kb2N1bWVudCgpKQotICAgICAgICByZXN1bHQub3JpZ2luSWRlbnRpZmll
ckZvclBhc3RlYm9hcmQgPSBkb2N1bWVudC0+b3JpZ2luSWRlbnRpZmllckZvclBhc3RlYm9hcmQo
KTsKKyAgICBSZWY8RG9jdW1lbnQ+IGRvY3VtZW50ID0gKmZyYW1lLT5kb2N1bWVudCgpOworICAg
IHJlc3VsdC5vcmlnaW5JZGVudGlmaWVyRm9yUGFzdGVib2FyZCA9IGRvY3VtZW50LT5vcmlnaW5J
ZGVudGlmaWVyRm9yUGFzdGVib2FyZCgpOworCisgICAgaWYgKHNob3VsZFBlcmZvcm1MYXlvdXQg
PT0gU2hvdWxkUGVyZm9ybUxheW91dDo6WWVzIHx8IHBsYXRmb3JtTmVlZHNMYXlvdXRGb3JFZGl0
b3JTdGF0ZShmcmFtZSkpCisgICAgICAgIGRvY3VtZW50LT51cGRhdGVMYXlvdXQoKTsgLy8gTWF5
IGNhdXNlIGRvY3VtZW50IGRlc3RydWN0aW9uCisKKyAgICBpZiAoYXV0byogZnJhbWVWaWV3ID0g
ZG9jdW1lbnQtPnZpZXcoKTsgZnJhbWVWaWV3ICYmICFmcmFtZVZpZXctPm5lZWRzTGF5b3V0KCkp
IHsKKyAgICAgICAgcmVzdWx0LmlzTWlzc2luZ1Bvc3RMYXlvdXREYXRhID0gZmFsc2U7CiAKLSAg
ICBib29sIGNhbkluY2x1ZGVQb3N0TGF5b3V0RGF0YSA9IGZyYW1lLnZpZXcoKSAmJiAhZnJhbWUu
dmlldygpLT5uZWVkc0xheW91dCgpOwotICAgIGlmIChzaG91bGRJbmNsdWRlUG9zdExheW91dERh
dGEgPT0gSW5jbHVkZVBvc3RMYXlvdXREYXRhSGludDo6WWVzICYmIGNhbkluY2x1ZGVQb3N0TGF5
b3V0RGF0YSkgewogICAgICAgICBhdXRvJiBwb3N0TGF5b3V0RGF0YSA9IHJlc3VsdC5wb3N0TGF5
b3V0RGF0YSgpOwogICAgICAgICBwb3N0TGF5b3V0RGF0YS5jYW5DdXQgPSBlZGl0b3IuY2FuQ3V0
KCk7CiAgICAgICAgIHBvc3RMYXlvdXREYXRhLmNhbkNvcHkgPSBlZGl0b3IuY2FuQ29weSgpOwpA
QCAtMTA3NCw2NiArMTA3Nyw5IEBAIEVkaXRvclN0YXRlIFdlYlBhZ2U6OmVkaXRvclN0YXRlKElu
Y2x1ZGVQb3N0TGF5b3V0RGF0YUhpbnQgc2hvdWxkSW5jbHVkZVBvc3RMYXlvCiAKICAgICAgICAg
aWYgKG1fbmVlZHNGb250QXR0cmlidXRlcykKICAgICAgICAgICAgIHBvc3RMYXlvdXREYXRhLmZv
bnRBdHRyaWJ1dGVzID0gZWRpdG9yLmZvbnRBdHRyaWJ1dGVzQXRTZWxlY3Rpb25TdGFydCgpOwot
Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgICAgIGlmIChyZXN1bHQuaXNDb250ZW50RWRpdGFi
bGUgJiYgIXNlbGVjdGlvbi5pc05vbmUoKSkgewotICAgICAgICAgICAgaWYgKGF1dG8gZWRpdGlu
Z1N0eWxlID0gRWRpdGluZ1N0eWxlOjpzdHlsZUF0U2VsZWN0aW9uU3RhcnQoc2VsZWN0aW9uKSkg
ewotICAgICAgICAgICAgICAgIGlmIChlZGl0aW5nU3R5bGUtPmhhc1N0eWxlKENTU1Byb3BlcnR5
Rm9udFdlaWdodCwgImJvbGQiKSkKLSAgICAgICAgICAgICAgICAgICAgcG9zdExheW91dERhdGEu
dHlwaW5nQXR0cmlidXRlcyB8PSBBdHRyaWJ1dGVCb2xkOwotCi0gICAgICAgICAgICAgICAgaWYg
KGVkaXRpbmdTdHlsZS0+aGFzU3R5bGUoQ1NTUHJvcGVydHlGb250U3R5bGUsICJpdGFsaWMiKSB8
fCBlZGl0aW5nU3R5bGUtPmhhc1N0eWxlKENTU1Byb3BlcnR5Rm9udFN0eWxlLCAib2JsaXF1ZSIp
KQotICAgICAgICAgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS50eXBpbmdBdHRyaWJ1dGVzIHw9
IEF0dHJpYnV0ZUl0YWxpY3M7Ci0KLSAgICAgICAgICAgICAgICBpZiAoZWRpdGluZ1N0eWxlLT5o
YXNTdHlsZShDU1NQcm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0LCAidW5kZXJs
aW5lIikpCi0gICAgICAgICAgICAgICAgICAgIHBvc3RMYXlvdXREYXRhLnR5cGluZ0F0dHJpYnV0
ZXMgfD0gQXR0cmlidXRlVW5kZXJsaW5lOwotCi0gICAgICAgICAgICAgICAgaWYgKGF1dG8qIHN0
eWxlUHJvcGVydGllcyA9IGVkaXRpbmdTdHlsZS0+c3R5bGUoKSkgewotICAgICAgICAgICAgICAg
ICAgICBib29sIGlzTGVmdFRvUmlnaHQgPSBzdHlsZVByb3BlcnRpZXMtPnByb3BlcnR5QXNWYWx1
ZUlEKENTU1Byb3BlcnR5RGlyZWN0aW9uKSA9PSBDU1NWYWx1ZUx0cjsKLSAgICAgICAgICAgICAg
ICAgICAgc3dpdGNoIChzdHlsZVByb3BlcnRpZXMtPnByb3BlcnR5QXNWYWx1ZUlEKENTU1Byb3Bl
cnR5VGV4dEFsaWduKSkgewotICAgICAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlUmlnaHQ6
Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVXZWJraXRSaWdodDoKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHBvc3RMYXlvdXREYXRhLnRleHRBbGlnbm1lbnQgPSBSaWdodEFsaWdu
bWVudDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAg
ICBjYXNlIENTU1ZhbHVlTGVmdDoKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVdl
YmtpdExlZnQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS50ZXh0QWxp
Z25tZW50ID0gTGVmdEFsaWdubWVudDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlQ2VudGVyOgotICAgICAgICAgICAgICAg
ICAgICBjYXNlIENTU1ZhbHVlV2Via2l0Q2VudGVyOgotICAgICAgICAgICAgICAgICAgICAgICAg
cG9zdExheW91dERhdGEudGV4dEFsaWdubWVudCA9IENlbnRlckFsaWdubWVudDsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVl
SnVzdGlmeToKLSAgICAgICAgICAgICAgICAgICAgICAgIHBvc3RMYXlvdXREYXRhLnRleHRBbGln
bm1lbnQgPSBKdXN0aWZpZWRBbGlnbm1lbnQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVN0YXJ0OgotICAgICAgICAgICAg
ICAgICAgICAgICAgcG9zdExheW91dERhdGEudGV4dEFsaWdubWVudCA9IGlzTGVmdFRvUmlnaHQg
PyBMZWZ0QWxpZ25tZW50IDogUmlnaHRBbGlnbm1lbnQ7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUVuZDoKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHBvc3RMYXlvdXREYXRhLnRleHRBbGlnbm1lbnQgPSBpc0xlZnRUb1Jp
Z2h0ID8gUmlnaHRBbGlnbm1lbnQgOiBMZWZ0QWxpZ25tZW50OwotICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
ICAgICBpZiAoYXV0byB0ZXh0Q29sb3IgPSBzdHlsZVByb3BlcnRpZXMtPnByb3BlcnR5QXNDb2xv
cihDU1NQcm9wZXJ0eUNvbG9yKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHBvc3RMYXlvdXRE
YXRhLnRleHRDb2xvciA9ICp0ZXh0Q29sb3I7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICBpZiAoYXV0byogZW5jbG9zaW5nTGlzdEVsZW1lbnQgPSBlbmNs
b3NpbmdMaXN0KHNlbGVjdGlvbi5zdGFydCgpLmNvbnRhaW5lck5vZGUoKSkpIHsKLSAgICAgICAg
ICAgICAgICBpZiAoaXM8SFRNTFVMaXN0RWxlbWVudD4oKmVuY2xvc2luZ0xpc3RFbGVtZW50KSkK
LSAgICAgICAgICAgICAgICAgICAgcG9zdExheW91dERhdGEuZW5jbG9zaW5nTGlzdFR5cGUgPSBV
bm9yZGVyZWRMaXN0OwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGlzPEhUTUxPTGlzdEVsZW1l
bnQ+KCplbmNsb3NpbmdMaXN0RWxlbWVudCkpCi0gICAgICAgICAgICAgICAgICAgIHBvc3RMYXlv
dXREYXRhLmVuY2xvc2luZ0xpc3RUeXBlID0gT3JkZXJlZExpc3Q7Ci0gICAgICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgcG9zdExheW91dERhdGEuYmFzZVdyaXRpbmdEaXJlY3Rpb24g
PSBlZGl0b3IuYmFzZVdyaXRpbmdEaXJlY3Rpb25Gb3JTZWxlY3Rpb25TdGFydCgpOwotICAgICAg
ICB9Ci0jZW5kaWYKICAgICB9CiAKLSAgICBwbGF0Zm9ybUVkaXRvclN0YXRlKGZyYW1lLCByZXN1
bHQsIHNob3VsZEluY2x1ZGVQb3N0TGF5b3V0RGF0YSk7CisgICAgZ2V0UGxhdGZvcm1FZGl0b3JT
dGF0ZShmcmFtZSwgcmVzdWx0KTsKIAogICAgIG1fbGFzdEVkaXRvclN0YXRlV2FzQ29udGVudEVk
aXRhYmxlID0gcmVzdWx0LmlzQ29udGVudEVkaXRhYmxlID8gRWRpdG9yU3RhdGVJc0NvbnRlbnRF
ZGl0YWJsZTo6WWVzIDogRWRpdG9yU3RhdGVJc0NvbnRlbnRFZGl0YWJsZTo6Tm87CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCAwOWI2MDg0YjQ2My4u
MWQxNmM4NDM5ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmgKQEAgLTQ3OCw4ICs0NzgsOCBAQCBwdWJsaWM6CiAgICAgV2ViQ29yZTo6V2ViR0xMb2FkUG9s
aWN5IHJlc29sdmVXZWJHTFBvbGljeUZvclVSTChXZWJGcmFtZSosIGNvbnN0IFVSTCYpOwogI2Vu
ZGlmCiAgICAgCi0gICAgZW51bSBjbGFzcyBJbmNsdWRlUG9zdExheW91dERhdGFIaW50IHsgTm8s
IFllcyB9OwotICAgIEVkaXRvclN0YXRlIGVkaXRvclN0YXRlKEluY2x1ZGVQb3N0TGF5b3V0RGF0
YUhpbnQgPSBJbmNsdWRlUG9zdExheW91dERhdGFIaW50OjpZZXMpIGNvbnN0OworICAgIGVudW0g
Y2xhc3MgU2hvdWxkUGVyZm9ybUxheW91dCB7IERlZmF1bHQsIFllcyB9OworICAgIEVkaXRvclN0
YXRlIGVkaXRvclN0YXRlKFNob3VsZFBlcmZvcm1MYXlvdXQgPSBTaG91bGRQZXJmb3JtTGF5b3V0
OjpEZWZhdWx0KSBjb25zdDsKICAgICB2b2lkIHVwZGF0ZUVkaXRvclN0YXRlQWZ0ZXJMYXlvdXRJ
ZkVkaXRhYmlsaXR5Q2hhbmdlZCgpOwogCiAgICAgLy8gb3B0aW9ucyBhcmUgUmVuZGVyVHJlZUV4
dGVybmFsUmVwcmVzZW50YXRpb25CZWhhdmlvciB2YWx1ZXMuCkBAIC0xMzE2LDkgKzEzMTYsMTEg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOwogICAgIHZvaWQgcGxh
dGZvcm1SZWluaXRpYWxpemUoKTsKICAgICB2b2lkIHBsYXRmb3JtRGV0YWNoKCk7Ci0gICAgdm9p
ZCBwbGF0Zm9ybUVkaXRvclN0YXRlKFdlYkNvcmU6OkZyYW1lJiwgRWRpdG9yU3RhdGUmIHJlc3Vs
dCwgSW5jbHVkZVBvc3RMYXlvdXREYXRhSGludCkgY29uc3Q7CisgICAgdm9pZCBnZXRQbGF0Zm9y
bUVkaXRvclN0YXRlKFdlYkNvcmU6OkZyYW1lJiwgRWRpdG9yU3RhdGUmKSBjb25zdDsKKyAgICBi
b29sIHBsYXRmb3JtTmVlZHNMYXlvdXRGb3JFZGl0b3JTdGF0ZShjb25zdCBXZWJDb3JlOjpGcmFt
ZSYpIGNvbnN0OwogICAgIHZvaWQgcGxhdGZvcm1XaWxsUGVyZm9ybUVkaXRpbmdDb21tYW5kKCk7
CiAgICAgdm9pZCBzZW5kRWRpdG9yU3RhdGVVcGRhdGUoKTsKKyAgICB2b2lkIGdldFBsYXRmb3Jt
RWRpdG9yU3RhdGVDb21tb24oY29uc3QgV2ViQ29yZTo6RnJhbWUmLCBFZGl0b3JTdGF0ZSYpIGNv
bnN0OwogCiAjaWYgSEFWRShUT1VDSF9CQVIpCiAgICAgdm9pZCBzZW5kVG91Y2hCYXJNZW51RGF0
YUFkZGVkVXBkYXRlKFdlYkNvcmU6OkhUTUxNZW51RWxlbWVudCYpOwpAQCAtMjAwOSw3ICsyMDEx
LDYgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV9tYWluRnJhbWVQcm9ncmVzc0NvbXBsZXRlZCB7
IGZhbHNlIH07CiAgICAgYm9vbCBtX3Nob3VsZERpc3BhdGNoRmFrZU1vdXNlTW92ZUV2ZW50cyB7
IHRydWUgfTsKLSAgICBib29sIG1faXNFZGl0b3JTdGF0ZU1pc3NpbmdQb3N0TGF5b3V0RGF0YSB7
IGZhbHNlIH07CiAgICAgYm9vbCBtX2lzU2VsZWN0aW5nVGV4dFdoaWxlSW5zZXJ0aW5nQXN5bmNo
cm9ub3VzbHkgeyBmYWxzZSB9OwogCiAgICAgZW51bSBjbGFzcyBFZGl0b3JTdGF0ZUlzQ29udGVu
dEVkaXRhYmxlIHsgTm8sIFllcywgVW5zZXQgfTsKQEAgLTIwODEsNiArMjA4Miw3IEBAIHByaXZh
dGU6CiAKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIGlubGluZSB2b2lkIFdlYlBhZ2U6OnBs
YXRmb3JtV2lsbFBlcmZvcm1FZGl0aW5nQ29tbWFuZCgpIHsgfQoraW5saW5lIGJvb2wgV2ViUGFn
ZTo6cGxhdGZvcm1OZWVkc0xheW91dEZvckVkaXRvclN0YXRlKGNvbnN0IFdlYkNvcmU6OkZyYW1l
JikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2dsaWIvV2Vi
UGFnZUdMaWIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ2xpYi9XZWJQ
YWdlR0xpYi5jcHAKaW5kZXggZDU0NWI5OGZiY2UuLjRlODZmMDU1YThiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9nbGliL1dlYlBhZ2VHTGliLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9nbGliL1dlYlBhZ2VHTGliLmNwcApA
QCAtNjgsMTIgKzY4LDEwIEBAIHZvaWQgV2ViUGFnZTo6c2VuZE1lc3NhZ2VUb1dlYkV4dGVuc2lv
bihVc2VyTWVzc2FnZSYmIG1lc3NhZ2UpCiAgICAgc2VuZE1lc3NhZ2VUb1dlYkV4dGVuc2lvbldp
dGhSZXBseShXVEZNb3ZlKG1lc3NhZ2UpLCBbXShVc2VyTWVzc2FnZSYmKSB7IH0pOwogfQogCi12
b2lkIFdlYlBhZ2U6OnBsYXRmb3JtRWRpdG9yU3RhdGUoRnJhbWUmIGZyYW1lLCBFZGl0b3JTdGF0
ZSYgcmVzdWx0LCBJbmNsdWRlUG9zdExheW91dERhdGFIaW50IHNob3VsZEluY2x1ZGVQb3N0TGF5
b3V0RGF0YSkgY29uc3QKK3ZvaWQgV2ViUGFnZTo6Z2V0UGxhdGZvcm1FZGl0b3JTdGF0ZShGcmFt
ZSYgZnJhbWUsIEVkaXRvclN0YXRlJiByZXN1bHQpIGNvbnN0CiB7Ci0gICAgaWYgKHNob3VsZElu
Y2x1ZGVQb3N0TGF5b3V0RGF0YSA9PSBJbmNsdWRlUG9zdExheW91dERhdGFIaW50OjpObyB8fCAh
ZnJhbWUudmlldygpIHx8IGZyYW1lLnZpZXcoKS0+bmVlZHNMYXlvdXQoKSkgewotICAgICAgICBy
ZXN1bHQuaXNNaXNzaW5nUG9zdExheW91dERhdGEgPSB0cnVlOworICAgIGlmIChyZXN1bHQuaXNN
aXNzaW5nUG9zdExheW91dERhdGEgfHwgIWZyYW1lLnZpZXcoKSB8fCBmcmFtZS52aWV3KCktPm5l
ZWRzTGF5b3V0KCkpCiAgICAgICAgIHJldHVybjsKLSAgICB9CiAKICAgICBhdXRvJiBwb3N0TGF5
b3V0RGF0YSA9IHJlc3VsdC5wb3N0TGF5b3V0RGF0YSgpOwogICAgIHBvc3RMYXlvdXREYXRhLmNh
cmV0UmVjdEF0U3RhcnQgPSBmcmFtZS5zZWxlY3Rpb24oKS5hYnNvbHV0ZUNhcmV0Qm91bmRzKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFn
ZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9T
Lm1tCmluZGV4IDllNzUwMjIxNmM3Li40N2M2MjBkMDQ3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTIyMyw4ICsyMjMs
MjEgQEAgYm9vbCBXZWJQYWdlOjppc1RyYW5zcGFyZW50T3JGdWxseUNsaXBwZWQoY29uc3QgRWxl
bWVudCYgZWxlbWVudCkgY29uc3QKICAgICByZXR1cm4gcmVuZGVyZXItPmhhc05vbkVtcHR5Vmlz
aWJsZVJlY3RSZXNwZWN0aW5nUGFyZW50RnJhbWVzKCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6cGxh
dGZvcm1FZGl0b3JTdGF0ZShGcmFtZSYgZnJhbWUsIEVkaXRvclN0YXRlJiByZXN1bHQsIEluY2x1
ZGVQb3N0TGF5b3V0RGF0YUhpbnQgc2hvdWxkSW5jbHVkZVBvc3RMYXlvdXREYXRhKSBjb25zdAor
Ym9vbCBXZWJQYWdlOjpwbGF0Zm9ybU5lZWRzTGF5b3V0Rm9yRWRpdG9yU3RhdGUoY29uc3QgRnJh
bWUmIGZyYW1lKSBjb25zdAogeworICAgIC8vIElmIHdlIGhhdmUgYSBjb21wb3NpdGlvbiBvciBh
cmUgdXNpbmcgYSBoYXJkd2FyZSBrZXlib2FyZCB0aGVuIHdlIG5lZWQgdG8gc2VuZCB0aGUgZnVs
bAorICAgIC8vIGVkaXRvciBzbyB0aGF0IHRoZSBVSVByb2Nlc3MgY2FuIHVwZGF0ZSBVSSwgaW5j
bHVkaW5nIHRoZSBwb3NpdGlvbiBvZiB0aGUgY2FyZXQuCisgICAgYm9vbCBuZWVkc0xheW91dCA9
IGZyYW1lLmVkaXRvcigpLmhhc0NvbXBvc2l0aW9uKCk7CisjaWYgIVBMQVRGT1JNKE1BQ0NBVEFM
WVNUKQorICAgIG5lZWRzTGF5b3V0IHw9IG1fa2V5Ym9hcmRJc0F0dGFjaGVkOworI2VuZGlmCisg
ICAgcmV0dXJuIG5lZWRzTGF5b3V0OworfQorCit2b2lkIFdlYlBhZ2U6OmdldFBsYXRmb3JtRWRp
dG9yU3RhdGUoRnJhbWUmIGZyYW1lLCBFZGl0b3JTdGF0ZSYgcmVzdWx0KSBjb25zdAoreworICAg
IGdldFBsYXRmb3JtRWRpdG9yU3RhdGVDb21tb24oZnJhbWUsIHJlc3VsdCk7CisKICAgICBGcmFt
ZVZpZXcqIHZpZXcgPSBmcmFtZS52aWV3KCk7CiAgICAgaWYgKCF2aWV3KSB7CiAgICAgICAgIHJl
c3VsdC5pc01pc3NpbmdQb3N0TGF5b3V0RGF0YSA9IHRydWU7CkBAIC0yNTUsMTQgKzI2OCwxMSBA
QCB2b2lkIFdlYlBhZ2U6OnBsYXRmb3JtRWRpdG9yU3RhdGUoRnJhbWUmIGZyYW1lLCBFZGl0b3JT
dGF0ZSYgcmVzdWx0LCBJbmNsdWRlUG9zdAogI2lmICFQTEFURk9STShNQUNDQVRBTFlTVCkKICAg
ICByZXF1aXJlc1Bvc3RMYXlvdXREYXRhIHw9IG1fa2V5Ym9hcmRJc0F0dGFjaGVkOwogI2VuZGlm
Ci0gICAgaWYgKChzaG91bGRJbmNsdWRlUG9zdExheW91dERhdGEgPT0gSW5jbHVkZVBvc3RMYXlv
dXREYXRhSGludDo6Tm8gfHwgbmVlZHNMYXlvdXQpICYmICFyZXF1aXJlc1Bvc3RMYXlvdXREYXRh
KSB7Ci0gICAgICAgIHJlc3VsdC5pc01pc3NpbmdQb3N0TGF5b3V0RGF0YSA9IHRydWU7CisgICAg
aWYgKG5lZWRzTGF5b3V0IHx8IHJlc3VsdC5pc01pc3NpbmdQb3N0TGF5b3V0RGF0YSkKICAgICAg
ICAgcmV0dXJuOwotICAgIH0KIAogICAgIGF1dG8mIHBvc3RMYXlvdXREYXRhID0gcmVzdWx0LnBv
c3RMYXlvdXREYXRhKCk7Ci0gICAgCi0gICAgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0
aW9uID0gZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7CisgICAgY29uc3QgYXV0byYgc2Vs
ZWN0aW9uID0gZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7CiAgICAgcG9zdExheW91dERh
dGEuaXNTdGFibGVTdGF0ZVVwZGF0ZSA9IG1faXNJblN0YWJsZVN0YXRlOwogICAgIGJvb2wgc3Rh
cnROb2RlSXNJbnNpZGVGaXhlZFBvc2l0aW9uID0gZmFsc2U7CiAgICAgYm9vbCBlbmROb2RlSXNJ
bnNpZGVGaXhlZFBvc2l0aW9uID0gZmFsc2U7CkBAIC00NzksNyArNDg5LDcgQEAgYm9vbCBXZWJQ
YWdlOjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50JiBldmVudCkKIAog
ICAgIC8vIEZJWE1FOiBJbnRlcnByZXQgdGhlIGV2ZW50IGltbWVkaWF0ZWx5IHVwb24gcmVjZWl2
aW5nIGl0IGluIFVJIHByb2Nlc3MsIHdpdGhvdXQgc2VuZGluZyB0byBXZWJQcm9jZXNzIGZpcnN0
LgogICAgIGJvb2wgZXZlbnRXYXNIYW5kbGVkID0gZmFsc2U7Ci0gICAgYm9vbCBzZW5kUmVzdWx0
ID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2Vu
ZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6SW50ZXJwcmV0S2V5RXZlbnQoZWRpdG9yU3Rh
dGUoKSwgcGxhdGZvcm1FdmVudC0+dHlwZSgpID09IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6Q2hh
ciksCisgICAgYm9vbCBzZW5kUmVzdWx0ID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50
UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6SW50
ZXJwcmV0S2V5RXZlbnQoZWRpdG9yU3RhdGUoU2hvdWxkUGVyZm9ybUxheW91dDo6WWVzKSwgcGxh
dGZvcm1FdmVudC0+dHlwZSgpID09IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6Q2hhciksCiAgICAg
ICAgIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkludGVycHJldEtleUV2ZW50OjpSZXBseShldmVu
dFdhc0hhbmRsZWQpLCBtX2lkZW50aWZpZXIpOwogICAgIHJldHVybiBzZW5kUmVzdWx0ICYmIGV2
ZW50V2FzSGFuZGxlZDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1dlYlBhZ2VNYWMubW0KaW5kZXggMmM1ODk2ZGY3ODUuLjQwZjA1MjBmMGY3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5t
bQpAQCAtMTMzLDEyICsxMzMsMTIgQEAgdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybURldGFjaCgpCiAg
ICAgW21fbW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50IHNldFdlYlBhZ2U6bnVsbHB0cl07CiB9CiAK
LXZvaWQgV2ViUGFnZTo6cGxhdGZvcm1FZGl0b3JTdGF0ZShGcmFtZSYgZnJhbWUsIEVkaXRvclN0
YXRlJiByZXN1bHQsIEluY2x1ZGVQb3N0TGF5b3V0RGF0YUhpbnQgc2hvdWxkSW5jbHVkZVBvc3RM
YXlvdXREYXRhKSBjb25zdAordm9pZCBXZWJQYWdlOjpnZXRQbGF0Zm9ybUVkaXRvclN0YXRlKEZy
YW1lJiBmcmFtZSwgRWRpdG9yU3RhdGUmIHJlc3VsdCkgY29uc3QKIHsKLSAgICBpZiAoc2hvdWxk
SW5jbHVkZVBvc3RMYXlvdXREYXRhID09IEluY2x1ZGVQb3N0TGF5b3V0RGF0YUhpbnQ6Ok5vIHx8
ICFmcmFtZS52aWV3KCkgfHwgZnJhbWUudmlldygpLT5uZWVkc0xheW91dCgpIHx8ICFyZXN1bHQu
aXNDb250ZW50RWRpdGFibGUpIHsKLSAgICAgICAgcmVzdWx0LmlzTWlzc2luZ1Bvc3RMYXlvdXRE
YXRhID0gdHJ1ZTsKKyAgICBnZXRQbGF0Zm9ybUVkaXRvclN0YXRlQ29tbW9uKGZyYW1lLCByZXN1
bHQpOworCisgICAgaWYgKHJlc3VsdC5pc01pc3NpbmdQb3N0TGF5b3V0RGF0YSkKICAgICAgICAg
cmV0dXJuOwotICAgIH0KIAogICAgIGF1dG8mIHNlbGVjdGlvbiA9IGZyYW1lLnNlbGVjdGlvbigp
LnNlbGVjdGlvbigpOwogICAgIFJlZlB0cjxSYW5nZT4gc2VsZWN0ZWRSYW5nZSA9IHNlbGVjdGlv
bi50b05vcm1hbGl6ZWRSYW5nZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvcGxheXN0YXRpb24vV2ViUGFnZVBsYXlTdGF0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3BsYXlzdGF0aW9uL1dlYlBhZ2VQbGF5U3RhdGlvbi5j
cHAKaW5kZXggNDUxY2UyNTVjYzIuLmNiZGE0OGM3ZDY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9wbGF5c3RhdGlvbi9XZWJQYWdlUGxheVN0YXRpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3BsYXlzdGF0aW9uL1dlYlBh
Z2VQbGF5U3RhdGlvbi5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgYm9vbCBXZWJQYWdlOjpoYW5kbGVF
ZGl0aW5nS2V5Ym9hcmRFdmVudChXZWJDb3JlOjpLZXlib2FyZEV2ZW50JiBldmVudCkKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgV2ViUGFnZTo6cGxhdGZvcm1FZGl0b3JTdGF0ZShGcmFt
ZSYgZnJhbWUsIEVkaXRvclN0YXRlJiByZXN1bHQsIEluY2x1ZGVQb3N0TGF5b3V0RGF0YUhpbnQg
c2hvdWxkSW5jbHVkZVBvc3RMYXlvdXREYXRhKSBjb25zdAordm9pZCBXZWJQYWdlOjpnZXRQbGF0
Zm9ybUVkaXRvclN0YXRlKEZyYW1lJiBmcmFtZSwgRWRpdG9yU3RhdGUmIHJlc3VsdCkgY29uc3QK
IHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL1dlYlBhZ2VXaW4uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2Uvd2luL1dlYlBhZ2VXaW4uY3BwCmluZGV4IDYyNGY0ZDExMjY2Li45YmZj
ODY5ZGUxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2lu
L1dlYlBhZ2VXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3dp
bi9XZWJQYWdlV2luLmNwcApAQCAtNjMsNyArNjMsNyBAQCB2b2lkIFdlYlBhZ2U6OnBsYXRmb3Jt
RGV0YWNoKCkKIHsKIH0KIAotdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybUVkaXRvclN0YXRlKEZyYW1l
JiBmcmFtZSwgRWRpdG9yU3RhdGUmIHJlc3VsdCwgSW5jbHVkZVBvc3RMYXlvdXREYXRhSGludCBz
aG91bGRJbmNsdWRlUG9zdExheW91dERhdGEpIGNvbnN0Cit2b2lkIFdlYlBhZ2U6OmdldFBsYXRm
b3JtRWRpdG9yU3RhdGUoRnJhbWUmLCBFZGl0b3JTdGF0ZSYpIGNvbnN0CiB7CiB9CiAKLS0gCjIu
MjQuMSAoQXBwbGUgR2l0LTEyNikKCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>