<?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>202214</bug_id>
          
          <creation_ts>2019-09-25 11:14:17 -0700</creation_ts>
          <short_desc>Update API availability for autoplay event</short_desc>
          <delta_ts>2020-01-14 18:22:04 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Luming Yin">luming_yin</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>achristensen</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-feeder</cc>
    
    <cc>jer.noble</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>1574122</commentid>
    <comment_count>0</comment_count>
    <who name="Luming Yin">luming_yin</who>
    <bug_when>2019-09-25 11:14:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/55710395&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1574123</commentid>
    <comment_count>1</comment_count>
      <attachid>379562</attachid>
    <who name="Luming Yin">luming_yin</who>
    <bug_when>2019-09-25 11:18:52 -0700</bug_when>
    <thetext>Created attachment 379562
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1574125</commentid>
    <comment_count>2</comment_count>
      <attachid>379562</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-09-25 11:26:16 -0700</bug_when>
    <thetext>Comment on attachment 379562
Patch

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

&gt; Source/WebKit/UIProcess/API/Cocoa/WKUIDelegatePrivate.h:213
&gt; +- (void)_webView:(WKWebView *)webView handleAutoplayEvent:(_WKAutoplayEvent)event withFlags:(_WKAutoplayEventFlags)flags WK_API_AVAILABLE(macos(10.13.4), ios(WK_IOS_TBA));

It looks like this should be moved into a cross-platform part of the header as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1574127</commentid>
    <comment_count>3</comment_count>
      <attachid>379562</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-09-25 11:26:42 -0700</bug_when>
    <thetext>Comment on attachment 379562
Patch

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

&gt; Source/WebKit/UIProcess/API/Cocoa/WKUIDelegatePrivate.h:213
&gt; +- (void)_webView:(WKWebView *)webView handleAutoplayEvent:(_WKAutoplayEvent)event withFlags:(_WKAutoplayEventFlags)flags WK_API_AVAILABLE(macos(10.13.4), ios(WK_IOS_TBA));

I think this is in the wrong section? it&apos;s in an #else of a #if TARGET_OS_IPHONE</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1574128</commentid>
    <comment_count>4</comment_count>
      <attachid>379562</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-09-25 11:27:35 -0700</bug_when>
    <thetext>Comment on attachment 379562
Patch

Also, is there a test for this you can enable on iOS now?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1574142</commentid>
    <comment_count>5</comment_count>
      <attachid>379568</attachid>
    <who name="Luming Yin">luming_yin</who>
    <bug_when>2019-09-25 11:45:45 -0700</bug_when>
    <thetext>Created attachment 379568
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1574144</commentid>
    <comment_count>6</comment_count>
    <who name="Luming Yin">luming_yin</who>
    <bug_when>2019-09-25 11:50:00 -0700</bug_when>
    <thetext>(In reply to Wenson Hsieh from comment #2)
&gt; Comment on attachment 379562 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=379562&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/Cocoa/WKUIDelegatePrivate.h:213
&gt; &gt; +- (void)_webView:(WKWebView *)webView handleAutoplayEvent:(_WKAutoplayEvent)event withFlags:(_WKAutoplayEventFlags)flags WK_API_AVAILABLE(macos(10.13.4), ios(WK_IOS_TBA));
&gt; 
&gt; It looks like this should be moved into a cross-platform part of the header
&gt; as well.

(In reply to Tim Horton from comment #3)
&gt; Comment on attachment 379562 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=379562&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/Cocoa/WKUIDelegatePrivate.h:213
&gt; &gt; +- (void)_webView:(WKWebView *)webView handleAutoplayEvent:(_WKAutoplayEvent)event withFlags:(_WKAutoplayEventFlags)flags WK_API_AVAILABLE(macos(10.13.4), ios(WK_IOS_TBA));
&gt; 
&gt; I think this is in the wrong section? it&apos;s in an #else of a #if
&gt; TARGET_OS_IPHONE

Oops, it&apos;s indeed in the wrong section! Updated my patch to move it to cross-platform part of the header.

(In reply to Tim Horton from comment #4)
&gt; Comment on attachment 379562 [details]
&gt; Patch
&gt; 
&gt; Also, is there a test for this you can enable on iOS now?

It doesn&apos;t seem like there&apos;s any test(s) for this API. Are WebKit tests in a separate repository?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1574151</commentid>
    <comment_count>7</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-09-25 11:57:51 -0700</bug_when>
    <thetext>(In reply to Luming Yin from comment #6)
&gt; (In reply to Tim Horton from comment #4)
&gt; &gt; Comment on attachment 379562 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; Also, is there a test for this you can enable on iOS now?
&gt; 
&gt; It doesn&apos;t seem like there&apos;s any test(s) for this API. Are WebKit tests in a
&gt; separate repository?

In a separate project, Tools/TestWebKitAPI. You may want to take a look at WebsitePolicies.mm.

I think you might need some additional changes to get this working for iOS though (e.g., UIClient::handleAutoplayEvent is macOS-only right now).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1574219</commentid>
    <comment_count>8</comment_count>
      <attachid>379580</attachid>
    <who name="Luming Yin">luming_yin</who>
    <bug_when>2019-09-25 14:48:57 -0700</bug_when>
    <thetext>Created attachment 379580
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575346</commentid>
    <comment_count>9</comment_count>
      <attachid>379846</attachid>
    <who name="Luming Yin">luming_yin</who>
    <bug_when>2019-09-30 15:45:22 -0700</bug_when>
    <thetext>Created attachment 379846
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575347</commentid>
    <comment_count>10</comment_count>
    <who name="Luming Yin">luming_yin</who>
    <bug_when>2019-09-30 15:46:28 -0700</bug_when>
    <thetext>(In reply to Tim Horton from comment #4)
&gt; Comment on attachment 379562 [details]
&gt; Patch
&gt; 
&gt; Also, is there a test for this you can enable on iOS now?

Patch updated to enable relevant API tests on iOS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575405</commentid>
    <comment_count>11</comment_count>
      <attachid>379869</attachid>
    <who name="Luming Yin">luming_yin</who>
    <bug_when>2019-09-30 18:21:56 -0700</bug_when>
    <thetext>Created attachment 379869
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577638</commentid>
    <comment_count>12</comment_count>
      <attachid>379869</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-10-07 21:01:56 -0700</bug_when>
    <thetext>Comment on attachment 379869
Patch

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

&gt; Source/WebCore/page/Quirks.cpp:-109
&gt; -    auto host = m_document-&gt;topDocument().url().host();
&gt; -    return equalLettersIgnoringASCIICase(host, &quot;netflix.com&quot;) || host.endsWithIgnoringASCIICase(&quot;.netflix.com&quot;);

Just to double check — would we not need this quirk on iOS anymore because it will be handled by Safari?

&gt; Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm:848
&gt; +void WebPage::simulateTap(const IntPoint&amp; point, OptionSet&lt;WebEvent::Modifier&gt; modifiers)
&gt; +{
&gt; +    FloatPoint adjustedPoint;
&gt; +    Node* nodeRespondingToClick = m_page-&gt;mainFrame().nodeRespondingToClickEvents(point, adjustedPoint);
&gt; +    if (nodeRespondingToClick)
&gt; +        handleSyntheticClick(*nodeRespondingToClick, adjustedPoint, modifiers);
&gt; +}

Hm…I think we generally try to avoid deep testing hooks like this if we can, and mostly limit interaction-related testing hooks such as this to the UI process (commonly, WKContentViewInteraction and WKWebView).

That said, I recall that this was difficult in API tests due to how there are `lastLayerTreeTransactionId` checks throughout WebPageIOS that fail due to `lastLayerTreeTransactionId ` being 0. If that’s the case, could we additionally synthesize touch events by calling into -_webTouchEventsRecognized: (or add a simple hook to do so) before sending the click? I think that /might/ be slightly cleaner than adding a different testing codepath in the web process for simulating clicks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1603032</commentid>
    <comment_count>13</comment_count>
      <attachid>386845</attachid>
    <who name="Luming Yin">luming_yin</who>
    <bug_when>2020-01-06 07:20:53 -0800</bug_when>
    <thetext>Created attachment 386845
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1603034</commentid>
    <comment_count>14</comment_count>
    <who name="Luming Yin">luming_yin</who>
    <bug_when>2020-01-06 07:24:53 -0800</bug_when>
    <thetext>(In reply to Wenson Hsieh from comment #12)
&gt; Comment on attachment 379869 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=379869&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/page/Quirks.cpp:-109
&gt; &gt; -    auto host = m_document-&gt;topDocument().url().host();
&gt; &gt; -    return equalLettersIgnoringASCIICase(host, &quot;netflix.com&quot;) || host.endsWithIgnoringASCIICase(&quot;.netflix.com&quot;);
&gt; 
&gt; Just to double check — would we not need this quirk on iOS anymore because
&gt; it will be handled by Safari?
Oops, I just double checked, and we do in fact still need this quirk on iOS. I&apos;ve Added the quirk back.

&gt; 
&gt; &gt; Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm:848
&gt; &gt; +void WebPage::simulateTap(const IntPoint&amp; point, OptionSet&lt;WebEvent::Modifier&gt; modifiers)
&gt; &gt; +{
&gt; &gt; +    FloatPoint adjustedPoint;
&gt; &gt; +    Node* nodeRespondingToClick = m_page-&gt;mainFrame().nodeRespondingToClickEvents(point, adjustedPoint);
&gt; &gt; +    if (nodeRespondingToClick)
&gt; &gt; +        handleSyntheticClick(*nodeRespondingToClick, adjustedPoint, modifiers);
&gt; &gt; +}
&gt; 
&gt; Hm…I think we generally try to avoid deep testing hooks like this if we can,
&gt; and mostly limit interaction-related testing hooks such as this to the UI
&gt; process (commonly, WKContentViewInteraction and WKWebView).
&gt; 
&gt; That said, I recall that this was difficult in API tests due to how there
&gt; are `lastLayerTreeTransactionId` checks throughout WebPageIOS that fail due
&gt; to `lastLayerTreeTransactionId ` being 0. If that’s the case, could we
&gt; additionally synthesize touch events by calling into
&gt; -_webTouchEventsRecognized: (or add a simple hook to do so) before sending
&gt; the click? I think that /might/ be slightly cleaner than adding a different
&gt; testing codepath in the web process for simulating clicks.

This is indeed the case! Generating synthetic taps in the UI process is difficult due to various `lastLayerTreeTransactionId` checks. I also tried to use _WKTouchEventGenerator to generate touches, but when running the headless WebKit API tests, [UIApplication sharedApplication] returns nil, so there’s no way to get the associated contextID, meaning this also isn&apos;t a valid option.

I&apos;ve updated the patch to synthesize touch events by calling into -_webTouchEventsRecognized: before sending the click.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606649</commentid>
    <comment_count>15</comment_count>
      <attachid>387716</attachid>
    <who name="Luming Yin">luming_yin</who>
    <bug_when>2020-01-14 15:54:22 -0800</bug_when>
    <thetext>Created attachment 387716
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606657</commentid>
    <comment_count>16</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-01-14 16:09:27 -0800</bug_when>
    <thetext>Please check with media folks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606660</commentid>
    <comment_count>17</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-01-14 16:12:29 -0800</bug_when>
    <thetext>(In reply to Tim Horton from comment #16)
&gt; Please check with media folks

No problem from the media folks. Fewer unnecessary platform-specific blocks of code is definitely better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606668</commentid>
    <comment_count>18</comment_count>
      <attachid>387716</attachid>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-01-14 16:15:35 -0800</bug_when>
    <thetext>Comment on attachment 387716
Patch

Rejecting attachment 387716 from commit-queue.

luming_yin@apple.com does not have committer permissions according to https://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/common/config/contributors.json.

- If you do not have committer rights please read http://webkit.org/coding/contributing.html for instructions on how to use bugzilla flags.

- If you have committer rights please correct the error in Tools/Scripts/webkitpy/common/config/contributors.json by adding yourself to the file (no review needed).  The commit-queue restarts itself every 2 hours.  After restart the commit-queue will correctly respect your committer rights.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606722</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-14 17:16:11 -0800</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 387716:

editing/spelling/spellcheck-async-remove-frame.html bug 158401 (authors: morrita@google.com, rniwa@webkit.org, and tony@chromium.org)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606725</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-14 17:16:31 -0800</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 387716:

editing/spelling/spellcheck-attribute.html bug 206178 (authors: g.czajkowski@samsung.com, mark.lam@apple.com, and rniwa@webkit.org)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606752</commentid>
    <comment_count>21</comment_count>
      <attachid>387716</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-14 18:22:02 -0800</bug_when>
    <thetext>Comment on attachment 387716
Patch

Clearing flags on attachment: 387716

Committed r254553: &lt;https://trac.webkit.org/changeset/254553&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606753</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-14 18:22:04 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379562</attachid>
            <date>2019-09-25 11:18:52 -0700</date>
            <delta_ts>2019-09-25 11:45:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202214-20190925111851.patch</filename>
            <type>text/plain</type>
            <size>6062</size>
            <attacher name="Luming Yin">luming_yin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwMzQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDFlNjdjYmQyYWNiNzNlZThm
NDdmOTI3ZGE4NWU4OTk0ZGVjZDQ2NTEuLmM5ZWI2ZmJlOThmMzAyMmY1OGY0YjgwMDFmZWIxNzIw
M2UxNDc5YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTktMDktMjUgIEx1bWluZyBZ
aW4gIDxsdW1pbmdfeWluQGFwcGxlLmNvbT4KKworICAgICAgICBVcGRhdGUgQVBJIGF2YWlsYWJp
bGl0eSBmb3IgYXV0b3BsYXkgZXZlbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwMjIxNAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTU3MTAzOTU+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6c2V0
RGVsZWdhdGUpOgorCiAyMDE5LTA5LTI1ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2Vu
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVwbGFjZSBfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24uQ1REYXRhQ29ubmVjdGlvblNlcnZpY2VUeXBlIHdpdGggX1dLV2Vic2l0ZURhdGFTdG9yZUNv
bmZpZ3VyYXRpb24uZGF0YUNvbm5lY3Rpb25TZXJ2aWNlVHlwZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmgKaW5kZXgg
OGU2NDdjOTQ4YzFkYzQxODM1MjhjNGU0MTVmOWEwMzdmNDZiZGE3Mi4uOTBkMGM2ZDgyMjZjODU3
MDgwZDlhYmJlYjEyZDNjODA4ODEzNzY4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oCkBAIC00OCwxMyArNDgs
NiBAQAogQHByb3RvY29sIFVJRHJhZ1Nlc3Npb247CiBAcHJvdG9jb2wgVUlEcm9wU2Vzc2lvbjsK
ICNlbHNlCi10eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tBdXRvcGxheUV2ZW50KSB7Ci0g
ICAgX1dLQXV0b3BsYXlFdmVudERpZFByZXZlbnRGcm9tQXV0b3BsYXlpbmcsCi0gICAgX1dLQXV0
b3BsYXlFdmVudERpZFBsYXlNZWRpYVdpdGhVc2VyR2VzdHVyZSwKLSAgICBfV0tBdXRvcGxheUV2
ZW50RGlkQXV0b3BsYXlNZWRpYVBhc3RUaHJlc2hvbGRXaXRob3V0VXNlckludGVyZmVyZW5jZSwK
LSAgICBfV0tBdXRvcGxheUV2ZW50VXNlckRpZEludGVyZmVyZVdpdGhQbGF5YmFjaywKLX0gV0tf
QVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSk7Ci0KIHR5cGVkZWYgTlNfRU5VTShOU0ludGVn
ZXIsIF9XS1Jlc291cmNlTGltaXQpIHsKICAgICBfV0tSZXNvdXJjZUxpbWl0TWVtb3J5LAogICAg
IF9XS1Jlc291cmNlTGltaXRDUFUsCkBAIC02NSwxNCArNTgsMjEgQEAgdHlwZWRlZiBOU19FTlVN
KE5TSW50ZWdlciwgX1dLUGx1Z0luVW5hdmFpbGFiaWxpdHlSZWFzb24pIHsKICAgICBfV0tQbHVn
SW5VbmF2YWlsYWJpbGl0eVJlYXNvblBsdWdpbkNyYXNoZWQsCiAgICAgX1dLUGx1Z0luVW5hdmFp
bGFiaWxpdHlSZWFzb25JbnNlY3VyZVBsdWdpblZlcnNpb24KIH0gV0tfQVBJX0FWQUlMQUJMRSht
YWNvcygxMC4xMy40KSk7CisjZW5kaWYKKwordHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dL
QXV0b3BsYXlFdmVudCkgeworICAgIF9XS0F1dG9wbGF5RXZlbnREaWRQcmV2ZW50RnJvbUF1dG9w
bGF5aW5nLAorICAgIF9XS0F1dG9wbGF5RXZlbnREaWRQbGF5TWVkaWFXaXRoVXNlckdlc3R1cmUs
CisgICAgX1dLQXV0b3BsYXlFdmVudERpZEF1dG9wbGF5TWVkaWFQYXN0VGhyZXNob2xkV2l0aG91
dFVzZXJJbnRlcmZlcmVuY2UsCisgICAgX1dLQXV0b3BsYXlFdmVudFVzZXJEaWRJbnRlcmZlcmVX
aXRoUGxheWJhY2ssCit9IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCksIGlvcyhXS19J
T1NfVEJBKSk7CiAKIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tBdXRvcGxheUV2
ZW50RmxhZ3MpIHsKICAgICBfV0tBdXRvcGxheUV2ZW50RmxhZ3NOb25lID0gMCwKICAgICBfV0tB
dXRvcGxheUV2ZW50RmxhZ3NIYXNBdWRpbyA9IDEgPDwgMCwKICAgICBfV0tBdXRvcGxheUV2ZW50
RmxhZ3NQbGF5YmFja1dhc1ByZXZlbnRlZCA9IDEgPDwgMSwKICAgICBfV0tBdXRvcGxheUV2ZW50
RmxhZ3NNZWRpYUlzTWFpbkNvbnRlbnQgPSAxIDw8IDIsCi19IFdLX0FQSV9BVkFJTEFCTEUobWFj
b3MoMTAuMTMuNCkpOwotI2VuZGlmCit9IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCks
IGlvcyhXS19JT1NfVEJBKSk7CiAKIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIF9XS0ZvY3Vz
RGlyZWN0aW9uKSB7CiAgICAgX1dLRm9jdXNEaXJlY3Rpb25CYWNrd2FyZCwKQEAgLTIxMCw3ICsy
MTAsNyBAQCBzdHJ1Y3QgVUlFZGdlSW5zZXRzOwogLSAodm9pZClfd2ViVmlld0RpZFNjcm9sbDoo
V0tXZWJWaWV3ICopd2ViVmlldyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKIC0g
KHZvaWQpX3dlYlZpZXdSdW5Nb2RhbDooV0tXZWJWaWV3ICopd2ViVmlldyBXS19BUElfQVZBSUxB
QkxFKG1hY29zKDEwLjEzLjQpKTsKIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZp
ZXcgZGlkTm90SGFuZGxlV2hlZWxFdmVudDooTlNFdmVudCAqKWV2ZW50IFdLX0FQSV9BVkFJTEFC
TEUobWFjb3MoMTAuMTMuNCkpOwotLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmll
dyBoYW5kbGVBdXRvcGxheUV2ZW50OihfV0tBdXRvcGxheUV2ZW50KWV2ZW50IHdpdGhGbGFnczoo
X1dLQXV0b3BsYXlFdmVudEZsYWdzKWZsYWdzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMu
NCkpOworLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBoYW5kbGVBdXRvcGxh
eUV2ZW50OihfV0tBdXRvcGxheUV2ZW50KWV2ZW50IHdpdGhGbGFnczooX1dLQXV0b3BsYXlFdmVu
dEZsYWdzKWZsYWdzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCksIGlvcyhXS19JT1Nf
VEJBKSk7CiAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZENsaWNrQXV0
b0ZpbGxCdXR0b25XaXRoVXNlckluZm86KGlkIDxOU1NlY3VyZUNvZGluZz4pdXNlckluZm8gV0tf
QVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSk7CiAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZp
ZXcgKil3ZWJWaWV3IGdldFRvb2xiYXJzQXJlVmlzaWJsZVdpdGhDb21wbGV0aW9uSGFuZGxlcjoo
dm9pZCheKShCT09MKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEw
LjEzLjQpKTsKIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgc2F2ZURhdGFU
b0ZpbGU6KE5TRGF0YSAqKWRhdGEgc3VnZ2VzdGVkRmlsZW5hbWU6KE5TU3RyaW5nICopc3VnZ2Vz
dGVkRmlsZW5hbWUgbWltZVR5cGU6KE5TU3RyaW5nICopbWltZVR5cGUgb3JpZ2luYXRpbmdVUkw6
KE5TVVJMICopdXJsIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KaW5kZXggN2I2MjRhYmZhMmY0MTEw
NDBhMDZiMmIyNjdkYmJiMzJjZDgxY2QxNi4uYzk1MWY0M2M2YTI2M2QxOGRmN2M1NDVhNThmZjQ0
ODJhYzQxMGVkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlE
ZWxlZ2F0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRl
Lm1tCkBAIC0xMDYsNiArMTA2LDcgQEAgdm9pZCBVSURlbGVnYXRlOjpzZXREZWxlZ2F0ZShpZCA8
V0tVSURlbGVnYXRlPiBkZWxlZ2F0ZSkKICAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3UmVx
dWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZyYW1lRGVjaXNpb25IYW5kbGVyID0gW2RlbGVn
YXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6cmVxdWVzdEdlb2xvY2F0
aW9uUGVybWlzc2lvbkZvckZyYW1lOmRlY2lzaW9uSGFuZGxlcjopXTsKICAgICBtX2RlbGVnYXRl
TWV0aG9kcy53ZWJWaWV3RGlkUmVzaWduSW5wdXRFbGVtZW50U3Ryb25nUGFzc3dvcmRBcHBlYXJh
bmNlV2l0aFVzZXJJbmZvID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Io
X3dlYlZpZXc6ZGlkUmVzaWduSW5wdXRFbGVtZW50U3Ryb25nUGFzc3dvcmRBcHBlYXJhbmNlV2l0
aFVzZXJJbmZvOildOwogICAgIG1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdUYWtlRm9jdXMgPSBb
ZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzp0YWtlRm9jdXM6
KV07CisgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0hhbmRsZUF1dG9wbGF5RXZlbnRXaXRo
RmxhZ3MgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpo
YW5kbGVBdXRvcGxheUV2ZW50OndpdGhGbGFnczopXTsKIAogI2lmIFBMQVRGT1JNKE1BQykKICAg
ICBtX2RlbGVnYXRlTWV0aG9kcy5zaG93V2ViVmlldyA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2Vs
ZWN0b3I6QHNlbGVjdG9yKF9zaG93V2ViVmlldzopXTsKQEAgLTExOSw3ICsxMjAsNiBAQCB2b2lk
IFVJRGVsZWdhdGU6OnNldERlbGVnYXRlKGlkIDxXS1VJRGVsZWdhdGU+IGRlbGVnYXRlKQogICAg
IG1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdHZXRXaW5kb3dGcmFtZVdpdGhDb21wbGV0aW9uSGFu
ZGxlciA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3Omdl
dFdpbmRvd0ZyYW1lV2l0aENvbXBsZXRpb25IYW5kbGVyOildOwogICAgIG1fZGVsZWdhdGVNZXRo
b2RzLndlYlZpZXdTZXRXaW5kb3dGcmFtZSA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6
QHNlbGVjdG9yKF93ZWJWaWV3OnNldFdpbmRvd0ZyYW1lOildOwogICAgIG1fZGVsZWdhdGVNZXRo
b2RzLndlYlZpZXdVbmF2YWlsYWJsZVBsdWdJbkJ1dHRvbkNsaWNrZWQgPSBbZGVsZWdhdGUgcmVz
cG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzp1bmF2YWlsYWJsZVBsdWdJbkJ1dHRv
bkNsaWNrZWRXaXRoUmVhc29uOnBsdWdJbkluZm86KV07Ci0gICAgbV9kZWxlZ2F0ZU1ldGhvZHMu
d2ViVmlld0hhbmRsZUF1dG9wbGF5RXZlbnRXaXRoRmxhZ3MgPSBbZGVsZWdhdGUgcmVzcG9uZHNU
b1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpoYW5kbGVBdXRvcGxheUV2ZW50OndpdGhGbGFn
czopXTsKICAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkQ2xpY2tBdXRvRmlsbEJ1dHRv
bldpdGhVc2VySW5mbyA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93
ZWJWaWV3OmRpZENsaWNrQXV0b0ZpbGxCdXR0b25XaXRoVXNlckluZm86KV07CiAgICAgbV9kZWxl
Z2F0ZU1ldGhvZHMud2ViVmlld0RyYXdIZWFkZXJJblJlY3RGb3JQYWdlV2l0aFRpdGxlVVJMID0g
W2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6ZHJhd0hlYWRl
ckluUmVjdDpmb3JQYWdlV2l0aFRpdGxlOlVSTDopXTsKICAgICBtX2RlbGVnYXRlTWV0aG9kcy53
ZWJWaWV3RHJhd0Zvb3RlckluUmVjdEZvclBhZ2VXaXRoVGl0bGVVUkwgPSBbZGVsZWdhdGUgcmVz
cG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpkcmF3Rm9vdGVySW5SZWN0OmZvclBh
Z2VXaXRoVGl0bGU6VVJMOildOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379568</attachid>
            <date>2019-09-25 11:45:45 -0700</date>
            <delta_ts>2019-09-25 14:48:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202214-20190925114544.patch</filename>
            <type>text/plain</type>
            <size>6553</size>
            <attacher name="Luming Yin">luming_yin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwMzQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDFlNjdjYmQyYWNiNzNlZThm
NDdmOTI3ZGE4NWU4OTk0ZGVjZDQ2NTEuLmM5ZWI2ZmJlOThmMzAyMmY1OGY0YjgwMDFmZWIxNzIw
M2UxNDc5YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTktMDktMjUgIEx1bWluZyBZ
aW4gIDxsdW1pbmdfeWluQGFwcGxlLmNvbT4KKworICAgICAgICBVcGRhdGUgQVBJIGF2YWlsYWJp
bGl0eSBmb3IgYXV0b3BsYXkgZXZlbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwMjIxNAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTU3MTAzOTU+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6c2V0
RGVsZWdhdGUpOgorCiAyMDE5LTA5LTI1ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2Vu
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVwbGFjZSBfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24uQ1REYXRhQ29ubmVjdGlvblNlcnZpY2VUeXBlIHdpdGggX1dLV2Vic2l0ZURhdGFTdG9yZUNv
bmZpZ3VyYXRpb24uZGF0YUNvbm5lY3Rpb25TZXJ2aWNlVHlwZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmgKaW5kZXgg
OGU2NDdjOTQ4YzFkYzQxODM1MjhjNGU0MTVmOWEwMzdmNDZiZGE3Mi4uM2I0Njk2ODkzN2RlMTI0
NzE5MjJiNzM2MjEwZDU0MTY2NmQ0N2I4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oCkBAIC00OCwxMyArNDgs
NiBAQAogQHByb3RvY29sIFVJRHJhZ1Nlc3Npb247CiBAcHJvdG9jb2wgVUlEcm9wU2Vzc2lvbjsK
ICNlbHNlCi10eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tBdXRvcGxheUV2ZW50KSB7Ci0g
ICAgX1dLQXV0b3BsYXlFdmVudERpZFByZXZlbnRGcm9tQXV0b3BsYXlpbmcsCi0gICAgX1dLQXV0
b3BsYXlFdmVudERpZFBsYXlNZWRpYVdpdGhVc2VyR2VzdHVyZSwKLSAgICBfV0tBdXRvcGxheUV2
ZW50RGlkQXV0b3BsYXlNZWRpYVBhc3RUaHJlc2hvbGRXaXRob3V0VXNlckludGVyZmVyZW5jZSwK
LSAgICBfV0tBdXRvcGxheUV2ZW50VXNlckRpZEludGVyZmVyZVdpdGhQbGF5YmFjaywKLX0gV0tf
QVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSk7Ci0KIHR5cGVkZWYgTlNfRU5VTShOU0ludGVn
ZXIsIF9XS1Jlc291cmNlTGltaXQpIHsKICAgICBfV0tSZXNvdXJjZUxpbWl0TWVtb3J5LAogICAg
IF9XS1Jlc291cmNlTGltaXRDUFUsCkBAIC02NSwxNCArNTgsMjEgQEAgdHlwZWRlZiBOU19FTlVN
KE5TSW50ZWdlciwgX1dLUGx1Z0luVW5hdmFpbGFiaWxpdHlSZWFzb24pIHsKICAgICBfV0tQbHVn
SW5VbmF2YWlsYWJpbGl0eVJlYXNvblBsdWdpbkNyYXNoZWQsCiAgICAgX1dLUGx1Z0luVW5hdmFp
bGFiaWxpdHlSZWFzb25JbnNlY3VyZVBsdWdpblZlcnNpb24KIH0gV0tfQVBJX0FWQUlMQUJMRSht
YWNvcygxMC4xMy40KSk7CisjZW5kaWYKKwordHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dL
QXV0b3BsYXlFdmVudCkgeworICAgIF9XS0F1dG9wbGF5RXZlbnREaWRQcmV2ZW50RnJvbUF1dG9w
bGF5aW5nLAorICAgIF9XS0F1dG9wbGF5RXZlbnREaWRQbGF5TWVkaWFXaXRoVXNlckdlc3R1cmUs
CisgICAgX1dLQXV0b3BsYXlFdmVudERpZEF1dG9wbGF5TWVkaWFQYXN0VGhyZXNob2xkV2l0aG91
dFVzZXJJbnRlcmZlcmVuY2UsCisgICAgX1dLQXV0b3BsYXlFdmVudFVzZXJEaWRJbnRlcmZlcmVX
aXRoUGxheWJhY2ssCit9IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCksIGlvcyhXS19J
T1NfVEJBKSk7CiAKIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tBdXRvcGxheUV2
ZW50RmxhZ3MpIHsKICAgICBfV0tBdXRvcGxheUV2ZW50RmxhZ3NOb25lID0gMCwKICAgICBfV0tB
dXRvcGxheUV2ZW50RmxhZ3NIYXNBdWRpbyA9IDEgPDwgMCwKICAgICBfV0tBdXRvcGxheUV2ZW50
RmxhZ3NQbGF5YmFja1dhc1ByZXZlbnRlZCA9IDEgPDwgMSwKICAgICBfV0tBdXRvcGxheUV2ZW50
RmxhZ3NNZWRpYUlzTWFpbkNvbnRlbnQgPSAxIDw8IDIsCi19IFdLX0FQSV9BVkFJTEFCTEUobWFj
b3MoMTAuMTMuNCkpOwotI2VuZGlmCit9IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCks
IGlvcyhXS19JT1NfVEJBKSk7CiAKIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIF9XS0ZvY3Vz
RGlyZWN0aW9uKSB7CiAgICAgX1dLRm9jdXNEaXJlY3Rpb25CYWNrd2FyZCwKQEAgLTEzNiw2ICsx
MzYsOCBAQCBzdHJ1Y3QgVUlFZGdlSW5zZXRzOwogCiAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZp
ZXcgKil3ZWJWaWV3IHRha2VGb2N1czooX1dLRm9jdXNEaXJlY3Rpb24pZGlyZWN0aW9uIFdLX0FQ
SV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCksIGlvcygxMi4yKSk7CiAKKy0gKHZvaWQpX3dlYlZp
ZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgaGFuZGxlQXV0b3BsYXlFdmVudDooX1dLQXV0b3BsYXlF
dmVudClldmVudCB3aXRoRmxhZ3M6KF9XS0F1dG9wbGF5RXZlbnRGbGFncylmbGFncyBXS19BUElf
QVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpLCBpb3MoV0tfSU9TX1RCQSkpOworCiAjaWYgVEFSR0VU
X09TX0lQSE9ORQogLSAoQk9PTClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBzaG91bGRJ
bmNsdWRlQXBwTGlua0FjdGlvbnNGb3JFbGVtZW50OihfV0tBY3RpdmF0ZWRFbGVtZW50SW5mbyAq
KWVsZW1lbnQgV0tfQVBJX0FWQUlMQUJMRShpb3MoOS4wKSk7CiAtIChOU0FycmF5ICopX3dlYlZp
ZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgYWN0aW9uc0ZvckVsZW1lbnQ6KF9XS0FjdGl2YXRlZEVs
ZW1lbnRJbmZvICopZWxlbWVudCBkZWZhdWx0QWN0aW9uczooTlNBcnJheTxfV0tFbGVtZW50QWN0
aW9uICo+ICopZGVmYXVsdEFjdGlvbnM7CkBAIC0yMTAsNyArMjEyLDYgQEAgc3RydWN0IFVJRWRn
ZUluc2V0czsKIC0gKHZvaWQpX3dlYlZpZXdEaWRTY3JvbGw6KFdLV2ViVmlldyAqKXdlYlZpZXcg
V0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSk7CiAtICh2b2lkKV93ZWJWaWV3UnVuTW9k
YWw6KFdLV2ViVmlldyAqKXdlYlZpZXcgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSk7
CiAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZE5vdEhhbmRsZVdoZWVs
RXZlbnQ6KE5TRXZlbnQgKilldmVudCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsK
LS0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgaGFuZGxlQXV0b3BsYXlFdmVu
dDooX1dLQXV0b3BsYXlFdmVudClldmVudCB3aXRoRmxhZ3M6KF9XS0F1dG9wbGF5RXZlbnRGbGFn
cylmbGFncyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKIC0gKHZvaWQpX3dlYlZp
ZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkQ2xpY2tBdXRvRmlsbEJ1dHRvbldpdGhVc2VySW5m
bzooaWQgPE5TU2VjdXJlQ29kaW5nPil1c2VySW5mbyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEw
LjEzLjQpKTsKIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZ2V0VG9vbGJh
cnNBcmVWaXNpYmxlV2l0aENvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKEJPT0wpKWNvbXBsZXRp
b25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCkpOwogLSAodm9pZClfd2Vi
VmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBzYXZlRGF0YVRvRmlsZTooTlNEYXRhICopZGF0YSBz
dWdnZXN0ZWRGaWxlbmFtZTooTlNTdHJpbmcgKilzdWdnZXN0ZWRGaWxlbmFtZSBtaW1lVHlwZToo
TlNTdHJpbmcgKiltaW1lVHlwZSBvcmlnaW5hdGluZ1VSTDooTlNVUkwgKil1cmwgV0tfQVBJX0FW
QUlMQUJMRShtYWNvcygxMC4xMy40KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
VUlEZWxlZ2F0ZS5tbQppbmRleCA3YjYyNGFiZmEyZjQxMTA0MGEwNmIyYjI2N2RiYmIzMmNkODFj
ZDE2Li5jOTUxZjQzYzZhMjYzZDE4ZGY3YzU0NWE1OGZmNDQ4MmFjNDEwZWQ0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KQEAgLTEwNiw2ICsxMDYsNyBA
QCB2b2lkIFVJRGVsZWdhdGU6OnNldERlbGVnYXRlKGlkIDxXS1VJRGVsZWdhdGU+IGRlbGVnYXRl
KQogICAgIG1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdSZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNz
aW9uRm9yRnJhbWVEZWNpc2lvbkhhbmRsZXIgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9y
OkBzZWxlY3Rvcihfd2ViVmlldzpyZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9uRm9yRnJhbWU6
ZGVjaXNpb25IYW5kbGVyOildOwogICAgIG1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdEaWRSZXNp
Z25JbnB1dEVsZW1lbnRTdHJvbmdQYXNzd29yZEFwcGVhcmFuY2VXaXRoVXNlckluZm8gPSBbZGVs
ZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpkaWRSZXNpZ25JbnB1
dEVsZW1lbnRTdHJvbmdQYXNzd29yZEFwcGVhcmFuY2VXaXRoVXNlckluZm86KV07CiAgICAgbV9k
ZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1Rha2VGb2N1cyA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2Vs
ZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnRha2VGb2N1czopXTsKKyAgICBtX2RlbGVnYXRlTWV0
aG9kcy53ZWJWaWV3SGFuZGxlQXV0b3BsYXlFdmVudFdpdGhGbGFncyA9IFtkZWxlZ2F0ZSByZXNw
b25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmhhbmRsZUF1dG9wbGF5RXZlbnQ6d2l0
aEZsYWdzOildOwogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIG1fZGVsZWdhdGVNZXRob2RzLnNo
b3dXZWJWaWV3ID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3Nob3dX
ZWJWaWV3OildOwpAQCAtMTE5LDcgKzEyMCw2IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6c2V0RGVsZWdh
dGUoaWQgPFdLVUlEZWxlZ2F0ZT4gZGVsZWdhdGUpCiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2Vi
Vmlld0dldFdpbmRvd0ZyYW1lV2l0aENvbXBsZXRpb25IYW5kbGVyID0gW2RlbGVnYXRlIHJlc3Bv
bmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6Z2V0V2luZG93RnJhbWVXaXRoQ29tcGxl
dGlvbkhhbmRsZXI6KV07CiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1NldFdpbmRvd0Zy
YW1lID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6c2V0
V2luZG93RnJhbWU6KV07CiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1VuYXZhaWxhYmxl
UGx1Z0luQnV0dG9uQ2xpY2tlZCA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVj
dG9yKF93ZWJWaWV3OnVuYXZhaWxhYmxlUGx1Z0luQnV0dG9uQ2xpY2tlZFdpdGhSZWFzb246cGx1
Z0luSW5mbzopXTsKLSAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3SGFuZGxlQXV0b3BsYXlF
dmVudFdpdGhGbGFncyA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93
ZWJWaWV3OmhhbmRsZUF1dG9wbGF5RXZlbnQ6d2l0aEZsYWdzOildOwogICAgIG1fZGVsZWdhdGVN
ZXRob2RzLndlYlZpZXdEaWRDbGlja0F1dG9GaWxsQnV0dG9uV2l0aFVzZXJJbmZvID0gW2RlbGVn
YXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6ZGlkQ2xpY2tBdXRvRmls
bEJ1dHRvbldpdGhVc2VySW5mbzopXTsKICAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RHJh
d0hlYWRlckluUmVjdEZvclBhZ2VXaXRoVGl0bGVVUkwgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpkcmF3SGVhZGVySW5SZWN0OmZvclBhZ2VXaXRoVGl0
bGU6VVJMOildOwogICAgIG1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdEcmF3Rm9vdGVySW5SZWN0
Rm9yUGFnZVdpdGhUaXRsZVVSTCA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVj
dG9yKF93ZWJWaWV3OmRyYXdGb290ZXJJblJlY3Q6Zm9yUGFnZVdpdGhUaXRsZTpVUkw6KV07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379580</attachid>
            <date>2019-09-25 14:48:57 -0700</date>
            <delta_ts>2019-09-30 15:45:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202214-20190925144856.patch</filename>
            <type>text/plain</type>
            <size>34515</size>
            <attacher name="Luming Yin">luming_yin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwMzQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDFlNjdjYmQyYWNiNzNlZThm
NDdmOTI3ZGE4NWU4OTk0ZGVjZDQ2NTEuLjYxZTU1N2QwZjhlMWZkMDlkODdkOTU3ZTIzNGZlNTgz
MDMyNWU2MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTktMDktMjUgIEx1bWluZyBZ
aW4gIDxsdW1pbmdfeWluQGFwcGxlLmNvbT4KKworICAgICAgICBVcGRhdGUgQVBJIGF2YWlsYWJp
bGl0eSBmb3IgYXV0b3BsYXkgZXZlbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwMjIxNAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTU3MTAzOTU+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaDoKKyAgICAgICAgTWFrZSBlbnVt
cyBhbmQgV0tVSURlbGVnYXRlIG1ldGhvZCByZWxhdGVkIHRvIGF1dG9wbGF5IGV2ZW50IGF2YWls
YWJsZSBvbiBpT1MuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5t
bToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zaW11bGF0ZVRhcEFjdGlvbkF0TG9jYXRpb246XSk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmg6CisgICAg
ICAgIFBsdW1iaW5nIHRvIGFsbG93IHNpbXVsYXRpbmcgdGFwcyBpbiBBUEkgdGVzdHMuCisKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9Db2NvYS9VSURlbGVnYXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpzZXRE
ZWxlZ2F0ZSk6CisgICAgICAgIChXZWJLaXQ6OnRvV0tBdXRvcGxheUV2ZW50RmxhZ3MpOgorICAg
ICAgICAoV2ViS2l0Ojp0b1dLQXV0b3BsYXlFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OlVJRGVs
ZWdhdGU6OlVJQ2xpZW50OjpoYW5kbGVBdXRvcGxheUV2ZW50KToKKyAgICAgICAgTWFrZSBkZWxl
Z2F0ZSBtZXRob2RzIHJlbGF0ZWQgdG8gYXV0b3BsYXkgZXZlbnRzIGF2YWlsYWJsZSBvbiBpT1Mu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAg
ICAgICAoLVtXS0NvbnRlbnRWaWV3IF9zaW5nbGVUYXBJZGVudGlmaWVkOl0pOgorICAgICAgICAo
LVtXS0NvbnRlbnRWaWV3IF9oYW5kbGVTaW5nbGVUYXBBdExvY2F0aW9uOl0pOgorICAgICAgICAo
LVtXS0NvbnRlbnRWaWV3IF9zaW11bGF0ZVRhcEFjdGlvbkF0TG9jYXRpb246XSk6CisgICAgICAg
IEV4dHJhY3QgdGFwLWhhbmRsaW5nIGxvZ2ljIHRvIF9oYW5kbGVTaW5nbGVUYXBBdExvY2F0aW9u
Oiwgc28gdGhhdCBpdCBjYW4gYmUgc2hhcmVkIGJldHdlZW4gcmVhbCB0YXAgZ2VzdHVyZSByZWNv
Z25pdGlvbiAKKyAgICAgICAgYW5kIHNpbXVsYXRlZCB0YXBzIGZyb20gQVBJIHRlc3RzLgorCiAy
MDE5LTA5LTI1ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgUmVwbGFjZSBfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uQ1REYXRhQ29ubmVj
dGlvblNlcnZpY2VUeXBlIHdpdGggX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZGF0
YUNvbm5lY3Rpb25TZXJ2aWNlVHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmgKaW5kZXggOGU2NDdjOTQ4YzFkYzQx
ODM1MjhjNGU0MTVmOWEwMzdmNDZiZGE3Mi4uM2I0Njk2ODkzN2RlMTI0NzE5MjJiNzM2MjEwZDU0
MTY2NmQ0N2I4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLVUlEZWxlZ2F0ZVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oCkBAIC00OCwxMyArNDgsNiBAQAogQHByb3RvY29s
IFVJRHJhZ1Nlc3Npb247CiBAcHJvdG9jb2wgVUlEcm9wU2Vzc2lvbjsKICNlbHNlCi10eXBlZGVm
IE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tBdXRvcGxheUV2ZW50KSB7Ci0gICAgX1dLQXV0b3BsYXlF
dmVudERpZFByZXZlbnRGcm9tQXV0b3BsYXlpbmcsCi0gICAgX1dLQXV0b3BsYXlFdmVudERpZFBs
YXlNZWRpYVdpdGhVc2VyR2VzdHVyZSwKLSAgICBfV0tBdXRvcGxheUV2ZW50RGlkQXV0b3BsYXlN
ZWRpYVBhc3RUaHJlc2hvbGRXaXRob3V0VXNlckludGVyZmVyZW5jZSwKLSAgICBfV0tBdXRvcGxh
eUV2ZW50VXNlckRpZEludGVyZmVyZVdpdGhQbGF5YmFjaywKLX0gV0tfQVBJX0FWQUlMQUJMRSht
YWNvcygxMC4xMy40KSk7Ci0KIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIF9XS1Jlc291cmNl
TGltaXQpIHsKICAgICBfV0tSZXNvdXJjZUxpbWl0TWVtb3J5LAogICAgIF9XS1Jlc291cmNlTGlt
aXRDUFUsCkBAIC02NSwxNCArNTgsMjEgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dL
UGx1Z0luVW5hdmFpbGFiaWxpdHlSZWFzb24pIHsKICAgICBfV0tQbHVnSW5VbmF2YWlsYWJpbGl0
eVJlYXNvblBsdWdpbkNyYXNoZWQsCiAgICAgX1dLUGx1Z0luVW5hdmFpbGFiaWxpdHlSZWFzb25J
bnNlY3VyZVBsdWdpblZlcnNpb24KIH0gV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSk7
CisjZW5kaWYKKwordHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dLQXV0b3BsYXlFdmVudCkg
eworICAgIF9XS0F1dG9wbGF5RXZlbnREaWRQcmV2ZW50RnJvbUF1dG9wbGF5aW5nLAorICAgIF9X
S0F1dG9wbGF5RXZlbnREaWRQbGF5TWVkaWFXaXRoVXNlckdlc3R1cmUsCisgICAgX1dLQXV0b3Bs
YXlFdmVudERpZEF1dG9wbGF5TWVkaWFQYXN0VGhyZXNob2xkV2l0aG91dFVzZXJJbnRlcmZlcmVu
Y2UsCisgICAgX1dLQXV0b3BsYXlFdmVudFVzZXJEaWRJbnRlcmZlcmVXaXRoUGxheWJhY2ssCit9
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCksIGlvcyhXS19JT1NfVEJBKSk7CiAKIHR5
cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tBdXRvcGxheUV2ZW50RmxhZ3MpIHsKICAg
ICBfV0tBdXRvcGxheUV2ZW50RmxhZ3NOb25lID0gMCwKICAgICBfV0tBdXRvcGxheUV2ZW50Rmxh
Z3NIYXNBdWRpbyA9IDEgPDwgMCwKICAgICBfV0tBdXRvcGxheUV2ZW50RmxhZ3NQbGF5YmFja1dh
c1ByZXZlbnRlZCA9IDEgPDwgMSwKICAgICBfV0tBdXRvcGxheUV2ZW50RmxhZ3NNZWRpYUlzTWFp
bkNvbnRlbnQgPSAxIDw8IDIsCi19IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCkpOwot
I2VuZGlmCit9IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCksIGlvcyhXS19JT1NfVEJB
KSk7CiAKIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIF9XS0ZvY3VzRGlyZWN0aW9uKSB7CiAg
ICAgX1dLRm9jdXNEaXJlY3Rpb25CYWNrd2FyZCwKQEAgLTEzNiw2ICsxMzYsOCBAQCBzdHJ1Y3Qg
VUlFZGdlSW5zZXRzOwogCiAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHRh
a2VGb2N1czooX1dLRm9jdXNEaXJlY3Rpb24pZGlyZWN0aW9uIFdLX0FQSV9BVkFJTEFCTEUobWFj
b3MoMTAuMTMuNCksIGlvcygxMi4yKSk7CiAKKy0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAq
KXdlYlZpZXcgaGFuZGxlQXV0b3BsYXlFdmVudDooX1dLQXV0b3BsYXlFdmVudClldmVudCB3aXRo
RmxhZ3M6KF9XS0F1dG9wbGF5RXZlbnRGbGFncylmbGFncyBXS19BUElfQVZBSUxBQkxFKG1hY29z
KDEwLjEzLjQpLCBpb3MoV0tfSU9TX1RCQSkpOworCiAjaWYgVEFSR0VUX09TX0lQSE9ORQogLSAo
Qk9PTClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBzaG91bGRJbmNsdWRlQXBwTGlua0Fj
dGlvbnNGb3JFbGVtZW50OihfV0tBY3RpdmF0ZWRFbGVtZW50SW5mbyAqKWVsZW1lbnQgV0tfQVBJ
X0FWQUlMQUJMRShpb3MoOS4wKSk7CiAtIChOU0FycmF5ICopX3dlYlZpZXc6KFdLV2ViVmlldyAq
KXdlYlZpZXcgYWN0aW9uc0ZvckVsZW1lbnQ6KF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvICopZWxl
bWVudCBkZWZhdWx0QWN0aW9uczooTlNBcnJheTxfV0tFbGVtZW50QWN0aW9uICo+ICopZGVmYXVs
dEFjdGlvbnM7CkBAIC0yMTAsNyArMjEyLDYgQEAgc3RydWN0IFVJRWRnZUluc2V0czsKIC0gKHZv
aWQpX3dlYlZpZXdEaWRTY3JvbGw6KFdLV2ViVmlldyAqKXdlYlZpZXcgV0tfQVBJX0FWQUlMQUJM
RShtYWNvcygxMC4xMy40KSk7CiAtICh2b2lkKV93ZWJWaWV3UnVuTW9kYWw6KFdLV2ViVmlldyAq
KXdlYlZpZXcgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSk7CiAtICh2b2lkKV93ZWJW
aWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZE5vdEhhbmRsZVdoZWVsRXZlbnQ6KE5TRXZlbnQg
KilldmVudCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKLS0gKHZvaWQpX3dlYlZp
ZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgaGFuZGxlQXV0b3BsYXlFdmVudDooX1dLQXV0b3BsYXlF
dmVudClldmVudCB3aXRoRmxhZ3M6KF9XS0F1dG9wbGF5RXZlbnRGbGFncylmbGFncyBXS19BUElf
QVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAq
KXdlYlZpZXcgZGlkQ2xpY2tBdXRvRmlsbEJ1dHRvbldpdGhVc2VySW5mbzooaWQgPE5TU2VjdXJl
Q29kaW5nPil1c2VySW5mbyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKIC0gKHZv
aWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZ2V0VG9vbGJhcnNBcmVWaXNpYmxlV2l0
aENvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQ
SV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCkpOwogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3
ICopd2ViVmlldyBzYXZlRGF0YVRvRmlsZTooTlNEYXRhICopZGF0YSBzdWdnZXN0ZWRGaWxlbmFt
ZTooTlNTdHJpbmcgKilzdWdnZXN0ZWRGaWxlbmFtZSBtaW1lVHlwZTooTlNTdHJpbmcgKiltaW1l
VHlwZSBvcmlnaW5hdGluZ1VSTDooTlNVUkwgKil1cmwgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygx
MC4xMy40KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
dy5tbQppbmRleCBiNDk3MTM1YmU3MjY4MDU4ZWYwMWZmNjY2ZTUwNjIzYjdhOGYyZDc1Li4wZTc2
Yzk4NzdhOWM2ZDU3Mjc0MmU5NDI1MzBmNjA4NTFmMmYzOTM5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTczODUsNiArNzM4NSwxMSBA
QCAtIChDR1JlY3QpX2RyYWdDYXJldFJlY3QKICNlbmRpZgogfQogCistICh2b2lkKV9zaW11bGF0
ZVRhcEFjdGlvbkF0TG9jYXRpb246KENHUG9pbnQpbG9jYXRpb24KK3sKKyAgICBbX2NvbnRlbnRW
aWV3IF9zaW11bGF0ZVRhcEFjdGlvbkF0TG9jYXRpb246bG9jYXRpb25dOworfQorCiAtICh2b2lk
KV9zaW11bGF0ZUxvbmdQcmVzc0FjdGlvbkF0TG9jYXRpb246KENHUG9pbnQpbG9jYXRpb24KIHsK
ICAgICBbX2NvbnRlbnRWaWV3IF9zaW11bGF0ZUxvbmdQcmVzc0FjdGlvbkF0TG9jYXRpb246bG9j
YXRpb25dOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXdQcml2YXRlLmgKaW5kZXggY2QyMDVkMDMyZDNhNzJjMDJmZGM2NWE2NjBkOTk3ZGI2M2Y4
NTU3Mi4uODFiYWIyY2U1MDBiNTcxMDFjMzk4NTUzMDhjYTE4ZmNjMDJlNDRiZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5o
CkBAIC00OTMsNiArNDkzLDcgQEAgdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIF9XS1Jl
Y3RFZGdlKSB7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TTnVtYmVyICpfc3Rh
YmxlU3RhdGVPdmVycmlkZSBXS19BUElfQVZBSUxBQkxFKGlvcygxMC4zKSk7CiAKIC0gKE5TRGlj
dGlvbmFyeSAqKV9wcm9wZXJ0aWVzT2ZMYXllcldpdGhJRDoodW5zaWduZWQgbG9uZyBsb25nKWxh
eWVySUQgV0tfQVBJX0FWQUlMQUJMRShpb3MoMTEuMCkpOworLSAodm9pZClfc2ltdWxhdGVUYXBB
Y3Rpb25BdExvY2F0aW9uOihDR1BvaW50KWxvY2F0aW9uIFdLX0FQSV9BVkFJTEFCTEUoaW9zKDEx
LjApKTsKIC0gKHZvaWQpX3NpbXVsYXRlTG9uZ1ByZXNzQWN0aW9uQXRMb2NhdGlvbjooQ0dQb2lu
dClsb2NhdGlvbiBXS19BUElfQVZBSUxBQkxFKGlvcygxMS4wKSk7CiAtICh2b2lkKV9zaW11bGF0
ZVRleHRFbnRlcmVkOihOU1N0cmluZyAqKXRleHQgV0tfQVBJX0FWQUlMQUJMRShpb3MoMTIuMCkp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRl
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmgKaW5kZXggYmQy
MGE4MTk3ZTk0ZGVhNGNjNGM4MDMwOWM1NzY3YzIxNmFlMGE1Zi4uOWQ5NjhlZDUwYWFkZmJiM2I0
NDczNGI5ZGVkYTI0MTJlMzIyMzQ1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvVUlEZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1VJRGVsZWdhdGUuaApAQCAtMTAwLDYgKzEwMCw3IEBAIHByaXZhdGU6CiAgICAgICAgIHZvaWQg
cmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShXZWJQYWdlUHJveHkqLCBjb25zdCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYsIHVpbnQ2NF90IGN1cnJlbnRRdW90YSwgdWludDY0X3Qg
dG90YWxCeXRlc05lZWRlZCwgRnVuY3Rpb248dm9pZCh1bnNpZ25lZCBsb25nIGxvbmcpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKSBmaW5hbDsKICAgICAgICAgdm9pZCBkaWRSZXNpZ25JbnB1dEVsZW1l
bnRTdHJvbmdQYXNzd29yZEFwcGVhcmFuY2UoV2ViUGFnZVByb3h5JiwgQVBJOjpPYmplY3QqKSBm
aW5hbDsKICAgICAgICAgYm9vbCB0YWtlRm9jdXMoV2ViUGFnZVByb3h5KiwgV0tGb2N1c0RpcmVj
dGlvbikgZmluYWw7CisgICAgICAgIHZvaWQgaGFuZGxlQXV0b3BsYXlFdmVudChXZWJQYWdlUHJv
eHkmLCBXZWJDb3JlOjpBdXRvcGxheUV2ZW50LCBPcHRpb25TZXQ8V2ViQ29yZTo6QXV0b3BsYXlF
dmVudEZsYWdzPikgZmluYWw7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgICAgICB2b2lkIHNob3dQ
YWdlKFdlYlBhZ2VQcm94eSopIGZpbmFsOwogICAgICAgICB2b2lkIGZvY3VzKFdlYlBhZ2VQcm94
eSopIGZpbmFsOwpAQCAtMTE2LDcgKzExNyw2IEBAIHByaXZhdGU6CiAgICAgICAgIHZvaWQgZHJh
d0hlYWRlcihXZWJQYWdlUHJveHkmLCBXZWJGcmFtZVByb3h5JiwgV2ViQ29yZTo6RmxvYXRSZWN0
JiYpIGZpbmFsOwogICAgICAgICB2b2lkIGRyYXdGb290ZXIoV2ViUGFnZVByb3h5JiwgV2ViRnJh
bWVQcm94eSYsIFdlYkNvcmU6OkZsb2F0UmVjdCYmKSBmaW5hbDsKICAgICAgICAgdm9pZCBkZWNp
ZGVQb2xpY3lGb3JOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdChXZWJQYWdlUHJveHkmLCBB
UEk6OlNlY3VyaXR5T3JpZ2luJiwgRnVuY3Rpb248dm9pZChib29sKT4mJikgZmluYWw7Ci0gICAg
ICAgIHZvaWQgaGFuZGxlQXV0b3BsYXlFdmVudChXZWJQYWdlUHJveHkmLCBXZWJDb3JlOjpBdXRv
cGxheUV2ZW50LCBPcHRpb25TZXQ8V2ViQ29yZTo6QXV0b3BsYXlFdmVudEZsYWdzPikgZmluYWw7
CiAgICAgICAgIHZvaWQgdW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlja2VkKFdlYlBhZ2VQcm94
eSYsIFdLUGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb24sIEFQSTo6RGljdGlvbmFyeSYpIGZpbmFs
OwogICAgICAgICB2b2lkIG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KFdlYlBhZ2VQcm94eSYsIGNv
bnN0IFdlYkhpdFRlc3RSZXN1bHREYXRhJiwgT3B0aW9uU2V0PFdlYkV2ZW50OjpNb2RpZmllcj4s
IEFQSTo6T2JqZWN0Kik7CiAgICAgICAgIHZvaWQgZGlkQ2xpY2tBdXRvRmlsbEJ1dHRvbihXZWJQ
YWdlUHJveHkmLCBBUEk6Ok9iamVjdCopIGZpbmFsOwpAQCAtMTcyLDYgKzE3Miw3IEBAIHByaXZh
dGU6CiAgICAgICAgIGJvb2wgd2ViVmlld1JlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JG
cmFtZURlY2lzaW9uSGFuZGxlciA6IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld0RpZFJlc2lnbklu
cHV0RWxlbWVudFN0cm9uZ1Bhc3N3b3JkQXBwZWFyYW5jZVdpdGhVc2VySW5mbyA6IDE7CiAgICAg
ICAgIGJvb2wgd2ViVmlld1Rha2VGb2N1cyA6IDE7CisgICAgICAgIGJvb2wgd2ViVmlld0hhbmRs
ZUF1dG9wbGF5RXZlbnRXaXRoRmxhZ3MgOiAxOwogI2lmIFBMQVRGT1JNKE1BQykKICAgICAgICAg
Ym9vbCBzaG93V2ViVmlldyA6IDE7CiAgICAgICAgIGJvb2wgZm9jdXNXZWJWaWV3IDogMTsKQEAg
LTE4Myw3ICsxODQsNiBAQCBwcml2YXRlOgogICAgICAgICBib29sIHdlYlZpZXdTZXRSZXNpemFi
bGUgOiAxOwogICAgICAgICBib29sIHdlYlZpZXdTZXRXaW5kb3dGcmFtZSA6IDE7CiAgICAgICAg
IGJvb2wgd2ViVmlld0RpZE5vdEhhbmRsZVdoZWVsRXZlbnQgOiAxOwotICAgICAgICBib29sIHdl
YlZpZXdIYW5kbGVBdXRvcGxheUV2ZW50V2l0aEZsYWdzIDogMTsKICAgICAgICAgYm9vbCB3ZWJW
aWV3VW5hdmFpbGFibGVQbHVnSW5CdXR0b25DbGlja2VkIDogMTsKICAgICAgICAgYm9vbCB3ZWJW
aWV3RGlkQ2xpY2tBdXRvRmlsbEJ1dHRvbldpdGhVc2VySW5mbyA6IDE7CiAgICAgICAgIGJvb2wg
d2ViVmlld0RyYXdIZWFkZXJJblJlY3RGb3JQYWdlV2l0aFRpdGxlVVJMIDogMTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCmluZGV4IDdiNjI0YWJmYTJmNDEx
MDQwYTA2YjJiMjY3ZGJiYjMyY2Q4MWNkMTYuLjY2N2ZkMTFjNTcxMDZlZTEzMGJhMThjZmFmZjg4
ZDM0OTkxMTI2MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJ
RGVsZWdhdGUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0
ZS5tbQpAQCAtMTA2LDYgKzEwNiw3IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6c2V0RGVsZWdhdGUoaWQg
PFdLVUlEZWxlZ2F0ZT4gZGVsZWdhdGUpCiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1Jl
cXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JGcmFtZURlY2lzaW9uSGFuZGxlciA9IFtkZWxl
Z2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnJlcXVlc3RHZW9sb2Nh
dGlvblBlcm1pc3Npb25Gb3JGcmFtZTpkZWNpc2lvbkhhbmRsZXI6KV07CiAgICAgbV9kZWxlZ2F0
ZU1ldGhvZHMud2ViVmlld0RpZFJlc2lnbklucHV0RWxlbWVudFN0cm9uZ1Bhc3N3b3JkQXBwZWFy
YW5jZVdpdGhVc2VySW5mbyA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KF93ZWJWaWV3OmRpZFJlc2lnbklucHV0RWxlbWVudFN0cm9uZ1Bhc3N3b3JkQXBwZWFyYW5jZVdp
dGhVc2VySW5mbzopXTsKICAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3VGFrZUZvY3VzID0g
W2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6dGFrZUZvY3Vz
OildOworICAgIG1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdIYW5kbGVBdXRvcGxheUV2ZW50V2l0
aEZsYWdzID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6
aGFuZGxlQXV0b3BsYXlFdmVudDp3aXRoRmxhZ3M6KV07CiAKICNpZiBQTEFURk9STShNQUMpCiAg
ICAgbV9kZWxlZ2F0ZU1ldGhvZHMuc2hvd1dlYlZpZXcgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3Rvcihfc2hvd1dlYlZpZXc6KV07CkBAIC0xMTksNyArMTIwLDYgQEAgdm9p
ZCBVSURlbGVnYXRlOjpzZXREZWxlZ2F0ZShpZCA8V0tVSURlbGVnYXRlPiBkZWxlZ2F0ZSkKICAg
ICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3R2V0V2luZG93RnJhbWVXaXRoQ29tcGxldGlvbkhh
bmRsZXIgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpn
ZXRXaW5kb3dGcmFtZVdpdGhDb21wbGV0aW9uSGFuZGxlcjopXTsKICAgICBtX2RlbGVnYXRlTWV0
aG9kcy53ZWJWaWV3U2V0V2luZG93RnJhbWUgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9y
OkBzZWxlY3Rvcihfd2ViVmlldzpzZXRXaW5kb3dGcmFtZTopXTsKICAgICBtX2RlbGVnYXRlTWV0
aG9kcy53ZWJWaWV3VW5hdmFpbGFibGVQbHVnSW5CdXR0b25DbGlja2VkID0gW2RlbGVnYXRlIHJl
c3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6dW5hdmFpbGFibGVQbHVnSW5CdXR0
b25DbGlja2VkV2l0aFJlYXNvbjpwbHVnSW5JbmZvOildOwotICAgIG1fZGVsZWdhdGVNZXRob2Rz
LndlYlZpZXdIYW5kbGVBdXRvcGxheUV2ZW50V2l0aEZsYWdzID0gW2RlbGVnYXRlIHJlc3BvbmRz
VG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6aGFuZGxlQXV0b3BsYXlFdmVudDp3aXRoRmxh
Z3M6KV07CiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RpZENsaWNrQXV0b0ZpbGxCdXR0
b25XaXRoVXNlckluZm8gPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihf
d2ViVmlldzpkaWRDbGlja0F1dG9GaWxsQnV0dG9uV2l0aFVzZXJJbmZvOildOwogICAgIG1fZGVs
ZWdhdGVNZXRob2RzLndlYlZpZXdEcmF3SGVhZGVySW5SZWN0Rm9yUGFnZVdpdGhUaXRsZVVSTCA9
IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmRyYXdIZWFk
ZXJJblJlY3Q6Zm9yUGFnZVdpdGhUaXRsZTpVUkw6KV07CiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMu
d2ViVmlld0RyYXdGb290ZXJJblJlY3RGb3JQYWdlV2l0aFRpdGxlVVJMID0gW2RlbGVnYXRlIHJl
c3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6ZHJhd0Zvb3RlckluUmVjdDpmb3JQ
YWdlV2l0aFRpdGxlOlVSTDopXTsKQEAgLTQ3OSw2ICs0NzksNDcgQEAgYm9vbCBVSURlbGVnYXRl
OjpVSUNsaWVudDo6dGFrZUZvY3VzKFdlYlBhZ2VQcm94eSosIFdLRm9jdXNEaXJlY3Rpb24gZGly
ZWN0aW9uKQogICAgIHJldHVybiB0cnVlOwogfQogCitzdGF0aWMgX1dLQXV0b3BsYXlFdmVudEZs
YWdzIHRvV0tBdXRvcGxheUV2ZW50RmxhZ3MoT3B0aW9uU2V0PFdlYkNvcmU6OkF1dG9wbGF5RXZl
bnRGbGFncz4gZmxhZ3MpCit7CisgICAgX1dLQXV0b3BsYXlFdmVudEZsYWdzIHdrRmxhZ3MgPSBf
V0tBdXRvcGxheUV2ZW50RmxhZ3NOb25lOworICAgIGlmIChmbGFncy5jb250YWlucyhXZWJDb3Jl
OjpBdXRvcGxheUV2ZW50RmxhZ3M6Okhhc0F1ZGlvKSkKKyAgICAgICAgd2tGbGFncyB8PSBfV0tB
dXRvcGxheUV2ZW50RmxhZ3NIYXNBdWRpbzsKKyAgICBpZiAoZmxhZ3MuY29udGFpbnMoV2ViQ29y
ZTo6QXV0b3BsYXlFdmVudEZsYWdzOjpQbGF5YmFja1dhc1ByZXZlbnRlZCkpCisgICAgICAgIHdr
RmxhZ3MgfD0gX1dLQXV0b3BsYXlFdmVudEZsYWdzUGxheWJhY2tXYXNQcmV2ZW50ZWQ7CisgICAg
aWYgKGZsYWdzLmNvbnRhaW5zKFdlYkNvcmU6OkF1dG9wbGF5RXZlbnRGbGFnczo6TWVkaWFJc01h
aW5Db250ZW50KSkKKyAgICAgICAgd2tGbGFncyB8PSBfV0tBdXRvcGxheUV2ZW50RmxhZ3NNZWRp
YUlzTWFpbkNvbnRlbnQ7CisgICAgCisgICAgcmV0dXJuIHdrRmxhZ3M7Cit9CisKK3N0YXRpYyBf
V0tBdXRvcGxheUV2ZW50IHRvV0tBdXRvcGxheUV2ZW50KFdlYkNvcmU6OkF1dG9wbGF5RXZlbnQg
ZXZlbnQpCit7CisgICAgc3dpdGNoIChldmVudCkgeworICAgIGNhc2UgV2ViQ29yZTo6QXV0b3Bs
YXlFdmVudDo6RGlkUHJldmVudE1lZGlhRnJvbVBsYXlpbmc6CisgICAgICAgIHJldHVybiBfV0tB
dXRvcGxheUV2ZW50RGlkUHJldmVudEZyb21BdXRvcGxheWluZzsKKyAgICBjYXNlIFdlYkNvcmU6
OkF1dG9wbGF5RXZlbnQ6OkRpZFBsYXlNZWRpYVdpdGhVc2VyR2VzdHVyZToKKyAgICAgICAgcmV0
dXJuIF9XS0F1dG9wbGF5RXZlbnREaWRQbGF5TWVkaWFXaXRoVXNlckdlc3R1cmU7CisgICAgY2Fz
ZSBXZWJDb3JlOjpBdXRvcGxheUV2ZW50OjpEaWRBdXRvcGxheU1lZGlhUGFzdFRocmVzaG9sZFdp
dGhvdXRVc2VySW50ZXJmZXJlbmNlOgorICAgICAgICByZXR1cm4gX1dLQXV0b3BsYXlFdmVudERp
ZEF1dG9wbGF5TWVkaWFQYXN0VGhyZXNob2xkV2l0aG91dFVzZXJJbnRlcmZlcmVuY2U7CisgICAg
Y2FzZSBXZWJDb3JlOjpBdXRvcGxheUV2ZW50OjpVc2VyRGlkSW50ZXJmZXJlV2l0aFBsYXliYWNr
OgorICAgICAgICByZXR1cm4gX1dLQXV0b3BsYXlFdmVudFVzZXJEaWRJbnRlcmZlcmVXaXRoUGxh
eWJhY2s7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBfV0tB
dXRvcGxheUV2ZW50RGlkUGxheU1lZGlhV2l0aFVzZXJHZXN0dXJlOworfQorCit2b2lkIFVJRGVs
ZWdhdGU6OlVJQ2xpZW50OjpoYW5kbGVBdXRvcGxheUV2ZW50KFdlYlBhZ2VQcm94eSYsIFdlYkNv
cmU6OkF1dG9wbGF5RXZlbnQgZXZlbnQsIE9wdGlvblNldDxXZWJDb3JlOjpBdXRvcGxheUV2ZW50
RmxhZ3M+IGZsYWdzKQoreworICAgIGlmICghbV91aURlbGVnYXRlLm1fZGVsZWdhdGVNZXRob2Rz
LndlYlZpZXdIYW5kbGVBdXRvcGxheUV2ZW50V2l0aEZsYWdzKQorICAgICAgICByZXR1cm47Cisg
ICAgCisgICAgYXV0byBkZWxlZ2F0ZSA9IG1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRlLmdldCgpOwor
ICAgIGlmICghZGVsZWdhdGUpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBbKGlkIDxXS1VJ
RGVsZWdhdGVQcml2YXRlPilkZWxlZ2F0ZSBfd2ViVmlldzptX3VpRGVsZWdhdGUubV93ZWJWaWV3
IGhhbmRsZUF1dG9wbGF5RXZlbnQ6dG9XS0F1dG9wbGF5RXZlbnQoZXZlbnQpIHdpdGhGbGFnczp0
b1dLQXV0b3BsYXlFdmVudEZsYWdzKGZsYWdzKV07Cit9CisKICNpZiBQTEFURk9STShNQUMpCiBi
b29sIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpjYW5SdW5Nb2RhbCgpIGNvbnN0CiB7CkBAIC02OTcs
MzUgKzczOCw2IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6Om1vdXNlRGlkTW92ZU92ZXJF
bGVtZW50KFdlYlBhZ2VQcm94eSYsIGNvbnN0IFdlYkhpdFRlCiAgICAgWyhpZCA8V0tVSURlbGVn
YXRlUHJpdmF0ZT4pZGVsZWdhdGUgX3dlYlZpZXc6bV91aURlbGVnYXRlLm1fd2ViVmlldyBtb3Vz
ZURpZE1vdmVPdmVyRWxlbWVudDp3cmFwcGVyKGFwaUhpdFRlc3RSZXN1bHQuZ2V0KCkpIHdpdGhG
bGFnczpXZWJFdmVudEZhY3Rvcnk6OnRvTlNFdmVudE1vZGlmaWVyRmxhZ3MobW9kaWZpZXJzKSB1
c2VySW5mbzp1c2VySW5mbyA/IHN0YXRpY19jYXN0PGlkIDxOU1NlY3VyZUNvZGluZz4+KHVzZXJJ
bmZvLT53cmFwcGVyKCkpIDogbmlsXTsKIH0KIAotc3RhdGljIF9XS0F1dG9wbGF5RXZlbnRGbGFn
cyB0b1dLQXV0b3BsYXlFdmVudEZsYWdzKE9wdGlvblNldDxXZWJDb3JlOjpBdXRvcGxheUV2ZW50
RmxhZ3M+IGZsYWdzKQotewotICAgIF9XS0F1dG9wbGF5RXZlbnRGbGFncyB3a0ZsYWdzID0gX1dL
QXV0b3BsYXlFdmVudEZsYWdzTm9uZTsKLSAgICBpZiAoZmxhZ3MuY29udGFpbnMoV2ViQ29yZTo6
QXV0b3BsYXlFdmVudEZsYWdzOjpIYXNBdWRpbykpCi0gICAgICAgIHdrRmxhZ3MgfD0gX1dLQXV0
b3BsYXlFdmVudEZsYWdzSGFzQXVkaW87Ci0gICAgaWYgKGZsYWdzLmNvbnRhaW5zKFdlYkNvcmU6
OkF1dG9wbGF5RXZlbnRGbGFnczo6UGxheWJhY2tXYXNQcmV2ZW50ZWQpKQotICAgICAgICB3a0Zs
YWdzIHw9IF9XS0F1dG9wbGF5RXZlbnRGbGFnc1BsYXliYWNrV2FzUHJldmVudGVkOwotICAgIGlm
IChmbGFncy5jb250YWlucyhXZWJDb3JlOjpBdXRvcGxheUV2ZW50RmxhZ3M6Ok1lZGlhSXNNYWlu
Q29udGVudCkpCi0gICAgICAgIHdrRmxhZ3MgfD0gX1dLQXV0b3BsYXlFdmVudEZsYWdzTWVkaWFJ
c01haW5Db250ZW50OwotICAgIAotICAgIHJldHVybiB3a0ZsYWdzOwotfQotCi1zdGF0aWMgX1dL
QXV0b3BsYXlFdmVudCB0b1dLQXV0b3BsYXlFdmVudChXZWJDb3JlOjpBdXRvcGxheUV2ZW50IGV2
ZW50KQotewotICAgIHN3aXRjaCAoZXZlbnQpIHsKLSAgICBjYXNlIFdlYkNvcmU6OkF1dG9wbGF5
RXZlbnQ6OkRpZFByZXZlbnRNZWRpYUZyb21QbGF5aW5nOgotICAgICAgICByZXR1cm4gX1dLQXV0
b3BsYXlFdmVudERpZFByZXZlbnRGcm9tQXV0b3BsYXlpbmc7Ci0gICAgY2FzZSBXZWJDb3JlOjpB
dXRvcGxheUV2ZW50OjpEaWRQbGF5TWVkaWFXaXRoVXNlckdlc3R1cmU6Ci0gICAgICAgIHJldHVy
biBfV0tBdXRvcGxheUV2ZW50RGlkUGxheU1lZGlhV2l0aFVzZXJHZXN0dXJlOwotICAgIGNhc2Ug
V2ViQ29yZTo6QXV0b3BsYXlFdmVudDo6RGlkQXV0b3BsYXlNZWRpYVBhc3RUaHJlc2hvbGRXaXRo
b3V0VXNlckludGVyZmVyZW5jZToKLSAgICAgICAgcmV0dXJuIF9XS0F1dG9wbGF5RXZlbnREaWRB
dXRvcGxheU1lZGlhUGFzdFRocmVzaG9sZFdpdGhvdXRVc2VySW50ZXJmZXJlbmNlOwotICAgIGNh
c2UgV2ViQ29yZTo6QXV0b3BsYXlFdmVudDo6VXNlckRpZEludGVyZmVyZVdpdGhQbGF5YmFjazoK
LSAgICAgICAgcmV0dXJuIF9XS0F1dG9wbGF5RXZlbnRVc2VyRGlkSW50ZXJmZXJlV2l0aFBsYXli
YWNrOwotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gX1dLQXV0
b3BsYXlFdmVudERpZFBsYXlNZWRpYVdpdGhVc2VyR2VzdHVyZTsKLX0KLQogdm9pZCBVSURlbGVn
YXRlOjpVSUNsaWVudDo6dG9vbGJhcnNBcmVWaXNpYmxlKFdlYlBhZ2VQcm94eSYsIEZ1bmN0aW9u
PHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFtX3VpRGVsZWdh
dGUubV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0dldFRvb2xiYXJzQXJlVmlzaWJsZVdpdGhDb21w
bGV0aW9uSGFuZGxlcikKQEAgLTc1NSwxOCArNzY3LDYgQEAgdm9pZCBVSURlbGVnYXRlOjpVSUNs
aWVudDo6ZGlkQ2xpY2tBdXRvRmlsbEJ1dHRvbihXZWJQYWdlUHJveHkmLCBBUEk6Ok9iamVjdCog
dXMKICAgICBbKGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPilkZWxlZ2F0ZSBfd2ViVmlldzptX3Vp
RGVsZWdhdGUubV93ZWJWaWV3IGRpZENsaWNrQXV0b0ZpbGxCdXR0b25XaXRoVXNlckluZm86dXNl
ckluZm8gPyBzdGF0aWNfY2FzdDxpZCA8TlNTZWN1cmVDb2Rpbmc+Pih1c2VySW5mby0+d3JhcHBl
cigpKSA6IG5pbF07CiB9CiAKLXZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmhhbmRsZUF1dG9w
bGF5RXZlbnQoV2ViUGFnZVByb3h5JiwgV2ViQ29yZTo6QXV0b3BsYXlFdmVudCBldmVudCwgT3B0
aW9uU2V0PFdlYkNvcmU6OkF1dG9wbGF5RXZlbnRGbGFncz4gZmxhZ3MpCi17Ci0gICAgaWYgKCFt
X3VpRGVsZWdhdGUubV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0hhbmRsZUF1dG9wbGF5RXZlbnRX
aXRoRmxhZ3MpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBhdXRvIGRlbGVnYXRlID0gbV91
aURlbGVnYXRlLm1fZGVsZWdhdGUuZ2V0KCk7Ci0gICAgaWYgKCFkZWxlZ2F0ZSkKLSAgICAgICAg
cmV0dXJuOwotICAgIAotICAgIFsoaWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+KWRlbGVnYXRlIF93
ZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcgaGFuZGxlQXV0b3BsYXlFdmVudDp0b1dLQXV0
b3BsYXlFdmVudChldmVudCkgd2l0aEZsYWdzOnRvV0tBdXRvcGxheUV2ZW50RmxhZ3MoZmxhZ3Mp
XTsKLX0KLQogdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6c2hvd1BhZ2UoV2ViUGFnZVByb3h5
KikKIHsKICAgICBpZiAoIW1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRlTWV0aG9kcy5zaG93V2ViVmll
dykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3
SW50ZXJhY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3
SW50ZXJhY3Rpb24uaAppbmRleCAyZjFiYjAxNzM4MjM4NDg2YzY0YTU0ZWQwZDY3MmQzNjgxZGRm
ODU3Li5mZGIyZjcwMzBhMDM2MzA0MmFhOGE5NjI3M2QxYzA3ZTQ2YTNlMzFkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5oCkBAIC01NjMsNiArNTYzLDcgQEAgRk9SX0VBQ0hfUFJJVkFURV9XS0NPTlRFTlRWSUVXX0FD
VElPTihERUNMQVJFX1dLQ09OVEVOVFZJRVdfQUNUSU9OX0ZPUl9XRUJfVklFVykKIAogQGludGVy
ZmFjZSBXS0NvbnRlbnRWaWV3IChXS1Rlc3RpbmcpCiAKKy0gKHZvaWQpX3NpbXVsYXRlVGFwQWN0
aW9uQXRMb2NhdGlvbjooQ0dQb2ludClsb2NhdGlvbjsKIC0gKHZvaWQpX3NpbXVsYXRlTG9uZ1By
ZXNzQWN0aW9uQXRMb2NhdGlvbjooQ0dQb2ludClsb2NhdGlvbjsKIC0gKHZvaWQpX3NpbXVsYXRl
VGV4dEVudGVyZWQ6KE5TU3RyaW5nICopdGV4dDsKIC0gKHZvaWQpc2VsZWN0Rm9ybUFjY2Vzc29y
eVBpY2tlclJvdzooTlNJbnRlZ2VyKXJvd0luZGV4OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggM2M4NDYy
MGQ1MmYxNTAyZWFiNDRhZmQwOGQ4NjZjM2M1MjUzYjgwYi4uZjQzNTIyYTRjNWJiMDJiMTg5NmYx
ODgwOWQ0NWFmOTBlNjliZGIyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC0yNTE1LDYgKzI1MTUsMTEg
QEAgLSAodm9pZClfZW5kUG90ZW50aWFsVGFwQW5kRW5hYmxlRG91YmxlVGFwR2VzdHVyZXNJZk5l
Y2Vzc2FyeQogLSAodm9pZClfc2luZ2xlVGFwSWRlbnRpZmllZDooVUlUYXBHZXN0dXJlUmVjb2du
aXplciAqKWdlc3R1cmVSZWNvZ25pemVyCiB7CiAgICAgQVNTRVJUKGdlc3R1cmVSZWNvZ25pemVy
ID09IF9zaW5nbGVUYXBHZXN0dXJlUmVjb2duaXplcik7CisgICAgW3NlbGYgX2hhbmRsZVNpbmds
ZVRhcEF0TG9jYXRpb246Z2VzdHVyZVJlY29nbml6ZXIubG9jYXRpb25dOworfQorCistICh2b2lk
KV9oYW5kbGVTaW5nbGVUYXBBdExvY2F0aW9uOihDR1BvaW50KWxvY2F0aW9uCit7CiAgICAgQVNT
RVJUKCFfcG90ZW50aWFsVGFwSW5Qcm9ncmVzcyk7CiAgICAgW3NlbGYgX3Jlc2V0SXNEb3VibGVU
YXBQZW5kaW5nXTsKIApAQCAtMjUyMiw3ICsyNTI3LDcgQEAgLSAodm9pZClfc2luZ2xlVGFwSWRl
bnRpZmllZDooVUlUYXBHZXN0dXJlUmVjb2duaXplciAqKWdlc3R1cmVSZWNvZ25pemVyCiAgICAg
aWYgKHNob3VsZFJlcXVlc3RNYWduaWZpY2F0aW9uSW5mb3JtYXRpb24pCiAgICAgICAgIFJFTEVB
U0VfTE9HKFZpZXdHZXN0dXJlcywgIlNpbmdsZSB0YXAgaWRlbnRpZmllZC4gUmVxdWVzdCBkZXRh
aWxzIG9uIHBvdGVudGlhbCB6b29tLiAoJXApIiwgc2VsZik7CiAKLSAgICBfcGFnZS0+cG90ZW50
aWFsVGFwQXRQb3NpdGlvbihnZXN0dXJlUmVjb2duaXplci5sb2NhdGlvbiwgc2hvdWxkUmVxdWVz
dE1hZ25pZmljYXRpb25JbmZvcm1hdGlvbiwgKytfbGF0ZXN0VGFwSUQpOworICAgIF9wYWdlLT5w
b3RlbnRpYWxUYXBBdFBvc2l0aW9uKGxvY2F0aW9uLCBzaG91bGRSZXF1ZXN0TWFnbmlmaWNhdGlv
bkluZm9ybWF0aW9uLCArK19sYXRlc3RUYXBJRCk7CiAgICAgX3BvdGVudGlhbFRhcEluUHJvZ3Jl
c3MgPSBZRVM7CiAgICAgX2lzVGFwSGlnaGxpZ2h0SURWYWxpZCA9IFlFUzsKICAgICBfaXNFeHBl
Y3RpbmdGYXN0U2luZ2xlVGFwQ29tbWl0ID0gIV9kb3VibGVUYXBHZXN0dXJlUmVjb2duaXplci5n
ZXQoKS5lbmFibGVkOwpAQCAtNzc4MCw2ICs3Nzg1LDExIEBAIC0gKHZvaWQpX3NpbXVsYXRlVGV4
dEVudGVyZWQ6KE5TU3RyaW5nICopdGV4dAogI2VuZGlmCiB9CiAKKy0gKHZvaWQpX3NpbXVsYXRl
VGFwQWN0aW9uQXRMb2NhdGlvbjooQ0dQb2ludClsb2NhdGlvbgoreworICAgIFtzZWxmIF9oYW5k
bGVTaW5nbGVUYXBBdExvY2F0aW9uOmxvY2F0aW9uXTsKK30KKwogLSAodm9pZClfc2ltdWxhdGVM
b25nUHJlc3NBY3Rpb25BdExvY2F0aW9uOihDR1BvaW50KWxvY2F0aW9uCiB7CiAgICAgUmV0YWlu
UHRyPFdLQ29udGVudFZpZXc+IHByb3RlY3RlZFNlbGYgPSBzZWxmOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGU4ZjU2NzY0OTQ2ZGE0ZWU0NDky
YzcxOTY2NDg2MjliY2IyZDJkZmUuLjIxNTMzYWZiOTRlODlkNDA3OWU1YzhlOGZiZDhkNDVkMjM2
ZjQwNWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyMiBAQAorMjAxOS0wOS0yNSAgTHVtaW5nIFlpbiAgPGx1bWluZ195aW5AYXBw
bGUuY29tPgorCisgICAgICAgIFVwZGF0ZSBBUEkgYXZhaWxhYmlsaXR5IGZvciBhdXRvcGxheSBl
dmVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAy
MjE0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NTcxMDM5NT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvV2Vic2l0ZVBvbGljaWVzLm1tOgorICAgICAgICAoLVtBdXRvcGxheVBvbGljaWVz
RGVsZWdhdGUgX3dlYlZpZXc6aGFuZGxlQXV0b3BsYXlFdmVudDp3aXRoRmxhZ3M6XSk6CisgICAg
ICAgICgtW0FzeW5jQXV0b3BsYXlQb2xpY2llc0RlbGVnYXRlIF93ZWJWaWV3OmhhbmRsZUF1dG9w
bGF5RXZlbnQ6d2l0aEZsYWdzOl0pOgorICAgICAgICAoVEVTVCk6CisgICAgICAgIEVuYWJsZSB0
ZXN0cyByZWxhdGVkIHRvIGF1dG9wbGF5IHBvbGljeSBvbiBpT1MuCisKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L2NvY29hL1Rlc3RXS1dlYlZpZXcubW06CisgICAgICAgICgtW1Rlc3RXS1dlYlZpZXcgY2xpY2tP
clRhcEF0UG9pbnQ6XSk6CisgICAgICAgIEhlbHBlciBtZXRob2QgdG8gYWJzdHJhY3Qgc2ltdWxh
dGVkIHRhcHMgYW5kIG1vdXNlIGNsaWNrcyBiZXR3ZWVuIE1hYyBhbmQgaU9TLgorCiAyMDE5LTA5
LTI1ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFtp
UGFkT1NdIFtEYXRhQWN0aXZhdGlvbl0gRm9jdXMgbW92ZXMgYXdheSBhZnRlciBmb2N1c2luZyBp
bnB1dCBmaWVsZHMgb24gd3d3LmF0dC5jb20KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZVBvbGljaWVzLm1tIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlUG9saWNpZXMubW0KaW5kZXggODJhYjRjZTJh
OGEwYWJjMjBjZGNhOTY4N2U0YWFiNjgxYTI5MmJlMy4uYjk4YWQxYWI2ZmMzMmIxNTA5NmQ4MmJj
MDVkM2Q4MDhhMjlkN2NiNCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9XZWJzaXRlUG9saWNpZXMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlUG9saWNpZXMubW0KQEAgLTYzLDEwICs2Myw4IEBAIHN0
YXRpYyBib29sIGRvbmVDb21waWxpbmc7CiBzdGF0aWMgYm9vbCByZWNlaXZlZEFsZXJ0Owogc3Rh
dGljIGJvb2wgZmluaXNoZWROYXZpZ2F0aW9uOwogCi0jaWYgUExBVEZPUk0oTUFDKQogc3RhdGlj
IE9wdGlvbmFsPF9XS0F1dG9wbGF5RXZlbnQ+IHJlY2VpdmVkQXV0b3BsYXlFdmVudDsKIHN0YXRp
YyBPcHRpb25hbDxfV0tBdXRvcGxheUV2ZW50RmxhZ3M+IHJlY2VpdmVkQXV0b3BsYXlFdmVudEZs
YWdzOwotI2VuZGlmCiAKIHN0YXRpYyBzaXplX3QgYWxlcnRDb3VudDsKIApAQCAtMTk4LDEzICsx
OTYsMTEgQEAgLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uOihXS05hdmlnYXQKICAgICBkZWNpc2lvbkhhbmRsZXIoV0tO
YXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3csIHdlYnNpdGVQb2xpY2llcyk7CiB9CiAKLSNpZiBQ
TEFURk9STShNQUMpCiAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGhhbmRs
ZUF1dG9wbGF5RXZlbnQ6KF9XS0F1dG9wbGF5RXZlbnQpZXZlbnQgd2l0aEZsYWdzOihfV0tBdXRv
cGxheUV2ZW50RmxhZ3MpZmxhZ3MKIHsKICAgICByZWNlaXZlZEF1dG9wbGF5RXZlbnRGbGFncyA9
IGZsYWdzOwogICAgIHJlY2VpdmVkQXV0b3BsYXlFdmVudCA9IGV2ZW50OwogfQotI2VuZGlmCiAK
IEBlbmQKIApAQCAtMjM0LDEzICsyMzAsMTEgQEAgLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3
ICopd2ViVmlldyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOihXS05hdmlnYXQKICAg
ICB9KTsKIH0KIAotI2lmIFBMQVRGT1JNKE1BQykKIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmll
dyAqKXdlYlZpZXcgaGFuZGxlQXV0b3BsYXlFdmVudDooX1dLQXV0b3BsYXlFdmVudClldmVudCB3
aXRoRmxhZ3M6KF9XS0F1dG9wbGF5RXZlbnRGbGFncylmbGFncwogewogICAgIHJlY2VpdmVkQXV0
b3BsYXlFdmVudEZsYWdzID0gZmxhZ3M7CiAgICAgcmVjZWl2ZWRBdXRvcGxheUV2ZW50ID0gZXZl
bnQ7CiB9Ci0jZW5kaWYKIAogQGVuZAogCkBAIC0yNjUsMTEgKzI1OSw3IEBAIEBlbmQKIFRFU1Qo
V2ViS2l0LCBXZWJzaXRlUG9saWNpZXNBdXRvcGxheUVuYWJsZWQpCiB7CiAgICAgYXV0byBjb25m
aWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRd
KTsKLQotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgW2NvbmZpZ3VyYXRpb24gc2V0QWxs
b3dzSW5saW5lTWVkaWFQbGF5YmFjazpZRVNdOwotI2VuZGlmCi0KICAgICBhdXRvIHdlYlZpZXcg
PSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0
KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAog
ICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbQXV0b3BsYXlQb2xpY2llc0RlbGVnYXRlIGFs
bG9jXSBpbml0XSk7CkBAIC0zNTYsNyArMzQ2LDYgQEAgVEVTVChXZWJLaXQsIFdlYnNpdGVQb2xp
Y2llc0F1dG9wbGF5RW5hYmxlZCkKICAgICBbd2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpAImRpZC1u
b3QtcGxheSJdOwogfQogCi0jaWYgUExBVEZPUk0oTUFDKQogc3RhdGljIHZvaWQgcnVuVW50aWxS
ZWNlaXZlc0F1dG9wbGF5RXZlbnQoV0tBdXRvcGxheUV2ZW50IGV2ZW50KQogewogICAgIHdoaWxl
ICghcmVjZWl2ZWRBdXRvcGxheUV2ZW50IHx8ICpyZWNlaXZlZEF1dG9wbGF5RXZlbnQgIT0gZXZl
bnQpCkBAIC0zODMsOCArMzcyLDcgQEAgVEVTVChXZWJLaXQsIFdlYnNpdGVQb2xpY2llc1BsYXlB
ZnRlclByZXZlbnRlZEF1dG9wbGF5KQogICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAibG9h
ZGVkIl07CiAgICAgcnVuVW50aWxSZWNlaXZlc0F1dG9wbGF5RXZlbnQoa1dLQXV0b3BsYXlFdmVu
dERpZFByZXZlbnRGcm9tQXV0b3BsYXlpbmcpOwogCi0gICAgW3dlYlZpZXcgbW91c2VEb3duQXRQ
b2ludDpwbGF5QnV0dG9uQ2xpY2tQb2ludCBzaW11bGF0ZVByZXNzdXJlOk5PXTsKLSAgICBbd2Vi
VmlldyBtb3VzZVVwQXRQb2ludDpwbGF5QnV0dG9uQ2xpY2tQb2ludF07CisgICAgW3dlYlZpZXcg
Y2xpY2tPclRhcEF0UG9pbnQ6cGxheUJ1dHRvbkNsaWNrUG9pbnRdOwogICAgIHJ1blVudGlsUmVj
ZWl2ZXNBdXRvcGxheUV2ZW50KGtXS0F1dG9wbGF5RXZlbnREaWRQbGF5TWVkaWFXaXRoVXNlckdl
c3R1cmUpOwogICAgIEFTU0VSVF9UUlVFKCpyZWNlaXZlZEF1dG9wbGF5RXZlbnRGbGFncyAmIGtX
S0F1dG9wbGF5RXZlbnRGbGFnc0hhc0F1ZGlvKTsKICAgICBBU1NFUlRfVFJVRSgqcmVjZWl2ZWRB
dXRvcGxheUV2ZW50RmxhZ3MgJiBrV0tBdXRvcGxheUV2ZW50RmxhZ3NQbGF5YmFja1dhc1ByZXZl
bnRlZCk7CkBAIC0zOTgsOCArMzg2LDcgQEAgVEVTVChXZWJLaXQsIFdlYnNpdGVQb2xpY2llc1Bs
YXlBZnRlclByZXZlbnRlZEF1dG9wbGF5KQogICAgIHJ1blVudGlsUmVjZWl2ZXNBdXRvcGxheUV2
ZW50KGtXS0F1dG9wbGF5RXZlbnREaWRQcmV2ZW50RnJvbUF1dG9wbGF5aW5nKTsKICAgICBBU1NF
UlRfVFJVRSgqcmVjZWl2ZWRBdXRvcGxheUV2ZW50RmxhZ3MgJiBrV0tBdXRvcGxheUV2ZW50Rmxh
Z3NIYXNBdWRpbyk7CiAKLSAgICBbd2ViVmlldyBtb3VzZURvd25BdFBvaW50OnBsYXlCdXR0b25D
bGlja1BvaW50IHNpbXVsYXRlUHJlc3N1cmU6Tk9dOwotICAgIFt3ZWJWaWV3IG1vdXNlVXBBdFBv
aW50OnBsYXlCdXR0b25DbGlja1BvaW50XTsKKyAgICBbd2ViVmlldyBjbGlja09yVGFwQXRQb2lu
dDpwbGF5QnV0dG9uQ2xpY2tQb2ludF07CiAgICAgcnVuVW50aWxSZWNlaXZlc0F1dG9wbGF5RXZl
bnQoa1dLQXV0b3BsYXlFdmVudERpZFBsYXlNZWRpYVdpdGhVc2VyR2VzdHVyZSk7CiAgICAgQVNT
RVJUX1RSVUUoKnJlY2VpdmVkQXV0b3BsYXlFdmVudEZsYWdzICYga1dLQXV0b3BsYXlFdmVudEZs
YWdzSGFzQXVkaW8pOwogICAgIEFTU0VSVF9UUlVFKCpyZWNlaXZlZEF1dG9wbGF5RXZlbnRGbGFn
cyAmIGtXS0F1dG9wbGF5RXZlbnRGbGFnc1BsYXliYWNrV2FzUHJldmVudGVkKTsKQEAgLTQxMCw4
ICszOTcsNyBAQCBURVNUKFdlYktpdCwgV2Vic2l0ZVBvbGljaWVzUGxheUFmdGVyUHJldmVudGVk
QXV0b3BsYXkpCiAgICAgTlNVUkxSZXF1ZXN0ICpub0F1dG9wbGF5UmVxdWVzdCA9IFtOU1VSTFJl
cXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJj
ZTpAIm5vLWF1dG9wbGF5LXdpdGgtY29udHJvbHMiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJk
aXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXTsKICAgICBbd2ViVmlldyBsb2Fk
UmVxdWVzdDpub0F1dG9wbGF5UmVxdWVzdF07CiAgICAgW3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6
QCJsb2FkZWQiXTsKLSAgICBbd2ViVmlldyBtb3VzZURvd25BdFBvaW50OnBsYXlCdXR0b25DbGlj
a1BvaW50IHNpbXVsYXRlUHJlc3N1cmU6Tk9dOwotICAgIFt3ZWJWaWV3IG1vdXNlVXBBdFBvaW50
OnBsYXlCdXR0b25DbGlja1BvaW50XTsKKyAgICBbd2ViVmlldyBjbGlja09yVGFwQXRQb2ludDpw
bGF5QnV0dG9uQ2xpY2tQb2ludF07CiAgICAgW3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJwbGF5
ZWQiXTsKICAgICBBU1NFUlRfVFJVRShyZWNlaXZlZEF1dG9wbGF5RXZlbnQgPT0gV1RGOjpudWxs
b3B0KTsKIApAQCAtNDI3LDggKzQxMyw3IEBAIFRFU1QoV2ViS2l0LCBXZWJzaXRlUG9saWNpZXNQ
bGF5QWZ0ZXJQcmV2ZW50ZWRBdXRvcGxheSkKICAgICBbd2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpA
ImxvYWRlZCJdOwogICAgIHJ1blVudGlsUmVjZWl2ZXNBdXRvcGxheUV2ZW50KGtXS0F1dG9wbGF5
RXZlbnREaWRQcmV2ZW50RnJvbUF1dG9wbGF5aW5nKTsKIAotICAgIFt3ZWJWaWV3IG1vdXNlRG93
bkF0UG9pbnQ6cGxheUJ1dHRvbkNsaWNrUG9pbnQgc2ltdWxhdGVQcmVzc3VyZTpOT107Ci0gICAg
W3dlYlZpZXcgbW91c2VVcEF0UG9pbnQ6cGxheUJ1dHRvbkNsaWNrUG9pbnRdOworICAgIFt3ZWJW
aWV3IGNsaWNrT3JUYXBBdFBvaW50OnBsYXlCdXR0b25DbGlja1BvaW50XTsKICAgICBydW5VbnRp
bFJlY2VpdmVzQXV0b3BsYXlFdmVudChrV0tBdXRvcGxheUV2ZW50RGlkUGxheU1lZGlhV2l0aFVz
ZXJHZXN0dXJlKTsKICAgICBBU1NFUlRfVFJVRSgqcmVjZWl2ZWRBdXRvcGxheUV2ZW50RmxhZ3Mg
JiBrV0tBdXRvcGxheUV2ZW50RmxhZ3NIYXNBdWRpbyk7CiAgICAgQVNTRVJUX1RSVUUoKnJlY2Vp
dmVkQXV0b3BsYXlFdmVudEZsYWdzICYga1dLQXV0b3BsYXlFdmVudEZsYWdzUGxheWJhY2tXYXNQ
cmV2ZW50ZWQpOwpAQCAtNDUzLDggKzQzOCw3IEBAIFRFU1QoV2ViS2l0LCBXZWJzaXRlUG9saWNp
ZXNQbGF5aW5nV2l0aFVzZXJHZXN0dXJlKQogICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtO
U1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JS
ZXNvdXJjZTpAImF1ZGlvLXdpdGgtcGxheS1idXR0b24iIHdpdGhFeHRlbnNpb246QCJodG1sIiBz
dWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXTsKICAgICBbd2ViVmlldyBs
b2FkUmVxdWVzdDpyZXF1ZXN0XTsKICAgICBbd2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpAImxvYWRl
ZCJdOwotICAgIFt3ZWJWaWV3IG1vdXNlRG93bkF0UG9pbnQ6cGxheUJ1dHRvbkNsaWNrUG9pbnQg
c2ltdWxhdGVQcmVzc3VyZTpOT107Ci0gICAgW3dlYlZpZXcgbW91c2VVcEF0UG9pbnQ6cGxheUJ1
dHRvbkNsaWNrUG9pbnRdOworICAgIFt3ZWJWaWV3IGNsaWNrT3JUYXBBdFBvaW50OnBsYXlCdXR0
b25DbGlja1BvaW50XTsKIAogICAgIHJ1blVudGlsUmVjZWl2ZXNBdXRvcGxheUV2ZW50KGtXS0F1
dG9wbGF5RXZlbnREaWRQbGF5TWVkaWFXaXRoVXNlckdlc3R1cmUpOwogICAgIEFTU0VSVF9UUlVF
KCpyZWNlaXZlZEF1dG9wbGF5RXZlbnRGbGFncyAmIGtXS0F1dG9wbGF5RXZlbnRGbGFnc0hhc0F1
ZGlvKTsKQEAgLTQ2NSw4ICs0NDksNyBAQCBURVNUKFdlYktpdCwgV2Vic2l0ZVBvbGljaWVzUGxh
eWluZ1dpdGhVc2VyR2VzdHVyZSkKICAgICByZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0
V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAidmlkZW8td2l0
aC1wbGF5LWJ1dHRvbiIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RX
ZWJLaXRBUEkucmVzb3VyY2VzIl1dOwogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3Rd
OwogICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAibG9hZGVkIl07Ci0gICAgW3dlYlZpZXcg
bW91c2VEb3duQXRQb2ludDpwbGF5QnV0dG9uQ2xpY2tQb2ludCBzaW11bGF0ZVByZXNzdXJlOk5P
XTsKLSAgICBbd2ViVmlldyBtb3VzZVVwQXRQb2ludDpwbGF5QnV0dG9uQ2xpY2tQb2ludF07Cisg
ICAgW3dlYlZpZXcgY2xpY2tPclRhcEF0UG9pbnQ6cGxheUJ1dHRvbkNsaWNrUG9pbnRdOwogCiAg
ICAgcnVuVW50aWxSZWNlaXZlc0F1dG9wbGF5RXZlbnQoa1dLQXV0b3BsYXlFdmVudERpZFBsYXlN
ZWRpYVdpdGhVc2VyR2VzdHVyZSk7CiAgICAgQVNTRVJUX1RSVUUoKnJlY2VpdmVkQXV0b3BsYXlF
dmVudEZsYWdzICYga1dLQXV0b3BsYXlFdmVudEZsYWdzSGFzQXVkaW8pOwpAQCAtNTIwLDggKzUw
Myw3IEBAIFRFU1QoV2ViS2l0LCBXZWJzaXRlUG9saWNpZXNVc2VySW50ZXJmZXJlbmNlV2l0aFBs
YXlpbmcpCiAgICAgQVNTRVJUX1RSVUUocmVjZWl2ZWRBdXRvcGxheUV2ZW50ID09IFdURjo6bnVs
bG9wdCk7CiAKICAgICBjb25zdCBOU1BvaW50IG11dGVCdXR0b25DbGlja1BvaW50ID0gTlNNYWtl
UG9pbnQoODAsIDI1Nik7Ci0gICAgW3dlYlZpZXcgbW91c2VEb3duQXRQb2ludDptdXRlQnV0dG9u
Q2xpY2tQb2ludCBzaW11bGF0ZVByZXNzdXJlOk5PXTsKLSAgICBbd2ViVmlldyBtb3VzZVVwQXRQ
b2ludDptdXRlQnV0dG9uQ2xpY2tQb2ludF07CisgICAgW3dlYlZpZXcgY2xpY2tPclRhcEF0UG9p
bnQ6bXV0ZUJ1dHRvbkNsaWNrUG9pbnRdOwogICAgIHJ1blVudGlsUmVjZWl2ZXNBdXRvcGxheUV2
ZW50KGtXS0F1dG9wbGF5RXZlbnRVc2VyRGlkSW50ZXJmZXJlV2l0aFBsYXliYWNrKTsKICAgICBB
U1NFUlRfVFJVRSgqcmVjZWl2ZWRBdXRvcGxheUV2ZW50RmxhZ3MgJiBrV0tBdXRvcGxheUV2ZW50
RmxhZ3NIYXNBdWRpbyk7CiAKQEAgLTUzMSw4ICs1MTMsNyBAQCBURVNUKFdlYktpdCwgV2Vic2l0
ZVBvbGljaWVzVXNlckludGVyZmVyZW5jZVdpdGhQbGF5aW5nKQogICAgIEFTU0VSVF9UUlVFKHJl
Y2VpdmVkQXV0b3BsYXlFdmVudCA9PSBXVEY6Om51bGxvcHQpOwogCiAgICAgY29uc3QgTlNQb2lu
dCBwbGF5QnV0dG9uQ2xpY2tQb2ludCA9IE5TTWFrZVBvaW50KDIwLCAyNTYpOwotICAgIFt3ZWJW
aWV3IG1vdXNlRG93bkF0UG9pbnQ6cGxheUJ1dHRvbkNsaWNrUG9pbnQgc2ltdWxhdGVQcmVzc3Vy
ZTpOT107Ci0gICAgW3dlYlZpZXcgbW91c2VVcEF0UG9pbnQ6cGxheUJ1dHRvbkNsaWNrUG9pbnRd
OworICAgIFt3ZWJWaWV3IGNsaWNrT3JUYXBBdFBvaW50OnBsYXlCdXR0b25DbGlja1BvaW50XTsK
ICAgICBydW5VbnRpbFJlY2VpdmVzQXV0b3BsYXlFdmVudChrV0tBdXRvcGxheUV2ZW50VXNlckRp
ZEludGVyZmVyZVdpdGhQbGF5YmFjayk7CiAgICAgQVNTRVJUX1RSVUUoKnJlY2VpdmVkQXV0b3Bs
YXlFdmVudEZsYWdzICYga1dLQXV0b3BsYXlFdmVudEZsYWdzSGFzQXVkaW8pOwogfQpAQCAtNzE1
LDE1ICs2OTYsMTIgQEAgVEVTVChXZWJLaXQsIFdlYnNpdGVQb2xpY2llc1VwZGF0ZXMpCiBURVNU
KFdlYktpdCwgV2Vic2l0ZVBvbGljaWVzQXJiaXRyYXJ5VXNlckdlc3R1cmVRdWlyaykKIHsKICAg
ICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBh
bGxvY10gaW5pdF0pOworICAgIFtjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXS5fbmVlZHNTaXRl
U3BlY2lmaWNRdWlya3MgPSBZRVM7CiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RX
S1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkg
Y29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBhdXRvIGRlbGVnYXRl
ID0gYWRvcHROUyhbW0F1dG9wbGF5UG9saWNpZXNEZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwogICAg
IFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CiAKLSAgICBX
S1JldGFpblB0cjxXS1ByZWZlcmVuY2VzUmVmPiBwcmVmZXJlbmNlcyA9IGFkb3B0V0soV0tQcmVm
ZXJlbmNlc0NyZWF0ZSgpKTsKLSAgICBXS1ByZWZlcmVuY2VzU2V0TmVlZHNTaXRlU3BlY2lmaWNR
dWlya3MocHJlZmVyZW5jZXMuZ2V0KCksIHRydWUpOwotICAgIFdLUGFnZUdyb3VwU2V0UHJlZmVy
ZW5jZXMoV0tQYWdlR2V0UGFnZUdyb3VwKFt3ZWJWaWV3IF9wYWdlRm9yVGVzdGluZ10pLCBwcmVm
ZXJlbmNlcy5nZXQoKSk7Ci0KICAgICBbZGVsZWdhdGUgc2V0QWxsb3dlZEF1dG9wbGF5UXVpcmtz
Rm9yVVJMOl5fV0tXZWJzaXRlQXV0b3BsYXlRdWlyayhOU1VSTCAqdXJsKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIF9XS1dlYnNpdGVBdXRvcGxheVF1aXJrQXJiaXRyYXJ5VXNlckdlc3R1cmVzOwpA
QCAtNzM4LDggKzcxNiw3IEBAIFRFU1QoV2ViS2l0LCBXZWJzaXRlUG9saWNpZXNBcmJpdHJhcnlV
c2VyR2VzdHVyZVF1aXJrKQogICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAiZGlkLW5vdC1w
bGF5Il07CiAKICAgICBjb25zdCBOU1BvaW50IGNsaWNrUG9pbnQgPSBOU01ha2VQb2ludCg3NjAs
IDU2MCk7Ci0gICAgW3dlYlZpZXcgbW91c2VEb3duQXRQb2ludDpjbGlja1BvaW50IHNpbXVsYXRl
UHJlc3N1cmU6Tk9dOwotICAgIFt3ZWJWaWV3IG1vdXNlVXBBdFBvaW50OmNsaWNrUG9pbnRdOwor
ICAgIFt3ZWJWaWV3IGNsaWNrT3JUYXBBdFBvaW50OmNsaWNrUG9pbnRdOwogCiAgICAgW3dlYlZp
ZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInBsYXlWaWRlbygpIl07CiAgICAgW3dl
YlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJhdXRvcGxheWVkIl07CkBAIC03NDgsMTUgKzcyNSwxMiBA
QCBURVNUKFdlYktpdCwgV2Vic2l0ZVBvbGljaWVzQXJiaXRyYXJ5VXNlckdlc3R1cmVRdWlyaykK
IFRFU1QoV2ViS2l0LCBXZWJzaXRlUG9saWNpZXNBdXRvcGxheVF1aXJrcykKIHsKICAgICBhdXRv
IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10g
aW5pdF0pOworICAgIFtjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXS5fbmVlZHNTaXRlU3BlY2lm
aWNRdWlya3MgPSBZRVM7CiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmln
dXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBhdXRvIGRlbGVnYXRlID0gYWRv
cHROUyhbW0F1dG9wbGF5UG9saWNpZXNEZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwogICAgIFt3ZWJW
aWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CiAKLSAgICBXS1JldGFp
blB0cjxXS1ByZWZlcmVuY2VzUmVmPiBwcmVmZXJlbmNlcyA9IGFkb3B0V0soV0tQcmVmZXJlbmNl
c0NyZWF0ZSgpKTsKLSAgICBXS1ByZWZlcmVuY2VzU2V0TmVlZHNTaXRlU3BlY2lmaWNRdWlya3Mo
cHJlZmVyZW5jZXMuZ2V0KCksIHRydWUpOwotICAgIFdLUGFnZUdyb3VwU2V0UHJlZmVyZW5jZXMo
V0tQYWdlR2V0UGFnZUdyb3VwKFt3ZWJWaWV3IF9wYWdlRm9yVGVzdGluZ10pLCBwcmVmZXJlbmNl
cy5nZXQoKSk7Ci0KICAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3RXaXRoQXVkaW8gPSBbTlNVUkxS
ZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3Vy
Y2U6QCJhdXRvcGxheS1jaGVjayIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpA
IlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dOwogCiAgICAgW2RlbGVnYXRlIHNldEFsbG93ZWRB
dXRvcGxheVF1aXJrc0ZvclVSTDpeX1dLV2Vic2l0ZUF1dG9wbGF5UXVpcmsoTlNVUkwgKnVybCkg
ewpAQCAtNzk2LDggKzc3MCw3IEBAIFRFU1QoV2ViS2l0LCBXZWJzaXRlUG9saWNpZXNBdXRvcGxh
eVF1aXJrcykKIAogICAgIC8vIENsaWNrIGluIHRoZSBkb2N1bWVudCwgYnV0IG5vdCBpbiB0aGUg
bWVkaWEgZWxlbWVudC4KICAgICBjb25zdCBOU1BvaW50IGNsaWNrUG9pbnQgPSBOU01ha2VQb2lu
dCg3NjAsIDU2MCk7Ci0gICAgW3dlYlZpZXcgbW91c2VEb3duQXRQb2ludDpjbGlja1BvaW50IHNp
bXVsYXRlUHJlc3N1cmU6Tk9dOwotICAgIFt3ZWJWaWV3IG1vdXNlVXBBdFBvaW50OmNsaWNrUG9p
bnRdOworICAgIFt3ZWJWaWV3IGNsaWNrT3JUYXBBdFBvaW50OmNsaWNrUG9pbnRdOwogCiAgICAg
W3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInBsYXkoKSJdOwogICAgIFt3
ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAicGxheWluZyJdOwpAQCAtODA2LDE1ICs3NzksMTIgQEAg
VEVTVChXZWJLaXQsIFdlYnNpdGVQb2xpY2llc0F1dG9wbGF5UXVpcmtzKQogVEVTVChXZWJLaXQs
IFdlYnNpdGVQb2xpY2llc1BlckRvY3VtZW50QXV0b3BsYXlCZWhhdmlvclF1aXJrcykKIHsKICAg
ICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBh
bGxvY10gaW5pdF0pOworICAgIFtjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXS5fbmVlZHNTaXRl
U3BlY2lmaWNRdWlya3MgPSBZRVM7CiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RX
S1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkg
Y29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBhdXRvIGRlbGVnYXRl
ID0gYWRvcHROUyhbW0F1dG9wbGF5UG9saWNpZXNEZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwogICAg
IFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CiAKLSAgICBX
S1JldGFpblB0cjxXS1ByZWZlcmVuY2VzUmVmPiBwcmVmZXJlbmNlcyA9IGFkb3B0V0soV0tQcmVm
ZXJlbmNlc0NyZWF0ZSgpKTsKLSAgICBXS1ByZWZlcmVuY2VzU2V0TmVlZHNTaXRlU3BlY2lmaWNR
dWlya3MocHJlZmVyZW5jZXMuZ2V0KCksIHRydWUpOwotICAgIFdLUGFnZUdyb3VwU2V0UHJlZmVy
ZW5jZXMoV0tQYWdlR2V0UGFnZUdyb3VwKFt3ZWJWaWV3IF9wYWdlRm9yVGVzdGluZ10pLCBwcmVm
ZXJlbmNlcy5nZXQoKSk7Ci0KICAgICByZWNlaXZlZEF1dG9wbGF5RXZlbnQgPSBXVEY6Om51bGxv
cHQ7CiAKICAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3RXaXRoTXVsdGlwbGVNZWRpYUVsZW1lbnRz
ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVS
TEZvclJlc291cmNlOkAiYXV0b3BsYXlpbmctbXVsdGlwbGUtbWVkaWEtZWxlbWVudHMiIHdpdGhF
eHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJd
XTsKQEAgLTgzNCw4ICs4MDQsNyBAQCBURVNUKFdlYktpdCwgV2Vic2l0ZVBvbGljaWVzUGVyRG9j
dW1lbnRBdXRvcGxheUJlaGF2aW9yUXVpcmtzKQogCiAgICAgLy8gTm93IHRyeSBhZ2FpbiB3aXRo
IGEgdXNlciBnZXN0dXJlLi4uCiAgICAgY29uc3QgTlNQb2ludCBwbGF5QnV0dG9uQ2xpY2tQb2lu
dCA9IE5TTWFrZVBvaW50KDIwLCA1ODApOwotICAgIFt3ZWJWaWV3IG1vdXNlRG93bkF0UG9pbnQ6
cGxheUJ1dHRvbkNsaWNrUG9pbnQgc2ltdWxhdGVQcmVzc3VyZTpOT107Ci0gICAgW3dlYlZpZXcg
bW91c2VVcEF0UG9pbnQ6cGxheUJ1dHRvbkNsaWNrUG9pbnRdOworICAgIFt3ZWJWaWV3IGNsaWNr
T3JUYXBBdFBvaW50OnBsYXlCdXR0b25DbGlja1BvaW50XTsKICAgICBbd2ViVmlldyB3YWl0Rm9y
TWVzc2FnZTpAImRpZC1wbGF5LXZpZGVvMSJdOwogCiAgICAgLy8gTm93IHZpZGVvMiBzaG91bGQg
YWxzbyBiZSBhbGxvd2VkIHRvIGF1dG9wbGF5IHdpdGhvdXQgYSB1c2VyIGdlc3R1cmUgYmVjYXVz
ZSBvZiB0aGUgcXVpcmsuCkBAIC04NTcsOCArODI2LDcgQEAgVEVTVChXZWJLaXQsIFdlYnNpdGVQ
b2xpY2llc1BlckRvY3VtZW50QXV0b3BsYXlCZWhhdmlvclF1aXJrcykKICAgICBbd2ViVmlldyB3
YWl0Rm9yTWVzc2FnZTpAImRpZC1ub3QtcGxheS12aWRlbzEiXTsKIAogICAgIC8vIE5vdyB0cnkg
YWdhaW4gd2l0aCBhIHVzZXIgZ2VzdHVyZS4uLgotICAgIFt3ZWJWaWV3IG1vdXNlRG93bkF0UG9p
bnQ6cGxheUJ1dHRvbkNsaWNrUG9pbnQgc2ltdWxhdGVQcmVzc3VyZTpOT107Ci0gICAgW3dlYlZp
ZXcgbW91c2VVcEF0UG9pbnQ6cGxheUJ1dHRvbkNsaWNrUG9pbnRdOworICAgIFt3ZWJWaWV3IGNs
aWNrT3JUYXBBdFBvaW50OnBsYXlCdXR0b25DbGlja1BvaW50XTsKICAgICBbd2ViVmlldyB3YWl0
Rm9yTWVzc2FnZTpAImRpZC1wbGF5LXZpZGVvMSJdOwogCiAgICAgLy8gTm93IHZpZGVvMiBzaG91
bGQgbm90IGJlIGFsbG93ZWQgdG8gYXV0b3BsYXkgd2l0aG91dCBhIHVzZXIgZ2VzdHVyZS4KQEAg
LTg2OSwxNSArODM3LDEyIEBAIFRFU1QoV2ViS2l0LCBXZWJzaXRlUG9saWNpZXNQZXJEb2N1bWVu
dEF1dG9wbGF5QmVoYXZpb3JRdWlya3MpCiBURVNUKFdlYktpdCwgV2Vic2l0ZVBvbGljaWVzQXV0
b3BsYXlRdWlya3NBc3luY1BvbGljeURlbGVnYXRlKQogewogICAgIGF1dG8gY29uZmlndXJhdGlv
biA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAg
W2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdLl9uZWVkc1NpdGVTcGVjaWZpY1F1aXJrcyA9IFlF
UzsKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZp
Z3VyYXRpb24uZ2V0KCldKTsKIAogICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbQXN5bmNB
dXRvcGxheVBvbGljaWVzRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKICAgICBbd2ViVmlldyBzZXRO
YXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwogCi0gICAgV0tSZXRhaW5QdHI8V0tQ
cmVmZXJlbmNlc1JlZj4gcHJlZmVyZW5jZXMgPSBhZG9wdFdLKFdLUHJlZmVyZW5jZXNDcmVhdGUo
KSk7Ci0gICAgV0tQcmVmZXJlbmNlc1NldE5lZWRzU2l0ZVNwZWNpZmljUXVpcmtzKHByZWZlcmVu
Y2VzLmdldCgpLCB0cnVlKTsKLSAgICBXS1BhZ2VHcm91cFNldFByZWZlcmVuY2VzKFdLUGFnZUdl
dFBhZ2VHcm91cChbd2ViVmlldyBfcGFnZUZvclRlc3RpbmddKSwgcHJlZmVyZW5jZXMuZ2V0KCkp
OwotCiAgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0V2l0aEF1ZGlvID0gW05TVVJMUmVxdWVzdCBy
ZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAiYXV0
b3BsYXktY2hlY2siIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2Vi
S2l0QVBJLnJlc291cmNlcyJdXTsKIAogICAgIFtkZWxlZ2F0ZSBzZXRBbGxvd2VkQXV0b3BsYXlR
dWlya3NGb3JVUkw6Xl9XS1dlYnNpdGVBdXRvcGxheVF1aXJrKE5TVVJMICp1cmwpIHsKQEAgLTkw
OCw3ICs4NzMsNiBAQCBURVNUKFdlYktpdCwgV2Vic2l0ZVBvbGljaWVzQXV0b3BsYXlRdWlya3NB
c3luY1BvbGljeURlbGVnYXRlKQogICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAiZGlkLW5v
dC1wbGF5Il07CiAgICAgW3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJvbi1wYXVzZSJdOwogfQot
I2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKIAogVEVTVChXZWJLaXQsIEludmFsaWRDdXN0b21IZWFk
ZXJzKQogewpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJW
aWV3LmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaAppbmRleCAy
NGE1YWNkZWZmZmZhODVkMzBjZmM0ZjdjZWYxMGZkMTJjNWZlZjg0Li4yNTA3ZjBjMzhiZWRlYzc2
NDQwNWU1ZTQ2OWE4YWUzMmFjM2U1OGVlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L2NvY29hL1Rlc3RXS1dlYlZpZXcuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rl
c3RXS1dlYlZpZXcuaApAQCAtODEsNiArODEsNyBAQAogLSAodm9pZCljb2xsYXBzZVRvU3RhcnQ7
CiAtICh2b2lkKWNvbGxhcHNlVG9FbmQ7CiAtICh2b2lkKWFkZFRvVGVzdFdpbmRvdzsKKy0gKHZv
aWQpY2xpY2tPclRhcEF0UG9pbnQ6KE5TUG9pbnQpcG9pbnRJbldpbmRvdzsKIEBlbmQKIAogI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2Nv
Y29hL1Rlc3RXS1dlYlZpZXcubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dl
YlZpZXcubW0KaW5kZXggNjUxYjVmMjlkMTYwODU5ZjU4ZThmNjdlOWFkNTVlOTViZTZiNTI2NS4u
MzU4NmUxOTM1Y2Q4Yjk3ZjZkNTE0ZTNkMDg0YmVjNjY3ZTlkYzI0NyAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbQpAQCAtNDY3LDYgKzQ2NywxNiBAQCAtICh2
b2lkKWNvbGxhcHNlVG9FbmQKICAgICBbc2VsZiBldmFsdWF0ZUphdmFTY3JpcHQ6QCJnZXRTZWxl
Y3Rpb24oKS5jb2xsYXBzZVRvRW5kKCkiIGNvbXBsZXRpb25IYW5kbGVyOm5pbF07CiB9CiAKKy0g
KHZvaWQpY2xpY2tPclRhcEF0UG9pbnQ6KE5TUG9pbnQpcG9pbnRJbldpbmRvdworeworI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCisgICAgW3NlbGYgX3NpbXVsYXRlVGFwQWN0aW9uQXRMb2NhdGlv
bjpDR1BvaW50TWFrZShwb2ludEluV2luZG93LngsIHBvaW50SW5XaW5kb3cueSldOworI2Vsc2UK
KyAgICBbc2VsZiBtb3VzZURvd25BdFBvaW50OnBsYXlCdXR0b25DbGlja1BvaW50IHNpbXVsYXRl
UHJlc3N1cmU6Tk9dOworICAgIFtzZWxmIG1vdXNlVXBBdFBvaW50OnBsYXlCdXR0b25DbGlja1Bv
aW50XTsKKyNlbmRpZgorfQorCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogLSAodm9pZClk
aWRTdGFydEZvcm1Db250cm9sSW50ZXJhY3Rpb24K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379846</attachid>
            <date>2019-09-30 15:45:22 -0700</date>
            <delta_ts>2019-09-30 18:21:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202214-20190930154521.patch</filename>
            <type>text/plain</type>
            <size>51142</size>
            <attacher name="Luming Yin">luming_yin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwMzQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTBiMzI2ZTE1OTg5YjFk
ZTM5NWQzNjk2NWE1NWU1ZGQ1OGExOTc4Zi4uYzE1N2E2OWIxMjkxMzIwNzA2NzBlN2M5NmVlOGE0
MTVlYzg5ZjViMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE5LTA5LTMwICBMdW1p
bmcgWWluICA8bHVtaW5nX3lpbkBhcHBsZS5jb20+CisKKyAgICAgICAgVXBkYXRlIEFQSSBhdmFp
bGFiaWxpdHkgZm9yIGF1dG9wbGF5IGV2ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDIyMTQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU1NzEw
Mzk1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
cGFnZS9RdWlya3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UXVpcmtzOjpuZWVkc1BlckRvY3Vt
ZW50QXV0b3BsYXlCZWhhdmlvciBjb25zdCk6CisgICAgICAgIE1vdmUgdGhlIHBlci1kb2N1bWVu
dCBhdXRvcGxheSBxdWlyayBsaXN0IGZyb20gV2ViQ29yZSB0byBXZWJLaXQgY2xpZW50cyBmb3Ig
aU9TLgorCisgICAgICAgIChXZWJDb3JlOjpRdWlya3M6OnNob3VsZEF1dG9wbGF5Rm9yQXJiaXRy
YXJ5VXNlckdlc3R1cmUgY29uc3QpOgorICAgICAgICBBbGxvdyBjbGllbnRzIHRvIGNvbmZpZ3Vy
ZSBzaXRlcyB3aXRoIHF1aXJrcyB0aGF0IHdvdWxkIHJlcXVpcmUgYXJiaXRhcnkgdXNlciBnZXN0
dXJlIG9uIGlPUy4KKwogMjAxOS0wOS0yNSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFw
cGxlLmNvbT4KIAogICAgICAgICBbaVBhZE9TXSBbRGF0YUFjdGl2YXRpb25dIEZvY3VzIG1vdmVz
IGF3YXkgYWZ0ZXIgZm9jdXNpbmcgaW5wdXQgZmllbGRzIG9uIHd3dy5hdHQuY29tCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmlu
ZGV4IDFlNjdjYmQyYWNiNzNlZThmNDdmOTI3ZGE4NWU4OTk0ZGVjZDQ2NTEuLjRhNTM1ZjAyNmUw
MDY2MjVmODllMzM3NDYyZjU4YzNlOTEwMmQyOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDQgQEAK
KzIwMTktMDktMzAgIEx1bWluZyBZaW4gIDxsdW1pbmdfeWluQGFwcGxlLmNvbT4KKworICAgICAg
ICBVcGRhdGUgQVBJIGF2YWlsYWJpbGl0eSBmb3IgYXV0b3BsYXkgZXZlbnQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjIxNAorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNTU3MTAzOTU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUu
aDoKKyAgICAgICAgTWFrZSBlbnVtcyBhbmQgV0tVSURlbGVnYXRlIG1ldGhvZCByZWxhdGVkIHRv
IGF1dG9wbGF5IGV2ZW50IGF2YWlsYWJsZSBvbiBpT1MuCisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zaW11bGF0ZVRh
cEFjdGlvbkF0TG9jYXRpb246XSk6CisgICAgICAgIFBsdW1iaW5nIHRvIGFsbG93IHNpbXVsYXRp
bmcgdGFwcyBpbiBBUEkgdGVzdHMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlld1ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tOgorICAgICAgICAoV2Vi
S2l0OjpVSURlbGVnYXRlOjpzZXREZWxlZ2F0ZSk6CisgICAgICAgIChXZWJLaXQ6OnRvV0tBdXRv
cGxheUV2ZW50RmxhZ3MpOgorICAgICAgICAoV2ViS2l0Ojp0b1dLQXV0b3BsYXlFdmVudCk6Cisg
ICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OlVJQ2xpZW50OjpoYW5kbGVBdXRvcGxheUV2ZW50
KToKKyAgICAgICAgTWFrZSBkZWxlZ2F0ZSBtZXRob2RzIHJlbGF0ZWQgdG8gYXV0b3BsYXkgZXZl
bnRzIGF2YWlsYWJsZSBvbiBpT1MuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAg
ICAgICAgKC1bV0tDb250ZW50VmlldyBfc2ltdWxhdGVUYXBBY3Rpb25BdExvY2F0aW9uOl0pOgor
ICAgICAgICBQbHVtYmluZyB0byBhbGxvdyBzaW11bGF0aW5nIHRhcHMgaW4gQVBJIHRlc3RzLgor
CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW06CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2ltdWxhdGVUYXApOgorICAgICAgICBTYW1lIGFzIGFib3Zl
LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OnNpbXVsYXRlVGFwKToKKyAgICAgICAgR2VuZXJhdGUgYSBzeW50aGV0aWMgY2xpY2sgcmVnYXJk
bGVzcyBvZiB0aGUgY3VycmVudCBsYXllciB0cmVlIHRyYW5zYWN0aW9uIElEIHRvIGVuc3VyZSBz
dWNjZXNzZnVsIHRhcCBzaW11bGF0aW9uIHdpdGhvdXQgCisgICAgICAgIGFueSBwcmlvciB0YXBz
IG9yIHJlcGFpbnRzLgorCiAyMDE5LTA5LTI1ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVu
c2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVwbGFjZSBfV0tQcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24uQ1REYXRhQ29ubmVjdGlvblNlcnZpY2VUeXBlIHdpdGggX1dLV2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24uZGF0YUNvbm5lY3Rpb25TZXJ2aWNlVHlwZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9RdWlya3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9RdWlya3Mu
Y3BwCmluZGV4IDdlNDY2ODQ3Yjg1NTA2MDAzYjFlY2U5MTJjOTE5MDk0ZTQ1Njg5NGYuLmE4MTQ2
MDFhMjUzOWY3MzEwNjAwOWRhZjk4ZTNkM2JhN2IwMDQwMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUXVpcmtzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1F1aXJrcy5j
cHAKQEAgLTEwMSwyMiArMTAxLDEzIEBAIGJvb2wgUXVpcmtzOjpuZWVkc1NlZWtpbmdTdXBwb3J0
RGlzYWJsZWQoKSBjb25zdAogCiBib29sIFF1aXJrczo6bmVlZHNQZXJEb2N1bWVudEF1dG9wbGF5
QmVoYXZpb3IoKSBjb25zdAogewotI2lmIFBMQVRGT1JNKE1BQykKICAgICBBU1NFUlQobV9kb2N1
bWVudCA9PSAmbV9kb2N1bWVudC0+dG9wRG9jdW1lbnQoKSk7CiAgICAgcmV0dXJuIG5lZWRzUXVp
cmtzKCkgJiYgYWxsb3dlZEF1dG9wbGF5UXVpcmtzKCptX2RvY3VtZW50KS5jb250YWlucyhBdXRv
cGxheVF1aXJrOjpQZXJEb2N1bWVudEF1dG9wbGF5QmVoYXZpb3IpOwotI2Vsc2UKLSAgICBhdXRv
IGhvc3QgPSBtX2RvY3VtZW50LT50b3BEb2N1bWVudCgpLnVybCgpLmhvc3QoKTsKLSAgICByZXR1
cm4gZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoaG9zdCwgIm5ldGZsaXguY29tIikgfHwg
aG9zdC5lbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKCIubmV0ZmxpeC5jb20iKTsKLSNlbmRpZgog
fQogCiBib29sIFF1aXJrczo6c2hvdWxkQXV0b3BsYXlGb3JBcmJpdHJhcnlVc2VyR2VzdHVyZSgp
IGNvbnN0CiB7Ci0jaWYgUExBVEZPUk0oTUFDKQogICAgIHJldHVybiBuZWVkc1F1aXJrcygpICYm
IGFsbG93ZWRBdXRvcGxheVF1aXJrcygqbV9kb2N1bWVudCkuY29udGFpbnMoQXV0b3BsYXlRdWly
azo6QXJiaXRyYXJ5VXNlckdlc3R1cmVzKTsKLSNlbHNlCi0gICAgcmV0dXJuIGZhbHNlOwotI2Vu
ZGlmCiB9CiAKIGJvb2wgUXVpcmtzOjpoYXNCcm9rZW5FbmNyeXB0ZWRNZWRpYUFQSVN1cHBvcnRR
dWlyaygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaAppbmRleCA4ZTY0N2M5NDhjMWRjNDE4MzUyOGM0ZTQx
NWY5YTAzN2Y0NmJkYTcyLi4zYjQ2OTY4OTM3ZGUxMjQ3MTkyMmI3MzYyMTBkNTQxNjY2ZDQ3Yjgy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVn
YXRlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJ
RGVsZWdhdGVQcml2YXRlLmgKQEAgLTQ4LDEzICs0OCw2IEBACiBAcHJvdG9jb2wgVUlEcmFnU2Vz
c2lvbjsKIEBwcm90b2NvbCBVSURyb3BTZXNzaW9uOwogI2Vsc2UKLXR5cGVkZWYgTlNfRU5VTShO
U0ludGVnZXIsIF9XS0F1dG9wbGF5RXZlbnQpIHsKLSAgICBfV0tBdXRvcGxheUV2ZW50RGlkUHJl
dmVudEZyb21BdXRvcGxheWluZywKLSAgICBfV0tBdXRvcGxheUV2ZW50RGlkUGxheU1lZGlhV2l0
aFVzZXJHZXN0dXJlLAotICAgIF9XS0F1dG9wbGF5RXZlbnREaWRBdXRvcGxheU1lZGlhUGFzdFRo
cmVzaG9sZFdpdGhvdXRVc2VySW50ZXJmZXJlbmNlLAotICAgIF9XS0F1dG9wbGF5RXZlbnRVc2Vy
RGlkSW50ZXJmZXJlV2l0aFBsYXliYWNrLAotfSBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEz
LjQpKTsKLQogdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dLUmVzb3VyY2VMaW1pdCkgewog
ICAgIF9XS1Jlc291cmNlTGltaXRNZW1vcnksCiAgICAgX1dLUmVzb3VyY2VMaW1pdENQVSwKQEAg
LTY1LDE0ICs1OCwyMSBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tQbHVnSW5VbmF2
YWlsYWJpbGl0eVJlYXNvbikgewogICAgIF9XS1BsdWdJblVuYXZhaWxhYmlsaXR5UmVhc29uUGx1
Z2luQ3Jhc2hlZCwKICAgICBfV0tQbHVnSW5VbmF2YWlsYWJpbGl0eVJlYXNvbkluc2VjdXJlUGx1
Z2luVmVyc2lvbgogfSBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKKyNlbmRpZgor
Cit0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tBdXRvcGxheUV2ZW50KSB7CisgICAgX1dL
QXV0b3BsYXlFdmVudERpZFByZXZlbnRGcm9tQXV0b3BsYXlpbmcsCisgICAgX1dLQXV0b3BsYXlF
dmVudERpZFBsYXlNZWRpYVdpdGhVc2VyR2VzdHVyZSwKKyAgICBfV0tBdXRvcGxheUV2ZW50RGlk
QXV0b3BsYXlNZWRpYVBhc3RUaHJlc2hvbGRXaXRob3V0VXNlckludGVyZmVyZW5jZSwKKyAgICBf
V0tBdXRvcGxheUV2ZW50VXNlckRpZEludGVyZmVyZVdpdGhQbGF5YmFjaywKK30gV0tfQVBJX0FW
QUlMQUJMRShtYWNvcygxMC4xMy40KSwgaW9zKFdLX0lPU19UQkEpKTsKIAogdHlwZWRlZiBOU19P
UFRJT05TKE5TVUludGVnZXIsIF9XS0F1dG9wbGF5RXZlbnRGbGFncykgewogICAgIF9XS0F1dG9w
bGF5RXZlbnRGbGFnc05vbmUgPSAwLAogICAgIF9XS0F1dG9wbGF5RXZlbnRGbGFnc0hhc0F1ZGlv
ID0gMSA8PCAwLAogICAgIF9XS0F1dG9wbGF5RXZlbnRGbGFnc1BsYXliYWNrV2FzUHJldmVudGVk
ID0gMSA8PCAxLAogICAgIF9XS0F1dG9wbGF5RXZlbnRGbGFnc01lZGlhSXNNYWluQ29udGVudCA9
IDEgPDwgMiwKLX0gV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSk7Ci0jZW5kaWYKK30g
V0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSwgaW9zKFdLX0lPU19UQkEpKTsKIAogdHlw
ZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dLRm9jdXNEaXJlY3Rpb24pIHsKICAgICBfV0tGb2N1
c0RpcmVjdGlvbkJhY2t3YXJkLApAQCAtMTM2LDYgKzEzNiw4IEBAIHN0cnVjdCBVSUVkZ2VJbnNl
dHM7CiAKIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgdGFrZUZvY3VzOihf
V0tGb2N1c0RpcmVjdGlvbilkaXJlY3Rpb24gV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40
KSwgaW9zKDEyLjIpKTsKIAorLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBo
YW5kbGVBdXRvcGxheUV2ZW50OihfV0tBdXRvcGxheUV2ZW50KWV2ZW50IHdpdGhGbGFnczooX1dL
QXV0b3BsYXlFdmVudEZsYWdzKWZsYWdzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCks
IGlvcyhXS19JT1NfVEJBKSk7CisKICNpZiBUQVJHRVRfT1NfSVBIT05FCiAtIChCT09MKV93ZWJW
aWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHNob3VsZEluY2x1ZGVBcHBMaW5rQWN0aW9uc0ZvckVs
ZW1lbnQ6KF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvICopZWxlbWVudCBXS19BUElfQVZBSUxBQkxF
KGlvcyg5LjApKTsKIC0gKE5TQXJyYXkgKilfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBh
Y3Rpb25zRm9yRWxlbWVudDooX1dLQWN0aXZhdGVkRWxlbWVudEluZm8gKillbGVtZW50IGRlZmF1
bHRBY3Rpb25zOihOU0FycmF5PF9XS0VsZW1lbnRBY3Rpb24gKj4gKilkZWZhdWx0QWN0aW9uczsK
QEAgLTIxMCw3ICsyMTIsNiBAQCBzdHJ1Y3QgVUlFZGdlSW5zZXRzOwogLSAodm9pZClfd2ViVmll
d0RpZFNjcm9sbDooV0tXZWJWaWV3ICopd2ViVmlldyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEw
LjEzLjQpKTsKIC0gKHZvaWQpX3dlYlZpZXdSdW5Nb2RhbDooV0tXZWJWaWV3ICopd2ViVmlldyBX
S19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2Vi
VmlldyAqKXdlYlZpZXcgZGlkTm90SGFuZGxlV2hlZWxFdmVudDooTlNFdmVudCAqKWV2ZW50IFdL
X0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCkpOwotLSAodm9pZClfd2ViVmlldzooV0tXZWJW
aWV3ICopd2ViVmlldyBoYW5kbGVBdXRvcGxheUV2ZW50OihfV0tBdXRvcGxheUV2ZW50KWV2ZW50
IHdpdGhGbGFnczooX1dLQXV0b3BsYXlFdmVudEZsYWdzKWZsYWdzIFdLX0FQSV9BVkFJTEFCTEUo
bWFjb3MoMTAuMTMuNCkpOwogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBk
aWRDbGlja0F1dG9GaWxsQnV0dG9uV2l0aFVzZXJJbmZvOihpZCA8TlNTZWN1cmVDb2Rpbmc+KXVz
ZXJJbmZvIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCkpOwogLSAodm9pZClfd2ViVmll
dzooV0tXZWJWaWV3ICopd2ViVmlldyBnZXRUb29sYmFyc0FyZVZpc2libGVXaXRoQ29tcGxldGlv
bkhhbmRsZXI6KHZvaWQoXikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJM
RShtYWNvcygxMC4xMy40KSk7CiAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3
IHNhdmVEYXRhVG9GaWxlOihOU0RhdGEgKilkYXRhIHN1Z2dlc3RlZEZpbGVuYW1lOihOU1N0cmlu
ZyAqKXN1Z2dlc3RlZEZpbGVuYW1lIG1pbWVUeXBlOihOU1N0cmluZyAqKW1pbWVUeXBlIG9yaWdp
bmF0aW5nVVJMOihOU1VSTCAqKXVybCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4
IGI0OTcxMzViZTcyNjgwNThlZjAxZmY2NjZlNTA2MjNiN2E4ZjJkNzUuLjBlNzZjOTg3N2E5YzZk
NTcyNzQyZTk0MjUzMGY2MDg1MWYyZjM5MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtNzM4NSw2ICs3Mzg1LDExIEBAIC0gKENHUmVj
dClfZHJhZ0NhcmV0UmVjdAogI2VuZGlmCiB9CiAKKy0gKHZvaWQpX3NpbXVsYXRlVGFwQWN0aW9u
QXRMb2NhdGlvbjooQ0dQb2ludClsb2NhdGlvbgoreworICAgIFtfY29udGVudFZpZXcgX3NpbXVs
YXRlVGFwQWN0aW9uQXRMb2NhdGlvbjpsb2NhdGlvbl07Cit9CisKIC0gKHZvaWQpX3NpbXVsYXRl
TG9uZ1ByZXNzQWN0aW9uQXRMb2NhdGlvbjooQ0dQb2ludClsb2NhdGlvbgogewogICAgIFtfY29u
dGVudFZpZXcgX3NpbXVsYXRlTG9uZ1ByZXNzQWN0aW9uQXRMb2NhdGlvbjpsb2NhdGlvbl07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJp
dmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZh
dGUuaAppbmRleCBjZDIwNWQwMzJkM2E3MmMwMmZkYzY1YTY2MGQ5OTdkYjYzZjg1NTcyLi4zOGY4
NjVhZjNiODg5MzFjOWNmOGM3N2EzZmIxMTM0ZGJiZTFlOTkxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKQEAgLTQ5Myw2
ICs0OTMsNyBAQCB0eXBlZGVmIE5TX09QVElPTlMoTlNVSW50ZWdlciwgX1dLUmVjdEVkZ2UpIHsK
IEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNOdW1iZXIgKl9zdGFibGVTdGF0ZU92
ZXJyaWRlIFdLX0FQSV9BVkFJTEFCTEUoaW9zKDEwLjMpKTsKIAogLSAoTlNEaWN0aW9uYXJ5ICop
X3Byb3BlcnRpZXNPZkxheWVyV2l0aElEOih1bnNpZ25lZCBsb25nIGxvbmcpbGF5ZXJJRCBXS19B
UElfQVZBSUxBQkxFKGlvcygxMS4wKSk7CistICh2b2lkKV9zaW11bGF0ZVRhcEFjdGlvbkF0TG9j
YXRpb246KENHUG9pbnQpbG9jYXRpb24gV0tfQVBJX0FWQUlMQUJMRShpb3MoV0tfSU9TX1RCQSkp
OwogLSAodm9pZClfc2ltdWxhdGVMb25nUHJlc3NBY3Rpb25BdExvY2F0aW9uOihDR1BvaW50KWxv
Y2F0aW9uIFdLX0FQSV9BVkFJTEFCTEUoaW9zKDExLjApKTsKIC0gKHZvaWQpX3NpbXVsYXRlVGV4
dEVudGVyZWQ6KE5TU3RyaW5nICopdGV4dCBXS19BUElfQVZBSUxBQkxFKGlvcygxMi4wKSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaAppbmRleCBiZDIwYTgx
OTdlOTRkZWE0Y2M0YzgwMzA5YzU3NjdjMjE2YWUwYTVmLi45ZDk2OGVkNTBhYWRmYmIzYjQ0NzM0
YjlkZWRhMjQxMmUzMjIzNDVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9VSURlbGVnYXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlE
ZWxlZ2F0ZS5oCkBAIC0xMDAsNiArMTAwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCByZWFj
aGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luJiwgdWludDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCB0b3Rh
bEJ5dGVzTmVlZGVkLCBGdW5jdGlvbjx2b2lkKHVuc2lnbmVkIGxvbmcgbG9uZyk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpIGZpbmFsOwogICAgICAgICB2b2lkIGRpZFJlc2lnbklucHV0RWxlbWVudFN0
cm9uZ1Bhc3N3b3JkQXBwZWFyYW5jZShXZWJQYWdlUHJveHkmLCBBUEk6Ok9iamVjdCopIGZpbmFs
OwogICAgICAgICBib29sIHRha2VGb2N1cyhXZWJQYWdlUHJveHkqLCBXS0ZvY3VzRGlyZWN0aW9u
KSBmaW5hbDsKKyAgICAgICAgdm9pZCBoYW5kbGVBdXRvcGxheUV2ZW50KFdlYlBhZ2VQcm94eSYs
IFdlYkNvcmU6OkF1dG9wbGF5RXZlbnQsIE9wdGlvblNldDxXZWJDb3JlOjpBdXRvcGxheUV2ZW50
RmxhZ3M+KSBmaW5hbDsKICNpZiBQTEFURk9STShNQUMpCiAgICAgICAgIHZvaWQgc2hvd1BhZ2Uo
V2ViUGFnZVByb3h5KikgZmluYWw7CiAgICAgICAgIHZvaWQgZm9jdXMoV2ViUGFnZVByb3h5Kikg
ZmluYWw7CkBAIC0xMTYsNyArMTE3LDYgQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBkcmF3SGVh
ZGVyKFdlYlBhZ2VQcm94eSYsIFdlYkZyYW1lUHJveHkmLCBXZWJDb3JlOjpGbG9hdFJlY3QmJikg
ZmluYWw7CiAgICAgICAgIHZvaWQgZHJhd0Zvb3RlcihXZWJQYWdlUHJveHkmLCBXZWJGcmFtZVBy
b3h5JiwgV2ViQ29yZTo6RmxvYXRSZWN0JiYpIGZpbmFsOwogICAgICAgICB2b2lkIGRlY2lkZVBv
bGljeUZvck5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdlYlBhZ2VQcm94eSYsIEFQSTo6
U2VjdXJpdHlPcmlnaW4mLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsKLSAgICAgICAg
dm9pZCBoYW5kbGVBdXRvcGxheUV2ZW50KFdlYlBhZ2VQcm94eSYsIFdlYkNvcmU6OkF1dG9wbGF5
RXZlbnQsIE9wdGlvblNldDxXZWJDb3JlOjpBdXRvcGxheUV2ZW50RmxhZ3M+KSBmaW5hbDsKICAg
ICAgICAgdm9pZCB1bmF2YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWQoV2ViUGFnZVByb3h5Jiwg
V0tQbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbiwgQVBJOjpEaWN0aW9uYXJ5JikgZmluYWw7CiAg
ICAgICAgIHZvaWQgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoV2ViUGFnZVByb3h5JiwgY29uc3Qg
V2ViSGl0VGVzdFJlc3VsdERhdGEmLCBPcHRpb25TZXQ8V2ViRXZlbnQ6Ok1vZGlmaWVyPiwgQVBJ
OjpPYmplY3QqKTsKICAgICAgICAgdm9pZCBkaWRDbGlja0F1dG9GaWxsQnV0dG9uKFdlYlBhZ2VQ
cm94eSYsIEFQSTo6T2JqZWN0KikgZmluYWw7CkBAIC0xNzIsNiArMTcyLDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgYm9vbCB3ZWJWaWV3UmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZyYW1l
RGVjaXNpb25IYW5kbGVyIDogMTsKICAgICAgICAgYm9vbCB3ZWJWaWV3RGlkUmVzaWduSW5wdXRF
bGVtZW50U3Ryb25nUGFzc3dvcmRBcHBlYXJhbmNlV2l0aFVzZXJJbmZvIDogMTsKICAgICAgICAg
Ym9vbCB3ZWJWaWV3VGFrZUZvY3VzIDogMTsKKyAgICAgICAgYm9vbCB3ZWJWaWV3SGFuZGxlQXV0
b3BsYXlFdmVudFdpdGhGbGFncyA6IDE7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgICAgICBib29s
IHNob3dXZWJWaWV3IDogMTsKICAgICAgICAgYm9vbCBmb2N1c1dlYlZpZXcgOiAxOwpAQCAtMTgz
LDcgKzE4NCw2IEBAIHByaXZhdGU6CiAgICAgICAgIGJvb2wgd2ViVmlld1NldFJlc2l6YWJsZSA6
IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld1NldFdpbmRvd0ZyYW1lIDogMTsKICAgICAgICAgYm9v
bCB3ZWJWaWV3RGlkTm90SGFuZGxlV2hlZWxFdmVudCA6IDE7Ci0gICAgICAgIGJvb2wgd2ViVmll
d0hhbmRsZUF1dG9wbGF5RXZlbnRXaXRoRmxhZ3MgOiAxOwogICAgICAgICBib29sIHdlYlZpZXdV
bmF2YWlsYWJsZVBsdWdJbkJ1dHRvbkNsaWNrZWQgOiAxOwogICAgICAgICBib29sIHdlYlZpZXdE
aWRDbGlja0F1dG9GaWxsQnV0dG9uV2l0aFVzZXJJbmZvIDogMTsKICAgICAgICAgYm9vbCB3ZWJW
aWV3RHJhd0hlYWRlckluUmVjdEZvclBhZ2VXaXRoVGl0bGVVUkwgOiAxOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KaW5kZXggN2I2MjRhYmZhMmY0MTEwNDBh
MDZiMmIyNjdkYmJiMzJjZDgxY2QxNi4uNjY3ZmQxMWM1NzEwNmVlMTMwYmExOGNmYWZmODhkMzQ5
OTExMjYxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxl
Z2F0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1t
CkBAIC0xMDYsNiArMTA2LDcgQEAgdm9pZCBVSURlbGVnYXRlOjpzZXREZWxlZ2F0ZShpZCA8V0tV
SURlbGVnYXRlPiBkZWxlZ2F0ZSkKICAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3UmVxdWVz
dEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZyYW1lRGVjaXNpb25IYW5kbGVyID0gW2RlbGVnYXRl
IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6cmVxdWVzdEdlb2xvY2F0aW9u
UGVybWlzc2lvbkZvckZyYW1lOmRlY2lzaW9uSGFuZGxlcjopXTsKICAgICBtX2RlbGVnYXRlTWV0
aG9kcy53ZWJWaWV3RGlkUmVzaWduSW5wdXRFbGVtZW50U3Ryb25nUGFzc3dvcmRBcHBlYXJhbmNl
V2l0aFVzZXJJbmZvID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dl
YlZpZXc6ZGlkUmVzaWduSW5wdXRFbGVtZW50U3Ryb25nUGFzc3dvcmRBcHBlYXJhbmNlV2l0aFVz
ZXJJbmZvOildOwogICAgIG1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdUYWtlRm9jdXMgPSBbZGVs
ZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzp0YWtlRm9jdXM6KV07
CisgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0hhbmRsZUF1dG9wbGF5RXZlbnRXaXRoRmxh
Z3MgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpoYW5k
bGVBdXRvcGxheUV2ZW50OndpdGhGbGFnczopXTsKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICBt
X2RlbGVnYXRlTWV0aG9kcy5zaG93V2ViVmlldyA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKF9zaG93V2ViVmlldzopXTsKQEAgLTExOSw3ICsxMjAsNiBAQCB2b2lkIFVJ
RGVsZWdhdGU6OnNldERlbGVnYXRlKGlkIDxXS1VJRGVsZWdhdGU+IGRlbGVnYXRlKQogICAgIG1f
ZGVsZWdhdGVNZXRob2RzLndlYlZpZXdHZXRXaW5kb3dGcmFtZVdpdGhDb21wbGV0aW9uSGFuZGxl
ciA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmdldFdp
bmRvd0ZyYW1lV2l0aENvbXBsZXRpb25IYW5kbGVyOildOwogICAgIG1fZGVsZWdhdGVNZXRob2Rz
LndlYlZpZXdTZXRXaW5kb3dGcmFtZSA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNl
bGVjdG9yKF93ZWJWaWV3OnNldFdpbmRvd0ZyYW1lOildOwogICAgIG1fZGVsZWdhdGVNZXRob2Rz
LndlYlZpZXdVbmF2YWlsYWJsZVBsdWdJbkJ1dHRvbkNsaWNrZWQgPSBbZGVsZWdhdGUgcmVzcG9u
ZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzp1bmF2YWlsYWJsZVBsdWdJbkJ1dHRvbkNs
aWNrZWRXaXRoUmVhc29uOnBsdWdJbkluZm86KV07Ci0gICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2Vi
Vmlld0hhbmRsZUF1dG9wbGF5RXZlbnRXaXRoRmxhZ3MgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpoYW5kbGVBdXRvcGxheUV2ZW50OndpdGhGbGFnczop
XTsKICAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkQ2xpY2tBdXRvRmlsbEJ1dHRvbldp
dGhVc2VySW5mbyA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJW
aWV3OmRpZENsaWNrQXV0b0ZpbGxCdXR0b25XaXRoVXNlckluZm86KV07CiAgICAgbV9kZWxlZ2F0
ZU1ldGhvZHMud2ViVmlld0RyYXdIZWFkZXJJblJlY3RGb3JQYWdlV2l0aFRpdGxlVVJMID0gW2Rl
bGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6ZHJhd0hlYWRlcklu
UmVjdDpmb3JQYWdlV2l0aFRpdGxlOlVSTDopXTsKICAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJW
aWV3RHJhd0Zvb3RlckluUmVjdEZvclBhZ2VXaXRoVGl0bGVVUkwgPSBbZGVsZWdhdGUgcmVzcG9u
ZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpkcmF3Rm9vdGVySW5SZWN0OmZvclBhZ2VX
aXRoVGl0bGU6VVJMOildOwpAQCAtNDc5LDYgKzQ3OSw0NyBAQCBib29sIFVJRGVsZWdhdGU6OlVJ
Q2xpZW50Ojp0YWtlRm9jdXMoV2ViUGFnZVByb3h5KiwgV0tGb2N1c0RpcmVjdGlvbiBkaXJlY3Rp
b24pCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3N0YXRpYyBfV0tBdXRvcGxheUV2ZW50RmxhZ3Mg
dG9XS0F1dG9wbGF5RXZlbnRGbGFncyhPcHRpb25TZXQ8V2ViQ29yZTo6QXV0b3BsYXlFdmVudEZs
YWdzPiBmbGFncykKK3sKKyAgICBfV0tBdXRvcGxheUV2ZW50RmxhZ3Mgd2tGbGFncyA9IF9XS0F1
dG9wbGF5RXZlbnRGbGFnc05vbmU7CisgICAgaWYgKGZsYWdzLmNvbnRhaW5zKFdlYkNvcmU6OkF1
dG9wbGF5RXZlbnRGbGFnczo6SGFzQXVkaW8pKQorICAgICAgICB3a0ZsYWdzIHw9IF9XS0F1dG9w
bGF5RXZlbnRGbGFnc0hhc0F1ZGlvOworICAgIGlmIChmbGFncy5jb250YWlucyhXZWJDb3JlOjpB
dXRvcGxheUV2ZW50RmxhZ3M6OlBsYXliYWNrV2FzUHJldmVudGVkKSkKKyAgICAgICAgd2tGbGFn
cyB8PSBfV0tBdXRvcGxheUV2ZW50RmxhZ3NQbGF5YmFja1dhc1ByZXZlbnRlZDsKKyAgICBpZiAo
ZmxhZ3MuY29udGFpbnMoV2ViQ29yZTo6QXV0b3BsYXlFdmVudEZsYWdzOjpNZWRpYUlzTWFpbkNv
bnRlbnQpKQorICAgICAgICB3a0ZsYWdzIHw9IF9XS0F1dG9wbGF5RXZlbnRGbGFnc01lZGlhSXNN
YWluQ29udGVudDsKKyAgICAKKyAgICByZXR1cm4gd2tGbGFnczsKK30KKworc3RhdGljIF9XS0F1
dG9wbGF5RXZlbnQgdG9XS0F1dG9wbGF5RXZlbnQoV2ViQ29yZTo6QXV0b3BsYXlFdmVudCBldmVu
dCkKK3sKKyAgICBzd2l0Y2ggKGV2ZW50KSB7CisgICAgY2FzZSBXZWJDb3JlOjpBdXRvcGxheUV2
ZW50OjpEaWRQcmV2ZW50TWVkaWFGcm9tUGxheWluZzoKKyAgICAgICAgcmV0dXJuIF9XS0F1dG9w
bGF5RXZlbnREaWRQcmV2ZW50RnJvbUF1dG9wbGF5aW5nOworICAgIGNhc2UgV2ViQ29yZTo6QXV0
b3BsYXlFdmVudDo6RGlkUGxheU1lZGlhV2l0aFVzZXJHZXN0dXJlOgorICAgICAgICByZXR1cm4g
X1dLQXV0b3BsYXlFdmVudERpZFBsYXlNZWRpYVdpdGhVc2VyR2VzdHVyZTsKKyAgICBjYXNlIFdl
YkNvcmU6OkF1dG9wbGF5RXZlbnQ6OkRpZEF1dG9wbGF5TWVkaWFQYXN0VGhyZXNob2xkV2l0aG91
dFVzZXJJbnRlcmZlcmVuY2U6CisgICAgICAgIHJldHVybiBfV0tBdXRvcGxheUV2ZW50RGlkQXV0
b3BsYXlNZWRpYVBhc3RUaHJlc2hvbGRXaXRob3V0VXNlckludGVyZmVyZW5jZTsKKyAgICBjYXNl
IFdlYkNvcmU6OkF1dG9wbGF5RXZlbnQ6OlVzZXJEaWRJbnRlcmZlcmVXaXRoUGxheWJhY2s6Cisg
ICAgICAgIHJldHVybiBfV0tBdXRvcGxheUV2ZW50VXNlckRpZEludGVyZmVyZVdpdGhQbGF5YmFj
azsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIF9XS0F1dG9w
bGF5RXZlbnREaWRQbGF5TWVkaWFXaXRoVXNlckdlc3R1cmU7Cit9CisKK3ZvaWQgVUlEZWxlZ2F0
ZTo6VUlDbGllbnQ6OmhhbmRsZUF1dG9wbGF5RXZlbnQoV2ViUGFnZVByb3h5JiwgV2ViQ29yZTo6
QXV0b3BsYXlFdmVudCBldmVudCwgT3B0aW9uU2V0PFdlYkNvcmU6OkF1dG9wbGF5RXZlbnRGbGFn
cz4gZmxhZ3MpCit7CisgICAgaWYgKCFtX3VpRGVsZWdhdGUubV9kZWxlZ2F0ZU1ldGhvZHMud2Vi
Vmlld0hhbmRsZUF1dG9wbGF5RXZlbnRXaXRoRmxhZ3MpCisgICAgICAgIHJldHVybjsKKyAgICAK
KyAgICBhdXRvIGRlbGVnYXRlID0gbV91aURlbGVnYXRlLm1fZGVsZWdhdGUuZ2V0KCk7CisgICAg
aWYgKCFkZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIFsoaWQgPFdLVUlEZWxl
Z2F0ZVByaXZhdGU+KWRlbGVnYXRlIF93ZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcgaGFu
ZGxlQXV0b3BsYXlFdmVudDp0b1dLQXV0b3BsYXlFdmVudChldmVudCkgd2l0aEZsYWdzOnRvV0tB
dXRvcGxheUV2ZW50RmxhZ3MoZmxhZ3MpXTsKK30KKwogI2lmIFBMQVRGT1JNKE1BQykKIGJvb2wg
VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmNhblJ1bk1vZGFsKCkgY29uc3QKIHsKQEAgLTY5NywzNSAr
NzM4LDYgQEAgdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6bW91c2VEaWRNb3ZlT3ZlckVsZW1l
bnQoV2ViUGFnZVByb3h5JiwgY29uc3QgV2ViSGl0VGUKICAgICBbKGlkIDxXS1VJRGVsZWdhdGVQ
cml2YXRlPilkZWxlZ2F0ZSBfd2ViVmlldzptX3VpRGVsZWdhdGUubV93ZWJWaWV3IG1vdXNlRGlk
TW92ZU92ZXJFbGVtZW50OndyYXBwZXIoYXBpSGl0VGVzdFJlc3VsdC5nZXQoKSkgd2l0aEZsYWdz
OldlYkV2ZW50RmFjdG9yeTo6dG9OU0V2ZW50TW9kaWZpZXJGbGFncyhtb2RpZmllcnMpIHVzZXJJ
bmZvOnVzZXJJbmZvID8gc3RhdGljX2Nhc3Q8aWQgPE5TU2VjdXJlQ29kaW5nPj4odXNlckluZm8t
PndyYXBwZXIoKSkgOiBuaWxdOwogfQogCi1zdGF0aWMgX1dLQXV0b3BsYXlFdmVudEZsYWdzIHRv
V0tBdXRvcGxheUV2ZW50RmxhZ3MoT3B0aW9uU2V0PFdlYkNvcmU6OkF1dG9wbGF5RXZlbnRGbGFn
cz4gZmxhZ3MpCi17Ci0gICAgX1dLQXV0b3BsYXlFdmVudEZsYWdzIHdrRmxhZ3MgPSBfV0tBdXRv
cGxheUV2ZW50RmxhZ3NOb25lOwotICAgIGlmIChmbGFncy5jb250YWlucyhXZWJDb3JlOjpBdXRv
cGxheUV2ZW50RmxhZ3M6Okhhc0F1ZGlvKSkKLSAgICAgICAgd2tGbGFncyB8PSBfV0tBdXRvcGxh
eUV2ZW50RmxhZ3NIYXNBdWRpbzsKLSAgICBpZiAoZmxhZ3MuY29udGFpbnMoV2ViQ29yZTo6QXV0
b3BsYXlFdmVudEZsYWdzOjpQbGF5YmFja1dhc1ByZXZlbnRlZCkpCi0gICAgICAgIHdrRmxhZ3Mg
fD0gX1dLQXV0b3BsYXlFdmVudEZsYWdzUGxheWJhY2tXYXNQcmV2ZW50ZWQ7Ci0gICAgaWYgKGZs
YWdzLmNvbnRhaW5zKFdlYkNvcmU6OkF1dG9wbGF5RXZlbnRGbGFnczo6TWVkaWFJc01haW5Db250
ZW50KSkKLSAgICAgICAgd2tGbGFncyB8PSBfV0tBdXRvcGxheUV2ZW50RmxhZ3NNZWRpYUlzTWFp
bkNvbnRlbnQ7Ci0gICAgCi0gICAgcmV0dXJuIHdrRmxhZ3M7Ci19Ci0KLXN0YXRpYyBfV0tBdXRv
cGxheUV2ZW50IHRvV0tBdXRvcGxheUV2ZW50KFdlYkNvcmU6OkF1dG9wbGF5RXZlbnQgZXZlbnQp
Ci17Ci0gICAgc3dpdGNoIChldmVudCkgewotICAgIGNhc2UgV2ViQ29yZTo6QXV0b3BsYXlFdmVu
dDo6RGlkUHJldmVudE1lZGlhRnJvbVBsYXlpbmc6Ci0gICAgICAgIHJldHVybiBfV0tBdXRvcGxh
eUV2ZW50RGlkUHJldmVudEZyb21BdXRvcGxheWluZzsKLSAgICBjYXNlIFdlYkNvcmU6OkF1dG9w
bGF5RXZlbnQ6OkRpZFBsYXlNZWRpYVdpdGhVc2VyR2VzdHVyZToKLSAgICAgICAgcmV0dXJuIF9X
S0F1dG9wbGF5RXZlbnREaWRQbGF5TWVkaWFXaXRoVXNlckdlc3R1cmU7Ci0gICAgY2FzZSBXZWJD
b3JlOjpBdXRvcGxheUV2ZW50OjpEaWRBdXRvcGxheU1lZGlhUGFzdFRocmVzaG9sZFdpdGhvdXRV
c2VySW50ZXJmZXJlbmNlOgotICAgICAgICByZXR1cm4gX1dLQXV0b3BsYXlFdmVudERpZEF1dG9w
bGF5TWVkaWFQYXN0VGhyZXNob2xkV2l0aG91dFVzZXJJbnRlcmZlcmVuY2U7Ci0gICAgY2FzZSBX
ZWJDb3JlOjpBdXRvcGxheUV2ZW50OjpVc2VyRGlkSW50ZXJmZXJlV2l0aFBsYXliYWNrOgotICAg
ICAgICByZXR1cm4gX1dLQXV0b3BsYXlFdmVudFVzZXJEaWRJbnRlcmZlcmVXaXRoUGxheWJhY2s7
Ci0gICAgfQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBfV0tBdXRvcGxh
eUV2ZW50RGlkUGxheU1lZGlhV2l0aFVzZXJHZXN0dXJlOwotfQotCiB2b2lkIFVJRGVsZWdhdGU6
OlVJQ2xpZW50Ojp0b29sYmFyc0FyZVZpc2libGUoV2ViUGFnZVByb3h5JiwgRnVuY3Rpb248dm9p
ZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIW1fdWlEZWxlZ2F0ZS5t
X2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3R2V0VG9vbGJhcnNBcmVWaXNpYmxlV2l0aENvbXBsZXRp
b25IYW5kbGVyKQpAQCAtNzU1LDE4ICs3NjcsNiBAQCB2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50
OjpkaWRDbGlja0F1dG9GaWxsQnV0dG9uKFdlYlBhZ2VQcm94eSYsIEFQSTo6T2JqZWN0KiB1cwog
ICAgIFsoaWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+KWRlbGVnYXRlIF93ZWJWaWV3Om1fdWlEZWxl
Z2F0ZS5tX3dlYlZpZXcgZGlkQ2xpY2tBdXRvRmlsbEJ1dHRvbldpdGhVc2VySW5mbzp1c2VySW5m
byA/IHN0YXRpY19jYXN0PGlkIDxOU1NlY3VyZUNvZGluZz4+KHVzZXJJbmZvLT53cmFwcGVyKCkp
IDogbmlsXTsKIH0KIAotdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6aGFuZGxlQXV0b3BsYXlF
dmVudChXZWJQYWdlUHJveHkmLCBXZWJDb3JlOjpBdXRvcGxheUV2ZW50IGV2ZW50LCBPcHRpb25T
ZXQ8V2ViQ29yZTo6QXV0b3BsYXlFdmVudEZsYWdzPiBmbGFncykKLXsKLSAgICBpZiAoIW1fdWlE
ZWxlZ2F0ZS5tX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3SGFuZGxlQXV0b3BsYXlFdmVudFdpdGhG
bGFncykKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIGF1dG8gZGVsZWdhdGUgPSBtX3VpRGVs
ZWdhdGUubV9kZWxlZ2F0ZS5nZXQoKTsKLSAgICBpZiAoIWRlbGVnYXRlKQotICAgICAgICByZXR1
cm47Ci0gICAgCi0gICAgWyhpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4pZGVsZWdhdGUgX3dlYlZp
ZXc6bV91aURlbGVnYXRlLm1fd2ViVmlldyBoYW5kbGVBdXRvcGxheUV2ZW50OnRvV0tBdXRvcGxh
eUV2ZW50KGV2ZW50KSB3aXRoRmxhZ3M6dG9XS0F1dG9wbGF5RXZlbnRGbGFncyhmbGFncyldOwot
fQotCiB2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpzaG93UGFnZShXZWJQYWdlUHJveHkqKQog
ewogICAgIGlmICghbV91aURlbGVnYXRlLm1fZGVsZWdhdGVNZXRob2RzLnNob3dXZWJWaWV3KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCAwNzUwYWFkNmJkNTViM2Vl
YTBkNzM3MjZiZTMyMjljYzZkNDdlZTMyLi43Y2UwNDA4Y2RjYTgxYTc1MDUxYzE2OTMwNzE5Njc2
M2JjMmRhOTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTI0
MSw2ICsxMjQxLDcgQEAgcHVibGljOgogICAgIHZvaWQgY29tbWl0UG90ZW50aWFsVGFwKE9wdGlv
blNldDxXZWJLaXQ6OldlYkV2ZW50OjpNb2RpZmllcj4sIFRyYW5zYWN0aW9uSUQgbGF5ZXJUcmVl
VHJhbnNhY3Rpb25JZEF0TGFzdFRvdWNoU3RhcnQsIFdlYkNvcmU6OlBvaW50ZXJJRCk7CiAgICAg
dm9pZCBjYW5jZWxQb3RlbnRpYWxUYXAoKTsKICAgICB2b2lkIHRhcEhpZ2hsaWdodEF0UG9zaXRp
b24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYsIHVpbnQ2NF90JiByZXF1ZXN0SUQpOworICAg
IHZvaWQgc2ltdWxhdGVUYXAoY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYsIE9wdGlvblNldDxX
ZWJLaXQ6OldlYkV2ZW50OjpNb2RpZmllcj4pOwogICAgIHZvaWQgaGFuZGxlVGFwKGNvbnN0IFdl
YkNvcmU6OkZsb2F0UG9pbnQmLCBPcHRpb25TZXQ8V2ViS2l0OjpXZWJFdmVudDo6TW9kaWZpZXI+
LCBUcmFuc2FjdGlvbklEIGxheWVyVHJlZVRyYW5zYWN0aW9uSWRBdExhc3RUb3VjaFN0YXJ0KTsK
ICAgICB2b2lkIGRpZFJlY29nbml6ZUxvbmdQcmVzcygpOwogICAgIHZvaWQgaGFuZGxlRG91Ymxl
VGFwRm9yRG91YmxlQ2xpY2tBdFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgT3B0aW9u
U2V0PFdlYkV2ZW50OjpNb2RpZmllcj4sIFRyYW5zYWN0aW9uSUQgbGF5ZXJUcmVlVHJhbnNhY3Rp
b25JZEF0TGFzdFRvdWNoU3RhcnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCmluZGV4IDJmMWJiMDE3MzgyMzg0ODZj
NjRhNTRlZDBkNjcyZDM2ODFkZGY4NTcuLmZkYjJmNzAzMGEwMzYzMDQyYWE4YTk2MjczZDFjMDdl
NDZhM2UzMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRl
bnRWaWV3SW50ZXJhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlld0ludGVyYWN0aW9uLmgKQEAgLTU2Myw2ICs1NjMsNyBAQCBGT1JfRUFDSF9QUklW
QVRFX1dLQ09OVEVOVFZJRVdfQUNUSU9OKERFQ0xBUkVfV0tDT05URU5UVklFV19BQ1RJT05fRk9S
X1dFQl9WSUVXKQogCiBAaW50ZXJmYWNlIFdLQ29udGVudFZpZXcgKFdLVGVzdGluZykKIAorLSAo
dm9pZClfc2ltdWxhdGVUYXBBY3Rpb25BdExvY2F0aW9uOihDR1BvaW50KWxvY2F0aW9uOwogLSAo
dm9pZClfc2ltdWxhdGVMb25nUHJlc3NBY3Rpb25BdExvY2F0aW9uOihDR1BvaW50KWxvY2F0aW9u
OwogLSAodm9pZClfc2ltdWxhdGVUZXh0RW50ZXJlZDooTlNTdHJpbmcgKil0ZXh0OwogLSAodm9p
ZClzZWxlY3RGb3JtQWNjZXNzb3J5UGlja2VyUm93OihOU0ludGVnZXIpcm93SW5kZXg7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0
aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5tbQppbmRleCAzYzg0NjIwZDUyZjE1MDJlYWI0NGFmZDA4ZDg2NmMzYzUyNTNiODBiLi45
NjJjMjFmNmUzMmJlMWI5ZTU1YWE4Yjc3M2M1ZGNiYWQxNWE3Y2IzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0K
QEAgLTc3ODAsNiArNzc4MCwxMSBAQCAtICh2b2lkKV9zaW11bGF0ZVRleHRFbnRlcmVkOihOU1N0
cmluZyAqKXRleHQKICNlbmRpZgogfQogCistICh2b2lkKV9zaW11bGF0ZVRhcEFjdGlvbkF0TG9j
YXRpb246KENHUG9pbnQpbG9jYXRpb24KK3sKKyAgICBfcGFnZS0+c2ltdWxhdGVUYXAobG9jYXRp
b24sIFdlYktpdDo6d2ViRXZlbnRNb2RpZmllckZsYWdzKDApKTsKK30KKwogLSAodm9pZClfc2lt
dWxhdGVMb25nUHJlc3NBY3Rpb25BdExvY2F0aW9uOihDR1BvaW50KWxvY2F0aW9uCiB7CiAgICAg
UmV0YWluUHRyPFdLQ29udGVudFZpZXc+IHByb3RlY3RlZFNlbGYgPSBzZWxmOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KaW5kZXggZDE3YTY4MjQz
OTAzNWRhNjczNDU2OTUyY2JhN2E4NjJmOGRiYjMwMC4uZjUxY2ZkNDVhNjBkOTYyMDVjMDJlOTll
M2NmMWUyNjlkNjZmNGE2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dlYlBhZ2VQcm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2Vi
UGFnZVByb3h5SU9TLm1tCkBAIC04NTAsNiArODUwLDExIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp0
YXBIaWdobGlnaHRBdFBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHBvc2l0aW9u
LCB1CiAgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlRhcEhpZ2hsaWdodEF0
UG9zaXRpb24ocmVxdWVzdElELCBwb3NpdGlvbiksIG1fd2ViUGFnZUlEKTsKIH0KIAordm9pZCBX
ZWJQYWdlUHJveHk6OnNpbXVsYXRlVGFwKGNvbnN0IEZsb2F0UG9pbnQmIGxvY2F0aW9uLCBPcHRp
b25TZXQ8V2ViRXZlbnQ6Ok1vZGlmaWVyPiBtb2RpZmllcnMpCit7CisgICAgcHJvY2VzcygpLnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNpbXVsYXRlVGFwKHJvdW5kZWRJbnRQb2ludChsb2NhdGlv
biksIG1vZGlmaWVycyksIG1fd2ViUGFnZUlEKTsKK30KKwogdm9pZCBXZWJQYWdlUHJveHk6Omhh
bmRsZVRhcChjb25zdCBGbG9hdFBvaW50JiBsb2NhdGlvbiwgT3B0aW9uU2V0PFdlYkV2ZW50OjpN
b2RpZmllcj4gbW9kaWZpZXJzLCBUcmFuc2FjdGlvbklEIGxheWVyVHJlZVRyYW5zYWN0aW9uSWRB
dExhc3RUb3VjaFN0YXJ0KQogewogICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpIYW5kbGVUYXAocm91bmRlZEludFBvaW50KGxvY2F0aW9uKSwgbW9kaWZpZXJzLCBsYXllclRy
ZWVUcmFuc2FjdGlvbklkQXRMYXN0VG91Y2hTdGFydCksIG1fd2ViUGFnZUlEKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBkZjBmMzY0YThmZWJlYzRj
OGY4NTU1NWYwMmJmZTVmMzUzZDEwYmJhLi4xYWNhMzRjMGI0MGIxZmM4MWQ1N2EyMDQyYmM5MDJk
ZWY4NTUzNGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
CkBAIC02MzAsNiArNjMwLDcgQEAgcHVibGljOgogICAgIGJvb2wgYWxsb3dzVXNlclNjYWxpbmco
KSBjb25zdDsKICAgICBib29sIGhhc1N0YWJsZVBhZ2VTY2FsZUZhY3RvcigpIGNvbnN0IHsgcmV0
dXJuIG1faGFzU3RhYmxlUGFnZVNjYWxlRmFjdG9yOyB9CiAKKyAgICB2b2lkIHNpbXVsYXRlVGFw
KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgT3B0aW9uU2V0PFdlYktpdDo6V2ViRXZlbnQ6Ok1v
ZGlmaWVyPik7CiAgICAgdm9pZCBoYW5kbGVUYXAoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBP
cHRpb25TZXQ8V2ViS2l0OjpXZWJFdmVudDo6TW9kaWZpZXI+LCBUcmFuc2FjdGlvbklEIGxhc3RM
YXllclRyZWVUcmFuc2FjdGlvbklkKTsKICAgICB2b2lkIHBvdGVudGlhbFRhcEF0UG9zaXRpb24o
dWludDY0X3QgcmVxdWVzdElELCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiwgYm9vbCBzaG91
bGRSZXF1ZXN0TWFnbmlmaWNhdGlvbkluZm9ybWF0aW9uKTsKICAgICB2b2lkIGNvbW1pdFBvdGVu
dGlhbFRhcChPcHRpb25TZXQ8V2ViS2l0OjpXZWJFdmVudDo6TW9kaWZpZXI+LCBUcmFuc2FjdGlv
bklEIGxhc3RMYXllclRyZWVUcmFuc2FjdGlvbklkLCBXZWJDb3JlOjpQb2ludGVySUQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW4KaW5kZXggMmVlMTg4OTY0N2Y0YzQ1ZDY1ZGFhYWFiNDI1ZGRlYjA5YmQ1YmQ4Mi4uZjI2YzVk
YjNhNzdmZTViMGUyZDA4NzJjNDFjNjgxZGMyZGEzYzRjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC01Myw2ICs1
Myw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIFNldE92ZXJy
aWRlVmlld3BvcnRBcmd1bWVudHMoT3B0aW9uYWw8V2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHM+
IGFyZ3VtZW50cykKICAgICBEeW5hbWljVmlld3BvcnRTaXplVXBkYXRlKFdlYkNvcmU6OkZsb2F0
U2l6ZSB2aWV3TGF5b3V0U2l6ZSwgV2ViQ29yZTo6RmxvYXRTaXplIG1heGltdW1Vbm9ic2N1cmVk
U2l6ZSwgV2ViQ29yZTo6RmxvYXRSZWN0IHRhcmdldEV4cG9zZWRDb250ZW50UmVjdCwgV2ViQ29y
ZTo6RmxvYXRSZWN0IHRhcmdldFVub2JzY3VyZWRSZWN0LCBXZWJDb3JlOjpGbG9hdFJlY3QgdGFy
Z2V0VW5vYnNjdXJlZFJlY3RJblNjcm9sbFZpZXdDb29yZGluYXRlcywgV2ViQ29yZTo6UmVjdEVk
Z2VzPGZsb2F0PiB0YXJnZXRVbm9ic2N1cmVkU2FmZUFyZWFJbnNldHMsIGRvdWJsZSBzY2FsZSwg
aW50MzJfdCBkZXZpY2VPcmllbnRhdGlvbiwgdWludDY0X3QgZHluYW1pY1ZpZXdwb3J0U2l6ZVVw
ZGF0ZUlEKQogCisgICAgU2ltdWxhdGVUYXAoV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIE9wdGlv
blNldDxXZWJLaXQ6OldlYkV2ZW50OjpNb2RpZmllcj4gbW9kaWZpZXJzKQogICAgIEhhbmRsZVRh
cChXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgT3B0aW9uU2V0PFdlYktpdDo6V2ViRXZlbnQ6Ok1v
ZGlmaWVyPiBtb2RpZmllcnMsIFdlYktpdDo6VHJhbnNhY3Rpb25JRCBsYXN0TGF5ZXJUcmVlVHJh
bnNhY3Rpb25JZCkKICAgICBQb3RlbnRpYWxUYXBBdFBvc2l0aW9uKHVpbnQ2NF90IHJlcXVlc3RJ
RCwgV2ViQ29yZTo6RmxvYXRQb2ludCBwb2ludCwgYm9vbCBzaG91bGRSZXF1ZXN0TWFnbmlmaWNh
dGlvbkluZm9ybWF0aW9uKQogICAgIENvbW1pdFBvdGVudGlhbFRhcChPcHRpb25TZXQ8V2ViS2l0
OjpXZWJFdmVudDo6TW9kaWZpZXI+IG1vZGlmaWVycywgV2ViS2l0OjpUcmFuc2FjdGlvbklEIGxh
c3RMYXllclRyZWVUcmFuc2FjdGlvbklkLCBXZWJDb3JlOjpQb2ludGVySUQgcG9pbnRlcklkKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJ
T1MubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5t
bQppbmRleCBlODFiNTBlOTQ5NTg0NzBlZWQ3YjY5NTNmZjYyNDUyMWMzMTU4NzA3Li5jY2Q5YzU4
ODM5N2NjODQxMGVjODBkYTA5NWY1YzY0Nzc2YTE4ODUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtODQxLDYgKzg0MSwx
NCBAQCB2b2lkIFdlYlBhZ2U6OmhhbmRsZVRhcChjb25zdCBJbnRQb2ludCYgcG9pbnQsIE9wdGlv
blNldDxXZWJFdmVudDo6TW9kaWZpZXI+IG1vZAogICAgICAgICBoYW5kbGVTeW50aGV0aWNDbGlj
aygqbm9kZVJlc3BvbmRpbmdUb0NsaWNrLCBhZGp1c3RlZFBvaW50LCBtb2RpZmllcnMpOwogfQog
Cit2b2lkIFdlYlBhZ2U6OnNpbXVsYXRlVGFwKGNvbnN0IEludFBvaW50JiBwb2ludCwgT3B0aW9u
U2V0PFdlYkV2ZW50OjpNb2RpZmllcj4gbW9kaWZpZXJzKQoreworICAgIEZsb2F0UG9pbnQgYWRq
dXN0ZWRQb2ludDsKKyAgICBOb2RlKiBub2RlUmVzcG9uZGluZ1RvQ2xpY2sgPSBtX3BhZ2UtPm1h
aW5GcmFtZSgpLm5vZGVSZXNwb25kaW5nVG9DbGlja0V2ZW50cyhwb2ludCwgYWRqdXN0ZWRQb2lu
dCk7CisgICAgaWYgKG5vZGVSZXNwb25kaW5nVG9DbGljaykKKyAgICAgICAgaGFuZGxlU3ludGhl
dGljQ2xpY2soKm5vZGVSZXNwb25kaW5nVG9DbGljaywgYWRqdXN0ZWRQb2ludCwgbW9kaWZpZXJz
KTsKK30KKwogdm9pZCBXZWJQYWdlOjpoYW5kbGVEb3VibGVUYXBGb3JEb3VibGVDbGlja0F0UG9p
bnQoY29uc3QgSW50UG9pbnQmIHBvaW50LCBPcHRpb25TZXQ8V2ViRXZlbnQ6Ok1vZGlmaWVyPiBt
b2RpZmllcnMsIFRyYW5zYWN0aW9uSUQgbGFzdExheWVyVHJlZVRyYW5zYWN0aW9uSWQpCiB7CiAg
ICAgRmxvYXRQb2ludCBhZGp1c3RlZFBvaW50OwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGU4ZjU2NzY0OTQ2ZGE0ZWU0NDkyYzcxOTY2NDg2Mjli
Y2IyZDJkZmUuLmMyZjI1MWE3ZTAzZmVjMWQ0YmM2ODg0NDVkOWRlZDhiNDgzZWExYTYgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwz
NyBAQAorMjAxOS0wOS0zMCAgTHVtaW5nIFlpbiAgPGx1bWluZ195aW5AYXBwbGUuY29tPgorCisg
ICAgICAgIFVwZGF0ZSBBUEkgYXZhaWxhYmlsaXR5IGZvciBhdXRvcGxheSBldmVudAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyMjE0CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS81NTcxMDM5NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L2F1dG9wbGF5
LWNoZWNrLmh0bWw6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvYXV0b3Bs
YXktaW5oZXJpdHMtZ2VzdHVyZS1mcm9tLWRvY3VtZW50Lmh0bWw6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQvYXV0b3BsYXktbXV0ZWQtd2l0aC1jb250cm9scy5odG1sOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L2F1dG9wbGF5LXdpdGgtY29udHJv
bHMuaHRtbDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9qcy1wbGF5LXdp
dGgtY29udHJvbHMuaHRtbDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9u
by1hdXRvcGxheS13aXRoLWNvbnRyb2xzLmh0bWw6CisgICAgICAgIFByb3ZpZGUgYW4gaWQgZm9y
IHBsYXkgYnV0dG9ucyBvbiB2YXJpb3VzIHRlc3RpbmcgcGFnZXMgc28gdGhhdCB0aGV5IGNhbiBi
ZSByZWxpYWJseSB0cmlnZ2VyZWQgb24gaU9TLiAKKyAgICAgICAgQWRkaXRpb25hbGx5LCBhZGQg
YSBuby1vcCBidXR0b24gb24gYXV0b3BsYXktY2hlY2sgYW5kIGF1dG9wbGF5LWluaGVyaXRzLWdl
c3R1cmUtZnJvbS1kb2N1bWVudCwgc28gdGhhdCAKKyAgICAgICAgZ2VzdHVyZXMgYWN0dWFsbHkg
aGl0IGFuIGVsZW1lbnQgb24gdGhlIHBhZ2UgYW5kIGFyZW4ndCBpZ25vcmVkIG9uIGlPUyBkdXJp
bmcgdGVzdGluZy4gCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1dlYnNpdGVQb2xpY2llcy5tbToKKyAgICAgICAgKC1bQXV0b3BsYXlQb2xpY2llc0RlbGVnYXRl
IF93ZWJWaWV3OmhhbmRsZUF1dG9wbGF5RXZlbnQ6d2l0aEZsYWdzOl0pOgorICAgICAgICAoLVtB
c3luY0F1dG9wbGF5UG9saWNpZXNEZWxlZ2F0ZSBfd2ViVmlldzpoYW5kbGVBdXRvcGxheUV2ZW50
OndpdGhGbGFnczpdKToKKyAgICAgICAgKFRFU1QpOgorICAgICAgICBFbmFibGUgdGVzdHMgcmVs
YXRlZCB0byBhdXRvcGxheSBwb2xpY3kgb24gaU9TLiBGb3Igc29tZSBpT1MgdGVzdHMgdGhhdCBp
bnZvbHZlIGdlc3R1cmUgcXVpcmtzLCBkZWxheSAKKyAgICAgICAgcHJvZ3JhbW1hdGljIHBsYXli
YWNrIGFmdGVyIGEgdmVyeSBzaG9ydCBpbnRlcnZhbCB0byBlbnN1cmUgc3VjY2Vzc2Z1bCBhc3lu
Y2hyb25vdXMgZ2VzdHVyZSBwcm9wYWdhdGlvbi4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvYXVkaW8td2l0aC1wbGF5LWJ1dHRvbi5odG1sOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvYXV0b3BsYXlpbmctbXVsdGlwbGUtbWVk
aWEtZWxlbWVudHMuaHRtbDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL3ZpZGVvLXdpdGgtcGxheS1idXR0b24uaHRtbDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L2NvY29hL1Rlc3RXS1dlYlZpZXcuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rl
c3RXS1dlYlZpZXcubW06CisgICAgICAgICgtW1Rlc3RXS1dlYlZpZXcgY2xpY2tPbkVsZW1lbnRJ
RDpdKToKKyAgICAgICAgKC1bVGVzdFdLV2ViVmlldyBjbGlja09uUG9pbnQ6XSk6CisgICAgICAg
IEhlbHBlciBtZXRob2QgdG8gYWJzdHJhY3Qgc2ltdWxhdGVkIHRhcHMgYW5kIG1vdXNlIGNsaWNr
cyBiZXR3ZWVuIE1hYyBhbmQgaU9TLgorCiAyMDE5LTA5LTI1ICBXZW5zb24gSHNpZWggIDx3ZW5z
b25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFtpUGFkT1NdIFtEYXRhQWN0aXZhdGlvbl0g
Rm9jdXMgbW92ZXMgYXdheSBhZnRlciBmb2N1c2luZyBpbnB1dCBmaWVsZHMgb24gd3d3LmF0dC5j
b20KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L2F1dG9wbGF5
LWNoZWNrLmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9hdXRvcGxheS1j
aGVjay5odG1sCmluZGV4IGY0YmE1MTc3MDQyMmFjZjY1NWE4YWEyZTQzODVmMTg3NjZmOTUwMTIu
LmUzZmNkMDZkN2U4NzY3NjhjZjE0MTM0ZDRkMzU3ZGY0ZGQ5ZDc1ODIgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L2F1dG9wbGF5LWNoZWNrLmh0bWwKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvYXV0b3BsYXktY2hlY2suaHRtbApAQCAt
MjUsNiArMjUsOCBAQAogICAgICAgICA8L3NjcmlwdD4KICAgICA8L2hlYWQ+CiAgICAgPGJvZHkg
b25sb2FkPSJwbGF5VmlkZW8oKSI+Ci0gICAgICAgIDx2aWRlbyBpZD0idmlkZW8iIG9ucGF1c2U9
dmlkZW9EaWRQYXVzZSgpIHBsYXlzaW5saW5lIHNyYz0idGVzdC5tcDQiIC8+CisgICAgICAgIDx2
aWRlbyBpZD0idmlkZW8iIG9ucGF1c2U9dmlkZW9EaWRQYXVzZSgpIHBsYXlzaW5saW5lIHNyYz0i
dGVzdC5tcDQiPjwvdmlkZW8+CisgICAgICAgIDxicj4KKyAgICAgICAgPGJ1dHRvbiBpZD0ibm8t
b3AtYnV0dG9uIiB0eXBlPSJidXR0b24iPk5vLW9wIEJ1dHRvbjwvYnV0dG9uPgogICAgIDwvYm9k
eT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
L2F1dG9wbGF5LWluaGVyaXRzLWdlc3R1cmUtZnJvbS1kb2N1bWVudC5odG1sIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvYXV0b3BsYXktaW5oZXJpdHMtZ2VzdHVyZS1mcm9tLWRv
Y3VtZW50Lmh0bWwKaW5kZXggMDgwMDU5NDVkMTU1ODRkNTcwOWI3NGZmY2RiZTQxNzQ4ODU5YTQ4
Ni4uNTg0NjliNDJkYTUzYzJjNDkwMTljMjY4ZDM2NWZjYTlkOGYzMGNkMCAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvYXV0b3BsYXktaW5oZXJpdHMtZ2VzdHVy
ZS1mcm9tLWRvY3VtZW50Lmh0bWwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQvYXV0b3BsYXktaW5oZXJpdHMtZ2VzdHVyZS1mcm9tLWRvY3VtZW50Lmh0bWwKQEAgLTE5LDYg
KzE5LDggQEAKIDwvaGVhZD4KIAogPGJvZHkgb25sb2FkPSJsb2FkZWQoKSI+Ci0gICAgPHZpZGVv
IGlkPSJ2aWRlbyIgY29udHJvbHMgc3JjPSJ0ZXN0Lm1wNCI+PC92aWRlbz4KKyAgICA8dmlkZW8g
cGxheXNpbmxpbmUgaWQ9InZpZGVvIiBjb250cm9scyBzcmM9InRlc3QubXA0Ij48L3ZpZGVvPgor
ICAgIDxicj4KKyAgICA8YnV0dG9uIGlkPSJuby1vcC1idXR0b24iIHR5cGU9ImJ1dHRvbiI+Tm8t
b3AgQnV0dG9uPC9idXR0b24+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9hdXRvcGxheS1tdXRlZC13aXRoLWNvbnRyb2xzLmh0
bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9hdXRvcGxheS1tdXRlZC13aXRo
LWNvbnRyb2xzLmh0bWwKaW5kZXggNjQ5Yzk1YzRiMTEzOTZkOTlkNWY2MDE4YmExY2Y1M2ZjNjc5
ZmI0MS4uYTFlZWRjMDA0ZGFiYTk1YTQ3NTAyZjM5YmRlZDlhZjYwYTdhYzc5ZiAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvYXV0b3BsYXktbXV0ZWQtd2l0aC1j
b250cm9scy5odG1sCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L2F1dG9w
bGF5LW11dGVkLXdpdGgtY29udHJvbHMuaHRtbApAQCAtMTcsNyArMTcsNyBAQAogICAgICAgICA8
L3NjcmlwdD4KICAgICA8L2hlYWQ+CiAgICAgPGJvZHkgb25sb2FkPSJwYWdlTG9hZGVkKCkiPgot
ICAgICAgICA8YnV0dG9uIG9uY2xpY2s9InBsYXkoKSI+UGxheTwvYnV0dG9uPgorICAgICAgICA8
YnV0dG9uIGlkPSJwbGF5QnV0dG9uIiBvbmNsaWNrPSJwbGF5KCkiPlBsYXk8L2J1dHRvbj4KICAg
ICAgICAgPHZpZGVvIGlkPSJ2aWRlbyIgb25wbGF5aW5nPSJiZWdhblBsYXlpbmcoKSIgbXV0ZWQg
YXV0b3BsYXkgc3JjPSJ0ZXN0Lm1wNCIgLz4KICAgICA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9hdXRvcGxheS13aXRoLWNvbnRy
b2xzLmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9hdXRvcGxheS13aXRo
LWNvbnRyb2xzLmh0bWwKaW5kZXggY2Y4MGE2NTc4ZWVhMWU0OTExMTU0NDZhMTBhYmE1MjVkOGY1
NzA1Mi4uYTA3MGZlZGMyMTVjOWFiYzdmMjczYmE1ZGYzMjJmOGVmNzNjM2ZlMSAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvYXV0b3BsYXktd2l0aC1jb250cm9s
cy5odG1sCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L2F1dG9wbGF5LXdp
dGgtY29udHJvbHMuaHRtbApAQCAtMTMsNyArMTMsNyBAQAogICAgICAgICA8L3NjcmlwdD4KICAg
ICA8L2hlYWQ+CiAgICAgPGJvZHkgb25sb2FkPSJwYWdlTG9hZGVkKCkiPgotICAgICAgICA8YnV0
dG9uIG9uY2xpY2s9InBsYXkoKSI+UGxheTwvYnV0dG9uPgorICAgICAgICA8YnV0dG9uIGlkPSJw
bGF5QnV0dG9uIiBvbmNsaWNrPSJwbGF5KCkiPlBsYXk8L2J1dHRvbj4KICAgICAgICAgPHZpZGVv
IGlkPSJ2aWRlbyIgYXV0b3BsYXkgc3JjPSJ0ZXN0Lm1wNCIgLz4KICAgICA8L2JvZHk+CiA8L2h0
bWw+CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9qcy1wbGF5
LXdpdGgtY29udHJvbHMuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L2pz
LXBsYXktd2l0aC1jb250cm9scy5odG1sCmluZGV4IDg3ZmFkMzU3MDY4YWVmOTc2ZTM1MzMwOWEy
YjM4ZGQ4MmZhYWE0YmIuLmQ0ZWM0NWRjODlhMDA2ODMxMzgyZTMyNDA5NTk1ZjNiYTg4MGI1ZmUg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L2pzLXBsYXktd2l0
aC1jb250cm9scy5odG1sCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L2pz
LXBsYXktd2l0aC1jb250cm9scy5odG1sCkBAIC0zNCw4ICszNCw4IEBACiAgICAgICAgIDwvc2Ny
aXB0PgogICAgIDwvaGVhZD4KICAgICA8Ym9keSBvbmxvYWQ9InBhZ2VMb2FkZWQoKSI+Ci0gICAg
ICAgIDxidXR0b24gb25jbGljaz0icGxheSgpIj5QbGF5PC9idXR0b24+Ci0gICAgICAgIDxidXR0
b24gb25jbGljaz0ibXV0ZSgpIj5NdXRlPC9idXR0b24+CisgICAgICAgIDxidXR0b24gaWQ9InBs
YXlCdXR0b24iIG9uY2xpY2s9InBsYXkoKSI+UGxheTwvYnV0dG9uPgorICAgICAgICA8YnV0dG9u
IGlkPSJtdXRlQnV0dG9uIiBvbmNsaWNrPSJtdXRlKCkiPk11dGU8L2J1dHRvbj4KICAgICAgICAg
PHZpZGVvIGlkPSJ2aWRlbyIgb25wbGF5aW5nPWJlZ2FuUGxheWluZygpIG9uZW5kZWQ9ZW5kZWRQ
bGF5aW5nKCkgc3JjPSJ0ZXN0Lm1wNCIgLz4KICAgICA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9uby1hdXRvcGxheS13aXRoLWNv
bnRyb2xzLmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9uby1hdXRvcGxh
eS13aXRoLWNvbnRyb2xzLmh0bWwKaW5kZXggNjc2YmFjMjA1MDdiMzExZjdiYzljN2ZjNTMxOGMz
YzA2N2U4M2Q2Ny4uM2NkYTNjODAzN2RmNjczMzQxYTcwOTdhNzY3NWQwYTg2NDI3ZmE1ZCAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvbm8tYXV0b3BsYXktd2l0
aC1jb250cm9scy5odG1sCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L25v
LWF1dG9wbGF5LXdpdGgtY29udHJvbHMuaHRtbApAQCAtMTksNyArMTksNyBAQAogICAgICAgICA8
L3NjcmlwdD4KICAgICA8L2hlYWQ+CiAgICAgPGJvZHkgb25sb2FkPSJwYWdlTG9hZGVkKCkiPgot
ICAgICAgICA8YnV0dG9uIG9uY2xpY2s9InBsYXkoKSI+UGxheTwvYnV0dG9uPgorICAgICAgICA8
YnV0dG9uIGlkPSJwbGF5QnV0dG9uIiBvbmNsaWNrPSJwbGF5KCkiPlBsYXk8L2J1dHRvbj4KICAg
ICAgICAgPHZpZGVvIGlkPSJ2aWRlbyIgb25wbGF5aW5nPWJlZ2FuUGxheWluZygpIHNyYz0idGVz
dC5tcDQiIC8+CiAgICAgPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlUG9saWNpZXMubW0gYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVQb2xpY2llcy5tbQppbmRleCA4MmFi
NGNlMmE4YTBhYmMyMGNkY2E5Njg3ZTRhYWI2ODFhMjkyYmUzLi41YTJiNzA4ODllMTNmMDFkOGY0
YWIxYzk2OGQ2YTc4MWEwYWFiODFhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1dlYnNpdGVQb2xpY2llcy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVQb2xpY2llcy5tbQpAQCAtNjMsMTAgKzYzLDgg
QEAgc3RhdGljIGJvb2wgZG9uZUNvbXBpbGluZzsKIHN0YXRpYyBib29sIHJlY2VpdmVkQWxlcnQ7
CiBzdGF0aWMgYm9vbCBmaW5pc2hlZE5hdmlnYXRpb247CiAKLSNpZiBQTEFURk9STShNQUMpCiBz
dGF0aWMgT3B0aW9uYWw8X1dLQXV0b3BsYXlFdmVudD4gcmVjZWl2ZWRBdXRvcGxheUV2ZW50Owog
c3RhdGljIE9wdGlvbmFsPF9XS0F1dG9wbGF5RXZlbnRGbGFncz4gcmVjZWl2ZWRBdXRvcGxheUV2
ZW50RmxhZ3M7Ci0jZW5kaWYKIAogc3RhdGljIHNpemVfdCBhbGVydENvdW50OwogCkBAIC0xOTgs
MTMgKzE5NiwxMSBAQCAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246KFdLTmF2aWdhdAogICAgIGRlY2lzaW9uSGFuZGxl
cihXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdywgd2Vic2l0ZVBvbGljaWVzKTsKIH0KIAot
I2lmIFBMQVRGT1JNKE1BQykKIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcg
aGFuZGxlQXV0b3BsYXlFdmVudDooX1dLQXV0b3BsYXlFdmVudClldmVudCB3aXRoRmxhZ3M6KF9X
S0F1dG9wbGF5RXZlbnRGbGFncylmbGFncwogewogICAgIHJlY2VpdmVkQXV0b3BsYXlFdmVudEZs
YWdzID0gZmxhZ3M7CiAgICAgcmVjZWl2ZWRBdXRvcGxheUV2ZW50ID0gZXZlbnQ7CiB9Ci0jZW5k
aWYKIAogQGVuZAogCkBAIC0yMzQsMTMgKzIzMCwxMSBAQCAtICh2b2lkKV93ZWJWaWV3OihXS1dl
YlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246KFdLTmF2aWdh
dAogICAgIH0pOwogfQogCi0jaWYgUExBVEZPUk0oTUFDKQogLSAodm9pZClfd2ViVmlldzooV0tX
ZWJWaWV3ICopd2ViVmlldyBoYW5kbGVBdXRvcGxheUV2ZW50OihfV0tBdXRvcGxheUV2ZW50KWV2
ZW50IHdpdGhGbGFnczooX1dLQXV0b3BsYXlFdmVudEZsYWdzKWZsYWdzCiB7CiAgICAgcmVjZWl2
ZWRBdXRvcGxheUV2ZW50RmxhZ3MgPSBmbGFnczsKICAgICByZWNlaXZlZEF1dG9wbGF5RXZlbnQg
PSBldmVudDsKIH0KLSNlbmRpZgogCiBAZW5kCiAKQEAgLTI2Nyw3ICsyNjEsOCBAQCBURVNUKFdl
YktpdCwgV2Vic2l0ZVBvbGljaWVzQXV0b3BsYXlFbmFibGVkKQogICAgIGF1dG8gY29uZmlndXJh
dGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAK
ICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIFtjb25maWd1cmF0aW9uIHNldEFsbG93c0lu
bGluZU1lZGlhUGxheWJhY2s6WUVTXTsKKyAgICBjb25maWd1cmF0aW9uLmdldCgpLmFsbG93c0lu
bGluZU1lZGlhUGxheWJhY2sgPSBZRVM7CisgICAgY29uZmlndXJhdGlvbi5nZXQoKS5faW5saW5l
TWVkaWFQbGF5YmFja1JlcXVpcmVzUGxheXNJbmxpbmVBdHRyaWJ1dGUgPSBOTzsKICNlbmRpZgog
CiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1
cmF0aW9uLmdldCgpXSk7CkBAIC0zNTYsMTMgKzM1MSwxMyBAQCBURVNUKFdlYktpdCwgV2Vic2l0
ZVBvbGljaWVzQXV0b3BsYXlFbmFibGVkKQogICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAi
ZGlkLW5vdC1wbGF5Il07CiB9CiAKLSNpZiBQTEFURk9STShNQUMpCiBzdGF0aWMgdm9pZCBydW5V
bnRpbFJlY2VpdmVzQXV0b3BsYXlFdmVudChXS0F1dG9wbGF5RXZlbnQgZXZlbnQpCiB7CiAgICAg
d2hpbGUgKCFyZWNlaXZlZEF1dG9wbGF5RXZlbnQgfHwgKnJlY2VpdmVkQXV0b3BsYXlFdmVudCAh
PSBldmVudCkKICAgICAgICAgQ0ZSdW5Mb29wUnVuSW5Nb2RlKGtDRlJ1bkxvb3BEZWZhdWx0TW9k
ZSwgMC4xLCB0cnVlKTsKIH0KIAorI2lmIFBMQVRGT1JNKE1BQykKIFRFU1QoV2ViS2l0LCBXZWJz
aXRlUG9saWNpZXNQbGF5QWZ0ZXJQcmV2ZW50ZWRBdXRvcGxheSkKIHsKICAgICBhdXRvIGNvbmZp
Z3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0p
OwpAQCAtNDMzLDEwICs0MjgsMTYgQEAgVEVTVChXZWJLaXQsIFdlYnNpdGVQb2xpY2llc1BsYXlB
ZnRlclByZXZlbnRlZEF1dG9wbGF5KQogICAgIEFTU0VSVF9UUlVFKCpyZWNlaXZlZEF1dG9wbGF5
RXZlbnRGbGFncyAmIGtXS0F1dG9wbGF5RXZlbnRGbGFnc0hhc0F1ZGlvKTsKICAgICBBU1NFUlRf
VFJVRSgqcmVjZWl2ZWRBdXRvcGxheUV2ZW50RmxhZ3MgJiBrV0tBdXRvcGxheUV2ZW50RmxhZ3NQ
bGF5YmFja1dhc1ByZXZlbnRlZCk7CiB9CisjZW5kaWYKIAogVEVTVChXZWJLaXQsIFdlYnNpdGVQ
b2xpY2llc1BsYXlpbmdXaXRoVXNlckdlc3R1cmUpCiB7CiAgICAgYXV0byBjb25maWd1cmF0aW9u
ID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQorICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkuYWxsb3dzSW5saW5l
TWVkaWFQbGF5YmFjayA9IFlFUzsKKyAgICBjb25maWd1cmF0aW9uLmdldCgpLl9pbmxpbmVNZWRp
YVBsYXliYWNrUmVxdWlyZXNQbGF5c0lubGluZUF0dHJpYnV0ZSA9IE5POworI2VuZGlmCisKICAg
ICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRp
b24uZ2V0KCldKTsKIAogICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbQXV0b3BsYXlQb2xp
Y2llc0RlbGVnYXRlIGFsbG9jXSBpbml0XSk7CkBAIC00NDgsMTMgKzQ0OSwyMCBAQCBURVNUKFdl
YktpdCwgV2Vic2l0ZVBvbGljaWVzUGxheWluZ1dpdGhVc2VyR2VzdHVyZSkKIAogICAgIHJlY2Vp
dmVkQXV0b3BsYXlFdmVudCA9IFdURjo6bnVsbG9wdDsKIAorI2lmIFBMQVRGT1JNKE1BQykKICAg
ICBOU1BvaW50IHBsYXlCdXR0b25DbGlja1BvaW50ID0gTlNNYWtlUG9pbnQoMjAsIDU4MCk7Cisj
ZW5kaWYKIAogICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVz
dFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAImF1ZGlvLXdp
dGgtcGxheS1idXR0b24iIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0
V2ViS2l0QVBJLnJlc291cmNlcyJdXTsKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0
XTsKICAgICBbd2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpAImxvYWRlZCJdOworCisjaWYgUExBVEZP
Uk0oTUFDKQogICAgIFt3ZWJWaWV3IG1vdXNlRG93bkF0UG9pbnQ6cGxheUJ1dHRvbkNsaWNrUG9p
bnQgc2ltdWxhdGVQcmVzc3VyZTpOT107CiAgICAgW3dlYlZpZXcgbW91c2VVcEF0UG9pbnQ6cGxh
eUJ1dHRvbkNsaWNrUG9pbnRdOworI2Vsc2UKKyAgICBbd2ViVmlldyBjbGlja09uRWxlbWVudElE
OkAicGxheUJ1dHRvbiJdOworI2VuZGlmCiAKICAgICBydW5VbnRpbFJlY2VpdmVzQXV0b3BsYXlF
dmVudChrV0tBdXRvcGxheUV2ZW50RGlkUGxheU1lZGlhV2l0aFVzZXJHZXN0dXJlKTsKICAgICBB
U1NFUlRfVFJVRSgqcmVjZWl2ZWRBdXRvcGxheUV2ZW50RmxhZ3MgJiBrV0tBdXRvcGxheUV2ZW50
RmxhZ3NIYXNBdWRpbyk7CkBAIC00NjUsOCArNDczLDEzIEBAIFRFU1QoV2ViS2l0LCBXZWJzaXRl
UG9saWNpZXNQbGF5aW5nV2l0aFVzZXJHZXN0dXJlKQogICAgIHJlcXVlc3QgPSBbTlNVUkxSZXF1
ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6
QCJ2aWRlby13aXRoLXBsYXktYnV0dG9uIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0
b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV07CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVl
c3Q6cmVxdWVzdF07CiAgICAgW3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJsb2FkZWQiXTsKKwor
I2lmIFBMQVRGT1JNKE1BQykKICAgICBbd2ViVmlldyBtb3VzZURvd25BdFBvaW50OnBsYXlCdXR0
b25DbGlja1BvaW50IHNpbXVsYXRlUHJlc3N1cmU6Tk9dOwogICAgIFt3ZWJWaWV3IG1vdXNlVXBB
dFBvaW50OnBsYXlCdXR0b25DbGlja1BvaW50XTsKKyNlbHNlCisgICAgW3dlYlZpZXcgY2xpY2tP
bkVsZW1lbnRJRDpAInBsYXlCdXR0b24iXTsKKyNlbmRpZgogCiAgICAgcnVuVW50aWxSZWNlaXZl
c0F1dG9wbGF5RXZlbnQoa1dLQXV0b3BsYXlFdmVudERpZFBsYXlNZWRpYVdpdGhVc2VyR2VzdHVy
ZSk7CiAgICAgQVNTRVJUX1RSVUUoKnJlY2VpdmVkQXV0b3BsYXlFdmVudEZsYWdzICYga1dLQXV0
b3BsYXlFdmVudEZsYWdzSGFzQXVkaW8pOwpAQCAtNDc2LDYgKzQ4OSwxMSBAQCBURVNUKFdlYktp
dCwgV2Vic2l0ZVBvbGljaWVzUGxheWluZ1dpdGhVc2VyR2VzdHVyZSkKIFRFU1QoV2ViS2l0LCBX
ZWJzaXRlUG9saWNpZXNQbGF5aW5nV2l0aG91dEludGVyZmVyZW5jZSkKIHsKICAgICBhdXRvIGNv
bmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5p
dF0pOworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgY29uZmlndXJhdGlvbi5nZXQoKS5h
bGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrID0gWUVTOworICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCku
X2lubGluZU1lZGlhUGxheWJhY2tSZXF1aXJlc1BsYXlzSW5saW5lQXR0cmlidXRlID0gTk87Cisj
ZW5kaWYKKwogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMzM2LCAyNzYpIGNvbmZpZ3VyYXRpb246
Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tB
dXRvcGxheVBvbGljaWVzRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKQEAgLTQ5NSw2ICs1MTMsMTEg
QEAgVEVTVChXZWJLaXQsIFdlYnNpdGVQb2xpY2llc1BsYXlpbmdXaXRob3V0SW50ZXJmZXJlbmNl
KQogVEVTVChXZWJLaXQsIFdlYnNpdGVQb2xpY2llc1VzZXJJbnRlcmZlcmVuY2VXaXRoUGxheWlu
ZykKIHsKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmln
dXJhdGlvbiBhbGxvY10gaW5pdF0pOworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgY29u
ZmlndXJhdGlvbi5nZXQoKS5hbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrID0gWUVTOworICAgIGNv
bmZpZ3VyYXRpb24uZ2V0KCkuX2lubGluZU1lZGlhUGxheWJhY2tSZXF1aXJlc1BsYXlzSW5saW5l
QXR0cmlidXRlID0gTk87CisjZW5kaWYKKwogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tU
ZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMzM2LCAy
NzYpIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgYXV0byBkZWxl
Z2F0ZSA9IGFkb3B0TlMoW1tBdXRvcGxheVBvbGljaWVzRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsK
QEAgLTUxOSw5ICs1NDIsMTQgQEAgVEVTVChXZWJLaXQsIFdlYnNpdGVQb2xpY2llc1VzZXJJbnRl
cmZlcmVuY2VXaXRoUGxheWluZykKICAgICBbd2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpAInBsYXlp
bmciXTsKICAgICBBU1NFUlRfVFJVRShyZWNlaXZlZEF1dG9wbGF5RXZlbnQgPT0gV1RGOjpudWxs
b3B0KTsKIAorI2lmIFBMQVRGT1JNKE1BQykKICAgICBjb25zdCBOU1BvaW50IG11dGVCdXR0b25D
bGlja1BvaW50ID0gTlNNYWtlUG9pbnQoODAsIDI1Nik7CiAgICAgW3dlYlZpZXcgbW91c2VEb3du
QXRQb2ludDptdXRlQnV0dG9uQ2xpY2tQb2ludCBzaW11bGF0ZVByZXNzdXJlOk5PXTsKICAgICBb
d2ViVmlldyBtb3VzZVVwQXRQb2ludDptdXRlQnV0dG9uQ2xpY2tQb2ludF07CisjZWxzZQorICAg
IFt3ZWJWaWV3IGNsaWNrT25FbGVtZW50SUQ6QCJtdXRlQnV0dG9uIl07CisjZW5kaWYKKwogICAg
IHJ1blVudGlsUmVjZWl2ZXNBdXRvcGxheUV2ZW50KGtXS0F1dG9wbGF5RXZlbnRVc2VyRGlkSW50
ZXJmZXJlV2l0aFBsYXliYWNrKTsKICAgICBBU1NFUlRfVFJVRSgqcmVjZWl2ZWRBdXRvcGxheUV2
ZW50RmxhZ3MgJiBrV0tBdXRvcGxheUV2ZW50RmxhZ3NIYXNBdWRpbyk7CiAKQEAgLTUzMCwxMyAr
NTU4LDE5IEBAIFRFU1QoV2ViS2l0LCBXZWJzaXRlUG9saWNpZXNVc2VySW50ZXJmZXJlbmNlV2l0
aFBsYXlpbmcpCiAgICAgW3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJwbGF5aW5nIl07CiAgICAg
QVNTRVJUX1RSVUUocmVjZWl2ZWRBdXRvcGxheUV2ZW50ID09IFdURjo6bnVsbG9wdCk7CiAKKyNp
ZiBQTEFURk9STShNQUMpCiAgICAgY29uc3QgTlNQb2ludCBwbGF5QnV0dG9uQ2xpY2tQb2ludCA9
IE5TTWFrZVBvaW50KDIwLCAyNTYpOwogICAgIFt3ZWJWaWV3IG1vdXNlRG93bkF0UG9pbnQ6cGxh
eUJ1dHRvbkNsaWNrUG9pbnQgc2ltdWxhdGVQcmVzc3VyZTpOT107CiAgICAgW3dlYlZpZXcgbW91
c2VVcEF0UG9pbnQ6cGxheUJ1dHRvbkNsaWNrUG9pbnRdOworI2Vsc2UKKyAgICBbd2ViVmlldyBj
bGlja09uRWxlbWVudElEOkAicGxheUJ1dHRvbiJdOworI2VuZGlmCisKICAgICBydW5VbnRpbFJl
Y2VpdmVzQXV0b3BsYXlFdmVudChrV0tBdXRvcGxheUV2ZW50VXNlckRpZEludGVyZmVyZVdpdGhQ
bGF5YmFjayk7CiAgICAgQVNTRVJUX1RSVUUoKnJlY2VpdmVkQXV0b3BsYXlFdmVudEZsYWdzICYg
a1dLQXV0b3BsYXlFdmVudEZsYWdzSGFzQXVkaW8pOwogfQogCisjaWYgUExBVEZPUk0oTUFDKQog
VEVTVChXZWJLaXQsIFdlYnNpdGVQb2xpY2llc1dpdGhCcmlkZ2luZ0Nhc3QpCiB7CiAgICAgYXV0
byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2Nd
IGluaXRdKTsKQEAgLTY3NSwxMCArNzA5LDE2IEBAIFRFU1QoV2ViS2l0LCBXZWJzaXRlUG9saWNp
ZXNEdXJpbmdSZWRpcmVjdCkKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0
IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAidGVzdDovLy9zaG91bGQtcmVk
aXJlY3QiXV1dOwogICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAiYXV0b3BsYXllZCJdOwog
fQorI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKIAogVEVTVChXZWJLaXQsIFdlYnNpdGVQb2xpY2ll
c1VwZGF0ZXMpCiB7CiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmll
d0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQor
ICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkuYWxsb3dzSW5saW5lTWVkaWFQbGF5YmFjayA9IFlFUzsK
KyAgICBjb25maWd1cmF0aW9uLmdldCgpLl9pbmxpbmVNZWRpYVBsYXliYWNrUmVxdWlyZXNQbGF5
c0lubGluZUF0dHJpYnV0ZSA9IE5POworI2VuZGlmCisKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9w
dE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAs
IDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKICAgICBhdXRv
IGRlbGVnYXRlID0gYWRvcHROUyhbW0F1dG9wbGF5UG9saWNpZXNEZWxlZ2F0ZSBhbGxvY10gaW5p
dF0pOwogICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07
CkBAIC03MTUsMTUgKzc1NSwxNyBAQCBURVNUKFdlYktpdCwgV2Vic2l0ZVBvbGljaWVzVXBkYXRl
cykKIFRFU1QoV2ViS2l0LCBXZWJzaXRlUG9saWNpZXNBcmJpdHJhcnlVc2VyR2VzdHVyZVF1aXJr
KQogewogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1
cmF0aW9uIGFsbG9jXSBpbml0XSk7CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBjb25m
aWd1cmF0aW9uLmdldCgpLmFsbG93c0lubGluZU1lZGlhUGxheWJhY2sgPSBZRVM7CisgICAgY29u
ZmlndXJhdGlvbi5nZXQoKS5faW5saW5lTWVkaWFQbGF5YmFja1JlcXVpcmVzUGxheXNJbmxpbmVB
dHRyaWJ1dGUgPSBOTzsKKyNlbmRpZgorICAgIFtjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXS5f
bmVlZHNTaXRlU3BlY2lmaWNRdWlya3MgPSBZRVM7CisKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9w
dE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAs
IDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIGF1
dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbQXV0b3BsYXlQb2xpY2llc0RlbGVnYXRlIGFsbG9jXSBp
bml0XSk7CiAgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgp
XTsKIAotICAgIFdLUmV0YWluUHRyPFdLUHJlZmVyZW5jZXNSZWY+IHByZWZlcmVuY2VzID0gYWRv
cHRXSyhXS1ByZWZlcmVuY2VzQ3JlYXRlKCkpOwotICAgIFdLUHJlZmVyZW5jZXNTZXROZWVkc1Np
dGVTcGVjaWZpY1F1aXJrcyhwcmVmZXJlbmNlcy5nZXQoKSwgdHJ1ZSk7Ci0gICAgV0tQYWdlR3Jv
dXBTZXRQcmVmZXJlbmNlcyhXS1BhZ2VHZXRQYWdlR3JvdXAoW3dlYlZpZXcgX3BhZ2VGb3JUZXN0
aW5nXSksIHByZWZlcmVuY2VzLmdldCgpKTsKLQogICAgIFtkZWxlZ2F0ZSBzZXRBbGxvd2VkQXV0
b3BsYXlRdWlya3NGb3JVUkw6Xl9XS1dlYnNpdGVBdXRvcGxheVF1aXJrKE5TVVJMICp1cmwpCiAg
ICAgewogICAgICAgICByZXR1cm4gX1dLV2Vic2l0ZUF1dG9wbGF5UXVpcmtBcmJpdHJhcnlVc2Vy
R2VzdHVyZXM7CkBAIC03MzcsMjYgKzc3OSwzMCBAQCBURVNUKFdlYktpdCwgV2Vic2l0ZVBvbGlj
aWVzQXJiaXRyYXJ5VXNlckdlc3R1cmVRdWlyaykKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpy
ZXF1ZXN0XTsKICAgICBbd2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpAImRpZC1ub3QtcGxheSJdOwog
Ci0gICAgY29uc3QgTlNQb2ludCBjbGlja1BvaW50ID0gTlNNYWtlUG9pbnQoNzYwLCA1NjApOwot
ICAgIFt3ZWJWaWV3IG1vdXNlRG93bkF0UG9pbnQ6Y2xpY2tQb2ludCBzaW11bGF0ZVByZXNzdXJl
Ok5PXTsKLSAgICBbd2ViVmlldyBtb3VzZVVwQXRQb2ludDpjbGlja1BvaW50XTsKLQorI2lmIFBM
QVRGT1JNKE1BQykKKyAgICBbd2ViVmlldyBjbGlja09uUG9pbnQ6TlNNYWtlUG9pbnQoNzYwLCA1
NjApXTsKICAgICBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAicGxheVZp
ZGVvKCkiXTsKKyNlbHNlCisgICAgW3dlYlZpZXcgY2xpY2tPblBvaW50Ok5TTWFrZVBvaW50KDE1
LCAxNzApXTsKKyAgICBbd2ViVmlldyBwZXJmb3JtU2VsZWN0b3I6QHNlbGVjdG9yKHN0cmluZ0J5
RXZhbHVhdGluZ0phdmFTY3JpcHQ6KSB3aXRoT2JqZWN0OkAicGxheVZpZGVvKCkiIGFmdGVyRGVs
YXk6MC4xXTsKKyNlbmRpZgogICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAiYXV0b3BsYXll
ZCJdOwogfQogCiBURVNUKFdlYktpdCwgV2Vic2l0ZVBvbGljaWVzQXV0b3BsYXlRdWlya3MpCiB7
CiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24gYWxsb2NdIGluaXRdKTsKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIGNvbmZpZ3Vy
YXRpb24uZ2V0KCkuYWxsb3dzSW5saW5lTWVkaWFQbGF5YmFjayA9IFlFUzsKKyAgICBjb25maWd1
cmF0aW9uLmdldCgpLl9pbmxpbmVNZWRpYVBsYXliYWNrUmVxdWlyZXNQbGF5c0lubGluZUF0dHJp
YnV0ZSA9IE5POworI2VuZGlmCisgICAgW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdLl9uZWVk
c1NpdGVTcGVjaWZpY1F1aXJrcyA9IFlFUzsKKwogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMo
W1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAw
LCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgYXV0byBk
ZWxlZ2F0ZSA9IGFkb3B0TlMoW1tBdXRvcGxheVBvbGljaWVzRGVsZWdhdGUgYWxsb2NdIGluaXRd
KTsKICAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwog
Ci0gICAgV0tSZXRhaW5QdHI8V0tQcmVmZXJlbmNlc1JlZj4gcHJlZmVyZW5jZXMgPSBhZG9wdFdL
KFdLUHJlZmVyZW5jZXNDcmVhdGUoKSk7Ci0gICAgV0tQcmVmZXJlbmNlc1NldE5lZWRzU2l0ZVNw
ZWNpZmljUXVpcmtzKHByZWZlcmVuY2VzLmdldCgpLCB0cnVlKTsKLSAgICBXS1BhZ2VHcm91cFNl
dFByZWZlcmVuY2VzKFdLUGFnZUdldFBhZ2VHcm91cChbd2ViVmlldyBfcGFnZUZvclRlc3Rpbmdd
KSwgcHJlZmVyZW5jZXMuZ2V0KCkpOwotCiAgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0V2l0aEF1
ZGlvID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVd
IFVSTEZvclJlc291cmNlOkAiYXV0b3BsYXktY2hlY2siIHdpdGhFeHRlbnNpb246QCJodG1sIiBz
dWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXTsKIAogICAgIFtkZWxlZ2F0
ZSBzZXRBbGxvd2VkQXV0b3BsYXlRdWlya3NGb3JVUkw6Xl9XS1dlYnNpdGVBdXRvcGxheVF1aXJr
KE5TVVJMICp1cmwpIHsKQEAgLTc5NSwyNiArODQxLDMwIEBAIFRFU1QoV2ViS2l0LCBXZWJzaXRl
UG9saWNpZXNBdXRvcGxheVF1aXJrcykKICAgICBbd2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpAImxv
YWRlZCJdOwogCiAgICAgLy8gQ2xpY2sgaW4gdGhlIGRvY3VtZW50LCBidXQgbm90IGluIHRoZSBt
ZWRpYSBlbGVtZW50LgotICAgIGNvbnN0IE5TUG9pbnQgY2xpY2tQb2ludCA9IE5TTWFrZVBvaW50
KDc2MCwgNTYwKTsKLSAgICBbd2ViVmlldyBtb3VzZURvd25BdFBvaW50OmNsaWNrUG9pbnQgc2lt
dWxhdGVQcmVzc3VyZTpOT107Ci0gICAgW3dlYlZpZXcgbW91c2VVcEF0UG9pbnQ6Y2xpY2tQb2lu
dF07Ci0KKyNpZiBQTEFURk9STShNQUMpCisgICAgW3dlYlZpZXcgY2xpY2tPblBvaW50Ok5TTWFr
ZVBvaW50KDc2MCwgNTYwKV07CiAgICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNj
cmlwdDpAInBsYXkoKSJdOworI2Vsc2UKKyAgICBbd2ViVmlldyBjbGlja09uUG9pbnQ6TlNNYWtl
UG9pbnQoMTUsIDE3MCldOworICAgIFt3ZWJWaWV3IHBlcmZvcm1TZWxlY3RvcjpAc2VsZWN0b3Io
c3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDopIHdpdGhPYmplY3Q6QCJwbGF5KCkiIGFmdGVy
RGVsYXk6MC4xXTsKKyNlbmRpZgorCiAgICAgW3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJwbGF5
aW5nIl07CiB9CiAKIFRFU1QoV2ViS2l0LCBXZWJzaXRlUG9saWNpZXNQZXJEb2N1bWVudEF1dG9w
bGF5QmVoYXZpb3JRdWlya3MpCiB7CiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhb
W1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQorICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkuYWxsb3dzSW5saW5lTWVkaWFQbGF5YmFj
ayA9IFlFUzsKKyAgICBjb25maWd1cmF0aW9uLmdldCgpLl9pbmxpbmVNZWRpYVBsYXliYWNrUmVx
dWlyZXNQbGF5c0lubGluZUF0dHJpYnV0ZSA9IE5POworI2VuZGlmCisgICAgW2NvbmZpZ3VyYXRp
b24gcHJlZmVyZW5jZXNdLl9uZWVkc1NpdGVTcGVjaWZpY1F1aXJrcyA9IFlFUzsKICAgICBhdXRv
IHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpO
U01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0
KCldKTsKIAogICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbQXV0b3BsYXlQb2xpY2llc0Rl
bGVnYXRlIGFsbG9jXSBpbml0XSk7CiAgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRl
OmRlbGVnYXRlLmdldCgpXTsKIAotICAgIFdLUmV0YWluUHRyPFdLUHJlZmVyZW5jZXNSZWY+IHBy
ZWZlcmVuY2VzID0gYWRvcHRXSyhXS1ByZWZlcmVuY2VzQ3JlYXRlKCkpOwotICAgIFdLUHJlZmVy
ZW5jZXNTZXROZWVkc1NpdGVTcGVjaWZpY1F1aXJrcyhwcmVmZXJlbmNlcy5nZXQoKSwgdHJ1ZSk7
Ci0gICAgV0tQYWdlR3JvdXBTZXRQcmVmZXJlbmNlcyhXS1BhZ2VHZXRQYWdlR3JvdXAoW3dlYlZp
ZXcgX3BhZ2VGb3JUZXN0aW5nXSksIHByZWZlcmVuY2VzLmdldCgpKTsKLQogICAgIHJlY2VpdmVk
QXV0b3BsYXlFdmVudCA9IFdURjo6bnVsbG9wdDsKIAogICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVz
dFdpdGhNdWx0aXBsZU1lZGlhRWxlbWVudHMgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJM
OltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJhdXRvcGxheWluZy1tdWx0
aXBsZS1tZWRpYS1lbGVtZW50cyIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpA
IlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dOwpAQCAtODMzLDkgKzg4MywxMiBAQCBURVNUKFdl
YktpdCwgV2Vic2l0ZVBvbGljaWVzUGVyRG9jdW1lbnRBdXRvcGxheUJlaGF2aW9yUXVpcmtzKQog
ICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAiZGlkLW5vdC1wbGF5LXZpZGVvMSJdOwogCiAg
ICAgLy8gTm93IHRyeSBhZ2FpbiB3aXRoIGEgdXNlciBnZXN0dXJlLi4uCisjaWYgUExBVEZPUk0o
TUFDKQogICAgIGNvbnN0IE5TUG9pbnQgcGxheUJ1dHRvbkNsaWNrUG9pbnQgPSBOU01ha2VQb2lu
dCgyMCwgNTgwKTsKLSAgICBbd2ViVmlldyBtb3VzZURvd25BdFBvaW50OnBsYXlCdXR0b25DbGlj
a1BvaW50IHNpbXVsYXRlUHJlc3N1cmU6Tk9dOwotICAgIFt3ZWJWaWV3IG1vdXNlVXBBdFBvaW50
OnBsYXlCdXR0b25DbGlja1BvaW50XTsKKyNlbHNlCisgICAgY29uc3QgTlNQb2ludCBwbGF5QnV0
dG9uQ2xpY2tQb2ludCA9IE5TTWFrZVBvaW50KDE1LCAxNSk7CisjZW5kaWYKKyAgICBbd2ViVmll
dyBjbGlja09uUG9pbnQ6cGxheUJ1dHRvbkNsaWNrUG9pbnRdOwogICAgIFt3ZWJWaWV3IHdhaXRG
b3JNZXNzYWdlOkAiZGlkLXBsYXktdmlkZW8xIl07CiAKICAgICAvLyBOb3cgdmlkZW8yIHNob3Vs
ZCBhbHNvIGJlIGFsbG93ZWQgdG8gYXV0b3BsYXkgd2l0aG91dCBhIHVzZXIgZ2VzdHVyZSBiZWNh
dXNlIG9mIHRoZSBxdWlyay4KQEAgLTg1Nyw4ICs5MTAsNyBAQCBURVNUKFdlYktpdCwgV2Vic2l0
ZVBvbGljaWVzUGVyRG9jdW1lbnRBdXRvcGxheUJlaGF2aW9yUXVpcmtzKQogICAgIFt3ZWJWaWV3
IHdhaXRGb3JNZXNzYWdlOkAiZGlkLW5vdC1wbGF5LXZpZGVvMSJdOwogCiAgICAgLy8gTm93IHRy
eSBhZ2FpbiB3aXRoIGEgdXNlciBnZXN0dXJlLi4uCi0gICAgW3dlYlZpZXcgbW91c2VEb3duQXRQ
b2ludDpwbGF5QnV0dG9uQ2xpY2tQb2ludCBzaW11bGF0ZVByZXNzdXJlOk5PXTsKLSAgICBbd2Vi
VmlldyBtb3VzZVVwQXRQb2ludDpwbGF5QnV0dG9uQ2xpY2tQb2ludF07CisgICAgW3dlYlZpZXcg
Y2xpY2tPblBvaW50OnBsYXlCdXR0b25DbGlja1BvaW50XTsKICAgICBbd2ViVmlldyB3YWl0Rm9y
TWVzc2FnZTpAImRpZC1wbGF5LXZpZGVvMSJdOwogCiAgICAgLy8gTm93IHZpZGVvMiBzaG91bGQg
bm90IGJlIGFsbG93ZWQgdG8gYXV0b3BsYXkgd2l0aG91dCBhIHVzZXIgZ2VzdHVyZS4KQEAgLTg2
OSwxNSArOTIxLDE2IEBAIFRFU1QoV2ViS2l0LCBXZWJzaXRlUG9saWNpZXNQZXJEb2N1bWVudEF1
dG9wbGF5QmVoYXZpb3JRdWlya3MpCiBURVNUKFdlYktpdCwgV2Vic2l0ZVBvbGljaWVzQXV0b3Bs
YXlRdWlya3NBc3luY1BvbGljeURlbGVnYXRlKQogewogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9
IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBjb25maWd1cmF0aW9uLmdldCgpLmFsbG93c0lubGluZU1l
ZGlhUGxheWJhY2sgPSBZRVM7CisgICAgY29uZmlndXJhdGlvbi5nZXQoKS5faW5saW5lTWVkaWFQ
bGF5YmFja1JlcXVpcmVzUGxheXNJbmxpbmVBdHRyaWJ1dGUgPSBOTzsKKyNlbmRpZgorICAgIFtj
b25maWd1cmF0aW9uIHByZWZlcmVuY2VzXS5fbmVlZHNTaXRlU3BlY2lmaWNRdWlya3MgPSBZRVM7
CiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1
cmF0aW9uLmdldCgpXSk7CiAKICAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW0FzeW5jQXV0
b3BsYXlQb2xpY2llc0RlbGVnYXRlIGFsbG9jXSBpbml0XSk7CiAgICAgW3dlYlZpZXcgc2V0TmF2
aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKIAotICAgIFdLUmV0YWluUHRyPFdLUHJl
ZmVyZW5jZXNSZWY+IHByZWZlcmVuY2VzID0gYWRvcHRXSyhXS1ByZWZlcmVuY2VzQ3JlYXRlKCkp
OwotICAgIFdLUHJlZmVyZW5jZXNTZXROZWVkc1NpdGVTcGVjaWZpY1F1aXJrcyhwcmVmZXJlbmNl
cy5nZXQoKSwgdHJ1ZSk7Ci0gICAgV0tQYWdlR3JvdXBTZXRQcmVmZXJlbmNlcyhXS1BhZ2VHZXRQ
YWdlR3JvdXAoW3dlYlZpZXcgX3BhZ2VGb3JUZXN0aW5nXSksIHByZWZlcmVuY2VzLmdldCgpKTsK
LQogICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdFdpdGhBdWRpbyA9IFtOU1VSTFJlcXVlc3QgcmVx
dWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAImF1dG9w
bGF5LWNoZWNrIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktp
dEFQSS5yZXNvdXJjZXMiXV07CiAKICAgICBbZGVsZWdhdGUgc2V0QWxsb3dlZEF1dG9wbGF5UXVp
cmtzRm9yVVJMOl5fV0tXZWJzaXRlQXV0b3BsYXlRdWlyayhOU1VSTCAqdXJsKSB7CkBAIC05MDgs
NyArOTYxLDYgQEAgVEVTVChXZWJLaXQsIFdlYnNpdGVQb2xpY2llc0F1dG9wbGF5UXVpcmtzQXN5
bmNQb2xpY3lEZWxlZ2F0ZSkKICAgICBbd2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpAImRpZC1ub3Qt
cGxheSJdOwogICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAib24tcGF1c2UiXTsKIH0KLSNl
bmRpZiAvLyBQTEFURk9STShNQUMpCiAKIFRFU1QoV2ViS2l0LCBJbnZhbGlkQ3VzdG9tSGVhZGVy
cykKIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
YXVkaW8td2l0aC1wbGF5LWJ1dHRvbi5odG1sIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9hdWRpby13aXRoLXBsYXktYnV0dG9uLmh0bWwKaW5kZXggN2YzZWRlNWVmZjFm
N2MwNTg5OGEyYzUzOWFhM2I0MTRmMjcwMzhiYS4uYjk5MDUzMTFjNGMyNWI1NDQ5YTI3NzkyZTM3
Y2U1MTBjMDQ4ZjM1NyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9hdWRpby13aXRoLXBsYXktYnV0dG9uLmh0bWwKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9hdWRpby13aXRoLXBsYXktYnV0dG9uLmh0bWwKQEAgLTIx
LDcgKzIxLDcgQEAKICAgICAgICAgPC9zY3JpcHQ+CiAgICAgPC9oZWFkPgogICAgIDxib2R5IG9u
bG9hZD0icGFnZUxvYWRlZCgpIj4KLSAgICAgICAgPGJ1dHRvbiBvbmNsaWNrPSJwbGF5KCkiPlBs
YXk8L2J1dHRvbj4KKyAgICAgICAgPGJ1dHRvbiBpZD0icGxheUJ1dHRvbiIgb25jbGljaz0icGxh
eSgpIj5QbGF5PC9idXR0b24+CiAgICAgICAgIDxiciAvPgogICAgICAgICA8YXVkaW8gY29udHJv
bHMgaWQ9ImF1ZGlvIiBvbnBsYXlpbmc9ImJlZ2FuUGxheWluZygpIiBzcmM9InNpbGVuY2UtbG9u
Zy5tNGEiIC8+CiAgICAgPC9ib2R5PgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9hdXRvcGxheWluZy1tdWx0aXBsZS1tZWRpYS1lbGVtZW50cy5odG1s
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9hdXRvcGxheWluZy1tdWx0
aXBsZS1tZWRpYS1lbGVtZW50cy5odG1sCmluZGV4IDcyOTY1YzA0OWIyZDhlNDQ5MTI0MjE2M2Zm
NzAzODRhOTFhYmJlYWEuLmZmYmUwMWM2ZGEwZTYzM2JjYmUxMDllZmZiZTI0YzFmMTJmMjczODgg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvYXV0b3Bs
YXlpbmctbXVsdGlwbGUtbWVkaWEtZWxlbWVudHMuaHRtbAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL2F1dG9wbGF5aW5nLW11bHRpcGxlLW1lZGlhLWVsZW1lbnRz
Lmh0bWwKQEAgLTI2LDcgKzI2LDcgQEAKICAgIDwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHkgb25s
b2FkPSJwYWdlTG9hZGVkKCkiPgotICAgIDxidXR0b24gb25jbGljaz0icGxheVZpZGVvKCd2aWRl
bzEnKSI+UGxheSBWaWRlbyAxPC9idXR0b24+CisgICAgPGJ1dHRvbiBpZD0icGxheUJ1dHRvbiIg
b25jbGljaz0icGxheVZpZGVvKCd2aWRlbzEnKSI+UGxheSBWaWRlbyAxPC9idXR0b24+CiAgICAg
PGJyIC8+CiAgICAgPHZpZGVvIGlkPSJ2aWRlbzEiIG9ucGxheWluZz0iZGlkUGxheVZpZGVvKCd2
aWRlbzEnKSIgc3JjPSJ2aWRlby13aXRoLWF1ZGlvLm1wNCI+PC92aWRlbz4KICAgICA8dmlkZW8g
aWQ9InZpZGVvMiIgb25wbGF5aW5nPSJkaWRQbGF5VmlkZW8oJ3ZpZGVvMicpIiBzcmM9InZpZGVv
LXdpdGgtYXVkaW8ubXA0Ij48L3ZpZGVvPgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS92aWRlby13aXRoLXBsYXktYnV0dG9uLmh0bWwgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3ZpZGVvLXdpdGgtcGxheS1idXR0b24uaHRt
bAppbmRleCBjMGExYWIyNmQ5NjVkYTA3NjliM2ExNDk4ZjI0YjYwMDk5YmU3ODk2Li4zNThmYWU2
MjUzZTQ2NmVlZWQ5NmI1ZDA4MGJiMTBjN2FjNTcwODE2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3ZpZGVvLXdpdGgtcGxheS1idXR0b24uaHRtbAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3ZpZGVvLXdpdGgtcGxh
eS1idXR0b24uaHRtbApAQCAtMjEsNyArMjEsNyBAQAogICAgICAgICA8L3NjcmlwdD4KICAgICA8
L2hlYWQ+CiAgICAgPGJvZHkgb25sb2FkPSJwYWdlTG9hZGVkKCkiPgotICAgICAgICA8YnV0dG9u
IG9uY2xpY2s9InBsYXkoKSI+UGxheTwvYnV0dG9uPgorICAgICAgICA8YnV0dG9uIGlkPSJwbGF5
QnV0dG9uIiBvbmNsaWNrPSJwbGF5KCkiPlBsYXk8L2J1dHRvbj4KICAgICAgICAgPGJyIC8+CiAg
ICAgICAgIDx2aWRlbyBjb250cm9scyBpZD0idmlkZW8iIG9ucGxheWluZz0iYmVnYW5QbGF5aW5n
KCkiIHNyYz0ibG9uZy10ZXN0Lm1wNCI+PC92aWRlbz4KICAgICA8L2JvZHk+CmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5oCmluZGV4IDI0YTVhY2RlZmZmZmE4NWQzMGNm
YzRmN2NlZjEwZmQxMmM1ZmVmODQuLjU2NzI2ZGE4YzQ2ZTNiNDM2MWE2ZmI2MGRjM2YwYmFkMDc1
Yzk1MzUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmll
dy5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5oCkBAIC04
MSw2ICs4MSw4IEBACiAtICh2b2lkKWNvbGxhcHNlVG9TdGFydDsKIC0gKHZvaWQpY29sbGFwc2VU
b0VuZDsKIC0gKHZvaWQpYWRkVG9UZXN0V2luZG93OworLSAodm9pZCljbGlja09uRWxlbWVudElE
OihOU1N0cmluZyAqKWVsZW1lbnRJRDsKKy0gKHZvaWQpY2xpY2tPblBvaW50OihOU1BvaW50KXBv
aW50SW5XaW5kb3c7CiBAZW5kCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCmluZGV4IDY1MWI1ZjI5ZDE2MDg1OWY1
OGU4ZjY3ZTlhZDU1ZTk1YmU2YjUyNjUuLjE0YTU4OWRlMDNiYWE4ZjdjYjYwMjNhOWZiNzVhNzU1
NjEwYWE0ZTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2Vi
Vmlldy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0K
QEAgLTQ2Nyw2ICs0NjcsMjEgQEAgLSAodm9pZCljb2xsYXBzZVRvRW5kCiAgICAgW3NlbGYgZXZh
bHVhdGVKYXZhU2NyaXB0OkAiZ2V0U2VsZWN0aW9uKCkuY29sbGFwc2VUb0VuZCgpIiBjb21wbGV0
aW9uSGFuZGxlcjpuaWxdOwogfQogCistICh2b2lkKWNsaWNrT25FbGVtZW50SUQ6KE5TU3RyaW5n
ICopZWxlbWVudElECit7CisgICAgW3NlbGYgZXZhbHVhdGVKYXZhU2NyaXB0OltOU1N0cmluZyBz
dHJpbmdXaXRoRm9ybWF0OkAiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJyVAJykuY2xpY2soKTsi
LCBlbGVtZW50SURdIGNvbXBsZXRpb25IYW5kbGVyOm5pbF07Cit9CisKKy0gKHZvaWQpY2xpY2tP
blBvaW50OihOU1BvaW50KXBvaW50SW5XaW5kb3cKK3sKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQorICAgIFtzZWxmIF9zaW11bGF0ZVRhcEFjdGlvbkF0TG9jYXRpb246Q0dQb2ludE1ha2UocG9p
bnRJbldpbmRvdy54LCBwb2ludEluV2luZG93LnkpXTsKKyNlbHNlCisgICAgW3NlbGYgbW91c2VE
b3duQXRQb2ludDpwbGF5QnV0dG9uQ2xpY2tQb2ludCBzaW11bGF0ZVByZXNzdXJlOk5PXTsKKyAg
ICBbc2VsZiBtb3VzZVVwQXRQb2ludDpwbGF5QnV0dG9uQ2xpY2tQb2ludF07CisjZW5kaWYKK30K
KwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIC0gKHZvaWQpZGlkU3RhcnRGb3JtQ29udHJv
bEludGVyYWN0aW9uCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379869</attachid>
            <date>2019-09-30 18:21:56 -0700</date>
            <delta_ts>2020-01-06 07:20:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202214-20190930182155.patch</filename>
            <type>text/plain</type>
            <size>51057</size>
            <attacher name="Luming Yin">luming_yin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwNTMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTg2ZDIyMTIzNDg3NGUw
YjJlNzNkYTdlZWY5M2MzODYzYzljMmFmMC4uOTdmMTI1YzAxNjIzZmYzMWRjYzlhOTE5MWU2NDY0
MDMzZWM1ZTU5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE5LTA5LTMwICBMdW1p
bmcgWWluICA8bHVtaW5nX3lpbkBhcHBsZS5jb20+CisKKyAgICAgICAgVXBkYXRlIEFQSSBhdmFp
bGFiaWxpdHkgZm9yIGF1dG9wbGF5IGV2ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDIyMTQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU1NzEw
Mzk1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
cGFnZS9RdWlya3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UXVpcmtzOjpuZWVkc1BlckRvY3Vt
ZW50QXV0b3BsYXlCZWhhdmlvciBjb25zdCk6CisgICAgICAgIE1vdmUgdGhlIHBlci1kb2N1bWVu
dCBhdXRvcGxheSBxdWlyayBsaXN0IGZyb20gV2ViQ29yZSB0byBXZWJLaXQgY2xpZW50cyBmb3Ig
aU9TLgorCisgICAgICAgIChXZWJDb3JlOjpRdWlya3M6OnNob3VsZEF1dG9wbGF5Rm9yQXJiaXRy
YXJ5VXNlckdlc3R1cmUgY29uc3QpOgorICAgICAgICBBbGxvdyBjbGllbnRzIHRvIGNvbmZpZ3Vy
ZSBzaXRlcyB3aXRoIHF1aXJrcyB0aGF0IHdvdWxkIHJlcXVpcmUgYXJiaXRhcnkgdXNlciBnZXN0
dXJlIG9uIGlPUy4KKwogMjAxOS0wOS0zMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29t
PgogCiAgICAgICAgIElEQlRyYW5zYWN0aW9uIC8gSURCT2JqZWN0U3RvcmUgc2hvdWxkIG5vdCBw
cmV2ZW50IGEgcGFnZSBmcm9tIGVudGVyaW5nIHRoZSBiYWNrIC8gZm9yd2FyZCBjYWNoZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwppbmRleCAzYzQzNzNhYTk5Y2VkYjM2NGY2YzBjYzU1Y2M0NWJlMjRkYzNlNDdhLi41ZjU2ZjI3
ZWE5YTZiM2IxN2YwNzE1MzJmZmU0NzQzZDY0YzNlN2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0
IEBACisyMDE5LTA5LTMwICBMdW1pbmcgWWluICA8bHVtaW5nX3lpbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgVXBkYXRlIEFQSSBhdmFpbGFiaWxpdHkgZm9yIGF1dG9wbGF5IGV2ZW50CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDIyMTQKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzU1NzEwMzk1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2
YXRlLmg6CisgICAgICAgIE1ha2UgZW51bXMgYW5kIFdLVUlEZWxlZ2F0ZSBtZXRob2QgcmVsYXRl
ZCB0byBhdXRvcGxheSBldmVudCBhdmFpbGFibGUgb24gaU9TLgorCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfc2ltdWxh
dGVUYXBBY3Rpb25BdExvY2F0aW9uOl0pOgorICAgICAgICBQbHVtYmluZyB0byBhbGxvdyBzaW11
bGF0aW5nIHRhcHMgaW4gQVBJIHRlc3RzLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXdQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdh
dGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbToKKyAgICAgICAg
KFdlYktpdDo6VUlEZWxlZ2F0ZTo6c2V0RGVsZWdhdGUpOgorICAgICAgICAoV2ViS2l0Ojp0b1dL
QXV0b3BsYXlFdmVudEZsYWdzKToKKyAgICAgICAgKFdlYktpdDo6dG9XS0F1dG9wbGF5RXZlbnQp
OgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpVSUNsaWVudDo6aGFuZGxlQXV0b3BsYXlF
dmVudCk6CisgICAgICAgIE1ha2UgZGVsZWdhdGUgbWV0aG9kcyByZWxhdGVkIHRvIGF1dG9wbGF5
IGV2ZW50cyBhdmFpbGFibGUgb24gaU9TLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9u
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06
CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3NpbXVsYXRlVGFwQWN0aW9uQXRMb2NhdGlvbjpd
KToKKyAgICAgICAgUGx1bWJpbmcgdG8gYWxsb3cgc2ltdWxhdGluZyB0YXBzIGluIEFQSSB0ZXN0
cy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNpbXVsYXRlVGFwKToKKyAgICAgICAgU2FtZSBhcyBh
Ym92ZS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpzaW11bGF0ZVRhcCk6CisgICAgICAgIEdlbmVyYXRlIGEgc3ludGhldGljIGNsaWNrIHJl
Z2FyZGxlc3Mgb2YgdGhlIGN1cnJlbnQgbGF5ZXIgdHJlZSB0cmFuc2FjdGlvbiBJRCB0byBlbnN1
cmUgc3VjY2Vzc2Z1bCB0YXAgc2ltdWxhdGlvbiB3aXRob3V0IAorICAgICAgICBhbnkgcHJpb3Ig
dGFwcyBvciByZXBhaW50cy4KKwogMjAxOS0wOS0zMCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJp
c3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIE1vdmUgRG93bmxvYWRNb25pdG9yIHRlc3Qg
c3BlZWQgbXVsdGlwbGllciBmcm9tIFdlYlByb2Nlc3NQb29sIHRvIFdlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1F1aXJrcy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1F1aXJrcy5jcHAKaW5kZXggMTQ1MTk5YzNkOTc2YWRjZjg4
MzFmZDYzYjhjZjNkNGMzZDNmMWJiYy4uMWIzNzlhZDhlZDk1MWYzMDMyOTMyM2VkNjI0ZTM1ZjRh
OGQyZmU4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9RdWlya3MuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUXVpcmtzLmNwcApAQCAtMTAxLDIyICsxMDEsMTMgQEAgYm9v
bCBRdWlya3M6Om5lZWRzU2Vla2luZ1N1cHBvcnREaXNhYmxlZCgpIGNvbnN0CiAKIGJvb2wgUXVp
cmtzOjpuZWVkc1BlckRvY3VtZW50QXV0b3BsYXlCZWhhdmlvcigpIGNvbnN0CiB7Ci0jaWYgUExB
VEZPUk0oTUFDKQogICAgIEFTU0VSVChtX2RvY3VtZW50ID09ICZtX2RvY3VtZW50LT50b3BEb2N1
bWVudCgpKTsKICAgICByZXR1cm4gbmVlZHNRdWlya3MoKSAmJiBhbGxvd2VkQXV0b3BsYXlRdWly
a3MoKm1fZG9jdW1lbnQpLmNvbnRhaW5zKEF1dG9wbGF5UXVpcms6OlBlckRvY3VtZW50QXV0b3Bs
YXlCZWhhdmlvcik7Ci0jZWxzZQotICAgIGF1dG8gaG9zdCA9IG1fZG9jdW1lbnQtPnRvcERvY3Vt
ZW50KCkudXJsKCkuaG9zdCgpOwotICAgIHJldHVybiBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZShob3N0LCAibmV0ZmxpeC5jb20iKSB8fCBob3N0LmVuZHNXaXRoSWdub3JpbmdBU0NJSUNh
c2UoIi5uZXRmbGl4LmNvbSIpOwotI2VuZGlmCiB9CiAKIGJvb2wgUXVpcmtzOjpzaG91bGRBdXRv
cGxheUZvckFyYml0cmFyeVVzZXJHZXN0dXJlKCkgY29uc3QKIHsKLSNpZiBQTEFURk9STShNQUMp
CiAgICAgcmV0dXJuIG5lZWRzUXVpcmtzKCkgJiYgYWxsb3dlZEF1dG9wbGF5UXVpcmtzKCptX2Rv
Y3VtZW50KS5jb250YWlucyhBdXRvcGxheVF1aXJrOjpBcmJpdHJhcnlVc2VyR2VzdHVyZXMpOwot
I2Vsc2UKLSAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYKIH0KIAogYm9vbCBRdWlya3M6Omhhc0Jy
b2tlbkVuY3J5cHRlZE1lZGlhQVBJU3VwcG9ydFF1aXJrKCkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oCmlu
ZGV4IDhlNjQ3Yzk0OGMxZGM0MTgzNTI4YzRlNDE1ZjlhMDM3ZjQ2YmRhNzIuLjNiNDY5Njg5Mzdk
ZTEyNDcxOTIyYjczNjIxMGQ1NDE2NjZkNDdiODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaApAQCAtNDgsMTMg
KzQ4LDYgQEAKIEBwcm90b2NvbCBVSURyYWdTZXNzaW9uOwogQHByb3RvY29sIFVJRHJvcFNlc3Np
b247CiAjZWxzZQotdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dLQXV0b3BsYXlFdmVudCkg
ewotICAgIF9XS0F1dG9wbGF5RXZlbnREaWRQcmV2ZW50RnJvbUF1dG9wbGF5aW5nLAotICAgIF9X
S0F1dG9wbGF5RXZlbnREaWRQbGF5TWVkaWFXaXRoVXNlckdlc3R1cmUsCi0gICAgX1dLQXV0b3Bs
YXlFdmVudERpZEF1dG9wbGF5TWVkaWFQYXN0VGhyZXNob2xkV2l0aG91dFVzZXJJbnRlcmZlcmVu
Y2UsCi0gICAgX1dLQXV0b3BsYXlFdmVudFVzZXJEaWRJbnRlcmZlcmVXaXRoUGxheWJhY2ssCi19
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCkpOwotCiB0eXBlZGVmIE5TX0VOVU0oTlNJ
bnRlZ2VyLCBfV0tSZXNvdXJjZUxpbWl0KSB7CiAgICAgX1dLUmVzb3VyY2VMaW1pdE1lbW9yeSwK
ICAgICBfV0tSZXNvdXJjZUxpbWl0Q1BVLApAQCAtNjUsMTQgKzU4LDIxIEBAIHR5cGVkZWYgTlNf
RU5VTShOU0ludGVnZXIsIF9XS1BsdWdJblVuYXZhaWxhYmlsaXR5UmVhc29uKSB7CiAgICAgX1dL
UGx1Z0luVW5hdmFpbGFiaWxpdHlSZWFzb25QbHVnaW5DcmFzaGVkLAogICAgIF9XS1BsdWdJblVu
YXZhaWxhYmlsaXR5UmVhc29uSW5zZWN1cmVQbHVnaW5WZXJzaW9uCiB9IFdLX0FQSV9BVkFJTEFC
TEUobWFjb3MoMTAuMTMuNCkpOworI2VuZGlmCisKK3R5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIs
IF9XS0F1dG9wbGF5RXZlbnQpIHsKKyAgICBfV0tBdXRvcGxheUV2ZW50RGlkUHJldmVudEZyb21B
dXRvcGxheWluZywKKyAgICBfV0tBdXRvcGxheUV2ZW50RGlkUGxheU1lZGlhV2l0aFVzZXJHZXN0
dXJlLAorICAgIF9XS0F1dG9wbGF5RXZlbnREaWRBdXRvcGxheU1lZGlhUGFzdFRocmVzaG9sZFdp
dGhvdXRVc2VySW50ZXJmZXJlbmNlLAorICAgIF9XS0F1dG9wbGF5RXZlbnRVc2VyRGlkSW50ZXJm
ZXJlV2l0aFBsYXliYWNrLAorfSBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpLCBpb3Mo
V0tfSU9TX1RCQSkpOwogCiB0eXBlZGVmIE5TX09QVElPTlMoTlNVSW50ZWdlciwgX1dLQXV0b3Bs
YXlFdmVudEZsYWdzKSB7CiAgICAgX1dLQXV0b3BsYXlFdmVudEZsYWdzTm9uZSA9IDAsCiAgICAg
X1dLQXV0b3BsYXlFdmVudEZsYWdzSGFzQXVkaW8gPSAxIDw8IDAsCiAgICAgX1dLQXV0b3BsYXlF
dmVudEZsYWdzUGxheWJhY2tXYXNQcmV2ZW50ZWQgPSAxIDw8IDEsCiAgICAgX1dLQXV0b3BsYXlF
dmVudEZsYWdzTWVkaWFJc01haW5Db250ZW50ID0gMSA8PCAyLAotfSBXS19BUElfQVZBSUxBQkxF
KG1hY29zKDEwLjEzLjQpKTsKLSNlbmRpZgorfSBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEz
LjQpLCBpb3MoV0tfSU9TX1RCQSkpOwogCiB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tG
b2N1c0RpcmVjdGlvbikgewogICAgIF9XS0ZvY3VzRGlyZWN0aW9uQmFja3dhcmQsCkBAIC0xMzYs
NiArMTM2LDggQEAgc3RydWN0IFVJRWRnZUluc2V0czsKIAogLSAodm9pZClfd2ViVmlldzooV0tX
ZWJWaWV3ICopd2ViVmlldyB0YWtlRm9jdXM6KF9XS0ZvY3VzRGlyZWN0aW9uKWRpcmVjdGlvbiBX
S19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpLCBpb3MoMTIuMikpOwogCistICh2b2lkKV93
ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGhhbmRsZUF1dG9wbGF5RXZlbnQ6KF9XS0F1dG9w
bGF5RXZlbnQpZXZlbnQgd2l0aEZsYWdzOihfV0tBdXRvcGxheUV2ZW50RmxhZ3MpZmxhZ3MgV0tf
QVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSwgaW9zKFdLX0lPU19UQkEpKTsKKwogI2lmIFRB
UkdFVF9PU19JUEhPTkUKIC0gKEJPT0wpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgc2hv
dWxkSW5jbHVkZUFwcExpbmtBY3Rpb25zRm9yRWxlbWVudDooX1dLQWN0aXZhdGVkRWxlbWVudElu
Zm8gKillbGVtZW50IFdLX0FQSV9BVkFJTEFCTEUoaW9zKDkuMCkpOwogLSAoTlNBcnJheSAqKV93
ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGFjdGlvbnNGb3JFbGVtZW50OihfV0tBY3RpdmF0
ZWRFbGVtZW50SW5mbyAqKWVsZW1lbnQgZGVmYXVsdEFjdGlvbnM6KE5TQXJyYXk8X1dLRWxlbWVu
dEFjdGlvbiAqPiAqKWRlZmF1bHRBY3Rpb25zOwpAQCAtMjEwLDcgKzIxMiw2IEBAIHN0cnVjdCBV
SUVkZ2VJbnNldHM7CiAtICh2b2lkKV93ZWJWaWV3RGlkU2Nyb2xsOihXS1dlYlZpZXcgKil3ZWJW
aWV3IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCkpOwogLSAodm9pZClfd2ViVmlld1J1
bk1vZGFsOihXS1dlYlZpZXcgKil3ZWJWaWV3IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMu
NCkpOwogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWROb3RIYW5kbGVX
aGVlbEV2ZW50OihOU0V2ZW50ICopZXZlbnQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40
KSk7Ci0tICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGhhbmRsZUF1dG9wbGF5
RXZlbnQ6KF9XS0F1dG9wbGF5RXZlbnQpZXZlbnQgd2l0aEZsYWdzOihfV0tBdXRvcGxheUV2ZW50
RmxhZ3MpZmxhZ3MgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSk7CiAtICh2b2lkKV93
ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZENsaWNrQXV0b0ZpbGxCdXR0b25XaXRoVXNl
ckluZm86KGlkIDxOU1NlY3VyZUNvZGluZz4pdXNlckluZm8gV0tfQVBJX0FWQUlMQUJMRShtYWNv
cygxMC4xMy40KSk7CiAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGdldFRv
b2xiYXJzQXJlVmlzaWJsZVdpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShCT09MKSljb21w
bGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKIC0gKHZvaWQp
X3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgc2F2ZURhdGFUb0ZpbGU6KE5TRGF0YSAqKWRh
dGEgc3VnZ2VzdGVkRmlsZW5hbWU6KE5TU3RyaW5nICopc3VnZ2VzdGVkRmlsZW5hbWUgbWltZVR5
cGU6KE5TU3RyaW5nICopbWltZVR5cGUgb3JpZ2luYXRpbmdVUkw6KE5TVVJMICopdXJsIFdLX0FQ
SV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggOWZhNWJmNTExYWNlZDM2YjM3OTM3NmQwYTgz
OGQ4ZDYxMDFjZDg0Zi4uMzNlNjc4ZjY2OTQ5MTBkMzgyZTQzOGRlOWZkNThkNWNiY2QxYjEzYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBA
IC03NDM2LDYgKzc0MzYsMTEgQEAgLSAoQ0dSZWN0KV9kcmFnQ2FyZXRSZWN0CiAjZW5kaWYKIH0K
IAorLSAodm9pZClfc2ltdWxhdGVUYXBBY3Rpb25BdExvY2F0aW9uOihDR1BvaW50KWxvY2F0aW9u
Cit7CisgICAgW19jb250ZW50VmlldyBfc2ltdWxhdGVUYXBBY3Rpb25BdExvY2F0aW9uOmxvY2F0
aW9uXTsKK30KKwogLSAodm9pZClfc2ltdWxhdGVMb25nUHJlc3NBY3Rpb25BdExvY2F0aW9uOihD
R1BvaW50KWxvY2F0aW9uCiB7CiAgICAgW19jb250ZW50VmlldyBfc2ltdWxhdGVMb25nUHJlc3NB
Y3Rpb25BdExvY2F0aW9uOmxvY2F0aW9uXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCmluZGV4IGNkMjA1ZDAzMmQzYTcyYzAy
ZmRjNjVhNjYwZDk5N2RiNjNmODU1NzIuLjM4Zjg2NWFmM2I4ODkzMWM5Y2Y4Yzc3YTNmYjExMzRk
YmJlMWU5OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlld1ByaXZhdGUuaApAQCAtNDkzLDYgKzQ5Myw3IEBAIHR5cGVkZWYgTlNfT1BUSU9O
UyhOU1VJbnRlZ2VyLCBfV0tSZWN0RWRnZSkgewogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRv
bmx5KSBOU051bWJlciAqX3N0YWJsZVN0YXRlT3ZlcnJpZGUgV0tfQVBJX0FWQUlMQUJMRShpb3Mo
MTAuMykpOwogCiAtIChOU0RpY3Rpb25hcnkgKilfcHJvcGVydGllc09mTGF5ZXJXaXRoSUQ6KHVu
c2lnbmVkIGxvbmcgbG9uZylsYXllcklEIFdLX0FQSV9BVkFJTEFCTEUoaW9zKDExLjApKTsKKy0g
KHZvaWQpX3NpbXVsYXRlVGFwQWN0aW9uQXRMb2NhdGlvbjooQ0dQb2ludClsb2NhdGlvbiBXS19B
UElfQVZBSUxBQkxFKGlvcyhXS19JT1NfVEJBKSk7CiAtICh2b2lkKV9zaW11bGF0ZUxvbmdQcmVz
c0FjdGlvbkF0TG9jYXRpb246KENHUG9pbnQpbG9jYXRpb24gV0tfQVBJX0FWQUlMQUJMRShpb3Mo
MTEuMCkpOwogLSAodm9pZClfc2ltdWxhdGVUZXh0RW50ZXJlZDooTlNTdHJpbmcgKil0ZXh0IFdL
X0FQSV9BVkFJTEFCTEUoaW9zKDEyLjApKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvVUlEZWxlZ2F0ZS5oCmluZGV4IGJkMjBhODE5N2U5NGRlYTRjYzRjODAzMDljNTc2N2MyMTZh
ZTBhNWYuLjlkOTY4ZWQ1MGFhZGZiYjNiNDQ3MzRiOWRlZGEyNDEyZTMyMjM0NWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmgKQEAgLTEwMCw2ICsxMDAsNyBA
QCBwcml2YXRlOgogICAgICAgICB2b2lkIHJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVv
dGEoV2ViUGFnZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mLCB1aW50NjRf
dCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IHRvdGFsQnl0ZXNOZWVkZWQsIEZ1bmN0aW9uPHZvaWQo
dW5zaWduZWQgbG9uZyBsb25nKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWw7CiAgICAgICAg
IHZvaWQgZGlkUmVzaWduSW5wdXRFbGVtZW50U3Ryb25nUGFzc3dvcmRBcHBlYXJhbmNlKFdlYlBh
Z2VQcm94eSYsIEFQSTo6T2JqZWN0KikgZmluYWw7CiAgICAgICAgIGJvb2wgdGFrZUZvY3VzKFdl
YlBhZ2VQcm94eSosIFdLRm9jdXNEaXJlY3Rpb24pIGZpbmFsOworICAgICAgICB2b2lkIGhhbmRs
ZUF1dG9wbGF5RXZlbnQoV2ViUGFnZVByb3h5JiwgV2ViQ29yZTo6QXV0b3BsYXlFdmVudCwgT3B0
aW9uU2V0PFdlYkNvcmU6OkF1dG9wbGF5RXZlbnRGbGFncz4pIGZpbmFsOwogI2lmIFBMQVRGT1JN
KE1BQykKICAgICAgICAgdm9pZCBzaG93UGFnZShXZWJQYWdlUHJveHkqKSBmaW5hbDsKICAgICAg
ICAgdm9pZCBmb2N1cyhXZWJQYWdlUHJveHkqKSBmaW5hbDsKQEAgLTExNiw3ICsxMTcsNiBAQCBw
cml2YXRlOgogICAgICAgICB2b2lkIGRyYXdIZWFkZXIoV2ViUGFnZVByb3h5JiwgV2ViRnJhbWVQ
cm94eSYsIFdlYkNvcmU6OkZsb2F0UmVjdCYmKSBmaW5hbDsKICAgICAgICAgdm9pZCBkcmF3Rm9v
dGVyKFdlYlBhZ2VQcm94eSYsIFdlYkZyYW1lUHJveHkmLCBXZWJDb3JlOjpGbG9hdFJlY3QmJikg
ZmluYWw7CiAgICAgICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0aW9uUGVybWlzc2lv
blJlcXVlc3QoV2ViUGFnZVByb3h5JiwgQVBJOjpTZWN1cml0eU9yaWdpbiYsIEZ1bmN0aW9uPHZv
aWQoYm9vbCk+JiYpIGZpbmFsOwotICAgICAgICB2b2lkIGhhbmRsZUF1dG9wbGF5RXZlbnQoV2Vi
UGFnZVByb3h5JiwgV2ViQ29yZTo6QXV0b3BsYXlFdmVudCwgT3B0aW9uU2V0PFdlYkNvcmU6OkF1
dG9wbGF5RXZlbnRGbGFncz4pIGZpbmFsOwogICAgICAgICB2b2lkIHVuYXZhaWxhYmxlUGx1Z2lu
QnV0dG9uQ2xpY2tlZChXZWJQYWdlUHJveHkmLCBXS1BsdWdpblVuYXZhaWxhYmlsaXR5UmVhc29u
LCBBUEk6OkRpY3Rpb25hcnkmKSBmaW5hbDsKICAgICAgICAgdm9pZCBtb3VzZURpZE1vdmVPdmVy
RWxlbWVudChXZWJQYWdlUHJveHkmLCBjb25zdCBXZWJIaXRUZXN0UmVzdWx0RGF0YSYsIE9wdGlv
blNldDxXZWJFdmVudDo6TW9kaWZpZXI+LCBBUEk6Ok9iamVjdCopOwogICAgICAgICB2b2lkIGRp
ZENsaWNrQXV0b0ZpbGxCdXR0b24oV2ViUGFnZVByb3h5JiwgQVBJOjpPYmplY3QqKSBmaW5hbDsK
QEAgLTE3Miw2ICsxNzIsNyBAQCBwcml2YXRlOgogICAgICAgICBib29sIHdlYlZpZXdSZXF1ZXN0
R2VvbG9jYXRpb25QZXJtaXNzaW9uRm9yRnJhbWVEZWNpc2lvbkhhbmRsZXIgOiAxOwogICAgICAg
ICBib29sIHdlYlZpZXdEaWRSZXNpZ25JbnB1dEVsZW1lbnRTdHJvbmdQYXNzd29yZEFwcGVhcmFu
Y2VXaXRoVXNlckluZm8gOiAxOwogICAgICAgICBib29sIHdlYlZpZXdUYWtlRm9jdXMgOiAxOwor
ICAgICAgICBib29sIHdlYlZpZXdIYW5kbGVBdXRvcGxheUV2ZW50V2l0aEZsYWdzIDogMTsKICNp
ZiBQTEFURk9STShNQUMpCiAgICAgICAgIGJvb2wgc2hvd1dlYlZpZXcgOiAxOwogICAgICAgICBi
b29sIGZvY3VzV2ViVmlldyA6IDE7CkBAIC0xODMsNyArMTg0LDYgQEAgcHJpdmF0ZToKICAgICAg
ICAgYm9vbCB3ZWJWaWV3U2V0UmVzaXphYmxlIDogMTsKICAgICAgICAgYm9vbCB3ZWJWaWV3U2V0
V2luZG93RnJhbWUgOiAxOwogICAgICAgICBib29sIHdlYlZpZXdEaWROb3RIYW5kbGVXaGVlbEV2
ZW50IDogMTsKLSAgICAgICAgYm9vbCB3ZWJWaWV3SGFuZGxlQXV0b3BsYXlFdmVudFdpdGhGbGFn
cyA6IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld1VuYXZhaWxhYmxlUGx1Z0luQnV0dG9uQ2xpY2tl
ZCA6IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld0RpZENsaWNrQXV0b0ZpbGxCdXR0b25XaXRoVXNl
ckluZm8gOiAxOwogICAgICAgICBib29sIHdlYlZpZXdEcmF3SGVhZGVySW5SZWN0Rm9yUGFnZVdp
dGhUaXRsZVVSTCA6IDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9VSURlbGVnYXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0
ZS5tbQppbmRleCA3YjYyNGFiZmEyZjQxMTA0MGEwNmIyYjI2N2RiYmIzMmNkODFjZDE2Li42Njdm
ZDExYzU3MTA2ZWUxMzBiYTE4Y2ZhZmY4OGQzNDk5MTEyNjExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KQEAgLTEwNiw2ICsxMDYsNyBAQCB2b2lkIFVJ
RGVsZWdhdGU6OnNldERlbGVnYXRlKGlkIDxXS1VJRGVsZWdhdGU+IGRlbGVnYXRlKQogICAgIG1f
ZGVsZWdhdGVNZXRob2RzLndlYlZpZXdSZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9uRm9yRnJh
bWVEZWNpc2lvbkhhbmRsZXIgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rv
cihfd2ViVmlldzpyZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9uRm9yRnJhbWU6ZGVjaXNpb25I
YW5kbGVyOildOwogICAgIG1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdEaWRSZXNpZ25JbnB1dEVs
ZW1lbnRTdHJvbmdQYXNzd29yZEFwcGVhcmFuY2VXaXRoVXNlckluZm8gPSBbZGVsZWdhdGUgcmVz
cG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpkaWRSZXNpZ25JbnB1dEVsZW1lbnRT
dHJvbmdQYXNzd29yZEFwcGVhcmFuY2VXaXRoVXNlckluZm86KV07CiAgICAgbV9kZWxlZ2F0ZU1l
dGhvZHMud2ViVmlld1Rha2VGb2N1cyA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNl
bGVjdG9yKF93ZWJWaWV3OnRha2VGb2N1czopXTsKKyAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJW
aWV3SGFuZGxlQXV0b3BsYXlFdmVudFdpdGhGbGFncyA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2Vs
ZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmhhbmRsZUF1dG9wbGF5RXZlbnQ6d2l0aEZsYWdzOild
OwogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIG1fZGVsZWdhdGVNZXRob2RzLnNob3dXZWJWaWV3
ID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3Nob3dXZWJWaWV3Oild
OwpAQCAtMTE5LDcgKzEyMCw2IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6c2V0RGVsZWdhdGUoaWQgPFdL
VUlEZWxlZ2F0ZT4gZGVsZWdhdGUpCiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0dldFdp
bmRvd0ZyYW1lV2l0aENvbXBsZXRpb25IYW5kbGVyID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxl
Y3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6Z2V0V2luZG93RnJhbWVXaXRoQ29tcGxldGlvbkhhbmRs
ZXI6KV07CiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1NldFdpbmRvd0ZyYW1lID0gW2Rl
bGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6c2V0V2luZG93RnJh
bWU6KV07CiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1VuYXZhaWxhYmxlUGx1Z0luQnV0
dG9uQ2xpY2tlZCA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJW
aWV3OnVuYXZhaWxhYmxlUGx1Z0luQnV0dG9uQ2xpY2tlZFdpdGhSZWFzb246cGx1Z0luSW5mbzop
XTsKLSAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3SGFuZGxlQXV0b3BsYXlFdmVudFdpdGhG
bGFncyA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3Omhh
bmRsZUF1dG9wbGF5RXZlbnQ6d2l0aEZsYWdzOildOwogICAgIG1fZGVsZWdhdGVNZXRob2RzLndl
YlZpZXdEaWRDbGlja0F1dG9GaWxsQnV0dG9uV2l0aFVzZXJJbmZvID0gW2RlbGVnYXRlIHJlc3Bv
bmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6ZGlkQ2xpY2tBdXRvRmlsbEJ1dHRvbldp
dGhVc2VySW5mbzopXTsKICAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RHJhd0hlYWRlcklu
UmVjdEZvclBhZ2VXaXRoVGl0bGVVUkwgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3Rvcihfd2ViVmlldzpkcmF3SGVhZGVySW5SZWN0OmZvclBhZ2VXaXRoVGl0bGU6VVJMOild
OwogICAgIG1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdEcmF3Rm9vdGVySW5SZWN0Rm9yUGFnZVdp
dGhUaXRsZVVSTCA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJW
aWV3OmRyYXdGb290ZXJJblJlY3Q6Zm9yUGFnZVdpdGhUaXRsZTpVUkw6KV07CkBAIC00NzksNiAr
NDc5LDQ3IEBAIGJvb2wgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnRha2VGb2N1cyhXZWJQYWdlUHJv
eHkqLCBXS0ZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbikKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAor
c3RhdGljIF9XS0F1dG9wbGF5RXZlbnRGbGFncyB0b1dLQXV0b3BsYXlFdmVudEZsYWdzKE9wdGlv
blNldDxXZWJDb3JlOjpBdXRvcGxheUV2ZW50RmxhZ3M+IGZsYWdzKQoreworICAgIF9XS0F1dG9w
bGF5RXZlbnRGbGFncyB3a0ZsYWdzID0gX1dLQXV0b3BsYXlFdmVudEZsYWdzTm9uZTsKKyAgICBp
ZiAoZmxhZ3MuY29udGFpbnMoV2ViQ29yZTo6QXV0b3BsYXlFdmVudEZsYWdzOjpIYXNBdWRpbykp
CisgICAgICAgIHdrRmxhZ3MgfD0gX1dLQXV0b3BsYXlFdmVudEZsYWdzSGFzQXVkaW87CisgICAg
aWYgKGZsYWdzLmNvbnRhaW5zKFdlYkNvcmU6OkF1dG9wbGF5RXZlbnRGbGFnczo6UGxheWJhY2tX
YXNQcmV2ZW50ZWQpKQorICAgICAgICB3a0ZsYWdzIHw9IF9XS0F1dG9wbGF5RXZlbnRGbGFnc1Bs
YXliYWNrV2FzUHJldmVudGVkOworICAgIGlmIChmbGFncy5jb250YWlucyhXZWJDb3JlOjpBdXRv
cGxheUV2ZW50RmxhZ3M6Ok1lZGlhSXNNYWluQ29udGVudCkpCisgICAgICAgIHdrRmxhZ3MgfD0g
X1dLQXV0b3BsYXlFdmVudEZsYWdzTWVkaWFJc01haW5Db250ZW50OworICAgIAorICAgIHJldHVy
biB3a0ZsYWdzOworfQorCitzdGF0aWMgX1dLQXV0b3BsYXlFdmVudCB0b1dLQXV0b3BsYXlFdmVu
dChXZWJDb3JlOjpBdXRvcGxheUV2ZW50IGV2ZW50KQoreworICAgIHN3aXRjaCAoZXZlbnQpIHsK
KyAgICBjYXNlIFdlYkNvcmU6OkF1dG9wbGF5RXZlbnQ6OkRpZFByZXZlbnRNZWRpYUZyb21QbGF5
aW5nOgorICAgICAgICByZXR1cm4gX1dLQXV0b3BsYXlFdmVudERpZFByZXZlbnRGcm9tQXV0b3Bs
YXlpbmc7CisgICAgY2FzZSBXZWJDb3JlOjpBdXRvcGxheUV2ZW50OjpEaWRQbGF5TWVkaWFXaXRo
VXNlckdlc3R1cmU6CisgICAgICAgIHJldHVybiBfV0tBdXRvcGxheUV2ZW50RGlkUGxheU1lZGlh
V2l0aFVzZXJHZXN0dXJlOworICAgIGNhc2UgV2ViQ29yZTo6QXV0b3BsYXlFdmVudDo6RGlkQXV0
b3BsYXlNZWRpYVBhc3RUaHJlc2hvbGRXaXRob3V0VXNlckludGVyZmVyZW5jZToKKyAgICAgICAg
cmV0dXJuIF9XS0F1dG9wbGF5RXZlbnREaWRBdXRvcGxheU1lZGlhUGFzdFRocmVzaG9sZFdpdGhv
dXRVc2VySW50ZXJmZXJlbmNlOworICAgIGNhc2UgV2ViQ29yZTo6QXV0b3BsYXlFdmVudDo6VXNl
ckRpZEludGVyZmVyZVdpdGhQbGF5YmFjazoKKyAgICAgICAgcmV0dXJuIF9XS0F1dG9wbGF5RXZl
bnRVc2VyRGlkSW50ZXJmZXJlV2l0aFBsYXliYWNrOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICByZXR1cm4gX1dLQXV0b3BsYXlFdmVudERpZFBsYXlNZWRpYVdpdGhVc2Vy
R2VzdHVyZTsKK30KKwordm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6aGFuZGxlQXV0b3BsYXlF
dmVudChXZWJQYWdlUHJveHkmLCBXZWJDb3JlOjpBdXRvcGxheUV2ZW50IGV2ZW50LCBPcHRpb25T
ZXQ8V2ViQ29yZTo6QXV0b3BsYXlFdmVudEZsYWdzPiBmbGFncykKK3sKKyAgICBpZiAoIW1fdWlE
ZWxlZ2F0ZS5tX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3SGFuZGxlQXV0b3BsYXlFdmVudFdpdGhG
bGFncykKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIGF1dG8gZGVsZWdhdGUgPSBtX3VpRGVs
ZWdhdGUubV9kZWxlZ2F0ZS5nZXQoKTsKKyAgICBpZiAoIWRlbGVnYXRlKQorICAgICAgICByZXR1
cm47CisgICAgCisgICAgWyhpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4pZGVsZWdhdGUgX3dlYlZp
ZXc6bV91aURlbGVnYXRlLm1fd2ViVmlldyBoYW5kbGVBdXRvcGxheUV2ZW50OnRvV0tBdXRvcGxh
eUV2ZW50KGV2ZW50KSB3aXRoRmxhZ3M6dG9XS0F1dG9wbGF5RXZlbnRGbGFncyhmbGFncyldOwor
fQorCiAjaWYgUExBVEZPUk0oTUFDKQogYm9vbCBVSURlbGVnYXRlOjpVSUNsaWVudDo6Y2FuUnVu
TW9kYWwoKSBjb25zdAogewpAQCAtNjk3LDM1ICs3MzgsNiBAQCB2b2lkIFVJRGVsZWdhdGU6OlVJ
Q2xpZW50Ojptb3VzZURpZE1vdmVPdmVyRWxlbWVudChXZWJQYWdlUHJveHkmLCBjb25zdCBXZWJI
aXRUZQogICAgIFsoaWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+KWRlbGVnYXRlIF93ZWJWaWV3Om1f
dWlEZWxlZ2F0ZS5tX3dlYlZpZXcgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQ6d3JhcHBlcihhcGlI
aXRUZXN0UmVzdWx0LmdldCgpKSB3aXRoRmxhZ3M6V2ViRXZlbnRGYWN0b3J5Ojp0b05TRXZlbnRN
b2RpZmllckZsYWdzKG1vZGlmaWVycykgdXNlckluZm86dXNlckluZm8gPyBzdGF0aWNfY2FzdDxp
ZCA8TlNTZWN1cmVDb2Rpbmc+Pih1c2VySW5mby0+d3JhcHBlcigpKSA6IG5pbF07CiB9CiAKLXN0
YXRpYyBfV0tBdXRvcGxheUV2ZW50RmxhZ3MgdG9XS0F1dG9wbGF5RXZlbnRGbGFncyhPcHRpb25T
ZXQ8V2ViQ29yZTo6QXV0b3BsYXlFdmVudEZsYWdzPiBmbGFncykKLXsKLSAgICBfV0tBdXRvcGxh
eUV2ZW50RmxhZ3Mgd2tGbGFncyA9IF9XS0F1dG9wbGF5RXZlbnRGbGFnc05vbmU7Ci0gICAgaWYg
KGZsYWdzLmNvbnRhaW5zKFdlYkNvcmU6OkF1dG9wbGF5RXZlbnRGbGFnczo6SGFzQXVkaW8pKQot
ICAgICAgICB3a0ZsYWdzIHw9IF9XS0F1dG9wbGF5RXZlbnRGbGFnc0hhc0F1ZGlvOwotICAgIGlm
IChmbGFncy5jb250YWlucyhXZWJDb3JlOjpBdXRvcGxheUV2ZW50RmxhZ3M6OlBsYXliYWNrV2Fz
UHJldmVudGVkKSkKLSAgICAgICAgd2tGbGFncyB8PSBfV0tBdXRvcGxheUV2ZW50RmxhZ3NQbGF5
YmFja1dhc1ByZXZlbnRlZDsKLSAgICBpZiAoZmxhZ3MuY29udGFpbnMoV2ViQ29yZTo6QXV0b3Bs
YXlFdmVudEZsYWdzOjpNZWRpYUlzTWFpbkNvbnRlbnQpKQotICAgICAgICB3a0ZsYWdzIHw9IF9X
S0F1dG9wbGF5RXZlbnRGbGFnc01lZGlhSXNNYWluQ29udGVudDsKLSAgICAKLSAgICByZXR1cm4g
d2tGbGFnczsKLX0KLQotc3RhdGljIF9XS0F1dG9wbGF5RXZlbnQgdG9XS0F1dG9wbGF5RXZlbnQo
V2ViQ29yZTo6QXV0b3BsYXlFdmVudCBldmVudCkKLXsKLSAgICBzd2l0Y2ggKGV2ZW50KSB7Ci0g
ICAgY2FzZSBXZWJDb3JlOjpBdXRvcGxheUV2ZW50OjpEaWRQcmV2ZW50TWVkaWFGcm9tUGxheWlu
ZzoKLSAgICAgICAgcmV0dXJuIF9XS0F1dG9wbGF5RXZlbnREaWRQcmV2ZW50RnJvbUF1dG9wbGF5
aW5nOwotICAgIGNhc2UgV2ViQ29yZTo6QXV0b3BsYXlFdmVudDo6RGlkUGxheU1lZGlhV2l0aFVz
ZXJHZXN0dXJlOgotICAgICAgICByZXR1cm4gX1dLQXV0b3BsYXlFdmVudERpZFBsYXlNZWRpYVdp
dGhVc2VyR2VzdHVyZTsKLSAgICBjYXNlIFdlYkNvcmU6OkF1dG9wbGF5RXZlbnQ6OkRpZEF1dG9w
bGF5TWVkaWFQYXN0VGhyZXNob2xkV2l0aG91dFVzZXJJbnRlcmZlcmVuY2U6Ci0gICAgICAgIHJl
dHVybiBfV0tBdXRvcGxheUV2ZW50RGlkQXV0b3BsYXlNZWRpYVBhc3RUaHJlc2hvbGRXaXRob3V0
VXNlckludGVyZmVyZW5jZTsKLSAgICBjYXNlIFdlYkNvcmU6OkF1dG9wbGF5RXZlbnQ6OlVzZXJE
aWRJbnRlcmZlcmVXaXRoUGxheWJhY2s6Ci0gICAgICAgIHJldHVybiBfV0tBdXRvcGxheUV2ZW50
VXNlckRpZEludGVyZmVyZVdpdGhQbGF5YmFjazsKLSAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgcmV0dXJuIF9XS0F1dG9wbGF5RXZlbnREaWRQbGF5TWVkaWFXaXRoVXNlckdl
c3R1cmU7Ci19Ci0KIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnRvb2xiYXJzQXJlVmlzaWJs
ZShXZWJQYWdlUHJveHkmLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIGlmICghbV91aURlbGVnYXRlLm1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdHZXRU
b29sYmFyc0FyZVZpc2libGVXaXRoQ29tcGxldGlvbkhhbmRsZXIpCkBAIC03NTUsMTggKzc2Nyw2
IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmRpZENsaWNrQXV0b0ZpbGxCdXR0b24oV2Vi
UGFnZVByb3h5JiwgQVBJOjpPYmplY3QqIHVzCiAgICAgWyhpZCA8V0tVSURlbGVnYXRlUHJpdmF0
ZT4pZGVsZWdhdGUgX3dlYlZpZXc6bV91aURlbGVnYXRlLm1fd2ViVmlldyBkaWRDbGlja0F1dG9G
aWxsQnV0dG9uV2l0aFVzZXJJbmZvOnVzZXJJbmZvID8gc3RhdGljX2Nhc3Q8aWQgPE5TU2VjdXJl
Q29kaW5nPj4odXNlckluZm8tPndyYXBwZXIoKSkgOiBuaWxdOwogfQogCi12b2lkIFVJRGVsZWdh
dGU6OlVJQ2xpZW50OjpoYW5kbGVBdXRvcGxheUV2ZW50KFdlYlBhZ2VQcm94eSYsIFdlYkNvcmU6
OkF1dG9wbGF5RXZlbnQgZXZlbnQsIE9wdGlvblNldDxXZWJDb3JlOjpBdXRvcGxheUV2ZW50Rmxh
Z3M+IGZsYWdzKQotewotICAgIGlmICghbV91aURlbGVnYXRlLm1fZGVsZWdhdGVNZXRob2RzLndl
YlZpZXdIYW5kbGVBdXRvcGxheUV2ZW50V2l0aEZsYWdzKQotICAgICAgICByZXR1cm47Ci0gICAg
Ci0gICAgYXV0byBkZWxlZ2F0ZSA9IG1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRlLmdldCgpOwotICAg
IGlmICghZGVsZWdhdGUpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBbKGlkIDxXS1VJRGVs
ZWdhdGVQcml2YXRlPilkZWxlZ2F0ZSBfd2ViVmlldzptX3VpRGVsZWdhdGUubV93ZWJWaWV3IGhh
bmRsZUF1dG9wbGF5RXZlbnQ6dG9XS0F1dG9wbGF5RXZlbnQoZXZlbnQpIHdpdGhGbGFnczp0b1dL
QXV0b3BsYXlFdmVudEZsYWdzKGZsYWdzKV07Ci19Ci0KIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGll
bnQ6OnNob3dQYWdlKFdlYlBhZ2VQcm94eSopCiB7CiAgICAgaWYgKCFtX3VpRGVsZWdhdGUubV9k
ZWxlZ2F0ZU1ldGhvZHMuc2hvd1dlYlZpZXcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCmluZGV4IDA3NTBhYWQ2YmQ1NWIzZWVhMGQ3MzcyNmJlMzIyOWNjNmQ0N2VlMzIuLjdj
ZTA0MDhjZGNhODFhNzUwNTFjMTY5MzA3MTk2NzYzYmMyZGE5MWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xMjQxLDYgKzEyNDEsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBjb21taXRQb3RlbnRpYWxUYXAoT3B0aW9uU2V0PFdlYktpdDo6V2ViRXZlbnQ6Ok1vZGlm
aWVyPiwgVHJhbnNhY3Rpb25JRCBsYXllclRyZWVUcmFuc2FjdGlvbklkQXRMYXN0VG91Y2hTdGFy
dCwgV2ViQ29yZTo6UG9pbnRlcklEKTsKICAgICB2b2lkIGNhbmNlbFBvdGVudGlhbFRhcCgpOwog
ICAgIHZvaWQgdGFwSGlnaGxpZ2h0QXRQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50
JiwgdWludDY0X3QmIHJlcXVlc3RJRCk7CisgICAgdm9pZCBzaW11bGF0ZVRhcChjb25zdCBXZWJD
b3JlOjpGbG9hdFBvaW50JiwgT3B0aW9uU2V0PFdlYktpdDo6V2ViRXZlbnQ6Ok1vZGlmaWVyPik7
CiAgICAgdm9pZCBoYW5kbGVUYXAoY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYsIE9wdGlvblNl
dDxXZWJLaXQ6OldlYkV2ZW50OjpNb2RpZmllcj4sIFRyYW5zYWN0aW9uSUQgbGF5ZXJUcmVlVHJh
bnNhY3Rpb25JZEF0TGFzdFRvdWNoU3RhcnQpOwogICAgIHZvaWQgZGlkUmVjb2duaXplTG9uZ1By
ZXNzKCk7CiAgICAgdm9pZCBoYW5kbGVEb3VibGVUYXBGb3JEb3VibGVDbGlja0F0UG9pbnQoY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmLCBPcHRpb25TZXQ8V2ViRXZlbnQ6Ok1vZGlmaWVyPiwgVHJh
bnNhY3Rpb25JRCBsYXllclRyZWVUcmFuc2FjdGlvbklkQXRMYXN0VG91Y2hTdGFydCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0
aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0
aW9uLmgKaW5kZXggMmYxYmIwMTczODIzODQ4NmM2NGE1NGVkMGQ2NzJkMzY4MWRkZjg1Ny4uZmRi
MmY3MDMwYTAzNjMwNDJhYThhOTYyNzNkMWMwN2U0NmEzZTMxZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaApAQCAt
NTYzLDYgKzU2Myw3IEBAIEZPUl9FQUNIX1BSSVZBVEVfV0tDT05URU5UVklFV19BQ1RJT04oREVD
TEFSRV9XS0NPTlRFTlRWSUVXX0FDVElPTl9GT1JfV0VCX1ZJRVcpCiAKIEBpbnRlcmZhY2UgV0tD
b250ZW50VmlldyAoV0tUZXN0aW5nKQogCistICh2b2lkKV9zaW11bGF0ZVRhcEFjdGlvbkF0TG9j
YXRpb246KENHUG9pbnQpbG9jYXRpb247CiAtICh2b2lkKV9zaW11bGF0ZUxvbmdQcmVzc0FjdGlv
bkF0TG9jYXRpb246KENHUG9pbnQpbG9jYXRpb247CiAtICh2b2lkKV9zaW11bGF0ZVRleHRFbnRl
cmVkOihOU1N0cmluZyAqKXRleHQ7CiAtICh2b2lkKXNlbGVjdEZvcm1BY2Nlc3NvcnlQaWNrZXJS
b3c6KE5TSW50ZWdlcilyb3dJbmRleDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IDQwNmJhN2VmNWVjMzVm
OGExZGRjY2YzZWE5OTJkOGEzMzJjMjZiZDcuLmZiNzNiODk1YjAwZTk2MWJhMzVlYjhhZGY4NmUx
YmEzNGFlNmUzMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtNzgxNSw2ICs3ODE1LDExIEBAIC0gKHZv
aWQpX3NpbXVsYXRlVGV4dEVudGVyZWQ6KE5TU3RyaW5nICopdGV4dAogI2VuZGlmCiB9CiAKKy0g
KHZvaWQpX3NpbXVsYXRlVGFwQWN0aW9uQXRMb2NhdGlvbjooQ0dQb2ludClsb2NhdGlvbgorewor
ICAgIF9wYWdlLT5zaW11bGF0ZVRhcChsb2NhdGlvbiwgV2ViS2l0Ojp3ZWJFdmVudE1vZGlmaWVy
RmxhZ3MoMCkpOworfQorCiAtICh2b2lkKV9zaW11bGF0ZUxvbmdQcmVzc0FjdGlvbkF0TG9jYXRp
b246KENHUG9pbnQpbG9jYXRpb24KIHsKICAgICBSZXRhaW5QdHI8V0tDb250ZW50Vmlldz4gcHJv
dGVjdGVkU2VsZiA9IHNlbGY7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV2ViUGFnZVByb3h5SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBh
Z2VQcm94eUlPUy5tbQppbmRleCBkMTdhNjgyNDM5MDM1ZGE2NzM0NTY5NTJjYmE3YTg2MmY4ZGJi
MzAwLi5mNTFjZmQ0NWE2MGQ5NjIwNWMwMmU5OWUzY2YxZTI2OWQ2NmY0YTY5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KQEAgLTg1MCw2ICs4
NTAsMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnRhcEhpZ2hsaWdodEF0UG9zaXRpb24oY29uc3Qg
V2ViQ29yZTo6RmxvYXRQb2ludCYgcG9zaXRpb24sIHUKICAgICBwcm9jZXNzKCkuc2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6VGFwSGlnaGxpZ2h0QXRQb3NpdGlvbihyZXF1ZXN0SUQsIHBvc2l0aW9u
KSwgbV93ZWJQYWdlSUQpOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6c2ltdWxhdGVUYXAoY29u
c3QgRmxvYXRQb2ludCYgbG9jYXRpb24sIE9wdGlvblNldDxXZWJFdmVudDo6TW9kaWZpZXI+IG1v
ZGlmaWVycykKK3sKKyAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2ltdWxh
dGVUYXAocm91bmRlZEludFBvaW50KGxvY2F0aW9uKSwgbW9kaWZpZXJzKSwgbV93ZWJQYWdlSUQp
OworfQorCiB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlVGFwKGNvbnN0IEZsb2F0UG9pbnQmIGxv
Y2F0aW9uLCBPcHRpb25TZXQ8V2ViRXZlbnQ6Ok1vZGlmaWVyPiBtb2RpZmllcnMsIFRyYW5zYWN0
aW9uSUQgbGF5ZXJUcmVlVHJhbnNhY3Rpb25JZEF0TGFzdFRvdWNoU3RhcnQpCiB7CiAgICAgcHJv
Y2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkhhbmRsZVRhcChyb3VuZGVkSW50UG9pbnQo
bG9jYXRpb24pLCBtb2RpZmllcnMsIGxheWVyVHJlZVRyYW5zYWN0aW9uSWRBdExhc3RUb3VjaFN0
YXJ0KSwgbV93ZWJQYWdlSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCmluZGV4IGRmMGYzNjRhOGZlYmVjNGM4Zjg1NTU1ZjAyYmZlNWYzNTNkMTBiYmEuLjFh
Y2EzNGMwYjQwYjFmYzgxZDU3YTIwNDJiYzkwMmRlZjg1NTM0YTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTYzMCw2ICs2MzAsNyBAQCBwdWJsaWM6
CiAgICAgYm9vbCBhbGxvd3NVc2VyU2NhbGluZygpIGNvbnN0OwogICAgIGJvb2wgaGFzU3RhYmxl
UGFnZVNjYWxlRmFjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9oYXNTdGFibGVQYWdlU2NhbGVGYWN0
b3I7IH0KIAorICAgIHZvaWQgc2ltdWxhdGVUYXAoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBP
cHRpb25TZXQ8V2ViS2l0OjpXZWJFdmVudDo6TW9kaWZpZXI+KTsKICAgICB2b2lkIGhhbmRsZVRh
cChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIE9wdGlvblNldDxXZWJLaXQ6OldlYkV2ZW50OjpN
b2RpZmllcj4sIFRyYW5zYWN0aW9uSUQgbGFzdExheWVyVHJlZVRyYW5zYWN0aW9uSWQpOwogICAg
IHZvaWQgcG90ZW50aWFsVGFwQXRQb3NpdGlvbih1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFdl
YkNvcmU6OkZsb2F0UG9pbnQmLCBib29sIHNob3VsZFJlcXVlc3RNYWduaWZpY2F0aW9uSW5mb3Jt
YXRpb24pOwogICAgIHZvaWQgY29tbWl0UG90ZW50aWFsVGFwKE9wdGlvblNldDxXZWJLaXQ6Oldl
YkV2ZW50OjpNb2RpZmllcj4sIFRyYW5zYWN0aW9uSUQgbGFzdExheWVyVHJlZVRyYW5zYWN0aW9u
SWQsIFdlYkNvcmU6OlBvaW50ZXJJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCAyZWUxODg5NjQ3ZjRjNDVkNjVk
YWFhYWI0MjVkZGViMDliZDViZDgyLi5mMjZjNWRiM2E3N2ZlNWIwZTJkMDg3MmM0MWM2ODFkYzJk
YTNjNGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UubWVzc2FnZXMuaW4KQEAgLTUzLDYgKzUzLDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBM
ZWdhY3lSZWNlaXZlciB7CiAgICAgU2V0T3ZlcnJpZGVWaWV3cG9ydEFyZ3VtZW50cyhPcHRpb25h
bDxXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50cz4gYXJndW1lbnRzKQogICAgIER5bmFtaWNWaWV3
cG9ydFNpemVVcGRhdGUoV2ViQ29yZTo6RmxvYXRTaXplIHZpZXdMYXlvdXRTaXplLCBXZWJDb3Jl
OjpGbG9hdFNpemUgbWF4aW11bVVub2JzY3VyZWRTaXplLCBXZWJDb3JlOjpGbG9hdFJlY3QgdGFy
Z2V0RXhwb3NlZENvbnRlbnRSZWN0LCBXZWJDb3JlOjpGbG9hdFJlY3QgdGFyZ2V0VW5vYnNjdXJl
ZFJlY3QsIFdlYkNvcmU6OkZsb2F0UmVjdCB0YXJnZXRVbm9ic2N1cmVkUmVjdEluU2Nyb2xsVmll
d0Nvb3JkaW5hdGVzLCBXZWJDb3JlOjpSZWN0RWRnZXM8ZmxvYXQ+IHRhcmdldFVub2JzY3VyZWRT
YWZlQXJlYUluc2V0cywgZG91YmxlIHNjYWxlLCBpbnQzMl90IGRldmljZU9yaWVudGF0aW9uLCB1
aW50NjRfdCBkeW5hbWljVmlld3BvcnRTaXplVXBkYXRlSUQpCiAKKyAgICBTaW11bGF0ZVRhcChX
ZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgT3B0aW9uU2V0PFdlYktpdDo6V2ViRXZlbnQ6Ok1vZGlm
aWVyPiBtb2RpZmllcnMpCiAgICAgSGFuZGxlVGFwKFdlYkNvcmU6OkludFBvaW50IHBvaW50LCBP
cHRpb25TZXQ8V2ViS2l0OjpXZWJFdmVudDo6TW9kaWZpZXI+IG1vZGlmaWVycywgV2ViS2l0OjpU
cmFuc2FjdGlvbklEIGxhc3RMYXllclRyZWVUcmFuc2FjdGlvbklkKQogICAgIFBvdGVudGlhbFRh
cEF0UG9zaXRpb24odWludDY0X3QgcmVxdWVzdElELCBXZWJDb3JlOjpGbG9hdFBvaW50IHBvaW50
LCBib29sIHNob3VsZFJlcXVlc3RNYWduaWZpY2F0aW9uSW5mb3JtYXRpb24pCiAgICAgQ29tbWl0
UG90ZW50aWFsVGFwKE9wdGlvblNldDxXZWJLaXQ6OldlYkV2ZW50OjpNb2RpZmllcj4gbW9kaWZp
ZXJzLCBXZWJLaXQ6OlRyYW5zYWN0aW9uSUQgbGFzdExheWVyVHJlZVRyYW5zYWN0aW9uSWQsIFdl
YkNvcmU6OlBvaW50ZXJJRCBwb2ludGVySWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IDcwODkwNzc1NzNjZmIxMGZjOWNm
NjU3NDQ5OTFmYzE4N2I4OTRiYTkuLjhlNzkyYjAwMDYxMjAyNjJlOThlZDZhMTY0YjMzOGNlZjRk
YjJhOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9X
ZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9X
ZWJQYWdlSU9TLm1tCkBAIC04MzksNiArODM5LDE0IEBAIHZvaWQgV2ViUGFnZTo6aGFuZGxlVGFw
KGNvbnN0IEludFBvaW50JiBwb2ludCwgT3B0aW9uU2V0PFdlYkV2ZW50OjpNb2RpZmllcj4gbW9k
CiAgICAgICAgIGhhbmRsZVN5bnRoZXRpY0NsaWNrKCpub2RlUmVzcG9uZGluZ1RvQ2xpY2ssIGFk
anVzdGVkUG9pbnQsIG1vZGlmaWVycyk7CiB9CiAKK3ZvaWQgV2ViUGFnZTo6c2ltdWxhdGVUYXAo
Y29uc3QgSW50UG9pbnQmIHBvaW50LCBPcHRpb25TZXQ8V2ViRXZlbnQ6Ok1vZGlmaWVyPiBtb2Rp
ZmllcnMpCit7CisgICAgRmxvYXRQb2ludCBhZGp1c3RlZFBvaW50OworICAgIE5vZGUqIG5vZGVS
ZXNwb25kaW5nVG9DbGljayA9IG1fcGFnZS0+bWFpbkZyYW1lKCkubm9kZVJlc3BvbmRpbmdUb0Ns
aWNrRXZlbnRzKHBvaW50LCBhZGp1c3RlZFBvaW50KTsKKyAgICBpZiAobm9kZVJlc3BvbmRpbmdU
b0NsaWNrKQorICAgICAgICBoYW5kbGVTeW50aGV0aWNDbGljaygqbm9kZVJlc3BvbmRpbmdUb0Ns
aWNrLCBhZGp1c3RlZFBvaW50LCBtb2RpZmllcnMpOworfQorCiB2b2lkIFdlYlBhZ2U6OmhhbmRs
ZURvdWJsZVRhcEZvckRvdWJsZUNsaWNrQXRQb2ludChjb25zdCBJbnRQb2ludCYgcG9pbnQsIE9w
dGlvblNldDxXZWJFdmVudDo6TW9kaWZpZXI+IG1vZGlmaWVycywgVHJhbnNhY3Rpb25JRCBsYXN0
TGF5ZXJUcmVlVHJhbnNhY3Rpb25JZCkKIHsKICAgICBGbG9hdFBvaW50IGFkanVzdGVkUG9pbnQ7
CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMTRi
NmI2NGQzMDFjZjY3MzhjMjc2NDk4Y2FhMDZiNjhiYjI1N2UyZS4uZGFlMjAwNzM2ZGNmZjBkODdj
OTRmZTIxOGViYzhjZTlmM2FjYzIzYiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE5LTA5LTMwICBMdW1pbmcgWWlu
ICA8bHVtaW5nX3lpbkBhcHBsZS5jb20+CisKKyAgICAgICAgVXBkYXRlIEFQSSBhdmFpbGFiaWxp
dHkgZm9yIGF1dG9wbGF5IGV2ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDIyMTQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU1NzEwMzk1Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQvYXV0b3BsYXktY2hlY2suaHRtbDoKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9hdXRvcGxheS1pbmhlcml0cy1nZXN0dXJlLWZyb20tZG9j
dW1lbnQuaHRtbDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9hdXRvcGxh
eS1tdXRlZC13aXRoLWNvbnRyb2xzLmh0bWw6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQvYXV0b3BsYXktd2l0aC1jb250cm9scy5odG1sOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0L2pzLXBsYXktd2l0aC1jb250cm9scy5odG1sOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L25vLWF1dG9wbGF5LXdpdGgtY29udHJvbHMuaHRt
bDoKKyAgICAgICAgUHJvdmlkZSBhbiBpZCBmb3IgcGxheSBidXR0b25zIG9uIHZhcmlvdXMgdGVz
dGluZyBwYWdlcyBzbyB0aGF0IHRoZXkgY2FuIGJlIHJlbGlhYmx5IHRyaWdnZXJlZCBvbiBpT1Mu
IAorICAgICAgICBBZGRpdGlvbmFsbHksIGFkZCBhIG5vLW9wIGJ1dHRvbiBvbiBhdXRvcGxheS1j
aGVjayBhbmQgYXV0b3BsYXktaW5oZXJpdHMtZ2VzdHVyZS1mcm9tLWRvY3VtZW50LCBzbyB0aGF0
IAorICAgICAgICBnZXN0dXJlcyBhY3R1YWxseSBoaXQgYW4gZWxlbWVudCBvbiB0aGUgcGFnZSBh
bmQgYXJlbid0IGlnbm9yZWQgb24gaU9TIGR1cmluZyB0ZXN0aW5nLiAKKworICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZVBvbGljaWVzLm1tOgorICAgICAg
ICAoLVtBdXRvcGxheVBvbGljaWVzRGVsZWdhdGUgX3dlYlZpZXc6aGFuZGxlQXV0b3BsYXlFdmVu
dDp3aXRoRmxhZ3M6XSk6CisgICAgICAgICgtW0FzeW5jQXV0b3BsYXlQb2xpY2llc0RlbGVnYXRl
IF93ZWJWaWV3OmhhbmRsZUF1dG9wbGF5RXZlbnQ6d2l0aEZsYWdzOl0pOgorICAgICAgICAoVEVT
VCk6CisgICAgICAgIEVuYWJsZSB0ZXN0cyByZWxhdGVkIHRvIGF1dG9wbGF5IHBvbGljeSBvbiBp
T1MuIEZvciBzb21lIGlPUyB0ZXN0cyB0aGF0IGludm9sdmUgZ2VzdHVyZSBxdWlya3MsIGRlbGF5
IAorICAgICAgICBwcm9ncmFtbWF0aWMgcGxheWJhY2sgYWZ0ZXIgYSB2ZXJ5IHNob3J0IGludGVy
dmFsIHRvIGVuc3VyZSBzdWNjZXNzZnVsIGFzeW5jaHJvbm91cyBnZXN0dXJlIHByb3BhZ2F0aW9u
LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9hdWRpby13aXRo
LXBsYXktYnV0dG9uLmh0bWw6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9hdXRvcGxheWluZy1tdWx0aXBsZS1tZWRpYS1lbGVtZW50cy5odG1sOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvdmlkZW8td2l0aC1wbGF5LWJ1dHRvbi5o
dG1sOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5oOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbToKKyAgICAgICAgKC1b
VGVzdFdLV2ViVmlldyBjbGlja09uRWxlbWVudElEOl0pOgorICAgICAgICAoLVtUZXN0V0tXZWJW
aWV3IGNsaWNrT25Qb2ludDpdKToKKyAgICAgICAgSGVscGVyIG1ldGhvZCB0byBhYnN0cmFjdCBz
aW11bGF0ZWQgdGFwcyBhbmQgbW91c2UgY2xpY2tzIGJldHdlZW4gTWFjIGFuZCBpT1MuCisKIDIw
MTktMDktMzAgIFpoaWZlaSBGYW5nICA8emhpZmVpX2ZhbmdAYXBwbGUuY29tPgogCiAgICAgICAg
IFtyZXN1bHRzLndlYmtpdC5vcmcgVGltZWxpbmVdIE5ldyBheGlzIHN0eWxlCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9hdXRvcGxheS1jaGVjay5odG1sIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvYXV0b3BsYXktY2hlY2suaHRtbAppbmRl
eCBmNGJhNTE3NzA0MjJhY2Y2NTVhOGFhMmU0Mzg1ZjE4NzY2Zjk1MDEyLi5lM2ZjZDA2ZDdlODc2
NzY4Y2YxNDEzNGQ0ZDM1N2RmNGRkOWQ3NTgyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdC9hdXRvcGxheS1jaGVjay5odG1sCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0L2F1dG9wbGF5LWNoZWNrLmh0bWwKQEAgLTI1LDYgKzI1LDggQEAK
ICAgICAgICAgPC9zY3JpcHQ+CiAgICAgPC9oZWFkPgogICAgIDxib2R5IG9ubG9hZD0icGxheVZp
ZGVvKCkiPgotICAgICAgICA8dmlkZW8gaWQ9InZpZGVvIiBvbnBhdXNlPXZpZGVvRGlkUGF1c2Uo
KSBwbGF5c2lubGluZSBzcmM9InRlc3QubXA0IiAvPgorICAgICAgICA8dmlkZW8gaWQ9InZpZGVv
IiBvbnBhdXNlPXZpZGVvRGlkUGF1c2UoKSBwbGF5c2lubGluZSBzcmM9InRlc3QubXA0Ij48L3Zp
ZGVvPgorICAgICAgICA8YnI+CisgICAgICAgIDxidXR0b24gaWQ9Im5vLW9wLWJ1dHRvbiIgdHlw
ZT0iYnV0dG9uIj5Oby1vcCBCdXR0b248L2J1dHRvbj4KICAgICA8L2JvZHk+CiA8L2h0bWw+CmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9hdXRvcGxheS1pbmhl
cml0cy1nZXN0dXJlLWZyb20tZG9jdW1lbnQuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0L2F1dG9wbGF5LWluaGVyaXRzLWdlc3R1cmUtZnJvbS1kb2N1bWVudC5odG1sCmlu
ZGV4IDA4MDA1OTQ1ZDE1NTg0ZDU3MDliNzRmZmNkYmU0MTc0ODg1OWE0ODYuLjU4NDY5YjQyZGE1
M2MyYzQ5MDE5YzI2OGQzNjVmY2E5ZDhmMzBjZDAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0L2F1dG9wbGF5LWluaGVyaXRzLWdlc3R1cmUtZnJvbS1kb2N1bWVu
dC5odG1sCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L2F1dG9wbGF5LWlu
aGVyaXRzLWdlc3R1cmUtZnJvbS1kb2N1bWVudC5odG1sCkBAIC0xOSw2ICsxOSw4IEBACiA8L2hl
YWQ+CiAKIDxib2R5IG9ubG9hZD0ibG9hZGVkKCkiPgotICAgIDx2aWRlbyBpZD0idmlkZW8iIGNv
bnRyb2xzIHNyYz0idGVzdC5tcDQiPjwvdmlkZW8+CisgICAgPHZpZGVvIHBsYXlzaW5saW5lIGlk
PSJ2aWRlbyIgY29udHJvbHMgc3JjPSJ0ZXN0Lm1wNCI+PC92aWRlbz4KKyAgICA8YnI+CisgICAg
PGJ1dHRvbiBpZD0ibm8tb3AtYnV0dG9uIiB0eXBlPSJidXR0b24iPk5vLW9wIEJ1dHRvbjwvYnV0
dG9uPgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQvYXV0b3BsYXktbXV0ZWQtd2l0aC1jb250cm9scy5odG1sIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvYXV0b3BsYXktbXV0ZWQtd2l0aC1jb250cm9scy5odG1s
CmluZGV4IDY0OWM5NWM0YjExMzk2ZDk5ZDVmNjAxOGJhMWNmNTNmYzY3OWZiNDEuLmExZWVkYzAw
NGRhYmE5NWE0NzUwMmYzOWJkZWQ5YWY2MGE3YWM3OWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0L2F1dG9wbGF5LW11dGVkLXdpdGgtY29udHJvbHMuaHRtbAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9hdXRvcGxheS1tdXRlZC13aXRo
LWNvbnRyb2xzLmh0bWwKQEAgLTE3LDcgKzE3LDcgQEAKICAgICAgICAgPC9zY3JpcHQ+CiAgICAg
PC9oZWFkPgogICAgIDxib2R5IG9ubG9hZD0icGFnZUxvYWRlZCgpIj4KLSAgICAgICAgPGJ1dHRv
biBvbmNsaWNrPSJwbGF5KCkiPlBsYXk8L2J1dHRvbj4KKyAgICAgICAgPGJ1dHRvbiBpZD0icGxh
eUJ1dHRvbiIgb25jbGljaz0icGxheSgpIj5QbGF5PC9idXR0b24+CiAgICAgICAgIDx2aWRlbyBp
ZD0idmlkZW8iIG9ucGxheWluZz0iYmVnYW5QbGF5aW5nKCkiIG11dGVkIGF1dG9wbGF5IHNyYz0i
dGVzdC5tcDQiIC8+CiAgICAgPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvYXV0b3BsYXktd2l0aC1jb250cm9scy5odG1sIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvYXV0b3BsYXktd2l0aC1jb250cm9scy5odG1s
CmluZGV4IGNmODBhNjU3OGVlYTFlNDkxMTE1NDQ2YTEwYWJhNTI1ZDhmNTcwNTIuLmEwNzBmZWRj
MjE1YzlhYmM3ZjI3M2JhNWRmMzIyZjhlZjczYzNmZTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0L2F1dG9wbGF5LXdpdGgtY29udHJvbHMuaHRtbAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9hdXRvcGxheS13aXRoLWNvbnRyb2xzLmh0
bWwKQEAgLTEzLDcgKzEzLDcgQEAKICAgICAgICAgPC9zY3JpcHQ+CiAgICAgPC9oZWFkPgogICAg
IDxib2R5IG9ubG9hZD0icGFnZUxvYWRlZCgpIj4KLSAgICAgICAgPGJ1dHRvbiBvbmNsaWNrPSJw
bGF5KCkiPlBsYXk8L2J1dHRvbj4KKyAgICAgICAgPGJ1dHRvbiBpZD0icGxheUJ1dHRvbiIgb25j
bGljaz0icGxheSgpIj5QbGF5PC9idXR0b24+CiAgICAgICAgIDx2aWRlbyBpZD0idmlkZW8iIGF1
dG9wbGF5IHNyYz0idGVzdC5tcDQiIC8+CiAgICAgPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvanMtcGxheS13aXRoLWNvbnRyb2xz
Lmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9qcy1wbGF5LXdpdGgtY29u
dHJvbHMuaHRtbAppbmRleCA4N2ZhZDM1NzA2OGFlZjk3NmUzNTMzMDlhMmIzOGRkODJmYWFhNGJi
Li5kNGVjNDVkYzg5YTAwNjgzMTM4MmUzMjQwOTU5NWYzYmE4ODBiNWZlIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9qcy1wbGF5LXdpdGgtY29udHJvbHMuaHRt
bAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9qcy1wbGF5LXdpdGgtY29u
dHJvbHMuaHRtbApAQCAtMzQsOCArMzQsOCBAQAogICAgICAgICA8L3NjcmlwdD4KICAgICA8L2hl
YWQ+CiAgICAgPGJvZHkgb25sb2FkPSJwYWdlTG9hZGVkKCkiPgotICAgICAgICA8YnV0dG9uIG9u
Y2xpY2s9InBsYXkoKSI+UGxheTwvYnV0dG9uPgotICAgICAgICA8YnV0dG9uIG9uY2xpY2s9Im11
dGUoKSI+TXV0ZTwvYnV0dG9uPgorICAgICAgICA8YnV0dG9uIGlkPSJwbGF5QnV0dG9uIiBvbmNs
aWNrPSJwbGF5KCkiPlBsYXk8L2J1dHRvbj4KKyAgICAgICAgPGJ1dHRvbiBpZD0ibXV0ZUJ1dHRv
biIgb25jbGljaz0ibXV0ZSgpIj5NdXRlPC9idXR0b24+CiAgICAgICAgIDx2aWRlbyBpZD0idmlk
ZW8iIG9ucGxheWluZz1iZWdhblBsYXlpbmcoKSBvbmVuZGVkPWVuZGVkUGxheWluZygpIHNyYz0i
dGVzdC5tcDQiIC8+CiAgICAgPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvbm8tYXV0b3BsYXktd2l0aC1jb250cm9scy5odG1sIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvbm8tYXV0b3BsYXktd2l0aC1jb250cm9s
cy5odG1sCmluZGV4IDY3NmJhYzIwNTA3YjMxMWY3YmM5YzdmYzUzMThjM2MwNjdlODNkNjcuLjNj
ZGEzYzgwMzdkZjY3MzM0MWE3MDk3YTc2NzVkMGE4NjQyN2ZhNWQgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L25vLWF1dG9wbGF5LXdpdGgtY29udHJvbHMuaHRt
bAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9uby1hdXRvcGxheS13aXRo
LWNvbnRyb2xzLmh0bWwKQEAgLTE5LDcgKzE5LDcgQEAKICAgICAgICAgPC9zY3JpcHQ+CiAgICAg
PC9oZWFkPgogICAgIDxib2R5IG9ubG9hZD0icGFnZUxvYWRlZCgpIj4KLSAgICAgICAgPGJ1dHRv
biBvbmNsaWNrPSJwbGF5KCkiPlBsYXk8L2J1dHRvbj4KKyAgICAgICAgPGJ1dHRvbiBpZD0icGxh
eUJ1dHRvbiIgb25jbGljaz0icGxheSgpIj5QbGF5PC9idXR0b24+CiAgICAgICAgIDx2aWRlbyBp
ZD0idmlkZW8iIG9ucGxheWluZz1iZWdhblBsYXlpbmcoKSBzcmM9InRlc3QubXA0IiAvPgogICAg
IDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvV2Vic2l0ZVBvbGljaWVzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9XZWJzaXRlUG9saWNpZXMubW0KaW5kZXggODJhYjRjZTJhOGEwYWJjMjBj
ZGNhOTY4N2U0YWFiNjgxYTI5MmJlMy4uNWEyYjcwODg5ZTEzZjAxZDhmNGFiMWM5NjhkNmE3ODFh
MGFhYjgxYSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9XZWJzaXRlUG9saWNpZXMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9XZWJzaXRlUG9saWNpZXMubW0KQEAgLTYzLDEwICs2Myw4IEBAIHN0YXRpYyBib29s
IGRvbmVDb21waWxpbmc7CiBzdGF0aWMgYm9vbCByZWNlaXZlZEFsZXJ0Owogc3RhdGljIGJvb2wg
ZmluaXNoZWROYXZpZ2F0aW9uOwogCi0jaWYgUExBVEZPUk0oTUFDKQogc3RhdGljIE9wdGlvbmFs
PF9XS0F1dG9wbGF5RXZlbnQ+IHJlY2VpdmVkQXV0b3BsYXlFdmVudDsKIHN0YXRpYyBPcHRpb25h
bDxfV0tBdXRvcGxheUV2ZW50RmxhZ3M+IHJlY2VpdmVkQXV0b3BsYXlFdmVudEZsYWdzOwotI2Vu
ZGlmCiAKIHN0YXRpYyBzaXplX3QgYWxlcnRDb3VudDsKIApAQCAtMTk4LDEzICsxOTYsMTEgQEAg
LSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uOihXS05hdmlnYXQKICAgICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9u
QWN0aW9uUG9saWN5QWxsb3csIHdlYnNpdGVQb2xpY2llcyk7CiB9CiAKLSNpZiBQTEFURk9STShN
QUMpCiAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGhhbmRsZUF1dG9wbGF5
RXZlbnQ6KF9XS0F1dG9wbGF5RXZlbnQpZXZlbnQgd2l0aEZsYWdzOihfV0tBdXRvcGxheUV2ZW50
RmxhZ3MpZmxhZ3MKIHsKICAgICByZWNlaXZlZEF1dG9wbGF5RXZlbnRGbGFncyA9IGZsYWdzOwog
ICAgIHJlY2VpdmVkQXV0b3BsYXlFdmVudCA9IGV2ZW50OwogfQotI2VuZGlmCiAKIEBlbmQKIApA
QCAtMjM0LDEzICsyMzAsMTEgQEAgLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmll
dyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOihXS05hdmlnYXQKICAgICB9KTsKIH0K
IAotI2lmIFBMQVRGT1JNKE1BQykKIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZp
ZXcgaGFuZGxlQXV0b3BsYXlFdmVudDooX1dLQXV0b3BsYXlFdmVudClldmVudCB3aXRoRmxhZ3M6
KF9XS0F1dG9wbGF5RXZlbnRGbGFncylmbGFncwogewogICAgIHJlY2VpdmVkQXV0b3BsYXlFdmVu
dEZsYWdzID0gZmxhZ3M7CiAgICAgcmVjZWl2ZWRBdXRvcGxheUV2ZW50ID0gZXZlbnQ7CiB9Ci0j
ZW5kaWYKIAogQGVuZAogCkBAIC0yNjcsNyArMjYxLDggQEAgVEVTVChXZWJLaXQsIFdlYnNpdGVQ
b2xpY2llc0F1dG9wbGF5RW5hYmxlZCkKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5T
KFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogCiAjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKLSAgICBbY29uZmlndXJhdGlvbiBzZXRBbGxvd3NJbmxpbmVNZWRpYVBsYXli
YWNrOllFU107CisgICAgY29uZmlndXJhdGlvbi5nZXQoKS5hbGxvd3NJbmxpbmVNZWRpYVBsYXli
YWNrID0gWUVTOworICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkuX2lubGluZU1lZGlhUGxheWJhY2tS
ZXF1aXJlc1BsYXlzSW5saW5lQXR0cmlidXRlID0gTk87CiAjZW5kaWYKIAogICAgIGF1dG8gd2Vi
VmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFr
ZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0p
OwpAQCAtMzU2LDEzICszNTEsMTMgQEAgVEVTVChXZWJLaXQsIFdlYnNpdGVQb2xpY2llc0F1dG9w
bGF5RW5hYmxlZCkKICAgICBbd2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpAImRpZC1ub3QtcGxheSJd
OwogfQogCi0jaWYgUExBVEZPUk0oTUFDKQogc3RhdGljIHZvaWQgcnVuVW50aWxSZWNlaXZlc0F1
dG9wbGF5RXZlbnQoV0tBdXRvcGxheUV2ZW50IGV2ZW50KQogewogICAgIHdoaWxlICghcmVjZWl2
ZWRBdXRvcGxheUV2ZW50IHx8ICpyZWNlaXZlZEF1dG9wbGF5RXZlbnQgIT0gZXZlbnQpCiAgICAg
ICAgIENGUnVuTG9vcFJ1bkluTW9kZShrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUsIDAuMSwgdHJ1ZSk7
CiB9CiAKKyNpZiBQTEFURk9STShNQUMpCiBURVNUKFdlYktpdCwgV2Vic2l0ZVBvbGljaWVzUGxh
eUFmdGVyUHJldmVudGVkQXV0b3BsYXkpCiB7CiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRv
cHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKQEAgLTQzMywxMCAr
NDI4LDE2IEBAIFRFU1QoV2ViS2l0LCBXZWJzaXRlUG9saWNpZXNQbGF5QWZ0ZXJQcmV2ZW50ZWRB
dXRvcGxheSkKICAgICBBU1NFUlRfVFJVRSgqcmVjZWl2ZWRBdXRvcGxheUV2ZW50RmxhZ3MgJiBr
V0tBdXRvcGxheUV2ZW50RmxhZ3NIYXNBdWRpbyk7CiAgICAgQVNTRVJUX1RSVUUoKnJlY2VpdmVk
QXV0b3BsYXlFdmVudEZsYWdzICYga1dLQXV0b3BsYXlFdmVudEZsYWdzUGxheWJhY2tXYXNQcmV2
ZW50ZWQpOwogfQorI2VuZGlmCiAKIFRFU1QoV2ViS2l0LCBXZWJzaXRlUG9saWNpZXNQbGF5aW5n
V2l0aFVzZXJHZXN0dXJlKQogewogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tX
S1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKKyAgICBjb25maWd1cmF0aW9uLmdldCgpLmFsbG93c0lubGluZU1lZGlhUGxheWJhY2sg
PSBZRVM7CisgICAgY29uZmlndXJhdGlvbi5nZXQoKS5faW5saW5lTWVkaWFQbGF5YmFja1JlcXVp
cmVzUGxheXNJbmxpbmVBdHRyaWJ1dGUgPSBOTzsKKyNlbmRpZgorCiAgICAgYXV0byB3ZWJWaWV3
ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVj
dCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAK
ICAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW0F1dG9wbGF5UG9saWNpZXNEZWxlZ2F0ZSBh
bGxvY10gaW5pdF0pOwpAQCAtNDQ4LDEzICs0NDksMjAgQEAgVEVTVChXZWJLaXQsIFdlYnNpdGVQ
b2xpY2llc1BsYXlpbmdXaXRoVXNlckdlc3R1cmUpCiAKICAgICByZWNlaXZlZEF1dG9wbGF5RXZl
bnQgPSBXVEY6Om51bGxvcHQ7CiAKKyNpZiBQTEFURk9STShNQUMpCiAgICAgTlNQb2ludCBwbGF5
QnV0dG9uQ2xpY2tQb2ludCA9IE5TTWFrZVBvaW50KDIwLCA1ODApOworI2VuZGlmCiAKICAgICBO
U1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNC
dW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJhdWRpby13aXRoLXBsYXktYnV0dG9u
IiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNv
dXJjZXMiXV07CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CiAgICAgW3dlYlZp
ZXcgd2FpdEZvck1lc3NhZ2U6QCJsb2FkZWQiXTsKKworI2lmIFBMQVRGT1JNKE1BQykKICAgICBb
d2ViVmlldyBtb3VzZURvd25BdFBvaW50OnBsYXlCdXR0b25DbGlja1BvaW50IHNpbXVsYXRlUHJl
c3N1cmU6Tk9dOwogICAgIFt3ZWJWaWV3IG1vdXNlVXBBdFBvaW50OnBsYXlCdXR0b25DbGlja1Bv
aW50XTsKKyNlbHNlCisgICAgW3dlYlZpZXcgY2xpY2tPbkVsZW1lbnRJRDpAInBsYXlCdXR0b24i
XTsKKyNlbmRpZgogCiAgICAgcnVuVW50aWxSZWNlaXZlc0F1dG9wbGF5RXZlbnQoa1dLQXV0b3Bs
YXlFdmVudERpZFBsYXlNZWRpYVdpdGhVc2VyR2VzdHVyZSk7CiAgICAgQVNTRVJUX1RSVUUoKnJl
Y2VpdmVkQXV0b3BsYXlFdmVudEZsYWdzICYga1dLQXV0b3BsYXlFdmVudEZsYWdzSGFzQXVkaW8p
OwpAQCAtNDY1LDggKzQ3MywxMyBAQCBURVNUKFdlYktpdCwgV2Vic2l0ZVBvbGljaWVzUGxheWlu
Z1dpdGhVc2VyR2VzdHVyZSkKICAgICByZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0
aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAidmlkZW8td2l0aC1w
bGF5LWJ1dHRvbiIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJL
aXRBUEkucmVzb3VyY2VzIl1dOwogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOwog
ICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAibG9hZGVkIl07CisKKyNpZiBQTEFURk9STShN
QUMpCiAgICAgW3dlYlZpZXcgbW91c2VEb3duQXRQb2ludDpwbGF5QnV0dG9uQ2xpY2tQb2ludCBz
aW11bGF0ZVByZXNzdXJlOk5PXTsKICAgICBbd2ViVmlldyBtb3VzZVVwQXRQb2ludDpwbGF5QnV0
dG9uQ2xpY2tQb2ludF07CisjZWxzZQorICAgIFt3ZWJWaWV3IGNsaWNrT25FbGVtZW50SUQ6QCJw
bGF5QnV0dG9uIl07CisjZW5kaWYKIAogICAgIHJ1blVudGlsUmVjZWl2ZXNBdXRvcGxheUV2ZW50
KGtXS0F1dG9wbGF5RXZlbnREaWRQbGF5TWVkaWFXaXRoVXNlckdlc3R1cmUpOwogICAgIEFTU0VS
VF9UUlVFKCpyZWNlaXZlZEF1dG9wbGF5RXZlbnRGbGFncyAmIGtXS0F1dG9wbGF5RXZlbnRGbGFn
c0hhc0F1ZGlvKTsKQEAgLTQ3Niw2ICs0ODksMTEgQEAgVEVTVChXZWJLaXQsIFdlYnNpdGVQb2xp
Y2llc1BsYXlpbmdXaXRoVXNlckdlc3R1cmUpCiBURVNUKFdlYktpdCwgV2Vic2l0ZVBvbGljaWVz
UGxheWluZ1dpdGhvdXRJbnRlcmZlcmVuY2UpCiB7CiAgICAgYXV0byBjb25maWd1cmF0aW9uID0g
YWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQorICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkuYWxsb3dzSW5saW5lTWVk
aWFQbGF5YmFjayA9IFlFUzsKKyAgICBjb25maWd1cmF0aW9uLmdldCgpLl9pbmxpbmVNZWRpYVBs
YXliYWNrUmVxdWlyZXNQbGF5c0lubGluZUF0dHJpYnV0ZSA9IE5POworI2VuZGlmCisKICAgICBh
dXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFt
ZTpOU01ha2VSZWN0KDAsIDAsIDMzNiwgMjc2KSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24u
Z2V0KCldKTsKIAogICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbQXV0b3BsYXlQb2xpY2ll
c0RlbGVnYXRlIGFsbG9jXSBpbml0XSk7CkBAIC00OTUsNiArNTEzLDExIEBAIFRFU1QoV2ViS2l0
LCBXZWJzaXRlUG9saWNpZXNQbGF5aW5nV2l0aG91dEludGVyZmVyZW5jZSkKIFRFU1QoV2ViS2l0
LCBXZWJzaXRlUG9saWNpZXNVc2VySW50ZXJmZXJlbmNlV2l0aFBsYXlpbmcpCiB7CiAgICAgYXV0
byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2Nd
IGluaXRdKTsKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIGNvbmZpZ3VyYXRpb24uZ2V0
KCkuYWxsb3dzSW5saW5lTWVkaWFQbGF5YmFjayA9IFlFUzsKKyAgICBjb25maWd1cmF0aW9uLmdl
dCgpLl9pbmxpbmVNZWRpYVBsYXliYWNrUmVxdWlyZXNQbGF5c0lubGluZUF0dHJpYnV0ZSA9IE5P
OworI2VuZGlmCisKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDMzNiwgMjc2KSBjb25maWd1cmF0
aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5T
KFtbQXV0b3BsYXlQb2xpY2llc0RlbGVnYXRlIGFsbG9jXSBpbml0XSk7CkBAIC01MTksOSArNTQy
LDE0IEBAIFRFU1QoV2ViS2l0LCBXZWJzaXRlUG9saWNpZXNVc2VySW50ZXJmZXJlbmNlV2l0aFBs
YXlpbmcpCiAgICAgW3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJwbGF5aW5nIl07CiAgICAgQVNT
RVJUX1RSVUUocmVjZWl2ZWRBdXRvcGxheUV2ZW50ID09IFdURjo6bnVsbG9wdCk7CiAKKyNpZiBQ
TEFURk9STShNQUMpCiAgICAgY29uc3QgTlNQb2ludCBtdXRlQnV0dG9uQ2xpY2tQb2ludCA9IE5T
TWFrZVBvaW50KDgwLCAyNTYpOwogICAgIFt3ZWJWaWV3IG1vdXNlRG93bkF0UG9pbnQ6bXV0ZUJ1
dHRvbkNsaWNrUG9pbnQgc2ltdWxhdGVQcmVzc3VyZTpOT107CiAgICAgW3dlYlZpZXcgbW91c2VV
cEF0UG9pbnQ6bXV0ZUJ1dHRvbkNsaWNrUG9pbnRdOworI2Vsc2UKKyAgICBbd2ViVmlldyBjbGlj
a09uRWxlbWVudElEOkAibXV0ZUJ1dHRvbiJdOworI2VuZGlmCisKICAgICBydW5VbnRpbFJlY2Vp
dmVzQXV0b3BsYXlFdmVudChrV0tBdXRvcGxheUV2ZW50VXNlckRpZEludGVyZmVyZVdpdGhQbGF5
YmFjayk7CiAgICAgQVNTRVJUX1RSVUUoKnJlY2VpdmVkQXV0b3BsYXlFdmVudEZsYWdzICYga1dL
QXV0b3BsYXlFdmVudEZsYWdzSGFzQXVkaW8pOwogCkBAIC01MzAsMTMgKzU1OCwxOSBAQCBURVNU
KFdlYktpdCwgV2Vic2l0ZVBvbGljaWVzVXNlckludGVyZmVyZW5jZVdpdGhQbGF5aW5nKQogICAg
IFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAicGxheWluZyJdOwogICAgIEFTU0VSVF9UUlVFKHJl
Y2VpdmVkQXV0b3BsYXlFdmVudCA9PSBXVEY6Om51bGxvcHQpOwogCisjaWYgUExBVEZPUk0oTUFD
KQogICAgIGNvbnN0IE5TUG9pbnQgcGxheUJ1dHRvbkNsaWNrUG9pbnQgPSBOU01ha2VQb2ludCgy
MCwgMjU2KTsKICAgICBbd2ViVmlldyBtb3VzZURvd25BdFBvaW50OnBsYXlCdXR0b25DbGlja1Bv
aW50IHNpbXVsYXRlUHJlc3N1cmU6Tk9dOwogICAgIFt3ZWJWaWV3IG1vdXNlVXBBdFBvaW50OnBs
YXlCdXR0b25DbGlja1BvaW50XTsKKyNlbHNlCisgICAgW3dlYlZpZXcgY2xpY2tPbkVsZW1lbnRJ
RDpAInBsYXlCdXR0b24iXTsKKyNlbmRpZgorCiAgICAgcnVuVW50aWxSZWNlaXZlc0F1dG9wbGF5
RXZlbnQoa1dLQXV0b3BsYXlFdmVudFVzZXJEaWRJbnRlcmZlcmVXaXRoUGxheWJhY2spOwogICAg
IEFTU0VSVF9UUlVFKCpyZWNlaXZlZEF1dG9wbGF5RXZlbnRGbGFncyAmIGtXS0F1dG9wbGF5RXZl
bnRGbGFnc0hhc0F1ZGlvKTsKIH0KIAorI2lmIFBMQVRGT1JNKE1BQykKIFRFU1QoV2ViS2l0LCBX
ZWJzaXRlUG9saWNpZXNXaXRoQnJpZGdpbmdDYXN0KQogewogICAgIGF1dG8gY29uZmlndXJhdGlv
biA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CkBAIC02
NzUsMTAgKzcwOSwxNiBAQCBURVNUKFdlYktpdCwgV2Vic2l0ZVBvbGljaWVzRHVyaW5nUmVkaXJl
Y3QpCiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVS
TDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAInRlc3Q6Ly8vc2hvdWxkLXJlZGlyZWN0Il1dXTsKICAg
ICBbd2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpAImF1dG9wbGF5ZWQiXTsKIH0KKyNlbmRpZiAvLyBQ
TEFURk9STShNQUMpCiAKIFRFU1QoV2ViS2l0LCBXZWJzaXRlUG9saWNpZXNVcGRhdGVzKQogewog
ICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9u
IGFsbG9jXSBpbml0XSk7CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBjb25maWd1cmF0
aW9uLmdldCgpLmFsbG93c0lubGluZU1lZGlhUGxheWJhY2sgPSBZRVM7CisgICAgY29uZmlndXJh
dGlvbi5nZXQoKS5faW5saW5lTWVkaWFQbGF5YmFja1JlcXVpcmVzUGxheXNJbmxpbmVBdHRyaWJ1
dGUgPSBOTzsKKyNlbmRpZgorCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dl
YlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29u
ZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAgICAgYXV0byBkZWxlZ2F0ZSA9IGFk
b3B0TlMoW1tBdXRvcGxheVBvbGljaWVzRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKICAgICBbd2Vi
VmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwpAQCAtNzE1LDE1ICs3
NTUsMTcgQEAgVEVTVChXZWJLaXQsIFdlYnNpdGVQb2xpY2llc1VwZGF0ZXMpCiBURVNUKFdlYktp
dCwgV2Vic2l0ZVBvbGljaWVzQXJiaXRyYXJ5VXNlckdlc3R1cmVRdWlyaykKIHsKICAgICBhdXRv
IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10g
aW5pdF0pOworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgY29uZmlndXJhdGlvbi5nZXQo
KS5hbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrID0gWUVTOworICAgIGNvbmZpZ3VyYXRpb24uZ2V0
KCkuX2lubGluZU1lZGlhUGxheWJhY2tSZXF1aXJlc1BsYXlzSW5saW5lQXR0cmlidXRlID0gTk87
CisjZW5kaWYKKyAgICBbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10uX25lZWRzU2l0ZVNwZWNp
ZmljUXVpcmtzID0gWUVTOworCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dl
YlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29u
ZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBhdXRvIGRlbGVnYXRlID0g
YWRvcHROUyhbW0F1dG9wbGF5UG9saWNpZXNEZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwogICAgIFt3
ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CiAKLSAgICBXS1Jl
dGFpblB0cjxXS1ByZWZlcmVuY2VzUmVmPiBwcmVmZXJlbmNlcyA9IGFkb3B0V0soV0tQcmVmZXJl
bmNlc0NyZWF0ZSgpKTsKLSAgICBXS1ByZWZlcmVuY2VzU2V0TmVlZHNTaXRlU3BlY2lmaWNRdWly
a3MocHJlZmVyZW5jZXMuZ2V0KCksIHRydWUpOwotICAgIFdLUGFnZUdyb3VwU2V0UHJlZmVyZW5j
ZXMoV0tQYWdlR2V0UGFnZUdyb3VwKFt3ZWJWaWV3IF9wYWdlRm9yVGVzdGluZ10pLCBwcmVmZXJl
bmNlcy5nZXQoKSk7Ci0KICAgICBbZGVsZWdhdGUgc2V0QWxsb3dlZEF1dG9wbGF5UXVpcmtzRm9y
VVJMOl5fV0tXZWJzaXRlQXV0b3BsYXlRdWlyayhOU1VSTCAqdXJsKQogICAgIHsKICAgICAgICAg
cmV0dXJuIF9XS1dlYnNpdGVBdXRvcGxheVF1aXJrQXJiaXRyYXJ5VXNlckdlc3R1cmVzOwpAQCAt
NzM3LDI2ICs3NzksMzAgQEAgVEVTVChXZWJLaXQsIFdlYnNpdGVQb2xpY2llc0FyYml0cmFyeVVz
ZXJHZXN0dXJlUXVpcmspCiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CiAgICAg
W3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJkaWQtbm90LXBsYXkiXTsKIAotICAgIGNvbnN0IE5T
UG9pbnQgY2xpY2tQb2ludCA9IE5TTWFrZVBvaW50KDc2MCwgNTYwKTsKLSAgICBbd2ViVmlldyBt
b3VzZURvd25BdFBvaW50OmNsaWNrUG9pbnQgc2ltdWxhdGVQcmVzc3VyZTpOT107Ci0gICAgW3dl
YlZpZXcgbW91c2VVcEF0UG9pbnQ6Y2xpY2tQb2ludF07Ci0KKyNpZiBQTEFURk9STShNQUMpCisg
ICAgW3dlYlZpZXcgY2xpY2tPblBvaW50Ok5TTWFrZVBvaW50KDc2MCwgNTYwKV07CiAgICAgW3dl
YlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInBsYXlWaWRlbygpIl07CisjZWxz
ZQorICAgIFt3ZWJWaWV3IGNsaWNrT25Qb2ludDpOU01ha2VQb2ludCgxNSwgMTcwKV07CisgICAg
W3dlYlZpZXcgcGVyZm9ybVNlbGVjdG9yOkBzZWxlY3RvcihzdHJpbmdCeUV2YWx1YXRpbmdKYXZh
U2NyaXB0Oikgd2l0aE9iamVjdDpAInBsYXlWaWRlbygpIiBhZnRlckRlbGF5OjAuMV07CisjZW5k
aWYKICAgICBbd2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpAImF1dG9wbGF5ZWQiXTsKIH0KIAogVEVT
VChXZWJLaXQsIFdlYnNpdGVQb2xpY2llc0F1dG9wbGF5UXVpcmtzKQogewogICAgIGF1dG8gY29u
ZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0
XSk7CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBjb25maWd1cmF0aW9uLmdldCgpLmFs
bG93c0lubGluZU1lZGlhUGxheWJhY2sgPSBZRVM7CisgICAgY29uZmlndXJhdGlvbi5nZXQoKS5f
aW5saW5lTWVkaWFQbGF5YmFja1JlcXVpcmVzUGxheXNJbmxpbmVBdHRyaWJ1dGUgPSBOTzsKKyNl
bmRpZgorICAgIFtjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXS5fbmVlZHNTaXRlU3BlY2lmaWNR
dWlya3MgPSBZRVM7CisKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1
cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9w
dE5TKFtbQXV0b3BsYXlQb2xpY2llc0RlbGVnYXRlIGFsbG9jXSBpbml0XSk7CiAgICAgW3dlYlZp
ZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKIAotICAgIFdLUmV0YWlu
UHRyPFdLUHJlZmVyZW5jZXNSZWY+IHByZWZlcmVuY2VzID0gYWRvcHRXSyhXS1ByZWZlcmVuY2Vz
Q3JlYXRlKCkpOwotICAgIFdLUHJlZmVyZW5jZXNTZXROZWVkc1NpdGVTcGVjaWZpY1F1aXJrcyhw
cmVmZXJlbmNlcy5nZXQoKSwgdHJ1ZSk7Ci0gICAgV0tQYWdlR3JvdXBTZXRQcmVmZXJlbmNlcyhX
S1BhZ2VHZXRQYWdlR3JvdXAoW3dlYlZpZXcgX3BhZ2VGb3JUZXN0aW5nXSksIHByZWZlcmVuY2Vz
LmdldCgpKTsKLQogICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdFdpdGhBdWRpbyA9IFtOU1VSTFJl
cXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJj
ZTpAImF1dG9wbGF5LWNoZWNrIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAi
VGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV07CiAKICAgICBbZGVsZWdhdGUgc2V0QWxsb3dlZEF1
dG9wbGF5UXVpcmtzRm9yVVJMOl5fV0tXZWJzaXRlQXV0b3BsYXlRdWlyayhOU1VSTCAqdXJsKSB7
CkBAIC03OTUsMjYgKzg0MSwzMCBAQCBURVNUKFdlYktpdCwgV2Vic2l0ZVBvbGljaWVzQXV0b3Bs
YXlRdWlya3MpCiAgICAgW3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJsb2FkZWQiXTsKIAogICAg
IC8vIENsaWNrIGluIHRoZSBkb2N1bWVudCwgYnV0IG5vdCBpbiB0aGUgbWVkaWEgZWxlbWVudC4K
LSAgICBjb25zdCBOU1BvaW50IGNsaWNrUG9pbnQgPSBOU01ha2VQb2ludCg3NjAsIDU2MCk7Ci0g
ICAgW3dlYlZpZXcgbW91c2VEb3duQXRQb2ludDpjbGlja1BvaW50IHNpbXVsYXRlUHJlc3N1cmU6
Tk9dOwotICAgIFt3ZWJWaWV3IG1vdXNlVXBBdFBvaW50OmNsaWNrUG9pbnRdOwotCisjaWYgUExB
VEZPUk0oTUFDKQorICAgIFt3ZWJWaWV3IGNsaWNrT25Qb2ludDpOU01ha2VQb2ludCg3NjAsIDU2
MCldOwogICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJwbGF5KCki
XTsKKyNlbHNlCisgICAgW3dlYlZpZXcgY2xpY2tPblBvaW50Ok5TTWFrZVBvaW50KDE1LCAxNzAp
XTsKKyAgICBbd2ViVmlldyBwZXJmb3JtU2VsZWN0b3I6QHNlbGVjdG9yKHN0cmluZ0J5RXZhbHVh
dGluZ0phdmFTY3JpcHQ6KSB3aXRoT2JqZWN0OkAicGxheSgpIiBhZnRlckRlbGF5OjAuMV07Cisj
ZW5kaWYKKwogICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAicGxheWluZyJdOwogfQogCiBU
RVNUKFdlYktpdCwgV2Vic2l0ZVBvbGljaWVzUGVyRG9jdW1lbnRBdXRvcGxheUJlaGF2aW9yUXVp
cmtzKQogewogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25m
aWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBj
b25maWd1cmF0aW9uLmdldCgpLmFsbG93c0lubGluZU1lZGlhUGxheWJhY2sgPSBZRVM7CisgICAg
Y29uZmlndXJhdGlvbi5nZXQoKS5faW5saW5lTWVkaWFQbGF5YmFja1JlcXVpcmVzUGxheXNJbmxp
bmVBdHRyaWJ1dGUgPSBOTzsKKyNlbmRpZgorICAgIFtjb25maWd1cmF0aW9uIHByZWZlcmVuY2Vz
XS5fbmVlZHNTaXRlU3BlY2lmaWNRdWlya3MgPSBZRVM7CiAgICAgYXV0byB3ZWJWaWV3ID0gYWRv
cHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAw
LCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBh
dXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW0F1dG9wbGF5UG9saWNpZXNEZWxlZ2F0ZSBhbGxvY10g
aW5pdF0pOwogICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQo
KV07CiAKLSAgICBXS1JldGFpblB0cjxXS1ByZWZlcmVuY2VzUmVmPiBwcmVmZXJlbmNlcyA9IGFk
b3B0V0soV0tQcmVmZXJlbmNlc0NyZWF0ZSgpKTsKLSAgICBXS1ByZWZlcmVuY2VzU2V0TmVlZHNT
aXRlU3BlY2lmaWNRdWlya3MocHJlZmVyZW5jZXMuZ2V0KCksIHRydWUpOwotICAgIFdLUGFnZUdy
b3VwU2V0UHJlZmVyZW5jZXMoV0tQYWdlR2V0UGFnZUdyb3VwKFt3ZWJWaWV3IF9wYWdlRm9yVGVz
dGluZ10pLCBwcmVmZXJlbmNlcy5nZXQoKSk7Ci0KICAgICByZWNlaXZlZEF1dG9wbGF5RXZlbnQg
PSBXVEY6Om51bGxvcHQ7CiAKICAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3RXaXRoTXVsdGlwbGVN
ZWRpYUVsZW1lbnRzID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1h
aW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAiYXV0b3BsYXlpbmctbXVsdGlwbGUtbWVkaWEtZWxl
bWVudHMiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJ
LnJlc291cmNlcyJdXTsKQEAgLTgzMyw5ICs4ODMsMTIgQEAgVEVTVChXZWJLaXQsIFdlYnNpdGVQ
b2xpY2llc1BlckRvY3VtZW50QXV0b3BsYXlCZWhhdmlvclF1aXJrcykKICAgICBbd2ViVmlldyB3
YWl0Rm9yTWVzc2FnZTpAImRpZC1ub3QtcGxheS12aWRlbzEiXTsKIAogICAgIC8vIE5vdyB0cnkg
YWdhaW4gd2l0aCBhIHVzZXIgZ2VzdHVyZS4uLgorI2lmIFBMQVRGT1JNKE1BQykKICAgICBjb25z
dCBOU1BvaW50IHBsYXlCdXR0b25DbGlja1BvaW50ID0gTlNNYWtlUG9pbnQoMjAsIDU4MCk7Ci0g
ICAgW3dlYlZpZXcgbW91c2VEb3duQXRQb2ludDpwbGF5QnV0dG9uQ2xpY2tQb2ludCBzaW11bGF0
ZVByZXNzdXJlOk5PXTsKLSAgICBbd2ViVmlldyBtb3VzZVVwQXRQb2ludDpwbGF5QnV0dG9uQ2xp
Y2tQb2ludF07CisjZWxzZQorICAgIGNvbnN0IE5TUG9pbnQgcGxheUJ1dHRvbkNsaWNrUG9pbnQg
PSBOU01ha2VQb2ludCgxNSwgMTUpOworI2VuZGlmCisgICAgW3dlYlZpZXcgY2xpY2tPblBvaW50
OnBsYXlCdXR0b25DbGlja1BvaW50XTsKICAgICBbd2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpAImRp
ZC1wbGF5LXZpZGVvMSJdOwogCiAgICAgLy8gTm93IHZpZGVvMiBzaG91bGQgYWxzbyBiZSBhbGxv
d2VkIHRvIGF1dG9wbGF5IHdpdGhvdXQgYSB1c2VyIGdlc3R1cmUgYmVjYXVzZSBvZiB0aGUgcXVp
cmsuCkBAIC04NTcsOCArOTEwLDcgQEAgVEVTVChXZWJLaXQsIFdlYnNpdGVQb2xpY2llc1BlckRv
Y3VtZW50QXV0b3BsYXlCZWhhdmlvclF1aXJrcykKICAgICBbd2ViVmlldyB3YWl0Rm9yTWVzc2Fn
ZTpAImRpZC1ub3QtcGxheS12aWRlbzEiXTsKIAogICAgIC8vIE5vdyB0cnkgYWdhaW4gd2l0aCBh
IHVzZXIgZ2VzdHVyZS4uLgotICAgIFt3ZWJWaWV3IG1vdXNlRG93bkF0UG9pbnQ6cGxheUJ1dHRv
bkNsaWNrUG9pbnQgc2ltdWxhdGVQcmVzc3VyZTpOT107Ci0gICAgW3dlYlZpZXcgbW91c2VVcEF0
UG9pbnQ6cGxheUJ1dHRvbkNsaWNrUG9pbnRdOworICAgIFt3ZWJWaWV3IGNsaWNrT25Qb2ludDpw
bGF5QnV0dG9uQ2xpY2tQb2ludF07CiAgICAgW3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJkaWQt
cGxheS12aWRlbzEiXTsKIAogICAgIC8vIE5vdyB2aWRlbzIgc2hvdWxkIG5vdCBiZSBhbGxvd2Vk
IHRvIGF1dG9wbGF5IHdpdGhvdXQgYSB1c2VyIGdlc3R1cmUuCkBAIC04NjksMTUgKzkyMSwxNiBA
QCBURVNUKFdlYktpdCwgV2Vic2l0ZVBvbGljaWVzUGVyRG9jdW1lbnRBdXRvcGxheUJlaGF2aW9y
UXVpcmtzKQogVEVTVChXZWJLaXQsIFdlYnNpdGVQb2xpY2llc0F1dG9wbGF5UXVpcmtzQXN5bmNQ
b2xpY3lEZWxlZ2F0ZSkKIHsKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCisgICAgY29uZmlndXJhdGlvbi5nZXQoKS5hbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrID0g
WUVTOworICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkuX2lubGluZU1lZGlhUGxheWJhY2tSZXF1aXJl
c1BsYXlzSW5saW5lQXR0cmlidXRlID0gTk87CisjZW5kaWYKKyAgICBbY29uZmlndXJhdGlvbiBw
cmVmZXJlbmNlc10uX25lZWRzU2l0ZVNwZWNpZmljUXVpcmtzID0gWUVTOwogICAgIGF1dG8gd2Vi
VmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFr
ZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0p
OwogCiAgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tBc3luY0F1dG9wbGF5UG9saWNpZXNE
ZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwogICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0
ZTpkZWxlZ2F0ZS5nZXQoKV07CiAKLSAgICBXS1JldGFpblB0cjxXS1ByZWZlcmVuY2VzUmVmPiBw
cmVmZXJlbmNlcyA9IGFkb3B0V0soV0tQcmVmZXJlbmNlc0NyZWF0ZSgpKTsKLSAgICBXS1ByZWZl
cmVuY2VzU2V0TmVlZHNTaXRlU3BlY2lmaWNRdWlya3MocHJlZmVyZW5jZXMuZ2V0KCksIHRydWUp
OwotICAgIFdLUGFnZUdyb3VwU2V0UHJlZmVyZW5jZXMoV0tQYWdlR2V0UGFnZUdyb3VwKFt3ZWJW
aWV3IF9wYWdlRm9yVGVzdGluZ10pLCBwcmVmZXJlbmNlcy5nZXQoKSk7Ci0KICAgICBOU1VSTFJl
cXVlc3QgKnJlcXVlc3RXaXRoQXVkaW8gPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltb
TlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJhdXRvcGxheS1jaGVjayIgd2l0
aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2Vz
Il1dOwogCiAgICAgW2RlbGVnYXRlIHNldEFsbG93ZWRBdXRvcGxheVF1aXJrc0ZvclVSTDpeX1dL
V2Vic2l0ZUF1dG9wbGF5UXVpcmsoTlNVUkwgKnVybCkgewpAQCAtOTA4LDcgKzk2MSw2IEBAIFRF
U1QoV2ViS2l0LCBXZWJzaXRlUG9saWNpZXNBdXRvcGxheVF1aXJrc0FzeW5jUG9saWN5RGVsZWdh
dGUpCiAgICAgW3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJkaWQtbm90LXBsYXkiXTsKICAgICBb
d2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpAIm9uLXBhdXNlIl07CiB9Ci0jZW5kaWYgLy8gUExBVEZP
Uk0oTUFDKQogCiBURVNUKFdlYktpdCwgSW52YWxpZEN1c3RvbUhlYWRlcnMpCiB7CmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL2F1ZGlvLXdpdGgtcGxh
eS1idXR0b24uaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvYXVk
aW8td2l0aC1wbGF5LWJ1dHRvbi5odG1sCmluZGV4IDdmM2VkZTVlZmYxZjdjMDU4OThhMmM1Mzlh
YTNiNDE0ZjI3MDM4YmEuLmI5OTA1MzExYzRjMjViNTQ0OWEyNzc5MmUzN2NlNTEwYzA0OGYzNTcg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvYXVkaW8t
d2l0aC1wbGF5LWJ1dHRvbi5odG1sCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvYXVkaW8td2l0aC1wbGF5LWJ1dHRvbi5odG1sCkBAIC0yMSw3ICsyMSw3IEBACiAg
ICAgICAgIDwvc2NyaXB0PgogICAgIDwvaGVhZD4KICAgICA8Ym9keSBvbmxvYWQ9InBhZ2VMb2Fk
ZWQoKSI+Ci0gICAgICAgIDxidXR0b24gb25jbGljaz0icGxheSgpIj5QbGF5PC9idXR0b24+Cisg
ICAgICAgIDxidXR0b24gaWQ9InBsYXlCdXR0b24iIG9uY2xpY2s9InBsYXkoKSI+UGxheTwvYnV0
dG9uPgogICAgICAgICA8YnIgLz4KICAgICAgICAgPGF1ZGlvIGNvbnRyb2xzIGlkPSJhdWRpbyIg
b25wbGF5aW5nPSJiZWdhblBsYXlpbmcoKSIgc3JjPSJzaWxlbmNlLWxvbmcubTRhIiAvPgogICAg
IDwvYm9keT4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvYXV0b3BsYXlpbmctbXVsdGlwbGUtbWVkaWEtZWxlbWVudHMuaHRtbCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvYXV0b3BsYXlpbmctbXVsdGlwbGUtbWVkaWEtZWxl
bWVudHMuaHRtbAppbmRleCA3Mjk2NWMwNDliMmQ4ZTQ0OTEyNDIxNjNmZjcwMzg0YTkxYWJiZWFh
Li5mZmJlMDFjNmRhMGU2MzNiY2JlMTA5ZWZmYmUyNGMxZjEyZjI3Mzg4IDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL2F1dG9wbGF5aW5nLW11bHRpcGxl
LW1lZGlhLWVsZW1lbnRzLmh0bWwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9hdXRvcGxheWluZy1tdWx0aXBsZS1tZWRpYS1lbGVtZW50cy5odG1sCkBAIC0yNiw3
ICsyNiw3IEBACiAgICA8L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5IG9ubG9hZD0icGFnZUxvYWRl
ZCgpIj4KLSAgICA8YnV0dG9uIG9uY2xpY2s9InBsYXlWaWRlbygndmlkZW8xJykiPlBsYXkgVmlk
ZW8gMTwvYnV0dG9uPgorICAgIDxidXR0b24gaWQ9InBsYXlCdXR0b24iIG9uY2xpY2s9InBsYXlW
aWRlbygndmlkZW8xJykiPlBsYXkgVmlkZW8gMTwvYnV0dG9uPgogICAgIDxiciAvPgogICAgIDx2
aWRlbyBpZD0idmlkZW8xIiBvbnBsYXlpbmc9ImRpZFBsYXlWaWRlbygndmlkZW8xJykiIHNyYz0i
dmlkZW8td2l0aC1hdWRpby5tcDQiPjwvdmlkZW8+CiAgICAgPHZpZGVvIGlkPSJ2aWRlbzIiIG9u
cGxheWluZz0iZGlkUGxheVZpZGVvKCd2aWRlbzInKSIgc3JjPSJ2aWRlby13aXRoLWF1ZGlvLm1w
NCI+PC92aWRlbz4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvdmlkZW8td2l0aC1wbGF5LWJ1dHRvbi5odG1sIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS92aWRlby13aXRoLXBsYXktYnV0dG9uLmh0bWwKaW5kZXggYzBhMWFi
MjZkOTY1ZGEwNzY5YjNhMTQ5OGYyNGI2MDA5OWJlNzg5Ni4uMzU4ZmFlNjI1M2U0NjZlZWVkOTZi
NWQwODBiYjEwYzdhYzU3MDgxNiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS92aWRlby13aXRoLXBsYXktYnV0dG9uLmh0bWwKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS92aWRlby13aXRoLXBsYXktYnV0dG9uLmh0bWwK
QEAgLTIxLDcgKzIxLDcgQEAKICAgICAgICAgPC9zY3JpcHQ+CiAgICAgPC9oZWFkPgogICAgIDxi
b2R5IG9ubG9hZD0icGFnZUxvYWRlZCgpIj4KLSAgICAgICAgPGJ1dHRvbiBvbmNsaWNrPSJwbGF5
KCkiPlBsYXk8L2J1dHRvbj4KKyAgICAgICAgPGJ1dHRvbiBpZD0icGxheUJ1dHRvbiIgb25jbGlj
az0icGxheSgpIj5QbGF5PC9idXR0b24+CiAgICAgICAgIDxiciAvPgogICAgICAgICA8dmlkZW8g
Y29udHJvbHMgaWQ9InZpZGVvIiBvbnBsYXlpbmc9ImJlZ2FuUGxheWluZygpIiBzcmM9Imxvbmct
dGVzdC5tcDQiPjwvdmlkZW8+CiAgICAgPC9ib2R5PgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3LmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29h
L1Rlc3RXS1dlYlZpZXcuaAppbmRleCAyNGE1YWNkZWZmZmZhODVkMzBjZmM0ZjdjZWYxMGZkMTJj
NWZlZjg0Li41NjcyNmRhOGM0NmUzYjQzNjFhNmZiNjBkYzNmMGJhZDA3NWM5NTM1IDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaApAQCAtODEsNiArODEsOCBAQAog
LSAodm9pZCljb2xsYXBzZVRvU3RhcnQ7CiAtICh2b2lkKWNvbGxhcHNlVG9FbmQ7CiAtICh2b2lk
KWFkZFRvVGVzdFdpbmRvdzsKKy0gKHZvaWQpY2xpY2tPbkVsZW1lbnRJRDooTlNTdHJpbmcgKill
bGVtZW50SUQ7CistICh2b2lkKWNsaWNrT25Qb2ludDooTlNQb2ludClwb2ludEluV2luZG93Owog
QGVuZAogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29j
b2EvVGVzdFdLV2ViVmlldy5tbQppbmRleCA2NTFiNWYyOWQxNjA4NTlmNThlOGY2N2U5YWQ1NWU5
NWJlNmI1MjY1Li5jODRhYjg2Njk0MmNhN2RmMjUzMWY5MDc0ZGJlOWU1MDE2OGYwMThjIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0KKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCkBAIC00NjcsNiArNDY3
LDIxIEBAIC0gKHZvaWQpY29sbGFwc2VUb0VuZAogICAgIFtzZWxmIGV2YWx1YXRlSmF2YVNjcmlw
dDpAImdldFNlbGVjdGlvbigpLmNvbGxhcHNlVG9FbmQoKSIgY29tcGxldGlvbkhhbmRsZXI6bmls
XTsKIH0KIAorLSAodm9pZCljbGlja09uRWxlbWVudElEOihOU1N0cmluZyAqKWVsZW1lbnRJRAor
eworICAgIFtzZWxmIGV2YWx1YXRlSmF2YVNjcmlwdDpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1h
dDpAImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCclQCcpLmNsaWNrKCk7IiwgZWxlbWVudElEXSBj
b21wbGV0aW9uSGFuZGxlcjpuaWxdOworfQorCistICh2b2lkKWNsaWNrT25Qb2ludDooTlNQb2lu
dClwb2ludEluV2luZG93Cit7CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBbc2VsZiBf
c2ltdWxhdGVUYXBBY3Rpb25BdExvY2F0aW9uOkNHUG9pbnRNYWtlKHBvaW50SW5XaW5kb3cueCwg
cG9pbnRJbldpbmRvdy55KV07CisjZWxzZQorICAgIFtzZWxmIG1vdXNlRG93bkF0UG9pbnQ6cG9p
bnRJbldpbmRvdyBzaW11bGF0ZVByZXNzdXJlOk5PXTsKKyAgICBbc2VsZiBtb3VzZVVwQXRQb2lu
dDpwb2ludEluV2luZG93XTsKKyNlbmRpZgorfQorCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
IAogLSAodm9pZClkaWRTdGFydEZvcm1Db250cm9sSW50ZXJhY3Rpb24K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>386845</attachid>
            <date>2020-01-06 07:20:53 -0800</date>
            <delta_ts>2020-01-14 15:54:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202214-20200106232051.patch</filename>
            <type>text/plain</type>
            <size>53223</size>
            <attacher name="Luming Yin">luming_yin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0MDUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGFkZGM4MmMxMWZmMDQw
MTA5MzhiNjc2NjY2ZGI3ZDUxZTEyMGMzMS4uMTJhNjM4MzExZDBmNjllMGRkZTg4ZDE2MGZlOTkx
MTIwMzg0ZWQ0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIwLTAxLTA2ICBMdW1p
bmcgWWluICA8bHVtaW5nX3lpbkBhcHBsZS5jb20+CisKKyAgICAgICAgVXBkYXRlIEFQSSBhdmFp
bGFiaWxpdHkgZm9yIGF1dG9wbGF5IGV2ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDIyMTQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU1NzEw
Mzk1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
cGFnZS9RdWlya3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UXVpcmtzOjpuZWVkc1BlckRvY3Vt
ZW50QXV0b3BsYXlCZWhhdmlvciBjb25zdCk6CisgICAgICAgIE1vdmUgdGhlIHBlci1kb2N1bWVu
dCBhdXRvcGxheSBxdWlyayBsaXN0IGZyb20gV2ViQ29yZSB0byBXZWJLaXQgY2xpZW50cyBmb3Ig
aU9TLgorCisgICAgICAgIChXZWJDb3JlOjpRdWlya3M6OnNob3VsZEF1dG9wbGF5Rm9yQXJiaXRy
YXJ5VXNlckdlc3R1cmUgY29uc3QpOgorICAgICAgICBBbGxvdyBjbGllbnRzIHRvIGNvbmZpZ3Vy
ZSBzaXRlcyB3aXRoIHF1aXJrcyB0aGF0IHdvdWxkIHJlcXVpcmUgYXJiaXRhcnkgdXNlciBnZXN0
dXJlIG9uIGlPUy4KKwogMjAyMC0wMS0wNiAgeW91ZW5uIGZhYmxldCAgPHlvdWVubkBhcHBsZS5j
b20+CiAKICAgICAgICAgSW1wbGVtZW50IFJUQyBWVEIgZW5jb2RlcnMgaW4gR1BVUHJvY2Vzcwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwppbmRleCBhMTkyZjg4ZDBkNDRkNmFiOGY2MTdjYzExM2QwYWFjOWMwOTZkNzVkLi5mMWMx
Y2Y0NTI4NDZjZTY0NWI5N2EzYzQ3Njc1ZTc3ODUwZTA1OTQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDQ1IEBACisyMDIwLTAxLTA2ICBMdW1pbmcgWWluICA8bHVtaW5nX3lpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgVXBkYXRlIEFQSSBhdmFpbGFiaWxpdHkgZm9yIGF1dG9wbGF5IGV2ZW50CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDIyMTQKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzU1NzEwMzk1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQ
cml2YXRlLmg6CisgICAgICAgIE1ha2UgZW51bXMgYW5kIFdLVUlEZWxlZ2F0ZSBtZXRob2QgcmVs
YXRlZCB0byBhdXRvcGxheSBldmVudCBhdmFpbGFibGUgb24gaU9TLgorCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmdJT1MuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdUZXN0aW5nSU9TLm1tOgorICAgICAgICAoLVtX
S1dlYlZpZXcgX3NpbXVsYXRlVGFwQWN0aW9uQXRMb2NhdGlvbjpdKToKKyAgICAgICAgUGx1bWJp
bmcgdG8gYWxsb3cgc2ltdWxhdGluZyB0YXBzIGluIEFQSSB0ZXN0cy4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VJ
RGVsZWdhdGUubW06CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OnNldERlbGVnYXRlKToK
KyAgICAgICAgKFdlYktpdDo6dG9XS0F1dG9wbGF5RXZlbnRGbGFncyk6CisgICAgICAgIChXZWJL
aXQ6OnRvV0tBdXRvcGxheUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6VUlD
bGllbnQ6OmhhbmRsZUF1dG9wbGF5RXZlbnQpOgorICAgICAgICBNYWtlIGRlbGVnYXRlIG1ldGhv
ZHMgcmVsYXRlZCB0byBhdXRvcGxheSBldmVudHMgYXZhaWxhYmxlIG9uIGlPUy4KKworICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXdJbnRlcmFjdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtfV0tNb2NrV2ViVG91Y2hFdmVudHNH
ZXN0dXJlUmVjb2duaXplciBpbml0V2l0aExvY2F0aW9uOl0pOgorICAgICAgICAoLVtXS0NvbnRl
bnRWaWV3IF9zaW11bGF0ZVRhcEFjdGlvbkF0TG9jYXRpb246XSk6CisgICAgICAgIFBsdW1iaW5n
IHRvIGFsbG93IHNpbXVsYXRpbmcgdGFwcyBpbiBBUEkgdGVzdHMuCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpzaW11bGF0ZVRhcCk6CisgICAgICAgIFNhbWUgYXMgYWJvdmUuCisKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3Mv
V2ViUGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2ltdWxhdGVUYXApOgor
ICAgICAgICBHZW5lcmF0ZSBhIHN5bnRoZXRpYyBjbGljayByZWdhcmRsZXNzIG9mIHRoZSBjdXJy
ZW50IGxheWVyIHRyZWUgdHJhbnNhY3Rpb24gSUQgdG8gZW5zdXJlIHN1Y2Nlc3NmdWwgdGFwIHNp
bXVsYXRpb24gd2l0aG91dCAKKyAgICAgICAgYW55IHByaW9yIHRhcHMgb3IgcmVwYWludHMuCisK
IDIwMjAtMDEtMDYgIHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAg
IEltcGxlbWVudCBSVEMgVlRCIGVuY29kZXJzIGluIEdQVVByb2Nlc3MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUXVpcmtzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUXVpcmtz
LmNwcAppbmRleCBhOTk4OGExODI1MDA5NzE4YTRkNDIyYTczM2VhOTNjZWZlZjY0YmJhLi5mNDUw
NzUwMWUyODMzYWZhYTA0ZjA4ZTc3NTEwZjdmNWJmMTM4ODRiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1F1aXJrcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9RdWlya3Mu
Y3BwCkBAIC0xMDEsMjIgKzEwMSwxOCBAQCBib29sIFF1aXJrczo6bmVlZHNTZWVraW5nU3VwcG9y
dERpc2FibGVkKCkgY29uc3QKIAogYm9vbCBRdWlya3M6Om5lZWRzUGVyRG9jdW1lbnRBdXRvcGxh
eUJlaGF2aW9yKCkgY29uc3QKIHsKLSNpZiBQTEFURk9STShNQUMpCiAgICAgQVNTRVJUKG1fZG9j
dW1lbnQgPT0gJm1fZG9jdW1lbnQtPnRvcERvY3VtZW50KCkpOwotICAgIHJldHVybiBuZWVkc1F1
aXJrcygpICYmIGFsbG93ZWRBdXRvcGxheVF1aXJrcygqbV9kb2N1bWVudCkuY29udGFpbnMoQXV0
b3BsYXlRdWlyazo6UGVyRG9jdW1lbnRBdXRvcGxheUJlaGF2aW9yKTsKLSNlbHNlCisgICAgYm9v
bCBuZWVkc1BlckRvY3VtZW50QmVoYXZpb3IgPSBuZWVkc1F1aXJrcygpICYmIGFsbG93ZWRBdXRv
cGxheVF1aXJrcygqbV9kb2N1bWVudCkuY29udGFpbnMoQXV0b3BsYXlRdWlyazo6UGVyRG9jdW1l
bnRBdXRvcGxheUJlaGF2aW9yKTsKKyNpZiBQTEFURk9STShJT1MpCiAgICAgYXV0byBob3N0ID0g
bV9kb2N1bWVudC0+dG9wRG9jdW1lbnQoKS51cmwoKS5ob3N0KCk7Ci0gICAgcmV0dXJuIGVxdWFs
TGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGhvc3QsICJuZXRmbGl4LmNvbSIpIHx8IGhvc3QuZW5k
c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgiLm5ldGZsaXguY29tIik7CisgICAgbmVlZHNQZXJEb2N1
bWVudEJlaGF2aW9yID0gbmVlZHNQZXJEb2N1bWVudEJlaGF2aW9yIHx8IGVxdWFsTGV0dGVyc0ln
bm9yaW5nQVNDSUlDYXNlKGhvc3QsICJuZXRmbGl4LmNvbSIpIHx8IGhvc3QuZW5kc1dpdGhJZ25v
cmluZ0FTQ0lJQ2FzZSgiLm5ldGZsaXguY29tIik7CiAjZW5kaWYKKyAgICByZXR1cm4gbmVlZHNQ
ZXJEb2N1bWVudEJlaGF2aW9yOwogfQogCiBib29sIFF1aXJrczo6c2hvdWxkQXV0b3BsYXlGb3JB
cmJpdHJhcnlVc2VyR2VzdHVyZSgpIGNvbnN0CiB7Ci0jaWYgUExBVEZPUk0oTUFDKQogICAgIHJl
dHVybiBuZWVkc1F1aXJrcygpICYmIGFsbG93ZWRBdXRvcGxheVF1aXJrcygqbV9kb2N1bWVudCku
Y29udGFpbnMoQXV0b3BsYXlRdWlyazo6QXJiaXRyYXJ5VXNlckdlc3R1cmVzKTsKLSNlbHNlCi0g
ICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCiB9CiAKIGJvb2wgUXVpcmtzOjpoYXNCcm9rZW5FbmNy
eXB0ZWRNZWRpYUFQSVN1cHBvcnRRdWlyaygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaAppbmRleCAyNTkw
NzhmZjVjMTQxZDRjMGRmZTJhODI2YWE0ODhhMmI5YTVkZjI3Li45YjgwZDViZWExNzdiOGRhYjM1
MzE4NTljYWY4MmExNTZjNzRiOWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmgKQEAgLTUwLDEzICs1MCw2IEBA
CiBAcHJvdG9jb2wgVUlEcmFnU2Vzc2lvbjsKIEBwcm90b2NvbCBVSURyb3BTZXNzaW9uOwogI2Vs
c2UKLXR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIF9XS0F1dG9wbGF5RXZlbnQpIHsKLSAgICBf
V0tBdXRvcGxheUV2ZW50RGlkUHJldmVudEZyb21BdXRvcGxheWluZywKLSAgICBfV0tBdXRvcGxh
eUV2ZW50RGlkUGxheU1lZGlhV2l0aFVzZXJHZXN0dXJlLAotICAgIF9XS0F1dG9wbGF5RXZlbnRE
aWRBdXRvcGxheU1lZGlhUGFzdFRocmVzaG9sZFdpdGhvdXRVc2VySW50ZXJmZXJlbmNlLAotICAg
IF9XS0F1dG9wbGF5RXZlbnRVc2VyRGlkSW50ZXJmZXJlV2l0aFBsYXliYWNrLAotfSBXS19BUElf
QVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKLQogdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwg
X1dLUmVzb3VyY2VMaW1pdCkgewogICAgIF9XS1Jlc291cmNlTGltaXRNZW1vcnksCiAgICAgX1dL
UmVzb3VyY2VMaW1pdENQVSwKQEAgLTY3LDE0ICs2MCwyMSBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJ
bnRlZ2VyLCBfV0tQbHVnSW5VbmF2YWlsYWJpbGl0eVJlYXNvbikgewogICAgIF9XS1BsdWdJblVu
YXZhaWxhYmlsaXR5UmVhc29uUGx1Z2luQ3Jhc2hlZCwKICAgICBfV0tQbHVnSW5VbmF2YWlsYWJp
bGl0eVJlYXNvbkluc2VjdXJlUGx1Z2luVmVyc2lvbgogfSBXS19BUElfQVZBSUxBQkxFKG1hY29z
KDEwLjEzLjQpKTsKKyNlbmRpZgorCit0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tBdXRv
cGxheUV2ZW50KSB7CisgICAgX1dLQXV0b3BsYXlFdmVudERpZFByZXZlbnRGcm9tQXV0b3BsYXlp
bmcsCisgICAgX1dLQXV0b3BsYXlFdmVudERpZFBsYXlNZWRpYVdpdGhVc2VyR2VzdHVyZSwKKyAg
ICBfV0tBdXRvcGxheUV2ZW50RGlkQXV0b3BsYXlNZWRpYVBhc3RUaHJlc2hvbGRXaXRob3V0VXNl
ckludGVyZmVyZW5jZSwKKyAgICBfV0tBdXRvcGxheUV2ZW50VXNlckRpZEludGVyZmVyZVdpdGhQ
bGF5YmFjaywKK30gV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSwgaW9zKFdLX0lPU19U
QkEpKTsKIAogdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIF9XS0F1dG9wbGF5RXZlbnRG
bGFncykgewogICAgIF9XS0F1dG9wbGF5RXZlbnRGbGFnc05vbmUgPSAwLAogICAgIF9XS0F1dG9w
bGF5RXZlbnRGbGFnc0hhc0F1ZGlvID0gMSA8PCAwLAogICAgIF9XS0F1dG9wbGF5RXZlbnRGbGFn
c1BsYXliYWNrV2FzUHJldmVudGVkID0gMSA8PCAxLAogICAgIF9XS0F1dG9wbGF5RXZlbnRGbGFn
c01lZGlhSXNNYWluQ29udGVudCA9IDEgPDwgMiwKLX0gV0tfQVBJX0FWQUlMQUJMRShtYWNvcygx
MC4xMy40KSk7Ci0jZW5kaWYKK30gV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSwgaW9z
KFdLX0lPU19UQkEpKTsKIAogdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dLRm9jdXNEaXJl
Y3Rpb24pIHsKICAgICBfV0tGb2N1c0RpcmVjdGlvbkJhY2t3YXJkLApAQCAtMTQwLDYgKzE0MCw4
IEBAIHN0cnVjdCBVSUVkZ2VJbnNldHM7CiAKIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAq
KXdlYlZpZXcgcnVuV2ViQXV0aGVudGljYXRpb25QYW5lbDooX1dLV2ViQXV0aGVudGljYXRpb25Q
YW5lbCAqKXBhbmVsIGluaXRpYXRlZEJ5RnJhbWU6KFdLRnJhbWVJbmZvICopZnJhbWUgY29tcGxl
dGlvbkhhbmRsZXI6KHZvaWQgKF4pKF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQpKWNv
bXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhX
S19JT1NfVEJBKSk7CiAKKy0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgaGFu
ZGxlQXV0b3BsYXlFdmVudDooX1dLQXV0b3BsYXlFdmVudClldmVudCB3aXRoRmxhZ3M6KF9XS0F1
dG9wbGF5RXZlbnRGbGFncylmbGFncyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpLCBp
b3MoV0tfSU9TX1RCQSkpOworCiAjaWYgVEFSR0VUX09TX0lQSE9ORQogLSAoQk9PTClfd2ViVmll
dzooV0tXZWJWaWV3ICopd2ViVmlldyBzaG91bGRJbmNsdWRlQXBwTGlua0FjdGlvbnNGb3JFbGVt
ZW50OihfV0tBY3RpdmF0ZWRFbGVtZW50SW5mbyAqKWVsZW1lbnQgV0tfQVBJX0FWQUlMQUJMRShp
b3MoOS4wKSk7CiAtIChOU0FycmF5ICopX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgYWN0
aW9uc0ZvckVsZW1lbnQ6KF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvICopZWxlbWVudCBkZWZhdWx0
QWN0aW9uczooTlNBcnJheTxfV0tFbGVtZW50QWN0aW9uICo+ICopZGVmYXVsdEFjdGlvbnM7CkBA
IC0yMTcsNyArMjE5LDYgQEAgc3RydWN0IFVJRWRnZUluc2V0czsKIC0gKHZvaWQpX3dlYlZpZXdE
aWRTY3JvbGw6KFdLV2ViVmlldyAqKXdlYlZpZXcgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4x
My40KSk7CiAtICh2b2lkKV93ZWJWaWV3UnVuTW9kYWw6KFdLV2ViVmlldyAqKXdlYlZpZXcgV0tf
QVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSk7CiAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZp
ZXcgKil3ZWJWaWV3IGRpZE5vdEhhbmRsZVdoZWVsRXZlbnQ6KE5TRXZlbnQgKilldmVudCBXS19B
UElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKLS0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmll
dyAqKXdlYlZpZXcgaGFuZGxlQXV0b3BsYXlFdmVudDooX1dLQXV0b3BsYXlFdmVudClldmVudCB3
aXRoRmxhZ3M6KF9XS0F1dG9wbGF5RXZlbnRGbGFncylmbGFncyBXS19BUElfQVZBSUxBQkxFKG1h
Y29zKDEwLjEzLjQpKTsKIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlk
Q2xpY2tBdXRvRmlsbEJ1dHRvbldpdGhVc2VySW5mbzooaWQgPE5TU2VjdXJlQ29kaW5nPil1c2Vy
SW5mbyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKIC0gKHZvaWQpX3dlYlZpZXc6
KFdLV2ViVmlldyAqKXdlYlZpZXcgZ2V0VG9vbGJhcnNBcmVWaXNpYmxlV2l0aENvbXBsZXRpb25I
YW5kbGVyOih2b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUo
bWFjb3MoMTAuMTMuNCkpOwogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBz
YXZlRGF0YVRvRmlsZTooTlNEYXRhICopZGF0YSBzdWdnZXN0ZWRGaWxlbmFtZTooTlNTdHJpbmcg
KilzdWdnZXN0ZWRGaWxlbmFtZSBtaW1lVHlwZTooTlNTdHJpbmcgKiltaW1lVHlwZSBvcmlnaW5h
dGluZ1VSTDooTlNVUkwgKil1cmwgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld1ByaXZh
dGVGb3JUZXN0aW5nSU9TLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2Vi
Vmlld1ByaXZhdGVGb3JUZXN0aW5nSU9TLmgKaW5kZXggMGYyZDU4YzM1NzM4MTM0ZWQ5MmQ1ODYz
NDg5MjQxMWMxNDlhM2Y5YS4uZmUzYWI4ZDNkZTI0MjkxOGVkM2M4MDQ2MjVlNzBkZTFlZjYyNDk0
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdQ
cml2YXRlRm9yVGVzdGluZ0lPUy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9p
b3MvV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmdJT1MuaApAQCAtNTMsNiArNTMsNyBAQAogLSAo
dm9pZClfZG9BZnRlclJlc2V0dGluZ1NpbmdsZVRhcEdlc3R1cmU6KGRpc3BhdGNoX2Jsb2NrX3Qp
YWN0aW9uOwogCiAtIChOU0RpY3Rpb25hcnkgKilfcHJvcGVydGllc09mTGF5ZXJXaXRoSUQ6KHVu
c2lnbmVkIGxvbmcgbG9uZylsYXllcklEOworLSAodm9pZClfc2ltdWxhdGVUYXBBY3Rpb25BdExv
Y2F0aW9uOihDR1BvaW50KWxvY2F0aW9uOwogLSAodm9pZClfc2ltdWxhdGVMb25nUHJlc3NBY3Rp
b25BdExvY2F0aW9uOihDR1BvaW50KWxvY2F0aW9uOwogLSAodm9pZClfc2ltdWxhdGVUZXh0RW50
ZXJlZDooTlNTdHJpbmcgKil0ZXh0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvaW9zL1dLV2ViVmlld1Rlc3RpbmdJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvaW9zL1dLV2ViVmlld1Rlc3RpbmdJT1MubW0KaW5kZXggM2IyYTAxZWE2Y2YxNmFj
NDY0NzZkNjIzNTAwZTVhZjY0OGMwNzc5NS4uNjM5MmM4NzQyNzc1MGU2YjJlYzY3YWMwNWI3ZTA5
MDcwOWVkYTcwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9X
S1dlYlZpZXdUZXN0aW5nSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9p
b3MvV0tXZWJWaWV3VGVzdGluZ0lPUy5tbQpAQCAtMzQsNiArMzQsNyBAQAogI2ltcG9ydCAiV0tX
ZWJWaWV3SU9TLmgiCiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKICNpbXBvcnQgIl9XS0FjdGl2
YXRlZEVsZW1lbnRJbmZvSW50ZXJuYWwuaCIKKyNpbXBvcnQgIl9XS1RvdWNoRXZlbnRHZW5lcmF0
b3IuaCIKIAogQGltcGxlbWVudGF0aW9uIFdLV2ViVmlldyAoV0tUZXN0aW5nSU9TKQogCkBAIC0y
MjMsNiArMjI0LDExIEBAIC0gKENHUmVjdClfZHJhZ0NhcmV0UmVjdAogI2VuZGlmCiB9CiAKKy0g
KHZvaWQpX3NpbXVsYXRlVGFwQWN0aW9uQXRMb2NhdGlvbjooQ0dQb2ludClsb2NhdGlvbgorewor
ICAgIFtfY29udGVudFZpZXcgX3NpbXVsYXRlVGFwQWN0aW9uQXRMb2NhdGlvbjpsb2NhdGlvbl07
Cit9CisKIC0gKHZvaWQpX3NpbXVsYXRlTG9uZ1ByZXNzQWN0aW9uQXRMb2NhdGlvbjooQ0dQb2lu
dClsb2NhdGlvbgogewogICAgIFtfY29udGVudFZpZXcgX3NpbXVsYXRlTG9uZ1ByZXNzQWN0aW9u
QXRMb2NhdGlvbjpsb2NhdGlvbl07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9VSURlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURl
bGVnYXRlLmgKaW5kZXggYzk0OThmOTkxMDdmNWQ0MTZmMzQ5NTA5YTZiZmI2YzIzMTBiZDkzOC4u
YTM1OTNhZGY0NGI4ZDM0YTdjNDYxYzZiMjkzMzJiYTk2ZjY3OTkyYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaApAQCAtMTAwLDYgKzEwMCw3IEBAIHByaXZh
dGU6CiAgICAgICAgIHZvaWQgcmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShXZWJQ
YWdlUHJveHkqLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYsIHVpbnQ2NF90IGN1cnJl
bnRRdW90YSwgdWludDY0X3QgdG90YWxCeXRlc05lZWRlZCwgRnVuY3Rpb248dm9pZCh1bnNpZ25l
ZCBsb25nIGxvbmcpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbDsKICAgICAgICAgdm9pZCBk
aWRSZXNpZ25JbnB1dEVsZW1lbnRTdHJvbmdQYXNzd29yZEFwcGVhcmFuY2UoV2ViUGFnZVByb3h5
JiwgQVBJOjpPYmplY3QqKSBmaW5hbDsKICAgICAgICAgYm9vbCB0YWtlRm9jdXMoV2ViUGFnZVBy
b3h5KiwgV0tGb2N1c0RpcmVjdGlvbikgZmluYWw7CisgICAgICAgIHZvaWQgaGFuZGxlQXV0b3Bs
YXlFdmVudChXZWJQYWdlUHJveHkmLCBXZWJDb3JlOjpBdXRvcGxheUV2ZW50LCBPcHRpb25TZXQ8
V2ViQ29yZTo6QXV0b3BsYXlFdmVudEZsYWdzPikgZmluYWw7CiAjaWYgUExBVEZPUk0oTUFDKQog
ICAgICAgICB2b2lkIHNob3dQYWdlKFdlYlBhZ2VQcm94eSopIGZpbmFsOwogICAgICAgICB2b2lk
IGZvY3VzKFdlYlBhZ2VQcm94eSopIGZpbmFsOwpAQCAtMTE2LDcgKzExNyw2IEBAIHByaXZhdGU6
CiAgICAgICAgIHZvaWQgZHJhd0hlYWRlcihXZWJQYWdlUHJveHkmLCBXZWJGcmFtZVByb3h5Jiwg
V2ViQ29yZTo6RmxvYXRSZWN0JiYpIGZpbmFsOwogICAgICAgICB2b2lkIGRyYXdGb290ZXIoV2Vi
UGFnZVByb3h5JiwgV2ViRnJhbWVQcm94eSYsIFdlYkNvcmU6OkZsb2F0UmVjdCYmKSBmaW5hbDsK
ICAgICAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVz
dChXZWJQYWdlUHJveHkmLCBBUEk6OlNlY3VyaXR5T3JpZ2luJiwgRnVuY3Rpb248dm9pZChib29s
KT4mJikgZmluYWw7Ci0gICAgICAgIHZvaWQgaGFuZGxlQXV0b3BsYXlFdmVudChXZWJQYWdlUHJv
eHkmLCBXZWJDb3JlOjpBdXRvcGxheUV2ZW50LCBPcHRpb25TZXQ8V2ViQ29yZTo6QXV0b3BsYXlF
dmVudEZsYWdzPikgZmluYWw7CiAgICAgICAgIHZvaWQgdW5hdmFpbGFibGVQbHVnaW5CdXR0b25D
bGlja2VkKFdlYlBhZ2VQcm94eSYsIFdLUGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb24sIEFQSTo6
RGljdGlvbmFyeSYpIGZpbmFsOwogICAgICAgICB2b2lkIG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50
KFdlYlBhZ2VQcm94eSYsIGNvbnN0IFdlYkhpdFRlc3RSZXN1bHREYXRhJiwgT3B0aW9uU2V0PFdl
YkV2ZW50OjpNb2RpZmllcj4sIEFQSTo6T2JqZWN0Kik7CiAgICAgICAgIHZvaWQgZGlkQ2xpY2tB
dXRvRmlsbEJ1dHRvbihXZWJQYWdlUHJveHkmLCBBUEk6Ok9iamVjdCopIGZpbmFsOwpAQCAtMTc2
LDYgKzE3Niw3IEBAIHByaXZhdGU6CiAgICAgICAgIGJvb2wgd2ViVmlld1JlcXVlc3RHZW9sb2Nh
dGlvblBlcm1pc3Npb25Gb3JGcmFtZURlY2lzaW9uSGFuZGxlciA6IDE7CiAgICAgICAgIGJvb2wg
d2ViVmlld0RpZFJlc2lnbklucHV0RWxlbWVudFN0cm9uZ1Bhc3N3b3JkQXBwZWFyYW5jZVdpdGhV
c2VySW5mbyA6IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld1Rha2VGb2N1cyA6IDE7CisgICAgICAg
IGJvb2wgd2ViVmlld0hhbmRsZUF1dG9wbGF5RXZlbnRXaXRoRmxhZ3MgOiAxOwogI2lmIFBMQVRG
T1JNKE1BQykKICAgICAgICAgYm9vbCBzaG93V2ViVmlldyA6IDE7CiAgICAgICAgIGJvb2wgZm9j
dXNXZWJWaWV3IDogMTsKQEAgLTE4Nyw3ICsxODgsNiBAQCBwcml2YXRlOgogICAgICAgICBib29s
IHdlYlZpZXdTZXRSZXNpemFibGUgOiAxOwogICAgICAgICBib29sIHdlYlZpZXdTZXRXaW5kb3dG
cmFtZSA6IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld0RpZE5vdEhhbmRsZVdoZWVsRXZlbnQgOiAx
OwotICAgICAgICBib29sIHdlYlZpZXdIYW5kbGVBdXRvcGxheUV2ZW50V2l0aEZsYWdzIDogMTsK
ICAgICAgICAgYm9vbCB3ZWJWaWV3VW5hdmFpbGFibGVQbHVnSW5CdXR0b25DbGlja2VkIDogMTsK
ICAgICAgICAgYm9vbCB3ZWJWaWV3RGlkQ2xpY2tBdXRvRmlsbEJ1dHRvbldpdGhVc2VySW5mbyA6
IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld0RyYXdIZWFkZXJJblJlY3RGb3JQYWdlV2l0aFRpdGxl
VVJMIDogMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVs
ZWdhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCmlu
ZGV4IGY5MTgxODY1NzM0YmRmZTRhZmRmMDA3MTVkODkyMDhjZDMwMTM1YTIuLjFlMmQ3ODIyNmYy
MTY0MjJhOWVkZWQwZmY5Mjk1OTgwMWJjNzI1YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQpAQCAtMTA5LDYgKzEwOSw3IEBAIHZvaWQgVUlEZWxlZ2F0
ZTo6c2V0RGVsZWdhdGUoaWQgPFdLVUlEZWxlZ2F0ZT4gZGVsZWdhdGUpCiAgICAgbV9kZWxlZ2F0
ZU1ldGhvZHMud2ViVmlld1JlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JGcmFtZURlY2lz
aW9uSGFuZGxlciA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJW
aWV3OnJlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JGcmFtZTpkZWNpc2lvbkhhbmRsZXI6
KV07CiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RpZFJlc2lnbklucHV0RWxlbWVudFN0
cm9uZ1Bhc3N3b3JkQXBwZWFyYW5jZVdpdGhVc2VySW5mbyA9IFtkZWxlZ2F0ZSByZXNwb25kc1Rv
U2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmRpZFJlc2lnbklucHV0RWxlbWVudFN0cm9uZ1Bh
c3N3b3JkQXBwZWFyYW5jZVdpdGhVc2VySW5mbzopXTsKICAgICBtX2RlbGVnYXRlTWV0aG9kcy53
ZWJWaWV3VGFrZUZvY3VzID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Io
X3dlYlZpZXc6dGFrZUZvY3VzOildOworICAgIG1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdIYW5k
bGVBdXRvcGxheUV2ZW50V2l0aEZsYWdzID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpA
c2VsZWN0b3IoX3dlYlZpZXc6aGFuZGxlQXV0b3BsYXlFdmVudDp3aXRoRmxhZ3M6KV07CiAKICNp
ZiBQTEFURk9STShNQUMpCiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMuc2hvd1dlYlZpZXcgPSBbZGVs
ZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfc2hvd1dlYlZpZXc6KV07CkBAIC0x
MjIsNyArMTIzLDYgQEAgdm9pZCBVSURlbGVnYXRlOjpzZXREZWxlZ2F0ZShpZCA8V0tVSURlbGVn
YXRlPiBkZWxlZ2F0ZSkKICAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3R2V0V2luZG93RnJh
bWVXaXRoQ29tcGxldGlvbkhhbmRsZXIgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3Rvcihfd2ViVmlldzpnZXRXaW5kb3dGcmFtZVdpdGhDb21wbGV0aW9uSGFuZGxlcjopXTsK
ICAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3U2V0V2luZG93RnJhbWUgPSBbZGVsZWdhdGUg
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpzZXRXaW5kb3dGcmFtZTopXTsK
ICAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3VW5hdmFpbGFibGVQbHVnSW5CdXR0b25DbGlj
a2VkID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6dW5h
dmFpbGFibGVQbHVnSW5CdXR0b25DbGlja2VkV2l0aFJlYXNvbjpwbHVnSW5JbmZvOildOwotICAg
IG1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdIYW5kbGVBdXRvcGxheUV2ZW50V2l0aEZsYWdzID0g
W2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6aGFuZGxlQXV0
b3BsYXlFdmVudDp3aXRoRmxhZ3M6KV07CiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0Rp
ZENsaWNrQXV0b0ZpbGxCdXR0b25XaXRoVXNlckluZm8gPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpkaWRDbGlja0F1dG9GaWxsQnV0dG9uV2l0aFVzZXJJ
bmZvOildOwogICAgIG1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdEcmF3SGVhZGVySW5SZWN0Rm9y
UGFnZVdpdGhUaXRsZVVSTCA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KF93ZWJWaWV3OmRyYXdIZWFkZXJJblJlY3Q6Zm9yUGFnZVdpdGhUaXRsZTpVUkw6KV07CiAgICAg
bV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RyYXdGb290ZXJJblJlY3RGb3JQYWdlV2l0aFRpdGxl
VVJMID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6ZHJh
d0Zvb3RlckluUmVjdDpmb3JQYWdlV2l0aFRpdGxlOlVSTDopXTsKQEAgLTQ4Niw2ICs0ODYsNDcg
QEAgYm9vbCBVSURlbGVnYXRlOjpVSUNsaWVudDo6dGFrZUZvY3VzKFdlYlBhZ2VQcm94eSosIFdL
Rm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uKQogICAgIHJldHVybiB0cnVlOwogfQogCitzdGF0aWMg
X1dLQXV0b3BsYXlFdmVudEZsYWdzIHRvV0tBdXRvcGxheUV2ZW50RmxhZ3MoT3B0aW9uU2V0PFdl
YkNvcmU6OkF1dG9wbGF5RXZlbnRGbGFncz4gZmxhZ3MpCit7CisgICAgX1dLQXV0b3BsYXlFdmVu
dEZsYWdzIHdrRmxhZ3MgPSBfV0tBdXRvcGxheUV2ZW50RmxhZ3NOb25lOworICAgIGlmIChmbGFn
cy5jb250YWlucyhXZWJDb3JlOjpBdXRvcGxheUV2ZW50RmxhZ3M6Okhhc0F1ZGlvKSkKKyAgICAg
ICAgd2tGbGFncyB8PSBfV0tBdXRvcGxheUV2ZW50RmxhZ3NIYXNBdWRpbzsKKyAgICBpZiAoZmxh
Z3MuY29udGFpbnMoV2ViQ29yZTo6QXV0b3BsYXlFdmVudEZsYWdzOjpQbGF5YmFja1dhc1ByZXZl
bnRlZCkpCisgICAgICAgIHdrRmxhZ3MgfD0gX1dLQXV0b3BsYXlFdmVudEZsYWdzUGxheWJhY2tX
YXNQcmV2ZW50ZWQ7CisgICAgaWYgKGZsYWdzLmNvbnRhaW5zKFdlYkNvcmU6OkF1dG9wbGF5RXZl
bnRGbGFnczo6TWVkaWFJc01haW5Db250ZW50KSkKKyAgICAgICAgd2tGbGFncyB8PSBfV0tBdXRv
cGxheUV2ZW50RmxhZ3NNZWRpYUlzTWFpbkNvbnRlbnQ7CisgICAgCisgICAgcmV0dXJuIHdrRmxh
Z3M7Cit9CisKK3N0YXRpYyBfV0tBdXRvcGxheUV2ZW50IHRvV0tBdXRvcGxheUV2ZW50KFdlYkNv
cmU6OkF1dG9wbGF5RXZlbnQgZXZlbnQpCit7CisgICAgc3dpdGNoIChldmVudCkgeworICAgIGNh
c2UgV2ViQ29yZTo6QXV0b3BsYXlFdmVudDo6RGlkUHJldmVudE1lZGlhRnJvbVBsYXlpbmc6Cisg
ICAgICAgIHJldHVybiBfV0tBdXRvcGxheUV2ZW50RGlkUHJldmVudEZyb21BdXRvcGxheWluZzsK
KyAgICBjYXNlIFdlYkNvcmU6OkF1dG9wbGF5RXZlbnQ6OkRpZFBsYXlNZWRpYVdpdGhVc2VyR2Vz
dHVyZToKKyAgICAgICAgcmV0dXJuIF9XS0F1dG9wbGF5RXZlbnREaWRQbGF5TWVkaWFXaXRoVXNl
ckdlc3R1cmU7CisgICAgY2FzZSBXZWJDb3JlOjpBdXRvcGxheUV2ZW50OjpEaWRBdXRvcGxheU1l
ZGlhUGFzdFRocmVzaG9sZFdpdGhvdXRVc2VySW50ZXJmZXJlbmNlOgorICAgICAgICByZXR1cm4g
X1dLQXV0b3BsYXlFdmVudERpZEF1dG9wbGF5TWVkaWFQYXN0VGhyZXNob2xkV2l0aG91dFVzZXJJ
bnRlcmZlcmVuY2U7CisgICAgY2FzZSBXZWJDb3JlOjpBdXRvcGxheUV2ZW50OjpVc2VyRGlkSW50
ZXJmZXJlV2l0aFBsYXliYWNrOgorICAgICAgICByZXR1cm4gX1dLQXV0b3BsYXlFdmVudFVzZXJE
aWRJbnRlcmZlcmVXaXRoUGxheWJhY2s7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIHJldHVybiBfV0tBdXRvcGxheUV2ZW50RGlkUGxheU1lZGlhV2l0aFVzZXJHZXN0dXJl
OworfQorCit2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpoYW5kbGVBdXRvcGxheUV2ZW50KFdl
YlBhZ2VQcm94eSYsIFdlYkNvcmU6OkF1dG9wbGF5RXZlbnQgZXZlbnQsIE9wdGlvblNldDxXZWJD
b3JlOjpBdXRvcGxheUV2ZW50RmxhZ3M+IGZsYWdzKQoreworICAgIGlmICghbV91aURlbGVnYXRl
Lm1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdIYW5kbGVBdXRvcGxheUV2ZW50V2l0aEZsYWdzKQor
ICAgICAgICByZXR1cm47CisgICAgCisgICAgYXV0byBkZWxlZ2F0ZSA9IG1fdWlEZWxlZ2F0ZS5t
X2RlbGVnYXRlLmdldCgpOworICAgIGlmICghZGVsZWdhdGUpCisgICAgICAgIHJldHVybjsKKyAg
ICAKKyAgICBbKGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPilkZWxlZ2F0ZSBfd2ViVmlldzptX3Vp
RGVsZWdhdGUubV93ZWJWaWV3IGhhbmRsZUF1dG9wbGF5RXZlbnQ6dG9XS0F1dG9wbGF5RXZlbnQo
ZXZlbnQpIHdpdGhGbGFnczp0b1dLQXV0b3BsYXlFdmVudEZsYWdzKGZsYWdzKV07Cit9CisKICNp
ZiBQTEFURk9STShNQUMpCiBib29sIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpjYW5SdW5Nb2RhbCgp
IGNvbnN0CiB7CkBAIC03MDQsMzUgKzc0NSw2IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6
Om1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KFdlYlBhZ2VQcm94eSYsIGNvbnN0IFdlYkhpdFRlCiAg
ICAgWyhpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4pZGVsZWdhdGUgX3dlYlZpZXc6bV91aURlbGVn
YXRlLm1fd2ViVmlldyBtb3VzZURpZE1vdmVPdmVyRWxlbWVudDp3cmFwcGVyKGFwaUhpdFRlc3RS
ZXN1bHQuZ2V0KCkpIHdpdGhGbGFnczpXZWJFdmVudEZhY3Rvcnk6OnRvTlNFdmVudE1vZGlmaWVy
RmxhZ3MobW9kaWZpZXJzKSB1c2VySW5mbzp1c2VySW5mbyA/IHN0YXRpY19jYXN0PGlkIDxOU1Nl
Y3VyZUNvZGluZz4+KHVzZXJJbmZvLT53cmFwcGVyKCkpIDogbmlsXTsKIH0KIAotc3RhdGljIF9X
S0F1dG9wbGF5RXZlbnRGbGFncyB0b1dLQXV0b3BsYXlFdmVudEZsYWdzKE9wdGlvblNldDxXZWJD
b3JlOjpBdXRvcGxheUV2ZW50RmxhZ3M+IGZsYWdzKQotewotICAgIF9XS0F1dG9wbGF5RXZlbnRG
bGFncyB3a0ZsYWdzID0gX1dLQXV0b3BsYXlFdmVudEZsYWdzTm9uZTsKLSAgICBpZiAoZmxhZ3Mu
Y29udGFpbnMoV2ViQ29yZTo6QXV0b3BsYXlFdmVudEZsYWdzOjpIYXNBdWRpbykpCi0gICAgICAg
IHdrRmxhZ3MgfD0gX1dLQXV0b3BsYXlFdmVudEZsYWdzSGFzQXVkaW87Ci0gICAgaWYgKGZsYWdz
LmNvbnRhaW5zKFdlYkNvcmU6OkF1dG9wbGF5RXZlbnRGbGFnczo6UGxheWJhY2tXYXNQcmV2ZW50
ZWQpKQotICAgICAgICB3a0ZsYWdzIHw9IF9XS0F1dG9wbGF5RXZlbnRGbGFnc1BsYXliYWNrV2Fz
UHJldmVudGVkOwotICAgIGlmIChmbGFncy5jb250YWlucyhXZWJDb3JlOjpBdXRvcGxheUV2ZW50
RmxhZ3M6Ok1lZGlhSXNNYWluQ29udGVudCkpCi0gICAgICAgIHdrRmxhZ3MgfD0gX1dLQXV0b3Bs
YXlFdmVudEZsYWdzTWVkaWFJc01haW5Db250ZW50OwotICAgIAotICAgIHJldHVybiB3a0ZsYWdz
OwotfQotCi1zdGF0aWMgX1dLQXV0b3BsYXlFdmVudCB0b1dLQXV0b3BsYXlFdmVudChXZWJDb3Jl
OjpBdXRvcGxheUV2ZW50IGV2ZW50KQotewotICAgIHN3aXRjaCAoZXZlbnQpIHsKLSAgICBjYXNl
IFdlYkNvcmU6OkF1dG9wbGF5RXZlbnQ6OkRpZFByZXZlbnRNZWRpYUZyb21QbGF5aW5nOgotICAg
ICAgICByZXR1cm4gX1dLQXV0b3BsYXlFdmVudERpZFByZXZlbnRGcm9tQXV0b3BsYXlpbmc7Ci0g
ICAgY2FzZSBXZWJDb3JlOjpBdXRvcGxheUV2ZW50OjpEaWRQbGF5TWVkaWFXaXRoVXNlckdlc3R1
cmU6Ci0gICAgICAgIHJldHVybiBfV0tBdXRvcGxheUV2ZW50RGlkUGxheU1lZGlhV2l0aFVzZXJH
ZXN0dXJlOwotICAgIGNhc2UgV2ViQ29yZTo6QXV0b3BsYXlFdmVudDo6RGlkQXV0b3BsYXlNZWRp
YVBhc3RUaHJlc2hvbGRXaXRob3V0VXNlckludGVyZmVyZW5jZToKLSAgICAgICAgcmV0dXJuIF9X
S0F1dG9wbGF5RXZlbnREaWRBdXRvcGxheU1lZGlhUGFzdFRocmVzaG9sZFdpdGhvdXRVc2VySW50
ZXJmZXJlbmNlOwotICAgIGNhc2UgV2ViQ29yZTo6QXV0b3BsYXlFdmVudDo6VXNlckRpZEludGVy
ZmVyZVdpdGhQbGF5YmFjazoKLSAgICAgICAgcmV0dXJuIF9XS0F1dG9wbGF5RXZlbnRVc2VyRGlk
SW50ZXJmZXJlV2l0aFBsYXliYWNrOwotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICByZXR1cm4gX1dLQXV0b3BsYXlFdmVudERpZFBsYXlNZWRpYVdpdGhVc2VyR2VzdHVyZTsK
LX0KLQogdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6dG9vbGJhcnNBcmVWaXNpYmxlKFdlYlBh
Z2VQcm94eSYsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAg
ICAgaWYgKCFtX3VpRGVsZWdhdGUubV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0dldFRvb2xiYXJz
QXJlVmlzaWJsZVdpdGhDb21wbGV0aW9uSGFuZGxlcikKQEAgLTc2MiwxOCArNzc0LDYgQEAgdm9p
ZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6ZGlkQ2xpY2tBdXRvRmlsbEJ1dHRvbihXZWJQYWdlUHJv
eHkmLCBBUEk6Ok9iamVjdCogdXMKICAgICBbKGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPilkZWxl
Z2F0ZSBfd2ViVmlldzptX3VpRGVsZWdhdGUubV93ZWJWaWV3IGRpZENsaWNrQXV0b0ZpbGxCdXR0
b25XaXRoVXNlckluZm86dXNlckluZm8gPyBzdGF0aWNfY2FzdDxpZCA8TlNTZWN1cmVDb2Rpbmc+
Pih1c2VySW5mby0+d3JhcHBlcigpKSA6IG5pbF07CiB9CiAKLXZvaWQgVUlEZWxlZ2F0ZTo6VUlD
bGllbnQ6OmhhbmRsZUF1dG9wbGF5RXZlbnQoV2ViUGFnZVByb3h5JiwgV2ViQ29yZTo6QXV0b3Bs
YXlFdmVudCBldmVudCwgT3B0aW9uU2V0PFdlYkNvcmU6OkF1dG9wbGF5RXZlbnRGbGFncz4gZmxh
Z3MpCi17Ci0gICAgaWYgKCFtX3VpRGVsZWdhdGUubV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0hh
bmRsZUF1dG9wbGF5RXZlbnRXaXRoRmxhZ3MpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBh
dXRvIGRlbGVnYXRlID0gbV91aURlbGVnYXRlLm1fZGVsZWdhdGUuZ2V0KCk7Ci0gICAgaWYgKCFk
ZWxlZ2F0ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIFsoaWQgPFdLVUlEZWxlZ2F0ZVBy
aXZhdGU+KWRlbGVnYXRlIF93ZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcgaGFuZGxlQXV0
b3BsYXlFdmVudDp0b1dLQXV0b3BsYXlFdmVudChldmVudCkgd2l0aEZsYWdzOnRvV0tBdXRvcGxh
eUV2ZW50RmxhZ3MoZmxhZ3MpXTsKLX0KLQogdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6c2hv
d1BhZ2UoV2ViUGFnZVByb3h5KikKIHsKICAgICBpZiAoIW1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRl
TWV0aG9kcy5zaG93V2ViVmlldykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
aW5kZXggNzdmYzA0NTg3Y2Q5OWMzNGRmZDVkZjY2YjEyN2MyYWFmZDRjNjg0ZS4uODM0MTk0MjBm
MTFlMjY4YzBkOWY5M2UzNDRkYjVjNGI1ZjE2MjdlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKQEAgLTEyNzUsNiArMTI3NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNv
bW1pdFBvdGVudGlhbFRhcChPcHRpb25TZXQ8V2ViS2l0OjpXZWJFdmVudDo6TW9kaWZpZXI+LCBU
cmFuc2FjdGlvbklEIGxheWVyVHJlZVRyYW5zYWN0aW9uSWRBdExhc3RUb3VjaFN0YXJ0LCBXZWJD
b3JlOjpQb2ludGVySUQpOwogICAgIHZvaWQgY2FuY2VsUG90ZW50aWFsVGFwKCk7CiAgICAgdm9p
ZCB0YXBIaWdobGlnaHRBdFBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmLCB1aW50
NjRfdCYgcmVxdWVzdElEKTsKKyAgICB2b2lkIHNpbXVsYXRlVGFwKGNvbnN0IFdlYkNvcmU6OkZs
b2F0UG9pbnQmLCBPcHRpb25TZXQ8V2ViS2l0OjpXZWJFdmVudDo6TW9kaWZpZXI+KTsKICAgICB2
b2lkIGhhbmRsZVRhcChjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiwgT3B0aW9uU2V0PFdlYktp
dDo6V2ViRXZlbnQ6Ok1vZGlmaWVyPiwgVHJhbnNhY3Rpb25JRCBsYXllclRyZWVUcmFuc2FjdGlv
bklkQXRMYXN0VG91Y2hTdGFydCk7CiAgICAgdm9pZCBkaWRSZWNvZ25pemVMb25nUHJlc3MoKTsK
ICAgICB2b2lkIGhhbmRsZURvdWJsZVRhcEZvckRvdWJsZUNsaWNrQXRQb2ludChjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYsIE9wdGlvblNldDxXZWJFdmVudDo6TW9kaWZpZXI+LCBUcmFuc2FjdGlv
bklEIGxheWVyVHJlZVRyYW5zYWN0aW9uSWRBdExhc3RUb3VjaFN0YXJ0KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaApp
bmRleCA3ZjE5NzBlNjRiOGM2ZDVjNmFkMTk2Mjc1NTJmMjA3M2JjOTEwOTg3Li5iYzEwOTgxNzkx
ZWM3MWZhZjU4ZGJmNWNhZTI4NzAxNjc5NGZmYTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCkBAIC01NzEsNiAr
NTcxLDcgQEAgRk9SX0VBQ0hfUFJJVkFURV9XS0NPTlRFTlRWSUVXX0FDVElPTihERUNMQVJFX1dL
Q09OVEVOVFZJRVdfQUNUSU9OX0ZPUl9XRUJfVklFVykKIAogQGludGVyZmFjZSBXS0NvbnRlbnRW
aWV3IChXS1Rlc3RpbmcpCiAKKy0gKHZvaWQpX3NpbXVsYXRlVGFwQWN0aW9uQXRMb2NhdGlvbjoo
Q0dQb2ludClsb2NhdGlvbjsKIC0gKHZvaWQpX3NpbXVsYXRlTG9uZ1ByZXNzQWN0aW9uQXRMb2Nh
dGlvbjooQ0dQb2ludClsb2NhdGlvbjsKIC0gKHZvaWQpX3NpbXVsYXRlVGV4dEVudGVyZWQ6KE5T
U3RyaW5nICopdGV4dDsKIC0gKHZvaWQpc2VsZWN0Rm9ybUFjY2Vzc29yeVBpY2tlclJvdzooTlNJ
bnRlZ2VyKXJvd0luZGV4OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggYjAxYjljNmJlMDE4NWY2MGEzMDll
YTc5MTI2OWMzMmUwZmU2ZDI2Mi4uNmMyODEwNGNmN2MyOGE4Yjc4YzM1OTk0OTk3MDZmNzMzZDJj
YzE5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC02NDcsNiArNjQ3LDMyIEBAIC0gKHZvaWQpX3drX2Nh
bmNlbAogCiBAZW5kCiAKK0BpbnRlcmZhY2UgX1dLTW9ja1dlYlRvdWNoRXZlbnRzR2VzdHVyZVJl
Y29nbml6ZXIgOiBVSVdlYlRvdWNoRXZlbnRzR2VzdHVyZVJlY29nbml6ZXIKKworQHByb3BlcnR5
IChub25hdG9taWMsIHJlYWR3cml0ZSkgY29uc3Qgc3RydWN0IF9VSVdlYlRvdWNoRXZlbnQgKmxh
c3RUb3VjaEV2ZW50OworCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhMb2NhdGlvbjooQ0dQb2lu
dClsb2NhdGlvbjsKKworQGVuZAorCitAaW1wbGVtZW50YXRpb24gX1dLTW9ja1dlYlRvdWNoRXZl
bnRzR2VzdHVyZVJlY29nbml6ZXIKKworQHN5bnRoZXNpemUgbGFzdFRvdWNoRXZlbnQ7CisKKy0g
KGluc3RhbmNldHlwZSlpbml0V2l0aExvY2F0aW9uOihDR1BvaW50KWxvY2F0aW9uCit7CisgICAg
aWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBf
VUlXZWJUb3VjaFBvaW50IG1vY2tUb3VjaFBvaW50ID0geyBsb2NhdGlvbiwgbG9jYXRpb24sIDAs
IFVJVG91Y2hQaGFzZUVuZGVkLCAwLCAwLCAwLCAwLCBVSVdlYlRvdWNoUG9pbnRUeXBlRGlyZWN0
fTsKKyAgICBfVUlXZWJUb3VjaEV2ZW50IG1vY2tUb3VjaEV2ZW50ID0geyBVSVdlYlRvdWNoRXZl
bnRUb3VjaEVuZCwgMCwgbG9jYXRpb24sIGxvY2F0aW9uLCAxLjAsIDAsIGZhbHNlLCAmbW9ja1Rv
dWNoUG9pbnQsIDEsIHRydWUgfTsKKyAgICBzZWxmLmxhc3RUb3VjaEV2ZW50ID0gJm1vY2tUb3Vj
aEV2ZW50OworCisgICAgcmV0dXJuIHNlbGY7Cit9CisKK0BlbmQKKwogQGludGVyZmFjZSBXS0Nv
bnRlbnRWaWV3IChXS0ludGVyYWN0aW9uUHJpdmF0ZSkKIC0gKHZvaWQpYWNjZXNzaWJpbGl0eVNw
ZWFrU2VsZWN0aW9uU2V0Q29udGVudDooTlNTdHJpbmcgKilzdHJpbmc7CiAtIChOU0FycmF5ICop
d2ViU2VsZWN0aW9uUmVjdHNGb3JTZWxlY3Rpb25SZWN0czooY29uc3QgVmVjdG9yPFdlYkNvcmU6
OlNlbGVjdGlvblJlY3Q+JilzZWxlY3Rpb25SZWN0czsKQEAgLTc5OTQsNiArODAyMCwxMyBAQCAt
ICh2b2lkKV9zaW11bGF0ZVRleHRFbnRlcmVkOihOU1N0cmluZyAqKXRleHQKICNlbmRpZgogfQog
CistICh2b2lkKV9zaW11bGF0ZVRhcEFjdGlvbkF0TG9jYXRpb246KENHUG9pbnQpbG9jYXRpb24K
K3sKKyAgICBfV0tNb2NrV2ViVG91Y2hFdmVudHNHZXN0dXJlUmVjb2duaXplciAqbW9ja1JlY29n
bml6ZXIgPSBbW19XS01vY2tXZWJUb3VjaEV2ZW50c0dlc3R1cmVSZWNvZ25pemVyIGFsbG9jXSBp
bml0V2l0aExvY2F0aW9uOmxvY2F0aW9uXTsKKyAgICBbc2VsZiBfd2ViVG91Y2hFdmVudHNSZWNv
Z25pemVkOm1vY2tSZWNvZ25pemVyXTsKKyAgICBfcGFnZS0+c2ltdWxhdGVUYXAobG9jYXRpb24s
IFdlYktpdDo6d2ViRXZlbnRNb2RpZmllckZsYWdzKDApKTsKK30KKwogLSAodm9pZClfc2ltdWxh
dGVMb25nUHJlc3NBY3Rpb25BdExvY2F0aW9uOihDR1BvaW50KWxvY2F0aW9uCiB7CiAgICAgUmV0
YWluUHRyPFdLQ29udGVudFZpZXc+IHByb3RlY3RlZFNlbGYgPSBzZWxmOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KaW5kZXggNTgwMzIzMWU1MjY2
NWU5Y2RkN2IwMzA0YzUxNGRhNjYyOGQ0MWJjYS4uY2VjYjYzY2Q1ZmFmMjM3NTVhMTgyYWI5YzMw
MDAyNzlmZjk3YWYyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dl
YlBhZ2VQcm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFn
ZVByb3h5SU9TLm1tCkBAIC04NTYsNiArODU2LDExIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp0YXBI
aWdobGlnaHRBdFBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHBvc2l0aW9uLCB1
CiAgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlRhcEhpZ2hsaWdodEF0UG9z
aXRpb24ocmVxdWVzdElELCBwb3NpdGlvbiksIG1fd2ViUGFnZUlEKTsKIH0KIAordm9pZCBXZWJQ
YWdlUHJveHk6OnNpbXVsYXRlVGFwKGNvbnN0IEZsb2F0UG9pbnQmIGxvY2F0aW9uLCBPcHRpb25T
ZXQ8V2ViRXZlbnQ6Ok1vZGlmaWVyPiBtb2RpZmllcnMpCit7CisgICAgcHJvY2VzcygpLnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlNpbXVsYXRlVGFwKHJvdW5kZWRJbnRQb2ludChsb2NhdGlvbiks
IG1vZGlmaWVycyksIG1fd2ViUGFnZUlEKTsKK30KKwogdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRs
ZVRhcChjb25zdCBGbG9hdFBvaW50JiBsb2NhdGlvbiwgT3B0aW9uU2V0PFdlYkV2ZW50OjpNb2Rp
Zmllcj4gbW9kaWZpZXJzLCBUcmFuc2FjdGlvbklEIGxheWVyVHJlZVRyYW5zYWN0aW9uSWRBdExh
c3RUb3VjaFN0YXJ0KQogewogICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpI
YW5kbGVUYXAocm91bmRlZEludFBvaW50KGxvY2F0aW9uKSwgbW9kaWZpZXJzLCBsYXllclRyZWVU
cmFuc2FjdGlvbklkQXRMYXN0VG91Y2hTdGFydCksIG1fd2ViUGFnZUlEKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBiMDdjZjE3ZjFiMjJjNzExOWY1
Y2JkZGQxYmFlOGMyOWNmOWQ5YWQwLi43YjRiMzQ1ZDkwNDhiYzA0Y2IxMGQ1NmJhMWU0YWE0MGI2
YTBmYWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBA
IC02MzgsNiArNjM4LDcgQEAgcHVibGljOgogICAgIGJvb2wgYWxsb3dzVXNlclNjYWxpbmcoKSBj
b25zdDsKICAgICBib29sIGhhc1N0YWJsZVBhZ2VTY2FsZUZhY3RvcigpIGNvbnN0IHsgcmV0dXJu
IG1faGFzU3RhYmxlUGFnZVNjYWxlRmFjdG9yOyB9CiAKKyAgICB2b2lkIHNpbXVsYXRlVGFwKGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiwgT3B0aW9uU2V0PFdlYktpdDo6V2ViRXZlbnQ6Ok1vZGlm
aWVyPik7CiAgICAgdm9pZCBoYW5kbGVUYXAoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBPcHRp
b25TZXQ8V2ViS2l0OjpXZWJFdmVudDo6TW9kaWZpZXI+LCBUcmFuc2FjdGlvbklEIGxhc3RMYXll
clRyZWVUcmFuc2FjdGlvbklkKTsKICAgICB2b2lkIHBvdGVudGlhbFRhcEF0UG9zaXRpb24odWlu
dDY0X3QgcmVxdWVzdElELCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiwgYm9vbCBzaG91bGRS
ZXF1ZXN0TWFnbmlmaWNhdGlvbkluZm9ybWF0aW9uKTsKICAgICB2b2lkIGNvbW1pdFBvdGVudGlh
bFRhcChPcHRpb25TZXQ8V2ViS2l0OjpXZWJFdmVudDo6TW9kaWZpZXI+LCBUcmFuc2FjdGlvbklE
IGxhc3RMYXllclRyZWVUcmFuc2FjdGlvbklkLCBXZWJDb3JlOjpQb2ludGVySUQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4K
aW5kZXggOWJmMjFlYzM1MWMyYmJiNTQzZjgwMWZiODU0YWYwYThkMTE4MTk5ZC4uYTJiMzhlMmE0
M2M4ZmI5ZDZhNDk4MDk3M2VhZTI1NzYyYjkwNGI1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC01Myw2ICs1Myw3
IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIFNldE92ZXJyaWRl
Vmlld3BvcnRBcmd1bWVudHMoT3B0aW9uYWw8V2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHM+IGFy
Z3VtZW50cykKICAgICBEeW5hbWljVmlld3BvcnRTaXplVXBkYXRlKFdlYkNvcmU6OkZsb2F0U2l6
ZSB2aWV3TGF5b3V0U2l6ZSwgV2ViQ29yZTo6RmxvYXRTaXplIG1heGltdW1Vbm9ic2N1cmVkU2l6
ZSwgV2ViQ29yZTo6RmxvYXRSZWN0IHRhcmdldEV4cG9zZWRDb250ZW50UmVjdCwgV2ViQ29yZTo6
RmxvYXRSZWN0IHRhcmdldFVub2JzY3VyZWRSZWN0LCBXZWJDb3JlOjpGbG9hdFJlY3QgdGFyZ2V0
VW5vYnNjdXJlZFJlY3RJblNjcm9sbFZpZXdDb29yZGluYXRlcywgV2ViQ29yZTo6UmVjdEVkZ2Vz
PGZsb2F0PiB0YXJnZXRVbm9ic2N1cmVkU2FmZUFyZWFJbnNldHMsIGRvdWJsZSBzY2FsZSwgaW50
MzJfdCBkZXZpY2VPcmllbnRhdGlvbiwgdWludDY0X3QgZHluYW1pY1ZpZXdwb3J0U2l6ZVVwZGF0
ZUlEKQogCisgICAgU2ltdWxhdGVUYXAoV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIE9wdGlvblNl
dDxXZWJLaXQ6OldlYkV2ZW50OjpNb2RpZmllcj4gbW9kaWZpZXJzKQogICAgIEhhbmRsZVRhcChX
ZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgT3B0aW9uU2V0PFdlYktpdDo6V2ViRXZlbnQ6Ok1vZGlm
aWVyPiBtb2RpZmllcnMsIFdlYktpdDo6VHJhbnNhY3Rpb25JRCBsYXN0TGF5ZXJUcmVlVHJhbnNh
Y3Rpb25JZCkKICAgICBQb3RlbnRpYWxUYXBBdFBvc2l0aW9uKHVpbnQ2NF90IHJlcXVlc3RJRCwg
V2ViQ29yZTo6RmxvYXRQb2ludCBwb2ludCwgYm9vbCBzaG91bGRSZXF1ZXN0TWFnbmlmaWNhdGlv
bkluZm9ybWF0aW9uKQogICAgIENvbW1pdFBvdGVudGlhbFRhcChPcHRpb25TZXQ8V2ViS2l0OjpX
ZWJFdmVudDo6TW9kaWZpZXI+IG1vZGlmaWVycywgV2ViS2l0OjpUcmFuc2FjdGlvbklEIGxhc3RM
YXllclRyZWVUcmFuc2FjdGlvbklkLCBXZWJDb3JlOjpQb2ludGVySUQgcG9pbnRlcklkKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1Mu
bW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpp
bmRleCA5ZjhkOGEzNTFkZWQ1N2U4YzM4ODRhZTBlYjRhNDA2ZDAwMmNhM2RiLi5jZTM2MWU4YTU1
ZTVlZGQzNTcyNmE5OWRmZDBiYTY2MWI3ZGEzNGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtODE2LDYgKzgxNiwxNCBA
QCB2b2lkIFdlYlBhZ2U6OmhhbmRsZVRhcChjb25zdCBJbnRQb2ludCYgcG9pbnQsIE9wdGlvblNl
dDxXZWJFdmVudDo6TW9kaWZpZXI+IG1vZAogICAgICAgICBoYW5kbGVTeW50aGV0aWNDbGljaygq
bm9kZVJlc3BvbmRpbmdUb0NsaWNrLCBhZGp1c3RlZFBvaW50LCBtb2RpZmllcnMpOwogfQogCit2
b2lkIFdlYlBhZ2U6OnNpbXVsYXRlVGFwKGNvbnN0IEludFBvaW50JiBwb2ludCwgT3B0aW9uU2V0
PFdlYkV2ZW50OjpNb2RpZmllcj4gbW9kaWZpZXJzKQoreworICAgIEZsb2F0UG9pbnQgYWRqdXN0
ZWRQb2ludDsKKyAgICBOb2RlKiBub2RlUmVzcG9uZGluZ1RvQ2xpY2sgPSBtX3BhZ2UtPm1haW5G
cmFtZSgpLm5vZGVSZXNwb25kaW5nVG9DbGlja0V2ZW50cyhwb2ludCwgYWRqdXN0ZWRQb2ludCk7
CisgICAgaWYgKG5vZGVSZXNwb25kaW5nVG9DbGljaykKKyAgICAgICAgaGFuZGxlU3ludGhldGlj
Q2xpY2soKm5vZGVSZXNwb25kaW5nVG9DbGljaywgYWRqdXN0ZWRQb2ludCwgbW9kaWZpZXJzKTsK
K30KKwogdm9pZCBXZWJQYWdlOjpoYW5kbGVEb3VibGVUYXBGb3JEb3VibGVDbGlja0F0UG9pbnQo
Y29uc3QgSW50UG9pbnQmIHBvaW50LCBPcHRpb25TZXQ8V2ViRXZlbnQ6Ok1vZGlmaWVyPiBtb2Rp
ZmllcnMsIFRyYW5zYWN0aW9uSUQgbGFzdExheWVyVHJlZVRyYW5zYWN0aW9uSWQpCiB7CiAgICAg
RmxvYXRQb2ludCBhZGp1c3RlZFBvaW50OwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IGI1YmJmZTdjMmE3MDE2MTE5ODg3MGIzODc5OThiNzhhMTJm
YTJiZjMuLjFkMWYwMmNiNzQ1OGNlNzZhOTlkMTM0YzUzZGQ0MTg3NTE1YTRiMzQgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBA
QAorMjAyMC0wMS0wNiAgTHVtaW5nIFlpbiAgPGx1bWluZ195aW5AYXBwbGUuY29tPgorCisgICAg
ICAgIFVwZGF0ZSBBUEkgYXZhaWxhYmlsaXR5IGZvciBhdXRvcGxheSBldmVudAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyMjE0CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS81NTcxMDM5NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L2F1dG9wbGF5LWNo
ZWNrLmh0bWw6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvYXV0b3BsYXkt
aW5oZXJpdHMtZ2VzdHVyZS1mcm9tLWRvY3VtZW50Lmh0bWw6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQvYXV0b3BsYXktbXV0ZWQtd2l0aC1jb250cm9scy5odG1sOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L2F1dG9wbGF5LXdpdGgtY29udHJvbHMu
aHRtbDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9qcy1wbGF5LXdpdGgt
Y29udHJvbHMuaHRtbDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9uby1h
dXRvcGxheS13aXRoLWNvbnRyb2xzLmh0bWw6CisgICAgICAgIFByb3ZpZGUgYW4gaWQgZm9yIHBs
YXkgYnV0dG9ucyBvbiB2YXJpb3VzIHRlc3RpbmcgcGFnZXMgc28gdGhhdCB0aGV5IGNhbiBiZSBy
ZWxpYWJseSB0cmlnZ2VyZWQgb24gaU9TLiAKKyAgICAgICAgQWRkaXRpb25hbGx5LCBhZGQgYSBu
by1vcCBidXR0b24gb24gYXV0b3BsYXktY2hlY2sgYW5kIGF1dG9wbGF5LWluaGVyaXRzLWdlc3R1
cmUtZnJvbS1kb2N1bWVudCwgc28gdGhhdCAKKyAgICAgICAgZ2VzdHVyZXMgYWN0dWFsbHkgaGl0
IGFuIGVsZW1lbnQgb24gdGhlIHBhZ2UgYW5kIGFyZW4ndCBpZ25vcmVkIG9uIGlPUyBkdXJpbmcg
dGVzdGluZy4gCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dl
YnNpdGVQb2xpY2llcy5tbToKKyAgICAgICAgKC1bQXV0b3BsYXlQb2xpY2llc0RlbGVnYXRlIF93
ZWJWaWV3OmhhbmRsZUF1dG9wbGF5RXZlbnQ6d2l0aEZsYWdzOl0pOgorICAgICAgICAoLVtBc3lu
Y0F1dG9wbGF5UG9saWNpZXNEZWxlZ2F0ZSBfd2ViVmlldzpoYW5kbGVBdXRvcGxheUV2ZW50Ondp
dGhGbGFnczpdKToKKyAgICAgICAgKFRFU1QpOgorICAgICAgICBFbmFibGUgdGVzdHMgcmVsYXRl
ZCB0byBhdXRvcGxheSBwb2xpY3kgb24gaU9TLiBGb3Igc29tZSBpT1MgdGVzdHMgdGhhdCBpbnZv
bHZlIGdlc3R1cmUgcXVpcmtzLCBkZWxheSAKKyAgICAgICAgcHJvZ3JhbW1hdGljIHBsYXliYWNr
IGFmdGVyIGEgdmVyeSBzaG9ydCBpbnRlcnZhbCB0byBlbnN1cmUgc3VjY2Vzc2Z1bCBhc3luY2hy
b25vdXMgZ2VzdHVyZSBwcm9wYWdhdGlvbi4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvYXVkaW8td2l0aC1wbGF5LWJ1dHRvbi5odG1sOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvYXV0b3BsYXlpbmctbXVsdGlwbGUtbWVkaWEt
ZWxlbWVudHMuaHRtbDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L3ZpZGVvLXdpdGgtcGxheS1idXR0b24uaHRtbDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2Nv
Y29hL1Rlc3RXS1dlYlZpZXcuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RX
S1dlYlZpZXcubW06CisgICAgICAgICgtW1Rlc3RXS1dlYlZpZXcgY2xpY2tPbkVsZW1lbnRJRDpd
KToKKyAgICAgICAgKC1bVGVzdFdLV2ViVmlldyBjbGlja09uUG9pbnQ6XSk6CisgICAgICAgIEhl
bHBlciBtZXRob2QgdG8gYWJzdHJhY3Qgc2ltdWxhdGVkIHRhcHMgYW5kIG1vdXNlIGNsaWNrcyBi
ZXR3ZWVuIE1hYyBhbmQgaU9TLgorCiAyMDIwLTAxLTA2ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5v
cm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBbV1BFXVtRdF0gVGVzdFJ1bkphdmFTY3JpcHQg
ZmFpbHVyZQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvYXV0
b3BsYXktY2hlY2suaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L2F1dG9w
bGF5LWNoZWNrLmh0bWwKaW5kZXggZjRiYTUxNzcwNDIyYWNmNjU1YThhYTJlNDM4NWYxODc2NmY5
NTAxMi4uZTNmY2QwNmQ3ZTg3Njc2OGNmMTQxMzRkNGQzNTdkZjRkZDlkNzU4MiAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvYXV0b3BsYXktY2hlY2suaHRtbAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9hdXRvcGxheS1jaGVjay5odG1s
CkBAIC0yNSw2ICsyNSw4IEBACiAgICAgICAgIDwvc2NyaXB0PgogICAgIDwvaGVhZD4KICAgICA8
Ym9keSBvbmxvYWQ9InBsYXlWaWRlbygpIj4KLSAgICAgICAgPHZpZGVvIGlkPSJ2aWRlbyIgb25w
YXVzZT12aWRlb0RpZFBhdXNlKCkgcGxheXNpbmxpbmUgc3JjPSJ0ZXN0Lm1wNCIgLz4KKyAgICAg
ICAgPHZpZGVvIGlkPSJ2aWRlbyIgb25wYXVzZT12aWRlb0RpZFBhdXNlKCkgcGxheXNpbmxpbmUg
c3JjPSJ0ZXN0Lm1wNCI+PC92aWRlbz4KKyAgICAgICAgPGJyPgorICAgICAgICA8YnV0dG9uIGlk
PSJuby1vcC1idXR0b24iIHR5cGU9ImJ1dHRvbiI+Tm8tb3AgQnV0dG9uPC9idXR0b24+CiAgICAg
PC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQvYXV0b3BsYXktaW5oZXJpdHMtZ2VzdHVyZS1mcm9tLWRvY3VtZW50Lmh0bWwgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9hdXRvcGxheS1pbmhlcml0cy1nZXN0dXJlLWZy
b20tZG9jdW1lbnQuaHRtbAppbmRleCAwODAwNTk0NWQxNTU4NGQ1NzA5Yjc0ZmZjZGJlNDE3NDg4
NTlhNDg2Li41ODQ2OWI0MmRhNTNjMmM0OTAxOWMyNjhkMzY1ZmNhOWQ4ZjMwY2QwIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9hdXRvcGxheS1pbmhlcml0cy1n
ZXN0dXJlLWZyb20tZG9jdW1lbnQuaHRtbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdC9hdXRvcGxheS1pbmhlcml0cy1nZXN0dXJlLWZyb20tZG9jdW1lbnQuaHRtbApAQCAt
MTksNiArMTksOCBAQAogPC9oZWFkPgogCiA8Ym9keSBvbmxvYWQ9ImxvYWRlZCgpIj4KLSAgICA8
dmlkZW8gaWQ9InZpZGVvIiBjb250cm9scyBzcmM9InRlc3QubXA0Ij48L3ZpZGVvPgorICAgIDx2
aWRlbyBwbGF5c2lubGluZSBpZD0idmlkZW8iIGNvbnRyb2xzIHNyYz0idGVzdC5tcDQiPjwvdmlk
ZW8+CisgICAgPGJyPgorICAgIDxidXR0b24gaWQ9Im5vLW9wLWJ1dHRvbiIgdHlwZT0iYnV0dG9u
Ij5Oby1vcCBCdXR0b248L2J1dHRvbj4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L2F1dG9wbGF5LW11dGVkLXdpdGgtY29udHJv
bHMuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L2F1dG9wbGF5LW11dGVk
LXdpdGgtY29udHJvbHMuaHRtbAppbmRleCA2NDljOTVjNGIxMTM5NmQ5OWQ1ZjYwMThiYTFjZjUz
ZmM2NzlmYjQxLi5hMWVlZGMwMDRkYWJhOTVhNDc1MDJmMzliZGVkOWFmNjBhN2FjNzlmIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9hdXRvcGxheS1tdXRlZC13
aXRoLWNvbnRyb2xzLmh0bWwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQv
YXV0b3BsYXktbXV0ZWQtd2l0aC1jb250cm9scy5odG1sCkBAIC0xNyw3ICsxNyw3IEBACiAgICAg
ICAgIDwvc2NyaXB0PgogICAgIDwvaGVhZD4KICAgICA8Ym9keSBvbmxvYWQ9InBhZ2VMb2FkZWQo
KSI+Ci0gICAgICAgIDxidXR0b24gb25jbGljaz0icGxheSgpIj5QbGF5PC9idXR0b24+CisgICAg
ICAgIDxidXR0b24gaWQ9InBsYXlCdXR0b24iIG9uY2xpY2s9InBsYXkoKSI+UGxheTwvYnV0dG9u
PgogICAgICAgICA8dmlkZW8gaWQ9InZpZGVvIiBvbnBsYXlpbmc9ImJlZ2FuUGxheWluZygpIiBt
dXRlZCBhdXRvcGxheSBzcmM9InRlc3QubXA0IiAvPgogICAgIDwvYm9keT4KIDwvaHRtbD4KZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L2F1dG9wbGF5LXdpdGgt
Y29udHJvbHMuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L2F1dG9wbGF5
LXdpdGgtY29udHJvbHMuaHRtbAppbmRleCBjZjgwYTY1NzhlZWExZTQ5MTExNTQ0NmExMGFiYTUy
NWQ4ZjU3MDUyLi5hMDcwZmVkYzIxNWM5YWJjN2YyNzNiYTVkZjMyMmY4ZWY3M2MzZmUxIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9hdXRvcGxheS13aXRoLWNv
bnRyb2xzLmh0bWwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvYXV0b3Bs
YXktd2l0aC1jb250cm9scy5odG1sCkBAIC0xMyw3ICsxMyw3IEBACiAgICAgICAgIDwvc2NyaXB0
PgogICAgIDwvaGVhZD4KICAgICA8Ym9keSBvbmxvYWQ9InBhZ2VMb2FkZWQoKSI+Ci0gICAgICAg
IDxidXR0b24gb25jbGljaz0icGxheSgpIj5QbGF5PC9idXR0b24+CisgICAgICAgIDxidXR0b24g
aWQ9InBsYXlCdXR0b24iIG9uY2xpY2s9InBsYXkoKSI+UGxheTwvYnV0dG9uPgogICAgICAgICA8
dmlkZW8gaWQ9InZpZGVvIiBhdXRvcGxheSBzcmM9InRlc3QubXA0IiAvPgogICAgIDwvYm9keT4K
IDwvaHRtbD4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L2pz
LXBsYXktd2l0aC1jb250cm9scy5odG1sIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQvanMtcGxheS13aXRoLWNvbnRyb2xzLmh0bWwKaW5kZXggODdmYWQzNTcwNjhhZWY5NzZlMzUz
MzA5YTJiMzhkZDgyZmFhYTRiYi4uZDRlYzQ1ZGM4OWEwMDY4MzEzODJlMzI0MDk1OTVmM2JhODgw
YjVmZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvanMtcGxh
eS13aXRoLWNvbnRyb2xzLmh0bWwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQvanMtcGxheS13aXRoLWNvbnRyb2xzLmh0bWwKQEAgLTM0LDggKzM0LDggQEAKICAgICAgICAg
PC9zY3JpcHQ+CiAgICAgPC9oZWFkPgogICAgIDxib2R5IG9ubG9hZD0icGFnZUxvYWRlZCgpIj4K
LSAgICAgICAgPGJ1dHRvbiBvbmNsaWNrPSJwbGF5KCkiPlBsYXk8L2J1dHRvbj4KLSAgICAgICAg
PGJ1dHRvbiBvbmNsaWNrPSJtdXRlKCkiPk11dGU8L2J1dHRvbj4KKyAgICAgICAgPGJ1dHRvbiBp
ZD0icGxheUJ1dHRvbiIgb25jbGljaz0icGxheSgpIj5QbGF5PC9idXR0b24+CisgICAgICAgIDxi
dXR0b24gaWQ9Im11dGVCdXR0b24iIG9uY2xpY2s9Im11dGUoKSI+TXV0ZTwvYnV0dG9uPgogICAg
ICAgICA8dmlkZW8gaWQ9InZpZGVvIiBvbnBsYXlpbmc9YmVnYW5QbGF5aW5nKCkgb25lbmRlZD1l
bmRlZFBsYXlpbmcoKSBzcmM9InRlc3QubXA0IiAvPgogICAgIDwvYm9keT4KIDwvaHRtbD4KZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L25vLWF1dG9wbGF5LXdp
dGgtY29udHJvbHMuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L25vLWF1
dG9wbGF5LXdpdGgtY29udHJvbHMuaHRtbAppbmRleCA2NzZiYWMyMDUwN2IzMTFmN2JjOWM3ZmM1
MzE4YzNjMDY3ZTgzZDY3Li4zY2RhM2M4MDM3ZGY2NzMzNDFhNzA5N2E3Njc1ZDBhODY0MjdmYTVk
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9uby1hdXRvcGxh
eS13aXRoLWNvbnRyb2xzLmh0bWwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQvbm8tYXV0b3BsYXktd2l0aC1jb250cm9scy5odG1sCkBAIC0xOSw3ICsxOSw3IEBACiAgICAg
ICAgIDwvc2NyaXB0PgogICAgIDwvaGVhZD4KICAgICA8Ym9keSBvbmxvYWQ9InBhZ2VMb2FkZWQo
KSI+Ci0gICAgICAgIDxidXR0b24gb25jbGljaz0icGxheSgpIj5QbGF5PC9idXR0b24+CisgICAg
ICAgIDxidXR0b24gaWQ9InBsYXlCdXR0b24iIG9uY2xpY2s9InBsYXkoKSI+UGxheTwvYnV0dG9u
PgogICAgICAgICA8dmlkZW8gaWQ9InZpZGVvIiBvbnBsYXlpbmc9YmVnYW5QbGF5aW5nKCkgc3Jj
PSJ0ZXN0Lm1wNCIgLz4KICAgICA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVQb2xpY2llcy5tbSBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZVBvbGljaWVzLm1tCmluZGV4
IDM0NDllYTMxZmJmY2Q4Yjc4Zjk2NGE3MGQ5ZTIyNDc1ZmQ2OTQzODcuLjU4MGYzYTRiYzgxOWVm
ZWE4YmU5M2JjZTYxMGE1Y2I3ZDhiZWM5YzAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZVBvbGljaWVzLm1tCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZVBvbGljaWVzLm1tCkBAIC02MywxMCAr
NjMsOCBAQCBzdGF0aWMgYm9vbCBkb25lQ29tcGlsaW5nOwogc3RhdGljIGJvb2wgcmVjZWl2ZWRB
bGVydDsKIHN0YXRpYyBib29sIGZpbmlzaGVkTmF2aWdhdGlvbjsKIAotI2lmIFBMQVRGT1JNKE1B
QykKIHN0YXRpYyBPcHRpb25hbDxfV0tBdXRvcGxheUV2ZW50PiByZWNlaXZlZEF1dG9wbGF5RXZl
bnQ7CiBzdGF0aWMgT3B0aW9uYWw8X1dLQXV0b3BsYXlFdmVudEZsYWdzPiByZWNlaXZlZEF1dG9w
bGF5RXZlbnRGbGFnczsKLSNlbmRpZgogCiBzdGF0aWMgc2l6ZV90IGFsZXJ0Q291bnQ7CiAKQEAg
LTE5OCwxMyArMTk2LDExIEBAIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBk
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOihXS05hdmlnYXRpCiAgICAgZGVjaXNpb25I
YW5kbGVyKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93LCB3ZWJzaXRlUG9saWNpZXMpOwog
fQogCi0jaWYgUExBVEZPUk0oTUFDKQogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2Vi
VmlldyBoYW5kbGVBdXRvcGxheUV2ZW50OihfV0tBdXRvcGxheUV2ZW50KWV2ZW50IHdpdGhGbGFn
czooX1dLQXV0b3BsYXlFdmVudEZsYWdzKWZsYWdzCiB7CiAgICAgcmVjZWl2ZWRBdXRvcGxheUV2
ZW50RmxhZ3MgPSBmbGFnczsKICAgICByZWNlaXZlZEF1dG9wbGF5RXZlbnQgPSBldmVudDsKIH0K
LSNlbmRpZgogCiBAZW5kCiAKQEAgLTIzNCwxMyArMjMwLDExIEBAIC0gKHZvaWQpd2ViVmlldzoo
V0tXZWJWaWV3ICopd2ViVmlldyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOihXS05h
dmlnYXRpCiAgICAgfSk7CiB9CiAKLSNpZiBQTEFURk9STShNQUMpCiAtICh2b2lkKV93ZWJWaWV3
OihXS1dlYlZpZXcgKil3ZWJWaWV3IGhhbmRsZUF1dG9wbGF5RXZlbnQ6KF9XS0F1dG9wbGF5RXZl
bnQpZXZlbnQgd2l0aEZsYWdzOihfV0tBdXRvcGxheUV2ZW50RmxhZ3MpZmxhZ3MKIHsKICAgICBy
ZWNlaXZlZEF1dG9wbGF5RXZlbnRGbGFncyA9IGZsYWdzOwogICAgIHJlY2VpdmVkQXV0b3BsYXlF
dmVudCA9IGV2ZW50OwogfQotI2VuZGlmCiAKIEBlbmQKIApAQCAtMjY1LDcgKzI1OSw4IEBAIFRF
U1QoV2VicGFnZVByZWZlcmVuY2VzLCBXZWJzaXRlUG9saWNpZXNBdXRvcGxheUVuYWJsZWQpCiAg
ICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24g
YWxsb2NdIGluaXRdKTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgW2NvbmZpZ3Vy
YXRpb24gc2V0QWxsb3dzSW5saW5lTWVkaWFQbGF5YmFjazpZRVNdOworICAgIGNvbmZpZ3VyYXRp
b24uZ2V0KCkuYWxsb3dzSW5saW5lTWVkaWFQbGF5YmFjayA9IFlFUzsKKyAgICBjb25maWd1cmF0
aW9uLmdldCgpLl9pbmxpbmVNZWRpYVBsYXliYWNrUmVxdWlyZXNQbGF5c0lubGluZUF0dHJpYnV0
ZSA9IE5POwogI2VuZGlmCiAKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2Vi
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25m
aWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKQEAgLTM1NCwxMyArMzQ5LDEzIEBAIFRF
U1QoV2VicGFnZVByZWZlcmVuY2VzLCBXZWJzaXRlUG9saWNpZXNBdXRvcGxheUVuYWJsZWQpCiAg
ICAgW3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJkaWQtbm90LXBsYXkiXTsKIH0KIAotI2lmIFBM
QVRGT1JNKE1BQykKIHN0YXRpYyB2b2lkIHJ1blVudGlsUmVjZWl2ZXNBdXRvcGxheUV2ZW50KFdL
QXV0b3BsYXlFdmVudCBldmVudCkKIHsKICAgICB3aGlsZSAoIXJlY2VpdmVkQXV0b3BsYXlFdmVu
dCB8fCAqcmVjZWl2ZWRBdXRvcGxheUV2ZW50ICE9IGV2ZW50KQogICAgICAgICBDRlJ1bkxvb3BS
dW5Jbk1vZGUoa0NGUnVuTG9vcERlZmF1bHRNb2RlLCAwLjEsIHRydWUpOwogfQogCisjaWYgUExB
VEZPUk0oTUFDKQogVEVTVChXZWJwYWdlUHJlZmVyZW5jZXMsIFdlYnNpdGVQb2xpY2llc1BsYXlB
ZnRlclByZXZlbnRlZEF1dG9wbGF5KQogewogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0
TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CkBAIC00MzEsMTAgKzQy
NiwxNiBAQCBURVNUKFdlYnBhZ2VQcmVmZXJlbmNlcywgV2Vic2l0ZVBvbGljaWVzUGxheUFmdGVy
UHJldmVudGVkQXV0b3BsYXkpCiAgICAgQVNTRVJUX1RSVUUoKnJlY2VpdmVkQXV0b3BsYXlFdmVu
dEZsYWdzICYga1dLQXV0b3BsYXlFdmVudEZsYWdzSGFzQXVkaW8pOwogICAgIEFTU0VSVF9UUlVF
KCpyZWNlaXZlZEF1dG9wbGF5RXZlbnRGbGFncyAmIGtXS0F1dG9wbGF5RXZlbnRGbGFnc1BsYXli
YWNrV2FzUHJldmVudGVkKTsKIH0KKyNlbmRpZgogCiBURVNUKFdlYnBhZ2VQcmVmZXJlbmNlcywg
V2Vic2l0ZVBvbGljaWVzUGxheWluZ1dpdGhVc2VyR2VzdHVyZSkKIHsKICAgICBhdXRvIGNvbmZp
Z3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0p
OworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgY29uZmlndXJhdGlvbi5nZXQoKS5hbGxv
d3NJbmxpbmVNZWRpYVBsYXliYWNrID0gWUVTOworICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkuX2lu
bGluZU1lZGlhUGxheWJhY2tSZXF1aXJlc1BsYXlzSW5saW5lQXR0cmlidXRlID0gTk87CisjZW5k
aWYKKwogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29u
ZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tBdXRv
cGxheVBvbGljaWVzRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKQEAgLTQ0NiwxMyArNDQ3LDIwIEBA
IFRFU1QoV2VicGFnZVByZWZlcmVuY2VzLCBXZWJzaXRlUG9saWNpZXNQbGF5aW5nV2l0aFVzZXJH
ZXN0dXJlKQogCiAgICAgcmVjZWl2ZWRBdXRvcGxheUV2ZW50ID0gV1RGOjpudWxsb3B0OwogCisj
aWYgUExBVEZPUk0oTUFDKQogICAgIE5TUG9pbnQgcGxheUJ1dHRvbkNsaWNrUG9pbnQgPSBOU01h
a2VQb2ludCgyMCwgNTgwKTsKKyNlbmRpZgogCiAgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0g
W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZv
clJlc291cmNlOkAiYXVkaW8td2l0aC1wbGF5LWJ1dHRvbiIgd2l0aEV4dGVuc2lvbjpAImh0bWwi
IHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dOwogICAgIFt3ZWJWaWV3
IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOwogICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAibG9h
ZGVkIl07CisKKyNpZiBQTEFURk9STShNQUMpCiAgICAgW3dlYlZpZXcgbW91c2VEb3duQXRQb2lu
dDpwbGF5QnV0dG9uQ2xpY2tQb2ludCBzaW11bGF0ZVByZXNzdXJlOk5PXTsKICAgICBbd2ViVmll
dyBtb3VzZVVwQXRQb2ludDpwbGF5QnV0dG9uQ2xpY2tQb2ludF07CisjZWxzZQorICAgIFt3ZWJW
aWV3IGNsaWNrT25FbGVtZW50SUQ6QCJwbGF5QnV0dG9uIl07CisjZW5kaWYKIAogICAgIHJ1blVu
dGlsUmVjZWl2ZXNBdXRvcGxheUV2ZW50KGtXS0F1dG9wbGF5RXZlbnREaWRQbGF5TWVkaWFXaXRo
VXNlckdlc3R1cmUpOwogICAgIEFTU0VSVF9UUlVFKCpyZWNlaXZlZEF1dG9wbGF5RXZlbnRGbGFn
cyAmIGtXS0F1dG9wbGF5RXZlbnRGbGFnc0hhc0F1ZGlvKTsKQEAgLTQ2Myw4ICs0NzEsMTMgQEAg
VEVTVChXZWJwYWdlUHJlZmVyZW5jZXMsIFdlYnNpdGVQb2xpY2llc1BsYXlpbmdXaXRoVXNlckdl
c3R1cmUpCiAgICAgcmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1
bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInZpZGVvLXdpdGgtcGxheS1idXR0b24i
IHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291
cmNlcyJdXTsKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKICAgICBbd2ViVmll
dyB3YWl0Rm9yTWVzc2FnZTpAImxvYWRlZCJdOworCisjaWYgUExBVEZPUk0oTUFDKQogICAgIFt3
ZWJWaWV3IG1vdXNlRG93bkF0UG9pbnQ6cGxheUJ1dHRvbkNsaWNrUG9pbnQgc2ltdWxhdGVQcmVz
c3VyZTpOT107CiAgICAgW3dlYlZpZXcgbW91c2VVcEF0UG9pbnQ6cGxheUJ1dHRvbkNsaWNrUG9p
bnRdOworI2Vsc2UKKyAgICBbd2ViVmlldyBjbGlja09uRWxlbWVudElEOkAicGxheUJ1dHRvbiJd
OworI2VuZGlmCiAKICAgICBydW5VbnRpbFJlY2VpdmVzQXV0b3BsYXlFdmVudChrV0tBdXRvcGxh
eUV2ZW50RGlkUGxheU1lZGlhV2l0aFVzZXJHZXN0dXJlKTsKICAgICBBU1NFUlRfVFJVRSgqcmVj
ZWl2ZWRBdXRvcGxheUV2ZW50RmxhZ3MgJiBrV0tBdXRvcGxheUV2ZW50RmxhZ3NIYXNBdWRpbyk7
CkBAIC00NzQsNiArNDg3LDExIEBAIFRFU1QoV2VicGFnZVByZWZlcmVuY2VzLCBXZWJzaXRlUG9s
aWNpZXNQbGF5aW5nV2l0aFVzZXJHZXN0dXJlKQogVEVTVChXZWJwYWdlUHJlZmVyZW5jZXMsIFdl
YnNpdGVQb2xpY2llc1BsYXlpbmdXaXRob3V0SW50ZXJmZXJlbmNlKQogewogICAgIGF1dG8gY29u
ZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0
XSk7CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBjb25maWd1cmF0aW9uLmdldCgpLmFs
bG93c0lubGluZU1lZGlhUGxheWJhY2sgPSBZRVM7CisgICAgY29uZmlndXJhdGlvbi5nZXQoKS5f
aW5saW5lTWVkaWFQbGF5YmFja1JlcXVpcmVzUGxheXNJbmxpbmVBdHRyaWJ1dGUgPSBOTzsKKyNl
bmRpZgorCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAzMzYsIDI3NikgY29uZmlndXJhdGlvbjpj
b25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW0F1
dG9wbGF5UG9saWNpZXNEZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwpAQCAtNDkzLDYgKzUxMSwxMSBA
QCBURVNUKFdlYnBhZ2VQcmVmZXJlbmNlcywgV2Vic2l0ZVBvbGljaWVzUGxheWluZ1dpdGhvdXRJ
bnRlcmZlcmVuY2UpCiBURVNUKFdlYnBhZ2VQcmVmZXJlbmNlcywgV2Vic2l0ZVBvbGljaWVzVXNl
ckludGVyZmVyZW5jZVdpdGhQbGF5aW5nKQogewogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFk
b3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKKyAgICBjb25maWd1cmF0aW9uLmdldCgpLmFsbG93c0lubGluZU1lZGlh
UGxheWJhY2sgPSBZRVM7CisgICAgY29uZmlndXJhdGlvbi5nZXQoKS5faW5saW5lTWVkaWFQbGF5
YmFja1JlcXVpcmVzUGxheXNJbmxpbmVBdHRyaWJ1dGUgPSBOTzsKKyNlbmRpZgorCiAgICAgYXV0
byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
TlNNYWtlUmVjdCgwLCAwLCAzMzYsIDI3NikgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdl
dCgpXSk7CiAKICAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW0F1dG9wbGF5UG9saWNpZXNE
ZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwpAQCAtNTE3LDkgKzU0MCwxNCBAQCBURVNUKFdlYnBhZ2VQ
cmVmZXJlbmNlcywgV2Vic2l0ZVBvbGljaWVzVXNlckludGVyZmVyZW5jZVdpdGhQbGF5aW5nKQog
ICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAicGxheWluZyJdOwogICAgIEFTU0VSVF9UUlVF
KHJlY2VpdmVkQXV0b3BsYXlFdmVudCA9PSBXVEY6Om51bGxvcHQpOwogCisjaWYgUExBVEZPUk0o
TUFDKQogICAgIGNvbnN0IE5TUG9pbnQgbXV0ZUJ1dHRvbkNsaWNrUG9pbnQgPSBOU01ha2VQb2lu
dCg4MCwgMjU2KTsKICAgICBbd2ViVmlldyBtb3VzZURvd25BdFBvaW50Om11dGVCdXR0b25DbGlj
a1BvaW50IHNpbXVsYXRlUHJlc3N1cmU6Tk9dOwogICAgIFt3ZWJWaWV3IG1vdXNlVXBBdFBvaW50
Om11dGVCdXR0b25DbGlja1BvaW50XTsKKyNlbHNlCisgICAgW3dlYlZpZXcgY2xpY2tPbkVsZW1l
bnRJRDpAIm11dGVCdXR0b24iXTsKKyNlbmRpZgorCiAgICAgcnVuVW50aWxSZWNlaXZlc0F1dG9w
bGF5RXZlbnQoa1dLQXV0b3BsYXlFdmVudFVzZXJEaWRJbnRlcmZlcmVXaXRoUGxheWJhY2spOwog
ICAgIEFTU0VSVF9UUlVFKCpyZWNlaXZlZEF1dG9wbGF5RXZlbnRGbGFncyAmIGtXS0F1dG9wbGF5
RXZlbnRGbGFnc0hhc0F1ZGlvKTsKIApAQCAtNTI4LDEzICs1NTYsMTkgQEAgVEVTVChXZWJwYWdl
UHJlZmVyZW5jZXMsIFdlYnNpdGVQb2xpY2llc1VzZXJJbnRlcmZlcmVuY2VXaXRoUGxheWluZykK
ICAgICBbd2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpAInBsYXlpbmciXTsKICAgICBBU1NFUlRfVFJV
RShyZWNlaXZlZEF1dG9wbGF5RXZlbnQgPT0gV1RGOjpudWxsb3B0KTsKIAorI2lmIFBMQVRGT1JN
KE1BQykKICAgICBjb25zdCBOU1BvaW50IHBsYXlCdXR0b25DbGlja1BvaW50ID0gTlNNYWtlUG9p
bnQoMjAsIDI1Nik7CiAgICAgW3dlYlZpZXcgbW91c2VEb3duQXRQb2ludDpwbGF5QnV0dG9uQ2xp
Y2tQb2ludCBzaW11bGF0ZVByZXNzdXJlOk5PXTsKICAgICBbd2ViVmlldyBtb3VzZVVwQXRQb2lu
dDpwbGF5QnV0dG9uQ2xpY2tQb2ludF07CisjZWxzZQorICAgIFt3ZWJWaWV3IGNsaWNrT25FbGVt
ZW50SUQ6QCJwbGF5QnV0dG9uIl07CisjZW5kaWYKKwogICAgIHJ1blVudGlsUmVjZWl2ZXNBdXRv
cGxheUV2ZW50KGtXS0F1dG9wbGF5RXZlbnRVc2VyRGlkSW50ZXJmZXJlV2l0aFBsYXliYWNrKTsK
ICAgICBBU1NFUlRfVFJVRSgqcmVjZWl2ZWRBdXRvcGxheUV2ZW50RmxhZ3MgJiBrV0tBdXRvcGxh
eUV2ZW50RmxhZ3NIYXNBdWRpbyk7CiB9CiAKKyNpZiBQTEFURk9STShNQUMpCiBURVNUKFdlYnBh
Z2VQcmVmZXJlbmNlcywgV2Vic2l0ZVBvbGljaWVzUGVyRG9jdW1lbnRBdXRvcGxheUJlaGF2aW9y
TWVkaWFMb2FkaW5nKQogewogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dl
YlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CkBAIC03MTMsMTAgKzc0NywxNiBAQCBU
RVNUKFdlYnBhZ2VQcmVmZXJlbmNlcywgV2Vic2l0ZVBvbGljaWVzRHVyaW5nUmVkaXJlY3QpCiAg
ICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNV
UkwgVVJMV2l0aFN0cmluZzpAInRlc3Q6Ly8vc2hvdWxkLXJlZGlyZWN0Il1dXTsKICAgICBbd2Vi
VmlldyB3YWl0Rm9yTWVzc2FnZTpAImF1dG9wbGF5ZWQiXTsKIH0KKyNlbmRpZiAvLyBQTEFURk9S
TShNQUMpCiAKIFRFU1QoV2VicGFnZVByZWZlcmVuY2VzLCBXZWJzaXRlUG9saWNpZXNVcGRhdGVz
KQogewogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1
cmF0aW9uIGFsbG9jXSBpbml0XSk7CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBjb25m
aWd1cmF0aW9uLmdldCgpLmFsbG93c0lubGluZU1lZGlhUGxheWJhY2sgPSBZRVM7CisgICAgY29u
ZmlndXJhdGlvbi5nZXQoKS5faW5saW5lTWVkaWFQbGF5YmFja1JlcXVpcmVzUGxheXNJbmxpbmVB
dHRyaWJ1dGUgPSBOTzsKKyNlbmRpZgorCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rl
c3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYw
MCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAgICAgYXV0byBkZWxlZ2F0
ZSA9IGFkb3B0TlMoW1tBdXRvcGxheVBvbGljaWVzRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKICAg
ICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwpAQCAtNzUz
LDE1ICs3OTMsMTcgQEAgVEVTVChXZWJwYWdlUHJlZmVyZW5jZXMsIFdlYnNpdGVQb2xpY2llc1Vw
ZGF0ZXMpCiBURVNUKFdlYnBhZ2VQcmVmZXJlbmNlcywgV2Vic2l0ZVBvbGljaWVzQXJiaXRyYXJ5
VXNlckdlc3R1cmVRdWlyaykKIHsKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtb
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCisgICAgY29uZmlndXJhdGlvbi5nZXQoKS5hbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNr
ID0gWUVTOworICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkuX2lubGluZU1lZGlhUGxheWJhY2tSZXF1
aXJlc1BsYXlzSW5saW5lQXR0cmlidXRlID0gTk87CisjZW5kaWYKKyAgICBbY29uZmlndXJhdGlv
biBwcmVmZXJlbmNlc10uX25lZWRzU2l0ZVNwZWNpZmljUXVpcmtzID0gWUVTOworCiAgICAgYXV0
byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdl
dCgpXSk7CiAKICAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW0F1dG9wbGF5UG9saWNpZXNE
ZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwogICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0
ZTpkZWxlZ2F0ZS5nZXQoKV07CiAKLSAgICBXS1JldGFpblB0cjxXS1ByZWZlcmVuY2VzUmVmPiBw
cmVmZXJlbmNlcyA9IGFkb3B0V0soV0tQcmVmZXJlbmNlc0NyZWF0ZSgpKTsKLSAgICBXS1ByZWZl
cmVuY2VzU2V0TmVlZHNTaXRlU3BlY2lmaWNRdWlya3MocHJlZmVyZW5jZXMuZ2V0KCksIHRydWUp
OwotICAgIFdLUGFnZUdyb3VwU2V0UHJlZmVyZW5jZXMoV0tQYWdlR2V0UGFnZUdyb3VwKFt3ZWJW
aWV3IF9wYWdlRm9yVGVzdGluZ10pLCBwcmVmZXJlbmNlcy5nZXQoKSk7Ci0KICAgICBbZGVsZWdh
dGUgc2V0QWxsb3dlZEF1dG9wbGF5UXVpcmtzRm9yVVJMOl5fV0tXZWJzaXRlQXV0b3BsYXlRdWly
ayhOU1VSTCAqdXJsKQogICAgIHsKICAgICAgICAgcmV0dXJuIF9XS1dlYnNpdGVBdXRvcGxheVF1
aXJrQXJiaXRyYXJ5VXNlckdlc3R1cmVzOwpAQCAtNzc1LDI2ICs4MTcsMzAgQEAgVEVTVChXZWJw
YWdlUHJlZmVyZW5jZXMsIFdlYnNpdGVQb2xpY2llc0FyYml0cmFyeVVzZXJHZXN0dXJlUXVpcmsp
CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CiAgICAgW3dlYlZpZXcgd2FpdEZv
ck1lc3NhZ2U6QCJkaWQtbm90LXBsYXkiXTsKIAotICAgIGNvbnN0IE5TUG9pbnQgY2xpY2tQb2lu
dCA9IE5TTWFrZVBvaW50KDc2MCwgNTYwKTsKLSAgICBbd2ViVmlldyBtb3VzZURvd25BdFBvaW50
OmNsaWNrUG9pbnQgc2ltdWxhdGVQcmVzc3VyZTpOT107Ci0gICAgW3dlYlZpZXcgbW91c2VVcEF0
UG9pbnQ6Y2xpY2tQb2ludF07Ci0KKyNpZiBQTEFURk9STShNQUMpCisgICAgW3dlYlZpZXcgY2xp
Y2tPblBvaW50Ok5TTWFrZVBvaW50KDc2MCwgNTYwKV07CiAgICAgW3dlYlZpZXcgc3RyaW5nQnlF
dmFsdWF0aW5nSmF2YVNjcmlwdDpAInBsYXlWaWRlbygpIl07CisjZWxzZQorICAgIFt3ZWJWaWV3
IGNsaWNrT25Qb2ludDpOU01ha2VQb2ludCgxNSwgMTcwKV07CisgICAgW3dlYlZpZXcgcGVyZm9y
bVNlbGVjdG9yOkBzZWxlY3RvcihzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0Oikgd2l0aE9i
amVjdDpAInBsYXlWaWRlbygpIiBhZnRlckRlbGF5OjAuMV07CisjZW5kaWYKICAgICBbd2ViVmll
dyB3YWl0Rm9yTWVzc2FnZTpAImF1dG9wbGF5ZWQiXTsKIH0KIAogVEVTVChXZWJwYWdlUHJlZmVy
ZW5jZXMsIFdlYnNpdGVQb2xpY2llc0F1dG9wbGF5UXVpcmtzKQogewogICAgIGF1dG8gY29uZmln
dXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBjb25maWd1cmF0aW9uLmdldCgpLmFsbG93
c0lubGluZU1lZGlhUGxheWJhY2sgPSBZRVM7CisgICAgY29uZmlndXJhdGlvbi5nZXQoKS5faW5s
aW5lTWVkaWFQbGF5YmFja1JlcXVpcmVzUGxheXNJbmxpbmVBdHRyaWJ1dGUgPSBOTzsKKyNlbmRp
ZgorICAgIFtjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXS5fbmVlZHNTaXRlU3BlY2lmaWNRdWly
a3MgPSBZRVM7CisKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0
aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5T
KFtbQXV0b3BsYXlQb2xpY2llc0RlbGVnYXRlIGFsbG9jXSBpbml0XSk7CiAgICAgW3dlYlZpZXcg
c2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKIAotICAgIFdLUmV0YWluUHRy
PFdLUHJlZmVyZW5jZXNSZWY+IHByZWZlcmVuY2VzID0gYWRvcHRXSyhXS1ByZWZlcmVuY2VzQ3Jl
YXRlKCkpOwotICAgIFdLUHJlZmVyZW5jZXNTZXROZWVkc1NpdGVTcGVjaWZpY1F1aXJrcyhwcmVm
ZXJlbmNlcy5nZXQoKSwgdHJ1ZSk7Ci0gICAgV0tQYWdlR3JvdXBTZXRQcmVmZXJlbmNlcyhXS1Bh
Z2VHZXRQYWdlR3JvdXAoW3dlYlZpZXcgX3BhZ2VGb3JUZXN0aW5nXSksIHByZWZlcmVuY2VzLmdl
dCgpKTsKLQogICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdFdpdGhBdWRpbyA9IFtOU1VSTFJlcXVl
c3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpA
ImF1dG9wbGF5LWNoZWNrIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVz
dFdlYktpdEFQSS5yZXNvdXJjZXMiXV07CiAKICAgICBbZGVsZWdhdGUgc2V0QWxsb3dlZEF1dG9w
bGF5UXVpcmtzRm9yVVJMOl5fV0tXZWJzaXRlQXV0b3BsYXlRdWlyayhOU1VSTCAqdXJsKSB7CkBA
IC04MzMsMjYgKzg3OSwzMCBAQCBURVNUKFdlYnBhZ2VQcmVmZXJlbmNlcywgV2Vic2l0ZVBvbGlj
aWVzQXV0b3BsYXlRdWlya3MpCiAgICAgW3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJsb2FkZWQi
XTsKIAogICAgIC8vIENsaWNrIGluIHRoZSBkb2N1bWVudCwgYnV0IG5vdCBpbiB0aGUgbWVkaWEg
ZWxlbWVudC4KLSAgICBjb25zdCBOU1BvaW50IGNsaWNrUG9pbnQgPSBOU01ha2VQb2ludCg3NjAs
IDU2MCk7Ci0gICAgW3dlYlZpZXcgbW91c2VEb3duQXRQb2ludDpjbGlja1BvaW50IHNpbXVsYXRl
UHJlc3N1cmU6Tk9dOwotICAgIFt3ZWJWaWV3IG1vdXNlVXBBdFBvaW50OmNsaWNrUG9pbnRdOwot
CisjaWYgUExBVEZPUk0oTUFDKQorICAgIFt3ZWJWaWV3IGNsaWNrT25Qb2ludDpOU01ha2VQb2lu
dCg3NjAsIDU2MCldOwogICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6
QCJwbGF5KCkiXTsKKyNlbHNlCisgICAgW3dlYlZpZXcgY2xpY2tPblBvaW50Ok5TTWFrZVBvaW50
KDE1LCAxNzApXTsKKyAgICBbd2ViVmlldyBwZXJmb3JtU2VsZWN0b3I6QHNlbGVjdG9yKHN0cmlu
Z0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6KSB3aXRoT2JqZWN0OkAicGxheSgpIiBhZnRlckRlbGF5
OjAuMV07CisjZW5kaWYKKwogICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAicGxheWluZyJd
OwogfQogCiBURVNUKFdlYnBhZ2VQcmVmZXJlbmNlcywgV2Vic2l0ZVBvbGljaWVzUGVyRG9jdW1l
bnRBdXRvcGxheUJlaGF2aW9yUXVpcmtzKQogewogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFk
b3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKKyAgICBjb25maWd1cmF0aW9uLmdldCgpLmFsbG93c0lubGluZU1lZGlh
UGxheWJhY2sgPSBZRVM7CisgICAgY29uZmlndXJhdGlvbi5nZXQoKS5faW5saW5lTWVkaWFQbGF5
YmFja1JlcXVpcmVzUGxheXNJbmxpbmVBdHRyaWJ1dGUgPSBOTzsKKyNlbmRpZgorICAgIFtjb25m
aWd1cmF0aW9uIHByZWZlcmVuY2VzXS5fbmVlZHNTaXRlU3BlY2lmaWNRdWlya3MgPSBZRVM7CiAg
ICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0
aW9uLmdldCgpXSk7CiAKICAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW0F1dG9wbGF5UG9s
aWNpZXNEZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwogICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25E
ZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CiAKLSAgICBXS1JldGFpblB0cjxXS1ByZWZlcmVuY2Vz
UmVmPiBwcmVmZXJlbmNlcyA9IGFkb3B0V0soV0tQcmVmZXJlbmNlc0NyZWF0ZSgpKTsKLSAgICBX
S1ByZWZlcmVuY2VzU2V0TmVlZHNTaXRlU3BlY2lmaWNRdWlya3MocHJlZmVyZW5jZXMuZ2V0KCks
IHRydWUpOwotICAgIFdLUGFnZUdyb3VwU2V0UHJlZmVyZW5jZXMoV0tQYWdlR2V0UGFnZUdyb3Vw
KFt3ZWJWaWV3IF9wYWdlRm9yVGVzdGluZ10pLCBwcmVmZXJlbmNlcy5nZXQoKSk7Ci0KICAgICBy
ZWNlaXZlZEF1dG9wbGF5RXZlbnQgPSBXVEY6Om51bGxvcHQ7CiAKICAgICBOU1VSTFJlcXVlc3Qg
KnJlcXVlc3RXaXRoTXVsdGlwbGVNZWRpYUVsZW1lbnRzID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0
V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAiYXV0b3BsYXlp
bmctbXVsdGlwbGUtbWVkaWEtZWxlbWVudHMiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJl
Y3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXTsKQEAgLTg3MSw5ICs5MjEsMTIgQEAg
VEVTVChXZWJwYWdlUHJlZmVyZW5jZXMsIFdlYnNpdGVQb2xpY2llc1BlckRvY3VtZW50QXV0b3Bs
YXlCZWhhdmlvclF1aXJrcykKICAgICBbd2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpAImRpZC1ub3Qt
cGxheS12aWRlbzEiXTsKIAogICAgIC8vIE5vdyB0cnkgYWdhaW4gd2l0aCBhIHVzZXIgZ2VzdHVy
ZS4uLgorI2lmIFBMQVRGT1JNKE1BQykKICAgICBjb25zdCBOU1BvaW50IHBsYXlCdXR0b25DbGlj
a1BvaW50ID0gTlNNYWtlUG9pbnQoMjAsIDU4MCk7Ci0gICAgW3dlYlZpZXcgbW91c2VEb3duQXRQ
b2ludDpwbGF5QnV0dG9uQ2xpY2tQb2ludCBzaW11bGF0ZVByZXNzdXJlOk5PXTsKLSAgICBbd2Vi
VmlldyBtb3VzZVVwQXRQb2ludDpwbGF5QnV0dG9uQ2xpY2tQb2ludF07CisjZWxzZQorICAgIGNv
bnN0IE5TUG9pbnQgcGxheUJ1dHRvbkNsaWNrUG9pbnQgPSBOU01ha2VQb2ludCgxNSwgMTUpOwor
I2VuZGlmCisgICAgW3dlYlZpZXcgY2xpY2tPblBvaW50OnBsYXlCdXR0b25DbGlja1BvaW50XTsK
ICAgICBbd2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpAImRpZC1wbGF5LXZpZGVvMSJdOwogCiAgICAg
Ly8gTm93IHZpZGVvMiBzaG91bGQgYWxzbyBiZSBhbGxvd2VkIHRvIGF1dG9wbGF5IHdpdGhvdXQg
YSB1c2VyIGdlc3R1cmUgYmVjYXVzZSBvZiB0aGUgcXVpcmsuCkBAIC04OTUsOCArOTQ4LDcgQEAg
VEVTVChXZWJwYWdlUHJlZmVyZW5jZXMsIFdlYnNpdGVQb2xpY2llc1BlckRvY3VtZW50QXV0b3Bs
YXlCZWhhdmlvclF1aXJrcykKICAgICBbd2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpAImRpZC1ub3Qt
cGxheS12aWRlbzEiXTsKIAogICAgIC8vIE5vdyB0cnkgYWdhaW4gd2l0aCBhIHVzZXIgZ2VzdHVy
ZS4uLgotICAgIFt3ZWJWaWV3IG1vdXNlRG93bkF0UG9pbnQ6cGxheUJ1dHRvbkNsaWNrUG9pbnQg
c2ltdWxhdGVQcmVzc3VyZTpOT107Ci0gICAgW3dlYlZpZXcgbW91c2VVcEF0UG9pbnQ6cGxheUJ1
dHRvbkNsaWNrUG9pbnRdOworICAgIFt3ZWJWaWV3IGNsaWNrT25Qb2ludDpwbGF5QnV0dG9uQ2xp
Y2tQb2ludF07CiAgICAgW3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJkaWQtcGxheS12aWRlbzEi
XTsKIAogICAgIC8vIE5vdyB2aWRlbzIgc2hvdWxkIG5vdCBiZSBhbGxvd2VkIHRvIGF1dG9wbGF5
IHdpdGhvdXQgYSB1c2VyIGdlc3R1cmUuCkBAIC05MDcsMTUgKzk1OSwxNiBAQCBURVNUKFdlYnBh
Z2VQcmVmZXJlbmNlcywgV2Vic2l0ZVBvbGljaWVzUGVyRG9jdW1lbnRBdXRvcGxheUJlaGF2aW9y
UXVpcmtzKQogVEVTVChXZWJwYWdlUHJlZmVyZW5jZXMsIFdlYnNpdGVQb2xpY2llc0F1dG9wbGF5
UXVpcmtzQXN5bmNQb2xpY3lEZWxlZ2F0ZSkKIHsKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBh
ZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCisgICAgY29uZmlndXJhdGlvbi5nZXQoKS5hbGxvd3NJbmxpbmVNZWRp
YVBsYXliYWNrID0gWUVTOworICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkuX2lubGluZU1lZGlhUGxh
eWJhY2tSZXF1aXJlc1BsYXlzSW5saW5lQXR0cmlidXRlID0gTk87CisjZW5kaWYKKyAgICBbY29u
ZmlndXJhdGlvbiBwcmVmZXJlbmNlc10uX25lZWRzU2l0ZVNwZWNpZmljUXVpcmtzID0gWUVTOwog
ICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0
aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJh
dGlvbi5nZXQoKV0pOwogCiAgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tBc3luY0F1dG9w
bGF5UG9saWNpZXNEZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwogICAgIFt3ZWJWaWV3IHNldE5hdmln
YXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CiAKLSAgICBXS1JldGFpblB0cjxXS1ByZWZl
cmVuY2VzUmVmPiBwcmVmZXJlbmNlcyA9IGFkb3B0V0soV0tQcmVmZXJlbmNlc0NyZWF0ZSgpKTsK
LSAgICBXS1ByZWZlcmVuY2VzU2V0TmVlZHNTaXRlU3BlY2lmaWNRdWlya3MocHJlZmVyZW5jZXMu
Z2V0KCksIHRydWUpOwotICAgIFdLUGFnZUdyb3VwU2V0UHJlZmVyZW5jZXMoV0tQYWdlR2V0UGFn
ZUdyb3VwKFt3ZWJWaWV3IF9wYWdlRm9yVGVzdGluZ10pLCBwcmVmZXJlbmNlcy5nZXQoKSk7Ci0K
ICAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3RXaXRoQXVkaW8gPSBbTlNVUkxSZXF1ZXN0IHJlcXVl
c3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJhdXRvcGxh
eS1jaGVjayIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRB
UEkucmVzb3VyY2VzIl1dOwogCiAgICAgW2RlbGVnYXRlIHNldEFsbG93ZWRBdXRvcGxheVF1aXJr
c0ZvclVSTDpeX1dLV2Vic2l0ZUF1dG9wbGF5UXVpcmsoTlNVUkwgKnVybCkgewpAQCAtOTQ2LDcg
Kzk5OSw2IEBAIFRFU1QoV2VicGFnZVByZWZlcmVuY2VzLCBXZWJzaXRlUG9saWNpZXNBdXRvcGxh
eVF1aXJrc0FzeW5jUG9saWN5RGVsZWdhdGUpCiAgICAgW3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6
QCJkaWQtbm90LXBsYXkiXTsKICAgICBbd2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpAIm9uLXBhdXNl
Il07CiB9Ci0jZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogCiBURVNUKFdlYnBhZ2VQcmVmZXJlbmNl
cywgSW52YWxpZEN1c3RvbUhlYWRlcnMpCiB7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL2F1ZGlvLXdpdGgtcGxheS1idXR0b24uaHRtbCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvYXVkaW8td2l0aC1wbGF5LWJ1dHRvbi5o
dG1sCmluZGV4IDdmM2VkZTVlZmYxZjdjMDU4OThhMmM1MzlhYTNiNDE0ZjI3MDM4YmEuLmI5OTA1
MzExYzRjMjViNTQ0OWEyNzc5MmUzN2NlNTEwYzA0OGYzNTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvYXVkaW8td2l0aC1wbGF5LWJ1dHRvbi5odG1s
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvYXVkaW8td2l0aC1w
bGF5LWJ1dHRvbi5odG1sCkBAIC0yMSw3ICsyMSw3IEBACiAgICAgICAgIDwvc2NyaXB0PgogICAg
IDwvaGVhZD4KICAgICA8Ym9keSBvbmxvYWQ9InBhZ2VMb2FkZWQoKSI+Ci0gICAgICAgIDxidXR0
b24gb25jbGljaz0icGxheSgpIj5QbGF5PC9idXR0b24+CisgICAgICAgIDxidXR0b24gaWQ9InBs
YXlCdXR0b24iIG9uY2xpY2s9InBsYXkoKSI+UGxheTwvYnV0dG9uPgogICAgICAgICA8YnIgLz4K
ICAgICAgICAgPGF1ZGlvIGNvbnRyb2xzIGlkPSJhdWRpbyIgb25wbGF5aW5nPSJiZWdhblBsYXlp
bmcoKSIgc3JjPSJzaWxlbmNlLWxvbmcubTRhIiAvPgogICAgIDwvYm9keT4KZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvYXV0b3BsYXlpbmctbXVsdGlw
bGUtbWVkaWEtZWxlbWVudHMuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvYXV0b3BsYXlpbmctbXVsdGlwbGUtbWVkaWEtZWxlbWVudHMuaHRtbAppbmRleCA3Mjk2
NWMwNDliMmQ4ZTQ0OTEyNDIxNjNmZjcwMzg0YTkxYWJiZWFhLi5mZmJlMDFjNmRhMGU2MzNiY2Jl
MTA5ZWZmYmUyNGMxZjEyZjI3Mzg4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL2F1dG9wbGF5aW5nLW11bHRpcGxlLW1lZGlhLWVsZW1lbnRzLmh0bWwK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9hdXRvcGxheWluZy1t
dWx0aXBsZS1tZWRpYS1lbGVtZW50cy5odG1sCkBAIC0yNiw3ICsyNiw3IEBACiAgICA8L3Njcmlw
dD4KIDwvaGVhZD4KIDxib2R5IG9ubG9hZD0icGFnZUxvYWRlZCgpIj4KLSAgICA8YnV0dG9uIG9u
Y2xpY2s9InBsYXlWaWRlbygndmlkZW8xJykiPlBsYXkgVmlkZW8gMTwvYnV0dG9uPgorICAgIDxi
dXR0b24gaWQ9InBsYXlCdXR0b24iIG9uY2xpY2s9InBsYXlWaWRlbygndmlkZW8xJykiPlBsYXkg
VmlkZW8gMTwvYnV0dG9uPgogICAgIDxiciAvPgogICAgIDx2aWRlbyBpZD0idmlkZW8xIiBvbnBs
YXlpbmc9ImRpZFBsYXlWaWRlbygndmlkZW8xJykiIHNyYz0idmlkZW8td2l0aC1hdWRpby5tcDQi
PjwvdmlkZW8+CiAgICAgPHZpZGVvIGlkPSJ2aWRlbzIiIG9ucGxheWluZz0iZGlkUGxheVZpZGVv
KCd2aWRlbzInKSIgc3JjPSJ2aWRlby13aXRoLWF1ZGlvLm1wNCI+PC92aWRlbz4KZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvdmlkZW8td2l0aC1wbGF5
LWJ1dHRvbi5odG1sIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS92aWRl
by13aXRoLXBsYXktYnV0dG9uLmh0bWwKaW5kZXggYzBhMWFiMjZkOTY1ZGEwNzY5YjNhMTQ5OGYy
NGI2MDA5OWJlNzg5Ni4uMzU4ZmFlNjI1M2U0NjZlZWVkOTZiNWQwODBiYjEwYzdhYzU3MDgxNiAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS92aWRlby13
aXRoLXBsYXktYnV0dG9uLmh0bWwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS92aWRlby13aXRoLXBsYXktYnV0dG9uLmh0bWwKQEAgLTIxLDcgKzIxLDcgQEAKICAg
ICAgICAgPC9zY3JpcHQ+CiAgICAgPC9oZWFkPgogICAgIDxib2R5IG9ubG9hZD0icGFnZUxvYWRl
ZCgpIj4KLSAgICAgICAgPGJ1dHRvbiBvbmNsaWNrPSJwbGF5KCkiPlBsYXk8L2J1dHRvbj4KKyAg
ICAgICAgPGJ1dHRvbiBpZD0icGxheUJ1dHRvbiIgb25jbGljaz0icGxheSgpIj5QbGF5PC9idXR0
b24+CiAgICAgICAgIDxiciAvPgogICAgICAgICA8dmlkZW8gY29udHJvbHMgaWQ9InZpZGVvIiBv
bnBsYXlpbmc9ImJlZ2FuUGxheWluZygpIiBzcmM9ImxvbmctdGVzdC5tcDQiPjwvdmlkZW8+CiAg
ICAgPC9ib2R5PgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tX
ZWJWaWV3LmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaAppbmRl
eCAzY2M0MzRhNWQyNWUwZThkM2Q3N2Y4Yjk1YWZhMmRjNjk0YzJmMTdhLi4wZGJmYjdmMDQ4OWQz
ZjkzZWYyMTJjNWMxMTI0MGM2OTRjODVjMGZkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29h
L1Rlc3RXS1dlYlZpZXcuaApAQCAtODYsNiArODYsOCBAQAogLSAodm9pZCljb2xsYXBzZVRvRW5k
OwogLSAodm9pZClhZGRUb1Rlc3RXaW5kb3c7CiAtIChCT09MKXNlbGVjdGlvblJhbmdlSGFzU3Rh
cnRPZmZzZXQ6KGludClzdGFydCBlbmRPZmZzZXQ6KGludCllbmQ7CistICh2b2lkKWNsaWNrT25F
bGVtZW50SUQ6KE5TU3RyaW5nICopZWxlbWVudElEOworLSAodm9pZCljbGlja09uUG9pbnQ6KE5T
UG9pbnQpcG9pbnRJbldpbmRvdzsKIEBlbmQKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0gYi9U
b29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0KaW5kZXggNzRhZDU4MTI1
MDE2YzAzMWY4YzVlNGVkYmI5NDhlMTgwNWViNTUwZS4uNjVmMDYyNTFlOWIxNmE4N2I4Y2JlYjNi
MzE0YmVjMGU3YTk0YzI3ZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9U
ZXN0V0tXZWJWaWV3Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2Vi
Vmlldy5tbQpAQCAtNTE1LDYgKzUxNSwyMSBAQCAtIChCT09MKXNlbGVjdGlvblJhbmdlSGFzU3Rh
cnRPZmZzZXQ6KGludClzdGFydCBlbmRPZmZzZXQ6KGludCllbmQKICAgICByZXR1cm4gbWF0Y2hl
czsKIH0KIAorLSAodm9pZCljbGlja09uRWxlbWVudElEOihOU1N0cmluZyAqKWVsZW1lbnRJRAor
eworICAgIFtzZWxmIGV2YWx1YXRlSmF2YVNjcmlwdDpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1h
dDpAImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCclQCcpLmNsaWNrKCk7IiwgZWxlbWVudElEXSBj
b21wbGV0aW9uSGFuZGxlcjpuaWxdOworfQorCistICh2b2lkKWNsaWNrT25Qb2ludDooTlNQb2lu
dClwb2ludEluV2luZG93Cit7CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBbc2VsZiBf
c2ltdWxhdGVUYXBBY3Rpb25BdExvY2F0aW9uOkNHUG9pbnRNYWtlKHBvaW50SW5XaW5kb3cueCwg
cG9pbnRJbldpbmRvdy55KV07CisjZWxzZQorICAgIFtzZWxmIG1vdXNlRG93bkF0UG9pbnQ6cG9p
bnRJbldpbmRvdyBzaW11bGF0ZVByZXNzdXJlOk5PXTsKKyAgICBbc2VsZiBtb3VzZVVwQXRQb2lu
dDpwb2ludEluV2luZG93XTsKKyNlbmRpZgorfQorCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
IAogLSAodm9pZClkaWRTdGFydEZvcm1Db250cm9sSW50ZXJhY3Rpb24K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387716</attachid>
            <date>2020-01-14 15:54:22 -0800</date>
            <delta_ts>2020-01-14 18:22:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202214-20200114155421.patch</filename>
            <type>text/plain</type>
            <size>29334</size>
            <attacher name="Luming Yin">luming_yin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0NTMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGY2ZWIyMTJhZGE0OWY4NDUx
OTZiMmE4YTE4ZGZkNTY4ODM0NWY0N2UuLjk0NDI3YTdlZjEzY2UyZmYzODUzZjcxNWQ3ZjZhYjY0
M2RhYTJiNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMjAtMDEtMTQgIEx1bWluZyBZ
aW4gIDxsdW1pbmdfeWluQGFwcGxlLmNvbT4KKworICAgICAgICBVcGRhdGUgQVBJIGF2YWlsYWJp
bGl0eSBmb3IgYXV0b3BsYXkgZXZlbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwMjIxNAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTU3MTAzOTU+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaDoKKyAgICAgICAgTWFrZSBlbnVt
cyBhbmQgV0tVSURlbGVnYXRlIG1ldGhvZCByZWxhdGVkIHRvIGF1dG9wbGF5IGV2ZW50IGF2YWls
YWJsZSBvbiBpT1MuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tOgorICAgICAgICAoV2ViS2l0
OjpVSURlbGVnYXRlOjpzZXREZWxlZ2F0ZSk6CisgICAgICAgIChXZWJLaXQ6OnRvV0tBdXRvcGxh
eUV2ZW50RmxhZ3MpOgorICAgICAgICAoV2ViS2l0Ojp0b1dLQXV0b3BsYXlFdmVudCk6CisgICAg
ICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OlVJQ2xpZW50OjpoYW5kbGVBdXRvcGxheUV2ZW50KToK
KyAgICAgICAgTWFrZSBkZWxlZ2F0ZSBtZXRob2RzIHJlbGF0ZWQgdG8gYXV0b3BsYXkgZXZlbnRz
IGF2YWlsYWJsZSBvbiBpT1MuCisKIDIwMjAtMDEtMTAgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFu
QGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViQXV0aG5dIEltcGxlbWVudCBTUEkgdG8gdGVsbCBV
SSBjbGllbnRzIHRvIHNlbGVjdCBhc3NlcnRpb24gcmVzcG9uc2VzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaAppbmRl
eCAyNTkwNzhmZjVjMTQxZDRjMGRmZTJhODI2YWE0ODhhMmI5YTVkZjI3Li45YjgwZDViZWExNzdi
OGRhYjM1MzE4NTljYWY4MmExNTZjNzRiOWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmgKQEAgLTUwLDEzICs1
MCw2IEBACiBAcHJvdG9jb2wgVUlEcmFnU2Vzc2lvbjsKIEBwcm90b2NvbCBVSURyb3BTZXNzaW9u
OwogI2Vsc2UKLXR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIF9XS0F1dG9wbGF5RXZlbnQpIHsK
LSAgICBfV0tBdXRvcGxheUV2ZW50RGlkUHJldmVudEZyb21BdXRvcGxheWluZywKLSAgICBfV0tB
dXRvcGxheUV2ZW50RGlkUGxheU1lZGlhV2l0aFVzZXJHZXN0dXJlLAotICAgIF9XS0F1dG9wbGF5
RXZlbnREaWRBdXRvcGxheU1lZGlhUGFzdFRocmVzaG9sZFdpdGhvdXRVc2VySW50ZXJmZXJlbmNl
LAotICAgIF9XS0F1dG9wbGF5RXZlbnRVc2VyRGlkSW50ZXJmZXJlV2l0aFBsYXliYWNrLAotfSBX
S19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKLQogdHlwZWRlZiBOU19FTlVNKE5TSW50
ZWdlciwgX1dLUmVzb3VyY2VMaW1pdCkgewogICAgIF9XS1Jlc291cmNlTGltaXRNZW1vcnksCiAg
ICAgX1dLUmVzb3VyY2VMaW1pdENQVSwKQEAgLTY3LDE0ICs2MCwyMSBAQCB0eXBlZGVmIE5TX0VO
VU0oTlNJbnRlZ2VyLCBfV0tQbHVnSW5VbmF2YWlsYWJpbGl0eVJlYXNvbikgewogICAgIF9XS1Bs
dWdJblVuYXZhaWxhYmlsaXR5UmVhc29uUGx1Z2luQ3Jhc2hlZCwKICAgICBfV0tQbHVnSW5VbmF2
YWlsYWJpbGl0eVJlYXNvbkluc2VjdXJlUGx1Z2luVmVyc2lvbgogfSBXS19BUElfQVZBSUxBQkxF
KG1hY29zKDEwLjEzLjQpKTsKKyNlbmRpZgorCit0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBf
V0tBdXRvcGxheUV2ZW50KSB7CisgICAgX1dLQXV0b3BsYXlFdmVudERpZFByZXZlbnRGcm9tQXV0
b3BsYXlpbmcsCisgICAgX1dLQXV0b3BsYXlFdmVudERpZFBsYXlNZWRpYVdpdGhVc2VyR2VzdHVy
ZSwKKyAgICBfV0tBdXRvcGxheUV2ZW50RGlkQXV0b3BsYXlNZWRpYVBhc3RUaHJlc2hvbGRXaXRo
b3V0VXNlckludGVyZmVyZW5jZSwKKyAgICBfV0tBdXRvcGxheUV2ZW50VXNlckRpZEludGVyZmVy
ZVdpdGhQbGF5YmFjaywKK30gV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSwgaW9zKFdL
X0lPU19UQkEpKTsKIAogdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIF9XS0F1dG9wbGF5
RXZlbnRGbGFncykgewogICAgIF9XS0F1dG9wbGF5RXZlbnRGbGFnc05vbmUgPSAwLAogICAgIF9X
S0F1dG9wbGF5RXZlbnRGbGFnc0hhc0F1ZGlvID0gMSA8PCAwLAogICAgIF9XS0F1dG9wbGF5RXZl
bnRGbGFnc1BsYXliYWNrV2FzUHJldmVudGVkID0gMSA8PCAxLAogICAgIF9XS0F1dG9wbGF5RXZl
bnRGbGFnc01lZGlhSXNNYWluQ29udGVudCA9IDEgPDwgMiwKLX0gV0tfQVBJX0FWQUlMQUJMRSht
YWNvcygxMC4xMy40KSk7Ci0jZW5kaWYKK30gV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40
KSwgaW9zKFdLX0lPU19UQkEpKTsKIAogdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dLRm9j
dXNEaXJlY3Rpb24pIHsKICAgICBfV0tGb2N1c0RpcmVjdGlvbkJhY2t3YXJkLApAQCAtMTQwLDYg
KzE0MCw4IEBAIHN0cnVjdCBVSUVkZ2VJbnNldHM7CiAKIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2Vi
VmlldyAqKXdlYlZpZXcgcnVuV2ViQXV0aGVudGljYXRpb25QYW5lbDooX1dLV2ViQXV0aGVudGlj
YXRpb25QYW5lbCAqKXBhbmVsIGluaXRpYXRlZEJ5RnJhbWU6KFdLRnJhbWVJbmZvICopZnJhbWUg
Y29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1
bHQpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSks
IGlvcyhXS19JT1NfVEJBKSk7CiAKKy0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZp
ZXcgaGFuZGxlQXV0b3BsYXlFdmVudDooX1dLQXV0b3BsYXlFdmVudClldmVudCB3aXRoRmxhZ3M6
KF9XS0F1dG9wbGF5RXZlbnRGbGFncylmbGFncyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEz
LjQpLCBpb3MoV0tfSU9TX1RCQSkpOworCiAjaWYgVEFSR0VUX09TX0lQSE9ORQogLSAoQk9PTClf
d2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBzaG91bGRJbmNsdWRlQXBwTGlua0FjdGlvbnNG
b3JFbGVtZW50OihfV0tBY3RpdmF0ZWRFbGVtZW50SW5mbyAqKWVsZW1lbnQgV0tfQVBJX0FWQUlM
QUJMRShpb3MoOS4wKSk7CiAtIChOU0FycmF5ICopX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZp
ZXcgYWN0aW9uc0ZvckVsZW1lbnQ6KF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvICopZWxlbWVudCBk
ZWZhdWx0QWN0aW9uczooTlNBcnJheTxfV0tFbGVtZW50QWN0aW9uICo+ICopZGVmYXVsdEFjdGlv
bnM7CkBAIC0yMTcsNyArMjE5LDYgQEAgc3RydWN0IFVJRWRnZUluc2V0czsKIC0gKHZvaWQpX3dl
YlZpZXdEaWRTY3JvbGw6KFdLV2ViVmlldyAqKXdlYlZpZXcgV0tfQVBJX0FWQUlMQUJMRShtYWNv
cygxMC4xMy40KSk7CiAtICh2b2lkKV93ZWJWaWV3UnVuTW9kYWw6KFdLV2ViVmlldyAqKXdlYlZp
ZXcgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSk7CiAtICh2b2lkKV93ZWJWaWV3OihX
S1dlYlZpZXcgKil3ZWJWaWV3IGRpZE5vdEhhbmRsZVdoZWVsRXZlbnQ6KE5TRXZlbnQgKilldmVu
dCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKLS0gKHZvaWQpX3dlYlZpZXc6KFdL
V2ViVmlldyAqKXdlYlZpZXcgaGFuZGxlQXV0b3BsYXlFdmVudDooX1dLQXV0b3BsYXlFdmVudCll
dmVudCB3aXRoRmxhZ3M6KF9XS0F1dG9wbGF5RXZlbnRGbGFncylmbGFncyBXS19BUElfQVZBSUxB
QkxFKG1hY29zKDEwLjEzLjQpKTsKIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZp
ZXcgZGlkQ2xpY2tBdXRvRmlsbEJ1dHRvbldpdGhVc2VySW5mbzooaWQgPE5TU2VjdXJlQ29kaW5n
Pil1c2VySW5mbyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKIC0gKHZvaWQpX3dl
YlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZ2V0VG9vbGJhcnNBcmVWaXNpYmxlV2l0aENvbXBs
ZXRpb25IYW5kbGVyOih2b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3MoMTAuMTMuNCkpOwogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2Vi
VmlldyBzYXZlRGF0YVRvRmlsZTooTlNEYXRhICopZGF0YSBzdWdnZXN0ZWRGaWxlbmFtZTooTlNT
dHJpbmcgKilzdWdnZXN0ZWRGaWxlbmFtZSBtaW1lVHlwZTooTlNTdHJpbmcgKiltaW1lVHlwZSBv
cmlnaW5hdGluZ1VSTDooTlNVUkwgKil1cmwgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRl
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmgKaW5kZXggYzk0
OThmOTkxMDdmNWQ0MTZmMzQ5NTA5YTZiZmI2YzIzMTBiZDkzOC4uYTM1OTNhZGY0NGI4ZDM0YTdj
NDYxYzZiMjkzMzJiYTk2ZjY3OTkyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvVUlEZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1VJRGVsZWdhdGUuaApAQCAtMTAwLDYgKzEwMCw3IEBAIHByaXZhdGU6CiAgICAgICAgIHZvaWQg
cmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShXZWJQYWdlUHJveHkqLCBjb25zdCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYsIHVpbnQ2NF90IGN1cnJlbnRRdW90YSwgdWludDY0X3Qg
dG90YWxCeXRlc05lZWRlZCwgRnVuY3Rpb248dm9pZCh1bnNpZ25lZCBsb25nIGxvbmcpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKSBmaW5hbDsKICAgICAgICAgdm9pZCBkaWRSZXNpZ25JbnB1dEVsZW1l
bnRTdHJvbmdQYXNzd29yZEFwcGVhcmFuY2UoV2ViUGFnZVByb3h5JiwgQVBJOjpPYmplY3QqKSBm
aW5hbDsKICAgICAgICAgYm9vbCB0YWtlRm9jdXMoV2ViUGFnZVByb3h5KiwgV0tGb2N1c0RpcmVj
dGlvbikgZmluYWw7CisgICAgICAgIHZvaWQgaGFuZGxlQXV0b3BsYXlFdmVudChXZWJQYWdlUHJv
eHkmLCBXZWJDb3JlOjpBdXRvcGxheUV2ZW50LCBPcHRpb25TZXQ8V2ViQ29yZTo6QXV0b3BsYXlF
dmVudEZsYWdzPikgZmluYWw7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgICAgICB2b2lkIHNob3dQ
YWdlKFdlYlBhZ2VQcm94eSopIGZpbmFsOwogICAgICAgICB2b2lkIGZvY3VzKFdlYlBhZ2VQcm94
eSopIGZpbmFsOwpAQCAtMTE2LDcgKzExNyw2IEBAIHByaXZhdGU6CiAgICAgICAgIHZvaWQgZHJh
d0hlYWRlcihXZWJQYWdlUHJveHkmLCBXZWJGcmFtZVByb3h5JiwgV2ViQ29yZTo6RmxvYXRSZWN0
JiYpIGZpbmFsOwogICAgICAgICB2b2lkIGRyYXdGb290ZXIoV2ViUGFnZVByb3h5JiwgV2ViRnJh
bWVQcm94eSYsIFdlYkNvcmU6OkZsb2F0UmVjdCYmKSBmaW5hbDsKICAgICAgICAgdm9pZCBkZWNp
ZGVQb2xpY3lGb3JOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdChXZWJQYWdlUHJveHkmLCBB
UEk6OlNlY3VyaXR5T3JpZ2luJiwgRnVuY3Rpb248dm9pZChib29sKT4mJikgZmluYWw7Ci0gICAg
ICAgIHZvaWQgaGFuZGxlQXV0b3BsYXlFdmVudChXZWJQYWdlUHJveHkmLCBXZWJDb3JlOjpBdXRv
cGxheUV2ZW50LCBPcHRpb25TZXQ8V2ViQ29yZTo6QXV0b3BsYXlFdmVudEZsYWdzPikgZmluYWw7
CiAgICAgICAgIHZvaWQgdW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlja2VkKFdlYlBhZ2VQcm94
eSYsIFdLUGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb24sIEFQSTo6RGljdGlvbmFyeSYpIGZpbmFs
OwogICAgICAgICB2b2lkIG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KFdlYlBhZ2VQcm94eSYsIGNv
bnN0IFdlYkhpdFRlc3RSZXN1bHREYXRhJiwgT3B0aW9uU2V0PFdlYkV2ZW50OjpNb2RpZmllcj4s
IEFQSTo6T2JqZWN0Kik7CiAgICAgICAgIHZvaWQgZGlkQ2xpY2tBdXRvRmlsbEJ1dHRvbihXZWJQ
YWdlUHJveHkmLCBBUEk6Ok9iamVjdCopIGZpbmFsOwpAQCAtMTc2LDYgKzE3Niw3IEBAIHByaXZh
dGU6CiAgICAgICAgIGJvb2wgd2ViVmlld1JlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JG
cmFtZURlY2lzaW9uSGFuZGxlciA6IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld0RpZFJlc2lnbklu
cHV0RWxlbWVudFN0cm9uZ1Bhc3N3b3JkQXBwZWFyYW5jZVdpdGhVc2VySW5mbyA6IDE7CiAgICAg
ICAgIGJvb2wgd2ViVmlld1Rha2VGb2N1cyA6IDE7CisgICAgICAgIGJvb2wgd2ViVmlld0hhbmRs
ZUF1dG9wbGF5RXZlbnRXaXRoRmxhZ3MgOiAxOwogI2lmIFBMQVRGT1JNKE1BQykKICAgICAgICAg
Ym9vbCBzaG93V2ViVmlldyA6IDE7CiAgICAgICAgIGJvb2wgZm9jdXNXZWJWaWV3IDogMTsKQEAg
LTE4Nyw3ICsxODgsNiBAQCBwcml2YXRlOgogICAgICAgICBib29sIHdlYlZpZXdTZXRSZXNpemFi
bGUgOiAxOwogICAgICAgICBib29sIHdlYlZpZXdTZXRXaW5kb3dGcmFtZSA6IDE7CiAgICAgICAg
IGJvb2wgd2ViVmlld0RpZE5vdEhhbmRsZVdoZWVsRXZlbnQgOiAxOwotICAgICAgICBib29sIHdl
YlZpZXdIYW5kbGVBdXRvcGxheUV2ZW50V2l0aEZsYWdzIDogMTsKICAgICAgICAgYm9vbCB3ZWJW
aWV3VW5hdmFpbGFibGVQbHVnSW5CdXR0b25DbGlja2VkIDogMTsKICAgICAgICAgYm9vbCB3ZWJW
aWV3RGlkQ2xpY2tBdXRvRmlsbEJ1dHRvbldpdGhVc2VySW5mbyA6IDE7CiAgICAgICAgIGJvb2wg
d2ViVmlld0RyYXdIZWFkZXJJblJlY3RGb3JQYWdlV2l0aFRpdGxlVVJMIDogMTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCmluZGV4IGVhOWE5Y2EzNTU4MzZh
MjVjYTJkNzBjNWJmNjcxNDlmMTlkMDE0ZmYuLmEzZDBkZWQ2ZGYwNTY2Y2I3NDQ5M2Y5OGVjMjhi
Y2UwZThkODkzYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJ
RGVsZWdhdGUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0
ZS5tbQpAQCAtMTA5LDYgKzEwOSw3IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6c2V0RGVsZWdhdGUoaWQg
PFdLVUlEZWxlZ2F0ZT4gZGVsZWdhdGUpCiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1Jl
cXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JGcmFtZURlY2lzaW9uSGFuZGxlciA9IFtkZWxl
Z2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnJlcXVlc3RHZW9sb2Nh
dGlvblBlcm1pc3Npb25Gb3JGcmFtZTpkZWNpc2lvbkhhbmRsZXI6KV07CiAgICAgbV9kZWxlZ2F0
ZU1ldGhvZHMud2ViVmlld0RpZFJlc2lnbklucHV0RWxlbWVudFN0cm9uZ1Bhc3N3b3JkQXBwZWFy
YW5jZVdpdGhVc2VySW5mbyA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KF93ZWJWaWV3OmRpZFJlc2lnbklucHV0RWxlbWVudFN0cm9uZ1Bhc3N3b3JkQXBwZWFyYW5jZVdp
dGhVc2VySW5mbzopXTsKICAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3VGFrZUZvY3VzID0g
W2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6dGFrZUZvY3Vz
OildOworICAgIG1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdIYW5kbGVBdXRvcGxheUV2ZW50V2l0
aEZsYWdzID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6
aGFuZGxlQXV0b3BsYXlFdmVudDp3aXRoRmxhZ3M6KV07CiAKICNpZiBQTEFURk9STShNQUMpCiAg
ICAgbV9kZWxlZ2F0ZU1ldGhvZHMuc2hvd1dlYlZpZXcgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3Rvcihfc2hvd1dlYlZpZXc6KV07CkBAIC0xMjIsNyArMTIzLDYgQEAgdm9p
ZCBVSURlbGVnYXRlOjpzZXREZWxlZ2F0ZShpZCA8V0tVSURlbGVnYXRlPiBkZWxlZ2F0ZSkKICAg
ICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3R2V0V2luZG93RnJhbWVXaXRoQ29tcGxldGlvbkhh
bmRsZXIgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpn
ZXRXaW5kb3dGcmFtZVdpdGhDb21wbGV0aW9uSGFuZGxlcjopXTsKICAgICBtX2RlbGVnYXRlTWV0
aG9kcy53ZWJWaWV3U2V0V2luZG93RnJhbWUgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9y
OkBzZWxlY3Rvcihfd2ViVmlldzpzZXRXaW5kb3dGcmFtZTopXTsKICAgICBtX2RlbGVnYXRlTWV0
aG9kcy53ZWJWaWV3VW5hdmFpbGFibGVQbHVnSW5CdXR0b25DbGlja2VkID0gW2RlbGVnYXRlIHJl
c3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6dW5hdmFpbGFibGVQbHVnSW5CdXR0
b25DbGlja2VkV2l0aFJlYXNvbjpwbHVnSW5JbmZvOildOwotICAgIG1fZGVsZWdhdGVNZXRob2Rz
LndlYlZpZXdIYW5kbGVBdXRvcGxheUV2ZW50V2l0aEZsYWdzID0gW2RlbGVnYXRlIHJlc3BvbmRz
VG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6aGFuZGxlQXV0b3BsYXlFdmVudDp3aXRoRmxh
Z3M6KV07CiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RpZENsaWNrQXV0b0ZpbGxCdXR0
b25XaXRoVXNlckluZm8gPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihf
d2ViVmlldzpkaWRDbGlja0F1dG9GaWxsQnV0dG9uV2l0aFVzZXJJbmZvOildOwogICAgIG1fZGVs
ZWdhdGVNZXRob2RzLndlYlZpZXdEcmF3SGVhZGVySW5SZWN0Rm9yUGFnZVdpdGhUaXRsZVVSTCA9
IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmRyYXdIZWFk
ZXJJblJlY3Q6Zm9yUGFnZVdpdGhUaXRsZTpVUkw6KV07CiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMu
d2ViVmlld0RyYXdGb290ZXJJblJlY3RGb3JQYWdlV2l0aFRpdGxlVVJMID0gW2RlbGVnYXRlIHJl
c3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6ZHJhd0Zvb3RlckluUmVjdDpmb3JQ
YWdlV2l0aFRpdGxlOlVSTDopXTsKQEAgLTQ4Niw2ICs0ODYsNDcgQEAgYm9vbCBVSURlbGVnYXRl
OjpVSUNsaWVudDo6dGFrZUZvY3VzKFdlYlBhZ2VQcm94eSosIFdLRm9jdXNEaXJlY3Rpb24gZGly
ZWN0aW9uKQogICAgIHJldHVybiB0cnVlOwogfQogCitzdGF0aWMgX1dLQXV0b3BsYXlFdmVudEZs
YWdzIHRvV0tBdXRvcGxheUV2ZW50RmxhZ3MoT3B0aW9uU2V0PFdlYkNvcmU6OkF1dG9wbGF5RXZl
bnRGbGFncz4gZmxhZ3MpCit7CisgICAgX1dLQXV0b3BsYXlFdmVudEZsYWdzIHdrRmxhZ3MgPSBf
V0tBdXRvcGxheUV2ZW50RmxhZ3NOb25lOworICAgIGlmIChmbGFncy5jb250YWlucyhXZWJDb3Jl
OjpBdXRvcGxheUV2ZW50RmxhZ3M6Okhhc0F1ZGlvKSkKKyAgICAgICAgd2tGbGFncyB8PSBfV0tB
dXRvcGxheUV2ZW50RmxhZ3NIYXNBdWRpbzsKKyAgICBpZiAoZmxhZ3MuY29udGFpbnMoV2ViQ29y
ZTo6QXV0b3BsYXlFdmVudEZsYWdzOjpQbGF5YmFja1dhc1ByZXZlbnRlZCkpCisgICAgICAgIHdr
RmxhZ3MgfD0gX1dLQXV0b3BsYXlFdmVudEZsYWdzUGxheWJhY2tXYXNQcmV2ZW50ZWQ7CisgICAg
aWYgKGZsYWdzLmNvbnRhaW5zKFdlYkNvcmU6OkF1dG9wbGF5RXZlbnRGbGFnczo6TWVkaWFJc01h
aW5Db250ZW50KSkKKyAgICAgICAgd2tGbGFncyB8PSBfV0tBdXRvcGxheUV2ZW50RmxhZ3NNZWRp
YUlzTWFpbkNvbnRlbnQ7CisgICAgCisgICAgcmV0dXJuIHdrRmxhZ3M7Cit9CisKK3N0YXRpYyBf
V0tBdXRvcGxheUV2ZW50IHRvV0tBdXRvcGxheUV2ZW50KFdlYkNvcmU6OkF1dG9wbGF5RXZlbnQg
ZXZlbnQpCit7CisgICAgc3dpdGNoIChldmVudCkgeworICAgIGNhc2UgV2ViQ29yZTo6QXV0b3Bs
YXlFdmVudDo6RGlkUHJldmVudE1lZGlhRnJvbVBsYXlpbmc6CisgICAgICAgIHJldHVybiBfV0tB
dXRvcGxheUV2ZW50RGlkUHJldmVudEZyb21BdXRvcGxheWluZzsKKyAgICBjYXNlIFdlYkNvcmU6
OkF1dG9wbGF5RXZlbnQ6OkRpZFBsYXlNZWRpYVdpdGhVc2VyR2VzdHVyZToKKyAgICAgICAgcmV0
dXJuIF9XS0F1dG9wbGF5RXZlbnREaWRQbGF5TWVkaWFXaXRoVXNlckdlc3R1cmU7CisgICAgY2Fz
ZSBXZWJDb3JlOjpBdXRvcGxheUV2ZW50OjpEaWRBdXRvcGxheU1lZGlhUGFzdFRocmVzaG9sZFdp
dGhvdXRVc2VySW50ZXJmZXJlbmNlOgorICAgICAgICByZXR1cm4gX1dLQXV0b3BsYXlFdmVudERp
ZEF1dG9wbGF5TWVkaWFQYXN0VGhyZXNob2xkV2l0aG91dFVzZXJJbnRlcmZlcmVuY2U7CisgICAg
Y2FzZSBXZWJDb3JlOjpBdXRvcGxheUV2ZW50OjpVc2VyRGlkSW50ZXJmZXJlV2l0aFBsYXliYWNr
OgorICAgICAgICByZXR1cm4gX1dLQXV0b3BsYXlFdmVudFVzZXJEaWRJbnRlcmZlcmVXaXRoUGxh
eWJhY2s7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBfV0tB
dXRvcGxheUV2ZW50RGlkUGxheU1lZGlhV2l0aFVzZXJHZXN0dXJlOworfQorCit2b2lkIFVJRGVs
ZWdhdGU6OlVJQ2xpZW50OjpoYW5kbGVBdXRvcGxheUV2ZW50KFdlYlBhZ2VQcm94eSYsIFdlYkNv
cmU6OkF1dG9wbGF5RXZlbnQgZXZlbnQsIE9wdGlvblNldDxXZWJDb3JlOjpBdXRvcGxheUV2ZW50
RmxhZ3M+IGZsYWdzKQoreworICAgIGlmICghbV91aURlbGVnYXRlLm1fZGVsZWdhdGVNZXRob2Rz
LndlYlZpZXdIYW5kbGVBdXRvcGxheUV2ZW50V2l0aEZsYWdzKQorICAgICAgICByZXR1cm47Cisg
ICAgCisgICAgYXV0byBkZWxlZ2F0ZSA9IG1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRlLmdldCgpOwor
ICAgIGlmICghZGVsZWdhdGUpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBbKGlkIDxXS1VJ
RGVsZWdhdGVQcml2YXRlPilkZWxlZ2F0ZSBfd2ViVmlldzptX3VpRGVsZWdhdGUubV93ZWJWaWV3
IGhhbmRsZUF1dG9wbGF5RXZlbnQ6dG9XS0F1dG9wbGF5RXZlbnQoZXZlbnQpIHdpdGhGbGFnczp0
b1dLQXV0b3BsYXlFdmVudEZsYWdzKGZsYWdzKV07Cit9CisKICNpZiBQTEFURk9STShNQUMpCiBi
b29sIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpjYW5SdW5Nb2RhbCgpIGNvbnN0CiB7CkBAIC03MDQs
MzUgKzc0NSw2IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6Om1vdXNlRGlkTW92ZU92ZXJF
bGVtZW50KFdlYlBhZ2VQcm94eSYsIGNvbnN0IFdlYkhpdFRlCiAgICAgWyhpZCA8V0tVSURlbGVn
YXRlUHJpdmF0ZT4pZGVsZWdhdGUgX3dlYlZpZXc6bV91aURlbGVnYXRlLm1fd2ViVmlldyBtb3Vz
ZURpZE1vdmVPdmVyRWxlbWVudDp3cmFwcGVyKGFwaUhpdFRlc3RSZXN1bHQuZ2V0KCkpIHdpdGhG
bGFnczpXZWJFdmVudEZhY3Rvcnk6OnRvTlNFdmVudE1vZGlmaWVyRmxhZ3MobW9kaWZpZXJzKSB1
c2VySW5mbzp1c2VySW5mbyA/IHN0YXRpY19jYXN0PGlkIDxOU1NlY3VyZUNvZGluZz4+KHVzZXJJ
bmZvLT53cmFwcGVyKCkpIDogbmlsXTsKIH0KIAotc3RhdGljIF9XS0F1dG9wbGF5RXZlbnRGbGFn
cyB0b1dLQXV0b3BsYXlFdmVudEZsYWdzKE9wdGlvblNldDxXZWJDb3JlOjpBdXRvcGxheUV2ZW50
RmxhZ3M+IGZsYWdzKQotewotICAgIF9XS0F1dG9wbGF5RXZlbnRGbGFncyB3a0ZsYWdzID0gX1dL
QXV0b3BsYXlFdmVudEZsYWdzTm9uZTsKLSAgICBpZiAoZmxhZ3MuY29udGFpbnMoV2ViQ29yZTo6
QXV0b3BsYXlFdmVudEZsYWdzOjpIYXNBdWRpbykpCi0gICAgICAgIHdrRmxhZ3MgfD0gX1dLQXV0
b3BsYXlFdmVudEZsYWdzSGFzQXVkaW87Ci0gICAgaWYgKGZsYWdzLmNvbnRhaW5zKFdlYkNvcmU6
OkF1dG9wbGF5RXZlbnRGbGFnczo6UGxheWJhY2tXYXNQcmV2ZW50ZWQpKQotICAgICAgICB3a0Zs
YWdzIHw9IF9XS0F1dG9wbGF5RXZlbnRGbGFnc1BsYXliYWNrV2FzUHJldmVudGVkOwotICAgIGlm
IChmbGFncy5jb250YWlucyhXZWJDb3JlOjpBdXRvcGxheUV2ZW50RmxhZ3M6Ok1lZGlhSXNNYWlu
Q29udGVudCkpCi0gICAgICAgIHdrRmxhZ3MgfD0gX1dLQXV0b3BsYXlFdmVudEZsYWdzTWVkaWFJ
c01haW5Db250ZW50OwotICAgIAotICAgIHJldHVybiB3a0ZsYWdzOwotfQotCi1zdGF0aWMgX1dL
QXV0b3BsYXlFdmVudCB0b1dLQXV0b3BsYXlFdmVudChXZWJDb3JlOjpBdXRvcGxheUV2ZW50IGV2
ZW50KQotewotICAgIHN3aXRjaCAoZXZlbnQpIHsKLSAgICBjYXNlIFdlYkNvcmU6OkF1dG9wbGF5
RXZlbnQ6OkRpZFByZXZlbnRNZWRpYUZyb21QbGF5aW5nOgotICAgICAgICByZXR1cm4gX1dLQXV0
b3BsYXlFdmVudERpZFByZXZlbnRGcm9tQXV0b3BsYXlpbmc7Ci0gICAgY2FzZSBXZWJDb3JlOjpB
dXRvcGxheUV2ZW50OjpEaWRQbGF5TWVkaWFXaXRoVXNlckdlc3R1cmU6Ci0gICAgICAgIHJldHVy
biBfV0tBdXRvcGxheUV2ZW50RGlkUGxheU1lZGlhV2l0aFVzZXJHZXN0dXJlOwotICAgIGNhc2Ug
V2ViQ29yZTo6QXV0b3BsYXlFdmVudDo6RGlkQXV0b3BsYXlNZWRpYVBhc3RUaHJlc2hvbGRXaXRo
b3V0VXNlckludGVyZmVyZW5jZToKLSAgICAgICAgcmV0dXJuIF9XS0F1dG9wbGF5RXZlbnREaWRB
dXRvcGxheU1lZGlhUGFzdFRocmVzaG9sZFdpdGhvdXRVc2VySW50ZXJmZXJlbmNlOwotICAgIGNh
c2UgV2ViQ29yZTo6QXV0b3BsYXlFdmVudDo6VXNlckRpZEludGVyZmVyZVdpdGhQbGF5YmFjazoK
LSAgICAgICAgcmV0dXJuIF9XS0F1dG9wbGF5RXZlbnRVc2VyRGlkSW50ZXJmZXJlV2l0aFBsYXli
YWNrOwotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gX1dLQXV0
b3BsYXlFdmVudERpZFBsYXlNZWRpYVdpdGhVc2VyR2VzdHVyZTsKLX0KLQogdm9pZCBVSURlbGVn
YXRlOjpVSUNsaWVudDo6dG9vbGJhcnNBcmVWaXNpYmxlKFdlYlBhZ2VQcm94eSYsIEZ1bmN0aW9u
PHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFtX3VpRGVsZWdh
dGUubV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0dldFRvb2xiYXJzQXJlVmlzaWJsZVdpdGhDb21w
bGV0aW9uSGFuZGxlcikKQEAgLTc2MiwxOCArNzc0LDYgQEAgdm9pZCBVSURlbGVnYXRlOjpVSUNs
aWVudDo6ZGlkQ2xpY2tBdXRvRmlsbEJ1dHRvbihXZWJQYWdlUHJveHkmLCBBUEk6Ok9iamVjdCog
dXMKICAgICBbKGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPilkZWxlZ2F0ZSBfd2ViVmlldzptX3Vp
RGVsZWdhdGUubV93ZWJWaWV3IGRpZENsaWNrQXV0b0ZpbGxCdXR0b25XaXRoVXNlckluZm86dXNl
ckluZm8gPyBzdGF0aWNfY2FzdDxpZCA8TlNTZWN1cmVDb2Rpbmc+Pih1c2VySW5mby0+d3JhcHBl
cigpKSA6IG5pbF07CiB9CiAKLXZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmhhbmRsZUF1dG9w
bGF5RXZlbnQoV2ViUGFnZVByb3h5JiwgV2ViQ29yZTo6QXV0b3BsYXlFdmVudCBldmVudCwgT3B0
aW9uU2V0PFdlYkNvcmU6OkF1dG9wbGF5RXZlbnRGbGFncz4gZmxhZ3MpCi17Ci0gICAgaWYgKCFt
X3VpRGVsZWdhdGUubV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0hhbmRsZUF1dG9wbGF5RXZlbnRX
aXRoRmxhZ3MpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBhdXRvIGRlbGVnYXRlID0gbV91
aURlbGVnYXRlLm1fZGVsZWdhdGUuZ2V0KCk7Ci0gICAgaWYgKCFkZWxlZ2F0ZSkKLSAgICAgICAg
cmV0dXJuOwotICAgIAotICAgIFsoaWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+KWRlbGVnYXRlIF93
ZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcgaGFuZGxlQXV0b3BsYXlFdmVudDp0b1dLQXV0
b3BsYXlFdmVudChldmVudCkgd2l0aEZsYWdzOnRvV0tBdXRvcGxheUV2ZW50RmxhZ3MoZmxhZ3Mp
XTsKLX0KLQogdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6c2hvd1BhZ2UoV2ViUGFnZVByb3h5
KikKIHsKICAgICBpZiAoIW1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRlTWV0aG9kcy5zaG93V2ViVmll
dykKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBk
MjRlODVlMDUyZGQ4NmUyYzNkOGE0NmU3ZWU2MDY5NGE5ODQzYjdiLi44YzkxNmIxZWU1ZmIyN2Fj
YjgwZjIwOWMyZWQ2OTkwOTQwOGExZGZlIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysr
IGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMjAtMDEtMTQgIEx1bWluZyBZ
aW4gIDxsdW1pbmdfeWluQGFwcGxlLmNvbT4KKworICAgICAgICBVcGRhdGUgQVBJIGF2YWlsYWJp
bGl0eSBmb3IgYXV0b3BsYXkgZXZlbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwMjIxNAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTU3MTAzOTU+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9qcy1wbGF5LXdpdGgtY29udHJvbHMuaHRtbDoKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL2F1ZGlvLXdpdGgtcGxheS1idXR0
b24uaHRtbDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3ZpZGVv
LXdpdGgtcGxheS1idXR0b24uaHRtbDoKKyAgICAgICAgUHJvdmlkZSBhbiBpZCBmb3IgZWFjaCBw
bGF5IGJ1dHRvbiBvbiB2YXJpb3VzIHRlc3RpbmcgcGFnZXMgc28gdGhhdCB0aGV5IGNhbiBiZSB0
cmlnZ2VyZWQgb24gaU9TLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9XZWJzaXRlUG9saWNpZXMubW06CisgICAgICAgICgtW0F1dG9wbGF5UG9saWNpZXNEZWxl
Z2F0ZSBfd2ViVmlldzpoYW5kbGVBdXRvcGxheUV2ZW50OndpdGhGbGFnczpdKToKKyAgICAgICAg
KC1bQXN5bmNBdXRvcGxheVBvbGljaWVzRGVsZWdhdGUgX3dlYlZpZXc6aGFuZGxlQXV0b3BsYXlF
dmVudDp3aXRoRmxhZ3M6XSk6CisgICAgICAgIChURVNUKToKKyAgICAgICAgRW5hYmxlIHRlc3Rz
IHJlbGF0ZWQgdG8gYXV0b3BsYXkgcG9saWN5IG9uIGlPUy4KKworICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29j
b2EvVGVzdFdLV2ViVmlldy5tbToKKyAgICAgICAgKC1bVGVzdFdLV2ViVmlldyBjbGlja09uRWxl
bWVudElEOl0pOgorICAgICAgICBIZWxwZXIgbWV0aG9kIHRoYXQgcGVyZm9ybXMgYSBjbGljayBv
biBhIGdpdmVuIGVsZW1lbnQgSUQuCisKIDIwMjAtMDEtMTAgIEppZXdlbiBUYW4gIDxqaWV3ZW5f
dGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViQXV0aG5dIEltcGxlbWVudCBTUEkgdG8gdGVs
bCBVSSBjbGllbnRzIHRvIHNlbGVjdCBhc3NlcnRpb24gcmVzcG9uc2VzCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9qcy1wbGF5LXdpdGgtY29udHJvbHMuaHRt
bCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L2pzLXBsYXktd2l0aC1jb250cm9s
cy5odG1sCmluZGV4IDg3ZmFkMzU3MDY4YWVmOTc2ZTM1MzMwOWEyYjM4ZGQ4MmZhYWE0YmIuLmQ0
ZWM0NWRjODlhMDA2ODMxMzgyZTMyNDA5NTk1ZjNiYTg4MGI1ZmUgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L2pzLXBsYXktd2l0aC1jb250cm9scy5odG1sCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L2pzLXBsYXktd2l0aC1jb250cm9s
cy5odG1sCkBAIC0zNCw4ICszNCw4IEBACiAgICAgICAgIDwvc2NyaXB0PgogICAgIDwvaGVhZD4K
ICAgICA8Ym9keSBvbmxvYWQ9InBhZ2VMb2FkZWQoKSI+Ci0gICAgICAgIDxidXR0b24gb25jbGlj
az0icGxheSgpIj5QbGF5PC9idXR0b24+Ci0gICAgICAgIDxidXR0b24gb25jbGljaz0ibXV0ZSgp
Ij5NdXRlPC9idXR0b24+CisgICAgICAgIDxidXR0b24gaWQ9InBsYXlCdXR0b24iIG9uY2xpY2s9
InBsYXkoKSI+UGxheTwvYnV0dG9uPgorICAgICAgICA8YnV0dG9uIGlkPSJtdXRlQnV0dG9uIiBv
bmNsaWNrPSJtdXRlKCkiPk11dGU8L2J1dHRvbj4KICAgICAgICAgPHZpZGVvIGlkPSJ2aWRlbyIg
b25wbGF5aW5nPWJlZ2FuUGxheWluZygpIG9uZW5kZWQ9ZW5kZWRQbGF5aW5nKCkgc3JjPSJ0ZXN0
Lm1wNCIgLz4KICAgICA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVQb2xpY2llcy5tbSBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZVBvbGljaWVzLm1tCmluZGV4IDM0NDll
YTMxZmJmY2Q4Yjc4Zjk2NGE3MGQ5ZTIyNDc1ZmQ2OTQzODcuLmRkNzljNWRkMGNmY2JiMGE4YzA4
Mjk2ZmFjNjM3NmU5N2I3OGMxOTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvV2Vic2l0ZVBvbGljaWVzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZVBvbGljaWVzLm1tCkBAIC02MywxMCArNjMsOCBA
QCBzdGF0aWMgYm9vbCBkb25lQ29tcGlsaW5nOwogc3RhdGljIGJvb2wgcmVjZWl2ZWRBbGVydDsK
IHN0YXRpYyBib29sIGZpbmlzaGVkTmF2aWdhdGlvbjsKIAotI2lmIFBMQVRGT1JNKE1BQykKIHN0
YXRpYyBPcHRpb25hbDxfV0tBdXRvcGxheUV2ZW50PiByZWNlaXZlZEF1dG9wbGF5RXZlbnQ7CiBz
dGF0aWMgT3B0aW9uYWw8X1dLQXV0b3BsYXlFdmVudEZsYWdzPiByZWNlaXZlZEF1dG9wbGF5RXZl
bnRGbGFnczsKLSNlbmRpZgogCiBzdGF0aWMgc2l6ZV90IGFsZXJ0Q291bnQ7CiAKQEAgLTE5OCwx
MyArMTk2LDExIEBAIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOihXS05hdmlnYXRpCiAgICAgZGVjaXNpb25IYW5kbGVy
KFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93LCB3ZWJzaXRlUG9saWNpZXMpOwogfQogCi0j
aWYgUExBVEZPUk0oTUFDKQogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBo
YW5kbGVBdXRvcGxheUV2ZW50OihfV0tBdXRvcGxheUV2ZW50KWV2ZW50IHdpdGhGbGFnczooX1dL
QXV0b3BsYXlFdmVudEZsYWdzKWZsYWdzCiB7CiAgICAgcmVjZWl2ZWRBdXRvcGxheUV2ZW50Rmxh
Z3MgPSBmbGFnczsKICAgICByZWNlaXZlZEF1dG9wbGF5RXZlbnQgPSBldmVudDsKIH0KLSNlbmRp
ZgogCiBAZW5kCiAKQEAgLTIzNCwxMyArMjMwLDExIEBAIC0gKHZvaWQpd2ViVmlldzooV0tXZWJW
aWV3ICopd2ViVmlldyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOihXS05hdmlnYXRp
CiAgICAgfSk7CiB9CiAKLSNpZiBQTEFURk9STShNQUMpCiAtICh2b2lkKV93ZWJWaWV3OihXS1dl
YlZpZXcgKil3ZWJWaWV3IGhhbmRsZUF1dG9wbGF5RXZlbnQ6KF9XS0F1dG9wbGF5RXZlbnQpZXZl
bnQgd2l0aEZsYWdzOihfV0tBdXRvcGxheUV2ZW50RmxhZ3MpZmxhZ3MKIHsKICAgICByZWNlaXZl
ZEF1dG9wbGF5RXZlbnRGbGFncyA9IGZsYWdzOwogICAgIHJlY2VpdmVkQXV0b3BsYXlFdmVudCA9
IGV2ZW50OwogfQotI2VuZGlmCiAKIEBlbmQKIApAQCAtMjY1LDcgKzI1OSw4IEBAIFRFU1QoV2Vi
cGFnZVByZWZlcmVuY2VzLCBXZWJzaXRlUG9saWNpZXNBdXRvcGxheUVuYWJsZWQpCiAgICAgYXV0
byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2Nd
IGluaXRdKTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgW2NvbmZpZ3VyYXRpb24g
c2V0QWxsb3dzSW5saW5lTWVkaWFQbGF5YmFjazpZRVNdOworICAgIGNvbmZpZ3VyYXRpb24uZ2V0
KCkuYWxsb3dzSW5saW5lTWVkaWFQbGF5YmFjayA9IFlFUzsKKyAgICBjb25maWd1cmF0aW9uLmdl
dCgpLl9pbmxpbmVNZWRpYVBsYXliYWNrUmVxdWlyZXNQbGF5c0lubGluZUF0dHJpYnV0ZSA9IE5P
OwogI2VuZGlmCiAKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0
aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKQEAgLTM1NCwxMyArMzQ5LDEzIEBAIFRFU1QoV2Vi
cGFnZVByZWZlcmVuY2VzLCBXZWJzaXRlUG9saWNpZXNBdXRvcGxheUVuYWJsZWQpCiAgICAgW3dl
YlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJkaWQtbm90LXBsYXkiXTsKIH0KIAotI2lmIFBMQVRGT1JN
KE1BQykKIHN0YXRpYyB2b2lkIHJ1blVudGlsUmVjZWl2ZXNBdXRvcGxheUV2ZW50KFdLQXV0b3Bs
YXlFdmVudCBldmVudCkKIHsKICAgICB3aGlsZSAoIXJlY2VpdmVkQXV0b3BsYXlFdmVudCB8fCAq
cmVjZWl2ZWRBdXRvcGxheUV2ZW50ICE9IGV2ZW50KQogICAgICAgICBDRlJ1bkxvb3BSdW5Jbk1v
ZGUoa0NGUnVuTG9vcERlZmF1bHRNb2RlLCAwLjEsIHRydWUpOwogfQogCisjaWYgUExBVEZPUk0o
TUFDKQogVEVTVChXZWJwYWdlUHJlZmVyZW5jZXMsIFdlYnNpdGVQb2xpY2llc1BsYXlBZnRlclBy
ZXZlbnRlZEF1dG9wbGF5KQogewogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tX
S1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CkBAIC00MzEsMTAgKzQyNiwxNiBA
QCBURVNUKFdlYnBhZ2VQcmVmZXJlbmNlcywgV2Vic2l0ZVBvbGljaWVzUGxheUFmdGVyUHJldmVu
dGVkQXV0b3BsYXkpCiAgICAgQVNTRVJUX1RSVUUoKnJlY2VpdmVkQXV0b3BsYXlFdmVudEZsYWdz
ICYga1dLQXV0b3BsYXlFdmVudEZsYWdzSGFzQXVkaW8pOwogICAgIEFTU0VSVF9UUlVFKCpyZWNl
aXZlZEF1dG9wbGF5RXZlbnRGbGFncyAmIGtXS0F1dG9wbGF5RXZlbnRGbGFnc1BsYXliYWNrV2Fz
UHJldmVudGVkKTsKIH0KKyNlbmRpZgogCiBURVNUKFdlYnBhZ2VQcmVmZXJlbmNlcywgV2Vic2l0
ZVBvbGljaWVzUGxheWluZ1dpdGhVc2VyR2VzdHVyZSkKIHsKICAgICBhdXRvIGNvbmZpZ3VyYXRp
b24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgY29uZmlndXJhdGlvbi5nZXQoKS5hbGxvd3NJbmxp
bmVNZWRpYVBsYXliYWNrID0gWUVTOworICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkuX2lubGluZU1l
ZGlhUGxheWJhY2tSZXF1aXJlc1BsYXlzSW5saW5lQXR0cmlidXRlID0gTk87CisjZW5kaWYKKwog
ICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0
aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJh
dGlvbi5nZXQoKV0pOwogCiAgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tBdXRvcGxheVBv
bGljaWVzRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKQEAgLTQ0NiwxMyArNDQ3LDIwIEBAIFRFU1Qo
V2VicGFnZVByZWZlcmVuY2VzLCBXZWJzaXRlUG9saWNpZXNQbGF5aW5nV2l0aFVzZXJHZXN0dXJl
KQogCiAgICAgcmVjZWl2ZWRBdXRvcGxheUV2ZW50ID0gV1RGOjpudWxsb3B0OwogCisjaWYgUExB
VEZPUk0oTUFDKQogICAgIE5TUG9pbnQgcGxheUJ1dHRvbkNsaWNrUG9pbnQgPSBOU01ha2VQb2lu
dCgyMCwgNTgwKTsKKyNlbmRpZgogCiAgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJM
UmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291
cmNlOkAiYXVkaW8td2l0aC1wbGF5LWJ1dHRvbiIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRp
cmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dOwogICAgIFt3ZWJWaWV3IGxvYWRS
ZXF1ZXN0OnJlcXVlc3RdOwogICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAibG9hZGVkIl07
CisKKyNpZiBQTEFURk9STShNQUMpCiAgICAgW3dlYlZpZXcgbW91c2VEb3duQXRQb2ludDpwbGF5
QnV0dG9uQ2xpY2tQb2ludCBzaW11bGF0ZVByZXNzdXJlOk5PXTsKICAgICBbd2ViVmlldyBtb3Vz
ZVVwQXRQb2ludDpwbGF5QnV0dG9uQ2xpY2tQb2ludF07CisjZWxzZQorICAgIFt3ZWJWaWV3IGNs
aWNrT25FbGVtZW50SUQ6QCJwbGF5QnV0dG9uIl07CisjZW5kaWYKIAogICAgIHJ1blVudGlsUmVj
ZWl2ZXNBdXRvcGxheUV2ZW50KGtXS0F1dG9wbGF5RXZlbnREaWRQbGF5TWVkaWFXaXRoVXNlckdl
c3R1cmUpOwogICAgIEFTU0VSVF9UUlVFKCpyZWNlaXZlZEF1dG9wbGF5RXZlbnRGbGFncyAmIGtX
S0F1dG9wbGF5RXZlbnRGbGFnc0hhc0F1ZGlvKTsKQEAgLTQ2Myw4ICs0NzEsMTMgQEAgVEVTVChX
ZWJwYWdlUHJlZmVyZW5jZXMsIFdlYnNpdGVQb2xpY2llc1BsYXlpbmdXaXRoVXNlckdlc3R1cmUp
CiAgICAgcmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBt
YWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInZpZGVvLXdpdGgtcGxheS1idXR0b24iIHdpdGhF
eHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJd
XTsKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKICAgICBbd2ViVmlldyB3YWl0
Rm9yTWVzc2FnZTpAImxvYWRlZCJdOworCisjaWYgUExBVEZPUk0oTUFDKQogICAgIFt3ZWJWaWV3
IG1vdXNlRG93bkF0UG9pbnQ6cGxheUJ1dHRvbkNsaWNrUG9pbnQgc2ltdWxhdGVQcmVzc3VyZTpO
T107CiAgICAgW3dlYlZpZXcgbW91c2VVcEF0UG9pbnQ6cGxheUJ1dHRvbkNsaWNrUG9pbnRdOwor
I2Vsc2UKKyAgICBbd2ViVmlldyBjbGlja09uRWxlbWVudElEOkAicGxheUJ1dHRvbiJdOworI2Vu
ZGlmCiAKICAgICBydW5VbnRpbFJlY2VpdmVzQXV0b3BsYXlFdmVudChrV0tBdXRvcGxheUV2ZW50
RGlkUGxheU1lZGlhV2l0aFVzZXJHZXN0dXJlKTsKICAgICBBU1NFUlRfVFJVRSgqcmVjZWl2ZWRB
dXRvcGxheUV2ZW50RmxhZ3MgJiBrV0tBdXRvcGxheUV2ZW50RmxhZ3NIYXNBdWRpbyk7CkBAIC00
NzQsNiArNDg3LDExIEBAIFRFU1QoV2VicGFnZVByZWZlcmVuY2VzLCBXZWJzaXRlUG9saWNpZXNQ
bGF5aW5nV2l0aFVzZXJHZXN0dXJlKQogVEVTVChXZWJwYWdlUHJlZmVyZW5jZXMsIFdlYnNpdGVQ
b2xpY2llc1BsYXlpbmdXaXRob3V0SW50ZXJmZXJlbmNlKQogewogICAgIGF1dG8gY29uZmlndXJh
dGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Cisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBjb25maWd1cmF0aW9uLmdldCgpLmFsbG93c0lu
bGluZU1lZGlhUGxheWJhY2sgPSBZRVM7CisgICAgY29uZmlndXJhdGlvbi5nZXQoKS5faW5saW5l
TWVkaWFQbGF5YmFja1JlcXVpcmVzUGxheXNJbmxpbmVBdHRyaWJ1dGUgPSBOTzsKKyNlbmRpZgor
CiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAzMzYsIDI3NikgY29uZmlndXJhdGlvbjpjb25maWd1
cmF0aW9uLmdldCgpXSk7CiAKICAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW0F1dG9wbGF5
UG9saWNpZXNEZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwpAQCAtNDkzLDYgKzUxMSwxMSBAQCBURVNU
KFdlYnBhZ2VQcmVmZXJlbmNlcywgV2Vic2l0ZVBvbGljaWVzUGxheWluZ1dpdGhvdXRJbnRlcmZl
cmVuY2UpCiBURVNUKFdlYnBhZ2VQcmVmZXJlbmNlcywgV2Vic2l0ZVBvbGljaWVzVXNlckludGVy
ZmVyZW5jZVdpdGhQbGF5aW5nKQogewogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMo
W1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKKyAgICBjb25maWd1cmF0aW9uLmdldCgpLmFsbG93c0lubGluZU1lZGlhUGxheWJh
Y2sgPSBZRVM7CisgICAgY29uZmlndXJhdGlvbi5nZXQoKS5faW5saW5lTWVkaWFQbGF5YmFja1Jl
cXVpcmVzUGxheXNJbmxpbmVBdHRyaWJ1dGUgPSBOTzsKKyNlbmRpZgorCiAgICAgYXV0byB3ZWJW
aWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtl
UmVjdCgwLCAwLCAzMzYsIDI3NikgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7
CiAKICAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW0F1dG9wbGF5UG9saWNpZXNEZWxlZ2F0
ZSBhbGxvY10gaW5pdF0pOwpAQCAtNTE3LDkgKzU0MCwxNCBAQCBURVNUKFdlYnBhZ2VQcmVmZXJl
bmNlcywgV2Vic2l0ZVBvbGljaWVzVXNlckludGVyZmVyZW5jZVdpdGhQbGF5aW5nKQogICAgIFt3
ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAicGxheWluZyJdOwogICAgIEFTU0VSVF9UUlVFKHJlY2Vp
dmVkQXV0b3BsYXlFdmVudCA9PSBXVEY6Om51bGxvcHQpOwogCisjaWYgUExBVEZPUk0oTUFDKQog
ICAgIGNvbnN0IE5TUG9pbnQgbXV0ZUJ1dHRvbkNsaWNrUG9pbnQgPSBOU01ha2VQb2ludCg4MCwg
MjU2KTsKICAgICBbd2ViVmlldyBtb3VzZURvd25BdFBvaW50Om11dGVCdXR0b25DbGlja1BvaW50
IHNpbXVsYXRlUHJlc3N1cmU6Tk9dOwogICAgIFt3ZWJWaWV3IG1vdXNlVXBBdFBvaW50Om11dGVC
dXR0b25DbGlja1BvaW50XTsKKyNlbHNlCisgICAgW3dlYlZpZXcgY2xpY2tPbkVsZW1lbnRJRDpA
Im11dGVCdXR0b24iXTsKKyNlbmRpZgorCiAgICAgcnVuVW50aWxSZWNlaXZlc0F1dG9wbGF5RXZl
bnQoa1dLQXV0b3BsYXlFdmVudFVzZXJEaWRJbnRlcmZlcmVXaXRoUGxheWJhY2spOwogICAgIEFT
U0VSVF9UUlVFKCpyZWNlaXZlZEF1dG9wbGF5RXZlbnRGbGFncyAmIGtXS0F1dG9wbGF5RXZlbnRG
bGFnc0hhc0F1ZGlvKTsKIApAQCAtNTI4LDEzICs1NTYsMTkgQEAgVEVTVChXZWJwYWdlUHJlZmVy
ZW5jZXMsIFdlYnNpdGVQb2xpY2llc1VzZXJJbnRlcmZlcmVuY2VXaXRoUGxheWluZykKICAgICBb
d2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpAInBsYXlpbmciXTsKICAgICBBU1NFUlRfVFJVRShyZWNl
aXZlZEF1dG9wbGF5RXZlbnQgPT0gV1RGOjpudWxsb3B0KTsKIAorI2lmIFBMQVRGT1JNKE1BQykK
ICAgICBjb25zdCBOU1BvaW50IHBsYXlCdXR0b25DbGlja1BvaW50ID0gTlNNYWtlUG9pbnQoMjAs
IDI1Nik7CiAgICAgW3dlYlZpZXcgbW91c2VEb3duQXRQb2ludDpwbGF5QnV0dG9uQ2xpY2tQb2lu
dCBzaW11bGF0ZVByZXNzdXJlOk5PXTsKICAgICBbd2ViVmlldyBtb3VzZVVwQXRQb2ludDpwbGF5
QnV0dG9uQ2xpY2tQb2ludF07CisjZWxzZQorICAgIFt3ZWJWaWV3IGNsaWNrT25FbGVtZW50SUQ6
QCJwbGF5QnV0dG9uIl07CisjZW5kaWYKKwogICAgIHJ1blVudGlsUmVjZWl2ZXNBdXRvcGxheUV2
ZW50KGtXS0F1dG9wbGF5RXZlbnRVc2VyRGlkSW50ZXJmZXJlV2l0aFBsYXliYWNrKTsKICAgICBB
U1NFUlRfVFJVRSgqcmVjZWl2ZWRBdXRvcGxheUV2ZW50RmxhZ3MgJiBrV0tBdXRvcGxheUV2ZW50
RmxhZ3NIYXNBdWRpbyk7CiB9CiAKKyNpZiBQTEFURk9STShNQUMpCiBURVNUKFdlYnBhZ2VQcmVm
ZXJlbmNlcywgV2Vic2l0ZVBvbGljaWVzUGVyRG9jdW1lbnRBdXRvcGxheUJlaGF2aW9yTWVkaWFM
b2FkaW5nKQogewogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdD
b25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CkBAIC03MTMsMTAgKzc0NywxNiBAQCBURVNUKFdl
YnBhZ2VQcmVmZXJlbmNlcywgV2Vic2l0ZVBvbGljaWVzRHVyaW5nUmVkaXJlY3QpCiAgICAgW3dl
YlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJM
V2l0aFN0cmluZzpAInRlc3Q6Ly8vc2hvdWxkLXJlZGlyZWN0Il1dXTsKICAgICBbd2ViVmlldyB3
YWl0Rm9yTWVzc2FnZTpAImF1dG9wbGF5ZWQiXTsKIH0KKyNlbmRpZiAvLyBQTEFURk9STShNQUMp
CiAKIFRFU1QoV2VicGFnZVByZWZlcmVuY2VzLCBXZWJzaXRlUG9saWNpZXNVcGRhdGVzKQogewog
ICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9u
IGFsbG9jXSBpbml0XSk7CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBjb25maWd1cmF0
aW9uLmdldCgpLmFsbG93c0lubGluZU1lZGlhUGxheWJhY2sgPSBZRVM7CisgICAgY29uZmlndXJh
dGlvbi5nZXQoKS5faW5saW5lTWVkaWFQbGF5YmFja1JlcXVpcmVzUGxheXNJbmxpbmVBdHRyaWJ1
dGUgPSBOTzsKKyNlbmRpZgorCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dl
YlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29u
ZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAgICAgYXV0byBkZWxlZ2F0ZSA9IGFk
b3B0TlMoW1tBdXRvcGxheVBvbGljaWVzRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKICAgICBbd2Vi
VmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwpAQCAtNzUwLDYgKzc5
MCw3IEBAIFRFU1QoV2VicGFnZVByZWZlcmVuY2VzLCBXZWJzaXRlUG9saWNpZXNVcGRhdGVzKQog
ICAgIHJ1blVudGlsUmVjZWl2ZXNBdXRvcGxheUV2ZW50KGtXS0F1dG9wbGF5RXZlbnREaWRQcmV2
ZW50RnJvbUF1dG9wbGF5aW5nKTsKIH0KIAorI2lmIFBMQVRGT1JNKE1BQykKIFRFU1QoV2VicGFn
ZVByZWZlcmVuY2VzLCBXZWJzaXRlUG9saWNpZXNBcmJpdHJhcnlVc2VyR2VzdHVyZVF1aXJrKQog
ewogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0
aW9uIGFsbG9jXSBpbml0XSk7CkBAIC05MDMsMTkgKzk0NCwyMSBAQCBURVNUKFdlYnBhZ2VQcmVm
ZXJlbmNlcywgV2Vic2l0ZVBvbGljaWVzUGVyRG9jdW1lbnRBdXRvcGxheUJlaGF2aW9yUXVpcmtz
KQogICAgIFt3ZWJWaWV3IF9ldmFsdWF0ZUphdmFTY3JpcHRXaXRob3V0VXNlckdlc3R1cmU6QCJw
bGF5VmlkZW8oJ3ZpZGVvMicpIiBjb21wbGV0aW9uSGFuZGxlcjpuaWxdOwogICAgIFt3ZWJWaWV3
IHdhaXRGb3JNZXNzYWdlOkAiZGlkLW5vdC1wbGF5LXZpZGVvMiJdOwogfQorI2VuZGlmCiAKIFRF
U1QoV2VicGFnZVByZWZlcmVuY2VzLCBXZWJzaXRlUG9saWNpZXNBdXRvcGxheVF1aXJrc0FzeW5j
UG9saWN5RGVsZWdhdGUpCiB7CiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQorICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkuYWxsb3dzSW5saW5lTWVkaWFQbGF5YmFjayA9
IFlFUzsKKyAgICBjb25maWd1cmF0aW9uLmdldCgpLl9pbmxpbmVNZWRpYVBsYXliYWNrUmVxdWly
ZXNQbGF5c0lubGluZUF0dHJpYnV0ZSA9IE5POworI2VuZGlmCisgICAgW2NvbmZpZ3VyYXRpb24g
cHJlZmVyZW5jZXNdLl9uZWVkc1NpdGVTcGVjaWZpY1F1aXJrcyA9IFlFUzsKICAgICBhdXRvIHdl
YlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01h
a2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCld
KTsKIAogICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbQXN5bmNBdXRvcGxheVBvbGljaWVz
RGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKICAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdh
dGU6ZGVsZWdhdGUuZ2V0KCldOwogCi0gICAgV0tSZXRhaW5QdHI8V0tQcmVmZXJlbmNlc1JlZj4g
cHJlZmVyZW5jZXMgPSBhZG9wdFdLKFdLUHJlZmVyZW5jZXNDcmVhdGUoKSk7Ci0gICAgV0tQcmVm
ZXJlbmNlc1NldE5lZWRzU2l0ZVNwZWNpZmljUXVpcmtzKHByZWZlcmVuY2VzLmdldCgpLCB0cnVl
KTsKLSAgICBXS1BhZ2VHcm91cFNldFByZWZlcmVuY2VzKFdLUGFnZUdldFBhZ2VHcm91cChbd2Vi
VmlldyBfcGFnZUZvclRlc3RpbmddKSwgcHJlZmVyZW5jZXMuZ2V0KCkpOwotCiAgICAgTlNVUkxS
ZXF1ZXN0ICpyZXF1ZXN0V2l0aEF1ZGlvID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpb
W05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAiYXV0b3BsYXktY2hlY2siIHdp
dGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNl
cyJdXTsKIAogICAgIFtkZWxlZ2F0ZSBzZXRBbGxvd2VkQXV0b3BsYXlRdWlya3NGb3JVUkw6Xl9X
S1dlYnNpdGVBdXRvcGxheVF1aXJrKE5TVVJMICp1cmwpIHsKQEAgLTk0Niw3ICs5ODksNiBAQCBU
RVNUKFdlYnBhZ2VQcmVmZXJlbmNlcywgV2Vic2l0ZVBvbGljaWVzQXV0b3BsYXlRdWlya3NBc3lu
Y1BvbGljeURlbGVnYXRlKQogICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAiZGlkLW5vdC1w
bGF5Il07CiAgICAgW3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJvbi1wYXVzZSJdOwogfQotI2Vu
ZGlmIC8vIFBMQVRGT1JNKE1BQykKIAogVEVTVChXZWJwYWdlUHJlZmVyZW5jZXMsIEludmFsaWRD
dXN0b21IZWFkZXJzKQogewpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9hdWRpby13aXRoLXBsYXktYnV0dG9uLmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL2F1ZGlvLXdpdGgtcGxheS1idXR0b24uaHRtbAppbmRleCA3
ZjNlZGU1ZWZmMWY3YzA1ODk4YTJjNTM5YWEzYjQxNGYyNzAzOGJhLi5iOTkwNTMxMWM0YzI1YjU0
NDlhMjc3OTJlMzdjZTUxMGMwNDhmMzU3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL2F1ZGlvLXdpdGgtcGxheS1idXR0b24uaHRtbAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL2F1ZGlvLXdpdGgtcGxheS1idXR0b24u
aHRtbApAQCAtMjEsNyArMjEsNyBAQAogICAgICAgICA8L3NjcmlwdD4KICAgICA8L2hlYWQ+CiAg
ICAgPGJvZHkgb25sb2FkPSJwYWdlTG9hZGVkKCkiPgotICAgICAgICA8YnV0dG9uIG9uY2xpY2s9
InBsYXkoKSI+UGxheTwvYnV0dG9uPgorICAgICAgICA8YnV0dG9uIGlkPSJwbGF5QnV0dG9uIiBv
bmNsaWNrPSJwbGF5KCkiPlBsYXk8L2J1dHRvbj4KICAgICAgICAgPGJyIC8+CiAgICAgICAgIDxh
dWRpbyBjb250cm9scyBpZD0iYXVkaW8iIG9ucGxheWluZz0iYmVnYW5QbGF5aW5nKCkiIHNyYz0i
c2lsZW5jZS1sb25nLm00YSIgLz4KICAgICA8L2JvZHk+CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3ZpZGVvLXdpdGgtcGxheS1idXR0b24uaHRtbCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvdmlkZW8td2l0aC1wbGF5LWJ1
dHRvbi5odG1sCmluZGV4IGMwYTFhYjI2ZDk2NWRhMDc2OWIzYTE0OThmMjRiNjAwOTliZTc4OTYu
LjM1OGZhZTYyNTNlNDY2ZWVlZDk2YjVkMDgwYmIxMGM3YWM1NzA4MTYgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvdmlkZW8td2l0aC1wbGF5LWJ1dHRv
bi5odG1sCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvdmlkZW8t
d2l0aC1wbGF5LWJ1dHRvbi5odG1sCkBAIC0yMSw3ICsyMSw3IEBACiAgICAgICAgIDwvc2NyaXB0
PgogICAgIDwvaGVhZD4KICAgICA8Ym9keSBvbmxvYWQ9InBhZ2VMb2FkZWQoKSI+Ci0gICAgICAg
IDxidXR0b24gb25jbGljaz0icGxheSgpIj5QbGF5PC9idXR0b24+CisgICAgICAgIDxidXR0b24g
aWQ9InBsYXlCdXR0b24iIG9uY2xpY2s9InBsYXkoKSI+UGxheTwvYnV0dG9uPgogICAgICAgICA8
YnIgLz4KICAgICAgICAgPHZpZGVvIGNvbnRyb2xzIGlkPSJ2aWRlbyIgb25wbGF5aW5nPSJiZWdh
blBsYXlpbmcoKSIgc3JjPSJsb25nLXRlc3QubXA0Ij48L3ZpZGVvPgogICAgIDwvYm9keT4KZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5oIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3LmgKaW5kZXggM2NjNDM0YTVkMjVl
MGU4ZDNkNzdmOGI5NWFmYTJkYzY5NGMyZjE3YS4uZDhlNzVkYzNjMGRjNGI1YTQzNmYyZmZlY2I5
NjY3NzRlNjhjNTg5ZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0
V0tXZWJWaWV3LmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3
LmgKQEAgLTg2LDYgKzg2LDcgQEAKIC0gKHZvaWQpY29sbGFwc2VUb0VuZDsKIC0gKHZvaWQpYWRk
VG9UZXN0V2luZG93OwogLSAoQk9PTClzZWxlY3Rpb25SYW5nZUhhc1N0YXJ0T2Zmc2V0OihpbnQp
c3RhcnQgZW5kT2Zmc2V0OihpbnQpZW5kOworLSAodm9pZCljbGlja09uRWxlbWVudElEOihOU1N0
cmluZyAqKWVsZW1lbnRJRDsKIEBlbmQKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0gYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0KaW5kZXggNzRhZDU4MTI1MDE2
YzAzMWY4YzVlNGVkYmI5NDhlMTgwNWViNTUwZS4uZjg3M2E2NjVjOWQyNzJmZjI2Mjg4NWRmZTI2
OWJhMzFkZDE3NWZjOCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0
V0tXZWJWaWV3Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmll
dy5tbQpAQCAtNTE1LDYgKzUxNSwxMSBAQCAtIChCT09MKXNlbGVjdGlvblJhbmdlSGFzU3RhcnRP
ZmZzZXQ6KGludClzdGFydCBlbmRPZmZzZXQ6KGludCllbmQKICAgICByZXR1cm4gbWF0Y2hlczsK
IH0KIAorLSAodm9pZCljbGlja09uRWxlbWVudElEOihOU1N0cmluZyAqKWVsZW1lbnRJRAorewor
ICAgIFtzZWxmIGV2YWx1YXRlSmF2YVNjcmlwdDpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpA
ImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCclQCcpLmNsaWNrKCk7IiwgZWxlbWVudElEXSBjb21w
bGV0aW9uSGFuZGxlcjpuaWxdOworfQorCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogLSAo
dm9pZClkaWRTdGFydEZvcm1Db250cm9sSW50ZXJhY3Rpb24K
</data>

          </attachment>
      

    </bug>

</bugzilla>