<?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>161413</bug_id>
          
          <creation_ts>2016-08-30 16:59:59 -0700</creation_ts>
          <short_desc>Provide a TestWebKitAPI-wide WKNavigationDelegate to simplify tests</short_desc>
          <delta_ts>2016-09-02 12:36:49 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <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="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>achristensen</cc>
    
    <cc>andersca</cc>
    
    <cc>bdakin</cc>
    
    <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1224785</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2016-08-30 16:59:59 -0700</bug_when>
    <thetext>Provide a TestWebKitAPI-wide WKNavigationDelegate to simplify tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224787</commentid>
    <comment_count>1</comment_count>
      <attachid>287457</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2016-08-30 17:00:22 -0700</bug_when>
    <thetext>Created attachment 287457
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224789</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-08-30 17:02:37 -0700</bug_when>
    <thetext>Attachment 287457 did not pass style-queue:


ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/ProvisionalURLNotChange.mm:43:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/ProvisionalURLNotChange.mm:46:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/ShrinkToFit.mm:57:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/AnimatedResize.mm:70:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/FixedLayoutSize.mm:64:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 5 in 22 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>1224799</commentid>
    <comment_count>3</comment_count>
      <attachid>287462</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2016-08-30 17:16:09 -0700</bug_when>
    <thetext>Created attachment 287462
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224801</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-08-30 17:18:46 -0700</bug_when>
    <thetext>Attachment 287462 did not pass style-queue:


ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/ProvisionalURLNotChange.mm:43:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/ProvisionalURLNotChange.mm:46:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/ShrinkToFit.mm:57:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/AnimatedResize.mm:70:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/FixedLayoutSize.mm:64:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 5 in 22 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>1225640</commentid>
    <comment_count>5</comment_count>
      <attachid>287462</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-01 18:18:50 -0700</bug_when>
    <thetext>Comment on attachment 287462
Patch

Clearing flags on attachment: 287462

Committed r205329: &lt;http://trac.webkit.org/changeset/205329&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1225641</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-01 18:18:54 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1225781</commentid>
    <comment_count>7</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2016-09-02 09:18:17 -0700</bug_when>
    <thetext>It appears that API tests WebKit2.AnimatedResizeDoesNotHang and WebKit2.ResizeWithHiddenContentDoesNotHang are timing out on ios-simulater after this change

https://build.webkit.org/builders/Apple%20iOS%209%20Simulator%20Release%20WK2%20%28Tests%29/builds/8899</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1225812</commentid>
    <comment_count>8</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2016-09-02 10:31:47 -0700</bug_when>
    <thetext>Weird! I&apos;ll start a sim build and fix shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1225847</commentid>
    <comment_count>9</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2016-09-02 11:17:45 -0700</bug_when>
    <thetext>Oh, the mistake is clear.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1225889</commentid>
    <comment_count>10</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2016-09-02 12:36:49 -0700</bug_when>
    <thetext>Fixing in https://bugs.webkit.org/show_bug.cgi?id=161542.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>287457</attachid>
            <date>2016-08-30 17:00:22 -0700</date>
            <delta_ts>2016-08-30 17:16:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-161413-20160830165811.patch</filename>
            <type>text/plain</type>
            <size>64348</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA1MTk3CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNGViNGY0YWRkOThlMGY5NGQwNDY1YzM2NjBiMTk2NDZm
