<?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>126214</bug_id>
          
          <creation_ts>2013-12-24 08:34:52 -0800</creation_ts>
          <short_desc>Merge PageVisibilityState &amp; ViewState::IsVisible in WebKit2</short_desc>
          <delta_ts>2013-12-27 11:42:34 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Gavin Barraclough">barraclough</reporter>
          <assigned_to name="Gavin Barraclough">barraclough</assigned_to>
          <cc>andersca</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>rakuco</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>962771</commentid>
    <comment_count>0</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2013-12-24 08:34:52 -0800</bug_when>
    <thetext>WebKit2 redundantly tracks the visibility of the view through two mechanisms - the visibility state, and the view state. Remove visibility state from the WebKit2 layer. The visibility state also tracks the &apos;pretender&apos; state - so split this out and handle it separately (a change we should make in WebCore, too).

Removing the redundancy also removes the ability from the API to set a fake visibility state (IsVisible tracks the actual visibility of the view). Through private API (WKPageSetVisibilityState) a client could previously request the view be reported as hidden/visible, but this didn&apos;t really work - the override was not enforced and the API may reset the state at an arbitrary point. The mechanism is only used by testing code, which instead should actually update the view visibility (this tests more of the actual visibility mechanisms used by the browser). The one aspect of the API relied on by existing clients is the ability to initialize a hidden view as prerender -continue to support this specific functionality via WKPageSetVisibilityState, to maintain backwards compatibility.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>962868</commentid>
    <comment_count>1</comment_count>
      <attachid>220000</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2013-12-25 14:13:22 -0800</bug_when>
    <thetext>Created attachment 220000
Fixed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>962869</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-25 14:15:09 -0800</bug_when>
    <thetext>Attachment 220000 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast/events/page-visibility-transition-test-expected.txt&apos;, u&apos;LayoutTests/fast/events/page-visibility-transition-test.html&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/page/Page.cpp&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/UIProcess/API/C/WKPage.cpp&apos;, u&apos;Source/WebKit2/UIProcess/WebPageProxy.cpp&apos;, u&apos;Source/WebKit2/UIProcess/WebPageProxy.h&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/WebPage.cpp&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/WebPage.h&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/WebPage.messages.in&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj&apos;, u&apos;Tools/TestWebKitAPI/Tests/WebKit2/PageVisibilityState.cpp&apos;, u&apos;Tools/TestWebKitAPI/Tests/mac/PageVisibilityStateWithWindowChanges.mm&apos;, u&apos;Tools/WebKitTestRunner/TestController.cpp&apos;, u&apos;Tools/WebKitTestRunner/TestController.h&apos;, u&apos;Tools/WebKitTestRunner/efl/TestControllerEfl.cpp&apos;, u&apos;Tools/WebKitTestRunner/gtk/TestControllerGtk.cpp&apos;, u&apos;Tools/WebKitTestRunner/mac/TestControllerMac.mm&apos;, &apos;--commit-queue&apos;]&quot; exit_code: 1
ERROR: Tools/WebKitTestRunner/TestController.h:167:  The parameter name &quot;hidden&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 18 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>962871</commentid>
    <comment_count>3</comment_count>
      <attachid>220000</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-12-25 14:21:41 -0800</bug_when>
    <thetext>Comment on attachment 220000
Fixed?

Attachment 220000 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/5033067089494016</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>962873</commentid>
    <comment_count>4</comment_count>
      <attachid>220002</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2013-12-25 14:30:26 -0800</bug_when>
    <thetext>Created attachment 220002
style, efl fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>962874</commentid>
    <comment_count>5</comment_count>
      <attachid>220002</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-12-25 14:45:59 -0800</bug_when>
    <thetext>Comment on attachment 220002
style, efl fixes

Attachment 220002 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/6107173985714176</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>962889</commentid>
    <comment_count>6</comment_count>
      <attachid>220008</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2013-12-25 15:43:19 -0800</bug_when>
    <thetext>Created attachment 220008
efl build fix take 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>962959</commentid>
    <comment_count>7</comment_count>
      <attachid>220022</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2013-12-25 21:57:08 -0800</bug_when>
    <thetext>Created attachment 220022
Stupid autocorrect :-( ... s/pretender/prerender/ in Changelog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>963093</commentid>
    <comment_count>8</comment_count>
      <attachid>220022</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-12-27 00:48:22 -0800</bug_when>
    <thetext>Comment on attachment 220022
Stupid autocorrect :-( ... s/pretender/prerender/ in Changelog

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

&gt; Source/WebCore/ChangeLog:20
&gt; +        by the browser). The one aspect of the API relied on by existing clients is the ability to
&gt; +        initialize a hidden view as prerender -continue to support this specific functionality via

Seems like there should be a space in &quot;-continue&quot;.

&gt; Source/WebCore/ChangeLog:23
&gt; +
&gt; +

Extra blank line.

&gt; Source/WebCore/ChangeLog:24
&gt; +        WebCore - chnages the the API tests exposed a bug, a view should only ever come out of the

chnages, the the

&gt; Source/WebKit2/ChangeLog:20
&gt; +        initialize a hidden view as prerender -continue to support this specific functionality via

-continue

&gt; Source/WebKit2/ChangeLog:23
&gt; +
&gt; +

Extra blank line.

&gt; Tools/ChangeLog:23
&gt; +        initialize a hidden view as prerender -continue to support this specific functionality via
&gt; +        WKPageSetVisibilityState, to maintain backwards compatibility.
&gt; +
&gt; +

...

Does this really need to be repeated in every ChangeLog? I usually put extra info into a project that had the most changes - they are all combined for commit message anyway.

&gt; Tools/WebKitTestRunner/mac/TestControllerMac.mm:90
&gt; +        [window makeKeyAndOrderFront:nil];

Hopefully it&apos;s not forced back on screen, so nothing visually blinks and prevents using the computer while tests are running?

&gt; Tools/WebKitTestRunner/mac/TestControllerMac.mm:91
&gt; +        [NSApp activateIgnoringOtherApps:YES];

Why is this needed? A comment would probably be of use.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>963135</commentid>
    <comment_count>9</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2013-12-27 11:40:46 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; &gt; Tools/WebKitTestRunner/mac/TestControllerMac.mm:90
&gt; &gt; +        [window makeKeyAndOrderFront:nil];
&gt; 
&gt; Hopefully it&apos;s not forced back on screen, so nothing visually blinks and prevents using the computer while tests are running?

No,from my testing the window is not actually forced onscreen.

&gt; &gt; Tools/WebKitTestRunner/mac/TestControllerMac.mm:91
&gt; &gt; +        [NSApp activateIgnoringOtherApps:YES];
&gt; 
&gt; Why is this needed? A comment would probably be of use.

You&apos;re right, looks like this was overkill - removed.

Thanks Alexey!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>963136</commentid>
    <comment_count>10</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2013-12-27 11:42:34 -0800</bug_when>
    <thetext>Committed revision 161105.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>220000</attachid>
            <date>2013-12-25 14:13:22 -0800</date>
            <delta_ts>2013-12-25 14:30:26 -0800</delta_ts>
            <desc>Fixed?</desc>
            <filename>126214.1.patch</filename>
            <type>text/plain</type>
            <size>42471</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2MTA1NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDEzLTEyLTI0ICBHYXZpbiBC
YXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KKworICAgICAgICBNZXJnZSBQYWdl
VmlzaWJpbGl0eVN0YXRlICYgVmlld1N0YXRlOjpJc1Zpc2libGUgaW4gV2ViS2l0MgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI2MjE0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViS2l0MiByZWR1bmRh
bnRseSB0cmFja3MgdGhlIHZpc2liaWxpdHkgb2YgdGhlIHZpZXcgdGhyb3VnaCB0d28gbWVjaGFu
aXNtcyAtIHRoZSB2aXNpYmlsaXR5CisgICAgICAgIHN0YXRlLCBhbmQgdGhlIHZpZXcgc3RhdGUu
IFJlbW92ZSB2aXNpYmlsaXR5IHN0YXRlIGZyb20gdGhlIFdlYktpdDIgbGF5ZXIuIFRoZSB2aXNp
YmlsaXR5CisgICAgICAgIHN0YXRlIGFsc28gdHJhY2tzIHRoZSAncHJldGVuZGVyJyBzdGF0ZSAt
IHNvIHNwbGl0IHRoaXMgb3V0IGFuZCBoYW5kbGUgaXQgc2VwYXJhdGVseSAoYSBjaGFuZ2UKKyAg
ICAgICAgd2Ugc2hvdWxkIG1ha2UgaW4gV2ViQ29yZSwgdG9vKS4KKworICAgICAgICBSZW1vdmlu
ZyB0aGUgcmVkdW5kYW5jeSBhbHNvIHJlbW92ZXMgdGhlIGFiaWxpdHkgZnJvbSB0aGUgQVBJIHRv
IHNldCBhIGZha2UgdmlzaWJpbGl0eSBzdGF0ZQorICAgICAgICAoSXNWaXNpYmxlIHRyYWNrcyB0
aGUgYWN0dWFsIHZpc2liaWxpdHkgb2YgdGhlIHZpZXcpLiBUaHJvdWdoIHByaXZhdGUgQVBJCisg
ICAgICAgIChXS1BhZ2VTZXRWaXNpYmlsaXR5U3RhdGUpIGEgY2xpZW50IGNvdWxkIHByZXZpb3Vz
bHkgcmVxdWVzdCB0aGUgdmlldyBiZSByZXBvcnRlZCBhcyBoaWRkZW4gb3IKKyAgICAgICAgdmlz
aWJsZSwgYnV0IHRoaXMgZGlkbid0IHJlYWxseSB3b3JrIC0gdGhlIG92ZXJyaWRlIHdhcyBub3Qg
ZW5mb3JjZWQgYW5kIHRoZSBBUEkgbWF5IHJlc2V0IHRoZQorICAgICAgICBzdGF0ZSBhdCBhbiBh
cmJpdHJhcnkgcG9pbnQuIFRoZSBtZWNoYW5pc20gaXMgb25seSB1c2VkIGJ5IHRlc3RpbmcgY29k
ZSwgd2hpY2ggaW5zdGVhZCBzaG91bGQKKyAgICAgICAgYWN0dWFsbHkgdXBkYXRlIHRoZSB2aWV3
IHZpc2liaWxpdHkgKHRoaXMgdGVzdHMgbW9yZSBvZiB0aGUgYWN0dWFsIHZpc2liaWxpdHkgbWVj
aGFuaXNtcyB1c2VkCisgICAgICAgIGJ5IHRoZSBicm93c2VyKS4gVGhlIG9uZSBhc3BlY3Qgb2Yg
dGhlIEFQSSByZWxpZWQgb24gYnkgZXhpc3RpbmcgY2xpZW50cyBpcyB0aGUgYWJpbGl0eSB0bwor
ICAgICAgICBpbml0aWFsaXplIGEgaGlkZGVuIHZpZXcgYXMgcHJlcmVuZGVyIC1jb250aW51ZSB0
byBzdXBwb3J0IHRoaXMgc3BlY2lmaWMgZnVuY3Rpb25hbGl0eSB2aWEKKyAgICAgICAgV0tQYWdl
U2V0VmlzaWJpbGl0eVN0YXRlLCB0byBtYWludGFpbiBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS4K
KworCisgICAgICAgIFdlYkNvcmUgLSBjaG5hZ2VzIHRoZSB0aGUgQVBJIHRlc3RzIGV4cG9zZWQg
YSBidWcsIGEgdmlldyBzaG91bGQgb25seSBldmVyIGNvbWUgb3V0IG9mIHRoZQorICAgICAgICBw
cmVyZW5kZXIgc3RhdGUgd2hlbiBpdCBiZWNvbWVzIHZpc2libGUgLSByZWR1bmRhbnQgbm90aWZp
Y2F0aW9ucyB0aGF0IHRoZSB2aWV3IGlzIHN0aWxsCisgICAgICAgIGhpZGRlbiBzaG91bGQgYmUg
aWdub3JlZC4KKworICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
YWdlOjpzZXRWaXNpYmlsaXR5U3RhdGUpOgorICAgICAgICAgICAgLSBpZ25vcmUgdmlzaWJpbGl0
eSBzdGF0ZSBjaGFuZ2UgdG8gaGlkZGVuLCBpZiB0aGUgY3VycmVudCBzdGF0ZSBpcyBwcmVyZW5k
ZXIuCisKIDIwMTMtMTItMjQgIE1paG5lYSBPdmlkZW5pZSAgPG1paG5lYUBhZG9iZS5jb20+CiAK
ICAgICAgICAgW0NTU1JlZ2lvbnNdIENyYXNoIHdoaWxlIHJlcGFpbnRpbmcgYW4gaW52YWxpZCBy
ZWdpb24KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAkocmV2aXNpb24gMTYwOTc2KQorKysgU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI0Niw2ICsxMjQ2LDgg
QEAgdm9pZCBQYWdlOjpzZXRWaXNpYmlsaXR5U3RhdGUoUGFnZVZpc2liaQogCiAgICAgaWYgKG1f
dmlzaWJpbGl0eVN0YXRlID09IHZpc2liaWxpdHlTdGF0ZSkKICAgICAgICAgcmV0dXJuOworICAg
IGlmIChtX3Zpc2liaWxpdHlTdGF0ZSA9PSBQYWdlVmlzaWJpbGl0eVN0YXRlUHJlcmVuZGVyICYm
IHZpc2liaWxpdHlTdGF0ZSA9PSBQYWdlVmlzaWJpbGl0eVN0YXRlSGlkZGVuKQorICAgICAgICBy
ZXR1cm47CiAgICAgbV92aXNpYmlsaXR5U3RhdGUgPSB2aXNpYmlsaXR5U3RhdGU7CiAKICAgICBp
ZiAoIWlzSW5pdGlhbFN0YXRlKSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNjEwNTcpCisr
KyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1OCBA
QAorMjAxMy0xMi0yNCAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+
CisKKyAgICAgICAgTWVyZ2UgUGFnZVZpc2liaWxpdHlTdGF0ZSAmIFZpZXdTdGF0ZTo6SXNWaXNp
YmxlIGluIFdlYktpdDIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEyNjIxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFdlYktpdDIgcmVkdW5kYW50bHkgdHJhY2tzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSB2
aWV3IHRocm91Z2ggdHdvIG1lY2hhbmlzbXMgLSB0aGUgdmlzaWJpbGl0eQorICAgICAgICBzdGF0
ZSwgYW5kIHRoZSB2aWV3IHN0YXRlLiBSZW1vdmUgdmlzaWJpbGl0eSBzdGF0ZSBmcm9tIHRoZSBX
ZWJLaXQyIGxheWVyLiBUaGUgdmlzaWJpbGl0eQorICAgICAgICBzdGF0ZSBhbHNvIHRyYWNrcyB0
aGUgJ3ByZXRlbmRlcicgc3RhdGUgLSBzbyBzcGxpdCB0aGlzIG91dCBhbmQgaGFuZGxlIGl0IHNl
cGFyYXRlbHkgKGEgY2hhbmdlCisgICAgICAgIHdlIHNob3VsZCBtYWtlIGluIFdlYkNvcmUsIHRv
bykuCisKKyAgICAgICAgUmVtb3ZpbmcgdGhlIHJlZHVuZGFuY3kgYWxzbyByZW1vdmVzIHRoZSBh
YmlsaXR5IGZyb20gdGhlIEFQSSB0byBzZXQgYSBmYWtlIHZpc2liaWxpdHkgc3RhdGUKKyAgICAg
ICAgKElzVmlzaWJsZSB0cmFja3MgdGhlIGFjdHVhbCB2aXNpYmlsaXR5IG9mIHRoZSB2aWV3KS4g
VGhyb3VnaCBwcml2YXRlIEFQSQorICAgICAgICAoV0tQYWdlU2V0VmlzaWJpbGl0eVN0YXRlKSBh
IGNsaWVudCBjb3VsZCBwcmV2aW91c2x5IHJlcXVlc3QgdGhlIHZpZXcgYmUgcmVwb3J0ZWQgYXMg
aGlkZGVuIG9yCisgICAgICAgIHZpc2libGUsIGJ1dCB0aGlzIGRpZG4ndCByZWFsbHkgd29yayAt
IHRoZSBvdmVycmlkZSB3YXMgbm90IGVuZm9yY2VkIGFuZCB0aGUgQVBJIG1heSByZXNldCB0aGUK
KyAgICAgICAgc3RhdGUgYXQgYW4gYXJiaXRyYXJ5IHBvaW50LiBUaGUgbWVjaGFuaXNtIGlzIG9u
bHkgdXNlZCBieSB0ZXN0aW5nIGNvZGUsIHdoaWNoIGluc3RlYWQgc2hvdWxkCisgICAgICAgIGFj
dHVhbGx5IHVwZGF0ZSB0aGUgdmlldyB2aXNpYmlsaXR5ICh0aGlzIHRlc3RzIG1vcmUgb2YgdGhl
IGFjdHVhbCB2aXNpYmlsaXR5IG1lY2hhbmlzbXMgdXNlZAorICAgICAgICBieSB0aGUgYnJvd3Nl
cikuIFRoZSBvbmUgYXNwZWN0IG9mIHRoZSBBUEkgcmVsaWVkIG9uIGJ5IGV4aXN0aW5nIGNsaWVu
dHMgaXMgdGhlIGFiaWxpdHkgdG8KKyAgICAgICAgaW5pdGlhbGl6ZSBhIGhpZGRlbiB2aWV3IGFz
IHByZXJlbmRlciAtY29udGludWUgdG8gc3VwcG9ydCB0aGlzIHNwZWNpZmljIGZ1bmN0aW9uYWxp
dHkgdmlhCisgICAgICAgIFdLUGFnZVNldFZpc2liaWxpdHlTdGF0ZSwgdG8gbWFpbnRhaW4gYmFj
a3dhcmRzIGNvbXBhdGliaWxpdHkuCisKKworICAgICAgICAtIFdlYktpdDIgLSByZW1vdmUgaW50
ZXJuYWwgc3RhdGUgdGhhdCB0cmFja3MgcGFnZSB2aXNpYmlsaXR5IHNlcGFyYXRlbHkgZnJvbSB0
aGUgdmlldyBzdGF0ZQorICAgICAgICB2aXNpYmlsaXR5LiBGb3IgYmFja3dhcmRzIGNvbXBhdGli
aWxpdHkgY29udGludWUgdG8gc3VwcG9ydCB0aGUgV0tQYWdlU2V0VmlzaWJpbGl0eVN0YXRlIEFQ
SSwKKyAgICAgICAgYnV0IG9ubHkgdG8gaW5pdGlhbGl6ZSB0aGUgc3RhdGUgdG8gcHJlcmVuZGVy
LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAgIChXS1Bh
Z2VTZXRWaXNpYmlsaXR5U3RhdGUpOgorICAgICAgICAgICAgLSBvbmx5IHN1cHBvcnQgaW5pdGlh
bGl6aW5nIHRoZSB2aXNpYmlsaXR5IHN0YXRlIHRvIHByZXJlbmRlci4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpX
ZWJQYWdlUHJveHkpOgorICAgICAgICAgICAgLSByZW1vdmUgbV92aXNpYmlsaXR5U3RhdGUKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojppbml0aWFsaXplV2ViUGFnZSk6CisgICAgICAg
ICAgICAtIG5vIG5lZWQgdG8gc2VuZCBpbml0aWFsIHZpc2liaWxpdHkgc3RhdGUgKHRoaXMgaXMg
c2VudCBhcyBhIHBhcnQgb2YgdGhlIGNyZWF0aW9uIHBhcmFtZXRlcnMpLgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OnZpZXdTdGF0ZURpZENoYW5nZSk6CisgICAgICAgICAgICAtIG5v
IG5lZWQgdG8gc2VuZCB2aXNpYmlsaXR5IHN0YXRlIGNoYW5nZSAodGhpcyBpcyBzZW50IGFzIGEg
cGFydCBvZiB2aWV3IHN0YXRlKS4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRW
aXNpYmlsaXR5U3RhdGVQcmVyZW5kZXIpOgorICAgICAgICAgICAgLSBzZXRWaXNpYmlsaXR5U3Rh
dGUgLT4gc2V0VmlzaWJpbGl0eVN0YXRlUHJlcmVuZGVyLgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaDoKKyAgICAgICAgICAgIC0gcmVtb3ZlIG1fdmlzaWJpbGl0eVN0YXRlLCBz
ZXRWaXNpYmlsaXR5U3RhdGUgLT4gc2V0VmlzaWJpbGl0eVN0YXRlUHJlcmVuZGVyLgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6V2ViUGFnZSk6CisgICAgICAgICAgICAtIGFkZGVkIGNhbGwgdG8gdXBkYXRlVmlzaWJp
bGl0eVN0YXRlLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRWaWV3SXNWaXNpYmxlKToK
KyAgICAgICAgICAgIC0gYWRkZWQgY2FsbCB0byB1cGRhdGVWaXNpYmlsaXR5U3RhdGUuCisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZVZpc2liaWxpdHlTdGF0ZSk6CisgICAgICAgICAg
ICAtIHByZXZpb3VzbHkgc2V0VmlzaWJpbGl0eVN0YXRlLCB1cGRhdGVzIHRoZSBwYWdlIHZpc2li
aWxpdHkgc3RhdGUgYWNjb3JkaW5nIHRvIHRoZSB2aWV3IHN0YXRlLgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjpzZXRWaXNpYmlsaXR5U3RhdGVQcmVyZW5kZXIpOgorICAgICAgICAgICAgLSBz
ZXQgdmlzaWJpbGl0eSBzdGF0ZSB0byBwcmVyZW5kZXIuCisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgICAgIC0gcmVtb3ZlIG1fdmlzaWJpbGl0eVN0YXRl
LCBzZXRWaXNpYmlsaXR5U3RhdGUgLT4gc2V0VmlzaWJpbGl0eVN0YXRlUHJlcmVuZGVyLgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorICAgICAgICAg
ICAgLSBTZXRWaXNpYmlsaXR5U3RhdGUgLT4gU2V0VmlzaWJpbGl0eVN0YXRlUHJlcmVuZGVyLgor
CiAyMDEzLTEyLTI0ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAg
IDMyLWJpdCBNYWMgYnVpbGQgZml4IGF0dGVtcHQgYWZ0ZXIgcjE2MTA0NS4KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAxNjA5NzcpCisr
KyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzA1LDE5ICszMDUsMTIgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNs
aWVudCYgcAogICAgICwgbV9jbGlwc1RvRXhwb3NlZFJlY3QoZmFsc2UpCiAgICAgLCBtX2xhc3RT
ZW50Q2xpcHNUb0V4cG9zZWRSZWN0KGZhbHNlKQogI2VuZGlmCi0jaWYgRU5BQkxFKFBBR0VfVklT
SUJJTElUWV9BUEkpCi0gICAgLCBtX3Zpc2liaWxpdHlTdGF0ZShQYWdlVmlzaWJpbGl0eVN0YXRl
VmlzaWJsZSkKLSNlbmRpZgogICAgICwgbV9zY3JvbGxQaW5uaW5nQmVoYXZpb3IoRG9Ob3RQaW4p
CiB7CiAgICAgdXBkYXRlVmlld1N0YXRlKCk7CiAKICAgICBwbGF0Zm9ybUluaXRpYWxpemUoKTsK
IAotI2lmIEVOQUJMRShQQUdFX1ZJU0lCSUxJVFlfQVBJKQotICAgIGlmICghaXNWaWV3VmlzaWJs
ZSgpKQotICAgICAgICBtX3Zpc2liaWxpdHlTdGF0ZSA9IFBhZ2VWaXNpYmlsaXR5U3RhdGVIaWRk
ZW47Ci0jZW5kaWYKICNpZm5kZWYgTkRFQlVHCiAgICAgd2ViUGFnZVByb3h5Q291bnRlci5pbmNy
ZW1lbnQoKTsKICNlbmRpZgpAQCAtNTE1LDEyICs1MDgsNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
aW5pdGlhbGl6ZVdlYlBhZ2UoKQogICAgIGluaXRpYWxpemVDcmVhdGlvblBhcmFtZXRlcnMoKTsK
ICAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6Q3JlYXRlV2ViUGFnZSht
X3BhZ2VJRCwgbV9jcmVhdGlvblBhcmFtZXRlcnMpLCAwKTsKIAotI2lmIEVOQUJMRShQQUdFX1ZJ
U0lCSUxJVFlfQVBJKQotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFZpc2liaWxpdHlT
dGF0ZShtX3Zpc2liaWxpdHlTdGF0ZSwgLyogaXNJbml0aWFsU3RhdGUgKi8gdHJ1ZSkpOwotI2Vs
aWYgRU5BQkxFKEhJRERFTl9QQUdFX0RPTV9USU1FUl9USFJPVFRMSU5HKQotICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlNldFZpc2liaWxpdHlTdGF0ZShpc1ZpZXdWaXNpYmxlKCkgPyBQYWdl
VmlzaWJpbGl0eVN0YXRlVmlzaWJsZSA6IFBhZ2VWaXNpYmlsaXR5U3RhdGVIaWRkZW4sIC8qIGlz
SW5pdGlhbFN0YXRlICovIHRydWUpKTsKLSNlbmRpZgotCiAjaWYgUExBVEZPUk0oTUFDKQogICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZChtX2lz
U21hcnRJbnNlcnREZWxldGVFbmFibGVkKSk7CiAjZW5kaWYKQEAgLTk3NSwxNCArOTYyLDYgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnZpZXdTdGF0ZURpZENoYW5nZShWaQogICAgICAgICAgICAgLy8g
c3RvcCB0aGUgdW5yZXNwb25zaXZlbmVzcyB0aW1lciBoZXJlLgogICAgICAgICAgICAgbV9wcm9j
ZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCktPnN0b3AoKTsKICAgICAgICAgfQotCi0jaWYgRU5B
QkxFKFBBR0VfVklTSUJJTElUWV9BUEkpCi0gICAgICAgIG1fdmlzaWJpbGl0eVN0YXRlID0gaXNW
aWV3VmlzaWJsZSgpID8gUGFnZVZpc2liaWxpdHlTdGF0ZVZpc2libGUgOiBQYWdlVmlzaWJpbGl0
eVN0YXRlSGlkZGVuOwotICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlNldFZpc2liaWxpdHlTdGF0ZShtX3Zpc2liaWxpdHlTdGF0ZSwgZmFsc2UpLCBtX3BhZ2VJRCk7
Ci0jZWxpZiBFTkFCTEUoSElEREVOX1BBR0VfRE9NX1RJTUVSX1RIUk9UVExJTkcpCi0gICAgICAg
IFBhZ2VWaXNpYmlsaXR5U3RhdGUgdmlzaWJpbGl0eVN0YXRlID0gaXNWaWV3VmlzaWJsZSgpID8g
UGFnZVZpc2liaWxpdHlTdGF0ZVZpc2libGUgOiBQYWdlVmlzaWJpbGl0eVN0YXRlSGlkZGVuOwot
ICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFZpc2liaWxpdHlT
dGF0ZSh2aXNpYmlsaXR5U3RhdGUsIGZhbHNlKSwgbV9wYWdlSUQpOwotI2VuZGlmCiAgICAgfQog
CiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1JfUE9QT1ZFUikKQEAgLTE2NzYsMjAgKzE2NTUs
MTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6Omxpc3RlbkZvckxheW91dE1pbGVzdAogICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TGlzdGVuRm9yTGF5b3V0TWlsZXN0b25lcyht
aWxlc3RvbmVzKSwgbV9wYWdlSUQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6c2V0VmlzaWJp
bGl0eVN0YXRlKFdlYkNvcmU6OlBhZ2VWaXNpYmlsaXR5U3RhdGUgdmlzaWJpbGl0eVN0YXRlLCBi
b29sIGlzSW5pdGlhbFN0YXRlKQordm9pZCBXZWJQYWdlUHJveHk6OnNldFZpc2liaWxpdHlTdGF0
ZVByZXJlbmRlcigpCiB7CiAgICAgaWYgKCFpc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybjsKLQot
I2lmIEVOQUJMRShQQUdFX1ZJU0lCSUxJVFlfQVBJKQotICAgIGlmICh2aXNpYmlsaXR5U3RhdGUg
IT0gbV92aXNpYmlsaXR5U3RhdGUgfHwgaXNJbml0aWFsU3RhdGUpIHsKLSAgICAgICAgbV92aXNp
YmlsaXR5U3RhdGUgPSB2aXNpYmlsaXR5U3RhdGU7Ci0gICAgICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6U2V0VmlzaWJpbGl0eVN0YXRlKHZpc2liaWxpdHlTdGF0ZSwgaXNJ
bml0aWFsU3RhdGUpLCBtX3BhZ2VJRCk7Ci0gICAgfQotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0o
dmlzaWJpbGl0eVN0YXRlKTsKLSAgICBVTlVTRURfUEFSQU0oaXNJbml0aWFsU3RhdGUpOwotI2Vu
ZGlmCisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRWaXNpYmlsaXR5
U3RhdGVQcmVyZW5kZXIoKSwgbV9wYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0
U3VwcHJlc3NTY3JvbGxiYXJBbmltYXRpb25zKGJvb2wgc3VwcHJlc3NBbmltYXRpb25zKQpJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gMTYwOTc3
KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNv
cHkpCkBAIC01NjEsNyArNTYxLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBsaXN0ZW5Gb3JMYXlv
dXRNaWxlc3RvbmVzKFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZXMpOwogCi0gICAgdm9pZCBzZXRW
aXNpYmlsaXR5U3RhdGUoV2ViQ29yZTo6UGFnZVZpc2liaWxpdHlTdGF0ZSwgYm9vbCBpc0luaXRp
YWxTdGF0ZSk7CisgICAgdm9pZCBzZXRWaXNpYmlsaXR5U3RhdGVQcmVyZW5kZXIoKTsKICAgICB2
b2lkIGRpZFVwZGF0ZVZpZXdTdGF0ZSgpIHsgbV93YWl0aW5nRm9yRGlkVXBkYXRlVmlld1N0YXRl
ID0gZmFsc2U7IH0KIAogICAgIGJvb2wgaGFzSG9yaXpvbnRhbFNjcm9sbGJhcigpIGNvbnN0IHsg
cmV0dXJuIG1fbWFpbkZyYW1lSGFzSG9yaXpvbnRhbFNjcm9sbGJhcjsgfQpAQCAtMTM2NCwxMCAr
MTM2NCw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2xhc3RTZW50Q2xpcHNUb0V4cG9zZWRSZWN0
OwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoUEFHRV9WSVNJQklMSVRZX0FQSSkKLSAgICBXZWJDb3Jl
OjpQYWdlVmlzaWJpbGl0eVN0YXRlIG1fdmlzaWJpbGl0eVN0YXRlOwotI2VuZGlmCi0KICNpZiBQ
TEFURk9STShNQUMpCiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gbV90ZW1wb3JhcnlQREZG
aWxlczsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFn
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFn
ZS5jcHAJKHJldmlzaW9uIDE2MDk3NikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MTAsOSArNDEwLDEwIEBAIHZvaWQgV0tQ
YWdlTGlzdGVuRm9yTGF5b3V0TWlsZXN0b25lcyhXS1AKICAgICB0b0ltcGwocGFnZVJlZiktPmxp
c3RlbkZvckxheW91dE1pbGVzdG9uZXModG9MYXlvdXRNaWxlc3RvbmVzKG1pbGVzdG9uZXMpKTsK
IH0KIAotdm9pZCBXS1BhZ2VTZXRWaXNpYmlsaXR5U3RhdGUoV0tQYWdlUmVmIHBhZ2VSZWYsIFdL
UGFnZVZpc2liaWxpdHlTdGF0ZSBzdGF0ZSwgYm9vbCBpc0luaXRpYWxTdGF0ZSkKK3ZvaWQgV0tQ
YWdlU2V0VmlzaWJpbGl0eVN0YXRlKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1BhZ2VWaXNpYmlsaXR5
U3RhdGUgc3RhdGUsIGJvb2wpCiB7Ci0gICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRWaXNpYmlsaXR5
U3RhdGUodG9QYWdlVmlzaWJpbGl0eVN0YXRlKHN0YXRlKSwgaXNJbml0aWFsU3RhdGUpOworICAg
IGlmIChzdGF0ZSA9PSBrV0tQYWdlVmlzaWJpbGl0eVN0YXRlUHJlcmVuZGVyKQorICAgICAgICB0
b0ltcGwocGFnZVJlZiktPnNldFZpc2liaWxpdHlTdGF0ZVByZXJlbmRlcigpOwogfQogCiBib29s
IFdLUGFnZUhhc0hvcml6b250YWxTY3JvbGxiYXIoV0tQYWdlUmVmIHBhZ2VSZWYpCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lv
biAxNjA5NzcpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI3Niw5ICsyNzYsNiBAQCBXZWJQYWdlOjpXZWJQYWdlKHVp
bnQ2NF90IHBhZ2VJRCwgY29uc3QgCiAjaWYgUExBVEZPUk0oSU9TKQogICAgICwgbV9zaG91bGRS
ZXR1cm5Xb3JkQXRTZWxlY3Rpb24oZmFsc2UpCiAjZW5kaWYKLSNpZiBFTkFCTEUoUEFHRV9WSVNJ
QklMSVRZX0FQSSkKLSAgICAsIG1fdmlzaWJpbGl0eVN0YXRlKFdlYkNvcmU6OlBhZ2VWaXNpYmls
aXR5U3RhdGVWaXNpYmxlKQotI2VuZGlmCiAgICAgLCBtX2luc3BlY3RvckNsaWVudCgwKQogICAg
ICwgbV9iYWNrZ3JvdW5kQ29sb3IoQ29sb3I6OndoaXRlKQogICAgICwgbV9tYXhpbXVtUmVuZGVy
aW5nU3VwcHJlc3Npb25Ub2tlbigwKQpAQCAtNDI2LDYgKzQyMyw4IEBAIFdlYlBhZ2U6OldlYlBh
Z2UodWludDY0X3QgcGFnZUlELCBjb25zdCAKICAgICBpZiAobV91c2VUaHJlYWRlZFNjcm9sbGlu
ZykKICAgICAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuZXZlbnREaXNwYXRjaGVyKCkuYWRkU2Ny
b2xsaW5nVHJlZUZvclBhZ2UodGhpcyk7CiAjZW5kaWYKKworICAgIHVwZGF0ZVZpc2liaWxpdHlT
dGF0ZSh0cnVlKTsKIH0KIAogV2ViUGFnZTo6fldlYlBhZ2UoKQpAQCAtMTkzNCw2ICsxOTMzLDgg
QEAgdm9pZCBXZWJQYWdlOjpzZXRWaWV3SXNWaXNpYmxlKGJvb2wgaXNWaQogICAgICAgICAgICAg
bV9wYWdlLT5yZXN1bWVBbmltYXRpbmdJbWFnZXMoKTsKICAgICAgICAgfQogICAgIH0KKworICAg
IHVwZGF0ZVZpc2liaWxpdHlTdGF0ZSgpOwogfQogCiB2b2lkIFdlYlBhZ2U6OnNldERyYXdzQmFj
a2dyb3VuZChib29sIGRyYXdzQmFja2dyb3VuZCkKQEAgLTM3MDUsNDEgKzM3MDYsNTAgQEAgRnJh
bWVWaWV3KiBXZWJQYWdlOjptYWluRnJhbWVWaWV3KCkgY29ucwogICAgIHJldHVybiAwOwogfQog
Ci0jaWYgRU5BQkxFKFBBR0VfVklTSUJJTElUWV9BUEkpIHx8IEVOQUJMRShISURERU5fUEFHRV9E
T01fVElNRVJfVEhST1RUTElORykKLXZvaWQgV2ViUGFnZTo6c2V0VmlzaWJpbGl0eVN0YXRlKHVp
bnQzMl90IHZpc2liaWxpdHlTdGF0ZSwgYm9vbCBpc0luaXRpYWxTdGF0ZSkKK3ZvaWQgV2ViUGFn
ZTo6dXBkYXRlVmlzaWJpbGl0eVN0YXRlKGJvb2wgaXNJbml0aWFsU3RhdGUpCiB7CisgICAgYm9v
bCBpc1Zpc2libGUgPSBtX3ZpZXdTdGF0ZSAmIFZpZXdTdGF0ZTo6SXNWaXNpYmxlOwogICAgIGlm
ICghbV9wYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBXZWJDb3JlOjpQYWdlVmlzaWJpbGl0
eVN0YXRlIHN0YXRlID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6UGFnZVZpc2liaWxpdHlTdGF0ZT4o
dmlzaWJpbGl0eVN0YXRlKTsKLQogI2lmIEVOQUJMRShQQUdFX1ZJU0lCSUxJVFlfQVBJKQotICAg
IGlmIChtX3Zpc2liaWxpdHlTdGF0ZSA9PSBzdGF0ZSkKLSAgICAgICAgcmV0dXJuOwogCiAgICAg
RnJhbWVWaWV3KiB2aWV3ID0gbV9wYWdlLT5tYWluRnJhbWUoKS52aWV3KCk7CiAKLSAgICBpZiAo
c3RhdGUgPT0gV2ViQ29yZTo6UGFnZVZpc2liaWxpdHlTdGF0ZVZpc2libGUpIHsKKyAgICBpZiAo
aXNWaXNpYmxlKSB7CiAgICAgICAgIG1fcGFnZS0+ZGlkTW92ZU9uc2NyZWVuKCk7CiAgICAgICAg
IGlmICh2aWV3KQogICAgICAgICAgICAgdmlldy0+c2hvdygpOwogICAgIH0KIAorICAgIFBhZ2VW
aXNpYmlsaXR5U3RhdGUgc3RhdGUgPSBpc1Zpc2libGUgPyBQYWdlVmlzaWJpbGl0eVN0YXRlVmlz
aWJsZSA6IFBhZ2VWaXNpYmlsaXR5U3RhdGVIaWRkZW47CiAgICAgbV9wYWdlLT5zZXRWaXNpYmls
aXR5U3RhdGUoc3RhdGUsIGlzSW5pdGlhbFN0YXRlKTsKLSAgICBtX3Zpc2liaWxpdHlTdGF0ZSA9
IHN0YXRlOwogCi0gICAgaWYgKHN0YXRlID09IFdlYkNvcmU6OlBhZ2VWaXNpYmlsaXR5U3RhdGVI
aWRkZW4pIHsKKyAgICBpZiAoIWlzVmlzaWJsZSkgewogICAgICAgICBtX3BhZ2UtPndpbGxNb3Zl
T2Zmc2NyZWVuKCk7CiAgICAgICAgIGlmICh2aWV3KQogICAgICAgICAgICAgdmlldy0+aGlkZSgp
OwogICAgIH0KLSNlbmRpZgogCi0jaWYgRU5BQkxFKEhJRERFTl9QQUdFX0RPTV9USU1FUl9USFJP
VFRMSU5HKSAmJiAhRU5BQkxFKFBBR0VfVklTSUJJTElUWV9BUEkpCisjZWxpZiBFTkFCTEUoSElE
REVOX1BBR0VfRE9NX1RJTUVSX1RIUk9UVExJTkcpCisKKyAgICBQYWdlVmlzaWJpbGl0eVN0YXRl
IHN0YXRlID0gaXNWaXNpYmxlID8gUGFnZVZpc2liaWxpdHlTdGF0ZVZpc2libGUgOiBQYWdlVmlz
aWJpbGl0eVN0YXRlSGlkZGVuOwogICAgIG1fcGFnZS0+c2V0VmlzaWJpbGl0eVN0YXRlKHN0YXRl
LCBpc0luaXRpYWxTdGF0ZSk7CisKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGlzVmlzaWJsZSk7
CisgICAgVU5VU0VEX1BBUkFNKGlzSW5pdGlhbFN0YXRlKTsKICNlbmRpZgogfQorCit2b2lkIFdl
YlBhZ2U6OnNldFZpc2liaWxpdHlTdGF0ZVByZXJlbmRlcigpCit7CisjaWYgRU5BQkxFKFBBR0Vf
VklTSUJJTElUWV9BUEkpIHx8IEVOQUJMRShISURERU5fUEFHRV9ET01fVElNRVJfVEhST1RUTElO
RykKKyAgICBpZiAoIW1fcGFnZSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fcGFnZS0+c2V0Vmlz
aWJpbGl0eVN0YXRlKFBhZ2VWaXNpYmlsaXR5U3RhdGVQcmVyZW5kZXIsIHRydWUpOwogI2VuZGlm
Cit9CiAKIHZvaWQgV2ViUGFnZTo6c2V0VGhyb3R0bGVkKGJvb2wgaXNUaHJvdHRsZWQpCiB7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHJldmlz
aW9uIDE2MDk3NykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTYxNCw5ICs2MTQsOCBAQCBwdWJsaWM6CiAKICAgICBib29s
IHdpbGxHb1RvQmFja0ZvcndhcmRJdGVtQ2FsbGJhY2tFbmFibGVkKCkgY29uc3QgeyByZXR1cm4g
bV93aWxsR29Ub0JhY2tGb3J3YXJkSXRlbUNhbGxiYWNrRW5hYmxlZDsgfQogCi0jaWYgRU5BQkxF
KFBBR0VfVklTSUJJTElUWV9BUEkpIHx8IEVOQUJMRShISURERU5fUEFHRV9ET01fVElNRVJfVEhS
T1RUTElORykKLSAgICB2b2lkIHNldFZpc2liaWxpdHlTdGF0ZSh1aW50MzJfdCAvKiBXZWJDb3Jl
OjpQYWdlVmlzaWJpbGl0eVN0YXRlICovLCBib29sIGlzSW5pdGlhbFN0YXRlKTsKLSNlbmRpZgor
ICAgIHZvaWQgc2V0VmlzaWJpbGl0eVN0YXRlUHJlcmVuZGVyKCk7CisgICAgdm9pZCB1cGRhdGVW
aXNpYmlsaXR5U3RhdGUoYm9vbCBpc0luaXRpYWxTdGF0ZSA9IGZhbHNlKTsKICAgICB2b2lkIHNl
dFRocm90dGxlZChib29sIGlzVGhyb3R0bGVkKTsKIAogI2lmIFBMQVRGT1JNKElPUykKQEAgLTEw
MzksOSArMTAzOCw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3Nob3VsZFJldHVybldvcmRBdFNl
bGVjdGlvbjsKICNlbmRpZgogCi0jaWYgRU5BQkxFKFBBR0VfVklTSUJJTElUWV9BUEkpCi0gICAg
V2ViQ29yZTo6UGFnZVZpc2liaWxpdHlTdGF0ZSBtX3Zpc2liaWxpdHlTdGF0ZTsKLSNlbmRpZgog
ICAgIFdlYkluc3BlY3RvckNsaWVudCogbV9pbnNwZWN0b3JDbGllbnQ7CiAKICAgICBXZWJDb3Jl
OjpDb2xvciBtX2JhY2tncm91bmRDb2xvcjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAxNjA5
NzYpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdl
cy5pbgkod29ya2luZyBjb3B5KQpAQCAtMzA1LDkgKzMwNSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBh
Z2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIEhhbmRsZUFsdGVybmF0aXZlVGV4dFVJUmVzdWx0KFN0
cmluZyByZXN1bHQpCiAjZW5kaWYKIAotI2lmIEVOQUJMRShQQUdFX1ZJU0lCSUxJVFlfQVBJKSB8
fCBFTkFCTEUoSElEREVOX1BBR0VfRE9NX1RJTUVSX1RIUk9UVExJTkcpCi0gICAgU2V0VmlzaWJp
bGl0eVN0YXRlKHVpbnQzMl90IHZpc2liaWxpdHlTdGF0ZSwgYm9vbCBpc0luaXRpYWxTdGF0ZSkK
LSNlbmRpZgorICAgIFNldFZpc2liaWxpdHlTdGF0ZVByZXJlbmRlcigpCiAKICNpZiBQTEFURk9S
TShJT1MpCiAgICAgRGlkRmluaXNoU2Nyb2xsaW5nKFdlYkNvcmU6OkZsb2F0UG9pbnQgY29udGVu
dE9mZnNldCk7CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxNjEwNTcpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSw2MSBAQAorMjAxMy0xMi0yNCAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJy
YWNsb3VnaEBhcHBsZS5jb20+CisKKyAgICAgICAgTWVyZ2UgUGFnZVZpc2liaWxpdHlTdGF0ZSAm
IFZpZXdTdGF0ZTo6SXNWaXNpYmxlIGluIFdlYktpdDIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNjIxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYktpdDIgcmVkdW5kYW50bHkgdHJhY2tzIHRoZSB2
aXNpYmlsaXR5IG9mIHRoZSB2aWV3IHRocm91Z2ggdHdvIG1lY2hhbmlzbXMgLSB0aGUgdmlzaWJp
bGl0eQorICAgICAgICBzdGF0ZSwgYW5kIHRoZSB2aWV3IHN0YXRlLiBSZW1vdmUgdmlzaWJpbGl0
eSBzdGF0ZSBmcm9tIHRoZSBXZWJLaXQyIGxheWVyLiBUaGUgdmlzaWJpbGl0eQorICAgICAgICBz
dGF0ZSBhbHNvIHRyYWNrcyB0aGUgJ3ByZXRlbmRlcicgc3RhdGUgLSBzbyBzcGxpdCB0aGlzIG91
dCBhbmQgaGFuZGxlIGl0IHNlcGFyYXRlbHkgKGEgY2hhbmdlCisgICAgICAgIHdlIHNob3VsZCBt
YWtlIGluIFdlYkNvcmUsIHRvbykuCisKKyAgICAgICAgUmVtb3ZpbmcgdGhlIHJlZHVuZGFuY3kg
YWxzbyByZW1vdmVzIHRoZSBhYmlsaXR5IGZyb20gdGhlIEFQSSB0byBzZXQgYSBmYWtlIHZpc2li
aWxpdHkgc3RhdGUKKyAgICAgICAgKElzVmlzaWJsZSB0cmFja3MgdGhlIGFjdHVhbCB2aXNpYmls
aXR5IG9mIHRoZSB2aWV3KS4gVGhyb3VnaCBwcml2YXRlIEFQSQorICAgICAgICAoV0tQYWdlU2V0
VmlzaWJpbGl0eVN0YXRlKSBhIGNsaWVudCBjb3VsZCBwcmV2aW91c2x5IHJlcXVlc3QgdGhlIHZp
ZXcgYmUgcmVwb3J0ZWQgYXMgaGlkZGVuIG9yCisgICAgICAgIHZpc2libGUsIGJ1dCB0aGlzIGRp
ZG4ndCByZWFsbHkgd29yayAtIHRoZSBvdmVycmlkZSB3YXMgbm90IGVuZm9yY2VkIGFuZCB0aGUg
QVBJIG1heSByZXNldCB0aGUKKyAgICAgICAgc3RhdGUgYXQgYW4gYXJiaXRyYXJ5IHBvaW50LiBU
aGUgbWVjaGFuaXNtIGlzIG9ubHkgdXNlZCBieSB0ZXN0aW5nIGNvZGUsIHdoaWNoIGluc3RlYWQg
c2hvdWxkCisgICAgICAgIGFjdHVhbGx5IHVwZGF0ZSB0aGUgdmlldyB2aXNpYmlsaXR5ICh0aGlz
IHRlc3RzIG1vcmUgb2YgdGhlIGFjdHVhbCB2aXNpYmlsaXR5IG1lY2hhbmlzbXMgdXNlZAorICAg
ICAgICBieSB0aGUgYnJvd3NlcikuIFRoZSBvbmUgYXNwZWN0IG9mIHRoZSBBUEkgcmVsaWVkIG9u
IGJ5IGV4aXN0aW5nIGNsaWVudHMgaXMgdGhlIGFiaWxpdHkgdG8KKyAgICAgICAgaW5pdGlhbGl6
ZSBhIGhpZGRlbiB2aWV3IGFzIHByZXJlbmRlciAtY29udGludWUgdG8gc3VwcG9ydCB0aGlzIHNw
ZWNpZmljIGZ1bmN0aW9uYWxpdHkgdmlhCisgICAgICAgIFdLUGFnZVNldFZpc2liaWxpdHlTdGF0
ZSwgdG8gbWFpbnRhaW4gYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuCisKKworICAgICAgICBUb29s
cyAtIFdlYktpdDIgbm8gbG9uZ2VyIChwb29ybHkpIHN1cHBvcnRzIGEgZmFrZSB2aXNpYmlsaXR5
IHN0YXRlLCBzbyB0byB0ZXN0IHRoZSBwYWdlCisgICAgICAgIHZpc2liaWxpdHkgbWVjaGFuaXNt
cyB3ZSBzaG91bGQgYWN0dWFsbHkgYmUgY2hhbmdpbmcgY2hhcmFjdGVyaXN0aWNzIG9mIHRoZSB2
aWV3IHRoYXQgd2lsbAorICAgICAgICBiZSBkZXRlY3RlZCBieSBXZWJLaXQyIGFzIGEgdmlzaWJp
bGl0eSBjaGFuZ2UuIFRoaXMgYWZmZWN0cyB0aHJlZSB0aGluZ3M6CisgICAgICAgICAgICAxKSBP
biBzZXRWaXNpYmlsaXR5U3RhdGUgV2ViS2l0VGVzdFJ1bm5lciBtdXN0IGFjdHVhbGx5IGNoYW5n
ZSB2aXNpYmlsaXR5IG9mIHRoZSB2aWV3LgorICAgICAgICAgICAgMikgVGhlICdQYWdlVmlzaWJp
bGl0eVN0YXRlJyB0ZXN0IGluIHRoZSBBUEkgdGVzdHMgaXMgdXNlbGVzcyAoYXMgZXZpZGVuY2Vk
IGJ5IHRoZSBmYWN0CisgICAgICAgICAgICAgICB0aGF0IHBhZ2UgdmlzaWJpbGl0eSBoYXMgYmVl
biBicm9rZW4gaW4gV2ViS2l0MiBmb3IgYSBjb3VwbGUgb2YgbW9udGhzLCBhbmQgZGlkbid0Cisg
ICAgICAgICAgICAgICBjYXRjaCB0aGlzIGZhY3QpLiBSZW1vdmVkIGluIGZhdm91ciBvZjoKKyAg
ICAgICAgICAgIDMpICdQYWdlVmlzaWJpbGl0eVN0YXRlV2l0aFdpbmRvd0NoYW5nZXMnIC0gdGhp
cyBpcyB0aGUgZ29vZCBzdHVmZi4gVGhpcyBhY3R1YWxseSB0ZXN0cworICAgICAgICAgICAgICAg
dGhlIHZpc2liaWxpdHkgbWVjaGFuaXNtLiBCZWVmIHRoaXMgdGVzdCB1cCBieSBhZGRpbmcgY292
ZXJhZ2UgZm9yOiBhKSB0aGUgcHJlcmVuZGVyCisgICAgICAgICAgICBzdGF0ZSwgYikgZG9jdW1l
bnQuaGlkZGVuLCBhbmQgYykgdG9vIG1hbnkgc3RhdGUgY2hhbmdlIG5vdGlmaWNhdGlvbnMgKGl0
IGFscmVhZHkgbG9va3MKKyAgICAgICAgICAgIGZvciB0b28gZmV3KS4KKworICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9QYWdlVmlzaWJpbGl0eVN0YXRlLmNw
cDogUmVtb3ZlZC4KKyAgICAgICAgICAgIC0gUmVtb3ZlZCBQYWdlVmlzaWJpbGl0eVN0YXRlIC0g
dGhpcyB0ZXN0IHdhcyBpbmVmZmVjdGl2ZSwgQVBJIG5vIGxvbmdlciBzdXBwb3J0cyB0aGlzCisg
ICAgICAgICAgICAgIHRlc3QsIGFuZCBiZWhhdmlvdXIgaXMgY292ZXJlZCBieSBQYWdlVmlzaWJp
bGl0eVN0YXRlV2l0aFdpbmRvd0NoYW5nZXMuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9tYWMvUGFnZVZpc2liaWxpdHlTdGF0ZVdpdGhXaW5kb3dDaGFuZ2VzLm1tOgorICAgICAgICAo
LVtQYWdlVmlzaWJpbGl0eVN0YXRlRGVsZWdhdGUgd2ViVmlldzpydW5KYXZhU2NyaXB0QWxlcnRQ
YW5lbFdpdGhNZXNzYWdlOmluaXRpYXRlZEJ5RnJhbWU6XSk6CisgICAgICAgIChydW5KYXZhU2Ny
aXB0QWxlcnQpOgorICAgICAgICAgICAgLSBBZGQgY2hlY2tpbmcgZm9yIHRvbyBtYW55IGNhbGxz
IHRvIHRoZSBhbGVydC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlBhZ2VWaXNpYmlsaXR5U3Rh
dGVXaXRoV2luZG93Q2hhbmdlczo6c2V0UHJlcmVuZGVyKToKKyAgICAgICAgICAgIC0gQWRkZWQg
bWV0aG9kcyB0byBzZXQgdmlzaWJpbGl0eSB0byBwcmVyZW5kZXIuCisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpQYWdlVmlzaWJpbGl0eVN0YXRlV2l0aFdpbmRvd0NoYW5nZXM6OnJ1blRlc3QpOgor
ICAgICAgICAgICAgLSBBZGRlZCBjaGVja2luZyBvZiAnZG9jdW1lbnQuaGlkZGVuJy4KKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6
VGVzdENvbnRyb2xsZXI6OnNldFZpc2liaWxpdHlTdGF0ZSk6CisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci9UZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvZWZs
L1Rlc3RDb250cm9sbGVyRWZsLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnNl
dEhpZGRlbik6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9ndGsvVGVzdENvbnRyb2xsZXJH
dGsuY3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6c2V0SGlkZGVuKToKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL21hYy9UZXN0Q29udHJvbGxlck1hYy5tbToKKyAgICAgICAg
KFdUUjo6VGVzdENvbnRyb2xsZXI6OnNldEhpZGRlbik6CisgICAgICAgICAgICAtIEFkZCBzZXRI
aWRkZW4gbWV0aG9kOyBjYWxsIHRoaXMgZnJvbSBzZXRWaXNpYmlsaXR5U3RhdGUuCisKIDIwMTMt
MTItMjMgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgogCiAgICAgICAg
IFRyeSB0byBmaXggdGhlIGJ1aWxkIGFmdGVyIHIxNjEwMTcKSW5kZXg6IFRvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCShyZXZpc2lvbiAxNjA5NzYpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJL
aXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTQwLDcg
KzE0MCw2IEBACiAJCTlCMjZGQ0NBMTU5RDE2REUwMENDMzc2NSAvKiBIVE1MRm9ybUNvbGxlY3Rp
b25OYW1lZEl0ZW0uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5QjI2RkNCNDE1OUQxNUU3MDBDQzM3NjUgLyogSFRNTEZvcm1Db2xsZWN0
aW9uTmFtZWRJdGVtLmh0bWwgKi87IH07CiAJCTlCNEY4RkE0MTU5RDUyQjEwMDJEOUY5NCAvKiBI
VE1MQ29sbGVjdGlvbk5hbWVkSXRlbS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDlCNEY4RkEzMTU5RDUyQjEwMDJEOUY5NCAvKiBIVE1MQ29sbGVjdGlv
bk5hbWVkSXRlbS5tbSAqLzsgfTsKIAkJOUI0RjhGQTcxNTlENTJERDAwMkQ5Rjk0IC8qIEhUTUxD
b2xsZWN0aW9uTmFtZWRJdGVtLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOUI0RjhGQTYxNTlENTJDQTAwMkQ5Rjk0IC8qIEhUTUxDb2xs
ZWN0aW9uTmFtZWRJdGVtLmh0bWwgKi87IH07Ci0JCUE1MUI2NTA5MTZBREY5QjEwMDdBQTVEOSAv
KiBQYWdlVmlzaWJpbGl0eVN0YXRlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE1MUI2NTA4MTZBREY5QjEwMDdBQTVEOSAvKiBQYWdlVmlzaWJpbGl0
eVN0YXRlLmNwcCAqLzsgfTsKIAkJQTU3QTM0RjAxNkFGNjc3MjAwQzI1MDFGIC8qIFBhZ2VWaXNp
YmlsaXR5U3RhdGVXaXRoV2luZG93Q2hhbmdlcy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1N0EzNEVGMTZBRjY3NzIwMEMyNTAxRiAvKiBQYWdlVmlz
aWJpbGl0eVN0YXRlV2l0aFdpbmRvd0NoYW5nZXMubW0gKi87IH07CiAJCUE1N0EzNEYyMTZBRjZC
MkIwMEMyNTAxRiAvKiBQYWdlVmlzaWJpbGl0eVN0YXRlV2l0aFdpbmRvd0NoYW5nZXMuaHRtbCBp
biBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTdB
MzRGMTE2QUY2OUUyMDBDMjUwMUYgLyogUGFnZVZpc2liaWxpdHlTdGF0ZVdpdGhXaW5kb3dDaGFu
Z2VzLmh0bWwgKi87IH07CiAJCUE1RTIwMjczMTVCMjE4MTkwMEMxM0UxNCAvKiBXaW5kb3dsZXNz
V2ViVmlld1dpdGhNZWRpYS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE1RTIwMjcyMTVCMjE4MTkwMEMxM0UxNCAvKiBXaW5kb3dsZXNzV2ViVmlld1dp
dGhNZWRpYS5tbSAqLzsgfTsKQEAgLTQ2OCw3ICs0NjcsNiBAQAogCQk5QjI2RkNCNDE1OUQxNUU3
MDBDQzM3NjUgLyogSFRNTEZvcm1Db2xsZWN0aW9uTmFtZWRJdGVtLmh0bWwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0Lmh0bWw7IHBhdGggPSBIVE1MRm9ybUNvbGxlY3Rpb25OYW1lZEl0ZW0uaHRtbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUI0RjhGQTMxNTlENTJCMTAwMkQ5Rjk0IC8qIEhUTUxD
b2xsZWN0aW9uTmFtZWRJdGVtLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gSFRNTENvbGxlY3Rpb25OYW1lZEl0ZW0ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTlCNEY4RkE2MTU5RDUyQ0EwMDJEOUY5NCAvKiBIVE1MQ29sbGVjdGlvbk5hbWVkSXRl
bS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gSFRNTENvbGxlY3Rpb25OYW1lZEl0
ZW0uaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTUxQjY1MDgxNkFERjlCMTAw
N0FBNUQ5IC8qIFBhZ2VWaXNpYmlsaXR5U3RhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUGFnZVZpc2liaWxpdHlTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUE1N0EzNEVGMTZBRjY3NzIwMEMyNTAxRiAvKiBQYWdlVmlzaWJpbGl0eVN0
YXRlV2l0aFdpbmRvd0NoYW5nZXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBQYWdlVmlzaWJpbGl0eVN0YXRlV2l0aFdpbmRvd0NoYW5nZXMubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1N0EzNEYxMTZBRjY5RTIwMEMyNTAxRiAvKiBQYWdlVmlz
aWJpbGl0eVN0YXRlV2l0aFdpbmRvd0NoYW5nZXMuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsg
cGF0aCA9IFBhZ2VWaXNpYmlsaXR5U3RhdGVXaXRoV2luZG93Q2hhbmdlcy5odG1sOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBNUUyMDI3MDE1QjIxODA2MDBDMTNFMTQgLyogV2luZG93
bGVzc1dlYlZpZXdXaXRoTWVkaWEuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IFdp
bmRvd2xlc3NXZWJWaWV3V2l0aE1lZGlhLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC03OTEsNyArNzg5LDYgQEAKIAkJCQk5M0Y3RTg2RTE0REM4RTVCMDBDODRBOTkgLyogTmV3
Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0RnJhbWVzX0J1bmRsZS5jcHAgKi8sCiAJCQkJQkM5
MDk3NzkxMjU1NzFBQjAwMDgzNzU2IC8qIFBhZ2VMb2FkQmFzaWMuY3BwICovLAogCQkJCUJDMkQw
MDQ4MTJBOUZERkEwMEU3MzJBMyAvKiBQYWdlTG9hZERpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFn
ZUZvckZyYW1lLmNwcCAqLywKLQkJCQlBNTFCNjUwODE2QURGOUIxMDA3QUE1RDkgLyogUGFnZVZp
c2liaWxpdHlTdGF0ZS5jcHAgKi8sCiAJCQkJNTJFNUNFNDUxNEQyMUU5RDAwM0IyQkQ4IC8qIFBh
cmVudEZyYW1lLmNwcCAqLywKIAkJCQk1MkU1Q0U0ODE0RDIxRUFCMDAzQjJCRDggLyogUGFyZW50
RnJhbWVfQnVuZGxlLmNwcCAqLywKIAkJCQlDNTQyMzdFRTE2Qjg5NTU4MDBFNjM4RkMgLyogUGFz
dGVib2FyZE5vdGlmaWNhdGlvbnMubW0gKi8sCkBAIC0xMjIwLDcgKzEyMTcsNiBAQAogCQkJCUJD
MkQwMDQ5MTJBOUZERkEwMEU3MzJBMyAvKiBQYWdlTG9hZERpZENoYW5nZUxvY2F0aW9uV2l0aGlu
UGFnZUZvckZyYW1lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzMzE0MDdDMTdCNDQxOTAwMEYw
ODNCMSAvKiBEaWROb3RIYW5kbGVLZXlEb3duLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTI2RjUy
RUFCMTgyODcyNjAwMDIzRDQxMiAvKiBHZW9sb2NhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKLQkJ
CQlBNTFCNjUwOTE2QURGOUIxMDA3QUE1RDkgLyogUGFnZVZpc2liaWxpdHlTdGF0ZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlBNTdBMzRGMDE2QUY2NzcyMDBDMjUwMUYgLyogUGFnZVZpc2liaWxp
dHlTdGF0ZVdpdGhXaW5kb3dDaGFuZ2VzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTJFNUNFNDYx
NEQyMUU5RDAwM0IyQkQ4IC8qIFBhcmVudEZyYW1lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUM1
NDIzN0YwMTZCODk1NTgwMEU2MzhGQyAvKiBQYXN0ZWJvYXJkTm90aWZpY2F0aW9ucy5tbSBpbiBT
b3VyY2VzICovLApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1BhZ2VW
aXNpYmlsaXR5U3RhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Mi9QYWdlVmlzaWJpbGl0eVN0YXRlLmNwcAkocmV2aXNpb24gMTYwOTc2KQorKysg
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1BhZ2VWaXNpYmlsaXR5U3RhdGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwMiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCi0jaW5jbHVkZSAiUGxh
dGZvcm1XZWJWaWV3LmgiCi0jaW5jbHVkZSAiVGVzdC5oIgotI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0pTQ29udGV4dFJlZi5oPgotI2luY2x1ZGUgPFdlYktpdDIvV0tSZXRhaW5QdHIuaD4KLSNp
bmNsdWRlIDxXZWJLaXQyL1dLU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg+Ci0KLW5hbWVzcGFjZSBU
ZXN0V2ViS2l0QVBJIHsKLQotc3RhdGljIGJvb2wgdGVzdERvbmU7Ci0KLXN0YXRpYyB2b2lkIGRp
ZFJ1blN0ZXAxU3RhdGVDaGFuZ2VWaXNpYmxlVG9IaWRkZW4oV0tTZXJpYWxpemVkU2NyaXB0VmFs
dWVSZWYsIFdLRXJyb3JSZWYsIHZvaWQqKTsKLXN0YXRpYyB2b2lkIGRpZFJ1blN0ZXAyU3RhdGVD
aGFuZ2VIaWRkZW5Ub1ByZXJlbmRlcihXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZVJlZiwgV0tFcnJv
clJlZiwgdm9pZCopOwotc3RhdGljIHZvaWQgZGlkUnVuU3RlcDNTdGF0ZUNoYW5nZVByZXJlbmRl
clRvVW5sb2FkZWQoV0tTZXJpYWxpemVkU2NyaXB0VmFsdWVSZWYsIFdLRXJyb3JSZWYsIHZvaWQq
KTsKLQotc3RhdGljIHZvaWQgc2V0UGFnZVZpc2liaWxpdHlTdGF0ZVdpdGhFdmFsQ29udGludWF0
aW9uKFBsYXRmb3JtV2ViVmlldyogd2ViVmlldywgV0tQYWdlVmlzaWJpbGl0eVN0YXRlIHZpc2li
aWxpdHlTdGF0ZSwgV0tQYWdlUnVuSmF2YVNjcmlwdEZ1bmN0aW9uIGNhbGxiYWNrKQotewotICAg
IFdLUGFnZVNldFZpc2liaWxpdHlTdGF0ZSh3ZWJWaWV3LT5wYWdlKCksIHZpc2liaWxpdHlTdGF0
ZSwgZmFsc2UpOwotICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBqYXZhU2NyaXB0U3RyaW5n
KEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJkb2N1bWVudC52aXNpYmls
aXR5U3RhdGUiKSk7Ci0gICAgV0tQYWdlUnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKHdlYlZpZXct
PnBhZ2UoKSwgamF2YVNjcmlwdFN0cmluZy5nZXQoKSwgc3RhdGljX2Nhc3Q8dm9pZCo+KHdlYlZp
ZXcpLCBjYWxsYmFjayk7Ci19Ci0KLXN0YXRpYyB2b2lkIGFzc2VydFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUlzU3RyaW5nVmFsdWUoV0tTZXJpYWxpemVkU2NyaXB0VmFsdWVSZWYgc2VyaWFsaXplZFZh
bHVlLCBXS0Vycm9yUmVmIGVycm9yLCBjb25zdCBjaGFyICpleHBlY3RlZCkKLXsKLSAgICBFWFBF
Q1RfTlVMTChlcnJvcik7Ci0gICAgRVhQRUNUX05PVF9OVUxMKHNlcmlhbGl6ZWRWYWx1ZSk7Ci0g
ICAgaWYgKGVycm9yIHx8ICFzZXJpYWxpemVkVmFsdWUpCi0gICAgICAgIHJldHVybjsKLQotICAg
IEpTR2xvYmFsQ29udGV4dFJlZiBzY3JpcHRDb250ZXh0ID0gSlNHbG9iYWxDb250ZXh0Q3JlYXRl
KDApOwotICAgIEpTVmFsdWVSZWYgc2NyaXB0VmFsdWUgPSBXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1
ZURlc2VyaWFsaXplKHNlcmlhbGl6ZWRWYWx1ZSwgc2NyaXB0Q29udGV4dCwgMCk7Ci0gICAgRVhQ
RUNUX1RSVUUoSlNWYWx1ZUlzU3RyaW5nKHNjcmlwdENvbnRleHQsIHNjcmlwdFZhbHVlKSk7Ci0g
ICAgaWYgKCFKU1ZhbHVlSXNTdHJpbmcoc2NyaXB0Q29udGV4dCwgc2NyaXB0VmFsdWUpKSB7Ci0g
ICAgICAgIEpTR2xvYmFsQ29udGV4dFJlbGVhc2Uoc2NyaXB0Q29udGV4dCk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBKU1N0cmluZ1JlZiBleHBlY3RlZFN0cmluZyA9IEpTU3RyaW5n
Q3JlYXRlV2l0aFVURjhDU3RyaW5nKGV4cGVjdGVkKTsKLSAgICBKU1N0cmluZ1JlZiBzY3JpcHRT
dHJpbmcgPSBKU1ZhbHVlVG9TdHJpbmdDb3B5KHNjcmlwdENvbnRleHQsIHNjcmlwdFZhbHVlLCAw
KTsKLSAgICBFWFBFQ1RfVFJVRShKU1N0cmluZ0lzRXF1YWwoc2NyaXB0U3RyaW5nLCBleHBlY3Rl
ZFN0cmluZykpOwotCi0gICAgSlNTdHJpbmdSZWxlYXNlKHNjcmlwdFN0cmluZyk7Ci0gICAgSlNT
dHJpbmdSZWxlYXNlKGV4cGVjdGVkU3RyaW5nKTsKLSAgICBKU0dsb2JhbENvbnRleHRSZWxlYXNl
KHNjcmlwdENvbnRleHQpOwotfQotCi1zdGF0aWMgdm9pZCBkaWRSdW5TdGVwMVN0YXRlQ2hhbmdl
VmlzaWJsZVRvSGlkZGVuKFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlUmVmIHJlc3VsdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSwgV0tFcnJvclJlZiBlcnJvciwgdm9pZCogY29udGV4dCkKLXsKLSAgICBh
c3NlcnRTZXJpYWxpemVkU2NyaXB0VmFsdWVJc1N0cmluZ1ZhbHVlKHJlc3VsdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSwgZXJyb3IsICJ2aXNpYmxlIik7Ci0gICAgc2V0UGFnZVZpc2liaWxpdHlTdGF0
ZVdpdGhFdmFsQ29udGludWF0aW9uKHN0YXRpY19jYXN0PFBsYXRmb3JtV2ViVmlldyo+KGNvbnRl
eHQpLCBrV0tQYWdlVmlzaWJpbGl0eVN0YXRlSGlkZGVuLCBkaWRSdW5TdGVwMlN0YXRlQ2hhbmdl
SGlkZGVuVG9QcmVyZW5kZXIpOwotfQotCi1zdGF0aWMgdm9pZCBkaWRSdW5TdGVwMlN0YXRlQ2hh
bmdlSGlkZGVuVG9QcmVyZW5kZXIoV0tTZXJpYWxpemVkU2NyaXB0VmFsdWVSZWYgcmVzdWx0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlLCBXS0Vycm9yUmVmIGVycm9yLCB2b2lkKiBjb250ZXh0KQotewot
ICAgIGFzc2VydFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlzU3RyaW5nVmFsdWUocmVzdWx0U2VyaWFs
aXplZFNjcmlwdFZhbHVlLCBlcnJvciwgImhpZGRlbiIpOwotICAgIHNldFBhZ2VWaXNpYmlsaXR5
U3RhdGVXaXRoRXZhbENvbnRpbnVhdGlvbihzdGF0aWNfY2FzdDxQbGF0Zm9ybVdlYlZpZXcqPihj
b250ZXh0KSwga1dLUGFnZVZpc2liaWxpdHlTdGF0ZVByZXJlbmRlciwgZGlkUnVuU3RlcDNTdGF0
ZUNoYW5nZVByZXJlbmRlclRvVW5sb2FkZWQpOwotfQotCi1zdGF0aWMgdm9pZCBkaWRSdW5TdGVw
M1N0YXRlQ2hhbmdlUHJlcmVuZGVyVG9VbmxvYWRlZChXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZVJl
ZiByZXN1bHRTZXJpYWxpemVkU2NyaXB0VmFsdWUsIFdLRXJyb3JSZWYgZXJyb3IsIHZvaWQqIGNv
bnRleHQpCi17Ci0gICAgYXNzZXJ0U2VyaWFsaXplZFNjcmlwdFZhbHVlSXNTdHJpbmdWYWx1ZShy
ZXN1bHRTZXJpYWxpemVkU2NyaXB0VmFsdWUsIGVycm9yLCAicHJlcmVuZGVyIik7Ci0gICAgdGVz
dERvbmUgPSB0cnVlOwotfQotCi1URVNUKFdlYktpdDIsIFBhZ2VWaXNpYmlsaXR5U3RhdGUpCi17
Ci0gICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0KEFkb3B0V0ssIFdLQ29udGV4
dENyZWF0ZSgpKTsKLQotICAgIC8vIFBhc3MgdGhlIFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3IG9u
IGFzIHRoZSBjb250ZXh0IG9mIHRoZSBldmFscywgc28gd2UgY2FuIGNvbnRpbnVlIHRvIGV2YWwg
b24gaXQuCi0gICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXcoY29udGV4dC5nZXQoKSk7Ci0gICAg
c2V0UGFnZVZpc2liaWxpdHlTdGF0ZVdpdGhFdmFsQ29udGludWF0aW9uKCZ3ZWJWaWV3LCBrV0tQ
YWdlVmlzaWJpbGl0eVN0YXRlVmlzaWJsZSwgZGlkUnVuU3RlcDFTdGF0ZUNoYW5nZVZpc2libGVU
b0hpZGRlbik7Ci0KLSAgICBVdGlsOjpydW4oJnRlc3REb25lKTsKLX0KLQotfSAvLyBuYW1lc3Bh
Y2UgVGVzdFdlYktpdEFQSQpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvUGFn
ZVZpc2liaWxpdHlTdGF0ZVdpdGhXaW5kb3dDaGFuZ2VzLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1BhZ2VWaXNpYmlsaXR5U3RhdGVXaXRoV2luZG93Q2hh
bmdlcy5tbQkocmV2aXNpb24gMTYwOTc2KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9t
YWMvUGFnZVZpc2liaWxpdHlTdGF0ZVdpdGhXaW5kb3dDaGFuZ2VzLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0yNywxMSArMjcsMTIgQEAKICNpbXBvcnQgIkphdmFTY3JpcHRUZXN0LmgiCiAjaW1wb3J0
ICJUZXN0LmgiCiAjaW1wb3J0ICJXZWJLaXRBZ25vc3RpY1Rlc3QuaCIKLSNpbXBvcnQgPFdlYktp
dC9XZWJWaWV3Lmg+CisjaW1wb3J0IDxXZWJLaXQvV2ViVmlld1ByaXZhdGUuaD4KICNpbXBvcnQg
PFdlYktpdDIvV0tWaWV3UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCi1z
dGF0aWMgYm9vbCBkaWRHZXRQYWdlU2lnbmFsVG9Db250aW51ZTsKK3N0YXRpYyBib29sIGlzV2Fp
dGluZ0ZvclBhZ2VTaWduYWxUb0NvbnRpbnVlID0gZmFsc2U7CitzdGF0aWMgYm9vbCBkaWRHZXRQ
YWdlU2lnbmFsVG9Db250aW51ZSA9IGZhbHNlOwogCiAvLyBXZWJLaXQxIFdlYlVJRGVsZWdhdGUK
IApAQCAtNDIsNiArNDMsOCBAQCBAaW50ZXJmYWNlIFBhZ2VWaXNpYmlsaXR5U3RhdGVEZWxlZ2F0
ZSA6CiAKIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBydW5KYXZhU2NyaXB0QWxl
cnRQYW5lbFdpdGhNZXNzYWdlOihOU1N0cmluZyAqKW1lc3NhZ2UgaW5pdGlhdGVkQnlGcmFtZToo
V2ViRnJhbWUgKilmcmFtZQogeworICAgIEVYUEVDVF9UUlVFKGlzV2FpdGluZ0ZvclBhZ2VTaWdu
YWxUb0NvbnRpbnVlKTsKKyAgICBpc1dhaXRpbmdGb3JQYWdlU2lnbmFsVG9Db250aW51ZSA9IGZh
bHNlOwogICAgIGRpZEdldFBhZ2VTaWduYWxUb0NvbnRpbnVlID0gdHJ1ZTsKIH0KIApAQCAtNTEs
NiArNTQsOCBAQCAtICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgcnVuSmF2CiAKIHN0
YXRpYyB2b2lkIHJ1bkphdmFTY3JpcHRBbGVydChXS1BhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYg
YWxlcnRUZXh0LCBXS0ZyYW1lUmVmIGZyYW1lLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogewor
ICAgIEVYUEVDVF9UUlVFKGlzV2FpdGluZ0ZvclBhZ2VTaWduYWxUb0NvbnRpbnVlKTsKKyAgICBp
c1dhaXRpbmdGb3JQYWdlU2lnbmFsVG9Db250aW51ZSA9IGZhbHNlOwogICAgIGRpZEdldFBhZ2VT
aWduYWxUb0NvbnRpbnVlID0gdHJ1ZTsKIH0KIApAQCAtNzIsNiArNzcsOCBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemVWaWV3KFdLVmlldyAqKSBPVkVSUklERTsKICAgICB2
aXJ0dWFsIHZvaWQgdGVhcmRvd25WaWV3KFdlYlZpZXcgKikgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCB2b2lkIHRlYXJkb3duVmlldyhXS1ZpZXcgKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lk
IHNldFByZXJlbmRlcihXZWJWaWV3ICopOworICAgIHZpcnR1YWwgdm9pZCBzZXRQcmVyZW5kZXIo
V0tWaWV3ICopOwogfTsKIAogdm9pZCBQYWdlVmlzaWJpbGl0eVN0YXRlV2l0aFdpbmRvd0NoYW5n
ZXM6OmluaXRpYWxpemVWaWV3KFdlYlZpZXcgKndlYlZpZXcpCkBAIC04Nyw2ICs5NCwxMSBAQCB2
b2lkIFBhZ2VWaXNpYmlsaXR5U3RhdGVXaXRoV2luZG93Q2hhbmdlCiAgICAgW3VpRGVsZWdhdGUg
cmVsZWFzZV07CiB9CiAKK3ZvaWQgUGFnZVZpc2liaWxpdHlTdGF0ZVdpdGhXaW5kb3dDaGFuZ2Vz
OjpzZXRQcmVyZW5kZXIoV2ViVmlldyAqd2ViVmlldykKK3sKKyAgICBbd2ViVmlldyBfc2V0Vmlz
aWJpbGl0eVN0YXRlOldlYlBhZ2VWaXNpYmlsaXR5U3RhdGVQcmVyZW5kZXIgaXNJbml0aWFsU3Rh
dGU6WUVTXTsKK30KKwogdm9pZCBQYWdlVmlzaWJpbGl0eVN0YXRlV2l0aFdpbmRvd0NoYW5nZXM6
OmluaXRpYWxpemVWaWV3KFdLVmlldyAqd2tWaWV3KQogewogICAgIFdLUGFnZVVJQ2xpZW50VjAg
dWlDbGllbnQ7CkBAIC0xMDMsNiArMTE1LDEyIEBAIHZvaWQgUGFnZVZpc2liaWxpdHlTdGF0ZVdp
dGhXaW5kb3dDaGFuZ2UKICAgICAvLyBXZSBkbyBub3QgbmVlZCB0byB0ZWFyZG93biB0aGUgV0tQ
YWdlVUlDbGllbnQuCiB9CiAKK3ZvaWQgUGFnZVZpc2liaWxpdHlTdGF0ZVdpdGhXaW5kb3dDaGFu
Z2VzOjpzZXRQcmVyZW5kZXIoV0tWaWV3ICp3a1ZpZXcpCit7CisgICAgV0tQYWdlU2V0VmlzaWJp
bGl0eVN0YXRlKHdrVmlldy5wYWdlUmVmLCBrV0tQYWdlVmlzaWJpbGl0eVN0YXRlUHJlcmVuZGVy
LCB0cnVlKTsKK30KKworCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVmlldz4KIHZvaWQgUGFnZVZpc2li
aWxpdHlTdGF0ZVdpdGhXaW5kb3dDaGFuZ2VzOjpydW5UZXN0KFZpZXcgdmlldykKIHsKQEAgLTEx
MCwzNSArMTI4LDQ5IEBAIHZvaWQgUGFnZVZpc2liaWxpdHlTdGF0ZVdpdGhXaW5kb3dDaGFuZ2UK
ICAgICBFWFBFQ1RfTlVMTChbdmlldyB3aW5kb3ddKTsKICAgICBFWFBFQ1RfTlVMTChbdmlldyBz
dXBlcnZpZXddKTsKICAgICBFWFBFQ1RfSlNfRVEodmlldywgImRvY3VtZW50LnZpc2liaWxpdHlT
dGF0ZSIsICJoaWRkZW4iKTsKKyAgICBFWFBFQ1RfSlNfRVEodmlldywgImRvY3VtZW50LmhpZGRl
biIsICJ0cnVlIik7CisKKyAgICAvLyBNYXJrIHRoZSBwYWdlIGFzIGJlaW5nIGEgInByZXJlbmRl
ciIuCisgICAgc2V0UHJlcmVuZGVyKHZpZXcpOworICAgIEVYUEVDVF9KU19FUSh2aWV3LCAiZG9j
dW1lbnQudmlzaWJpbGl0eVN0YXRlIiwgInByZXJlbmRlciIpOworICAgIEVYUEVDVF9KU19FUSh2
aWV3LCAiZG9jdW1lbnQuaGlkZGVuIiwgInRydWUiKTsKIAotICAgIC8vIEFkZCBpdCB0byBhIG5v
bi12aXNpYmxlIHdpbmRvdy4gUGFnZVZpc2liaWxpdHkgc2hvdWxkIHN0aWxsIGJlICJoaWRkZW4i
LgorICAgIC8vIEFkZCBpdCB0byBhIG5vbi12aXNpYmxlIHdpbmRvdy4gUGFnZVZpc2liaWxpdHkg
c2hvdWxkIHN0aWxsIGJlICJwcmVyZW5kZXIiLgogICAgIFJldGFpblB0cjxOU1dpbmRvdz4gd2lu
ZG93ID0gYWRvcHROUyhbW05TV2luZG93IGFsbG9jXSBpbml0V2l0aENvbnRlbnRSZWN0OnZpZXcu
ZnJhbWUgc3R5bGVNYXNrOk5TQm9yZGVybGVzc1dpbmRvd01hc2sgYmFja2luZzpOU0JhY2tpbmdT
dG9yZUJ1ZmZlcmVkIGRlZmVyOk5PXSk7CiAgICAgW3dpbmRvdy5nZXQoKS5jb250ZW50VmlldyBh
ZGRTdWJ2aWV3OnZpZXddOwogICAgIEVYUEVDVF9OT1RfTlVMTChbdmlldyB3aW5kb3ddKTsKICAg
ICBFWFBFQ1RfTk9UX05VTEwoW3ZpZXcgc3VwZXJ2aWV3XSk7CiAgICAgRVhQRUNUX0ZBTFNFKFt3
aW5kb3cuZ2V0KCkgaXNWaXNpYmxlXSk7Ci0gICAgRVhQRUNUX0pTX0VRKHZpZXcsICJkb2N1bWVu
dC52aXNpYmlsaXR5U3RhdGUiLCAiaGlkZGVuIik7CisgICAgRVhQRUNUX0pTX0VRKHZpZXcsICJk
b2N1bWVudC52aXNpYmlsaXR5U3RhdGUiLCAicHJlcmVuZGVyIik7CisgICAgRVhQRUNUX0pTX0VR
KHZpZXcsICJkb2N1bWVudC5oaWRkZW4iLCAidHJ1ZSIpOwogCiAgICAgLy8gTWFrZSB0aGUgd2lu
ZG93IHZpc2libGUuIFBhZ2VWaXNpYmlsaXR5IHNob3VsZCBiZWNvbWUgInZpc2libGUiLgotICAg
IGRpZEdldFBhZ2VTaWduYWxUb0NvbnRpbnVlID0gZmFsc2U7ICAgIAorICAgIGlzV2FpdGluZ0Zv
clBhZ2VTaWduYWxUb0NvbnRpbnVlID0gdHJ1ZTsKKyAgICBkaWRHZXRQYWdlU2lnbmFsVG9Db250
aW51ZSA9IGZhbHNlOwogICAgIFt3aW5kb3cuZ2V0KCkgbWFrZUtleUFuZE9yZGVyRnJvbnQ6bmls
XTsKICAgICBFWFBFQ1RfVFJVRShbd2luZG93LmdldCgpIGlzVmlzaWJsZV0pOwogICAgIFV0aWw6
OnJ1bigmZGlkR2V0UGFnZVNpZ25hbFRvQ29udGludWUpOwogICAgIEVYUEVDVF9KU19FUSh2aWV3
LCAiZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlIiwgInZpc2libGUiKTsKKyAgICBFWFBFQ1RfSlNf
RVEodmlldywgImRvY3VtZW50LmhpZGRlbiIsICJmYWxzZSIpOwogCiAgICAgLy8gTWluaW1pemUg
dGhlIHdpbmRvdy4gUGFnZVZpc2liaWxpdHkgc2hvdWxkIGJlY29tZSAiaGlkZGVuIi4KKyAgICBp
c1dhaXRpbmdGb3JQYWdlU2lnbmFsVG9Db250aW51ZSA9IHRydWU7CiAgICAgZGlkR2V0UGFnZVNp
Z25hbFRvQ29udGludWUgPSBmYWxzZTsKICAgICBbd2luZG93LmdldCgpIG1pbmlhdHVyaXplOm5p
bF07CiAgICAgVXRpbDo6cnVuKCZkaWRHZXRQYWdlU2lnbmFsVG9Db250aW51ZSk7CiAgICAgRVhQ
RUNUX0pTX0VRKHZpZXcsICJkb2N1bWVudC52aXNpYmlsaXR5U3RhdGUiLCAiaGlkZGVuIik7Cisg
ICAgRVhQRUNUX0pTX0VRKHZpZXcsICJkb2N1bWVudC5oaWRkZW4iLCAidHJ1ZSIpOwogCiAgICAg
Ly8gRGVtaW5pbWl6ZSB0aGUgd2luZG93LiBQYWdlVmlzaWJpbGl0eSBzaG91bGQgYmVjb21lICJ2
aXNpYmxlIi4KKyAgICBpc1dhaXRpbmdGb3JQYWdlU2lnbmFsVG9Db250aW51ZSA9IHRydWU7CiAg
ICAgZGlkR2V0UGFnZVNpZ25hbFRvQ29udGludWUgPSBmYWxzZTsKICAgICBbd2luZG93LmdldCgp
IGRlbWluaWF0dXJpemU6bmlsXTsKICAgICBVdGlsOjpydW4oJmRpZEdldFBhZ2VTaWduYWxUb0Nv
bnRpbnVlKTsKICAgICBFWFBFQ1RfSlNfRVEodmlldywgImRvY3VtZW50LnZpc2liaWxpdHlTdGF0
ZSIsICJ2aXNpYmxlIik7CisgICAgRVhQRUNUX0pTX0VRKHZpZXcsICJkb2N1bWVudC5oaWRkZW4i
LCAiZmFsc2UiKTsKIAogICAgIC8vIFJlbW92ZSB0aGUgV2ViVmlldyBmcm9tIGl0cyBzdXBlcnZp
ZXcuIFBhZ2VWaXNpYmlsaXR5IHNob3VsZCBiZWNvbWUgImhpZGRlbiIuCisgICAgaXNXYWl0aW5n
Rm9yUGFnZVNpZ25hbFRvQ29udGludWUgPSB0cnVlOwogICAgIGRpZEdldFBhZ2VTaWduYWxUb0Nv
bnRpbnVlID0gZmFsc2U7CiAgICAgW3ZpZXcgcmVtb3ZlRnJvbVN1cGVydmlld107CiAgICAgRVhQ
RUNUX05VTEwoW3ZpZXcgd2luZG93XSk7CkBAIC0xNDYsNiArMTc4LDcgQEAgdm9pZCBQYWdlVmlz
aWJpbGl0eVN0YXRlV2l0aFdpbmRvd0NoYW5nZQogICAgIEVYUEVDVF9UUlVFKFt3aW5kb3cuZ2V0
KCkgaXNWaXNpYmxlXSk7CiAgICAgVXRpbDo6cnVuKCZkaWRHZXRQYWdlU2lnbmFsVG9Db250aW51
ZSk7CiAgICAgRVhQRUNUX0pTX0VRKHZpZXcsICJkb2N1bWVudC52aXNpYmlsaXR5U3RhdGUiLCAi
aGlkZGVuIik7CisgICAgRVhQRUNUX0pTX0VRKHZpZXcsICJkb2N1bWVudC5oaWRkZW4iLCAidHJ1
ZSIpOwogfQogICAgIAogVEVTVF9GKFBhZ2VWaXNpYmlsaXR5U3RhdGVXaXRoV2luZG93Q2hhbmdl
cywgV2ViS2l0KQpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5j
cHAJKHJldmlzaW9uIDE2MDk3NikKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRy
b2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTY3LDYgKzExNjcsNyBAQCB2b2lkIFRlc3RD
b250cm9sbGVyOjpzZXRDdXN0b21Qb2xpY3lEZWxlCiAKIHZvaWQgVGVzdENvbnRyb2xsZXI6OnNl
dFZpc2liaWxpdHlTdGF0ZShXS1BhZ2VWaXNpYmlsaXR5U3RhdGUgdmlzaWJpbGl0eVN0YXRlLCBi
b29sIGlzSW5pdGlhbFN0YXRlKQogeworICAgIHNldEhpZGRlbih2aXNpYmlsaXR5U3RhdGUgIT0g
a1dLUGFnZVZpc2liaWxpdHlTdGF0ZVZpc2libGUpOwogICAgIFdLUGFnZVNldFZpc2liaWxpdHlT
dGF0ZShtX21haW5XZWJWaWV3LT5wYWdlKCksIHZpc2liaWxpdHlTdGF0ZSwgaXNJbml0aWFsU3Rh
dGUpOwogfQogCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCShy
ZXZpc2lvbiAxNjA5NzYpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE2NCw2ICsxNjQsOCBAQCBwcml2YXRlOgogICAgIHN0YXRp
YyB2b2lkIHJ1bk1vZGFsKFdLUGFnZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiAgICAg
c3RhdGljIHZvaWQgcnVuTW9kYWwoUGxhdGZvcm1XZWJWaWV3Kik7CiAKKyAgICB2b2lkIHNldEhp
ZGRlbihib29sIGhpZGRlbik7CisKICAgICBzdGF0aWMgY29uc3QgY2hhciogbGlicmFyeVBhdGhG
b3JUZXN0aW5nKCk7CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHBsYXRmb3JtTGlicmFyeVBhdGhG
b3JUZXN0aW5nKCk7CiAKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvZWZsL1Rlc3RDb250
cm9sbGVyRWZsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL2VmbC9U
ZXN0Q29udHJvbGxlckVmbC5jcHAJKHJldmlzaW9uIDE2MDk3NikKKysrIFRvb2xzL1dlYktpdFRl
c3RSdW5uZXIvZWZsL1Rlc3RDb250cm9sbGVyRWZsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAx
LDYgKzEwMSwxMSBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUluaXRpYWxpemVDCiB7
CiB9CiAKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnNldEhpZGRlbihib29sKQoreworICAgIC8vIEZJ
WE1FOiBOZWVkIHRvIGltcGxlbWVudCB0aGlzIHRvIHRlc3QgdmlzaWJpbGl0eVN0YXRlLgorfQor
CiB2b2lkIFRlc3RDb250cm9sbGVyOjpydW5Nb2RhbChQbGF0Zm9ybVdlYlZpZXcqKQogewogICAg
IC8vIEZJWE1FOiBOZWVkIHRvIGltcGxlbWVudCB0aGlzIHRvIHRlc3Qgc2hvd01vZGFsRGlhbG9n
LgpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvVGVzdENvbnRyb2xsZXJHdGsuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL1Rlc3RDb250cm9sbGVy
R3RrLmNwcAkocmV2aXNpb24gMTYwOTc2KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsv
VGVzdENvbnRyb2xsZXJHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIsNiArMTAyLDExIEBA
IHZvaWQgVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtSW5pdGlhbGl6ZUMKIHsKIH0KIAordm9pZCBU
ZXN0Q29udHJvbGxlcjo6c2V0SGlkZGVuKGJvb2wpCit7CisgICAgLy8gRklYTUU6IE5lZWQgdG8g
aW1wbGVtZW50IHRoaXMgdG8gdGVzdCB2aXNpYmlsaXR5U3RhdGUuCit9CisKIHZvaWQgVGVzdENv
bnRyb2xsZXI6OnJ1bk1vZGFsKFBsYXRmb3JtV2ViVmlldyopCiB7CiAgICAgLy8gRklYTUU6IE5l
ZWQgdG8gaW1wbGVtZW50IHRoaXMgdG8gdGVzdCBzaG93TW9kYWxEaWFsb2cuCkluZGV4OiBUb29s
cy9XZWJLaXRUZXN0UnVubmVyL21hYy9UZXN0Q29udHJvbGxlck1hYy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9UZXN0Q29udHJvbGxlck1hYy5tbQkocmV2aXNp
b24gMTYwOTc2KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvVGVzdENvbnRyb2xsZXJN
YWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTc4LDYgKzc4LDIwIEBAIHZvaWQgVGVzdENvbnRyb2xs
ZXI6OnBsYXRmb3JtSW5pdGlhbGl6ZUMKIHsKIH0KIAordm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0
SGlkZGVuKGJvb2wgaGlkZGVuKQoreworICAgIE5TV2luZG93ICp3aW5kb3cgPSBbbWFpbldlYlZp
ZXcoKS0+cGxhdGZvcm1WaWV3KCkgd2luZG93XTsKKyAgICBpZiAoIXdpbmRvdykKKyAgICAgICAg
cmV0dXJuOworCisgICAgaWYgKGhpZGRlbikKKyAgICAgICAgW3dpbmRvdyBvcmRlck91dDpuaWxd
OworICAgIGVsc2UgeworICAgICAgICBbd2luZG93IG1ha2VLZXlBbmRPcmRlckZyb250Om5pbF07
CisgICAgICAgIFtOU0FwcCBhY3RpdmF0ZUlnbm9yaW5nT3RoZXJBcHBzOllFU107CisgICAgfQor
fQorCiB2b2lkIFRlc3RDb250cm9sbGVyOjpydW5Nb2RhbChQbGF0Zm9ybVdlYlZpZXcqIHZpZXcp
CiB7CiAgICAgTlNXaW5kb3cgKndpbmRvdyA9IFt2aWV3LT5wbGF0Zm9ybVZpZXcoKSB3aW5kb3dd
OwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L0NoYW5nZUxvZwkocmV2aXNpb24gMTYxMDU3KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTMtMTItMjQgIEdhdmluIEJhcnJhY2xv
dWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgorCisgICAgICAgIE1lcmdlIFBhZ2VWaXNpYmls
aXR5U3RhdGUgJiBWaWV3U3RhdGU6OklzVmlzaWJsZSBpbiBXZWJLaXQyCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjYyMTQKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWJLaXQyIHJlZHVuZGFudGx5IHRy
YWNrcyB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgdmlldyB0aHJvdWdoIHR3byBtZWNoYW5pc21zIC0g
dGhlIHZpc2liaWxpdHkKKyAgICAgICAgc3RhdGUsIGFuZCB0aGUgdmlldyBzdGF0ZS4gUmVtb3Zl
IHZpc2liaWxpdHkgc3RhdGUgZnJvbSB0aGUgV2ViS2l0MiBsYXllci4gVGhlIHZpc2liaWxpdHkK
KyAgICAgICAgc3RhdGUgYWxzbyB0cmFja3MgdGhlICdwcmV0ZW5kZXInIHN0YXRlIC0gc28gc3Bs
aXQgdGhpcyBvdXQgYW5kIGhhbmRsZSBpdCBzZXBhcmF0ZWx5IChhIGNoYW5nZQorICAgICAgICB3
ZSBzaG91bGQgbWFrZSBpbiBXZWJDb3JlLCB0b28pLgorCisgICAgICAgIFJlbW92aW5nIHRoZSBy
ZWR1bmRhbmN5IGFsc28gcmVtb3ZlcyB0aGUgYWJpbGl0eSBmcm9tIHRoZSBBUEkgdG8gc2V0IGEg
ZmFrZSB2aXNpYmlsaXR5IHN0YXRlCisgICAgICAgIChJc1Zpc2libGUgdHJhY2tzIHRoZSBhY3R1
YWwgdmlzaWJpbGl0eSBvZiB0aGUgdmlldykuIFRocm91Z2ggcHJpdmF0ZSBBUEkKKyAgICAgICAg
KFdLUGFnZVNldFZpc2liaWxpdHlTdGF0ZSkgYSBjbGllbnQgY291bGQgcHJldmlvdXNseSByZXF1
ZXN0IHRoZSB2aWV3IGJlIHJlcG9ydGVkIGFzIGhpZGRlbiBvcgorICAgICAgICB2aXNpYmxlLCBi
dXQgdGhpcyBkaWRuJ3QgcmVhbGx5IHdvcmsgLSB0aGUgb3ZlcnJpZGUgd2FzIG5vdCBlbmZvcmNl
ZCBhbmQgdGhlIEFQSSBtYXkgcmVzZXQgdGhlCisgICAgICAgIHN0YXRlIGF0IGFuIGFyYml0cmFy
eSBwb2ludC4gVGhlIG1lY2hhbmlzbSBpcyBvbmx5IHVzZWQgYnkgdGVzdGluZyBjb2RlLCB3aGlj
aCBpbnN0ZWFkIHNob3VsZAorICAgICAgICBhY3R1YWxseSB1cGRhdGUgdGhlIHZpZXcgdmlzaWJp
bGl0eSAodGhpcyB0ZXN0cyBtb3JlIG9mIHRoZSBhY3R1YWwgdmlzaWJpbGl0eSBtZWNoYW5pc21z
IHVzZWQKKyAgICAgICAgYnkgdGhlIGJyb3dzZXIpLiBUaGUgb25lIGFzcGVjdCBvZiB0aGUgQVBJ
IHJlbGllZCBvbiBieSBleGlzdGluZyBjbGllbnRzIGlzIHRoZSBhYmlsaXR5IHRvCisgICAgICAg
IGluaXRpYWxpemUgYSBoaWRkZW4gdmlldyBhcyBwcmVyZW5kZXIgLWNvbnRpbnVlIHRvIHN1cHBv
cnQgdGhpcyBzcGVjaWZpYyBmdW5jdGlvbmFsaXR5IHZpYQorICAgICAgICBXS1BhZ2VTZXRWaXNp
YmlsaXR5U3RhdGUsIHRvIG1haW50YWluIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LgorCisKKyAg
ICAgICAgTGF5b3V0VGVzdHMgLSByZW1vdmUgdGVzdCBmb3Igbm90aWZpY2F0aW9uIG9uIHZpc2li
aWxpdHkgc3RhdGUgY2hhbmdlIHRvIHByZWVyZW5kZXIuIFRoaXMgdGVzdAorICAgICAgICB3YXMg
Y292ZXJpbmcgc29tZXRoaW5nIG5vbnNlbnNpY2FsLCBhbmQgbm90IHN1cHBvcnRlZCBieSB0aGUg
c3BlYyAtIHRoZSBwYWdlIHNob3VsZCBuZXZlciBzZWUKKyAgICAgICAgYSB2aXNpYmlsaXR5IGNo
YW5nZSB0byBwcmVyZW5kZXIsIHRoaXMgc2hvdWxkIG9ubHkgYmUgYW4gaW5pdGlhbCBzdGF0ZS4g
V2ViS2l0MiBBUEkgbm93IG9ubHkKKyAgICAgICAgYWxsb3dzIHRoZSBjbGllbnQgdG8gY2hhbmdl
IHRoZSBzdGF0ZSB0byBwcmVyZW5kZXIgd2l0aG91dCBzZW5kaW5nIGEgbm90aWZpY2F0aW9uLCBh
bmQgdGhlcmUKKyAgICAgICAgaXMgbm8gc2Vuc2UgaW4gY29udGludWluZyB0byBzdXBwb3J0IHRo
ZSBjdXJyZW50IHRlc3QgY2FzZSwgc2luY2UgdGhlIGJlaGF2aW91ciBpcyBuZWl0aGVyCisgICAg
ICAgIGFsbG93ZWQgYnkgQVBJIG5vciBhdmFpbGFibGUgaW4gd2ViIGNvbnRlbnQuCisKKyAgICAg
ICAgVGhlIHByZXJlbmRlciBzdGF0ZSBpcyBub3cgcHJvcGVybHkgY292ZXJlZCBieSBBUEkgdGVz
dHMuCisKKyAgICAgICAgKiBmYXN0L2V2ZW50cy9wYWdlLXZpc2liaWxpdHktdHJhbnNpdGlvbi10
ZXN0LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2V2ZW50cy9wYWdlLXZpc2liaWxpdHkt
dHJhbnNpdGlvbi10ZXN0Lmh0bWw6CisgICAgICAgICAgICAtIHJlbW92ZSB0ZXN0IGZvciBub3Rp
ZmljYXRpb24gb24gdmlzaWJpbGl0eSBzdGF0ZSBjaGFuZ2UgdG8gcHJlZXJlbmRlci4KKwogMjAx
My0xMi0yNCAgUmFkdSBTdGF2aWxhICA8c3RhdmlsYUBhZG9iZS5jb20+CiAKICAgICAgICAgUmVu
YW1lIGZhc3QvcmVnaW9ucy9yZXBhaW50L2luY3JlYXNpbmctcmVnaW9uLWNvbnRlbnQtaGVpZ2h0
Lmh0bWwgdG8gc29tZXRoaW5nIG1vcmUgY2xlYXIKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZl
bnRzL3BhZ2UtdmlzaWJpbGl0eS10cmFuc2l0aW9uLXRlc3QtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3BhZ2UtdmlzaWJpbGl0eS10cmFuc2l0aW9u
LXRlc3QtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNjA5ODApCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy9wYWdlLXZpc2liaWxpdHktdHJhbnNpdGlvbi10ZXN0LWV4cGVjdGVkLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtOSw4ICs5LDYgQEAgUEFTUyBkb2N1bWVudC52aXNpYmlsaXR5U3RhdGUg
aXMgImhpZGRlbgogUEFTUyBkb2N1bWVudC5oaWRkZW4gaXMgdHJ1ZQogUEFTUyBkb2N1bWVudC52
aXNpYmlsaXR5U3RhdGUgaXMgImhpZGRlbiIKIFBBU1MgZG9jdW1lbnQuaGlkZGVuIGlzIHRydWUK
LVBBU1MgZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlIGlzICJwcmVyZW5kZXIiCi1QQVNTIGRvY3Vt
ZW50LmhpZGRlbiBpcyB0cnVlCiBQQVNTIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSBpcyAidmlz
aWJsZSIKIFBBU1MgZG9jdW1lbnQuaGlkZGVuIGlzIGZhbHNlCiBQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9wYWdlLXZpc2liaWxp
dHktdHJhbnNpdGlvbi10ZXN0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMvcGFnZS12aXNpYmlsaXR5LXRyYW5zaXRpb24tdGVzdC5odG1sCShyZXZpc2lvbiAxNjA5
ODApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9wYWdlLXZpc2liaWxpdHktdHJhbnNpdGlv
bi10ZXN0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTM5LDI0ICszOSwxMSBAQCBmdW5jdGlvbiBj
aGVja0lzUGFnZUhpZGRlbigpIHsKICAgICBzaG91bGRCZVRydWUoImRvY3VtZW50LmhpZGRlbiIp
OwogfQogCi1mdW5jdGlvbiBjaGVja0lzUGFnZVByZXJlbmRlcmluZygpIHsKLSAgICBzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoImRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSIsICJwcmVyZW5kZXIiKTsK
LSAgICBzaG91bGRCZVRydWUoImRvY3VtZW50LmhpZGRlbiIpOwotfQotCi1mdW5jdGlvbiBjaGVj
a0lzUGFnZUluVW5sb2FkZWQoKSB7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkb2N1bWVu
dC52aXNpYmlsaXR5U3RhdGUiLCAidW5sb2FkZWQiKTsKLSAgICBzaG91bGRCZVRydWUoImRvY3Vt
ZW50LmhpZGRlbiIpOwotfQotCiAvLyBXZSB3aWxsIHRyeSB0byBjaGFuZ2UgdGhlIHZpc2liaWxp
dHkgc3RhdGVzIGFzOgogLy8gIDAgLSB2aXNpYmxlLiAoSW5pdGlhbCAtIGkuZS4gb24gbG9hZCku
CiAvLyAgMSAtIGhpZGRlbiAoc2hvdWxkIGZpcmUgZXZlbnQpLgogLy8gIDIgLSBoaWRkZW4gKG5v
IGV2ZW50KS4KLS8vICAzIC0gcHJlcmVuZGVyIChzaG91bGQgZmlyZSBldmVudCkuCi0vLyAgNCAt
IHZpc2libGUgKHNob3VsZCBmaXJlIGV2ZW50KS4KLS8vICA1IC0gdW5sb2FkZWQgKHNob3VsZCBm
aXJlIGV2ZW50KS4KLS8vICA2IC0gdmlzaWJsZSAoc2hvdWxkIGZpcmUgZXZlbnQpLgorLy8gIDMg
LSB2aXNpYmxlIChzaG91bGQgZmlyZSBldmVudCkuCiB2YXIgbnVtVmlzaWJpbGl0eUNoYW5nZXMg
PSAwOwogCiBmdW5jdGlvbiBzdGFydFRlc3QoKSB7CkBAIC04MSwxOCArNjgsMTMgQEAgZnVuY3Rp
b24gb25WaXNpYmlsaXR5Q2hhbmdlKCkgewogICAgICAgICBtYWtlUGFnZUhpZGRlbigpOwogICAg
ICAgICBjaGVja0lzUGFnZUhpZGRlbigpOwogICAgICAgICBudW1WaXNpYmlsaXR5Q2hhbmdlcysr
OwotICAgICAgICBtYWtlUGFnZVByZXJlbmRlcigpOworICAgICAgICBtYWtlUGFnZVZpc2libGUo
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0gZWxzZSBpZiAobnVtVmlzaWJpbGl0eUNoYW5nZXMg
PT0gMikgewogICAgICAgICB0ZXN0RmFpbGVkKCJJbnZhbGlkIGV2ZW50IGZpcmVkIG9uIHNhbWUg
c3RhdGUgY2hhbmdlLiIpOwogICAgICAgICBmaW5pc2hUZXN0KCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9IGVsc2UgaWYgKG51bVZpc2liaWxpdHlDaGFuZ2VzID09IDMpIHsKLSAgICAgICAgY2hl
Y2tJc1BhZ2VQcmVyZW5kZXJpbmcoKTsKLSAgICAgICAgbnVtVmlzaWJpbGl0eUNoYW5nZXMrKzsK
LSAgICAgICAgbWFrZVBhZ2VWaXNpYmxlKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9IGVsc2Ug
aWYgKG51bVZpc2liaWxpdHlDaGFuZ2VzID09IDQpIHsKICAgICAgICAgY2hlY2tJc1BhZ2VWaXNp
YmxlKCk7CiAgICAgICAgIG51bVZpc2liaWxpdHlDaGFuZ2VzKys7CiAgICAgICAgIGZpbmlzaFRl
c3QoKTsK
</data>
<flag name="commit-queue"
          id="243670"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>220002</attachid>
            <date>2013-12-25 14:30:26 -0800</date>
            <delta_ts>2013-12-25 15:43:19 -0800</delta_ts>
            <desc>style, efl fixes</desc>
            <filename>126214.2.patch</filename>
            <type>text/plain</type>
            <size>43231</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2MTA1NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDEzLTEyLTI0ICBHYXZpbiBC
YXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KKworICAgICAgICBNZXJnZSBQYWdl
VmlzaWJpbGl0eVN0YXRlICYgVmlld1N0YXRlOjpJc1Zpc2libGUgaW4gV2ViS2l0MgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI2MjE0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViS2l0MiByZWR1bmRh
bnRseSB0cmFja3MgdGhlIHZpc2liaWxpdHkgb2YgdGhlIHZpZXcgdGhyb3VnaCB0d28gbWVjaGFu
aXNtcyAtIHRoZSB2aXNpYmlsaXR5CisgICAgICAgIHN0YXRlLCBhbmQgdGhlIHZpZXcgc3RhdGUu
IFJlbW92ZSB2aXNpYmlsaXR5IHN0YXRlIGZyb20gdGhlIFdlYktpdDIgbGF5ZXIuIFRoZSB2aXNp
YmlsaXR5CisgICAgICAgIHN0YXRlIGFsc28gdHJhY2tzIHRoZSAncHJldGVuZGVyJyBzdGF0ZSAt
IHNvIHNwbGl0IHRoaXMgb3V0IGFuZCBoYW5kbGUgaXQgc2VwYXJhdGVseSAoYSBjaGFuZ2UKKyAg
ICAgICAgd2Ugc2hvdWxkIG1ha2UgaW4gV2ViQ29yZSwgdG9vKS4KKworICAgICAgICBSZW1vdmlu
ZyB0aGUgcmVkdW5kYW5jeSBhbHNvIHJlbW92ZXMgdGhlIGFiaWxpdHkgZnJvbSB0aGUgQVBJIHRv
IHNldCBhIGZha2UgdmlzaWJpbGl0eSBzdGF0ZQorICAgICAgICAoSXNWaXNpYmxlIHRyYWNrcyB0
aGUgYWN0dWFsIHZpc2liaWxpdHkgb2YgdGhlIHZpZXcpLiBUaHJvdWdoIHByaXZhdGUgQVBJCisg
ICAgICAgIChXS1BhZ2VTZXRWaXNpYmlsaXR5U3RhdGUpIGEgY2xpZW50IGNvdWxkIHByZXZpb3Vz
bHkgcmVxdWVzdCB0aGUgdmlldyBiZSByZXBvcnRlZCBhcyBoaWRkZW4gb3IKKyAgICAgICAgdmlz
aWJsZSwgYnV0IHRoaXMgZGlkbid0IHJlYWxseSB3b3JrIC0gdGhlIG92ZXJyaWRlIHdhcyBub3Qg
ZW5mb3JjZWQgYW5kIHRoZSBBUEkgbWF5IHJlc2V0IHRoZQorICAgICAgICBzdGF0ZSBhdCBhbiBh
cmJpdHJhcnkgcG9pbnQuIFRoZSBtZWNoYW5pc20gaXMgb25seSB1c2VkIGJ5IHRlc3RpbmcgY29k
ZSwgd2hpY2ggaW5zdGVhZCBzaG91bGQKKyAgICAgICAgYWN0dWFsbHkgdXBkYXRlIHRoZSB2aWV3
IHZpc2liaWxpdHkgKHRoaXMgdGVzdHMgbW9yZSBvZiB0aGUgYWN0dWFsIHZpc2liaWxpdHkgbWVj
aGFuaXNtcyB1c2VkCisgICAgICAgIGJ5IHRoZSBicm93c2VyKS4gVGhlIG9uZSBhc3BlY3Qgb2Yg
dGhlIEFQSSByZWxpZWQgb24gYnkgZXhpc3RpbmcgY2xpZW50cyBpcyB0aGUgYWJpbGl0eSB0bwor
ICAgICAgICBpbml0aWFsaXplIGEgaGlkZGVuIHZpZXcgYXMgcHJlcmVuZGVyIC1jb250aW51ZSB0
byBzdXBwb3J0IHRoaXMgc3BlY2lmaWMgZnVuY3Rpb25hbGl0eSB2aWEKKyAgICAgICAgV0tQYWdl
U2V0VmlzaWJpbGl0eVN0YXRlLCB0byBtYWludGFpbiBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS4K
KworCisgICAgICAgIFdlYkNvcmUgLSBjaG5hZ2VzIHRoZSB0aGUgQVBJIHRlc3RzIGV4cG9zZWQg
YSBidWcsIGEgdmlldyBzaG91bGQgb25seSBldmVyIGNvbWUgb3V0IG9mIHRoZQorICAgICAgICBw
cmVyZW5kZXIgc3RhdGUgd2hlbiBpdCBiZWNvbWVzIHZpc2libGUgLSByZWR1bmRhbnQgbm90aWZp
Y2F0aW9ucyB0aGF0IHRoZSB2aWV3IGlzIHN0aWxsCisgICAgICAgIGhpZGRlbiBzaG91bGQgYmUg
aWdub3JlZC4KKworICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
YWdlOjpzZXRWaXNpYmlsaXR5U3RhdGUpOgorICAgICAgICAgICAgLSBpZ25vcmUgdmlzaWJpbGl0
eSBzdGF0ZSBjaGFuZ2UgdG8gaGlkZGVuLCBpZiB0aGUgY3VycmVudCBzdGF0ZSBpcyBwcmVyZW5k
ZXIuCisKIDIwMTMtMTItMjQgIE1paG5lYSBPdmlkZW5pZSAgPG1paG5lYUBhZG9iZS5jb20+CiAK
ICAgICAgICAgW0NTU1JlZ2lvbnNdIENyYXNoIHdoaWxlIHJlcGFpbnRpbmcgYW4gaW52YWxpZCBy
ZWdpb24KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAkocmV2aXNpb24gMTYwOTc2KQorKysgU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI0Niw2ICsxMjQ2LDgg
QEAgdm9pZCBQYWdlOjpzZXRWaXNpYmlsaXR5U3RhdGUoUGFnZVZpc2liaQogCiAgICAgaWYgKG1f
dmlzaWJpbGl0eVN0YXRlID09IHZpc2liaWxpdHlTdGF0ZSkKICAgICAgICAgcmV0dXJuOworICAg
IGlmIChtX3Zpc2liaWxpdHlTdGF0ZSA9PSBQYWdlVmlzaWJpbGl0eVN0YXRlUHJlcmVuZGVyICYm
IHZpc2liaWxpdHlTdGF0ZSA9PSBQYWdlVmlzaWJpbGl0eVN0YXRlSGlkZGVuKQorICAgICAgICBy
ZXR1cm47CiAgICAgbV92aXNpYmlsaXR5U3RhdGUgPSB2aXNpYmlsaXR5U3RhdGU7CiAKICAgICBp
ZiAoIWlzSW5pdGlhbFN0YXRlKSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNjEwNTcpCisr
KyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1OCBA
QAorMjAxMy0xMi0yNCAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+
CisKKyAgICAgICAgTWVyZ2UgUGFnZVZpc2liaWxpdHlTdGF0ZSAmIFZpZXdTdGF0ZTo6SXNWaXNp
YmxlIGluIFdlYktpdDIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEyNjIxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFdlYktpdDIgcmVkdW5kYW50bHkgdHJhY2tzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSB2
aWV3IHRocm91Z2ggdHdvIG1lY2hhbmlzbXMgLSB0aGUgdmlzaWJpbGl0eQorICAgICAgICBzdGF0
ZSwgYW5kIHRoZSB2aWV3IHN0YXRlLiBSZW1vdmUgdmlzaWJpbGl0eSBzdGF0ZSBmcm9tIHRoZSBX
ZWJLaXQyIGxheWVyLiBUaGUgdmlzaWJpbGl0eQorICAgICAgICBzdGF0ZSBhbHNvIHRyYWNrcyB0
aGUgJ3ByZXRlbmRlcicgc3RhdGUgLSBzbyBzcGxpdCB0aGlzIG91dCBhbmQgaGFuZGxlIGl0IHNl
cGFyYXRlbHkgKGEgY2hhbmdlCisgICAgICAgIHdlIHNob3VsZCBtYWtlIGluIFdlYkNvcmUsIHRv
bykuCisKKyAgICAgICAgUmVtb3ZpbmcgdGhlIHJlZHVuZGFuY3kgYWxzbyByZW1vdmVzIHRoZSBh
YmlsaXR5IGZyb20gdGhlIEFQSSB0byBzZXQgYSBmYWtlIHZpc2liaWxpdHkgc3RhdGUKKyAgICAg
ICAgKElzVmlzaWJsZSB0cmFja3MgdGhlIGFjdHVhbCB2aXNpYmlsaXR5IG9mIHRoZSB2aWV3KS4g
VGhyb3VnaCBwcml2YXRlIEFQSQorICAgICAgICAoV0tQYWdlU2V0VmlzaWJpbGl0eVN0YXRlKSBh
IGNsaWVudCBjb3VsZCBwcmV2aW91c2x5IHJlcXVlc3QgdGhlIHZpZXcgYmUgcmVwb3J0ZWQgYXMg
aGlkZGVuIG9yCisgICAgICAgIHZpc2libGUsIGJ1dCB0aGlzIGRpZG4ndCByZWFsbHkgd29yayAt
IHRoZSBvdmVycmlkZSB3YXMgbm90IGVuZm9yY2VkIGFuZCB0aGUgQVBJIG1heSByZXNldCB0aGUK
KyAgICAgICAgc3RhdGUgYXQgYW4gYXJiaXRyYXJ5IHBvaW50LiBUaGUgbWVjaGFuaXNtIGlzIG9u
bHkgdXNlZCBieSB0ZXN0aW5nIGNvZGUsIHdoaWNoIGluc3RlYWQgc2hvdWxkCisgICAgICAgIGFj
dHVhbGx5IHVwZGF0ZSB0aGUgdmlldyB2aXNpYmlsaXR5ICh0aGlzIHRlc3RzIG1vcmUgb2YgdGhl
IGFjdHVhbCB2aXNpYmlsaXR5IG1lY2hhbmlzbXMgdXNlZAorICAgICAgICBieSB0aGUgYnJvd3Nl
cikuIFRoZSBvbmUgYXNwZWN0IG9mIHRoZSBBUEkgcmVsaWVkIG9uIGJ5IGV4aXN0aW5nIGNsaWVu
dHMgaXMgdGhlIGFiaWxpdHkgdG8KKyAgICAgICAgaW5pdGlhbGl6ZSBhIGhpZGRlbiB2aWV3IGFz
IHByZXJlbmRlciAtY29udGludWUgdG8gc3VwcG9ydCB0aGlzIHNwZWNpZmljIGZ1bmN0aW9uYWxp
dHkgdmlhCisgICAgICAgIFdLUGFnZVNldFZpc2liaWxpdHlTdGF0ZSwgdG8gbWFpbnRhaW4gYmFj
a3dhcmRzIGNvbXBhdGliaWxpdHkuCisKKworICAgICAgICAtIFdlYktpdDIgLSByZW1vdmUgaW50
ZXJuYWwgc3RhdGUgdGhhdCB0cmFja3MgcGFnZSB2aXNpYmlsaXR5IHNlcGFyYXRlbHkgZnJvbSB0
aGUgdmlldyBzdGF0ZQorICAgICAgICB2aXNpYmlsaXR5LiBGb3IgYmFja3dhcmRzIGNvbXBhdGli
aWxpdHkgY29udGludWUgdG8gc3VwcG9ydCB0aGUgV0tQYWdlU2V0VmlzaWJpbGl0eVN0YXRlIEFQ
SSwKKyAgICAgICAgYnV0IG9ubHkgdG8gaW5pdGlhbGl6ZSB0aGUgc3RhdGUgdG8gcHJlcmVuZGVy
LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAgIChXS1Bh
Z2VTZXRWaXNpYmlsaXR5U3RhdGUpOgorICAgICAgICAgICAgLSBvbmx5IHN1cHBvcnQgaW5pdGlh
bGl6aW5nIHRoZSB2aXNpYmlsaXR5IHN0YXRlIHRvIHByZXJlbmRlci4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpX
ZWJQYWdlUHJveHkpOgorICAgICAgICAgICAgLSByZW1vdmUgbV92aXNpYmlsaXR5U3RhdGUKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojppbml0aWFsaXplV2ViUGFnZSk6CisgICAgICAg
ICAgICAtIG5vIG5lZWQgdG8gc2VuZCBpbml0aWFsIHZpc2liaWxpdHkgc3RhdGUgKHRoaXMgaXMg
c2VudCBhcyBhIHBhcnQgb2YgdGhlIGNyZWF0aW9uIHBhcmFtZXRlcnMpLgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OnZpZXdTdGF0ZURpZENoYW5nZSk6CisgICAgICAgICAgICAtIG5v
IG5lZWQgdG8gc2VuZCB2aXNpYmlsaXR5IHN0YXRlIGNoYW5nZSAodGhpcyBpcyBzZW50IGFzIGEg
cGFydCBvZiB2aWV3IHN0YXRlKS4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRW
aXNpYmlsaXR5U3RhdGVQcmVyZW5kZXIpOgorICAgICAgICAgICAgLSBzZXRWaXNpYmlsaXR5U3Rh
dGUgLT4gc2V0VmlzaWJpbGl0eVN0YXRlUHJlcmVuZGVyLgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaDoKKyAgICAgICAgICAgIC0gcmVtb3ZlIG1fdmlzaWJpbGl0eVN0YXRlLCBz
ZXRWaXNpYmlsaXR5U3RhdGUgLT4gc2V0VmlzaWJpbGl0eVN0YXRlUHJlcmVuZGVyLgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6V2ViUGFnZSk6CisgICAgICAgICAgICAtIGFkZGVkIGNhbGwgdG8gdXBkYXRlVmlzaWJp
bGl0eVN0YXRlLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRWaWV3SXNWaXNpYmxlKToK
KyAgICAgICAgICAgIC0gYWRkZWQgY2FsbCB0byB1cGRhdGVWaXNpYmlsaXR5U3RhdGUuCisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZVZpc2liaWxpdHlTdGF0ZSk6CisgICAgICAgICAg
ICAtIHByZXZpb3VzbHkgc2V0VmlzaWJpbGl0eVN0YXRlLCB1cGRhdGVzIHRoZSBwYWdlIHZpc2li
aWxpdHkgc3RhdGUgYWNjb3JkaW5nIHRvIHRoZSB2aWV3IHN0YXRlLgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjpzZXRWaXNpYmlsaXR5U3RhdGVQcmVyZW5kZXIpOgorICAgICAgICAgICAgLSBz
ZXQgdmlzaWJpbGl0eSBzdGF0ZSB0byBwcmVyZW5kZXIuCisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgICAgIC0gcmVtb3ZlIG1fdmlzaWJpbGl0eVN0YXRl
LCBzZXRWaXNpYmlsaXR5U3RhdGUgLT4gc2V0VmlzaWJpbGl0eVN0YXRlUHJlcmVuZGVyLgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorICAgICAgICAg
ICAgLSBTZXRWaXNpYmlsaXR5U3RhdGUgLT4gU2V0VmlzaWJpbGl0eVN0YXRlUHJlcmVuZGVyLgor
CiAyMDEzLTEyLTI0ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAg
IDMyLWJpdCBNYWMgYnVpbGQgZml4IGF0dGVtcHQgYWZ0ZXIgcjE2MTA0NS4KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAxNjA5NzcpCisr
KyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzA1LDE5ICszMDUsMTIgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNs
aWVudCYgcAogICAgICwgbV9jbGlwc1RvRXhwb3NlZFJlY3QoZmFsc2UpCiAgICAgLCBtX2xhc3RT
ZW50Q2xpcHNUb0V4cG9zZWRSZWN0KGZhbHNlKQogI2VuZGlmCi0jaWYgRU5BQkxFKFBBR0VfVklT
SUJJTElUWV9BUEkpCi0gICAgLCBtX3Zpc2liaWxpdHlTdGF0ZShQYWdlVmlzaWJpbGl0eVN0YXRl
VmlzaWJsZSkKLSNlbmRpZgogICAgICwgbV9zY3JvbGxQaW5uaW5nQmVoYXZpb3IoRG9Ob3RQaW4p
CiB7CiAgICAgdXBkYXRlVmlld1N0YXRlKCk7CiAKICAgICBwbGF0Zm9ybUluaXRpYWxpemUoKTsK
IAotI2lmIEVOQUJMRShQQUdFX1ZJU0lCSUxJVFlfQVBJKQotICAgIGlmICghaXNWaWV3VmlzaWJs
ZSgpKQotICAgICAgICBtX3Zpc2liaWxpdHlTdGF0ZSA9IFBhZ2VWaXNpYmlsaXR5U3RhdGVIaWRk
ZW47Ci0jZW5kaWYKICNpZm5kZWYgTkRFQlVHCiAgICAgd2ViUGFnZVByb3h5Q291bnRlci5pbmNy
ZW1lbnQoKTsKICNlbmRpZgpAQCAtNTE1LDEyICs1MDgsNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
aW5pdGlhbGl6ZVdlYlBhZ2UoKQogICAgIGluaXRpYWxpemVDcmVhdGlvblBhcmFtZXRlcnMoKTsK
ICAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6Q3JlYXRlV2ViUGFnZSht
X3BhZ2VJRCwgbV9jcmVhdGlvblBhcmFtZXRlcnMpLCAwKTsKIAotI2lmIEVOQUJMRShQQUdFX1ZJ
U0lCSUxJVFlfQVBJKQotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFZpc2liaWxpdHlT
dGF0ZShtX3Zpc2liaWxpdHlTdGF0ZSwgLyogaXNJbml0aWFsU3RhdGUgKi8gdHJ1ZSkpOwotI2Vs
aWYgRU5BQkxFKEhJRERFTl9QQUdFX0RPTV9USU1FUl9USFJPVFRMSU5HKQotICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlNldFZpc2liaWxpdHlTdGF0ZShpc1ZpZXdWaXNpYmxlKCkgPyBQYWdl
VmlzaWJpbGl0eVN0YXRlVmlzaWJsZSA6IFBhZ2VWaXNpYmlsaXR5U3RhdGVIaWRkZW4sIC8qIGlz
SW5pdGlhbFN0YXRlICovIHRydWUpKTsKLSNlbmRpZgotCiAjaWYgUExBVEZPUk0oTUFDKQogICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZChtX2lz
U21hcnRJbnNlcnREZWxldGVFbmFibGVkKSk7CiAjZW5kaWYKQEAgLTk3NSwxNCArOTYyLDYgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnZpZXdTdGF0ZURpZENoYW5nZShWaQogICAgICAgICAgICAgLy8g
c3RvcCB0aGUgdW5yZXNwb25zaXZlbmVzcyB0aW1lciBoZXJlLgogICAgICAgICAgICAgbV9wcm9j
ZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCktPnN0b3AoKTsKICAgICAgICAgfQotCi0jaWYgRU5B
QkxFKFBBR0VfVklTSUJJTElUWV9BUEkpCi0gICAgICAgIG1fdmlzaWJpbGl0eVN0YXRlID0gaXNW
aWV3VmlzaWJsZSgpID8gUGFnZVZpc2liaWxpdHlTdGF0ZVZpc2libGUgOiBQYWdlVmlzaWJpbGl0
eVN0YXRlSGlkZGVuOwotICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlNldFZpc2liaWxpdHlTdGF0ZShtX3Zpc2liaWxpdHlTdGF0ZSwgZmFsc2UpLCBtX3BhZ2VJRCk7
Ci0jZWxpZiBFTkFCTEUoSElEREVOX1BBR0VfRE9NX1RJTUVSX1RIUk9UVExJTkcpCi0gICAgICAg
IFBhZ2VWaXNpYmlsaXR5U3RhdGUgdmlzaWJpbGl0eVN0YXRlID0gaXNWaWV3VmlzaWJsZSgpID8g
UGFnZVZpc2liaWxpdHlTdGF0ZVZpc2libGUgOiBQYWdlVmlzaWJpbGl0eVN0YXRlSGlkZGVuOwot
ICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFZpc2liaWxpdHlT
dGF0ZSh2aXNpYmlsaXR5U3RhdGUsIGZhbHNlKSwgbV9wYWdlSUQpOwotI2VuZGlmCiAgICAgfQog
CiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1JfUE9QT1ZFUikKQEAgLTE2NzYsMjAgKzE2NTUs
MTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6Omxpc3RlbkZvckxheW91dE1pbGVzdAogICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TGlzdGVuRm9yTGF5b3V0TWlsZXN0b25lcyht
aWxlc3RvbmVzKSwgbV9wYWdlSUQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6c2V0VmlzaWJp
bGl0eVN0YXRlKFdlYkNvcmU6OlBhZ2VWaXNpYmlsaXR5U3RhdGUgdmlzaWJpbGl0eVN0YXRlLCBi
b29sIGlzSW5pdGlhbFN0YXRlKQordm9pZCBXZWJQYWdlUHJveHk6OnNldFZpc2liaWxpdHlTdGF0
ZVByZXJlbmRlcigpCiB7CiAgICAgaWYgKCFpc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybjsKLQot
I2lmIEVOQUJMRShQQUdFX1ZJU0lCSUxJVFlfQVBJKQotICAgIGlmICh2aXNpYmlsaXR5U3RhdGUg
IT0gbV92aXNpYmlsaXR5U3RhdGUgfHwgaXNJbml0aWFsU3RhdGUpIHsKLSAgICAgICAgbV92aXNp
YmlsaXR5U3RhdGUgPSB2aXNpYmlsaXR5U3RhdGU7Ci0gICAgICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6U2V0VmlzaWJpbGl0eVN0YXRlKHZpc2liaWxpdHlTdGF0ZSwgaXNJ
bml0aWFsU3RhdGUpLCBtX3BhZ2VJRCk7Ci0gICAgfQotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0o
dmlzaWJpbGl0eVN0YXRlKTsKLSAgICBVTlVTRURfUEFSQU0oaXNJbml0aWFsU3RhdGUpOwotI2Vu
ZGlmCisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRWaXNpYmlsaXR5
U3RhdGVQcmVyZW5kZXIoKSwgbV9wYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0
U3VwcHJlc3NTY3JvbGxiYXJBbmltYXRpb25zKGJvb2wgc3VwcHJlc3NBbmltYXRpb25zKQpJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gMTYwOTc3
KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNv
cHkpCkBAIC01NjEsNyArNTYxLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBsaXN0ZW5Gb3JMYXlv
dXRNaWxlc3RvbmVzKFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZXMpOwogCi0gICAgdm9pZCBzZXRW
aXNpYmlsaXR5U3RhdGUoV2ViQ29yZTo6UGFnZVZpc2liaWxpdHlTdGF0ZSwgYm9vbCBpc0luaXRp
YWxTdGF0ZSk7CisgICAgdm9pZCBzZXRWaXNpYmlsaXR5U3RhdGVQcmVyZW5kZXIoKTsKICAgICB2
b2lkIGRpZFVwZGF0ZVZpZXdTdGF0ZSgpIHsgbV93YWl0aW5nRm9yRGlkVXBkYXRlVmlld1N0YXRl
ID0gZmFsc2U7IH0KIAogICAgIGJvb2wgaGFzSG9yaXpvbnRhbFNjcm9sbGJhcigpIGNvbnN0IHsg
cmV0dXJuIG1fbWFpbkZyYW1lSGFzSG9yaXpvbnRhbFNjcm9sbGJhcjsgfQpAQCAtMTM2NCwxMCAr
MTM2NCw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2xhc3RTZW50Q2xpcHNUb0V4cG9zZWRSZWN0
OwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoUEFHRV9WSVNJQklMSVRZX0FQSSkKLSAgICBXZWJDb3Jl
OjpQYWdlVmlzaWJpbGl0eVN0YXRlIG1fdmlzaWJpbGl0eVN0YXRlOwotI2VuZGlmCi0KICNpZiBQ
TEFURk9STShNQUMpCiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gbV90ZW1wb3JhcnlQREZG
aWxlczsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFn
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFn
ZS5jcHAJKHJldmlzaW9uIDE2MDk3NikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MTAsOSArNDEwLDEwIEBAIHZvaWQgV0tQ
YWdlTGlzdGVuRm9yTGF5b3V0TWlsZXN0b25lcyhXS1AKICAgICB0b0ltcGwocGFnZVJlZiktPmxp
c3RlbkZvckxheW91dE1pbGVzdG9uZXModG9MYXlvdXRNaWxlc3RvbmVzKG1pbGVzdG9uZXMpKTsK
IH0KIAotdm9pZCBXS1BhZ2VTZXRWaXNpYmlsaXR5U3RhdGUoV0tQYWdlUmVmIHBhZ2VSZWYsIFdL
UGFnZVZpc2liaWxpdHlTdGF0ZSBzdGF0ZSwgYm9vbCBpc0luaXRpYWxTdGF0ZSkKK3ZvaWQgV0tQ
YWdlU2V0VmlzaWJpbGl0eVN0YXRlKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1BhZ2VWaXNpYmlsaXR5
U3RhdGUgc3RhdGUsIGJvb2wpCiB7Ci0gICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRWaXNpYmlsaXR5
U3RhdGUodG9QYWdlVmlzaWJpbGl0eVN0YXRlKHN0YXRlKSwgaXNJbml0aWFsU3RhdGUpOworICAg
IGlmIChzdGF0ZSA9PSBrV0tQYWdlVmlzaWJpbGl0eVN0YXRlUHJlcmVuZGVyKQorICAgICAgICB0
b0ltcGwocGFnZVJlZiktPnNldFZpc2liaWxpdHlTdGF0ZVByZXJlbmRlcigpOwogfQogCiBib29s
IFdLUGFnZUhhc0hvcml6b250YWxTY3JvbGxiYXIoV0tQYWdlUmVmIHBhZ2VSZWYpCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lv
biAxNjA5NzcpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI3Niw5ICsyNzYsNiBAQCBXZWJQYWdlOjpXZWJQYWdlKHVp
bnQ2NF90IHBhZ2VJRCwgY29uc3QgCiAjaWYgUExBVEZPUk0oSU9TKQogICAgICwgbV9zaG91bGRS
ZXR1cm5Xb3JkQXRTZWxlY3Rpb24oZmFsc2UpCiAjZW5kaWYKLSNpZiBFTkFCTEUoUEFHRV9WSVNJ
QklMSVRZX0FQSSkKLSAgICAsIG1fdmlzaWJpbGl0eVN0YXRlKFdlYkNvcmU6OlBhZ2VWaXNpYmls
aXR5U3RhdGVWaXNpYmxlKQotI2VuZGlmCiAgICAgLCBtX2luc3BlY3RvckNsaWVudCgwKQogICAg
ICwgbV9iYWNrZ3JvdW5kQ29sb3IoQ29sb3I6OndoaXRlKQogICAgICwgbV9tYXhpbXVtUmVuZGVy
aW5nU3VwcHJlc3Npb25Ub2tlbigwKQpAQCAtNDI2LDYgKzQyMyw4IEBAIFdlYlBhZ2U6OldlYlBh
Z2UodWludDY0X3QgcGFnZUlELCBjb25zdCAKICAgICBpZiAobV91c2VUaHJlYWRlZFNjcm9sbGlu
ZykKICAgICAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuZXZlbnREaXNwYXRjaGVyKCkuYWRkU2Ny
b2xsaW5nVHJlZUZvclBhZ2UodGhpcyk7CiAjZW5kaWYKKworICAgIHVwZGF0ZVZpc2liaWxpdHlT
dGF0ZSh0cnVlKTsKIH0KIAogV2ViUGFnZTo6fldlYlBhZ2UoKQpAQCAtMTkzNCw2ICsxOTMzLDgg
QEAgdm9pZCBXZWJQYWdlOjpzZXRWaWV3SXNWaXNpYmxlKGJvb2wgaXNWaQogICAgICAgICAgICAg
bV9wYWdlLT5yZXN1bWVBbmltYXRpbmdJbWFnZXMoKTsKICAgICAgICAgfQogICAgIH0KKworICAg
IHVwZGF0ZVZpc2liaWxpdHlTdGF0ZSgpOwogfQogCiB2b2lkIFdlYlBhZ2U6OnNldERyYXdzQmFj
a2dyb3VuZChib29sIGRyYXdzQmFja2dyb3VuZCkKQEAgLTM3MDUsNDEgKzM3MDYsNTAgQEAgRnJh
bWVWaWV3KiBXZWJQYWdlOjptYWluRnJhbWVWaWV3KCkgY29ucwogICAgIHJldHVybiAwOwogfQog
Ci0jaWYgRU5BQkxFKFBBR0VfVklTSUJJTElUWV9BUEkpIHx8IEVOQUJMRShISURERU5fUEFHRV9E
T01fVElNRVJfVEhST1RUTElORykKLXZvaWQgV2ViUGFnZTo6c2V0VmlzaWJpbGl0eVN0YXRlKHVp
bnQzMl90IHZpc2liaWxpdHlTdGF0ZSwgYm9vbCBpc0luaXRpYWxTdGF0ZSkKK3ZvaWQgV2ViUGFn
ZTo6dXBkYXRlVmlzaWJpbGl0eVN0YXRlKGJvb2wgaXNJbml0aWFsU3RhdGUpCiB7CisgICAgYm9v
bCBpc1Zpc2libGUgPSBtX3ZpZXdTdGF0ZSAmIFZpZXdTdGF0ZTo6SXNWaXNpYmxlOwogICAgIGlm
ICghbV9wYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBXZWJDb3JlOjpQYWdlVmlzaWJpbGl0
eVN0YXRlIHN0YXRlID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6UGFnZVZpc2liaWxpdHlTdGF0ZT4o
dmlzaWJpbGl0eVN0YXRlKTsKLQogI2lmIEVOQUJMRShQQUdFX1ZJU0lCSUxJVFlfQVBJKQotICAg
IGlmIChtX3Zpc2liaWxpdHlTdGF0ZSA9PSBzdGF0ZSkKLSAgICAgICAgcmV0dXJuOwogCiAgICAg
RnJhbWVWaWV3KiB2aWV3ID0gbV9wYWdlLT5tYWluRnJhbWUoKS52aWV3KCk7CiAKLSAgICBpZiAo
c3RhdGUgPT0gV2ViQ29yZTo6UGFnZVZpc2liaWxpdHlTdGF0ZVZpc2libGUpIHsKKyAgICBpZiAo
aXNWaXNpYmxlKSB7CiAgICAgICAgIG1fcGFnZS0+ZGlkTW92ZU9uc2NyZWVuKCk7CiAgICAgICAg
IGlmICh2aWV3KQogICAgICAgICAgICAgdmlldy0+c2hvdygpOwogICAgIH0KIAorICAgIFBhZ2VW
aXNpYmlsaXR5U3RhdGUgc3RhdGUgPSBpc1Zpc2libGUgPyBQYWdlVmlzaWJpbGl0eVN0YXRlVmlz
aWJsZSA6IFBhZ2VWaXNpYmlsaXR5U3RhdGVIaWRkZW47CiAgICAgbV9wYWdlLT5zZXRWaXNpYmls
aXR5U3RhdGUoc3RhdGUsIGlzSW5pdGlhbFN0YXRlKTsKLSAgICBtX3Zpc2liaWxpdHlTdGF0ZSA9
IHN0YXRlOwogCi0gICAgaWYgKHN0YXRlID09IFdlYkNvcmU6OlBhZ2VWaXNpYmlsaXR5U3RhdGVI
aWRkZW4pIHsKKyAgICBpZiAoIWlzVmlzaWJsZSkgewogICAgICAgICBtX3BhZ2UtPndpbGxNb3Zl
T2Zmc2NyZWVuKCk7CiAgICAgICAgIGlmICh2aWV3KQogICAgICAgICAgICAgdmlldy0+aGlkZSgp
OwogICAgIH0KLSNlbmRpZgogCi0jaWYgRU5BQkxFKEhJRERFTl9QQUdFX0RPTV9USU1FUl9USFJP
VFRMSU5HKSAmJiAhRU5BQkxFKFBBR0VfVklTSUJJTElUWV9BUEkpCisjZWxpZiBFTkFCTEUoSElE
REVOX1BBR0VfRE9NX1RJTUVSX1RIUk9UVExJTkcpCisKKyAgICBQYWdlVmlzaWJpbGl0eVN0YXRl
IHN0YXRlID0gaXNWaXNpYmxlID8gUGFnZVZpc2liaWxpdHlTdGF0ZVZpc2libGUgOiBQYWdlVmlz
aWJpbGl0eVN0YXRlSGlkZGVuOwogICAgIG1fcGFnZS0+c2V0VmlzaWJpbGl0eVN0YXRlKHN0YXRl
LCBpc0luaXRpYWxTdGF0ZSk7CisKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGlzVmlzaWJsZSk7
CisgICAgVU5VU0VEX1BBUkFNKGlzSW5pdGlhbFN0YXRlKTsKICNlbmRpZgogfQorCit2b2lkIFdl
YlBhZ2U6OnNldFZpc2liaWxpdHlTdGF0ZVByZXJlbmRlcigpCit7CisjaWYgRU5BQkxFKFBBR0Vf
VklTSUJJTElUWV9BUEkpIHx8IEVOQUJMRShISURERU5fUEFHRV9ET01fVElNRVJfVEhST1RUTElO
RykKKyAgICBpZiAoIW1fcGFnZSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fcGFnZS0+c2V0Vmlz
aWJpbGl0eVN0YXRlKFBhZ2VWaXNpYmlsaXR5U3RhdGVQcmVyZW5kZXIsIHRydWUpOwogI2VuZGlm
Cit9CiAKIHZvaWQgV2ViUGFnZTo6c2V0VGhyb3R0bGVkKGJvb2wgaXNUaHJvdHRsZWQpCiB7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHJldmlz
aW9uIDE2MDk3NykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTYxNCw5ICs2MTQsOCBAQCBwdWJsaWM6CiAKICAgICBib29s
IHdpbGxHb1RvQmFja0ZvcndhcmRJdGVtQ2FsbGJhY2tFbmFibGVkKCkgY29uc3QgeyByZXR1cm4g
bV93aWxsR29Ub0JhY2tGb3J3YXJkSXRlbUNhbGxiYWNrRW5hYmxlZDsgfQogCi0jaWYgRU5BQkxF
KFBBR0VfVklTSUJJTElUWV9BUEkpIHx8IEVOQUJMRShISURERU5fUEFHRV9ET01fVElNRVJfVEhS
T1RUTElORykKLSAgICB2b2lkIHNldFZpc2liaWxpdHlTdGF0ZSh1aW50MzJfdCAvKiBXZWJDb3Jl
OjpQYWdlVmlzaWJpbGl0eVN0YXRlICovLCBib29sIGlzSW5pdGlhbFN0YXRlKTsKLSNlbmRpZgor
ICAgIHZvaWQgc2V0VmlzaWJpbGl0eVN0YXRlUHJlcmVuZGVyKCk7CisgICAgdm9pZCB1cGRhdGVW
aXNpYmlsaXR5U3RhdGUoYm9vbCBpc0luaXRpYWxTdGF0ZSA9IGZhbHNlKTsKICAgICB2b2lkIHNl
dFRocm90dGxlZChib29sIGlzVGhyb3R0bGVkKTsKIAogI2lmIFBMQVRGT1JNKElPUykKQEAgLTEw
MzksOSArMTAzOCw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3Nob3VsZFJldHVybldvcmRBdFNl
bGVjdGlvbjsKICNlbmRpZgogCi0jaWYgRU5BQkxFKFBBR0VfVklTSUJJTElUWV9BUEkpCi0gICAg
V2ViQ29yZTo6UGFnZVZpc2liaWxpdHlTdGF0ZSBtX3Zpc2liaWxpdHlTdGF0ZTsKLSNlbmRpZgog
ICAgIFdlYkluc3BlY3RvckNsaWVudCogbV9pbnNwZWN0b3JDbGllbnQ7CiAKICAgICBXZWJDb3Jl
OjpDb2xvciBtX2JhY2tncm91bmRDb2xvcjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAxNjA5
NzYpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdl
cy5pbgkod29ya2luZyBjb3B5KQpAQCAtMzA1LDkgKzMwNSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBh
Z2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIEhhbmRsZUFsdGVybmF0aXZlVGV4dFVJUmVzdWx0KFN0
cmluZyByZXN1bHQpCiAjZW5kaWYKIAotI2lmIEVOQUJMRShQQUdFX1ZJU0lCSUxJVFlfQVBJKSB8
fCBFTkFCTEUoSElEREVOX1BBR0VfRE9NX1RJTUVSX1RIUk9UVExJTkcpCi0gICAgU2V0VmlzaWJp
bGl0eVN0YXRlKHVpbnQzMl90IHZpc2liaWxpdHlTdGF0ZSwgYm9vbCBpc0luaXRpYWxTdGF0ZSkK
LSNlbmRpZgorICAgIFNldFZpc2liaWxpdHlTdGF0ZVByZXJlbmRlcigpCiAKICNpZiBQTEFURk9S
TShJT1MpCiAgICAgRGlkRmluaXNoU2Nyb2xsaW5nKFdlYkNvcmU6OkZsb2F0UG9pbnQgY29udGVu
dE9mZnNldCk7CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxNjEwNTcpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSw2MSBAQAorMjAxMy0xMi0yNCAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJy
YWNsb3VnaEBhcHBsZS5jb20+CisKKyAgICAgICAgTWVyZ2UgUGFnZVZpc2liaWxpdHlTdGF0ZSAm
IFZpZXdTdGF0ZTo6SXNWaXNpYmxlIGluIFdlYktpdDIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNjIxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYktpdDIgcmVkdW5kYW50bHkgdHJhY2tzIHRoZSB2
aXNpYmlsaXR5IG9mIHRoZSB2aWV3IHRocm91Z2ggdHdvIG1lY2hhbmlzbXMgLSB0aGUgdmlzaWJp
bGl0eQorICAgICAgICBzdGF0ZSwgYW5kIHRoZSB2aWV3IHN0YXRlLiBSZW1vdmUgdmlzaWJpbGl0
eSBzdGF0ZSBmcm9tIHRoZSBXZWJLaXQyIGxheWVyLiBUaGUgdmlzaWJpbGl0eQorICAgICAgICBz
dGF0ZSBhbHNvIHRyYWNrcyB0aGUgJ3ByZXRlbmRlcicgc3RhdGUgLSBzbyBzcGxpdCB0aGlzIG91
dCBhbmQgaGFuZGxlIGl0IHNlcGFyYXRlbHkgKGEgY2hhbmdlCisgICAgICAgIHdlIHNob3VsZCBt
YWtlIGluIFdlYkNvcmUsIHRvbykuCisKKyAgICAgICAgUmVtb3ZpbmcgdGhlIHJlZHVuZGFuY3kg
YWxzbyByZW1vdmVzIHRoZSBhYmlsaXR5IGZyb20gdGhlIEFQSSB0byBzZXQgYSBmYWtlIHZpc2li
aWxpdHkgc3RhdGUKKyAgICAgICAgKElzVmlzaWJsZSB0cmFja3MgdGhlIGFjdHVhbCB2aXNpYmls
aXR5IG9mIHRoZSB2aWV3KS4gVGhyb3VnaCBwcml2YXRlIEFQSQorICAgICAgICAoV0tQYWdlU2V0
VmlzaWJpbGl0eVN0YXRlKSBhIGNsaWVudCBjb3VsZCBwcmV2aW91c2x5IHJlcXVlc3QgdGhlIHZp
ZXcgYmUgcmVwb3J0ZWQgYXMgaGlkZGVuIG9yCisgICAgICAgIHZpc2libGUsIGJ1dCB0aGlzIGRp
ZG4ndCByZWFsbHkgd29yayAtIHRoZSBvdmVycmlkZSB3YXMgbm90IGVuZm9yY2VkIGFuZCB0aGUg
QVBJIG1heSByZXNldCB0aGUKKyAgICAgICAgc3RhdGUgYXQgYW4gYXJiaXRyYXJ5IHBvaW50LiBU
aGUgbWVjaGFuaXNtIGlzIG9ubHkgdXNlZCBieSB0ZXN0aW5nIGNvZGUsIHdoaWNoIGluc3RlYWQg
c2hvdWxkCisgICAgICAgIGFjdHVhbGx5IHVwZGF0ZSB0aGUgdmlldyB2aXNpYmlsaXR5ICh0aGlz
IHRlc3RzIG1vcmUgb2YgdGhlIGFjdHVhbCB2aXNpYmlsaXR5IG1lY2hhbmlzbXMgdXNlZAorICAg
ICAgICBieSB0aGUgYnJvd3NlcikuIFRoZSBvbmUgYXNwZWN0IG9mIHRoZSBBUEkgcmVsaWVkIG9u
IGJ5IGV4aXN0aW5nIGNsaWVudHMgaXMgdGhlIGFiaWxpdHkgdG8KKyAgICAgICAgaW5pdGlhbGl6
ZSBhIGhpZGRlbiB2aWV3IGFzIHByZXJlbmRlciAtY29udGludWUgdG8gc3VwcG9ydCB0aGlzIHNw
ZWNpZmljIGZ1bmN0aW9uYWxpdHkgdmlhCisgICAgICAgIFdLUGFnZVNldFZpc2liaWxpdHlTdGF0
ZSwgdG8gbWFpbnRhaW4gYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuCisKKworICAgICAgICBUb29s
cyAtIFdlYktpdDIgbm8gbG9uZ2VyIChwb29ybHkpIHN1cHBvcnRzIGEgZmFrZSB2aXNpYmlsaXR5
IHN0YXRlLCBzbyB0byB0ZXN0IHRoZSBwYWdlCisgICAgICAgIHZpc2liaWxpdHkgbWVjaGFuaXNt
cyB3ZSBzaG91bGQgYWN0dWFsbHkgYmUgY2hhbmdpbmcgY2hhcmFjdGVyaXN0aWNzIG9mIHRoZSB2
aWV3IHRoYXQgd2lsbAorICAgICAgICBiZSBkZXRlY3RlZCBieSBXZWJLaXQyIGFzIGEgdmlzaWJp
bGl0eSBjaGFuZ2UuIFRoaXMgYWZmZWN0cyB0aHJlZSB0aGluZ3M6CisgICAgICAgICAgICAxKSBP
biBzZXRWaXNpYmlsaXR5U3RhdGUgV2ViS2l0VGVzdFJ1bm5lciBtdXN0IGFjdHVhbGx5IGNoYW5n
ZSB2aXNpYmlsaXR5IG9mIHRoZSB2aWV3LgorICAgICAgICAgICAgMikgVGhlICdQYWdlVmlzaWJp
bGl0eVN0YXRlJyB0ZXN0IGluIHRoZSBBUEkgdGVzdHMgaXMgdXNlbGVzcyAoYXMgZXZpZGVuY2Vk
IGJ5IHRoZSBmYWN0CisgICAgICAgICAgICAgICB0aGF0IHBhZ2UgdmlzaWJpbGl0eSBoYXMgYmVl
biBicm9rZW4gaW4gV2ViS2l0MiBmb3IgYSBjb3VwbGUgb2YgbW9udGhzLCBhbmQgZGlkbid0Cisg
ICAgICAgICAgICAgICBjYXRjaCB0aGlzIGZhY3QpLiBSZW1vdmVkIGluIGZhdm91ciBvZjoKKyAg
ICAgICAgICAgIDMpICdQYWdlVmlzaWJpbGl0eVN0YXRlV2l0aFdpbmRvd0NoYW5nZXMnIC0gdGhp
cyBpcyB0aGUgZ29vZCBzdHVmZi4gVGhpcyBhY3R1YWxseSB0ZXN0cworICAgICAgICAgICAgICAg
dGhlIHZpc2liaWxpdHkgbWVjaGFuaXNtLiBCZWVmIHRoaXMgdGVzdCB1cCBieSBhZGRpbmcgY292
ZXJhZ2UgZm9yOiBhKSB0aGUgcHJlcmVuZGVyCisgICAgICAgICAgICBzdGF0ZSwgYikgZG9jdW1l
bnQuaGlkZGVuLCBhbmQgYykgdG9vIG1hbnkgc3RhdGUgY2hhbmdlIG5vdGlmaWNhdGlvbnMgKGl0
IGFscmVhZHkgbG9va3MKKyAgICAgICAgICAgIGZvciB0b28gZmV3KS4KKworICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9QYWdlVmlzaWJpbGl0eVN0YXRlLmNw
cDogUmVtb3ZlZC4KKyAgICAgICAgICAgIC0gUmVtb3ZlZCBQYWdlVmlzaWJpbGl0eVN0YXRlIC0g
dGhpcyB0ZXN0IHdhcyBpbmVmZmVjdGl2ZSwgQVBJIG5vIGxvbmdlciBzdXBwb3J0cyB0aGlzCisg
ICAgICAgICAgICAgIHRlc3QsIGFuZCBiZWhhdmlvdXIgaXMgY292ZXJlZCBieSBQYWdlVmlzaWJp
bGl0eVN0YXRlV2l0aFdpbmRvd0NoYW5nZXMuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9tYWMvUGFnZVZpc2liaWxpdHlTdGF0ZVdpdGhXaW5kb3dDaGFuZ2VzLm1tOgorICAgICAgICAo
LVtQYWdlVmlzaWJpbGl0eVN0YXRlRGVsZWdhdGUgd2ViVmlldzpydW5KYXZhU2NyaXB0QWxlcnRQ
YW5lbFdpdGhNZXNzYWdlOmluaXRpYXRlZEJ5RnJhbWU6XSk6CisgICAgICAgIChydW5KYXZhU2Ny
aXB0QWxlcnQpOgorICAgICAgICAgICAgLSBBZGQgY2hlY2tpbmcgZm9yIHRvbyBtYW55IGNhbGxz
IHRvIHRoZSBhbGVydC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlBhZ2VWaXNpYmlsaXR5U3Rh
dGVXaXRoV2luZG93Q2hhbmdlczo6c2V0UHJlcmVuZGVyKToKKyAgICAgICAgICAgIC0gQWRkZWQg
bWV0aG9kcyB0byBzZXQgdmlzaWJpbGl0eSB0byBwcmVyZW5kZXIuCisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpQYWdlVmlzaWJpbGl0eVN0YXRlV2l0aFdpbmRvd0NoYW5nZXM6OnJ1blRlc3QpOgor
ICAgICAgICAgICAgLSBBZGRlZCBjaGVja2luZyBvZiAnZG9jdW1lbnQuaGlkZGVuJy4KKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6
VGVzdENvbnRyb2xsZXI6OnNldFZpc2liaWxpdHlTdGF0ZSk6CisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci9UZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvZWZs
L1Rlc3RDb250cm9sbGVyRWZsLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnNl
dEhpZGRlbik6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9ndGsvVGVzdENvbnRyb2xsZXJH
dGsuY3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6c2V0SGlkZGVuKToKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL21hYy9UZXN0Q29udHJvbGxlck1hYy5tbToKKyAgICAgICAg
KFdUUjo6VGVzdENvbnRyb2xsZXI6OnNldEhpZGRlbik6CisgICAgICAgICAgICAtIEFkZCBzZXRI
aWRkZW4gbWV0aG9kOyBjYWxsIHRoaXMgZnJvbSBzZXRWaXNpYmlsaXR5U3RhdGUuCisKIDIwMTMt
MTItMjMgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgogCiAgICAgICAg
IFRyeSB0byBmaXggdGhlIGJ1aWxkIGFmdGVyIHIxNjEwMTcKSW5kZXg6IFRvb2xzL1Rlc3RXZWJL
aXRBUEkvR05VbWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9H
TlVtYWtlZmlsZS5hbQkocmV2aXNpb24gMTYwOTc2KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9H
TlVtYWtlZmlsZS5hbQkod29ya2luZyBjb3B5KQpAQCAtMjgxLDcgKzI4MSw2IEBAIFByb2dyYW1z
X1Rlc3RXZWJLaXRBUElfVGVzdFdlYktpdDJfU09VUkMKIAlUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDIvTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0RnJhbWVzLmNwcCBcCiAJ
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1BhZ2VMb2FkQmFzaWMuY3BwIFwKIAlU
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvUGFnZUxvYWREaWRDaGFuZ2VMb2NhdGlv
bldpdGhpblBhZ2VGb3JGcmFtZS5jcHAgXAotCVRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Mi9QYWdlVmlzaWJpbGl0eVN0YXRlLmNwcCBcCiAJVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyL1BhcmVudEZyYW1lLmNwcCBcCiAJVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQyL1ByZXZlbnRFbXB0eVVzZXJBZ2VudC5jcHAgXAogCVRvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Mi9Qcml2YXRlQnJvd3NpbmdQdXNoU3RhdGVOb0hpc3RvcnlDYWxsYmFjay5j
cHAgXApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2Vi
S2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE2MDk3NikKKysrIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CSh3b3JraW5nIGNvcHkpCkBAIC0xNDAsNyArMTQwLDYgQEAKIAkJOUIyNkZDQ0ExNTlEMTZERTAw
Q0MzNzY1IC8qIEhUTUxGb3JtQ29sbGVjdGlvbk5hbWVkSXRlbS5odG1sIGluIENvcHkgUmVzb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMjZGQ0I0MTU5RDE1RTcw
MENDMzc2NSAvKiBIVE1MRm9ybUNvbGxlY3Rpb25OYW1lZEl0ZW0uaHRtbCAqLzsgfTsKIAkJOUI0
RjhGQTQxNTlENTJCMTAwMkQ5Rjk0IC8qIEhUTUxDb2xsZWN0aW9uTmFtZWRJdGVtLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUI0RjhGQTMxNTlENTJC
MTAwMkQ5Rjk0IC8qIEhUTUxDb2xsZWN0aW9uTmFtZWRJdGVtLm1tICovOyB9OwogCQk5QjRGOEZB
NzE1OUQ1MkREMDAyRDlGOTQgLyogSFRNTENvbGxlY3Rpb25OYW1lZEl0ZW0uaHRtbCBpbiBDb3B5
IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjRGOEZBNjE1
OUQ1MkNBMDAyRDlGOTQgLyogSFRNTENvbGxlY3Rpb25OYW1lZEl0ZW0uaHRtbCAqLzsgfTsKLQkJ
QTUxQjY1MDkxNkFERjlCMTAwN0FBNUQ5IC8qIFBhZ2VWaXNpYmlsaXR5U3RhdGUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUxQjY1MDgxNkFERjlC
MTAwN0FBNUQ5IC8qIFBhZ2VWaXNpYmlsaXR5U3RhdGUuY3BwICovOyB9OwogCQlBNTdBMzRGMDE2
QUY2NzcyMDBDMjUwMUYgLyogUGFnZVZpc2liaWxpdHlTdGF0ZVdpdGhXaW5kb3dDaGFuZ2VzLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3QTM0RUYx
NkFGNjc3MjAwQzI1MDFGIC8qIFBhZ2VWaXNpYmlsaXR5U3RhdGVXaXRoV2luZG93Q2hhbmdlcy5t
bSAqLzsgfTsKIAkJQTU3QTM0RjIxNkFGNkIyQjAwQzI1MDFGIC8qIFBhZ2VWaXNpYmlsaXR5U3Rh
dGVXaXRoV2luZG93Q2hhbmdlcy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1N0EzNEYxMTZBRjY5RTIwMEMyNTAxRiAvKiBQYWdlVmlz
aWJpbGl0eVN0YXRlV2l0aFdpbmRvd0NoYW5nZXMuaHRtbCAqLzsgfTsKIAkJQTVFMjAyNzMxNUIy
MTgxOTAwQzEzRTE0IC8qIFdpbmRvd2xlc3NXZWJWaWV3V2l0aE1lZGlhLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVFMjAyNzIxNUIyMTgxOTAwQzEz
RTE0IC8qIFdpbmRvd2xlc3NXZWJWaWV3V2l0aE1lZGlhLm1tICovOyB9OwpAQCAtNDY4LDcgKzQ2
Nyw2IEBACiAJCTlCMjZGQ0I0MTU5RDE1RTcwMENDMzc2NSAvKiBIVE1MRm9ybUNvbGxlY3Rpb25O
YW1lZEl0ZW0uaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IEhUTUxGb3JtQ29sbGVj
dGlvbk5hbWVkSXRlbS5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QjRGOEZB
MzE1OUQ1MkIxMDAyRDlGOTQgLyogSFRNTENvbGxlY3Rpb25OYW1lZEl0ZW0ubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBIVE1MQ29sbGVjdGlvbk5hbWVkSXRlbS5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUI0RjhGQTYxNTlENTJDQTAwMkQ5Rjk0
IC8qIEhUTUxDb2xsZWN0aW9uTmFtZWRJdGVtLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBh
dGggPSBIVE1MQ29sbGVjdGlvbk5hbWVkSXRlbS5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlBNTFCNjUwODE2QURGOUIxMDA3QUE1RDkgLyogUGFnZVZpc2liaWxpdHlTdGF0ZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYWdlVmlzaWJpbGl0eVN0
YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU3QTM0RUYxNkFGNjc3MjAw
QzI1MDFGIC8qIFBhZ2VWaXNpYmlsaXR5U3RhdGVXaXRoV2luZG93Q2hhbmdlcy5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBhZ2VWaXNpYmlsaXR5U3RhdGVXaXRo
V2luZG93Q2hhbmdlcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU3QTM0RjEx
NkFGNjlFMjAwQzI1MDFGIC8qIFBhZ2VWaXNpYmlsaXR5U3RhdGVXaXRoV2luZG93Q2hhbmdlcy5o
dG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gUGFnZVZpc2liaWxpdHlTdGF0ZVdpdGhX
aW5kb3dDaGFuZ2VzLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1RTIwMjcw
MTVCMjE4MDYwMEMxM0UxNCAvKiBXaW5kb3dsZXNzV2ViVmlld1dpdGhNZWRpYS5odG1sICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dC5odG1sOyBwYXRoID0gV2luZG93bGVzc1dlYlZpZXdXaXRoTWVkaWEuaHRtbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc5MSw3ICs3ODksNiBAQAogCQkJCTkzRjdF
ODZFMTREQzhFNUIwMEM4NEE5OSAvKiBOZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGcmFt
ZXNfQnVuZGxlLmNwcCAqLywKIAkJCQlCQzkwOTc3OTEyNTU3MUFCMDAwODM3NTYgLyogUGFnZUxv
YWRCYXNpYy5jcHAgKi8sCiAJCQkJQkMyRDAwNDgxMkE5RkRGQTAwRTczMkEzIC8qIFBhZ2VMb2Fk
RGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlRm9yRnJhbWUuY3BwICovLAotCQkJCUE1MUI2NTA4
MTZBREY5QjEwMDdBQTVEOSAvKiBQYWdlVmlzaWJpbGl0eVN0YXRlLmNwcCAqLywKIAkJCQk1MkU1
Q0U0NTE0RDIxRTlEMDAzQjJCRDggLyogUGFyZW50RnJhbWUuY3BwICovLAogCQkJCTUyRTVDRTQ4
MTREMjFFQUIwMDNCMkJEOCAvKiBQYXJlbnRGcmFtZV9CdW5kbGUuY3BwICovLAogCQkJCUM1NDIz
N0VFMTZCODk1NTgwMEU2MzhGQyAvKiBQYXN0ZWJvYXJkTm90aWZpY2F0aW9ucy5tbSAqLywKQEAg
LTEyMjAsNyArMTIxNyw2IEBACiAJCQkJQkMyRDAwNDkxMkE5RkRGQTAwRTczMkEzIC8qIFBhZ2VM
b2FkRGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlRm9yRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJOTMzMTQwN0MxN0I0NDE5MDAwRjA4M0IxIC8qIERpZE5vdEhhbmRsZUtleURvd24uY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMjZGNTJFQUIxODI4NzI2MDAwMjNENDEyIC8qIEdlb2xvY2F0
aW9uLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUE1MUI2NTA5MTZBREY5QjEwMDdBQTVEOSAvKiBQ
YWdlVmlzaWJpbGl0eVN0YXRlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1N0EzNEYwMTZBRjY3
NzIwMEMyNTAxRiAvKiBQYWdlVmlzaWJpbGl0eVN0YXRlV2l0aFdpbmRvd0NoYW5nZXMubW0gaW4g
U291cmNlcyAqLywKIAkJCQk1MkU1Q0U0NjE0RDIxRTlEMDAzQjJCRDggLyogUGFyZW50RnJhbWUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzU0MjM3RjAxNkI4OTU1ODAwRTYzOEZDIC8qIFBhc3Rl
Ym9hcmROb3RpZmljYXRpb25zLm1tIGluIFNvdXJjZXMgKi8sCkluZGV4OiBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdDIvUGFnZVZpc2liaWxpdHlTdGF0ZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1BhZ2VWaXNpYmlsaXR5U3RhdGUu
Y3BwCShyZXZpc2lvbiAxNjA5NzYpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dDIvUGFnZVZpc2liaWxpdHlTdGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsMTAyICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1V
dGlsaXRpZXMuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybVdlYlZpZXcuaCIKLSNpbmNsdWRlICJUZXN0
LmgiCi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDb250ZXh0UmVmLmg+Ci0jaW5jbHVkZSA8
V2ViS2l0Mi9XS1JldGFpblB0ci5oPgotI2luY2x1ZGUgPFdlYktpdDIvV0tTZXJpYWxpemVkU2Ny
aXB0VmFsdWUuaD4KLQotbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewotCi1zdGF0aWMgYm9vbCB0
ZXN0RG9uZTsKLQotc3RhdGljIHZvaWQgZGlkUnVuU3RlcDFTdGF0ZUNoYW5nZVZpc2libGVUb0hp
ZGRlbihXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZVJlZiwgV0tFcnJvclJlZiwgdm9pZCopOwotc3Rh
dGljIHZvaWQgZGlkUnVuU3RlcDJTdGF0ZUNoYW5nZUhpZGRlblRvUHJlcmVuZGVyKFdLU2VyaWFs
aXplZFNjcmlwdFZhbHVlUmVmLCBXS0Vycm9yUmVmLCB2b2lkKik7Ci1zdGF0aWMgdm9pZCBkaWRS
dW5TdGVwM1N0YXRlQ2hhbmdlUHJlcmVuZGVyVG9VbmxvYWRlZChXS1NlcmlhbGl6ZWRTY3JpcHRW
YWx1ZVJlZiwgV0tFcnJvclJlZiwgdm9pZCopOwotCi1zdGF0aWMgdm9pZCBzZXRQYWdlVmlzaWJp
bGl0eVN0YXRlV2l0aEV2YWxDb250aW51YXRpb24oUGxhdGZvcm1XZWJWaWV3KiB3ZWJWaWV3LCBX
S1BhZ2VWaXNpYmlsaXR5U3RhdGUgdmlzaWJpbGl0eVN0YXRlLCBXS1BhZ2VSdW5KYXZhU2NyaXB0
RnVuY3Rpb24gY2FsbGJhY2spCi17Ci0gICAgV0tQYWdlU2V0VmlzaWJpbGl0eVN0YXRlKHdlYlZp
ZXctPnBhZ2UoKSwgdmlzaWJpbGl0eVN0YXRlLCBmYWxzZSk7Ci0gICAgV0tSZXRhaW5QdHI8V0tT
dHJpbmdSZWY+IGphdmFTY3JpcHRTdHJpbmcoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRG
OENTdHJpbmcoImRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSIpKTsKLSAgICBXS1BhZ2VSdW5KYXZh
U2NyaXB0SW5NYWluRnJhbWUod2ViVmlldy0+cGFnZSgpLCBqYXZhU2NyaXB0U3RyaW5nLmdldCgp
LCBzdGF0aWNfY2FzdDx2b2lkKj4od2ViVmlldyksIGNhbGxiYWNrKTsKLX0KLQotc3RhdGljIHZv
aWQgYXNzZXJ0U2VyaWFsaXplZFNjcmlwdFZhbHVlSXNTdHJpbmdWYWx1ZShXS1NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZVJlZiBzZXJpYWxpemVkVmFsdWUsIFdLRXJyb3JSZWYgZXJyb3IsIGNvbnN0IGNo
YXIgKmV4cGVjdGVkKQotewotICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKLSAgICBFWFBFQ1RfTk9U
X05VTEwoc2VyaWFsaXplZFZhbHVlKTsKLSAgICBpZiAoZXJyb3IgfHwgIXNlcmlhbGl6ZWRWYWx1
ZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgSlNHbG9iYWxDb250ZXh0UmVmIHNjcmlwdENvbnRl
eHQgPSBKU0dsb2JhbENvbnRleHRDcmVhdGUoMCk7Ci0gICAgSlNWYWx1ZVJlZiBzY3JpcHRWYWx1
ZSA9IFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlRGVzZXJpYWxpemUoc2VyaWFsaXplZFZhbHVlLCBz
Y3JpcHRDb250ZXh0LCAwKTsKLSAgICBFWFBFQ1RfVFJVRShKU1ZhbHVlSXNTdHJpbmcoc2NyaXB0
Q29udGV4dCwgc2NyaXB0VmFsdWUpKTsKLSAgICBpZiAoIUpTVmFsdWVJc1N0cmluZyhzY3JpcHRD
b250ZXh0LCBzY3JpcHRWYWx1ZSkpIHsKLSAgICAgICAgSlNHbG9iYWxDb250ZXh0UmVsZWFzZShz
Y3JpcHRDb250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEpTU3RyaW5nUmVm
IGV4cGVjdGVkU3RyaW5nID0gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoZXhwZWN0ZWQp
OwotICAgIEpTU3RyaW5nUmVmIHNjcmlwdFN0cmluZyA9IEpTVmFsdWVUb1N0cmluZ0NvcHkoc2Ny
aXB0Q29udGV4dCwgc2NyaXB0VmFsdWUsIDApOwotICAgIEVYUEVDVF9UUlVFKEpTU3RyaW5nSXNF
cXVhbChzY3JpcHRTdHJpbmcsIGV4cGVjdGVkU3RyaW5nKSk7Ci0KLSAgICBKU1N0cmluZ1JlbGVh
c2Uoc2NyaXB0U3RyaW5nKTsKLSAgICBKU1N0cmluZ1JlbGVhc2UoZXhwZWN0ZWRTdHJpbmcpOwot
ICAgIEpTR2xvYmFsQ29udGV4dFJlbGVhc2Uoc2NyaXB0Q29udGV4dCk7Ci19Ci0KLXN0YXRpYyB2
b2lkIGRpZFJ1blN0ZXAxU3RhdGVDaGFuZ2VWaXNpYmxlVG9IaWRkZW4oV0tTZXJpYWxpemVkU2Ny
aXB0VmFsdWVSZWYgcmVzdWx0U2VyaWFsaXplZFNjcmlwdFZhbHVlLCBXS0Vycm9yUmVmIGVycm9y
LCB2b2lkKiBjb250ZXh0KQotewotICAgIGFzc2VydFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlzU3Ry
aW5nVmFsdWUocmVzdWx0U2VyaWFsaXplZFNjcmlwdFZhbHVlLCBlcnJvciwgInZpc2libGUiKTsK
LSAgICBzZXRQYWdlVmlzaWJpbGl0eVN0YXRlV2l0aEV2YWxDb250aW51YXRpb24oc3RhdGljX2Nh
c3Q8UGxhdGZvcm1XZWJWaWV3Kj4oY29udGV4dCksIGtXS1BhZ2VWaXNpYmlsaXR5U3RhdGVIaWRk
ZW4sIGRpZFJ1blN0ZXAyU3RhdGVDaGFuZ2VIaWRkZW5Ub1ByZXJlbmRlcik7Ci19Ci0KLXN0YXRp
YyB2b2lkIGRpZFJ1blN0ZXAyU3RhdGVDaGFuZ2VIaWRkZW5Ub1ByZXJlbmRlcihXS1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZVJlZiByZXN1bHRTZXJpYWxpemVkU2NyaXB0VmFsdWUsIFdLRXJyb3JSZWYg
ZXJyb3IsIHZvaWQqIGNvbnRleHQpCi17Ci0gICAgYXNzZXJ0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SXNTdHJpbmdWYWx1ZShyZXN1bHRTZXJpYWxpemVkU2NyaXB0VmFsdWUsIGVycm9yLCAiaGlkZGVu
Iik7Ci0gICAgc2V0UGFnZVZpc2liaWxpdHlTdGF0ZVdpdGhFdmFsQ29udGludWF0aW9uKHN0YXRp
Y19jYXN0PFBsYXRmb3JtV2ViVmlldyo+KGNvbnRleHQpLCBrV0tQYWdlVmlzaWJpbGl0eVN0YXRl
UHJlcmVuZGVyLCBkaWRSdW5TdGVwM1N0YXRlQ2hhbmdlUHJlcmVuZGVyVG9VbmxvYWRlZCk7Ci19
Ci0KLXN0YXRpYyB2b2lkIGRpZFJ1blN0ZXAzU3RhdGVDaGFuZ2VQcmVyZW5kZXJUb1VubG9hZGVk
KFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlUmVmIHJlc3VsdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwg
V0tFcnJvclJlZiBlcnJvciwgdm9pZCogY29udGV4dCkKLXsKLSAgICBhc3NlcnRTZXJpYWxpemVk
U2NyaXB0VmFsdWVJc1N0cmluZ1ZhbHVlKHJlc3VsdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgZXJy
b3IsICJwcmVyZW5kZXIiKTsKLSAgICB0ZXN0RG9uZSA9IHRydWU7Ci19Ci0KLVRFU1QoV2ViS2l0
MiwgUGFnZVZpc2liaWxpdHlTdGF0ZSkKLXsKLSAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+
IGNvbnRleHQoQWRvcHRXSywgV0tDb250ZXh0Q3JlYXRlKCkpOwotCi0gICAgLy8gUGFzcyB0aGUg
UGxhdGZvcm1XZWJWaWV3IHdlYlZpZXcgb24gYXMgdGhlIGNvbnRleHQgb2YgdGhlIGV2YWxzLCBz
byB3ZSBjYW4gY29udGludWUgdG8gZXZhbCBvbiBpdC4KLSAgICBQbGF0Zm9ybVdlYlZpZXcgd2Vi
Vmlldyhjb250ZXh0LmdldCgpKTsKLSAgICBzZXRQYWdlVmlzaWJpbGl0eVN0YXRlV2l0aEV2YWxD
b250aW51YXRpb24oJndlYlZpZXcsIGtXS1BhZ2VWaXNpYmlsaXR5U3RhdGVWaXNpYmxlLCBkaWRS
dW5TdGVwMVN0YXRlQ2hhbmdlVmlzaWJsZVRvSGlkZGVuKTsKLQotICAgIFV0aWw6OnJ1bigmdGVz
dERvbmUpOwotfQotCi19IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCkluZGV4OiBUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9QYWdlVmlzaWJpbGl0eVN0YXRlV2l0aFdpbmRvd0NoYW5n
ZXMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvUGFnZVZp
c2liaWxpdHlTdGF0ZVdpdGhXaW5kb3dDaGFuZ2VzLm1tCShyZXZpc2lvbiAxNjA5NzYpCisrKyBU
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9QYWdlVmlzaWJpbGl0eVN0YXRlV2l0aFdpbmRv
d0NoYW5nZXMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI3LDExICsyNywxMiBAQAogI2ltcG9ydCAi
SmF2YVNjcmlwdFRlc3QuaCIKICNpbXBvcnQgIlRlc3QuaCIKICNpbXBvcnQgIldlYktpdEFnbm9z
dGljVGVzdC5oIgotI2ltcG9ydCA8V2ViS2l0L1dlYlZpZXcuaD4KKyNpbXBvcnQgPFdlYktpdC9X
ZWJWaWV3UHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0Mi9XS1ZpZXdQcml2YXRlLmg+CiAjaW1w
b3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKLXN0YXRpYyBib29sIGRpZEdldFBhZ2VTaWduYWxUb0Nv
bnRpbnVlOworc3RhdGljIGJvb2wgaXNXYWl0aW5nRm9yUGFnZVNpZ25hbFRvQ29udGludWUgPSBm
YWxzZTsKK3N0YXRpYyBib29sIGRpZEdldFBhZ2VTaWduYWxUb0NvbnRpbnVlID0gZmFsc2U7CiAK
IC8vIFdlYktpdDEgV2ViVUlEZWxlZ2F0ZQogCkBAIC00Miw2ICs0Myw4IEBAIEBpbnRlcmZhY2Ug
UGFnZVZpc2liaWxpdHlTdGF0ZURlbGVnYXRlIDoKIAogLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3
ICopc2VuZGVyIHJ1bkphdmFTY3JpcHRBbGVydFBhbmVsV2l0aE1lc3NhZ2U6KE5TU3RyaW5nICop
bWVzc2FnZSBpbml0aWF0ZWRCeUZyYW1lOihXZWJGcmFtZSAqKWZyYW1lCiB7CisgICAgRVhQRUNU
X1RSVUUoaXNXYWl0aW5nRm9yUGFnZVNpZ25hbFRvQ29udGludWUpOworICAgIGlzV2FpdGluZ0Zv
clBhZ2VTaWduYWxUb0NvbnRpbnVlID0gZmFsc2U7CiAgICAgZGlkR2V0UGFnZVNpZ25hbFRvQ29u
dGludWUgPSB0cnVlOwogfQogCkBAIC01MSw2ICs1NCw4IEBAIC0gKHZvaWQpd2ViVmlldzooV2Vi
VmlldyAqKXNlbmRlciBydW5KYXYKIAogc3RhdGljIHZvaWQgcnVuSmF2YVNjcmlwdEFsZXJ0KFdL
UGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiBhbGVydFRleHQsIFdLRnJhbWVSZWYgZnJhbWUsIGNv
bnN0IHZvaWQqIGNsaWVudEluZm8pCiB7CisgICAgRVhQRUNUX1RSVUUoaXNXYWl0aW5nRm9yUGFn
ZVNpZ25hbFRvQ29udGludWUpOworICAgIGlzV2FpdGluZ0ZvclBhZ2VTaWduYWxUb0NvbnRpbnVl
ID0gZmFsc2U7CiAgICAgZGlkR2V0UGFnZVNpZ25hbFRvQ29udGludWUgPSB0cnVlOwogfQogCkBA
IC03Miw2ICs3Nyw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZVZpZXco
V0tWaWV3ICopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB0ZWFyZG93blZpZXcoV2ViVmll
dyAqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgdGVhcmRvd25WaWV3KFdLVmlldyAqKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UHJlcmVuZGVyKFdlYlZpZXcgKik7CisgICAg
dmlydHVhbCB2b2lkIHNldFByZXJlbmRlcihXS1ZpZXcgKik7CiB9OwogCiB2b2lkIFBhZ2VWaXNp
YmlsaXR5U3RhdGVXaXRoV2luZG93Q2hhbmdlczo6aW5pdGlhbGl6ZVZpZXcoV2ViVmlldyAqd2Vi
VmlldykKQEAgLTg3LDYgKzk0LDExIEBAIHZvaWQgUGFnZVZpc2liaWxpdHlTdGF0ZVdpdGhXaW5k
b3dDaGFuZ2UKICAgICBbdWlEZWxlZ2F0ZSByZWxlYXNlXTsKIH0KIAordm9pZCBQYWdlVmlzaWJp
bGl0eVN0YXRlV2l0aFdpbmRvd0NoYW5nZXM6OnNldFByZXJlbmRlcihXZWJWaWV3ICp3ZWJWaWV3
KQoreworICAgIFt3ZWJWaWV3IF9zZXRWaXNpYmlsaXR5U3RhdGU6V2ViUGFnZVZpc2liaWxpdHlT
dGF0ZVByZXJlbmRlciBpc0luaXRpYWxTdGF0ZTpZRVNdOworfQorCiB2b2lkIFBhZ2VWaXNpYmls
aXR5U3RhdGVXaXRoV2luZG93Q2hhbmdlczo6aW5pdGlhbGl6ZVZpZXcoV0tWaWV3ICp3a1ZpZXcp
CiB7CiAgICAgV0tQYWdlVUlDbGllbnRWMCB1aUNsaWVudDsKQEAgLTEwMyw2ICsxMTUsMTIgQEAg
dm9pZCBQYWdlVmlzaWJpbGl0eVN0YXRlV2l0aFdpbmRvd0NoYW5nZQogICAgIC8vIFdlIGRvIG5v
dCBuZWVkIHRvIHRlYXJkb3duIHRoZSBXS1BhZ2VVSUNsaWVudC4KIH0KIAordm9pZCBQYWdlVmlz
aWJpbGl0eVN0YXRlV2l0aFdpbmRvd0NoYW5nZXM6OnNldFByZXJlbmRlcihXS1ZpZXcgKndrVmll
dykKK3sKKyAgICBXS1BhZ2VTZXRWaXNpYmlsaXR5U3RhdGUod2tWaWV3LnBhZ2VSZWYsIGtXS1Bh
Z2VWaXNpYmlsaXR5U3RhdGVQcmVyZW5kZXIsIHRydWUpOworfQorCisKIHRlbXBsYXRlIDx0eXBl
bmFtZSBWaWV3Pgogdm9pZCBQYWdlVmlzaWJpbGl0eVN0YXRlV2l0aFdpbmRvd0NoYW5nZXM6OnJ1
blRlc3QoVmlldyB2aWV3KQogewpAQCAtMTEwLDM1ICsxMjgsNDkgQEAgdm9pZCBQYWdlVmlzaWJp
bGl0eVN0YXRlV2l0aFdpbmRvd0NoYW5nZQogICAgIEVYUEVDVF9OVUxMKFt2aWV3IHdpbmRvd10p
OwogICAgIEVYUEVDVF9OVUxMKFt2aWV3IHN1cGVydmlld10pOwogICAgIEVYUEVDVF9KU19FUSh2
aWV3LCAiZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlIiwgImhpZGRlbiIpOworICAgIEVYUEVDVF9K
U19FUSh2aWV3LCAiZG9jdW1lbnQuaGlkZGVuIiwgInRydWUiKTsKKworICAgIC8vIE1hcmsgdGhl
IHBhZ2UgYXMgYmVpbmcgYSAicHJlcmVuZGVyIi4KKyAgICBzZXRQcmVyZW5kZXIodmlldyk7Cisg
ICAgRVhQRUNUX0pTX0VRKHZpZXcsICJkb2N1bWVudC52aXNpYmlsaXR5U3RhdGUiLCAicHJlcmVu
ZGVyIik7CisgICAgRVhQRUNUX0pTX0VRKHZpZXcsICJkb2N1bWVudC5oaWRkZW4iLCAidHJ1ZSIp
OwogCi0gICAgLy8gQWRkIGl0IHRvIGEgbm9uLXZpc2libGUgd2luZG93LiBQYWdlVmlzaWJpbGl0
eSBzaG91bGQgc3RpbGwgYmUgImhpZGRlbiIuCisgICAgLy8gQWRkIGl0IHRvIGEgbm9uLXZpc2li
bGUgd2luZG93LiBQYWdlVmlzaWJpbGl0eSBzaG91bGQgc3RpbGwgYmUgInByZXJlbmRlciIuCiAg
ICAgUmV0YWluUHRyPE5TV2luZG93PiB3aW5kb3cgPSBhZG9wdE5TKFtbTlNXaW5kb3cgYWxsb2Nd
IGluaXRXaXRoQ29udGVudFJlY3Q6dmlldy5mcmFtZSBzdHlsZU1hc2s6TlNCb3JkZXJsZXNzV2lu
ZG93TWFzayBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6Tk9dKTsKICAgICBb
d2luZG93LmdldCgpLmNvbnRlbnRWaWV3IGFkZFN1YnZpZXc6dmlld107CiAgICAgRVhQRUNUX05P
VF9OVUxMKFt2aWV3IHdpbmRvd10pOwogICAgIEVYUEVDVF9OT1RfTlVMTChbdmlldyBzdXBlcnZp
ZXddKTsKICAgICBFWFBFQ1RfRkFMU0UoW3dpbmRvdy5nZXQoKSBpc1Zpc2libGVdKTsKLSAgICBF
WFBFQ1RfSlNfRVEodmlldywgImRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSIsICJoaWRkZW4iKTsK
KyAgICBFWFBFQ1RfSlNfRVEodmlldywgImRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSIsICJwcmVy
ZW5kZXIiKTsKKyAgICBFWFBFQ1RfSlNfRVEodmlldywgImRvY3VtZW50LmhpZGRlbiIsICJ0cnVl
Iik7CiAKICAgICAvLyBNYWtlIHRoZSB3aW5kb3cgdmlzaWJsZS4gUGFnZVZpc2liaWxpdHkgc2hv
dWxkIGJlY29tZSAidmlzaWJsZSIuCi0gICAgZGlkR2V0UGFnZVNpZ25hbFRvQ29udGludWUgPSBm
YWxzZTsgICAgCisgICAgaXNXYWl0aW5nRm9yUGFnZVNpZ25hbFRvQ29udGludWUgPSB0cnVlOwor
ICAgIGRpZEdldFBhZ2VTaWduYWxUb0NvbnRpbnVlID0gZmFsc2U7CiAgICAgW3dpbmRvdy5nZXQo
KSBtYWtlS2V5QW5kT3JkZXJGcm9udDpuaWxdOwogICAgIEVYUEVDVF9UUlVFKFt3aW5kb3cuZ2V0
KCkgaXNWaXNpYmxlXSk7CiAgICAgVXRpbDo6cnVuKCZkaWRHZXRQYWdlU2lnbmFsVG9Db250aW51
ZSk7CiAgICAgRVhQRUNUX0pTX0VRKHZpZXcsICJkb2N1bWVudC52aXNpYmlsaXR5U3RhdGUiLCAi
dmlzaWJsZSIpOworICAgIEVYUEVDVF9KU19FUSh2aWV3LCAiZG9jdW1lbnQuaGlkZGVuIiwgImZh
bHNlIik7CiAKICAgICAvLyBNaW5pbWl6ZSB0aGUgd2luZG93LiBQYWdlVmlzaWJpbGl0eSBzaG91
bGQgYmVjb21lICJoaWRkZW4iLgorICAgIGlzV2FpdGluZ0ZvclBhZ2VTaWduYWxUb0NvbnRpbnVl
ID0gdHJ1ZTsKICAgICBkaWRHZXRQYWdlU2lnbmFsVG9Db250aW51ZSA9IGZhbHNlOwogICAgIFt3
aW5kb3cuZ2V0KCkgbWluaWF0dXJpemU6bmlsXTsKICAgICBVdGlsOjpydW4oJmRpZEdldFBhZ2VT
aWduYWxUb0NvbnRpbnVlKTsKICAgICBFWFBFQ1RfSlNfRVEodmlldywgImRvY3VtZW50LnZpc2li
aWxpdHlTdGF0ZSIsICJoaWRkZW4iKTsKKyAgICBFWFBFQ1RfSlNfRVEodmlldywgImRvY3VtZW50
LmhpZGRlbiIsICJ0cnVlIik7CiAKICAgICAvLyBEZW1pbmltaXplIHRoZSB3aW5kb3cuIFBhZ2VW
aXNpYmlsaXR5IHNob3VsZCBiZWNvbWUgInZpc2libGUiLgorICAgIGlzV2FpdGluZ0ZvclBhZ2VT
aWduYWxUb0NvbnRpbnVlID0gdHJ1ZTsKICAgICBkaWRHZXRQYWdlU2lnbmFsVG9Db250aW51ZSA9
IGZhbHNlOwogICAgIFt3aW5kb3cuZ2V0KCkgZGVtaW5pYXR1cml6ZTpuaWxdOwogICAgIFV0aWw6
OnJ1bigmZGlkR2V0UGFnZVNpZ25hbFRvQ29udGludWUpOwogICAgIEVYUEVDVF9KU19FUSh2aWV3
LCAiZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlIiwgInZpc2libGUiKTsKKyAgICBFWFBFQ1RfSlNf
RVEodmlldywgImRvY3VtZW50LmhpZGRlbiIsICJmYWxzZSIpOwogCiAgICAgLy8gUmVtb3ZlIHRo
ZSBXZWJWaWV3IGZyb20gaXRzIHN1cGVydmlldy4gUGFnZVZpc2liaWxpdHkgc2hvdWxkIGJlY29t
ZSAiaGlkZGVuIi4KKyAgICBpc1dhaXRpbmdGb3JQYWdlU2lnbmFsVG9Db250aW51ZSA9IHRydWU7
CiAgICAgZGlkR2V0UGFnZVNpZ25hbFRvQ29udGludWUgPSBmYWxzZTsKICAgICBbdmlldyByZW1v
dmVGcm9tU3VwZXJ2aWV3XTsKICAgICBFWFBFQ1RfTlVMTChbdmlldyB3aW5kb3ddKTsKQEAgLTE0
Niw2ICsxNzgsNyBAQCB2b2lkIFBhZ2VWaXNpYmlsaXR5U3RhdGVXaXRoV2luZG93Q2hhbmdlCiAg
ICAgRVhQRUNUX1RSVUUoW3dpbmRvdy5nZXQoKSBpc1Zpc2libGVdKTsKICAgICBVdGlsOjpydW4o
JmRpZEdldFBhZ2VTaWduYWxUb0NvbnRpbnVlKTsKICAgICBFWFBFQ1RfSlNfRVEodmlldywgImRv
Y3VtZW50LnZpc2liaWxpdHlTdGF0ZSIsICJoaWRkZW4iKTsKKyAgICBFWFBFQ1RfSlNfRVEodmll
dywgImRvY3VtZW50LmhpZGRlbiIsICJ0cnVlIik7CiB9CiAgICAgCiBURVNUX0YoUGFnZVZpc2li
aWxpdHlTdGF0ZVdpdGhXaW5kb3dDaGFuZ2VzLCBXZWJLaXQpCkluZGV4OiBUb29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMTYwOTc2KQorKysgVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEx
NjcsNiArMTE2Nyw3IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OnNldEN1c3RvbVBvbGljeURlbGUK
IAogdm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0VmlzaWJpbGl0eVN0YXRlKFdLUGFnZVZpc2liaWxp
dHlTdGF0ZSB2aXNpYmlsaXR5U3RhdGUsIGJvb2wgaXNJbml0aWFsU3RhdGUpCiB7CisgICAgc2V0
SGlkZGVuKHZpc2liaWxpdHlTdGF0ZSAhPSBrV0tQYWdlVmlzaWJpbGl0eVN0YXRlVmlzaWJsZSk7
CiAgICAgV0tQYWdlU2V0VmlzaWJpbGl0eVN0YXRlKG1fbWFpbldlYlZpZXctPnBhZ2UoKSwgdmlz
aWJpbGl0eVN0YXRlLCBpc0luaXRpYWxTdGF0ZSk7CiB9CiAKSW5kZXg6IFRvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RDb250cm9sbGVyLmgJKHJldmlzaW9uIDE2MDk3NikKKysrIFRvb2xzL1dlYktp
dFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTY0LDYgKzE2
NCw4IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgcnVuTW9kYWwoV0tQYWdlUmVmLCBjb25z
dCB2b2lkKiBjbGllbnRJbmZvKTsKICAgICBzdGF0aWMgdm9pZCBydW5Nb2RhbChQbGF0Zm9ybVdl
YlZpZXcqKTsKIAorICAgIHZvaWQgc2V0SGlkZGVuKGJvb2wpOworCiAgICAgc3RhdGljIGNvbnN0
IGNoYXIqIGxpYnJhcnlQYXRoRm9yVGVzdGluZygpOwogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBw
bGF0Zm9ybUxpYnJhcnlQYXRoRm9yVGVzdGluZygpOwogCkluZGV4OiBUb29scy9XZWJLaXRUZXN0
UnVubmVyL2VmbC9UZXN0Q29udHJvbGxlckVmbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9lZmwvVGVzdENvbnRyb2xsZXJFZmwuY3BwCShyZXZpc2lvbiAxNjA5NzYp
CisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL2VmbC9UZXN0Q29udHJvbGxlckVmbC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEwMSw2ICsxMDEsMTEgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6cGxh
dGZvcm1Jbml0aWFsaXplQwogewogfQogCit2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRIaWRkZW4o
Ym9vbCkKK3sKKyAgICAvLyBGSVhNRTogTmVlZCB0byBpbXBsZW1lbnQgdGhpcyB0byB0ZXN0IHZp
c2liaWxpdHlTdGF0ZS4KK30KKwogdm9pZCBUZXN0Q29udHJvbGxlcjo6cnVuTW9kYWwoUGxhdGZv
cm1XZWJWaWV3KikKIHsKICAgICAvLyBGSVhNRTogTmVlZCB0byBpbXBsZW1lbnQgdGhpcyB0byB0
ZXN0IHNob3dNb2RhbERpYWxvZy4KSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL1Rl
c3RDb250cm9sbGVyR3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVy
L2d0ay9UZXN0Q29udHJvbGxlckd0ay5jcHAJKHJldmlzaW9uIDE2MDk3NikKKysrIFRvb2xzL1dl
YktpdFRlc3RSdW5uZXIvZ3RrL1Rlc3RDb250cm9sbGVyR3RrLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTAyLDYgKzEwMiwxMSBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUluaXRpYWxp
emVDCiB7CiB9CiAKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnNldEhpZGRlbihib29sKQoreworICAg
IC8vIEZJWE1FOiBOZWVkIHRvIGltcGxlbWVudCB0aGlzIHRvIHRlc3QgdmlzaWJpbGl0eVN0YXRl
LgorfQorCiB2b2lkIFRlc3RDb250cm9sbGVyOjpydW5Nb2RhbChQbGF0Zm9ybVdlYlZpZXcqKQog
ewogICAgIC8vIEZJWE1FOiBOZWVkIHRvIGltcGxlbWVudCB0aGlzIHRvIHRlc3Qgc2hvd01vZGFs
RGlhbG9nLgpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvVGVzdENvbnRyb2xsZXJN
YWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvVGVzdENvbnRy
b2xsZXJNYWMubW0JKHJldmlzaW9uIDE2MDk3NikKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIv
bWFjL1Rlc3RDb250cm9sbGVyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03OCw2ICs3OCwyMCBA
QCB2b2lkIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUluaXRpYWxpemVDCiB7CiB9CiAKK3ZvaWQg
VGVzdENvbnRyb2xsZXI6OnNldEhpZGRlbihib29sIGhpZGRlbikKK3sKKyAgICBOU1dpbmRvdyAq
d2luZG93ID0gW21haW5XZWJWaWV3KCktPnBsYXRmb3JtVmlldygpIHdpbmRvd107CisgICAgaWYg
KCF3aW5kb3cpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChoaWRkZW4pCisgICAgICAgIFt3
aW5kb3cgb3JkZXJPdXQ6bmlsXTsKKyAgICBlbHNlIHsKKyAgICAgICAgW3dpbmRvdyBtYWtlS2V5
QW5kT3JkZXJGcm9udDpuaWxdOworICAgICAgICBbTlNBcHAgYWN0aXZhdGVJZ25vcmluZ090aGVy
QXBwczpZRVNdOworICAgIH0KK30KKwogdm9pZCBUZXN0Q29udHJvbGxlcjo6cnVuTW9kYWwoUGxh
dGZvcm1XZWJWaWV3KiB2aWV3KQogewogICAgIE5TV2luZG93ICp3aW5kb3cgPSBbdmlldy0+cGxh
dGZvcm1WaWV3KCkgd2luZG93XTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2MTA1NykKKysrIExheW91
dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM5IEBACisyMDEzLTEy
LTI0ICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KKworICAgICAg
ICBNZXJnZSBQYWdlVmlzaWJpbGl0eVN0YXRlICYgVmlld1N0YXRlOjpJc1Zpc2libGUgaW4gV2Vi
S2l0MgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI2
MjE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2Vi
S2l0MiByZWR1bmRhbnRseSB0cmFja3MgdGhlIHZpc2liaWxpdHkgb2YgdGhlIHZpZXcgdGhyb3Vn
aCB0d28gbWVjaGFuaXNtcyAtIHRoZSB2aXNpYmlsaXR5CisgICAgICAgIHN0YXRlLCBhbmQgdGhl
IHZpZXcgc3RhdGUuIFJlbW92ZSB2aXNpYmlsaXR5IHN0YXRlIGZyb20gdGhlIFdlYktpdDIgbGF5
ZXIuIFRoZSB2aXNpYmlsaXR5CisgICAgICAgIHN0YXRlIGFsc28gdHJhY2tzIHRoZSAncHJldGVu
ZGVyJyBzdGF0ZSAtIHNvIHNwbGl0IHRoaXMgb3V0IGFuZCBoYW5kbGUgaXQgc2VwYXJhdGVseSAo
YSBjaGFuZ2UKKyAgICAgICAgd2Ugc2hvdWxkIG1ha2UgaW4gV2ViQ29yZSwgdG9vKS4KKworICAg
ICAgICBSZW1vdmluZyB0aGUgcmVkdW5kYW5jeSBhbHNvIHJlbW92ZXMgdGhlIGFiaWxpdHkgZnJv
bSB0aGUgQVBJIHRvIHNldCBhIGZha2UgdmlzaWJpbGl0eSBzdGF0ZQorICAgICAgICAoSXNWaXNp
YmxlIHRyYWNrcyB0aGUgYWN0dWFsIHZpc2liaWxpdHkgb2YgdGhlIHZpZXcpLiBUaHJvdWdoIHBy
aXZhdGUgQVBJCisgICAgICAgIChXS1BhZ2VTZXRWaXNpYmlsaXR5U3RhdGUpIGEgY2xpZW50IGNv
dWxkIHByZXZpb3VzbHkgcmVxdWVzdCB0aGUgdmlldyBiZSByZXBvcnRlZCBhcyBoaWRkZW4gb3IK
KyAgICAgICAgdmlzaWJsZSwgYnV0IHRoaXMgZGlkbid0IHJlYWxseSB3b3JrIC0gdGhlIG92ZXJy
aWRlIHdhcyBub3QgZW5mb3JjZWQgYW5kIHRoZSBBUEkgbWF5IHJlc2V0IHRoZQorICAgICAgICBz
dGF0ZSBhdCBhbiBhcmJpdHJhcnkgcG9pbnQuIFRoZSBtZWNoYW5pc20gaXMgb25seSB1c2VkIGJ5
IHRlc3RpbmcgY29kZSwgd2hpY2ggaW5zdGVhZCBzaG91bGQKKyAgICAgICAgYWN0dWFsbHkgdXBk
YXRlIHRoZSB2aWV3IHZpc2liaWxpdHkgKHRoaXMgdGVzdHMgbW9yZSBvZiB0aGUgYWN0dWFsIHZp
c2liaWxpdHkgbWVjaGFuaXNtcyB1c2VkCisgICAgICAgIGJ5IHRoZSBicm93c2VyKS4gVGhlIG9u
ZSBhc3BlY3Qgb2YgdGhlIEFQSSByZWxpZWQgb24gYnkgZXhpc3RpbmcgY2xpZW50cyBpcyB0aGUg
YWJpbGl0eSB0bworICAgICAgICBpbml0aWFsaXplIGEgaGlkZGVuIHZpZXcgYXMgcHJlcmVuZGVy
IC1jb250aW51ZSB0byBzdXBwb3J0IHRoaXMgc3BlY2lmaWMgZnVuY3Rpb25hbGl0eSB2aWEKKyAg
ICAgICAgV0tQYWdlU2V0VmlzaWJpbGl0eVN0YXRlLCB0byBtYWludGFpbiBiYWNrd2FyZHMgY29t
cGF0aWJpbGl0eS4KKworCisgICAgICAgIExheW91dFRlc3RzIC0gcmVtb3ZlIHRlc3QgZm9yIG5v
dGlmaWNhdGlvbiBvbiB2aXNpYmlsaXR5IHN0YXRlIGNoYW5nZSB0byBwcmVlcmVuZGVyLiBUaGlz
IHRlc3QKKyAgICAgICAgd2FzIGNvdmVyaW5nIHNvbWV0aGluZyBub25zZW5zaWNhbCwgYW5kIG5v
dCBzdXBwb3J0ZWQgYnkgdGhlIHNwZWMgLSB0aGUgcGFnZSBzaG91bGQgbmV2ZXIgc2VlCisgICAg
ICAgIGEgdmlzaWJpbGl0eSBjaGFuZ2UgdG8gcHJlcmVuZGVyLCB0aGlzIHNob3VsZCBvbmx5IGJl
IGFuIGluaXRpYWwgc3RhdGUuIFdlYktpdDIgQVBJIG5vdyBvbmx5CisgICAgICAgIGFsbG93cyB0
aGUgY2xpZW50IHRvIGNoYW5nZSB0aGUgc3RhdGUgdG8gcHJlcmVuZGVyIHdpdGhvdXQgc2VuZGlu
ZyBhIG5vdGlmaWNhdGlvbiwgYW5kIHRoZXJlCisgICAgICAgIGlzIG5vIHNlbnNlIGluIGNvbnRp
bnVpbmcgdG8gc3VwcG9ydCB0aGUgY3VycmVudCB0ZXN0IGNhc2UsIHNpbmNlIHRoZSBiZWhhdmlv
dXIgaXMgbmVpdGhlcgorICAgICAgICBhbGxvd2VkIGJ5IEFQSSBub3IgYXZhaWxhYmxlIGluIHdl
YiBjb250ZW50LgorCisgICAgICAgIFRoZSBwcmVyZW5kZXIgc3RhdGUgaXMgbm93IHByb3Blcmx5
IGNvdmVyZWQgYnkgQVBJIHRlc3RzLgorCisgICAgICAgICogZmFzdC9ldmVudHMvcGFnZS12aXNp
YmlsaXR5LXRyYW5zaXRpb24tdGVzdC1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9ldmVu
dHMvcGFnZS12aXNpYmlsaXR5LXRyYW5zaXRpb24tdGVzdC5odG1sOgorICAgICAgICAgICAgLSBy
ZW1vdmUgdGVzdCBmb3Igbm90aWZpY2F0aW9uIG9uIHZpc2liaWxpdHkgc3RhdGUgY2hhbmdlIHRv
IHByZWVyZW5kZXIuCisKIDIwMTMtMTItMjQgIFJhZHUgU3RhdmlsYSAgPHN0YXZpbGFAYWRvYmUu
Y29tPgogCiAgICAgICAgIFJlbmFtZSBmYXN0L3JlZ2lvbnMvcmVwYWludC9pbmNyZWFzaW5nLXJl
Z2lvbi1jb250ZW50LWhlaWdodC5odG1sIHRvIHNvbWV0aGluZyBtb3JlIGNsZWFyCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9wYWdlLXZpc2liaWxpdHktdHJhbnNpdGlvbi10ZXN0LWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9wYWdlLXZp
c2liaWxpdHktdHJhbnNpdGlvbi10ZXN0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTYwOTgwKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcGFnZS12aXNpYmlsaXR5LXRyYW5zaXRpb24tdGVz
dC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTksOCArOSw2IEBAIFBBU1MgZG9jdW1l
bnQudmlzaWJpbGl0eVN0YXRlIGlzICJoaWRkZW4KIFBBU1MgZG9jdW1lbnQuaGlkZGVuIGlzIHRy
dWUKIFBBU1MgZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlIGlzICJoaWRkZW4iCiBQQVNTIGRvY3Vt
ZW50LmhpZGRlbiBpcyB0cnVlCi1QQVNTIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSBpcyAicHJl
cmVuZGVyIgotUEFTUyBkb2N1bWVudC5oaWRkZW4gaXMgdHJ1ZQogUEFTUyBkb2N1bWVudC52aXNp
YmlsaXR5U3RhdGUgaXMgInZpc2libGUiCiBQQVNTIGRvY3VtZW50LmhpZGRlbiBpcyBmYWxzZQog
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMvcGFnZS12aXNpYmlsaXR5LXRyYW5zaXRpb24tdGVzdC5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3BhZ2UtdmlzaWJpbGl0eS10cmFuc2l0aW9uLXRlc3Qu
aHRtbAkocmV2aXNpb24gMTYwOTgwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcGFnZS12
aXNpYmlsaXR5LXRyYW5zaXRpb24tdGVzdC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwyNCAr
MzksMTEgQEAgZnVuY3Rpb24gY2hlY2tJc1BhZ2VIaWRkZW4oKSB7CiAgICAgc2hvdWxkQmVUcnVl
KCJkb2N1bWVudC5oaWRkZW4iKTsKIH0KIAotZnVuY3Rpb24gY2hlY2tJc1BhZ2VQcmVyZW5kZXJp
bmcoKSB7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkb2N1bWVudC52aXNpYmlsaXR5U3Rh
dGUiLCAicHJlcmVuZGVyIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJkb2N1bWVudC5oaWRkZW4iKTsK
LX0KLQotZnVuY3Rpb24gY2hlY2tJc1BhZ2VJblVubG9hZGVkKCkgewotICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygiZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlIiwgInVubG9hZGVkIik7Ci0gICAg
c2hvdWxkQmVUcnVlKCJkb2N1bWVudC5oaWRkZW4iKTsKLX0KLQogLy8gV2Ugd2lsbCB0cnkgdG8g
Y2hhbmdlIHRoZSB2aXNpYmlsaXR5IHN0YXRlcyBhczoKIC8vICAwIC0gdmlzaWJsZS4gKEluaXRp
YWwgLSBpLmUuIG9uIGxvYWQpLgogLy8gIDEgLSBoaWRkZW4gKHNob3VsZCBmaXJlIGV2ZW50KS4K
IC8vICAyIC0gaGlkZGVuIChubyBldmVudCkuCi0vLyAgMyAtIHByZXJlbmRlciAoc2hvdWxkIGZp
cmUgZXZlbnQpLgotLy8gIDQgLSB2aXNpYmxlIChzaG91bGQgZmlyZSBldmVudCkuCi0vLyAgNSAt
IHVubG9hZGVkIChzaG91bGQgZmlyZSBldmVudCkuCi0vLyAgNiAtIHZpc2libGUgKHNob3VsZCBm
aXJlIGV2ZW50KS4KKy8vICAzIC0gdmlzaWJsZSAoc2hvdWxkIGZpcmUgZXZlbnQpLgogdmFyIG51
bVZpc2liaWxpdHlDaGFuZ2VzID0gMDsKIAogZnVuY3Rpb24gc3RhcnRUZXN0KCkgewpAQCAtODEs
MTggKzY4LDEzIEBAIGZ1bmN0aW9uIG9uVmlzaWJpbGl0eUNoYW5nZSgpIHsKICAgICAgICAgbWFr
ZVBhZ2VIaWRkZW4oKTsKICAgICAgICAgY2hlY2tJc1BhZ2VIaWRkZW4oKTsKICAgICAgICAgbnVt
VmlzaWJpbGl0eUNoYW5nZXMrKzsKLSAgICAgICAgbWFrZVBhZ2VQcmVyZW5kZXIoKTsKKyAgICAg
ICAgbWFrZVBhZ2VWaXNpYmxlKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9IGVsc2UgaWYgKG51
bVZpc2liaWxpdHlDaGFuZ2VzID09IDIpIHsKICAgICAgICAgdGVzdEZhaWxlZCgiSW52YWxpZCBl
dmVudCBmaXJlZCBvbiBzYW1lIHN0YXRlIGNoYW5nZS4iKTsKICAgICAgICAgZmluaXNoVGVzdCgp
OwogICAgICAgICByZXR1cm47CiAgICAgfSBlbHNlIGlmIChudW1WaXNpYmlsaXR5Q2hhbmdlcyA9
PSAzKSB7Ci0gICAgICAgIGNoZWNrSXNQYWdlUHJlcmVuZGVyaW5nKCk7Ci0gICAgICAgIG51bVZp
c2liaWxpdHlDaGFuZ2VzKys7Ci0gICAgICAgIG1ha2VQYWdlVmlzaWJsZSgpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfSBlbHNlIGlmIChudW1WaXNpYmlsaXR5Q2hhbmdlcyA9PSA0KSB7CiAgICAg
ICAgIGNoZWNrSXNQYWdlVmlzaWJsZSgpOwogICAgICAgICBudW1WaXNpYmlsaXR5Q2hhbmdlcysr
OwogICAgICAgICBmaW5pc2hUZXN0KCk7Cg==
</data>
<flag name="commit-queue"
          id="243672"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>220008</attachid>
            <date>2013-12-25 15:43:19 -0800</date>
            <delta_ts>2013-12-25 21:57:08 -0800</delta_ts>
            <desc>efl build fix take 2</desc>
            <filename>126214.3.patch</filename>
            <type>text/plain</type>
            <size>43738</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2MTA1NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDEzLTEyLTI0ICBHYXZpbiBC
YXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KKworICAgICAgICBNZXJnZSBQYWdl
VmlzaWJpbGl0eVN0YXRlICYgVmlld1N0YXRlOjpJc1Zpc2libGUgaW4gV2ViS2l0MgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI2MjE0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViS2l0MiByZWR1bmRh
bnRseSB0cmFja3MgdGhlIHZpc2liaWxpdHkgb2YgdGhlIHZpZXcgdGhyb3VnaCB0d28gbWVjaGFu
aXNtcyAtIHRoZSB2aXNpYmlsaXR5CisgICAgICAgIHN0YXRlLCBhbmQgdGhlIHZpZXcgc3RhdGUu
IFJlbW92ZSB2aXNpYmlsaXR5IHN0YXRlIGZyb20gdGhlIFdlYktpdDIgbGF5ZXIuIFRoZSB2aXNp
YmlsaXR5CisgICAgICAgIHN0YXRlIGFsc28gdHJhY2tzIHRoZSAncHJldGVuZGVyJyBzdGF0ZSAt
IHNvIHNwbGl0IHRoaXMgb3V0IGFuZCBoYW5kbGUgaXQgc2VwYXJhdGVseSAoYSBjaGFuZ2UKKyAg
ICAgICAgd2Ugc2hvdWxkIG1ha2UgaW4gV2ViQ29yZSwgdG9vKS4KKworICAgICAgICBSZW1vdmlu
ZyB0aGUgcmVkdW5kYW5jeSBhbHNvIHJlbW92ZXMgdGhlIGFiaWxpdHkgZnJvbSB0aGUgQVBJIHRv
IHNldCBhIGZha2UgdmlzaWJpbGl0eSBzdGF0ZQorICAgICAgICAoSXNWaXNpYmxlIHRyYWNrcyB0
aGUgYWN0dWFsIHZpc2liaWxpdHkgb2YgdGhlIHZpZXcpLiBUaHJvdWdoIHByaXZhdGUgQVBJCisg
ICAgICAgIChXS1BhZ2VTZXRWaXNpYmlsaXR5U3RhdGUpIGEgY2xpZW50IGNvdWxkIHByZXZpb3Vz
bHkgcmVxdWVzdCB0aGUgdmlldyBiZSByZXBvcnRlZCBhcyBoaWRkZW4gb3IKKyAgICAgICAgdmlz
aWJsZSwgYnV0IHRoaXMgZGlkbid0IHJlYWxseSB3b3JrIC0gdGhlIG92ZXJyaWRlIHdhcyBub3Qg
ZW5mb3JjZWQgYW5kIHRoZSBBUEkgbWF5IHJlc2V0IHRoZQorICAgICAgICBzdGF0ZSBhdCBhbiBh
cmJpdHJhcnkgcG9pbnQuIFRoZSBtZWNoYW5pc20gaXMgb25seSB1c2VkIGJ5IHRlc3RpbmcgY29k
ZSwgd2hpY2ggaW5zdGVhZCBzaG91bGQKKyAgICAgICAgYWN0dWFsbHkgdXBkYXRlIHRoZSB2aWV3
IHZpc2liaWxpdHkgKHRoaXMgdGVzdHMgbW9yZSBvZiB0aGUgYWN0dWFsIHZpc2liaWxpdHkgbWVj
aGFuaXNtcyB1c2VkCisgICAgICAgIGJ5IHRoZSBicm93c2VyKS4gVGhlIG9uZSBhc3BlY3Qgb2Yg
dGhlIEFQSSByZWxpZWQgb24gYnkgZXhpc3RpbmcgY2xpZW50cyBpcyB0aGUgYWJpbGl0eSB0bwor
ICAgICAgICBpbml0aWFsaXplIGEgaGlkZGVuIHZpZXcgYXMgcHJlcmVuZGVyIC1jb250aW51ZSB0
byBzdXBwb3J0IHRoaXMgc3BlY2lmaWMgZnVuY3Rpb25hbGl0eSB2aWEKKyAgICAgICAgV0tQYWdl
U2V0VmlzaWJpbGl0eVN0YXRlLCB0byBtYWludGFpbiBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS4K
KworCisgICAgICAgIFdlYkNvcmUgLSBjaG5hZ2VzIHRoZSB0aGUgQVBJIHRlc3RzIGV4cG9zZWQg
YSBidWcsIGEgdmlldyBzaG91bGQgb25seSBldmVyIGNvbWUgb3V0IG9mIHRoZQorICAgICAgICBw
cmVyZW5kZXIgc3RhdGUgd2hlbiBpdCBiZWNvbWVzIHZpc2libGUgLSByZWR1bmRhbnQgbm90aWZp
Y2F0aW9ucyB0aGF0IHRoZSB2aWV3IGlzIHN0aWxsCisgICAgICAgIGhpZGRlbiBzaG91bGQgYmUg
aWdub3JlZC4KKworICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
YWdlOjpzZXRWaXNpYmlsaXR5U3RhdGUpOgorICAgICAgICAgICAgLSBpZ25vcmUgdmlzaWJpbGl0
eSBzdGF0ZSBjaGFuZ2UgdG8gaGlkZGVuLCBpZiB0aGUgY3VycmVudCBzdGF0ZSBpcyBwcmVyZW5k
ZXIuCisKIDIwMTMtMTItMjQgIE1paG5lYSBPdmlkZW5pZSAgPG1paG5lYUBhZG9iZS5jb20+CiAK
ICAgICAgICAgW0NTU1JlZ2lvbnNdIENyYXNoIHdoaWxlIHJlcGFpbnRpbmcgYW4gaW52YWxpZCBy
ZWdpb24KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAkocmV2aXNpb24gMTYwOTc2KQorKysgU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI0Niw2ICsxMjQ2LDgg
QEAgdm9pZCBQYWdlOjpzZXRWaXNpYmlsaXR5U3RhdGUoUGFnZVZpc2liaQogCiAgICAgaWYgKG1f
dmlzaWJpbGl0eVN0YXRlID09IHZpc2liaWxpdHlTdGF0ZSkKICAgICAgICAgcmV0dXJuOworICAg
IGlmIChtX3Zpc2liaWxpdHlTdGF0ZSA9PSBQYWdlVmlzaWJpbGl0eVN0YXRlUHJlcmVuZGVyICYm
IHZpc2liaWxpdHlTdGF0ZSA9PSBQYWdlVmlzaWJpbGl0eVN0YXRlSGlkZGVuKQorICAgICAgICBy
ZXR1cm47CiAgICAgbV92aXNpYmlsaXR5U3RhdGUgPSB2aXNpYmlsaXR5U3RhdGU7CiAKICAgICBp
ZiAoIWlzSW5pdGlhbFN0YXRlKSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNjEwNTcpCisr
KyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1OCBA
QAorMjAxMy0xMi0yNCAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+
CisKKyAgICAgICAgTWVyZ2UgUGFnZVZpc2liaWxpdHlTdGF0ZSAmIFZpZXdTdGF0ZTo6SXNWaXNp
YmxlIGluIFdlYktpdDIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEyNjIxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFdlYktpdDIgcmVkdW5kYW50bHkgdHJhY2tzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSB2
aWV3IHRocm91Z2ggdHdvIG1lY2hhbmlzbXMgLSB0aGUgdmlzaWJpbGl0eQorICAgICAgICBzdGF0
ZSwgYW5kIHRoZSB2aWV3IHN0YXRlLiBSZW1vdmUgdmlzaWJpbGl0eSBzdGF0ZSBmcm9tIHRoZSBX
ZWJLaXQyIGxheWVyLiBUaGUgdmlzaWJpbGl0eQorICAgICAgICBzdGF0ZSBhbHNvIHRyYWNrcyB0
aGUgJ3ByZXRlbmRlcicgc3RhdGUgLSBzbyBzcGxpdCB0aGlzIG91dCBhbmQgaGFuZGxlIGl0IHNl
cGFyYXRlbHkgKGEgY2hhbmdlCisgICAgICAgIHdlIHNob3VsZCBtYWtlIGluIFdlYkNvcmUsIHRv
bykuCisKKyAgICAgICAgUmVtb3ZpbmcgdGhlIHJlZHVuZGFuY3kgYWxzbyByZW1vdmVzIHRoZSBh
YmlsaXR5IGZyb20gdGhlIEFQSSB0byBzZXQgYSBmYWtlIHZpc2liaWxpdHkgc3RhdGUKKyAgICAg
ICAgKElzVmlzaWJsZSB0cmFja3MgdGhlIGFjdHVhbCB2aXNpYmlsaXR5IG9mIHRoZSB2aWV3KS4g
VGhyb3VnaCBwcml2YXRlIEFQSQorICAgICAgICAoV0tQYWdlU2V0VmlzaWJpbGl0eVN0YXRlKSBh
IGNsaWVudCBjb3VsZCBwcmV2aW91c2x5IHJlcXVlc3QgdGhlIHZpZXcgYmUgcmVwb3J0ZWQgYXMg
aGlkZGVuIG9yCisgICAgICAgIHZpc2libGUsIGJ1dCB0aGlzIGRpZG4ndCByZWFsbHkgd29yayAt
IHRoZSBvdmVycmlkZSB3YXMgbm90IGVuZm9yY2VkIGFuZCB0aGUgQVBJIG1heSByZXNldCB0aGUK
KyAgICAgICAgc3RhdGUgYXQgYW4gYXJiaXRyYXJ5IHBvaW50LiBUaGUgbWVjaGFuaXNtIGlzIG9u
bHkgdXNlZCBieSB0ZXN0aW5nIGNvZGUsIHdoaWNoIGluc3RlYWQgc2hvdWxkCisgICAgICAgIGFj
dHVhbGx5IHVwZGF0ZSB0aGUgdmlldyB2aXNpYmlsaXR5ICh0aGlzIHRlc3RzIG1vcmUgb2YgdGhl
IGFjdHVhbCB2aXNpYmlsaXR5IG1lY2hhbmlzbXMgdXNlZAorICAgICAgICBieSB0aGUgYnJvd3Nl
cikuIFRoZSBvbmUgYXNwZWN0IG9mIHRoZSBBUEkgcmVsaWVkIG9uIGJ5IGV4aXN0aW5nIGNsaWVu
dHMgaXMgdGhlIGFiaWxpdHkgdG8KKyAgICAgICAgaW5pdGlhbGl6ZSBhIGhpZGRlbiB2aWV3IGFz
IHByZXJlbmRlciAtY29udGludWUgdG8gc3VwcG9ydCB0aGlzIHNwZWNpZmljIGZ1bmN0aW9uYWxp
dHkgdmlhCisgICAgICAgIFdLUGFnZVNldFZpc2liaWxpdHlTdGF0ZSwgdG8gbWFpbnRhaW4gYmFj
a3dhcmRzIGNvbXBhdGliaWxpdHkuCisKKworICAgICAgICAtIFdlYktpdDIgLSByZW1vdmUgaW50
ZXJuYWwgc3RhdGUgdGhhdCB0cmFja3MgcGFnZSB2aXNpYmlsaXR5IHNlcGFyYXRlbHkgZnJvbSB0
aGUgdmlldyBzdGF0ZQorICAgICAgICB2aXNpYmlsaXR5LiBGb3IgYmFja3dhcmRzIGNvbXBhdGli
aWxpdHkgY29udGludWUgdG8gc3VwcG9ydCB0aGUgV0tQYWdlU2V0VmlzaWJpbGl0eVN0YXRlIEFQ
SSwKKyAgICAgICAgYnV0IG9ubHkgdG8gaW5pdGlhbGl6ZSB0aGUgc3RhdGUgdG8gcHJlcmVuZGVy
LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAgIChXS1Bh
Z2VTZXRWaXNpYmlsaXR5U3RhdGUpOgorICAgICAgICAgICAgLSBvbmx5IHN1cHBvcnQgaW5pdGlh
bGl6aW5nIHRoZSB2aXNpYmlsaXR5IHN0YXRlIHRvIHByZXJlbmRlci4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpX
ZWJQYWdlUHJveHkpOgorICAgICAgICAgICAgLSByZW1vdmUgbV92aXNpYmlsaXR5U3RhdGUKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojppbml0aWFsaXplV2ViUGFnZSk6CisgICAgICAg
ICAgICAtIG5vIG5lZWQgdG8gc2VuZCBpbml0aWFsIHZpc2liaWxpdHkgc3RhdGUgKHRoaXMgaXMg
c2VudCBhcyBhIHBhcnQgb2YgdGhlIGNyZWF0aW9uIHBhcmFtZXRlcnMpLgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OnZpZXdTdGF0ZURpZENoYW5nZSk6CisgICAgICAgICAgICAtIG5v
IG5lZWQgdG8gc2VuZCB2aXNpYmlsaXR5IHN0YXRlIGNoYW5nZSAodGhpcyBpcyBzZW50IGFzIGEg
cGFydCBvZiB2aWV3IHN0YXRlKS4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRW
aXNpYmlsaXR5U3RhdGVQcmVyZW5kZXIpOgorICAgICAgICAgICAgLSBzZXRWaXNpYmlsaXR5U3Rh
dGUgLT4gc2V0VmlzaWJpbGl0eVN0YXRlUHJlcmVuZGVyLgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaDoKKyAgICAgICAgICAgIC0gcmVtb3ZlIG1fdmlzaWJpbGl0eVN0YXRlLCBz
ZXRWaXNpYmlsaXR5U3RhdGUgLT4gc2V0VmlzaWJpbGl0eVN0YXRlUHJlcmVuZGVyLgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6V2ViUGFnZSk6CisgICAgICAgICAgICAtIGFkZGVkIGNhbGwgdG8gdXBkYXRlVmlzaWJp
bGl0eVN0YXRlLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRWaWV3SXNWaXNpYmxlKToK
KyAgICAgICAgICAgIC0gYWRkZWQgY2FsbCB0byB1cGRhdGVWaXNpYmlsaXR5U3RhdGUuCisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZVZpc2liaWxpdHlTdGF0ZSk6CisgICAgICAgICAg
ICAtIHByZXZpb3VzbHkgc2V0VmlzaWJpbGl0eVN0YXRlLCB1cGRhdGVzIHRoZSBwYWdlIHZpc2li
aWxpdHkgc3RhdGUgYWNjb3JkaW5nIHRvIHRoZSB2aWV3IHN0YXRlLgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjpzZXRWaXNpYmlsaXR5U3RhdGVQcmVyZW5kZXIpOgorICAgICAgICAgICAgLSBz
ZXQgdmlzaWJpbGl0eSBzdGF0ZSB0byBwcmVyZW5kZXIuCisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgICAgIC0gcmVtb3ZlIG1fdmlzaWJpbGl0eVN0YXRl
LCBzZXRWaXNpYmlsaXR5U3RhdGUgLT4gc2V0VmlzaWJpbGl0eVN0YXRlUHJlcmVuZGVyLgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorICAgICAgICAg
ICAgLSBTZXRWaXNpYmlsaXR5U3RhdGUgLT4gU2V0VmlzaWJpbGl0eVN0YXRlUHJlcmVuZGVyLgor
CiAyMDEzLTEyLTI0ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAg
IDMyLWJpdCBNYWMgYnVpbGQgZml4IGF0dGVtcHQgYWZ0ZXIgcjE2MTA0NS4KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAxNjA5NzcpCisr
KyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzA1LDE5ICszMDUsMTIgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNs
aWVudCYgcAogICAgICwgbV9jbGlwc1RvRXhwb3NlZFJlY3QoZmFsc2UpCiAgICAgLCBtX2xhc3RT
ZW50Q2xpcHNUb0V4cG9zZWRSZWN0KGZhbHNlKQogI2VuZGlmCi0jaWYgRU5BQkxFKFBBR0VfVklT
SUJJTElUWV9BUEkpCi0gICAgLCBtX3Zpc2liaWxpdHlTdGF0ZShQYWdlVmlzaWJpbGl0eVN0YXRl
VmlzaWJsZSkKLSNlbmRpZgogICAgICwgbV9zY3JvbGxQaW5uaW5nQmVoYXZpb3IoRG9Ob3RQaW4p
CiB7CiAgICAgdXBkYXRlVmlld1N0YXRlKCk7CiAKICAgICBwbGF0Zm9ybUluaXRpYWxpemUoKTsK
IAotI2lmIEVOQUJMRShQQUdFX1ZJU0lCSUxJVFlfQVBJKQotICAgIGlmICghaXNWaWV3VmlzaWJs
ZSgpKQotICAgICAgICBtX3Zpc2liaWxpdHlTdGF0ZSA9IFBhZ2VWaXNpYmlsaXR5U3RhdGVIaWRk
ZW47Ci0jZW5kaWYKICNpZm5kZWYgTkRFQlVHCiAgICAgd2ViUGFnZVByb3h5Q291bnRlci5pbmNy
ZW1lbnQoKTsKICNlbmRpZgpAQCAtNTE1LDEyICs1MDgsNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
aW5pdGlhbGl6ZVdlYlBhZ2UoKQogICAgIGluaXRpYWxpemVDcmVhdGlvblBhcmFtZXRlcnMoKTsK
ICAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6Q3JlYXRlV2ViUGFnZSht
X3BhZ2VJRCwgbV9jcmVhdGlvblBhcmFtZXRlcnMpLCAwKTsKIAotI2lmIEVOQUJMRShQQUdFX1ZJ
U0lCSUxJVFlfQVBJKQotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFZpc2liaWxpdHlT
dGF0ZShtX3Zpc2liaWxpdHlTdGF0ZSwgLyogaXNJbml0aWFsU3RhdGUgKi8gdHJ1ZSkpOwotI2Vs
aWYgRU5BQkxFKEhJRERFTl9QQUdFX0RPTV9USU1FUl9USFJPVFRMSU5HKQotICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlNldFZpc2liaWxpdHlTdGF0ZShpc1ZpZXdWaXNpYmxlKCkgPyBQYWdl
VmlzaWJpbGl0eVN0YXRlVmlzaWJsZSA6IFBhZ2VWaXNpYmlsaXR5U3RhdGVIaWRkZW4sIC8qIGlz
SW5pdGlhbFN0YXRlICovIHRydWUpKTsKLSNlbmRpZgotCiAjaWYgUExBVEZPUk0oTUFDKQogICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZChtX2lz
U21hcnRJbnNlcnREZWxldGVFbmFibGVkKSk7CiAjZW5kaWYKQEAgLTk3NSwxNCArOTYyLDYgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnZpZXdTdGF0ZURpZENoYW5nZShWaQogICAgICAgICAgICAgLy8g
c3RvcCB0aGUgdW5yZXNwb25zaXZlbmVzcyB0aW1lciBoZXJlLgogICAgICAgICAgICAgbV9wcm9j
ZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCktPnN0b3AoKTsKICAgICAgICAgfQotCi0jaWYgRU5B
QkxFKFBBR0VfVklTSUJJTElUWV9BUEkpCi0gICAgICAgIG1fdmlzaWJpbGl0eVN0YXRlID0gaXNW
aWV3VmlzaWJsZSgpID8gUGFnZVZpc2liaWxpdHlTdGF0ZVZpc2libGUgOiBQYWdlVmlzaWJpbGl0
eVN0YXRlSGlkZGVuOwotICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlNldFZpc2liaWxpdHlTdGF0ZShtX3Zpc2liaWxpdHlTdGF0ZSwgZmFsc2UpLCBtX3BhZ2VJRCk7
Ci0jZWxpZiBFTkFCTEUoSElEREVOX1BBR0VfRE9NX1RJTUVSX1RIUk9UVExJTkcpCi0gICAgICAg
IFBhZ2VWaXNpYmlsaXR5U3RhdGUgdmlzaWJpbGl0eVN0YXRlID0gaXNWaWV3VmlzaWJsZSgpID8g
UGFnZVZpc2liaWxpdHlTdGF0ZVZpc2libGUgOiBQYWdlVmlzaWJpbGl0eVN0YXRlSGlkZGVuOwot
ICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFZpc2liaWxpdHlT
dGF0ZSh2aXNpYmlsaXR5U3RhdGUsIGZhbHNlKSwgbV9wYWdlSUQpOwotI2VuZGlmCiAgICAgfQog
CiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1JfUE9QT1ZFUikKQEAgLTE2NzYsMjAgKzE2NTUs
MTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6Omxpc3RlbkZvckxheW91dE1pbGVzdAogICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TGlzdGVuRm9yTGF5b3V0TWlsZXN0b25lcyht
aWxlc3RvbmVzKSwgbV9wYWdlSUQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6c2V0VmlzaWJp
bGl0eVN0YXRlKFdlYkNvcmU6OlBhZ2VWaXNpYmlsaXR5U3RhdGUgdmlzaWJpbGl0eVN0YXRlLCBi
b29sIGlzSW5pdGlhbFN0YXRlKQordm9pZCBXZWJQYWdlUHJveHk6OnNldFZpc2liaWxpdHlTdGF0
ZVByZXJlbmRlcigpCiB7CiAgICAgaWYgKCFpc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybjsKLQot
I2lmIEVOQUJMRShQQUdFX1ZJU0lCSUxJVFlfQVBJKQotICAgIGlmICh2aXNpYmlsaXR5U3RhdGUg
IT0gbV92aXNpYmlsaXR5U3RhdGUgfHwgaXNJbml0aWFsU3RhdGUpIHsKLSAgICAgICAgbV92aXNp
YmlsaXR5U3RhdGUgPSB2aXNpYmlsaXR5U3RhdGU7Ci0gICAgICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6U2V0VmlzaWJpbGl0eVN0YXRlKHZpc2liaWxpdHlTdGF0ZSwgaXNJ
bml0aWFsU3RhdGUpLCBtX3BhZ2VJRCk7Ci0gICAgfQotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0o
dmlzaWJpbGl0eVN0YXRlKTsKLSAgICBVTlVTRURfUEFSQU0oaXNJbml0aWFsU3RhdGUpOwotI2Vu
ZGlmCisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRWaXNpYmlsaXR5
U3RhdGVQcmVyZW5kZXIoKSwgbV9wYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0
U3VwcHJlc3NTY3JvbGxiYXJBbmltYXRpb25zKGJvb2wgc3VwcHJlc3NBbmltYXRpb25zKQpJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gMTYwOTc3
KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNv
cHkpCkBAIC01NjEsNyArNTYxLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBsaXN0ZW5Gb3JMYXlv
dXRNaWxlc3RvbmVzKFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZXMpOwogCi0gICAgdm9pZCBzZXRW
aXNpYmlsaXR5U3RhdGUoV2ViQ29yZTo6UGFnZVZpc2liaWxpdHlTdGF0ZSwgYm9vbCBpc0luaXRp
YWxTdGF0ZSk7CisgICAgdm9pZCBzZXRWaXNpYmlsaXR5U3RhdGVQcmVyZW5kZXIoKTsKICAgICB2
b2lkIGRpZFVwZGF0ZVZpZXdTdGF0ZSgpIHsgbV93YWl0aW5nRm9yRGlkVXBkYXRlVmlld1N0YXRl
ID0gZmFsc2U7IH0KIAogICAgIGJvb2wgaGFzSG9yaXpvbnRhbFNjcm9sbGJhcigpIGNvbnN0IHsg
cmV0dXJuIG1fbWFpbkZyYW1lSGFzSG9yaXpvbnRhbFNjcm9sbGJhcjsgfQpAQCAtMTM2NCwxMCAr
MTM2NCw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2xhc3RTZW50Q2xpcHNUb0V4cG9zZWRSZWN0
OwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoUEFHRV9WSVNJQklMSVRZX0FQSSkKLSAgICBXZWJDb3Jl
OjpQYWdlVmlzaWJpbGl0eVN0YXRlIG1fdmlzaWJpbGl0eVN0YXRlOwotI2VuZGlmCi0KICNpZiBQ
TEFURk9STShNQUMpCiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gbV90ZW1wb3JhcnlQREZG
aWxlczsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFn
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFn
ZS5jcHAJKHJldmlzaW9uIDE2MDk3NikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MTAsOSArNDEwLDEwIEBAIHZvaWQgV0tQ
YWdlTGlzdGVuRm9yTGF5b3V0TWlsZXN0b25lcyhXS1AKICAgICB0b0ltcGwocGFnZVJlZiktPmxp
c3RlbkZvckxheW91dE1pbGVzdG9uZXModG9MYXlvdXRNaWxlc3RvbmVzKG1pbGVzdG9uZXMpKTsK
IH0KIAotdm9pZCBXS1BhZ2VTZXRWaXNpYmlsaXR5U3RhdGUoV0tQYWdlUmVmIHBhZ2VSZWYsIFdL
UGFnZVZpc2liaWxpdHlTdGF0ZSBzdGF0ZSwgYm9vbCBpc0luaXRpYWxTdGF0ZSkKK3ZvaWQgV0tQ
YWdlU2V0VmlzaWJpbGl0eVN0YXRlKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1BhZ2VWaXNpYmlsaXR5
U3RhdGUgc3RhdGUsIGJvb2wpCiB7Ci0gICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRWaXNpYmlsaXR5
U3RhdGUodG9QYWdlVmlzaWJpbGl0eVN0YXRlKHN0YXRlKSwgaXNJbml0aWFsU3RhdGUpOworICAg
IGlmIChzdGF0ZSA9PSBrV0tQYWdlVmlzaWJpbGl0eVN0YXRlUHJlcmVuZGVyKQorICAgICAgICB0
b0ltcGwocGFnZVJlZiktPnNldFZpc2liaWxpdHlTdGF0ZVByZXJlbmRlcigpOwogfQogCiBib29s
IFdLUGFnZUhhc0hvcml6b250YWxTY3JvbGxiYXIoV0tQYWdlUmVmIHBhZ2VSZWYpCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lv
biAxNjA5NzcpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI3Niw5ICsyNzYsNiBAQCBXZWJQYWdlOjpXZWJQYWdlKHVp
bnQ2NF90IHBhZ2VJRCwgY29uc3QgCiAjaWYgUExBVEZPUk0oSU9TKQogICAgICwgbV9zaG91bGRS
ZXR1cm5Xb3JkQXRTZWxlY3Rpb24oZmFsc2UpCiAjZW5kaWYKLSNpZiBFTkFCTEUoUEFHRV9WSVNJ
QklMSVRZX0FQSSkKLSAgICAsIG1fdmlzaWJpbGl0eVN0YXRlKFdlYkNvcmU6OlBhZ2VWaXNpYmls
aXR5U3RhdGVWaXNpYmxlKQotI2VuZGlmCiAgICAgLCBtX2luc3BlY3RvckNsaWVudCgwKQogICAg
ICwgbV9iYWNrZ3JvdW5kQ29sb3IoQ29sb3I6OndoaXRlKQogICAgICwgbV9tYXhpbXVtUmVuZGVy
aW5nU3VwcHJlc3Npb25Ub2tlbigwKQpAQCAtNDI2LDYgKzQyMyw4IEBAIFdlYlBhZ2U6OldlYlBh
Z2UodWludDY0X3QgcGFnZUlELCBjb25zdCAKICAgICBpZiAobV91c2VUaHJlYWRlZFNjcm9sbGlu
ZykKICAgICAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuZXZlbnREaXNwYXRjaGVyKCkuYWRkU2Ny
b2xsaW5nVHJlZUZvclBhZ2UodGhpcyk7CiAjZW5kaWYKKworICAgIHVwZGF0ZVZpc2liaWxpdHlT
dGF0ZSh0cnVlKTsKIH0KIAogV2ViUGFnZTo6fldlYlBhZ2UoKQpAQCAtMTkzNCw2ICsxOTMzLDgg
QEAgdm9pZCBXZWJQYWdlOjpzZXRWaWV3SXNWaXNpYmxlKGJvb2wgaXNWaQogICAgICAgICAgICAg
bV9wYWdlLT5yZXN1bWVBbmltYXRpbmdJbWFnZXMoKTsKICAgICAgICAgfQogICAgIH0KKworICAg
IHVwZGF0ZVZpc2liaWxpdHlTdGF0ZSgpOwogfQogCiB2b2lkIFdlYlBhZ2U6OnNldERyYXdzQmFj
a2dyb3VuZChib29sIGRyYXdzQmFja2dyb3VuZCkKQEAgLTM3MDUsNDEgKzM3MDYsNTAgQEAgRnJh
bWVWaWV3KiBXZWJQYWdlOjptYWluRnJhbWVWaWV3KCkgY29ucwogICAgIHJldHVybiAwOwogfQog
Ci0jaWYgRU5BQkxFKFBBR0VfVklTSUJJTElUWV9BUEkpIHx8IEVOQUJMRShISURERU5fUEFHRV9E
T01fVElNRVJfVEhST1RUTElORykKLXZvaWQgV2ViUGFnZTo6c2V0VmlzaWJpbGl0eVN0YXRlKHVp
bnQzMl90IHZpc2liaWxpdHlTdGF0ZSwgYm9vbCBpc0luaXRpYWxTdGF0ZSkKK3ZvaWQgV2ViUGFn
ZTo6dXBkYXRlVmlzaWJpbGl0eVN0YXRlKGJvb2wgaXNJbml0aWFsU3RhdGUpCiB7CisgICAgYm9v
bCBpc1Zpc2libGUgPSBtX3ZpZXdTdGF0ZSAmIFZpZXdTdGF0ZTo6SXNWaXNpYmxlOwogICAgIGlm
ICghbV9wYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBXZWJDb3JlOjpQYWdlVmlzaWJpbGl0
eVN0YXRlIHN0YXRlID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6UGFnZVZpc2liaWxpdHlTdGF0ZT4o
dmlzaWJpbGl0eVN0YXRlKTsKLQogI2lmIEVOQUJMRShQQUdFX1ZJU0lCSUxJVFlfQVBJKQotICAg
IGlmIChtX3Zpc2liaWxpdHlTdGF0ZSA9PSBzdGF0ZSkKLSAgICAgICAgcmV0dXJuOwogCiAgICAg
RnJhbWVWaWV3KiB2aWV3ID0gbV9wYWdlLT5tYWluRnJhbWUoKS52aWV3KCk7CiAKLSAgICBpZiAo
c3RhdGUgPT0gV2ViQ29yZTo6UGFnZVZpc2liaWxpdHlTdGF0ZVZpc2libGUpIHsKKyAgICBpZiAo
aXNWaXNpYmxlKSB7CiAgICAgICAgIG1fcGFnZS0+ZGlkTW92ZU9uc2NyZWVuKCk7CiAgICAgICAg
IGlmICh2aWV3KQogICAgICAgICAgICAgdmlldy0+c2hvdygpOwogICAgIH0KIAorICAgIFBhZ2VW
aXNpYmlsaXR5U3RhdGUgc3RhdGUgPSBpc1Zpc2libGUgPyBQYWdlVmlzaWJpbGl0eVN0YXRlVmlz
aWJsZSA6IFBhZ2VWaXNpYmlsaXR5U3RhdGVIaWRkZW47CiAgICAgbV9wYWdlLT5zZXRWaXNpYmls
aXR5U3RhdGUoc3RhdGUsIGlzSW5pdGlhbFN0YXRlKTsKLSAgICBtX3Zpc2liaWxpdHlTdGF0ZSA9
IHN0YXRlOwogCi0gICAgaWYgKHN0YXRlID09IFdlYkNvcmU6OlBhZ2VWaXNpYmlsaXR5U3RhdGVI
aWRkZW4pIHsKKyAgICBpZiAoIWlzVmlzaWJsZSkgewogICAgICAgICBtX3BhZ2UtPndpbGxNb3Zl
T2Zmc2NyZWVuKCk7CiAgICAgICAgIGlmICh2aWV3KQogICAgICAgICAgICAgdmlldy0+aGlkZSgp
OwogICAgIH0KLSNlbmRpZgogCi0jaWYgRU5BQkxFKEhJRERFTl9QQUdFX0RPTV9USU1FUl9USFJP
VFRMSU5HKSAmJiAhRU5BQkxFKFBBR0VfVklTSUJJTElUWV9BUEkpCisjZWxpZiBFTkFCTEUoSElE
REVOX1BBR0VfRE9NX1RJTUVSX1RIUk9UVExJTkcpCisKKyAgICBQYWdlVmlzaWJpbGl0eVN0YXRl
IHN0YXRlID0gaXNWaXNpYmxlID8gUGFnZVZpc2liaWxpdHlTdGF0ZVZpc2libGUgOiBQYWdlVmlz
aWJpbGl0eVN0YXRlSGlkZGVuOwogICAgIG1fcGFnZS0+c2V0VmlzaWJpbGl0eVN0YXRlKHN0YXRl
LCBpc0luaXRpYWxTdGF0ZSk7CisKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGlzVmlzaWJsZSk7
CisgICAgVU5VU0VEX1BBUkFNKGlzSW5pdGlhbFN0YXRlKTsKICNlbmRpZgogfQorCit2b2lkIFdl
YlBhZ2U6OnNldFZpc2liaWxpdHlTdGF0ZVByZXJlbmRlcigpCit7CisjaWYgRU5BQkxFKFBBR0Vf
VklTSUJJTElUWV9BUEkpIHx8IEVOQUJMRShISURERU5fUEFHRV9ET01fVElNRVJfVEhST1RUTElO
RykKKyAgICBpZiAoIW1fcGFnZSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fcGFnZS0+c2V0Vmlz
aWJpbGl0eVN0YXRlKFBhZ2VWaXNpYmlsaXR5U3RhdGVQcmVyZW5kZXIsIHRydWUpOwogI2VuZGlm
Cit9CiAKIHZvaWQgV2ViUGFnZTo6c2V0VGhyb3R0bGVkKGJvb2wgaXNUaHJvdHRsZWQpCiB7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHJldmlz
aW9uIDE2MDk3NykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTYxNCw5ICs2MTQsOCBAQCBwdWJsaWM6CiAKICAgICBib29s
IHdpbGxHb1RvQmFja0ZvcndhcmRJdGVtQ2FsbGJhY2tFbmFibGVkKCkgY29uc3QgeyByZXR1cm4g
bV93aWxsR29Ub0JhY2tGb3J3YXJkSXRlbUNhbGxiYWNrRW5hYmxlZDsgfQogCi0jaWYgRU5BQkxF
KFBBR0VfVklTSUJJTElUWV9BUEkpIHx8IEVOQUJMRShISURERU5fUEFHRV9ET01fVElNRVJfVEhS
T1RUTElORykKLSAgICB2b2lkIHNldFZpc2liaWxpdHlTdGF0ZSh1aW50MzJfdCAvKiBXZWJDb3Jl
OjpQYWdlVmlzaWJpbGl0eVN0YXRlICovLCBib29sIGlzSW5pdGlhbFN0YXRlKTsKLSNlbmRpZgor
ICAgIHZvaWQgc2V0VmlzaWJpbGl0eVN0YXRlUHJlcmVuZGVyKCk7CisgICAgdm9pZCB1cGRhdGVW
aXNpYmlsaXR5U3RhdGUoYm9vbCBpc0luaXRpYWxTdGF0ZSA9IGZhbHNlKTsKICAgICB2b2lkIHNl
dFRocm90dGxlZChib29sIGlzVGhyb3R0bGVkKTsKIAogI2lmIFBMQVRGT1JNKElPUykKQEAgLTEw
MzksOSArMTAzOCw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3Nob3VsZFJldHVybldvcmRBdFNl
bGVjdGlvbjsKICNlbmRpZgogCi0jaWYgRU5BQkxFKFBBR0VfVklTSUJJTElUWV9BUEkpCi0gICAg
V2ViQ29yZTo6UGFnZVZpc2liaWxpdHlTdGF0ZSBtX3Zpc2liaWxpdHlTdGF0ZTsKLSNlbmRpZgog
ICAgIFdlYkluc3BlY3RvckNsaWVudCogbV9pbnNwZWN0b3JDbGllbnQ7CiAKICAgICBXZWJDb3Jl
OjpDb2xvciBtX2JhY2tncm91bmRDb2xvcjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAxNjA5
NzYpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdl
cy5pbgkod29ya2luZyBjb3B5KQpAQCAtMzA1LDkgKzMwNSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBh
Z2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIEhhbmRsZUFsdGVybmF0aXZlVGV4dFVJUmVzdWx0KFN0
cmluZyByZXN1bHQpCiAjZW5kaWYKIAotI2lmIEVOQUJMRShQQUdFX1ZJU0lCSUxJVFlfQVBJKSB8
fCBFTkFCTEUoSElEREVOX1BBR0VfRE9NX1RJTUVSX1RIUk9UVExJTkcpCi0gICAgU2V0VmlzaWJp
bGl0eVN0YXRlKHVpbnQzMl90IHZpc2liaWxpdHlTdGF0ZSwgYm9vbCBpc0luaXRpYWxTdGF0ZSkK
LSNlbmRpZgorICAgIFNldFZpc2liaWxpdHlTdGF0ZVByZXJlbmRlcigpCiAKICNpZiBQTEFURk9S
TShJT1MpCiAgICAgRGlkRmluaXNoU2Nyb2xsaW5nKFdlYkNvcmU6OkZsb2F0UG9pbnQgY29udGVu
dE9mZnNldCk7CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxNjEwNTcpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSw2MSBAQAorMjAxMy0xMi0yNCAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJy
YWNsb3VnaEBhcHBsZS5jb20+CisKKyAgICAgICAgTWVyZ2UgUGFnZVZpc2liaWxpdHlTdGF0ZSAm
IFZpZXdTdGF0ZTo6SXNWaXNpYmxlIGluIFdlYktpdDIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNjIxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYktpdDIgcmVkdW5kYW50bHkgdHJhY2tzIHRoZSB2
aXNpYmlsaXR5IG9mIHRoZSB2aWV3IHRocm91Z2ggdHdvIG1lY2hhbmlzbXMgLSB0aGUgdmlzaWJp
bGl0eQorICAgICAgICBzdGF0ZSwgYW5kIHRoZSB2aWV3IHN0YXRlLiBSZW1vdmUgdmlzaWJpbGl0
eSBzdGF0ZSBmcm9tIHRoZSBXZWJLaXQyIGxheWVyLiBUaGUgdmlzaWJpbGl0eQorICAgICAgICBz
dGF0ZSBhbHNvIHRyYWNrcyB0aGUgJ3ByZXRlbmRlcicgc3RhdGUgLSBzbyBzcGxpdCB0aGlzIG91
dCBhbmQgaGFuZGxlIGl0IHNlcGFyYXRlbHkgKGEgY2hhbmdlCisgICAgICAgIHdlIHNob3VsZCBt
YWtlIGluIFdlYkNvcmUsIHRvbykuCisKKyAgICAgICAgUmVtb3ZpbmcgdGhlIHJlZHVuZGFuY3kg
YWxzbyByZW1vdmVzIHRoZSBhYmlsaXR5IGZyb20gdGhlIEFQSSB0byBzZXQgYSBmYWtlIHZpc2li
aWxpdHkgc3RhdGUKKyAgICAgICAgKElzVmlzaWJsZSB0cmFja3MgdGhlIGFjdHVhbCB2aXNpYmls
aXR5IG9mIHRoZSB2aWV3KS4gVGhyb3VnaCBwcml2YXRlIEFQSQorICAgICAgICAoV0tQYWdlU2V0
VmlzaWJpbGl0eVN0YXRlKSBhIGNsaWVudCBjb3VsZCBwcmV2aW91c2x5IHJlcXVlc3QgdGhlIHZp
ZXcgYmUgcmVwb3J0ZWQgYXMgaGlkZGVuIG9yCisgICAgICAgIHZpc2libGUsIGJ1dCB0aGlzIGRp
ZG4ndCByZWFsbHkgd29yayAtIHRoZSBvdmVycmlkZSB3YXMgbm90IGVuZm9yY2VkIGFuZCB0aGUg
QVBJIG1heSByZXNldCB0aGUKKyAgICAgICAgc3RhdGUgYXQgYW4gYXJiaXRyYXJ5IHBvaW50LiBU
aGUgbWVjaGFuaXNtIGlzIG9ubHkgdXNlZCBieSB0ZXN0aW5nIGNvZGUsIHdoaWNoIGluc3RlYWQg
c2hvdWxkCisgICAgICAgIGFjdHVhbGx5IHVwZGF0ZSB0aGUgdmlldyB2aXNpYmlsaXR5ICh0aGlz
IHRlc3RzIG1vcmUgb2YgdGhlIGFjdHVhbCB2aXNpYmlsaXR5IG1lY2hhbmlzbXMgdXNlZAorICAg
ICAgICBieSB0aGUgYnJvd3NlcikuIFRoZSBvbmUgYXNwZWN0IG9mIHRoZSBBUEkgcmVsaWVkIG9u
IGJ5IGV4aXN0aW5nIGNsaWVudHMgaXMgdGhlIGFiaWxpdHkgdG8KKyAgICAgICAgaW5pdGlhbGl6
ZSBhIGhpZGRlbiB2aWV3IGFzIHByZXJlbmRlciAtY29udGludWUgdG8gc3VwcG9ydCB0aGlzIHNw
ZWNpZmljIGZ1bmN0aW9uYWxpdHkgdmlhCisgICAgICAgIFdLUGFnZVNldFZpc2liaWxpdHlTdGF0
ZSwgdG8gbWFpbnRhaW4gYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuCisKKworICAgICAgICBUb29s
cyAtIFdlYktpdDIgbm8gbG9uZ2VyIChwb29ybHkpIHN1cHBvcnRzIGEgZmFrZSB2aXNpYmlsaXR5
IHN0YXRlLCBzbyB0byB0ZXN0IHRoZSBwYWdlCisgICAgICAgIHZpc2liaWxpdHkgbWVjaGFuaXNt
cyB3ZSBzaG91bGQgYWN0dWFsbHkgYmUgY2hhbmdpbmcgY2hhcmFjdGVyaXN0aWNzIG9mIHRoZSB2
aWV3IHRoYXQgd2lsbAorICAgICAgICBiZSBkZXRlY3RlZCBieSBXZWJLaXQyIGFzIGEgdmlzaWJp
bGl0eSBjaGFuZ2UuIFRoaXMgYWZmZWN0cyB0aHJlZSB0aGluZ3M6CisgICAgICAgICAgICAxKSBP
biBzZXRWaXNpYmlsaXR5U3RhdGUgV2ViS2l0VGVzdFJ1bm5lciBtdXN0IGFjdHVhbGx5IGNoYW5n
ZSB2aXNpYmlsaXR5IG9mIHRoZSB2aWV3LgorICAgICAgICAgICAgMikgVGhlICdQYWdlVmlzaWJp
bGl0eVN0YXRlJyB0ZXN0IGluIHRoZSBBUEkgdGVzdHMgaXMgdXNlbGVzcyAoYXMgZXZpZGVuY2Vk
IGJ5IHRoZSBmYWN0CisgICAgICAgICAgICAgICB0aGF0IHBhZ2UgdmlzaWJpbGl0eSBoYXMgYmVl
biBicm9rZW4gaW4gV2ViS2l0MiBmb3IgYSBjb3VwbGUgb2YgbW9udGhzLCBhbmQgZGlkbid0Cisg
ICAgICAgICAgICAgICBjYXRjaCB0aGlzIGZhY3QpLiBSZW1vdmVkIGluIGZhdm91ciBvZjoKKyAg
ICAgICAgICAgIDMpICdQYWdlVmlzaWJpbGl0eVN0YXRlV2l0aFdpbmRvd0NoYW5nZXMnIC0gdGhp
cyBpcyB0aGUgZ29vZCBzdHVmZi4gVGhpcyBhY3R1YWxseSB0ZXN0cworICAgICAgICAgICAgICAg
dGhlIHZpc2liaWxpdHkgbWVjaGFuaXNtLiBCZWVmIHRoaXMgdGVzdCB1cCBieSBhZGRpbmcgY292
ZXJhZ2UgZm9yOiBhKSB0aGUgcHJlcmVuZGVyCisgICAgICAgICAgICBzdGF0ZSwgYikgZG9jdW1l
bnQuaGlkZGVuLCBhbmQgYykgdG9vIG1hbnkgc3RhdGUgY2hhbmdlIG5vdGlmaWNhdGlvbnMgKGl0
IGFscmVhZHkgbG9va3MKKyAgICAgICAgICAgIGZvciB0b28gZmV3KS4KKworICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9QYWdlVmlzaWJpbGl0eVN0YXRlLmNw
cDogUmVtb3ZlZC4KKyAgICAgICAgICAgIC0gUmVtb3ZlZCBQYWdlVmlzaWJpbGl0eVN0YXRlIC0g
dGhpcyB0ZXN0IHdhcyBpbmVmZmVjdGl2ZSwgQVBJIG5vIGxvbmdlciBzdXBwb3J0cyB0aGlzCisg
ICAgICAgICAgICAgIHRlc3QsIGFuZCBiZWhhdmlvdXIgaXMgY292ZXJlZCBieSBQYWdlVmlzaWJp
bGl0eVN0YXRlV2l0aFdpbmRvd0NoYW5nZXMuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9tYWMvUGFnZVZpc2liaWxpdHlTdGF0ZVdpdGhXaW5kb3dDaGFuZ2VzLm1tOgorICAgICAgICAo
LVtQYWdlVmlzaWJpbGl0eVN0YXRlRGVsZWdhdGUgd2ViVmlldzpydW5KYXZhU2NyaXB0QWxlcnRQ
YW5lbFdpdGhNZXNzYWdlOmluaXRpYXRlZEJ5RnJhbWU6XSk6CisgICAgICAgIChydW5KYXZhU2Ny
aXB0QWxlcnQpOgorICAgICAgICAgICAgLSBBZGQgY2hlY2tpbmcgZm9yIHRvbyBtYW55IGNhbGxz
IHRvIHRoZSBhbGVydC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlBhZ2VWaXNpYmlsaXR5U3Rh
dGVXaXRoV2luZG93Q2hhbmdlczo6c2V0UHJlcmVuZGVyKToKKyAgICAgICAgICAgIC0gQWRkZWQg
bWV0aG9kcyB0byBzZXQgdmlzaWJpbGl0eSB0byBwcmVyZW5kZXIuCisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpQYWdlVmlzaWJpbGl0eVN0YXRlV2l0aFdpbmRvd0NoYW5nZXM6OnJ1blRlc3QpOgor
ICAgICAgICAgICAgLSBBZGRlZCBjaGVja2luZyBvZiAnZG9jdW1lbnQuaGlkZGVuJy4KKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6
VGVzdENvbnRyb2xsZXI6OnNldFZpc2liaWxpdHlTdGF0ZSk6CisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci9UZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvZWZs
L1Rlc3RDb250cm9sbGVyRWZsLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnNl
dEhpZGRlbik6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9ndGsvVGVzdENvbnRyb2xsZXJH
dGsuY3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6c2V0SGlkZGVuKToKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL21hYy9UZXN0Q29udHJvbGxlck1hYy5tbToKKyAgICAgICAg
KFdUUjo6VGVzdENvbnRyb2xsZXI6OnNldEhpZGRlbik6CisgICAgICAgICAgICAtIEFkZCBzZXRI
aWRkZW4gbWV0aG9kOyBjYWxsIHRoaXMgZnJvbSBzZXRWaXNpYmlsaXR5U3RhdGUuCisKIDIwMTMt
MTItMjMgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgogCiAgICAgICAg
IFRyeSB0byBmaXggdGhlIGJ1aWxkIGFmdGVyIHIxNjEwMTcKSW5kZXg6IFRvb2xzL1Rlc3RXZWJL
aXRBUEkvR05VbWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9H
TlVtYWtlZmlsZS5hbQkocmV2aXNpb24gMTYwOTc2KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9H
TlVtYWtlZmlsZS5hbQkod29ya2luZyBjb3B5KQpAQCAtMjgxLDcgKzI4MSw2IEBAIFByb2dyYW1z
X1Rlc3RXZWJLaXRBUElfVGVzdFdlYktpdDJfU09VUkMKIAlUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDIvTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0RnJhbWVzLmNwcCBcCiAJ
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1BhZ2VMb2FkQmFzaWMuY3BwIFwKIAlU
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvUGFnZUxvYWREaWRDaGFuZ2VMb2NhdGlv
bldpdGhpblBhZ2VGb3JGcmFtZS5jcHAgXAotCVRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Mi9QYWdlVmlzaWJpbGl0eVN0YXRlLmNwcCBcCiAJVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyL1BhcmVudEZyYW1lLmNwcCBcCiAJVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQyL1ByZXZlbnRFbXB0eVVzZXJBZ2VudC5jcHAgXAogCVRvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Mi9Qcml2YXRlQnJvd3NpbmdQdXNoU3RhdGVOb0hpc3RvcnlDYWxsYmFjay5j
cHAgXApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUVmbC5jbWFrZQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtRWZsLmNtYWtlCShyZXZpc2lvbiAx
NjA5NzYpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtRWZsLmNtYWtlCSh3b3JraW5n
IGNvcHkpCkBAIC04Niw3ICs4Niw2IEBAIHNldCh0ZXN0X3dlYmtpdDJfYXBpX0JJTkFSSUVTCiAg
ICAgTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9ySW1hZ2VzCiAgICAgUGFnZUxvYWRC
YXNpYwogICAgIFBhZ2VMb2FkRGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlRm9yRnJhbWUKLSAg
ICBQYWdlVmlzaWJpbGl0eVN0YXRlCiAgICAgUGFyZW50RnJhbWUKICAgICBQcmV2ZW50RW1wdHlV
c2VyQWdlbnQKICAgICBQcml2YXRlQnJvd3NpbmdQdXNoU3RhdGVOb0hpc3RvcnlDYWxsYmFjawpJ
bmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJ
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE2MDk3NikKKysrIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNDAsNyArMTQwLDYgQEAKIAkJOUIyNkZDQ0ExNTlEMTZERTAwQ0MzNzY1
IC8qIEhUTUxGb3JtQ29sbGVjdGlvbk5hbWVkSXRlbS5odG1sIGluIENvcHkgUmVzb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMjZGQ0I0MTU5RDE1RTcwMENDMzc2
NSAvKiBIVE1MRm9ybUNvbGxlY3Rpb25OYW1lZEl0ZW0uaHRtbCAqLzsgfTsKIAkJOUI0RjhGQTQx
NTlENTJCMTAwMkQ5Rjk0IC8qIEhUTUxDb2xsZWN0aW9uTmFtZWRJdGVtLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUI0RjhGQTMxNTlENTJCMTAwMkQ5
Rjk0IC8qIEhUTUxDb2xsZWN0aW9uTmFtZWRJdGVtLm1tICovOyB9OwogCQk5QjRGOEZBNzE1OUQ1
MkREMDAyRDlGOTQgLyogSFRNTENvbGxlY3Rpb25OYW1lZEl0ZW0uaHRtbCBpbiBDb3B5IFJlc291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjRGOEZBNjE1OUQ1MkNB
MDAyRDlGOTQgLyogSFRNTENvbGxlY3Rpb25OYW1lZEl0ZW0uaHRtbCAqLzsgfTsKLQkJQTUxQjY1
MDkxNkFERjlCMTAwN0FBNUQ5IC8qIFBhZ2VWaXNpYmlsaXR5U3RhdGUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUxQjY1MDgxNkFERjlCMTAwN0FB
NUQ5IC8qIFBhZ2VWaXNpYmlsaXR5U3RhdGUuY3BwICovOyB9OwogCQlBNTdBMzRGMDE2QUY2Nzcy
MDBDMjUwMUYgLyogUGFnZVZpc2liaWxpdHlTdGF0ZVdpdGhXaW5kb3dDaGFuZ2VzLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3QTM0RUYxNkFGNjc3
MjAwQzI1MDFGIC8qIFBhZ2VWaXNpYmlsaXR5U3RhdGVXaXRoV2luZG93Q2hhbmdlcy5tbSAqLzsg
fTsKIAkJQTU3QTM0RjIxNkFGNkIyQjAwQzI1MDFGIC8qIFBhZ2VWaXNpYmlsaXR5U3RhdGVXaXRo
V2luZG93Q2hhbmdlcy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE1N0EzNEYxMTZBRjY5RTIwMEMyNTAxRiAvKiBQYWdlVmlzaWJpbGl0
eVN0YXRlV2l0aFdpbmRvd0NoYW5nZXMuaHRtbCAqLzsgfTsKIAkJQTVFMjAyNzMxNUIyMTgxOTAw
QzEzRTE0IC8qIFdpbmRvd2xlc3NXZWJWaWV3V2l0aE1lZGlhLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVFMjAyNzIxNUIyMTgxOTAwQzEzRTE0IC8q
IFdpbmRvd2xlc3NXZWJWaWV3V2l0aE1lZGlhLm1tICovOyB9OwpAQCAtNDY4LDcgKzQ2Nyw2IEBA
CiAJCTlCMjZGQ0I0MTU5RDE1RTcwMENDMzc2NSAvKiBIVE1MRm9ybUNvbGxlY3Rpb25OYW1lZEl0
ZW0uaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IEhUTUxGb3JtQ29sbGVjdGlvbk5h
bWVkSXRlbS5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QjRGOEZBMzE1OUQ1
MkIxMDAyRDlGOTQgLyogSFRNTENvbGxlY3Rpb25OYW1lZEl0ZW0ubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBIVE1MQ29sbGVjdGlvbk5hbWVkSXRlbS5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUI0RjhGQTYxNTlENTJDQTAwMkQ5Rjk0IC8qIEhU
TUxDb2xsZWN0aW9uTmFtZWRJdGVtLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBI
VE1MQ29sbGVjdGlvbk5hbWVkSXRlbS5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlBNTFCNjUwODE2QURGOUIxMDA3QUE1RDkgLyogUGFnZVZpc2liaWxpdHlTdGF0ZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYWdlVmlzaWJpbGl0eVN0YXRlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU3QTM0RUYxNkFGNjc3MjAwQzI1MDFG
IC8qIFBhZ2VWaXNpYmlsaXR5U3RhdGVXaXRoV2luZG93Q2hhbmdlcy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBhZ2VWaXNpYmlsaXR5U3RhdGVXaXRoV2luZG93
Q2hhbmdlcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU3QTM0RjExNkFGNjlF
MjAwQzI1MDFGIC8qIFBhZ2VWaXNpYmlsaXR5U3RhdGVXaXRoV2luZG93Q2hhbmdlcy5odG1sICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gUGFnZVZpc2liaWxpdHlTdGF0ZVdpdGhXaW5kb3dD
aGFuZ2VzLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1RTIwMjcwMTVCMjE4
MDYwMEMxM0UxNCAvKiBXaW5kb3dsZXNzV2ViVmlld1dpdGhNZWRpYS5odG1sICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dC5odG1sOyBwYXRoID0gV2luZG93bGVzc1dlYlZpZXdXaXRoTWVkaWEuaHRtbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc5MSw3ICs3ODksNiBAQAogCQkJCTkzRjdFODZFMTRE
QzhFNUIwMEM4NEE5OSAvKiBOZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGcmFtZXNfQnVu
ZGxlLmNwcCAqLywKIAkJCQlCQzkwOTc3OTEyNTU3MUFCMDAwODM3NTYgLyogUGFnZUxvYWRCYXNp
Yy5jcHAgKi8sCiAJCQkJQkMyRDAwNDgxMkE5RkRGQTAwRTczMkEzIC8qIFBhZ2VMb2FkRGlkQ2hh
bmdlTG9jYXRpb25XaXRoaW5QYWdlRm9yRnJhbWUuY3BwICovLAotCQkJCUE1MUI2NTA4MTZBREY5
QjEwMDdBQTVEOSAvKiBQYWdlVmlzaWJpbGl0eVN0YXRlLmNwcCAqLywKIAkJCQk1MkU1Q0U0NTE0
RDIxRTlEMDAzQjJCRDggLyogUGFyZW50RnJhbWUuY3BwICovLAogCQkJCTUyRTVDRTQ4MTREMjFF
QUIwMDNCMkJEOCAvKiBQYXJlbnRGcmFtZV9CdW5kbGUuY3BwICovLAogCQkJCUM1NDIzN0VFMTZC
ODk1NTgwMEU2MzhGQyAvKiBQYXN0ZWJvYXJkTm90aWZpY2F0aW9ucy5tbSAqLywKQEAgLTEyMjAs
NyArMTIxNyw2IEBACiAJCQkJQkMyRDAwNDkxMkE5RkRGQTAwRTczMkEzIC8qIFBhZ2VMb2FkRGlk
Q2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlRm9yRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
OTMzMTQwN0MxN0I0NDE5MDAwRjA4M0IxIC8qIERpZE5vdEhhbmRsZUtleURvd24uY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMjZGNTJFQUIxODI4NzI2MDAwMjNENDEyIC8qIEdlb2xvY2F0aW9uLmNw
cCBpbiBTb3VyY2VzICovLAotCQkJCUE1MUI2NTA5MTZBREY5QjEwMDdBQTVEOSAvKiBQYWdlVmlz
aWJpbGl0eVN0YXRlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1N0EzNEYwMTZBRjY3NzIwMEMy
NTAxRiAvKiBQYWdlVmlzaWJpbGl0eVN0YXRlV2l0aFdpbmRvd0NoYW5nZXMubW0gaW4gU291cmNl
cyAqLywKIAkJCQk1MkU1Q0U0NjE0RDIxRTlEMDAzQjJCRDggLyogUGFyZW50RnJhbWUuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQzU0MjM3RjAxNkI4OTU1ODAwRTYzOEZDIC8qIFBhc3RlYm9hcmRO
b3RpZmljYXRpb25zLm1tIGluIFNvdXJjZXMgKi8sCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdDIvUGFnZVZpc2liaWxpdHlTdGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1BhZ2VWaXNpYmlsaXR5U3RhdGUuY3BwCShy
ZXZpc2lvbiAxNjA5NzYpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvUGFn
ZVZpc2liaWxpdHlTdGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsMTAyICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1VdGlsaXRp
ZXMuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybVdlYlZpZXcuaCIKLSNpbmNsdWRlICJUZXN0LmgiCi0j
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDb250ZXh0UmVmLmg+Ci0jaW5jbHVkZSA8V2ViS2l0
Mi9XS1JldGFpblB0ci5oPgotI2luY2x1ZGUgPFdlYktpdDIvV0tTZXJpYWxpemVkU2NyaXB0VmFs
dWUuaD4KLQotbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewotCi1zdGF0aWMgYm9vbCB0ZXN0RG9u
ZTsKLQotc3RhdGljIHZvaWQgZGlkUnVuU3RlcDFTdGF0ZUNoYW5nZVZpc2libGVUb0hpZGRlbihX
S1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZVJlZiwgV0tFcnJvclJlZiwgdm9pZCopOwotc3RhdGljIHZv
aWQgZGlkUnVuU3RlcDJTdGF0ZUNoYW5nZUhpZGRlblRvUHJlcmVuZGVyKFdLU2VyaWFsaXplZFNj
cmlwdFZhbHVlUmVmLCBXS0Vycm9yUmVmLCB2b2lkKik7Ci1zdGF0aWMgdm9pZCBkaWRSdW5TdGVw
M1N0YXRlQ2hhbmdlUHJlcmVuZGVyVG9VbmxvYWRlZChXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZVJl
ZiwgV0tFcnJvclJlZiwgdm9pZCopOwotCi1zdGF0aWMgdm9pZCBzZXRQYWdlVmlzaWJpbGl0eVN0
YXRlV2l0aEV2YWxDb250aW51YXRpb24oUGxhdGZvcm1XZWJWaWV3KiB3ZWJWaWV3LCBXS1BhZ2VW
aXNpYmlsaXR5U3RhdGUgdmlzaWJpbGl0eVN0YXRlLCBXS1BhZ2VSdW5KYXZhU2NyaXB0RnVuY3Rp
b24gY2FsbGJhY2spCi17Ci0gICAgV0tQYWdlU2V0VmlzaWJpbGl0eVN0YXRlKHdlYlZpZXctPnBh
Z2UoKSwgdmlzaWJpbGl0eVN0YXRlLCBmYWxzZSk7Ci0gICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdS
ZWY+IGphdmFTY3JpcHRTdHJpbmcoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJp
bmcoImRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSIpKTsKLSAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0
SW5NYWluRnJhbWUod2ViVmlldy0+cGFnZSgpLCBqYXZhU2NyaXB0U3RyaW5nLmdldCgpLCBzdGF0
aWNfY2FzdDx2b2lkKj4od2ViVmlldyksIGNhbGxiYWNrKTsKLX0KLQotc3RhdGljIHZvaWQgYXNz
ZXJ0U2VyaWFsaXplZFNjcmlwdFZhbHVlSXNTdHJpbmdWYWx1ZShXS1NlcmlhbGl6ZWRTY3JpcHRW
YWx1ZVJlZiBzZXJpYWxpemVkVmFsdWUsIFdLRXJyb3JSZWYgZXJyb3IsIGNvbnN0IGNoYXIgKmV4
cGVjdGVkKQotewotICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKLSAgICBFWFBFQ1RfTk9UX05VTEwo
c2VyaWFsaXplZFZhbHVlKTsKLSAgICBpZiAoZXJyb3IgfHwgIXNlcmlhbGl6ZWRWYWx1ZSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgSlNHbG9iYWxDb250ZXh0UmVmIHNjcmlwdENvbnRleHQgPSBK
U0dsb2JhbENvbnRleHRDcmVhdGUoMCk7Ci0gICAgSlNWYWx1ZVJlZiBzY3JpcHRWYWx1ZSA9IFdL
U2VyaWFsaXplZFNjcmlwdFZhbHVlRGVzZXJpYWxpemUoc2VyaWFsaXplZFZhbHVlLCBzY3JpcHRD
b250ZXh0LCAwKTsKLSAgICBFWFBFQ1RfVFJVRShKU1ZhbHVlSXNTdHJpbmcoc2NyaXB0Q29udGV4
dCwgc2NyaXB0VmFsdWUpKTsKLSAgICBpZiAoIUpTVmFsdWVJc1N0cmluZyhzY3JpcHRDb250ZXh0
LCBzY3JpcHRWYWx1ZSkpIHsKLSAgICAgICAgSlNHbG9iYWxDb250ZXh0UmVsZWFzZShzY3JpcHRD
b250ZXh0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEpTU3RyaW5nUmVmIGV4cGVj
dGVkU3RyaW5nID0gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoZXhwZWN0ZWQpOwotICAg
IEpTU3RyaW5nUmVmIHNjcmlwdFN0cmluZyA9IEpTVmFsdWVUb1N0cmluZ0NvcHkoc2NyaXB0Q29u
dGV4dCwgc2NyaXB0VmFsdWUsIDApOwotICAgIEVYUEVDVF9UUlVFKEpTU3RyaW5nSXNFcXVhbChz
Y3JpcHRTdHJpbmcsIGV4cGVjdGVkU3RyaW5nKSk7Ci0KLSAgICBKU1N0cmluZ1JlbGVhc2Uoc2Ny
aXB0U3RyaW5nKTsKLSAgICBKU1N0cmluZ1JlbGVhc2UoZXhwZWN0ZWRTdHJpbmcpOwotICAgIEpT
R2xvYmFsQ29udGV4dFJlbGVhc2Uoc2NyaXB0Q29udGV4dCk7Ci19Ci0KLXN0YXRpYyB2b2lkIGRp
ZFJ1blN0ZXAxU3RhdGVDaGFuZ2VWaXNpYmxlVG9IaWRkZW4oV0tTZXJpYWxpemVkU2NyaXB0VmFs
dWVSZWYgcmVzdWx0U2VyaWFsaXplZFNjcmlwdFZhbHVlLCBXS0Vycm9yUmVmIGVycm9yLCB2b2lk
KiBjb250ZXh0KQotewotICAgIGFzc2VydFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlzU3RyaW5nVmFs
dWUocmVzdWx0U2VyaWFsaXplZFNjcmlwdFZhbHVlLCBlcnJvciwgInZpc2libGUiKTsKLSAgICBz
ZXRQYWdlVmlzaWJpbGl0eVN0YXRlV2l0aEV2YWxDb250aW51YXRpb24oc3RhdGljX2Nhc3Q8UGxh
dGZvcm1XZWJWaWV3Kj4oY29udGV4dCksIGtXS1BhZ2VWaXNpYmlsaXR5U3RhdGVIaWRkZW4sIGRp
ZFJ1blN0ZXAyU3RhdGVDaGFuZ2VIaWRkZW5Ub1ByZXJlbmRlcik7Ci19Ci0KLXN0YXRpYyB2b2lk
IGRpZFJ1blN0ZXAyU3RhdGVDaGFuZ2VIaWRkZW5Ub1ByZXJlbmRlcihXS1NlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZVJlZiByZXN1bHRTZXJpYWxpemVkU2NyaXB0VmFsdWUsIFdLRXJyb3JSZWYgZXJyb3Is
IHZvaWQqIGNvbnRleHQpCi17Ci0gICAgYXNzZXJ0U2VyaWFsaXplZFNjcmlwdFZhbHVlSXNTdHJp
bmdWYWx1ZShyZXN1bHRTZXJpYWxpemVkU2NyaXB0VmFsdWUsIGVycm9yLCAiaGlkZGVuIik7Ci0g
ICAgc2V0UGFnZVZpc2liaWxpdHlTdGF0ZVdpdGhFdmFsQ29udGludWF0aW9uKHN0YXRpY19jYXN0
PFBsYXRmb3JtV2ViVmlldyo+KGNvbnRleHQpLCBrV0tQYWdlVmlzaWJpbGl0eVN0YXRlUHJlcmVu
ZGVyLCBkaWRSdW5TdGVwM1N0YXRlQ2hhbmdlUHJlcmVuZGVyVG9VbmxvYWRlZCk7Ci19Ci0KLXN0
YXRpYyB2b2lkIGRpZFJ1blN0ZXAzU3RhdGVDaGFuZ2VQcmVyZW5kZXJUb1VubG9hZGVkKFdLU2Vy
aWFsaXplZFNjcmlwdFZhbHVlUmVmIHJlc3VsdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgV0tFcnJv
clJlZiBlcnJvciwgdm9pZCogY29udGV4dCkKLXsKLSAgICBhc3NlcnRTZXJpYWxpemVkU2NyaXB0
VmFsdWVJc1N0cmluZ1ZhbHVlKHJlc3VsdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgZXJyb3IsICJw
cmVyZW5kZXIiKTsKLSAgICB0ZXN0RG9uZSA9IHRydWU7Ci19Ci0KLVRFU1QoV2ViS2l0MiwgUGFn
ZVZpc2liaWxpdHlTdGF0ZSkKLXsKLSAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRl
eHQoQWRvcHRXSywgV0tDb250ZXh0Q3JlYXRlKCkpOwotCi0gICAgLy8gUGFzcyB0aGUgUGxhdGZv
cm1XZWJWaWV3IHdlYlZpZXcgb24gYXMgdGhlIGNvbnRleHQgb2YgdGhlIGV2YWxzLCBzbyB3ZSBj
YW4gY29udGludWUgdG8gZXZhbCBvbiBpdC4KLSAgICBQbGF0Zm9ybVdlYlZpZXcgd2ViVmlldyhj
b250ZXh0LmdldCgpKTsKLSAgICBzZXRQYWdlVmlzaWJpbGl0eVN0YXRlV2l0aEV2YWxDb250aW51
YXRpb24oJndlYlZpZXcsIGtXS1BhZ2VWaXNpYmlsaXR5U3RhdGVWaXNpYmxlLCBkaWRSdW5TdGVw
MVN0YXRlQ2hhbmdlVmlzaWJsZVRvSGlkZGVuKTsKLQotICAgIFV0aWw6OnJ1bigmdGVzdERvbmUp
OwotfQotCi19IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCkluZGV4OiBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL21hYy9QYWdlVmlzaWJpbGl0eVN0YXRlV2l0aFdpbmRvd0NoYW5nZXMubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvUGFnZVZpc2liaWxp
dHlTdGF0ZVdpdGhXaW5kb3dDaGFuZ2VzLm1tCShyZXZpc2lvbiAxNjA5NzYpCisrKyBUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9QYWdlVmlzaWJpbGl0eVN0YXRlV2l0aFdpbmRvd0NoYW5n
ZXMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI3LDExICsyNywxMiBAQAogI2ltcG9ydCAiSmF2YVNj
cmlwdFRlc3QuaCIKICNpbXBvcnQgIlRlc3QuaCIKICNpbXBvcnQgIldlYktpdEFnbm9zdGljVGVz
dC5oIgotI2ltcG9ydCA8V2ViS2l0L1dlYlZpZXcuaD4KKyNpbXBvcnQgPFdlYktpdC9XZWJWaWV3
UHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0Mi9XS1ZpZXdQcml2YXRlLmg+CiAjaW1wb3J0IDx3
dGYvUmV0YWluUHRyLmg+CiAKLXN0YXRpYyBib29sIGRpZEdldFBhZ2VTaWduYWxUb0NvbnRpbnVl
Oworc3RhdGljIGJvb2wgaXNXYWl0aW5nRm9yUGFnZVNpZ25hbFRvQ29udGludWUgPSBmYWxzZTsK
K3N0YXRpYyBib29sIGRpZEdldFBhZ2VTaWduYWxUb0NvbnRpbnVlID0gZmFsc2U7CiAKIC8vIFdl
YktpdDEgV2ViVUlEZWxlZ2F0ZQogCkBAIC00Miw2ICs0Myw4IEBAIEBpbnRlcmZhY2UgUGFnZVZp
c2liaWxpdHlTdGF0ZURlbGVnYXRlIDoKIAogLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2Vu
ZGVyIHJ1bkphdmFTY3JpcHRBbGVydFBhbmVsV2l0aE1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2Fn
ZSBpbml0aWF0ZWRCeUZyYW1lOihXZWJGcmFtZSAqKWZyYW1lCiB7CisgICAgRVhQRUNUX1RSVUUo
aXNXYWl0aW5nRm9yUGFnZVNpZ25hbFRvQ29udGludWUpOworICAgIGlzV2FpdGluZ0ZvclBhZ2VT
aWduYWxUb0NvbnRpbnVlID0gZmFsc2U7CiAgICAgZGlkR2V0UGFnZVNpZ25hbFRvQ29udGludWUg
PSB0cnVlOwogfQogCkBAIC01MSw2ICs1NCw4IEBAIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAq
KXNlbmRlciBydW5KYXYKIAogc3RhdGljIHZvaWQgcnVuSmF2YVNjcmlwdEFsZXJ0KFdLUGFnZVJl
ZiBwYWdlLCBXS1N0cmluZ1JlZiBhbGVydFRleHQsIFdLRnJhbWVSZWYgZnJhbWUsIGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pCiB7CisgICAgRVhQRUNUX1RSVUUoaXNXYWl0aW5nRm9yUGFnZVNpZ25h
bFRvQ29udGludWUpOworICAgIGlzV2FpdGluZ0ZvclBhZ2VTaWduYWxUb0NvbnRpbnVlID0gZmFs
c2U7CiAgICAgZGlkR2V0UGFnZVNpZ25hbFRvQ29udGludWUgPSB0cnVlOwogfQogCkBAIC03Miw2
ICs3Nyw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZVZpZXcoV0tWaWV3
ICopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB0ZWFyZG93blZpZXcoV2ViVmlldyAqKSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgdGVhcmRvd25WaWV3KFdLVmlldyAqKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UHJlcmVuZGVyKFdlYlZpZXcgKik7CisgICAgdmlydHVh
bCB2b2lkIHNldFByZXJlbmRlcihXS1ZpZXcgKik7CiB9OwogCiB2b2lkIFBhZ2VWaXNpYmlsaXR5
U3RhdGVXaXRoV2luZG93Q2hhbmdlczo6aW5pdGlhbGl6ZVZpZXcoV2ViVmlldyAqd2ViVmlldykK
QEAgLTg3LDYgKzk0LDExIEBAIHZvaWQgUGFnZVZpc2liaWxpdHlTdGF0ZVdpdGhXaW5kb3dDaGFu
Z2UKICAgICBbdWlEZWxlZ2F0ZSByZWxlYXNlXTsKIH0KIAordm9pZCBQYWdlVmlzaWJpbGl0eVN0
YXRlV2l0aFdpbmRvd0NoYW5nZXM6OnNldFByZXJlbmRlcihXZWJWaWV3ICp3ZWJWaWV3KQorewor
ICAgIFt3ZWJWaWV3IF9zZXRWaXNpYmlsaXR5U3RhdGU6V2ViUGFnZVZpc2liaWxpdHlTdGF0ZVBy
ZXJlbmRlciBpc0luaXRpYWxTdGF0ZTpZRVNdOworfQorCiB2b2lkIFBhZ2VWaXNpYmlsaXR5U3Rh
dGVXaXRoV2luZG93Q2hhbmdlczo6aW5pdGlhbGl6ZVZpZXcoV0tWaWV3ICp3a1ZpZXcpCiB7CiAg
ICAgV0tQYWdlVUlDbGllbnRWMCB1aUNsaWVudDsKQEAgLTEwMyw2ICsxMTUsMTIgQEAgdm9pZCBQ
YWdlVmlzaWJpbGl0eVN0YXRlV2l0aFdpbmRvd0NoYW5nZQogICAgIC8vIFdlIGRvIG5vdCBuZWVk
IHRvIHRlYXJkb3duIHRoZSBXS1BhZ2VVSUNsaWVudC4KIH0KIAordm9pZCBQYWdlVmlzaWJpbGl0
eVN0YXRlV2l0aFdpbmRvd0NoYW5nZXM6OnNldFByZXJlbmRlcihXS1ZpZXcgKndrVmlldykKK3sK
KyAgICBXS1BhZ2VTZXRWaXNpYmlsaXR5U3RhdGUod2tWaWV3LnBhZ2VSZWYsIGtXS1BhZ2VWaXNp
YmlsaXR5U3RhdGVQcmVyZW5kZXIsIHRydWUpOworfQorCisKIHRlbXBsYXRlIDx0eXBlbmFtZSBW
aWV3Pgogdm9pZCBQYWdlVmlzaWJpbGl0eVN0YXRlV2l0aFdpbmRvd0NoYW5nZXM6OnJ1blRlc3Qo
VmlldyB2aWV3KQogewpAQCAtMTEwLDM1ICsxMjgsNDkgQEAgdm9pZCBQYWdlVmlzaWJpbGl0eVN0
YXRlV2l0aFdpbmRvd0NoYW5nZQogICAgIEVYUEVDVF9OVUxMKFt2aWV3IHdpbmRvd10pOwogICAg
IEVYUEVDVF9OVUxMKFt2aWV3IHN1cGVydmlld10pOwogICAgIEVYUEVDVF9KU19FUSh2aWV3LCAi
ZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlIiwgImhpZGRlbiIpOworICAgIEVYUEVDVF9KU19FUSh2
aWV3LCAiZG9jdW1lbnQuaGlkZGVuIiwgInRydWUiKTsKKworICAgIC8vIE1hcmsgdGhlIHBhZ2Ug
YXMgYmVpbmcgYSAicHJlcmVuZGVyIi4KKyAgICBzZXRQcmVyZW5kZXIodmlldyk7CisgICAgRVhQ
RUNUX0pTX0VRKHZpZXcsICJkb2N1bWVudC52aXNpYmlsaXR5U3RhdGUiLCAicHJlcmVuZGVyIik7
CisgICAgRVhQRUNUX0pTX0VRKHZpZXcsICJkb2N1bWVudC5oaWRkZW4iLCAidHJ1ZSIpOwogCi0g
ICAgLy8gQWRkIGl0IHRvIGEgbm9uLXZpc2libGUgd2luZG93LiBQYWdlVmlzaWJpbGl0eSBzaG91
bGQgc3RpbGwgYmUgImhpZGRlbiIuCisgICAgLy8gQWRkIGl0IHRvIGEgbm9uLXZpc2libGUgd2lu
ZG93LiBQYWdlVmlzaWJpbGl0eSBzaG91bGQgc3RpbGwgYmUgInByZXJlbmRlciIuCiAgICAgUmV0
YWluUHRyPE5TV2luZG93PiB3aW5kb3cgPSBhZG9wdE5TKFtbTlNXaW5kb3cgYWxsb2NdIGluaXRX
aXRoQ29udGVudFJlY3Q6dmlldy5mcmFtZSBzdHlsZU1hc2s6TlNCb3JkZXJsZXNzV2luZG93TWFz
ayBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6Tk9dKTsKICAgICBbd2luZG93
LmdldCgpLmNvbnRlbnRWaWV3IGFkZFN1YnZpZXc6dmlld107CiAgICAgRVhQRUNUX05PVF9OVUxM
KFt2aWV3IHdpbmRvd10pOwogICAgIEVYUEVDVF9OT1RfTlVMTChbdmlldyBzdXBlcnZpZXddKTsK
ICAgICBFWFBFQ1RfRkFMU0UoW3dpbmRvdy5nZXQoKSBpc1Zpc2libGVdKTsKLSAgICBFWFBFQ1Rf
SlNfRVEodmlldywgImRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSIsICJoaWRkZW4iKTsKKyAgICBF
WFBFQ1RfSlNfRVEodmlldywgImRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSIsICJwcmVyZW5kZXIi
KTsKKyAgICBFWFBFQ1RfSlNfRVEodmlldywgImRvY3VtZW50LmhpZGRlbiIsICJ0cnVlIik7CiAK
ICAgICAvLyBNYWtlIHRoZSB3aW5kb3cgdmlzaWJsZS4gUGFnZVZpc2liaWxpdHkgc2hvdWxkIGJl
Y29tZSAidmlzaWJsZSIuCi0gICAgZGlkR2V0UGFnZVNpZ25hbFRvQ29udGludWUgPSBmYWxzZTsg
ICAgCisgICAgaXNXYWl0aW5nRm9yUGFnZVNpZ25hbFRvQ29udGludWUgPSB0cnVlOworICAgIGRp
ZEdldFBhZ2VTaWduYWxUb0NvbnRpbnVlID0gZmFsc2U7CiAgICAgW3dpbmRvdy5nZXQoKSBtYWtl
S2V5QW5kT3JkZXJGcm9udDpuaWxdOwogICAgIEVYUEVDVF9UUlVFKFt3aW5kb3cuZ2V0KCkgaXNW
aXNpYmxlXSk7CiAgICAgVXRpbDo6cnVuKCZkaWRHZXRQYWdlU2lnbmFsVG9Db250aW51ZSk7CiAg
ICAgRVhQRUNUX0pTX0VRKHZpZXcsICJkb2N1bWVudC52aXNpYmlsaXR5U3RhdGUiLCAidmlzaWJs
ZSIpOworICAgIEVYUEVDVF9KU19FUSh2aWV3LCAiZG9jdW1lbnQuaGlkZGVuIiwgImZhbHNlIik7
CiAKICAgICAvLyBNaW5pbWl6ZSB0aGUgd2luZG93LiBQYWdlVmlzaWJpbGl0eSBzaG91bGQgYmVj
b21lICJoaWRkZW4iLgorICAgIGlzV2FpdGluZ0ZvclBhZ2VTaWduYWxUb0NvbnRpbnVlID0gdHJ1
ZTsKICAgICBkaWRHZXRQYWdlU2lnbmFsVG9Db250aW51ZSA9IGZhbHNlOwogICAgIFt3aW5kb3cu
Z2V0KCkgbWluaWF0dXJpemU6bmlsXTsKICAgICBVdGlsOjpydW4oJmRpZEdldFBhZ2VTaWduYWxU
b0NvbnRpbnVlKTsKICAgICBFWFBFQ1RfSlNfRVEodmlldywgImRvY3VtZW50LnZpc2liaWxpdHlT
dGF0ZSIsICJoaWRkZW4iKTsKKyAgICBFWFBFQ1RfSlNfRVEodmlldywgImRvY3VtZW50LmhpZGRl
biIsICJ0cnVlIik7CiAKICAgICAvLyBEZW1pbmltaXplIHRoZSB3aW5kb3cuIFBhZ2VWaXNpYmls
aXR5IHNob3VsZCBiZWNvbWUgInZpc2libGUiLgorICAgIGlzV2FpdGluZ0ZvclBhZ2VTaWduYWxU
b0NvbnRpbnVlID0gdHJ1ZTsKICAgICBkaWRHZXRQYWdlU2lnbmFsVG9Db250aW51ZSA9IGZhbHNl
OwogICAgIFt3aW5kb3cuZ2V0KCkgZGVtaW5pYXR1cml6ZTpuaWxdOwogICAgIFV0aWw6OnJ1bigm
ZGlkR2V0UGFnZVNpZ25hbFRvQ29udGludWUpOwogICAgIEVYUEVDVF9KU19FUSh2aWV3LCAiZG9j
dW1lbnQudmlzaWJpbGl0eVN0YXRlIiwgInZpc2libGUiKTsKKyAgICBFWFBFQ1RfSlNfRVEodmll
dywgImRvY3VtZW50LmhpZGRlbiIsICJmYWxzZSIpOwogCiAgICAgLy8gUmVtb3ZlIHRoZSBXZWJW
aWV3IGZyb20gaXRzIHN1cGVydmlldy4gUGFnZVZpc2liaWxpdHkgc2hvdWxkIGJlY29tZSAiaGlk
ZGVuIi4KKyAgICBpc1dhaXRpbmdGb3JQYWdlU2lnbmFsVG9Db250aW51ZSA9IHRydWU7CiAgICAg
ZGlkR2V0UGFnZVNpZ25hbFRvQ29udGludWUgPSBmYWxzZTsKICAgICBbdmlldyByZW1vdmVGcm9t
U3VwZXJ2aWV3XTsKICAgICBFWFBFQ1RfTlVMTChbdmlldyB3aW5kb3ddKTsKQEAgLTE0Niw2ICsx
NzgsNyBAQCB2b2lkIFBhZ2VWaXNpYmlsaXR5U3RhdGVXaXRoV2luZG93Q2hhbmdlCiAgICAgRVhQ
RUNUX1RSVUUoW3dpbmRvdy5nZXQoKSBpc1Zpc2libGVdKTsKICAgICBVdGlsOjpydW4oJmRpZEdl
dFBhZ2VTaWduYWxUb0NvbnRpbnVlKTsKICAgICBFWFBFQ1RfSlNfRVEodmlldywgImRvY3VtZW50
LnZpc2liaWxpdHlTdGF0ZSIsICJoaWRkZW4iKTsKKyAgICBFWFBFQ1RfSlNfRVEodmlldywgImRv
Y3VtZW50LmhpZGRlbiIsICJ0cnVlIik7CiB9CiAgICAgCiBURVNUX0YoUGFnZVZpc2liaWxpdHlT
dGF0ZVdpdGhXaW5kb3dDaGFuZ2VzLCBXZWJLaXQpCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVu
bmVyL1Rlc3RDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVu
bmVyL1Rlc3RDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMTYwOTc2KQorKysgVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNjcsNiAr
MTE2Nyw3IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OnNldEN1c3RvbVBvbGljeURlbGUKIAogdm9p
ZCBUZXN0Q29udHJvbGxlcjo6c2V0VmlzaWJpbGl0eVN0YXRlKFdLUGFnZVZpc2liaWxpdHlTdGF0
ZSB2aXNpYmlsaXR5U3RhdGUsIGJvb2wgaXNJbml0aWFsU3RhdGUpCiB7CisgICAgc2V0SGlkZGVu
KHZpc2liaWxpdHlTdGF0ZSAhPSBrV0tQYWdlVmlzaWJpbGl0eVN0YXRlVmlzaWJsZSk7CiAgICAg
V0tQYWdlU2V0VmlzaWJpbGl0eVN0YXRlKG1fbWFpbldlYlZpZXctPnBhZ2UoKSwgdmlzaWJpbGl0
eVN0YXRlLCBpc0luaXRpYWxTdGF0ZSk7CiB9CiAKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVGVzdENvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RDb250cm9sbGVyLmgJKHJldmlzaW9uIDE2MDk3NikKKysrIFRvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdENvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTY0LDYgKzE2NCw4IEBA
IHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgcnVuTW9kYWwoV0tQYWdlUmVmLCBjb25zdCB2b2lk
KiBjbGllbnRJbmZvKTsKICAgICBzdGF0aWMgdm9pZCBydW5Nb2RhbChQbGF0Zm9ybVdlYlZpZXcq
KTsKIAorICAgIHZvaWQgc2V0SGlkZGVuKGJvb2wpOworCiAgICAgc3RhdGljIGNvbnN0IGNoYXIq
IGxpYnJhcnlQYXRoRm9yVGVzdGluZygpOwogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBwbGF0Zm9y
bUxpYnJhcnlQYXRoRm9yVGVzdGluZygpOwogCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVy
L2VmbC9UZXN0Q29udHJvbGxlckVmbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9lZmwvVGVzdENvbnRyb2xsZXJFZmwuY3BwCShyZXZpc2lvbiAxNjA5NzYpCisrKyBU
b29scy9XZWJLaXRUZXN0UnVubmVyL2VmbC9UZXN0Q29udHJvbGxlckVmbC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEwMSw2ICsxMDEsMTEgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1J
bml0aWFsaXplQwogewogfQogCit2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRIaWRkZW4oYm9vbCkK
K3sKKyAgICAvLyBGSVhNRTogTmVlZCB0byBpbXBsZW1lbnQgdGhpcyB0byB0ZXN0IHZpc2liaWxp
dHlTdGF0ZS4KK30KKwogdm9pZCBUZXN0Q29udHJvbGxlcjo6cnVuTW9kYWwoUGxhdGZvcm1XZWJW
aWV3KikKIHsKICAgICAvLyBGSVhNRTogTmVlZCB0byBpbXBsZW1lbnQgdGhpcyB0byB0ZXN0IHNo
b3dNb2RhbERpYWxvZy4KSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL1Rlc3RDb250
cm9sbGVyR3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL2d0ay9U
ZXN0Q29udHJvbGxlckd0ay5jcHAJKHJldmlzaW9uIDE2MDk3NikKKysrIFRvb2xzL1dlYktpdFRl
c3RSdW5uZXIvZ3RrL1Rlc3RDb250cm9sbGVyR3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAy
LDYgKzEwMiwxMSBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUluaXRpYWxpemVDCiB7
CiB9CiAKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnNldEhpZGRlbihib29sKQoreworICAgIC8vIEZJ
WE1FOiBOZWVkIHRvIGltcGxlbWVudCB0aGlzIHRvIHRlc3QgdmlzaWJpbGl0eVN0YXRlLgorfQor
CiB2b2lkIFRlc3RDb250cm9sbGVyOjpydW5Nb2RhbChQbGF0Zm9ybVdlYlZpZXcqKQogewogICAg
IC8vIEZJWE1FOiBOZWVkIHRvIGltcGxlbWVudCB0aGlzIHRvIHRlc3Qgc2hvd01vZGFsRGlhbG9n
LgpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvVGVzdENvbnRyb2xsZXJNYWMubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvVGVzdENvbnRyb2xsZXJN
YWMubW0JKHJldmlzaW9uIDE2MDk3NikKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1Rl
c3RDb250cm9sbGVyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03OCw2ICs3OCwyMCBAQCB2b2lk
IFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUluaXRpYWxpemVDCiB7CiB9CiAKK3ZvaWQgVGVzdENv
bnRyb2xsZXI6OnNldEhpZGRlbihib29sIGhpZGRlbikKK3sKKyAgICBOU1dpbmRvdyAqd2luZG93
ID0gW21haW5XZWJWaWV3KCktPnBsYXRmb3JtVmlldygpIHdpbmRvd107CisgICAgaWYgKCF3aW5k
b3cpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChoaWRkZW4pCisgICAgICAgIFt3aW5kb3cg
b3JkZXJPdXQ6bmlsXTsKKyAgICBlbHNlIHsKKyAgICAgICAgW3dpbmRvdyBtYWtlS2V5QW5kT3Jk
ZXJGcm9udDpuaWxdOworICAgICAgICBbTlNBcHAgYWN0aXZhdGVJZ25vcmluZ090aGVyQXBwczpZ
RVNdOworICAgIH0KK30KKwogdm9pZCBUZXN0Q29udHJvbGxlcjo6cnVuTW9kYWwoUGxhdGZvcm1X
ZWJWaWV3KiB2aWV3KQogewogICAgIE5TV2luZG93ICp3aW5kb3cgPSBbdmlldy0+cGxhdGZvcm1W
aWV3KCkgd2luZG93XTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2MTA1NykKKysrIExheW91dFRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM5IEBACisyMDEzLTEyLTI0ICBH
YXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KKworICAgICAgICBNZXJn
ZSBQYWdlVmlzaWJpbGl0eVN0YXRlICYgVmlld1N0YXRlOjpJc1Zpc2libGUgaW4gV2ViS2l0Mgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI2MjE0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViS2l0MiBy
ZWR1bmRhbnRseSB0cmFja3MgdGhlIHZpc2liaWxpdHkgb2YgdGhlIHZpZXcgdGhyb3VnaCB0d28g
bWVjaGFuaXNtcyAtIHRoZSB2aXNpYmlsaXR5CisgICAgICAgIHN0YXRlLCBhbmQgdGhlIHZpZXcg
c3RhdGUuIFJlbW92ZSB2aXNpYmlsaXR5IHN0YXRlIGZyb20gdGhlIFdlYktpdDIgbGF5ZXIuIFRo
ZSB2aXNpYmlsaXR5CisgICAgICAgIHN0YXRlIGFsc28gdHJhY2tzIHRoZSAncHJldGVuZGVyJyBz
dGF0ZSAtIHNvIHNwbGl0IHRoaXMgb3V0IGFuZCBoYW5kbGUgaXQgc2VwYXJhdGVseSAoYSBjaGFu
Z2UKKyAgICAgICAgd2Ugc2hvdWxkIG1ha2UgaW4gV2ViQ29yZSwgdG9vKS4KKworICAgICAgICBS
ZW1vdmluZyB0aGUgcmVkdW5kYW5jeSBhbHNvIHJlbW92ZXMgdGhlIGFiaWxpdHkgZnJvbSB0aGUg
QVBJIHRvIHNldCBhIGZha2UgdmlzaWJpbGl0eSBzdGF0ZQorICAgICAgICAoSXNWaXNpYmxlIHRy
YWNrcyB0aGUgYWN0dWFsIHZpc2liaWxpdHkgb2YgdGhlIHZpZXcpLiBUaHJvdWdoIHByaXZhdGUg
QVBJCisgICAgICAgIChXS1BhZ2VTZXRWaXNpYmlsaXR5U3RhdGUpIGEgY2xpZW50IGNvdWxkIHBy
ZXZpb3VzbHkgcmVxdWVzdCB0aGUgdmlldyBiZSByZXBvcnRlZCBhcyBoaWRkZW4gb3IKKyAgICAg
ICAgdmlzaWJsZSwgYnV0IHRoaXMgZGlkbid0IHJlYWxseSB3b3JrIC0gdGhlIG92ZXJyaWRlIHdh
cyBub3QgZW5mb3JjZWQgYW5kIHRoZSBBUEkgbWF5IHJlc2V0IHRoZQorICAgICAgICBzdGF0ZSBh
dCBhbiBhcmJpdHJhcnkgcG9pbnQuIFRoZSBtZWNoYW5pc20gaXMgb25seSB1c2VkIGJ5IHRlc3Rp
bmcgY29kZSwgd2hpY2ggaW5zdGVhZCBzaG91bGQKKyAgICAgICAgYWN0dWFsbHkgdXBkYXRlIHRo
ZSB2aWV3IHZpc2liaWxpdHkgKHRoaXMgdGVzdHMgbW9yZSBvZiB0aGUgYWN0dWFsIHZpc2liaWxp
dHkgbWVjaGFuaXNtcyB1c2VkCisgICAgICAgIGJ5IHRoZSBicm93c2VyKS4gVGhlIG9uZSBhc3Bl
Y3Qgb2YgdGhlIEFQSSByZWxpZWQgb24gYnkgZXhpc3RpbmcgY2xpZW50cyBpcyB0aGUgYWJpbGl0
eSB0bworICAgICAgICBpbml0aWFsaXplIGEgaGlkZGVuIHZpZXcgYXMgcHJlcmVuZGVyIC1jb250
aW51ZSB0byBzdXBwb3J0IHRoaXMgc3BlY2lmaWMgZnVuY3Rpb25hbGl0eSB2aWEKKyAgICAgICAg
V0tQYWdlU2V0VmlzaWJpbGl0eVN0YXRlLCB0byBtYWludGFpbiBiYWNrd2FyZHMgY29tcGF0aWJp
bGl0eS4KKworCisgICAgICAgIExheW91dFRlc3RzIC0gcmVtb3ZlIHRlc3QgZm9yIG5vdGlmaWNh
dGlvbiBvbiB2aXNpYmlsaXR5IHN0YXRlIGNoYW5nZSB0byBwcmVlcmVuZGVyLiBUaGlzIHRlc3QK
KyAgICAgICAgd2FzIGNvdmVyaW5nIHNvbWV0aGluZyBub25zZW5zaWNhbCwgYW5kIG5vdCBzdXBw
b3J0ZWQgYnkgdGhlIHNwZWMgLSB0aGUgcGFnZSBzaG91bGQgbmV2ZXIgc2VlCisgICAgICAgIGEg
dmlzaWJpbGl0eSBjaGFuZ2UgdG8gcHJlcmVuZGVyLCB0aGlzIHNob3VsZCBvbmx5IGJlIGFuIGlu
aXRpYWwgc3RhdGUuIFdlYktpdDIgQVBJIG5vdyBvbmx5CisgICAgICAgIGFsbG93cyB0aGUgY2xp
ZW50IHRvIGNoYW5nZSB0aGUgc3RhdGUgdG8gcHJlcmVuZGVyIHdpdGhvdXQgc2VuZGluZyBhIG5v
dGlmaWNhdGlvbiwgYW5kIHRoZXJlCisgICAgICAgIGlzIG5vIHNlbnNlIGluIGNvbnRpbnVpbmcg
dG8gc3VwcG9ydCB0aGUgY3VycmVudCB0ZXN0IGNhc2UsIHNpbmNlIHRoZSBiZWhhdmlvdXIgaXMg
bmVpdGhlcgorICAgICAgICBhbGxvd2VkIGJ5IEFQSSBub3IgYXZhaWxhYmxlIGluIHdlYiBjb250
ZW50LgorCisgICAgICAgIFRoZSBwcmVyZW5kZXIgc3RhdGUgaXMgbm93IHByb3Blcmx5IGNvdmVy
ZWQgYnkgQVBJIHRlc3RzLgorCisgICAgICAgICogZmFzdC9ldmVudHMvcGFnZS12aXNpYmlsaXR5
LXRyYW5zaXRpb24tdGVzdC1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9ldmVudHMvcGFn
ZS12aXNpYmlsaXR5LXRyYW5zaXRpb24tdGVzdC5odG1sOgorICAgICAgICAgICAgLSByZW1vdmUg
dGVzdCBmb3Igbm90aWZpY2F0aW9uIG9uIHZpc2liaWxpdHkgc3RhdGUgY2hhbmdlIHRvIHByZWVy
ZW5kZXIuCisKIDIwMTMtMTItMjQgIFJhZHUgU3RhdmlsYSAgPHN0YXZpbGFAYWRvYmUuY29tPgog
CiAgICAgICAgIFJlbmFtZSBmYXN0L3JlZ2lvbnMvcmVwYWludC9pbmNyZWFzaW5nLXJlZ2lvbi1j
b250ZW50LWhlaWdodC5odG1sIHRvIHNvbWV0aGluZyBtb3JlIGNsZWFyCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy9wYWdlLXZpc2liaWxpdHktdHJhbnNpdGlvbi10ZXN0LWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9wYWdlLXZpc2liaWxp
dHktdHJhbnNpdGlvbi10ZXN0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTYwOTgwKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9ldmVudHMvcGFnZS12aXNpYmlsaXR5LXRyYW5zaXRpb24tdGVzdC1leHBl
Y3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTksOCArOSw2IEBAIFBBU1MgZG9jdW1lbnQudmlz
aWJpbGl0eVN0YXRlIGlzICJoaWRkZW4KIFBBU1MgZG9jdW1lbnQuaGlkZGVuIGlzIHRydWUKIFBB
U1MgZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlIGlzICJoaWRkZW4iCiBQQVNTIGRvY3VtZW50Lmhp
ZGRlbiBpcyB0cnVlCi1QQVNTIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSBpcyAicHJlcmVuZGVy
IgotUEFTUyBkb2N1bWVudC5oaWRkZW4gaXMgdHJ1ZQogUEFTUyBkb2N1bWVudC52aXNpYmlsaXR5
U3RhdGUgaXMgInZpc2libGUiCiBQQVNTIGRvY3VtZW50LmhpZGRlbiBpcyBmYWxzZQogUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMv
cGFnZS12aXNpYmlsaXR5LXRyYW5zaXRpb24tdGVzdC5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZXZlbnRzL3BhZ2UtdmlzaWJpbGl0eS10cmFuc2l0aW9uLXRlc3QuaHRtbAko
cmV2aXNpb24gMTYwOTgwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcGFnZS12aXNpYmls
aXR5LXRyYW5zaXRpb24tdGVzdC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwyNCArMzksMTEg
QEAgZnVuY3Rpb24gY2hlY2tJc1BhZ2VIaWRkZW4oKSB7CiAgICAgc2hvdWxkQmVUcnVlKCJkb2N1
bWVudC5oaWRkZW4iKTsKIH0KIAotZnVuY3Rpb24gY2hlY2tJc1BhZ2VQcmVyZW5kZXJpbmcoKSB7
Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkb2N1bWVudC52aXNpYmlsaXR5U3RhdGUiLCAi
cHJlcmVuZGVyIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJkb2N1bWVudC5oaWRkZW4iKTsKLX0KLQot
ZnVuY3Rpb24gY2hlY2tJc1BhZ2VJblVubG9hZGVkKCkgewotICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygiZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlIiwgInVubG9hZGVkIik7Ci0gICAgc2hvdWxk
QmVUcnVlKCJkb2N1bWVudC5oaWRkZW4iKTsKLX0KLQogLy8gV2Ugd2lsbCB0cnkgdG8gY2hhbmdl
IHRoZSB2aXNpYmlsaXR5IHN0YXRlcyBhczoKIC8vICAwIC0gdmlzaWJsZS4gKEluaXRpYWwgLSBp
LmUuIG9uIGxvYWQpLgogLy8gIDEgLSBoaWRkZW4gKHNob3VsZCBmaXJlIGV2ZW50KS4KIC8vICAy
IC0gaGlkZGVuIChubyBldmVudCkuCi0vLyAgMyAtIHByZXJlbmRlciAoc2hvdWxkIGZpcmUgZXZl
bnQpLgotLy8gIDQgLSB2aXNpYmxlIChzaG91bGQgZmlyZSBldmVudCkuCi0vLyAgNSAtIHVubG9h
ZGVkIChzaG91bGQgZmlyZSBldmVudCkuCi0vLyAgNiAtIHZpc2libGUgKHNob3VsZCBmaXJlIGV2
ZW50KS4KKy8vICAzIC0gdmlzaWJsZSAoc2hvdWxkIGZpcmUgZXZlbnQpLgogdmFyIG51bVZpc2li
aWxpdHlDaGFuZ2VzID0gMDsKIAogZnVuY3Rpb24gc3RhcnRUZXN0KCkgewpAQCAtODEsMTggKzY4
LDEzIEBAIGZ1bmN0aW9uIG9uVmlzaWJpbGl0eUNoYW5nZSgpIHsKICAgICAgICAgbWFrZVBhZ2VI
aWRkZW4oKTsKICAgICAgICAgY2hlY2tJc1BhZ2VIaWRkZW4oKTsKICAgICAgICAgbnVtVmlzaWJp
bGl0eUNoYW5nZXMrKzsKLSAgICAgICAgbWFrZVBhZ2VQcmVyZW5kZXIoKTsKKyAgICAgICAgbWFr
ZVBhZ2VWaXNpYmxlKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9IGVsc2UgaWYgKG51bVZpc2li
aWxpdHlDaGFuZ2VzID09IDIpIHsKICAgICAgICAgdGVzdEZhaWxlZCgiSW52YWxpZCBldmVudCBm
aXJlZCBvbiBzYW1lIHN0YXRlIGNoYW5nZS4iKTsKICAgICAgICAgZmluaXNoVGVzdCgpOwogICAg
ICAgICByZXR1cm47CiAgICAgfSBlbHNlIGlmIChudW1WaXNpYmlsaXR5Q2hhbmdlcyA9PSAzKSB7
Ci0gICAgICAgIGNoZWNrSXNQYWdlUHJlcmVuZGVyaW5nKCk7Ci0gICAgICAgIG51bVZpc2liaWxp
dHlDaGFuZ2VzKys7Ci0gICAgICAgIG1ha2VQYWdlVmlzaWJsZSgpOwotICAgICAgICByZXR1cm47
Ci0gICAgfSBlbHNlIGlmIChudW1WaXNpYmlsaXR5Q2hhbmdlcyA9PSA0KSB7CiAgICAgICAgIGNo
ZWNrSXNQYWdlVmlzaWJsZSgpOwogICAgICAgICBudW1WaXNpYmlsaXR5Q2hhbmdlcysrOwogICAg
ICAgICBmaW5pc2hUZXN0KCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>220022</attachid>
            <date>2013-12-25 21:57:08 -0800</date>
            <delta_ts>2013-12-27 00:48:22 -0800</delta_ts>
            <desc>Stupid autocorrect :-( ... s/pretender/prerender/ in Changelog</desc>
            <filename>126214.4.patch</filename>
            <type>text/plain</type>
            <size>43730</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2MTA1NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDEzLTEyLTI0ICBHYXZpbiBC
YXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KKworICAgICAgICBNZXJnZSBQYWdl
VmlzaWJpbGl0eVN0YXRlICYgVmlld1N0YXRlOjpJc1Zpc2libGUgaW4gV2ViS2l0MgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI2MjE0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViS2l0MiByZWR1bmRh
bnRseSB0cmFja3MgdGhlIHZpc2liaWxpdHkgb2YgdGhlIHZpZXcgdGhyb3VnaCB0d28gbWVjaGFu
aXNtcyAtIHRoZSB2aXNpYmlsaXR5CisgICAgICAgIHN0YXRlLCBhbmQgdGhlIHZpZXcgc3RhdGUu
IFJlbW92ZSB2aXNpYmlsaXR5IHN0YXRlIGZyb20gdGhlIFdlYktpdDIgbGF5ZXIuIFRoZSB2aXNp
YmlsaXR5CisgICAgICAgIHN0YXRlIGFsc28gdHJhY2tzIHRoZSBwcmVyZW5kZXIgc3RhdGUgLSBz
byBzcGxpdCB0aGlzIG91dCBhbmQgaGFuZGxlIGl0IHNlcGFyYXRlbHkgKGEgY2hhbmdlCisgICAg
ICAgIHdlIHNob3VsZCBtYWtlIGluIFdlYkNvcmUsIHRvbykuCisKKyAgICAgICAgUmVtb3Zpbmcg
dGhlIHJlZHVuZGFuY3kgYWxzbyByZW1vdmVzIHRoZSBhYmlsaXR5IGZyb20gdGhlIEFQSSB0byBz
ZXQgYSBmYWtlIHZpc2liaWxpdHkgc3RhdGUKKyAgICAgICAgKElzVmlzaWJsZSB0cmFja3MgdGhl
IGFjdHVhbCB2aXNpYmlsaXR5IG9mIHRoZSB2aWV3KS4gVGhyb3VnaCBwcml2YXRlIEFQSQorICAg
ICAgICAoV0tQYWdlU2V0VmlzaWJpbGl0eVN0YXRlKSBhIGNsaWVudCBjb3VsZCBwcmV2aW91c2x5
IHJlcXVlc3QgdGhlIHZpZXcgYmUgcmVwb3J0ZWQgYXMgaGlkZGVuIG9yCisgICAgICAgIHZpc2li
bGUsIGJ1dCB0aGlzIGRpZG4ndCByZWFsbHkgd29yayAtIHRoZSBvdmVycmlkZSB3YXMgbm90IGVu
Zm9yY2VkIGFuZCB0aGUgQVBJIG1heSByZXNldCB0aGUKKyAgICAgICAgc3RhdGUgYXQgYW4gYXJi
aXRyYXJ5IHBvaW50LiBUaGUgbWVjaGFuaXNtIGlzIG9ubHkgdXNlZCBieSB0ZXN0aW5nIGNvZGUs
IHdoaWNoIGluc3RlYWQgc2hvdWxkCisgICAgICAgIGFjdHVhbGx5IHVwZGF0ZSB0aGUgdmlldyB2
aXNpYmlsaXR5ICh0aGlzIHRlc3RzIG1vcmUgb2YgdGhlIGFjdHVhbCB2aXNpYmlsaXR5IG1lY2hh
bmlzbXMgdXNlZAorICAgICAgICBieSB0aGUgYnJvd3NlcikuIFRoZSBvbmUgYXNwZWN0IG9mIHRo
ZSBBUEkgcmVsaWVkIG9uIGJ5IGV4aXN0aW5nIGNsaWVudHMgaXMgdGhlIGFiaWxpdHkgdG8KKyAg
ICAgICAgaW5pdGlhbGl6ZSBhIGhpZGRlbiB2aWV3IGFzIHByZXJlbmRlciAtY29udGludWUgdG8g
c3VwcG9ydCB0aGlzIHNwZWNpZmljIGZ1bmN0aW9uYWxpdHkgdmlhCisgICAgICAgIFdLUGFnZVNl
dFZpc2liaWxpdHlTdGF0ZSwgdG8gbWFpbnRhaW4gYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuCisK
KworICAgICAgICBXZWJDb3JlIC0gY2huYWdlcyB0aGUgdGhlIEFQSSB0ZXN0cyBleHBvc2VkIGEg
YnVnLCBhIHZpZXcgc2hvdWxkIG9ubHkgZXZlciBjb21lIG91dCBvZiB0aGUKKyAgICAgICAgcHJl
cmVuZGVyIHN0YXRlIHdoZW4gaXQgYmVjb21lcyB2aXNpYmxlIC0gcmVkdW5kYW50IG5vdGlmaWNh
dGlvbnMgdGhhdCB0aGUgdmlldyBpcyBzdGlsbAorICAgICAgICBoaWRkZW4gc2hvdWxkIGJlIGln
bm9yZWQuCisKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFn
ZTo6c2V0VmlzaWJpbGl0eVN0YXRlKToKKyAgICAgICAgICAgIC0gaWdub3JlIHZpc2liaWxpdHkg
c3RhdGUgY2hhbmdlIHRvIGhpZGRlbiwgaWYgdGhlIGN1cnJlbnQgc3RhdGUgaXMgcHJlcmVuZGVy
LgorCiAyMDEzLTEyLTI0ICBNaWhuZWEgT3ZpZGVuaWUgIDxtaWhuZWFAYWRvYmUuY29tPgogCiAg
ICAgICAgIFtDU1NSZWdpb25zXSBDcmFzaCB3aGlsZSByZXBhaW50aW5nIGFuIGludmFsaWQgcmVn
aW9uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHJldmlzaW9uIDE2MDk3NikKKysrIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNDYsNiArMTI0Niw4IEBA
IHZvaWQgUGFnZTo6c2V0VmlzaWJpbGl0eVN0YXRlKFBhZ2VWaXNpYmkKIAogICAgIGlmIChtX3Zp
c2liaWxpdHlTdGF0ZSA9PSB2aXNpYmlsaXR5U3RhdGUpCiAgICAgICAgIHJldHVybjsKKyAgICBp
ZiAobV92aXNpYmlsaXR5U3RhdGUgPT0gUGFnZVZpc2liaWxpdHlTdGF0ZVByZXJlbmRlciAmJiB2
aXNpYmlsaXR5U3RhdGUgPT0gUGFnZVZpc2liaWxpdHlTdGF0ZUhpZGRlbikKKyAgICAgICAgcmV0
dXJuOwogICAgIG1fdmlzaWJpbGl0eVN0YXRlID0gdmlzaWJpbGl0eVN0YXRlOwogCiAgICAgaWYg
KCFpc0luaXRpYWxTdGF0ZSkgewpJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMTYxMDU3KQorKysg
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTggQEAK
KzIwMTMtMTItMjQgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgor
CisgICAgICAgIE1lcmdlIFBhZ2VWaXNpYmlsaXR5U3RhdGUgJiBWaWV3U3RhdGU6OklzVmlzaWJs
ZSBpbiBXZWJLaXQyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjYyMTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBXZWJLaXQyIHJlZHVuZGFudGx5IHRyYWNrcyB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgdmll
dyB0aHJvdWdoIHR3byBtZWNoYW5pc21zIC0gdGhlIHZpc2liaWxpdHkKKyAgICAgICAgc3RhdGUs
IGFuZCB0aGUgdmlldyBzdGF0ZS4gUmVtb3ZlIHZpc2liaWxpdHkgc3RhdGUgZnJvbSB0aGUgV2Vi
S2l0MiBsYXllci4gVGhlIHZpc2liaWxpdHkKKyAgICAgICAgc3RhdGUgYWxzbyB0cmFja3MgdGhl
IHByZXJlbmRlciBzdGF0ZSAtIHNvIHNwbGl0IHRoaXMgb3V0IGFuZCBoYW5kbGUgaXQgc2VwYXJh
dGVseSAoYSBjaGFuZ2UKKyAgICAgICAgd2Ugc2hvdWxkIG1ha2UgaW4gV2ViQ29yZSwgdG9vKS4K
KworICAgICAgICBSZW1vdmluZyB0aGUgcmVkdW5kYW5jeSBhbHNvIHJlbW92ZXMgdGhlIGFiaWxp
dHkgZnJvbSB0aGUgQVBJIHRvIHNldCBhIGZha2UgdmlzaWJpbGl0eSBzdGF0ZQorICAgICAgICAo
SXNWaXNpYmxlIHRyYWNrcyB0aGUgYWN0dWFsIHZpc2liaWxpdHkgb2YgdGhlIHZpZXcpLiBUaHJv
dWdoIHByaXZhdGUgQVBJCisgICAgICAgIChXS1BhZ2VTZXRWaXNpYmlsaXR5U3RhdGUpIGEgY2xp
ZW50IGNvdWxkIHByZXZpb3VzbHkgcmVxdWVzdCB0aGUgdmlldyBiZSByZXBvcnRlZCBhcyBoaWRk
ZW4gb3IKKyAgICAgICAgdmlzaWJsZSwgYnV0IHRoaXMgZGlkbid0IHJlYWxseSB3b3JrIC0gdGhl
IG92ZXJyaWRlIHdhcyBub3QgZW5mb3JjZWQgYW5kIHRoZSBBUEkgbWF5IHJlc2V0IHRoZQorICAg
ICAgICBzdGF0ZSBhdCBhbiBhcmJpdHJhcnkgcG9pbnQuIFRoZSBtZWNoYW5pc20gaXMgb25seSB1
c2VkIGJ5IHRlc3RpbmcgY29kZSwgd2hpY2ggaW5zdGVhZCBzaG91bGQKKyAgICAgICAgYWN0dWFs
bHkgdXBkYXRlIHRoZSB2aWV3IHZpc2liaWxpdHkgKHRoaXMgdGVzdHMgbW9yZSBvZiB0aGUgYWN0
dWFsIHZpc2liaWxpdHkgbWVjaGFuaXNtcyB1c2VkCisgICAgICAgIGJ5IHRoZSBicm93c2VyKS4g
VGhlIG9uZSBhc3BlY3Qgb2YgdGhlIEFQSSByZWxpZWQgb24gYnkgZXhpc3RpbmcgY2xpZW50cyBp
cyB0aGUgYWJpbGl0eSB0bworICAgICAgICBpbml0aWFsaXplIGEgaGlkZGVuIHZpZXcgYXMgcHJl
cmVuZGVyIC1jb250aW51ZSB0byBzdXBwb3J0IHRoaXMgc3BlY2lmaWMgZnVuY3Rpb25hbGl0eSB2
aWEKKyAgICAgICAgV0tQYWdlU2V0VmlzaWJpbGl0eVN0YXRlLCB0byBtYWludGFpbiBiYWNrd2Fy
ZHMgY29tcGF0aWJpbGl0eS4KKworCisgICAgICAgIC0gV2ViS2l0MiAtIHJlbW92ZSBpbnRlcm5h
bCBzdGF0ZSB0aGF0IHRyYWNrcyBwYWdlIHZpc2liaWxpdHkgc2VwYXJhdGVseSBmcm9tIHRoZSB2
aWV3IHN0YXRlCisgICAgICAgIHZpc2liaWxpdHkuIEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0
eSBjb250aW51ZSB0byBzdXBwb3J0IHRoZSBXS1BhZ2VTZXRWaXNpYmlsaXR5U3RhdGUgQVBJLAor
ICAgICAgICBidXQgb25seSB0byBpbml0aWFsaXplIHRoZSBzdGF0ZSB0byBwcmVyZW5kZXIuCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcDoKKyAgICAgICAgKFdLUGFnZVNl
dFZpc2liaWxpdHlTdGF0ZSk6CisgICAgICAgICAgICAtIG9ubHkgc3VwcG9ydCBpbml0aWFsaXpp
bmcgdGhlIHZpc2liaWxpdHkgc3RhdGUgdG8gcHJlcmVuZGVyLgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OldlYlBh
Z2VQcm94eSk6CisgICAgICAgICAgICAtIHJlbW92ZSBtX3Zpc2liaWxpdHlTdGF0ZQorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmluaXRpYWxpemVXZWJQYWdlKToKKyAgICAgICAgICAg
IC0gbm8gbmVlZCB0byBzZW5kIGluaXRpYWwgdmlzaWJpbGl0eSBzdGF0ZSAodGhpcyBpcyBzZW50
IGFzIGEgcGFydCBvZiB0aGUgY3JlYXRpb24gcGFyYW1ldGVycykuCisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6dmlld1N0YXRlRGlkQ2hhbmdlKToKKyAgICAgICAgICAgIC0gbm8gbmVl
ZCB0byBzZW5kIHZpc2liaWxpdHkgc3RhdGUgY2hhbmdlICh0aGlzIGlzIHNlbnQgYXMgYSBwYXJ0
IG9mIHZpZXcgc3RhdGUpLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFZpc2li
aWxpdHlTdGF0ZVByZXJlbmRlcik6CisgICAgICAgICAgICAtIHNldFZpc2liaWxpdHlTdGF0ZSAt
PiBzZXRWaXNpYmlsaXR5U3RhdGVQcmVyZW5kZXIuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oOgorICAgICAgICAgICAgLSByZW1vdmUgbV92aXNpYmlsaXR5U3RhdGUsIHNldFZp
c2liaWxpdHlTdGF0ZSAtPiBzZXRWaXNpYmlsaXR5U3RhdGVQcmVyZW5kZXIuCisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpXZWJQYWdlKToKKyAgICAgICAgICAgIC0gYWRkZWQgY2FsbCB0byB1cGRhdGVWaXNpYmlsaXR5
U3RhdGUuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldFZpZXdJc1Zpc2libGUpOgorICAg
ICAgICAgICAgLSBhZGRlZCBjYWxsIHRvIHVwZGF0ZVZpc2liaWxpdHlTdGF0ZS4KKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6dXBkYXRlVmlzaWJpbGl0eVN0YXRlKToKKyAgICAgICAgICAgIC0g
cHJldmlvdXNseSBzZXRWaXNpYmlsaXR5U3RhdGUsIHVwZGF0ZXMgdGhlIHBhZ2UgdmlzaWJpbGl0
eSBzdGF0ZSBhY2NvcmRpbmcgdG8gdGhlIHZpZXcgc3RhdGUuCisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OnNldFZpc2liaWxpdHlTdGF0ZVByZXJlbmRlcik6CisgICAgICAgICAgICAtIHNldCB2
aXNpYmlsaXR5IHN0YXRlIHRvIHByZXJlbmRlci4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oOgorICAgICAgICAgICAgLSByZW1vdmUgbV92aXNpYmlsaXR5U3RhdGUsIHNl
dFZpc2liaWxpdHlTdGF0ZSAtPiBzZXRWaXNpYmlsaXR5U3RhdGVQcmVyZW5kZXIuCisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisgICAgICAgICAgICAt
IFNldFZpc2liaWxpdHlTdGF0ZSAtPiBTZXRWaXNpYmlsaXR5U3RhdGVQcmVyZW5kZXIuCisKIDIw
MTMtMTItMjQgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgMzIt
Yml0IE1hYyBidWlsZCBmaXggYXR0ZW1wdCBhZnRlciByMTYxMDQ1LgpJbmRleDogU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDE2MDk3NykKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMDUsMTkgKzMwNSwxMiBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50
JiBwCiAgICAgLCBtX2NsaXBzVG9FeHBvc2VkUmVjdChmYWxzZSkKICAgICAsIG1fbGFzdFNlbnRD
bGlwc1RvRXhwb3NlZFJlY3QoZmFsc2UpCiAjZW5kaWYKLSNpZiBFTkFCTEUoUEFHRV9WSVNJQklM
SVRZX0FQSSkKLSAgICAsIG1fdmlzaWJpbGl0eVN0YXRlKFBhZ2VWaXNpYmlsaXR5U3RhdGVWaXNp
YmxlKQotI2VuZGlmCiAgICAgLCBtX3Njcm9sbFBpbm5pbmdCZWhhdmlvcihEb05vdFBpbikKIHsK
ICAgICB1cGRhdGVWaWV3U3RhdGUoKTsKIAogICAgIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOwogCi0j
aWYgRU5BQkxFKFBBR0VfVklTSUJJTElUWV9BUEkpCi0gICAgaWYgKCFpc1ZpZXdWaXNpYmxlKCkp
Ci0gICAgICAgIG1fdmlzaWJpbGl0eVN0YXRlID0gUGFnZVZpc2liaWxpdHlTdGF0ZUhpZGRlbjsK
LSNlbmRpZgogI2lmbmRlZiBOREVCVUcKICAgICB3ZWJQYWdlUHJveHlDb3VudGVyLmluY3JlbWVu
dCgpOwogI2VuZGlmCkBAIC01MTUsMTIgKzUwOCw2IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojppbml0
aWFsaXplV2ViUGFnZSgpCiAgICAgaW5pdGlhbGl6ZUNyZWF0aW9uUGFyYW1ldGVycygpOwogICAg
IHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpDcmVhdGVXZWJQYWdlKG1fcGFn
ZUlELCBtX2NyZWF0aW9uUGFyYW1ldGVycyksIDApOwogCi0jaWYgRU5BQkxFKFBBR0VfVklTSUJJ
TElUWV9BUEkpCi0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0VmlzaWJpbGl0eVN0YXRl
KG1fdmlzaWJpbGl0eVN0YXRlLCAvKiBpc0luaXRpYWxTdGF0ZSAqLyB0cnVlKSk7Ci0jZWxpZiBF
TkFCTEUoSElEREVOX1BBR0VfRE9NX1RJTUVSX1RIUk9UVExJTkcpCi0gICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6U2V0VmlzaWJpbGl0eVN0YXRlKGlzVmlld1Zpc2libGUoKSA/IFBhZ2VWaXNp
YmlsaXR5U3RhdGVWaXNpYmxlIDogUGFnZVZpc2liaWxpdHlTdGF0ZUhpZGRlbiwgLyogaXNJbml0
aWFsU3RhdGUgKi8gdHJ1ZSkpOwotI2VuZGlmCi0KICNpZiBQTEFURk9STShNQUMpCiAgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVkKG1faXNTbWFy
dEluc2VydERlbGV0ZUVuYWJsZWQpKTsKICNlbmRpZgpAQCAtOTc1LDE0ICs5NjIsNiBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6dmlld1N0YXRlRGlkQ2hhbmdlKFZpCiAgICAgICAgICAgICAvLyBzdG9w
IHRoZSB1bnJlc3BvbnNpdmVuZXNzIHRpbWVyIGhlcmUuCiAgICAgICAgICAgICBtX3Byb2Nlc3Mt
PnJlc3BvbnNpdmVuZXNzVGltZXIoKS0+c3RvcCgpOwogICAgICAgICB9Ci0KLSNpZiBFTkFCTEUo
UEFHRV9WSVNJQklMSVRZX0FQSSkKLSAgICAgICAgbV92aXNpYmlsaXR5U3RhdGUgPSBpc1ZpZXdW
aXNpYmxlKCkgPyBQYWdlVmlzaWJpbGl0eVN0YXRlVmlzaWJsZSA6IFBhZ2VWaXNpYmlsaXR5U3Rh
dGVIaWRkZW47Ci0gICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0
VmlzaWJpbGl0eVN0YXRlKG1fdmlzaWJpbGl0eVN0YXRlLCBmYWxzZSksIG1fcGFnZUlEKTsKLSNl
bGlmIEVOQUJMRShISURERU5fUEFHRV9ET01fVElNRVJfVEhST1RUTElORykKLSAgICAgICAgUGFn
ZVZpc2liaWxpdHlTdGF0ZSB2aXNpYmlsaXR5U3RhdGUgPSBpc1ZpZXdWaXNpYmxlKCkgPyBQYWdl
VmlzaWJpbGl0eVN0YXRlVmlzaWJsZSA6IFBhZ2VWaXNpYmlsaXR5U3RhdGVIaWRkZW47Ci0gICAg
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0VmlzaWJpbGl0eVN0YXRl
KHZpc2liaWxpdHlTdGF0ZSwgZmFsc2UpLCBtX3BhZ2VJRCk7Ci0jZW5kaWYKICAgICB9CiAKICNp
ZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUl9QT1BPVkVSKQpAQCAtMTY3NiwyMCArMTY1NSwxMSBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6bGlzdGVuRm9yTGF5b3V0TWlsZXN0CiAgICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMaXN0ZW5Gb3JMYXlvdXRNaWxlc3RvbmVzKG1pbGVz
dG9uZXMpLCBtX3BhZ2VJRCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpzZXRWaXNpYmlsaXR5
U3RhdGUoV2ViQ29yZTo6UGFnZVZpc2liaWxpdHlTdGF0ZSB2aXNpYmlsaXR5U3RhdGUsIGJvb2wg
aXNJbml0aWFsU3RhdGUpCit2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VmlzaWJpbGl0eVN0YXRlUHJl
cmVuZGVyKCkKIHsKICAgICBpZiAoIWlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuOwotCi0jaWYg
RU5BQkxFKFBBR0VfVklTSUJJTElUWV9BUEkpCi0gICAgaWYgKHZpc2liaWxpdHlTdGF0ZSAhPSBt
X3Zpc2liaWxpdHlTdGF0ZSB8fCBpc0luaXRpYWxTdGF0ZSkgewotICAgICAgICBtX3Zpc2liaWxp
dHlTdGF0ZSA9IHZpc2liaWxpdHlTdGF0ZTsKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpTZXRWaXNpYmlsaXR5U3RhdGUodmlzaWJpbGl0eVN0YXRlLCBpc0luaXRp
YWxTdGF0ZSksIG1fcGFnZUlEKTsKLSAgICB9Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTSh2aXNp
YmlsaXR5U3RhdGUpOwotICAgIFVOVVNFRF9QQVJBTShpc0luaXRpYWxTdGF0ZSk7Ci0jZW5kaWYK
KyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFZpc2liaWxpdHlTdGF0
ZVByZXJlbmRlcigpLCBtX3BhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRTdXBw
cmVzc1Njcm9sbGJhckFuaW1hdGlvbnMoYm9vbCBzdXBwcmVzc0FuaW1hdGlvbnMpCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiAxNjA5NzcpCisr
KyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkK
QEAgLTU2MSw3ICs1NjEsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGxpc3RlbkZvckxheW91dE1p
bGVzdG9uZXMoV2ViQ29yZTo6TGF5b3V0TWlsZXN0b25lcyk7CiAKLSAgICB2b2lkIHNldFZpc2li
aWxpdHlTdGF0ZShXZWJDb3JlOjpQYWdlVmlzaWJpbGl0eVN0YXRlLCBib29sIGlzSW5pdGlhbFN0
YXRlKTsKKyAgICB2b2lkIHNldFZpc2liaWxpdHlTdGF0ZVByZXJlbmRlcigpOwogICAgIHZvaWQg
ZGlkVXBkYXRlVmlld1N0YXRlKCkgeyBtX3dhaXRpbmdGb3JEaWRVcGRhdGVWaWV3U3RhdGUgPSBm
YWxzZTsgfQogCiAgICAgYm9vbCBoYXNIb3Jpem9udGFsU2Nyb2xsYmFyKCkgY29uc3QgeyByZXR1
cm4gbV9tYWluRnJhbWVIYXNIb3Jpem9udGFsU2Nyb2xsYmFyOyB9CkBAIC0xMzY0LDEwICsxMzY0
LDYgQEAgcHJpdmF0ZToKICAgICBib29sIG1fbGFzdFNlbnRDbGlwc1RvRXhwb3NlZFJlY3Q7CiAj
ZW5kaWYKIAotI2lmIEVOQUJMRShQQUdFX1ZJU0lCSUxJVFlfQVBJKQotICAgIFdlYkNvcmU6OlBh
Z2VWaXNpYmlsaXR5U3RhdGUgbV92aXNpYmlsaXR5U3RhdGU7Ci0jZW5kaWYKLQogI2lmIFBMQVRG
T1JNKE1BQykKICAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBtX3RlbXBvcmFyeVBERkZpbGVz
OwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNw
cAkocmV2aXNpb24gMTYwOTc2KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
UGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxMCw5ICs0MTAsMTAgQEAgdm9pZCBXS1BhZ2VM
aXN0ZW5Gb3JMYXlvdXRNaWxlc3RvbmVzKFdLUAogICAgIHRvSW1wbChwYWdlUmVmKS0+bGlzdGVu
Rm9yTGF5b3V0TWlsZXN0b25lcyh0b0xheW91dE1pbGVzdG9uZXMobWlsZXN0b25lcykpOwogfQog
Ci12b2lkIFdLUGFnZVNldFZpc2liaWxpdHlTdGF0ZShXS1BhZ2VSZWYgcGFnZVJlZiwgV0tQYWdl
VmlzaWJpbGl0eVN0YXRlIHN0YXRlLCBib29sIGlzSW5pdGlhbFN0YXRlKQordm9pZCBXS1BhZ2VT
ZXRWaXNpYmlsaXR5U3RhdGUoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLUGFnZVZpc2liaWxpdHlTdGF0
ZSBzdGF0ZSwgYm9vbCkKIHsKLSAgICB0b0ltcGwocGFnZVJlZiktPnNldFZpc2liaWxpdHlTdGF0
ZSh0b1BhZ2VWaXNpYmlsaXR5U3RhdGUoc3RhdGUpLCBpc0luaXRpYWxTdGF0ZSk7CisgICAgaWYg
KHN0YXRlID09IGtXS1BhZ2VWaXNpYmlsaXR5U3RhdGVQcmVyZW5kZXIpCisgICAgICAgIHRvSW1w
bChwYWdlUmVmKS0+c2V0VmlzaWJpbGl0eVN0YXRlUHJlcmVuZGVyKCk7CiB9CiAKIGJvb2wgV0tQ
YWdlSGFzSG9yaXpvbnRhbFNjcm9sbGJhcihXS1BhZ2VSZWYgcGFnZVJlZikKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDE2
MDk3NykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjc2LDkgKzI3Niw2IEBAIFdlYlBhZ2U6OldlYlBhZ2UodWludDY0
X3QgcGFnZUlELCBjb25zdCAKICNpZiBQTEFURk9STShJT1MpCiAgICAgLCBtX3Nob3VsZFJldHVy
bldvcmRBdFNlbGVjdGlvbihmYWxzZSkKICNlbmRpZgotI2lmIEVOQUJMRShQQUdFX1ZJU0lCSUxJ
VFlfQVBJKQotICAgICwgbV92aXNpYmlsaXR5U3RhdGUoV2ViQ29yZTo6UGFnZVZpc2liaWxpdHlT
dGF0ZVZpc2libGUpCi0jZW5kaWYKICAgICAsIG1faW5zcGVjdG9yQ2xpZW50KDApCiAgICAgLCBt
X2JhY2tncm91bmRDb2xvcihDb2xvcjo6d2hpdGUpCiAgICAgLCBtX21heGltdW1SZW5kZXJpbmdT
dXBwcmVzc2lvblRva2VuKDApCkBAIC00MjYsNiArNDIzLDggQEAgV2ViUGFnZTo6V2ViUGFnZSh1
aW50NjRfdCBwYWdlSUQsIGNvbnN0IAogICAgIGlmIChtX3VzZVRocmVhZGVkU2Nyb2xsaW5nKQog
ICAgICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5ldmVudERpc3BhdGNoZXIoKS5hZGRTY3JvbGxp
bmdUcmVlRm9yUGFnZSh0aGlzKTsKICNlbmRpZgorCisgICAgdXBkYXRlVmlzaWJpbGl0eVN0YXRl
KHRydWUpOwogfQogCiBXZWJQYWdlOjp+V2ViUGFnZSgpCkBAIC0xOTM0LDYgKzE5MzMsOCBAQCB2
b2lkIFdlYlBhZ2U6OnNldFZpZXdJc1Zpc2libGUoYm9vbCBpc1ZpCiAgICAgICAgICAgICBtX3Bh
Z2UtPnJlc3VtZUFuaW1hdGluZ0ltYWdlcygpOwogICAgICAgICB9CiAgICAgfQorCisgICAgdXBk
YXRlVmlzaWJpbGl0eVN0YXRlKCk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6c2V0RHJhd3NCYWNrZ3Jv
dW5kKGJvb2wgZHJhd3NCYWNrZ3JvdW5kKQpAQCAtMzcwNSw0MSArMzcwNiw1MCBAQCBGcmFtZVZp
ZXcqIFdlYlBhZ2U6Om1haW5GcmFtZVZpZXcoKSBjb25zCiAgICAgcmV0dXJuIDA7CiB9CiAKLSNp
ZiBFTkFCTEUoUEFHRV9WSVNJQklMSVRZX0FQSSkgfHwgRU5BQkxFKEhJRERFTl9QQUdFX0RPTV9U
SU1FUl9USFJPVFRMSU5HKQotdm9pZCBXZWJQYWdlOjpzZXRWaXNpYmlsaXR5U3RhdGUodWludDMy
X3QgdmlzaWJpbGl0eVN0YXRlLCBib29sIGlzSW5pdGlhbFN0YXRlKQordm9pZCBXZWJQYWdlOjp1
cGRhdGVWaXNpYmlsaXR5U3RhdGUoYm9vbCBpc0luaXRpYWxTdGF0ZSkKIHsKKyAgICBib29sIGlz
VmlzaWJsZSA9IG1fdmlld1N0YXRlICYgVmlld1N0YXRlOjpJc1Zpc2libGU7CiAgICAgaWYgKCFt
X3BhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIFdlYkNvcmU6OlBhZ2VWaXNpYmlsaXR5U3Rh
dGUgc3RhdGUgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpQYWdlVmlzaWJpbGl0eVN0YXRlPih2aXNp
YmlsaXR5U3RhdGUpOwotCiAjaWYgRU5BQkxFKFBBR0VfVklTSUJJTElUWV9BUEkpCi0gICAgaWYg
KG1fdmlzaWJpbGl0eVN0YXRlID09IHN0YXRlKQotICAgICAgICByZXR1cm47CiAKICAgICBGcmFt
ZVZpZXcqIHZpZXcgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLnZpZXcoKTsKIAotICAgIGlmIChzdGF0
ZSA9PSBXZWJDb3JlOjpQYWdlVmlzaWJpbGl0eVN0YXRlVmlzaWJsZSkgeworICAgIGlmIChpc1Zp
c2libGUpIHsKICAgICAgICAgbV9wYWdlLT5kaWRNb3ZlT25zY3JlZW4oKTsKICAgICAgICAgaWYg
KHZpZXcpCiAgICAgICAgICAgICB2aWV3LT5zaG93KCk7CiAgICAgfQogCisgICAgUGFnZVZpc2li
aWxpdHlTdGF0ZSBzdGF0ZSA9IGlzVmlzaWJsZSA/IFBhZ2VWaXNpYmlsaXR5U3RhdGVWaXNpYmxl
IDogUGFnZVZpc2liaWxpdHlTdGF0ZUhpZGRlbjsKICAgICBtX3BhZ2UtPnNldFZpc2liaWxpdHlT
dGF0ZShzdGF0ZSwgaXNJbml0aWFsU3RhdGUpOwotICAgIG1fdmlzaWJpbGl0eVN0YXRlID0gc3Rh
dGU7CiAKLSAgICBpZiAoc3RhdGUgPT0gV2ViQ29yZTo6UGFnZVZpc2liaWxpdHlTdGF0ZUhpZGRl
bikgeworICAgIGlmICghaXNWaXNpYmxlKSB7CiAgICAgICAgIG1fcGFnZS0+d2lsbE1vdmVPZmZz
Y3JlZW4oKTsKICAgICAgICAgaWYgKHZpZXcpCiAgICAgICAgICAgICB2aWV3LT5oaWRlKCk7CiAg
ICAgfQotI2VuZGlmCiAKLSNpZiBFTkFCTEUoSElEREVOX1BBR0VfRE9NX1RJTUVSX1RIUk9UVExJ
TkcpICYmICFFTkFCTEUoUEFHRV9WSVNJQklMSVRZX0FQSSkKKyNlbGlmIEVOQUJMRShISURERU5f
UEFHRV9ET01fVElNRVJfVEhST1RUTElORykKKworICAgIFBhZ2VWaXNpYmlsaXR5U3RhdGUgc3Rh
dGUgPSBpc1Zpc2libGUgPyBQYWdlVmlzaWJpbGl0eVN0YXRlVmlzaWJsZSA6IFBhZ2VWaXNpYmls
aXR5U3RhdGVIaWRkZW47CiAgICAgbV9wYWdlLT5zZXRWaXNpYmlsaXR5U3RhdGUoc3RhdGUsIGlz
SW5pdGlhbFN0YXRlKTsKKworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oaXNWaXNpYmxlKTsKKyAg
ICBVTlVTRURfUEFSQU0oaXNJbml0aWFsU3RhdGUpOwogI2VuZGlmCiB9CisKK3ZvaWQgV2ViUGFn
ZTo6c2V0VmlzaWJpbGl0eVN0YXRlUHJlcmVuZGVyKCkKK3sKKyNpZiBFTkFCTEUoUEFHRV9WSVNJ
QklMSVRZX0FQSSkgfHwgRU5BQkxFKEhJRERFTl9QQUdFX0RPTV9USU1FUl9USFJPVFRMSU5HKQor
ICAgIGlmICghbV9wYWdlKQorICAgICAgICByZXR1cm47CisgICAgbV9wYWdlLT5zZXRWaXNpYmls
aXR5U3RhdGUoUGFnZVZpc2liaWxpdHlTdGF0ZVByZXJlbmRlciwgdHJ1ZSk7CiAjZW5kaWYKK30K
IAogdm9pZCBXZWJQYWdlOjpzZXRUaHJvdHRsZWQoYm9vbCBpc1Rocm90dGxlZCkKIHsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkocmV2aXNpb24g
MTYwOTc3KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAko
d29ya2luZyBjb3B5KQpAQCAtNjE0LDkgKzYxNCw4IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgd2ls
bEdvVG9CYWNrRm9yd2FyZEl0ZW1DYWxsYmFja0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX3dp
bGxHb1RvQmFja0ZvcndhcmRJdGVtQ2FsbGJhY2tFbmFibGVkOyB9CiAKLSNpZiBFTkFCTEUoUEFH
RV9WSVNJQklMSVRZX0FQSSkgfHwgRU5BQkxFKEhJRERFTl9QQUdFX0RPTV9USU1FUl9USFJPVFRM
SU5HKQotICAgIHZvaWQgc2V0VmlzaWJpbGl0eVN0YXRlKHVpbnQzMl90IC8qIFdlYkNvcmU6OlBh
Z2VWaXNpYmlsaXR5U3RhdGUgKi8sIGJvb2wgaXNJbml0aWFsU3RhdGUpOwotI2VuZGlmCisgICAg
dm9pZCBzZXRWaXNpYmlsaXR5U3RhdGVQcmVyZW5kZXIoKTsKKyAgICB2b2lkIHVwZGF0ZVZpc2li
aWxpdHlTdGF0ZShib29sIGlzSW5pdGlhbFN0YXRlID0gZmFsc2UpOwogICAgIHZvaWQgc2V0VGhy
b3R0bGVkKGJvb2wgaXNUaHJvdHRsZWQpOwogCiAjaWYgUExBVEZPUk0oSU9TKQpAQCAtMTAzOSw5
ICsxMDM4LDYgQEAgcHJpdmF0ZToKICAgICBib29sIG1fc2hvdWxkUmV0dXJuV29yZEF0U2VsZWN0
aW9uOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoUEFHRV9WSVNJQklMSVRZX0FQSSkKLSAgICBXZWJD
b3JlOjpQYWdlVmlzaWJpbGl0eVN0YXRlIG1fdmlzaWJpbGl0eVN0YXRlOwotI2VuZGlmCiAgICAg
V2ViSW5zcGVjdG9yQ2xpZW50KiBtX2luc3BlY3RvckNsaWVudDsKIAogICAgIFdlYkNvcmU6OkNv
bG9yIG1fYmFja2dyb3VuZENvbG9yOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHJldmlzaW9uIDE2MDk3NikK
KysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmlu
CSh3b3JraW5nIGNvcHkpCkBAIC0zMDUsOSArMzA1LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBM
ZWdhY3lSZWNlaXZlciB7CiAgICAgSGFuZGxlQWx0ZXJuYXRpdmVUZXh0VUlSZXN1bHQoU3RyaW5n
IHJlc3VsdCkKICNlbmRpZgogCi0jaWYgRU5BQkxFKFBBR0VfVklTSUJJTElUWV9BUEkpIHx8IEVO
QUJMRShISURERU5fUEFHRV9ET01fVElNRVJfVEhST1RUTElORykKLSAgICBTZXRWaXNpYmlsaXR5
U3RhdGUodWludDMyX3QgdmlzaWJpbGl0eVN0YXRlLCBib29sIGlzSW5pdGlhbFN0YXRlKQotI2Vu
ZGlmCisgICAgU2V0VmlzaWJpbGl0eVN0YXRlUHJlcmVuZGVyKCkKIAogI2lmIFBMQVRGT1JNKElP
UykKICAgICBEaWRGaW5pc2hTY3JvbGxpbmcoV2ViQ29yZTo6RmxvYXRQb2ludCBjb250ZW50T2Zm
c2V0KTsKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VM
b2cJKHJldmlzaW9uIDE2MTA1NykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDYxIEBACisyMDEzLTEyLTI0ICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xv
dWdoQGFwcGxlLmNvbT4KKworICAgICAgICBNZXJnZSBQYWdlVmlzaWJpbGl0eVN0YXRlICYgVmll
d1N0YXRlOjpJc1Zpc2libGUgaW4gV2ViS2l0MgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI2MjE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgV2ViS2l0MiByZWR1bmRhbnRseSB0cmFja3MgdGhlIHZpc2li
aWxpdHkgb2YgdGhlIHZpZXcgdGhyb3VnaCB0d28gbWVjaGFuaXNtcyAtIHRoZSB2aXNpYmlsaXR5
CisgICAgICAgIHN0YXRlLCBhbmQgdGhlIHZpZXcgc3RhdGUuIFJlbW92ZSB2aXNpYmlsaXR5IHN0
YXRlIGZyb20gdGhlIFdlYktpdDIgbGF5ZXIuIFRoZSB2aXNpYmlsaXR5CisgICAgICAgIHN0YXRl
IGFsc28gdHJhY2tzIHRoZSBwcmVyZW5kZXIgc3RhdGUgLSBzbyBzcGxpdCB0aGlzIG91dCBhbmQg
aGFuZGxlIGl0IHNlcGFyYXRlbHkgKGEgY2hhbmdlCisgICAgICAgIHdlIHNob3VsZCBtYWtlIGlu
IFdlYkNvcmUsIHRvbykuCisKKyAgICAgICAgUmVtb3ZpbmcgdGhlIHJlZHVuZGFuY3kgYWxzbyBy
ZW1vdmVzIHRoZSBhYmlsaXR5IGZyb20gdGhlIEFQSSB0byBzZXQgYSBmYWtlIHZpc2liaWxpdHkg
c3RhdGUKKyAgICAgICAgKElzVmlzaWJsZSB0cmFja3MgdGhlIGFjdHVhbCB2aXNpYmlsaXR5IG9m
IHRoZSB2aWV3KS4gVGhyb3VnaCBwcml2YXRlIEFQSQorICAgICAgICAoV0tQYWdlU2V0VmlzaWJp
bGl0eVN0YXRlKSBhIGNsaWVudCBjb3VsZCBwcmV2aW91c2x5IHJlcXVlc3QgdGhlIHZpZXcgYmUg
cmVwb3J0ZWQgYXMgaGlkZGVuIG9yCisgICAgICAgIHZpc2libGUsIGJ1dCB0aGlzIGRpZG4ndCBy
ZWFsbHkgd29yayAtIHRoZSBvdmVycmlkZSB3YXMgbm90IGVuZm9yY2VkIGFuZCB0aGUgQVBJIG1h
eSByZXNldCB0aGUKKyAgICAgICAgc3RhdGUgYXQgYW4gYXJiaXRyYXJ5IHBvaW50LiBUaGUgbWVj
aGFuaXNtIGlzIG9ubHkgdXNlZCBieSB0ZXN0aW5nIGNvZGUsIHdoaWNoIGluc3RlYWQgc2hvdWxk
CisgICAgICAgIGFjdHVhbGx5IHVwZGF0ZSB0aGUgdmlldyB2aXNpYmlsaXR5ICh0aGlzIHRlc3Rz
IG1vcmUgb2YgdGhlIGFjdHVhbCB2aXNpYmlsaXR5IG1lY2hhbmlzbXMgdXNlZAorICAgICAgICBi
eSB0aGUgYnJvd3NlcikuIFRoZSBvbmUgYXNwZWN0IG9mIHRoZSBBUEkgcmVsaWVkIG9uIGJ5IGV4
aXN0aW5nIGNsaWVudHMgaXMgdGhlIGFiaWxpdHkgdG8KKyAgICAgICAgaW5pdGlhbGl6ZSBhIGhp
ZGRlbiB2aWV3IGFzIHByZXJlbmRlciAtY29udGludWUgdG8gc3VwcG9ydCB0aGlzIHNwZWNpZmlj
IGZ1bmN0aW9uYWxpdHkgdmlhCisgICAgICAgIFdLUGFnZVNldFZpc2liaWxpdHlTdGF0ZSwgdG8g
bWFpbnRhaW4gYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuCisKKworICAgICAgICBUb29scyAtIFdl
YktpdDIgbm8gbG9uZ2VyIChwb29ybHkpIHN1cHBvcnRzIGEgZmFrZSB2aXNpYmlsaXR5IHN0YXRl
LCBzbyB0byB0ZXN0IHRoZSBwYWdlCisgICAgICAgIHZpc2liaWxpdHkgbWVjaGFuaXNtcyB3ZSBz
aG91bGQgYWN0dWFsbHkgYmUgY2hhbmdpbmcgY2hhcmFjdGVyaXN0aWNzIG9mIHRoZSB2aWV3IHRo
YXQgd2lsbAorICAgICAgICBiZSBkZXRlY3RlZCBieSBXZWJLaXQyIGFzIGEgdmlzaWJpbGl0eSBj
aGFuZ2UuIFRoaXMgYWZmZWN0cyB0aHJlZSB0aGluZ3M6CisgICAgICAgICAgICAxKSBPbiBzZXRW
aXNpYmlsaXR5U3RhdGUgV2ViS2l0VGVzdFJ1bm5lciBtdXN0IGFjdHVhbGx5IGNoYW5nZSB2aXNp
YmlsaXR5IG9mIHRoZSB2aWV3LgorICAgICAgICAgICAgMikgVGhlICdQYWdlVmlzaWJpbGl0eVN0
YXRlJyB0ZXN0IGluIHRoZSBBUEkgdGVzdHMgaXMgdXNlbGVzcyAoYXMgZXZpZGVuY2VkIGJ5IHRo
ZSBmYWN0CisgICAgICAgICAgICAgICB0aGF0IHBhZ2UgdmlzaWJpbGl0eSBoYXMgYmVlbiBicm9r
ZW4gaW4gV2ViS2l0MiBmb3IgYSBjb3VwbGUgb2YgbW9udGhzLCBhbmQgZGlkbid0CisgICAgICAg
ICAgICAgICBjYXRjaCB0aGlzIGZhY3QpLiBSZW1vdmVkIGluIGZhdm91ciBvZjoKKyAgICAgICAg
ICAgIDMpICdQYWdlVmlzaWJpbGl0eVN0YXRlV2l0aFdpbmRvd0NoYW5nZXMnIC0gdGhpcyBpcyB0
aGUgZ29vZCBzdHVmZi4gVGhpcyBhY3R1YWxseSB0ZXN0cworICAgICAgICAgICAgICAgdGhlIHZp
c2liaWxpdHkgbWVjaGFuaXNtLiBCZWVmIHRoaXMgdGVzdCB1cCBieSBhZGRpbmcgY292ZXJhZ2Ug
Zm9yOiBhKSB0aGUgcHJlcmVuZGVyCisgICAgICAgICAgICBzdGF0ZSwgYikgZG9jdW1lbnQuaGlk
ZGVuLCBhbmQgYykgdG9vIG1hbnkgc3RhdGUgY2hhbmdlIG5vdGlmaWNhdGlvbnMgKGl0IGFscmVh
ZHkgbG9va3MKKyAgICAgICAgICAgIGZvciB0b28gZmV3KS4KKworICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9QYWdlVmlzaWJpbGl0eVN0YXRlLmNwcDogUmVt
b3ZlZC4KKyAgICAgICAgICAgIC0gUmVtb3ZlZCBQYWdlVmlzaWJpbGl0eVN0YXRlIC0gdGhpcyB0
ZXN0IHdhcyBpbmVmZmVjdGl2ZSwgQVBJIG5vIGxvbmdlciBzdXBwb3J0cyB0aGlzCisgICAgICAg
ICAgICAgIHRlc3QsIGFuZCBiZWhhdmlvdXIgaXMgY292ZXJlZCBieSBQYWdlVmlzaWJpbGl0eVN0
YXRlV2l0aFdpbmRvd0NoYW5nZXMuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMv
UGFnZVZpc2liaWxpdHlTdGF0ZVdpdGhXaW5kb3dDaGFuZ2VzLm1tOgorICAgICAgICAoLVtQYWdl
VmlzaWJpbGl0eVN0YXRlRGVsZWdhdGUgd2ViVmlldzpydW5KYXZhU2NyaXB0QWxlcnRQYW5lbFdp
dGhNZXNzYWdlOmluaXRpYXRlZEJ5RnJhbWU6XSk6CisgICAgICAgIChydW5KYXZhU2NyaXB0QWxl
cnQpOgorICAgICAgICAgICAgLSBBZGQgY2hlY2tpbmcgZm9yIHRvbyBtYW55IGNhbGxzIHRvIHRo
ZSBhbGVydC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlBhZ2VWaXNpYmlsaXR5U3RhdGVXaXRo
V2luZG93Q2hhbmdlczo6c2V0UHJlcmVuZGVyKToKKyAgICAgICAgICAgIC0gQWRkZWQgbWV0aG9k
cyB0byBzZXQgdmlzaWJpbGl0eSB0byBwcmVyZW5kZXIuCisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpQYWdlVmlzaWJpbGl0eVN0YXRlV2l0aFdpbmRvd0NoYW5nZXM6OnJ1blRlc3QpOgorICAgICAg
ICAgICAgLSBBZGRlZCBjaGVja2luZyBvZiAnZG9jdW1lbnQuaGlkZGVuJy4KKyAgICAgICAgKiBX
ZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdENv
bnRyb2xsZXI6OnNldFZpc2liaWxpdHlTdGF0ZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvZWZsL1Rlc3RD
b250cm9sbGVyRWZsLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnNldEhpZGRl
bik6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9ndGsvVGVzdENvbnRyb2xsZXJHdGsuY3Bw
OgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6c2V0SGlkZGVuKToKKyAgICAgICAgKiBX
ZWJLaXRUZXN0UnVubmVyL21hYy9UZXN0Q29udHJvbGxlck1hYy5tbToKKyAgICAgICAgKFdUUjo6
VGVzdENvbnRyb2xsZXI6OnNldEhpZGRlbik6CisgICAgICAgICAgICAtIEFkZCBzZXRIaWRkZW4g
bWV0aG9kOyBjYWxsIHRoaXMgZnJvbSBzZXRWaXNpYmlsaXR5U3RhdGUuCisKIDIwMTMtMTItMjMg
IE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFRyeSB0
byBmaXggdGhlIGJ1aWxkIGFmdGVyIHIxNjEwMTcKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkv
R05VbWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9HTlVtYWtl
ZmlsZS5hbQkocmV2aXNpb24gMTYwOTc2KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9HTlVtYWtl
ZmlsZS5hbQkod29ya2luZyBjb3B5KQpAQCAtMjgxLDcgKzI4MSw2IEBAIFByb2dyYW1zX1Rlc3RX
ZWJLaXRBUElfVGVzdFdlYktpdDJfU09VUkMKIAlUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDIvTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0RnJhbWVzLmNwcCBcCiAJVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1BhZ2VMb2FkQmFzaWMuY3BwIFwKIAlUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvUGFnZUxvYWREaWRDaGFuZ2VMb2NhdGlvbldpdGhp
blBhZ2VGb3JGcmFtZS5jcHAgXAotCVRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9Q
YWdlVmlzaWJpbGl0eVN0YXRlLmNwcCBcCiAJVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQyL1BhcmVudEZyYW1lLmNwcCBcCiAJVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQy
L1ByZXZlbnRFbXB0eVVzZXJBZ2VudC5jcHAgXAogCVRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Mi9Qcml2YXRlQnJvd3NpbmdQdXNoU3RhdGVOb0hpc3RvcnlDYWxsYmFjay5jcHAgXApJ
bmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUVmbC5jbWFrZQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtRWZsLmNtYWtlCShyZXZpc2lvbiAxNjA5NzYp
CisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtRWZsLmNtYWtlCSh3b3JraW5nIGNvcHkp
CkBAIC04Niw3ICs4Niw2IEBAIHNldCh0ZXN0X3dlYmtpdDJfYXBpX0JJTkFSSUVTCiAgICAgTmV3
Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9ySW1hZ2VzCiAgICAgUGFnZUxvYWRCYXNpYwog
ICAgIFBhZ2VMb2FkRGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlRm9yRnJhbWUKLSAgICBQYWdl
VmlzaWJpbGl0eVN0YXRlCiAgICAgUGFyZW50RnJhbWUKICAgICBQcmV2ZW50RW1wdHlVc2VyQWdl
bnQKICAgICBQcml2YXRlQnJvd3NpbmdQdXNoU3RhdGVOb0hpc3RvcnlDYWxsYmFjawpJbmRleDog
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE2MDk3NikKKysrIFRvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC0xNDAsNyArMTQwLDYgQEAKIAkJOUIyNkZDQ0ExNTlEMTZERTAwQ0MzNzY1IC8qIEhU
TUxGb3JtQ29sbGVjdGlvbk5hbWVkSXRlbS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMjZGQ0I0MTU5RDE1RTcwMENDMzc2NSAvKiBI
VE1MRm9ybUNvbGxlY3Rpb25OYW1lZEl0ZW0uaHRtbCAqLzsgfTsKIAkJOUI0RjhGQTQxNTlENTJC
MTAwMkQ5Rjk0IC8qIEhUTUxDb2xsZWN0aW9uTmFtZWRJdGVtLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUI0RjhGQTMxNTlENTJCMTAwMkQ5Rjk0IC8q
IEhUTUxDb2xsZWN0aW9uTmFtZWRJdGVtLm1tICovOyB9OwogCQk5QjRGOEZBNzE1OUQ1MkREMDAy
RDlGOTQgLyogSFRNTENvbGxlY3Rpb25OYW1lZEl0ZW0uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjRGOEZBNjE1OUQ1MkNBMDAyRDlG
OTQgLyogSFRNTENvbGxlY3Rpb25OYW1lZEl0ZW0uaHRtbCAqLzsgfTsKLQkJQTUxQjY1MDkxNkFE
RjlCMTAwN0FBNUQ5IC8qIFBhZ2VWaXNpYmlsaXR5U3RhdGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUxQjY1MDgxNkFERjlCMTAwN0FBNUQ5IC8q
IFBhZ2VWaXNpYmlsaXR5U3RhdGUuY3BwICovOyB9OwogCQlBNTdBMzRGMDE2QUY2NzcyMDBDMjUw
MUYgLyogUGFnZVZpc2liaWxpdHlTdGF0ZVdpdGhXaW5kb3dDaGFuZ2VzLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3QTM0RUYxNkFGNjc3MjAwQzI1
MDFGIC8qIFBhZ2VWaXNpYmlsaXR5U3RhdGVXaXRoV2luZG93Q2hhbmdlcy5tbSAqLzsgfTsKIAkJ
QTU3QTM0RjIxNkFGNkIyQjAwQzI1MDFGIC8qIFBhZ2VWaXNpYmlsaXR5U3RhdGVXaXRoV2luZG93
Q2hhbmdlcy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE1N0EzNEYxMTZBRjY5RTIwMEMyNTAxRiAvKiBQYWdlVmlzaWJpbGl0eVN0YXRl
V2l0aFdpbmRvd0NoYW5nZXMuaHRtbCAqLzsgfTsKIAkJQTVFMjAyNzMxNUIyMTgxOTAwQzEzRTE0
IC8qIFdpbmRvd2xlc3NXZWJWaWV3V2l0aE1lZGlhLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVFMjAyNzIxNUIyMTgxOTAwQzEzRTE0IC8qIFdpbmRv
d2xlc3NXZWJWaWV3V2l0aE1lZGlhLm1tICovOyB9OwpAQCAtNDY4LDcgKzQ2Nyw2IEBACiAJCTlC
MjZGQ0I0MTU5RDE1RTcwMENDMzc2NSAvKiBIVE1MRm9ybUNvbGxlY3Rpb25OYW1lZEl0ZW0uaHRt
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IEhUTUxGb3JtQ29sbGVjdGlvbk5hbWVkSXRl
bS5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QjRGOEZBMzE1OUQ1MkIxMDAy
RDlGOTQgLyogSFRNTENvbGxlY3Rpb25OYW1lZEl0ZW0ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBIVE1MQ29sbGVjdGlvbk5hbWVkSXRlbS5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUI0RjhGQTYxNTlENTJDQTAwMkQ5Rjk0IC8qIEhUTUxDb2xs
ZWN0aW9uTmFtZWRJdGVtLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBIVE1MQ29s
bGVjdGlvbk5hbWVkSXRlbS5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNTFC
NjUwODE2QURGOUIxMDA3QUE1RDkgLyogUGFnZVZpc2liaWxpdHlTdGF0ZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYWdlVmlzaWJpbGl0eVN0YXRlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU3QTM0RUYxNkFGNjc3MjAwQzI1MDFGIC8qIFBh
Z2VWaXNpYmlsaXR5U3RhdGVXaXRoV2luZG93Q2hhbmdlcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBhZ2VWaXNpYmlsaXR5U3RhdGVXaXRoV2luZG93Q2hhbmdl
cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU3QTM0RjExNkFGNjlFMjAwQzI1
MDFGIC8qIFBhZ2VWaXNpYmlsaXR5U3RhdGVXaXRoV2luZG93Q2hhbmdlcy5odG1sICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dC5odG1sOyBwYXRoID0gUGFnZVZpc2liaWxpdHlTdGF0ZVdpdGhXaW5kb3dDaGFuZ2Vz
Lmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1RTIwMjcwMTVCMjE4MDYwMEMx
M0UxNCAvKiBXaW5kb3dsZXNzV2ViVmlld1dpdGhNZWRpYS5odG1sICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5o
dG1sOyBwYXRoID0gV2luZG93bGVzc1dlYlZpZXdXaXRoTWVkaWEuaHRtbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTc5MSw3ICs3ODksNiBAQAogCQkJCTkzRjdFODZFMTREQzhFNUIw
MEM4NEE5OSAvKiBOZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGcmFtZXNfQnVuZGxlLmNw
cCAqLywKIAkJCQlCQzkwOTc3OTEyNTU3MUFCMDAwODM3NTYgLyogUGFnZUxvYWRCYXNpYy5jcHAg
Ki8sCiAJCQkJQkMyRDAwNDgxMkE5RkRGQTAwRTczMkEzIC8qIFBhZ2VMb2FkRGlkQ2hhbmdlTG9j
YXRpb25XaXRoaW5QYWdlRm9yRnJhbWUuY3BwICovLAotCQkJCUE1MUI2NTA4MTZBREY5QjEwMDdB
QTVEOSAvKiBQYWdlVmlzaWJpbGl0eVN0YXRlLmNwcCAqLywKIAkJCQk1MkU1Q0U0NTE0RDIxRTlE
MDAzQjJCRDggLyogUGFyZW50RnJhbWUuY3BwICovLAogCQkJCTUyRTVDRTQ4MTREMjFFQUIwMDNC
MkJEOCAvKiBQYXJlbnRGcmFtZV9CdW5kbGUuY3BwICovLAogCQkJCUM1NDIzN0VFMTZCODk1NTgw
MEU2MzhGQyAvKiBQYXN0ZWJvYXJkTm90aWZpY2F0aW9ucy5tbSAqLywKQEAgLTEyMjAsNyArMTIx
Nyw2IEBACiAJCQkJQkMyRDAwNDkxMkE5RkRGQTAwRTczMkEzIC8qIFBhZ2VMb2FkRGlkQ2hhbmdl
TG9jYXRpb25XaXRoaW5QYWdlRm9yRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMzMTQw
N0MxN0I0NDE5MDAwRjA4M0IxIC8qIERpZE5vdEhhbmRsZUtleURvd24uY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMjZGNTJFQUIxODI4NzI2MDAwMjNENDEyIC8qIEdlb2xvY2F0aW9uLmNwcCBpbiBT
b3VyY2VzICovLAotCQkJCUE1MUI2NTA5MTZBREY5QjEwMDdBQTVEOSAvKiBQYWdlVmlzaWJpbGl0
eVN0YXRlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1N0EzNEYwMTZBRjY3NzIwMEMyNTAxRiAv
KiBQYWdlVmlzaWJpbGl0eVN0YXRlV2l0aFdpbmRvd0NoYW5nZXMubW0gaW4gU291cmNlcyAqLywK
IAkJCQk1MkU1Q0U0NjE0RDIxRTlEMDAzQjJCRDggLyogUGFyZW50RnJhbWUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQzU0MjM3RjAxNkI4OTU1ODAwRTYzOEZDIC8qIFBhc3RlYm9hcmROb3RpZmlj
YXRpb25zLm1tIGluIFNvdXJjZXMgKi8sCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDIvUGFnZVZpc2liaWxpdHlTdGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1BhZ2VWaXNpYmlsaXR5U3RhdGUuY3BwCShyZXZpc2lv
biAxNjA5NzYpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvUGFnZVZpc2li
aWxpdHlTdGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsMTAyICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1VdGlsaXRpZXMuaCIK
LSNpbmNsdWRlICJQbGF0Zm9ybVdlYlZpZXcuaCIKLSNpbmNsdWRlICJUZXN0LmgiCi0jaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSlNDb250ZXh0UmVmLmg+Ci0jaW5jbHVkZSA8V2ViS2l0Mi9XS1Jl
dGFpblB0ci5oPgotI2luY2x1ZGUgPFdlYktpdDIvV0tTZXJpYWxpemVkU2NyaXB0VmFsdWUuaD4K
LQotbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewotCi1zdGF0aWMgYm9vbCB0ZXN0RG9uZTsKLQot
c3RhdGljIHZvaWQgZGlkUnVuU3RlcDFTdGF0ZUNoYW5nZVZpc2libGVUb0hpZGRlbihXS1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZVJlZiwgV0tFcnJvclJlZiwgdm9pZCopOwotc3RhdGljIHZvaWQgZGlk
UnVuU3RlcDJTdGF0ZUNoYW5nZUhpZGRlblRvUHJlcmVuZGVyKFdLU2VyaWFsaXplZFNjcmlwdFZh
bHVlUmVmLCBXS0Vycm9yUmVmLCB2b2lkKik7Ci1zdGF0aWMgdm9pZCBkaWRSdW5TdGVwM1N0YXRl
Q2hhbmdlUHJlcmVuZGVyVG9VbmxvYWRlZChXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZVJlZiwgV0tF
cnJvclJlZiwgdm9pZCopOwotCi1zdGF0aWMgdm9pZCBzZXRQYWdlVmlzaWJpbGl0eVN0YXRlV2l0
aEV2YWxDb250aW51YXRpb24oUGxhdGZvcm1XZWJWaWV3KiB3ZWJWaWV3LCBXS1BhZ2VWaXNpYmls
aXR5U3RhdGUgdmlzaWJpbGl0eVN0YXRlLCBXS1BhZ2VSdW5KYXZhU2NyaXB0RnVuY3Rpb24gY2Fs
bGJhY2spCi17Ci0gICAgV0tQYWdlU2V0VmlzaWJpbGl0eVN0YXRlKHdlYlZpZXctPnBhZ2UoKSwg
dmlzaWJpbGl0eVN0YXRlLCBmYWxzZSk7Ci0gICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGph
dmFTY3JpcHRTdHJpbmcoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoImRv
Y3VtZW50LnZpc2liaWxpdHlTdGF0ZSIpKTsKLSAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0SW5NYWlu
RnJhbWUod2ViVmlldy0+cGFnZSgpLCBqYXZhU2NyaXB0U3RyaW5nLmdldCgpLCBzdGF0aWNfY2Fz
dDx2b2lkKj4od2ViVmlldyksIGNhbGxiYWNrKTsKLX0KLQotc3RhdGljIHZvaWQgYXNzZXJ0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSXNTdHJpbmdWYWx1ZShXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZVJl
ZiBzZXJpYWxpemVkVmFsdWUsIFdLRXJyb3JSZWYgZXJyb3IsIGNvbnN0IGNoYXIgKmV4cGVjdGVk
KQotewotICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKLSAgICBFWFBFQ1RfTk9UX05VTEwoc2VyaWFs
aXplZFZhbHVlKTsKLSAgICBpZiAoZXJyb3IgfHwgIXNlcmlhbGl6ZWRWYWx1ZSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgSlNHbG9iYWxDb250ZXh0UmVmIHNjcmlwdENvbnRleHQgPSBKU0dsb2Jh
bENvbnRleHRDcmVhdGUoMCk7Ci0gICAgSlNWYWx1ZVJlZiBzY3JpcHRWYWx1ZSA9IFdLU2VyaWFs
aXplZFNjcmlwdFZhbHVlRGVzZXJpYWxpemUoc2VyaWFsaXplZFZhbHVlLCBzY3JpcHRDb250ZXh0
LCAwKTsKLSAgICBFWFBFQ1RfVFJVRShKU1ZhbHVlSXNTdHJpbmcoc2NyaXB0Q29udGV4dCwgc2Ny
aXB0VmFsdWUpKTsKLSAgICBpZiAoIUpTVmFsdWVJc1N0cmluZyhzY3JpcHRDb250ZXh0LCBzY3Jp
cHRWYWx1ZSkpIHsKLSAgICAgICAgSlNHbG9iYWxDb250ZXh0UmVsZWFzZShzY3JpcHRDb250ZXh0
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEpTU3RyaW5nUmVmIGV4cGVjdGVkU3Ry
aW5nID0gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoZXhwZWN0ZWQpOwotICAgIEpTU3Ry
aW5nUmVmIHNjcmlwdFN0cmluZyA9IEpTVmFsdWVUb1N0cmluZ0NvcHkoc2NyaXB0Q29udGV4dCwg
c2NyaXB0VmFsdWUsIDApOwotICAgIEVYUEVDVF9UUlVFKEpTU3RyaW5nSXNFcXVhbChzY3JpcHRT
dHJpbmcsIGV4cGVjdGVkU3RyaW5nKSk7Ci0KLSAgICBKU1N0cmluZ1JlbGVhc2Uoc2NyaXB0U3Ry
aW5nKTsKLSAgICBKU1N0cmluZ1JlbGVhc2UoZXhwZWN0ZWRTdHJpbmcpOwotICAgIEpTR2xvYmFs
Q29udGV4dFJlbGVhc2Uoc2NyaXB0Q29udGV4dCk7Ci19Ci0KLXN0YXRpYyB2b2lkIGRpZFJ1blN0
ZXAxU3RhdGVDaGFuZ2VWaXNpYmxlVG9IaWRkZW4oV0tTZXJpYWxpemVkU2NyaXB0VmFsdWVSZWYg
cmVzdWx0U2VyaWFsaXplZFNjcmlwdFZhbHVlLCBXS0Vycm9yUmVmIGVycm9yLCB2b2lkKiBjb250
ZXh0KQotewotICAgIGFzc2VydFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlzU3RyaW5nVmFsdWUocmVz
dWx0U2VyaWFsaXplZFNjcmlwdFZhbHVlLCBlcnJvciwgInZpc2libGUiKTsKLSAgICBzZXRQYWdl
VmlzaWJpbGl0eVN0YXRlV2l0aEV2YWxDb250aW51YXRpb24oc3RhdGljX2Nhc3Q8UGxhdGZvcm1X
ZWJWaWV3Kj4oY29udGV4dCksIGtXS1BhZ2VWaXNpYmlsaXR5U3RhdGVIaWRkZW4sIGRpZFJ1blN0
ZXAyU3RhdGVDaGFuZ2VIaWRkZW5Ub1ByZXJlbmRlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIGRpZFJ1
blN0ZXAyU3RhdGVDaGFuZ2VIaWRkZW5Ub1ByZXJlbmRlcihXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1
ZVJlZiByZXN1bHRTZXJpYWxpemVkU2NyaXB0VmFsdWUsIFdLRXJyb3JSZWYgZXJyb3IsIHZvaWQq
IGNvbnRleHQpCi17Ci0gICAgYXNzZXJ0U2VyaWFsaXplZFNjcmlwdFZhbHVlSXNTdHJpbmdWYWx1
ZShyZXN1bHRTZXJpYWxpemVkU2NyaXB0VmFsdWUsIGVycm9yLCAiaGlkZGVuIik7Ci0gICAgc2V0
UGFnZVZpc2liaWxpdHlTdGF0ZVdpdGhFdmFsQ29udGludWF0aW9uKHN0YXRpY19jYXN0PFBsYXRm
b3JtV2ViVmlldyo+KGNvbnRleHQpLCBrV0tQYWdlVmlzaWJpbGl0eVN0YXRlUHJlcmVuZGVyLCBk
aWRSdW5TdGVwM1N0YXRlQ2hhbmdlUHJlcmVuZGVyVG9VbmxvYWRlZCk7Ci19Ci0KLXN0YXRpYyB2
b2lkIGRpZFJ1blN0ZXAzU3RhdGVDaGFuZ2VQcmVyZW5kZXJUb1VubG9hZGVkKFdLU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlUmVmIHJlc3VsdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgV0tFcnJvclJlZiBl
cnJvciwgdm9pZCogY29udGV4dCkKLXsKLSAgICBhc3NlcnRTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
c1N0cmluZ1ZhbHVlKHJlc3VsdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgZXJyb3IsICJwcmVyZW5k
ZXIiKTsKLSAgICB0ZXN0RG9uZSA9IHRydWU7Ci19Ci0KLVRFU1QoV2ViS2l0MiwgUGFnZVZpc2li
aWxpdHlTdGF0ZSkKLXsKLSAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQoQWRv
cHRXSywgV0tDb250ZXh0Q3JlYXRlKCkpOwotCi0gICAgLy8gUGFzcyB0aGUgUGxhdGZvcm1XZWJW
aWV3IHdlYlZpZXcgb24gYXMgdGhlIGNvbnRleHQgb2YgdGhlIGV2YWxzLCBzbyB3ZSBjYW4gY29u
dGludWUgdG8gZXZhbCBvbiBpdC4KLSAgICBQbGF0Zm9ybVdlYlZpZXcgd2ViVmlldyhjb250ZXh0
LmdldCgpKTsKLSAgICBzZXRQYWdlVmlzaWJpbGl0eVN0YXRlV2l0aEV2YWxDb250aW51YXRpb24o
JndlYlZpZXcsIGtXS1BhZ2VWaXNpYmlsaXR5U3RhdGVWaXNpYmxlLCBkaWRSdW5TdGVwMVN0YXRl
Q2hhbmdlVmlzaWJsZVRvSGlkZGVuKTsKLQotICAgIFV0aWw6OnJ1bigmdGVzdERvbmUpOwotfQot
Ci19IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL21hYy9QYWdlVmlzaWJpbGl0eVN0YXRlV2l0aFdpbmRvd0NoYW5nZXMubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvUGFnZVZpc2liaWxpdHlTdGF0
ZVdpdGhXaW5kb3dDaGFuZ2VzLm1tCShyZXZpc2lvbiAxNjA5NzYpCisrKyBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL21hYy9QYWdlVmlzaWJpbGl0eVN0YXRlV2l0aFdpbmRvd0NoYW5nZXMubW0J
KHdvcmtpbmcgY29weSkKQEAgLTI3LDExICsyNywxMiBAQAogI2ltcG9ydCAiSmF2YVNjcmlwdFRl
c3QuaCIKICNpbXBvcnQgIlRlc3QuaCIKICNpbXBvcnQgIldlYktpdEFnbm9zdGljVGVzdC5oIgot
I2ltcG9ydCA8V2ViS2l0L1dlYlZpZXcuaD4KKyNpbXBvcnQgPFdlYktpdC9XZWJWaWV3UHJpdmF0
ZS5oPgogI2ltcG9ydCA8V2ViS2l0Mi9XS1ZpZXdQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvUmV0
YWluUHRyLmg+CiAKLXN0YXRpYyBib29sIGRpZEdldFBhZ2VTaWduYWxUb0NvbnRpbnVlOworc3Rh
dGljIGJvb2wgaXNXYWl0aW5nRm9yUGFnZVNpZ25hbFRvQ29udGludWUgPSBmYWxzZTsKK3N0YXRp
YyBib29sIGRpZEdldFBhZ2VTaWduYWxUb0NvbnRpbnVlID0gZmFsc2U7CiAKIC8vIFdlYktpdDEg
V2ViVUlEZWxlZ2F0ZQogCkBAIC00Miw2ICs0Myw4IEBAIEBpbnRlcmZhY2UgUGFnZVZpc2liaWxp
dHlTdGF0ZURlbGVnYXRlIDoKIAogLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIHJ1
bkphdmFTY3JpcHRBbGVydFBhbmVsV2l0aE1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZSBpbml0
aWF0ZWRCeUZyYW1lOihXZWJGcmFtZSAqKWZyYW1lCiB7CisgICAgRVhQRUNUX1RSVUUoaXNXYWl0
aW5nRm9yUGFnZVNpZ25hbFRvQ29udGludWUpOworICAgIGlzV2FpdGluZ0ZvclBhZ2VTaWduYWxU
b0NvbnRpbnVlID0gZmFsc2U7CiAgICAgZGlkR2V0UGFnZVNpZ25hbFRvQ29udGludWUgPSB0cnVl
OwogfQogCkBAIC01MSw2ICs1NCw4IEBAIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRl
ciBydW5KYXYKIAogc3RhdGljIHZvaWQgcnVuSmF2YVNjcmlwdEFsZXJ0KFdLUGFnZVJlZiBwYWdl
LCBXS1N0cmluZ1JlZiBhbGVydFRleHQsIFdLRnJhbWVSZWYgZnJhbWUsIGNvbnN0IHZvaWQqIGNs
aWVudEluZm8pCiB7CisgICAgRVhQRUNUX1RSVUUoaXNXYWl0aW5nRm9yUGFnZVNpZ25hbFRvQ29u
dGludWUpOworICAgIGlzV2FpdGluZ0ZvclBhZ2VTaWduYWxUb0NvbnRpbnVlID0gZmFsc2U7CiAg
ICAgZGlkR2V0UGFnZVNpZ25hbFRvQ29udGludWUgPSB0cnVlOwogfQogCkBAIC03Miw2ICs3Nyw4
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZVZpZXcoV0tWaWV3ICopIE9W
RVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB0ZWFyZG93blZpZXcoV2ViVmlldyAqKSBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIHZvaWQgdGVhcmRvd25WaWV3KFdLVmlldyAqKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0UHJlcmVuZGVyKFdlYlZpZXcgKik7CisgICAgdmlydHVhbCB2b2lk
IHNldFByZXJlbmRlcihXS1ZpZXcgKik7CiB9OwogCiB2b2lkIFBhZ2VWaXNpYmlsaXR5U3RhdGVX
aXRoV2luZG93Q2hhbmdlczo6aW5pdGlhbGl6ZVZpZXcoV2ViVmlldyAqd2ViVmlldykKQEAgLTg3
LDYgKzk0LDExIEBAIHZvaWQgUGFnZVZpc2liaWxpdHlTdGF0ZVdpdGhXaW5kb3dDaGFuZ2UKICAg
ICBbdWlEZWxlZ2F0ZSByZWxlYXNlXTsKIH0KIAordm9pZCBQYWdlVmlzaWJpbGl0eVN0YXRlV2l0
aFdpbmRvd0NoYW5nZXM6OnNldFByZXJlbmRlcihXZWJWaWV3ICp3ZWJWaWV3KQoreworICAgIFt3
ZWJWaWV3IF9zZXRWaXNpYmlsaXR5U3RhdGU6V2ViUGFnZVZpc2liaWxpdHlTdGF0ZVByZXJlbmRl
ciBpc0luaXRpYWxTdGF0ZTpZRVNdOworfQorCiB2b2lkIFBhZ2VWaXNpYmlsaXR5U3RhdGVXaXRo
V2luZG93Q2hhbmdlczo6aW5pdGlhbGl6ZVZpZXcoV0tWaWV3ICp3a1ZpZXcpCiB7CiAgICAgV0tQ
YWdlVUlDbGllbnRWMCB1aUNsaWVudDsKQEAgLTEwMyw2ICsxMTUsMTIgQEAgdm9pZCBQYWdlVmlz
aWJpbGl0eVN0YXRlV2l0aFdpbmRvd0NoYW5nZQogICAgIC8vIFdlIGRvIG5vdCBuZWVkIHRvIHRl
YXJkb3duIHRoZSBXS1BhZ2VVSUNsaWVudC4KIH0KIAordm9pZCBQYWdlVmlzaWJpbGl0eVN0YXRl
V2l0aFdpbmRvd0NoYW5nZXM6OnNldFByZXJlbmRlcihXS1ZpZXcgKndrVmlldykKK3sKKyAgICBX
S1BhZ2VTZXRWaXNpYmlsaXR5U3RhdGUod2tWaWV3LnBhZ2VSZWYsIGtXS1BhZ2VWaXNpYmlsaXR5
U3RhdGVQcmVyZW5kZXIsIHRydWUpOworfQorCisKIHRlbXBsYXRlIDx0eXBlbmFtZSBWaWV3Pgog
dm9pZCBQYWdlVmlzaWJpbGl0eVN0YXRlV2l0aFdpbmRvd0NoYW5nZXM6OnJ1blRlc3QoVmlldyB2
aWV3KQogewpAQCAtMTEwLDM1ICsxMjgsNDkgQEAgdm9pZCBQYWdlVmlzaWJpbGl0eVN0YXRlV2l0
aFdpbmRvd0NoYW5nZQogICAgIEVYUEVDVF9OVUxMKFt2aWV3IHdpbmRvd10pOwogICAgIEVYUEVD
VF9OVUxMKFt2aWV3IHN1cGVydmlld10pOwogICAgIEVYUEVDVF9KU19FUSh2aWV3LCAiZG9jdW1l
bnQudmlzaWJpbGl0eVN0YXRlIiwgImhpZGRlbiIpOworICAgIEVYUEVDVF9KU19FUSh2aWV3LCAi
ZG9jdW1lbnQuaGlkZGVuIiwgInRydWUiKTsKKworICAgIC8vIE1hcmsgdGhlIHBhZ2UgYXMgYmVp
bmcgYSAicHJlcmVuZGVyIi4KKyAgICBzZXRQcmVyZW5kZXIodmlldyk7CisgICAgRVhQRUNUX0pT
X0VRKHZpZXcsICJkb2N1bWVudC52aXNpYmlsaXR5U3RhdGUiLCAicHJlcmVuZGVyIik7CisgICAg
RVhQRUNUX0pTX0VRKHZpZXcsICJkb2N1bWVudC5oaWRkZW4iLCAidHJ1ZSIpOwogCi0gICAgLy8g
QWRkIGl0IHRvIGEgbm9uLXZpc2libGUgd2luZG93LiBQYWdlVmlzaWJpbGl0eSBzaG91bGQgc3Rp
bGwgYmUgImhpZGRlbiIuCisgICAgLy8gQWRkIGl0IHRvIGEgbm9uLXZpc2libGUgd2luZG93LiBQ
YWdlVmlzaWJpbGl0eSBzaG91bGQgc3RpbGwgYmUgInByZXJlbmRlciIuCiAgICAgUmV0YWluUHRy
PE5TV2luZG93PiB3aW5kb3cgPSBhZG9wdE5TKFtbTlNXaW5kb3cgYWxsb2NdIGluaXRXaXRoQ29u
dGVudFJlY3Q6dmlldy5mcmFtZSBzdHlsZU1hc2s6TlNCb3JkZXJsZXNzV2luZG93TWFzayBiYWNr
aW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6Tk9dKTsKICAgICBbd2luZG93LmdldCgp
LmNvbnRlbnRWaWV3IGFkZFN1YnZpZXc6dmlld107CiAgICAgRVhQRUNUX05PVF9OVUxMKFt2aWV3
IHdpbmRvd10pOwogICAgIEVYUEVDVF9OT1RfTlVMTChbdmlldyBzdXBlcnZpZXddKTsKICAgICBF
WFBFQ1RfRkFMU0UoW3dpbmRvdy5nZXQoKSBpc1Zpc2libGVdKTsKLSAgICBFWFBFQ1RfSlNfRVEo
dmlldywgImRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSIsICJoaWRkZW4iKTsKKyAgICBFWFBFQ1Rf
SlNfRVEodmlldywgImRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSIsICJwcmVyZW5kZXIiKTsKKyAg
ICBFWFBFQ1RfSlNfRVEodmlldywgImRvY3VtZW50LmhpZGRlbiIsICJ0cnVlIik7CiAKICAgICAv
LyBNYWtlIHRoZSB3aW5kb3cgdmlzaWJsZS4gUGFnZVZpc2liaWxpdHkgc2hvdWxkIGJlY29tZSAi
dmlzaWJsZSIuCi0gICAgZGlkR2V0UGFnZVNpZ25hbFRvQ29udGludWUgPSBmYWxzZTsgICAgCisg
ICAgaXNXYWl0aW5nRm9yUGFnZVNpZ25hbFRvQ29udGludWUgPSB0cnVlOworICAgIGRpZEdldFBh
Z2VTaWduYWxUb0NvbnRpbnVlID0gZmFsc2U7CiAgICAgW3dpbmRvdy5nZXQoKSBtYWtlS2V5QW5k
T3JkZXJGcm9udDpuaWxdOwogICAgIEVYUEVDVF9UUlVFKFt3aW5kb3cuZ2V0KCkgaXNWaXNpYmxl
XSk7CiAgICAgVXRpbDo6cnVuKCZkaWRHZXRQYWdlU2lnbmFsVG9Db250aW51ZSk7CiAgICAgRVhQ
RUNUX0pTX0VRKHZpZXcsICJkb2N1bWVudC52aXNpYmlsaXR5U3RhdGUiLCAidmlzaWJsZSIpOwor
ICAgIEVYUEVDVF9KU19FUSh2aWV3LCAiZG9jdW1lbnQuaGlkZGVuIiwgImZhbHNlIik7CiAKICAg
ICAvLyBNaW5pbWl6ZSB0aGUgd2luZG93LiBQYWdlVmlzaWJpbGl0eSBzaG91bGQgYmVjb21lICJo
aWRkZW4iLgorICAgIGlzV2FpdGluZ0ZvclBhZ2VTaWduYWxUb0NvbnRpbnVlID0gdHJ1ZTsKICAg
ICBkaWRHZXRQYWdlU2lnbmFsVG9Db250aW51ZSA9IGZhbHNlOwogICAgIFt3aW5kb3cuZ2V0KCkg
bWluaWF0dXJpemU6bmlsXTsKICAgICBVdGlsOjpydW4oJmRpZEdldFBhZ2VTaWduYWxUb0NvbnRp
bnVlKTsKICAgICBFWFBFQ1RfSlNfRVEodmlldywgImRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSIs
ICJoaWRkZW4iKTsKKyAgICBFWFBFQ1RfSlNfRVEodmlldywgImRvY3VtZW50LmhpZGRlbiIsICJ0
cnVlIik7CiAKICAgICAvLyBEZW1pbmltaXplIHRoZSB3aW5kb3cuIFBhZ2VWaXNpYmlsaXR5IHNo
b3VsZCBiZWNvbWUgInZpc2libGUiLgorICAgIGlzV2FpdGluZ0ZvclBhZ2VTaWduYWxUb0NvbnRp
bnVlID0gdHJ1ZTsKICAgICBkaWRHZXRQYWdlU2lnbmFsVG9Db250aW51ZSA9IGZhbHNlOwogICAg
IFt3aW5kb3cuZ2V0KCkgZGVtaW5pYXR1cml6ZTpuaWxdOwogICAgIFV0aWw6OnJ1bigmZGlkR2V0
UGFnZVNpZ25hbFRvQ29udGludWUpOwogICAgIEVYUEVDVF9KU19FUSh2aWV3LCAiZG9jdW1lbnQu
dmlzaWJpbGl0eVN0YXRlIiwgInZpc2libGUiKTsKKyAgICBFWFBFQ1RfSlNfRVEodmlldywgImRv
Y3VtZW50LmhpZGRlbiIsICJmYWxzZSIpOwogCiAgICAgLy8gUmVtb3ZlIHRoZSBXZWJWaWV3IGZy
b20gaXRzIHN1cGVydmlldy4gUGFnZVZpc2liaWxpdHkgc2hvdWxkIGJlY29tZSAiaGlkZGVuIi4K
KyAgICBpc1dhaXRpbmdGb3JQYWdlU2lnbmFsVG9Db250aW51ZSA9IHRydWU7CiAgICAgZGlkR2V0
UGFnZVNpZ25hbFRvQ29udGludWUgPSBmYWxzZTsKICAgICBbdmlldyByZW1vdmVGcm9tU3VwZXJ2
aWV3XTsKICAgICBFWFBFQ1RfTlVMTChbdmlldyB3aW5kb3ddKTsKQEAgLTE0Niw2ICsxNzgsNyBA
QCB2b2lkIFBhZ2VWaXNpYmlsaXR5U3RhdGVXaXRoV2luZG93Q2hhbmdlCiAgICAgRVhQRUNUX1RS
VUUoW3dpbmRvdy5nZXQoKSBpc1Zpc2libGVdKTsKICAgICBVdGlsOjpydW4oJmRpZEdldFBhZ2VT
aWduYWxUb0NvbnRpbnVlKTsKICAgICBFWFBFQ1RfSlNfRVEodmlldywgImRvY3VtZW50LnZpc2li
aWxpdHlTdGF0ZSIsICJoaWRkZW4iKTsKKyAgICBFWFBFQ1RfSlNfRVEodmlldywgImRvY3VtZW50
LmhpZGRlbiIsICJ0cnVlIik7CiB9CiAgICAgCiBURVNUX0YoUGFnZVZpc2liaWxpdHlTdGF0ZVdp
dGhXaW5kb3dDaGFuZ2VzLCBXZWJLaXQpCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMTYwOTc2KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNjcsNiArMTE2Nyw3
IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OnNldEN1c3RvbVBvbGljeURlbGUKIAogdm9pZCBUZXN0
Q29udHJvbGxlcjo6c2V0VmlzaWJpbGl0eVN0YXRlKFdLUGFnZVZpc2liaWxpdHlTdGF0ZSB2aXNp
YmlsaXR5U3RhdGUsIGJvb2wgaXNJbml0aWFsU3RhdGUpCiB7CisgICAgc2V0SGlkZGVuKHZpc2li
aWxpdHlTdGF0ZSAhPSBrV0tQYWdlVmlzaWJpbGl0eVN0YXRlVmlzaWJsZSk7CiAgICAgV0tQYWdl
U2V0VmlzaWJpbGl0eVN0YXRlKG1fbWFpbldlYlZpZXctPnBhZ2UoKSwgdmlzaWJpbGl0eVN0YXRl
LCBpc0luaXRpYWxTdGF0ZSk7CiB9CiAKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dENvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RD
b250cm9sbGVyLmgJKHJldmlzaW9uIDE2MDk3NikKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdENvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTY0LDYgKzE2NCw4IEBAIHByaXZh
dGU6CiAgICAgc3RhdGljIHZvaWQgcnVuTW9kYWwoV0tQYWdlUmVmLCBjb25zdCB2b2lkKiBjbGll
bnRJbmZvKTsKICAgICBzdGF0aWMgdm9pZCBydW5Nb2RhbChQbGF0Zm9ybVdlYlZpZXcqKTsKIAor
ICAgIHZvaWQgc2V0SGlkZGVuKGJvb2wpOworCiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGxpYnJh
cnlQYXRoRm9yVGVzdGluZygpOwogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBwbGF0Zm9ybUxpYnJh
cnlQYXRoRm9yVGVzdGluZygpOwogCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL2VmbC9U
ZXN0Q29udHJvbGxlckVmbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9lZmwvVGVzdENvbnRyb2xsZXJFZmwuY3BwCShyZXZpc2lvbiAxNjA5NzYpCisrKyBUb29scy9X
ZWJLaXRUZXN0UnVubmVyL2VmbC9UZXN0Q29udHJvbGxlckVmbC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEwMSw2ICsxMDEsMTEgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1Jbml0aWFs
aXplQwogewogfQogCit2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRIaWRkZW4oYm9vbCkKK3sKKyAg
ICAvLyBGSVhNRTogTmVlZCB0byBpbXBsZW1lbnQgdGhpcyB0byB0ZXN0IHZpc2liaWxpdHlTdGF0
ZS4KK30KKwogdm9pZCBUZXN0Q29udHJvbGxlcjo6cnVuTW9kYWwoUGxhdGZvcm1XZWJWaWV3KikK
IHsKICAgICAvLyBGSVhNRTogTmVlZCB0byBpbXBsZW1lbnQgdGhpcyB0byB0ZXN0IHNob3dNb2Rh
bERpYWxvZy4KSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL1Rlc3RDb250cm9sbGVy
R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL2d0ay9UZXN0Q29u
dHJvbGxlckd0ay5jcHAJKHJldmlzaW9uIDE2MDk3NikKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvZ3RrL1Rlc3RDb250cm9sbGVyR3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDYgKzEw
MiwxMSBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUluaXRpYWxpemVDCiB7CiB9CiAK
K3ZvaWQgVGVzdENvbnRyb2xsZXI6OnNldEhpZGRlbihib29sKQoreworICAgIC8vIEZJWE1FOiBO
ZWVkIHRvIGltcGxlbWVudCB0aGlzIHRvIHRlc3QgdmlzaWJpbGl0eVN0YXRlLgorfQorCiB2b2lk
IFRlc3RDb250cm9sbGVyOjpydW5Nb2RhbChQbGF0Zm9ybVdlYlZpZXcqKQogewogICAgIC8vIEZJ
WE1FOiBOZWVkIHRvIGltcGxlbWVudCB0aGlzIHRvIHRlc3Qgc2hvd01vZGFsRGlhbG9nLgpJbmRl
eDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvVGVzdENvbnRyb2xsZXJNYWMubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvVGVzdENvbnRyb2xsZXJNYWMubW0J
KHJldmlzaW9uIDE2MDk3NikKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1Rlc3RDb250
cm9sbGVyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03OCw2ICs3OCwyMCBAQCB2b2lkIFRlc3RD
b250cm9sbGVyOjpwbGF0Zm9ybUluaXRpYWxpemVDCiB7CiB9CiAKK3ZvaWQgVGVzdENvbnRyb2xs
ZXI6OnNldEhpZGRlbihib29sIGhpZGRlbikKK3sKKyAgICBOU1dpbmRvdyAqd2luZG93ID0gW21h
aW5XZWJWaWV3KCktPnBsYXRmb3JtVmlldygpIHdpbmRvd107CisgICAgaWYgKCF3aW5kb3cpCisg
ICAgICAgIHJldHVybjsKKworICAgIGlmIChoaWRkZW4pCisgICAgICAgIFt3aW5kb3cgb3JkZXJP
dXQ6bmlsXTsKKyAgICBlbHNlIHsKKyAgICAgICAgW3dpbmRvdyBtYWtlS2V5QW5kT3JkZXJGcm9u
dDpuaWxdOworICAgICAgICBbTlNBcHAgYWN0aXZhdGVJZ25vcmluZ090aGVyQXBwczpZRVNdOwor
ICAgIH0KK30KKwogdm9pZCBUZXN0Q29udHJvbGxlcjo6cnVuTW9kYWwoUGxhdGZvcm1XZWJWaWV3
KiB2aWV3KQogewogICAgIE5TV2luZG93ICp3aW5kb3cgPSBbdmlldy0+cGxhdGZvcm1WaWV3KCkg
d2luZG93XTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2MTA1NykKKysrIExheW91dFRlc3RzL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM5IEBACisyMDEzLTEyLTI0ICBHYXZpbiBC
YXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KKworICAgICAgICBNZXJnZSBQYWdl
VmlzaWJpbGl0eVN0YXRlICYgVmlld1N0YXRlOjpJc1Zpc2libGUgaW4gV2ViS2l0MgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI2MjE0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViS2l0MiByZWR1bmRh
bnRseSB0cmFja3MgdGhlIHZpc2liaWxpdHkgb2YgdGhlIHZpZXcgdGhyb3VnaCB0d28gbWVjaGFu
aXNtcyAtIHRoZSB2aXNpYmlsaXR5CisgICAgICAgIHN0YXRlLCBhbmQgdGhlIHZpZXcgc3RhdGUu
IFJlbW92ZSB2aXNpYmlsaXR5IHN0YXRlIGZyb20gdGhlIFdlYktpdDIgbGF5ZXIuIFRoZSB2aXNp
YmlsaXR5CisgICAgICAgIHN0YXRlIGFsc28gdHJhY2tzIHRoZSBwcmVyZW5kZXIgc3RhdGUgLSBz
byBzcGxpdCB0aGlzIG91dCBhbmQgaGFuZGxlIGl0IHNlcGFyYXRlbHkgKGEgY2hhbmdlCisgICAg
ICAgIHdlIHNob3VsZCBtYWtlIGluIFdlYkNvcmUsIHRvbykuCisKKyAgICAgICAgUmVtb3Zpbmcg
dGhlIHJlZHVuZGFuY3kgYWxzbyByZW1vdmVzIHRoZSBhYmlsaXR5IGZyb20gdGhlIEFQSSB0byBz
ZXQgYSBmYWtlIHZpc2liaWxpdHkgc3RhdGUKKyAgICAgICAgKElzVmlzaWJsZSB0cmFja3MgdGhl
IGFjdHVhbCB2aXNpYmlsaXR5IG9mIHRoZSB2aWV3KS4gVGhyb3VnaCBwcml2YXRlIEFQSQorICAg
ICAgICAoV0tQYWdlU2V0VmlzaWJpbGl0eVN0YXRlKSBhIGNsaWVudCBjb3VsZCBwcmV2aW91c2x5
IHJlcXVlc3QgdGhlIHZpZXcgYmUgcmVwb3J0ZWQgYXMgaGlkZGVuIG9yCisgICAgICAgIHZpc2li
bGUsIGJ1dCB0aGlzIGRpZG4ndCByZWFsbHkgd29yayAtIHRoZSBvdmVycmlkZSB3YXMgbm90IGVu
Zm9yY2VkIGFuZCB0aGUgQVBJIG1heSByZXNldCB0aGUKKyAgICAgICAgc3RhdGUgYXQgYW4gYXJi
aXRyYXJ5IHBvaW50LiBUaGUgbWVjaGFuaXNtIGlzIG9ubHkgdXNlZCBieSB0ZXN0aW5nIGNvZGUs
IHdoaWNoIGluc3RlYWQgc2hvdWxkCisgICAgICAgIGFjdHVhbGx5IHVwZGF0ZSB0aGUgdmlldyB2
aXNpYmlsaXR5ICh0aGlzIHRlc3RzIG1vcmUgb2YgdGhlIGFjdHVhbCB2aXNpYmlsaXR5IG1lY2hh
bmlzbXMgdXNlZAorICAgICAgICBieSB0aGUgYnJvd3NlcikuIFRoZSBvbmUgYXNwZWN0IG9mIHRo
ZSBBUEkgcmVsaWVkIG9uIGJ5IGV4aXN0aW5nIGNsaWVudHMgaXMgdGhlIGFiaWxpdHkgdG8KKyAg
ICAgICAgaW5pdGlhbGl6ZSBhIGhpZGRlbiB2aWV3IGFzIHByZXJlbmRlciAtY29udGludWUgdG8g
c3VwcG9ydCB0aGlzIHNwZWNpZmljIGZ1bmN0aW9uYWxpdHkgdmlhCisgICAgICAgIFdLUGFnZVNl
dFZpc2liaWxpdHlTdGF0ZSwgdG8gbWFpbnRhaW4gYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuCisK
KworICAgICAgICBMYXlvdXRUZXN0cyAtIHJlbW92ZSB0ZXN0IGZvciBub3RpZmljYXRpb24gb24g
dmlzaWJpbGl0eSBzdGF0ZSBjaGFuZ2UgdG8gcHJlZXJlbmRlci4gVGhpcyB0ZXN0CisgICAgICAg
IHdhcyBjb3ZlcmluZyBzb21ldGhpbmcgbm9uc2Vuc2ljYWwsIGFuZCBub3Qgc3VwcG9ydGVkIGJ5
IHRoZSBzcGVjIC0gdGhlIHBhZ2Ugc2hvdWxkIG5ldmVyIHNlZQorICAgICAgICBhIHZpc2liaWxp
dHkgY2hhbmdlIHRvIHByZXJlbmRlciwgdGhpcyBzaG91bGQgb25seSBiZSBhbiBpbml0aWFsIHN0
YXRlLiBXZWJLaXQyIEFQSSBub3cgb25seQorICAgICAgICBhbGxvd3MgdGhlIGNsaWVudCB0byBj
aGFuZ2UgdGhlIHN0YXRlIHRvIHByZXJlbmRlciB3aXRob3V0IHNlbmRpbmcgYSBub3RpZmljYXRp
b24sIGFuZCB0aGVyZQorICAgICAgICBpcyBubyBzZW5zZSBpbiBjb250aW51aW5nIHRvIHN1cHBv
cnQgdGhlIGN1cnJlbnQgdGVzdCBjYXNlLCBzaW5jZSB0aGUgYmVoYXZpb3VyIGlzIG5laXRoZXIK
KyAgICAgICAgYWxsb3dlZCBieSBBUEkgbm9yIGF2YWlsYWJsZSBpbiB3ZWIgY29udGVudC4KKwor
ICAgICAgICBUaGUgcHJlcmVuZGVyIHN0YXRlIGlzIG5vdyBwcm9wZXJseSBjb3ZlcmVkIGJ5IEFQ
SSB0ZXN0cy4KKworICAgICAgICAqIGZhc3QvZXZlbnRzL3BhZ2UtdmlzaWJpbGl0eS10cmFuc2l0
aW9uLXRlc3QtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZXZlbnRzL3BhZ2UtdmlzaWJp
bGl0eS10cmFuc2l0aW9uLXRlc3QuaHRtbDoKKyAgICAgICAgICAgIC0gcmVtb3ZlIHRlc3QgZm9y
IG5vdGlmaWNhdGlvbiBvbiB2aXNpYmlsaXR5IHN0YXRlIGNoYW5nZSB0byBwcmVlcmVuZGVyLgor
CiAyMDEzLTEyLTI0ICBSYWR1IFN0YXZpbGEgIDxzdGF2aWxhQGFkb2JlLmNvbT4KIAogICAgICAg
ICBSZW5hbWUgZmFzdC9yZWdpb25zL3JlcGFpbnQvaW5jcmVhc2luZy1yZWdpb24tY29udGVudC1o
ZWlnaHQuaHRtbCB0byBzb21ldGhpbmcgbW9yZSBjbGVhcgpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvcGFnZS12aXNpYmlsaXR5LXRyYW5zaXRpb24tdGVzdC1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcGFnZS12aXNpYmlsaXR5LXRyYW5z
aXRpb24tdGVzdC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE2MDk4MCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZXZlbnRzL3BhZ2UtdmlzaWJpbGl0eS10cmFuc2l0aW9uLXRlc3QtZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC05LDggKzksNiBAQCBQQVNTIGRvY3VtZW50LnZpc2liaWxpdHlT
dGF0ZSBpcyAiaGlkZGVuCiBQQVNTIGRvY3VtZW50LmhpZGRlbiBpcyB0cnVlCiBQQVNTIGRvY3Vt
ZW50LnZpc2liaWxpdHlTdGF0ZSBpcyAiaGlkZGVuIgogUEFTUyBkb2N1bWVudC5oaWRkZW4gaXMg
dHJ1ZQotUEFTUyBkb2N1bWVudC52aXNpYmlsaXR5U3RhdGUgaXMgInByZXJlbmRlciIKLVBBU1Mg
ZG9jdW1lbnQuaGlkZGVuIGlzIHRydWUKIFBBU1MgZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlIGlz
ICJ2aXNpYmxlIgogUEFTUyBkb2N1bWVudC5oaWRkZW4gaXMgZmFsc2UKIFBBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3BhZ2Utdmlz
aWJpbGl0eS10cmFuc2l0aW9uLXRlc3QuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2V2ZW50cy9wYWdlLXZpc2liaWxpdHktdHJhbnNpdGlvbi10ZXN0Lmh0bWwJKHJldmlzaW9u
IDE2MDk4MCkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3BhZ2UtdmlzaWJpbGl0eS10cmFu
c2l0aW9uLXRlc3QuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMzksMjQgKzM5LDExIEBAIGZ1bmN0
aW9uIGNoZWNrSXNQYWdlSGlkZGVuKCkgewogICAgIHNob3VsZEJlVHJ1ZSgiZG9jdW1lbnQuaGlk
ZGVuIik7CiB9CiAKLWZ1bmN0aW9uIGNoZWNrSXNQYWdlUHJlcmVuZGVyaW5nKCkgewotICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygiZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlIiwgInByZXJlbmRl
ciIpOwotICAgIHNob3VsZEJlVHJ1ZSgiZG9jdW1lbnQuaGlkZGVuIik7Ci19Ci0KLWZ1bmN0aW9u
IGNoZWNrSXNQYWdlSW5VbmxvYWRlZCgpIHsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRv
Y3VtZW50LnZpc2liaWxpdHlTdGF0ZSIsICJ1bmxvYWRlZCIpOwotICAgIHNob3VsZEJlVHJ1ZSgi
ZG9jdW1lbnQuaGlkZGVuIik7Ci19Ci0KIC8vIFdlIHdpbGwgdHJ5IHRvIGNoYW5nZSB0aGUgdmlz
aWJpbGl0eSBzdGF0ZXMgYXM6CiAvLyAgMCAtIHZpc2libGUuIChJbml0aWFsIC0gaS5lLiBvbiBs
b2FkKS4KIC8vICAxIC0gaGlkZGVuIChzaG91bGQgZmlyZSBldmVudCkuCiAvLyAgMiAtIGhpZGRl
biAobm8gZXZlbnQpLgotLy8gIDMgLSBwcmVyZW5kZXIgKHNob3VsZCBmaXJlIGV2ZW50KS4KLS8v
ICA0IC0gdmlzaWJsZSAoc2hvdWxkIGZpcmUgZXZlbnQpLgotLy8gIDUgLSB1bmxvYWRlZCAoc2hv
dWxkIGZpcmUgZXZlbnQpLgotLy8gIDYgLSB2aXNpYmxlIChzaG91bGQgZmlyZSBldmVudCkuCisv
LyAgMyAtIHZpc2libGUgKHNob3VsZCBmaXJlIGV2ZW50KS4KIHZhciBudW1WaXNpYmlsaXR5Q2hh
bmdlcyA9IDA7CiAKIGZ1bmN0aW9uIHN0YXJ0VGVzdCgpIHsKQEAgLTgxLDE4ICs2OCwxMyBAQCBm
dW5jdGlvbiBvblZpc2liaWxpdHlDaGFuZ2UoKSB7CiAgICAgICAgIG1ha2VQYWdlSGlkZGVuKCk7
CiAgICAgICAgIGNoZWNrSXNQYWdlSGlkZGVuKCk7CiAgICAgICAgIG51bVZpc2liaWxpdHlDaGFu
Z2VzKys7Ci0gICAgICAgIG1ha2VQYWdlUHJlcmVuZGVyKCk7CisgICAgICAgIG1ha2VQYWdlVmlz
aWJsZSgpOwogICAgICAgICByZXR1cm47CiAgICAgfSBlbHNlIGlmIChudW1WaXNpYmlsaXR5Q2hh
bmdlcyA9PSAyKSB7CiAgICAgICAgIHRlc3RGYWlsZWQoIkludmFsaWQgZXZlbnQgZmlyZWQgb24g
c2FtZSBzdGF0ZSBjaGFuZ2UuIik7CiAgICAgICAgIGZpbmlzaFRlc3QoKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0gZWxzZSBpZiAobnVtVmlzaWJpbGl0eUNoYW5nZXMgPT0gMykgewotICAgICAg
ICBjaGVja0lzUGFnZVByZXJlbmRlcmluZygpOwotICAgICAgICBudW1WaXNpYmlsaXR5Q2hhbmdl
cysrOwotICAgICAgICBtYWtlUGFnZVZpc2libGUoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0g
ZWxzZSBpZiAobnVtVmlzaWJpbGl0eUNoYW5nZXMgPT0gNCkgewogICAgICAgICBjaGVja0lzUGFn
ZVZpc2libGUoKTsKICAgICAgICAgbnVtVmlzaWJpbGl0eUNoYW5nZXMrKzsKICAgICAgICAgZmlu
aXNoVGVzdCgpOwo=
</data>
<flag name="review"
          id="243690"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
      

    </bug>

</bugzilla>