<?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>190621</bug_id>
          
          <creation_ts>2018-10-16 09:19:59 -0700</creation_ts>
          <short_desc>[iOS] [Datalist] Can&apos;t pick datalist suggestions in a stock WKWebView</short_desc>
          <delta_ts>2018-10-19 15:00:42 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Forms</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>pxlcoder</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>1469735</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-10-16 09:19:59 -0700</bug_when>
    <thetext>CRASHING TEST: fast/forms/datalist/datalist-textinput-keydown.html
*** Terminating app due to uncaught exception &apos;WebKitTestRunnerTestProblem&apos;, reason: &apos;The test completed before all synthesized events had been handled. Perhaps you&apos;re calling notifyDone() too early?&apos;
terminating with uncaught exception of type NSException
abort() called
CoreSimulator 576 - Device: iPhone SE - Runtime: iOS 12.0 (16A405) - DeviceType: iPhone SE

Application Specific Backtrace 1:
0   CoreFoundation                      0x000000011717c29b __exceptionPreprocess + 331
1   libobjc.A.dylib                     0x0000000111691735 objc_exception_throw + 48
2   CoreFoundation                      0x000000011717c0f5 +[NSException raise:format:] + 197
3   WebKitTestRunnerApp                 0x000000010b988f52 _ZN3WTR18UIScriptController28checkForOutstandingCallbacksEv + 98
4   WebKitTestRunnerApp                 0x000000010b980edb _ZN3WTR15UIScriptContextD2Ev + 43
5   WebKitTestRunnerApp                 0x000000010b980fd5 _ZN3WTR15UIScriptContextD1Ev + 21
6   WebKitTestRunnerApp                 0x000000010b97268e _ZN3WTR14TestInvocationD2Ev + 238
7   WebKitTestRunnerApp                 0x000000010b9727a5 _ZN3WTR14TestInvocationD1Ev + 21
8   WebKitTestRunnerApp                 0x000000010b94205a _ZN3WTR14TestController7runTestEPKc + 2314
9   WebKitTestRunnerApp                 0x000000010b945d69 _ZN3WTR14TestController20runTestingServerLoopEv + 265
10  WebKitTestRunnerApp                 0x000000010b932786 _ZN3WTR14TestController3runEv + 54
11  WebKitTestRunnerApp                 0x000000010b932109 _ZN3WTR14TestControllerC2EiPPKc + 1497
12  WebKitTestRunnerApp                 0x000000010b932963 _ZN3WTR14TestControllerC1EiPPKc + 35
13  WebKitTestRunnerApp                 0x000000010b91e66f -[WebKitTestRunnerApp _runTestController] + 47
14  Foundation                          0x0000000110f44e7b __NSThreadPerformPerform + 330
15  CoreFoundation                      0x00000001170dfb31 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
16  CoreFoundation                      0x00000001170df464 __CFRunLoopDoSources0 + 436
17  CoreFoundation                      0x00000001170d9a4f __CFRunLoopRun + 1263
18  CoreFoundation                      0x00000001170d9221 CFRunLoopRunSpecific + 625
19  GraphicsServices                    0x00000001121131dd GSEventRunModal + 62
20  UIKitCore                           0x000000012fbd5431 UIApplicationMain + 140
21  WebKitTestRunnerApp                 0x000000010b91e81c main + 140
22  libdyld.dylib                       0x0000000112527551 start + 1
23  ???                                 0x0000000000000002 0x0 + 2

Looks like this test needs to be adjusted to wait for HIDEventGenerator to finish dispatchhing HID events.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1469774</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-10-16 10:42:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/45310649&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1470740</commentid>
    <comment_count>2</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-10-18 16:52:29 -0700</bug_when>
    <thetext>As it turns out, the datalist suggestions dropdown doesn&apos;t quite work in a plain WKWebView unless the WKWebView has a _WKInputDelegate that responds to -_webView:(did|will)StartInputSession:, since it depends on WebKit creating a _WKFormInputSession that we can specify a customInputView with text suggestions.

We should refactor this slightly to decouple datalists from _WKFormInputSession.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1470776</commentid>
    <comment_count>3</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-10-18 20:37:05 -0700</bug_when>
    <thetext>Renaming to track the above issue (with a test fix for fast/forms/datalist/datalist-textinput-suggestions-order.html en route to fixing the bug).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1470787</commentid>
    <comment_count>4</comment_count>
      <attachid>352762</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-10-18 21:09:46 -0700</bug_when>
    <thetext>Created attachment 352762
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1470791</commentid>
    <comment_count>5</comment_count>
      <attachid>352762</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2018-10-18 21:31:51 -0700</bug_when>
    <thetext>Comment on attachment 352762
Patch

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

&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.h:253
&gt; +    RetainPtr&lt;UIView&lt;WKFormControl&gt;&gt; _dataListTextSuggestionsInputView;
&gt; +    RetainPtr&lt;NSArray&lt;UITextSuggestion *&gt;&gt; _dataListTextSuggestions;

Sooooooo I don&apos;t know if WebKit style has a preference, but I usually go with &quot;Class &lt;ConformsToProtocol&gt;&quot; but &quot;Class&lt;GenericType&gt;&quot;. AppKit public headers seem to agree.

&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:398
&gt; +    if (suggestions == _suggestions || [suggestions isEqualToArray:_suggestions.get()])

This reads humorously but I think it&apos;s right since you want nil to compare equal.

&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:4805
&gt; +    // Text suggestions vended from internal clients take precedence over text suggestions from a focused form control with a datalist.

Why &quot;internal&quot; clients? What does that even mean? Aren&apos;t clients external by definition?