OTMwNzg1Ni4uZDc1YWRkOTAwYzdiYTYzMGE1ODBkMDM4MDBmZjE2YzYzZTI0ODQ3YiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDky
IEBACisyMDE2LTA4LTMwICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgor
CisgICAgICAgIFByb3ZpZGUgYSBUZXN0V2ViS2l0QVBJLXdpZGUgV0tOYXZpZ2F0aW9uRGVsZWdh
dGUgdG8gc2ltcGxpZnkgdGVzdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE2MTQxMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZCBUZXN0TmF2aWdhdGlvbkRlbGVnYXRlLCB3aGljaCBwcm92aWRlcyBi
bG9jayBwcm9wZXJ0aWVzIHRvIG1ha2UKKyAgICAgICAgd3JpdGluZyB0ZXN0cyBmZWVsIGEgbGl0
dGxlIG1vcmUgbmF0dXJhbCAodGhlIGNhbGxiYWNrcyBjYW4gYmUgaW5saW5lKSwKKyAgICAgICAg
YW5kIGFsc28gYWRkIFdLV2ViVmlldyBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbiwg
c28gdGhhdCBtYW55CisgICAgICAgIHRlc3RzIGRvbid0IGV2ZW4gbmVlZCB0byBtYW51YWxseSBh
bGxvY2F0ZSBhIG5hdmlnYXRpb24gZGVsZWdhdGUgYXQgYWxsLgorCisgICAgICAgIEFkb3B0IGlu
IHNvbWUgb2YgdGhlIHNpbXBsZXIgdGVzdHM7IHRoZXJlIGFyZSBhIGZldyBuYXZpZ2F0aW9uIGRl
bGVnYXRlcworICAgICAgICBsZWZ0IGJlaGluZCwgd2hpY2ggd2UgY2FuIG1vdmUgdG8gdGhlIG5l
dyBtb2RlbCBpbiB0aGUgZnV0dXJlLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2Vi
S2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQyL1dLQmFja0ZvcndhcmRMaXN0Lm1tOgorICAgICAgICAoVEVTVCk6Cisg
ICAgICAgICgtW1dLQmFja0ZvcndhcmRMaXN0VGVzdE5hdmlnYXRpb25EZWxlZ2F0ZSB3ZWJWaWV3
OmRpZEZpbmlzaE5hdmlnYXRpb246XSk6IERlbGV0ZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQyQ29jb2EvQWx3YXlzUmV2YWxpZGF0ZWRVUkxTY2hlbWVzLm1tOgorICAg
ICAgICAoVEVTVCk6CisgICAgICAgICgtW0Fsd2F5c1JldmFsaWRhdGVkVVJMU2NoZW1lc0RlbGVn
YXRlIHdlYlZpZXc6ZGlkRmluaXNoTmF2aWdhdGlvbjpdKTogRGVsZXRlZC4KKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9BbmltYXRlZFJlc2l6ZS5tbToKKyAgICAg
ICAgKGFuaW1hdGVkUmVzaXplV2ViVmlldyk6CisgICAgICAgICgtW0FuaW1hdGVkUmVzaXplTmF2
aWdhdGlvbkRlbGVnYXRlIF93ZWJWaWV3OnJlbmRlcmluZ1Byb2dyZXNzRGlkQ2hhbmdlOl0pOiBE
ZWxldGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL0F1dG9M
YXlvdXRJbnRlZ3JhdGlvbi5tbToKKyAgICAgICAgKC1bQXV0b0xheW91dFdLV2ViVmlldyBpbml0
V2l0aEZyYW1lOmNvbmZpZ3VyYXRpb246XSk6CisgICAgICAgICgtW0F1dG9MYXlvdXRXS1dlYlZp
ZXcgbG9hZDp3aXRoV2lkdGg6ZXhwZWN0aW5nQ29udGVudFNpemU6cmVzZXR0aW5nV2lkdGg6XSk6
CisgICAgICAgIChURVNUKToKKyAgICAgICAgKC1bQXV0b0xheW91dE5hdmlnYXRpb25EZWxlZ2F0
ZSB3ZWJWaWV3OmRpZEZpbmlzaE5hdmlnYXRpb246XSk6IERlbGV0ZWQuCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvQ2FuY2VsRm9udFN1YnJlc291cmNlLm1tOgor
ICAgICAgICAoVEVTVCk6CisgICAgICAgICgtW0NhbmNlbEZvbnRTdWJyZXNvdXJjZU5hdmlnYXRp
b25EZWxlZ2F0ZSB3ZWJWaWV3OmRpZEZpbmlzaE5hdmlnYXRpb246XSk6IERlbGV0ZWQuCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvQ29tbWFuZEJhY2tGb3J3YXJk
Lm1tOgorICAgICAgICAoV2ViS2l0Ml9Db21tYW5kQmFja0ZvcndhcmRUZXN0V0tXZWJWaWV3OjpT
ZXRVcCk6CisgICAgICAgIChXZWJLaXQyX0NvbW1hbmRCYWNrRm9yd2FyZFRlc3RXS1dlYlZpZXc6
OmxvYWRGaWxlcyk6CisgICAgICAgIChURVNUX0YpOgorICAgICAgICAoLVtDb21tYW5kQmFja0Zv
cndhcmROYXZpZ2F0aW9uRGVsZWdhdGUgd2ViVmlldzpkaWRGaW5pc2hOYXZpZ2F0aW9uOl0pOiBE
ZWxldGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL0RhdGFE
ZXRlY3Rpb24ubW06CisgICAgICAgIChleHBlY3RMaW5rQ291bnQpOgorICAgICAgICAoVEVTVCk6
CisgICAgICAgICgtW0RhdGFEZXRlY3Rpb25OYXZpZ2F0aW9uRGVsZWdhdGUgd2ViVmlldzpkaWRG
aW5pc2hOYXZpZ2F0aW9uOl0pOiBEZWxldGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0MkNvY29hL0ZpbmRJblBhZ2UubW06CisgICAgICAgIChURVNUKToKKyAgICAgICAg
KC1bRmluZEluUGFnZU5hdmlnYXRpb25EZWxlZ2F0ZSB3ZWJWaWV3OmRpZEZpbmlzaE5hdmlnYXRp
b246XSk6IERlbGV0ZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29j
b2EvRml4ZWRMYXlvdXRTaXplLm1tOgorICAgICAgICAoVEVTVCk6CisgICAgICAgICgtW0ZpeGVk
TGF5b3V0U2l6ZU5hdmlnYXRpb25EZWxlZ2F0ZSB3ZWJWaWV3OmRpZEZpbmlzaE5hdmlnYXRpb246
XSk6IERlbGV0ZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2Ev
SW5kZXhlZERCRGF0YWJhc2VQcm9jZXNzS2lsbC5tbToKKyAgICAgICAgKFRFU1QpOgorICAgICAg
ICAoLVtEYXRhYmFzZVByb2Nlc3NLaWxsTmF2aWdhdGlvbkRlbGVnYXRlIHdlYlZpZXc6ZGlkRmlu
aXNoTmF2aWdhdGlvbjpdKTogRGVsZXRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDJDb2NvYS9JbmRleGVkREJQZXJzaXN0ZW5jZS5tbToKKyAgICAgICAgKC1bSW5kZXhl
ZERCTmF2aWdhdGlvbkRlbGVnYXRlIHdlYlZpZXc6ZGlkRmluaXNoTmF2aWdhdGlvbjpdKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9Qcm92aXNp
b25hbFVSTE5vdENoYW5nZS5tbToKKyAgICAgICAgKFRFU1QpOgorICAgICAgICAoLVtQcm92aXNp
b25hbFVSTE5vdENoYW5nZUNvbnRyb2xsZXIgd2ViVmlldzpkaWRGaW5pc2hOYXZpZ2F0aW9uOl0p
OiBEZWxldGVkLgorICAgICAgICAoLVtQcm92aXNpb25hbFVSTE5vdENoYW5nZUNvbnRyb2xsZXIg
d2ViVmlldzpkaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uOndpdGhFcnJvcjpdKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9SZXF1aXJlc1Vz
ZXJBY3Rpb25Gb3JQbGF5YmFjay5tbToKKyAgICAgICAgKFJlcXVpcmVzVXNlckFjdGlvbkZvclBs
YXliYWNrVGVzdDo6Y3JlYXRlV2ViVmlldyk6CisgICAgICAgIChSZXF1aXJlc1VzZXJBY3Rpb25G
b3JQbGF5YmFja1Rlc3Q6OnRlc3RWaWRlb1dpdGhBdWRpbyk6CisgICAgICAgIChSZXF1aXJlc1Vz
ZXJBY3Rpb25Gb3JQbGF5YmFja1Rlc3Q6OnRlc3RWaWRlb1dpdGhvdXRBdWRpbyk6CisgICAgICAg
IChSZXF1aXJlc1VzZXJBY3Rpb25Gb3JQbGF5YmFja1Rlc3Q6OnRlc3RBdWRpb09ubHkpOgorICAg
ICAgICAoLVtSZXF1aXJlc1VzZXJBY3Rpb25Gb3JQbGF5YmFja05hdmlnYXRpb25EZWxlZ2F0ZSB3
ZWJWaWV3OmRpZEZpbmlzaE5hdmlnYXRpb246XSk6IERlbGV0ZWQuCisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvU2hyaW5rVG9GaXQubW06CisgICAgICAgIChURVNU
KToKKyAgICAgICAgKC1bU2hyaW5rVG9GaXROYXZpZ2F0aW9uRGVsZWdhdGUgd2ViVmlldzpkaWRG
aW5pc2hOYXZpZ2F0aW9uOl0pOiBEZWxldGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0MkNvY29hL1VzZXJDb250ZW50Q29udHJvbGxlci5tbToKKyAgICAgICAgKFRFU1Qp
OgorICAgICAgICAod2ViVmlld0ZvclNjcmlwdE1lc3NhZ2VIYW5kbGVyTXVsdGlwbGVIYW5kbGVy
UmVtb3ZhbFRlc3QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29h
L1VzZXJDb250ZW50V29ybGQubW06CisgICAgICAgIChURVNUKToKKyAgICAgICAgKC1bU2ltcGxl
RGVsZWdhdGUgd2ViVmlldzpkaWRGaW5pc2hOYXZpZ2F0aW9uOl0pOiBEZWxldGVkLgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1dLUERGVmlld1Jlc2l6ZUNyYXNo
Lm1tOgorICAgICAgICAoVEVTVCk6CisgICAgICAgICgtW1dLUERGVmlld1Jlc2l6ZU5hdmlnYXRp
b25EZWxlZ2F0ZSB3ZWJWaWV3OmRpZEZpbmlzaE5hdmlnYXRpb246XSk6IERlbGV0ZWQuCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvV0tXZWJWaWV3RXZhbHVhdGVK
YXZhU2NyaXB0Lm1tOgorICAgICAgICAoVEVTVCk6CisgICAgICAgICgtW0V2YWx1YXRlSmF2YVNj
cmlwdE5hdmlnYXRpb25EZWxlZ2F0ZSB3ZWJWaWV3OmRpZEZpbmlzaE5hdmlnYXRpb246XSk6IERl
bGV0ZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvV0tXZWJW
aWV3VGV4dElucHV0Lm1tOgorICAgICAgICAoVEVTVCk6CisgICAgICAgICgtW0R1bW15TmF2aWdh
dGlvbkRlbGVnYXRlIHdlYlZpZXc6ZGlkRmluaXNoTmF2aWdhdGlvbjpdKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUuaDogQWRk
ZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0TmF2aWdhdGlvbkRlbGVnYXRl
Lm1tOiBBZGRlZC4KKyAgICAgICAgKC1bVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZSB3ZWJWaWV3OmRp
ZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb246d2l0aEVycm9yOl0pOgorICAgICAgICAoLVtUZXN0
TmF2aWdhdGlvbkRlbGVnYXRlIHdlYlZpZXc6ZGlkRmluaXNoTmF2aWdhdGlvbjpdKToKKyAgICAg
ICAgKC1bVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZSBfd2ViVmlldzpyZW5kZXJpbmdQcm9ncmVzc0Rp
ZENoYW5nZTpdKToKKyAgICAgICAgKC1bVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZSB3YWl0Rm9yRGlk
RmluaXNoTmF2aWdhdGlvbl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3Rlc3Rfd2FpdEZvckRp
ZEZpbmlzaE5hdmlnYXRpb25dKToKKwogMjAxNi0wOC0zMCAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxn
aGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBVc2Ugb2YgdW5pbml0aWFsaXNlZCBtZW1vcnkgaW4g
VHJhbnNmb3JtYXRpb25NYXRyeDo6YmxlbmQ0KCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
ZmU4YzFhMmEwMWZjNGNlZGFhYTU3MDAxMDRiZGFjOTU0YzRkNmZhMy4uNjYzZjEzODkzOTBjNTdk
ZTNkNzQzMjY4OTI1NjM5Y2RjZTRjZjQ4MSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTUx
LDYgKzUxLDcgQEAKIAkJMjk3MjM0QjcxNzNBRkFDNzAwOTgzNjAxIC8qIEN1c3RvbVByb3RvY29s
c0ludmFsaWRTY2hlbWVfQnVuZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDI5NzIzNEI1MTczQUZBQzcwMDk4MzYwMSAvKiBDdXN0b21Qcm90b2Nv
bHNJbnZhbGlkU2NoZW1lX0J1bmRsZS5jcHAgKi87IH07CiAJCTJEMDAwNjVGMUMxRjU4OUEwMDg4
RTZBNyAvKiBXS1BERlZpZXdSZXNpemVDcmFzaC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEMDAwNjVEMUMxRjU4OTQwMDg4RTZBNyAvKiBXS1BERlZp
ZXdSZXNpemVDcmFzaC5tbSAqLzsgfTsKIAkJMkQxNjQ2RTIxRDE4NjJDRDAwMDE1QTFBIC8qIERl
ZmVycmVkVmlld0luV2luZG93U3RhdGVDaGFuZ2UubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDE2NDZFMTFEMTg2MkNEMDAwMTVBMUEgLyogRGVmZXJy
ZWRWaWV3SW5XaW5kb3dTdGF0ZUNoYW5nZS5tbSAqLzsgfTsKKwkJMkQxQzA0QTcxRDc2Mjk4QjAw
MEE2ODE2IC8qIFRlc3ROYXZpZ2F0aW9uRGVsZWdhdGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDFDMDRBNjFENzYyOThCMDAwQTY4MTYgLyogVGVz
dE5hdmlnYXRpb25EZWxlZ2F0ZS5tbSAqLzsgfTsKIAkJMkQ1MUEwQzcxQzhCRjAwQzAwNzY1QzQ1
IC8qIERPTUhUTUxWaWRlb0VsZW1lbnRXcmFwcGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ1MUEwQzUxQzhCRjAwNDAwNzY1QzQ1IC8qIERPTUhU
TUxWaWRlb0VsZW1lbnRXcmFwcGVyLm1tICovOyB9OwogCQkyREM0Q0Y3NzFEMkQ5REQ4MDBFQ0ND
OTQgLyogRGF0YURldGVjdGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDJEQzRDRjc2MUQyRDlERDgwMEVDQ0M5NCAvKiBEYXRhRGV0ZWN0aW9uLm1t
ICovOyB9OwogCQkyREQ3RDNBRjE3ODIyN0IzMDAyNkUxRTMgLyogbG90cy1vZi10ZXh0LXZlcnRp
Y2FsLWxyLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMkREN0QzQUUxNzgyMjdBQzAwMjZFMUUzIC8qIGxvdHMtb2YtdGV4dC12ZXJ0aWNh
bC1sci5odG1sICovOyB9OwpAQCAtNzIwLDYgKzcyMSw4IEBACiAJCTI5QUI4QUEzMTY0QzdBOTMw
MEQ0OUJFQyAvKiBUZXN0QnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlc3RCcm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQwMDA2NUQxQzFGNTg5NDAwODhFNkE3IC8q
IFdLUERGVmlld1Jlc2l6ZUNyYXNoLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gV0tQREZWaWV3UmVzaXplQ3Jhc2gubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTJEMTY0NkUxMUQxODYyQ0QwMDAxNUExQSAvKiBEZWZlcnJlZFZpZXdJbldpbmRvd1N0
YXRlQ2hhbmdlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gRGVm
ZXJyZWRWaWV3SW5XaW5kb3dTdGF0ZUNoYW5nZS5tbTsgcGF0aCA9IFdlYktpdDIvRGVmZXJyZWRW
aWV3SW5XaW5kb3dTdGF0ZUNoYW5nZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MkQxQzA0QTUxRDc2Mjk4QjAwMEE2ODE2IC8qIFRlc3ROYXZpZ2F0aW9uRGVsZWdhdGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oOyBw
YXRoID0gY29jb2EvVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkyRDFDMDRBNjFENzYyOThCMDAwQTY4MTYgLyogVGVzdE5hdmlnYXRpb25EZWxl
Z2F0ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFRlc3ROYXZp
Z2F0aW9uRGVsZWdhdGUubW07IHBhdGggPSBjb2NvYS9UZXN0TmF2aWdhdGlvbkRlbGVnYXRlLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDFGRTBBRjFBRDQ2NUMxMDA2Q0Q5RTYg
LyogRml4ZWRMYXlvdXRTaXplLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gRml4ZWRMYXlvdXRTaXplLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQky
RDUxQTBDNTFDOEJGMDA0MDA3NjVDNDUgLyogRE9NSFRNTFZpZGVvRWxlbWVudFdyYXBwZXIubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBET01IVE1MVmlkZW9FbGVt
ZW50V3JhcHBlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQ2NDBCNTQxNzg3
NURGRjAwQkZBRjk5IC8qIFNjcm9sbFBpbm5pbmdCZWhhdmlvcnMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2Nyb2xsUGlubmluZ0JlaGF2aW9ycy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMjI0LDYgKzEyMjcsOCBAQAogCQkJCTVDNzI2RDZE
MUQzRUUwNjgwMEM1RTFBMSAvKiBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyLmggKi8sCiAJCQkJNUM3
MjZENkUxRDNFRTA2ODAwQzVFMUExIC8qIEluc3RhbmNlTWV0aG9kU3dpenpsZXIubW0gKi8sCiAJ
CQkJMEYxMzlFNzIxQTQyM0EyQjAwRjU5MEY1IC8qIFBsYXRmb3JtVXRpbGl0aWVzQ29jb2EubW0g
Ki8sCisJCQkJMkQxQzA0QTUxRDc2Mjk4QjAwMEE2ODE2IC8qIFRlc3ROYXZpZ2F0aW9uRGVsZWdh
dGUuaCAqLywKKwkJCQkyRDFDMDRBNjFENzYyOThCMDAwQTY4MTYgLyogVGVzdE5hdmlnYXRpb25E
ZWxlZ2F0ZS5tbSAqLywKIAkJCQlBMTRGQzU4RDFCOEFFMzY1MDBEMTA3RUIgLyogVGVzdFByb3Rv
Y29sLmggKi8sCiAJCQkJQTE0RkM1OEUxQjhBRTM2NTAwRDEwN0VCIC8qIFRlc3RQcm90b2NvbC5t
bSAqLywKIAkJCQk3QzgzRTAzOTFEMEE2MDI3MDBGRUJDRjMgLyogVXRpbGl0aWVzQ29jb2EubW0g
Ki8sCkBAIC0yMTk1LDYgKzIyMDAsNyBAQAogCQkJCTVDMjkzNjkzMUQ1QkY3MEQwMERFQUIxRSAv
KiBDb29raWVBY2NlcHRQb2xpY3kubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VFODFBNDEx
QUU2MDA0NDdDNEMgLyogQ29va2llTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0NF
N0VBQzFBNDExQTM0MDA0NDdDNEMgLyogQ291bnRlcnMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
MkQxQzA0QTcxRDc2Mjk4QjAwMEE2ODE2IC8qIFRlc3ROYXZpZ2F0aW9uRGVsZWdhdGUubW0gaW4g
U291cmNlcyAqLywKIAkJCQk3Q0NFN0VEQjFBNDExQTkyMDA0NDdDNEMgLyogQ1NTUGFyc2VyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RjI5MUE0MTFCMTAwMDQ0N0M0QyAvKiBDdXN0b21Q
cm90b2NvbHNJbnZhbGlkU2NoZW1lLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdGMkExQTQx
MUIxMDAwNDQ3QzRDIC8qIEN1c3RvbVByb3RvY29sc1N5bmNYSFJUZXN0Lm1tIGluIFNvdXJjZXMg
Ki8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvV0tCYWNr
Rm9yd2FyZExpc3QubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvV0tCYWNr
Rm9yd2FyZExpc3QubW0KaW5kZXggMWRiYWFlNDE0ZDFhMmM4ZTRjN2Y5MDAxMWI1MTI3ZTBmNmQ2
ZDY0My4uMjBjZjhkODdlNDBmZDlmMWM3ZDZjNzQ0M2FlOWE5OGM0MjcwMTA1MiAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1dLQmFja0ZvcndhcmRMaXN0Lm1t
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9XS0JhY2tGb3J3YXJkTGlz
dC5tbQpAQCAtMjYsOSArMjYsOSBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJQbGF0
Zm9ybVV0aWxpdGllcy5oIgogI2ltcG9ydCAiVGVzdC5oIgorI2ltcG9ydCAiVGVzdE5hdmlnYXRp
b25EZWxlZ2F0ZS5oIgogCiAjaW1wb3J0IDxXZWJLaXQvV0tCYWNrRm9yd2FyZExpc3RQcml2YXRl
Lmg+Ci0jaW1wb3J0IDxXZWJLaXQvV0tOYXZpZ2F0aW9uRGVsZWdhdGUuaD4KICNpbXBvcnQgPFdl
YktpdC9XS05hdmlnYXRpb25Qcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJp
dmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L19XS1Nlc3Npb25TdGF0ZS5oPgpAQCAtMzYsMjAgKzM2
LDYgQEAKIAogI2lmIFdLX0FQSV9FTkFCTEVECiAKLXN0YXRpYyBib29sIGlzRG9uZTsKLQotQGlu
dGVyZmFjZSBXS0JhY2tGb3J3YXJkTGlzdFRlc3ROYXZpZ2F0aW9uRGVsZWdhdGUgOiBOU09iamVj
dCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGU+Ci1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBXS0JhY2tG
b3J3YXJkTGlzdFRlc3ROYXZpZ2F0aW9uRGVsZWdhdGUKLQotLSAodm9pZCl3ZWJWaWV3OihXS1dl
YlZpZXcgKil3ZWJWaWV3IGRpZEZpbmlzaE5hdmlnYXRpb246KFdLTmF2aWdhdGlvbiAqKW5hdmln
YXRpb24KLXsKLSAgICBpc0RvbmUgPSB0cnVlOwotfQotCi1AZW5kCi0KIHN0YXRpYyBOU1N0cmlu
ZyAqbG9hZGFibGVVUkwxID0gQCJkYXRhOnRleHQvaHRtbCxubyUyMGVycm9yJTIwQSI7CiBzdGF0
aWMgTlNTdHJpbmcgKmxvYWRhYmxlVVJMMiA9IEAiZGF0YTp0ZXh0L2h0bWwsbm8lMjBlcnJvciUy
MEIiOwogc3RhdGljIE5TU3RyaW5nICpsb2FkYWJsZVVSTDMgPSBAImRhdGE6dGV4dC9odG1sLG5v
JTIwZXJyb3IlMjBDIjsKQEAgLTU3LDIwICs0MywxNSBAQCBzdGF0aWMgTlNTdHJpbmcgKmxvYWRh
YmxlVVJMMyA9IEAiZGF0YTp0ZXh0L2h0bWwsbm8lMjBlcnJvciUyMEMiOwogVEVTVChXS0JhY2tG
b3J3YXJkTGlzdCwgUmVtb3ZlQ3VycmVudEl0ZW0pCiB7CiAgICAgYXV0byB3ZWJWaWV3ID0gYWRv
cHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdF0pOwotICAgIGF1dG8gY29udHJvbGxlciA9IGFk
b3B0TlMoW1tXS0JhY2tGb3J3YXJkTGlzdFRlc3ROYXZpZ2F0aW9uRGVsZWdhdGUgYWxsb2NdIGlu
aXRdKTsKLSAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6Y29udHJvbGxlci5nZXQo
KV07CiAKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRo
VVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOmxvYWRhYmxlVVJMMV1dXTsKLSAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7Ci0gICAgaXNEb25lID0gZmFsc2U7CisgICAgW3dlYlZp
ZXcgX3Rlc3Rfd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOwogCiAgICAgW3dlYlZpZXcgbG9h
ZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmlu
Zzpsb2FkYWJsZVVSTDJdXV07Ci0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUp
OwotICAgIGlzRG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5p
c2hOYXZpZ2F0aW9uXTsKIAogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3Qg
cmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6bG9hZGFibGVVUkwzXV1dOwotICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKLSAgICBpc0RvbmUgPSBmYWxzZTsK
KyAgICBbd2ViVmlldyBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CiAKICAgICBX
S0JhY2tGb3J3YXJkTGlzdCAqbGlzdCA9IFt3ZWJWaWV3IGJhY2tGb3J3YXJkTGlzdF07CiAgICAg
RVhQRUNUX0VRKChOU1VJbnRlZ2VyKTIsIGxpc3QuYmFja0xpc3QuY291bnQpOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvQWx3YXlzUmV2YWxpZGF0
ZWRVUkxTY2hlbWVzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2Ev
QWx3YXlzUmV2YWxpZGF0ZWRVUkxTY2hlbWVzLm1tCmluZGV4IGU4OGYwMjBkM2IwOGEzZGNjZDk4
MWZmMjllYzI4ZmU0YTM0YTY3MjMuLjg4MmRhYWI2MGNmMGI5ZmMyMjNjZDllYzlkYjFlOTNlNmJk
MTI2YTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29h
L0Fsd2F5c1JldmFsaWRhdGVkVVJMU2NoZW1lcy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdDJDb2NvYS9BbHdheXNSZXZhbGlkYXRlZFVSTFNjaGVtZXMubW0KQEAgLTI4
LDEzICsyOCwxMyBAQAogI2lmIFdLX0FQSV9FTkFCTEVECiAKICNpbXBvcnQgIlBsYXRmb3JtVXRp
bGl0aWVzLmgiCisjaW1wb3J0ICJUZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmgiCiAjaW1wb3J0IDxX
ZWJLaXQvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tQ
cm9jZXNzUG9vbFByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tQcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24uaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogc3RhdGljIE5TU3RyaW5n
ICogY29uc3QgY3VzdG9tU2NoZW1lID0gQCJjdXN0b20iOwotc3RhdGljIGJvb2wgaXNEb25lOwog
c3RhdGljIHNpemVfdCBsb2Fkc1N0YXJ0ZWQ7CiAKIEBpbnRlcmZhY2UgQWx3YXlzUmV2YWxpZGF0
ZWRVUkxTY2hlbWVQcm90b2NvbCA6IE5TVVJMUHJvdG9jb2wKQEAgLTc0LDE4ICs3NCw2IEBAIHN0
YXRpYyBzaXplX3QgbG9hZHNTdGFydGVkOwogCiBAZW5kCiAKLUBpbnRlcmZhY2UgQWx3YXlzUmV2
YWxpZGF0ZWRVUkxTY2hlbWVzRGVsZWdhdGUgOiBOU09iamVjdCA8V0tOYXZpZ2F0aW9uRGVsZWdh
dGU+Ci1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBBbHdheXNSZXZhbGlkYXRlZFVSTFNjaGVtZXNE
ZWxlZ2F0ZQotCi0tICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkRmluaXNo
TmF2aWdhdGlvbjooV0tOYXZpZ2F0aW9uICopbmF2aWdhdGlvbgotewotICAgIGlzRG9uZSA9IHRy
dWU7Ci19Ci0KLUBlbmQKLQogVEVTVChXZWJLaXQyLCBBbHdheXNSZXZhbGlkYXRlZFVSTFNjaGVt
ZXMpCiB7CiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7CkBAIC05OSwxOCArODcsMTUgQEAgVEVTVChX
ZWJLaXQyLCBBbHdheXNSZXZhbGlkYXRlZFVSTFNjaGVtZXMpCiAgICAgICAgIGF1dG8gd2ViVmll
d0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10g
aW5pdF0pOwogICAgICAgICBbd2ViVmlld0NvbmZpZ3VyYXRpb24gc2V0UHJvY2Vzc1Bvb2w6cHJv
Y2Vzc1Bvb2wuZ2V0KCldOwogCi0gICAgICAgIGF1dG8gbmF2aWdhdGlvbkRlbGVnYXRlID0gYWRv
cHROUyhbW0Fsd2F5c1JldmFsaWRhdGVkVVJMU2NoZW1lc0RlbGVnYXRlIGFsbG9jXSBpbml0XSk7
CiAgICAgICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6Q0dSZWN0WmVybyBjb25maWd1cmF0aW9uOndlYlZpZXdDb25maWd1cmF0aW9uLmdl
dCgpXSk7Ci0gICAgICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpuYXZpZ2F0aW9u
RGVsZWdhdGUuZ2V0KCldOwogCiAgICAgICAgIE5TU3RyaW5nICpodG1sU3RyaW5nID0gW05TU3Ry
aW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCI8IURPQ1RZUEUgaHRtbD48Ym9keT48aW1nIHNyYz0nJUA6
Ly9pbWFnZSc+IiwgY3VzdG9tU2NoZW1lXTsKICAgICAgICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJp
bmc6aHRtbFN0cmluZyBiYXNlVVJMOm5pbF07Ci0gICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmaXNEb25lKTsKKyAgICAgICAgW3dlYlZpZXcgX3Rlc3Rfd2FpdEZvckRpZEZpbmlzaE5h
dmlnYXRpb25dOwogICAgICAgICBFWFBFQ1RfRVEoMVVMLCBsb2Fkc1N0YXJ0ZWQpOwogCi0gICAg
ICAgIGlzRG9uZSA9IGZhbHNlOwogICAgICAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzpodG1s
U3RyaW5nIGJhc2VVUkw6bmlsXTsKLSAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZp
c0RvbmUpOworICAgICAgICBbd2ViVmlldyBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlv
bl07CiAgICAgICAgIEVYUEVDVF9FUSgyVUwsIGxvYWRzU3RhcnRlZCk7CiAKICAgICAgICAgW1dL
QnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciB1bnJlZ2lzdGVyU2NoZW1lRm9yQ3VzdG9tUHJvdG9j
b2w6Y3VzdG9tU2NoZW1lXTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0MkNvY29hL0FuaW1hdGVkUmVzaXplLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyQ29jb2EvQW5pbWF0ZWRSZXNpemUubW0KaW5kZXggYjQ1YjBlNmQ4ZTgwMDQ0NGYw
ZjY4YzVmMzA4NjAwNjdhMGU2ZDQxNS4uNWFhMDdmM2Y0Y2MxOTJjZjhjNjhlODM0NmI5NDI5ODI1
OTk1YzA2MSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29j
b2EvQW5pbWF0ZWRSZXNpemUubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQyQ29jb2EvQW5pbWF0ZWRSZXNpemUubW0KQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKIAogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKLSNpbXBvcnQgPFdlYktp
dC9XS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUuaD4KKyNpbXBvcnQgIlRlc3ROYXZpZ2F0aW9u
RGVsZWdhdGUuaCIKICNpbXBvcnQgPFdlYktpdC9XS1ByZWZlcmVuY2VzLmg+CiAjaW1wb3J0IDxX
ZWJLaXQvV0tQcm9jZXNzUG9vbFByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXcu
aD4KQEAgLTQwLDE5ICs0MCw2IEBACiBzdGF0aWMgYm9vbCBkaWRMYXlvdXQ7CiBzdGF0aWMgYm9v
bCBkaWRFbmRBbmltYXRlZFJlc2l6ZTsKIAotQGludGVyZmFjZSBBbmltYXRlZFJlc2l6ZU5hdmln
YXRpb25EZWxlZ2F0ZSA6IE5TT2JqZWN0IDxXS05hdmlnYXRpb25EZWxlZ2F0ZT4KLUBlbmQKLQot
QGltcGxlbWVudGF0aW9uIEFuaW1hdGVkUmVzaXplTmF2aWdhdGlvbkRlbGVnYXRlCi0KLS0gKHZv
aWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcmVuZGVyaW5nUHJvZ3Jlc3NEaWRDaGFu
Z2U6KF9XS1JlbmRlcmluZ1Byb2dyZXNzRXZlbnRzKXByb2dyZXNzRXZlbnRzCi17Ci0gICAgaWYg
KHByb2dyZXNzRXZlbnRzICYgX1dLUmVuZGVyaW5nUHJvZ3Jlc3NFdmVudEZpcnN0VmlzdWFsbHlO
b25FbXB0eUxheW91dCkKLSAgICAgICAgZGlkTGF5b3V0ID0gdHJ1ZTsKLX0KLQotQGVuZAotCiBA
aW50ZXJmYWNlIEFuaW1hdGVkUmVzaXplV2ViVmlldyA6IFdLV2ViVmlldwogCiBAZW5kCkBAIC03
MCwxNyArNTcsMjEgQEAgc3RhdGljIGJvb2wgZGlkRW5kQW5pbWF0ZWRSZXNpemU7CiAKIHN0YXRp
YyBSZXRhaW5QdHI8V0tXZWJWaWV3PiBhbmltYXRlZFJlc2l6ZVdlYlZpZXcoKQogewotICAgIFJl
dGFpblB0cjxfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24+IHByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbiA9IFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XTsKKyAgICBS
ZXRhaW5QdHI8X1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBwcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0
XSk7CiAgICAgW3Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBzZXRJZ25vcmVTeW5jaHJvbm91c01l
c3NhZ2luZ1RpbWVvdXRzRm9yVGVzdGluZzpZRVNdOwotICAgIFJldGFpblB0cjxXS1Byb2Nlc3NQ
b29sPiBwcm9jZXNzUG9vbCA9IFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmln
dXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCldOworICAgIFJldGFpblB0cjxX
S1Byb2Nlc3NQb29sPiBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9j
XSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0p
OwogCi0gICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IHdlYlZpZXdDb25maWd1
cmF0aW9uID0gW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XTsKKyAgICBSZXRh
aW5QdHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9w
dE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIFt3ZWJWaWV3
Q29uZmlndXJhdGlvbiBzZXRQcm9jZXNzUG9vbDpwcm9jZXNzUG9vbC5nZXQoKV07CiAKICAgICBS
ZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW0FuaW1hdGVkUmVzaXplV2Vi
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDgwMCwgNjAwKSBjb25m
aWd1cmF0aW9uOndlYlZpZXdDb25maWd1cmF0aW9uLmdldCgpXSk7CiAKLSAgICBBbmltYXRlZFJl
c2l6ZU5hdmlnYXRpb25EZWxlZ2F0ZSAqbmF2aWdhdGlvbkRlbGVnYXRlID0gW1tBbmltYXRlZFJl
c2l6ZU5hdmlnYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF07Ci0gICAgW3dlYlZpZXcgc2V0TmF2
aWdhdGlvbkRlbGVnYXRlOm5hdmlnYXRpb25EZWxlZ2F0ZV07CisgICAgYXV0byBuYXZpZ2F0aW9u
RGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0p
OworICAgIFtuYXZpZ2F0aW9uRGVsZWdhdGUgc2V0UmVuZGVyaW5nUHJvZ3Jlc3NEaWRDaGFuZ2U6
XihXS1dlYlZpZXcgKiwgX1dLUmVuZGVyaW5nUHJvZ3Jlc3NFdmVudHMgcHJvZ3Jlc3NFdmVudHMp
IHsKKyAgICAgICAgaWYgKHByb2dyZXNzRXZlbnRzICYgX1dLUmVuZGVyaW5nUHJvZ3Jlc3NFdmVu
dEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCkKKyAgICAgICAgICAgIGRpZExheW91dCA9IHRy
dWU7CisgICAgfV07CisgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOm5hdmlnYXRp
b25EZWxlZ2F0ZS5nZXQoKV07CiAKICAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNVUkxS
ZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3Vy
Y2U6QCJibGlua2luZy1kaXYiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJU
ZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXTsKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1
ZXN0XTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29h
L0F1dG9MYXlvdXRJbnRlZ3JhdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0MkNvY29hL0F1dG9MYXlvdXRJbnRlZ3JhdGlvbi5tbQppbmRleCA4MzgyOTk0NWU2ODhkZGMy
OGJiN2IxZWM5MDMwYTZiNDNmNTI4MWVkLi5hZDc4ODZmMjkyZjBmNTljMjY4NDRlOGY4OGVlOGQx
MzA3MjZmNjk3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJD
b2NvYS9BdXRvTGF5b3V0SW50ZWdyYXRpb24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQyQ29jb2EvQXV0b0xheW91dEludGVncmF0aW9uLm1tCkBAIC0yNiwyNyArMjYs
MTUgQEAKICNpbmNsdWRlICJjb25maWcuaCIKIAogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMu
aCIKKyNpbXBvcnQgIlRlc3ROYXZpZ2F0aW9uRGVsZWdhdGUuaCIKICNpbXBvcnQgPFdlYktpdC9X
S1dlYlZpZXdQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKICNpZiBXS19B
UElfRU5BQkxFRCAmJiBQTEFURk9STShNQUMpCiAKLXN0YXRpYyBib29sIGRpZEZpbmlzaE5hdmln
YXRpb247CiBzdGF0aWMgYm9vbCBkaWRJbnZhbGlkYXRlSW50cmluc2ljQ29udGVudFNpemU7CiBz
dGF0aWMgYm9vbCBkaWRFdmFsdWF0ZUphdmFTY3JpcHQ7CiAKLUBpbnRlcmZhY2UgQXV0b0xheW91
dE5hdmlnYXRpb25EZWxlZ2F0ZSA6IE5TT2JqZWN0IDxXS05hdmlnYXRpb25EZWxlZ2F0ZT4KLUBl
bmQKLQotQGltcGxlbWVudGF0aW9uIEF1dG9MYXlvdXROYXZpZ2F0aW9uRGVsZWdhdGUKLQotLSAo
dm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZEZpbmlzaE5hdmlnYXRpb246KFdL
TmF2aWdhdGlvbiAqKW5hdmlnYXRpb24KLXsKLSAgICBkaWRGaW5pc2hOYXZpZ2F0aW9uID0gdHJ1
ZTsKLX0KLQotQGVuZAotCiBAaW50ZXJmYWNlIEF1dG9MYXlvdXRXS1dlYlZpZXcgOiBXS1dlYlZp
ZXcKIEBlbmQKIApAQCAtNTUsNiArNDMsMTUgQEAgc3RhdGljIGJvb2wgZGlkRXZhbHVhdGVKYXZh
U2NyaXB0OwogICAgIE5TU2l6ZSBfZXhwZWN0ZWRJbnRyaW5zaWNDb250ZW50U2l6ZTsKIH0KIAor
LSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZSBjb25maWd1cmF0aW9u
OihXS1dlYlZpZXdDb25maWd1cmF0aW9uICopY29uZmlndXJhdGlvbgoreworICAgIHNlbGYgPSBb
c3VwZXIgaW5pdFdpdGhGcmFtZTpmcmFtZSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dOwor
ICAgIGlmICghc2VsZikKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIHJldHVybiBzZWxmOwor
fQorCiAtICh2b2lkKWxvYWQ6KE5TU3RyaW5nICopSFRNTFN0cmluZyB3aXRoV2lkdGg6KENHRmxv
YXQpd2lkdGggZXhwZWN0aW5nQ29udGVudFNpemU6KE5TU2l6ZSlzaXplCiB7CiAgICAgW3NlbGYg
bG9hZDpIVE1MU3RyaW5nIHdpdGhXaWR0aDp3aWR0aCBleHBlY3RpbmdDb250ZW50U2l6ZTpzaXpl
IHJlc2V0dGluZ1dpZHRoOllFU107CkBAIC03Myw5ICs3MCw4IEBAIHN0YXRpYyBib29sIGRpZEV2
YWx1YXRlSmF2YVNjcmlwdDsKICAgICAiLmlubGluZSB7IGRpc3BsYXk6IGlubGluZS1ibG9jazsg
fSIKICAgICAiPC9zdHlsZT4iOwogCi0gICAgZGlkRmluaXNoTmF2aWdhdGlvbiA9IGZhbHNlOwog
ICAgIFtzZWxmIGxvYWRIVE1MU3RyaW5nOltiYXNlSFRNTCBzdHJpbmdCeUFwcGVuZGluZ1N0cmlu
ZzpIVE1MU3RyaW5nXSBiYXNlVVJMOm5pbF07Ci0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZkaWRGaW5pc2hOYXZpZ2F0aW9uKTsKKyAgICBbc2VsZiBfdGVzdF93YWl0Rm9yRGlkRmluaXNo
TmF2aWdhdGlvbl07CiAKICAgICBbc2VsZiBsYXlvdXRBdE1pbmltdW1XaWR0aDp3aWR0aCBhbmRF
eHBlY3RDb250ZW50U2l6ZUNoYW5nZTpzaXplIHJlc2V0dGluZ1dpZHRoOnJlc2V0QWZ0ZXJdOwog
fQpAQCAtMTE2LDkgKzExMiw2IEBAIFRFU1QoV2ViS2l0MiwgQXV0b0xheW91dEludGVncmF0aW9u
KQogewogICAgIFJldGFpblB0cjxBdXRvTGF5b3V0V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHRO
UyhbW0F1dG9MYXlvdXRXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgw
LCAwLCAxMDAwLCAxMDAwKV0pOwogCi0gICAgQXV0b0xheW91dE5hdmlnYXRpb25EZWxlZ2F0ZSAq
ZGVsZWdhdGUgPSBbW0F1dG9MYXlvdXROYXZpZ2F0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdOwot
ICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZV07Ci0KICAgICAvLyAx
MHgxMCByZWN0IHdpdGggdGhlIGNvbnN0cmFpbnQgKHdpZHRoID49IDUwKSAtPiA1MHgxMAogICAg
IFt3ZWJWaWV3IGxvYWQ6QCI8ZGl2IGNsYXNzPSdzbWFsbCc+PC9kaXY+IiB3aXRoV2lkdGg6NTAg
ZXhwZWN0aW5nQ29udGVudFNpemU6TlNNYWtlU2l6ZSg1MCwgMTApXTsKIApkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvQ2FuY2VsRm9udFN1YnJlc291
cmNlLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvQ2FuY2VsRm9u
dFN1YnJlc291cmNlLm1tCmluZGV4IDZiYTRhMDcxZjk5NTUxMjA5OTU3OTRhNTM2ZjlkYTIxZGY1
YWI4MTIuLmQzY2E1ZDVlZjE2Y2E0ZWIxNDk4NTFhMzQ2ODlmMjNmMjg1NmUxOTUgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL0NhbmNlbEZvbnRTdWJy
ZXNvdXJjZS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9D
YW5jZWxGb250U3VicmVzb3VyY2UubW0KQEAgLTMwLDYgKzMwLDcgQEAKIAogI2ltcG9ydCAiUGxh
dGZvcm1VdGlsaXRpZXMuaCIKICNpbXBvcnQgIlRlc3QuaCIKKyNpbXBvcnQgIlRlc3ROYXZpZ2F0
aW9uRGVsZWdhdGUuaCIKICNpbXBvcnQgIlVzZXJDb250ZW50V29ybGRQcm90b2NvbC5oIgogI2lt
cG9ydCAiV0tXZWJWaWV3Q29uZmlndXJhdGlvbkV4dHJhcy5oIgogI2ltcG9ydCA8V2ViS2l0L1dL
UHJvY2Vzc1Bvb2xQcml2YXRlLmg+CkBAIC00NCwyMCArNDUsNiBAQAogI2ltcG9ydCA8V2ViS2l0
L19XS1VzZXJTdHlsZVNoZWV0Lmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKLUBpbnRl
cmZhY2UgQ2FuY2VsRm9udFN1YnJlc291cmNlTmF2aWdhdGlvbkRlbGVnYXRlIDogTlNPYmplY3Qg
PFdLTmF2aWdhdGlvbkRlbGVnYXRlPgotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gQ2FuY2VsRm9u
dFN1YnJlc291cmNlTmF2aWdhdGlvbkRlbGVnYXRlCi0KLXN0YXRpYyBib29sIG5hdmlnYXRpb25D
b21wbGV0ZSA9IGZhbHNlOwotCi0tICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcg
ZGlkRmluaXNoTmF2aWdhdGlvbjooV0tOYXZpZ2F0aW9uICopbmF2aWdhdGlvbgotewotICAgIG5h
dmlnYXRpb25Db21wbGV0ZSA9IHRydWU7Ci19Ci0KLUBlbmQKLQogVEVTVChDYW5jZWxMb2FkaW5n
LCBDYW5jZWxGb250U3VicmVzb3VyY2UpCiB7CiAgICAgTlNTdHJpbmcgKiBjb25zdCB0ZXN0UGx1
Z0luQ2xhc3NOYW1lID0gQCJDYW5jZWxGb250U3VicmVzb3VyY2VQbHVnSW4iOwpAQCAtNjYsMTMg
KzUzLDkgQEAgVEVTVChDYW5jZWxMb2FkaW5nLCBDYW5jZWxGb250U3VicmVzb3VyY2UpCiAKICAg
ICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9u
OmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAotICAgIENhbmNlbEZvbnRTdWJyZXNvdXJjZU5hdmln
YXRpb25EZWxlZ2F0ZSAqZGVsZWdhdGUgPSBbW0NhbmNlbEZvbnRTdWJyZXNvdXJjZU5hdmlnYXRp
b25EZWxlZ2F0ZSBhbGxvY10gaW5pdF07Ci0gICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVn
YXRlOmRlbGVnYXRlXTsKLQogICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VSTFJlcXVl
c3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpA
IndlYmZvbnQiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0
QVBJLnJlc291cmNlcyJdXTsKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKLQot
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmbmF2aWdhdGlvbkNvbXBsZXRlKTsKKyAgICBb
d2ViVmlldyBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CiB9CiAKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvQ29tbWFu
ZEJhY2tGb3J3YXJkLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2Ev
Q29tbWFuZEJhY2tGb3J3YXJkLm1tCmluZGV4IGE5YjZiOTg5MjI4OWU5Yjc4OTgzYjI2ZTA0MDc0
MGE0MzNlYTAxMzYuLjY3ODY3MDBlZDIzZDdhYWE4MWMxZTE2MDFiNjlmZDNhMjFkNWVjNTIgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL0NvbW1hbmRC
YWNrRm9yd2FyZC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2Nv
YS9Db21tYW5kQmFja0ZvcndhcmQubW0KQEAgLTI5LDYgKzI5LDcgQEAKIAogI2ltcG9ydCAiUGxh
dGZvcm1VdGlsaXRpZXMuaCIKICNpbXBvcnQgIlRlc3QuaCIKKyNpbXBvcnQgIlRlc3ROYXZpZ2F0
aW9uRGVsZWdhdGUuaCIKICNpbXBvcnQgPENhcmJvbi9DYXJib24uaD4gLy8gZm9yIEdldEN1cnJl
bnRFdmVudFRpbWUoKQogI2ltcG9ydCA8V2ViS2l0L1dLUmV0YWluUHRyLmg+CiAjaW1wb3J0IDxX
ZWJLaXQvV0tWaWV3UHJpdmF0ZS5oPgpAQCAtMTUyLDE5ICsxNTMsNiBAQCBwdWJsaWM6CiAKICNp
ZiBXS19BUElfRU5BQkxFRAogCi1AaW50ZXJmYWNlIENvbW1hbmRCYWNrRm9yd2FyZE5hdmlnYXRp
b25EZWxlZ2F0ZSA6IE5TT2JqZWN0IDxXS05hdmlnYXRpb25EZWxlZ2F0ZT4KLUBlbmQKLQotQGlt
cGxlbWVudGF0aW9uIENvbW1hbmRCYWNrRm9yd2FyZE5hdmlnYXRpb25EZWxlZ2F0ZQotCi0tICh2
b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkRmluaXNoTmF2aWdhdGlvbjooV0tO
YXZpZ2F0aW9uICopbmF2aWdhdGlvbgotewotICAgIGRpZEZpbmlzaE5hdmlnYXRpb24gPSB0cnVl
OwotfQotCi1AZW5kCi0KLQogY2xhc3MgV2ViS2l0Ml9Db21tYW5kQmFja0ZvcndhcmRUZXN0V0tX
ZWJWaWV3IDogcHVibGljIFdlYktpdDJfQ29tbWFuZEJhY2tGb3J3YXJkVGVzdCB7CiBwdWJsaWM6
CiAgICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldzsKQEAgLTE3NSwyNCArMTYzLDE3IEBA
IHB1YmxpYzoKIAogICAgICAgICB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDEwMCwgMTAwKV0pOwogICAgICAgICBbW3dp
bmRvdyBjb250ZW50Vmlld10gYWRkU3Vidmlldzp3ZWJWaWV3LmdldCgpXTsKLQotICAgICAgICBD
b21tYW5kQmFja0ZvcndhcmROYXZpZ2F0aW9uRGVsZWdhdGUgKmRlbGVnYXRlID0gW1tDb21tYW5k
QmFja0ZvcndhcmROYXZpZ2F0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdOwotICAgICAgICBbd2Vi
VmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGVdOwogICAgIH0KICAgICAKICAgICB2
b2lkIGxvYWRGaWxlcygpCiAgICAgewogICAgICAgICBOU1VSTCAqZmlsZTEgPSBbW05TQnVuZGxl
IG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlIiB3aXRoRXh0ZW5zaW9uOkAiaHRt
bCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKICAgICAgICAgW3dl
YlZpZXcgbG9hZEZpbGVVUkw6ZmlsZTEgYWxsb3dpbmdSZWFkQWNjZXNzVG9VUkw6ZmlsZTFdOwot
Ci0gICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZGlkRmluaXNoTmF2aWdhdGlvbik7
Ci0gICAgICAgIGRpZEZpbmlzaE5hdmlnYXRpb24gPSBmYWxzZTsKKyAgICAgICAgW3dlYlZpZXcg
X3Rlc3Rfd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOwogCiAgICAgICAgIE5TVVJMICpmaWxl
MiA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUyIiB3aXRo
RXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMi
XTsKICAgICAgICAgW3dlYlZpZXcgbG9hZEZpbGVVUkw6ZmlsZTIgYWxsb3dpbmdSZWFkQWNjZXNz
VG9VUkw6ZmlsZTJdOwotCi0gICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZGlkRmlu
aXNoTmF2aWdhdGlvbik7Ci0gICAgICAgIGRpZEZpbmlzaE5hdmlnYXRpb24gPSBmYWxzZTsKKyAg
ICAgICAgW3dlYlZpZXcgX3Rlc3Rfd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOwogICAgIH0K
IH07CiAKQEAgLTIwNiwxNSArMTg3LDEzIEBAIFRFU1RfRihXZWJLaXQyX0NvbW1hbmRCYWNrRm9y
d2FyZFRlc3RXS1dlYlZpZXcsIExUUikKIAogICAgIC8vIEF0dGVtcHQgdG8gZ28gYmFjayAodXNp
bmcgY29tbWFuZC1sZWZ0KS4KICAgICBzaW11bGF0ZUNvbW1hbmRBcnJvdyh3ZWJWaWV3LmdldCgp
LCBMZWZ0KTsKLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRpZEZpbmlzaE5hdmlnYXRp
b24pOwotICAgIGRpZEZpbmlzaE5hdmlnYXRpb24gPSBmYWxzZTsKKyAgICBbd2ViVmlldyBfdGVz
dF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CiAKICAgICBFWFBFQ1RfV0tfU1RSRVEoW3dl
YlZpZXcgVVJMXS5wYXRoLmxhc3RQYXRoQ29tcG9uZW50LCBAInNpbXBsZS5odG1sIik7CiAKICAg
ICAvLyBBdHRlbXB0IHRvIGdvIGJhY2sgKHVzaW5nIGNvbW1hbmQtcmlnaHQpLgogICAgIHNpbXVs
YXRlQ29tbWFuZEFycm93KHdlYlZpZXcuZ2V0KCksIFJpZ2h0KTsKLSAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJmRpZEZpbmlzaE5hdmlnYXRpb24pOwotICAgIGRpZEZpbmlzaE5hdmlnYXRp
b24gPSBmYWxzZTsKKyAgICBbd2ViVmlldyBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlv
bl07CiAKICAgICBFWFBFQ1RfV0tfU1RSRVEoW3dlYlZpZXcgVVJMXS5wYXRoLmxhc3RQYXRoQ29t
cG9uZW50LCBAInNpbXBsZTIuaHRtbCIpOwogfQpAQCAtMjMwLDE1ICsyMDksMTMgQEAgVEVTVF9G
KFdlYktpdDJfQ29tbWFuZEJhY2tGb3J3YXJkVGVzdFdLV2ViVmlldywgUlRMKQogCiAgICAgLy8g
QXR0ZW1wdCB0byBnbyBiYWNrICh1c2luZyBjb21tYW5kLXJpZ2h0KQogICAgIHNpbXVsYXRlQ29t
bWFuZEFycm93KHdlYlZpZXcuZ2V0KCksIFJpZ2h0KTsKLSAgICBUZXN0V2ViS2l0QVBJOjpVdGls
OjpydW4oJmRpZEZpbmlzaE5hdmlnYXRpb24pOwotICAgIGRpZEZpbmlzaE5hdmlnYXRpb24gPSBm
YWxzZTsKKyAgICBbd2ViVmlldyBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CiAK
ICAgICBFWFBFQ1RfV0tfU1RSRVEoW3dlYlZpZXcgVVJMXS5wYXRoLmxhc3RQYXRoQ29tcG9uZW50
LCBAInNpbXBsZS5odG1sIik7CiAKICAgICAvLyBBdHRlbXB0IHRvIGdvIGJhY2sgKHVzaW5nIGNv
bW1hbmQtbGVmdCkuCiAgICAgc2ltdWxhdGVDb21tYW5kQXJyb3cod2ViVmlldy5nZXQoKSwgTGVm
dCk7Ci0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkaWRGaW5pc2hOYXZpZ2F0aW9uKTsK
LSAgICBkaWRGaW5pc2hOYXZpZ2F0aW9uID0gZmFsc2U7CisgICAgW3dlYlZpZXcgX3Rlc3Rfd2Fp
dEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOwogCiAgICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3
IFVSTF0ucGF0aC5sYXN0UGF0aENvbXBvbmVudCwgQCJzaW1wbGUyLmh0bWwiKTsKIH0KZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL0RhdGFEZXRlY3Rp
b24ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9EYXRhRGV0ZWN0
aW9uLm1tCmluZGV4IGQxNDMxMjk4NjcwMjFjOTJmMWMzODBjMjk1OThmMjc1OGNjNTEzNzIuLjg1
ZTgyNTJkOGMxMDI1ODZhMDhmZTQ2MGI1NDUzZjg2ODYwMjQ5NzkgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL0RhdGFEZXRlY3Rpb24ubW0KKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvRGF0YURldGVjdGlvbi5tbQpA
QCAtMjcsMjYgKzI3LDE0IEBACiAKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAjaW1w
b3J0ICJUZXN0LmgiCisjaW1wb3J0ICJUZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmgiCiAjaW1wb3J0
IDxXZWJLaXQvV2ViS2l0Lmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKICNpZiBXS19B
UElfRU5BQkxFRCAmJiBQTEFURk9STShJT1MpCiAKLXN0YXRpYyBib29sIGZpbmlzaGVkTG9hZGlu
ZzsKIHN0YXRpYyBib29sIHJhblNjcmlwdDsKIAotQGludGVyZmFjZSBEYXRhRGV0ZWN0aW9uTmF2
aWdhdGlvbkRlbGVnYXRlIDogTlNPYmplY3QgPFdLTmF2aWdhdGlvbkRlbGVnYXRlPgotQGVuZAot
Ci1AaW1wbGVtZW50YXRpb24gRGF0YURldGVjdGlvbk5hdmlnYXRpb25EZWxlZ2F0ZQotCi0tICh2
b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkRmluaXNoTmF2aWdhdGlvbjooV0tO
YXZpZ2F0aW9uICopbmF2aWdhdGlvbgotewotICAgIGZpbmlzaGVkTG9hZGluZyA9IHRydWU7Ci19
Ci0KLUBlbmQKLQogQGludGVyZmFjZSBEYXRhRGV0ZWN0aW9uVUlEZWxlZ2F0ZSA6IE5TT2JqZWN0
IDxXS1VJRGVsZWdhdGU+CiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZXRhaW4pIE5TRGF0ZSAq
cmVmZXJlbmNlRGF0ZTsKQEAgLTcwLDkgKzU4LDcgQEAgc3RhdGljIGJvb2wgcmFuU2NyaXB0Owog
dm9pZCBleHBlY3RMaW5rQ291bnQoV0tXZWJWaWV3ICp3ZWJWaWV3LCBOU1N0cmluZyAqSFRNTFN0
cmluZywgdW5zaWduZWQgbGlua0NvdW50KQogewogICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5n
OkhUTUxTdHJpbmcgYmFzZVVSTDpuaWxdOwotCi0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZmaW5pc2hlZExvYWRpbmcpOwotICAgIGZpbmlzaGVkTG9hZGluZyA9IGZhbHNlOworICAgIFt3
ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKIAogICAgIFt3ZWJWaWV3
IGV2YWx1YXRlSmF2YVNjcmlwdDpAImRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdhJyku
bGVuZ3RoIiBjb21wbGV0aW9uSGFuZGxlcjpeKGlkIHZhbHVlLCBOU0Vycm9yICplcnJvcikgewog
ICAgICAgICBFWFBFQ1RfRVEobGlua0NvdW50LCBbdmFsdWUgdW5zaWduZWRJbnRWYWx1ZV0pOwpA
QCAtOTAsOSArNzYsNiBAQCBURVNUKFdlYktpdDIsIERhdGFEZXRlY3Rpb25SZWZlcmVuY2VEYXRl
KQogCiAgICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmln
dXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAKLSAgICBSZXRhaW5QdHI8RGF0YURldGVj
dGlvbk5hdmlnYXRpb25EZWxlZ2F0ZT4gbmF2aWdhdGlvbkRlbGVnYXRlID0gYWRvcHROUyhbW0Rh
dGFEZXRlY3Rpb25OYXZpZ2F0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKLSAgICBbd2ViVmll
dyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6bmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpXTsKLQogICAg
IFJldGFpblB0cjxEYXRhRGV0ZWN0aW9uVUlEZWxlZ2F0ZT4gVUlEZWxlZ2F0ZSA9IGFkb3B0TlMo
W1tEYXRhRGV0ZWN0aW9uVUlEZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwogICAgIFt3ZWJWaWV3IHNl
dFVJRGVsZWdhdGU6VUlEZWxlZ2F0ZS5nZXQoKV07CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL0ZpbmRJblBhZ2UubW0gYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9GaW5kSW5QYWdlLm1tCmluZGV4IDJlOGIyNTIzN2Jl
MTI3NDljODJiZDVkNmU4MDgwNjQ5Yjg0NzgzYWMuLjMyZWEzOTkzZWM5NTk5ZWQ0MzlkYTJlZTMz
NWRkYzQwZGY5NjkwNjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0MkNvY29hL0ZpbmRJblBhZ2UubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQyQ29jb2EvRmluZEluUGFnZS5tbQpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAiVGVzdE5h
dmlnYXRpb25EZWxlZ2F0ZS5oIgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4K
ICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIApAQCAtNDYsMzMgKzQ3LDE2IEBAIHR5cGVkZWYg
ZW51bSA6IE5TVUludGVnZXIgewogCiBAZW5kCiAKLXN0YXRpYyBib29sIG5hdmlnYXRpb25Eb25l
Owogc3RhdGljIGJvb2wgZmluZE1hdGNoZXNEb25lOwogCi1AaW50ZXJmYWNlIEZpbmRJblBhZ2VO
YXZpZ2F0aW9uRGVsZWdhdGUgOiBOU09iamVjdCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGU+Ci1AZW5k
Ci0KLUBpbXBsZW1lbnRhdGlvbiBGaW5kSW5QYWdlTmF2aWdhdGlvbkRlbGVnYXRlCi0KLS0gKHZv
aWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRGaW5pc2hOYXZpZ2F0aW9uOihXS05h
dmlnYXRpb24gKiluYXZpZ2F0aW9uCi17Ci0gICAgbmF2aWdhdGlvbkRvbmUgPSB0cnVlOwotfQot
Ci1AZW5kCi0KIFRFU1QoV2ViS2l0MiwgRmluZEluUGFnZSkKIHsKICAgICBSZXRhaW5QdHI8V0tX
ZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFt
ZTpOU01ha2VSZWN0KDAsIDAsIDEwMCwgMTAwKV0pOwogICAgIFt3ZWJWaWV3IF9zZXRPdmVycmlk
ZURldmljZVNjYWxlRmFjdG9yOjJdOwogCi0gICAgUmV0YWluUHRyPEZpbmRJblBhZ2VOYXZpZ2F0
aW9uRGVsZWdhdGU+IGRlbGVnYXRlID0gYWRvcHROUyhbW0ZpbmRJblBhZ2VOYXZpZ2F0aW9uRGVs
ZWdhdGUgYWxsb2NdIGluaXRdKTsKLSAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6
ZGVsZWdhdGUuZ2V0KCldOwotCiAgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVx
dWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNl
OkAibG90cy1vZi10ZXh0IiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVz
dFdlYktpdEFQSS5yZXNvdXJjZXMiXV07CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVz
dF07Ci0KLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJm5hdmlnYXRpb25Eb25lKTsKKyAg
ICBbd2ViVmlldyBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CiAKICAgICBOU1Rl
eHRGaW5kZXJBc3luY2hyb25vdXNEb2N1bWVudEZpbmRPcHRpb25zIG5vRmluZE9wdGlvbnMgPSAo
TlNUZXh0RmluZGVyQXN5bmNocm9ub3VzRG9jdW1lbnRGaW5kT3B0aW9ucykwOwogCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9GaXhlZExheW91dFNp
emUubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9GaXhlZExheW91
dFNpemUubW0KaW5kZXggNDI5NTM1Y2IzY2Q4YzBhZTI0YzRlNzFhYzNhZmUzN2JlODMzM2UxNS4u
ZmVlMTA2NGIzMWYzYzc1YjkwOWUxZTE2ZDVmYjFlZTcyODJiODE4NiAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvRml4ZWRMYXlvdXRTaXplLm1tCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL0ZpeGVkTGF5b3V0U2l6
ZS5tbQpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaW1wb3J0ICJQ
bGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAiVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oIgog
I2ltcG9ydCA8V2ViS2l0L1dLUHJlZmVyZW5jZXMuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZp
ZXdQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CkBAIC0zNiwyOSArMzcsMTAg
QEAgc3RhdGljIGJvb2wgZml4ZWRMYXlvdXRTaXplRG9uZTsKIHN0YXRpYyBib29sIGZpeGVkTGF5
b3V0U2l6ZUFmdGVyTmF2aWdhdGlvbkRvbmU7CiBzdGF0aWMgYm9vbCBmaXhlZExheW91dFNpemVE
aXNhYmxlZERvbmU7CiAKLUBpbnRlcmZhY2UgRml4ZWRMYXlvdXRTaXplTmF2aWdhdGlvbkRlbGVn
YXRlIDogTlNPYmplY3QgPFdLTmF2aWdhdGlvbkRlbGVnYXRlPgotQGVuZAotCi1AaW1wbGVtZW50
YXRpb24gRml4ZWRMYXlvdXRTaXplTmF2aWdhdGlvbkRlbGVnYXRlCi0KLS0gKHZvaWQpd2ViVmll
dzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRGaW5pc2hOYXZpZ2F0aW9uOihXS05hdmlnYXRpb24g
KiluYXZpZ2F0aW9uCi17Ci0gICAgLy8gQWZ0ZXIgbmF2aWdhdGluZywgZml4ZWQgbGF5b3V0IHNp
emUgc2hvdWxkIGJlIHBlcnNpc3RlZC4KLSAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6
QCJkb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoIiBjb21wbGV0aW9uSGFuZGxlcjpeKGlkIHJlc3Vs
dCwgTlNFcnJvciAqZXJyb3IpIHsKLSAgICAgICAgRVhQRUNUX0VRKDIwMCwgW3Jlc3VsdCBpbnRl
Z2VyVmFsdWVdKTsKLSAgICAgICAgZml4ZWRMYXlvdXRTaXplQWZ0ZXJOYXZpZ2F0aW9uRG9uZSA9
IHRydWU7Ci0gICAgfV07Ci19Ci0KLUBlbmQKLQogVEVTVChXZWJLaXQyLCBGaXhlZExheW91dFNp
emUpCiB7CiAgICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dl
YlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAxMDAsIDEwMCldKTsK
IAotICAgIEZpeGVkTGF5b3V0U2l6ZU5hdmlnYXRpb25EZWxlZ2F0ZSAqZGVsZWdhdGUgPSBbW0Zp
eGVkTGF5b3V0U2l6ZU5hdmlnYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF07Ci0gICAgW3dlYlZp
ZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlXTsKLQogICAgIFt3ZWJWaWV3IGV2YWx1
YXRlSmF2YVNjcmlwdDpAImRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGgiIGNvbXBsZXRpb25IYW5k
bGVyOl4oaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgewogICAgICAgICBFWFBFQ1RfRVEoMTAw
LCBbcmVzdWx0IGludGVnZXJWYWx1ZV0pOwogCkBAIC03Niw2ICs1OCwxMyBAQCBURVNUKFdlYktp
dDIsIEZpeGVkTGF5b3V0U2l6ZSkKIAogICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VS
TFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNv
dXJjZTpAInNpbXBsZSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RX
ZWJLaXRBUEkucmVzb3VyY2VzIl1dOwogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3Rd
OworICAgIFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKKworICAg
IC8vIEFmdGVyIG5hdmlnYXRpbmcsIGZpeGVkIGxheW91dCBzaXplIHNob3VsZCBiZSBwZXJzaXN0
ZWQuCisgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAiZG9jdW1lbnQuYm9keS5jbGll
bnRXaWR0aCIgY29tcGxldGlvbkhhbmRsZXI6XihpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7
CisgICAgICAgIEVYUEVDVF9FUSgyMDAsIFtyZXN1bHQgaW50ZWdlclZhbHVlXSk7CisgICAgICAg
IGZpeGVkTGF5b3V0U2l6ZUFmdGVyTmF2aWdhdGlvbkRvbmUgPSB0cnVlOworICAgIH1dOwogCiAg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZmaXhlZExheW91dFNpemVBZnRlck5hdmlnYXRp
b25Eb25lKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQy
Q29jb2EvSW5kZXhlZERCRGF0YWJhc2VQcm9jZXNzS2lsbC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0MkNvY29hL0luZGV4ZWREQkRhdGFiYXNlUHJvY2Vzc0tpbGwubW0KaW5k
ZXggNmNmMTlmZGY0YTQ3NzcyY2FiOTMyNTcwYmJjNzlmMmE1NDc0YTA1Yi4uNzkwNGZhYzY2OGNl
YmJhNmUzYjE4Y2RkNWRhZDI3ODFlYzE2M2RlZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvSW5kZXhlZERCRGF0YWJhc2VQcm9jZXNzS2lsbC5tbQor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9JbmRleGVkREJEYXRh
YmFzZVByb2Nlc3NLaWxsLm1tCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbXBvcnQgIlBsYXRmb3Jt
VXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJUZXN0LmgiCisjaW1wb3J0ICJUZXN0TmF2aWdhdGlvbkRl
bGVnYXRlLmgiCiAjaW1wb3J0IDxXZWJLaXQvV0tQcm9jZXNzUG9vbFByaXZhdGUuaD4KICNpbXBv
cnQgPFdlYktpdC9XS1VzZXJDb250ZW50Q29udHJvbGxlclByaXZhdGUuaD4KICNpbXBvcnQgPFdl
YktpdC9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oPgpAQCAtMzYsMjAgKzM3LDYgQEAK
IAogI2lmIFdLX0FQSV9FTkFCTEVECiAKLXN0YXRpYyBib29sIGlzRG9uZVdpdGhOYXZpZ2F0aW9u
OwotCi1AaW50ZXJmYWNlIERhdGFiYXNlUHJvY2Vzc0tpbGxOYXZpZ2F0aW9uRGVsZWdhdGUgOiBO
U09iamVjdCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGU+Ci1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBE
YXRhYmFzZVByb2Nlc3NLaWxsTmF2aWdhdGlvbkRlbGVnYXRlCi0KLS0gKHZvaWQpd2ViVmlldzoo
V0tXZWJWaWV3ICopd2ViVmlldyBkaWRGaW5pc2hOYXZpZ2F0aW9uOihXS05hdmlnYXRpb24gKilu
YXZpZ2F0aW9uCi17Ci0gICAgaXNEb25lV2l0aE5hdmlnYXRpb24gPSB0cnVlOwotfQotCi1AZW5k
Ci0KIHN0YXRpYyBib29sIHJlY2VpdmVkU2NyaXB0TWVzc2FnZTsKIHN0YXRpYyBib29sIHJlY2Vp
dmVkQXRMZWFzdE9uZU9wZW5FcnJvcjsKIHN0YXRpYyBib29sIHJlY2VpdmVkQXRMZWFzdE9uZURl
bGV0ZUVycm9yOwpAQCAtOTQsMTMgKzgxLDkgQEAgVEVTVChJbmRleGVkREIsIERhdGFiYXNlUHJv
Y2Vzc0tpbGwpCiAKICAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhb
W1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAw
KSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAotICAgIERhdGFiYXNlUHJv
Y2Vzc0tpbGxOYXZpZ2F0aW9uRGVsZWdhdGUgKmRlbGVnYXRlID0gW1tEYXRhYmFzZVByb2Nlc3NL
aWxsTmF2aWdhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XTsKLSAgICBbd2ViVmlldyBzZXROYXZp
Z2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGVdOwotCiAgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0g
W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZv
clJlc291cmNlOkAiSW5kZXhlZERCRGF0YWJhc2VQcm9jZXNzS2lsbC0xIiB3aXRoRXh0ZW5zaW9u
OkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV07CiAgICAg
W3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07Ci0KLSAgICBUZXN0V2ViS2l0QVBJOjpVdGls
OjpydW4oJmlzRG9uZVdpdGhOYXZpZ2F0aW9uKTsKKyAgICBbd2ViVmlldyBfdGVzdF93YWl0Rm9y
RGlkRmluaXNoTmF2aWdhdGlvbl07CiAKICAgICBib29sIGtpbGxlZERCUHJvY2VzcyA9IGZhbHNl
OwogICAgIHdoaWxlICh0cnVlKSB7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDJDb2NvYS9JbmRleGVkREJQZXJzaXN0ZW5jZS5tbSBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL0luZGV4ZWREQlBlcnNpc3RlbmNlLm1tCmluZGV4IDQ0
OWU4OTMzODI5NDEwZjlmMGEyMjc2MTM4MGVkMjlhYzVhNDU1OTkuLmNkMWJjOTVkNDk2NDNkMWY0
NGUzZWRmMjhjMGYxNGY3N2I3NWFmMTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0MkNvY29hL0luZGV4ZWREQlBlcnNpc3RlbmNlLm1tCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL0luZGV4ZWREQlBlcnNpc3RlbmNlLm1tCkBA
IC0zNywyMCArMzcsNiBAQAogCiAjaWYgV0tfQVBJX0VOQUJMRUQKIAotc3RhdGljIGJvb2wgaXNE
b25lV2l0aE5hdmlnYXRpb247Ci0KLUBpbnRlcmZhY2UgSW5kZXhlZERCTmF2aWdhdGlvbkRlbGVn
YXRlIDogTlNPYmplY3QgPFdLTmF2aWdhdGlvbkRlbGVnYXRlPgotQGVuZAotCi1AaW1wbGVtZW50
YXRpb24gSW5kZXhlZERCTmF2aWdhdGlvbkRlbGVnYXRlCi0KLS0gKHZvaWQpd2ViVmlldzooV0tX
ZWJWaWV3ICopd2ViVmlldyBkaWRGaW5pc2hOYXZpZ2F0aW9uOihXS05hdmlnYXRpb24gKiluYXZp
Z2F0aW9uCi17Ci0gICAgaXNEb25lV2l0aE5hdmlnYXRpb24gPSB0cnVlOwotfQotCi1AZW5kCi0K
IHN0YXRpYyBib29sIHJlY2VpdmVkU2NyaXB0TWVzc2FnZTsKIHN0YXRpYyBSZXRhaW5QdHI8V0tT
Y3JpcHRNZXNzYWdlPiBsYXN0U2NyaXB0TWVzc2FnZTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvUHJvdmlzaW9uYWxVUkxOb3RDaGFuZ2UubW0g
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9Qcm92aXNpb25hbFVSTE5v
dENoYW5nZS5tbQppbmRleCAwMDdjZjgxMWI2OTUxZmU3ZjU5MDM5ZGNhZTFlMjIwY2UyNzZjYTQz
Li4yODQwZjUxMjk2MGUxMjhlMzI4ZGM2Njk0YzM1Y2FiZjc0YWNiOTI5IDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9Qcm92aXNpb25hbFVSTE5vdENo
YW5nZS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9Qcm92
aXNpb25hbFVSTE5vdENoYW5nZS5tbQpAQCAtMzAsMzIgKzMwLDIzIEBACiAKICNpbXBvcnQgIlBs
YXRmb3JtVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJUZXN0LmgiCisjaW1wb3J0ICJUZXN0TmF2aWdh
dGlvbkRlbGVnYXRlLmgiCiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKIHN0YXRpYyBib29s
IGlzRG9uZTsKIAotQGludGVyZmFjZSBQcm92aXNpb25hbFVSTE5vdENoYW5nZUNvbnRyb2xsZXIg
OiBOU09iamVjdCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGU+Ci1AZW5kCi0KLUBpbXBsZW1lbnRhdGlv
biBQcm92aXNpb25hbFVSTE5vdENoYW5nZUNvbnRyb2xsZXIKLQotLSAodm9pZCl3ZWJWaWV3OihX
S1dlYlZpZXcgKil3ZWJWaWV3IGRpZEZpbmlzaE5hdmlnYXRpb246KFdLTmF2aWdhdGlvbiAqKW5h
dmlnYXRpb24KLXsKLSAgICBpc0RvbmUgPSB0cnVlOwotfQotCi0tICh2b2lkKXdlYlZpZXc6KFdL
V2ViVmlldyAqKXdlYlZpZXcgZGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbjooV0tOYXZpZ2F0
aW9uICopbmF2aWdhdGlvbiB3aXRoRXJyb3I6KE5TRXJyb3IgKillcnJvcgotewotICAgIGlzRG9u
ZSA9IHRydWU7Ci19Ci0KLUBlbmQKLQogVEVTVChXS1dlYlZpZXcsIFByb3Zpc2lvbmFsVVJMTm90
Q2hhbmdlKQogewogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2Nd
IGluaXRdKTsKLSAgICBhdXRvIGNvbnRyb2xsZXIgPSBhZG9wdE5TKFtbUHJvdmlzaW9uYWxVUkxO
b3RDaGFuZ2VDb250cm9sbGVyIGFsbG9jXSBpbml0XSk7Ci0gICAgW3dlYlZpZXcgc2V0TmF2aWdh
dGlvbkRlbGVnYXRlOmNvbnRyb2xsZXIuZ2V0KCldOworCisgICAgYXV0byBuYXZpZ2F0aW9uRGVs
ZWdhdGUgPSBhZG9wdE5TKFtbVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwor
ICAgIFtuYXZpZ2F0aW9uRGVsZWdhdGUgc2V0RGlkRmluaXNoTmF2aWdhdGlvbjpeKFdLV2ViVmll
dyAqLCBXS05hdmlnYXRpb24gKikgeworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOwor
ICAgIFtuYXZpZ2F0aW9uRGVsZWdhdGUgc2V0RGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbjpe
KFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb24gKiwgTlNFcnJvciAqKSB7CisgICAgICAgIGlzRG9u
ZSA9IHRydWU7CisgICAgfV07CisgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOm5h
dmlnYXRpb25EZWxlZ2F0ZS5nZXQoKV07CiAKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNV
UkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiZGF0YTp0ZXh0
L2h0bWwsc3RhcnQiXV1dOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1JlcXVp
cmVzVXNlckFjdGlvbkZvclBsYXliYWNrLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQyQ29jb2EvUmVxdWlyZXNVc2VyQWN0aW9uRm9yUGxheWJhY2subW0KaW5kZXggYmRhYzAw
NTFhZTJhZjk2MzE0ZTcyMTE2ZDFkNmEyZjBlYmU3ZWJkYy4uMzA3YTQ5Y2Q4OThiZTBlYTMzZjI3
OTI5OTgyZWUzNzJhZDU2NWY1ZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyQ29jb2EvUmVxdWlyZXNVc2VyQWN0aW9uRm9yUGxheWJhY2subW0KKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvUmVxdWlyZXNVc2VyQWN0aW9uRm9y
UGxheWJhY2subW0KQEAgLTI3LDYgKzI3LDcgQEAKIAogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRp
ZXMuaCIKICNpbXBvcnQgIlRlc3QuaCIKKyNpbXBvcnQgIlRlc3ROYXZpZ2F0aW9uRGVsZWdhdGUu
aCIKICNpbXBvcnQgPFdlYkNvcmUvU29mdExpbmtpbmcuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dl
YlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYktpdC5oPgpA
QCAtMzksMTggKzQwLDYgQEAgU09GVF9MSU5LX0ZSQU1FV09SSyhVSUtpdCkKIFNPRlRfTElOS19D
TEFTUyhVSUtpdCwgVUlXaW5kb3cpCiAjZW5kaWYKIAotc3RhdGljIGJvb2wgaXNEb25lV2l0aE5h
dmlnYXRpb247Ci0KLUBpbnRlcmZhY2UgUmVxdWlyZXNVc2VyQWN0aW9uRm9yUGxheWJhY2tOYXZp
Z2F0aW9uRGVsZWdhdGUgOiBOU09iamVjdCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGU+Ci1AZW5kCi0K
LUBpbXBsZW1lbnRhdGlvbiBSZXF1aXJlc1VzZXJBY3Rpb25Gb3JQbGF5YmFja05hdmlnYXRpb25E
ZWxlZ2F0ZQotLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZEZpbmlzaE5h
dmlnYXRpb246KFdLTmF2aWdhdGlvbiAqKW5hdmlnYXRpb24KLXsKLSAgICBpc0RvbmVXaXRoTmF2
aWdhdGlvbiA9IHRydWU7Ci19Ci1AZW5kCi0KIHN0YXRpYyBib29sIHJlY2VpdmVkU2NyaXB0TWVz
c2FnZTsKIHN0YXRpYyBSZXRhaW5QdHI8V0tTY3JpcHRNZXNzYWdlPiBsYXN0U2NyaXB0TWVzc2Fn
ZTsKIApAQCAtODIsOSArNzEsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNyZWF0ZVdlYlZpZXco
KQogICAgIHsKLSAgICAgICAgZGVsZWdhdGUgPSBhZG9wdE5TKFtbUmVxdWlyZXNVc2VyQWN0aW9u
Rm9yUGxheWJhY2tOYXZpZ2F0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKICAgICAgICAgd2Vi
VmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVj
dCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7Ci0g
ICAgICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CiAj
aWYgVEFSR0VUX09TX0lQSE9ORQogICAgICAgICB3aW5kb3cgPSBhZG9wdE5TKFtbZ2V0VUlXaW5k
b3dDbGFzcygpIGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDAp
XSk7CiAgICAgICAgIFt3aW5kb3cgYWRkU3Vidmlldzp3ZWJWaWV3LmdldCgpXTsKQEAgLTk4LDgg
Kzg1LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgTlNVUkwgKmZpbGVVUkwgPSBbW05TQnVu
ZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAidmlkZW8td2l0aC1hdWRpbyIgd2l0aEV4
dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07
CiAgICAgICAgIFt3ZWJWaWV3IGxvYWRGaWxlVVJMOmZpbGVVUkwgYWxsb3dpbmdSZWFkQWNjZXNz
VG9VUkw6ZmlsZVVSTF07Ci0gICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25l
V2l0aE5hdmlnYXRpb24pOwotICAgICAgICBpc0RvbmVXaXRoTmF2aWdhdGlvbiA9IGZhbHNlOwor
ICAgICAgICBbd2ViVmlldyBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CiAKICAg
ICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZFNjcmlwdE1lc3NhZ2UpOwog
ICAgICAgICByZWNlaXZlZFNjcmlwdE1lc3NhZ2UgPSBmYWxzZTsKQEAgLTEwOSw4ICs5NSw3IEBA
IHB1YmxpYzoKICAgICB7CiAgICAgICAgIE5TVVJMICpmaWxlVVJMID0gW1tOU0J1bmRsZSBtYWlu
QnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInZpZGVvLXdpdGhvdXQtYXVkaW8iIHdpdGhFeHRlbnNp
b246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOwogICAg
ICAgICBbd2ViVmlldyBsb2FkRmlsZVVSTDpmaWxlVVJMIGFsbG93aW5nUmVhZEFjY2Vzc1RvVVJM
OmZpbGVVUkxdOwotICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZVdpdGhO
YXZpZ2F0aW9uKTsKLSAgICAgICAgaXNEb25lV2l0aE5hdmlnYXRpb24gPSBmYWxzZTsKKyAgICAg
ICAgW3dlYlZpZXcgX3Rlc3Rfd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOwogCiAgICAgICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3JpcHRNZXNzYWdlKTsKICAgICAg
ICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFsc2U7CkBAIC0xMjAsOCArMTA1LDcgQEAgcHVi
bGljOgogICAgIHsKICAgICAgICAgTlNVUkwgKmZpbGVVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5k
bGVdIFVSTEZvclJlc291cmNlOkAiYXVkaW8tb25seSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1
YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CiAgICAgICAgIFt3ZWJWaWV3
IGxvYWRGaWxlVVJMOmZpbGVVUkwgYWxsb3dpbmdSZWFkQWNjZXNzVG9VUkw6ZmlsZVVSTF07Ci0g
ICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lV2l0aE5hdmlnYXRpb24pOwot
ICAgICAgICBpc0RvbmVXaXRoTmF2aWdhdGlvbiA9IGZhbHNlOworICAgICAgICBbd2ViVmlldyBf
dGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CiAKICAgICAgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZyZWNlaXZlZFNjcmlwdE1lc3NhZ2UpOwogICAgICAgICByZWNlaXZlZFNj
cmlwdE1lc3NhZ2UgPSBmYWxzZTsKQEAgLTEyOSw3ICsxMTMsNiBAQCBwdWJsaWM6CiAKICAgICBS
ZXRhaW5QdHI8UmVxdWlyZXNVc2VyQWN0aW9uRm9yUGxheWJhY2tNZXNzYWdlSGFuZGxlcj4gaGFu
ZGxlcjsKICAgICBSZXRhaW5QdHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlv
bjsKLSAgICBSZXRhaW5QdHI8UmVxdWlyZXNVc2VyQWN0aW9uRm9yUGxheWJhY2tOYXZpZ2F0aW9u
RGVsZWdhdGU+IGRlbGVnYXRlOwogICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXc7CiAj
aWYgVEFSR0VUX09TX0lQSE9ORQogICAgIFJldGFpblB0cjxVSVdpbmRvdz4gd2luZG93OwpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvU2hyaW5rVG9G
aXQubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9TaHJpbmtUb0Zp
dC5tbQppbmRleCBjM2FkNTBjMTk0YTQwMTMxMGVmMjgyNGUzNzk2YmQ0YTI1NDU2MWJkLi5lYzUx
Yjk2MzgzMGJkN2EzYzcxMDcyYmU2ZTQ0OGQ2YWU1NWVlNzhlIDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9TaHJpbmtUb0ZpdC5tbQorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9TaHJpbmtUb0ZpdC5tbQpAQCAtMjYs
NiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxp
dGllcy5oIgorI2ltcG9ydCAiVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oIgogI2ltcG9ydCA8V2Vi
S2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIApAQCAt
MzUsMjkgKzM2LDEwIEBAIHN0YXRpYyBib29sIHNocmlua1RvRml0RG9uZTsKIHN0YXRpYyBib29s
IHNocmlua1RvRml0QWZ0ZXJOYXZpZ2F0aW9uRG9uZTsKIHN0YXRpYyBib29sIHNocmlua1RvRml0
RGlzYWJsZWREb25lOwogCi1AaW50ZXJmYWNlIFNocmlua1RvRml0TmF2aWdhdGlvbkRlbGVnYXRl
IDogTlNPYmplY3QgPFdLTmF2aWdhdGlvbkRlbGVnYXRlPgotQGVuZAotCi1AaW1wbGVtZW50YXRp
b24gU2hyaW5rVG9GaXROYXZpZ2F0aW9uRGVsZWdhdGUKLQotLSAodm9pZCl3ZWJWaWV3OihXS1dl
YlZpZXcgKil3ZWJWaWV3IGRpZEZpbmlzaE5hdmlnYXRpb246KFdLTmF2aWdhdGlvbiAqKW5hdmln
YXRpb24KLXsKLSAgICAvLyBBZnRlciBsb2FkaW5nIGEgd2lkZSBwYWdlLCB0aGUgdmlldyBzaG91
bGQgYmUgc2NhbGVkIHRvIGZpdCB0aGUgd2lkdGggb2YgdGhlIGRvY3VtZW50LgotICAgIFt3ZWJW
aWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpAImRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGgiIGNvbXBs
ZXRpb25IYW5kbGVyOl4oaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgewotICAgICAgICBFWFBF
Q1RfRVEoODA4LCBbcmVzdWx0IGludGVnZXJWYWx1ZV0pOwotICAgICAgICBzaHJpbmtUb0ZpdEFm
dGVyTmF2aWdhdGlvbkRvbmUgPSB0cnVlOwotICAgIH1dOwotfQotCi1AZW5kCi0KIFRFU1QoV2Vi
S2l0MiwgU2hyaW5rVG9GaXQpCiB7CiAgICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldyA9
IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAw
LCAxMDAsIDEwMCldKTsKIAotICAgIFNocmlua1RvRml0TmF2aWdhdGlvbkRlbGVnYXRlICpkZWxl
Z2F0ZSA9IFtbU2hyaW5rVG9GaXROYXZpZ2F0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdOwotICAg
IFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZV07Ci0KICAgICBbd2ViVmll
dyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJkb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoIiBjb21wbGV0
aW9uSGFuZGxlcjpeKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKICAgICAgICAgRVhQRUNU
X0VRKDEwMCwgW3Jlc3VsdCBpbnRlZ2VyVmFsdWVdKTsKIApAQCAtNjksNiArNTEsMTMgQEAgVEVT
VChXZWJLaXQyLCBTaHJpbmtUb0ZpdCkKIAogICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtO
U1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JS
ZXNvdXJjZTpAImxvdHMtb2YtdGV4dCIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9y
eTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dOwogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0
OnJlcXVlc3RdOworICAgIFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9u
XTsKKworICAgIC8vIEFmdGVyIGxvYWRpbmcgYSB3aWRlIHBhZ2UsIHRoZSB2aWV3IHNob3VsZCBi
ZSBzY2FsZWQgdG8gZml0IHRoZSB3aWR0aCBvZiB0aGUgZG9jdW1lbnQuCisgICAgW3dlYlZpZXcg
ZXZhbHVhdGVKYXZhU2NyaXB0OkAiZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aCIgY29tcGxldGlv
bkhhbmRsZXI6XihpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIEVYUEVDVF9F
USg4MDgsIFtyZXN1bHQgaW50ZWdlclZhbHVlXSk7CisgICAgICAgIHNocmlua1RvRml0QWZ0ZXJO
YXZpZ2F0aW9uRG9uZSA9IHRydWU7CisgICAgfV07CiAKICAgICBUZXN0V2ViS2l0QVBJOjpVdGls
OjpydW4oJnNocmlua1RvRml0QWZ0ZXJOYXZpZ2F0aW9uRG9uZSk7CiAKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1VzZXJDb250ZW50Q29udHJvbGxl
ci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1VzZXJDb250ZW50
Q29udHJvbGxlci5tbQppbmRleCAwYjBjNzMzMjYxNWNhNGJjOGZjZDU0ZGE4MDcxYjM1NmIwNmVi
MzEzLi5lNTU0Nzc3OGQ5NWVkYmY3MDA0MDM3MzVhYTY0MTFhMTQyODZmNDMxIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9Vc2VyQ29udGVudENvbnRy
b2xsZXIubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvVXNl
ckNvbnRlbnRDb250cm9sbGVyLm1tCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbXBvcnQgIlBsYXRm
b3JtVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJUZXN0LmgiCisjaW1wb3J0ICJUZXN0TmF2aWdhdGlv
bkRlbGVnYXRlLmgiCiAjaW1wb3J0IDxXZWJLaXQvV0tQcm9jZXNzUG9vbFByaXZhdGUuaD4KICNp
bXBvcnQgPFdlYktpdC9XS1VzZXJDb250ZW50Q29udHJvbGxlclByaXZhdGUuaD4KICNpbXBvcnQg
PFdlYktpdC9XS1VzZXJTY3JpcHQuaD4KQEAgLTc4LDE0ICs3OSwxMCBAQCBURVNUKFdLVXNlckNv
bnRlbnRDb250cm9sbGVyLCBTY3JpcHRNZXNzYWdlSGFuZGxlckJhc2ljUG9zdCkKIAogICAgIFJl
dGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29u
ZmlndXJhdGlvbi5nZXQoKV0pOwogCi0gICAgUmV0YWluUHRyPFNpbXBsZU5hdmlnYXRpb25EZWxl
Z2F0ZT4gZGVsZWdhdGUgPSBhZG9wdE5TKFtbU2ltcGxlTmF2aWdhdGlvbkRlbGVnYXRlIGFsbG9j
XSBpbml0XSk7Ci0gICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdl
dCgpXTsKLQogICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVz
dFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNpbXBsZSIg
d2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3Vy
Y2VzIl1dOwogCiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07Ci0KLSAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZVdpdGhOYXZpZ2F0aW9uKTsKKyAgICBbd2ViVmll
dyBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CiAKICAgICBbd2ViVmlldyBldmFs
dWF0ZUphdmFTY3JpcHQ6QCJ3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxl
ci5wb3N0TWVzc2FnZSgnSGVsbG8nKSIgY29tcGxldGlvbkhhbmRsZXI6bmlsXTsKIApAQCAtMTU0
LDE0ICsxNTEsMTAgQEAgVEVTVChXS1VzZXJDb250ZW50Q29udHJvbGxlciwgU2NyaXB0TWVzc2Fn
ZUhhbmRsZXJCYXNpY1JlbW92ZSkKIAogICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXcg
PSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwg
MCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogCi0gICAg
UmV0YWluUHRyPFNpbXBsZU5hdmlnYXRpb25EZWxlZ2F0ZT4gZGVsZWdhdGUgPSBhZG9wdE5TKFtb
U2ltcGxlTmF2aWdhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7Ci0gICAgW3dlYlZpZXcgc2V0
TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKLQogICAgIE5TVVJMUmVxdWVzdCAq
cmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVu
ZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNpbXBsZSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRp
cmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dOwogCiAgICAgW3dlYlZpZXcgbG9h
ZFJlcXVlc3Q6cmVxdWVzdF07Ci0KLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9u
ZVdpdGhOYXZpZ2F0aW9uKTsKKyAgICBbd2ViVmlldyBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2
aWdhdGlvbl07CiAKICAgICAvLyBUZXN0IHRoYXQgaGFuZGxlclRvUmVtb3ZlIHdhcyBzdWNjZXNm
dWxseSBhZGRlZC4KICAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6CkBAIC0yMDIsMTQg
KzE5NSwxMCBAQCBURVNUKFdLVXNlckNvbnRlbnRDb250cm9sbGVyLCBTY3JpcHRNZXNzYWdlSGFu
ZGxlckNhbGxSZW1vdmVkSGFuZGxlcikKIAogICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZp
ZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3Qo
MCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogCi0g
ICAgUmV0YWluUHRyPFNpbXBsZU5hdmlnYXRpb25EZWxlZ2F0ZT4gZGVsZWdhdGUgPSBhZG9wdE5T
KFtbU2ltcGxlTmF2aWdhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7Ci0gICAgW3dlYlZpZXcg
c2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKLQogICAgIE5TVVJMUmVxdWVz
dCAqcmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWlu
QnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNpbXBsZSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1
YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dOwogCiAgICAgW3dlYlZpZXcg
bG9hZFJlcXVlc3Q6cmVxdWVzdF07Ci0KLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlz
RG9uZVdpdGhOYXZpZ2F0aW9uKTsKKyAgICBbd2ViVmlldyBfdGVzdF93YWl0Rm9yRGlkRmluaXNo
TmF2aWdhdGlvbl07CiAKICAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJ2YXIgaGFu
ZGxlclRvUmVtb3ZlID0gd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMuaGFuZGxlclRvUmVt
b3ZlOyIgY29tcGxldGlvbkhhbmRsZXI6bmlsXTsKIApAQCAtMjM3LDEyICsyMjYsOSBAQCBzdGF0
aWMgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlld0ZvclNjcmlwdE1lc3NhZ2VIYW5kbGVyTXVs
dGlwbGVIYW5kbGVyUmVtb3ZhbAogICAgIFtbY29uZmlndXJhdGlvbkNvcHkgdXNlckNvbnRlbnRD
b250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpoYW5kbGVyLmdldCgpIG5hbWU6QCJo
YW5kbGVyVG9SZW1vdmUiXTsKICAgICBbW2NvbmZpZ3VyYXRpb25Db3B5IHVzZXJDb250ZW50Q29u
dHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBuYW1lOkAiaGFu
ZGxlclRvUG9zdCJdOwogICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5T
KFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2
MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbkNvcHkuZ2V0KCldKTsKLSAgICBSZXRhaW5Q
dHI8U2ltcGxlTmF2aWdhdGlvbkRlbGVnYXRlPiBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tTaW1wbGVO
YXZpZ2F0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKLSAgICBbd2ViVmlldyBzZXROYXZpZ2F0
aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwogICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9
IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxG
b3JSZXNvdXJjZTpAInNpbXBsZSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpA
IlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dOwogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJl
cXVlc3RdOwotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lV2l0aE5hdmlnYXRp
b24pOwotICAgIGlzRG9uZVdpdGhOYXZpZ2F0aW9uID0gZmFsc2U7CisgICAgW3dlYlZpZXcgX3Rl
c3Rfd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOwogCiAgICAgcmV0dXJuIHdlYlZpZXc7CiB9
CkBAIC0yODIsMTQgKzI2OCw5IEBAIFRFU1QoV0tVc2VyQ29udGVudENvbnRyb2xsZXIsIFNjcmlw
dE1lc3NhZ2VIYW5kbGVyV2l0aE5hdmlnYXRpb24pCiAKICAgICBSZXRhaW5QdHI8V0tXZWJWaWV3
PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01h
a2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCld
KTsKIAotICAgIFJldGFpblB0cjxTaW1wbGVOYXZpZ2F0aW9uRGVsZWdhdGU+IGRlbGVnYXRlID0g
YWRvcHROUyhbW1NpbXBsZU5hdmlnYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwotICAgIFt3
ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07Ci0KICAgICBOU1VS
TFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5k
bGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUiIHdpdGhFeHRlbnNpb246QCJo
dG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXTsKICAgICBbd2Vi
VmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKLQotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1
bigmaXNEb25lV2l0aE5hdmlnYXRpb24pOwotICAgIGlzRG9uZVdpdGhOYXZpZ2F0aW9uID0gZmFs
c2U7CisgICAgW3dlYlZpZXcgX3Rlc3Rfd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOwogCiAg
ICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAid2luZG93LndlYmtpdC5tZXNzYWdlSGFu
ZGxlcnMudGVzdEhhbmRsZXIucG9zdE1lc3NhZ2UoJ0ZpcnN0IE1lc3NhZ2UnKSIgY29tcGxldGlv
bkhhbmRsZXI6bmlsXTsKIApAQCAtMzAwLDEwICsyODEsOCBAQCBURVNUKFdLVXNlckNvbnRlbnRD
b250cm9sbGVyLCBTY3JpcHRNZXNzYWdlSGFuZGxlcldpdGhOYXZpZ2F0aW9uKQogICAgIHJlY2Vp
dmVkU2NyaXB0TWVzc2FnZSA9IGZhbHNlOwogICAgIGxhc3RTY3JpcHRNZXNzYWdlID0gbnVsbHB0
cjsKIAotCiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07Ci0gICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6cnVuKCZpc0RvbmVXaXRoTmF2aWdhdGlvbik7Ci0gICAgaXNEb25lV2l0aE5h
dmlnYXRpb24gPSBmYWxzZTsKKyAgICBbd2ViVmlldyBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2
aWdhdGlvbl07CiAKICAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJ3aW5kb3cud2Vi
a2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZSgnU2Vjb25kIE1lc3Nh
Z2UnKSIgY29tcGxldGlvbkhhbmRsZXI6bmlsXTsKIApAQCAtMzIyLDE0ICszMDEsMTAgQEAgVEVT
VChXS1VzZXJDb250ZW50Q29udHJvbGxlciwgU2NyaXB0TWVzc2FnZUhhbmRsZXJSZXBsYWNlV2l0
aFNhbWVOYW1lKQogCiAgICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMo
W1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYw
MCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAKLSAgICBSZXRhaW5QdHI8
U2ltcGxlTmF2aWdhdGlvbkRlbGVnYXRlPiBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tTaW1wbGVOYXZp
Z2F0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKLSAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9u
RGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwotCiAgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0g
W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZv
clJlc291cmNlOkAic2ltcGxlIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAi
VGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV07CiAKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpy
ZXF1ZXN0XTsKLQotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lV2l0aE5hdmln
YXRpb24pOworICAgIFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsK
IAogICAgIC8vIFRlc3QgdGhhdCBoYW5kbGVyVG9SZXBsYWNlIHdhcyBzdWNjZXNmdWxseSBhZGRl
ZC4KICAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJ3aW5kb3cud2Via2l0Lm1lc3Nh
Z2VIYW5kbGVycy5oYW5kbGVyVG9SZXBsYWNlLnBvc3RNZXNzYWdlKCdQQVNTMScpOyIgY29tcGxl
dGlvbkhhbmRsZXI6bmlsXTsKQEAgLTM4MSwxMiArMzU2LDggQEAgVEVTVChXS1VzZXJDb250ZW50
Q29udHJvbGxlciwgQWRkVXNlclN0eWxlU2hlZXRCZWZvcmVDcmVhdGluZ1ZpZXcpCiAKICAgICBS
ZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNv
bmZpZ3VyYXRpb24uZ2V0KCldKTsKIAotICAgIFJldGFpblB0cjxTaW1wbGVOYXZpZ2F0aW9uRGVs
ZWdhdGU+IGRlbGVnYXRlID0gYWRvcHROUyhbW1NpbXBsZU5hdmlnYXRpb25EZWxlZ2F0ZSBhbGxv
Y10gaW5pdF0pOwotICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5n
ZXQoKV07Ci0KICAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzpAIjxib2R5IHN0eWxlPSdiYWNr
Z3JvdW5kLWNvbG9yOiByZWQ7Jz48L2JvZHk+IiBiYXNlVVJMOm5pbF07Ci0gICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6cnVuKCZpc0RvbmVXaXRoTmF2aWdhdGlvbik7Ci0gICAgaXNEb25lV2l0aE5h
dmlnYXRpb24gPSBmYWxzZTsKKyAgICBbd2ViVmlldyBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2
aWdhdGlvbl07CiAKICAgICBleHBlY3RTY3JpcHRFdmFsdWF0ZXNUb0NvbG9yKHdlYlZpZXcuZ2V0
KCksIGJhY2tncm91bmRDb2xvclNjcmlwdCwgZ3JlZW5JblJHQik7CiB9CkBAIC0zOTUsMTIgKzM2
Niw4IEBAIFRFU1QoV0tVc2VyQ29udGVudENvbnRyb2xsZXIsIEFkZFVzZXJTdHlsZVNoZWV0QWZ0
ZXJDcmVhdGluZ1ZpZXcpCiB7CiAgICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldyA9IGFk
b3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4
MDAsIDYwMCldKTsKIAotICAgIFJldGFpblB0cjxTaW1wbGVOYXZpZ2F0aW9uRGVsZWdhdGU+IGRl
bGVnYXRlID0gYWRvcHROUyhbW1NpbXBsZU5hdmlnYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0p
OwotICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07Ci0K
ICAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzpAIjxib2R5IHN0eWxlPSdiYWNrZ3JvdW5kLWNv
bG9yOiByZWQ7Jz48L2JvZHk+IiBiYXNlVVJMOm5pbF07Ci0gICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6cnVuKCZpc0RvbmVXaXRoTmF2aWdhdGlvbik7Ci0gICAgaXNEb25lV2l0aE5hdmlnYXRpb24g
PSBmYWxzZTsKKyAgICBbd2ViVmlldyBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07
CiAKICAgICBleHBlY3RTY3JpcHRFdmFsdWF0ZXNUb0NvbG9yKHdlYlZpZXcuZ2V0KCksIGJhY2tn
cm91bmRDb2xvclNjcmlwdCwgcmVkSW5SR0IpOwogCkBAIC00MTksMTIgKzM4Niw4IEBAIFRFU1Qo
V0tVc2VyQ29udGVudENvbnRyb2xsZXIsIFVzZXJTdHlsZVNoZWV0QWZmZWN0aW5nT25seU1haW5G
cmFtZSkKIAogICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tX
ZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNv
bmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogCi0gICAgUmV0YWluUHRyPFNpbXBs
ZU5hdmlnYXRpb25EZWxlZ2F0ZT4gZGVsZWdhdGUgPSBhZG9wdE5TKFtbU2ltcGxlTmF2aWdhdGlv
bkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7Ci0gICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVn
YXRlOmRlbGVnYXRlLmdldCgpXTsKLQogICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOkAiPGJv
ZHkgc3R5bGU9J2JhY2tncm91bmQtY29sb3I6IHJlZDsnPjxpZnJhbWU+PC9pZnJhbWU+PC9ib2R5
PiIgYmFzZVVSTDpuaWxdOwotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lV2l0
aE5hdmlnYXRpb24pOwotICAgIGlzRG9uZVdpdGhOYXZpZ2F0aW9uID0gZmFsc2U7CisgICAgW3dl
YlZpZXcgX3Rlc3Rfd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOwogCiAgICAgLy8gVGhlIG1h
aW4gZnJhbWUgc2hvdWxkIGJlIGFmZmVjdGVkLgogICAgIGV4cGVjdFNjcmlwdEV2YWx1YXRlc1Rv
Q29sb3Iod2ViVmlldy5nZXQoKSwgYmFja2dyb3VuZENvbG9yU2NyaXB0LCBncmVlbkluUkdCKTsK
QEAgLTQ0MiwxMiArNDA1LDggQEAgVEVTVChXS1VzZXJDb250ZW50Q29udHJvbGxlciwgVXNlclN0
eWxlU2hlZXRBZmZlY3RpbmdBbGxGcmFtZXMpCiAKICAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3
ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VS
ZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsK
IAotICAgIFJldGFpblB0cjxTaW1wbGVOYXZpZ2F0aW9uRGVsZWdhdGU+IGRlbGVnYXRlID0gYWRv
cHROUyhbW1NpbXBsZU5hdmlnYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwotICAgIFt3ZWJW
aWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07Ci0KICAgICBbd2ViVmll
dyBsb2FkSFRNTFN0cmluZzpAIjxib2R5IHN0eWxlPSdiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7Jz48
aWZyYW1lPjwvaWZyYW1lPjwvYm9keT4iIGJhc2VVUkw6bmlsXTsKLSAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJmlzRG9uZVdpdGhOYXZpZ2F0aW9uKTsKLSAgICBpc0RvbmVXaXRoTmF2aWdh
dGlvbiA9IGZhbHNlOworICAgIFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0
aW9uXTsKIAogICAgIC8vIFRoZSBtYWluIGZyYW1lIHNob3VsZCBiZSBhZmZlY3RlZC4KICAgICBl
eHBlY3RTY3JpcHRFdmFsdWF0ZXNUb0NvbG9yKHdlYlZpZXcuZ2V0KCksIGJhY2tncm91bmRDb2xv
clNjcmlwdCwgZ3JlZW5JblJHQik7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDJDb2NvYS9Vc2VyQ29udGVudFdvcmxkLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQyQ29jb2EvVXNlckNvbnRlbnRXb3JsZC5tbQppbmRleCA5ZWI3MDE2OTgy
ZWRkZDZmMGU5ZDQ4ZjAwYmM0MjdhNTBiZGYwMTcyLi5iNWRkYTJkZDYxNjg3MzViZDY3ZmM1ODFm
NmY4NjJlNTdmMDQ3YjFiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDJDb2NvYS9Vc2VyQ29udGVudFdvcmxkLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0MkNvY29hL1VzZXJDb250ZW50V29ybGQubW0KQEAgLTMwLDYgKzMwLDcgQEAK
IAogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKICNpbXBvcnQgIlRlc3QuaCIKKyNpbXBv
cnQgIlRlc3ROYXZpZ2F0aW9uRGVsZWdhdGUuaCIKICNpbXBvcnQgIlVzZXJDb250ZW50V29ybGRQ
cm90b2NvbC5oIgogI2ltcG9ydCAiV0tXZWJWaWV3Q29uZmlndXJhdGlvbkV4dHJhcy5oIgogI2lt
cG9ydCA8V2ViS2l0L1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmg+CkBAIC00NCwxOSArNDUsNiBAQAog
I2ltcG9ydCA8V2ViS2l0L19XS1VzZXJTdHlsZVNoZWV0Lmg+CiAjaW1wb3J0IDx3dGYvUmV0YWlu
UHRyLmg+CiAKLXN0YXRpYyBib29sIGlzRG9uZVdpdGhOYXZpZ2F0aW9uOwotCi1AaW50ZXJmYWNl
IFNpbXBsZURlbGVnYXRlIDogTlNPYmplY3QgPFdLTmF2aWdhdGlvbkRlbGVnYXRlPgotQGVuZAot
Ci1AaW1wbGVtZW50YXRpb24gU2ltcGxlRGVsZWdhdGUKLS0gKHZvaWQpd2ViVmlldzooV0tXZWJW
aWV3ICopd2ViVmlldyBkaWRGaW5pc2hOYXZpZ2F0aW9uOihXS05hdmlnYXRpb24gKiluYXZpZ2F0
aW9uCi17Ci0gICAgaXNEb25lV2l0aE5hdmlnYXRpb24gPSB0cnVlOwotfQotQGVuZAotCi0KIFRF
U1QoVXNlckNvbnRlbnRXb3JsZCwgTm9ybWFsV29ybGQpCiB7CiAgICAgUmV0YWluUHRyPFdLVXNl
clNjcmlwdD4gYmFzaWNVc2VyU2NyaXB0ID0gYWRvcHROUyhbW1dLVXNlclNjcmlwdCBhbGxvY10g
aW5pdFdpdGhTb3VyY2U6QCIiIGluamVjdGlvblRpbWU6V0tVc2VyU2NyaXB0SW5qZWN0aW9uVGlt
ZUF0RG9jdW1lbnRTdGFydCBmb3JNYWluRnJhbWVPbmx5OllFU10pOwpAQCAtNzMsMTIgKzYxLDgg
QEAgVEVTVChVc2VyQ29udGVudFdvcmxkLCBOb3JtYWxXb3JsZFVzZXJTY3JpcHQpCiAKICAgICBS
ZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNv
bmZpZ3VyYXRpb24uZ2V0KCldKTsKIAotICAgIFJldGFpblB0cjxTaW1wbGVEZWxlZ2F0ZT4gZGVs
ZWdhdGUgPSBhZG9wdE5TKFtbU2ltcGxlRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKLSAgICBbd2Vi
VmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwotCiAgICAgW3dlYlZp
ZXcgbG9hZEhUTUxTdHJpbmc6QCI8Ym9keSBzdHlsZT0nYmFja2dyb3VuZC1jb2xvcjogcmVkOyc+
PC9ib2R5PiIgYmFzZVVSTDpuaWxdOwotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNE
b25lV2l0aE5hdmlnYXRpb24pOwotICAgIGlzRG9uZVdpdGhOYXZpZ2F0aW9uID0gZmFsc2U7Cisg
ICAgW3dlYlZpZXcgX3Rlc3Rfd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOwogCiAgICAgX19i
bG9jayBib29sIGlzRG9uZSA9IGZhbHNlOwogICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlw
dDpAIndpbmRvdy5zZXRGcm9tVXNlclNjcmlwdCA/ICd2YXJpYWJsZSBhY2Nlc3NpYmxlJyA6ICd2
YXJpYWJsZSBpbmFjY2Vzc2libGUnOyIgY29tcGxldGlvbkhhbmRsZXI6XihpZCByZXN1bHQsIE5T
RXJyb3IgKmVycm9yKSB7CkBAIC0xMTIsMTIgKzk2LDggQEAgVEVTVChVc2VyQ29udGVudFdvcmxk
LCBJc29sYXRlZFdvcmxkVXNlclNjcmlwdCkKIAogICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdl
YlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJl
Y3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwog
Ci0gICAgUmV0YWluUHRyPFNpbXBsZURlbGVnYXRlPiBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tTaW1w
bGVEZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwotICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxl
Z2F0ZTpkZWxlZ2F0ZS5nZXQoKV07Ci0KICAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzpAIjxi
b2R5IHN0eWxlPSdiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7Jz48L2JvZHk+IiBiYXNlVVJMOm5pbF07
Ci0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmVXaXRoTmF2aWdhdGlvbik7Ci0g
ICAgaXNEb25lV2l0aE5hdmlnYXRpb24gPSBmYWxzZTsKKyAgICBbd2ViVmlldyBfdGVzdF93YWl0
Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CiAKICAgICBfX2Jsb2NrIGJvb2wgaXNEb25lID0gZmFs
c2U7CiAgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAid2luZG93LnNldEZyb21Vc2Vy
U2NyaXB0ID8gJ3ZhcmlhYmxlIGFjY2Vzc2libGUnIDogJ3ZhcmlhYmxlIGluYWNjZXNzaWJsZSc7
IiBjb21wbGV0aW9uSGFuZGxlcjpeKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1dLUERGVmlld1Jl
c2l6ZUNyYXNoLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvV0tQ
REZWaWV3UmVzaXplQ3Jhc2gubW0KaW5kZXggZWQ0N2NjYWUzYTY0Y2MwMWNhNmU0MDhkNjhmN2Qz
ZGExMmYxOTAyZS4uMDc0MGM5NzA2NjlhMTA2ODg1YmYwMDZhYTM0YmE4MWM1YzA3NmRlYSAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvV0tQREZWaWV3
UmVzaXplQ3Jhc2gubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29j
b2EvV0tQREZWaWV3UmVzaXplQ3Jhc2gubW0KQEAgLTI1LDQwICsyNSwyMyBAQAogCiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAKLSNpbXBvcnQgPFdlYktpdC9XS05hdmlnYXRpb25EZWxlZ2F0ZS5oPgot
I2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlldy5oPgotI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgog
I2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKICNpbXBvcnQgIlRlc3QuaCIKKyNpbXBvcnQg
IlRlc3ROYXZpZ2F0aW9uRGVsZWdhdGUuaCIKKyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXcuaD4K
KyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogI2lmIFdLX0FQSV9FTkFCTEVECiAKLXN0YXRp
YyBib29sIGZpbmlzaGVkTG9hZGluZzsKIHN0YXRpYyBib29sIGZpbmlzaGVkRGlzcGF0Y2g7CiAK
LUBpbnRlcmZhY2UgV0tQREZWaWV3UmVzaXplTmF2aWdhdGlvbkRlbGVnYXRlIDogTlNPYmplY3Qg
PFdLTmF2aWdhdGlvbkRlbGVnYXRlPgotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gV0tQREZWaWV3
UmVzaXplTmF2aWdhdGlvbkRlbGVnYXRlCi0KLS0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICop
d2ViVmlldyBkaWRGaW5pc2hOYXZpZ2F0aW9uOihXS05hdmlnYXRpb24gKiluYXZpZ2F0aW9uCi17
Ci0gICAgZmluaXNoZWRMb2FkaW5nID0gdHJ1ZTsKLX0KLQotQGVuZAotCiBURVNUKFdlYktpdDIs
IFdLUERGVmlld1Jlc2l6ZUNyYXNoKQogewogICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZp
ZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3Qo
MCwgMCwgODAwLCA2MDApXSk7CiAKLSAgICBSZXRhaW5QdHI8V0tQREZWaWV3UmVzaXplTmF2aWdh
dGlvbkRlbGVnYXRlPiBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tXS1BERlZpZXdSZXNpemVOYXZpZ2F0
aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKLSAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVs
ZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwotCiAgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05T
VVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJl
c291cmNlOkAidGVzdCIgd2l0aEV4dGVuc2lvbjpAInBkZiIgc3ViZGlyZWN0b3J5OkAiVGVzdFdl
YktpdEFQSS5yZXNvdXJjZXMiXV07CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07
Ci0KLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmZpbmlzaGVkTG9hZGluZyk7CisgICAg
W3dlYlZpZXcgX3Rlc3Rfd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOwogCiAgICAgW3dlYlZp
ZXcgc2V0RnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAxMDAsIDEwMCldOwogICAgIHdlYlZpZXcgPSBu
aWw7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9X
S1dlYlZpZXdFdmFsdWF0ZUphdmFTY3JpcHQubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDJDb2NvYS9XS1dlYlZpZXdFdmFsdWF0ZUphdmFTY3JpcHQubW0KaW5kZXggOTk3ZmE4
ZWViN2I5NzcwOTExNjI2MDkyNjNjY2YxYjMwYWNkODY1ZS4uY2M2OGQ3NzE2ZWE3YWU0NjcwMDA2
OTFiY2I1ZjRhOTdmOTIzMWVjYiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyQ29jb2EvV0tXZWJWaWV3RXZhbHVhdGVKYXZhU2NyaXB0Lm1tCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1dLV2ViVmlld0V2YWx1YXRlSmF2YVNj
cmlwdC5tbQpAQCAtMzAsMjQgKzMwLDEzIEBACiAKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVz
LmgiCiAjaW1wb3J0ICJUZXN0LmgiCisjaW1wb3J0ICJUZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmgi
CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tFcnJvclBy
aXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogc3RhdGljIGJvb2wgaXNEb25l
OwogCi1AaW50ZXJmYWNlIEV2YWx1YXRlSmF2YVNjcmlwdE5hdmlnYXRpb25EZWxlZ2F0ZSA6IE5T
T2JqZWN0IDxXS05hdmlnYXRpb25EZWxlZ2F0ZT4KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIEV2
YWx1YXRlSmF2YVNjcmlwdE5hdmlnYXRpb25EZWxlZ2F0ZQotCi0tICh2b2lkKXdlYlZpZXc6KFdL
V2ViVmlldyAqKXdlYlZpZXcgZGlkRmluaXNoTmF2aWdhdGlvbjooV0tOYXZpZ2F0aW9uICopbmF2
aWdhdGlvbgotewotICAgIGlzRG9uZSA9IHRydWU7Ci19Ci0KLUBlbmQKLQogVEVTVChXS1dlYlZp
ZXcsIEV2YWx1YXRlSmF2YVNjcmlwdEJsb2NrQ3Jhc2gpCiB7CiAgICAgUmV0YWluUHRyPFdLV2Vi
Vmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKQEAgLTc2LDEyICs2NSwxMCBAQCBURVNUKFdL
V2ViVmlldywgRXZhbHVhdGVKYXZhU2NyaXB0QmxvY2tDcmFzaCkKIFRFU1QoV0tXZWJWaWV3LCBF
dmFsdWF0ZUphdmFTY3JpcHRFcnJvckNhc2VzKQogewogICAgIFJldGFpblB0cjxXS1dlYlZpZXc+
IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFr
ZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7Ci0gICAgUmV0YWluUHRyPEV2YWx1YXRlSmF2YVNjcmlw
dE5hdmlnYXRpb25EZWxlZ2F0ZT4gZGVsZWdhdGUgPSBhZG9wdE5TKFtbRXZhbHVhdGVKYXZhU2Ny
aXB0TmF2aWdhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7Ci0gICAgW3dlYlZpZXcgc2V0TmF2
aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKIAogICAgIE5TVVJMUmVxdWVzdCAqcmVx
dWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxl
XSBVUkxGb3JSZXNvdXJjZTpAInNpbXBsZSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVj
dG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dOwogICAgIFt3ZWJWaWV3IGxvYWRSZXF1
ZXN0OnJlcXVlc3RdOwotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKKyAg
ICBbd2ViVmlldyBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CiAKICAgICBbd2Vi
VmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJkb2N1bWVudC5ib2R5IiBjb21wbGV0aW9uSGFuZGxl
cjpeKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKICAgICAgICAgRVhQRUNUX05VTEwocmVz
dWx0KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29h
L1dLV2ViVmlld1RleHRJbnB1dC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
MkNvY29hL1dLV2ViVmlld1RleHRJbnB1dC5tbQppbmRleCAxMDZlNjJkYjY3MjFjNzZjYjI4Mzll
OGIwYmE1OTI2YTU1YzA2ZTFkLi41M2FiMjI5N2VmYzg5N2Q1YjIxN2M0N2UxOGMwNzJjNGY4M2U1
NzhkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9X
S1dlYlZpZXdUZXh0SW5wdXQubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQyQ29jb2EvV0tXZWJWaWV3VGV4dElucHV0Lm1tCkBAIC0yOCwzNSArMjgsMTkgQEAKICNpZiBX
S19BUElfRU5BQkxFRAogI2lmIFBMQVRGT1JNKE1BQykKIAotI2ltcG9ydCA8V2ViS2l0L1dLRm91
bmRhdGlvbi5oPgogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKICNpbXBvcnQgIlRlc3Qu
aCIKLSNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXcuaD4KKyNpbXBvcnQgIlRlc3ROYXZpZ2F0aW9u
RGVsZWdhdGUuaCIKKyNpbXBvcnQgPFdlYktpdC9XZWJLaXQuaD4KICNpbXBvcnQgPHd0Zi9SZXRh
aW5QdHIuaD4KIAotc3RhdGljIGJvb2wgaXNEb25lOwotCi1AaW50ZXJmYWNlIER1bW15TmF2aWdh
dGlvbkRlbGVnYXRlIDogTlNPYmplY3QgPFdLTmF2aWdhdGlvbkRlbGVnYXRlPgotQGVuZAotCi1A
aW1wbGVtZW50YXRpb24gRHVtbXlOYXZpZ2F0aW9uRGVsZWdhdGUKLQotLSAodm9pZCl3ZWJWaWV3
OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZEZpbmlzaE5hdmlnYXRpb246KFdLTmF2aWdhdGlvbiAq
KW5hdmlnYXRpb24KLXsKLSAgICBpc0RvbmUgPSB0cnVlOwotfQotCi1AZW5kCi0KIFRFU1QoV0tX
ZWJWaWV3LCBTaG91bGRIYXZlSW5wdXRDb250ZXh0Rm9yRWRpdGFibGVDb250ZW50KQogewogICAg
IFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7Ci0gICAgUmV0YWlu
UHRyPER1bW15TmF2aWdhdGlvbkRlbGVnYXRlPiBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tEdW1teU5h
dmlnYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwotICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRp
b25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CiAKICAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3Qg
PSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJM
Rm9yUmVzb3VyY2U6QCJlZGl0YWJsZS1ib2R5IiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGly
ZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV07CiAgICAgW3dlYlZpZXcgbG9hZFJl
cXVlc3Q6cmVxdWVzdF07Ci0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwor
ICAgIFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKIAogICAgIEVY
UEVDVF9OT1RfTlVMTChbd2ViVmlldyBpbnB1dENvbnRleHRdKTsKIH0KZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OTVkZDU2NDgwOWIyOGM3NGExMzgwYWM5ODcxNjI3ODUxOTVkNDc5NAotLS0gL2Rldi9udWxsCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oCkBA
IC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2ltcG9ydCA8V2Vi
S2l0L1dLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dlYktp
dC5oPgorCitAaW50ZXJmYWNlIFRlc3ROYXZpZ2F0aW9uRGVsZWdhdGUgOiBOU09iamVjdCA8V0tO
YXZpZ2F0aW9uRGVsZWdhdGU+CisKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkIChe
ZGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbikoV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvbiAq
LCBOU0Vycm9yICopOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kaWRGaW5p
c2hOYXZpZ2F0aW9uKShXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uICopOworQHByb3BlcnR5IChu
b25hdG9taWMsIGNvcHkpIHZvaWQgKF5yZW5kZXJpbmdQcm9ncmVzc0RpZENoYW5nZSkoV0tXZWJW
aWV3ICosIF9XS1JlbmRlcmluZ1Byb2dyZXNzRXZlbnRzKTsKKworLSAodm9pZCl3YWl0Rm9yRGlk
RmluaXNoTmF2aWdhdGlvbjsKKworQGVuZAorCitAaW50ZXJmYWNlIFdLV2ViVmlldyAoVGVzdFdl
YktpdEFQSUV4dHJhcykKKy0gKHZvaWQpX3Rlc3Rfd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb247
CitAZW5kCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3ROYXZpZ2F0
aW9uRGVsZWdhdGUubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3ROYXZpZ2F0aW9u
RGVsZWdhdGUubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDY1NTg0MDAwZDU5MDVlMTY4YjlkOGVlMGRiMmE4YWQ5
NjI3NzMxOAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVz
dE5hdmlnYXRpb25EZWxlZ2F0ZS5tbQpAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lt
cG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJUZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmgiCisKKyNp
bXBvcnQgIlV0aWxpdGllcy5oIgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorCitAaW1wbGVt
ZW50YXRpb24gVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZQorCistICh2b2lkKXdlYlZpZXc6KFdLV2Vi
VmlldyAqKXdlYlZpZXcgZGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbjooV0tOYXZpZ2F0aW9u
ICopbmF2aWdhdGlvbiB3aXRoRXJyb3I6KE5TRXJyb3IgKillcnJvcgoreworICAgIGlmIChfZGlk
RmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbikKKyAgICAgICAgX2RpZEZhaWxQcm92aXNpb25hbE5h
dmlnYXRpb24od2ViVmlldywgbmF2aWdhdGlvbiwgZXJyb3IpOworfQorCistICh2b2lkKXdlYlZp
ZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkRmluaXNoTmF2aWdhdGlvbjooV0tOYXZpZ2F0aW9u
ICopbmF2aWdhdGlvbgoreworICAgIGlmIChfZGlkRmluaXNoTmF2aWdhdGlvbikKKyAgICAgICAg
X2RpZEZpbmlzaE5hdmlnYXRpb24od2ViVmlldywgbmF2aWdhdGlvbik7Cit9CisKKy0gKHZvaWQp
X3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcmVuZGVyaW5nUHJvZ3Jlc3NEaWRDaGFuZ2U6
KF9XS1JlbmRlcmluZ1Byb2dyZXNzRXZlbnRzKXByb2dyZXNzRXZlbnRzCit7CisgICAgaWYgKF9y
ZW5kZXJpbmdQcm9ncmVzc0RpZENoYW5nZSkKKyAgICAgICAgX3JlbmRlcmluZ1Byb2dyZXNzRGlk
Q2hhbmdlKHdlYlZpZXcsIHByb2dyZXNzRXZlbnRzKTsKK30KKworLSAodm9pZCl3YWl0Rm9yRGlk
RmluaXNoTmF2aWdhdGlvbgoreworICAgIEVYUEVDVF9GQUxTRShzZWxmLmRpZEZpbmlzaE5hdmln
YXRpb24pOworCisgICAgX19ibG9jayBib29sIGZpbmlzaGVkID0gZmFsc2U7CisgICAgc2VsZi5k
aWRGaW5pc2hOYXZpZ2F0aW9uID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uICopIHsKKyAg
ICAgICAgZmluaXNoZWQgPSB0cnVlOworICAgIH07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGls
OjpydW4oJmZpbmlzaGVkKTsKKworICAgIHNlbGYuZGlkRmluaXNoTmF2aWdhdGlvbiA9IG5pbDsK
K30KKworQGVuZAorCitAaW1wbGVtZW50YXRpb24gV0tXZWJWaWV3IChUZXN0V2ViS2l0QVBJRXh0
cmFzKQorCistICh2b2lkKV90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uCit7CisgICAg
RVhQRUNUX0ZBTFNFKHNlbGYubmF2aWdhdGlvbkRlbGVnYXRlKTsKKworICAgIGF1dG8gbmF2aWdh
dGlvbkRlbGVnYXRlID0gYWRvcHROUyhbW1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUgYWxsb2NdIGlu
aXRdKTsKKyAgICBzZWxmLm5hdmlnYXRpb25EZWxlZ2F0ZSA9IG5hdmlnYXRpb25EZWxlZ2F0ZS5n
ZXQoKTsKKyAgICBbbmF2aWdhdGlvbkRlbGVnYXRlIHdhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9u
XTsKKworICAgIHNlbGYubmF2aWdhdGlvbkRlbGVnYXRlID0gbmlsOworfQorCitAZW5kCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>287462</attachid>
            <date>2016-08-30 17:16:09 -0700</date>
            <delta_ts>2016-09-01 18:18:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-161413-20160830171357.patch</filename>
            <type>text/plain</type>
            <size>64410</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA1MTk3CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNGViNGY0YWRkOThlMGY5NGQwNDY1YzM2NjBiMTk2NDZm
OTMwNzg1Ni4uN2U4NWZhOGViMzQ3N2ZkODQ3N2YwNjZjZGNiODViY2ZjMmE2ZDkyMSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDky
IEBACisyMDE2LTA4LTMwICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgor
CisgICAgICAgIFByb3ZpZGUgYSBUZXN0V2ViS2l0QVBJLXdpZGUgV0tOYXZpZ2F0aW9uRGVsZWdh
dGUgdG8gc2ltcGxpZnkgdGVzdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE2MTQxMworCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4K
KworICAgICAgICBBZGQgVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZSwgd2hpY2ggcHJvdmlkZXMgYmxv
Y2sgcHJvcGVydGllcyB0byBtYWtlCisgICAgICAgIHdyaXRpbmcgdGVzdHMgZmVlbCBhIGxpdHRs
ZSBtb3JlIG5hdHVyYWwgKHRoZSBjYWxsYmFja3MgY2FuIGJlIGlubGluZSksCisgICAgICAgIGFu
ZCBhbHNvIGFkZCBXS1dlYlZpZXcgX3Rlc3Rfd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb24sIHNv
IHRoYXQgbWFueQorICAgICAgICB0ZXN0cyBkb24ndCBldmVuIG5lZWQgdG8gbWFudWFsbHkgYWxs
b2NhdGUgYSBuYXZpZ2F0aW9uIGRlbGVnYXRlIGF0IGFsbC4KKworICAgICAgICBBZG9wdCBpbiBz
b21lIG9mIHRoZSBzaW1wbGVyIHRlc3RzOyB0aGVyZSBhcmUgYSBmZXcgbmF2aWdhdGlvbiBkZWxl
Z2F0ZXMKKyAgICAgICAgbGVmdCBiZWhpbmQsIHdoaWNoIHdlIGNhbiBtb3ZlIHRvIHRoZSBuZXcg
bW9kZWwgaW4gdGhlIGZ1dHVyZS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktp
dEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Mi9XS0JhY2tGb3J3YXJkTGlzdC5tbToKKyAgICAgICAgKFRFU1QpOgorICAg
ICAgICAoLVtXS0JhY2tGb3J3YXJkTGlzdFRlc3ROYXZpZ2F0aW9uRGVsZWdhdGUgd2ViVmlldzpk
aWRGaW5pc2hOYXZpZ2F0aW9uOl0pOiBEZWxldGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0MkNvY29hL0Fsd2F5c1JldmFsaWRhdGVkVVJMU2NoZW1lcy5tbToKKyAgICAg
ICAgKFRFU1QpOgorICAgICAgICAoLVtBbHdheXNSZXZhbGlkYXRlZFVSTFNjaGVtZXNEZWxlZ2F0
ZSB3ZWJWaWV3OmRpZEZpbmlzaE5hdmlnYXRpb246XSk6IERlbGV0ZWQuCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvQW5pbWF0ZWRSZXNpemUubW06CisgICAgICAg
IChhbmltYXRlZFJlc2l6ZVdlYlZpZXcpOgorICAgICAgICAoLVtBbmltYXRlZFJlc2l6ZU5hdmln
YXRpb25EZWxlZ2F0ZSBfd2ViVmlldzpyZW5kZXJpbmdQcm9ncmVzc0RpZENoYW5nZTpdKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9BdXRvTGF5
b3V0SW50ZWdyYXRpb24ubW06CisgICAgICAgICgtW0F1dG9MYXlvdXRXS1dlYlZpZXcgaW5pdFdp
dGhGcmFtZTpjb25maWd1cmF0aW9uOl0pOgorICAgICAgICAoLVtBdXRvTGF5b3V0V0tXZWJWaWV3
IGxvYWQ6d2l0aFdpZHRoOmV4cGVjdGluZ0NvbnRlbnRTaXplOnJlc2V0dGluZ1dpZHRoOl0pOgor
ICAgICAgICAoVEVTVCk6CisgICAgICAgICgtW0F1dG9MYXlvdXROYXZpZ2F0aW9uRGVsZWdhdGUg
d2ViVmlldzpkaWRGaW5pc2hOYXZpZ2F0aW9uOl0pOiBEZWxldGVkLgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL0NhbmNlbEZvbnRTdWJyZXNvdXJjZS5tbToKKyAg
ICAgICAgKFRFU1QpOgorICAgICAgICAoLVtDYW5jZWxGb250U3VicmVzb3VyY2VOYXZpZ2F0aW9u
RGVsZWdhdGUgd2ViVmlldzpkaWRGaW5pc2hOYXZpZ2F0aW9uOl0pOiBEZWxldGVkLgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL0NvbW1hbmRCYWNrRm9yd2FyZC5t
bToKKyAgICAgICAgKFdlYktpdDJfQ29tbWFuZEJhY2tGb3J3YXJkVGVzdFdLV2ViVmlldzo6U2V0
VXApOgorICAgICAgICAoV2ViS2l0Ml9Db21tYW5kQmFja0ZvcndhcmRUZXN0V0tXZWJWaWV3Ojps
b2FkRmlsZXMpOgorICAgICAgICAoVEVTVF9GKToKKyAgICAgICAgKC1bQ29tbWFuZEJhY2tGb3J3
YXJkTmF2aWdhdGlvbkRlbGVnYXRlIHdlYlZpZXc6ZGlkRmluaXNoTmF2aWdhdGlvbjpdKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9EYXRhRGV0
ZWN0aW9uLm1tOgorICAgICAgICAoZXhwZWN0TGlua0NvdW50KToKKyAgICAgICAgKFRFU1QpOgor
ICAgICAgICAoLVtEYXRhRGV0ZWN0aW9uTmF2aWdhdGlvbkRlbGVnYXRlIHdlYlZpZXc6ZGlkRmlu
aXNoTmF2aWdhdGlvbjpdKTogRGVsZXRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDJDb2NvYS9GaW5kSW5QYWdlLm1tOgorICAgICAgICAoVEVTVCk6CisgICAgICAgICgt
W0ZpbmRJblBhZ2VOYXZpZ2F0aW9uRGVsZWdhdGUgd2ViVmlldzpkaWRGaW5pc2hOYXZpZ2F0aW9u
Ol0pOiBEZWxldGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29h
L0ZpeGVkTGF5b3V0U2l6ZS5tbToKKyAgICAgICAgKFRFU1QpOgorICAgICAgICAoLVtGaXhlZExh
eW91dFNpemVOYXZpZ2F0aW9uRGVsZWdhdGUgd2ViVmlldzpkaWRGaW5pc2hOYXZpZ2F0aW9uOl0p
OiBEZWxldGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL0lu
ZGV4ZWREQkRhdGFiYXNlUHJvY2Vzc0tpbGwubW06CisgICAgICAgIChURVNUKToKKyAgICAgICAg
KC1bRGF0YWJhc2VQcm9jZXNzS2lsbE5hdmlnYXRpb25EZWxlZ2F0ZSB3ZWJWaWV3OmRpZEZpbmlz
aE5hdmlnYXRpb246XSk6IERlbGV0ZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQyQ29jb2EvSW5kZXhlZERCUGVyc2lzdGVuY2UubW06CisgICAgICAgICgtW0luZGV4ZWRE
Qk5hdmlnYXRpb25EZWxlZ2F0ZSB3ZWJWaWV3OmRpZEZpbmlzaE5hdmlnYXRpb246XSk6IERlbGV0
ZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvUHJvdmlzaW9u
YWxVUkxOb3RDaGFuZ2UubW06CisgICAgICAgIChURVNUKToKKyAgICAgICAgKC1bUHJvdmlzaW9u
YWxVUkxOb3RDaGFuZ2VDb250cm9sbGVyIHdlYlZpZXc6ZGlkRmluaXNoTmF2aWdhdGlvbjpdKTog
RGVsZXRlZC4KKyAgICAgICAgKC1bUHJvdmlzaW9uYWxVUkxOb3RDaGFuZ2VDb250cm9sbGVyIHdl
YlZpZXc6ZGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbjp3aXRoRXJyb3I6XSk6IERlbGV0ZWQu
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvUmVxdWlyZXNVc2Vy
QWN0aW9uRm9yUGxheWJhY2subW06CisgICAgICAgIChSZXF1aXJlc1VzZXJBY3Rpb25Gb3JQbGF5
YmFja1Rlc3Q6OmNyZWF0ZVdlYlZpZXcpOgorICAgICAgICAoUmVxdWlyZXNVc2VyQWN0aW9uRm9y
UGxheWJhY2tUZXN0Ojp0ZXN0VmlkZW9XaXRoQXVkaW8pOgorICAgICAgICAoUmVxdWlyZXNVc2Vy
QWN0aW9uRm9yUGxheWJhY2tUZXN0Ojp0ZXN0VmlkZW9XaXRob3V0QXVkaW8pOgorICAgICAgICAo
UmVxdWlyZXNVc2VyQWN0aW9uRm9yUGxheWJhY2tUZXN0Ojp0ZXN0QXVkaW9Pbmx5KToKKyAgICAg
ICAgKC1bUmVxdWlyZXNVc2VyQWN0aW9uRm9yUGxheWJhY2tOYXZpZ2F0aW9uRGVsZWdhdGUgd2Vi
VmlldzpkaWRGaW5pc2hOYXZpZ2F0aW9uOl0pOiBEZWxldGVkLgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1Nocmlua1RvRml0Lm1tOgorICAgICAgICAoVEVTVCk6
CisgICAgICAgICgtW1Nocmlua1RvRml0TmF2aWdhdGlvbkRlbGVnYXRlIHdlYlZpZXc6ZGlkRmlu
aXNoTmF2aWdhdGlvbjpdKTogRGVsZXRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDJDb2NvYS9Vc2VyQ29udGVudENvbnRyb2xsZXIubW06CisgICAgICAgIChURVNUKToK
KyAgICAgICAgKHdlYlZpZXdGb3JTY3JpcHRNZXNzYWdlSGFuZGxlck11bHRpcGxlSGFuZGxlclJl
bW92YWxUZXN0KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9V
c2VyQ29udGVudFdvcmxkLm1tOgorICAgICAgICAoVEVTVCk6CisgICAgICAgICgtW1NpbXBsZURl
bGVnYXRlIHdlYlZpZXc6ZGlkRmluaXNoTmF2aWdhdGlvbjpdKTogRGVsZXRlZC4KKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9XS1BERlZpZXdSZXNpemVDcmFzaC5t
bToKKyAgICAgICAgKFRFU1QpOgorICAgICAgICAoLVtXS1BERlZpZXdSZXNpemVOYXZpZ2F0aW9u
RGVsZWdhdGUgd2ViVmlldzpkaWRGaW5pc2hOYXZpZ2F0aW9uOl0pOiBEZWxldGVkLgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1dLV2ViVmlld0V2YWx1YXRlSmF2
YVNjcmlwdC5tbToKKyAgICAgICAgKFRFU1QpOgorICAgICAgICAoLVtFdmFsdWF0ZUphdmFTY3Jp
cHROYXZpZ2F0aW9uRGVsZWdhdGUgd2ViVmlldzpkaWRGaW5pc2hOYXZpZ2F0aW9uOl0pOiBEZWxl
dGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1dLV2ViVmll
d1RleHRJbnB1dC5tbToKKyAgICAgICAgKFRFU1QpOgorICAgICAgICAoLVtEdW1teU5hdmlnYXRp
b25EZWxlZ2F0ZSB3ZWJWaWV3OmRpZEZpbmlzaE5hdmlnYXRpb246XSk6IERlbGV0ZWQuCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmg6IEFkZGVk
LgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5t
bTogQWRkZWQuCisgICAgICAgICgtW1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUgd2ViVmlldzpkaWRG
YWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uOndpdGhFcnJvcjpdKToKKyAgICAgICAgKC1bVGVzdE5h
dmlnYXRpb25EZWxlZ2F0ZSB3ZWJWaWV3OmRpZEZpbmlzaE5hdmlnYXRpb246XSk6CisgICAgICAg
ICgtW1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUgX3dlYlZpZXc6cmVuZGVyaW5nUHJvZ3Jlc3NEaWRD
aGFuZ2U6XSk6CisgICAgICAgICgtW1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUgd2FpdEZvckRpZEZp
bmlzaE5hdmlnYXRpb25dKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRG
aW5pc2hOYXZpZ2F0aW9uXSk6CisKIDIwMTYtMDgtMzAgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hh
bUBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIG9mIHVuaW5pdGlhbGlzZWQgbWVtb3J5IGluIFRy
YW5zZm9ybWF0aW9uTWF0cng6OmJsZW5kNCgpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGZl
OGMxYTJhMDFmYzRjZWRhYWE1NzAwMTA0YmRhYzk1NGM0ZDZmYTMuLjY2M2YxMzg5MzkwYzU3ZGUz
ZDc0MzI2ODkyNTYzOWNkY2U0Y2Y0ODEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01MSw2
ICs1MSw3IEBACiAJCTI5NzIzNEI3MTczQUZBQzcwMDk4MzYwMSAvKiBDdXN0b21Qcm90b2NvbHNJ
bnZhbGlkU2NoZW1lX0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAyOTcyMzRCNTE3M0FGQUM3MDA5ODM2MDEgLyogQ3VzdG9tUHJvdG9jb2xz
SW52YWxpZFNjaGVtZV9CdW5kbGUuY3BwICovOyB9OwogCQkyRDAwMDY1RjFDMUY1ODlBMDA4OEU2
QTcgLyogV0tQREZWaWV3UmVzaXplQ3Jhc2gubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAyRDAwMDY1RDFDMUY1ODk0MDA4OEU2QTcgLyogV0tQREZWaWV3
UmVzaXplQ3Jhc2gubW0gKi87IH07CiAJCTJEMTY0NkUyMUQxODYyQ0QwMDAxNUExQSAvKiBEZWZl
cnJlZFZpZXdJbldpbmRvd1N0YXRlQ2hhbmdlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMkQxNjQ2RTExRDE4NjJDRDAwMDE1QTFBIC8qIERlZmVycmVk
Vmlld0luV2luZG93U3RhdGVDaGFuZ2UubW0gKi87IH07CisJCTJEMUMwNEE3MUQ3NjI5OEIwMDBB
NjgxNiAvKiBUZXN0TmF2aWdhdGlvbkRlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQxQzA0QTYxRDc2Mjk4QjAwMEE2ODE2IC8qIFRlc3RO
YXZpZ2F0aW9uRGVsZWdhdGUubW0gKi87IH07CiAJCTJENTFBMEM3MUM4QkYwMEMwMDc2NUM0NSAv
KiBET01IVE1MVmlkZW9FbGVtZW50V3JhcHBlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJENTFBMEM1MUM4QkYwMDQwMDc2NUM0NSAvKiBET01IVE1M
VmlkZW9FbGVtZW50V3JhcHBlci5tbSAqLzsgfTsKIAkJMkRDNENGNzcxRDJEOUREODAwRUNDQzk0
IC8qIERhdGFEZXRlY3Rpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAyREM0Q0Y3NjFEMkQ5REQ4MDBFQ0NDOTQgLyogRGF0YURldGVjdGlvbi5tbSAq
LzsgfTsKIAkJMkREN0QzQUYxNzgyMjdCMzAwMjZFMUUzIC8qIGxvdHMtb2YtdGV4dC12ZXJ0aWNh
bC1sci5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDJERDdEM0FFMTc4MjI3QUMwMDI2RTFFMyAvKiBsb3RzLW9mLXRleHQtdmVydGljYWwt
bHIuaHRtbCAqLzsgfTsKQEAgLTcyMCw2ICs3MjEsOCBAQAogCQkyOUFCOEFBMzE2NEM3QTkzMDBE
NDlCRUMgLyogVGVzdEJyb3dzaW5nQ29udGV4dExvYWREZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBUZXN0QnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEMDAwNjVEMUMxRjU4OTQwMDg4RTZBNyAvKiBX
S1BERlZpZXdSZXNpemVDcmFzaC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFdLUERGVmlld1Jlc2l6ZUNyYXNoLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkyRDE2NDZFMTFEMTg2MkNEMDAwMTVBMUEgLyogRGVmZXJyZWRWaWV3SW5XaW5kb3dTdGF0
ZUNoYW5nZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IERlZmVy
cmVkVmlld0luV2luZG93U3RhdGVDaGFuZ2UubW07IHBhdGggPSBXZWJLaXQyL0RlZmVycmVkVmll
d0luV2luZG93U3RhdGVDaGFuZ2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJE
MUMwNEE1MUQ3NjI5OEIwMDBBNjgxNiAvKiBUZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFRlc3ROYXZpZ2F0aW9uRGVsZWdhdGUuaDsgcGF0
aCA9IGNvY29hL1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMkQxQzA0QTYxRDc2Mjk4QjAwMEE2ODE2IC8qIFRlc3ROYXZpZ2F0aW9uRGVsZWdh
dGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBUZXN0TmF2aWdh
dGlvbkRlbGVnYXRlLm1tOyBwYXRoID0gY29jb2EvVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQxRkUwQUYxQUQ0NjVDMTAwNkNEOUU2IC8q
IEZpeGVkTGF5b3V0U2l6ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IEZpeGVkTGF5b3V0U2l6ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQ1
MUEwQzUxQzhCRjAwNDAwNzY1QzQ1IC8qIERPTUhUTUxWaWRlb0VsZW1lbnRXcmFwcGVyLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NSFRNTFZpZGVvRWxlbWVu
dFdyYXBwZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJENjQwQjU0MTc4NzVE
RkYwMEJGQUY5OSAvKiBTY3JvbGxQaW5uaW5nQmVoYXZpb3JzLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcm9sbFBpbm5pbmdCZWhhdmlvcnMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTIyNCw2ICsxMjI3LDggQEAKIAkJCQk1QzcyNkQ2RDFE
M0VFMDY4MDBDNUUxQTEgLyogSW5zdGFuY2VNZXRob2RTd2l6emxlci5oICovLAogCQkJCTVDNzI2
RDZFMUQzRUUwNjgwMEM1RTFBMSAvKiBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyLm1tICovLAogCQkJ
CTBGMTM5RTcyMUE0MjNBMkIwMEY1OTBGNSAvKiBQbGF0Zm9ybVV0aWxpdGllc0NvY29hLm1tICov
LAorCQkJCTJEMUMwNEE1MUQ3NjI5OEIwMDBBNjgxNiAvKiBUZXN0TmF2aWdhdGlvbkRlbGVnYXRl
LmggKi8sCisJCQkJMkQxQzA0QTYxRDc2Mjk4QjAwMEE2ODE2IC8qIFRlc3ROYXZpZ2F0aW9uRGVs
ZWdhdGUubW0gKi8sCiAJCQkJQTE0RkM1OEQxQjhBRTM2NTAwRDEwN0VCIC8qIFRlc3RQcm90b2Nv
bC5oICovLAogCQkJCUExNEZDNThFMUI4QUUzNjUwMEQxMDdFQiAvKiBUZXN0UHJvdG9jb2wubW0g
Ki8sCiAJCQkJN0M4M0UwMzkxRDBBNjAyNzAwRkVCQ0YzIC8qIFV0aWxpdGllc0NvY29hLm1tICov
LApAQCAtMjE5NSw2ICsyMjAwLDcgQEAKIAkJCQk1QzI5MzY5MzFENUJGNzBEMDBERUFCMUUgLyog
Q29va2llQWNjZXB0UG9saWN5Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFRTgxQTQxMUFF
NjAwNDQ3QzRDIC8qIENvb2tpZU1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdF
QUMxQTQxMUEzNDAwNDQ3QzRDIC8qIENvdW50ZXJzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTJE
MUMwNEE3MUQ3NjI5OEIwMDBBNjgxNiAvKiBUZXN0TmF2aWdhdGlvbkRlbGVnYXRlLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJN0NDRTdFREIxQTQxMUE5MjAwNDQ3QzRDIC8qIENTU1BhcnNlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0YyOTFBNDExQjEwMDA0NDdDNEMgLyogQ3VzdG9tUHJv
dG9jb2xzSW52YWxpZFNjaGVtZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RjJBMUE0MTFC
MTAwMDQ0N0M0QyAvKiBDdXN0b21Qcm90b2NvbHNTeW5jWEhSVGVzdC5tbSBpbiBTb3VyY2VzICov
LApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1dLQmFja0Zv
cndhcmRMaXN0Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1dLQmFja0Zv
cndhcmRMaXN0Lm1tCmluZGV4IDFkYmFhZTQxNGQxYTJjOGU0YzdmOTAwMTFiNTEyN2UwZjZkNmQ2
NDMuLjIwY2Y4ZDg3ZTQwZmQ5ZjFjN2Q2Yzc0NDNhZTlhOThjNDI3MDEwNTIgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9XS0JhY2tGb3J3YXJkTGlzdC5tbQor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvV0tCYWNrRm9yd2FyZExpc3Qu
bW0KQEAgLTI2LDkgKzI2LDkgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiUGxhdGZv
cm1VdGlsaXRpZXMuaCIKICNpbXBvcnQgIlRlc3QuaCIKKyNpbXBvcnQgIlRlc3ROYXZpZ2F0aW9u
RGVsZWdhdGUuaCIKIAogI2ltcG9ydCA8V2ViS2l0L1dLQmFja0ZvcndhcmRMaXN0UHJpdmF0ZS5o
PgotI2ltcG9ydCA8V2ViS2l0L1dLTmF2aWdhdGlvbkRlbGVnYXRlLmg+CiAjaW1wb3J0IDxXZWJL
aXQvV0tOYXZpZ2F0aW9uUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZh
dGUuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tTZXNzaW9uU3RhdGUuaD4KQEAgLTM2LDIwICszNiw2
IEBACiAKICNpZiBXS19BUElfRU5BQkxFRAogCi1zdGF0aWMgYm9vbCBpc0RvbmU7Ci0KLUBpbnRl
cmZhY2UgV0tCYWNrRm9yd2FyZExpc3RUZXN0TmF2aWdhdGlvbkRlbGVnYXRlIDogTlNPYmplY3Qg
PFdLTmF2aWdhdGlvbkRlbGVnYXRlPgotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gV0tCYWNrRm9y
d2FyZExpc3RUZXN0TmF2aWdhdGlvbkRlbGVnYXRlCi0KLS0gKHZvaWQpd2ViVmlldzooV0tXZWJW
aWV3ICopd2ViVmlldyBkaWRGaW5pc2hOYXZpZ2F0aW9uOihXS05hdmlnYXRpb24gKiluYXZpZ2F0
aW9uCi17Ci0gICAgaXNEb25lID0gdHJ1ZTsKLX0KLQotQGVuZAotCiBzdGF0aWMgTlNTdHJpbmcg
KmxvYWRhYmxlVVJMMSA9IEAiZGF0YTp0ZXh0L2h0bWwsbm8lMjBlcnJvciUyMEEiOwogc3RhdGlj
IE5TU3RyaW5nICpsb2FkYWJsZVVSTDIgPSBAImRhdGE6dGV4dC9odG1sLG5vJTIwZXJyb3IlMjBC
IjsKIHN0YXRpYyBOU1N0cmluZyAqbG9hZGFibGVVUkwzID0gQCJkYXRhOnRleHQvaHRtbCxubyUy
MGVycm9yJTIwQyI7CkBAIC01NywyMCArNDMsMTUgQEAgc3RhdGljIE5TU3RyaW5nICpsb2FkYWJs
ZVVSTDMgPSBAImRhdGE6dGV4dC9odG1sLG5vJTIwZXJyb3IlMjBDIjsKIFRFU1QoV0tCYWNrRm9y
d2FyZExpc3QsIFJlbW92ZUN1cnJlbnRJdGVtKQogewogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0
TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRdKTsKLSAgICBhdXRvIGNvbnRyb2xsZXIgPSBhZG9w
dE5TKFtbV0tCYWNrRm9yd2FyZExpc3RUZXN0TmF2aWdhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0
XSk7Ci0gICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmNvbnRyb2xsZXIuZ2V0KCld
OwogCiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVS
TDpbTlNVUkwgVVJMV2l0aFN0cmluZzpsb2FkYWJsZVVSTDFdXV07Ci0gICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZpc0RvbmUpOwotICAgIGlzRG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3
IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKIAogICAgIFt3ZWJWaWV3IGxvYWRS
ZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6
bG9hZGFibGVVUkwyXV1dOwotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsK
LSAgICBpc0RvbmUgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBfdGVzdF93YWl0Rm9yRGlkRmluaXNo
TmF2aWdhdGlvbl07CiAKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJl
cXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOmxvYWRhYmxlVVJMM11dXTsKLSAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7Ci0gICAgaXNEb25lID0gZmFsc2U7Cisg
ICAgW3dlYlZpZXcgX3Rlc3Rfd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOwogCiAgICAgV0tC
YWNrRm9yd2FyZExpc3QgKmxpc3QgPSBbd2ViVmlldyBiYWNrRm9yd2FyZExpc3RdOwogICAgIEVY
UEVDVF9FUSgoTlNVSW50ZWdlcikyLCBsaXN0LmJhY2tMaXN0LmNvdW50KTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL0Fsd2F5c1JldmFsaWRhdGVk
VVJMU2NoZW1lcy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL0Fs
d2F5c1JldmFsaWRhdGVkVVJMU2NoZW1lcy5tbQppbmRleCBlODhmMDIwZDNiMDhhM2RjY2Q5ODFm
ZjI5ZWMyOGZlNGEzNGE2NzIzLi44ODJkYWFiNjBjZjBiOWZjMjIzY2Q5ZWM5ZGIxZTkzZTZiZDEy
NmE0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9B
bHdheXNSZXZhbGlkYXRlZFVSTFNjaGVtZXMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQyQ29jb2EvQWx3YXlzUmV2YWxpZGF0ZWRVUkxTY2hlbWVzLm1tCkBAIC0yOCwx
MyArMjgsMTMgQEAKICNpZiBXS19BUElfRU5BQkxFRAogCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxp
dGllcy5oIgorI2ltcG9ydCAiVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oIgogI2ltcG9ydCA8V2Vi
S2l0L1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5oPgogI2ltcG9ydCA8V2ViS2l0L1dLUHJv
Y2Vzc1Bvb2xQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKIHN0YXRpYyBOU1N0cmluZyAq
IGNvbnN0IGN1c3RvbVNjaGVtZSA9IEAiY3VzdG9tIjsKLXN0YXRpYyBib29sIGlzRG9uZTsKIHN0
YXRpYyBzaXplX3QgbG9hZHNTdGFydGVkOwogCiBAaW50ZXJmYWNlIEFsd2F5c1JldmFsaWRhdGVk
VVJMU2NoZW1lUHJvdG9jb2wgOiBOU1VSTFByb3RvY29sCkBAIC03NCwxOCArNzQsNiBAQCBzdGF0
aWMgc2l6ZV90IGxvYWRzU3RhcnRlZDsKIAogQGVuZAogCi1AaW50ZXJmYWNlIEFsd2F5c1JldmFs
aWRhdGVkVVJMU2NoZW1lc0RlbGVnYXRlIDogTlNPYmplY3QgPFdLTmF2aWdhdGlvbkRlbGVnYXRl
PgotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gQWx3YXlzUmV2YWxpZGF0ZWRVUkxTY2hlbWVzRGVs
ZWdhdGUKLQotLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZEZpbmlzaE5h
dmlnYXRpb246KFdLTmF2aWdhdGlvbiAqKW5hdmlnYXRpb24KLXsKLSAgICBpc0RvbmUgPSB0cnVl
OwotfQotCi1AZW5kCi0KIFRFU1QoV2ViS2l0MiwgQWx3YXlzUmV2YWxpZGF0ZWRVUkxTY2hlbWVz
KQogewogICAgIEBhdXRvcmVsZWFzZXBvb2wgewpAQCAtOTksMTggKzg3LDE1IEBAIFRFU1QoV2Vi
S2l0MiwgQWx3YXlzUmV2YWxpZGF0ZWRVUkxTY2hlbWVzKQogICAgICAgICBhdXRvIHdlYlZpZXdD
b25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGlu
aXRdKTsKICAgICAgICAgW3dlYlZpZXdDb25maWd1cmF0aW9uIHNldFByb2Nlc3NQb29sOnByb2Nl
c3NQb29sLmdldCgpXTsKIAotICAgICAgICBhdXRvIG5hdmlnYXRpb25EZWxlZ2F0ZSA9IGFkb3B0
TlMoW1tBbHdheXNSZXZhbGlkYXRlZFVSTFNjaGVtZXNEZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwog
ICAgICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0
aEZyYW1lOkNHUmVjdFplcm8gY29uZmlndXJhdGlvbjp3ZWJWaWV3Q29uZmlndXJhdGlvbi5nZXQo
KV0pOwotICAgICAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6bmF2aWdhdGlvbkRl
bGVnYXRlLmdldCgpXTsKIAogICAgICAgICBOU1N0cmluZyAqaHRtbFN0cmluZyA9IFtOU1N0cmlu
ZyBzdHJpbmdXaXRoRm9ybWF0OkAiPCFET0NUWVBFIGh0bWw+PGJvZHk+PGltZyBzcmM9JyVAOi8v
aW1hZ2UnPiIsIGN1c3RvbVNjaGVtZV07CiAgICAgICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5n
Omh0bWxTdHJpbmcgYmFzZVVSTDpuaWxdOwotICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJmlzRG9uZSk7CisgICAgICAgIFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZp
Z2F0aW9uXTsKICAgICAgICAgRVhQRUNUX0VRKDFVTCwgbG9hZHNTdGFydGVkKTsKIAotICAgICAg
ICBpc0RvbmUgPSBmYWxzZTsKICAgICAgICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6aHRtbFN0
cmluZyBiYXNlVVJMOm5pbF07Ci0gICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNE
b25lKTsKKyAgICAgICAgW3dlYlZpZXcgX3Rlc3Rfd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25d
OwogICAgICAgICBFWFBFQ1RfRVEoMlVMLCBsb2Fkc1N0YXJ0ZWQpOwogCiAgICAgICAgIFtXS0Jy
b3dzaW5nQ29udGV4dENvbnRyb2xsZXIgdW5yZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29s
OmN1c3RvbVNjaGVtZV07CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDJDb2NvYS9BbmltYXRlZFJlc2l6ZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0MkNvY29hL0FuaW1hdGVkUmVzaXplLm1tCmluZGV4IGI0NWIwZTZkOGU4MDA0NDRmMGY2
OGM1ZjMwODYwMDY3YTBlNmQ0MTUuLjVhYTA3ZjNmNGNjMTkyY2Y4YzY4ZTgzNDZiOTQyOTgyNTk5
NWMwNjEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29h
L0FuaW1hdGVkUmVzaXplLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
MkNvY29hL0FuaW1hdGVkUmVzaXplLm1tCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCi0jaW1wb3J0IDxXZWJLaXQv
V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlLmg+CisjaW1wb3J0ICJUZXN0TmF2aWdhdGlvbkRl
bGVnYXRlLmgiCiAjaW1wb3J0IDxXZWJLaXQvV0tQcmVmZXJlbmNlcy5oPgogI2ltcG9ydCA8V2Vi
S2l0L1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3Lmg+
CkBAIC00MCwxOSArNDAsNiBAQAogc3RhdGljIGJvb2wgZGlkTGF5b3V0Owogc3RhdGljIGJvb2wg
ZGlkRW5kQW5pbWF0ZWRSZXNpemU7CiAKLUBpbnRlcmZhY2UgQW5pbWF0ZWRSZXNpemVOYXZpZ2F0
aW9uRGVsZWdhdGUgOiBOU09iamVjdCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGU+Ci1AZW5kCi0KLUBp
bXBsZW1lbnRhdGlvbiBBbmltYXRlZFJlc2l6ZU5hdmlnYXRpb25EZWxlZ2F0ZQotCi0tICh2b2lk
KV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJlbmRlcmluZ1Byb2dyZXNzRGlkQ2hhbmdl
OihfV0tSZW5kZXJpbmdQcm9ncmVzc0V2ZW50cylwcm9ncmVzc0V2ZW50cwotewotICAgIGlmIChw
cm9ncmVzc0V2ZW50cyAmIF9XS1JlbmRlcmluZ1Byb2dyZXNzRXZlbnRGaXJzdFZpc3VhbGx5Tm9u
RW1wdHlMYXlvdXQpCi0gICAgICAgIGRpZExheW91dCA9IHRydWU7Ci19Ci0KLUBlbmQKLQogQGlu
dGVyZmFjZSBBbmltYXRlZFJlc2l6ZVdlYlZpZXcgOiBXS1dlYlZpZXcKIAogQGVuZApAQCAtNzAs
MTcgKzU3LDIxIEBAIHN0YXRpYyBib29sIGRpZEVuZEFuaW1hdGVkUmVzaXplOwogCiBzdGF0aWMg
UmV0YWluUHRyPFdLV2ViVmlldz4gYW5pbWF0ZWRSZXNpemVXZWJWaWV3KCkKIHsKLSAgICBSZXRh
aW5QdHI8X1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBwcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24gPSBbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF07CisgICAgUmV0
YWluUHRyPF9XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbj4gcHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0p
OwogICAgIFtwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gc2V0SWdub3JlU3luY2hyb25vdXNNZXNz
YWdpbmdUaW1lb3V0c0ZvclRlc3Rpbmc6WUVTXTsKLSAgICBSZXRhaW5QdHI8V0tQcm9jZXNzUG9v
bD4gcHJvY2Vzc1Bvb2wgPSBbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3Vy
YXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXTsKKyAgICBSZXRhaW5QdHI8V0tQ
cm9jZXNzUG9vbD4gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10g
X2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCldKTsK
IAotICAgIFJldGFpblB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiB3ZWJWaWV3Q29uZmlndXJh
dGlvbiA9IFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF07CisgICAgUmV0YWlu
UHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHRO
UyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBbd2ViVmlld0Nv
bmZpZ3VyYXRpb24gc2V0UHJvY2Vzc1Bvb2w6cHJvY2Vzc1Bvb2wuZ2V0KCldOwogCiAgICAgUmV0
YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tBbmltYXRlZFJlc2l6ZVdlYlZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCkgY29uZmln
dXJhdGlvbjp3ZWJWaWV3Q29uZmlndXJhdGlvbi5nZXQoKV0pOwogCi0gICAgQW5pbWF0ZWRSZXNp
emVOYXZpZ2F0aW9uRGVsZWdhdGUgKm5hdmlnYXRpb25EZWxlZ2F0ZSA9IFtbQW5pbWF0ZWRSZXNp
emVOYXZpZ2F0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdOwotICAgIFt3ZWJWaWV3IHNldE5hdmln
YXRpb25EZWxlZ2F0ZTpuYXZpZ2F0aW9uRGVsZWdhdGVdOworICAgIGF1dG8gbmF2aWdhdGlvbkRl
bGVnYXRlID0gYWRvcHROUyhbW1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsK
KyAgICBbbmF2aWdhdGlvbkRlbGVnYXRlIHNldFJlbmRlcmluZ1Byb2dyZXNzRGlkQ2hhbmdlOl4o
V0tXZWJWaWV3ICosIF9XS1JlbmRlcmluZ1Byb2dyZXNzRXZlbnRzIHByb2dyZXNzRXZlbnRzKSB7
CisgICAgICAgIGlmIChwcm9ncmVzc0V2ZW50cyAmIF9XS1JlbmRlcmluZ1Byb2dyZXNzRXZlbnRG
aXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQpCisgICAgICAgICAgICBkaWRMYXlvdXQgPSB0cnVl
OworICAgIH1dOworICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpuYXZpZ2F0aW9u
RGVsZWdhdGUuZ2V0KCldOwogCiAgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVx
dWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNl
OkAiYmxpbmtpbmctZGl2IiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVz
dFdlYktpdEFQSS5yZXNvdXJjZXMiXV07CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVz
dF07CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9B
dXRvTGF5b3V0SW50ZWdyYXRpb24ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dDJDb2NvYS9BdXRvTGF5b3V0SW50ZWdyYXRpb24ubW0KaW5kZXggODM4Mjk5NDVlNjg4ZGRjMjhi
YjdiMWVjOTAzMGE2YjQzZjUyODFlZC4uYWQ3ODg2ZjI5MmYwZjU5YzI2ODQ0ZThmODhlZThkMTMw
NzI2ZjY5NyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29j
b2EvQXV0b0xheW91dEludGVncmF0aW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0MkNvY29hL0F1dG9MYXlvdXRJbnRlZ3JhdGlvbi5tbQpAQCAtMjYsMjcgKzI2LDE1
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgi
CisjaW1wb3J0ICJUZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmgiCiAjaW1wb3J0IDxXZWJLaXQvV0tX
ZWJWaWV3UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCiAjaWYgV0tfQVBJ
X0VOQUJMRUQgJiYgUExBVEZPUk0oTUFDKQogCi1zdGF0aWMgYm9vbCBkaWRGaW5pc2hOYXZpZ2F0
aW9uOwogc3RhdGljIGJvb2wgZGlkSW52YWxpZGF0ZUludHJpbnNpY0NvbnRlbnRTaXplOwogc3Rh
dGljIGJvb2wgZGlkRXZhbHVhdGVKYXZhU2NyaXB0OwogCi1AaW50ZXJmYWNlIEF1dG9MYXlvdXRO
YXZpZ2F0aW9uRGVsZWdhdGUgOiBOU09iamVjdCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGU+Ci1AZW5k
Ci0KLUBpbXBsZW1lbnRhdGlvbiBBdXRvTGF5b3V0TmF2aWdhdGlvbkRlbGVnYXRlCi0KLS0gKHZv
aWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRGaW5pc2hOYXZpZ2F0aW9uOihXS05h
dmlnYXRpb24gKiluYXZpZ2F0aW9uCi17Ci0gICAgZGlkRmluaXNoTmF2aWdhdGlvbiA9IHRydWU7
Ci19Ci0KLUBlbmQKLQogQGludGVyZmFjZSBBdXRvTGF5b3V0V0tXZWJWaWV3IDogV0tXZWJWaWV3
CiBAZW5kCiAKQEAgLTU1LDYgKzQzLDE1IEBAIHN0YXRpYyBib29sIGRpZEV2YWx1YXRlSmF2YVNj
cmlwdDsKICAgICBOU1NpemUgX2V4cGVjdGVkSW50cmluc2ljQ29udGVudFNpemU7CiB9CiAKKy0g
KGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWUgY29uZmlndXJhdGlvbjoo
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24KK3sKKyAgICBzZWxmID0gW3N1
cGVyIGluaXRXaXRoRnJhbWU6ZnJhbWUgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXTsKKyAg
ICBpZiAoIXNlbGYpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICByZXR1cm4gc2VsZjsKK30K
KwogLSAodm9pZClsb2FkOihOU1N0cmluZyAqKUhUTUxTdHJpbmcgd2l0aFdpZHRoOihDR0Zsb2F0
KXdpZHRoIGV4cGVjdGluZ0NvbnRlbnRTaXplOihOU1NpemUpc2l6ZQogewogICAgIFtzZWxmIGxv
YWQ6SFRNTFN0cmluZyB3aXRoV2lkdGg6d2lkdGggZXhwZWN0aW5nQ29udGVudFNpemU6c2l6ZSBy
ZXNldHRpbmdXaWR0aDpZRVNdOwpAQCAtNzMsOSArNzAsOCBAQCBzdGF0aWMgYm9vbCBkaWRFdmFs
dWF0ZUphdmFTY3JpcHQ7CiAgICAgIi5pbmxpbmUgeyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IH0i
CiAgICAgIjwvc3R5bGU+IjsKIAotICAgIGRpZEZpbmlzaE5hdmlnYXRpb24gPSBmYWxzZTsKICAg
ICBbc2VsZiBsb2FkSFRNTFN0cmluZzpbYmFzZUhUTUwgc3RyaW5nQnlBcHBlbmRpbmdTdHJpbmc6
SFRNTFN0cmluZ10gYmFzZVVSTDpuaWxdOwotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
ZGlkRmluaXNoTmF2aWdhdGlvbik7CisgICAgW3NlbGYgX3Rlc3Rfd2FpdEZvckRpZEZpbmlzaE5h
dmlnYXRpb25dOwogCiAgICAgW3NlbGYgbGF5b3V0QXRNaW5pbXVtV2lkdGg6d2lkdGggYW5kRXhw
ZWN0Q29udGVudFNpemVDaGFuZ2U6c2l6ZSByZXNldHRpbmdXaWR0aDpyZXNldEFmdGVyXTsKIH0K
QEAgLTExNiw5ICsxMTIsNiBAQCBURVNUKFdlYktpdDIsIEF1dG9MYXlvdXRJbnRlZ3JhdGlvbikK
IHsKICAgICBSZXRhaW5QdHI8QXV0b0xheW91dFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMo
W1tBdXRvTGF5b3V0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwg
MCwgMTAwMCwgMTAwMCldKTsKIAotICAgIEF1dG9MYXlvdXROYXZpZ2F0aW9uRGVsZWdhdGUgKmRl
bGVnYXRlID0gW1tBdXRvTGF5b3V0TmF2aWdhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XTsKLSAg
ICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGVdOwotCiAgICAgLy8gMTB4
MTAgcmVjdCB3aXRoIHRoZSBjb25zdHJhaW50ICh3aWR0aCA+PSA1MCkgLT4gNTB4MTAKICAgICBb
d2ViVmlldyBsb2FkOkAiPGRpdiBjbGFzcz0nc21hbGwnPjwvZGl2PiIgd2l0aFdpZHRoOjUwIGV4
cGVjdGluZ0NvbnRlbnRTaXplOk5TTWFrZVNpemUoNTAsIDEwKV07CiAKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL0NhbmNlbEZvbnRTdWJyZXNvdXJj
ZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL0NhbmNlbEZvbnRT
dWJyZXNvdXJjZS5tbQppbmRleCA2YmE0YTA3MWY5OTU1MTIwOTk1Nzk0YTUzNmY5ZGEyMWRmNWFi
ODEyLi5kM2NhNWQ1ZWYxNmNhNGViMTQ5ODUxYTM0Njg5ZjIzZjI4NTZlMTk1IDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9DYW5jZWxGb250U3VicmVz
b3VyY2UubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvQ2Fu
Y2VsRm9udFN1YnJlc291cmNlLm1tCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbXBvcnQgIlBsYXRm
b3JtVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJUZXN0LmgiCisjaW1wb3J0ICJUZXN0TmF2aWdhdGlv
bkRlbGVnYXRlLmgiCiAjaW1wb3J0ICJVc2VyQ29udGVudFdvcmxkUHJvdG9jb2wuaCIKICNpbXBv
cnQgIldLV2ViVmlld0NvbmZpZ3VyYXRpb25FeHRyYXMuaCIKICNpbXBvcnQgPFdlYktpdC9XS1By
b2Nlc3NQb29sUHJpdmF0ZS5oPgpAQCAtNDQsMjAgKzQ1LDYgQEAKICNpbXBvcnQgPFdlYktpdC9f
V0tVc2VyU3R5bGVTaGVldC5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCi1AaW50ZXJm
YWNlIENhbmNlbEZvbnRTdWJyZXNvdXJjZU5hdmlnYXRpb25EZWxlZ2F0ZSA6IE5TT2JqZWN0IDxX
S05hdmlnYXRpb25EZWxlZ2F0ZT4KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIENhbmNlbEZvbnRT
dWJyZXNvdXJjZU5hdmlnYXRpb25EZWxlZ2F0ZQotCi1zdGF0aWMgYm9vbCBuYXZpZ2F0aW9uQ29t
cGxldGUgPSBmYWxzZTsKLQotLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRp
ZEZpbmlzaE5hdmlnYXRpb246KFdLTmF2aWdhdGlvbiAqKW5hdmlnYXRpb24KLXsKLSAgICBuYXZp
Z2F0aW9uQ29tcGxldGUgPSB0cnVlOwotfQotCi1AZW5kCi0KIFRFU1QoQ2FuY2VsTG9hZGluZywg
Q2FuY2VsRm9udFN1YnJlc291cmNlKQogewogICAgIE5TU3RyaW5nICogY29uc3QgdGVzdFBsdWdJ
bkNsYXNzTmFtZSA9IEAiQ2FuY2VsRm9udFN1YnJlc291cmNlUGx1Z0luIjsKQEAgLTY2LDEzICs1
Myw5IEBAIFRFU1QoQ2FuY2VsTG9hZGluZywgQ2FuY2VsRm9udFN1YnJlc291cmNlKQogCiAgICAg
UmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpj
b25maWd1cmF0aW9uLmdldCgpXSk7CiAKLSAgICBDYW5jZWxGb250U3VicmVzb3VyY2VOYXZpZ2F0
aW9uRGVsZWdhdGUgKmRlbGVnYXRlID0gW1tDYW5jZWxGb250U3VicmVzb3VyY2VOYXZpZ2F0aW9u
RGVsZWdhdGUgYWxsb2NdIGluaXRdOwotICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0
ZTpkZWxlZ2F0ZV07Ci0KICAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0
IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJ3
ZWJmb250IiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQ
SS5yZXNvdXJjZXMiXV07CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07Ci0KLSAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJm5hdmlnYXRpb25Db21wbGV0ZSk7CisgICAgW3dl
YlZpZXcgX3Rlc3Rfd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOwogfQogCiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL0NvbW1hbmRC
YWNrRm9yd2FyZC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL0Nv
bW1hbmRCYWNrRm9yd2FyZC5tbQppbmRleCBhOWI2Yjk4OTIyODllOWI3ODk4M2IyNmUwNDA3NDBh
NDMzZWEwMTM2Li42Nzg2NzAwZWQyM2Q3YWFhODFjMWUxNjAxYjY5ZmQzYTIxZDVlYzUyIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9Db21tYW5kQmFj
a0ZvcndhcmQubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2Ev
Q29tbWFuZEJhY2tGb3J3YXJkLm1tCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbXBvcnQgIlBsYXRm
b3JtVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJUZXN0LmgiCisjaW1wb3J0ICJUZXN0TmF2aWdhdGlv
bkRlbGVnYXRlLmgiCiAjaW1wb3J0IDxDYXJib24vQ2FyYm9uLmg+IC8vIGZvciBHZXRDdXJyZW50
RXZlbnRUaW1lKCkKICNpbXBvcnQgPFdlYktpdC9XS1JldGFpblB0ci5oPgogI2ltcG9ydCA8V2Vi
S2l0L1dLVmlld1ByaXZhdGUuaD4KQEAgLTE1MiwxOSArMTUzLDYgQEAgcHVibGljOgogCiAjaWYg
V0tfQVBJX0VOQUJMRUQKIAotQGludGVyZmFjZSBDb21tYW5kQmFja0ZvcndhcmROYXZpZ2F0aW9u
RGVsZWdhdGUgOiBOU09iamVjdCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGU+Ci1AZW5kCi0KLUBpbXBs
ZW1lbnRhdGlvbiBDb21tYW5kQmFja0ZvcndhcmROYXZpZ2F0aW9uRGVsZWdhdGUKLQotLSAodm9p
ZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZEZpbmlzaE5hdmlnYXRpb246KFdLTmF2
aWdhdGlvbiAqKW5hdmlnYXRpb24KLXsKLSAgICBkaWRGaW5pc2hOYXZpZ2F0aW9uID0gdHJ1ZTsK
LX0KLQotQGVuZAotCi0KIGNsYXNzIFdlYktpdDJfQ29tbWFuZEJhY2tGb3J3YXJkVGVzdFdLV2Vi
VmlldyA6IHB1YmxpYyBXZWJLaXQyX0NvbW1hbmRCYWNrRm9yd2FyZFRlc3QgewogcHVibGljOgog
ICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXc7CkBAIC0xNzUsMjQgKzE2MywxNyBAQCBw
dWJsaWM6CiAKICAgICAgICAgd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAxMDAsIDEwMCldKTsKICAgICAgICAgW1t3aW5k
b3cgY29udGVudFZpZXddIGFkZFN1YnZpZXc6d2ViVmlldy5nZXQoKV07Ci0KLSAgICAgICAgQ29t
bWFuZEJhY2tGb3J3YXJkTmF2aWdhdGlvbkRlbGVnYXRlICpkZWxlZ2F0ZSA9IFtbQ29tbWFuZEJh
Y2tGb3J3YXJkTmF2aWdhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XTsKLSAgICAgICAgW3dlYlZp
ZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlXTsKICAgICB9CiAgICAgCiAgICAgdm9p
ZCBsb2FkRmlsZXMoKQogICAgIHsKICAgICAgICAgTlNVUkwgKmZpbGUxID0gW1tOU0J1bmRsZSBt
YWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNpbXBsZSIgd2l0aEV4dGVuc2lvbjpAImh0bWwi
IHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CiAgICAgICAgIFt3ZWJW
aWV3IGxvYWRGaWxlVVJMOmZpbGUxIGFsbG93aW5nUmVhZEFjY2Vzc1RvVVJMOmZpbGUxXTsKLQot
ICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRpZEZpbmlzaE5hdmlnYXRpb24pOwot
ICAgICAgICBkaWRGaW5pc2hOYXZpZ2F0aW9uID0gZmFsc2U7CisgICAgICAgIFt3ZWJWaWV3IF90
ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKIAogICAgICAgICBOU1VSTCAqZmlsZTIg
PSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlMiIgd2l0aEV4
dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07
CiAgICAgICAgIFt3ZWJWaWV3IGxvYWRGaWxlVVJMOmZpbGUyIGFsbG93aW5nUmVhZEFjY2Vzc1Rv
VVJMOmZpbGUyXTsKLQotICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRpZEZpbmlz
aE5hdmlnYXRpb24pOwotICAgICAgICBkaWRGaW5pc2hOYXZpZ2F0aW9uID0gZmFsc2U7CisgICAg
ICAgIFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKICAgICB9CiB9
OwogCkBAIC0yMDYsMTUgKzE4NywxMyBAQCBURVNUX0YoV2ViS2l0Ml9Db21tYW5kQmFja0Zvcndh
cmRUZXN0V0tXZWJWaWV3LCBMVFIpCiAKICAgICAvLyBBdHRlbXB0IHRvIGdvIGJhY2sgKHVzaW5n
IGNvbW1hbmQtbGVmdCkuCiAgICAgc2ltdWxhdGVDb21tYW5kQXJyb3cod2ViVmlldy5nZXQoKSwg
TGVmdCk7Ci0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkaWRGaW5pc2hOYXZpZ2F0aW9u
KTsKLSAgICBkaWRGaW5pc2hOYXZpZ2F0aW9uID0gZmFsc2U7CisgICAgW3dlYlZpZXcgX3Rlc3Rf
d2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOwogCiAgICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJW
aWV3IFVSTF0ucGF0aC5sYXN0UGF0aENvbXBvbmVudCwgQCJzaW1wbGUuaHRtbCIpOwogCiAgICAg
Ly8gQXR0ZW1wdCB0byBnbyBiYWNrICh1c2luZyBjb21tYW5kLXJpZ2h0KS4KICAgICBzaW11bGF0
ZUNvbW1hbmRBcnJvdyh3ZWJWaWV3LmdldCgpLCBSaWdodCk7Ci0gICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZkaWRGaW5pc2hOYXZpZ2F0aW9uKTsKLSAgICBkaWRGaW5pc2hOYXZpZ2F0aW9u
ID0gZmFsc2U7CisgICAgW3dlYlZpZXcgX3Rlc3Rfd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25d
OwogCiAgICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3IFVSTF0ucGF0aC5sYXN0UGF0aENvbXBv
bmVudCwgQCJzaW1wbGUyLmh0bWwiKTsKIH0KQEAgLTIzMCwxNSArMjA5LDEzIEBAIFRFU1RfRihX
ZWJLaXQyX0NvbW1hbmRCYWNrRm9yd2FyZFRlc3RXS1dlYlZpZXcsIFJUTCkKIAogICAgIC8vIEF0
dGVtcHQgdG8gZ28gYmFjayAodXNpbmcgY29tbWFuZC1yaWdodCkKICAgICBzaW11bGF0ZUNvbW1h
bmRBcnJvdyh3ZWJWaWV3LmdldCgpLCBSaWdodCk7Ci0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZkaWRGaW5pc2hOYXZpZ2F0aW9uKTsKLSAgICBkaWRGaW5pc2hOYXZpZ2F0aW9uID0gZmFs
c2U7CisgICAgW3dlYlZpZXcgX3Rlc3Rfd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOwogCiAg
ICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3IFVSTF0ucGF0aC5sYXN0UGF0aENvbXBvbmVudCwg
QCJzaW1wbGUuaHRtbCIpOwogCiAgICAgLy8gQXR0ZW1wdCB0byBnbyBiYWNrICh1c2luZyBjb21t
YW5kLWxlZnQpLgogICAgIHNpbXVsYXRlQ29tbWFuZEFycm93KHdlYlZpZXcuZ2V0KCksIExlZnQp
OwotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZGlkRmluaXNoTmF2aWdhdGlvbik7Ci0g
ICAgZGlkRmluaXNoTmF2aWdhdGlvbiA9IGZhbHNlOworICAgIFt3ZWJWaWV3IF90ZXN0X3dhaXRG
b3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKIAogICAgIEVYUEVDVF9XS19TVFJFUShbd2ViVmlldyBV
UkxdLnBhdGgubGFzdFBhdGhDb21wb25lbnQsIEAic2ltcGxlMi5odG1sIik7CiB9CmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9EYXRhRGV0ZWN0aW9u
Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvRGF0YURldGVjdGlv
bi5tbQppbmRleCBkMTQzMTI5ODY3MDIxYzkyZjFjMzgwYzI5NTk4ZjI3NThjYzUxMzcyLi44NWU4
MjUyZDhjMTAyNTg2YTA4ZmU0NjBiNTQ1M2Y4Njg2MDI0OTc5IDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL0RhdGFEZXRlY3Rpb24ubW0KQEAg
LTI3LDI2ICsyNywxNCBAQAogCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgogI2ltcG9y
dCAiVGVzdC5oIgorI2ltcG9ydCAiVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oIgogI2ltcG9ydCA8
V2ViS2l0L1dlYktpdC5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCiAjaWYgV0tfQVBJ
X0VOQUJMRUQgJiYgUExBVEZPUk0oSU9TKQogCi1zdGF0aWMgYm9vbCBmaW5pc2hlZExvYWRpbmc7
CiBzdGF0aWMgYm9vbCByYW5TY3JpcHQ7CiAKLUBpbnRlcmZhY2UgRGF0YURldGVjdGlvbk5hdmln
YXRpb25EZWxlZ2F0ZSA6IE5TT2JqZWN0IDxXS05hdmlnYXRpb25EZWxlZ2F0ZT4KLUBlbmQKLQot
QGltcGxlbWVudGF0aW9uIERhdGFEZXRlY3Rpb25OYXZpZ2F0aW9uRGVsZWdhdGUKLQotLSAodm9p
ZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZEZpbmlzaE5hdmlnYXRpb246KFdLTmF2
aWdhdGlvbiAqKW5hdmlnYXRpb24KLXsKLSAgICBmaW5pc2hlZExvYWRpbmcgPSB0cnVlOwotfQot
Ci1AZW5kCi0KIEBpbnRlcmZhY2UgRGF0YURldGVjdGlvblVJRGVsZWdhdGUgOiBOU09iamVjdCA8
V0tVSURlbGVnYXRlPgogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmV0YWluKSBOU0RhdGUgKnJl
ZmVyZW5jZURhdGU7CkBAIC03MCw5ICs1OCw3IEBAIHN0YXRpYyBib29sIHJhblNjcmlwdDsKIHZv
aWQgZXhwZWN0TGlua0NvdW50KFdLV2ViVmlldyAqd2ViVmlldywgTlNTdHJpbmcgKkhUTUxTdHJp
bmcsIHVuc2lnbmVkIGxpbmtDb3VudCkKIHsKICAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzpI
VE1MU3RyaW5nIGJhc2VVUkw6bmlsXTsKLQotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
ZmluaXNoZWRMb2FkaW5nKTsKLSAgICBmaW5pc2hlZExvYWRpbmcgPSBmYWxzZTsKKyAgICBbd2Vi
VmlldyBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CiAKICAgICBbd2ViVmlldyBl
dmFsdWF0ZUphdmFTY3JpcHQ6QCJkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYScpLmxl
bmd0aCIgY29tcGxldGlvbkhhbmRsZXI6XihpZCB2YWx1ZSwgTlNFcnJvciAqZXJyb3IpIHsKICAg
ICAgICAgRVhQRUNUX0VRKGxpbmtDb3VudCwgW3ZhbHVlIHVuc2lnbmVkSW50VmFsdWVdKTsKQEAg
LTkwLDkgKzc2LDYgQEAgVEVTVChXZWJLaXQyLCBEYXRhRGV0ZWN0aW9uUmVmZXJlbmNlRGF0ZSkK
IAogICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3
IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3Vy
YXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogCi0gICAgUmV0YWluUHRyPERhdGFEZXRlY3Rp
b25OYXZpZ2F0aW9uRGVsZWdhdGU+IG5hdmlnYXRpb25EZWxlZ2F0ZSA9IGFkb3B0TlMoW1tEYXRh
RGV0ZWN0aW9uTmF2aWdhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7Ci0gICAgW3dlYlZpZXcg
c2V0TmF2aWdhdGlvbkRlbGVnYXRlOm5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKV07Ci0KICAgICBS
ZXRhaW5QdHI8RGF0YURldGVjdGlvblVJRGVsZWdhdGU+IFVJRGVsZWdhdGUgPSBhZG9wdE5TKFtb
RGF0YURldGVjdGlvblVJRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKICAgICBbd2ViVmlldyBzZXRV
SURlbGVnYXRlOlVJRGVsZWdhdGUuZ2V0KCldOwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9GaW5kSW5QYWdlLm1tIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvRmluZEluUGFnZS5tbQppbmRleCAyZThiMjUyMzdiZTEy
NzQ5YzgyYmQ1ZDZlODA4MDY0OWI4NDc4M2FjLi4zMmVhMzk5M2VjOTU5OWVkNDM5ZGEyZWUzMzVk
ZGM0MGRmOTY5MDY5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dDJDb2NvYS9GaW5kSW5QYWdlLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0MkNvY29hL0ZpbmRJblBhZ2UubW0KQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKIAogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQgIlRlc3ROYXZp
Z2F0aW9uRGVsZWdhdGUuaCIKICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CiAj
aW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKQEAgLTQ2LDMzICs0NywxNiBAQCB0eXBlZGVmIGVu
dW0gOiBOU1VJbnRlZ2VyIHsKIAogQGVuZAogCi1zdGF0aWMgYm9vbCBuYXZpZ2F0aW9uRG9uZTsK
IHN0YXRpYyBib29sIGZpbmRNYXRjaGVzRG9uZTsKIAotQGludGVyZmFjZSBGaW5kSW5QYWdlTmF2
aWdhdGlvbkRlbGVnYXRlIDogTlNPYmplY3QgPFdLTmF2aWdhdGlvbkRlbGVnYXRlPgotQGVuZAot
Ci1AaW1wbGVtZW50YXRpb24gRmluZEluUGFnZU5hdmlnYXRpb25EZWxlZ2F0ZQotCi0tICh2b2lk
KXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkRmluaXNoTmF2aWdhdGlvbjooV0tOYXZp
Z2F0aW9uICopbmF2aWdhdGlvbgotewotICAgIG5hdmlnYXRpb25Eb25lID0gdHJ1ZTsKLX0KLQot
QGVuZAotCiBURVNUKFdlYktpdDIsIEZpbmRJblBhZ2UpCiB7CiAgICAgUmV0YWluUHRyPFdLV2Vi
Vmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
TlNNYWtlUmVjdCgwLCAwLCAxMDAsIDEwMCldKTsKICAgICBbd2ViVmlldyBfc2V0T3ZlcnJpZGVE
ZXZpY2VTY2FsZUZhY3RvcjoyXTsKIAotICAgIFJldGFpblB0cjxGaW5kSW5QYWdlTmF2aWdhdGlv
bkRlbGVnYXRlPiBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tGaW5kSW5QYWdlTmF2aWdhdGlvbkRlbGVn
YXRlIGFsbG9jXSBpbml0XSk7Ci0gICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRl
bGVnYXRlLmdldCgpXTsKLQogICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VSTFJlcXVl
c3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpA
ImxvdHMtb2YtdGV4dCIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RX
ZWJLaXRBUEkucmVzb3VyY2VzIl1dOwogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3Rd
OwotCi0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZuYXZpZ2F0aW9uRG9uZSk7CisgICAg
W3dlYlZpZXcgX3Rlc3Rfd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOwogCiAgICAgTlNUZXh0
RmluZGVyQXN5bmNocm9ub3VzRG9jdW1lbnRGaW5kT3B0aW9ucyBub0ZpbmRPcHRpb25zID0gKE5T
VGV4dEZpbmRlckFzeW5jaHJvbm91c0RvY3VtZW50RmluZE9wdGlvbnMpMDsKIApkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvRml4ZWRMYXlvdXRTaXpl
Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvRml4ZWRMYXlvdXRT
aXplLm1tCmluZGV4IDQyOTUzNWNiM2NkOGMwYWUyNGM0ZTcxYWMzYWZlMzdiZTgzMzNlMTUuLmZl
ZTEwNjRiMzFmM2M3NWI5MDllMWUxNmQ1ZmIxZWU3MjgyYjgxODYgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL0ZpeGVkTGF5b3V0U2l6ZS5tbQorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9GaXhlZExheW91dFNpemUu
bW0KQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKIAogI2ltcG9ydCAiUGxh
dGZvcm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQgIlRlc3ROYXZpZ2F0aW9uRGVsZWdhdGUuaCIKICNp
bXBvcnQgPFdlYktpdC9XS1ByZWZlcmVuY2VzLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3
UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgpAQCAtMzYsMjkgKzM3LDEwIEBA
IHN0YXRpYyBib29sIGZpeGVkTGF5b3V0U2l6ZURvbmU7CiBzdGF0aWMgYm9vbCBmaXhlZExheW91
dFNpemVBZnRlck5hdmlnYXRpb25Eb25lOwogc3RhdGljIGJvb2wgZml4ZWRMYXlvdXRTaXplRGlz
YWJsZWREb25lOwogCi1AaW50ZXJmYWNlIEZpeGVkTGF5b3V0U2l6ZU5hdmlnYXRpb25EZWxlZ2F0
ZSA6IE5TT2JqZWN0IDxXS05hdmlnYXRpb25EZWxlZ2F0ZT4KLUBlbmQKLQotQGltcGxlbWVudGF0
aW9uIEZpeGVkTGF5b3V0U2l6ZU5hdmlnYXRpb25EZWxlZ2F0ZQotCi0tICh2b2lkKXdlYlZpZXc6
KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkRmluaXNoTmF2aWdhdGlvbjooV0tOYXZpZ2F0aW9uICop
bmF2aWdhdGlvbgotewotICAgIC8vIEFmdGVyIG5hdmlnYXRpbmcsIGZpeGVkIGxheW91dCBzaXpl
IHNob3VsZCBiZSBwZXJzaXN0ZWQuCi0gICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAi
ZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aCIgY29tcGxldGlvbkhhbmRsZXI6XihpZCByZXN1bHQs
IE5TRXJyb3IgKmVycm9yKSB7Ci0gICAgICAgIEVYUEVDVF9FUSgyMDAsIFtyZXN1bHQgaW50ZWdl
clZhbHVlXSk7Ci0gICAgICAgIGZpeGVkTGF5b3V0U2l6ZUFmdGVyTmF2aWdhdGlvbkRvbmUgPSB0
cnVlOwotICAgIH1dOwotfQotCi1AZW5kCi0KIFRFU1QoV2ViS2l0MiwgRml4ZWRMYXlvdXRTaXpl
KQogewogICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMTAwLCAxMDApXSk7CiAK
LSAgICBGaXhlZExheW91dFNpemVOYXZpZ2F0aW9uRGVsZWdhdGUgKmRlbGVnYXRlID0gW1tGaXhl
ZExheW91dFNpemVOYXZpZ2F0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdOwotICAgIFt3ZWJWaWV3
IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZV07Ci0KICAgICBbd2ViVmlldyBldmFsdWF0
ZUphdmFTY3JpcHQ6QCJkb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoIiBjb21wbGV0aW9uSGFuZGxl
cjpeKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKICAgICAgICAgRVhQRUNUX0VRKDEwMCwg
W3Jlc3VsdCBpbnRlZ2VyVmFsdWVdKTsKIApAQCAtNzYsNiArNTgsMTMgQEAgVEVTVChXZWJLaXQy
LCBGaXhlZExheW91dFNpemUpCiAKICAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNVUkxS
ZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3Vy
Y2U6QCJzaW1wbGUiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2Vi
S2l0QVBJLnJlc291cmNlcyJdXTsKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsK
KyAgICBbd2ViVmlldyBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CisKKyAgICAv
LyBBZnRlciBuYXZpZ2F0aW5nLCBmaXhlZCBsYXlvdXQgc2l6ZSBzaG91bGQgYmUgcGVyc2lzdGVk
LgorICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpAImRvY3VtZW50LmJvZHkuY2xpZW50
V2lkdGgiIGNvbXBsZXRpb25IYW5kbGVyOl4oaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgewor
ICAgICAgICBFWFBFQ1RfRVEoMjAwLCBbcmVzdWx0IGludGVnZXJWYWx1ZV0pOworICAgICAgICBm
aXhlZExheW91dFNpemVBZnRlck5hdmlnYXRpb25Eb25lID0gdHJ1ZTsKKyAgICB9XTsKIAogICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZml4ZWRMYXlvdXRTaXplQWZ0ZXJOYXZpZ2F0aW9u
RG9uZSk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNv
Y29hL0luZGV4ZWREQkRhdGFiYXNlUHJvY2Vzc0tpbGwubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdDJDb2NvYS9JbmRleGVkREJEYXRhYmFzZVByb2Nlc3NLaWxsLm1tCmluZGV4
IDZjZjE5ZmRmNGE0Nzc3MmNhYjkzMjU3MGJiYzc5ZjJhNTQ3NGEwNWIuLjc5MDRmYWM2NjhjZWJi
YTZlM2IxOGNkZDVkYWQyNzgxZWMxNjNkZWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0MkNvY29hL0luZGV4ZWREQkRhdGFiYXNlUHJvY2Vzc0tpbGwubW0KKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvSW5kZXhlZERCRGF0YWJh
c2VQcm9jZXNzS2lsbC5tbQpAQCAtMjcsNiArMjcsNyBAQAogCiAjaW1wb3J0ICJQbGF0Zm9ybVV0
aWxpdGllcy5oIgogI2ltcG9ydCAiVGVzdC5oIgorI2ltcG9ydCAiVGVzdE5hdmlnYXRpb25EZWxl
Z2F0ZS5oIgogI2ltcG9ydCA8V2ViS2l0L1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmg+CiAjaW1wb3J0
IDxXZWJLaXQvV0tVc2VyQ29udGVudENvbnRyb2xsZXJQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJL
aXQvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaD4KQEAgLTM2LDIwICszNyw2IEBACiAK
ICNpZiBXS19BUElfRU5BQkxFRAogCi1zdGF0aWMgYm9vbCBpc0RvbmVXaXRoTmF2aWdhdGlvbjsK
LQotQGludGVyZmFjZSBEYXRhYmFzZVByb2Nlc3NLaWxsTmF2aWdhdGlvbkRlbGVnYXRlIDogTlNP
YmplY3QgPFdLTmF2aWdhdGlvbkRlbGVnYXRlPgotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gRGF0
YWJhc2VQcm9jZXNzS2lsbE5hdmlnYXRpb25EZWxlZ2F0ZQotCi0tICh2b2lkKXdlYlZpZXc6KFdL
V2ViVmlldyAqKXdlYlZpZXcgZGlkRmluaXNoTmF2aWdhdGlvbjooV0tOYXZpZ2F0aW9uICopbmF2
aWdhdGlvbgotewotICAgIGlzRG9uZVdpdGhOYXZpZ2F0aW9uID0gdHJ1ZTsKLX0KLQotQGVuZAot
CiBzdGF0aWMgYm9vbCByZWNlaXZlZFNjcmlwdE1lc3NhZ2U7CiBzdGF0aWMgYm9vbCByZWNlaXZl
ZEF0TGVhc3RPbmVPcGVuRXJyb3I7CiBzdGF0aWMgYm9vbCByZWNlaXZlZEF0TGVhc3RPbmVEZWxl
dGVFcnJvcjsKQEAgLTk0LDEzICs4MSw5IEBAIFRFU1QoSW5kZXhlZERCLCBEYXRhYmFzZVByb2Nl
c3NLaWxsKQogCiAgICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tX
S1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkg
Y29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAKLSAgICBEYXRhYmFzZVByb2Nl
c3NLaWxsTmF2aWdhdGlvbkRlbGVnYXRlICpkZWxlZ2F0ZSA9IFtbRGF0YWJhc2VQcm9jZXNzS2ls
bE5hdmlnYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF07Ci0gICAgW3dlYlZpZXcgc2V0TmF2aWdh
dGlvbkRlbGVnYXRlOmRlbGVnYXRlXTsKLQogICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtO
U1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JS
ZXNvdXJjZTpAIkluZGV4ZWREQkRhdGFiYXNlUHJvY2Vzc0tpbGwtMSIgd2l0aEV4dGVuc2lvbjpA
Imh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dOwogICAgIFt3
ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOwotCi0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZpc0RvbmVXaXRoTmF2aWdhdGlvbik7CisgICAgW3dlYlZpZXcgX3Rlc3Rfd2FpdEZvckRp
ZEZpbmlzaE5hdmlnYXRpb25dOwogCiAgICAgYm9vbCBraWxsZWREQlByb2Nlc3MgPSBmYWxzZTsK
ICAgICB3aGlsZSAodHJ1ZSkgewpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyQ29jb2EvSW5kZXhlZERCUGVyc2lzdGVuY2UubW0gYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9JbmRleGVkREJQZXJzaXN0ZW5jZS5tbQppbmRleCA0NDll
ODkzMzgyOTQxMGY5ZjBhMjI3NjEzODBlZDI5YWM1YTQ1NTk5Li5jZDFiYzk1ZDQ5NjQzZDFmNDRl
M2VkZjI4YzBmMTRmNzdiNzVhZjE4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDJDb2NvYS9JbmRleGVkREJQZXJzaXN0ZW5jZS5tbQorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9JbmRleGVkREJQZXJzaXN0ZW5jZS5tbQpAQCAt
MzcsMjAgKzM3LDYgQEAKIAogI2lmIFdLX0FQSV9FTkFCTEVECiAKLXN0YXRpYyBib29sIGlzRG9u
ZVdpdGhOYXZpZ2F0aW9uOwotCi1AaW50ZXJmYWNlIEluZGV4ZWREQk5hdmlnYXRpb25EZWxlZ2F0
ZSA6IE5TT2JqZWN0IDxXS05hdmlnYXRpb25EZWxlZ2F0ZT4KLUBlbmQKLQotQGltcGxlbWVudGF0
aW9uIEluZGV4ZWREQk5hdmlnYXRpb25EZWxlZ2F0ZQotCi0tICh2b2lkKXdlYlZpZXc6KFdLV2Vi
VmlldyAqKXdlYlZpZXcgZGlkRmluaXNoTmF2aWdhdGlvbjooV0tOYXZpZ2F0aW9uICopbmF2aWdh
dGlvbgotewotICAgIGlzRG9uZVdpdGhOYXZpZ2F0aW9uID0gdHJ1ZTsKLX0KLQotQGVuZAotCiBz
dGF0aWMgYm9vbCByZWNlaXZlZFNjcmlwdE1lc3NhZ2U7CiBzdGF0aWMgUmV0YWluUHRyPFdLU2Ny
aXB0TWVzc2FnZT4gbGFzdFNjcmlwdE1lc3NhZ2U7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1Byb3Zpc2lvbmFsVVJMTm90Q2hhbmdlLm1tIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvUHJvdmlzaW9uYWxVUkxOb3RD
aGFuZ2UubW0KaW5kZXggMDA3Y2Y4MTFiNjk1MWZlN2Y1OTAzOWRjYWUxZTIyMGNlMjc2Y2E0My4u
Mjg0MGY1MTI5NjBlMTI4ZTMyOGRjNjY5NGMzNWNhYmY3NGFjYjkyOSAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvUHJvdmlzaW9uYWxVUkxOb3RDaGFu
Z2UubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvUHJvdmlz
aW9uYWxVUkxOb3RDaGFuZ2UubW0KQEAgLTMwLDMyICszMCwyMyBAQAogCiAjaW1wb3J0ICJQbGF0
Zm9ybVV0aWxpdGllcy5oIgogI2ltcG9ydCAiVGVzdC5oIgorI2ltcG9ydCAiVGVzdE5hdmlnYXRp
b25EZWxlZ2F0ZS5oIgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCiBzdGF0aWMgYm9vbCBp
c0RvbmU7CiAKLUBpbnRlcmZhY2UgUHJvdmlzaW9uYWxVUkxOb3RDaGFuZ2VDb250cm9sbGVyIDog
TlNPYmplY3QgPFdLTmF2aWdhdGlvbkRlbGVnYXRlPgotQGVuZAotCi1AaW1wbGVtZW50YXRpb24g
UHJvdmlzaW9uYWxVUkxOb3RDaGFuZ2VDb250cm9sbGVyCi0KLS0gKHZvaWQpd2ViVmlldzooV0tX
ZWJWaWV3ICopd2ViVmlldyBkaWRGaW5pc2hOYXZpZ2F0aW9uOihXS05hdmlnYXRpb24gKiluYXZp
Z2F0aW9uCi17Ci0gICAgaXNEb25lID0gdHJ1ZTsKLX0KLQotLSAodm9pZCl3ZWJWaWV3OihXS1dl
YlZpZXcgKil3ZWJWaWV3IGRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb246KFdLTmF2aWdhdGlv
biAqKW5hdmlnYXRpb24gd2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IKLXsKLSAgICBpc0RvbmUg
PSB0cnVlOwotfQotCi1AZW5kCi0KIFRFU1QoV0tXZWJWaWV3LCBQcm92aXNpb25hbFVSTE5vdENo
YW5nZSkKIHsKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBp
bml0XSk7Ci0gICAgYXV0byBjb250cm9sbGVyID0gYWRvcHROUyhbW1Byb3Zpc2lvbmFsVVJMTm90
Q2hhbmdlQ29udHJvbGxlciBhbGxvY10gaW5pdF0pOwotICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRp
b25EZWxlZ2F0ZTpjb250cm9sbGVyLmdldCgpXTsKKworICAgIGF1dG8gbmF2aWdhdGlvbkRlbGVn
YXRlID0gYWRvcHROUyhbW1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAg
ICBbbmF2aWdhdGlvbkRlbGVnYXRlIHNldERpZEZpbmlzaE5hdmlnYXRpb246XihXS1dlYlZpZXcg
KiwgV0tOYXZpZ2F0aW9uICopIHsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAg
ICBbbmF2aWdhdGlvbkRlbGVnYXRlIHNldERpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb246XihX
S1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uICosIE5TRXJyb3IgKikgeworICAgICAgICBpc0RvbmUg
PSB0cnVlOworICAgIH1dOworICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpuYXZp
Z2F0aW9uRGVsZWdhdGUuZ2V0KCldOwogCiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJM
UmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImRhdGE6dGV4dC9o
dG1sLHN0YXJ0Il1dXTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9SZXF1aXJl
c1VzZXJBY3Rpb25Gb3JQbGF5YmFjay5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0MkNvY29hL1JlcXVpcmVzVXNlckFjdGlvbkZvclBsYXliYWNrLm1tCmluZGV4IGJkYWMwMDUx
YWUyYWY5NjMxNGU3MjExNmQxZDZhMmYwZWJlN2ViZGMuLjMwN2E0OWNkODk4YmUwZWEzM2YyNzky
OTk4MmVlMzcyYWQ1NjVmNWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0MkNvY29hL1JlcXVpcmVzVXNlckFjdGlvbkZvclBsYXliYWNrLm1tCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1JlcXVpcmVzVXNlckFjdGlvbkZvclBs
YXliYWNrLm1tCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVz
LmgiCiAjaW1wb3J0ICJUZXN0LmgiCisjaW1wb3J0ICJUZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmgi
CiAjaW1wb3J0IDxXZWJDb3JlL1NvZnRMaW5raW5nLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJW
aWV3Q29uZmlndXJhdGlvblByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJLaXQuaD4KQEAg
LTM5LDE4ICs0MCw2IEBAIFNPRlRfTElOS19GUkFNRVdPUksoVUlLaXQpCiBTT0ZUX0xJTktfQ0xB
U1MoVUlLaXQsIFVJV2luZG93KQogI2VuZGlmCiAKLXN0YXRpYyBib29sIGlzRG9uZVdpdGhOYXZp
Z2F0aW9uOwotCi1AaW50ZXJmYWNlIFJlcXVpcmVzVXNlckFjdGlvbkZvclBsYXliYWNrTmF2aWdh
dGlvbkRlbGVnYXRlIDogTlNPYmplY3QgPFdLTmF2aWdhdGlvbkRlbGVnYXRlPgotQGVuZAotCi1A
aW1wbGVtZW50YXRpb24gUmVxdWlyZXNVc2VyQWN0aW9uRm9yUGxheWJhY2tOYXZpZ2F0aW9uRGVs
ZWdhdGUKLS0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRGaW5pc2hOYXZp
Z2F0aW9uOihXS05hdmlnYXRpb24gKiluYXZpZ2F0aW9uCi17Ci0gICAgaXNEb25lV2l0aE5hdmln
YXRpb24gPSB0cnVlOwotfQotQGVuZAotCiBzdGF0aWMgYm9vbCByZWNlaXZlZFNjcmlwdE1lc3Nh
Z2U7CiBzdGF0aWMgUmV0YWluUHRyPFdLU2NyaXB0TWVzc2FnZT4gbGFzdFNjcmlwdE1lc3NhZ2U7
CiAKQEAgLTgyLDkgKzcxLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBjcmVhdGVXZWJWaWV3KCkK
ICAgICB7Ci0gICAgICAgIGRlbGVnYXRlID0gYWRvcHROUyhbW1JlcXVpcmVzVXNlckFjdGlvbkZv
clBsYXliYWNrTmF2aWdhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7CiAgICAgICAgIHdlYlZp
ZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3Qo
MCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwotICAg
ICAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwogI2lm
IFRBUkdFVF9PU19JUEhPTkUKICAgICAgICAgd2luZG93ID0gYWRvcHROUyhbW2dldFVJV2luZG93
Q2xhc3MoKSBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKV0p
OwogICAgICAgICBbd2luZG93IGFkZFN1YnZpZXc6d2ViVmlldy5nZXQoKV07CkBAIC05OCw4ICs4
NSw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIE5TVVJMICpmaWxlVVJMID0gW1tOU0J1bmRs
ZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInZpZGVvLXdpdGgtYXVkaW8iIHdpdGhFeHRl
bnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOwog
ICAgICAgICBbd2ViVmlldyBsb2FkRmlsZVVSTDpmaWxlVVJMIGFsbG93aW5nUmVhZEFjY2Vzc1Rv
VVJMOmZpbGVVUkxdOwotICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZVdp
dGhOYXZpZ2F0aW9uKTsKLSAgICAgICAgaXNEb25lV2l0aE5hdmlnYXRpb24gPSBmYWxzZTsKKyAg
ICAgICAgW3dlYlZpZXcgX3Rlc3Rfd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOwogCiAgICAg
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3JpcHRNZXNzYWdlKTsKICAg
ICAgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFsc2U7CkBAIC0xMDksOCArOTUsNyBAQCBw
dWJsaWM6CiAgICAgewogICAgICAgICBOU1VSTCAqZmlsZVVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1
bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJ2aWRlby13aXRob3V0LWF1ZGlvIiB3aXRoRXh0ZW5zaW9u
OkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKICAgICAg
ICAgW3dlYlZpZXcgbG9hZEZpbGVVUkw6ZmlsZVVSTCBhbGxvd2luZ1JlYWRBY2Nlc3NUb1VSTDpm
aWxlVVJMXTsKLSAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmVXaXRoTmF2
aWdhdGlvbik7Ci0gICAgICAgIGlzRG9uZVdpdGhOYXZpZ2F0aW9uID0gZmFsc2U7CisgICAgICAg
IFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKIAogICAgICAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkU2NyaXB0TWVzc2FnZSk7CiAgICAgICAg
IHJlY2VpdmVkU2NyaXB0TWVzc2FnZSA9IGZhbHNlOwpAQCAtMTIwLDggKzEwNSw3IEBAIHB1Ymxp
YzoKICAgICB7CiAgICAgICAgIE5TVVJMICpmaWxlVVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxl
XSBVUkxGb3JSZXNvdXJjZTpAImF1ZGlvLW9ubHkiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJk
aXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOwogICAgICAgICBbd2ViVmlldyBs
b2FkRmlsZVVSTDpmaWxlVVJMIGFsbG93aW5nUmVhZEFjY2Vzc1RvVVJMOmZpbGVVUkxdOwotICAg
ICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZVdpdGhOYXZpZ2F0aW9uKTsKLSAg
ICAgICAgaXNEb25lV2l0aE5hdmlnYXRpb24gPSBmYWxzZTsKKyAgICAgICAgW3dlYlZpZXcgX3Rl
c3Rfd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOwogCiAgICAgICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3JpcHRNZXNzYWdlKTsKICAgICAgICAgcmVjZWl2ZWRTY3Jp
cHRNZXNzYWdlID0gZmFsc2U7CkBAIC0xMjksNyArMTEzLDYgQEAgcHVibGljOgogCiAgICAgUmV0
YWluUHRyPFJlcXVpcmVzVXNlckFjdGlvbkZvclBsYXliYWNrTWVzc2FnZUhhbmRsZXI+IGhhbmRs
ZXI7CiAgICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb247
Ci0gICAgUmV0YWluUHRyPFJlcXVpcmVzVXNlckFjdGlvbkZvclBsYXliYWNrTmF2aWdhdGlvbkRl
bGVnYXRlPiBkZWxlZ2F0ZTsKICAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3OwogI2lm
IFRBUkdFVF9PU19JUEhPTkUKICAgICBSZXRhaW5QdHI8VUlXaW5kb3c+IHdpbmRvdzsKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1Nocmlua1RvRml0
Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvU2hyaW5rVG9GaXQu
bW0KaW5kZXggYzNhZDUwYzE5NGE0MDEzMTBlZjI4MjRlMzc5NmJkNGEyNTQ1NjFiZC4uZWM1MWI5
NjM4MzBiZDdhM2M3MTA3MmJlNmU0NDhkNmFlNTVlZTc4ZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvU2hyaW5rVG9GaXQubW0KKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvU2hyaW5rVG9GaXQubW0KQEAgLTI2LDYg
KzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKIAogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRp
ZXMuaCIKKyNpbXBvcnQgIlRlc3ROYXZpZ2F0aW9uRGVsZWdhdGUuaCIKICNpbXBvcnQgPFdlYktp
dC9XS1dlYlZpZXdQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKQEAgLTM1
LDI5ICszNiwxMCBAQCBzdGF0aWMgYm9vbCBzaHJpbmtUb0ZpdERvbmU7CiBzdGF0aWMgYm9vbCBz
aHJpbmtUb0ZpdEFmdGVyTmF2aWdhdGlvbkRvbmU7CiBzdGF0aWMgYm9vbCBzaHJpbmtUb0ZpdERp
c2FibGVkRG9uZTsKIAotQGludGVyZmFjZSBTaHJpbmtUb0ZpdE5hdmlnYXRpb25EZWxlZ2F0ZSA6
IE5TT2JqZWN0IDxXS05hdmlnYXRpb25EZWxlZ2F0ZT4KLUBlbmQKLQotQGltcGxlbWVudGF0aW9u
IFNocmlua1RvRml0TmF2aWdhdGlvbkRlbGVnYXRlCi0KLS0gKHZvaWQpd2ViVmlldzooV0tXZWJW
aWV3ICopd2ViVmlldyBkaWRGaW5pc2hOYXZpZ2F0aW9uOihXS05hdmlnYXRpb24gKiluYXZpZ2F0
aW9uCi17Ci0gICAgLy8gQWZ0ZXIgbG9hZGluZyBhIHdpZGUgcGFnZSwgdGhlIHZpZXcgc2hvdWxk
IGJlIHNjYWxlZCB0byBmaXQgdGhlIHdpZHRoIG9mIHRoZSBkb2N1bWVudC4KLSAgICBbd2ViVmll
dyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJkb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoIiBjb21wbGV0
aW9uSGFuZGxlcjpeKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKLSAgICAgICAgRVhQRUNU
X0VRKDgwOCwgW3Jlc3VsdCBpbnRlZ2VyVmFsdWVdKTsKLSAgICAgICAgc2hyaW5rVG9GaXRBZnRl
ck5hdmlnYXRpb25Eb25lID0gdHJ1ZTsKLSAgICB9XTsKLX0KLQotQGVuZAotCiBURVNUKFdlYktp
dDIsIFNocmlua1RvRml0KQogewogICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXcgPSBh
ZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwg
MTAwLCAxMDApXSk7CiAKLSAgICBTaHJpbmtUb0ZpdE5hdmlnYXRpb25EZWxlZ2F0ZSAqZGVsZWdh
dGUgPSBbW1Nocmlua1RvRml0TmF2aWdhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XTsKLSAgICBb
d2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGVdOwotCiAgICAgW3dlYlZpZXcg
ZXZhbHVhdGVKYXZhU2NyaXB0OkAiZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aCIgY29tcGxldGlv
bkhhbmRsZXI6XihpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CiAgICAgICAgIEVYUEVDVF9F
USgxMDAsIFtyZXN1bHQgaW50ZWdlclZhbHVlXSk7CiAKQEAgLTY5LDYgKzUxLDEzIEBAIFRFU1Qo
V2ViS2l0MiwgU2hyaW5rVG9GaXQpCiAKICAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNV
UkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVz
b3VyY2U6QCJsb3RzLW9mLXRleHQiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6
QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXTsKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpy
ZXF1ZXN0XTsKKyAgICBbd2ViVmlldyBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07
CisKKyAgICAvLyBBZnRlciBsb2FkaW5nIGEgd2lkZSBwYWdlLCB0aGUgdmlldyBzaG91bGQgYmUg
c2NhbGVkIHRvIGZpdCB0aGUgd2lkdGggb2YgdGhlIGRvY3VtZW50LgorICAgIFt3ZWJWaWV3IGV2
YWx1YXRlSmF2YVNjcmlwdDpAImRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGgiIGNvbXBsZXRpb25I
YW5kbGVyOl4oaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBFWFBFQ1RfRVEo
ODA4LCBbcmVzdWx0IGludGVnZXJWYWx1ZV0pOworICAgICAgICBzaHJpbmtUb0ZpdEFmdGVyTmF2
aWdhdGlvbkRvbmUgPSB0cnVlOworICAgIH1dOwogCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZzaHJpbmtUb0ZpdEFmdGVyTmF2aWdhdGlvbkRvbmUpOwogCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9Vc2VyQ29udGVudENvbnRyb2xsZXIu
bW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9Vc2VyQ29udGVudENv
bnRyb2xsZXIubW0KaW5kZXggMGIwYzczMzI2MTVjYTRiYzhmY2Q1NGRhODA3MWIzNTZiMDZlYjMx
My4uZTU1NDc3NzhkOTVlZGJmNzAwNDAzNzM1YWE2NDExYTE0Mjg2ZjQzMSAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvVXNlckNvbnRlbnRDb250cm9s
bGVyLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1VzZXJD
b250ZW50Q29udHJvbGxlci5tbQpAQCAtMjcsNiArMjcsNyBAQAogCiAjaW1wb3J0ICJQbGF0Zm9y
bVV0aWxpdGllcy5oIgogI2ltcG9ydCAiVGVzdC5oIgorI2ltcG9ydCAiVGVzdE5hdmlnYXRpb25E
ZWxlZ2F0ZS5oIgogI2ltcG9ydCA8V2ViS2l0L1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmg+CiAjaW1w
b3J0IDxXZWJLaXQvV0tVc2VyQ29udGVudENvbnRyb2xsZXJQcml2YXRlLmg+CiAjaW1wb3J0IDxX
ZWJLaXQvV0tVc2VyU2NyaXB0Lmg+CkBAIC03OCwxNCArNzksMTAgQEAgVEVTVChXS1VzZXJDb250
ZW50Q29udHJvbGxlciwgU2NyaXB0TWVzc2FnZUhhbmRsZXJCYXNpY1Bvc3QpCiAKICAgICBSZXRh
aW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZp
Z3VyYXRpb24uZ2V0KCldKTsKIAotICAgIFJldGFpblB0cjxTaW1wbGVOYXZpZ2F0aW9uRGVsZWdh
dGU+IGRlbGVnYXRlID0gYWRvcHROUyhbW1NpbXBsZU5hdmlnYXRpb25EZWxlZ2F0ZSBhbGxvY10g
aW5pdF0pOwotICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQo
KV07Ci0KICAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RX
aXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUiIHdp
dGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNl
cyJdXTsKIAogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOwotCi0gICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmVXaXRoTmF2aWdhdGlvbik7CisgICAgW3dlYlZpZXcg
X3Rlc3Rfd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOwogCiAgICAgW3dlYlZpZXcgZXZhbHVh
dGVKYXZhU2NyaXB0OkAid2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRsZXIu
cG9zdE1lc3NhZ2UoJ0hlbGxvJykiIGNvbXBsZXRpb25IYW5kbGVyOm5pbF07CiAKQEAgLTE1NCwx
NCArMTUxLDEwIEBAIFRFU1QoV0tVc2VyQ29udGVudENvbnRyb2xsZXIsIFNjcmlwdE1lc3NhZ2VI
YW5kbGVyQmFzaWNSZW1vdmUpCiAKICAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0g
YWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAs
IDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAotICAgIFJl
dGFpblB0cjxTaW1wbGVOYXZpZ2F0aW9uRGVsZWdhdGU+IGRlbGVnYXRlID0gYWRvcHROUyhbW1Np
bXBsZU5hdmlnYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwotICAgIFt3ZWJWaWV3IHNldE5h
dmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07Ci0KICAgICBOU1VSTFJlcXVlc3QgKnJl
cXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRs
ZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJl
Y3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXTsKIAogICAgIFt3ZWJWaWV3IGxvYWRS
ZXF1ZXN0OnJlcXVlc3RdOwotCi0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmVX
aXRoTmF2aWdhdGlvbik7CisgICAgW3dlYlZpZXcgX3Rlc3Rfd2FpdEZvckRpZEZpbmlzaE5hdmln
YXRpb25dOwogCiAgICAgLy8gVGVzdCB0aGF0IGhhbmRsZXJUb1JlbW92ZSB3YXMgc3VjY2VzZnVs
bHkgYWRkZWQuCiAgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OgpAQCAtMjAyLDE0ICsx
OTUsMTAgQEAgVEVTVChXS1VzZXJDb250ZW50Q29udHJvbGxlciwgU2NyaXB0TWVzc2FnZUhhbmRs
ZXJDYWxsUmVtb3ZlZEhhbmRsZXIpCiAKICAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3
ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAs
IDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAotICAg
IFJldGFpblB0cjxTaW1wbGVOYXZpZ2F0aW9uRGVsZWdhdGU+IGRlbGVnYXRlID0gYWRvcHROUyhb
W1NpbXBsZU5hdmlnYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwotICAgIFt3ZWJWaWV3IHNl
dE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07Ci0KICAgICBOU1VSTFJlcXVlc3Qg
KnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1
bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJk
aXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXTsKIAogICAgIFt3ZWJWaWV3IGxv
YWRSZXF1ZXN0OnJlcXVlc3RdOwotCi0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0Rv
bmVXaXRoTmF2aWdhdGlvbik7CisgICAgW3dlYlZpZXcgX3Rlc3Rfd2FpdEZvckRpZEZpbmlzaE5h
dmlnYXRpb25dOwogCiAgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAidmFyIGhhbmRs
ZXJUb1JlbW92ZSA9IHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLmhhbmRsZXJUb1JlbW92
ZTsiIGNvbXBsZXRpb25IYW5kbGVyOm5pbF07CiAKQEAgLTIzNywxMiArMjI2LDkgQEAgc3RhdGlj
IFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXdGb3JTY3JpcHRNZXNzYWdlSGFuZGxlck11bHRp
cGxlSGFuZGxlclJlbW92YWwKICAgICBbW2NvbmZpZ3VyYXRpb25Db3B5IHVzZXJDb250ZW50Q29u
dHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBuYW1lOkAiaGFu
ZGxlclRvUmVtb3ZlIl07CiAgICAgW1tjb25maWd1cmF0aW9uQ29weSB1c2VyQ29udGVudENvbnRy
b2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgbmFtZTpAImhhbmRs
ZXJUb1Bvc3QiXTsKICAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhb
W1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAw
KSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25Db3B5LmdldCgpXSk7Ci0gICAgUmV0YWluUHRy
PFNpbXBsZU5hdmlnYXRpb25EZWxlZ2F0ZT4gZGVsZWdhdGUgPSBhZG9wdE5TKFtbU2ltcGxlTmF2
aWdhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7Ci0gICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlv
bkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKICAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBb
TlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9y
UmVzb3VyY2U6QCJzaW1wbGUiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJU
ZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXTsKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1
ZXN0XTsKLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZVdpdGhOYXZpZ2F0aW9u
KTsKLSAgICBpc0RvbmVXaXRoTmF2aWdhdGlvbiA9IGZhbHNlOworICAgIFt3ZWJWaWV3IF90ZXN0
X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKIAogICAgIHJldHVybiB3ZWJWaWV3OwogfQpA
QCAtMjgyLDE0ICsyNjgsOSBAQCBURVNUKFdLVXNlckNvbnRlbnRDb250cm9sbGVyLCBTY3JpcHRN
ZXNzYWdlSGFuZGxlcldpdGhOYXZpZ2F0aW9uKQogCiAgICAgUmV0YWluUHRyPFdLV2ViVmlldz4g
d2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtl
UmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7
CiAKLSAgICBSZXRhaW5QdHI8U2ltcGxlTmF2aWdhdGlvbkRlbGVnYXRlPiBkZWxlZ2F0ZSA9IGFk
b3B0TlMoW1tTaW1wbGVOYXZpZ2F0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKLSAgICBbd2Vi
VmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwotCiAgICAgTlNVUkxS
ZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxl
IG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlIiB3aXRoRXh0ZW5zaW9uOkAiaHRt
bCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV07CiAgICAgW3dlYlZp
ZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07Ci0KLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4o
JmlzRG9uZVdpdGhOYXZpZ2F0aW9uKTsKLSAgICBpc0RvbmVXaXRoTmF2aWdhdGlvbiA9IGZhbHNl
OworICAgIFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKIAogICAg
IFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpAIndpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRs
ZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKCdGaXJzdCBNZXNzYWdlJykiIGNvbXBsZXRpb25I
YW5kbGVyOm5pbF07CiAKQEAgLTMwMCwxMCArMjgxLDggQEAgVEVTVChXS1VzZXJDb250ZW50Q29u
dHJvbGxlciwgU2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRoTmF2aWdhdGlvbikKICAgICByZWNlaXZl
ZFNjcmlwdE1lc3NhZ2UgPSBmYWxzZTsKICAgICBsYXN0U2NyaXB0TWVzc2FnZSA9IG51bGxwdHI7
CiAKLQogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOwotICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmaXNEb25lV2l0aE5hdmlnYXRpb24pOwotICAgIGlzRG9uZVdpdGhOYXZp
Z2F0aW9uID0gZmFsc2U7CisgICAgW3dlYlZpZXcgX3Rlc3Rfd2FpdEZvckRpZEZpbmlzaE5hdmln
YXRpb25dOwogCiAgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAid2luZG93LndlYmtp
dC5tZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRsZXIucG9zdE1lc3NhZ2UoJ1NlY29uZCBNZXNzYWdl
JykiIGNvbXBsZXRpb25IYW5kbGVyOm5pbF07CiAKQEAgLTMyMiwxNCArMzAxLDEwIEBAIFRFU1Qo
V0tVc2VyQ29udGVudENvbnRyb2xsZXIsIFNjcmlwdE1lc3NhZ2VIYW5kbGVyUmVwbGFjZVdpdGhT
YW1lTmFtZSkKIAogICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtb
V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDAp
IGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogCi0gICAgUmV0YWluUHRyPFNp
bXBsZU5hdmlnYXRpb25EZWxlZ2F0ZT4gZGVsZWdhdGUgPSBhZG9wdE5TKFtbU2ltcGxlTmF2aWdh
dGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7Ci0gICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRl
bGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKLQogICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtO
U1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JS
ZXNvdXJjZTpAInNpbXBsZSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRl
c3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dOwogCiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVx
dWVzdF07Ci0KLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZVdpdGhOYXZpZ2F0
aW9uKTsKKyAgICBbd2ViVmlldyBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CiAK
ICAgICAvLyBUZXN0IHRoYXQgaGFuZGxlclRvUmVwbGFjZSB3YXMgc3VjY2VzZnVsbHkgYWRkZWQu
CiAgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAid2luZG93LndlYmtpdC5tZXNzYWdl
SGFuZGxlcnMuaGFuZGxlclRvUmVwbGFjZS5wb3N0TWVzc2FnZSgnUEFTUzEnKTsiIGNvbXBsZXRp
b25IYW5kbGVyOm5pbF07CkBAIC0zODEsMTIgKzM1Niw4IEBAIFRFU1QoV0tVc2VyQ29udGVudENv
bnRyb2xsZXIsIEFkZFVzZXJTdHlsZVNoZWV0QmVmb3JlQ3JlYXRpbmdWaWV3KQogCiAgICAgUmV0
YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25m
aWd1cmF0aW9uLmdldCgpXSk7CiAKLSAgICBSZXRhaW5QdHI8U2ltcGxlTmF2aWdhdGlvbkRlbGVn
YXRlPiBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tTaW1wbGVOYXZpZ2F0aW9uRGVsZWdhdGUgYWxsb2Nd
IGluaXRdKTsKLSAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0
KCldOwotCiAgICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6QCI8Ym9keSBzdHlsZT0nYmFja2dy
b3VuZC1jb2xvcjogcmVkOyc+PC9ib2R5PiIgYmFzZVVSTDpuaWxdOwotICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmaXNEb25lV2l0aE5hdmlnYXRpb24pOwotICAgIGlzRG9uZVdpdGhOYXZp
Z2F0aW9uID0gZmFsc2U7CisgICAgW3dlYlZpZXcgX3Rlc3Rfd2FpdEZvckRpZEZpbmlzaE5hdmln
YXRpb25dOwogCiAgICAgZXhwZWN0U2NyaXB0RXZhbHVhdGVzVG9Db2xvcih3ZWJWaWV3LmdldCgp
LCBiYWNrZ3JvdW5kQ29sb3JTY3JpcHQsIGdyZWVuSW5SR0IpOwogfQpAQCAtMzk1LDEyICszNjYs
OCBAQCBURVNUKFdLVXNlckNvbnRlbnRDb250cm9sbGVyLCBBZGRVc2VyU3R5bGVTaGVldEFmdGVy
Q3JlYXRpbmdWaWV3KQogewogICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9w
dE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAw
LCA2MDApXSk7CiAKLSAgICBSZXRhaW5QdHI8U2ltcGxlTmF2aWdhdGlvbkRlbGVnYXRlPiBkZWxl
Z2F0ZSA9IGFkb3B0TlMoW1tTaW1wbGVOYXZpZ2F0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsK
LSAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwotCiAg
ICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6QCI8Ym9keSBzdHlsZT0nYmFja2dyb3VuZC1jb2xv
cjogcmVkOyc+PC9ib2R5PiIgYmFzZVVSTDpuaWxdOwotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmaXNEb25lV2l0aE5hdmlnYXRpb24pOwotICAgIGlzRG9uZVdpdGhOYXZpZ2F0aW9uID0g
ZmFsc2U7CisgICAgW3dlYlZpZXcgX3Rlc3Rfd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOwog
CiAgICAgZXhwZWN0U2NyaXB0RXZhbHVhdGVzVG9Db2xvcih3ZWJWaWV3LmdldCgpLCBiYWNrZ3Jv
dW5kQ29sb3JTY3JpcHQsIHJlZEluUkdCKTsKIApAQCAtNDE5LDEyICszODYsOCBAQCBURVNUKFdL
VXNlckNvbnRlbnRDb250cm9sbGVyLCBVc2VyU3R5bGVTaGVldEFmZmVjdGluZ09ubHlNYWluRnJh
bWUpCiAKICAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2Vi
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25m
aWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAotICAgIFJldGFpblB0cjxTaW1wbGVO
YXZpZ2F0aW9uRGVsZWdhdGU+IGRlbGVnYXRlID0gYWRvcHROUyhbW1NpbXBsZU5hdmlnYXRpb25E
ZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwotICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0
ZTpkZWxlZ2F0ZS5nZXQoKV07Ci0KICAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzpAIjxib2R5
IHN0eWxlPSdiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7Jz48aWZyYW1lPjwvaWZyYW1lPjwvYm9keT4i
IGJhc2VVUkw6bmlsXTsKLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZVdpdGhO
YXZpZ2F0aW9uKTsKLSAgICBpc0RvbmVXaXRoTmF2aWdhdGlvbiA9IGZhbHNlOworICAgIFt3ZWJW
aWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKIAogICAgIC8vIFRoZSBtYWlu
IGZyYW1lIHNob3VsZCBiZSBhZmZlY3RlZC4KICAgICBleHBlY3RTY3JpcHRFdmFsdWF0ZXNUb0Nv
bG9yKHdlYlZpZXcuZ2V0KCksIGJhY2tncm91bmRDb2xvclNjcmlwdCwgZ3JlZW5JblJHQik7CkBA
IC00NDIsMTIgKzQwNSw4IEBAIFRFU1QoV0tVc2VyQ29udGVudENvbnRyb2xsZXIsIFVzZXJTdHls
ZVNoZWV0QWZmZWN0aW5nQWxsRnJhbWVzKQogCiAgICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2Vi
VmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVj
dCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAK
LSAgICBSZXRhaW5QdHI8U2ltcGxlTmF2aWdhdGlvbkRlbGVnYXRlPiBkZWxlZ2F0ZSA9IGFkb3B0
TlMoW1tTaW1wbGVOYXZpZ2F0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKLSAgICBbd2ViVmll
dyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwotCiAgICAgW3dlYlZpZXcg
bG9hZEhUTUxTdHJpbmc6QCI8Ym9keSBzdHlsZT0nYmFja2dyb3VuZC1jb2xvcjogcmVkOyc+PGlm
cmFtZT48L2lmcmFtZT48L2JvZHk+IiBiYXNlVVJMOm5pbF07Ci0gICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZpc0RvbmVXaXRoTmF2aWdhdGlvbik7Ci0gICAgaXNEb25lV2l0aE5hdmlnYXRp
b24gPSBmYWxzZTsKKyAgICBbd2ViVmlldyBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlv
bl07CiAKICAgICAvLyBUaGUgbWFpbiBmcmFtZSBzaG91bGQgYmUgYWZmZWN0ZWQuCiAgICAgZXhw
ZWN0U2NyaXB0RXZhbHVhdGVzVG9Db2xvcih3ZWJWaWV3LmdldCgpLCBiYWNrZ3JvdW5kQ29sb3JT
Y3JpcHQsIGdyZWVuSW5SR0IpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyQ29jb2EvVXNlckNvbnRlbnRXb3JsZC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0MkNvY29hL1VzZXJDb250ZW50V29ybGQubW0KaW5kZXggOWViNzAxNjk4MmVk
ZGQ2ZjBlOWQ0OGYwMGJjNDI3YTUwYmRmMDE3Mi4uYjVkZGEyZGQ2MTY4NzM1YmQ2N2ZjNTgxZjZm
ODYyZTU3ZjA0N2IxYiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQyQ29jb2EvVXNlckNvbnRlbnRXb3JsZC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDJDb2NvYS9Vc2VyQ29udGVudFdvcmxkLm1tCkBAIC0zMCw2ICszMCw3IEBACiAK
ICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJUZXN0LmgiCisjaW1wb3J0
ICJUZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmgiCiAjaW1wb3J0ICJVc2VyQ29udGVudFdvcmxkUHJv
dG9jb2wuaCIKICNpbXBvcnQgIldLV2ViVmlld0NvbmZpZ3VyYXRpb25FeHRyYXMuaCIKICNpbXBv
cnQgPFdlYktpdC9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oPgpAQCAtNDQsMTkgKzQ1LDYgQEAKICNp
bXBvcnQgPFdlYktpdC9fV0tVc2VyU3R5bGVTaGVldC5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0
ci5oPgogCi1zdGF0aWMgYm9vbCBpc0RvbmVXaXRoTmF2aWdhdGlvbjsKLQotQGludGVyZmFjZSBT
aW1wbGVEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxXS05hdmlnYXRpb25EZWxlZ2F0ZT4KLUBlbmQKLQot
QGltcGxlbWVudGF0aW9uIFNpbXBsZURlbGVnYXRlCi0tICh2b2lkKXdlYlZpZXc6KFdLV2ViVmll
dyAqKXdlYlZpZXcgZGlkRmluaXNoTmF2aWdhdGlvbjooV0tOYXZpZ2F0aW9uICopbmF2aWdhdGlv
bgotewotICAgIGlzRG9uZVdpdGhOYXZpZ2F0aW9uID0gdHJ1ZTsKLX0KLUBlbmQKLQotCiBURVNU
KFVzZXJDb250ZW50V29ybGQsIE5vcm1hbFdvcmxkKQogewogICAgIFJldGFpblB0cjxXS1VzZXJT
Y3JpcHQ+IGJhc2ljVXNlclNjcmlwdCA9IGFkb3B0TlMoW1tXS1VzZXJTY3JpcHQgYWxsb2NdIGlu
aXRXaXRoU291cmNlOkAiIiBpbmplY3Rpb25UaW1lOldLVXNlclNjcmlwdEluamVjdGlvblRpbWVB
dERvY3VtZW50U3RhcnQgZm9yTWFpbkZyYW1lT25seTpZRVNdKTsKQEAgLTczLDEyICs2MSw4IEBA
IFRFU1QoVXNlckNvbnRlbnRXb3JsZCwgTm9ybWFsV29ybGRVc2VyU2NyaXB0KQogCiAgICAgUmV0
YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25m
aWd1cmF0aW9uLmdldCgpXSk7CiAKLSAgICBSZXRhaW5QdHI8U2ltcGxlRGVsZWdhdGU+IGRlbGVn
YXRlID0gYWRvcHROUyhbW1NpbXBsZURlbGVnYXRlIGFsbG9jXSBpbml0XSk7Ci0gICAgW3dlYlZp
ZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKLQogICAgIFt3ZWJWaWV3
IGxvYWRIVE1MU3RyaW5nOkAiPGJvZHkgc3R5bGU9J2JhY2tncm91bmQtY29sb3I6IHJlZDsnPjwv
Ym9keT4iIGJhc2VVUkw6bmlsXTsKLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9u
ZVdpdGhOYXZpZ2F0aW9uKTsKLSAgICBpc0RvbmVXaXRoTmF2aWdhdGlvbiA9IGZhbHNlOworICAg
IFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKIAogICAgIF9fYmxv
Y2sgYm9vbCBpc0RvbmUgPSBmYWxzZTsKICAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6
QCJ3aW5kb3cuc2V0RnJvbVVzZXJTY3JpcHQgPyAndmFyaWFibGUgYWNjZXNzaWJsZScgOiAndmFy
aWFibGUgaW5hY2Nlc3NpYmxlJzsiIGNvbXBsZXRpb25IYW5kbGVyOl4oaWQgcmVzdWx0LCBOU0Vy
cm9yICplcnJvcikgewpAQCAtMTEyLDEyICs5Niw4IEBAIFRFU1QoVXNlckNvbnRlbnRXb3JsZCwg
SXNvbGF0ZWRXb3JsZFVzZXJTY3JpcHQpCiAKICAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJW
aWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0
KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAot
ICAgIFJldGFpblB0cjxTaW1wbGVEZWxlZ2F0ZT4gZGVsZWdhdGUgPSBhZG9wdE5TKFtbU2ltcGxl
RGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKLSAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdh
dGU6ZGVsZWdhdGUuZ2V0KCldOwotCiAgICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6QCI8Ym9k
eSBzdHlsZT0nYmFja2dyb3VuZC1jb2xvcjogcmVkOyc+PC9ib2R5PiIgYmFzZVVSTDpuaWxdOwot
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lV2l0aE5hdmlnYXRpb24pOwotICAg
IGlzRG9uZVdpdGhOYXZpZ2F0aW9uID0gZmFsc2U7CisgICAgW3dlYlZpZXcgX3Rlc3Rfd2FpdEZv
ckRpZEZpbmlzaE5hdmlnYXRpb25dOwogCiAgICAgX19ibG9jayBib29sIGlzRG9uZSA9IGZhbHNl
OwogICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpAIndpbmRvdy5zZXRGcm9tVXNlclNj
cmlwdCA/ICd2YXJpYWJsZSBhY2Nlc3NpYmxlJyA6ICd2YXJpYWJsZSBpbmFjY2Vzc2libGUnOyIg
Y29tcGxldGlvbkhhbmRsZXI6XihpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9XS1BERlZpZXdSZXNp
emVDcmFzaC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1dLUERG
Vmlld1Jlc2l6ZUNyYXNoLm1tCmluZGV4IGVkNDdjY2FlM2E2NGNjMDFjYTZlNDA4ZDY4ZjdkM2Rh
MTJmMTkwMmUuLjA3NDBjOTcwNjY5YTEwNjg4NWJmMDA2YWEzNGJhODFjNWMwNzZkZWEgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1dLUERGVmlld1Jl
c2l6ZUNyYXNoLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29h
L1dLUERGVmlld1Jlc2l6ZUNyYXNoLm1tCkBAIC0yNSw0MCArMjUsMjMgQEAKIAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogCi0jaW1wb3J0IDxXZWJLaXQvV0tOYXZpZ2F0aW9uRGVsZWdhdGUuaD4KLSNp
bXBvcnQgPFdlYktpdC9XS1dlYlZpZXcuaD4KLSNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNp
bXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJUZXN0LmgiCisjaW1wb3J0ICJU
ZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmgiCisjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3Lmg+Cisj
aW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKICNpZiBXS19BUElfRU5BQkxFRAogCi1zdGF0aWMg
Ym9vbCBmaW5pc2hlZExvYWRpbmc7CiBzdGF0aWMgYm9vbCBmaW5pc2hlZERpc3BhdGNoOwogCi1A
aW50ZXJmYWNlIFdLUERGVmlld1Jlc2l6ZU5hdmlnYXRpb25EZWxlZ2F0ZSA6IE5TT2JqZWN0IDxX
S05hdmlnYXRpb25EZWxlZ2F0ZT4KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIFdLUERGVmlld1Jl
c2l6ZU5hdmlnYXRpb25EZWxlZ2F0ZQotCi0tICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdl
YlZpZXcgZGlkRmluaXNoTmF2aWdhdGlvbjooV0tOYXZpZ2F0aW9uICopbmF2aWdhdGlvbgotewot
ICAgIGZpbmlzaGVkTG9hZGluZyA9IHRydWU7Ci19Ci0KLUBlbmQKLQogVEVTVChXZWJLaXQyLCBX
S1BERlZpZXdSZXNpemVDcmFzaCkKIHsKICAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3
ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAs
IDAsIDgwMCwgNjAwKV0pOwogCi0gICAgUmV0YWluUHRyPFdLUERGVmlld1Jlc2l6ZU5hdmlnYXRp
b25EZWxlZ2F0ZT4gZGVsZWdhdGUgPSBhZG9wdE5TKFtbV0tQREZWaWV3UmVzaXplTmF2aWdhdGlv
bkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7Ci0gICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVn
YXRlOmRlbGVnYXRlLmdldCgpXTsKLQogICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VS
TFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNv
dXJjZTpAInRlc3QiIHdpdGhFeHRlbnNpb246QCJwZGYiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJL
aXRBUEkucmVzb3VyY2VzIl1dOwogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOwot
Ci0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZmaW5pc2hlZExvYWRpbmcpOworICAgIFt3
ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKIAogICAgIFt3ZWJWaWV3
IHNldEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMTAwLCAxMDApXTsKICAgICB3ZWJWaWV3ID0gbmls
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvV0tX
ZWJWaWV3RXZhbHVhdGVKYXZhU2NyaXB0Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQyQ29jb2EvV0tXZWJWaWV3RXZhbHVhdGVKYXZhU2NyaXB0Lm1tCmluZGV4IDk5N2ZhOGVl
YjdiOTc3MDkxMTYyNjA5MjYzY2NmMWIzMGFjZDg2NWUuLmNjNjhkNzcxNmVhN2FlNDY3MDAwNjkx
YmNiNWY0YTk3ZjkyMzFlY2IgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0MkNvY29hL1dLV2ViVmlld0V2YWx1YXRlSmF2YVNjcmlwdC5tbQorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9XS1dlYlZpZXdFdmFsdWF0ZUphdmFTY3Jp
cHQubW0KQEAgLTMwLDI0ICszMCwxMyBAQAogCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5o
IgogI2ltcG9ydCAiVGVzdC5oIgorI2ltcG9ydCAiVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oIgog
I2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlldy5oPgogI2ltcG9ydCA8V2ViS2l0L1dLRXJyb3JQcml2
YXRlLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKIHN0YXRpYyBib29sIGlzRG9uZTsK
IAotQGludGVyZmFjZSBFdmFsdWF0ZUphdmFTY3JpcHROYXZpZ2F0aW9uRGVsZWdhdGUgOiBOU09i
amVjdCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGU+Ci1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBFdmFs
dWF0ZUphdmFTY3JpcHROYXZpZ2F0aW9uRGVsZWdhdGUKLQotLSAodm9pZCl3ZWJWaWV3OihXS1dl
YlZpZXcgKil3ZWJWaWV3IGRpZEZpbmlzaE5hdmlnYXRpb246KFdLTmF2aWdhdGlvbiAqKW5hdmln
YXRpb24KLXsKLSAgICBpc0RvbmUgPSB0cnVlOwotfQotCi1AZW5kCi0KIFRFU1QoV0tXZWJWaWV3
LCBFdmFsdWF0ZUphdmFTY3JpcHRCbG9ja0NyYXNoKQogewogICAgIFJldGFpblB0cjxXS1dlYlZp
ZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5T
TWFrZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7CkBAIC03NiwxMiArNjUsMTAgQEAgVEVTVChXS1dl
YlZpZXcsIEV2YWx1YXRlSmF2YVNjcmlwdEJsb2NrQ3Jhc2gpCiBURVNUKFdLV2ViVmlldywgRXZh
bHVhdGVKYXZhU2NyaXB0RXJyb3JDYXNlcykKIHsKICAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3
ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VS
ZWN0KDAsIDAsIDgwMCwgNjAwKV0pOwotICAgIFJldGFpblB0cjxFdmFsdWF0ZUphdmFTY3JpcHRO
YXZpZ2F0aW9uRGVsZWdhdGU+IGRlbGVnYXRlID0gYWRvcHROUyhbW0V2YWx1YXRlSmF2YVNjcmlw
dE5hdmlnYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwotICAgIFt3ZWJWaWV3IHNldE5hdmln
YXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CiAKICAgICBOU1VSTFJlcXVlc3QgKnJlcXVl
c3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0g
VVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rv
cnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXTsKICAgICBbd2ViVmlldyBsb2FkUmVxdWVz
dDpyZXF1ZXN0XTsKLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CisgICAg
W3dlYlZpZXcgX3Rlc3Rfd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOwogCiAgICAgW3dlYlZp
ZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAiZG9jdW1lbnQuYm9keSIgY29tcGxldGlvbkhhbmRsZXI6
XihpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CiAgICAgICAgIEVYUEVDVF9OVUxMKHJlc3Vs
dCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9X
S1dlYlZpZXdUZXh0SW5wdXQubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJD
b2NvYS9XS1dlYlZpZXdUZXh0SW5wdXQubW0KaW5kZXggMTA2ZTYyZGI2NzIxYzc2Y2IyODM5ZThi
MGJhNTkyNmE1NWMwNmUxZC4uNTNhYjIyOTdlZmM4OTdkNWIyMTdjNDdlMThjMDcyYzRmODNlNTc4
ZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvV0tX
ZWJWaWV3VGV4dElucHV0Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
MkNvY29hL1dLV2ViVmlld1RleHRJbnB1dC5tbQpAQCAtMjgsMzUgKzI4LDE5IEBACiAjaWYgV0tf
QVBJX0VOQUJMRUQKICNpZiBQTEFURk9STShNQUMpCiAKLSNpbXBvcnQgPFdlYktpdC9XS0ZvdW5k
YXRpb24uaD4KICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJUZXN0Lmgi
Ci0jaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3Lmg+CisjaW1wb3J0ICJUZXN0TmF2aWdhdGlvbkRl
bGVnYXRlLmgiCisjaW1wb3J0IDxXZWJLaXQvV2ViS2l0Lmg+CiAjaW1wb3J0IDx3dGYvUmV0YWlu
UHRyLmg+CiAKLXN0YXRpYyBib29sIGlzRG9uZTsKLQotQGludGVyZmFjZSBEdW1teU5hdmlnYXRp
b25EZWxlZ2F0ZSA6IE5TT2JqZWN0IDxXS05hdmlnYXRpb25EZWxlZ2F0ZT4KLUBlbmQKLQotQGlt
cGxlbWVudGF0aW9uIER1bW15TmF2aWdhdGlvbkRlbGVnYXRlCi0KLS0gKHZvaWQpd2ViVmlldzoo
V0tXZWJWaWV3ICopd2ViVmlldyBkaWRGaW5pc2hOYXZpZ2F0aW9uOihXS05hdmlnYXRpb24gKilu
YXZpZ2F0aW9uCi17Ci0gICAgaXNEb25lID0gdHJ1ZTsKLX0KLQotQGVuZAotCiBURVNUKFdLV2Vi
VmlldywgU2hvdWxkSGF2ZUlucHV0Q29udGV4dEZvckVkaXRhYmxlQ29udGVudCkKIHsKICAgICBS
ZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKV0pOwotICAgIFJldGFpblB0
cjxEdW1teU5hdmlnYXRpb25EZWxlZ2F0ZT4gZGVsZWdhdGUgPSBhZG9wdE5TKFtbRHVtbXlOYXZp
Z2F0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKLSAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9u
RGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwogCiAgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0g
W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZv
clJlc291cmNlOkAiZWRpdGFibGUtYm9keSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVj
dG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dOwogICAgIFt3ZWJWaWV3IGxvYWRSZXF1
ZXN0OnJlcXVlc3RdOwotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKKyAg
ICBbd2ViVmlldyBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CiAKICAgICBFWFBF
Q1RfTk9UX05VTEwoW3dlYlZpZXcgaW5wdXRDb250ZXh0XSk7CiB9CmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUuaCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvY29jb2EvVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRm
ZmZkYjNkNDJlNTgwYzM2NjQ3NmUzYzc2ODBmZTI5OWE1ZGUyYTYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUuaApAQCAt
MCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBXS19BUElfRU5B
QkxFRAorCisjaW1wb3J0IDxXZWJLaXQvV0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlLmg+Cisj
aW1wb3J0IDxXZWJLaXQvV2ViS2l0Lmg+CisKK0BpbnRlcmZhY2UgVGVzdE5hdmlnYXRpb25EZWxl
Z2F0ZSA6IE5TT2JqZWN0IDxXS05hdmlnYXRpb25EZWxlZ2F0ZT4KKworQHByb3BlcnR5IChub25h
dG9taWMsIGNvcHkpIHZvaWQgKF5kaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uKShXS1dlYlZp
ZXcgKiwgV0tOYXZpZ2F0aW9uICosIE5TRXJyb3IgKik7CitAcHJvcGVydHkgKG5vbmF0b21pYywg
Y29weSkgdm9pZCAoXmRpZEZpbmlzaE5hdmlnYXRpb24pKFdLV2ViVmlldyAqLCBXS05hdmlnYXRp
b24gKik7CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXnJlbmRlcmluZ1Byb2dy
ZXNzRGlkQ2hhbmdlKShXS1dlYlZpZXcgKiwgX1dLUmVuZGVyaW5nUHJvZ3Jlc3NFdmVudHMpOwor
CistICh2b2lkKXdhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uOworCitAZW5kCisKK0BpbnRlcmZh
Y2UgV0tXZWJWaWV3IChUZXN0V2ViS2l0QVBJRXh0cmFzKQorLSAodm9pZClfdGVzdF93YWl0Rm9y
RGlkRmluaXNoTmF2aWdhdGlvbjsKK0BlbmQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUubW0gYi9Ub29scy9UZXN0
V2ViS2l0QVBJL2NvY29hL1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUubW0KbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWRh
ZjZmOTU3MDYwNmViNjA2OGExNzBmNTcwNTc4Nzg5ODBjYzU1MQotLS0gL2Rldi9udWxsCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5tbQpAQCAt
MCwwICsxLDg1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJU
ZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmgiCisKKyNpbXBvcnQgIlV0aWxpdGllcy5oIgorI2ltcG9y
dCA8d3RmL1JldGFpblB0ci5oPgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworQGltcGxlbWVudGF0
aW9uIFRlc3ROYXZpZ2F0aW9uRGVsZWdhdGUKKworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcg
Kil3ZWJWaWV3IGRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb246KFdLTmF2aWdhdGlvbiAqKW5h
dmlnYXRpb24gd2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IKK3sKKyAgICBpZiAoX2RpZEZhaWxQ
cm92aXNpb25hbE5hdmlnYXRpb24pCisgICAgICAgIF9kaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0
aW9uKHdlYlZpZXcsIG5hdmlnYXRpb24sIGVycm9yKTsKK30KKworLSAodm9pZCl3ZWJWaWV3OihX
S1dlYlZpZXcgKil3ZWJWaWV3IGRpZEZpbmlzaE5hdmlnYXRpb246KFdLTmF2aWdhdGlvbiAqKW5h
dmlnYXRpb24KK3sKKyAgICBpZiAoX2RpZEZpbmlzaE5hdmlnYXRpb24pCisgICAgICAgIF9kaWRG
aW5pc2hOYXZpZ2F0aW9uKHdlYlZpZXcsIG5hdmlnYXRpb24pOworfQorCistICh2b2lkKV93ZWJW
aWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJlbmRlcmluZ1Byb2dyZXNzRGlkQ2hhbmdlOihfV0tS
ZW5kZXJpbmdQcm9ncmVzc0V2ZW50cylwcm9ncmVzc0V2ZW50cworeworICAgIGlmIChfcmVuZGVy
aW5nUHJvZ3Jlc3NEaWRDaGFuZ2UpCisgICAgICAgIF9yZW5kZXJpbmdQcm9ncmVzc0RpZENoYW5n
ZSh3ZWJWaWV3LCBwcm9ncmVzc0V2ZW50cyk7Cit9CisKKy0gKHZvaWQpd2FpdEZvckRpZEZpbmlz
aE5hdmlnYXRpb24KK3sKKyAgICBFWFBFQ1RfRkFMU0Uoc2VsZi5kaWRGaW5pc2hOYXZpZ2F0aW9u
KTsKKworICAgIF9fYmxvY2sgYm9vbCBmaW5pc2hlZCA9IGZhbHNlOworICAgIHNlbGYuZGlkRmlu
aXNoTmF2aWdhdGlvbiA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvbiAqKSB7CisgICAgICAg
IGZpbmlzaGVkID0gdHJ1ZTsKKyAgICB9OworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZmaW5pc2hlZCk7CisKKyAgICBzZWxmLmRpZEZpbmlzaE5hdmlnYXRpb24gPSBuaWw7Cit9CisK
K0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdLV2ViVmlldyAoVGVzdFdlYktpdEFQSUV4dHJhcykK
KworLSAodm9pZClfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbgoreworICAgIEVYUEVD
VF9GQUxTRShzZWxmLm5hdmlnYXRpb25EZWxlZ2F0ZSk7CisKKyAgICBhdXRvIG5hdmlnYXRpb25E
ZWxlZ2F0ZSA9IGFkb3B0TlMoW1tUZXN0TmF2aWdhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7
CisgICAgc2VsZi5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCk7
CisgICAgW25hdmlnYXRpb25EZWxlZ2F0ZSB3YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CisK
KyAgICBzZWxmLm5hdmlnYXRpb25EZWxlZ2F0ZSA9IG5pbDsKK30KKworQGVuZAorCisjZW5kaWYK
</data>

          </attachment>
      

    </bug>

</bugzilla>