&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:4808
&gt; +    if ([_formInputSession suggestions].count) {
&gt; +        [inputDelegate setSuggestions:[_formInputSession suggestions]];

If I&apos;m reading this right, `suggestions` calls straight to the client, so you should definitely only call it once and store the result here; no need to be so chatty with the client!

&gt; Tools/WebKitTestRunner/UIScriptControllerCocoa.mm:48
&gt; +    [TestController::singleton().mainWebView()-&gt;platformView() resignFirstResponder];

Do we ... fix this ... when the next test starts?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1470872</commentid>
    <comment_count>6</comment_count>
      <attachid>352762</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-10-19 09:03:34 -0700</bug_when>
    <thetext>Comment on attachment 352762
Patch

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

&gt;&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.h:253
&gt;&gt; +    RetainPtr&lt;NSArray&lt;UITextSuggestion *&gt;&gt; _dataListTextSuggestions;
&gt; 
&gt; Sooooooo I don&apos;t know if WebKit style has a preference, but I usually go with &quot;Class &lt;ConformsToProtocol&gt;&quot; but &quot;Class&lt;GenericType&gt;&quot;. AppKit public headers seem to agree.

Ah, ok. (If I understand correctly, you mean this should be `RetainPtr&lt;UIView &lt;WKFormControl&gt;&gt;` and `RetainPtr&lt;NSArray&lt;UITextSuggestion *&gt;&gt;`?)

&gt;&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:398
&gt;&gt; +    if (suggestions == _suggestions || [suggestions isEqualToArray:_suggestions.get()])
&gt; 
&gt; This reads humorously but I think it&apos;s right since you want nil to compare equal.

Yep, that was the intention!

&gt;&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:4805
&gt;&gt; +    // Text suggestions vended from internal clients take precedence over text suggestions from a focused form control with a datalist.
&gt; 
&gt; Why &quot;internal&quot; clients? What does that even mean? Aren&apos;t clients external by definition?

Oops, I really meant clients of our SPI (here at Apple). Changed &quot;internal clients&quot; to just &quot;clients&quot;.

&gt;&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:4808
&gt;&gt; +        [inputDelegate setSuggestions:[_formInputSession suggestions]];
&gt; 
&gt; If I&apos;m reading this right, `suggestions` calls straight to the client, so you should definitely only call it once and store the result here; no need to be so chatty with the client!

Hm...do you mean the call to `[_formInputSession suggestions]`? The concrete class (WKFormInputSession) implements -suggestions as a simple RetainPtr::get(), so I don&apos;t think we&apos;ll be double-calling our client here.

But it&apos;s probably still a good idea to stash the result in a temporary though, so I changed this to only call -suggestions once.

&gt;&gt; Tools/WebKitTestRunner/UIScriptControllerCocoa.mm:48
&gt;&gt; +    [TestController::singleton().mainWebView()-&gt;platformView() resignFirstResponder];
&gt; 
&gt; Do we ... fix this ... when the next test starts?

🤔 good point. We should probably ensure that we&apos;re first responder when we reset the web view to a consistent state in WKTR. My understanding is that layout tests shouldn&apos;t actually care whether the web view is FR prior to running the test. The relatively few tests that do care (e.g. tests that insert text in a text field) would all do something to ensure that the web view is FR, if necessary (e.g. by tapping something on the web view).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1470904</commentid>
    <comment_count>7</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-10-19 10:06:35 -0700</bug_when>
    <thetext>(In reply to Wenson Hsieh from comment #6)
&gt; (…)
&gt; &gt;&gt; Tools/WebKitTestRunner/UIScriptControllerCocoa.mm:48
&gt; &gt;&gt; +    [TestController::singleton().mainWebView()-&gt;platformView() resignFirstResponder];
&gt; &gt; 
&gt; &gt; Do we ... fix this ... when the next test starts?
&gt; 
&gt; 🤔 good point. We should probably ensure that we&apos;re first responder when we
&gt; reset the web view to a consistent state in WKTR (…)

So we do (in fact) try to become first responder on macOS when resetting to a consistent state, inside of TestController::resetStateToConsistentValues (see the call to `m_mainWebView-&gt;focus()`). However, this turns around and calls `PlatformWebView::makeWebViewFirstResponder()` which, on iOS, is just a stub.

I think we just need to implement this stub (and fix one other edge case on iOS where we might continue onto the next test without being FR).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1470924</commentid>
    <comment_count>8</comment_count>
      <attachid>352802</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-10-19 10:56:07 -0700</bug_when>
    <thetext>Created attachment 352802
EWS run</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1470998</commentid>
    <comment_count>9</comment_count>
      <attachid>352802</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-10-19 15:00:40 -0700</bug_when>
    <thetext>Comment on attachment 352802
EWS run

Clearing flags on attachment: 352802

Committed r237305: &lt;https://trac.webkit.org/changeset/237305&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1470999</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-10-19 15:00:42 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>352762</attachid>
            <date>2018-10-18 21:09:46 -0700</date>
            <delta_ts>2018-10-19 10:56:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190621-20181018210945.patch</filename>
            <type>text/plain</type>
            <size>28413</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3Mjc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDRlNjQwMWJlNTA3ZWUzZDg1
ZDY0Y2UzZjE1OWZiNGJlZjVkYjIwOTQuLmM3NjEyZWRjMzdlZDY5OTBlYTU3MWE1NmYyODJmZjBi
MmE3Yjk1YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzAgQEAKKzIwMTgtMTAtMTggIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gW0RhdGFsaXN0
XSBDYW4ndCBwaWNrIGRhdGFsaXN0IHN1Z2dlc3Rpb25zIGluIGEgc3RvY2sgV0tXZWJWaWV3Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA2MjEKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ1MzEwNjQ5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeGVzIHRoZSBidWcgYnkgcmVmYWN0b3JpbmcgZGF0
YWxpc3Qgc3VnZ2VzdGlvbiBpbmZvcm1hdGlvbiBvbiBpT1M7IGN1cnJlbnRseSwgd2Ugb3ZlcnJp
ZGUgdGV4dCBzdWdnZXN0aW9ucyBvbgorICAgICAgICBfV0tGb3JtSW5wdXRTZXNzaW9uLiBUaGlz
IG9ubHkgd29ya3MgZm9yIGEgZmV3IGludGVybmFsIGNsaWVudHMgKGluY2x1ZGluZyBTYWZhcmkp
IHRoYXQgc2V0IGEgX1dLSW5wdXREZWxlZ2F0ZQorICAgICAgICBhbmQgYWxzbyBpbXBsZW1lbnQg
ZWl0aGVyIC1fd2ViVmlldzp3aWxsU3RhcnRJbnB1dFNlc3Npb246IG9yIC1fd2ViVmlldzpkaWRT
dGFydElucHV0U2Vzc2lvbjosIHdoaWNoIGlzCisgICAgICAgIG5lY2Vzc2FyeSBpbiBvcmRlciB0
byBlbnN1cmUgdGhhdCBXZWJLaXQgY3JlYXRlcyBhbmQgbWFpbnRhaW5zIGEgZm9ybSBpbnB1dCBz
ZXNzaW9uLgorCisgICAgICAgIFRoZSB0d28gcGllY2VzIG9mIGluZm9ybWF0aW9uIHRoYXQgZGF0
YWxpc3QgY29kZSBuZWVkcyB0byB2ZW5kIHRvIFdLQ29udGVudFZpZXcgYXJlIGEgbGlzdCBvZiBV
SVRleHRTdWdnZXN0aW9ucworICAgICAgICBhbmQgYSBjdXN0b20gaW5wdXQgdmlldywgd2hpY2gg
YXJlIGJvdGggY3VycmVudGx5IHByb3BlcnRpZXMgb2YgX1dLRm9ybUlucHV0U2Vzc2lvbi4gVGhp
cyBwYXRjaCBsaWZ0cyB0aGVzZSBvdXQKKyAgICAgICAgb2YgdGhlIGlucHV0IHNlc3Npb24gYW5k
IG1ha2VzIHRoZW0gcHJvcGVydGllcyBvZiBXS0NvbnRlbnRWaWV3LCB3aGljaCBhcmUgdXNlZCBp
bgorICAgICAgICBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1MuCisKKyAgICAgICAg
VGVzdDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9kYXRhbGlzdC9kYXRhbGlzdC10ZXh0aW5wdXQt
c3VnZ2VzdGlvbnMtb3JkZXIuaHRtbAorCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRl
bnRWaWV3SW50ZXJhY3Rpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXdJbnRlcmFjdGlvbi5tbToKKworICAgICAgICBBZGQgbmV3IHByb3BlcnRpZXMgdG8gV0tDb250
ZW50VmlldzogYW4gaW5wdXQgdmlldyBmb3IgZGF0YWxpc3Qgc3VnZ2VzdGlvbnMsIGFuZCBhIGxp
c3Qgb2YgdGV4dCBzdWdnZXN0aW9ucy4KKworICAgICAgICAoLVtXS0Zvcm1JbnB1dFNlc3Npb24g
c2V0U3VnZ2VzdGlvbnM6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgc2V0dXBJbnRlcmFj
dGlvbl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGNsZWFudXBJbnRlcmFjdGlvbl0pOgor
ICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9lbmRFZGl0aW5nXSk6CisKKyAgICAgICAgUHVsbCBv
dXQgY29tbW9uIGxvZ2ljIHdoZW4gcmVzaWduaW5nIGZpcnN0IHJlc3BvbmRlciBvciB0YWJiaW5n
IHRvIHRoZSBuZXh0IG9yIHByZXZpb3VzIHRleHQgZmllbGQgaW50byBhIG5ldworICAgICAgICBo
ZWxwZXIuIFRoaXMgaGVscGVyIG5vdGlmaWVzIGBfaW5wdXRQZXJpcGhlcmFsYCwgYF9mb3JtSW5w
dXRTZXNzaW9uYCwgYW5kIGBfZGF0YUxpc3RUZXh0U3VnZ2VzdGlvbnNJbnB1dFZpZXdgCisgICAg
ICAgIHdoZW4gZWRpdGluZyBoYXMgZW5kZWQ7IHRoZSBpbnB1dCBwZXJpcGhlcmFsIGFuZCBzdWdn
ZXN0aW9ucyBpbnB1dCB2aWV3IHVzZSB0aGlzIGNoYW5jZSB0byBzZW5kIHRoZSB2YWx1ZSBvZiB0
aGUKKyAgICAgICAgZm9ybSBjb250cm9sIHRvIHRoZSB3ZWIgcHJvY2Vzcy4KKworICAgICAgICAo
LVtXS0NvbnRlbnRWaWV3IHJlc2lnbkZpcnN0UmVzcG9uZGVyRm9yV2ViVmlld10pOgorICAgICAg
ICAoLVtXS0NvbnRlbnRWaWV3IGlucHV0Vmlld10pOgorCisgICAgICAgIElmIGEgY3VzdG9tIGlu
cHV0IHZpZXcgaXMgbm90IHNldCBidXQgd2UgaGF2ZSBhbiBpbnB1dCB2aWV3IGZvciBhIGRhdGFs
aXN0J3MgdGV4dCBzdWdnZXN0aW9ucywgdXNlIHRoZSBkYXRhbGlzdAorICAgICAgICBpbnB1dCB2
aWV3LgorCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgYWNjZXNzb3J5VGFiOl0pOgorICAgICAg
ICAoLVtXS0NvbnRlbnRWaWV3IF9zdG9wQXNzaXN0aW5nTm9kZV0pOgorCisgICAgICAgIENsZWFy
IGRhdGFsaXN0IHN0YXRlIG9uIFdLQ29udGVudFZpZXcuCisKKyAgICAgICAgKC1bV0tDb250ZW50
VmlldyBkYXRhTGlzdFRleHRTdWdnZXN0aW9uc0lucHV0Vmlld10pOgorICAgICAgICAoLVtXS0Nv
bnRlbnRWaWV3IGRhdGFMaXN0VGV4dFN1Z2dlc3Rpb25zXSk6CisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgc2V0RGF0YUxpc3RUZXh0U3VnZ2VzdGlvbnNJbnB1dFZpZXc6XSk6CisgICAgICAgICgt
W1dLQ29udGVudFZpZXcgc2V0RGF0YUxpc3RUZXh0U3VnZ2VzdGlvbnM6XSk6CisgICAgICAgICgt
W1dLQ29udGVudFZpZXcgdXBkYXRlVGV4dFN1Z2dlc3Rpb25zRm9ySW5wdXREZWxlZ2F0ZV0pOgor
CisgICAgICAgIFB1bGwgb3V0IGxvZ2ljIGZvciBzZXR0aW5nIHN1Z2dlc3Rpb25zIG9uIFVJS2l0
J3MgYGlucHV0RGVsZWdhdGVgIChpLmUuIFVJS2V5Ym9hcmRJbXBsKS4gV2Ugbm93IGZpcnN0IGNv
bnN1bHQKKyAgICAgICAgaW50ZXJuYWxseS12ZW5kZWQgdGV4dCBzdWdnZXN0aW9ucyBmcm9tIF9X
S0Zvcm1JbnB1dFNlc3Npb247IGlmIGFuIGludGVybmFsIGNsaWVudCBoYXMgbm90IG92ZXJyaWRk
ZW4gb3VyIHRleHQKKyAgICAgICAgc3VnZ2VzdGlvbnMsIHRoZW4gd2Ugc2ltcGx5IHVzZSBzdWdn
ZXN0aW9ucyBmcm9tIHRoZSBjdXJyZW50IGRhdGFsaXN0IChpZiBwcmVzZW50KS4KKworICAgICAg
ICAqIFVJUHJvY2Vzcy9pb3MvV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TLm1tOgor
ICAgICAgICAoLVtXS0RhdGFMaXN0U3VnZ2VzdGlvbnNQaWNrZXIgdXBkYXRlV2l0aEluZm9ybWF0
aW9uOl0pOgorICAgICAgICAoLVtXS0RhdGFMaXN0U3VnZ2VzdGlvbnNQaWNrZXIgc2hvd1N1Z2dl
c3Rpb25zRHJvcGRvd246YWN0aXZhdGlvblR5cGU6XSk6CisgICAgICAgICgtW1dLRGF0YUxpc3RT
dWdnZXN0aW9uc1BpY2tlciBpbnZhbGlkYXRlXSk6CisgICAgICAgICgtW1dLRGF0YUxpc3RTdWdn
ZXN0aW9uc1BvcG92ZXIgdXBkYXRlV2l0aEluZm9ybWF0aW9uOl0pOgorICAgICAgICAoLVtXS0Rh
dGFMaXN0U3VnZ2VzdGlvbnNQb3BvdmVyIHNob3dTdWdnZXN0aW9uc0Ryb3Bkb3duOmFjdGl2YXRp
b25UeXBlOl0pOgorICAgICAgICAoLVtXS0RhdGFMaXN0U3VnZ2VzdGlvbnNQb3BvdmVyIGRpZFNl
bGVjdE9wdGlvbkF0SW5kZXg6XSk6CisKKyAgICAgICAgQ2hhbmdlIGFsbCB0aGUgcGxhY2VzIHRo
YXQgY3VycmVudGx5IG1hbmlwdWxhdGUgV0tDb250ZW50VmlldydzIGZvcm0gaW5wdXQgc2Vzc2lv
biB0byBkaXJlY3RseSBzZXQgdGV4dAorICAgICAgICBzdWdnZXN0aW9ucyBhbmQgdGhlIHRleHQg
c3VnZ2VzdGlvbiBpbnB1dCB2aWV3IG9uIHRoZSBjb250ZW50IHZpZXcgaW5zdGVhZC4KKwogMjAx
OC0xMC0xOCAgVHJ1aXR0IFNhdmVsbCAgPHRzYXZlbGxAYXBwbGUuY29tPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMzcyNzIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKaW5kZXggOGUzY2RmZTIw
MGQ0ZjFiODczM2FiN2Q0NjE3MTc0MjU1YjZiYmNhOC4uNzNmZGEyZDVmZGQ3NWE0ZjA4OWZiYjYz
NWEwZWY0OTFhMTAwZjhlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaApAQCAtMTU5LDYgKzE1OSw3IEBAIHN0cnVj
dCBXS0F1dG9Db3JyZWN0aW9uRGF0YSB7CiB9CiAKIEBjbGFzcyBXS0ZvY3VzZWRFbGVtZW50SW5m
bzsKK0Bwcm90b2NvbCBXS0Zvcm1Db250cm9sOwogCiBAaW50ZXJmYWNlIFdLRm9ybUlucHV0U2Vz
c2lvbiA6IE5TT2JqZWN0IDxfV0tGb3JtSW5wdXRTZXNzaW9uPgogCkBAIC0yNDcsNiArMjQ4LDEx
IEBAIHN0cnVjdCBXS0F1dG9Db3JyZWN0aW9uRGF0YSB7CiAKICAgICBSZXRhaW5QdHI8V0tLZXli
b2FyZFNjcm9sbFZpZXdBbmltYXRvcj4gX2tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3I7CiAKKyNp
ZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKKyAgICBSZXRhaW5QdHI8VUlWaWV3PFdLRm9ybUNv
bnRyb2w+PiBfZGF0YUxpc3RUZXh0U3VnZ2VzdGlvbnNJbnB1dFZpZXc7CisgICAgUmV0YWluUHRy
PE5TQXJyYXk8VUlUZXh0U3VnZ2VzdGlvbiAqPj4gX2RhdGFMaXN0VGV4dFN1Z2dlc3Rpb25zOwor
I2VuZGlmCisKICAgICBCT09MIF9pc0VkaXRhYmxlOwogICAgIEJPT0wgX3Nob3dpbmdUZXh0U3R5
bGVPcHRpb25zOwogICAgIEJPT0wgX2hhc1ZhbGlkUG9zaXRpb25JbmZvcm1hdGlvbjsKQEAgLTMx
MSw2ICszMTcsMTEgQEAgc3RydWN0IFdLQXV0b0NvcnJlY3Rpb25EYXRhIHsKIEBwcm9wZXJ0eSAo
bm9uYXRvbWljLCByZWFkb25seSkgVUlXZWJGb3JtQWNjZXNzb3J5ICpmb3JtQWNjZXNzb3J5Vmll
dzsKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIHN1cHByZXNzQXNzaXN0YW50U2VsZWN0aW9u
VmlldzsKIAorI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQorQHByb3BlcnR5IChub25hdG9t
aWMsIHN0cm9uZykgVUlWaWV3PFdLRm9ybUNvbnRyb2w+ICpkYXRhTGlzdFRleHRTdWdnZXN0aW9u
c0lucHV0VmlldzsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBzdHJvbmcpIE5TQXJyYXk8VUlUZXh0
U3VnZ2VzdGlvbiAqPiAqZGF0YUxpc3RUZXh0U3VnZ2VzdGlvbnM7CisjZW5kaWYKKwogLSAodm9p
ZClzZXR1cEludGVyYWN0aW9uOwogLSAodm9pZCljbGVhbnVwSW50ZXJhY3Rpb247CiAKQEAgLTM5
Miw2ICs0MDMsMTAgQEAgREVDTEFSRV9XS0NPTlRFTlRWSUVXX0FDVElPTl9GT1JfV0VCX1ZJRVco
X3Bhc3RlQXNRdW90YXRpb24pCiAKIC0gKHZvaWQpcmVsb2FkQ29udGV4dFZpZXdGb3JQcmVzZW50
ZWRMaXN0Vmlld0NvbnRyb2xsZXI7CiAKKyNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKKy0g
KHZvaWQpdXBkYXRlVGV4dFN1Z2dlc3Rpb25zRm9ySW5wdXREZWxlZ2F0ZTsKKyNlbmRpZgorCiBA
ZW5kCiAKIEBpbnRlcmZhY2UgV0tDb250ZW50VmlldyAoV0tUZXN0aW5nKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0K
aW5kZXggNDZkNDU0Y2ZlNGU2NzNkZGE2ZWYzMTdhNmUzZmYwMmUwZWY4ZTVjOC4uNWRhNGJmYTBk
NDBiNGQ3NmIxNDZkNzI0NzE2YmYxYTNmZTExOTJjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC0zOTUs
MTUgKzM5NSwxMSBAQCBjb25zdCBDR0Zsb2F0IG1pbmltdW1UYXBIaWdobGlnaHRSYWRpdXMgPSAy
LjA7CiAKIC0gKHZvaWQpc2V0U3VnZ2VzdGlvbnM6KE5TQXJyYXk8VUlUZXh0U3VnZ2VzdGlvbiAq
PiAqKXN1Z2dlc3Rpb25zCiB7Ci0gICAgLy8gU3VnZ2VzdGlvbnMgdGhhdCBjb21lIGZyb20gYSA8
ZGF0YWxpc3Q+IHNob3VsZCBub3QgYmUgb3ZlcndyaXR0ZW4gYnkgb3RoZXIgY2xpZW50cy4KLSNp
ZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKLSAgICBpZiAoW19jb250ZW50VmlldyBhc3Npc3Rl
ZE5vZGVJbmZvcm1hdGlvbl0uaGFzU3VnZ2VzdGlvbnMgJiYgIVtzdWdnZXN0aW9ucy5maXJzdE9i
amVjdCBpc0tpbmRPZkNsYXNzOltXS0RhdGFMaXN0VGV4dFN1Z2dlc3Rpb24gY2xhc3NdXSkKKyAg
ICBpZiAoc3VnZ2VzdGlvbnMgPT0gX3N1Z2dlc3Rpb25zIHx8IFtzdWdnZXN0aW9ucyBpc0VxdWFs
VG9BcnJheTpfc3VnZ2VzdGlvbnMuZ2V0KCldKQogICAgICAgICByZXR1cm47Ci0jZW5kaWYKIAot
ICAgIGlkIDxVSVRleHRJbnB1dFN1Z2dlc3Rpb25EZWxlZ2F0ZT4gc3VnZ2VzdGlvbkRlbGVnYXRl
ID0gKGlkIDxVSVRleHRJbnB1dFN1Z2dlc3Rpb25EZWxlZ2F0ZT4pW19jb250ZW50VmlldyBpbnB1
dERlbGVnYXRlXTsKICAgICBfc3VnZ2VzdGlvbnMgPSBhZG9wdE5TKFtzdWdnZXN0aW9ucyBjb3B5
XSk7Ci0gICAgW3N1Z2dlc3Rpb25EZWxlZ2F0ZSBzZXRTdWdnZXN0aW9uczpzdWdnZXN0aW9uc107
CisgICAgW19jb250ZW50VmlldyB1cGRhdGVUZXh0U3VnZ2VzdGlvbnNGb3JJbnB1dERlbGVnYXRl
XTsKIH0KIAogLSAoQk9PTClyZXF1aXJlc1N0cm9uZ1Bhc3N3b3JkQXNzaXN0YW5jZQpAQCAtNzEy
LDYgKzcwOCwxMSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaGFzQXNzaXN0ZWROb2RlKFdlYktpdDo6
QXNzaXN0ZWROb2RlSW5mb3JtYXRpb24gYXNzaXN0ZWROb2RlSQogICAgIF9uZWVkc0RlZmVycmVk
RW5kU2Nyb2xsaW5nU2VsZWN0aW9uVXBkYXRlID0gTk87CiAgICAgX2lzQ2hhbmdpbmdGb2N1cyA9
IE5POwogICAgIF9pc0JsdXJyaW5nRm9jdXNlZE5vZGUgPSBOTzsKKworI2lmIEVOQUJMRShEQVRB
TElTVF9FTEVNRU5UKQorICAgIF9kYXRhTGlzdFRleHRTdWdnZXN0aW9uc0lucHV0VmlldyA9IG5p
bDsKKyAgICBfZGF0YUxpc3RUZXh0U3VnZ2VzdGlvbnMgPSBuaWw7CisjZW5kaWYKIH0KIAogLSAo
dm9pZCljbGVhbnVwSW50ZXJhY3Rpb24KQEAgLTgwNyw2ICs4MDgsMTEgQEAgc3RhdGljIGlubGlu
ZSBib29sIGhhc0Fzc2lzdGVkTm9kZShXZWJLaXQ6OkFzc2lzdGVkTm9kZUluZm9ybWF0aW9uIGFz
c2lzdGVkTm9kZUkKICAgICAKICAgICBbX2tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IgaW52YWxp
ZGF0ZV07CiAgICAgX2tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IgPSBuaWw7CisKKyNpZiBFTkFC
TEUoREFUQUxJU1RfRUxFTUVOVCkKKyAgICBfZGF0YUxpc3RUZXh0U3VnZ2VzdGlvbnNJbnB1dFZp
ZXcgPSBuaWw7CisgICAgX2RhdGFMaXN0VGV4dFN1Z2dlc3Rpb25zID0gbmlsOworI2VuZGlmCiB9
CiAKIC0gKHZvaWQpX3JlbW92ZURlZmF1bHRHZXN0dXJlUmVjb2duaXplcnMKQEAgLTk2OCw2ICs5
NzQsMTUgQEAgc3RhdGljIGlubGluZSBib29sIGhhc0Fzc2lzdGVkTm9kZShXZWJLaXQ6OkFzc2lz
dGVkTm9kZUluZm9ybWF0aW9uIGFzc2lzdGVkTm9kZUkKICAgICByZXR1cm4gWUVTOwogfQogCist
ICh2b2lkKV9lbmRFZGl0aW5nCit7CisgICAgW19pbnB1dFBlcmlwaGVyYWwgZW5kRWRpdGluZ107
CisgICAgW19mb3JtSW5wdXRTZXNzaW9uIGVuZEVkaXRpbmddOworI2lmIEVOQUJMRShEQVRBTElT
VF9FTEVNRU5UKQorICAgIFtfZGF0YUxpc3RUZXh0U3VnZ2VzdGlvbnNJbnB1dFZpZXcgY29udHJv
bEVuZEVkaXRpbmddOworI2VuZGlmCit9CisKIC0gKEJPT0wpY2FuQmVjb21lRmlyc3RSZXNwb25k
ZXIKIHsKICAgICByZXR1cm4gX2JlY29taW5nRmlyc3RSZXNwb25kZXI7CkBAIC0xMDE3LDkgKzEw
MzIsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaGFzQXNzaXN0ZWROb2RlKFdlYktpdDo6QXNzaXN0
ZWROb2RlSW5mb3JtYXRpb24gYXNzaXN0ZWROb2RlSQogICAgIF9yZXNpZ25pbmdGaXJzdFJlc3Bv
bmRlciA9IFlFUzsKICAgICBpZiAoIV93ZWJWaWV3Ll9yZXRhaW5pbmdBY3RpdmVGb2N1c2VkU3Rh
dGUpIHsKICAgICAgICAgLy8gV2UgbmVlZCB0byBjb21wbGV0ZSB0aGUgZWRpdGluZyBvcGVyYXRp
b24gYmVmb3JlIHdlIGJsdXIgdGhlIGVsZW1lbnQuCi0gICAgICAgIFtfaW5wdXRQZXJpcGhlcmFs
IGVuZEVkaXRpbmddOwotICAgICAgICBbX2Zvcm1JbnB1dFNlc3Npb24gZW5kRWRpdGluZ107Ci0K
KyAgICAgICAgW3NlbGYgX2VuZEVkaXRpbmddOwogICAgICAgICBfcGFnZS0+Ymx1ckFzc2lzdGVk
Tm9kZSgpOwogICAgIH0KIApAQCAtMTM2Miw3ICsxMzc1LDE1IEBAIHN0YXRpYyBOU1ZhbHVlICpu
c1NpemVGb3JUYXBIaWdobGlnaHRCb3JkZXJSYWRpdXMoV2ViQ29yZTo6SW50U2l6ZSBib3JkZXJS
YWRpdXMsCiAgICAgfSBlbHNlCiAgICAgICAgIFtzZWxmIF9kaXNwbGF5Rm9ybU5vZGVJbnB1dFZp
ZXddOwogCi0gICAgcmV0dXJuIFtfZm9ybUlucHV0U2Vzc2lvbiBjdXN0b21JbnB1dFZpZXddID86
IFtfaW5wdXRQZXJpcGhlcmFsIGFzc2lzdGFudFZpZXddOworICAgIGlmIChVSVZpZXcgKmN1c3Rv
bUlucHV0VmlldyA9IFtfZm9ybUlucHV0U2Vzc2lvbiBjdXN0b21JbnB1dFZpZXddKQorICAgICAg
ICByZXR1cm4gY3VzdG9tSW5wdXRWaWV3OworCisjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQp
CisgICAgaWYgKF9kYXRhTGlzdFRleHRTdWdnZXN0aW9uc0lucHV0VmlldykKKyAgICAgICAgcmV0
dXJuIF9kYXRhTGlzdFRleHRTdWdnZXN0aW9uc0lucHV0Vmlldy5nZXQoKTsKKyNlbmRpZgorCisg
ICAgcmV0dXJuIFtfaW5wdXRQZXJpcGhlcmFsIGFzc2lzdGFudFZpZXddOwogfQogCiAtIChDR1Jl
Y3QpX3NlbGVjdGlvbkNsaXBSZWN0CkBAIC0zMTcwLDkgKzMxOTEsNyBAQCBzdGF0aWMgdm9pZCBz
ZWxlY3Rpb25DaGFuZ2VkV2l0aFRvdWNoKFdLQ29udGVudFZpZXcgKnZpZXcsIGNvbnN0IFdlYkNv
cmU6OkludFBvaQogCiAtICh2b2lkKWFjY2Vzc29yeVRhYjooQk9PTClpc05leHQKIHsKLSAgICBb
X2Zvcm1JbnB1dFNlc3Npb24gZW5kRWRpdGluZ107Ci0KLSAgICBbX2lucHV0UGVyaXBoZXJhbCBl
bmRFZGl0aW5nXTsKKyAgICBbc2VsZiBfZW5kRWRpdGluZ107CiAgICAgX2lucHV0UGVyaXBoZXJh
bCA9IG5pbDsKIAogICAgIF9kaWRBY2Nlc3NvcnlUYWJJbml0aWF0ZUZvY3VzID0gWUVTOyAvLyBX
aWxsIGJlIGNsZWFyZWQgaW4gZWl0aGVyIC1fZGlzcGxheUZvcm1Ob2RlSW5wdXRWaWV3IG9yIC1j
bGVhbnVwSW50ZXJhY3Rpb24uCkBAIC00MzIyLDYgKzQzNDEsMTEgQEAgc3RhdGljIGJvb2wgaXNB
c3Npc3RhYmxlSW5wdXRUeXBlKElucHV0VHlwZSB0eXBlKQogICAgIFtfZm9ybUlucHV0U2Vzc2lv
biBpbnZhbGlkYXRlXTsKICAgICBfZm9ybUlucHV0U2Vzc2lvbiA9IG5pbDsKIAorI2lmIEVOQUJM
RShEQVRBTElTVF9FTEVNRU5UKQorICAgIF9kYXRhTGlzdFRleHRTdWdnZXN0aW9uc0lucHV0Vmll
dyA9IG5pbDsKKyAgICBfZGF0YUxpc3RUZXh0U3VnZ2VzdGlvbnMgPSBuaWw7CisjZW5kaWYKKwog
ICAgIEJPT0wgZWRpdGFibGVDaGFuZ2VkID0gW3NlbGYgc2V0SXNFZGl0YWJsZTpOT107CiAKICAg
ICBfYXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uZWxlbWVudFR5cGUgPSBJbnB1dFR5cGU6Ok5vbmU7
CkBAIC00NzQwLDYgKzQ3NjQsNjEgQEAgc3RhdGljIGJvb2wgaXNBc3Npc3RhYmxlSW5wdXRUeXBl
KElucHV0VHlwZSB0eXBlKQogICAgICAgICBbX3RleHRTZWxlY3Rpb25Bc3Npc3RhbnQgYWN0aXZh
dGVTZWxlY3Rpb25dOwogfQogCisjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCisKKy0gKFVJ
VmlldzxXS0Zvcm1Db250cm9sPiAqKWRhdGFMaXN0VGV4dFN1Z2dlc3Rpb25zSW5wdXRWaWV3Cit7
CisgICAgcmV0dXJuIF9kYXRhTGlzdFRleHRTdWdnZXN0aW9uc0lucHV0Vmlldy5nZXQoKTsKK30K
KworLSAoTlNBcnJheTxVSVRleHRTdWdnZXN0aW9uICo+ICopZGF0YUxpc3RUZXh0U3VnZ2VzdGlv
bnMKK3sKKyAgICByZXR1cm4gX2RhdGFMaXN0VGV4dFN1Z2dlc3Rpb25zLmdldCgpOworfQorCist
ICh2b2lkKXNldERhdGFMaXN0VGV4dFN1Z2dlc3Rpb25zSW5wdXRWaWV3OihVSVZpZXc8V0tGb3Jt
Q29udHJvbD4gKilzdWdnZXN0aW9uc0lucHV0VmlldworeworICAgIGlmIChfZGF0YUxpc3RUZXh0
U3VnZ2VzdGlvbnNJbnB1dFZpZXcgPT0gc3VnZ2VzdGlvbnNJbnB1dFZpZXcpCisgICAgICAgIHJl
dHVybjsKKworICAgIF9kYXRhTGlzdFRleHRTdWdnZXN0aW9uc0lucHV0VmlldyA9IHN1Z2dlc3Rp
b25zSW5wdXRWaWV3OworCisgICAgaWYgKCFbX2Zvcm1JbnB1dFNlc3Npb24gY3VzdG9tSW5wdXRW
aWV3XSkKKyAgICAgICAgW3NlbGYgcmVsb2FkSW5wdXRWaWV3c107Cit9CisKKy0gKHZvaWQpc2V0
RGF0YUxpc3RUZXh0U3VnZ2VzdGlvbnM6KE5TQXJyYXk8VUlUZXh0U3VnZ2VzdGlvbiAqPiAqKXRl
eHRTdWdnZXN0aW9ucworeworICAgIGlmICh0ZXh0U3VnZ2VzdGlvbnMgPT0gX2RhdGFMaXN0VGV4
dFN1Z2dlc3Rpb25zIHx8IFt0ZXh0U3VnZ2VzdGlvbnMgaXNFcXVhbFRvQXJyYXk6X2RhdGFMaXN0
VGV4dFN1Z2dlc3Rpb25zLmdldCgpXSkKKyAgICAgICAgcmV0dXJuOworCisgICAgX2RhdGFMaXN0
VGV4dFN1Z2dlc3Rpb25zID0gdGV4dFN1Z2dlc3Rpb25zOworCisgICAgaWYgKCFbX2Zvcm1JbnB1
dFNlc3Npb24gc3VnZ2VzdGlvbnNdLmNvdW50KQorICAgICAgICBbc2VsZiB1cGRhdGVUZXh0U3Vn
Z2VzdGlvbnNGb3JJbnB1dERlbGVnYXRlXTsKK30KKworI2VuZGlmCisKKy0gKHZvaWQpdXBkYXRl
VGV4dFN1Z2dlc3Rpb25zRm9ySW5wdXREZWxlZ2F0ZQoreworICAgIC8vIFRleHQgc3VnZ2VzdGlv
bnMgdmVuZGVkIGZyb20gaW50ZXJuYWwgY2xpZW50cyB0YWtlIHByZWNlZGVuY2Ugb3ZlciB0ZXh0
IHN1Z2dlc3Rpb25zIGZyb20gYSBmb2N1c2VkIGZvcm0gY29udHJvbCB3aXRoIGEgZGF0YWxpc3Qu
CisgICAgaWQgPFVJVGV4dElucHV0U3VnZ2VzdGlvbkRlbGVnYXRlPiBpbnB1dERlbGVnYXRlID0g
KGlkIDxVSVRleHRJbnB1dFN1Z2dlc3Rpb25EZWxlZ2F0ZT4pc2VsZi5pbnB1dERlbGVnYXRlOwor
ICAgIGlmIChbX2Zvcm1JbnB1dFNlc3Npb24gc3VnZ2VzdGlvbnNdLmNvdW50KSB7CisgICAgICAg
IFtpbnB1dERlbGVnYXRlIHNldFN1Z2dlc3Rpb25zOltfZm9ybUlucHV0U2Vzc2lvbiBzdWdnZXN0
aW9uc11dOworICAgICAgICByZXR1cm47CisgICAgfQorCisjaWYgRU5BQkxFKERBVEFMSVNUX0VM
RU1FTlQpCisgICAgaWYgKFtfZGF0YUxpc3RUZXh0U3VnZ2VzdGlvbnMgY291bnRdKSB7CisgICAg
ICAgIFtpbnB1dERlbGVnYXRlIHNldFN1Z2dlc3Rpb25zOl9kYXRhTGlzdFRleHRTdWdnZXN0aW9u
cy5nZXQoKV07CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKworICAgIFtpbnB1dERl
bGVnYXRlIHNldFN1Z2dlc3Rpb25zOm5pbF07Cit9CisKIC0gKHZvaWQpX3Nob3dQbGF5YmFja1Rh
cmdldFBpY2tlcjooQk9PTCloYXNWaWRlbyBmcm9tUmVjdDooY29uc3QgSW50UmVjdCYpZWxlbWVu
dFJlY3Qgcm91dGVTaGFyaW5nUG9saWN5OihXZWJDb3JlOjpSb3V0ZVNoYXJpbmdQb2xpY3kpcm91
dGVTaGFyaW5nUG9saWN5IHJvdXRpbmdDb250ZXh0VUlEOihOU1N0cmluZyAqKXJvdXRpbmdDb250
ZXh0VUlECiB7CiAjaWYgRU5BQkxFKEFJUlBMQVlfUElDS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bklPUy5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJv
cGRvd25JT1MubW0KaW5kZXggYWI2NGNmYThlOTEwYzJmZDhhZWY2YzllYTY1ZmYxYjRjZjFkY2U3
NC4uM2Y1OGY3MTdkZTQzNDMxOGNlOTBiOTA0YzFjZmNjZjMyYmY2NGExMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93
bklPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViRGF0YUxpc3RTdWdn
ZXN0aW9uc0Ryb3Bkb3duSU9TLm1tCkBAIC0zMiw3ICszMiw2IEBACiAjaW1wb3J0ICJXS0NvbnRl
bnRWaWV3SW50ZXJhY3Rpb24uaCIKICNpbXBvcnQgIldLRm9ybVBlcmlwaGVyYWwuaCIKICNpbXBv
cnQgIldLRm9ybVBvcG92ZXIuaCIKLSNpbXBvcnQgIl9XS0Zvcm1JbnB1dFNlc3Npb24uaCIKIAog
c3RhdGljIGNvbnN0IENHRmxvYXQgbWF4VmlzaWJsZVN1Z2dlc3Rpb25zID0gNTsKIHN0YXRpYyBj
b25zdCBDR0Zsb2F0IHN1Z2dlc3Rpb25zUG9wb3ZlckNlbGxIZWlnaHQgPSA0NDsKQEAgLTIyMCwx
MiArMjE5LDEyIEBAIHZvaWQgV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TOjpkaWRT
ZWxlY3RPcHRpb24oY29uc3QgU3RyaW5nJiBzZWxlY3RlZE9wCiB7CiAgICAgW3N1cGVyIHVwZGF0
ZVdpdGhJbmZvcm1hdGlvbjpXVEZNb3ZlKGluZm9ybWF0aW9uKV07CiAgICAgaWYgKGluZm9ybWF0
aW9uLmFjdGl2YXRpb25UeXBlICE9IFdlYkNvcmU6OkRhdGFMaXN0U3VnZ2VzdGlvbkFjdGl2YXRp
b25UeXBlOjpJbmRpY2F0b3JDbGlja2VkKSB7Ci0gICAgICAgIFtbc2VsZi52aWV3IF9mb3JtSW5w
dXRTZXNzaW9uXSBzZXRDdXN0b21JbnB1dFZpZXc6bmlsXTsKLSAgICAgICAgW1tzZWxmLnZpZXcg
X2Zvcm1JbnB1dFNlc3Npb25dIHNldFN1Z2dlc3Rpb25zOltzZWxmIHRleHRTdWdnZXN0aW9uc11d
OworICAgICAgICBzZWxmLnZpZXcuZGF0YUxpc3RUZXh0U3VnZ2VzdGlvbnNJbnB1dFZpZXcgPSBu
aWw7CisgICAgICAgIHNlbGYudmlldy5kYXRhTGlzdFRleHRTdWdnZXN0aW9ucyA9IHNlbGYudGV4
dFN1Z2dlc3Rpb25zOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgW1tzZWxmLnZpZXcg
X2Zvcm1JbnB1dFNlc3Npb25dIHNldEN1c3RvbUlucHV0VmlldzpfcGlja2VyVmlldy5nZXQoKV07
CisgICAgc2VsZi52aWV3LmRhdGFMaXN0VGV4dFN1Z2dlc3Rpb25zSW5wdXRWaWV3ID0gX3BpY2tl
clZpZXcuZ2V0KCk7CiAKICAgICBbX3BpY2tlclZpZXcgcmVsb2FkQWxsQ29tcG9uZW50c107CiAg
ICAgW19waWNrZXJWaWV3IHNlbGVjdFJvdzowIGluQ29tcG9uZW50OjAgYW5pbWF0ZWQ6Tk9dOwpA
QCAtMjM1LDEwICsyMzQsMTAgQEAgdm9pZCBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25J
T1M6OmRpZFNlbGVjdE9wdGlvbihjb25zdCBTdHJpbmcmIHNlbGVjdGVkT3AKIHsKICAgICBbc3Vw
ZXIgc2hvd1N1Z2dlc3Rpb25zRHJvcGRvd246ZHJvcGRvd24gYWN0aXZhdGlvblR5cGU6YWN0aXZh
dGlvblR5cGVdOwogICAgIGlmIChhY3RpdmF0aW9uVHlwZSA9PSBXZWJDb3JlOjpEYXRhTGlzdFN1
Z2dlc3Rpb25BY3RpdmF0aW9uVHlwZTo6SW5kaWNhdG9yQ2xpY2tlZCkgewotICAgICAgICBbW3Nl
bGYudmlldyBfZm9ybUlucHV0U2Vzc2lvbl0gc2V0Q3VzdG9tSW5wdXRWaWV3Ol9waWNrZXJWaWV3
LmdldCgpXTsKKyAgICAgICAgc2VsZi52aWV3LmRhdGFMaXN0VGV4dFN1Z2dlc3Rpb25zSW5wdXRW
aWV3ID0gX3BpY2tlclZpZXcuZ2V0KCk7CiAgICAgICAgIFtfcGlja2VyVmlldyBzZWxlY3RSb3c6
MCBpbkNvbXBvbmVudDowIGFuaW1hdGVkOk5PXTsKICAgICB9IGVsc2UKLSAgICAgICAgW1tzZWxm
LnZpZXcgX2Zvcm1JbnB1dFNlc3Npb25dIHNldFN1Z2dlc3Rpb25zOltzZWxmIHRleHRTdWdnZXN0
aW9uc11dOworICAgICAgICBzZWxmLnZpZXcuZGF0YUxpc3RUZXh0U3VnZ2VzdGlvbnMgPSBzZWxm
LnRleHRTdWdnZXN0aW9uczsKIH0KIAogLSAoTlNJbnRlZ2VyKW51bWJlck9mQ29tcG9uZW50c0lu
UGlja2VyVmlldzooVUlQaWNrZXJWaWV3ICopcGlja2VyVmlldwpAQCAtMjU4LDggKzI1Nyw4IEBA
IHZvaWQgV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TOjpkaWRTZWxlY3RPcHRpb24o
Y29uc3QgU3RyaW5nJiBzZWxlY3RlZE9wCiAKIC0gKHZvaWQpaW52YWxpZGF0ZQogewotICAgIGlm
IChbW3NlbGYudmlldyBfZm9ybUlucHV0U2Vzc2lvbl0gY3VzdG9tSW5wdXRWaWV3XSA9PSBfcGlj
a2VyVmlldy5nZXQoKSkKLSAgICAgICAgW1tzZWxmLnZpZXcgX2Zvcm1JbnB1dFNlc3Npb25dIHNl
dEN1c3RvbUlucHV0VmlldzpuaWxdOworICAgIGlmIChzZWxmLnZpZXcuZGF0YUxpc3RUZXh0U3Vn
Z2VzdGlvbnNJbnB1dFZpZXcgPT0gX3BpY2tlclZpZXcuZ2V0KCkpCisgICAgICAgIHNlbGYudmll
dy5kYXRhTGlzdFRleHRTdWdnZXN0aW9uc0lucHV0VmlldyA9IG5pbDsKIAogICAgIFtfcGlja2Vy
VmlldyBzZXREZWxlZ2F0ZTpuaWxdOwogICAgIFtfcGlja2VyVmlldyBzZXREYXRhU291cmNlOm5p
bF07CkBAIC0zMDcsNyArMzA2LDcgQEAgdm9pZCBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRv
d25JT1M6OmRpZFNlbGVjdE9wdGlvbihjb25zdCBTdHJpbmcmIHNlbGVjdGVkT3AKIHsKICAgICBb
c3VwZXIgdXBkYXRlV2l0aEluZm9ybWF0aW9uOldURk1vdmUoaW5mb3JtYXRpb24pXTsKICAgICBb
X3N1Z2dlc3Rpb25zVmlld0NvbnRyb2xsZXIgcmVsb2FkRGF0YV07Ci0gICAgW1tzZWxmLnZpZXcg
X2Zvcm1JbnB1dFNlc3Npb25dIHNldFN1Z2dlc3Rpb25zOltzZWxmIHRleHRTdWdnZXN0aW9uc11d
OworICAgIHNlbGYudmlldy5kYXRhTGlzdFRleHRTdWdnZXN0aW9ucyA9IHNlbGYudGV4dFN1Z2dl
c3Rpb25zOwogfQogCiAtICh2b2lkKXNob3dTdWdnZXN0aW9uc0Ryb3Bkb3duOihXZWJLaXQ6Oldl
YkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bklPUyAqKWRyb3Bkb3duIGFjdGl2YXRpb25UeXBl
OihXZWJDb3JlOjpEYXRhTGlzdFN1Z2dlc3Rpb25BY3RpdmF0aW9uVHlwZSlhY3RpdmF0aW9uVHlw
ZQpAQCAtMzE3LDcgKzMxNiw3IEBAIHZvaWQgV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3du
SU9TOjpkaWRTZWxlY3RPcHRpb24oY29uc3QgU3RyaW5nJiBzZWxlY3RlZE9wCiAgICAgX3N1Z2dl
c3Rpb25zVmlld0NvbnRyb2xsZXIgPSBhZG9wdE5TKFtbV0tEYXRhTGlzdFN1Z2dlc3Rpb25zVmll
d0NvbnRyb2xsZXIgYWxsb2NdIGluaXRXaXRoU3R5bGU6VUlUYWJsZVZpZXdTdHlsZVBsYWluXSk7
CiAgICAgW19zdWdnZXN0aW9uc1ZpZXdDb250cm9sbGVyIHNldENvbnRyb2w6c2VsZl07CiAgICAg
W19zdWdnZXN0aW9uc1ZpZXdDb250cm9sbGVyIHJlbG9hZERhdGFdOwotICAgIFtbc2VsZi52aWV3
IF9mb3JtSW5wdXRTZXNzaW9uXSBzZXRTdWdnZXN0aW9uczpbc2VsZiB0ZXh0U3VnZ2VzdGlvbnNd
XTsKKyAgICBzZWxmLnZpZXcuZGF0YUxpc3RUZXh0U3VnZ2VzdGlvbnMgPSBzZWxmLnRleHRTdWdn
ZXN0aW9uczsKIAogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICBbX3Bv
cG92ZXIgc2V0UG9wb3ZlckNvbnRyb2xsZXI6W1tbVUlQb3BvdmVyQ29udHJvbGxlciBhbGxvY10g
aW5pdFdpdGhDb250ZW50Vmlld0NvbnRyb2xsZXI6X3N1Z2dlc3Rpb25zVmlld0NvbnRyb2xsZXIu
Z2V0KCldIGF1dG9yZWxlYXNlXV07CkBAIC0zMzUsNyArMzM0LDcgQEAgQUxMT1dfREVQUkVDQVRF
RF9ERUNMQVJBVElPTlNfRU5ECiB7CiAgICAgW3N1cGVyIGRpZFNlbGVjdE9wdGlvbkF0SW5kZXg6
aW5kZXhdOwogICAgIFtbX3BvcG92ZXIgcG9wb3ZlckNvbnRyb2xsZXJdIGRpc21pc3NQb3BvdmVy
QW5pbWF0ZWQ6WUVTXTsKLSAgICBbW3NlbGYudmlldyBfZm9ybUlucHV0U2Vzc2lvbl0gc2V0U3Vn
Z2VzdGlvbnM6QFsgW1dLRGF0YUxpc3RUZXh0U3VnZ2VzdGlvbiB0ZXh0U3VnZ2VzdGlvbldpdGhJ
bnB1dFRleHQ6W3NlbGYgc3VnZ2VzdGlvbkF0SW5kZXg6aW5kZXhdXSBdXTsKKyAgICBzZWxmLnZp
ZXcuZGF0YUxpc3RUZXh0U3VnZ2VzdGlvbnMgPSBAWyBbV0tEYXRhTGlzdFRleHRTdWdnZXN0aW9u
IHRleHRTdWdnZXN0aW9uV2l0aElucHV0VGV4dDpbc2VsZiBzdWdnZXN0aW9uQXRJbmRleDppbmRl
eF1dIF07CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0No
YW5nZUxvZwppbmRleCBiZDBiYWQxZmY5OGUyMjRmNzAwMjU5ZmMzODQ1ZmVkNGFmMzRjMjI5Li45
ODBhNWQzMmY0YmNiM2I0Y2QzNjE1MDlmZGU5ODgxYjM0YWZlNjk2IDEwMDY0NAotLS0gYS9Ub29s
cy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTgt
MTAtMTggIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAg
W2lPU10gW0RhdGFsaXN0XSBDYW4ndCBwaWNrIGRhdGFsaXN0IHN1Z2dlc3Rpb25zIGluIGEgc3Rv
Y2sgV0tXZWJWaWV3CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTA2MjEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ1MzEwNjQ5PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIFVJU2NyaXB0Q29u
dHJvbGxlciBob29rIHRvIHJlc2lnbiBmaXJzdCByZXNwb25kZXIgb24gV0tXZWJWaWV3LiBTZWUg
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGZvciBtb3JlIGRldGFpbC4KKworICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW06CisgICAgICAgIChXVFI6OlVJ
U2NyaXB0Q29udHJvbGxlcjo6cmVzaWduRmlyc3RSZXNwb25kZXIpOgorICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL21hYy9VSVNjcmlwdENvbnRyb2xsZXJNYWMubW06CisgICAgICAgIChXVFI6OlVJ
U2NyaXB0Q29udHJvbGxlcjo6cmVzaWduRmlyc3RSZXNwb25kZXIpOgorICAgICAgICAqIFRlc3RS
dW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L0JpbmRpbmdzL1VJU2NyaXB0Q29udHJvbGxlci5p
ZGw6CisgICAgICAgICogVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjpyZXNpZ25G
aXJzdFJlc3BvbmRlcik6CisgICAgICAgICogVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRl
eHQvVUlTY3JpcHRDb250cm9sbGVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9VSVNj
cmlwdENvbnRyb2xsZXJDb2NvYS5tbToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVy
OjpyZXNpZ25GaXJzdFJlc3BvbmRlcik6CisKIDIwMTgtMTAtMTggIEFsaWNpYSBCb3lhIEdhcmPD
rWEgIDxhYm95YUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtNZWRpYV0gVXNlIG5hbm9zZWNvbmRz
IGFzIE1heGltdW1UaW1lU2NhbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2lv
cy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9pb3MvVUlT
Y3JpcHRDb250cm9sbGVySU9TLm1tCmluZGV4IGNlZTk4Y2JjN2IwMDBlOGY1ZmViNmI2OTNmNmUy
YjNjZWJlZjIyYTAuLjZhYmY4NDVjYWE5NzFkOTVjNjQ5N2FiNTIyY2I4NmJjZjkwOWNhZTggMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1Mu
bW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5t
bQpAQCAtODIsNiArODIsMTAgQEAgdm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6Onpvb21Ub1NjYWxl
KGRvdWJsZSBzY2FsZSwgSlNWYWx1ZVJlZiBjYWxsYmFjaykKICAgICB9KTsKIH0KIAordm9pZCBV
SVNjcmlwdENvbnRyb2xsZXI6OnJlc2lnbkZpcnN0UmVzcG9uZGVyKCkKK3sKK30KKwogdm9pZCBV
SVNjcmlwdENvbnRyb2xsZXI6OnNldFZpZXdTY2FsZShkb3VibGUpCiB7CiB9CmRpZmYgLS1naXQg
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlTY3JpcHRDb250cm9sbGVyTWFjLm1tIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJU2NyaXB0Q29udHJvbGxlck1hYy5tbQppbmRleCBmNGEz
MzQzMTAzYmY3YTE1ZDZiMDRiYjBhYzJhYjVhZGU4YzljMTExLi40OWNjNGI3YTVkMGJhNWEyZWFi
MzY2MGMxZGQ3NmQ3YWMzYTc5MTc3IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvVUlTY3JpcHRDb250cm9sbGVyTWFjLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21h
Yy9VSVNjcmlwdENvbnRyb2xsZXJNYWMubW0KQEAgLTg5LDYgKzg5LDEwIEBAIHZvaWQgVUlTY3Jp
cHRDb250cm9sbGVyOjp6b29tVG9TY2FsZShkb3VibGUgc2NhbGUsIEpTVmFsdWVSZWYgY2FsbGJh
Y2spCiAgICAgfSk7CiB9CiAKK3ZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjpyZXNpZ25GaXJzdFJl
c3BvbmRlcigpCit7Cit9CisKIHZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjpzZXRWaWV3U2NhbGUo
ZG91YmxlKQogewogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlw
dENvbnRleHQvQmluZGluZ3MvVUlTY3JpcHRDb250cm9sbGVyLmlkbCBiL1Rvb2xzL1Rlc3RSdW5u
ZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L0JpbmRpbmdzL1VJU2NyaXB0Q29udHJvbGxlci5pZGwK
aW5kZXggYmM1MDA4MjljNzY3YzQ5OGQ0ODI5MTQwY2ZhMWEyMTY5NWQxODQ4NS4uNGFjZTRlZGVi
NzRmMmQwZjE1NmU0MDc3ZGUxMjRiZGY0NDM1YTQ1NyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFJ1
bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvQmluZGluZ3MvVUlTY3JpcHRDb250cm9sbGVyLmlk
bAorKysgYi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9CaW5kaW5ncy9V
SVNjcmlwdENvbnRyb2xsZXIuaWRsCkBAIC0yMTksNiArMjE5LDggQEAgaW50ZXJmYWNlIFVJU2Ny
aXB0Q29udHJvbGxlciB7CiAKICAgICB2b2lkIHNldFZpZXdTY2FsZShkb3VibGUgc2NhbGUpOwog
CisgICAgdm9pZCByZXNpZ25GaXJzdFJlc3BvbmRlcigpOworCiAgICAgdm9pZCBzY3JvbGxUb09m
ZnNldChsb25nIHgsIGxvbmcgeSk7IC8vIEluaXRpYXRlIGFuIGFuaW1hdGVkIHNjcm9sbCBpbiB0
aGUgVUkgcHJvY2Vzcy4KICAgICBhdHRyaWJ1dGUgb2JqZWN0IGRpZEVuZFNjcm9sbGluZ0NhbGxi
YWNrOwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4
dC9VSVNjcmlwdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlw
dENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCA4MDc3NDVmY2M1OTA0YTIyYTg5
NThjMmIyYzAzMGE2NGUxZjA5ZTdkLi44ZTFmYjlmM2IyMDNkMTdhNzcyYmU4NGUwM2QyMjc2Y2Mw
YTBjMTQwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4
dC9VSVNjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlT
Y3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTIxNCw2ICsyMTQsMTAgQEAg
dm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OnNldFZpZXdTY2FsZShkb3VibGUpCiB7CiB9CiAKK3Zv
aWQgVUlTY3JpcHRDb250cm9sbGVyOjpyZXNpZ25GaXJzdFJlc3BvbmRlcigpCit7Cit9CisKIHZv
aWQgVUlTY3JpcHRDb250cm9sbGVyOjpzaW11bGF0ZUFjY2Vzc2liaWxpdHlTZXR0aW5nc0NoYW5n
ZU5vdGlmaWNhdGlvbihKU1ZhbHVlUmVmKQogewogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFJ1
bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmggYi9Ub29scy9U
ZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuaAppbmRl
eCA2MGQ1OTY2MTY2YjNlMzRlZGE5OWJlYzI0NGEzYzZlYjQzYTQ5MTU3Li44YzZiNzg0YjM5MzYx
MzMwZDA5MDQ2NzM0YzllNmMyMDYzMGMyYmRjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0UnVubmVy
U2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuaAorKysgYi9Ub29scy9U
ZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuaApAQCAt
NjgsNiArNjgsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCB6b29tVG9TY2FsZShkb3VibGUgc2NhbGUs
IEpTVmFsdWVSZWYgY2FsbGJhY2spOwogICAgIHZvaWQgc2V0Vmlld1NjYWxlKGRvdWJsZSk7CiAK
KyAgICB2b2lkIHJlc2lnbkZpcnN0UmVzcG9uZGVyKCk7CisKICAgICB2b2lkIHNpbXVsYXRlQWNj
ZXNzaWJpbGl0eVNldHRpbmdzQ2hhbmdlTm90aWZpY2F0aW9uKEpTVmFsdWVSZWYgY2FsbGJhY2sp
OwogCiAgICAgdm9pZCB0b3VjaERvd25BdFBvaW50KGxvbmcgeCwgbG9uZyB5LCBsb25nIHRvdWNo
Q291bnQsIEpTVmFsdWVSZWYgY2FsbGJhY2spOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9VSVNjcmlwdENvbnRyb2xsZXJDb2NvYS5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVUlTY3JpcHRDb250cm9sbGVyQ29jb2EubW0KaW5kZXggMjA4Yzc0ODk4ZGJiNTkzMmExNWNl
N2FlNDU5NmQ5ZGJhNjIyYjVlMy4uN2Y1YjZjNTljZmZhNjMzN2UzMzg1ZjYyNWM5MzE4NDhmYjAz
ZGM5OSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9VSVNjcmlwdENvbnRyb2xs
ZXJDb2NvYS5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1VJU2NyaXB0Q29udHJvbGxl
ckNvY29hLm1tCkBAIC00Miw0ICs0MiwxMSBAQCB2b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6c2V0
Vmlld1NjYWxlKGRvdWJsZSBzY2FsZSkKICNlbmRpZgogfQogCit2b2lkIFVJU2NyaXB0Q29udHJv
bGxlcjo6cmVzaWduRmlyc3RSZXNwb25kZXIoKQoreworI2lmIFdLX0FQSV9FTkFCTEVECisgICAg
W1Rlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5tYWluV2ViVmlldygpLT5wbGF0Zm9ybVZpZXco
KSByZXNpZ25GaXJzdFJlc3BvbmRlcl07CisjZW5kaWYKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RS
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggZDQ1NjVjMzg2MWJlNjUzNGJjMDE0OWY4ZGYzYzBhZGQ4YzAyMDRlZS4uM2MyYWQy
ZDRjYjAyYjIwZjQyMzIzZDkwNDQ4MGY0MGY2ZjY0MzIzMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBA
CisyMDE4LTEwLTE4ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisg
ICAgICAgIFtpT1NdIFtEYXRhbGlzdF0gQ2FuJ3QgcGljayBkYXRhbGlzdCBzdWdnZXN0aW9ucyBp
biBhIHN0b2NrIFdLV2ViVmlldworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTkwNjIxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NTMxMDY0OT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZhY3RvciBh
biBleGlzdGluZyBsYXlvdXQgdGVzdCB0byBydW4gb24gYm90aCBpT1MgYW5kIG1hY09TLiBPbiBi
b3RoIHBsYXRmb3JtcywgaXQgY2hlY2tzIHRoYXQgdGhlIHRvcAorICAgICAgICBzdWdnZXN0aW9u
IHJlc3BlY3RzIG9wdGlvbiBlbGVtZW50IG9yZGVyIGluIHRoZSBkb2N1bWVudCwgYXMgd2VsbCBh
cyB0aGUgY3VycmVudCBjb250ZW50cyBvZiB0aGUgdGV4dCBmaWVsZC4KKyAgICAgICAgT24gbWFj
T1MsIHdlIHVzZSBhcnJvdyBrZXlzIGFuZCBoaXQgcmV0dXJuIHRvIHNlbGVjdCBhIHN1Z2dlc3Rp
b247IG9uIGlPUywgd2UgdGFwIHRoZSBzdWdnZXN0aW9ucyBidXR0b24gYW5kCisgICAgICAgIHNp
bXVsYXRlIGhpdHRpbmcgdGhlIGRvbmUgYnV0dG9uIG9uIHRoZSBpbnB1dCB2aWV3IHRvIGRpc21p
c3MgdGhlIGtleWJvYXJkLgorCisgICAgICAgICogZmFzdC9mb3Jtcy9kYXRhbGlzdC9kYXRhbGlz
dC10ZXh0aW5wdXQtc3VnZ2VzdGlvbnMtb3JkZXItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZh
c3QvZm9ybXMvZGF0YWxpc3QvZGF0YWxpc3QtdGV4dGlucHV0LXN1Z2dlc3Rpb25zLW9yZGVyLmh0
bWw6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnM6CisKKyAgICAgICAg
RW5hYmxlIHRoaXMgdGVzdCBvbiBpT1MuCisKKyAgICAgICAgKiByZXNvdXJjZXMvdWktaGVscGVy
LmpzOgorICAgICAgICAod2luZG93LlVJSGVscGVyLnJlc2lnbkZpcnN0UmVzcG9uZGVyKToKKyAg
ICAgICAgKHdpbmRvdy5VSUhlbHBlcik6CisKIDIwMTgtMTAtMTggIEp1c3RpbiBGYW4gIDxqdXN0
aW5fZmFuQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgdGVzdCBleHBlY3RhdGlvbnMgZm9yIHdl
YmdwdS1lbmFibGVkLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZGF0
YWxpc3QvZGF0YWxpc3QtdGV4dGlucHV0LXN1Z2dlc3Rpb25zLW9yZGVyLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZGF0YWxpc3QvZGF0YWxpc3QtdGV4dGlucHV0LXN1Z2dl
c3Rpb25zLW9yZGVyLWV4cGVjdGVkLnR4dAppbmRleCBlYWQ5ZTVjYzIwMTNiZGM5NGMzNGFlN2Yx
NzljYTg3ODNjOGU2ZTk0Li4yYWQ1NzI2YzAwYjhkN2E4Y2Q1OThiNTNhNjIyMTA1YWVkN2FjN2E1
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2RhdGFsaXN0L2RhdGFsaXN0LXRl
eHRpbnB1dC1zdWdnZXN0aW9ucy1vcmRlci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9mb3Jtcy9kYXRhbGlzdC9kYXRhbGlzdC10ZXh0aW5wdXQtc3VnZ2VzdGlvbnMtb3JkZXIt
ZXhwZWN0ZWQudHh0CkBAIC0xLDExICsxLDEwIEBACi1UZXN0IHRvIHZlcmlmeSB0aGF0IHByZWZp
eC1tYXRjaGVkIHZhbHVlcyBhcmUgZGlzcGxheWVkIGZpcnN0CiAKLU9uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KLQotCi1QQVNTIGlucHV0LnZhbHVlIGlzICJPcmFuZ2UiCi1QQVNTIGlucHV0LnZh
bHVlIGlzICJBcHBsZSIKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBD
T01QTEVURQorVG9wIHN1Z2dlc3Rpb24gd2l0aCBlbXB0eSB0ZXh0IGZpZWxkOiAiT3JhbmdlIgor
VG9wIHN1Z2dlc3Rpb24gd2l0aCAiYSIgaW4gdGV4dCBmaWVsZDogIkFwcGxlIgogCitUaGlzIHRl
c3QgdmVyaWZpZXMgdGhhdCBkYXRhbGlzdCBzdWdnZXN0aW9ucyBpbiBhIHRleHQgZmllbGQgYXJl
IG9yZGVyZWQgaW4gYSB3YXkgdGhhdCByZXNwZWN0cyB0aGUgb3JkZXIgb2Ygb3B0aW9uIGVsZW1l
bnRzIGluIHRoZSBkb2N1bWVudCwgYXMgd2VsbCBhcyB0aGUgY29udGVudHMgb2YgdGhlIHRleHQg
ZmllbGQuIFRvIHRlc3QgbWFudWFsbHk6CitGb2N1cyB0aGUgdGV4dCBmaWVsZC4KK0NoZWNrIHRo
YXQgIk9yYW5nZSIgaXMgdGhlIHRvcCBzdWdnZXN0aW9uLgorVHlwZSAiYSIgYW5kIGJsdXIgdGhl
IHRleHQgZmllbGQuCitGb2N1cyB0aGUgdGV4dCBmaWVsZCBhZ2Fpbi4KK0NoZWNrIHRoYXQgIkFw
cGxlIiBpcyB0aGUgdG9wIHN1Z2dlc3Rpb24uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL2RhdGFsaXN0L2RhdGFsaXN0LXRleHRpbnB1dC1zdWdnZXN0aW9ucy1vcmRlci5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9kYXRhbGlzdC9kYXRhbGlzdC10ZXh0aW5wdXQtc3Vn
Z2VzdGlvbnMtb3JkZXIuaHRtbAppbmRleCA0YWVlZThjMzc5YzU3MmU0NjkzNGFjMjUwZGJhYzJk
NDA5OWEzNDM0Li42MGYxNjQwZTlmOGQ3MTNiOTAwYjhjODNkZGQyNjY5ODg4ZDhmMmY4IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2RhdGFsaXN0L2RhdGFsaXN0LXRleHRpbnB1
dC1zdWdnZXN0aW9ucy1vcmRlci5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZGF0
YWxpc3QvZGF0YWxpc3QtdGV4dGlucHV0LXN1Z2dlc3Rpb25zLW9yZGVyLmh0bWwKQEAgLTEsOCAr
MSwxOCBAQAotPCFET0NUWVBFIGh0bWw+Cis8IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVz
dC1ydW5uZXIgWyB1c2VGbGV4aWJsZVZpZXdwb3J0PXRydWUgXSAtLT4KIDxodG1sPgogPGhlYWQ+
Ci08c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGlu
aXRpYWwtc2NhbGU9MSwgdXNlci1zY2FsYWJsZT1ubyI+CiA8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
cmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CitpbnB1dCB7CisgICAg
d2lkdGg6IDMwMHB4OworICAgIGhlaWdodDogNTBweDsKK30KKworYm9keSB7CisgICAgbWFyZ2lu
OiAwOworfQorPC9zdHlsZT4KIDwvaGVhZD4KIDxib2R5PgogCkBAIC0xMiwyNyArMjIsNTIgQEAK
ICAgICA8b3B0aW9uPlBlYXI8L29wdGlvbj4KICAgICA8b3B0aW9uPkFwcGxlPC9vcHRpb24+CiA8
L2RhdGFsaXN0PgorPHByZT5Ub3Agc3VnZ2VzdGlvbiB3aXRoIGVtcHR5IHRleHQgZmllbGQ6ICI8
c3BhbiBpZD0iZmlyc3QiPjwvc3Bhbj4iPC9wcmU+Cis8cHJlPlRvcCBzdWdnZXN0aW9uIHdpdGgg
ImEiIGluIHRleHQgZmllbGQ6ICI8c3BhbiBpZD0ic2Vjb25kIj48L3NwYW4+IjwvcHJlPgorPGJy
PgorPGRpdj5UaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBkYXRhbGlzdCBzdWdnZXN0aW9ucyBpbiBh
IHRleHQgZmllbGQgYXJlIG9yZGVyZWQgaW4gYSB3YXkgdGhhdCByZXNwZWN0cyB0aGUgb3JkZXIg
b2Ygb3B0aW9uCitlbGVtZW50cyBpbiB0aGUgZG9jdW1lbnQsIGFzIHdlbGwgYXMgdGhlIGNvbnRl
bnRzIG9mIHRoZSB0ZXh0IGZpZWxkLiBUbyB0ZXN0IG1hbnVhbGx5OjwvZGl2PgorPG9sPgorICAg
IDxsaT5Gb2N1cyB0aGUgdGV4dCBmaWVsZC48L2xpPgorICAgIDxsaT5DaGVjayB0aGF0ICJPcmFu
Z2UiIGlzIHRoZSB0b3Agc3VnZ2VzdGlvbi48L2xpPgorICAgIDxsaT5UeXBlICJhIiBhbmQgYmx1
ciB0aGUgdGV4dCBmaWVsZC48L2xpPgorICAgIDxsaT5Gb2N1cyB0aGUgdGV4dCBmaWVsZCBhZ2Fp
bi48L2xpPgorICAgIDxsaT5DaGVjayB0aGF0ICJBcHBsZSIgaXMgdGhlIHRvcCBzdWdnZXN0aW9u
LjwvbGk+Cis8L29sPgogCiA8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAg
dGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7
Cit9CiAKLWRlc2NyaXB0aW9uKCdUZXN0IHRvIHZlcmlmeSB0aGF0IHByZWZpeC1tYXRjaGVkIHZh
bHVlcyBhcmUgZGlzcGxheWVkIGZpcnN0Jyk7Ci0KLXZhciBpbnB1dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJmcnVpdCIpOworZnVuY3Rpb24gZm9jdXNJbnB1dEZpZWxkQW5kQ2hvb3NlRmly
c3RTdWdnZXN0aW9uKCkKK3sKKyAgICByZXR1cm4gbmV3IFByb21pc2UoYXN5bmMgcmVzb2x2ZSA9
PiB7CisgICAgICAgIGF3YWl0IFVJSGVscGVyLmFjdGl2YXRlQW5kV2FpdEZvcklucHV0U2Vzc2lv
bkF0KDEwMCwgMjUpOworICAgICAgICBpZiAoVUlIZWxwZXIuaXNJT1MoKSkgeworICAgICAgICAg
ICAgYXdhaXQgVUlIZWxwZXIudGFwQXQoMjkwLCAzMCk7CisgICAgICAgICAgICBhd2FpdCBVSUhl
bHBlci5yZXNpZ25GaXJzdFJlc3BvbmRlcigpOworICAgICAgICAgICAgYXdhaXQgVUlIZWxwZXIu
d2FpdEZvcktleWJvYXJkVG9IaWRlKCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBh
d2FpdCBVSUhlbHBlci50eXBlQ2hhcmFjdGVyKCJkb3duQXJyb3ciKTsKKyAgICAgICAgICAgIGF3
YWl0IFVJSGVscGVyLnR5cGVDaGFyYWN0ZXIoIlxyIik7CisgICAgICAgIH0KKyAgICAgICAgcmVz
b2x2ZSgpOworICAgIH0pOworfQogCi1VSUhlbHBlci5hY3RpdmF0ZUVsZW1lbnQoaW5wdXQpOwot
ZXZlbnRTZW5kZXIua2V5RG93bigiZG93bkFycm93Iik7Ci1ldmVudFNlbmRlci5rZXlEb3duKCJc
ciIpOwotc2hvdWxkQmUoJ2lucHV0LnZhbHVlJywgJyJPcmFuZ2UiJyk7CisoYXN5bmMgKCkgPT4g
eworICAgIGF3YWl0IGZvY3VzSW5wdXRGaWVsZEFuZENob29zZUZpcnN0U3VnZ2VzdGlvbigpOwor
ICAgIGZpcnN0LnRleHRDb250ZW50ID0gZnJ1aXQudmFsdWU7CiAKLWlucHV0LnZhbHVlID0gImEi
OworICAgIGZydWl0LnZhbHVlID0gImEiOwogCi1VSUhlbHBlci5hY3RpdmF0ZUVsZW1lbnQoaW5w
dXQpOwotZXZlbnRTZW5kZXIua2V5RG93bigiZG93bkFycm93Iik7Ci1ldmVudFNlbmRlci5rZXlE
b3duKCJcciIpOwotc2hvdWxkQmUoJ2lucHV0LnZhbHVlJywgJyJBcHBsZSInKTsKKyAgICBhd2Fp
dCBmb2N1c0lucHV0RmllbGRBbmRDaG9vc2VGaXJzdFN1Z2dlc3Rpb24oKTsKKyAgICBzZWNvbmQu
dGV4dENvbnRlbnQgPSBmcnVpdC52YWx1ZTsKIAorICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OworfSkoKTsKIDwvc2NyaXB0PgotCi08c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDZlNzIxNDZlNjk4NTYwODI1MmZjNTA5
ODQxNjViODA3OTVjMmIyYzYuLmRlMTU2MGZjN2NjMmQ5NGY3NDEyY2JhODk2ZDBhMmNlY2QwOWE5
MzIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25z
CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zCkBAIC0zMTEy
LDcgKzMxMTIsNiBAQCBmYXN0L2Jsb2NrL2Jsb2NrLW9ubHkvYWJzb2x1dGUtcG9zaXRpb24tbWlu
LW1heC1oZWlnaHQuaHRtbCBbIEZhaWx1cmUgXQogIyBEYXRhbGlzdAogd2Via2l0Lm9yZy9iLzE4
NjcxNCBmYXN0L2Zvcm1zL2RhdGFsaXN0L2RhdGFsaXN0LXNob3ctaGlkZS5odG1sIFsgU2tpcCBd
CiB3ZWJraXQub3JnL2IvMTg2NzE0IGZhc3QvZm9ybXMvZGF0YWxpc3QvZGF0YWxpc3QtdGV4dGlu
cHV0LWtleWRvd24uaHRtbCBbIFNraXAgXQotd2Via2l0Lm9yZy9iLzE5MDYyMSBmYXN0L2Zvcm1z
L2RhdGFsaXN0L2RhdGFsaXN0LXRleHRpbnB1dC1zdWdnZXN0aW9ucy1vcmRlci5odG1sIFsgU2tp
cCBdCiB3ZWJraXQub3JnL2IvMTkwNjEzIGZhc3QvZm9ybXMvZGF0YWxpc3QvdXBkYXRlLXJhbmdl
LXdpdGgtZGF0YWxpc3QuaHRtbCBbIFNraXAgXQogCiAjIFdlIGFyZSBvbmx5IGFjY2VwdGluZyBH
TFNMMyBmb3IgbWFjT1MuIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcmVzb3VyY2VzL3VpLWhl
bHBlci5qcyBiL0xheW91dFRlc3RzL3Jlc291cmNlcy91aS1oZWxwZXIuanMKaW5kZXggYWMwZDU2
ZjU3ZWRkYjE4NTRhNmY2NDJhNmIxYjQxNDA5MDRlZGI5OC4uYTY5NDRmMDJlNWNiZmQxYzBmOWIw
YWQ3ZWY4NzY0MTkwYWI2NjBjOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcmVzb3VyY2VzL3Vp
LWhlbHBlci5qcworKysgYi9MYXlvdXRUZXN0cy9yZXNvdXJjZXMvdWktaGVscGVyLmpzCkBAIC0x
MzIsNiArMTMyLDkgQEAgd2luZG93LlVJSGVscGVyID0gY2xhc3MgVUlIZWxwZXIgewogCiAgICAg
c3RhdGljIHdhaXRGb3JLZXlib2FyZFRvSGlkZSgpCiAgICAgeworICAgICAgICBpZiAoIXRoaXMu
aXNXZWJLaXQyKCkgfHwgIXRoaXMuaXNJT1MoKSkKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNl
LnJlc29sdmUoKTsKKwogICAgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CiAg
ICAgICAgICAgICB0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KGAKICAgICAgICAgICAgICAgICAoZnVu
Y3Rpb24oKSB7CkBAIC0zNTAsNCArMzUzLDEyIEBAIHdpbmRvdy5VSUhlbHBlciA9IGNsYXNzIFVJ
SGVscGVyIHsKIAogICAgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB0ZXN0UnVu
bmVyLnJ1blVJU2NyaXB0KGB1aUNvbnRyb2xsZXIuc2V0Vmlld1NjYWxlKCR7c2NhbGV9KWAsIHJl
c29sdmUpKTsKICAgICB9CisKKyAgICBzdGF0aWMgcmVzaWduRmlyc3RSZXNwb25kZXIoKQorICAg
IHsKKyAgICAgICAgaWYgKCF0aGlzLmlzV2ViS2l0MigpKQorICAgICAgICAgICAgcmV0dXJuIFBy
b21pc2UucmVzb2x2ZSgpOworCisgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+
IHRlc3RSdW5uZXIucnVuVUlTY3JpcHQoYHVpQ29udHJvbGxlci5yZXNpZ25GaXJzdFJlc3BvbmRl
cigpYCwgcmVzb2x2ZSkpOworICAgIH0KIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>352802</attachid>
            <date>2018-10-19 10:56:07 -0700</date>
            <delta_ts>2018-10-19 15:00:40 -0700</delta_ts>
            <desc>EWS run</desc>
            <filename>bug-190621-20181019105606.patch</filename>
            <type>text/plain</type>
            <size>30938</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3Mjc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDRlNjQwMWJlNTA3ZWUzZDg1
ZDY0Y2UzZjE1OWZiNGJlZjVkYjIwOTQuLjUzNzI5MDYwZDM5NDUyNGU5NGU2Y2UwNGI4ZDgwMGYz
NWY2NzhjNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzAgQEAKKzIwMTgtMTAtMTkgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gW0RhdGFsaXN0
XSBDYW4ndCBwaWNrIGRhdGFsaXN0IHN1Z2dlc3Rpb25zIGluIGEgc3RvY2sgV0tXZWJWaWV3Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA2MjEKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ1MzEwNjQ5PgorCisgICAgICAgIFJldmlld2VkIGJ5IFRp
bSBIb3J0b24uCisKKyAgICAgICAgRml4ZXMgdGhlIGJ1ZyBieSByZWZhY3RvcmluZyBkYXRhbGlz
dCBzdWdnZXN0aW9uIGluZm9ybWF0aW9uIG9uIGlPUzsgY3VycmVudGx5LCB3ZSBvdmVycmlkZSB0
ZXh0IHN1Z2dlc3Rpb25zIG9uCisgICAgICAgIF9XS0Zvcm1JbnB1dFNlc3Npb24uIFRoaXMgb25s
eSB3b3JrcyBmb3IgYSBmZXcgaW50ZXJuYWwgY2xpZW50cyAoaW5jbHVkaW5nIFNhZmFyaSkgdGhh
dCBzZXQgYSBfV0tJbnB1dERlbGVnYXRlCisgICAgICAgIGFuZCBhbHNvIGltcGxlbWVudCBlaXRo
ZXIgLV93ZWJWaWV3OndpbGxTdGFydElucHV0U2Vzc2lvbjogb3IgLV93ZWJWaWV3OmRpZFN0YXJ0
SW5wdXRTZXNzaW9uOiwgd2hpY2ggaXMKKyAgICAgICAgbmVjZXNzYXJ5IGluIG9yZGVyIHRvIGVu
c3VyZSB0aGF0IFdlYktpdCBjcmVhdGVzIGFuZCBtYWludGFpbnMgYSBmb3JtIGlucHV0IHNlc3Np
b24uCisKKyAgICAgICAgVGhlIHR3byBwaWVjZXMgb2YgaW5mb3JtYXRpb24gdGhhdCBkYXRhbGlz
dCBjb2RlIG5lZWRzIHRvIHZlbmQgdG8gV0tDb250ZW50VmlldyBhcmUgYSBsaXN0IG9mIFVJVGV4
dFN1Z2dlc3Rpb25zCisgICAgICAgIGFuZCBhIGN1c3RvbSBpbnB1dCB2aWV3LCB3aGljaCBhcmUg
Ym90aCBjdXJyZW50bHkgcHJvcGVydGllcyBvZiBfV0tGb3JtSW5wdXRTZXNzaW9uLiBUaGlzIHBh
dGNoIGxpZnRzIHRoZXNlIG91dAorICAgICAgICBvZiB0aGUgaW5wdXQgc2Vzc2lvbiBhbmQgbWFr
ZXMgdGhlbSBwcm9wZXJ0aWVzIG9mIFdLQ29udGVudFZpZXcsIHdoaWNoIGFyZSB1c2VkIGluCisg
ICAgICAgIFdlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bklPUy4KKworICAgICAgICBUZXN0
OiBmYXN0L2Zvcm1zL2RhdGFsaXN0L2RhdGFsaXN0LXRleHRpbnB1dC1zdWdnZXN0aW9ucy1vcmRl
ci5odG1sCisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1t
OgorCisgICAgICAgIEFkZCBuZXcgcHJvcGVydGllcyB0byBXS0NvbnRlbnRWaWV3OiBhbiBpbnB1
dCB2aWV3IGZvciBkYXRhbGlzdCBzdWdnZXN0aW9ucywgYW5kIGEgbGlzdCBvZiB0ZXh0IHN1Z2dl
c3Rpb25zLgorCisgICAgICAgICgtW1dLRm9ybUlucHV0U2Vzc2lvbiBzZXRTdWdnZXN0aW9uczpd
KToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBzZXR1cEludGVyYWN0aW9uXSk6CisgICAgICAg
ICgtW1dLQ29udGVudFZpZXcgY2xlYW51cEludGVyYWN0aW9uXSk6CisgICAgICAgICgtW1dLQ29u
dGVudFZpZXcgX2VuZEVkaXRpbmddKToKKworICAgICAgICBQdWxsIG91dCBjb21tb24gbG9naWMg
d2hlbiByZXNpZ25pbmcgZmlyc3QgcmVzcG9uZGVyIG9yIHRhYmJpbmcgdG8gdGhlIG5leHQgb3Ig
cHJldmlvdXMgdGV4dCBmaWVsZCBpbnRvIGEgbmV3CisgICAgICAgIGhlbHBlci4gVGhpcyBoZWxw
ZXIgbm90aWZpZXMgYF9pbnB1dFBlcmlwaGVyYWxgLCBgX2Zvcm1JbnB1dFNlc3Npb25gLCBhbmQg
YF9kYXRhTGlzdFRleHRTdWdnZXN0aW9uc0lucHV0Vmlld2AKKyAgICAgICAgd2hlbiBlZGl0aW5n
IGhhcyBlbmRlZDsgdGhlIGlucHV0IHBlcmlwaGVyYWwgYW5kIHN1Z2dlc3Rpb25zIGlucHV0IHZp
ZXcgdXNlIHRoaXMgY2hhbmNlIHRvIHNlbmQgdGhlIHZhbHVlIG9mIHRoZQorICAgICAgICBmb3Jt
IGNvbnRyb2wgdG8gdGhlIHdlYiBwcm9jZXNzLgorCisgICAgICAgICgtW1dLQ29udGVudFZpZXcg
cmVzaWduRmlyc3RSZXNwb25kZXJGb3JXZWJWaWV3XSk6CisgICAgICAgICgtW1dLQ29udGVudFZp
ZXcgaW5wdXRWaWV3XSk6CisKKyAgICAgICAgSWYgYSBjdXN0b20gaW5wdXQgdmlldyBpcyBub3Qg
c2V0IGJ1dCB3ZSBoYXZlIGFuIGlucHV0IHZpZXcgZm9yIGEgZGF0YWxpc3QncyB0ZXh0IHN1Z2dl
c3Rpb25zLCB1c2UgdGhlIGRhdGFsaXN0CisgICAgICAgIGlucHV0IHZpZXcuCisKKyAgICAgICAg
KC1bV0tDb250ZW50VmlldyBhY2Nlc3NvcnlUYWI6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZp
ZXcgX3N0b3BBc3Npc3RpbmdOb2RlXSk6CisKKyAgICAgICAgQ2xlYXIgZGF0YWxpc3Qgc3RhdGUg
b24gV0tDb250ZW50Vmlldy4KKworICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGRhdGFMaXN0VGV4
dFN1Z2dlc3Rpb25zSW5wdXRWaWV3XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgZGF0YUxp
c3RUZXh0U3VnZ2VzdGlvbnNdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBzZXREYXRhTGlz
dFRleHRTdWdnZXN0aW9uc0lucHV0VmlldzpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBz
ZXREYXRhTGlzdFRleHRTdWdnZXN0aW9uczpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyB1
cGRhdGVUZXh0U3VnZ2VzdGlvbnNGb3JJbnB1dERlbGVnYXRlXSk6CisKKyAgICAgICAgUHVsbCBv
dXQgbG9naWMgZm9yIHNldHRpbmcgc3VnZ2VzdGlvbnMgb24gVUlLaXQncyBgaW5wdXREZWxlZ2F0
ZWAgKGkuZS4gVUlLZXlib2FyZEltcGwpLiBXZSBub3cgZmlyc3QgY29uc3VsdAorICAgICAgICBp
bnRlcm5hbGx5LXZlbmRlZCB0ZXh0IHN1Z2dlc3Rpb25zIGZyb20gX1dLRm9ybUlucHV0U2Vzc2lv
bjsgaWYgYW4gaW50ZXJuYWwgY2xpZW50IGhhcyBub3Qgb3ZlcnJpZGRlbiBvdXIgdGV4dAorICAg
ICAgICBzdWdnZXN0aW9ucywgdGhlbiB3ZSBzaW1wbHkgdXNlIHN1Z2dlc3Rpb25zIGZyb20gdGhl
IGN1cnJlbnQgZGF0YWxpc3QgKGlmIHByZXNlbnQpLgorCisgICAgICAgICogVUlQcm9jZXNzL2lv
cy9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1MubW06CisgICAgICAgICgtW1dLRGF0
YUxpc3RTdWdnZXN0aW9uc1BpY2tlciB1cGRhdGVXaXRoSW5mb3JtYXRpb246XSk6CisgICAgICAg
ICgtW1dLRGF0YUxpc3RTdWdnZXN0aW9uc1BpY2tlciBzaG93U3VnZ2VzdGlvbnNEcm9wZG93bjph
Y3RpdmF0aW9uVHlwZTpdKToKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25zUGlja2Vy
IGludmFsaWRhdGVdKToKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25zUG9wb3ZlciB1
cGRhdGVXaXRoSW5mb3JtYXRpb246XSk6CisgICAgICAgICgtW1dLRGF0YUxpc3RTdWdnZXN0aW9u
c1BvcG92ZXIgc2hvd1N1Z2dlc3Rpb25zRHJvcGRvd246YWN0aXZhdGlvblR5cGU6XSk6CisgICAg
ICAgICgtW1dLRGF0YUxpc3RTdWdnZXN0aW9uc1BvcG92ZXIgZGlkU2VsZWN0T3B0aW9uQXRJbmRl
eDpdKToKKworICAgICAgICBDaGFuZ2UgYWxsIHRoZSBwbGFjZXMgdGhhdCBjdXJyZW50bHkgbWFu
aXB1bGF0ZSBXS0NvbnRlbnRWaWV3J3MgZm9ybSBpbnB1dCBzZXNzaW9uIHRvIGRpcmVjdGx5IHNl
dCB0ZXh0CisgICAgICAgIHN1Z2dlc3Rpb25zIGFuZCB0aGUgdGV4dCBzdWdnZXN0aW9uIGlucHV0
IHZpZXcgb24gdGhlIGNvbnRlbnQgdmlldyBpbnN0ZWFkLgorCiAyMDE4LTEwLTE4ICBUcnVpdHQg
U2F2ZWxsICA8dHNhdmVsbEBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGlu
ZyBvdXQgcjIzNzI3Mi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaAppbmRleCA4ZTNjZGZlMjAwZDRmMWI4NzMzYWI3ZDQ2
MTcxNzQyNTViNmJiY2E4Li4wN2E0YWQzYjE4YmExYWNhYzFiOGQ4OWQxNTMzOWQ3NDJmOTU1ZWQy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0lu
dGVyYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXdJbnRlcmFjdGlvbi5oCkBAIC0xNTksNiArMTU5LDcgQEAgc3RydWN0IFdLQXV0b0NvcnJlY3Rp
b25EYXRhIHsKIH0KIAogQGNsYXNzIFdLRm9jdXNlZEVsZW1lbnRJbmZvOworQHByb3RvY29sIFdL
Rm9ybUNvbnRyb2w7CiAKIEBpbnRlcmZhY2UgV0tGb3JtSW5wdXRTZXNzaW9uIDogTlNPYmplY3Qg
PF9XS0Zvcm1JbnB1dFNlc3Npb24+CiAKQEAgLTI0Nyw2ICsyNDgsMTEgQEAgc3RydWN0IFdLQXV0
b0NvcnJlY3Rpb25EYXRhIHsKIAogICAgIFJldGFpblB0cjxXS0tleWJvYXJkU2Nyb2xsVmlld0Fu
aW1hdG9yPiBfa2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvcjsKIAorI2lmIEVOQUJMRShEQVRBTElT
VF9FTEVNRU5UKQorICAgIFJldGFpblB0cjxVSVZpZXcgPFdLRm9ybUNvbnRyb2w+PiBfZGF0YUxp
c3RUZXh0U3VnZ2VzdGlvbnNJbnB1dFZpZXc7CisgICAgUmV0YWluUHRyPE5TQXJyYXk8VUlUZXh0
U3VnZ2VzdGlvbiAqPj4gX2RhdGFMaXN0VGV4dFN1Z2dlc3Rpb25zOworI2VuZGlmCisKICAgICBC
T09MIF9pc0VkaXRhYmxlOwogICAgIEJPT0wgX3Nob3dpbmdUZXh0U3R5bGVPcHRpb25zOwogICAg
IEJPT0wgX2hhc1ZhbGlkUG9zaXRpb25JbmZvcm1hdGlvbjsKQEAgLTMxMSw2ICszMTcsMTEgQEAg
c3RydWN0IFdLQXV0b0NvcnJlY3Rpb25EYXRhIHsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFk
b25seSkgVUlXZWJGb3JtQWNjZXNzb3J5ICpmb3JtQWNjZXNzb3J5VmlldzsKIEBwcm9wZXJ0eSAo
bm9uYXRvbWljKSBCT09MIHN1cHByZXNzQXNzaXN0YW50U2VsZWN0aW9uVmlldzsKIAorI2lmIEVO
QUJMRShEQVRBTElTVF9FTEVNRU5UKQorQHByb3BlcnR5IChub25hdG9taWMsIHN0cm9uZykgVUlW
aWV3IDxXS0Zvcm1Db250cm9sPiAqZGF0YUxpc3RUZXh0U3VnZ2VzdGlvbnNJbnB1dFZpZXc7CitA
cHJvcGVydHkgKG5vbmF0b21pYywgc3Ryb25nKSBOU0FycmF5PFVJVGV4dFN1Z2dlc3Rpb24gKj4g
KmRhdGFMaXN0VGV4dFN1Z2dlc3Rpb25zOworI2VuZGlmCisKIC0gKHZvaWQpc2V0dXBJbnRlcmFj
dGlvbjsKIC0gKHZvaWQpY2xlYW51cEludGVyYWN0aW9uOwogCkBAIC0zOTIsNiArNDAzLDEwIEBA
IERFQ0xBUkVfV0tDT05URU5UVklFV19BQ1RJT05fRk9SX1dFQl9WSUVXKF9wYXN0ZUFzUXVvdGF0
aW9uKQogCiAtICh2b2lkKXJlbG9hZENvbnRleHRWaWV3Rm9yUHJlc2VudGVkTGlzdFZpZXdDb250
cm9sbGVyOwogCisjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCistICh2b2lkKXVwZGF0ZVRl
eHRTdWdnZXN0aW9uc0ZvcklucHV0RGVsZWdhdGU7CisjZW5kaWYKKwogQGVuZAogCiBAaW50ZXJm
YWNlIFdLQ29udGVudFZpZXcgKFdLVGVzdGluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IDQ2ZDQ1NGNm
ZTRlNjczZGRhNmVmMzE3YTZlM2ZmMDJlMGVmOGU1YzguLjQ1NjUwNzM1MDRmZjI3OGZjZWU2MGMy
NjdhZDIzMzY3M2Y3ZjkzNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtMzk1LDE1ICszOTUsMTEgQEAg
Y29uc3QgQ0dGbG9hdCBtaW5pbXVtVGFwSGlnaGxpZ2h0UmFkaXVzID0gMi4wOwogCiAtICh2b2lk
KXNldFN1Z2dlc3Rpb25zOihOU0FycmF5PFVJVGV4dFN1Z2dlc3Rpb24gKj4gKilzdWdnZXN0aW9u
cwogewotICAgIC8vIFN1Z2dlc3Rpb25zIHRoYXQgY29tZSBmcm9tIGEgPGRhdGFsaXN0PiBzaG91
bGQgbm90IGJlIG92ZXJ3cml0dGVuIGJ5IG90aGVyIGNsaWVudHMuCi0jaWYgRU5BQkxFKERBVEFM
SVNUX0VMRU1FTlQpCi0gICAgaWYgKFtfY29udGVudFZpZXcgYXNzaXN0ZWROb2RlSW5mb3JtYXRp
b25dLmhhc1N1Z2dlc3Rpb25zICYmICFbc3VnZ2VzdGlvbnMuZmlyc3RPYmplY3QgaXNLaW5kT2ZD
bGFzczpbV0tEYXRhTGlzdFRleHRTdWdnZXN0aW9uIGNsYXNzXV0pCisgICAgaWYgKHN1Z2dlc3Rp
b25zID09IF9zdWdnZXN0aW9ucyB8fCBbc3VnZ2VzdGlvbnMgaXNFcXVhbFRvQXJyYXk6X3N1Z2dl
c3Rpb25zLmdldCgpXSkKICAgICAgICAgcmV0dXJuOwotI2VuZGlmCiAKLSAgICBpZCA8VUlUZXh0
SW5wdXRTdWdnZXN0aW9uRGVsZWdhdGU+IHN1Z2dlc3Rpb25EZWxlZ2F0ZSA9IChpZCA8VUlUZXh0
SW5wdXRTdWdnZXN0aW9uRGVsZWdhdGU+KVtfY29udGVudFZpZXcgaW5wdXREZWxlZ2F0ZV07CiAg
ICAgX3N1Z2dlc3Rpb25zID0gYWRvcHROUyhbc3VnZ2VzdGlvbnMgY29weV0pOwotICAgIFtzdWdn
ZXN0aW9uRGVsZWdhdGUgc2V0U3VnZ2VzdGlvbnM6c3VnZ2VzdGlvbnNdOworICAgIFtfY29udGVu
dFZpZXcgdXBkYXRlVGV4dFN1Z2dlc3Rpb25zRm9ySW5wdXREZWxlZ2F0ZV07CiB9CiAKIC0gKEJP
T0wpcmVxdWlyZXNTdHJvbmdQYXNzd29yZEFzc2lzdGFuY2UKQEAgLTcxMiw2ICs3MDgsMTEgQEAg
c3RhdGljIGlubGluZSBib29sIGhhc0Fzc2lzdGVkTm9kZShXZWJLaXQ6OkFzc2lzdGVkTm9kZUlu
Zm9ybWF0aW9uIGFzc2lzdGVkTm9kZUkKICAgICBfbmVlZHNEZWZlcnJlZEVuZFNjcm9sbGluZ1Nl
bGVjdGlvblVwZGF0ZSA9IE5POwogICAgIF9pc0NoYW5naW5nRm9jdXMgPSBOTzsKICAgICBfaXNC
bHVycmluZ0ZvY3VzZWROb2RlID0gTk87CisKKyNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkK
KyAgICBfZGF0YUxpc3RUZXh0U3VnZ2VzdGlvbnNJbnB1dFZpZXcgPSBuaWw7CisgICAgX2RhdGFM
aXN0VGV4dFN1Z2dlc3Rpb25zID0gbmlsOworI2VuZGlmCiB9CiAKIC0gKHZvaWQpY2xlYW51cElu
dGVyYWN0aW9uCkBAIC04MDcsNiArODA4LDExIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBoYXNBc3Np
c3RlZE5vZGUoV2ViS2l0OjpBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbiBhc3Npc3RlZE5vZGVJCiAg
ICAgCiAgICAgW19rZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yIGludmFsaWRhdGVdOwogICAgIF9r
ZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yID0gbmlsOworCisjaWYgRU5BQkxFKERBVEFMSVNUX0VM
RU1FTlQpCisgICAgX2RhdGFMaXN0VGV4dFN1Z2dlc3Rpb25zSW5wdXRWaWV3ID0gbmlsOworICAg
IF9kYXRhTGlzdFRleHRTdWdnZXN0aW9ucyA9IG5pbDsKKyNlbmRpZgogfQogCiAtICh2b2lkKV9y
ZW1vdmVEZWZhdWx0R2VzdHVyZVJlY29nbml6ZXJzCkBAIC05NjgsNiArOTc0LDE1IEBAIHN0YXRp
YyBpbmxpbmUgYm9vbCBoYXNBc3Npc3RlZE5vZGUoV2ViS2l0OjpBc3Npc3RlZE5vZGVJbmZvcm1h
dGlvbiBhc3Npc3RlZE5vZGVJCiAgICAgcmV0dXJuIFlFUzsKIH0KIAorLSAodm9pZClfZW5kRWRp
dGluZworeworICAgIFtfaW5wdXRQZXJpcGhlcmFsIGVuZEVkaXRpbmddOworICAgIFtfZm9ybUlu
cHV0U2Vzc2lvbiBlbmRFZGl0aW5nXTsKKyNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKKyAg
ICBbX2RhdGFMaXN0VGV4dFN1Z2dlc3Rpb25zSW5wdXRWaWV3IGNvbnRyb2xFbmRFZGl0aW5nXTsK
KyNlbmRpZgorfQorCiAtIChCT09MKWNhbkJlY29tZUZpcnN0UmVzcG9uZGVyCiB7CiAgICAgcmV0
dXJuIF9iZWNvbWluZ0ZpcnN0UmVzcG9uZGVyOwpAQCAtMTAxNyw5ICsxMDMyLDcgQEAgc3RhdGlj
IGlubGluZSBib29sIGhhc0Fzc2lzdGVkTm9kZShXZWJLaXQ6OkFzc2lzdGVkTm9kZUluZm9ybWF0
aW9uIGFzc2lzdGVkTm9kZUkKICAgICBfcmVzaWduaW5nRmlyc3RSZXNwb25kZXIgPSBZRVM7CiAg
ICAgaWYgKCFfd2ViVmlldy5fcmV0YWluaW5nQWN0aXZlRm9jdXNlZFN0YXRlKSB7CiAgICAgICAg
IC8vIFdlIG5lZWQgdG8gY29tcGxldGUgdGhlIGVkaXRpbmcgb3BlcmF0aW9uIGJlZm9yZSB3ZSBi
bHVyIHRoZSBlbGVtZW50LgotICAgICAgICBbX2lucHV0UGVyaXBoZXJhbCBlbmRFZGl0aW5nXTsK
LSAgICAgICAgW19mb3JtSW5wdXRTZXNzaW9uIGVuZEVkaXRpbmddOwotCisgICAgICAgIFtzZWxm
IF9lbmRFZGl0aW5nXTsKICAgICAgICAgX3BhZ2UtPmJsdXJBc3Npc3RlZE5vZGUoKTsKICAgICB9
CiAKQEAgLTEzNjIsNyArMTM3NSwxNSBAQCBzdGF0aWMgTlNWYWx1ZSAqbnNTaXplRm9yVGFwSGln
aGxpZ2h0Qm9yZGVyUmFkaXVzKFdlYkNvcmU6OkludFNpemUgYm9yZGVyUmFkaXVzLAogICAgIH0g
ZWxzZQogICAgICAgICBbc2VsZiBfZGlzcGxheUZvcm1Ob2RlSW5wdXRWaWV3XTsKIAotICAgIHJl
dHVybiBbX2Zvcm1JbnB1dFNlc3Npb24gY3VzdG9tSW5wdXRWaWV3XSA/OiBbX2lucHV0UGVyaXBo
ZXJhbCBhc3Npc3RhbnRWaWV3XTsKKyAgICBpZiAoVUlWaWV3ICpjdXN0b21JbnB1dFZpZXcgPSBb
X2Zvcm1JbnB1dFNlc3Npb24gY3VzdG9tSW5wdXRWaWV3XSkKKyAgICAgICAgcmV0dXJuIGN1c3Rv
bUlucHV0VmlldzsKKworI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQorICAgIGlmIChfZGF0
YUxpc3RUZXh0U3VnZ2VzdGlvbnNJbnB1dFZpZXcpCisgICAgICAgIHJldHVybiBfZGF0YUxpc3RU
ZXh0U3VnZ2VzdGlvbnNJbnB1dFZpZXcuZ2V0KCk7CisjZW5kaWYKKworICAgIHJldHVybiBbX2lu
cHV0UGVyaXBoZXJhbCBhc3Npc3RhbnRWaWV3XTsKIH0KIAogLSAoQ0dSZWN0KV9zZWxlY3Rpb25D
bGlwUmVjdApAQCAtMzE3MCw5ICszMTkxLDcgQEAgc3RhdGljIHZvaWQgc2VsZWN0aW9uQ2hhbmdl
ZFdpdGhUb3VjaChXS0NvbnRlbnRWaWV3ICp2aWV3LCBjb25zdCBXZWJDb3JlOjpJbnRQb2kKIAog
LSAodm9pZClhY2Nlc3NvcnlUYWI6KEJPT0wpaXNOZXh0CiB7Ci0gICAgW19mb3JtSW5wdXRTZXNz
aW9uIGVuZEVkaXRpbmddOwotCi0gICAgW19pbnB1dFBlcmlwaGVyYWwgZW5kRWRpdGluZ107Cisg
ICAgW3NlbGYgX2VuZEVkaXRpbmddOwogICAgIF9pbnB1dFBlcmlwaGVyYWwgPSBuaWw7CiAKICAg
ICBfZGlkQWNjZXNzb3J5VGFiSW5pdGlhdGVGb2N1cyA9IFlFUzsgLy8gV2lsbCBiZSBjbGVhcmVk
IGluIGVpdGhlciAtX2Rpc3BsYXlGb3JtTm9kZUlucHV0VmlldyBvciAtY2xlYW51cEludGVyYWN0
aW9uLgpAQCAtNDMyMiw2ICs0MzQxLDExIEBAIHN0YXRpYyBib29sIGlzQXNzaXN0YWJsZUlucHV0
VHlwZShJbnB1dFR5cGUgdHlwZSkKICAgICBbX2Zvcm1JbnB1dFNlc3Npb24gaW52YWxpZGF0ZV07
CiAgICAgX2Zvcm1JbnB1dFNlc3Npb24gPSBuaWw7CiAKKyNpZiBFTkFCTEUoREFUQUxJU1RfRUxF
TUVOVCkKKyAgICBfZGF0YUxpc3RUZXh0U3VnZ2VzdGlvbnNJbnB1dFZpZXcgPSBuaWw7CisgICAg
X2RhdGFMaXN0VGV4dFN1Z2dlc3Rpb25zID0gbmlsOworI2VuZGlmCisKICAgICBCT09MIGVkaXRh
YmxlQ2hhbmdlZCA9IFtzZWxmIHNldElzRWRpdGFibGU6Tk9dOwogCiAgICAgX2Fzc2lzdGVkTm9k
ZUluZm9ybWF0aW9uLmVsZW1lbnRUeXBlID0gSW5wdXRUeXBlOjpOb25lOwpAQCAtNDc0MCw2ICs0
NzY0LDYyIEBAIHN0YXRpYyBib29sIGlzQXNzaXN0YWJsZUlucHV0VHlwZShJbnB1dFR5cGUgdHlw
ZSkKICAgICAgICAgW190ZXh0U2VsZWN0aW9uQXNzaXN0YW50IGFjdGl2YXRlU2VsZWN0aW9uXTsK
IH0KIAorI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQorCistIChVSVZpZXcgPFdLRm9ybUNv
bnRyb2w+ICopZGF0YUxpc3RUZXh0U3VnZ2VzdGlvbnNJbnB1dFZpZXcKK3sKKyAgICByZXR1cm4g
X2RhdGFMaXN0VGV4dFN1Z2dlc3Rpb25zSW5wdXRWaWV3LmdldCgpOworfQorCistIChOU0FycmF5
PFVJVGV4dFN1Z2dlc3Rpb24gKj4gKilkYXRhTGlzdFRleHRTdWdnZXN0aW9ucworeworICAgIHJl
dHVybiBfZGF0YUxpc3RUZXh0U3VnZ2VzdGlvbnMuZ2V0KCk7Cit9CisKKy0gKHZvaWQpc2V0RGF0
YUxpc3RUZXh0U3VnZ2VzdGlvbnNJbnB1dFZpZXc6KFVJVmlldyA8V0tGb3JtQ29udHJvbD4gKilz
dWdnZXN0aW9uc0lucHV0VmlldworeworICAgIGlmIChfZGF0YUxpc3RUZXh0U3VnZ2VzdGlvbnNJ
bnB1dFZpZXcgPT0gc3VnZ2VzdGlvbnNJbnB1dFZpZXcpCisgICAgICAgIHJldHVybjsKKworICAg
IF9kYXRhTGlzdFRleHRTdWdnZXN0aW9uc0lucHV0VmlldyA9IHN1Z2dlc3Rpb25zSW5wdXRWaWV3
OworCisgICAgaWYgKCFbX2Zvcm1JbnB1dFNlc3Npb24gY3VzdG9tSW5wdXRWaWV3XSkKKyAgICAg
ICAgW3NlbGYgcmVsb2FkSW5wdXRWaWV3c107Cit9CisKKy0gKHZvaWQpc2V0RGF0YUxpc3RUZXh0
U3VnZ2VzdGlvbnM6KE5TQXJyYXk8VUlUZXh0U3VnZ2VzdGlvbiAqPiAqKXRleHRTdWdnZXN0aW9u
cworeworICAgIGlmICh0ZXh0U3VnZ2VzdGlvbnMgPT0gX2RhdGFMaXN0VGV4dFN1Z2dlc3Rpb25z
IHx8IFt0ZXh0U3VnZ2VzdGlvbnMgaXNFcXVhbFRvQXJyYXk6X2RhdGFMaXN0VGV4dFN1Z2dlc3Rp
b25zLmdldCgpXSkKKyAgICAgICAgcmV0dXJuOworCisgICAgX2RhdGFMaXN0VGV4dFN1Z2dlc3Rp
b25zID0gdGV4dFN1Z2dlc3Rpb25zOworCisgICAgaWYgKCFbX2Zvcm1JbnB1dFNlc3Npb24gc3Vn
Z2VzdGlvbnNdLmNvdW50KQorICAgICAgICBbc2VsZiB1cGRhdGVUZXh0U3VnZ2VzdGlvbnNGb3JJ
bnB1dERlbGVnYXRlXTsKK30KKworI2VuZGlmCisKKy0gKHZvaWQpdXBkYXRlVGV4dFN1Z2dlc3Rp
b25zRm9ySW5wdXREZWxlZ2F0ZQoreworICAgIC8vIFRleHQgc3VnZ2VzdGlvbnMgdmVuZGVkIGZy
b20gY2xpZW50cyB0YWtlIHByZWNlZGVuY2Ugb3ZlciB0ZXh0IHN1Z2dlc3Rpb25zIGZyb20gYSBm
b2N1c2VkIGZvcm0gY29udHJvbCB3aXRoIGEgZGF0YWxpc3QuCisgICAgaWQgPFVJVGV4dElucHV0
U3VnZ2VzdGlvbkRlbGVnYXRlPiBpbnB1dERlbGVnYXRlID0gKGlkIDxVSVRleHRJbnB1dFN1Z2dl
c3Rpb25EZWxlZ2F0ZT4pc2VsZi5pbnB1dERlbGVnYXRlOworICAgIE5TQXJyYXk8VUlUZXh0U3Vn
Z2VzdGlvbiAqPiAqZm9ybUlucHV0U2Vzc2lvblN1Z2dlc3Rpb25zID0gW19mb3JtSW5wdXRTZXNz
aW9uIHN1Z2dlc3Rpb25zXTsKKyAgICBpZiAoZm9ybUlucHV0U2Vzc2lvblN1Z2dlc3Rpb25zLmNv
dW50KSB7CisgICAgICAgIFtpbnB1dERlbGVnYXRlIHNldFN1Z2dlc3Rpb25zOmZvcm1JbnB1dFNl
c3Npb25TdWdnZXN0aW9uc107CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyNpZiBFTkFCTEUo
REFUQUxJU1RfRUxFTUVOVCkKKyAgICBpZiAoW19kYXRhTGlzdFRleHRTdWdnZXN0aW9ucyBjb3Vu
dF0pIHsKKyAgICAgICAgW2lucHV0RGVsZWdhdGUgc2V0U3VnZ2VzdGlvbnM6X2RhdGFMaXN0VGV4
dFN1Z2dlc3Rpb25zLmdldCgpXTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorCisg
ICAgW2lucHV0RGVsZWdhdGUgc2V0U3VnZ2VzdGlvbnM6bmlsXTsKK30KKwogLSAodm9pZClfc2hv
d1BsYXliYWNrVGFyZ2V0UGlja2VyOihCT09MKWhhc1ZpZGVvIGZyb21SZWN0Oihjb25zdCBJbnRS
ZWN0JillbGVtZW50UmVjdCByb3V0ZVNoYXJpbmdQb2xpY3k6KFdlYkNvcmU6OlJvdXRlU2hhcmlu
Z1BvbGljeSlyb3V0ZVNoYXJpbmdQb2xpY3kgcm91dGluZ0NvbnRleHRVSUQ6KE5TU3RyaW5nICop
cm91dGluZ0NvbnRleHRVSUQKIHsKICNpZiBFTkFCTEUoQUlSUExBWV9QSUNLRVIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ry
b3Bkb3duSU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYkRhdGFMaXN0U3Vn
Z2VzdGlvbnNEcm9wZG93bklPUy5tbQppbmRleCBhYjY0Y2ZhOGU5MTBjMmZkOGFlZjZjOWVhNjVm
ZjFiNGNmMWRjZTc0Li4zZjU4ZjcxN2RlNDM0MzE4Y2U5MGI5MDRjMWNmY2NmMzJiZjY0YTEyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViRGF0YUxpc3RTdWdnZXN0
aW9uc0Ryb3Bkb3duSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJE
YXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1MubW0KQEAgLTMyLDcgKzMyLDYgQEAKICNpbXBv
cnQgIldLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oIgogI2ltcG9ydCAiV0tGb3JtUGVyaXBoZXJh
bC5oIgogI2ltcG9ydCAiV0tGb3JtUG9wb3Zlci5oIgotI2ltcG9ydCAiX1dLRm9ybUlucHV0U2Vz
c2lvbi5oIgogCiBzdGF0aWMgY29uc3QgQ0dGbG9hdCBtYXhWaXNpYmxlU3VnZ2VzdGlvbnMgPSA1
Owogc3RhdGljIGNvbnN0IENHRmxvYXQgc3VnZ2VzdGlvbnNQb3BvdmVyQ2VsbEhlaWdodCA9IDQ0
OwpAQCAtMjIwLDEyICsyMTksMTIgQEAgdm9pZCBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRv
d25JT1M6OmRpZFNlbGVjdE9wdGlvbihjb25zdCBTdHJpbmcmIHNlbGVjdGVkT3AKIHsKICAgICBb
c3VwZXIgdXBkYXRlV2l0aEluZm9ybWF0aW9uOldURk1vdmUoaW5mb3JtYXRpb24pXTsKICAgICBp
ZiAoaW5mb3JtYXRpb24uYWN0aXZhdGlvblR5cGUgIT0gV2ViQ29yZTo6RGF0YUxpc3RTdWdnZXN0
aW9uQWN0aXZhdGlvblR5cGU6OkluZGljYXRvckNsaWNrZWQpIHsKLSAgICAgICAgW1tzZWxmLnZp
ZXcgX2Zvcm1JbnB1dFNlc3Npb25dIHNldEN1c3RvbUlucHV0VmlldzpuaWxdOwotICAgICAgICBb
W3NlbGYudmlldyBfZm9ybUlucHV0U2Vzc2lvbl0gc2V0U3VnZ2VzdGlvbnM6W3NlbGYgdGV4dFN1
Z2dlc3Rpb25zXV07CisgICAgICAgIHNlbGYudmlldy5kYXRhTGlzdFRleHRTdWdnZXN0aW9uc0lu
cHV0VmlldyA9IG5pbDsKKyAgICAgICAgc2VsZi52aWV3LmRhdGFMaXN0VGV4dFN1Z2dlc3Rpb25z
ID0gc2VsZi50ZXh0U3VnZ2VzdGlvbnM7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBb
W3NlbGYudmlldyBfZm9ybUlucHV0U2Vzc2lvbl0gc2V0Q3VzdG9tSW5wdXRWaWV3Ol9waWNrZXJW
aWV3LmdldCgpXTsKKyAgICBzZWxmLnZpZXcuZGF0YUxpc3RUZXh0U3VnZ2VzdGlvbnNJbnB1dFZp
ZXcgPSBfcGlja2VyVmlldy5nZXQoKTsKIAogICAgIFtfcGlja2VyVmlldyByZWxvYWRBbGxDb21w
b25lbnRzXTsKICAgICBbX3BpY2tlclZpZXcgc2VsZWN0Um93OjAgaW5Db21wb25lbnQ6MCBhbmlt
YXRlZDpOT107CkBAIC0yMzUsMTAgKzIzNCwxMCBAQCB2b2lkIFdlYkRhdGFMaXN0U3VnZ2VzdGlv
bnNEcm9wZG93bklPUzo6ZGlkU2VsZWN0T3B0aW9uKGNvbnN0IFN0cmluZyYgc2VsZWN0ZWRPcAog
ewogICAgIFtzdXBlciBzaG93U3VnZ2VzdGlvbnNEcm9wZG93bjpkcm9wZG93biBhY3RpdmF0aW9u
VHlwZTphY3RpdmF0aW9uVHlwZV07CiAgICAgaWYgKGFjdGl2YXRpb25UeXBlID09IFdlYkNvcmU6
OkRhdGFMaXN0U3VnZ2VzdGlvbkFjdGl2YXRpb25UeXBlOjpJbmRpY2F0b3JDbGlja2VkKSB7Ci0g
ICAgICAgIFtbc2VsZi52aWV3IF9mb3JtSW5wdXRTZXNzaW9uXSBzZXRDdXN0b21JbnB1dFZpZXc6
X3BpY2tlclZpZXcuZ2V0KCldOworICAgICAgICBzZWxmLnZpZXcuZGF0YUxpc3RUZXh0U3VnZ2Vz
dGlvbnNJbnB1dFZpZXcgPSBfcGlja2VyVmlldy5nZXQoKTsKICAgICAgICAgW19waWNrZXJWaWV3
IHNlbGVjdFJvdzowIGluQ29tcG9uZW50OjAgYW5pbWF0ZWQ6Tk9dOwogICAgIH0gZWxzZQotICAg
ICAgICBbW3NlbGYudmlldyBfZm9ybUlucHV0U2Vzc2lvbl0gc2V0U3VnZ2VzdGlvbnM6W3NlbGYg
dGV4dFN1Z2dlc3Rpb25zXV07CisgICAgICAgIHNlbGYudmlldy5kYXRhTGlzdFRleHRTdWdnZXN0
aW9ucyA9IHNlbGYudGV4dFN1Z2dlc3Rpb25zOwogfQogCiAtIChOU0ludGVnZXIpbnVtYmVyT2ZD
b21wb25lbnRzSW5QaWNrZXJWaWV3OihVSVBpY2tlclZpZXcgKilwaWNrZXJWaWV3CkBAIC0yNTgs
OCArMjU3LDggQEAgdm9pZCBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25JT1M6OmRpZFNl
bGVjdE9wdGlvbihjb25zdCBTdHJpbmcmIHNlbGVjdGVkT3AKIAogLSAodm9pZClpbnZhbGlkYXRl
CiB7Ci0gICAgaWYgKFtbc2VsZi52aWV3IF9mb3JtSW5wdXRTZXNzaW9uXSBjdXN0b21JbnB1dFZp
ZXddID09IF9waWNrZXJWaWV3LmdldCgpKQotICAgICAgICBbW3NlbGYudmlldyBfZm9ybUlucHV0
U2Vzc2lvbl0gc2V0Q3VzdG9tSW5wdXRWaWV3Om5pbF07CisgICAgaWYgKHNlbGYudmlldy5kYXRh
TGlzdFRleHRTdWdnZXN0aW9uc0lucHV0VmlldyA9PSBfcGlja2VyVmlldy5nZXQoKSkKKyAgICAg
ICAgc2VsZi52aWV3LmRhdGFMaXN0VGV4dFN1Z2dlc3Rpb25zSW5wdXRWaWV3ID0gbmlsOwogCiAg
ICAgW19waWNrZXJWaWV3IHNldERlbGVnYXRlOm5pbF07CiAgICAgW19waWNrZXJWaWV3IHNldERh
dGFTb3VyY2U6bmlsXTsKQEAgLTMwNyw3ICszMDYsNyBAQCB2b2lkIFdlYkRhdGFMaXN0U3VnZ2Vz
dGlvbnNEcm9wZG93bklPUzo6ZGlkU2VsZWN0T3B0aW9uKGNvbnN0IFN0cmluZyYgc2VsZWN0ZWRP
cAogewogICAgIFtzdXBlciB1cGRhdGVXaXRoSW5mb3JtYXRpb246V1RGTW92ZShpbmZvcm1hdGlv
bildOwogICAgIFtfc3VnZ2VzdGlvbnNWaWV3Q29udHJvbGxlciByZWxvYWREYXRhXTsKLSAgICBb
W3NlbGYudmlldyBfZm9ybUlucHV0U2Vzc2lvbl0gc2V0U3VnZ2VzdGlvbnM6W3NlbGYgdGV4dFN1
Z2dlc3Rpb25zXV07CisgICAgc2VsZi52aWV3LmRhdGFMaXN0VGV4dFN1Z2dlc3Rpb25zID0gc2Vs
Zi50ZXh0U3VnZ2VzdGlvbnM7CiB9CiAKIC0gKHZvaWQpc2hvd1N1Z2dlc3Rpb25zRHJvcGRvd246
KFdlYktpdDo6V2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duSU9TICopZHJvcGRvd24gYWN0
aXZhdGlvblR5cGU6KFdlYkNvcmU6OkRhdGFMaXN0U3VnZ2VzdGlvbkFjdGl2YXRpb25UeXBlKWFj
dGl2YXRpb25UeXBlCkBAIC0zMTcsNyArMzE2LDcgQEAgdm9pZCBXZWJEYXRhTGlzdFN1Z2dlc3Rp
b25zRHJvcGRvd25JT1M6OmRpZFNlbGVjdE9wdGlvbihjb25zdCBTdHJpbmcmIHNlbGVjdGVkT3AK
ICAgICBfc3VnZ2VzdGlvbnNWaWV3Q29udHJvbGxlciA9IGFkb3B0TlMoW1tXS0RhdGFMaXN0U3Vn
Z2VzdGlvbnNWaWV3Q29udHJvbGxlciBhbGxvY10gaW5pdFdpdGhTdHlsZTpVSVRhYmxlVmlld1N0
eWxlUGxhaW5dKTsKICAgICBbX3N1Z2dlc3Rpb25zVmlld0NvbnRyb2xsZXIgc2V0Q29udHJvbDpz
ZWxmXTsKICAgICBbX3N1Z2dlc3Rpb25zVmlld0NvbnRyb2xsZXIgcmVsb2FkRGF0YV07Ci0gICAg
W1tzZWxmLnZpZXcgX2Zvcm1JbnB1dFNlc3Npb25dIHNldFN1Z2dlc3Rpb25zOltzZWxmIHRleHRT
dWdnZXN0aW9uc11dOworICAgIHNlbGYudmlldy5kYXRhTGlzdFRleHRTdWdnZXN0aW9ucyA9IHNl
bGYudGV4dFN1Z2dlc3Rpb25zOwogCiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJ
TgogICAgIFtfcG9wb3ZlciBzZXRQb3BvdmVyQ29udHJvbGxlcjpbW1tVSVBvcG92ZXJDb250cm9s
bGVyIGFsbG9jXSBpbml0V2l0aENvbnRlbnRWaWV3Q29udHJvbGxlcjpfc3VnZ2VzdGlvbnNWaWV3
Q29udHJvbGxlci5nZXQoKV0gYXV0b3JlbGVhc2VdXTsKQEAgLTMzNSw3ICszMzQsNyBAQCBBTExP
V19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIHsKICAgICBbc3VwZXIgZGlkU2VsZWN0T3B0
aW9uQXRJbmRleDppbmRleF07CiAgICAgW1tfcG9wb3ZlciBwb3BvdmVyQ29udHJvbGxlcl0gZGlz
bWlzc1BvcG92ZXJBbmltYXRlZDpZRVNdOwotICAgIFtbc2VsZi52aWV3IF9mb3JtSW5wdXRTZXNz
aW9uXSBzZXRTdWdnZXN0aW9uczpAWyBbV0tEYXRhTGlzdFRleHRTdWdnZXN0aW9uIHRleHRTdWdn
ZXN0aW9uV2l0aElucHV0VGV4dDpbc2VsZiBzdWdnZXN0aW9uQXRJbmRleDppbmRleF1dIF1dOwor
ICAgIHNlbGYudmlldy5kYXRhTGlzdFRleHRTdWdnZXN0aW9ucyA9IEBbIFtXS0RhdGFMaXN0VGV4
dFN1Z2dlc3Rpb24gdGV4dFN1Z2dlc3Rpb25XaXRoSW5wdXRUZXh0OltzZWxmIHN1Z2dlc3Rpb25B
dEluZGV4OmluZGV4XV0gXTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGJkMGJhZDFmZjk4ZTIyNGY3MDAyNTlmYzM4NDVmZWQ0
YWYzNGMyMjkuLjAwNmZkM2IzOWNlYTA4NjMwZjM5NTZlNjAwNGI3NzA1ZWFkMmU3N2YgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwz
NCBAQAorMjAxOC0xMC0xOSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4K
KworICAgICAgICBbaU9TXSBbRGF0YWxpc3RdIENhbid0IHBpY2sgZGF0YWxpc3Qgc3VnZ2VzdGlv
bnMgaW4gYSBzdG9jayBXS1dlYlZpZXcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5MDYyMQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDUzMTA2NDk+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGltIEhvcnRvbi4KKworICAgICAgICBBZGQgYSBVSVNj
cmlwdENvbnRyb2xsZXIgaG9vayB0byByZXNpZ24gZmlyc3QgcmVzcG9uZGVyIG9uIFdLV2ViVmll
dy4gU2VlIExheW91dFRlc3RzL0NoYW5nZUxvZyBmb3IgbW9yZSBkZXRhaWwuCisKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tOgorICAgICAgICAo
V1RSOjpVSVNjcmlwdENvbnRyb2xsZXI6OnJlc2lnbkZpcnN0UmVzcG9uZGVyKToKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9tYWMvVUlTY3JpcHRDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAo
V1RSOjpVSVNjcmlwdENvbnRyb2xsZXI6OnJlc2lnbkZpcnN0UmVzcG9uZGVyKToKKyAgICAgICAg
KiBUZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9CaW5kaW5ncy9VSVNjcmlwdENvbnRy
b2xsZXIuaWRsOgorICAgICAgICAqIFRlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJ
U2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6
cmVzaWduRmlyc3RSZXNwb25kZXIpOgorICAgICAgICAqIFRlc3RSdW5uZXJTaGFyZWQvVUlTY3Jp
cHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5u
ZXIvVUlTY3JpcHRDb250cm9sbGVyQ29jb2EubW06CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29u
dHJvbGxlcjo6cmVzaWduRmlyc3RSZXNwb25kZXIpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5u
ZXIvaW9zL1BsYXRmb3JtV2ViVmlld0lPUy5tbToKKyAgICAgICAgKFdUUjo6UGxhdGZvcm1XZWJW
aWV3OjptYWtlV2ViVmlld0ZpcnN0UmVzcG9uZGVyKToKKworICAgICAgICBJbXBsZW1lbnQgdGhp
cyBtZXRob2Qgc3R1YiBvbiBpT1MsIHRvIGVuc3VyZSB0aGF0IFRlc3RDb250cm9sbGVyOjpyZXNl
dFN0YXRlVG9Db25zaXN0ZW50VmFsdWVzIHJlc3RvcmVzIGZpcnN0CisgICAgICAgIHJlc3BvbmRl
ciBvbiB0aGUgV0tXZWJWaWV3IHdoZW4gcnVubmluZyBpT1MgbGF5b3V0IHRlc3RzLgorCisgICAg
ICAgICogV2ViS2l0VGVzdFJ1bm5lci9pb3MvVGVzdENvbnRyb2xsZXJJT1MubW06CisgICAgICAg
IChXVFI6OlRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybVJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1
ZXMpOgorCisgICAgICAgIEFmdGVyIHJlc2lnbmluZyBmaXJzdCByZXNwb25kZXIgdG8gZGlzbWlz
cyBhbnkgb24tc2NyZWVuIGtleWJvYXJkLCBlbnN1cmUgdGhhdCB3ZSByZXN0b3JlIGZpcnN0IHJl
c3BvbmRlci4KKwogMjAxOC0xMC0xOCAgQWxpY2lhIEJveWEgR2FyY8OtYSAgPGFib3lhQGlnYWxp
YS5jb20+CiAKICAgICAgICAgW01lZGlhXSBVc2UgbmFub3NlY29uZHMgYXMgTWF4aW11bVRpbWVT
Y2FsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL1VJU2NyaXB0Q29udHJv
bGxlcklPUy5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJ
T1MubW0KaW5kZXggY2VlOThjYmM3YjAwMGU4ZjVmZWI2YjY5M2Y2ZTJiM2NlYmVmMjJhMC4uNmFi
Zjg0NWNhYTk3MWQ5NWM2NDk3YWI1MjJjYjg2YmNmOTA5Y2FlOCAxMDA2NDQKLS0tIGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbQorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tCkBAIC04Miw2ICs4Miwx
MCBAQCB2b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6em9vbVRvU2NhbGUoZG91YmxlIHNjYWxlLCBK
U1ZhbHVlUmVmIGNhbGxiYWNrKQogICAgIH0pOwogfQogCit2b2lkIFVJU2NyaXB0Q29udHJvbGxl
cjo6cmVzaWduRmlyc3RSZXNwb25kZXIoKQoreworfQorCiB2b2lkIFVJU2NyaXB0Q29udHJvbGxl
cjo6c2V0Vmlld1NjYWxlKGRvdWJsZSkKIHsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL21hYy9VSVNjcmlwdENvbnRyb2xsZXJNYWMubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9tYWMvVUlTY3JpcHRDb250cm9sbGVyTWFjLm1tCmluZGV4IGY0YTMzNDMxMDNiZjdhMTVkNmIw
NGJiMGFjMmFiNWFkZThjOWMxMTEuLjQ5Y2M0YjdhNWQwYmE1YTJlYWIzNjYwYzFkZDc2ZDdhYzNh
NzkxNzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSVNjcmlwdENvbnRy
b2xsZXJNYWMubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJU2NyaXB0Q29udHJv
bGxlck1hYy5tbQpAQCAtODksNiArODksMTAgQEAgdm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6Onpv
b21Ub1NjYWxlKGRvdWJsZSBzY2FsZSwgSlNWYWx1ZVJlZiBjYWxsYmFjaykKICAgICB9KTsKIH0K
IAordm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OnJlc2lnbkZpcnN0UmVzcG9uZGVyKCkKK3sKK30K
Kwogdm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OnNldFZpZXdTY2FsZShkb3VibGUpCiB7CiB9CmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9CaW5kaW5n
cy9VSVNjcmlwdENvbnRyb2xsZXIuaWRsIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlw
dENvbnRleHQvQmluZGluZ3MvVUlTY3JpcHRDb250cm9sbGVyLmlkbAppbmRleCBiYzUwMDgyOWM3
NjdjNDk4ZDQ4MjkxNDBjZmExYTIxNjk1ZDE4NDg1Li40YWNlNGVkZWI3NGYyZDBmMTU2ZTQwNzdk
ZTEyNGJkZjQ0MzVhNDU3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2Ny
aXB0Q29udGV4dC9CaW5kaW5ncy9VSVNjcmlwdENvbnRyb2xsZXIuaWRsCisrKyBiL1Rvb2xzL1Rl
c3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L0JpbmRpbmdzL1VJU2NyaXB0Q29udHJvbGxl
ci5pZGwKQEAgLTIxOSw2ICsyMTksOCBAQCBpbnRlcmZhY2UgVUlTY3JpcHRDb250cm9sbGVyIHsK
IAogICAgIHZvaWQgc2V0Vmlld1NjYWxlKGRvdWJsZSBzY2FsZSk7CiAKKyAgICB2b2lkIHJlc2ln
bkZpcnN0UmVzcG9uZGVyKCk7CisKICAgICB2b2lkIHNjcm9sbFRvT2Zmc2V0KGxvbmcgeCwgbG9u
ZyB5KTsgLy8gSW5pdGlhdGUgYW4gYW5pbWF0ZWQgc2Nyb2xsIGluIHRoZSBVSSBwcm9jZXNzLgog
ICAgIGF0dHJpYnV0ZSBvYmplY3QgZGlkRW5kU2Nyb2xsaW5nQ2FsbGJhY2s7CiAKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJv
bGxlci5jcHAgYi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlw
dENvbnRyb2xsZXIuY3BwCmluZGV4IDgwNzc0NWZjYzU5MDRhMjJhODk1OGMyYjJjMDMwYTY0ZTFm
MDllN2QuLjhlMWZiOWYzYjIwM2QxN2E3NzJiZTg0ZTAzZDIyNzZjYzBhMGMxNDAgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJv
bGxlci5jcHAKKysrIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlT
Y3JpcHRDb250cm9sbGVyLmNwcApAQCAtMjE0LDYgKzIxNCwxMCBAQCB2b2lkIFVJU2NyaXB0Q29u
dHJvbGxlcjo6c2V0Vmlld1NjYWxlKGRvdWJsZSkKIHsKIH0KIAordm9pZCBVSVNjcmlwdENvbnRy
b2xsZXI6OnJlc2lnbkZpcnN0UmVzcG9uZGVyKCkKK3sKK30KKwogdm9pZCBVSVNjcmlwdENvbnRy
b2xsZXI6OnNpbXVsYXRlQWNjZXNzaWJpbGl0eVNldHRpbmdzQ2hhbmdlTm90aWZpY2F0aW9uKEpT
VmFsdWVSZWYpCiB7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2Ny
aXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuaCBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQv
VUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5oCmluZGV4IDYwZDU5NjYxNjZiM2Uz
NGVkYTk5YmVjMjQ0YTNjNmViNDNhNDkxNTcuLjhjNmI3ODRiMzkzNjEzMzBkMDkwNDY3MzRjOWU2
YzIwNjMwYzJiZGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRD
b250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQv
VUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5oCkBAIC02OCw2ICs2OCw4IEBAIHB1
YmxpYzoKICAgICB2b2lkIHpvb21Ub1NjYWxlKGRvdWJsZSBzY2FsZSwgSlNWYWx1ZVJlZiBjYWxs
YmFjayk7CiAgICAgdm9pZCBzZXRWaWV3U2NhbGUoZG91YmxlKTsKIAorICAgIHZvaWQgcmVzaWdu
Rmlyc3RSZXNwb25kZXIoKTsKKwogICAgIHZvaWQgc2ltdWxhdGVBY2Nlc3NpYmlsaXR5U2V0dGlu
Z3NDaGFuZ2VOb3RpZmljYXRpb24oSlNWYWx1ZVJlZiBjYWxsYmFjayk7CiAKICAgICB2b2lkIHRv
dWNoRG93bkF0UG9pbnQobG9uZyB4LCBsb25nIHksIGxvbmcgdG91Y2hDb3VudCwgSlNWYWx1ZVJl
ZiBjYWxsYmFjayk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1VJU2NyaXB0
Q29udHJvbGxlckNvY29hLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9VSVNjcmlwdENvbnRy
b2xsZXJDb2NvYS5tbQppbmRleCAyMDhjNzQ4OThkYmI1OTMyYTE1Y2U3YWU0NTk2ZDlkYmE2MjJi
NWUzLi43ZjViNmM1OWNmZmE2MzM3ZTMzODVmNjI1YzkzMTg0OGZiMDNkYzk5IDEwMDY0NAotLS0g
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1VJU2NyaXB0Q29udHJvbGxlckNvY29hLm1tCisrKyBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVUlTY3JpcHRDb250cm9sbGVyQ29jb2EubW0KQEAgLTQy
LDQgKzQyLDExIEBAIHZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjpzZXRWaWV3U2NhbGUoZG91Ymxl
IHNjYWxlKQogI2VuZGlmCiB9CiAKK3ZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjpyZXNpZ25GaXJz
dFJlc3BvbmRlcigpCit7CisjaWYgV0tfQVBJX0VOQUJMRUQKKyAgICBbVGVzdENvbnRyb2xsZXI6
OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCktPnBsYXRmb3JtVmlldygpIHJlc2lnbkZpcnN0UmVz
cG9uZGVyXTsKKyNlbmRpZgorfQorCiB9IC8vIG5hbWVzcGFjZSBXVFIKZGlmZiAtLWdpdCBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1BsYXRmb3JtV2ViVmlld0lPUy5tbSBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvaW9zL1BsYXRmb3JtV2ViVmlld0lPUy5tbQppbmRleCA5Y2YzZDQyYWQy
ZTMyZTY1MTEyMTI5Mjc0ZTdkNGJlOWVlYmUzMzA1Li40ODA5MTk2ZTliM2NlMzAyMWU3ZjdmMTI2
MmNlYzJiNGM0MzQ1NDVmIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9Q
bGF0Zm9ybVdlYlZpZXdJT1MubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvUGxh
dGZvcm1XZWJWaWV3SU9TLm1tCkBAIC0yODYsOCArMjg2LDcgQEAgdm9pZCBQbGF0Zm9ybVdlYlZp
ZXc6OnJlbW92ZUNocm9tZUlucHV0RmllbGQoKQogCiB2b2lkIFBsYXRmb3JtV2ViVmlldzo6bWFr
ZVdlYlZpZXdGaXJzdFJlc3BvbmRlcigpCiB7Ci0gICAgLy8gRklYTUU6IGlPUyBlcXVpdmFsZW50
PwotICAgIC8vIFttX3dpbmRvdyBtYWtlRmlyc3RSZXNwb25kZXI6bV92aWV3XTsKKyAgICBbbV92
aWV3IGJlY29tZUZpcnN0UmVzcG9uZGVyXTsKIH0KIAogdm9pZCBQbGF0Zm9ybVdlYlZpZXc6OmNo
YW5nZVdpbmRvd1NjYWxlSWZOZWVkZWQoZmxvYXQpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL2lvcy9UZXN0Q29udHJvbGxlcklPUy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvaW9zL1Rlc3RDb250cm9sbGVySU9TLm1tCmluZGV4IGI5ZGNmZDgyYmQxNjljZGI3MzIwMTU2
Y2Q5MDZlODg4NDg3OGQ3NjQuLmFiNGFmMTExZGUyMzVmMmU1NWQ0NTY0YzAzMzZiOTYxZjE3YjZl
NjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1Rlc3RDb250cm9sbGVy
SU9TLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1Rlc3RDb250cm9sbGVySU9T
Lm1tCkBAIC0xMDcsNiArMTA3LDcgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1SZXNl
dFN0YXRlVG9Db25zaXN0ZW50VmFsdWVzKCkKIAogICAgIFtbVUlEZXZpY2UgY3VycmVudERldmlj
ZV0gc2V0T3JpZW50YXRpb246VUlEZXZpY2VPcmllbnRhdGlvblBvcnRyYWl0IGFuaW1hdGVkOk5P
XTsKICAgICAKKyAgICBCT09MIHNob3VsZFJlc3RvcmVGaXJzdFJlc3BvbmRlciA9IE5POwogICAg
IGlmIChQbGF0Zm9ybVdlYlZpZXcqIHBsYXRmb3JtV2ViVmlldyA9IG1haW5XZWJWaWV3KCkpIHsK
ICAgICAgICAgVGVzdFJ1bm5lcldLV2ViVmlldyAqd2ViVmlldyA9IHBsYXRmb3JtV2ViVmlldy0+
cGxhdGZvcm1WaWV3KCk7CiAgICAgICAgIHdlYlZpZXcuX3N0YWJsZVN0YXRlT3ZlcnJpZGUgPSBu
aWw7CkBAIC0xMjEsMTAgKzEyMiwxMyBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybVJl
c2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMoKQogICAgICAgICBbc2Nyb2xsVmlldyBzZXRDb250
ZW50T2Zmc2V0OkNHUG9pbnRaZXJvXTsKIAogICAgICAgICBpZiAod2ViVmlldy5pbnRlcmFjdGlu
Z1dpdGhGb3JtQ29udHJvbCkKLSAgICAgICAgICAgIFt3ZWJWaWV3IHJlc2lnbkZpcnN0UmVzcG9u
ZGVyXTsKKyAgICAgICAgICAgIHNob3VsZFJlc3RvcmVGaXJzdFJlc3BvbmRlciA9IFt3ZWJWaWV3
IHJlc2lnbkZpcnN0UmVzcG9uZGVyXTsKICAgICB9CiAKICAgICBydW5VbnRpbChpc0RvbmVXYWl0
aW5nRm9yS2V5Ym9hcmRUb0Rpc21pc3MsIG1fY3VycmVudEludm9jYXRpb24tPnNob3J0VGltZW91
dCgpKTsKKworICAgIGlmIChzaG91bGRSZXN0b3JlRmlyc3RSZXNwb25kZXIpCisgICAgICAgIFtt
YWluV2ViVmlldygpLT5wbGF0Zm9ybVZpZXcoKSBiZWNvbWVGaXJzdFJlc3BvbmRlcl07CiB9CiAK
IHZvaWQgVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtQ29uZmlndXJlVmlld0ZvclRlc3QoY29uc3Qg
VGVzdEludm9jYXRpb24mIHRlc3QpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZDQ1NjVjMzg2MWJlNjUzNGJjMDE0OWY4ZGYz
YzBhZGQ4YzAyMDRlZS4uOTA3NDM2NTA5YTNmOTliZGIyZWIxZjVjMGMxODRjMWI2N2M4ODcxYiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE4LTEwLTE5ICBXZW5zb24gSHNpZWggIDx3ZW5zb25f
aHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIFtEYXRhbGlzdF0gQ2FuJ3QgcGljayBk
YXRhbGlzdCBzdWdnZXN0aW9ucyBpbiBhIHN0b2NrIFdLV2ViVmlldworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwNjIxCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS80NTMxMDY0OT4KKworICAgICAgICBSZXZpZXdlZCBieSBUaW0gSG9ydG9uLgorCisg
ICAgICAgIFJlZmFjdG9yIGFuIGV4aXN0aW5nIGxheW91dCB0ZXN0IHRvIHJ1biBvbiBib3RoIGlP
UyBhbmQgbWFjT1MuIE9uIGJvdGggcGxhdGZvcm1zLCBpdCBjaGVja3MgdGhhdCB0aGUgdG9wCisg
ICAgICAgIHN1Z2dlc3Rpb24gcmVzcGVjdHMgb3B0aW9uIGVsZW1lbnQgb3JkZXIgaW4gdGhlIGRv
Y3VtZW50LCBhcyB3ZWxsIGFzIHRoZSBjdXJyZW50IGNvbnRlbnRzIG9mIHRoZSB0ZXh0IGZpZWxk
LgorICAgICAgICBPbiBtYWNPUywgd2UgdXNlIGFycm93IGtleXMgYW5kIGhpdCByZXR1cm4gdG8g
c2VsZWN0IGEgc3VnZ2VzdGlvbjsgb24gaU9TLCB3ZSB0YXAgdGhlIHN1Z2dlc3Rpb25zIGJ1dHRv
biBhbmQKKyAgICAgICAgc2ltdWxhdGUgaGl0dGluZyB0aGUgZG9uZSBidXR0b24gb24gdGhlIGlu
cHV0IHZpZXcgdG8gZGlzbWlzcyB0aGUga2V5Ym9hcmQuCisKKyAgICAgICAgKiBmYXN0L2Zvcm1z
L2RhdGFsaXN0L2RhdGFsaXN0LXRleHRpbnB1dC1zdWdnZXN0aW9ucy1vcmRlci1leHBlY3RlZC50
eHQ6CisgICAgICAgICogZmFzdC9mb3Jtcy9kYXRhbGlzdC9kYXRhbGlzdC10ZXh0aW5wdXQtc3Vn
Z2VzdGlvbnMtb3JkZXIuaHRtbDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0
aW9uczoKKworICAgICAgICBFbmFibGUgdGhpcyB0ZXN0IG9uIGlPUy4KKworICAgICAgICAqIHJl
c291cmNlcy91aS1oZWxwZXIuanM6CisgICAgICAgICh3aW5kb3cuVUlIZWxwZXIucmVzaWduRmly
c3RSZXNwb25kZXIpOgorICAgICAgICAod2luZG93LlVJSGVscGVyKToKKwogMjAxOC0xMC0xOCAg
SnVzdGluIEZhbiAgPGp1c3Rpbl9mYW5AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCB0ZXN0IGV4
cGVjdGF0aW9ucyBmb3Igd2ViZ3B1LWVuYWJsZWQuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9kYXRhbGlzdC9kYXRhbGlzdC10ZXh0aW5wdXQtc3VnZ2VzdGlvbnMtb3Jk
ZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9kYXRhbGlzdC9kYXRhbGlz
dC10ZXh0aW5wdXQtc3VnZ2VzdGlvbnMtb3JkZXItZXhwZWN0ZWQudHh0CmluZGV4IGVhZDllNWNj
MjAxM2JkYzk0YzM0YWU3ZjE3OWNhODc4M2M4ZTZlOTQuLjJhZDU3MjZjMDBiOGQ3YThjZDU5OGI1
M2E2MjIxMDVhZWQ3YWM3YTUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZGF0
YWxpc3QvZGF0YWxpc3QtdGV4dGlucHV0LXN1Z2dlc3Rpb25zLW9yZGVyLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2RhdGFsaXN0L2RhdGFsaXN0LXRleHRpbnB1dC1z
dWdnZXN0aW9ucy1vcmRlci1leHBlY3RlZC50eHQKQEAgLTEsMTEgKzEsMTAgQEAKLVRlc3QgdG8g
dmVyaWZ5IHRoYXQgcHJlZml4LW1hdGNoZWQgdmFsdWVzIGFyZSBkaXNwbGF5ZWQgZmlyc3QKIAot
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCi0KLVBBU1MgaW5wdXQudmFsdWUgaXMgIk9yYW5n
ZSIKLVBBU1MgaW5wdXQudmFsdWUgaXMgIkFwcGxlIgotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCitUb3Agc3VnZ2VzdGlvbiB3aXRoIGVtcHR5IHRleHQg
ZmllbGQ6ICJPcmFuZ2UiCitUb3Agc3VnZ2VzdGlvbiB3aXRoICJhIiBpbiB0ZXh0IGZpZWxkOiAi
QXBwbGUiCiAKK1RoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IGRhdGFsaXN0IHN1Z2dlc3Rpb25zIGlu
IGEgdGV4dCBmaWVsZCBhcmUgb3JkZXJlZCBpbiBhIHdheSB0aGF0IHJlc3BlY3RzIHRoZSBvcmRl
ciBvZiBvcHRpb24gZWxlbWVudHMgaW4gdGhlIGRvY3VtZW50LCBhcyB3ZWxsIGFzIHRoZSBjb250
ZW50cyBvZiB0aGUgdGV4dCBmaWVsZC4gVG8gdGVzdCBtYW51YWxseToKK0ZvY3VzIHRoZSB0ZXh0
IGZpZWxkLgorQ2hlY2sgdGhhdCAiT3JhbmdlIiBpcyB0aGUgdG9wIHN1Z2dlc3Rpb24uCitUeXBl
ICJhIiBhbmQgYmx1ciB0aGUgdGV4dCBmaWVsZC4KK0ZvY3VzIHRoZSB0ZXh0IGZpZWxkIGFnYWlu
LgorQ2hlY2sgdGhhdCAiQXBwbGUiIGlzIHRoZSB0b3Agc3VnZ2VzdGlvbi4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZGF0YWxpc3QvZGF0YWxpc3QtdGV4dGlucHV0LXN1Z2dl
c3Rpb25zLW9yZGVyLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2RhdGFsaXN0L2RhdGFs
aXN0LXRleHRpbnB1dC1zdWdnZXN0aW9ucy1vcmRlci5odG1sCmluZGV4IDRhZWVlOGMzNzljNTcy
ZTQ2OTM0YWMyNTBkYmFjMmQ0MDk5YTM0MzQuLjYwZjE2NDBlOWY4ZDcxM2I5MDBiOGM4M2RkZDI2
Njk4ODhkOGYyZjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZGF0YWxpc3Qv
ZGF0YWxpc3QtdGV4dGlucHV0LXN1Z2dlc3Rpb25zLW9yZGVyLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9kYXRhbGlzdC9kYXRhbGlzdC10ZXh0aW5wdXQtc3VnZ2VzdGlvbnMtb3Jk
ZXIuaHRtbApAQCAtMSw4ICsxLDE4IEBACi08IURPQ1RZUEUgaHRtbD4KKzwhRE9DVFlQRSBodG1s
PiA8IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIHVzZUZsZXhpYmxlVmlld3BvcnQ9dHJ1ZSBdIC0t
PgogPGh0bWw+CiA8aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRo
PWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLCB1c2VyLXNjYWxhYmxlPW5vIj4KIDxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKzxzdHls
ZT4KK2lucHV0IHsKKyAgICB3aWR0aDogMzAwcHg7CisgICAgaGVpZ2h0OiA1MHB4OworfQorCiti
b2R5IHsKKyAgICBtYXJnaW46IDA7Cit9Cis8L3N0eWxlPgogPC9oZWFkPgogPGJvZHk+CiAKQEAg
LTEyLDI3ICsyMiw1MiBAQAogICAgIDxvcHRpb24+UGVhcjwvb3B0aW9uPgogICAgIDxvcHRpb24+
QXBwbGU8L29wdGlvbj4KIDwvZGF0YWxpc3Q+Cis8cHJlPlRvcCBzdWdnZXN0aW9uIHdpdGggZW1w
dHkgdGV4dCBmaWVsZDogIjxzcGFuIGlkPSJmaXJzdCI+PC9zcGFuPiI8L3ByZT4KKzxwcmU+VG9w
IHN1Z2dlc3Rpb24gd2l0aCAiYSIgaW4gdGV4dCBmaWVsZDogIjxzcGFuIGlkPSJzZWNvbmQiPjwv
c3Bhbj4iPC9wcmU+Cis8YnI+Cis8ZGl2PlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IGRhdGFsaXN0
IHN1Z2dlc3Rpb25zIGluIGEgdGV4dCBmaWVsZCBhcmUgb3JkZXJlZCBpbiBhIHdheSB0aGF0IHJl
c3BlY3RzIHRoZSBvcmRlciBvZiBvcHRpb24KK2VsZW1lbnRzIGluIHRoZSBkb2N1bWVudCwgYXMg
d2VsbCBhcyB0aGUgY29udGVudHMgb2YgdGhlIHRleHQgZmllbGQuIFRvIHRlc3QgbWFudWFsbHk6
PC9kaXY+Cis8b2w+CisgICAgPGxpPkZvY3VzIHRoZSB0ZXh0IGZpZWxkLjwvbGk+CisgICAgPGxp
PkNoZWNrIHRoYXQgIk9yYW5nZSIgaXMgdGhlIHRvcCBzdWdnZXN0aW9uLjwvbGk+CisgICAgPGxp
PlR5cGUgImEiIGFuZCBibHVyIHRoZSB0ZXh0IGZpZWxkLjwvbGk+CisgICAgPGxpPkZvY3VzIHRo
ZSB0ZXh0IGZpZWxkIGFnYWluLjwvbGk+CisgICAgPGxpPkNoZWNrIHRoYXQgIkFwcGxlIiBpcyB0
aGUgdG9wIHN1Z2dlc3Rpb24uPC9saT4KKzwvb2w+CiAKIDxzY3JpcHQ+CitpZiAod2luZG93LnRl
c3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVu
bmVyLmR1bXBBc1RleHQoKTsKK30KIAotZGVzY3JpcHRpb24oJ1Rlc3QgdG8gdmVyaWZ5IHRoYXQg
cHJlZml4LW1hdGNoZWQgdmFsdWVzIGFyZSBkaXNwbGF5ZWQgZmlyc3QnKTsKLQotdmFyIGlucHV0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZydWl0Iik7CitmdW5jdGlvbiBmb2N1c0lucHV0
RmllbGRBbmRDaG9vc2VGaXJzdFN1Z2dlc3Rpb24oKQoreworICAgIHJldHVybiBuZXcgUHJvbWlz
ZShhc3luYyByZXNvbHZlID0+IHsKKyAgICAgICAgYXdhaXQgVUlIZWxwZXIuYWN0aXZhdGVBbmRX
YWl0Rm9ySW5wdXRTZXNzaW9uQXQoMTAwLCAyNSk7CisgICAgICAgIGlmIChVSUhlbHBlci5pc0lP
UygpKSB7CisgICAgICAgICAgICBhd2FpdCBVSUhlbHBlci50YXBBdCgyOTAsIDMwKTsKKyAgICAg
ICAgICAgIGF3YWl0IFVJSGVscGVyLnJlc2lnbkZpcnN0UmVzcG9uZGVyKCk7CisgICAgICAgICAg
ICBhd2FpdCBVSUhlbHBlci53YWl0Rm9yS2V5Ym9hcmRUb0hpZGUoKTsKKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIGF3YWl0IFVJSGVscGVyLnR5cGVDaGFyYWN0ZXIoImRvd25BcnJvdyIp
OworICAgICAgICAgICAgYXdhaXQgVUlIZWxwZXIudHlwZUNoYXJhY3RlcigiXHIiKTsKKyAgICAg
ICAgfQorICAgICAgICByZXNvbHZlKCk7CisgICAgfSk7Cit9CiAKLVVJSGVscGVyLmFjdGl2YXRl
RWxlbWVudChpbnB1dCk7Ci1ldmVudFNlbmRlci5rZXlEb3duKCJkb3duQXJyb3ciKTsKLWV2ZW50
U2VuZGVyLmtleURvd24oIlxyIik7Ci1zaG91bGRCZSgnaW5wdXQudmFsdWUnLCAnIk9yYW5nZSIn
KTsKKyhhc3luYyAoKSA9PiB7CisgICAgYXdhaXQgZm9jdXNJbnB1dEZpZWxkQW5kQ2hvb3NlRmly
c3RTdWdnZXN0aW9uKCk7CisgICAgZmlyc3QudGV4dENvbnRlbnQgPSBmcnVpdC52YWx1ZTsKIAot
aW5wdXQudmFsdWUgPSAiYSI7CisgICAgZnJ1aXQudmFsdWUgPSAiYSI7CiAKLVVJSGVscGVyLmFj
dGl2YXRlRWxlbWVudChpbnB1dCk7Ci1ldmVudFNlbmRlci5rZXlEb3duKCJkb3duQXJyb3ciKTsK
LWV2ZW50U2VuZGVyLmtleURvd24oIlxyIik7Ci1zaG91bGRCZSgnaW5wdXQudmFsdWUnLCAnIkFw
cGxlIicpOworICAgIGF3YWl0IGZvY3VzSW5wdXRGaWVsZEFuZENob29zZUZpcnN0U3VnZ2VzdGlv
bigpOworICAgIHNlY29uZC50ZXh0Q29udGVudCA9IGZydWl0LnZhbHVlOwogCisgICAgdGVzdFJ1
bm5lci5ub3RpZnlEb25lKCk7Cit9KSgpOwogPC9zY3JpcHQ+Ci0KLTxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25z
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggNmU3MjE0
NmU2OTg1NjA4MjUyZmM1MDk4NDE2NWI4MDc5NWMyYjJjNi4uZGUxNTYwZmM3Y2MyZDk0Zjc0MTJj
YmE4OTZkMGEyY2VjZDA5YTkzMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9z
L1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBl
Y3RhdGlvbnMKQEAgLTMxMTIsNyArMzExMiw2IEBAIGZhc3QvYmxvY2svYmxvY2stb25seS9hYnNv
bHV0ZS1wb3NpdGlvbi1taW4tbWF4LWhlaWdodC5odG1sIFsgRmFpbHVyZSBdCiAjIERhdGFsaXN0
CiB3ZWJraXQub3JnL2IvMTg2NzE0IGZhc3QvZm9ybXMvZGF0YWxpc3QvZGF0YWxpc3Qtc2hvdy1o
aWRlLmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xODY3MTQgZmFzdC9mb3Jtcy9kYXRhbGlz
dC9kYXRhbGlzdC10ZXh0aW5wdXQta2V5ZG93bi5odG1sIFsgU2tpcCBdCi13ZWJraXQub3JnL2Iv
MTkwNjIxIGZhc3QvZm9ybXMvZGF0YWxpc3QvZGF0YWxpc3QtdGV4dGlucHV0LXN1Z2dlc3Rpb25z
LW9yZGVyLmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xOTA2MTMgZmFzdC9mb3Jtcy9kYXRh
bGlzdC91cGRhdGUtcmFuZ2Utd2l0aC1kYXRhbGlzdC5odG1sIFsgU2tpcCBdCiAKICMgV2UgYXJl
IG9ubHkgYWNjZXB0aW5nIEdMU0wzIGZvciBtYWNPUy4gCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9yZXNvdXJjZXMvdWktaGVscGVyLmpzIGIvTGF5b3V0VGVzdHMvcmVzb3VyY2VzL3VpLWhlbHBl
ci5qcwppbmRleCBhYzBkNTZmNTdlZGRiMTg1NGE2ZjY0MmE2YjFiNDE0MDkwNGVkYjk4Li5hNjk0
NGYwMmU1Y2JmZDFjMGY5YjBhZDdlZjg3NjQxOTBhYjY2MGM5IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9yZXNvdXJjZXMvdWktaGVscGVyLmpzCisrKyBiL0xheW91dFRlc3RzL3Jlc291cmNlcy91
aS1oZWxwZXIuanMKQEAgLTEzMiw2ICsxMzIsOSBAQCB3aW5kb3cuVUlIZWxwZXIgPSBjbGFzcyBV
SUhlbHBlciB7CiAKICAgICBzdGF0aWMgd2FpdEZvcktleWJvYXJkVG9IaWRlKCkKICAgICB7Cisg
ICAgICAgIGlmICghdGhpcy5pc1dlYktpdDIoKSB8fCAhdGhpcy5pc0lPUygpKQorICAgICAgICAg
ICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOworCiAgICAgICAgIHJldHVybiBuZXcgUHJvbWlz
ZShyZXNvbHZlID0+IHsKICAgICAgICAgICAgIHRlc3RSdW5uZXIucnVuVUlTY3JpcHQoYAogICAg
ICAgICAgICAgICAgIChmdW5jdGlvbigpIHsKQEAgLTM1MCw0ICszNTMsMTIgQEAgd2luZG93LlVJ
SGVscGVyID0gY2xhc3MgVUlIZWxwZXIgewogCiAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShy
ZXNvbHZlID0+IHRlc3RSdW5uZXIucnVuVUlTY3JpcHQoYHVpQ29udHJvbGxlci5zZXRWaWV3U2Nh
bGUoJHtzY2FsZX0pYCwgcmVzb2x2ZSkpOwogICAgIH0KKworICAgIHN0YXRpYyByZXNpZ25GaXJz
dFJlc3BvbmRlcigpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuaXNXZWJLaXQyKCkpCisgICAg
ICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7CisKKyAgICAgICAgcmV0dXJuIG5ldyBQ
cm9taXNlKHJlc29sdmUgPT4gdGVzdFJ1bm5lci5ydW5VSVNjcmlwdChgdWlDb250cm9sbGVyLnJl
c2lnbkZpcnN0UmVzcG9uZGVyKClgLCByZXNvbHZlKSk7CisgICAgfQogfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>